@genome-spy/core 0.66.1 → 0.68.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.
Files changed (191) hide show
  1. package/dist/bundle/index.es.js +7669 -6115
  2. package/dist/bundle/index.js +114 -133
  3. package/dist/schema.json +534 -132
  4. package/dist/src/data/collector.d.ts +20 -0
  5. package/dist/src/data/collector.d.ts.map +1 -1
  6. package/dist/src/data/collector.js +148 -0
  7. package/dist/src/data/dataFlow.d.ts +6 -0
  8. package/dist/src/data/dataFlow.d.ts.map +1 -1
  9. package/dist/src/data/dataFlow.js +10 -0
  10. package/dist/src/data/flowHandle.d.ts +2 -0
  11. package/dist/src/data/flowHandle.d.ts.map +1 -1
  12. package/dist/src/data/flowHandle.js +1 -0
  13. package/dist/src/data/flowInit.d.ts +12 -4
  14. package/dist/src/data/flowInit.d.ts.map +1 -1
  15. package/dist/src/data/flowInit.js +115 -17
  16. package/dist/src/data/flowNode.d.ts +8 -0
  17. package/dist/src/data/flowNode.d.ts.map +1 -1
  18. package/dist/src/data/flowNode.js +18 -0
  19. package/dist/src/data/keyIndex.d.ts +18 -0
  20. package/dist/src/data/keyIndex.d.ts.map +1 -0
  21. package/dist/src/data/keyIndex.js +241 -0
  22. package/dist/src/data/keyIndex.test.d.ts +2 -0
  23. package/dist/src/data/keyIndex.test.d.ts.map +1 -0
  24. package/dist/src/data/sources/dataSource.d.ts.map +1 -1
  25. package/dist/src/data/sources/dataSource.js +5 -1
  26. package/dist/src/data/sources/dataSourceFactory.d.ts +14 -12
  27. package/dist/src/data/sources/dataSourceFactory.d.ts.map +1 -1
  28. package/dist/src/data/sources/dataSourceFactory.js +52 -16
  29. package/dist/src/data/sources/lazy/mockLazySource.d.ts +29 -0
  30. package/dist/src/data/sources/lazy/mockLazySource.d.ts.map +1 -0
  31. package/dist/src/data/sources/lazy/mockLazySource.js +44 -0
  32. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts +22 -1
  33. package/dist/src/data/sources/lazy/singleAxisLazySource.d.ts.map +1 -1
  34. package/dist/src/data/sources/lazy/singleAxisLazySource.js +34 -2
  35. package/dist/src/data/sources/lazy/singleAxisWindowedSource.d.ts.map +1 -1
  36. package/dist/src/data/sources/lazy/singleAxisWindowedSource.js +15 -0
  37. package/dist/src/data/sources/lazy/tabixSource.d.ts.map +1 -1
  38. package/dist/src/data/sources/lazy/tabixSource.js +15 -5
  39. package/dist/src/data/transforms/stack.d.ts.map +1 -1
  40. package/dist/src/data/transforms/stack.js +1 -0
  41. package/dist/src/encoder/accessor.d.ts +43 -0
  42. package/dist/src/encoder/accessor.d.ts.map +1 -1
  43. package/dist/src/encoder/accessor.js +164 -0
  44. package/dist/src/encoder/encoder.d.ts +11 -2
  45. package/dist/src/encoder/encoder.d.ts.map +1 -1
  46. package/dist/src/encoder/encoder.js +24 -4
  47. package/dist/src/encoder/metadataChannels.d.ts +15 -0
  48. package/dist/src/encoder/metadataChannels.d.ts.map +1 -0
  49. package/dist/src/encoder/metadataChannels.js +65 -0
  50. package/dist/src/encoder/metadataChannels.test.d.ts +2 -0
  51. package/dist/src/encoder/metadataChannels.test.d.ts.map +1 -0
  52. package/dist/src/genome/scaleLocus.d.ts.map +1 -1
  53. package/dist/src/genome/scaleLocus.js +14 -1
  54. package/dist/src/genomeSpy/containerUi.d.ts +0 -1
  55. package/dist/src/genomeSpy/containerUi.d.ts.map +1 -1
  56. package/dist/src/genomeSpy/containerUi.js +0 -14
  57. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts +3 -7
  58. package/dist/src/genomeSpy/loadingIndicatorManager.d.ts.map +1 -1
  59. package/dist/src/genomeSpy/loadingIndicatorManager.js +68 -20
  60. package/dist/src/genomeSpy/loadingStatusRegistry.d.ts +52 -0
  61. package/dist/src/genomeSpy/loadingStatusRegistry.d.ts.map +1 -0
  62. package/dist/src/genomeSpy/loadingStatusRegistry.js +86 -0
  63. package/dist/src/genomeSpy/viewContextFactory.d.ts.map +1 -1
  64. package/dist/src/genomeSpy/viewContextFactory.js +0 -1
  65. package/dist/src/genomeSpy/viewDataInit.d.ts +10 -0
  66. package/dist/src/genomeSpy/viewDataInit.d.ts.map +1 -1
  67. package/dist/src/genomeSpy/viewDataInit.js +166 -2
  68. package/dist/src/genomeSpy/viewDataInit.test.d.ts +2 -0
  69. package/dist/src/genomeSpy/viewDataInit.test.d.ts.map +1 -0
  70. package/dist/src/genomeSpy.d.ts +1 -2
  71. package/dist/src/genomeSpy.d.ts.map +1 -1
  72. package/dist/src/genomeSpy.js +69 -27
  73. package/dist/src/gl/dataToVertices.d.ts.map +1 -1
  74. package/dist/src/gl/dataToVertices.js +16 -4
  75. package/dist/src/marks/mark.d.ts.map +1 -1
  76. package/dist/src/marks/mark.js +18 -11
  77. package/dist/src/marks/markUtils.js +1 -1
  78. package/dist/src/scale/scale.d.ts +6 -1
  79. package/dist/src/scale/scale.d.ts.map +1 -1
  80. package/dist/src/scale/scale.js +83 -23
  81. package/dist/src/scales/axisResolution.d.ts.map +1 -1
  82. package/dist/src/scales/axisResolution.js +10 -0
  83. package/dist/src/scales/{scaleDomainAggregator.d.ts → domainPlanner.d.ts} +8 -5
  84. package/dist/src/scales/domainPlanner.d.ts.map +1 -0
  85. package/dist/src/scales/domainPlanner.js +285 -0
  86. package/dist/src/scales/domainPlanner.test.d.ts +2 -0
  87. package/dist/src/scales/domainPlanner.test.d.ts.map +1 -0
  88. package/dist/src/scales/scaleInstanceManager.d.ts.map +1 -1
  89. package/dist/src/scales/scaleInstanceManager.js +8 -4
  90. package/dist/src/scales/scaleInteractionController.d.ts +6 -0
  91. package/dist/src/scales/scaleInteractionController.d.ts.map +1 -1
  92. package/dist/src/scales/scaleInteractionController.js +41 -3
  93. package/dist/src/scales/scaleResolution.d.ts +19 -16
  94. package/dist/src/scales/scaleResolution.d.ts.map +1 -1
  95. package/dist/src/scales/scaleResolution.js +255 -70
  96. package/dist/src/scales/scaleResolution.test.d.ts.map +1 -1
  97. package/dist/src/selection/selection.d.ts +21 -0
  98. package/dist/src/selection/selection.d.ts.map +1 -1
  99. package/dist/src/selection/selection.js +82 -0
  100. package/dist/src/spec/channel.d.ts +52 -15
  101. package/dist/src/spec/data.d.ts +4 -0
  102. package/dist/src/spec/parameter.d.ts +16 -11
  103. package/dist/src/spec/testing.d.ts +12 -0
  104. package/dist/src/spec/testing.d.ts.map +1 -0
  105. package/dist/src/spec/testing.js +20 -0
  106. package/dist/src/spec/view.d.ts +45 -10
  107. package/dist/src/styles/genome-spy.css +3 -31
  108. package/dist/src/styles/genome-spy.css.d.ts +1 -1
  109. package/dist/src/styles/genome-spy.css.d.ts.map +1 -1
  110. package/dist/src/styles/genome-spy.css.js +0 -29
  111. package/dist/src/types/encoder.d.ts +37 -2
  112. package/dist/src/types/rendering.d.ts +4 -3
  113. package/dist/src/types/viewContext.d.ts +0 -14
  114. package/dist/src/utils/domainArray.d.ts.map +1 -1
  115. package/dist/src/utils/domainArray.js +3 -0
  116. package/dist/src/utils/indexer.d.ts +3 -0
  117. package/dist/src/utils/indexer.d.ts.map +1 -1
  118. package/dist/src/utils/indexer.js +3 -0
  119. package/dist/src/utils/throttle.d.ts +4 -1
  120. package/dist/src/utils/throttle.d.ts.map +1 -1
  121. package/dist/src/utils/throttle.js +54 -23
  122. package/dist/src/utils/throttle.test.d.ts +2 -0
  123. package/dist/src/utils/throttle.test.d.ts.map +1 -0
  124. package/dist/src/utils/transition.d.ts +21 -0
  125. package/dist/src/utils/transition.d.ts.map +1 -1
  126. package/dist/src/utils/transition.js +28 -0
  127. package/dist/src/utils/ui/tooltip.d.ts.map +1 -1
  128. package/dist/src/utils/ui/tooltip.js +7 -1
  129. package/dist/src/utils/ui/tooltip.test.d.ts +2 -0
  130. package/dist/src/utils/ui/tooltip.test.d.ts.map +1 -0
  131. package/dist/src/view/axisGridView.d.ts.map +1 -1
  132. package/dist/src/view/axisGridView.js +22 -5
  133. package/dist/src/view/axisView.d.ts.map +1 -1
  134. package/dist/src/view/axisView.js +20 -5
  135. package/dist/src/view/concatView.js +3 -3
  136. package/dist/src/view/containerMutationHelper.d.ts.map +1 -1
  137. package/dist/src/view/containerMutationHelper.js +6 -2
  138. package/dist/src/view/containerView.d.ts +9 -5
  139. package/dist/src/view/containerView.d.ts.map +1 -1
  140. package/dist/src/view/containerView.js +34 -9
  141. package/dist/src/view/dataReadiness.d.ts +46 -0
  142. package/dist/src/view/dataReadiness.d.ts.map +1 -0
  143. package/dist/src/view/dataReadiness.js +267 -0
  144. package/dist/src/view/dataReadiness.test.d.ts +2 -0
  145. package/dist/src/view/dataReadiness.test.d.ts.map +1 -0
  146. package/dist/src/view/facetView.d.ts.map +1 -1
  147. package/dist/src/view/facetView.js +7 -5
  148. package/dist/src/view/flowBuilder.d.ts +5 -3
  149. package/dist/src/view/flowBuilder.d.ts.map +1 -1
  150. package/dist/src/view/flowBuilder.js +74 -7
  151. package/dist/src/view/gridView/gridChild.d.ts.map +1 -1
  152. package/dist/src/view/gridView/gridChild.js +8 -0
  153. package/dist/src/view/gridView/gridView.d.ts.map +1 -1
  154. package/dist/src/view/gridView/gridView.js +119 -2
  155. package/dist/src/view/gridView/scrollbar.d.ts.map +1 -1
  156. package/dist/src/view/gridView/scrollbar.js +3 -0
  157. package/dist/src/view/gridView/selectionRect.d.ts.map +1 -1
  158. package/dist/src/view/gridView/selectionRect.js +20 -5
  159. package/dist/src/view/gridView/separatorView.d.ts +51 -0
  160. package/dist/src/view/gridView/separatorView.d.ts.map +1 -0
  161. package/dist/src/view/gridView/separatorView.js +275 -0
  162. package/dist/src/view/layerView.js +3 -3
  163. package/dist/src/view/layout/flexLayout.d.ts +0 -30
  164. package/dist/src/view/layout/flexLayout.d.ts.map +1 -1
  165. package/dist/src/view/layout/flexLayout.js +0 -86
  166. package/dist/src/view/paramMediator.d.ts +19 -0
  167. package/dist/src/view/paramMediator.d.ts.map +1 -1
  168. package/dist/src/view/paramMediator.js +86 -19
  169. package/dist/src/view/testUtils.d.ts.map +1 -1
  170. package/dist/src/view/testUtils.js +11 -1
  171. package/dist/src/view/unitView.d.ts +8 -13
  172. package/dist/src/view/unitView.d.ts.map +1 -1
  173. package/dist/src/view/unitView.js +127 -43
  174. package/dist/src/view/view.d.ts +34 -14
  175. package/dist/src/view/view.d.ts.map +1 -1
  176. package/dist/src/view/view.js +119 -9
  177. package/dist/src/view/viewFactory.d.ts.map +1 -1
  178. package/dist/src/view/viewFactory.js +20 -1
  179. package/dist/src/view/viewSelectors.d.ts +148 -0
  180. package/dist/src/view/viewSelectors.d.ts.map +1 -0
  181. package/dist/src/view/viewSelectors.js +773 -0
  182. package/dist/src/view/viewSelectors.test.d.ts +2 -0
  183. package/dist/src/view/viewSelectors.test.d.ts.map +1 -0
  184. package/dist/src/view/viewUtils.d.ts +0 -8
  185. package/dist/src/view/viewUtils.d.ts.map +1 -1
  186. package/dist/src/view/viewUtils.js +1 -21
  187. package/package.json +3 -3
  188. package/dist/src/scales/scaleDomainAggregator.d.ts.map +0 -1
  189. package/dist/src/scales/scaleDomainAggregator.js +0 -162
  190. package/dist/src/scales/scaleDomainAggregator.test.d.ts +0 -2
  191. package/dist/src/scales/scaleDomainAggregator.test.d.ts.map +0 -1
@@ -1,39 +1,33 @@
1
- (function(ee,te){typeof exports=="object"&&typeof module<"u"?te(exports):typeof define=="function"&&define.amd?define(["exports"],te):(ee=typeof globalThis<"u"?globalThis:ee||self,te(ee.genomeSpyEmbed={}))})(this,(function(ee){"use strict";var cP=Object.defineProperty;var lP=Object.getPrototypeOf;var uP=Reflect.get;var _E=ee=>{throw TypeError(ee)};var fP=(ee,te,De)=>te in ee?cP(ee,te,{enumerable:!0,configurable:!0,writable:!0,value:De}):ee[te]=De;var j=(ee,te,De)=>fP(ee,typeof te!="symbol"?te+"":te,De),D0=(ee,te,De)=>te.has(ee)||_E("Cannot "+De);var m=(ee,te,De)=>(D0(ee,te,"read from private field"),De?De.call(ee):te.get(ee)),D=(ee,te,De)=>te.has(ee)?_E("Cannot add the same private member more than once"):te instanceof WeakSet?te.add(ee):te.set(ee,De),F=(ee,te,De,Yi)=>(D0(ee,te,"write to private field"),Yi?Yi.call(ee,De):te.set(ee,De),De),P=(ee,te,De)=>(D0(ee,te,"access private method"),De);var VE=(ee,te,De,Yi)=>({set _(Uf){F(ee,te,Uf,De)},get _(){return m(ee,te,Yi)}}),JE=(ee,te,De)=>uP(lP(ee),De,te);var wE,zn,Ys,Ii,Ei,_s,pc,dt,br,Vs,bi,xi,xr,Br,Bi,ll,mc,vr,vi,Js,qs,Cc,yc,wc,yn,Ic,Ks,qE,KE,en,js,Qr,k0,F0,Ws,xf,jE,wn,Ec,bc,xc,Bc,Xs,Zs,zt,WE,M0,R0,XE,$s,eo,vc,Qc,Qi,Ht,Sc,Dc,to,no,kc,In,ro,Re,En,Yt,re,N0,T0,P0,No,ul,ZE,$E,eb,tb,Nf,L0,bn,Bf,nb,Fc,O0,io,so,oo,Mc,Rc,ao,xn,fl,U0,Nc,vf,rb,Hn,Tc,Sr,Si,co,Dt,G0,z0,H0,ib,Pc,Y0,Qf,sb,lo,uo,fo,Lc,Ao,ho,Oc,_0,Uc,V0,Di,go,Gc,zc,po,Hc,Yc,Yn,ki,_t,_c,J0,Fi,Dr,kr,Fr,Vc,kt,mo,Co,me,ob,q0,Tf,Al,ab,cb,Pf,K0,Sf,lb,yo,wo,ct,_n,Jc,se,Hi,ub,j0,hl,W0,X0,Z0,fb,Lf,Ab,Mi,hb,$0,Io,Eo,bo,Ri,gt,qc,Kc,jc,xo,Wc,Ye,Ni,Bo,Vn,Df,db,Xc,nn,Zc,vo,$c,el,tl,Qo,nl,kf,gb,rl,Ti,il,So,sl,Pi,Li,Oi,Do,Ui,ko,Fo,Gi,xt,ol,zi,Mo,Me,Of,pb,mb,Cb,yb,wb,Ib,Eb,bb;function te(n,t,e){return n.fields=t||[],n.fname=e,n}function De(n){return n==null?null:n.fname}function Yi(n){return n==null?null:n.fields}function Uf(n){return n.length===1?xb(n[0]):Bb(n)}const xb=n=>function(t){return t[n]},Bb=n=>{const t=n.length;return function(e){for(let r=0;r<t;++r)e=e[n[r]];return e}};function Ne(n){throw Error(n)}function vb(n){const t=[],e=n.length;let r=null,i=0,s="",o,a,l;n=n+"";function c(){t.push(s+n.substring(o,a)),s="",o=a+1}for(o=a=0;a<e;++a)if(l=n[a],l==="\\")s+=n.substring(o,a++),o=a;else if(l===r)c(),r=null,i=-1;else{if(r)continue;o===i&&l==='"'||o===i&&l==="'"?(o=a+1,r=l):l==="."&&!i?a>o?c():o=a+1:l==="["?(a>o&&c(),i=o=a+1):l==="]"&&(i||Ne("Access path missing open bracket: "+n),i>0&&c(),i=0,o=a+1)}return i&&Ne("Access path missing closing bracket: "+n),r&&Ne("Access path missing closing quote: "+n),a>o&&(a++,c()),t}function dl(n,t,e){const r=vb(n);return n=r.length===1?r[0]:n,te((e&&e.get||Uf)(r),[n],t||n)}dl("id");const gl=te(n=>n,[],"identity");te(()=>0,[],"zero"),te(()=>1,[],"one"),te(()=>!0,[],"true"),te(()=>!1,[],"false");const Qb=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(n=>typeof Object.prototype[n]=="function"),"__proto__"]);var Xe=Array.isArray;function et(n){return n===Object(n)}function qt(n){return n[n.length-1]}function To(n){return n==null||n===""?null:+n}const tg=n=>t=>n*Math.exp(t),ng=n=>t=>Math.log(n*t),Sb=n=>t=>Math.sign(t)*Math.log1p(Math.abs(t/n)),Db=n=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*n,pl=n=>t=>t<0?-Math.pow(-t,n):Math.pow(t,n);function Gf(n,t,e,r){const i=e(n[0]),s=e(qt(n)),o=(s-i)*t;return[r(i-o),r(s-o)]}function kb(n,t){return Gf(n,t,To,gl)}function Fb(n,t){var e=Math.sign(n[0]);return Gf(n,t,ng(e),tg(e))}function Mb(n,t,e){return Gf(n,t,pl(e),pl(1/e))}function ml(n,t,e,r,i){const s=r(n[0]),o=r(qt(n)),a=t!=null?r(t):(s+o)/2;return[i(a+(s-a)*e),i(a+(o-a)*e)]}function rg(n,t,e){return ml(n,t,e,To,gl)}function ig(n,t,e){const r=Math.sign(n[0]);return ml(n,t,e,ng(r),tg(r))}function zf(n,t,e,r){return ml(n,t,e,pl(r),pl(1/r))}function Rb(n,t,e,r){return ml(n,t,e,Sb(r),Db(r))}function Hf(n){return n!=null?Xe(n)?n:[n]:[]}function Nb(n,t,e){let r=n[0],i=n[1],s;return i<r&&(s=i,i=r,r=s),s=i-r,s>=e-t?[t,e]:[r=Math.min(Math.max(r,t),e-s),r+s]}function Ft(n){return typeof n=="function"}const Tb="descending";function sg(n,t,e){e=e||{},t=Hf(t)||[];const r=[],i=[],s={},o=e.comparator||Pb;return Hf(n).forEach((a,l)=>{a!=null&&(r.push(t[l]===Tb?-1:1),i.push(a=Ft(a)?a:dl(a,null,e)),(Yi(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:te(o(i,r),Object.keys(s))}const og=(n,t)=>(n<t||n==null)&&t!=null?-1:(n>t||t==null)&&n!=null?1:(t=t instanceof Date?+t:t,(n=n instanceof Date?+n:n)!==n&&t===t?-1:t!==t&&n===n?1:0),Pb=(n,t)=>n.length===1?Lb(n[0],t[0]):Ob(n,t,n.length),Lb=(n,t)=>function(e,r){return og(n(e),n(r))*t},Ob=(n,t,e)=>(t.push(0),function(r,i){let s,o=0,a=-1;for(;o===0&&++a<e;)s=n[a],o=og(s(r),s(i));return o*t[a]});function Ub(n){for(let t,e,r=1,i=arguments.length;r<i;++r){t=arguments[r];for(e in t)n[e]=t[e]}return n}function _i(n,t){return Object.hasOwn(n,t)}function Po(n){return typeof n=="boolean"}function Gb(n){return Object.prototype.toString.call(n)==="[object Date]"}function zb(n){return n&&Ft(n[Symbol.iterator])}function ft(n){return typeof n=="number"}function Hb(n){return Object.prototype.toString.call(n)==="[object RegExp]"}function Ce(n){return typeof n=="string"}function ag(n,t){const e=n[0],r=qt(n),i=+t;return i?i===1?r:e+i*(r-e):e}function Lo(n){return n&&qt(n)-n[0]||0}function Yf(n){return Xe(n)?`[${n.map(t=>t===null?"null":Yf(t))}]`:et(n)||Ce(n)?JSON.stringify(n).replaceAll("\u2028","\\u2028").replaceAll("\u2029","\\u2029"):n}function Yb(n){return n==null||n===""?null:!n||n==="false"||n==="0"?!1:!!n}const _b=n=>ft(n)||Gb(n)?n:Date.parse(n);function Vb(n,t){return t=t||_b,n==null||n===""?null:t(n)}function Jb(n){return n==null||n===""?null:n+""}function Cl(n){const t={},e=n.length;for(let r=0;r<e;++r)t[n[r]]=!0;return t}/**
1
+ (function(te,ne){typeof exports=="object"&&typeof module<"u"?ne(exports):typeof define=="function"&&define.amd?define(["exports"],ne):(te=typeof globalThis<"u"?globalThis:te||self,ne(te.genomeSpyEmbed={}))})(this,(function(te){"use strict";var oO=Object.defineProperty;var aO=Object.getPrototypeOf;var cO=Reflect.get;var ux=te=>{throw TypeError(te)};var lO=(te,ne,ke)=>ne in te?oO(te,ne,{enumerable:!0,configurable:!0,writable:!0,value:ke}):te[ne]=ke;var W=(te,ne,ke)=>lO(te,typeof ne!="symbol"?ne+"":ne,ke),Ng=(te,ne,ke)=>ne.has(te)||ux("Cannot "+ke);var g=(te,ne,ke)=>(Ng(te,ne,"read from private field"),ke?ke.call(te):ne.get(te)),S=(te,ne,ke)=>ne.has(te)?ux("Cannot add the same private member more than once"):ne instanceof WeakSet?ne.add(te):ne.set(te,ke),D=(te,ne,ke,fs)=>(Ng(te,ne,"write to private field"),fs?fs.call(te,ke):ne.set(te,ke),ke),M=(te,ne,ke)=>(Ng(te,ne,"access private method"),ke);var fx=(te,ne,ke,fs)=>({set _(LA){D(te,ne,LA,ke)},get _(){return g(te,ne,fs)}}),Ax=(te,ne,ke)=>cO(aO(te),ke,ne);var Gb,Vn,po,Dr,Ri,mo,jc,gt,kr,Co,Ni,Ti,Pi,Fr,Li,Mr,Rr,Wc,Oi,Zl,Xc,Nr,Ui,yo,wo,Zc,$c,el,In,tl,Io,hx,dx,tn,Eo,Tr,Tg,Pg,bo,yA,gx,En,nl,rl,il,sl,xo,Bo,Ht,px,Lg,Og,mx,ol,al,vo,cl,ll,Gi,ul,So,fl,wA,Cx,Vt,Al,hl,Qo,Do,dl,_n,gl,Ug,nn,ko,Fo,Te,Qt,_t,zi,pl,K,Gg,zg,Hg,Vg,da,ga,yx,wx,_g,Ix,Ex,FA,bx,Yg,Jg,qg,bn,IA,xx,ml,Kg,Mo,Ro,No,To,Cl,yl,Po,Lo,Oo,Dt,$l,jg,Wg,wl,Il,Uo,EA,Bx,Hi,Yn,Go,zo,vx,Sx,Jn,El,Pr,Ho,Vi,Vo,Lr,$e,Xg,Zg,MA,$g,Qx,_i,qn,bl,ep,bA,Dx,_o,Yo,Jo,xl,qo,Ko,Bl,tp,vl,np,Yi,jo,Sl,Ql,Wo,Dl,kl,Kn,Ji,Fl,xA,kx,Yt,Ml,rp,qi,Or,Ur,Gr,Rl,kt,Xo,Zo,Ce,Fx,ip,RA,eu,Mx,Rx,NA,sp,BA,Nx,Ki,zr,jn,ji,Hr,Wi,Vr,Tx,Px,Lx,$o,ea,ot,Wn,Nl,Xi,ie,us,Ox,op,tu,ap,cp,nu,lp,TA,Ux,Zi,Gx,up,ta,na,ra,$i,pt,Tl,Pl,Ll,ia,Ol,ze,es,sa,Xn,vA,zx,Ul,sn,Gl,oa,zl,Hl,Vl,aa,_l,SA,Hx,Yl,ts,Jl,ca,ql,ns,rs,is,la,ss,ua,Zn,fa,os,mt,Kl,as,Aa,Qe,PA,Vx,_x,Yx,Jx,qx,Kx,jx,Wx,Xx;function ne(n,t,e){return n.fields=t||[],n.fname=e,n}function ke(n){return n==null?null:n.fname}function fs(n){return n==null?null:n.fields}function LA(n){return n.length===1?Zx(n[0]):$x(n)}const Zx=n=>function(t){return t[n]},$x=n=>{const t=n.length;return function(e){for(let r=0;r<t;++r)e=e[n[r]];return e}};function Re(n){throw Error(n)}function eB(n){const t=[],e=n.length;let r=null,i=0,s="",o,a,l;n=n+"";function c(){t.push(s+n.substring(o,a)),s="",o=a+1}for(o=a=0;a<e;++a)if(l=n[a],l==="\\")s+=n.substring(o,a++),o=a;else if(l===r)c(),r=null,i=-1;else{if(r)continue;o===i&&l==='"'||o===i&&l==="'"?(o=a+1,r=l):l==="."&&!i?a>o?c():o=a+1:l==="["?(a>o&&c(),i=o=a+1):l==="]"&&(i||Re("Access path missing open bracket: "+n),i>0&&c(),i=0,o=a+1)}return i&&Re("Access path missing closing bracket: "+n),r&&Re("Access path missing closing quote: "+n),a>o&&(a++,c()),t}function ru(n,t,e){const r=eB(n);return n=r.length===1?r[0]:n,ne((e&&e.get||LA)(r),[n],t||n)}ru("id");const iu=ne(n=>n,[],"identity");ne(()=>0,[],"zero"),ne(()=>1,[],"one"),ne(()=>!0,[],"true"),ne(()=>!1,[],"false");const tB=new Set([...Object.getOwnPropertyNames(Object.prototype).filter(n=>typeof Object.prototype[n]=="function"),"__proto__"]);var je=Array.isArray;function et(n){return n===Object(n)}function qt(n){return n[n.length-1]}function pa(n){return n==null||n===""?null:+n}const Ap=n=>t=>n*Math.exp(t),hp=n=>t=>Math.log(n*t),nB=n=>t=>Math.sign(t)*Math.log1p(Math.abs(t/n)),rB=n=>t=>Math.sign(t)*Math.expm1(Math.abs(t))*n,su=n=>t=>t<0?-Math.pow(-t,n):Math.pow(t,n);function OA(n,t,e,r){const i=e(n[0]),s=e(qt(n)),o=(s-i)*t;return[r(i-o),r(s-o)]}function iB(n,t){return OA(n,t,pa,iu)}function sB(n,t){var e=Math.sign(n[0]);return OA(n,t,hp(e),Ap(e))}function oB(n,t,e){return OA(n,t,su(e),su(1/e))}function ou(n,t,e,r,i){const s=r(n[0]),o=r(qt(n)),a=t!=null?r(t):(s+o)/2;return[i(a+(s-a)*e),i(a+(o-a)*e)]}function dp(n,t,e){return ou(n,t,e,pa,iu)}function gp(n,t,e){const r=Math.sign(n[0]);return ou(n,t,e,hp(r),Ap(r))}function UA(n,t,e,r){return ou(n,t,e,su(r),su(1/r))}function aB(n,t,e,r){return ou(n,t,e,nB(r),rB(r))}function GA(n){return n!=null?je(n)?n:[n]:[]}function cB(n,t,e){let r=n[0],i=n[1],s;return i<r&&(s=i,i=r,r=s),s=i-r,s>=e-t?[t,e]:[r=Math.min(Math.max(r,t),e-s),r+s]}function Mt(n){return typeof n=="function"}const lB="descending";function pp(n,t,e){e=e||{},t=GA(t)||[];const r=[],i=[],s={},o=e.comparator||uB;return GA(n).forEach((a,l)=>{a!=null&&(r.push(t[l]===lB?-1:1),i.push(a=Mt(a)?a:ru(a,null,e)),(fs(a)||[]).forEach(c=>s[c]=1))}),i.length===0?null:ne(o(i,r),Object.keys(s))}const mp=(n,t)=>(n<t||n==null)&&t!=null?-1:(n>t||t==null)&&n!=null?1:(t=t instanceof Date?+t:t,(n=n instanceof Date?+n:n)!==n&&t===t?-1:t!==t&&n===n?1:0),uB=(n,t)=>n.length===1?fB(n[0],t[0]):AB(n,t,n.length),fB=(n,t)=>function(e,r){return mp(n(e),n(r))*t},AB=(n,t,e)=>(t.push(0),function(r,i){let s,o=0,a=-1;for(;o===0&&++a<e;)s=n[a],o=mp(s(r),s(i));return o*t[a]});function hB(n){for(let t,e,r=1,i=arguments.length;r<i;++r){t=arguments[r];for(e in t)n[e]=t[e]}return n}function As(n,t){return Object.hasOwn(n,t)}function ma(n){return typeof n=="boolean"}function dB(n){return Object.prototype.toString.call(n)==="[object Date]"}function gB(n){return n&&Mt(n[Symbol.iterator])}function ut(n){return typeof n=="number"}function pB(n){return Object.prototype.toString.call(n)==="[object RegExp]"}function ye(n){return typeof n=="string"}function Cp(n,t){const e=n[0],r=qt(n),i=+t;return i?i===1?r:e+i*(r-e):e}function Ca(n){return n&&qt(n)-n[0]||0}function zA(n){return je(n)?`[${n.map(t=>t===null?"null":zA(t))}]`:et(n)||ye(n)?JSON.stringify(n).replaceAll("\u2028","\\u2028").replaceAll("\u2029","\\u2029"):n}function mB(n){return n==null||n===""?null:!n||n==="false"||n==="0"?!1:!!n}const CB=n=>ut(n)||dB(n)?n:Date.parse(n);function yB(n,t){return t=t||CB,n==null||n===""?null:t(n)}function wB(n){return n==null||n===""?null:n+""}function au(n){const t={},e=n.length;for(let r=0;r<e;++r)t[n[r]]=!0;return t}/**
2
2
  * @license
3
3
  * Copyright 2019 Google LLC
4
4
  * SPDX-License-Identifier: BSD-3-Clause
5
- */const yl=globalThis,_f=yl.ShadowRoot&&(yl.ShadyCSS===void 0||yl.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,cg=Symbol(),lg=new WeakMap;let qb=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==cg)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(_f&&t===void 0){const r=e!==void 0&&e.length===1;r&&(t=lg.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&lg.set(e,t))}return t}toString(){return this.cssText}};const Kb=n=>new qb(typeof n=="string"?n:n+"",void 0,cg),jb=(n,t)=>{if(_f)n.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const r=document.createElement("style"),i=yl.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=e.cssText,n.appendChild(r)}},ug=_f?n=>n:n=>n instanceof CSSStyleSheet?(t=>{let e="";for(const r of t.cssRules)e+=r.cssText;return Kb(e)})(n):n;/**
5
+ */const cu=globalThis,HA=cu.ShadowRoot&&(cu.ShadyCSS===void 0||cu.ShadyCSS.nativeShadow)&&"adoptedStyleSheets"in Document.prototype&&"replace"in CSSStyleSheet.prototype,yp=Symbol(),wp=new WeakMap;let IB=class{constructor(t,e,r){if(this._$cssResult$=!0,r!==yp)throw Error("CSSResult is not constructable. Use `unsafeCSS` or `css` instead.");this.cssText=t,this.t=e}get styleSheet(){let t=this.o;const e=this.t;if(HA&&t===void 0){const r=e!==void 0&&e.length===1;r&&(t=wp.get(e)),t===void 0&&((this.o=t=new CSSStyleSheet).replaceSync(this.cssText),r&&wp.set(e,t))}return t}toString(){return this.cssText}};const EB=n=>new IB(typeof n=="string"?n:n+"",void 0,yp),bB=(n,t)=>{if(HA)n.adoptedStyleSheets=t.map(e=>e instanceof CSSStyleSheet?e:e.styleSheet);else for(const e of t){const r=document.createElement("style"),i=cu.litNonce;i!==void 0&&r.setAttribute("nonce",i),r.textContent=e.cssText,n.appendChild(r)}},Ip=HA?n=>n:n=>n instanceof CSSStyleSheet?(t=>{let e="";for(const r of t.cssRules)e+=r.cssText;return EB(e)})(n):n;/**
6
6
  * @license
7
7
  * Copyright 2017 Google LLC
8
8
  * SPDX-License-Identifier: BSD-3-Clause
9
- */const{is:Wb,defineProperty:Xb,getOwnPropertyDescriptor:Zb,getOwnPropertyNames:$b,getOwnPropertySymbols:ex,getPrototypeOf:tx}=Object,Wn=globalThis,fg=Wn.trustedTypes,nx=fg?fg.emptyScript:"",Vf=Wn.reactiveElementPolyfillSupport,Oo=(n,t)=>n,Jf={toAttribute(n,t){switch(t){case Boolean:n=n?nx:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,t){let e=n;switch(t){case Boolean:e=n!==null;break;case Number:e=n===null?null:Number(n);break;case Object:case Array:try{e=JSON.parse(n)}catch{e=null}}return e}},Ag=(n,t)=>!Wb(n,t),hg={attribute:!0,type:String,converter:Jf,reflect:!1,useDefault:!1,hasChanged:Ag};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),Wn.litPropertyMetadata??(Wn.litPropertyMetadata=new WeakMap);let Vi=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=hg){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(t,r,e);i!==void 0&&Xb(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){const{get:i,set:s}=Zb(this.prototype,t)??{get(){return this[e]},set(o){this[e]=o}};return{get:i,set(o){const a=i==null?void 0:i.call(this);s==null||s.call(this,o),this.requestUpdate(t,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??hg}static _$Ei(){if(this.hasOwnProperty(Oo("elementProperties")))return;const t=tx(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(Oo("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(Oo("properties"))){const e=this.properties,r=[...$b(e),...ex(e)];for(const i of r)this.createProperty(i,e[i])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[r,i]of e)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[e,r]of this.elementProperties){const i=this._$Eu(e,r);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const r=new Set(t.flat(1/0).reverse());for(const i of r)e.unshift(ug(i))}else t!==void 0&&e.push(ug(t));return e}static _$Eu(t,e){const r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return jb(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostConnected)==null?void 0:r.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostDisconnected)==null?void 0:r.call(e)})}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ET(t,e){var s;const r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){const o=(((s=r.converter)==null?void 0:s.toAttribute)!==void 0?r.converter:Jf).toAttribute(e,r.type);this._$Em=t,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(t,e){var s,o;const r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){const a=r.getPropertyOptions(i),l=typeof a.converter=="function"?{fromAttribute:a.converter}:((s=a.converter)==null?void 0:s.fromAttribute)!==void 0?a.converter:Jf;this._$Em=i;const c=l.fromAttribute(e,a.type);this[i]=c??((o=this._$Ej)==null?void 0:o.get(i))??c,this._$Em=null}}requestUpdate(t,e,r,i=!1,s){var o;if(t!==void 0){const a=this.constructor;if(i===!1&&(s=this[t]),r??(r=a.getPropertyOptions(t)),!((r.hasChanged??Ag)(s,e)||r.useDefault&&r.reflect&&s===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,r))))return;this.C(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,e,{useDefault:r,reflect:i,wrapped:s},o){r&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??e??this[t]),s!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||r||(e=void 0),this._$AL.set(t,e)),i===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[s,o]of i){const{wrapped:a}=o,l=this[s];a!==!0||this._$AL.has(s)||l===void 0||this.C(s,void 0,o,l)}}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(r=this._$EO)==null||r.forEach(i=>{var s;return(s=i.hostUpdate)==null?void 0:s.call(i)}),this.update(e)):this._$EM()}catch(i){throw t=!1,this._$EM(),i}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(e=>this._$ET(e,this[e]))),this._$EM()}updated(t){}firstUpdated(t){}};Vi.elementStyles=[],Vi.shadowRootOptions={mode:"open"},Vi[Oo("elementProperties")]=new Map,Vi[Oo("finalized")]=new Map,Vf==null||Vf({ReactiveElement:Vi}),(Wn.reactiveElementVersions??(Wn.reactiveElementVersions=[])).push("2.1.2");/**
9
+ */const{is:xB,defineProperty:BB,getOwnPropertyDescriptor:vB,getOwnPropertyNames:SB,getOwnPropertySymbols:QB,getPrototypeOf:DB}=Object,ir=globalThis,Ep=ir.trustedTypes,kB=Ep?Ep.emptyScript:"",VA=ir.reactiveElementPolyfillSupport,ya=(n,t)=>n,_A={toAttribute(n,t){switch(t){case Boolean:n=n?kB:null;break;case Object:case Array:n=n==null?n:JSON.stringify(n)}return n},fromAttribute(n,t){let e=n;switch(t){case Boolean:e=n!==null;break;case Number:e=n===null?null:Number(n);break;case Object:case Array:try{e=JSON.parse(n)}catch{e=null}}return e}},bp=(n,t)=>!xB(n,t),xp={attribute:!0,type:String,converter:_A,reflect:!1,useDefault:!1,hasChanged:bp};Symbol.metadata??(Symbol.metadata=Symbol("metadata")),ir.litPropertyMetadata??(ir.litPropertyMetadata=new WeakMap);let hs=class extends HTMLElement{static addInitializer(t){this._$Ei(),(this.l??(this.l=[])).push(t)}static get observedAttributes(){return this.finalize(),this._$Eh&&[...this._$Eh.keys()]}static createProperty(t,e=xp){if(e.state&&(e.attribute=!1),this._$Ei(),this.prototype.hasOwnProperty(t)&&((e=Object.create(e)).wrapped=!0),this.elementProperties.set(t,e),!e.noAccessor){const r=Symbol(),i=this.getPropertyDescriptor(t,r,e);i!==void 0&&BB(this.prototype,t,i)}}static getPropertyDescriptor(t,e,r){const{get:i,set:s}=vB(this.prototype,t)??{get(){return this[e]},set(o){this[e]=o}};return{get:i,set(o){const a=i==null?void 0:i.call(this);s==null||s.call(this,o),this.requestUpdate(t,a,r)},configurable:!0,enumerable:!0}}static getPropertyOptions(t){return this.elementProperties.get(t)??xp}static _$Ei(){if(this.hasOwnProperty(ya("elementProperties")))return;const t=DB(this);t.finalize(),t.l!==void 0&&(this.l=[...t.l]),this.elementProperties=new Map(t.elementProperties)}static finalize(){if(this.hasOwnProperty(ya("finalized")))return;if(this.finalized=!0,this._$Ei(),this.hasOwnProperty(ya("properties"))){const e=this.properties,r=[...SB(e),...QB(e)];for(const i of r)this.createProperty(i,e[i])}const t=this[Symbol.metadata];if(t!==null){const e=litPropertyMetadata.get(t);if(e!==void 0)for(const[r,i]of e)this.elementProperties.set(r,i)}this._$Eh=new Map;for(const[e,r]of this.elementProperties){const i=this._$Eu(e,r);i!==void 0&&this._$Eh.set(i,e)}this.elementStyles=this.finalizeStyles(this.styles)}static finalizeStyles(t){const e=[];if(Array.isArray(t)){const r=new Set(t.flat(1/0).reverse());for(const i of r)e.unshift(Ip(i))}else t!==void 0&&e.push(Ip(t));return e}static _$Eu(t,e){const r=e.attribute;return r===!1?void 0:typeof r=="string"?r:typeof t=="string"?t.toLowerCase():void 0}constructor(){super(),this._$Ep=void 0,this.isUpdatePending=!1,this.hasUpdated=!1,this._$Em=null,this._$Ev()}_$Ev(){var t;this._$ES=new Promise(e=>this.enableUpdating=e),this._$AL=new Map,this._$E_(),this.requestUpdate(),(t=this.constructor.l)==null||t.forEach(e=>e(this))}addController(t){var e;(this._$EO??(this._$EO=new Set)).add(t),this.renderRoot!==void 0&&this.isConnected&&((e=t.hostConnected)==null||e.call(t))}removeController(t){var e;(e=this._$EO)==null||e.delete(t)}_$E_(){const t=new Map,e=this.constructor.elementProperties;for(const r of e.keys())this.hasOwnProperty(r)&&(t.set(r,this[r]),delete this[r]);t.size>0&&(this._$Ep=t)}createRenderRoot(){const t=this.shadowRoot??this.attachShadow(this.constructor.shadowRootOptions);return bB(t,this.constructor.elementStyles),t}connectedCallback(){var t;this.renderRoot??(this.renderRoot=this.createRenderRoot()),this.enableUpdating(!0),(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostConnected)==null?void 0:r.call(e)})}enableUpdating(t){}disconnectedCallback(){var t;(t=this._$EO)==null||t.forEach(e=>{var r;return(r=e.hostDisconnected)==null?void 0:r.call(e)})}attributeChangedCallback(t,e,r){this._$AK(t,r)}_$ET(t,e){var s;const r=this.constructor.elementProperties.get(t),i=this.constructor._$Eu(t,r);if(i!==void 0&&r.reflect===!0){const o=(((s=r.converter)==null?void 0:s.toAttribute)!==void 0?r.converter:_A).toAttribute(e,r.type);this._$Em=t,o==null?this.removeAttribute(i):this.setAttribute(i,o),this._$Em=null}}_$AK(t,e){var s,o;const r=this.constructor,i=r._$Eh.get(t);if(i!==void 0&&this._$Em!==i){const a=r.getPropertyOptions(i),l=typeof a.converter=="function"?{fromAttribute:a.converter}:((s=a.converter)==null?void 0:s.fromAttribute)!==void 0?a.converter:_A;this._$Em=i;const c=l.fromAttribute(e,a.type);this[i]=c??((o=this._$Ej)==null?void 0:o.get(i))??c,this._$Em=null}}requestUpdate(t,e,r,i=!1,s){var o;if(t!==void 0){const a=this.constructor;if(i===!1&&(s=this[t]),r??(r=a.getPropertyOptions(t)),!((r.hasChanged??bp)(s,e)||r.useDefault&&r.reflect&&s===((o=this._$Ej)==null?void 0:o.get(t))&&!this.hasAttribute(a._$Eu(t,r))))return;this.C(t,e,r)}this.isUpdatePending===!1&&(this._$ES=this._$EP())}C(t,e,{useDefault:r,reflect:i,wrapped:s},o){r&&!(this._$Ej??(this._$Ej=new Map)).has(t)&&(this._$Ej.set(t,o??e??this[t]),s!==!0||o!==void 0)||(this._$AL.has(t)||(this.hasUpdated||r||(e=void 0),this._$AL.set(t,e)),i===!0&&this._$Em!==t&&(this._$Eq??(this._$Eq=new Set)).add(t))}async _$EP(){this.isUpdatePending=!0;try{await this._$ES}catch(e){Promise.reject(e)}const t=this.scheduleUpdate();return t!=null&&await t,!this.isUpdatePending}scheduleUpdate(){return this.performUpdate()}performUpdate(){var r;if(!this.isUpdatePending)return;if(!this.hasUpdated){if(this.renderRoot??(this.renderRoot=this.createRenderRoot()),this._$Ep){for(const[s,o]of this._$Ep)this[s]=o;this._$Ep=void 0}const i=this.constructor.elementProperties;if(i.size>0)for(const[s,o]of i){const{wrapped:a}=o,l=this[s];a!==!0||this._$AL.has(s)||l===void 0||this.C(s,void 0,o,l)}}let t=!1;const e=this._$AL;try{t=this.shouldUpdate(e),t?(this.willUpdate(e),(r=this._$EO)==null||r.forEach(i=>{var s;return(s=i.hostUpdate)==null?void 0:s.call(i)}),this.update(e)):this._$EM()}catch(i){throw t=!1,this._$EM(),i}t&&this._$AE(e)}willUpdate(t){}_$AE(t){var e;(e=this._$EO)==null||e.forEach(r=>{var i;return(i=r.hostUpdated)==null?void 0:i.call(r)}),this.hasUpdated||(this.hasUpdated=!0,this.firstUpdated(t)),this.updated(t)}_$EM(){this._$AL=new Map,this.isUpdatePending=!1}get updateComplete(){return this.getUpdateComplete()}getUpdateComplete(){return this._$ES}shouldUpdate(t){return!0}update(t){this._$Eq&&(this._$Eq=this._$Eq.forEach(e=>this._$ET(e,this[e]))),this._$EM()}updated(t){}firstUpdated(t){}};hs.elementStyles=[],hs.shadowRootOptions={mode:"open"},hs[ya("elementProperties")]=new Map,hs[ya("finalized")]=new Map,VA==null||VA({ReactiveElement:hs}),(ir.reactiveElementVersions??(ir.reactiveElementVersions=[])).push("2.1.2");/**
10
10
  * @license
11
11
  * Copyright 2017 Google LLC
12
12
  * SPDX-License-Identifier: BSD-3-Clause
13
- */const Uo=globalThis,dg=n=>n,wl=Uo.trustedTypes,gg=wl?wl.createPolicy("lit-html",{createHTML:n=>n}):void 0,pg="$lit$",Xn=`lit$${Math.random().toFixed(9).slice(2)}$`,mg="?"+Xn,rx=`<${mg}>`,Pr=document,Go=()=>Pr.createComment(""),zo=n=>n===null||typeof n!="object"&&typeof n!="function",qf=Array.isArray,ix=n=>qf(n)||typeof(n==null?void 0:n[Symbol.iterator])=="function",Kf=`[
14
- \f\r]`,Ho=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Cg=/-->/g,yg=/>/g,Lr=RegExp(`>|${Kf}(?:([^\\s"'>=/]+)(${Kf}*=${Kf}*(?:[^
15
- \f\r"'\`<>=]|("|')|))|$)`,"g"),wg=/'/g,Ig=/"/g,Eg=/^(?:script|style|textarea|title)$/i,sx=n=>(t,...e)=>({_$litType$:n,strings:t,values:e}),be=sx(1),Or=Symbol.for("lit-noChange"),Te=Symbol.for("lit-nothing"),bg=new WeakMap,Ur=Pr.createTreeWalker(Pr,129);function xg(n,t){if(!qf(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return gg!==void 0?gg.createHTML(t):t}const ox=(n,t)=>{const e=n.length-1,r=[];let i,s=t===2?"<svg>":t===3?"<math>":"",o=Ho;for(let a=0;a<e;a++){const l=n[a];let c,u,f=-1,h=0;for(;h<l.length&&(o.lastIndex=h,u=o.exec(l),u!==null);)h=o.lastIndex,o===Ho?u[1]==="!--"?o=Cg:u[1]!==void 0?o=yg:u[2]!==void 0?(Eg.test(u[2])&&(i=RegExp("</"+u[2],"g")),o=Lr):u[3]!==void 0&&(o=Lr):o===Lr?u[0]===">"?(o=i??Ho,f=-1):u[1]===void 0?f=-2:(f=o.lastIndex-u[2].length,c=u[1],o=u[3]===void 0?Lr:u[3]==='"'?Ig:wg):o===Ig||o===wg?o=Lr:o===Cg||o===yg?o=Ho:(o=Lr,i=void 0);const A=o===Lr&&n[a+1].startsWith("/>")?" ":"";s+=o===Ho?l+rx:f>=0?(r.push(c),l.slice(0,f)+pg+l.slice(f)+Xn+A):l+Xn+(f===-2?a:A)}return[xg(n,s+(n[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]};class Yo{constructor({strings:t,_$litType$:e},r){let i;this.parts=[];let s=0,o=0;const a=t.length-1,l=this.parts,[c,u]=ox(t,e);if(this.el=Yo.createElement(c,r),Ur.currentNode=this.el.content,e===2||e===3){const f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(i=Ur.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const f of i.getAttributeNames())if(f.endsWith(pg)){const h=u[o++],A=i.getAttribute(f).split(Xn),d=/([.?@])?(.*)/.exec(h);l.push({type:1,index:s,name:d[2],strings:A,ctor:d[1]==="."?cx:d[1]==="?"?lx:d[1]==="@"?ux:Il}),i.removeAttribute(f)}else f.startsWith(Xn)&&(l.push({type:6,index:s}),i.removeAttribute(f));if(Eg.test(i.tagName)){const f=i.textContent.split(Xn),h=f.length-1;if(h>0){i.textContent=wl?wl.emptyScript:"";for(let A=0;A<h;A++)i.append(f[A],Go()),Ur.nextNode(),l.push({type:2,index:++s});i.append(f[h],Go())}}}else if(i.nodeType===8)if(i.data===mg)l.push({type:2,index:s});else{let f=-1;for(;(f=i.data.indexOf(Xn,f+1))!==-1;)l.push({type:7,index:s}),f+=Xn.length-1}s++}}static createElement(t,e){const r=Pr.createElement("template");return r.innerHTML=t,r}}function Ji(n,t,e=n,r){var o,a;if(t===Or)return t;let i=r!==void 0?(o=e._$Co)==null?void 0:o[r]:e._$Cl;const s=zo(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==s&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),s===void 0?i=void 0:(i=new s(n),i._$AT(n,e,r)),r!==void 0?(e._$Co??(e._$Co=[]))[r]=i:e._$Cl=i),i!==void 0&&(t=Ji(n,i._$AS(n,t.values),i,r)),t}class ax{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:r}=this._$AD,i=((t==null?void 0:t.creationScope)??Pr).importNode(e,!0);Ur.currentNode=i;let s=Ur.nextNode(),o=0,a=0,l=r[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new _o(s,s.nextSibling,this,t):l.type===1?c=new l.ctor(s,l.name,l.strings,this,t):l.type===6&&(c=new fx(s,this,t)),this._$AV.push(c),l=r[++a]}o!==(l==null?void 0:l.index)&&(s=Ur.nextNode(),o++)}return Ur.currentNode=Pr,i}p(t){let e=0;for(const r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}}class _o{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,e,r,i){this.type=2,this._$AH=Te,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this._$Cv=(i==null?void 0:i.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=Ji(this,t,e),zo(t)?t===Te||t==null||t===""?(this._$AH!==Te&&this._$AR(),this._$AH=Te):t!==this._$AH&&t!==Or&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):ix(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==Te&&zo(this._$AH)?this._$AA.nextSibling.data=t:this.T(Pr.createTextNode(t)),this._$AH=t}$(t){var s;const{values:e,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=Yo.createElement(xg(r.h,r.h[0]),this.options)),r);if(((s=this._$AH)==null?void 0:s._$AD)===i)this._$AH.p(e);else{const o=new ax(i,this),a=o.u(this.options);o.p(e),this.T(a),this._$AH=o}}_$AC(t){let e=bg.get(t.strings);return e===void 0&&bg.set(t.strings,e=new Yo(t)),e}k(t){qf(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let r,i=0;for(const s of t)i===e.length?e.push(r=new _o(this.O(Go()),this.O(Go()),this,this.options)):r=e[i],r._$AI(s),i++;i<e.length&&(this._$AR(r&&r._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var r;for((r=this._$AP)==null?void 0:r.call(this,!1,!0,e);t!==this._$AB;){const i=dg(t).nextSibling;dg(t).remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this._$Cv=t,(e=this._$AP)==null||e.call(this,t))}}class Il{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,i,s){this.type=1,this._$AH=Te,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=s,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Te}_$AI(t,e=this,r,i){const s=this.strings;let o=!1;if(s===void 0)t=Ji(this,t,e,0),o=!zo(t)||t!==this._$AH&&t!==Or,o&&(this._$AH=t);else{const a=t;let l,c;for(t=s[0],l=0;l<s.length-1;l++)c=Ji(this,a[r+l],e,l),c===Or&&(c=this._$AH[l]),o||(o=!zo(c)||c!==this._$AH[l]),c===Te?t=Te:t!==Te&&(t+=(c??"")+s[l+1]),this._$AH[l]=c}o&&!i&&this.j(t)}j(t){t===Te?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class cx extends Il{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===Te?void 0:t}}class lx extends Il{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==Te)}}let ux=class extends Il{constructor(t,e,r,i,s){super(t,e,r,i,s),this.type=5}_$AI(t,e=this){if((t=Ji(this,t,e,0)??Te)===Or)return;const r=this._$AH,i=t===Te&&r!==Te||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,s=t!==Te&&(r===Te||i);i&&this.element.removeEventListener(this.name,this,r),s&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e;typeof this._$AH=="function"?this._$AH.call(((e=this.options)==null?void 0:e.host)??this.element,t):this._$AH.handleEvent(t)}};class fx{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){Ji(this,t)}}const jf=Uo.litHtmlPolyfillSupport;jf==null||jf(Yo,_o),(Uo.litHtmlVersions??(Uo.litHtmlVersions=[])).push("3.3.2");const Vo=(n,t,e)=>{const r=(e==null?void 0:e.renderBefore)??t;let i=r._$litPart$;if(i===void 0){const s=(e==null?void 0:e.renderBefore)??null;r._$litPart$=i=new _o(t.insertBefore(Go(),s),s,void 0,e??{})}return i._$AI(n),i};/**
13
+ */const wa=globalThis,Bp=n=>n,lu=wa.trustedTypes,vp=lu?lu.createPolicy("lit-html",{createHTML:n=>n}):void 0,Sp="$lit$",sr=`lit$${Math.random().toFixed(9).slice(2)}$`,Qp="?"+sr,FB=`<${Qp}>`,qr=document,Ia=()=>qr.createComment(""),Ea=n=>n===null||typeof n!="object"&&typeof n!="function",YA=Array.isArray,MB=n=>YA(n)||typeof(n==null?void 0:n[Symbol.iterator])=="function",JA=`[
14
+ \f\r]`,ba=/<(?:(!--|\/[^a-zA-Z])|(\/?[a-zA-Z][^>\s]*)|(\/?$))/g,Dp=/-->/g,kp=/>/g,Kr=RegExp(`>|${JA}(?:([^\\s"'>=/]+)(${JA}*=${JA}*(?:[^
15
+ \f\r"'\`<>=]|("|')|))|$)`,"g"),Fp=/'/g,Mp=/"/g,Rp=/^(?:script|style|textarea|title)$/i,RB=n=>(t,...e)=>({_$litType$:n,strings:t,values:e}),pe=RB(1),jr=Symbol.for("lit-noChange"),Me=Symbol.for("lit-nothing"),Np=new WeakMap,Wr=qr.createTreeWalker(qr,129);function Tp(n,t){if(!YA(n)||!n.hasOwnProperty("raw"))throw Error("invalid template strings array");return vp!==void 0?vp.createHTML(t):t}const NB=(n,t)=>{const e=n.length-1,r=[];let i,s=t===2?"<svg>":t===3?"<math>":"",o=ba;for(let a=0;a<e;a++){const l=n[a];let c,u,f=-1,h=0;for(;h<l.length&&(o.lastIndex=h,u=o.exec(l),u!==null);)h=o.lastIndex,o===ba?u[1]==="!--"?o=Dp:u[1]!==void 0?o=kp:u[2]!==void 0?(Rp.test(u[2])&&(i=RegExp("</"+u[2],"g")),o=Kr):u[3]!==void 0&&(o=Kr):o===Kr?u[0]===">"?(o=i??ba,f=-1):u[1]===void 0?f=-2:(f=o.lastIndex-u[2].length,c=u[1],o=u[3]===void 0?Kr:u[3]==='"'?Mp:Fp):o===Mp||o===Fp?o=Kr:o===Dp||o===kp?o=ba:(o=Kr,i=void 0);const A=o===Kr&&n[a+1].startsWith("/>")?" ":"";s+=o===ba?l+FB:f>=0?(r.push(c),l.slice(0,f)+Sp+l.slice(f)+sr+A):l+sr+(f===-2?a:A)}return[Tp(n,s+(n[e]||"<?>")+(t===2?"</svg>":t===3?"</math>":"")),r]};class xa{constructor({strings:t,_$litType$:e},r){let i;this.parts=[];let s=0,o=0;const a=t.length-1,l=this.parts,[c,u]=NB(t,e);if(this.el=xa.createElement(c,r),Wr.currentNode=this.el.content,e===2||e===3){const f=this.el.content.firstChild;f.replaceWith(...f.childNodes)}for(;(i=Wr.nextNode())!==null&&l.length<a;){if(i.nodeType===1){if(i.hasAttributes())for(const f of i.getAttributeNames())if(f.endsWith(Sp)){const h=u[o++],A=i.getAttribute(f).split(sr),d=/([.?@])?(.*)/.exec(h);l.push({type:1,index:s,name:d[2],strings:A,ctor:d[1]==="."?PB:d[1]==="?"?LB:d[1]==="@"?OB:uu}),i.removeAttribute(f)}else f.startsWith(sr)&&(l.push({type:6,index:s}),i.removeAttribute(f));if(Rp.test(i.tagName)){const f=i.textContent.split(sr),h=f.length-1;if(h>0){i.textContent=lu?lu.emptyScript:"";for(let A=0;A<h;A++)i.append(f[A],Ia()),Wr.nextNode(),l.push({type:2,index:++s});i.append(f[h],Ia())}}}else if(i.nodeType===8)if(i.data===Qp)l.push({type:2,index:s});else{let f=-1;for(;(f=i.data.indexOf(sr,f+1))!==-1;)l.push({type:7,index:s}),f+=sr.length-1}s++}}static createElement(t,e){const r=qr.createElement("template");return r.innerHTML=t,r}}function ds(n,t,e=n,r){var o,a;if(t===jr)return t;let i=r!==void 0?(o=e._$Co)==null?void 0:o[r]:e._$Cl;const s=Ea(t)?void 0:t._$litDirective$;return(i==null?void 0:i.constructor)!==s&&((a=i==null?void 0:i._$AO)==null||a.call(i,!1),s===void 0?i=void 0:(i=new s(n),i._$AT(n,e,r)),r!==void 0?(e._$Co??(e._$Co=[]))[r]=i:e._$Cl=i),i!==void 0&&(t=ds(n,i._$AS(n,t.values),i,r)),t}class TB{constructor(t,e){this._$AV=[],this._$AN=void 0,this._$AD=t,this._$AM=e}get parentNode(){return this._$AM.parentNode}get _$AU(){return this._$AM._$AU}u(t){const{el:{content:e},parts:r}=this._$AD,i=((t==null?void 0:t.creationScope)??qr).importNode(e,!0);Wr.currentNode=i;let s=Wr.nextNode(),o=0,a=0,l=r[0];for(;l!==void 0;){if(o===l.index){let c;l.type===2?c=new Ba(s,s.nextSibling,this,t):l.type===1?c=new l.ctor(s,l.name,l.strings,this,t):l.type===6&&(c=new UB(s,this,t)),this._$AV.push(c),l=r[++a]}o!==(l==null?void 0:l.index)&&(s=Wr.nextNode(),o++)}return Wr.currentNode=qr,i}p(t){let e=0;for(const r of this._$AV)r!==void 0&&(r.strings!==void 0?(r._$AI(t,r,e),e+=r.strings.length-2):r._$AI(t[e])),e++}}class Ba{get _$AU(){var t;return((t=this._$AM)==null?void 0:t._$AU)??this._$Cv}constructor(t,e,r,i){this.type=2,this._$AH=Me,this._$AN=void 0,this._$AA=t,this._$AB=e,this._$AM=r,this.options=i,this._$Cv=(i==null?void 0:i.isConnected)??!0}get parentNode(){let t=this._$AA.parentNode;const e=this._$AM;return e!==void 0&&(t==null?void 0:t.nodeType)===11&&(t=e.parentNode),t}get startNode(){return this._$AA}get endNode(){return this._$AB}_$AI(t,e=this){t=ds(this,t,e),Ea(t)?t===Me||t==null||t===""?(this._$AH!==Me&&this._$AR(),this._$AH=Me):t!==this._$AH&&t!==jr&&this._(t):t._$litType$!==void 0?this.$(t):t.nodeType!==void 0?this.T(t):MB(t)?this.k(t):this._(t)}O(t){return this._$AA.parentNode.insertBefore(t,this._$AB)}T(t){this._$AH!==t&&(this._$AR(),this._$AH=this.O(t))}_(t){this._$AH!==Me&&Ea(this._$AH)?this._$AA.nextSibling.data=t:this.T(qr.createTextNode(t)),this._$AH=t}$(t){var s;const{values:e,_$litType$:r}=t,i=typeof r=="number"?this._$AC(t):(r.el===void 0&&(r.el=xa.createElement(Tp(r.h,r.h[0]),this.options)),r);if(((s=this._$AH)==null?void 0:s._$AD)===i)this._$AH.p(e);else{const o=new TB(i,this),a=o.u(this.options);o.p(e),this.T(a),this._$AH=o}}_$AC(t){let e=Np.get(t.strings);return e===void 0&&Np.set(t.strings,e=new xa(t)),e}k(t){YA(this._$AH)||(this._$AH=[],this._$AR());const e=this._$AH;let r,i=0;for(const s of t)i===e.length?e.push(r=new Ba(this.O(Ia()),this.O(Ia()),this,this.options)):r=e[i],r._$AI(s),i++;i<e.length&&(this._$AR(r&&r._$AB.nextSibling,i),e.length=i)}_$AR(t=this._$AA.nextSibling,e){var r;for((r=this._$AP)==null?void 0:r.call(this,!1,!0,e);t!==this._$AB;){const i=Bp(t).nextSibling;Bp(t).remove(),t=i}}setConnected(t){var e;this._$AM===void 0&&(this._$Cv=t,(e=this._$AP)==null||e.call(this,t))}}class uu{get tagName(){return this.element.tagName}get _$AU(){return this._$AM._$AU}constructor(t,e,r,i,s){this.type=1,this._$AH=Me,this._$AN=void 0,this.element=t,this.name=e,this._$AM=i,this.options=s,r.length>2||r[0]!==""||r[1]!==""?(this._$AH=Array(r.length-1).fill(new String),this.strings=r):this._$AH=Me}_$AI(t,e=this,r,i){const s=this.strings;let o=!1;if(s===void 0)t=ds(this,t,e,0),o=!Ea(t)||t!==this._$AH&&t!==jr,o&&(this._$AH=t);else{const a=t;let l,c;for(t=s[0],l=0;l<s.length-1;l++)c=ds(this,a[r+l],e,l),c===jr&&(c=this._$AH[l]),o||(o=!Ea(c)||c!==this._$AH[l]),c===Me?t=Me:t!==Me&&(t+=(c??"")+s[l+1]),this._$AH[l]=c}o&&!i&&this.j(t)}j(t){t===Me?this.element.removeAttribute(this.name):this.element.setAttribute(this.name,t??"")}}class PB extends uu{constructor(){super(...arguments),this.type=3}j(t){this.element[this.name]=t===Me?void 0:t}}class LB extends uu{constructor(){super(...arguments),this.type=4}j(t){this.element.toggleAttribute(this.name,!!t&&t!==Me)}}let OB=class extends uu{constructor(t,e,r,i,s){super(t,e,r,i,s),this.type=5}_$AI(t,e=this){if((t=ds(this,t,e,0)??Me)===jr)return;const r=this._$AH,i=t===Me&&r!==Me||t.capture!==r.capture||t.once!==r.once||t.passive!==r.passive,s=t!==Me&&(r===Me||i);i&&this.element.removeEventListener(this.name,this,r),s&&this.element.addEventListener(this.name,this,t),this._$AH=t}handleEvent(t){var e;typeof this._$AH=="function"?this._$AH.call(((e=this.options)==null?void 0:e.host)??this.element,t):this._$AH.handleEvent(t)}};class UB{constructor(t,e,r){this.element=t,this.type=6,this._$AN=void 0,this._$AM=e,this.options=r}get _$AU(){return this._$AM._$AU}_$AI(t){ds(this,t)}}const qA=wa.litHtmlPolyfillSupport;qA==null||qA(xa,Ba),(wa.litHtmlVersions??(wa.litHtmlVersions=[])).push("3.3.2");const va=(n,t,e)=>{const r=(e==null?void 0:e.renderBefore)??t;let i=r._$litPart$;if(i===void 0){const s=(e==null?void 0:e.renderBefore)??null;r._$litPart$=i=new Ba(t.insertBefore(Ia(),s),s,void 0,e??{})}return i._$AI(n),i};/**
16
16
  * @license
17
17
  * Copyright 2017 Google LLC
18
18
  * SPDX-License-Identifier: BSD-3-Clause
19
- */const Gr=globalThis;let El=class extends Vi{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=Vo(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return Or}};El._$litElement$=!0,El.finalized=!0,(wE=Gr.litElementHydrateSupport)==null||wE.call(Gr,{LitElement:El});const Wf=Gr.litElementPolyfillSupport;Wf==null||Wf({LitElement:El}),(Gr.litElementVersions??(Gr.litElementVersions=[])).push("4.2.2");var Bg={},Xf={},Zf=34,Jo=10,$f=13;function vg(n){return new Function("d","return {"+n.map(function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'}).join(",")+"}")}function Ax(n,t){var e=vg(n);return function(r,i){return t(e(r),i,n)}}function Qg(n){var t=Object.create(null),e=[];return n.forEach(function(r){for(var i in r)i in t||e.push(t[i]=i)}),e}function Ct(n,t){var e=n+"",r=e.length;return r<t?new Array(t-r+1).join(0)+e:e}function hx(n){return n<0?"-"+Ct(-n,6):n>9999?"+"+Ct(n,6):Ct(n,4)}function dx(n){var t=n.getUTCHours(),e=n.getUTCMinutes(),r=n.getUTCSeconds(),i=n.getUTCMilliseconds();return isNaN(n)?"Invalid Date":hx(n.getUTCFullYear())+"-"+Ct(n.getUTCMonth()+1,2)+"-"+Ct(n.getUTCDate(),2)+(i?"T"+Ct(t,2)+":"+Ct(e,2)+":"+Ct(r,2)+"."+Ct(i,3)+"Z":r?"T"+Ct(t,2)+":"+Ct(e,2)+":"+Ct(r,2)+"Z":e||t?"T"+Ct(t,2)+":"+Ct(e,2)+"Z":"")}function Sg(n){var t=new RegExp('["'+n+`
20
- \r]`),e=n.charCodeAt(0);function r(f,h){var A,d,g=i(f,function(p,C){if(A)return A(p,C-1);d=p,A=h?Ax(p,h):vg(p)});return g.columns=d||[],g}function i(f,h){var A=[],d=f.length,g=0,p=0,C,w=d<=0,b=!1;f.charCodeAt(d-1)===Jo&&--d,f.charCodeAt(d-1)===$f&&--d;function y(){if(w)return Xf;if(b)return b=!1,Bg;var B,E=g,Q;if(f.charCodeAt(E)===Zf){for(;g++<d&&f.charCodeAt(g)!==Zf||f.charCodeAt(++g)===Zf;);return(B=g)>=d?w=!0:(Q=f.charCodeAt(g++))===Jo?b=!0:Q===$f&&(b=!0,f.charCodeAt(g)===Jo&&++g),f.slice(E+1,B-1).replace(/""/g,'"')}for(;g<d;){if((Q=f.charCodeAt(B=g++))===Jo)b=!0;else if(Q===$f)b=!0,f.charCodeAt(g)===Jo&&++g;else if(Q!==e)continue;return f.slice(E,B)}return w=!0,f.slice(E,d)}for(;(C=y())!==Xf;){for(var x=[];C!==Bg&&C!==Xf;)x.push(C),C=y();h&&(x=h(x,p++))==null||A.push(x)}return A}function s(f,h){return f.map(function(A){return h.map(function(d){return u(A[d])}).join(n)})}function o(f,h){return h==null&&(h=Qg(f)),[h.map(u).join(n)].concat(s(f,h)).join(`
21
- `)}function a(f,h){return h==null&&(h=Qg(f)),s(f,h).join(`
19
+ */const Xr=globalThis;let fu=class extends hs{constructor(){super(...arguments),this.renderOptions={host:this},this._$Do=void 0}createRenderRoot(){var e;const t=super.createRenderRoot();return(e=this.renderOptions).renderBefore??(e.renderBefore=t.firstChild),t}update(t){const e=this.render();this.hasUpdated||(this.renderOptions.isConnected=this.isConnected),super.update(t),this._$Do=va(e,this.renderRoot,this.renderOptions)}connectedCallback(){var t;super.connectedCallback(),(t=this._$Do)==null||t.setConnected(!0)}disconnectedCallback(){var t;super.disconnectedCallback(),(t=this._$Do)==null||t.setConnected(!1)}render(){return jr}};fu._$litElement$=!0,fu.finalized=!0,(Gb=Xr.litElementHydrateSupport)==null||Gb.call(Xr,{LitElement:fu});const KA=Xr.litElementPolyfillSupport;KA==null||KA({LitElement:fu}),(Xr.litElementVersions??(Xr.litElementVersions=[])).push("4.2.2");var Pp={},jA={},WA=34,Sa=10,XA=13;function Lp(n){return new Function("d","return {"+n.map(function(t,e){return JSON.stringify(t)+": d["+e+'] || ""'}).join(",")+"}")}function GB(n,t){var e=Lp(n);return function(r,i){return t(e(r),i,n)}}function Op(n){var t=Object.create(null),e=[];return n.forEach(function(r){for(var i in r)i in t||e.push(t[i]=i)}),e}function wt(n,t){var e=n+"",r=e.length;return r<t?new Array(t-r+1).join(0)+e:e}function zB(n){return n<0?"-"+wt(-n,6):n>9999?"+"+wt(n,6):wt(n,4)}function HB(n){var t=n.getUTCHours(),e=n.getUTCMinutes(),r=n.getUTCSeconds(),i=n.getUTCMilliseconds();return isNaN(n)?"Invalid Date":zB(n.getUTCFullYear())+"-"+wt(n.getUTCMonth()+1,2)+"-"+wt(n.getUTCDate(),2)+(i?"T"+wt(t,2)+":"+wt(e,2)+":"+wt(r,2)+"."+wt(i,3)+"Z":r?"T"+wt(t,2)+":"+wt(e,2)+":"+wt(r,2)+"Z":e||t?"T"+wt(t,2)+":"+wt(e,2)+"Z":"")}function Up(n){var t=new RegExp('["'+n+`
20
+ \r]`),e=n.charCodeAt(0);function r(f,h){var A,d,p=i(f,function(C,m){if(A)return A(C,m-1);d=C,A=h?GB(C,h):Lp(C)});return p.columns=d||[],p}function i(f,h){var A=[],d=f.length,p=0,C=0,m,w=d<=0,b=!1;f.charCodeAt(d-1)===Sa&&--d,f.charCodeAt(d-1)===XA&&--d;function y(){if(w)return jA;if(b)return b=!1,Pp;var B,E=p,Q;if(f.charCodeAt(E)===WA){for(;p++<d&&f.charCodeAt(p)!==WA||f.charCodeAt(++p)===WA;);return(B=p)>=d?w=!0:(Q=f.charCodeAt(p++))===Sa?b=!0:Q===XA&&(b=!0,f.charCodeAt(p)===Sa&&++p),f.slice(E+1,B-1).replace(/""/g,'"')}for(;p<d;){if((Q=f.charCodeAt(B=p++))===Sa)b=!0;else if(Q===XA)b=!0,f.charCodeAt(p)===Sa&&++p;else if(Q!==e)continue;return f.slice(E,B)}return w=!0,f.slice(E,d)}for(;(m=y())!==jA;){for(var x=[];m!==Pp&&m!==jA;)x.push(m),m=y();h&&(x=h(x,C++))==null||A.push(x)}return A}function s(f,h){return f.map(function(A){return h.map(function(d){return u(A[d])}).join(n)})}function o(f,h){return h==null&&(h=Op(f)),[h.map(u).join(n)].concat(s(f,h)).join(`
21
+ `)}function a(f,h){return h==null&&(h=Op(f)),s(f,h).join(`
22
22
  `)}function l(f){return f.map(c).join(`
23
- `)}function c(f){return f.map(u).join(n)}function u(f){return f==null?"":f instanceof Date?dx(f):t.test(f+="")?'"'+f.replace(/"/g,'""')+'"':f}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:l,formatRow:c,formatValue:u}}var gx=Sg(" "),px=gx.parseRows;function mx(n){return n}function Cx(n){if(n==null)return mx;var t,e,r=n.scale[0],i=n.scale[1],s=n.translate[0],o=n.translate[1];return function(a,l){l||(t=e=0);var c=2,u=a.length,f=new Array(u);for(f[0]=(t+=a[0])*r+s,f[1]=(e+=a[1])*i+o;c<u;)f[c]=a[c],++c;return f}}function yx(n,t){for(var e,r=n.length,i=r-t;i<--r;)e=n[i],n[i++]=n[r],n[r]=e}function wx(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return Dg(n,e)})}:Dg(n,t)}function Dg(n,t){var e=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,s=kg(n,t);return e==null&&r==null?{type:"Feature",properties:i,geometry:s}:r==null?{type:"Feature",id:e,properties:i,geometry:s}:{type:"Feature",id:e,bbox:r,properties:i,geometry:s}}function kg(n,t){var e=Cx(n.transform),r=n.arcs;function i(u,f){f.length&&f.pop();for(var h=r[u<0?~u:u],A=0,d=h.length;A<d;++A)f.push(e(h[A],A));u<0&&yx(f,d)}function s(u){return e(u)}function o(u){for(var f=[],h=0,A=u.length;h<A;++h)i(u[h],f);return f.length<2&&f.push(f[0]),f}function a(u){for(var f=o(u);f.length<4;)f.push(f[0]);return f}function l(u){return u.map(a)}function c(u){var f=u.type,h;switch(f){case"GeometryCollection":return{type:f,geometries:u.geometries.map(c)};case"Point":h=s(u.coordinates);break;case"MultiPoint":h=u.coordinates.map(s);break;case"LineString":h=o(u.arcs);break;case"MultiLineString":h=u.arcs.map(o);break;case"Polygon":h=l(u.arcs);break;case"MultiPolygon":h=u.arcs.map(l);break;default:return null}return{type:f,coordinates:h}}return c(t)}function Ix(n,t){var e={},r={},i={},s=[],o=-1;t.forEach(function(c,u){var f=n.arcs[c<0?~c:c],h;f.length<3&&!f[1][0]&&!f[1][1]&&(h=t[++o],t[o]=c,t[u]=h)}),t.forEach(function(c){var u=a(c),f=u[0],h=u[1],A,d;if(A=i[f])if(delete i[A.end],A.push(c),A.end=h,d=r[h]){delete r[d.start];var g=d===A?A:A.concat(d);r[g.start=A.start]=i[g.end=d.end]=g}else r[A.start]=i[A.end]=A;else if(A=r[h])if(delete r[A.start],A.unshift(c),A.start=f,d=i[f]){delete i[d.end];var p=d===A?A:d.concat(A);r[p.start=d.start]=i[p.end=A.end]=p}else r[A.start]=i[A.end]=A;else A=[c],r[A.start=f]=i[A.end=h]=A});function a(c){var u=n.arcs[c<0?~c:c],f=u[0],h;return n.transform?(h=[0,0],u.forEach(function(A){h[0]+=A[0],h[1]+=A[1]})):h=u[u.length-1],c<0?[h,f]:[f,h]}function l(c,u){for(var f in c){var h=c[f];delete u[h.start],delete h.start,delete h.end,h.forEach(function(A){e[A<0?~A:A]=1}),s.push(h)}}return l(i,r),l(r,i),t.forEach(function(c){e[c<0?~c:c]||s.push([c])}),s}function Ex(n){return kg(n,bx.apply(this,arguments))}function bx(n,t,e){var r,i,s;if(arguments.length>1)r=xx(n,t,e);else for(i=0,r=new Array(s=n.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:Ix(n,r)}}function xx(n,t,e){var r=[],i=[],s;function o(f){var h=f<0?~f:f;(i[h]||(i[h]=[])).push({i:f,g:s})}function a(f){f.forEach(o)}function l(f){f.forEach(a)}function c(f){f.forEach(l)}function u(f){switch(s=f,f.type){case"GeometryCollection":f.geometries.forEach(u);break;case"LineString":a(f.arcs);break;case"MultiLineString":case"Polygon":l(f.arcs);break;case"MultiPolygon":c(f.arcs);break}}return u(t),i.forEach(e==null?function(f){r.push(f[0].i)}:function(f){e(f[0].g,f[f.length-1].g)&&r.push(f[0].i)}),r}function zr(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function Bx(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function Hr(n){let t,e,r;n.length!==2?(t=zr,e=(a,l)=>zr(n(a),l),r=(a,l)=>n(a)-l):(t=n===zr||n===Bx?n:vx,e=n,r=n);function i(a,l,c=0,u=a.length){if(c<u){if(t(l,l)!==0)return u;do{const f=c+u>>>1;e(a[f],l)<0?c=f+1:u=f}while(c<u)}return c}function s(a,l,c=0,u=a.length){if(c<u){if(t(l,l)!==0)return u;do{const f=c+u>>>1;e(a[f],l)<=0?c=f+1:u=f}while(c<u)}return c}function o(a,l,c=0,u=a.length){const f=i(a,l,c,u-1);return f>c&&r(a[f-1],l)>-r(a[f],l)?f-1:f}return{left:i,center:o,right:s}}function vx(){return 0}function Fg(n){return n===null?NaN:+n}function*Qx(n,t){if(t===void 0)for(let e of n)e!=null&&(e=+e)>=e&&(yield e);else{let e=-1;for(let r of n)(r=t(r,++e,n))!=null&&(r=+r)>=r&&(yield r)}}const Mg=Hr(zr),Zn=Mg.right;Mg.left,Hr(Fg).center;function Sx(n,t){let e=0;if(t===void 0)for(let r of n)r!=null&&(r=+r)>=r&&++e;else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(i=+i)>=i&&++e}return e}function Dx(n,t){let e=0,r,i=0,s=0;if(t===void 0)for(let o of n)o!=null&&(o=+o)>=o&&(r=o-i,i+=r/++e,s+=r*(o-i));else{let o=-1;for(let a of n)(a=t(a,++o,n))!=null&&(a=+a)>=a&&(r=a-i,i+=r/++e,s+=r*(a-i))}if(e>1)return s/(e-1)}function kx(n,t){let e,r;for(const i of n)i!=null&&(e===void 0?i>=i&&(e=r=i):(e>i&&(e=i),r<i&&(r=i)));return[e,r]}class Sn extends Map{constructor(t,e=Rx){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(Rg(this,t))}has(t){return super.has(Rg(this,t))}set(t,e){return super.set(Fx(this,t),e)}delete(t){return super.delete(Mx(this,t))}}function Rg({_intern:n,_key:t},e){const r=t(e);return n.has(r)?n.get(r):e}function Fx({_intern:n,_key:t},e){const r=t(e);return n.has(r)?n.get(r):(n.set(r,e),e)}function Mx({_intern:n,_key:t},e){const r=t(e);return n.has(r)&&(e=n.get(r),n.delete(r)),e}function Rx(n){return n!==null&&typeof n=="object"?n.valueOf():n}function eA(n){return n}function bl(n,...t){return Ng(n,eA,eA,t)}function Nx(n,...t){return Ng(n,Array.from,eA,t)}function Ng(n,t,e,r){return(function i(s,o){if(o>=r.length)return e(s);const a=new Sn,l=r[o++];let c=-1;for(const u of s){const f=l(u,++c,s),h=a.get(f);h?h.push(u):a.set(f,[u])}for(const[u,f]of a)a.set(u,i(f,o));return t(a)})(n,0)}function Tx(n=zr){if(n===zr)return Tg;if(typeof n!="function")throw new TypeError("compare is not a function");return(t,e)=>{const r=n(t,e);return r||r===0?r:(n(e,e)===0)-(n(t,t)===0)}}function Tg(n,t){return(n==null||!(n>=n))-(t==null||!(t>=t))||(n<t?-1:n>t?1:0)}const Px=Math.sqrt(50),Lx=Math.sqrt(10),Ox=Math.sqrt(2);function xl(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),s=r/Math.pow(10,i),o=s>=Px?10:s>=Lx?5:s>=Ox?2:1;let a,l,c;return i<0?(c=Math.pow(10,-i)/o,a=Math.round(n*c),l=Math.round(t*c),a/c<n&&++a,l/c>t&&--l,c=-c):(c=Math.pow(10,i)*o,a=Math.round(n/c),l=Math.round(t/c),a*c<n&&++a,l*c>t&&--l),l<a&&.5<=e&&e<2?xl(n,t,e*2):[a,l,c]}function Bl(n,t,e){if(t=+t,n=+n,e=+e,!(e>0))return[];if(n===t)return[n];const r=t<n,[i,s,o]=r?xl(t,n,e):xl(n,t,e);if(!(s>=i))return[];const a=s-i+1,l=new Array(a);if(r)if(o<0)for(let c=0;c<a;++c)l[c]=(s-c)/-o;else for(let c=0;c<a;++c)l[c]=(s-c)*o;else if(o<0)for(let c=0;c<a;++c)l[c]=(i+c)/-o;else for(let c=0;c<a;++c)l[c]=(i+c)*o;return l}function tA(n,t,e){return t=+t,n=+n,e=+e,xl(n,t,e)[2]}function Yr(n,t,e){t=+t,n=+n,e=+e;const r=t<n,i=r?tA(t,n,e):tA(n,t,e);return(r?-1:1)*(i<0?1/-i:i)}function nA(n,t){let e;if(t===void 0)for(const r of n)r!=null&&(e<r||e===void 0&&r>=r)&&(e=r);else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(e<i||e===void 0&&i>=i)&&(e=i)}return e}function rA(n,t){let e;if(t===void 0)for(const r of n)r!=null&&(e>r||e===void 0&&r>=r)&&(e=r);else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(e>i||e===void 0&&i>=i)&&(e=i)}return e}function Pg(n,t,e=0,r=1/0,i){if(t=Math.floor(t),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(n.length-1,r)),!(e<=t&&t<=r))return n;for(i=i===void 0?Tg:Tx(i);r>e;){if(r-e>600){const l=r-e+1,c=t-e+1,u=Math.log(l),f=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*f*(l-f)/l)*(c-l/2<0?-1:1),A=Math.max(e,Math.floor(t-c*f/l+h)),d=Math.min(r,Math.floor(t+(l-c)*f/l+h));Pg(n,t,A,d,i)}const s=n[t];let o=e,a=r;for(qo(n,e,t),i(n[r],s)>0&&qo(n,e,r);o<a;){for(qo(n,o,a),++o,--a;i(n[o],s)<0;)++o;for(;i(n[a],s)>0;)--a}i(n[e],s)===0?qo(n,e,a):(++a,qo(n,a,r)),a<=t&&(e=a+1),t<=a&&(r=a-1)}return n}function qo(n,t,e){const r=n[t];n[t]=n[e],n[e]=r}function Ux(n,t,e){if(n=Float64Array.from(Qx(n,e)),!(!(r=n.length)||isNaN(t=+t))){if(t<=0||r<2)return rA(n);if(t>=1)return nA(n);var r,i=(r-1)*t,s=Math.floor(i),o=nA(Pg(n,s).subarray(0,s+1)),a=rA(n.subarray(s+1));return o+(a-o)*(i-s)}}function Lg(n,t,e=Fg){if(!(!(r=n.length)||isNaN(t=+t))){if(t<=0||r<2)return+e(n[0],0,n);if(t>=1)return+e(n[r-1],r-1,n);var r,i=(r-1)*t,s=Math.floor(i),o=+e(n[s],s,n),a=+e(n[s+1],s+1,n);return o+(a-o)*(i-s)}}function Gx(n,t){let e=0,r=0;if(t===void 0)for(let i of n)i!=null&&(i=+i)>=i&&(++e,r+=i);else{let i=-1;for(let s of n)(s=t(s,++i,n))!=null&&(s=+s)>=s&&(++e,r+=s)}if(e)return r/e}function zx(n,t){return Ux(n,.5,t)}function Ko(n,t,e){n=+n,t=+t,e=(i=arguments.length)<2?(t=n,n=0,1):i<3?1:+e;for(var r=-1,i=Math.max(0,Math.ceil((t-n)/e))|0,s=new Array(i);++r<i;)s[r]=n+r*e;return s}function jo(n,t){let e=0;if(t===void 0)for(let r of n)(r=+r)&&(e+=r);else{let r=-1;for(let i of n)(i=+t(i,++r,n))&&(e+=i)}return e}function Hx(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function vl(n,t){if(!isFinite(n)||n===0)return null;var e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function qi(n){return n=vl(Math.abs(n)),n?n[1]:NaN}function Yx(n,t){return function(e,r){for(var i=e.length,s=[],o=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),s.push(e.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[o=(o+1)%n.length];return s.reverse().join(t)}}function _x(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var Vx=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Ki(n){if(!(t=Vx.exec(n)))throw new Error("invalid format: "+n);var t;return new iA({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}Ki.prototype=iA.prototype;function iA(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}iA.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 Jx(n){e:for(var t=n.length,e=1,r=-1,i;e<t;++e)switch(n[e]){case".":r=i=e;break;case"0":r===0&&(r=e),i=e;break;default:if(!+n[e])break e;r>0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var Ql;function qx(n,t){var e=vl(n,t);if(!e)return Ql=void 0,n.toPrecision(t);var r=e[0],i=e[1],s=i-(Ql=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+vl(n,Math.max(0,t+s-1))[0]}function Og(n,t){var e=vl(n,t);if(!e)return n+"";var r=e[0],i=e[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 Ug={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:Hx,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>Og(n*100,t),r:Og,s:qx,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function Gg(n){return n}var zg=Array.prototype.map,Hg=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Kx(n){var t=n.grouping===void 0||n.thousands===void 0?Gg:Yx(zg.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",s=n.numerals===void 0?Gg:_x(zg.call(n.numerals,String)),o=n.percent===void 0?"%":n.percent+"",a=n.minus===void 0?"−":n.minus+"",l=n.nan===void 0?"NaN":n.nan+"";function c(f,h){f=Ki(f);var A=f.fill,d=f.align,g=f.sign,p=f.symbol,C=f.zero,w=f.width,b=f.comma,y=f.precision,x=f.trim,B=f.type;B==="n"?(b=!0,B="g"):Ug[B]||(y===void 0&&(y=12),x=!0,B="g"),(C||A==="0"&&d==="=")&&(C=!0,A="0",d="=");var E=(h&&h.prefix!==void 0?h.prefix:"")+(p==="$"?e:p==="#"&&/[boxX]/.test(B)?"0"+B.toLowerCase():""),Q=(p==="$"?r:/[%p]/.test(B)?o:"")+(h&&h.suffix!==void 0?h.suffix:""),k=Ug[B],S=/[defgprs%]/.test(B);y=y===void 0?6:/[gprs]/.test(B)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function T(N){var U=E,H=Q,J,_,Z;if(B==="c")H=k(N)+H,N="";else{N=+N;var le=N<0||1/N<0;if(N=isNaN(N)?l:k(Math.abs(N),y),x&&(N=Jx(N)),le&&+N==0&&g!=="+"&&(le=!1),U=(le?g==="("?g:a:g==="-"||g==="("?"":g)+U,H=(B==="s"&&!isNaN(N)&&Ql!==void 0?Hg[8+Ql/3]:"")+H+(le&&g==="("?")":""),S){for(J=-1,_=N.length;++J<_;)if(Z=N.charCodeAt(J),48>Z||Z>57){H=(Z===46?i+N.slice(J+1):N.slice(J))+H,N=N.slice(0,J);break}}}b&&!C&&(N=t(N,1/0));var de=U.length+N.length+H.length,ge=de<w?new Array(w-de+1).join(A):"";switch(b&&C&&(N=t(ge+N,ge.length?w-H.length:1/0),ge=""),d){case"<":N=U+N+H+ge;break;case"=":N=U+ge+N+H;break;case"^":N=ge.slice(0,de=ge.length>>1)+U+N+H+ge.slice(de);break;default:N=ge+U+N+H;break}return s(N)}return T.toString=function(){return f+""},T}function u(f,h){var A=Math.max(-8,Math.min(8,Math.floor(qi(h)/3)))*3,d=Math.pow(10,-A),g=c((f=Ki(f),f.type="f",f),{suffix:Hg[8+A/3]});return function(p){return g(d*p)}}return{format:c,formatPrefix:u}}var Sl,Ze,Yg;jx({thousands:",",grouping:[3],currency:["$",""]});function jx(n){return Sl=Kx(n),Ze=Sl.format,Yg=Sl.formatPrefix,Sl}function Wx(n){return Math.max(0,-qi(Math.abs(n)))}function Xx(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(qi(t)/3)))*3-qi(Math.abs(n)))}function Zx(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,qi(t)-qi(n))+1}const sA=new Date,oA=new Date;function Oe(n,t,e,r){function i(s){return n(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=s=>(n(s=new Date(+s)),s),i.ceil=s=>(n(s=new Date(s-1)),t(s,1),n(s),s),i.round=s=>{const o=i(s),a=i.ceil(s);return s-o<a-s?o:a},i.offset=(s,o)=>(t(s=new Date(+s),o==null?1:Math.floor(o)),s),i.range=(s,o,a)=>{const l=[];if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s<o)||!(a>0))return l;let c;do l.push(c=new Date(+s)),t(s,a),n(s);while(c<s&&s<o);return l},i.filter=s=>Oe(o=>{if(o>=o)for(;n(o),!s(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;t(o,-1),!s(o););else for(;--a>=0;)for(;t(o,1),!s(o););}),e&&(i.count=(s,o)=>(sA.setTime(+s),oA.setTime(+o),n(sA),n(oA),Math.floor(e(sA,oA))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?o=>r(o)%s===0:o=>i.count(0,o)%s===0):i)),i}const ji=Oe(()=>{},(n,t)=>{n.setTime(+n+t)},(n,t)=>t-n);ji.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?Oe(t=>{t.setTime(Math.floor(t/n)*n)},(t,e)=>{t.setTime(+t+e*n)},(t,e)=>(e-t)/n):ji),ji.range;const Dn=1e3,Mt=Dn*60,kn=Mt*60,Fn=kn*24,aA=Fn*7,_g=Fn*30,cA=Fn*365,Mn=Oe(n=>{n.setTime(n-n.getMilliseconds())},(n,t)=>{n.setTime(+n+t*Dn)},(n,t)=>(t-n)/Dn,n=>n.getUTCSeconds());Mn.range;const Dl=Oe(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Dn)},(n,t)=>{n.setTime(+n+t*Mt)},(n,t)=>(t-n)/Mt,n=>n.getMinutes());Dl.range;const kl=Oe(n=>{n.setUTCSeconds(0,0)},(n,t)=>{n.setTime(+n+t*Mt)},(n,t)=>(t-n)/Mt,n=>n.getUTCMinutes());kl.range;const Fl=Oe(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Dn-n.getMinutes()*Mt)},(n,t)=>{n.setTime(+n+t*kn)},(n,t)=>(t-n)/kn,n=>n.getHours());Fl.range;const Ml=Oe(n=>{n.setUTCMinutes(0,0,0)},(n,t)=>{n.setTime(+n+t*kn)},(n,t)=>(t-n)/kn,n=>n.getUTCHours());Ml.range;const $n=Oe(n=>n.setHours(0,0,0,0),(n,t)=>n.setDate(n.getDate()+t),(n,t)=>(t-n-(t.getTimezoneOffset()-n.getTimezoneOffset())*Mt)/Fn,n=>n.getDate()-1);$n.range;const _r=Oe(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/Fn,n=>n.getUTCDate()-1);_r.range;const Vg=Oe(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/Fn,n=>Math.floor(n/Fn));Vg.range;function Vr(n){return Oe(t=>{t.setDate(t.getDate()-(t.getDay()+7-n)%7),t.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+e*7)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Mt)/aA)}const Wo=Vr(0),Rl=Vr(1),$x=Vr(2),eB=Vr(3),Wi=Vr(4),tB=Vr(5),nB=Vr(6);Wo.range,Rl.range,$x.range,eB.range,Wi.range,tB.range,nB.range;function Jr(n){return Oe(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-n)%7),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e*7)},(t,e)=>(e-t)/aA)}const Xo=Jr(0),Nl=Jr(1),rB=Jr(2),iB=Jr(3),Xi=Jr(4),sB=Jr(5),oB=Jr(6);Xo.range,Nl.range,rB.range,iB.range,Xi.range,sB.range,oB.range;const Zo=Oe(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,t)=>{n.setMonth(n.getMonth()+t)},(n,t)=>t.getMonth()-n.getMonth()+(t.getFullYear()-n.getFullYear())*12,n=>n.getMonth());Zo.range;const $o=Oe(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCMonth(n.getUTCMonth()+t)},(n,t)=>t.getUTCMonth()-n.getUTCMonth()+(t.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());$o.range;const sn=Oe(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,t)=>{n.setFullYear(n.getFullYear()+t)},(n,t)=>t.getFullYear()-n.getFullYear(),n=>n.getFullYear());sn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Oe(t=>{t.setFullYear(Math.floor(t.getFullYear()/n)*n),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e*n)}),sn.range;const on=Oe(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCFullYear(n.getUTCFullYear()+t)},(n,t)=>t.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());on.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Oe(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/n)*n),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e*n)}),on.range;function Jg(n,t,e,r,i,s){const o=[[Mn,1,Dn],[Mn,5,5*Dn],[Mn,15,15*Dn],[Mn,30,30*Dn],[s,1,Mt],[s,5,5*Mt],[s,15,15*Mt],[s,30,30*Mt],[i,1,kn],[i,3,3*kn],[i,6,6*kn],[i,12,12*kn],[r,1,Fn],[r,2,2*Fn],[e,1,aA],[t,1,_g],[t,3,3*_g],[n,1,cA]];function a(c,u,f){const h=u<c;h&&([c,u]=[u,c]);const A=f&&typeof f.range=="function"?f:l(c,u,f),d=A?A.range(c,+u+1):[];return h?d.reverse():d}function l(c,u,f){const h=Math.abs(u-c)/f,A=Hr(([,,p])=>p).right(o,h);if(A===o.length)return n.every(Yr(c/cA,u/cA,f));if(A===0)return ji.every(Math.max(Yr(c,u,f),1));const[d,g]=o[h/o[A-1][2]<o[A][2]/h?A-1:A];return d.every(g)}return[a,l]}const[aB,cB]=Jg(on,$o,Xo,Vg,Ml,kl),[lB,uB]=Jg(sn,Zo,Wo,$n,Fl,Dl),ea="year",ta="quarter",na="month",ra="week",ia="date",Tl="day",lA="dayofyear",sa="hours",oa="minutes",aa="seconds",Pl="milliseconds";[ea,ta,na,ra,ia,Tl,lA,sa,oa,aa,Pl].reduce((n,t,e)=>(n[t]=1+e,n),{});const fB={[ea]:sn,[ta]:Zo.every(3),[na]:Zo,[ra]:Wo,[ia]:$n,[Tl]:$n,[lA]:$n,[sa]:Fl,[oa]:Dl,[aa]:Mn,[Pl]:ji},AB={[ea]:on,[ta]:$o.every(3),[na]:$o,[ra]:Xo,[ia]:_r,[Tl]:_r,[lA]:_r,[sa]:Ml,[oa]:kl,[aa]:Mn,[Pl]:ji};function hB(n){return fB[n]}function dB(n){return AB[n]}function uA(n){if(0<=n.y&&n.y<100){var t=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return t.setFullYear(n.y),t}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function fA(n){if(0<=n.y&&n.y<100){var t=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return t.setUTCFullYear(n.y),t}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function ca(n,t,e){return{y:n,m:t,d:e,H:0,M:0,S:0,L:0}}function qg(n){var t=n.dateTime,e=n.date,r=n.time,i=n.periods,s=n.days,o=n.shortDays,a=n.months,l=n.shortMonths,c=la(i),u=ua(i),f=la(s),h=ua(s),A=la(o),d=ua(o),g=la(a),p=ua(a),C=la(l),w=ua(l),b={a:Z,A:le,b:de,B:ge,c:null,d:$g,e:$g,f:LB,g:qB,G:jB,H:NB,I:TB,j:PB,L:ep,m:OB,M:UB,p:Fe,q:Bn,Q:op,s:ap,S:GB,u:zB,U:HB,V:YB,w:_B,W:VB,x:null,X:null,y:JB,Y:KB,Z:WB,"%":sp},y={a:vn,A:Mr,b:Ro,B:Le,c:null,d:np,e:np,f:ev,g:uv,G:Av,H:XB,I:ZB,j:$B,L:rp,m:tv,M:nv,p:Vt,q:Bt,Q:op,s:ap,S:rv,u:iv,U:sv,V:ov,w:av,W:cv,x:null,X:null,y:lv,Y:fv,Z:hv,"%":sp},x={a:S,A:T,b:N,B:U,c:H,d:Xg,e:Xg,f:kB,g:Wg,G:jg,H:Zg,I:Zg,j:vB,L:DB,m:BB,M:QB,p:k,q:xB,Q:MB,s:RB,S:SB,u:yB,U:wB,V:IB,w:CB,W:EB,x:J,X:_,y:Wg,Y:jg,Z:bB,"%":FB};b.x=B(e,b),b.X=B(r,b),b.c=B(t,b),y.x=B(e,y),y.X=B(r,y),y.c=B(t,y);function B(Y,$){return function(ie){var L=[],lt=-1,he=0,pt=Y.length,ut,Jn,al;for(ie instanceof Date||(ie=new Date(+ie));++lt<pt;)Y.charCodeAt(lt)===37&&(L.push(Y.slice(he,lt)),(Jn=Kg[ut=Y.charAt(++lt)])!=null?ut=Y.charAt(++lt):Jn=ut==="e"?" ":"0",(al=$[ut])&&(ut=al(ie,Jn)),L.push(ut),he=lt+1);return L.push(Y.slice(he,lt)),L.join("")}}function E(Y,$){return function(ie){var L=ca(1900,void 0,1),lt=Q(L,Y,ie+="",0),he,pt;if(lt!=ie.length)return null;if("Q"in L)return new Date(L.Q);if("s"in L)return new Date(L.s*1e3+("L"in L?L.L:0));if($&&!("Z"in L)&&(L.Z=0),"p"in L&&(L.H=L.H%12+L.p*12),L.m===void 0&&(L.m="q"in L?L.q:0),"V"in L){if(L.V<1||L.V>53)return null;"w"in L||(L.w=1),"Z"in L?(he=fA(ca(L.y,0,1)),pt=he.getUTCDay(),he=pt>4||pt===0?Nl.ceil(he):Nl(he),he=_r.offset(he,(L.V-1)*7),L.y=he.getUTCFullYear(),L.m=he.getUTCMonth(),L.d=he.getUTCDate()+(L.w+6)%7):(he=uA(ca(L.y,0,1)),pt=he.getDay(),he=pt>4||pt===0?Rl.ceil(he):Rl(he),he=$n.offset(he,(L.V-1)*7),L.y=he.getFullYear(),L.m=he.getMonth(),L.d=he.getDate()+(L.w+6)%7)}else("W"in L||"U"in L)&&("w"in L||(L.w="u"in L?L.u%7:"W"in L?1:0),pt="Z"in L?fA(ca(L.y,0,1)).getUTCDay():uA(ca(L.y,0,1)).getDay(),L.m=0,L.d="W"in L?(L.w+6)%7+L.W*7-(pt+5)%7:L.w+L.U*7-(pt+6)%7);return"Z"in L?(L.H+=L.Z/100|0,L.M+=L.Z%100,fA(L)):uA(L)}}function Q(Y,$,ie,L){for(var lt=0,he=$.length,pt=ie.length,ut,Jn;lt<he;){if(L>=pt)return-1;if(ut=$.charCodeAt(lt++),ut===37){if(ut=$.charAt(lt++),Jn=x[ut in Kg?$.charAt(lt++):ut],!Jn||(L=Jn(Y,ie,L))<0)return-1}else if(ut!=ie.charCodeAt(L++))return-1}return L}function k(Y,$,ie){var L=c.exec($.slice(ie));return L?(Y.p=u.get(L[0].toLowerCase()),ie+L[0].length):-1}function S(Y,$,ie){var L=A.exec($.slice(ie));return L?(Y.w=d.get(L[0].toLowerCase()),ie+L[0].length):-1}function T(Y,$,ie){var L=f.exec($.slice(ie));return L?(Y.w=h.get(L[0].toLowerCase()),ie+L[0].length):-1}function N(Y,$,ie){var L=C.exec($.slice(ie));return L?(Y.m=w.get(L[0].toLowerCase()),ie+L[0].length):-1}function U(Y,$,ie){var L=g.exec($.slice(ie));return L?(Y.m=p.get(L[0].toLowerCase()),ie+L[0].length):-1}function H(Y,$,ie){return Q(Y,t,$,ie)}function J(Y,$,ie){return Q(Y,e,$,ie)}function _(Y,$,ie){return Q(Y,r,$,ie)}function Z(Y){return o[Y.getDay()]}function le(Y){return s[Y.getDay()]}function de(Y){return l[Y.getMonth()]}function ge(Y){return a[Y.getMonth()]}function Fe(Y){return i[+(Y.getHours()>=12)]}function Bn(Y){return 1+~~(Y.getMonth()/3)}function vn(Y){return o[Y.getUTCDay()]}function Mr(Y){return s[Y.getUTCDay()]}function Ro(Y){return l[Y.getUTCMonth()]}function Le(Y){return a[Y.getUTCMonth()]}function Vt(Y){return i[+(Y.getUTCHours()>=12)]}function Bt(Y){return 1+~~(Y.getUTCMonth()/3)}return{format:function(Y){var $=B(Y+="",b);return $.toString=function(){return Y},$},parse:function(Y){var $=E(Y+="",!1);return $.toString=function(){return Y},$},utcFormat:function(Y){var $=B(Y+="",y);return $.toString=function(){return Y},$},utcParse:function(Y){var $=E(Y+="",!0);return $.toString=function(){return Y},$}}}var Kg={"-":"",_:" ",0:"0"},_e=/^\s*\d+/,gB=/^%/,pB=/[\\^$*+?|[\]().{}]/g;function ae(n,t,e){var r=n<0?"-":"",i=(r?-n:n)+"",s=i.length;return r+(s<e?new Array(e-s+1).join(t)+i:i)}function mB(n){return n.replace(pB,"\\$&")}function la(n){return new RegExp("^(?:"+n.map(mB).join("|")+")","i")}function ua(n){return new Map(n.map((t,e)=>[t.toLowerCase(),e]))}function CB(n,t,e){var r=_e.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function yB(n,t,e){var r=_e.exec(t.slice(e,e+1));return r?(n.u=+r[0],e+r[0].length):-1}function wB(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.U=+r[0],e+r[0].length):-1}function IB(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.V=+r[0],e+r[0].length):-1}function EB(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.W=+r[0],e+r[0].length):-1}function jg(n,t,e){var r=_e.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function Wg(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function bB(n,t,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(e,e+6));return r?(n.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function xB(n,t,e){var r=_e.exec(t.slice(e,e+1));return r?(n.q=r[0]*3-3,e+r[0].length):-1}function BB(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function Xg(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function vB(n,t,e){var r=_e.exec(t.slice(e,e+3));return r?(n.m=0,n.d=+r[0],e+r[0].length):-1}function Zg(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function QB(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function SB(n,t,e){var r=_e.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function DB(n,t,e){var r=_e.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function kB(n,t,e){var r=_e.exec(t.slice(e,e+6));return r?(n.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function FB(n,t,e){var r=gB.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function MB(n,t,e){var r=_e.exec(t.slice(e));return r?(n.Q=+r[0],e+r[0].length):-1}function RB(n,t,e){var r=_e.exec(t.slice(e));return r?(n.s=+r[0],e+r[0].length):-1}function $g(n,t){return ae(n.getDate(),t,2)}function NB(n,t){return ae(n.getHours(),t,2)}function TB(n,t){return ae(n.getHours()%12||12,t,2)}function PB(n,t){return ae(1+$n.count(sn(n),n),t,3)}function ep(n,t){return ae(n.getMilliseconds(),t,3)}function LB(n,t){return ep(n,t)+"000"}function OB(n,t){return ae(n.getMonth()+1,t,2)}function UB(n,t){return ae(n.getMinutes(),t,2)}function GB(n,t){return ae(n.getSeconds(),t,2)}function zB(n){var t=n.getDay();return t===0?7:t}function HB(n,t){return ae(Wo.count(sn(n)-1,n),t,2)}function tp(n){var t=n.getDay();return t>=4||t===0?Wi(n):Wi.ceil(n)}function YB(n,t){return n=tp(n),ae(Wi.count(sn(n),n)+(sn(n).getDay()===4),t,2)}function _B(n){return n.getDay()}function VB(n,t){return ae(Rl.count(sn(n)-1,n),t,2)}function JB(n,t){return ae(n.getFullYear()%100,t,2)}function qB(n,t){return n=tp(n),ae(n.getFullYear()%100,t,2)}function KB(n,t){return ae(n.getFullYear()%1e4,t,4)}function jB(n,t){var e=n.getDay();return n=e>=4||e===0?Wi(n):Wi.ceil(n),ae(n.getFullYear()%1e4,t,4)}function WB(n){var t=n.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+ae(t/60|0,"0",2)+ae(t%60,"0",2)}function np(n,t){return ae(n.getUTCDate(),t,2)}function XB(n,t){return ae(n.getUTCHours(),t,2)}function ZB(n,t){return ae(n.getUTCHours()%12||12,t,2)}function $B(n,t){return ae(1+_r.count(on(n),n),t,3)}function rp(n,t){return ae(n.getUTCMilliseconds(),t,3)}function ev(n,t){return rp(n,t)+"000"}function tv(n,t){return ae(n.getUTCMonth()+1,t,2)}function nv(n,t){return ae(n.getUTCMinutes(),t,2)}function rv(n,t){return ae(n.getUTCSeconds(),t,2)}function iv(n){var t=n.getUTCDay();return t===0?7:t}function sv(n,t){return ae(Xo.count(on(n)-1,n),t,2)}function ip(n){var t=n.getUTCDay();return t>=4||t===0?Xi(n):Xi.ceil(n)}function ov(n,t){return n=ip(n),ae(Xi.count(on(n),n)+(on(n).getUTCDay()===4),t,2)}function av(n){return n.getUTCDay()}function cv(n,t){return ae(Nl.count(on(n)-1,n),t,2)}function lv(n,t){return ae(n.getUTCFullYear()%100,t,2)}function uv(n,t){return n=ip(n),ae(n.getUTCFullYear()%100,t,2)}function fv(n,t){return ae(n.getUTCFullYear()%1e4,t,4)}function Av(n,t){var e=n.getUTCDay();return n=e>=4||e===0?Xi(n):Xi.ceil(n),ae(n.getUTCFullYear()%1e4,t,4)}function hv(){return"+0000"}function sp(){return"%"}function op(n){return+n}function ap(n){return Math.floor(+n/1e3)}var Zi,AA,cp,hA,lp;dv({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 dv(n){return Zi=qg(n),AA=Zi.format,cp=Zi.parse,hA=Zi.utcFormat,lp=Zi.utcParse,Zi}function Ll(n){const t={};return e=>t[e]||(t[e]=n(e))}function up(n,t,e){e=e||{},et(e)||Ne(`Invalid time multi-format specifier: ${e}`);const r=t(aa),i=t(oa),s=t(sa),o=t(ia),a=t(ra),l=t(na),c=t(ta),u=t(ea),f=n(e[Pl]||".%L"),h=n(e[aa]||":%S"),A=n(e[oa]||"%I:%M"),d=n(e[sa]||"%I %p"),g=n(e[ia]||e[Tl]||"%a %d"),p=n(e[ra]||"%b %d"),C=n(e[na]||"%B"),w=n(e[ta]||"%B"),b=n(e[ea]||"%Y");return y=>(r(y)<y?f:i(y)<y?h:s(y)<y?A:o(y)<y?d:l(y)<y?a(y)<y?g:p:u(y)<y?c(y)<y?C:w:b)(y)}function fp(n){const t=Ll(n.format),e=Ll(n.utcFormat);return{timeFormat:r=>Ce(r)?t(r):up(t,hB,r),utcFormat:r=>Ce(r)?e(r):up(e,dB,r),timeParse:Ll(n.parse),utcParse:Ll(n.utcParse)}}let dA;gv();function gv(){return dA=fp({format:AA,parse:cp,utcFormat:hA,utcParse:lp})}function pv(n){return fp(qg(n))}function mv(n){return arguments.length?dA=pv(n):dA}const Cv=n=>n!=null&&n===n,yv=n=>n==="true"||n==="false"||n===!0||n===!1,wv=n=>!Number.isNaN(Date.parse(n)),Ap=n=>!Number.isNaN(+n)&&!(n instanceof Date),Iv=n=>Ap(n)&&Number.isInteger(+n),hp={boolean:Yb,integer:To,number:To,date:Vb,string:Jb,unknown:gl},Ol=[yv,Iv,Ap,wv],Ev=["boolean","integer","number","date"];function bv(n,t){if(!n||!n.length)return"unknown";const e=n.length,r=Ol.length,i=Ol.map((s,o)=>o+1);for(let s=0,o=0,a,l;s<e;++s)for(l=t?n[s][t]:n[s],a=0;a<r;++a)if(i[a]&&Cv(l)&&!Ol[a](l)&&(i[a]=0,++o,o===Ol.length))return"string";return Ev[i.reduce((s,o)=>s===0?o:s,0)-1]}function xv(n,t){return t.reduce((e,r)=>(e[r]=bv(n,r),e),{})}function dp(n){const t=function(e,r){const i={delimiter:n};return gA(e,r?Ub(r,i):i)};return t.responseType="text",t}function gA(n,t){return t.header&&(n=t.header.map(Yf).join(t.delimiter)+`
24
- `+n),Sg(t.delimiter).parse(n+"")}gA.responseType="text";function Bv(n){return typeof Buffer=="function"&&Ft(Buffer.isBuffer)?Buffer.isBuffer(n):!1}function pA(n,t){const e=t&&t.property?dl(t.property):gl;return et(n)&&!Bv(n)?vv(e(n),t):e(JSON.parse(n))}pA.responseType="json";function vv(n,t){return!Xe(n)&&zb(n)&&(n=[...n]),t&&t.copy?JSON.parse(JSON.stringify(n)):n}const Qv={interior:(n,t)=>n!==t,exterior:(n,t)=>n===t};function gp(n,t){let e,r,i,s;return n=pA(n,t),t&&t.feature?(e=wx,i=t.feature):t&&t.mesh?(e=Ex,i=t.mesh,s=Qv[t.filter]):Ne("Missing TopoJSON feature or mesh parameter."),r=(r=n.objects[i])?e(n,r,s):Ne("Invalid TopoJSON object: "+i),r&&r.features||[r]}gp.responseType="json";const mA={dsv:gA,csv:dp(","),tsv:dp(" "),json:pA,topojson:gp};function CA(n,t){return arguments.length>1?(mA[n]=t,this):_i(mA,n)?mA[n]:null}function yA(n,t,e,r){t=t||{};const i=CA(t.type||"json");return i||Ne("Unknown data format type: "+t.type),n=i(n,t),t.parse&&Sv(n,t.parse,e,r),_i(n,"columns")&&delete n.columns,n}function Sv(n,t,e,r){if(!n.length)return;const i=mv();e=e||i.timeParse,r=r||i.utcParse;let s=n.columns||Object.keys(n[0]),o,a,l,c,u,f;t==="auto"&&(t=xv(n,s)),s=Object.keys(t);const h=s.map(A=>{const d=t[A];let g,p;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return g=d.split(/:(.+)?/,2),p=g[1],(p[0]==="'"&&p[p.length-1]==="'"||p[0]==='"'&&p[p.length-1]==='"')&&(p=p.slice(1,-1)),(g[0]==="utc"?r:e)(p);if(!hp[d])throw Error("Illegal format pattern: "+A+":"+d);return hp[d]});for(l=0,u=n.length,f=s.length;l<u;++l)for(o=n[l],c=0;c<f;++c)a=s[c],o[a]=h[c](o[a])}const Dv=`
23
+ `)}function c(f){return f.map(u).join(n)}function u(f){return f==null?"":f instanceof Date?HB(f):t.test(f+="")?'"'+f.replace(/"/g,'""')+'"':f}return{parse:r,parseRows:i,format:o,formatBody:a,formatRows:l,formatRow:c,formatValue:u}}var VB=Up(" "),_B=VB.parseRows;function YB(n){return n}function JB(n){if(n==null)return YB;var t,e,r=n.scale[0],i=n.scale[1],s=n.translate[0],o=n.translate[1];return function(a,l){l||(t=e=0);var c=2,u=a.length,f=new Array(u);for(f[0]=(t+=a[0])*r+s,f[1]=(e+=a[1])*i+o;c<u;)f[c]=a[c],++c;return f}}function qB(n,t){for(var e,r=n.length,i=r-t;i<--r;)e=n[i],n[i++]=n[r],n[r]=e}function KB(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return Gp(n,e)})}:Gp(n,t)}function Gp(n,t){var e=t.id,r=t.bbox,i=t.properties==null?{}:t.properties,s=zp(n,t);return e==null&&r==null?{type:"Feature",properties:i,geometry:s}:r==null?{type:"Feature",id:e,properties:i,geometry:s}:{type:"Feature",id:e,bbox:r,properties:i,geometry:s}}function zp(n,t){var e=JB(n.transform),r=n.arcs;function i(u,f){f.length&&f.pop();for(var h=r[u<0?~u:u],A=0,d=h.length;A<d;++A)f.push(e(h[A],A));u<0&&qB(f,d)}function s(u){return e(u)}function o(u){for(var f=[],h=0,A=u.length;h<A;++h)i(u[h],f);return f.length<2&&f.push(f[0]),f}function a(u){for(var f=o(u);f.length<4;)f.push(f[0]);return f}function l(u){return u.map(a)}function c(u){var f=u.type,h;switch(f){case"GeometryCollection":return{type:f,geometries:u.geometries.map(c)};case"Point":h=s(u.coordinates);break;case"MultiPoint":h=u.coordinates.map(s);break;case"LineString":h=o(u.arcs);break;case"MultiLineString":h=u.arcs.map(o);break;case"Polygon":h=l(u.arcs);break;case"MultiPolygon":h=u.arcs.map(l);break;default:return null}return{type:f,coordinates:h}}return c(t)}function jB(n,t){var e={},r={},i={},s=[],o=-1;t.forEach(function(c,u){var f=n.arcs[c<0?~c:c],h;f.length<3&&!f[1][0]&&!f[1][1]&&(h=t[++o],t[o]=c,t[u]=h)}),t.forEach(function(c){var u=a(c),f=u[0],h=u[1],A,d;if(A=i[f])if(delete i[A.end],A.push(c),A.end=h,d=r[h]){delete r[d.start];var p=d===A?A:A.concat(d);r[p.start=A.start]=i[p.end=d.end]=p}else r[A.start]=i[A.end]=A;else if(A=r[h])if(delete r[A.start],A.unshift(c),A.start=f,d=i[f]){delete i[d.end];var C=d===A?A:d.concat(A);r[C.start=d.start]=i[C.end=A.end]=C}else r[A.start]=i[A.end]=A;else A=[c],r[A.start=f]=i[A.end=h]=A});function a(c){var u=n.arcs[c<0?~c:c],f=u[0],h;return n.transform?(h=[0,0],u.forEach(function(A){h[0]+=A[0],h[1]+=A[1]})):h=u[u.length-1],c<0?[h,f]:[f,h]}function l(c,u){for(var f in c){var h=c[f];delete u[h.start],delete h.start,delete h.end,h.forEach(function(A){e[A<0?~A:A]=1}),s.push(h)}}return l(i,r),l(r,i),t.forEach(function(c){e[c<0?~c:c]||s.push([c])}),s}function WB(n){return zp(n,XB.apply(this,arguments))}function XB(n,t,e){var r,i,s;if(arguments.length>1)r=ZB(n,t,e);else for(i=0,r=new Array(s=n.arcs.length);i<s;++i)r[i]=i;return{type:"MultiLineString",arcs:jB(n,r)}}function ZB(n,t,e){var r=[],i=[],s;function o(f){var h=f<0?~f:f;(i[h]||(i[h]=[])).push({i:f,g:s})}function a(f){f.forEach(o)}function l(f){f.forEach(a)}function c(f){f.forEach(l)}function u(f){switch(s=f,f.type){case"GeometryCollection":f.geometries.forEach(u);break;case"LineString":a(f.arcs);break;case"MultiLineString":case"Polygon":l(f.arcs);break;case"MultiPolygon":c(f.arcs);break}}return u(t),i.forEach(e==null?function(f){r.push(f[0].i)}:function(f){e(f[0].g,f[f.length-1].g)&&r.push(f[0].i)}),r}function Zr(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function $B(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function $r(n){let t,e,r;n.length!==2?(t=Zr,e=(a,l)=>Zr(n(a),l),r=(a,l)=>n(a)-l):(t=n===Zr||n===$B?n:ev,e=n,r=n);function i(a,l,c=0,u=a.length){if(c<u){if(t(l,l)!==0)return u;do{const f=c+u>>>1;e(a[f],l)<0?c=f+1:u=f}while(c<u)}return c}function s(a,l,c=0,u=a.length){if(c<u){if(t(l,l)!==0)return u;do{const f=c+u>>>1;e(a[f],l)<=0?c=f+1:u=f}while(c<u)}return c}function o(a,l,c=0,u=a.length){const f=i(a,l,c,u-1);return f>c&&r(a[f-1],l)>-r(a[f],l)?f-1:f}return{left:i,center:o,right:s}}function ev(){return 0}function Hp(n){return n===null?NaN:+n}function*tv(n,t){if(t===void 0)for(let e of n)e!=null&&(e=+e)>=e&&(yield e);else{let e=-1;for(let r of n)(r=t(r,++e,n))!=null&&(r=+r)>=r&&(yield r)}}const Vp=$r(Zr),or=Vp.right;Vp.left,$r(Hp).center;function nv(n,t){let e=0;if(t===void 0)for(let r of n)r!=null&&(r=+r)>=r&&++e;else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(i=+i)>=i&&++e}return e}function rv(n,t){let e=0,r,i=0,s=0;if(t===void 0)for(let o of n)o!=null&&(o=+o)>=o&&(r=o-i,i+=r/++e,s+=r*(o-i));else{let o=-1;for(let a of n)(a=t(a,++o,n))!=null&&(a=+a)>=a&&(r=a-i,i+=r/++e,s+=r*(a-i))}if(e>1)return s/(e-1)}function iv(n,t){let e,r;for(const i of n)i!=null&&(e===void 0?i>=i&&(e=r=i):(e>i&&(e=i),r<i&&(r=i)));return[e,r]}class vn extends Map{constructor(t,e=av){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),t!=null)for(const[r,i]of t)this.set(r,i)}get(t){return super.get(_p(this,t))}has(t){return super.has(_p(this,t))}set(t,e){return super.set(sv(this,t),e)}delete(t){return super.delete(ov(this,t))}}function _p({_intern:n,_key:t},e){const r=t(e);return n.has(r)?n.get(r):e}function sv({_intern:n,_key:t},e){const r=t(e);return n.has(r)?n.get(r):(n.set(r,e),e)}function ov({_intern:n,_key:t},e){const r=t(e);return n.has(r)&&(e=n.get(r),n.delete(r)),e}function av(n){return n!==null&&typeof n=="object"?n.valueOf():n}function ZA(n){return n}function Au(n,...t){return Yp(n,ZA,ZA,t)}function cv(n,...t){return Yp(n,Array.from,ZA,t)}function Yp(n,t,e,r){return(function i(s,o){if(o>=r.length)return e(s);const a=new vn,l=r[o++];let c=-1;for(const u of s){const f=l(u,++c,s),h=a.get(f);h?h.push(u):a.set(f,[u])}for(const[u,f]of a)a.set(u,i(f,o));return t(a)})(n,0)}function lv(n=Zr){if(n===Zr)return Jp;if(typeof n!="function")throw new TypeError("compare is not a function");return(t,e)=>{const r=n(t,e);return r||r===0?r:(n(e,e)===0)-(n(t,t)===0)}}function Jp(n,t){return(n==null||!(n>=n))-(t==null||!(t>=t))||(n<t?-1:n>t?1:0)}const uv=Math.sqrt(50),fv=Math.sqrt(10),Av=Math.sqrt(2);function hu(n,t,e){const r=(t-n)/Math.max(0,e),i=Math.floor(Math.log10(r)),s=r/Math.pow(10,i),o=s>=uv?10:s>=fv?5:s>=Av?2:1;let a,l,c;return i<0?(c=Math.pow(10,-i)/o,a=Math.round(n*c),l=Math.round(t*c),a/c<n&&++a,l/c>t&&--l,c=-c):(c=Math.pow(10,i)*o,a=Math.round(n/c),l=Math.round(t/c),a*c<n&&++a,l*c>t&&--l),l<a&&.5<=e&&e<2?hu(n,t,e*2):[a,l,c]}function du(n,t,e){if(t=+t,n=+n,e=+e,!(e>0))return[];if(n===t)return[n];const r=t<n,[i,s,o]=r?hu(t,n,e):hu(n,t,e);if(!(s>=i))return[];const a=s-i+1,l=new Array(a);if(r)if(o<0)for(let c=0;c<a;++c)l[c]=(s-c)/-o;else for(let c=0;c<a;++c)l[c]=(s-c)*o;else if(o<0)for(let c=0;c<a;++c)l[c]=(i+c)/-o;else for(let c=0;c<a;++c)l[c]=(i+c)*o;return l}function $A(n,t,e){return t=+t,n=+n,e=+e,hu(n,t,e)[2]}function ei(n,t,e){t=+t,n=+n,e=+e;const r=t<n,i=r?$A(t,n,e):$A(n,t,e);return(r?-1:1)*(i<0?1/-i:i)}function eh(n,t){let e;if(t===void 0)for(const r of n)r!=null&&(e<r||e===void 0&&r>=r)&&(e=r);else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(e<i||e===void 0&&i>=i)&&(e=i)}return e}function th(n,t){let e;if(t===void 0)for(const r of n)r!=null&&(e>r||e===void 0&&r>=r)&&(e=r);else{let r=-1;for(let i of n)(i=t(i,++r,n))!=null&&(e>i||e===void 0&&i>=i)&&(e=i)}return e}function qp(n,t,e=0,r=1/0,i){if(t=Math.floor(t),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(n.length-1,r)),!(e<=t&&t<=r))return n;for(i=i===void 0?Jp:lv(i);r>e;){if(r-e>600){const l=r-e+1,c=t-e+1,u=Math.log(l),f=.5*Math.exp(2*u/3),h=.5*Math.sqrt(u*f*(l-f)/l)*(c-l/2<0?-1:1),A=Math.max(e,Math.floor(t-c*f/l+h)),d=Math.min(r,Math.floor(t+(l-c)*f/l+h));qp(n,t,A,d,i)}const s=n[t];let o=e,a=r;for(Qa(n,e,t),i(n[r],s)>0&&Qa(n,e,r);o<a;){for(Qa(n,o,a),++o,--a;i(n[o],s)<0;)++o;for(;i(n[a],s)>0;)--a}i(n[e],s)===0?Qa(n,e,a):(++a,Qa(n,a,r)),a<=t&&(e=a+1),t<=a&&(r=a-1)}return n}function Qa(n,t,e){const r=n[t];n[t]=n[e],n[e]=r}function hv(n,t,e){if(n=Float64Array.from(tv(n,e)),!(!(r=n.length)||isNaN(t=+t))){if(t<=0||r<2)return th(n);if(t>=1)return eh(n);var r,i=(r-1)*t,s=Math.floor(i),o=eh(qp(n,s).subarray(0,s+1)),a=th(n.subarray(s+1));return o+(a-o)*(i-s)}}function Kp(n,t,e=Hp){if(!(!(r=n.length)||isNaN(t=+t))){if(t<=0||r<2)return+e(n[0],0,n);if(t>=1)return+e(n[r-1],r-1,n);var r,i=(r-1)*t,s=Math.floor(i),o=+e(n[s],s,n),a=+e(n[s+1],s+1,n);return o+(a-o)*(i-s)}}function dv(n,t){let e=0,r=0;if(t===void 0)for(let i of n)i!=null&&(i=+i)>=i&&(++e,r+=i);else{let i=-1;for(let s of n)(s=t(s,++i,n))!=null&&(s=+s)>=s&&(++e,r+=s)}if(e)return r/e}function gv(n,t){return hv(n,.5,t)}function Da(n,t,e){n=+n,t=+t,e=(i=arguments.length)<2?(t=n,n=0,1):i<3?1:+e;for(var r=-1,i=Math.max(0,Math.ceil((t-n)/e))|0,s=new Array(i);++r<i;)s[r]=n+r*e;return s}function ka(n,t){let e=0;if(t===void 0)for(let r of n)(r=+r)&&(e+=r);else{let r=-1;for(let i of n)(i=+t(i,++r,n))&&(e+=i)}return e}function pv(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function gu(n,t){if(!isFinite(n)||n===0)return null;var e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),r=n.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+n.slice(e+1)]}function gs(n){return n=gu(Math.abs(n)),n?n[1]:NaN}function mv(n,t){return function(e,r){for(var i=e.length,s=[],o=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),s.push(e.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[o=(o+1)%n.length];return s.reverse().join(t)}}function Cv(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var yv=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ps(n){if(!(t=yv.exec(n)))throw new Error("invalid format: "+n);var t;return new nh({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}ps.prototype=nh.prototype;function nh(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}nh.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 wv(n){e:for(var t=n.length,e=1,r=-1,i;e<t;++e)switch(n[e]){case".":r=i=e;break;case"0":r===0&&(r=e),i=e;break;default:if(!+n[e])break e;r>0&&(r=0);break}return r>0?n.slice(0,r)+n.slice(i+1):n}var pu;function Iv(n,t){var e=gu(n,t);if(!e)return pu=void 0,n.toPrecision(t);var r=e[0],i=e[1],s=i-(pu=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return s===o?r:s>o?r+new Array(s-o+1).join("0"):s>0?r.slice(0,s)+"."+r.slice(s):"0."+new Array(1-s).join("0")+gu(n,Math.max(0,t+s-1))[0]}function jp(n,t){var e=gu(n,t);if(!e)return n+"";var r=e[0],i=e[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 Wp={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:pv,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>jp(n*100,t),r:jp,s:Iv,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function Xp(n){return n}var Zp=Array.prototype.map,$p=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ev(n){var t=n.grouping===void 0||n.thousands===void 0?Xp:mv(Zp.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",r=n.currency===void 0?"":n.currency[1]+"",i=n.decimal===void 0?".":n.decimal+"",s=n.numerals===void 0?Xp:Cv(Zp.call(n.numerals,String)),o=n.percent===void 0?"%":n.percent+"",a=n.minus===void 0?"−":n.minus+"",l=n.nan===void 0?"NaN":n.nan+"";function c(f,h){f=ps(f);var A=f.fill,d=f.align,p=f.sign,C=f.symbol,m=f.zero,w=f.width,b=f.comma,y=f.precision,x=f.trim,B=f.type;B==="n"?(b=!0,B="g"):Wp[B]||(y===void 0&&(y=12),x=!0,B="g"),(m||A==="0"&&d==="=")&&(m=!0,A="0",d="=");var E=(h&&h.prefix!==void 0?h.prefix:"")+(C==="$"?e:C==="#"&&/[boxX]/.test(B)?"0"+B.toLowerCase():""),Q=(C==="$"?r:/[%p]/.test(B)?o:"")+(h&&h.suffix!==void 0?h.suffix:""),F=Wp[B],k=/[defgprs%]/.test(B);y=y===void 0?6:/[gprs]/.test(B)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y));function P(T){var O=E,z=Q,J,V,q;if(B==="c")z=F(T)+z,T="";else{T=+T;var oe=T<0||1/T<0;if(T=isNaN(T)?l:F(Math.abs(T),y),x&&(T=wv(T)),oe&&+T==0&&p!=="+"&&(oe=!1),O=(oe?p==="("?p:a:p==="-"||p==="("?"":p)+O,z=(B==="s"&&!isNaN(T)&&pu!==void 0?$p[8+pu/3]:"")+z+(oe&&p==="("?")":""),k){for(J=-1,V=T.length;++J<V;)if(q=T.charCodeAt(J),48>q||q>57){z=(q===46?i+T.slice(J+1):T.slice(J))+z,T=T.slice(0,J);break}}}b&&!m&&(T=t(T,1/0));var se=O.length+T.length+z.length,Ae=se<w?new Array(w-se+1).join(A):"";switch(b&&m&&(T=t(Ae+T,Ae.length?w-z.length:1/0),Ae=""),d){case"<":T=O+T+z+Ae;break;case"=":T=O+Ae+T+z;break;case"^":T=Ae.slice(0,se=Ae.length>>1)+O+T+z+Ae.slice(se);break;default:T=Ae+O+T+z;break}return s(T)}return P.toString=function(){return f+""},P}function u(f,h){var A=Math.max(-8,Math.min(8,Math.floor(gs(h)/3)))*3,d=Math.pow(10,-A),p=c((f=ps(f),f.type="f",f),{suffix:$p[8+A/3]});return function(C){return p(d*C)}}return{format:c,formatPrefix:u}}var mu,We,em;bv({thousands:",",grouping:[3],currency:["$",""]});function bv(n){return mu=Ev(n),We=mu.format,em=mu.formatPrefix,mu}function xv(n){return Math.max(0,-gs(Math.abs(n)))}function Bv(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(gs(t)/3)))*3-gs(Math.abs(n)))}function vv(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,gs(t)-gs(n))+1}const rh=new Date,ih=new Date;function Pe(n,t,e,r){function i(s){return n(s=arguments.length===0?new Date:new Date(+s)),s}return i.floor=s=>(n(s=new Date(+s)),s),i.ceil=s=>(n(s=new Date(s-1)),t(s,1),n(s),s),i.round=s=>{const o=i(s),a=i.ceil(s);return s-o<a-s?o:a},i.offset=(s,o)=>(t(s=new Date(+s),o==null?1:Math.floor(o)),s),i.range=(s,o,a)=>{const l=[];if(s=i.ceil(s),a=a==null?1:Math.floor(a),!(s<o)||!(a>0))return l;let c;do l.push(c=new Date(+s)),t(s,a),n(s);while(c<s&&s<o);return l},i.filter=s=>Pe(o=>{if(o>=o)for(;n(o),!s(o);)o.setTime(o-1)},(o,a)=>{if(o>=o)if(a<0)for(;++a<=0;)for(;t(o,-1),!s(o););else for(;--a>=0;)for(;t(o,1),!s(o););}),e&&(i.count=(s,o)=>(rh.setTime(+s),ih.setTime(+o),n(rh),n(ih),Math.floor(e(rh,ih))),i.every=s=>(s=Math.floor(s),!isFinite(s)||!(s>0)?null:s>1?i.filter(r?o=>r(o)%s===0:o=>i.count(0,o)%s===0):i)),i}const ms=Pe(()=>{},(n,t)=>{n.setTime(+n+t)},(n,t)=>t-n);ms.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?Pe(t=>{t.setTime(Math.floor(t/n)*n)},(t,e)=>{t.setTime(+t+e*n)},(t,e)=>(e-t)/n):ms),ms.range;const Sn=1e3,Rt=Sn*60,Qn=Rt*60,Dn=Qn*24,sh=Dn*7,tm=Dn*30,oh=Dn*365,kn=Pe(n=>{n.setTime(n-n.getMilliseconds())},(n,t)=>{n.setTime(+n+t*Sn)},(n,t)=>(t-n)/Sn,n=>n.getUTCSeconds());kn.range;const Cu=Pe(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Sn)},(n,t)=>{n.setTime(+n+t*Rt)},(n,t)=>(t-n)/Rt,n=>n.getMinutes());Cu.range;const yu=Pe(n=>{n.setUTCSeconds(0,0)},(n,t)=>{n.setTime(+n+t*Rt)},(n,t)=>(t-n)/Rt,n=>n.getUTCMinutes());yu.range;const wu=Pe(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Sn-n.getMinutes()*Rt)},(n,t)=>{n.setTime(+n+t*Qn)},(n,t)=>(t-n)/Qn,n=>n.getHours());wu.range;const Iu=Pe(n=>{n.setUTCMinutes(0,0,0)},(n,t)=>{n.setTime(+n+t*Qn)},(n,t)=>(t-n)/Qn,n=>n.getUTCHours());Iu.range;const ar=Pe(n=>n.setHours(0,0,0,0),(n,t)=>n.setDate(n.getDate()+t),(n,t)=>(t-n-(t.getTimezoneOffset()-n.getTimezoneOffset())*Rt)/Dn,n=>n.getDate()-1);ar.range;const ti=Pe(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/Dn,n=>n.getUTCDate()-1);ti.range;const nm=Pe(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/Dn,n=>Math.floor(n/Dn));nm.range;function ni(n){return Pe(t=>{t.setDate(t.getDate()-(t.getDay()+7-n)%7),t.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+e*7)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*Rt)/sh)}const Fa=ni(0),Eu=ni(1),Sv=ni(2),Qv=ni(3),Cs=ni(4),Dv=ni(5),kv=ni(6);Fa.range,Eu.range,Sv.range,Qv.range,Cs.range,Dv.range,kv.range;function ri(n){return Pe(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-n)%7),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e*7)},(t,e)=>(e-t)/sh)}const Ma=ri(0),bu=ri(1),Fv=ri(2),Mv=ri(3),ys=ri(4),Rv=ri(5),Nv=ri(6);Ma.range,bu.range,Fv.range,Mv.range,ys.range,Rv.range,Nv.range;const Ra=Pe(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,t)=>{n.setMonth(n.getMonth()+t)},(n,t)=>t.getMonth()-n.getMonth()+(t.getFullYear()-n.getFullYear())*12,n=>n.getMonth());Ra.range;const Na=Pe(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCMonth(n.getUTCMonth()+t)},(n,t)=>t.getUTCMonth()-n.getUTCMonth()+(t.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());Na.range;const an=Pe(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,t)=>{n.setFullYear(n.getFullYear()+t)},(n,t)=>t.getFullYear()-n.getFullYear(),n=>n.getFullYear());an.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Pe(t=>{t.setFullYear(Math.floor(t.getFullYear()/n)*n),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e*n)}),an.range;const cn=Pe(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCFullYear(n.getUTCFullYear()+t)},(n,t)=>t.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());cn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:Pe(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/n)*n),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e*n)}),cn.range;function rm(n,t,e,r,i,s){const o=[[kn,1,Sn],[kn,5,5*Sn],[kn,15,15*Sn],[kn,30,30*Sn],[s,1,Rt],[s,5,5*Rt],[s,15,15*Rt],[s,30,30*Rt],[i,1,Qn],[i,3,3*Qn],[i,6,6*Qn],[i,12,12*Qn],[r,1,Dn],[r,2,2*Dn],[e,1,sh],[t,1,tm],[t,3,3*tm],[n,1,oh]];function a(c,u,f){const h=u<c;h&&([c,u]=[u,c]);const A=f&&typeof f.range=="function"?f:l(c,u,f),d=A?A.range(c,+u+1):[];return h?d.reverse():d}function l(c,u,f){const h=Math.abs(u-c)/f,A=$r(([,,C])=>C).right(o,h);if(A===o.length)return n.every(ei(c/oh,u/oh,f));if(A===0)return ms.every(Math.max(ei(c,u,f),1));const[d,p]=o[h/o[A-1][2]<o[A][2]/h?A-1:A];return d.every(p)}return[a,l]}const[Tv,Pv]=rm(cn,Na,Ma,nm,Iu,yu),[Lv,Ov]=rm(an,Ra,Fa,ar,wu,Cu),Ta="year",Pa="quarter",La="month",Oa="week",Ua="date",xu="day",ah="dayofyear",Ga="hours",za="minutes",Ha="seconds",Bu="milliseconds";[Ta,Pa,La,Oa,Ua,xu,ah,Ga,za,Ha,Bu].reduce((n,t,e)=>(n[t]=1+e,n),{});const Uv={[Ta]:an,[Pa]:Ra.every(3),[La]:Ra,[Oa]:Fa,[Ua]:ar,[xu]:ar,[ah]:ar,[Ga]:wu,[za]:Cu,[Ha]:kn,[Bu]:ms},Gv={[Ta]:cn,[Pa]:Na.every(3),[La]:Na,[Oa]:Ma,[Ua]:ti,[xu]:ti,[ah]:ti,[Ga]:Iu,[za]:yu,[Ha]:kn,[Bu]:ms};function zv(n){return Uv[n]}function Hv(n){return Gv[n]}function ch(n){if(0<=n.y&&n.y<100){var t=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return t.setFullYear(n.y),t}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function lh(n){if(0<=n.y&&n.y<100){var t=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return t.setUTCFullYear(n.y),t}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function Va(n,t,e){return{y:n,m:t,d:e,H:0,M:0,S:0,L:0}}function im(n){var t=n.dateTime,e=n.date,r=n.time,i=n.periods,s=n.days,o=n.shortDays,a=n.months,l=n.shortMonths,c=_a(i),u=Ya(i),f=_a(s),h=Ya(s),A=_a(o),d=Ya(o),p=_a(a),C=Ya(a),m=_a(l),w=Ya(l),b={a:q,A:oe,b:se,B:Ae,c:null,d:um,e:um,f:f3,g:I3,G:b3,H:c3,I:l3,j:u3,L:fm,m:A3,M:h3,p:at,q:Ft,Q:mm,s:Cm,S:d3,u:g3,U:p3,V:m3,w:C3,W:y3,x:null,X:null,y:w3,Y:E3,Z:x3,"%":pm},y={a:xn,A:cs,b:jl,B:ha,c:null,d:hm,e:hm,f:Q3,g:O3,G:G3,H:B3,I:v3,j:S3,L:dm,m:D3,M:k3,p:$n,q:ls,Q:mm,s:Cm,S:F3,u:M3,U:R3,V:N3,w:T3,W:P3,x:null,X:null,y:L3,Y:U3,Z:z3,"%":pm},x={a:k,A:P,b:T,B:O,c:z,d:cm,e:cm,f:i3,g:am,G:om,H:lm,I:lm,j:e3,L:r3,m:$v,M:t3,p:F,q:Zv,Q:o3,s:a3,S:n3,u:qv,U:Kv,V:jv,w:Jv,W:Wv,x:J,X:V,y:am,Y:om,Z:Xv,"%":s3};b.x=B(e,b),b.X=B(r,b),b.c=B(t,b),y.x=B(e,y),y.X=B(r,y),y.c=B(t,y);function B(_,ee){return function(ae){var L=[],ct=-1,ge=0,Ct=_.length,lt,er,Wl;for(ae instanceof Date||(ae=new Date(+ae));++ct<Ct;)_.charCodeAt(ct)===37&&(L.push(_.slice(ge,ct)),(er=sm[lt=_.charAt(++ct)])!=null?lt=_.charAt(++ct):er=lt==="e"?" ":"0",(Wl=ee[lt])&&(lt=Wl(ae,er)),L.push(lt),ge=ct+1);return L.push(_.slice(ge,ct)),L.join("")}}function E(_,ee){return function(ae){var L=Va(1900,void 0,1),ct=Q(L,_,ae+="",0),ge,Ct;if(ct!=ae.length)return null;if("Q"in L)return new Date(L.Q);if("s"in L)return new Date(L.s*1e3+("L"in L?L.L:0));if(ee&&!("Z"in L)&&(L.Z=0),"p"in L&&(L.H=L.H%12+L.p*12),L.m===void 0&&(L.m="q"in L?L.q:0),"V"in L){if(L.V<1||L.V>53)return null;"w"in L||(L.w=1),"Z"in L?(ge=lh(Va(L.y,0,1)),Ct=ge.getUTCDay(),ge=Ct>4||Ct===0?bu.ceil(ge):bu(ge),ge=ti.offset(ge,(L.V-1)*7),L.y=ge.getUTCFullYear(),L.m=ge.getUTCMonth(),L.d=ge.getUTCDate()+(L.w+6)%7):(ge=ch(Va(L.y,0,1)),Ct=ge.getDay(),ge=Ct>4||Ct===0?Eu.ceil(ge):Eu(ge),ge=ar.offset(ge,(L.V-1)*7),L.y=ge.getFullYear(),L.m=ge.getMonth(),L.d=ge.getDate()+(L.w+6)%7)}else("W"in L||"U"in L)&&("w"in L||(L.w="u"in L?L.u%7:"W"in L?1:0),Ct="Z"in L?lh(Va(L.y,0,1)).getUTCDay():ch(Va(L.y,0,1)).getDay(),L.m=0,L.d="W"in L?(L.w+6)%7+L.W*7-(Ct+5)%7:L.w+L.U*7-(Ct+6)%7);return"Z"in L?(L.H+=L.Z/100|0,L.M+=L.Z%100,lh(L)):ch(L)}}function Q(_,ee,ae,L){for(var ct=0,ge=ee.length,Ct=ae.length,lt,er;ct<ge;){if(L>=Ct)return-1;if(lt=ee.charCodeAt(ct++),lt===37){if(lt=ee.charAt(ct++),er=x[lt in sm?ee.charAt(ct++):lt],!er||(L=er(_,ae,L))<0)return-1}else if(lt!=ae.charCodeAt(L++))return-1}return L}function F(_,ee,ae){var L=c.exec(ee.slice(ae));return L?(_.p=u.get(L[0].toLowerCase()),ae+L[0].length):-1}function k(_,ee,ae){var L=A.exec(ee.slice(ae));return L?(_.w=d.get(L[0].toLowerCase()),ae+L[0].length):-1}function P(_,ee,ae){var L=f.exec(ee.slice(ae));return L?(_.w=h.get(L[0].toLowerCase()),ae+L[0].length):-1}function T(_,ee,ae){var L=m.exec(ee.slice(ae));return L?(_.m=w.get(L[0].toLowerCase()),ae+L[0].length):-1}function O(_,ee,ae){var L=p.exec(ee.slice(ae));return L?(_.m=C.get(L[0].toLowerCase()),ae+L[0].length):-1}function z(_,ee,ae){return Q(_,t,ee,ae)}function J(_,ee,ae){return Q(_,e,ee,ae)}function V(_,ee,ae){return Q(_,r,ee,ae)}function q(_){return o[_.getDay()]}function oe(_){return s[_.getDay()]}function se(_){return l[_.getMonth()]}function Ae(_){return a[_.getMonth()]}function at(_){return i[+(_.getHours()>=12)]}function Ft(_){return 1+~~(_.getMonth()/3)}function xn(_){return o[_.getUTCDay()]}function cs(_){return s[_.getUTCDay()]}function jl(_){return l[_.getUTCMonth()]}function ha(_){return a[_.getUTCMonth()]}function $n(_){return i[+(_.getUTCHours()>=12)]}function ls(_){return 1+~~(_.getUTCMonth()/3)}return{format:function(_){var ee=B(_+="",b);return ee.toString=function(){return _},ee},parse:function(_){var ee=E(_+="",!1);return ee.toString=function(){return _},ee},utcFormat:function(_){var ee=B(_+="",y);return ee.toString=function(){return _},ee},utcParse:function(_){var ee=E(_+="",!0);return ee.toString=function(){return _},ee}}}var sm={"-":"",_:" ",0:"0"},He=/^\s*\d+/,Vv=/^%/,_v=/[\\^$*+?|[\]().{}]/g;function le(n,t,e){var r=n<0?"-":"",i=(r?-n:n)+"",s=i.length;return r+(s<e?new Array(e-s+1).join(t)+i:i)}function Yv(n){return n.replace(_v,"\\$&")}function _a(n){return new RegExp("^(?:"+n.map(Yv).join("|")+")","i")}function Ya(n){return new Map(n.map((t,e)=>[t.toLowerCase(),e]))}function Jv(n,t,e){var r=He.exec(t.slice(e,e+1));return r?(n.w=+r[0],e+r[0].length):-1}function qv(n,t,e){var r=He.exec(t.slice(e,e+1));return r?(n.u=+r[0],e+r[0].length):-1}function Kv(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.U=+r[0],e+r[0].length):-1}function jv(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.V=+r[0],e+r[0].length):-1}function Wv(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.W=+r[0],e+r[0].length):-1}function om(n,t,e){var r=He.exec(t.slice(e,e+4));return r?(n.y=+r[0],e+r[0].length):-1}function am(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function Xv(n,t,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(e,e+6));return r?(n.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Zv(n,t,e){var r=He.exec(t.slice(e,e+1));return r?(n.q=r[0]*3-3,e+r[0].length):-1}function $v(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.m=r[0]-1,e+r[0].length):-1}function cm(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.d=+r[0],e+r[0].length):-1}function e3(n,t,e){var r=He.exec(t.slice(e,e+3));return r?(n.m=0,n.d=+r[0],e+r[0].length):-1}function lm(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.H=+r[0],e+r[0].length):-1}function t3(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.M=+r[0],e+r[0].length):-1}function n3(n,t,e){var r=He.exec(t.slice(e,e+2));return r?(n.S=+r[0],e+r[0].length):-1}function r3(n,t,e){var r=He.exec(t.slice(e,e+3));return r?(n.L=+r[0],e+r[0].length):-1}function i3(n,t,e){var r=He.exec(t.slice(e,e+6));return r?(n.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function s3(n,t,e){var r=Vv.exec(t.slice(e,e+1));return r?e+r[0].length:-1}function o3(n,t,e){var r=He.exec(t.slice(e));return r?(n.Q=+r[0],e+r[0].length):-1}function a3(n,t,e){var r=He.exec(t.slice(e));return r?(n.s=+r[0],e+r[0].length):-1}function um(n,t){return le(n.getDate(),t,2)}function c3(n,t){return le(n.getHours(),t,2)}function l3(n,t){return le(n.getHours()%12||12,t,2)}function u3(n,t){return le(1+ar.count(an(n),n),t,3)}function fm(n,t){return le(n.getMilliseconds(),t,3)}function f3(n,t){return fm(n,t)+"000"}function A3(n,t){return le(n.getMonth()+1,t,2)}function h3(n,t){return le(n.getMinutes(),t,2)}function d3(n,t){return le(n.getSeconds(),t,2)}function g3(n){var t=n.getDay();return t===0?7:t}function p3(n,t){return le(Fa.count(an(n)-1,n),t,2)}function Am(n){var t=n.getDay();return t>=4||t===0?Cs(n):Cs.ceil(n)}function m3(n,t){return n=Am(n),le(Cs.count(an(n),n)+(an(n).getDay()===4),t,2)}function C3(n){return n.getDay()}function y3(n,t){return le(Eu.count(an(n)-1,n),t,2)}function w3(n,t){return le(n.getFullYear()%100,t,2)}function I3(n,t){return n=Am(n),le(n.getFullYear()%100,t,2)}function E3(n,t){return le(n.getFullYear()%1e4,t,4)}function b3(n,t){var e=n.getDay();return n=e>=4||e===0?Cs(n):Cs.ceil(n),le(n.getFullYear()%1e4,t,4)}function x3(n){var t=n.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+le(t/60|0,"0",2)+le(t%60,"0",2)}function hm(n,t){return le(n.getUTCDate(),t,2)}function B3(n,t){return le(n.getUTCHours(),t,2)}function v3(n,t){return le(n.getUTCHours()%12||12,t,2)}function S3(n,t){return le(1+ti.count(cn(n),n),t,3)}function dm(n,t){return le(n.getUTCMilliseconds(),t,3)}function Q3(n,t){return dm(n,t)+"000"}function D3(n,t){return le(n.getUTCMonth()+1,t,2)}function k3(n,t){return le(n.getUTCMinutes(),t,2)}function F3(n,t){return le(n.getUTCSeconds(),t,2)}function M3(n){var t=n.getUTCDay();return t===0?7:t}function R3(n,t){return le(Ma.count(cn(n)-1,n),t,2)}function gm(n){var t=n.getUTCDay();return t>=4||t===0?ys(n):ys.ceil(n)}function N3(n,t){return n=gm(n),le(ys.count(cn(n),n)+(cn(n).getUTCDay()===4),t,2)}function T3(n){return n.getUTCDay()}function P3(n,t){return le(bu.count(cn(n)-1,n),t,2)}function L3(n,t){return le(n.getUTCFullYear()%100,t,2)}function O3(n,t){return n=gm(n),le(n.getUTCFullYear()%100,t,2)}function U3(n,t){return le(n.getUTCFullYear()%1e4,t,4)}function G3(n,t){var e=n.getUTCDay();return n=e>=4||e===0?ys(n):ys.ceil(n),le(n.getUTCFullYear()%1e4,t,4)}function z3(){return"+0000"}function pm(){return"%"}function mm(n){return+n}function Cm(n){return Math.floor(+n/1e3)}var ws,uh,ym,fh,wm;H3({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 H3(n){return ws=im(n),uh=ws.format,ym=ws.parse,fh=ws.utcFormat,wm=ws.utcParse,ws}function vu(n){const t={};return e=>t[e]||(t[e]=n(e))}function Im(n,t,e){e=e||{},et(e)||Re(`Invalid time multi-format specifier: ${e}`);const r=t(Ha),i=t(za),s=t(Ga),o=t(Ua),a=t(Oa),l=t(La),c=t(Pa),u=t(Ta),f=n(e[Bu]||".%L"),h=n(e[Ha]||":%S"),A=n(e[za]||"%I:%M"),d=n(e[Ga]||"%I %p"),p=n(e[Ua]||e[xu]||"%a %d"),C=n(e[Oa]||"%b %d"),m=n(e[La]||"%B"),w=n(e[Pa]||"%B"),b=n(e[Ta]||"%Y");return y=>(r(y)<y?f:i(y)<y?h:s(y)<y?A:o(y)<y?d:l(y)<y?a(y)<y?p:C:u(y)<y?c(y)<y?m:w:b)(y)}function Em(n){const t=vu(n.format),e=vu(n.utcFormat);return{timeFormat:r=>ye(r)?t(r):Im(t,zv,r),utcFormat:r=>ye(r)?e(r):Im(e,Hv,r),timeParse:vu(n.parse),utcParse:vu(n.utcParse)}}let Ah;V3();function V3(){return Ah=Em({format:uh,parse:ym,utcFormat:fh,utcParse:wm})}function _3(n){return Em(im(n))}function Y3(n){return arguments.length?Ah=_3(n):Ah}const J3=n=>n!=null&&n===n,q3=n=>n==="true"||n==="false"||n===!0||n===!1,K3=n=>!Number.isNaN(Date.parse(n)),bm=n=>!Number.isNaN(+n)&&!(n instanceof Date),j3=n=>bm(n)&&Number.isInteger(+n),xm={boolean:mB,integer:pa,number:pa,date:yB,string:wB,unknown:iu},Su=[q3,j3,bm,K3],W3=["boolean","integer","number","date"];function X3(n,t){if(!n||!n.length)return"unknown";const e=n.length,r=Su.length,i=Su.map((s,o)=>o+1);for(let s=0,o=0,a,l;s<e;++s)for(l=t?n[s][t]:n[s],a=0;a<r;++a)if(i[a]&&J3(l)&&!Su[a](l)&&(i[a]=0,++o,o===Su.length))return"string";return W3[i.reduce((s,o)=>s===0?o:s,0)-1]}function Z3(n,t){return t.reduce((e,r)=>(e[r]=X3(n,r),e),{})}function Bm(n){const t=function(e,r){const i={delimiter:n};return hh(e,r?hB(r,i):i)};return t.responseType="text",t}function hh(n,t){return t.header&&(n=t.header.map(zA).join(t.delimiter)+`
24
+ `+n),Up(t.delimiter).parse(n+"")}hh.responseType="text";function $3(n){return typeof Buffer=="function"&&Mt(Buffer.isBuffer)?Buffer.isBuffer(n):!1}function dh(n,t){const e=t&&t.property?ru(t.property):iu;return et(n)&&!$3(n)?eS(e(n),t):e(JSON.parse(n))}dh.responseType="json";function eS(n,t){return!je(n)&&gB(n)&&(n=[...n]),t&&t.copy?JSON.parse(JSON.stringify(n)):n}const tS={interior:(n,t)=>n!==t,exterior:(n,t)=>n===t};function vm(n,t){let e,r,i,s;return n=dh(n,t),t&&t.feature?(e=KB,i=t.feature):t&&t.mesh?(e=WB,i=t.mesh,s=tS[t.filter]):Re("Missing TopoJSON feature or mesh parameter."),r=(r=n.objects[i])?e(n,r,s):Re("Invalid TopoJSON object: "+i),r&&r.features||[r]}vm.responseType="json";const gh={dsv:hh,csv:Bm(","),tsv:Bm(" "),json:dh,topojson:vm};function ph(n,t){return arguments.length>1?(gh[n]=t,this):As(gh,n)?gh[n]:null}function mh(n,t,e,r){t=t||{};const i=ph(t.type||"json");return i||Re("Unknown data format type: "+t.type),n=i(n,t),t.parse&&nS(n,t.parse,e,r),As(n,"columns")&&delete n.columns,n}function nS(n,t,e,r){if(!n.length)return;const i=Y3();e=e||i.timeParse,r=r||i.utcParse;let s=n.columns||Object.keys(n[0]),o,a,l,c,u,f;t==="auto"&&(t=Z3(n,s)),s=Object.keys(t);const h=s.map(A=>{const d=t[A];let p,C;if(d&&(d.startsWith("date:")||d.startsWith("utc:")))return p=d.split(/:(.+)?/,2),C=p[1],(C[0]==="'"&&C[C.length-1]==="'"||C[0]==='"'&&C[C.length-1]==='"')&&(C=C.slice(1,-1)),(p[0]==="utc"?r:e)(C);if(!xm[d])throw Error("Illegal format pattern: "+A+":"+d);return xm[d]});for(l=0,u=n.length,f=s.length;l<u;++l)for(o=n[l],c=0;c<f;++c)a=s[c],o[a]=h[c](o[a])}const rS=`
25
25
  :root {
26
26
  --genome-spy-basic-spacing: 10px;
27
27
  --genome-spy-font-family: system-ui, "Segoe UI", Roboto, Helvetica, Arial,
28
28
  sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
29
29
  }
30
30
 
31
- @keyframes genome-spy-blinker {
32
- 50% {
33
- opacity: 0;
34
- }
35
- }
36
-
37
31
  .genome-spy {
38
32
  font-family: var(--genome-spy-font-family);
39
33
 
@@ -62,34 +56,11 @@ outline: none;
62
56
  }
63
57
  }
64
58
 
65
- .loading-message {
66
- position: absolute;
67
- inset: 0;
68
- display: flex;
69
-
70
- align-items: center;
71
- justify-content: center;
72
-
73
- .message {
74
- color: #666;
75
- opacity: 0;
76
- transition: opacity 0.7s;
77
- }
78
- }
79
-
80
59
  .loading {
81
60
  > canvas {
82
61
  transform: scale(0.95, 0.95);
83
62
  opacity: 0;
84
63
  }
85
-
86
- > .loading-message .message {
87
- opacity: 1;
88
-
89
- .ellipsis {
90
- animation: genome-spy-blinker 1s linear infinite;
91
- }
92
- }
93
64
  }
94
65
 
95
66
  .loading-indicators {
@@ -294,46 +265,56 @@ flex-basis: content;
294
265
  font-size: 14px;
295
266
  padding: var(--genome-spy-basic-spacing);
296
267
  }
297
- `;function kv(n,t){var e=n.getBoundingClientRect();return[t.clientX-e.left-n.clientLeft,t.clientY-e.top-n.clientTop]}function Ul(n,t){return n.length==t.length&&n.every((e,r)=>n[r]===t[r])}function tt(n){return Array.isArray(n)?n:typeof n<"u"?[n]:[]}function Gl(n){return n[n.length-1]}class Fv{constructor(t){D(this,zn,!1);D(this,Ys,!0);D(this,Ii);D(this,Ei,0);D(this,_s);D(this,pc,0);D(this,dt);D(this,br);D(this,Vs,[!0]);F(this,br,t),F(this,dt,document.createElement("div")),m(this,dt).className="tooltip",m(this,br).appendChild(m(this,dt)),this.clear()}set sticky(t){!t&&m(this,zn)&&this.clear(),F(this,zn,t),m(this,dt).classList.toggle("sticky",m(this,zn))}get sticky(){return m(this,zn)}set visible(t){t!=m(this,Ys)&&(m(this,dt).style.display=t?null:"none",F(this,Ys,t))}get visible(){return m(this,Ys)}get enabled(){return Gl(m(this,Vs))??!0}pushEnabledState(t){m(this,Vs).push(t),t||(this.visible=!1)}popEnabledState(){m(this,Vs).pop()}handleMouseMove(t){if(m(this,zn))return;this.mouseCoords=kv(m(this,br),t);const e=performance.now();!this.visible&&!this._isPenalty()&&e-m(this,pc)>500&&F(this,Ei,e+70),m(this,_s)&&Mv(this.mouseCoords,m(this,_s))>20&&F(this,Ei,e+400),F(this,_s,this.mouseCoords),this.visible&&this.updatePlacement(),F(this,pc,e)}updatePlacement(){const[e,r]=this.mouseCoords;let i=e+20;i>m(this,br).clientWidth-m(this,dt).offsetWidth&&(i=e-20-m(this,dt).offsetWidth),m(this,dt).style.left=i+"px",m(this,dt).style.top=Math.min(r+20,m(this,br).clientHeight-m(this,dt).offsetHeight)+"px"}setContent(t){if(!m(this,zn)){if(!t||!this.enabled||this._isPenalty()){this.visible&&(Vo("",m(this,dt)),this.visible=!1),F(this,Ii,void 0);return}Vo(t,m(this,dt)),this.visible=!0,this.updatePlacement()}}clear(){F(this,Ii,void 0),this.setContent(void 0)}updateWithDatum(t,e){t!==m(this,Ii)&&(F(this,Ii,t),e||(e=r=>Promise.resolve(be` ${JSON.stringify(r)} `)),e(t).then(r=>this.setContent(r)).catch(r=>{if(r!=="debounced")throw r}))}_isPenalty(){return m(this,Ei)&&m(this,Ei)>performance.now()}}zn=new WeakMap,Ys=new WeakMap,Ii=new WeakMap,Ei=new WeakMap,_s=new WeakMap,pc=new WeakMap,dt=new WeakMap,br=new WeakMap,Vs=new WeakMap;function Mv(n,t){let e=0;for(let r=0;r<n.length;r++)e+=(n[r]-t[r])**2;return Math.sqrt(e)}function Rv(n){n.classList.add("genome-spy");const t=document.createElement("style");t.innerHTML=Dv,n.appendChild(t);const e=wA("div",{class:"canvas-wrapper"});n.appendChild(e),e.classList.add("loading");const r=wA("div",{class:"loading-message",innerHTML:'<div class="message">Loading<span class="ellipsis">...</span></div>'});e.appendChild(r);const i=wA("div",{class:"loading-indicators"});e.appendChild(i);const s=new Fv(n);return r.querySelector(".message").addEventListener("transitionend",()=>{r.style.display="none"}),{canvasWrapper:e,loadingMessageElement:r,loadingIndicatorsElement:i,tooltip:s,styleElement:t}}function Nv(n,t){const e=document.createElement("div");e.className="message-box";const r=document.createElement("div");r.textContent=t,e.appendChild(r),n.appendChild(e)}function wA(n,t){const e=document.createElement(n);for(const[r,i]of Object.entries(t))["innerHTML","innerText","className"].includes(r)&&(e[r]=i),e.setAttribute(r,i);return e}/**
268
+ `;function iS(n,t){var e=n.getBoundingClientRect();return[t.clientX-e.left-n.clientLeft,t.clientY-e.top-n.clientTop]}function Is(n,t){return n.length==t.length&&n.every((e,r)=>n[r]===t[r])}function ft(n){return Array.isArray(n)?n:typeof n<"u"?[n]:[]}function Qu(n){return n[n.length-1]}class sS{constructor(t){S(this,Vn,!1);S(this,po,!0);S(this,Dr);S(this,Ri,0);S(this,mo);S(this,jc,0);S(this,gt);S(this,kr);S(this,Co,[!0]);D(this,kr,t),D(this,gt,document.createElement("div")),g(this,gt).className="tooltip",g(this,kr).appendChild(g(this,gt)),this.clear()}set sticky(t){!t&&g(this,Vn)&&this.clear(),D(this,Vn,t),g(this,gt).classList.toggle("sticky",g(this,Vn))}get sticky(){return g(this,Vn)}set visible(t){t!=g(this,po)&&(g(this,gt).style.display=t?null:"none",D(this,po,t))}get visible(){return g(this,po)}get enabled(){return Qu(g(this,Co))??!0}pushEnabledState(t){g(this,Co).push(t),t||(this.visible=!1)}popEnabledState(){g(this,Co).pop()}handleMouseMove(t){if(g(this,Vn))return;this.mouseCoords=iS(g(this,kr),t);const e=performance.now();!this.visible&&!this._isPenalty()&&e-g(this,jc)>500&&D(this,Ri,e+70),g(this,mo)&&oS(this.mouseCoords,g(this,mo))>20&&D(this,Ri,e+400),D(this,mo,this.mouseCoords),this.visible&&this.updatePlacement(),D(this,jc,e)}updatePlacement(){const[e,r]=this.mouseCoords;let i=e+20;i>g(this,kr).clientWidth-g(this,gt).offsetWidth&&(i=e-20-g(this,gt).offsetWidth),g(this,gt).style.left=i+"px",g(this,gt).style.top=Math.min(r+20,g(this,kr).clientHeight-g(this,gt).offsetHeight)+"px"}setContent(t){if(!g(this,Vn)){if(!t||!this.enabled||this._isPenalty()){this.visible&&(va("",g(this,gt)),this.visible=!1),D(this,Dr,void 0);return}va(t,g(this,gt)),this.visible=!0,this.updatePlacement()}}clear(){D(this,Dr,void 0),this.setContent(void 0)}updateWithDatum(t,e){if(t!==g(this,Dr)){D(this,Dr,t),e||(e=i=>Promise.resolve(pe` ${JSON.stringify(i)} `));const r=t;e(t).then(i=>{g(this,Dr)===r&&this.setContent(i)}).catch(i=>{if(i!=="debounced")throw i})}}_isPenalty(){return g(this,Ri)&&g(this,Ri)>performance.now()}}Vn=new WeakMap,po=new WeakMap,Dr=new WeakMap,Ri=new WeakMap,mo=new WeakMap,jc=new WeakMap,gt=new WeakMap,kr=new WeakMap,Co=new WeakMap;function oS(n,t){let e=0;for(let r=0;r<n.length;r++)e+=(n[r]-t[r])**2;return Math.sqrt(e)}function aS(n){n.classList.add("genome-spy");const t=document.createElement("style");t.innerHTML=rS,n.appendChild(t);const e=Sm("div",{class:"canvas-wrapper"});n.appendChild(e),e.classList.add("loading");const r=Sm("div",{class:"loading-indicators"});e.appendChild(r);const i=new sS(n);return{canvasWrapper:e,loadingIndicatorsElement:r,tooltip:i,styleElement:t}}function cS(n,t){const e=document.createElement("div");e.className="message-box";const r=document.createElement("div");r.textContent=t,e.appendChild(r),n.appendChild(e)}function Sm(n,t){const e=document.createElement(n);for(const[r,i]of Object.entries(t))["innerHTML","innerText","className"].includes(r)&&(e[r]=i),e.setAttribute(r,i);return e}/**
298
269
  * @license
299
270
  * Copyright 2017 Google LLC
300
271
  * SPDX-License-Identifier: BSD-3-Clause
301
- */const Tv={ATTRIBUTE:1},Pv=n=>(...t)=>({_$litDirective$:n,values:t});let Lv=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this._$Ct=t,this._$AM=e,this._$Ci=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};/**
272
+ */const lS={ATTRIBUTE:1},uS=n=>(...t)=>({_$litDirective$:n,values:t});let fS=class{constructor(t){}get _$AU(){return this._$AM._$AU}_$AT(t,e,r){this._$Ct=t,this._$AM=e,this._$Ci=r}_$AS(t,e){return this.update(t,e)}update(t,e){return this.render(...e)}};/**
302
273
  * @license
303
274
  * Copyright 2018 Google LLC
304
275
  * SPDX-License-Identifier: BSD-3-Clause
305
- */const pp="important",Ov=" !"+pp,Uv=Pv(class extends Lv{constructor(n){var t;if(super(n),n.type!==Tv.ATTRIBUTE||n.name!=="style"||((t=n.strings)==null?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(n){return Object.keys(n).reduce((t,e)=>{const r=n[e];return r==null?t:t+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(n,[t]){const{style:e}=n.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(const r of this.ft)t[r]==null&&(this.ft.delete(r),r.includes("-")?e.removeProperty(r):e[r]=null);for(const r in t){const i=t[r];if(i!=null){this.ft.add(r);const s=typeof i=="string"&&i.endsWith(Ov);r.includes("-")||s?e.setProperty(r,s?i.slice(0,-11):i,s?pp:""):e[r]=i}}return Or}}),Gv="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e";class zv{constructor(t){D(this,bi);D(this,xi);F(this,bi,t),F(this,xi,new Map)}setDataLoadingStatus(t,e,r){m(this,xi).set(t,{status:e,detail:r}),this.updateLayout()}updateLayout(){const t=[],e=()=>[...m(this,xi).values()].some(r=>r.status=="loading"||r.status=="error");for(const[r,i]of m(this,xi)){const s=r.coords;if(s){const o={left:`${s.x}px`,top:`${s.y}px`,width:`${s.width}px`,height:`${s.height}px`};t.push(be`<div style=${Uv(o)}>
306
- <div class=${i.status}>
307
- ${i.status=="error"?be`<span
276
+ */const Qm="important",AS=" !"+Qm,Dm=uS(class extends fS{constructor(n){var t;if(super(n),n.type!==lS.ATTRIBUTE||n.name!=="style"||((t=n.strings)==null?void 0:t.length)>2)throw Error("The `styleMap` directive must be used in the `style` attribute and must be the only part in the attribute.")}render(n){return Object.keys(n).reduce((t,e)=>{const r=n[e];return r==null?t:t+`${e=e.includes("-")?e:e.replace(/(?:^(webkit|moz|ms|o)|)(?=[A-Z])/g,"-$&").toLowerCase()}:${r};`},"")}update(n,[t]){const{style:e}=n.element;if(this.ft===void 0)return this.ft=new Set(Object.keys(t)),this.render(t);for(const r of this.ft)t[r]==null&&(this.ft.delete(r),r.includes("-")?e.removeProperty(r):e[r]=null);for(const r in t){const i=t[r];if(i!=null){this.ft.add(r);const s=typeof i=="string"&&i.endsWith(AS);r.includes("-")||s?e.setProperty(r,s?i.slice(0,-11):i,s?Qm:""):e[r]=i}}return jr}}),km="data:image/svg+xml,%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20xmlns='http://www.w3.org/2000/svg'%3e%3cstyle%3e.spinner_ajPY{transform-origin:center;animation:spinner_AtaB%20.75s%20infinite%20linear}@keyframes%20spinner_AtaB{100%25{transform:rotate(360deg)}}%3c/style%3e%3cpath%20d='M12,1A11,11,0,1,0,23,12,11,11,0,0,0,12,1Zm0,19a8,8,0,1,1,8-8A8,8,0,0,1,12,20Z'%20opacity='.25'/%3e%3cpath%20d='M10.14,1.16a11,11,0,0,0-9,8.92A1.59,1.59,0,0,0,2.46,12,1.52,1.52,0,0,0,4.11,10.7a8,8,0,0,1,6.66-6.61A1.42,1.42,0,0,0,12,2.69h0A1.57,1.57,0,0,0,10.14,1.16Z'%20class='spinner_ajPY'/%3e%3c/svg%3e";class hS{constructor(t,e){S(this,Ni);S(this,Ti);S(this,Pi,null);D(this,Ni,t),D(this,Ti,e),D(this,Pi,g(this,Ti).subscribe(()=>this.updateLayout())),this.updateLayout()}destroy(){g(this,Pi)&&(g(this,Pi).call(this),D(this,Pi,null))}updateLayout(){const t=[],e=()=>{for(const[,s]of g(this,Ti).entries())if(s.status=="loading"||s.status=="error")return!0;return!1};let r,i=!1;for(const[s,o]of g(this,Ti).entries()){const a=o.status=="loading"||o.status=="error",l=s.coords;if(!l&&a&&!r&&(r=o),l){a&&(i=!0);const c={left:`${l.x}px`,top:`${l.y}px`,width:`${l.width}px`,height:`${l.height}px`};t.push(pe`<div style=${Dm(c)}>
277
+ <div class=${o.status}>
278
+ ${o.status=="error"?pe`<span
308
279
  >Loading
309
- failed${i.detail?be`: ${i.detail}`:Te}</span
310
- >`:be`
311
- <img src="${Gv}" alt="" />
280
+ failed${o.detail?pe`: ${o.detail}`:Me}</span
281
+ >`:pe`
282
+ <img src="${km}" alt="" />
312
283
  <span>Loading...</span>
313
284
  `}
314
285
  </div>
315
- </div>`)}}e()?m(this,bi).style.display="block":setTimeout(()=>{e()||(m(this,bi).style.display="none")},3e3),Vo(t,m(this,bi))}}bi=new WeakMap,xi=new WeakMap;function Hv(n){return t=>{var e;if((e=n.querySelector(".view-highlight"))==null||e.remove(),t){if(!t.isConfiguredVisible())return;const r=t.coords;if(r){const i=document.createElement("div");i.className="view-highlight",i.style.position="absolute",i.style.left=r.x+"px",i.style.top=r.y+"px",i.style.width=r.width+"px",i.style.height=r.height+"px",i.style.border="1px solid green",i.style.backgroundColor="rgba(0, 255, 0, 0.1)",i.style.pointerEvents="none",n.appendChild(i)}}}}class Yv{constructor(){D(this,xr);F(this,xr,new Map)}add(t,e){document.addEventListener(t,e);let r=m(this,xr).get(t);r||(r=[],m(this,xr).set(t,r)),r.push(e)}removeAll(){for(const[t,e]of m(this,xr))for(const r of e)document.removeEventListener(t,r);m(this,xr).clear()}}xr=new WeakMap;class mp{constructor(){D(this,Br);F(this,Br,new Map)}add(t,e){let r=m(this,Br).get(t);r||(r=new Set,m(this,Br).set(t,r)),r.add(e)}remove(t,e){var r;(r=m(this,Br).get(t))==null||r.delete(e)}emit(t,e){var r;(r=m(this,Br).get(t))==null||r.forEach(i=>i(e))}}Br=new WeakMap;function zl(n,t,e=!0){let r,i=o=>{};return function(...a){return new Promise((l,c)=>{const u=()=>{clearTimeout(r),i=f=>{},l(n(...a))};e&&i("debounced"),clearTimeout(r),i=c,r=window.setTimeout(u,typeof t=="function"?t():t)})}}const _v="RawCode",Vv="Literal",Jv="Property",qv="Identifier",Kv="ArrayExpression",jv="BinaryExpression",Wv="CallExpression",Xv="ConditionalExpression",Zv="LogicalExpression",$v="MemberExpression",e3="ObjectExpression",t3="UnaryExpression";function Kt(n){this.type=n}Kt.prototype.visit=function(n){let t,e,r;if(n(this))return 1;for(t=n3(this),e=0,r=t.length;e<r;++e)if(t[e].visit(n))return 1};function n3(n){switch(n.type){case Kv:return n.elements;case jv:case Zv:return[n.left,n.right];case Wv:return[n.callee].concat(n.arguments);case Xv:return[n.test,n.consequent,n.alternate];case $v:return[n.object,n.property];case e3:return n.properties;case Jv:return[n.key,n.value];case t3:return[n.argument];case qv:case Vv:case _v:default:return[]}}var an,V,R,nt,Ae,Hl=1,fa=2,qr=3,er=4,Yl=5,Kr=6,yt=7,Aa=8,r3=9;an={},an[Hl]="Boolean",an[fa]="<end>",an[qr]="Identifier",an[er]="Keyword",an[Yl]="Null",an[Kr]="Numeric",an[yt]="Punctuator",an[Aa]="String",an[r3]="RegularExpression";var i3="ArrayExpression",s3="BinaryExpression",o3="CallExpression",a3="ConditionalExpression",Cp="Identifier",c3="Literal",l3="LogicalExpression",u3="MemberExpression",f3="ObjectExpression",A3="Property",h3="UnaryExpression",Ve="Unexpected token %0",d3="Unexpected number",g3="Unexpected string",p3="Unexpected identifier",m3="Unexpected reserved word",C3="Unexpected end of input",IA="Invalid regular expression",EA="Invalid regular expression: missing /",yp="Octal literals are not allowed in strict mode.",y3="Duplicate data property in object literal not allowed in strict mode",$e="ILLEGAL",ha="Disabled.",w3=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]"),I3=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 _l(n,t){if(!n)throw new Error("ASSERT: "+t)}function Rn(n){return n>=48&&n<=57}function bA(n){return"0123456789abcdefABCDEF".includes(n)}function da(n){return"01234567".includes(n)}function E3(n){return n===32||n===9||n===11||n===12||n===160||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(n)}function ga(n){return n===10||n===13||n===8232||n===8233}function pa(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n===92||n>=128&&w3.test(String.fromCharCode(n))}function Vl(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===92||n>=128&&I3.test(String.fromCharCode(n))}const b3={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 wp(){for(;R<nt;){const n=V.charCodeAt(R);if(E3(n)||ga(n))++R;else break}}function xA(n){var t,e,r,i=0;for(e=n==="u"?4:2,t=0;t<e;++t)R<nt&&bA(V[R])?(r=V[R++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):ce({},Ve,$e);return String.fromCharCode(i)}function x3(){var n,t,e,r;for(n=V[R],t=0,n==="}"&&ce({},Ve,$e);R<nt&&(n=V[R++],!!bA(n));)t=t*16+"0123456789abcdef".indexOf(n.toLowerCase());return(t>1114111||n!=="}")&&ce({},Ve,$e),t<=65535?String.fromCharCode(t):(e=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(e,r))}function Ip(){var n,t;for(n=V.charCodeAt(R++),t=String.fromCharCode(n),n===92&&(V.charCodeAt(R)!==117&&ce({},Ve,$e),++R,n=xA("u"),(!n||n==="\\"||!pa(n.charCodeAt(0)))&&ce({},Ve,$e),t=n);R<nt&&(n=V.charCodeAt(R),!!Vl(n));)++R,t+=String.fromCharCode(n),n===92&&(t=t.substr(0,t.length-1),V.charCodeAt(R)!==117&&ce({},Ve,$e),++R,n=xA("u"),(!n||n==="\\"||!Vl(n.charCodeAt(0)))&&ce({},Ve,$e),t+=n);return t}function B3(){var n,t;for(n=R++;R<nt;){if(t=V.charCodeAt(R),t===92)return R=n,Ip();if(Vl(t))++R;else break}return V.slice(n,R)}function v3(){var n,t,e;return n=R,t=V.charCodeAt(R)===92?Ip():B3(),t.length===1?e=qr:b3.hasOwnProperty(t)?e=er:t==="null"?e=Yl:t==="true"||t==="false"?e=Hl:e=qr,{type:e,value:t,start:n,end:R}}function BA(){var n=R,t=V.charCodeAt(R),e,r=V[R],i,s,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++R,{type:yt,value:String.fromCharCode(t),start:n,end:R};default:if(e=V.charCodeAt(R+1),e===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return R+=2,{type:yt,value:String.fromCharCode(t)+String.fromCharCode(e),start:n,end:R};case 33:case 61:return R+=2,V.charCodeAt(R)===61&&++R,{type:yt,value:V.slice(n,R),start:n,end:R}}}if(o=V.substr(R,4),o===">>>=")return R+=4,{type:yt,value:o,start:n,end:R};if(s=o.substr(0,3),s===">>>"||s==="<<="||s===">>=")return R+=3,{type:yt,value:s,start:n,end:R};if(i=s.substr(0,2),r===i[1]&&"+-<>&|".includes(r)||i==="=>")return R+=2,{type:yt,value:i,start:n,end:R};if(i==="//"&&ce({},Ve,$e),"<>=!+-*%&|^/".includes(r))return++R,{type:yt,value:r,start:n,end:R};ce({},Ve,$e)}function Q3(n){let t="";for(;R<nt&&bA(V[R]);)t+=V[R++];return t.length===0&&ce({},Ve,$e),pa(V.charCodeAt(R))&&ce({},Ve,$e),{type:Kr,value:parseInt("0x"+t,16),start:n,end:R}}function S3(n){let t="0"+V[R++];for(;R<nt&&da(V[R]);)t+=V[R++];return(pa(V.charCodeAt(R))||Rn(V.charCodeAt(R)))&&ce({},Ve,$e),{type:Kr,value:parseInt(t,8),octal:!0,start:n,end:R}}function Ep(){var n,t,e;if(e=V[R],_l(Rn(e.charCodeAt(0))||e===".","Numeric literal must start with a decimal digit or a decimal point"),t=R,n="",e!=="."){if(n=V[R++],e=V[R],n==="0"){if(e==="x"||e==="X")return++R,Q3(t);if(da(e))return S3(t);e&&Rn(e.charCodeAt(0))&&ce({},Ve,$e)}for(;Rn(V.charCodeAt(R));)n+=V[R++];e=V[R]}if(e==="."){for(n+=V[R++];Rn(V.charCodeAt(R));)n+=V[R++];e=V[R]}if(e==="e"||e==="E")if(n+=V[R++],e=V[R],(e==="+"||e==="-")&&(n+=V[R++]),Rn(V.charCodeAt(R)))for(;Rn(V.charCodeAt(R));)n+=V[R++];else ce({},Ve,$e);return pa(V.charCodeAt(R))&&ce({},Ve,$e),{type:Kr,value:parseFloat(n),start:t,end:R}}function D3(){var n="",t,e,r,i,s=!1;for(t=V[R],_l(t==="'"||t==='"',"String literal must starts with a quote"),e=R,++R;R<nt;)if(r=V[R++],r===t){t="";break}else if(r==="\\")if(r=V[R++],!r||!ga(r.charCodeAt(0)))switch(r){case"u":case"x":V[R]==="{"?(++R,n+=x3()):n+=xA(r);break;case"n":n+=`
316
- `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"b":n+="\b";break;case"f":n+="\f";break;case"v":n+="\v";break;default:da(r)?(i="01234567".indexOf(r),i!==0&&(s=!0),R<nt&&da(V[R])&&(s=!0,i=i*8+"01234567".indexOf(V[R++]),"0123".includes(r)&&R<nt&&da(V[R])&&(i=i*8+"01234567".indexOf(V[R++]))),n+=String.fromCharCode(i)):n+=r;break}else r==="\r"&&V[R]===`
317
- `&&++R;else{if(ga(r.charCodeAt(0)))break;n+=r}return t!==""&&ce({},Ve,$e),{type:Aa,value:n,octal:s,start:e,end:R}}function k3(n,t){let e=n;t.includes("u")&&(e=e.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";ce({},IA)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(e)}catch{ce({},IA)}try{return new RegExp(n,t)}catch{return null}}function F3(){var n,t,e,r,i;for(n=V[R],_l(n==="/","Regular expression literal must start with a slash"),t=V[R++],e=!1,r=!1;R<nt;)if(n=V[R++],t+=n,n==="\\")n=V[R++],ga(n.charCodeAt(0))&&ce({},EA),t+=n;else if(ga(n.charCodeAt(0)))ce({},EA);else if(e)n==="]"&&(e=!1);else if(n==="/"){r=!0;break}else n==="["&&(e=!0);return r||ce({},EA),i=t.substr(1,t.length-2),{value:i,literal:t}}function M3(){var n,t,e;for(t="",e="";R<nt&&(n=V[R],!!Vl(n.charCodeAt(0)));)++R,n==="\\"&&R<nt?ce({},Ve,$e):(e+=n,t+=n);return e.search(/[^gimuy]/g)>=0&&ce({},IA,e),{value:e,literal:t}}function R3(){var n,t,e,r;return Ae=null,wp(),n=R,t=F3(),e=M3(),r=k3(t.value,e.value),{literal:t.literal+e.literal,value:r,regex:{pattern:t.value,flags:e.value},start:n,end:R}}function N3(n){return n.type===qr||n.type===er||n.type===Hl||n.type===Yl}function bp(){if(wp(),R>=nt)return{type:fa,start:R,end:R};const n=V.charCodeAt(R);return pa(n)?v3():n===40||n===41||n===59?BA():n===39||n===34?D3():n===46?Rn(V.charCodeAt(R+1))?Ep():BA():Rn(n)?Ep():BA()}function wt(){const n=Ae;return R=n.end,Ae=bp(),R=n.end,n}function xp(){const n=R;Ae=bp(),R=n}function T3(n){const t=new Kt(i3);return t.elements=n,t}function Bp(n,t,e){const r=new Kt(n==="||"||n==="&&"?l3:s3);return r.operator=n,r.left=t,r.right=e,r}function P3(n,t){const e=new Kt(o3);return e.callee=n,e.arguments=t,e}function L3(n,t,e){const r=new Kt(a3);return r.test=n,r.consequent=t,r.alternate=e,r}function vA(n){const t=new Kt(Cp);return t.name=n,t}function ma(n){const t=new Kt(c3);return t.value=n.value,t.raw=V.slice(n.start,n.end),n.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=n.regex),t}function vp(n,t,e){const r=new Kt(u3);return r.computed=n==="[",r.object=t,r.property=e,r.computed||(e.member=!0),r}function O3(n){const t=new Kt(f3);return t.properties=n,t}function Qp(n,t,e){const r=new Kt(A3);return r.key=t,r.value=e,r.kind=n,r}function U3(n,t){const e=new Kt(h3);return e.operator=n,e.argument=t,e.prefix=!0,e}function ce(n,t){var e,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(s,o)=>(_l(o<r.length,"Message reference must be in range"),r[o]));throw e=new Error(i),e.index=R,e.description=i,e}function Jl(n){n.type===fa&&ce(n,C3),n.type===Kr&&ce(n,d3),n.type===Aa&&ce(n,g3),n.type===qr&&ce(n,p3),n.type===er&&ce(n,m3),ce(n,Ve,n.value)}function rt(n){const t=wt();(t.type!==yt||t.value!==n)&&Jl(t)}function Ee(n){return Ae.type===yt&&Ae.value===n}function QA(n){return Ae.type===er&&Ae.value===n}function G3(){const n=[];for(R=Ae.start,rt("[");!Ee("]");)Ee(",")?(wt(),n.push(null)):(n.push(jr()),Ee("]")||rt(","));return wt(),T3(n)}function Sp(){R=Ae.start;const n=wt();return n.type===Aa||n.type===Kr?(n.octal&&ce(n,yp),ma(n)):vA(n.value)}function z3(){var n,t,e,r;if(R=Ae.start,n=Ae,n.type===qr)return e=Sp(),rt(":"),r=jr(),Qp("init",e,r);if(n.type===fa||n.type===yt)Jl(n);else return t=Sp(),rt(":"),r=jr(),Qp("init",t,r)}function H3(){var n=[],t,e,r,i={},s=String;for(R=Ae.start,rt("{");!Ee("}");)t=z3(),t.key.type===Cp?e=t.key.name:e=s(t.key.value),r="$"+e,Object.prototype.hasOwnProperty.call(i,r)?ce({},y3):i[r]=!0,n.push(t),Ee("}")||rt(",");return rt("}"),O3(n)}function Y3(){rt("(");const n=SA();return rt(")"),n}const _3={if:1};function V3(){var n,t,e;if(Ee("("))return Y3();if(Ee("["))return G3();if(Ee("{"))return H3();if(n=Ae.type,R=Ae.start,n===qr||_3[Ae.value])e=vA(wt().value);else if(n===Aa||n===Kr)Ae.octal&&ce(Ae,yp),e=ma(wt());else{if(n===er)throw new Error(ha);n===Hl?(t=wt(),t.value=t.value==="true",e=ma(t)):n===Yl?(t=wt(),t.value=null,e=ma(t)):Ee("/")||Ee("/=")?(e=ma(R3()),xp()):Jl(wt())}return e}function J3(){const n=[];if(rt("("),!Ee(")"))for(;R<nt&&(n.push(jr()),!Ee(")"));)rt(",");return rt(")"),n}function q3(){R=Ae.start;const n=wt();return N3(n)||Jl(n),vA(n.value)}function K3(){return rt("."),q3()}function j3(){rt("[");const n=SA();return rt("]"),n}function W3(){var n,t,e;for(n=V3();;)if(Ee("."))e=K3(),n=vp(".",n,e);else if(Ee("("))t=J3(),n=P3(n,t);else if(Ee("["))e=j3(),n=vp("[",n,e);else break;return n}function Dp(){const n=W3();if(Ae.type===yt&&(Ee("++")||Ee("--")))throw new Error(ha);return n}function ql(){var n,t;if(Ae.type!==yt&&Ae.type!==er)t=Dp();else{if(Ee("++")||Ee("--"))throw new Error(ha);if(Ee("+")||Ee("-")||Ee("~")||Ee("!"))n=wt(),t=ql(),t=U3(n.value,t);else{if(QA("delete")||QA("void")||QA("typeof"))throw new Error(ha);t=Dp()}}return t}function kp(n){let t=0;if(n.type!==yt&&n.type!==er)return 0;switch(n.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11;break}return t}function X3(){var n,t,e,r,i,s,o,a,l,c;if(n=Ae,l=ql(),r=Ae,i=kp(r),i===0)return l;for(r.prec=i,wt(),t=[n,Ae],o=ql(),s=[l,r,o];(i=kp(Ae))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,l=s.pop(),t.pop(),e=Bp(a,l,o),s.push(e);r=wt(),r.prec=i,s.push(r),t.push(Ae),e=ql(),s.push(e)}for(c=s.length-1,e=s[c],t.pop();c>1;)t.pop(),e=Bp(s[c-1].value,s[c-2],e),c-=2;return e}function jr(){var n,t,e;return n=X3(),Ee("?")&&(wt(),t=jr(),rt(":"),e=jr(),n=L3(n,t,e)),n}function SA(){const n=jr();if(Ee(","))throw new Error(ha);return n}function Fp(n){V=n,R=0,nt=V.length,Ae=null,xp();const t=SA();if(Ae.type!==fa)throw new Error("Unexpect token after expression.");return t}var Z3={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 Mp(n){function t(o,a,l,c){let u=n(a[0]);return l&&(u=l+"("+u+")",l.lastIndexOf("new ",0)===0&&(u="("+u+")")),u+"."+o+(c<0?"":c===0?"()":"("+a.slice(1).map(n).join(",")+")")}function e(o,a,l){return c=>t(o,c,a,l)}const r="new Date",i="String",s="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",hypot:"Math.hypot",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(o){o.length<3&&Ne("Missing arguments to clamp function."),o.length>3&&Ne("Too many arguments to clamp function.");const a=o.map(n);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:e("getDate",r,0),day:e("getDay",r,0),year:e("getFullYear",r,0),month:e("getMonth",r,0),hours:e("getHours",r,0),minutes:e("getMinutes",r,0),seconds:e("getSeconds",r,0),milliseconds:e("getMilliseconds",r,0),time:e("getTime",r,0),timezoneoffset:e("getTimezoneOffset",r,0),utcdate:e("getUTCDate",r,0),utcday:e("getUTCDay",r,0),utcyear:e("getUTCFullYear",r,0),utcmonth:e("getUTCMonth",r,0),utchours:e("getUTCHours",r,0),utcminutes:e("getUTCMinutes",r,0),utcseconds:e("getUTCSeconds",r,0),utcmilliseconds:e("getUTCMilliseconds",r,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",i,0),lower:e("toLowerCase",i,0),substring:e("substring",i),split:e("split",i),trim:e("trim",i,0),btoa:"btoa",atob:"atob",regexp:s,test:e("test",s),if:function(o){o.length<3&&Ne("Missing arguments to if function."),o.length>3&&Ne("Too many arguments to if function.");const a=o.map(n);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function $3(n){const t=n&&n.length-1;return t&&(n[0]==='"'&&n[t]==='"'||n[0]==="'"&&n[t]==="'")?n.slice(1,-1):n}function Rp(n){n=n||{};const t=n.allowed?Cl(n.allowed):{},e=n.forbidden?Cl(n.forbidden):{},r=n.constants||Z3,i=(n.functions||Mp)(f),s=n.globalvar,o=n.fieldvar,a=Ft(s)?s:d=>`${s}["${d}"]`;[...Object.getOwnPropertyNames(Object.prototype).filter(d=>typeof Object.prototype[d]=="function")];let l={},c={},u=0;function f(d){if(Ce(d))return d;const g=h[d.type];return g==null&&Ne("Unsupported type: "+d.type),g(d)}const h={Literal:d=>d.raw,Identifier:d=>{const g=d.name;return u>0?g:_i(e,g)?Ne("Illegal identifier: "+g):_i(r,g)?r[g]:_i(t,g)?g:(l[g]=1,a(g))},MemberExpression:d=>{const g=!d.computed,p=f(d.object);g&&(u+=1);const C=f(d.property);return p===o&&(c[$3(C)]=1),g&&(u-=1),p+(g?"."+C:"["+C+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Ne("Illegal callee type: "+d.callee.type);const g=d.callee.name,p=d.arguments,C=_i(i,g)&&i[g];return C||Ne("Unrecognized function: "+g),Ft(C)?C(p):C+"("+p.map(f).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(f).join(",")+"]",BinaryExpression:d=>"("+f(d.left)+" "+d.operator+" "+f(d.right)+")",UnaryExpression:d=>"("+d.operator+f(d.argument)+")",ConditionalExpression:d=>"("+f(d.test)+"?"+f(d.consequent)+":"+f(d.alternate)+")",LogicalExpression:d=>"("+f(d.left)+d.operator+f(d.right)+")",ObjectExpression:d=>{for(const g of d.properties){const p=g.key.name;Qb.has(p)&&Ne("Illegal property: "+p)}return"{"+d.properties.map(f).join(",")+"}"},Property:d=>{u+=1;const g=f(d.key);return u-=1,g+":"+f(d.value)}};function A(d){const g={code:f(d),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},g}return A.functions=i,A.constants=r,A}function Np(n,t,e){return e=(e-n)/(t-n),e=Math.max(0,Math.min(1,e)),e*e*(3-2*e)}function $i(n,t=0,e=1){return Math.max(t,Math.min(e,n))}function eQ(n,t,e){return $i((e-n)/(t-n),0,1)}const Tp={clamp:$i,format(n,t){return Ze(t)(n)},mapHasKey(n,t){return n.has(t)},isArray:Xe,isBoolean:Po,isDefined(n){return n!==void 0},isNumber:ft,isObject:et,isRegExp:Hb,isString:Ce,isValid(n){return n!=null&&n===n},lerp:ag,linearstep:eQ,replace(n,t,e){return String(n).replace(t,e)},smoothstep:Np};function tQ(n){const t=Mp(n);for(const e in Tp)t[e]=`this.${e}`;return t}const nQ=Rp({forbidden:[],allowed:["datum","undefined"],globalvar:"globalObject",fieldvar:"datum",functions:tQ});function rQ(n,t={}){try{const e=Fp(n),r=nQ(e),i=Function("datum","globalObject",`"use strict";
286
+ </div>`)}}if(r&&!i){const s={left:"0px",top:"0px",width:"100%",height:"100%"};t.push(pe`<div style=${Dm(s)}>
287
+ <div class=${r.status}>
288
+ ${r.status=="error"?pe`<span
289
+ >Loading
290
+ failed${r.detail?pe`: ${r.detail}`:Me}</span
291
+ >`:pe`
292
+ <img src="${km}" alt="" />
293
+ <span>Loading...</span>
294
+ `}
295
+ </div>
296
+ </div>`)}e()?g(this,Ni).style.display="block":setTimeout(()=>{e()||(g(this,Ni).style.display="none")},3e3),va(t,g(this,Ni))}}Ni=new WeakMap,Ti=new WeakMap,Pi=new WeakMap;class Fm{constructor(){S(this,Fr,new Map);S(this,Li,new Set)}set(t,e,r){if(!t)throw new Error("LoadingStatusRegistry.set requires a view.");g(this,Fr).set(t,{status:e,detail:r});const i={view:t,status:e,detail:r};for(const s of g(this,Li))s(i)}delete(t){const e=g(this,Fr).get(t);if(!e)return;g(this,Fr).delete(t);const r={view:t,status:e.status,detail:e.detail};for(const i of g(this,Li))i(r)}get(t){return g(this,Fr).get(t)}entries(){return g(this,Fr).entries()}subscribe(t){return g(this,Li).add(t),()=>{g(this,Li).delete(t)}}}Fr=new WeakMap,Li=new WeakMap;function dS(n){return t=>{var e;if((e=n.querySelector(".view-highlight"))==null||e.remove(),t){if(!t.isConfiguredVisible())return;const r=t.coords;if(r){const i=document.createElement("div");i.className="view-highlight",i.style.position="absolute",i.style.left=r.x+"px",i.style.top=r.y+"px",i.style.width=r.width+"px",i.style.height=r.height+"px",i.style.border="1px solid green",i.style.backgroundColor="rgba(0, 255, 0, 0.1)",i.style.pointerEvents="none",n.appendChild(i)}}}}class gS{constructor(){S(this,Mr);D(this,Mr,new Map)}add(t,e){document.addEventListener(t,e);let r=g(this,Mr).get(t);r||(r=[],g(this,Mr).set(t,r)),r.push(e)}removeAll(){for(const[t,e]of g(this,Mr))for(const r of e)document.removeEventListener(t,r);g(this,Mr).clear()}}Mr=new WeakMap;class Mm{constructor(){S(this,Rr);D(this,Rr,new Map)}add(t,e){let r=g(this,Rr).get(t);r||(r=new Set,g(this,Rr).set(t,r)),r.add(e)}remove(t,e){var r;(r=g(this,Rr).get(t))==null||r.delete(e)}emit(t,e){var r;(r=g(this,Rr).get(t))==null||r.forEach(i=>i(e))}}Rr=new WeakMap;function Du(n,t,e=!0){let r,i=o=>{};return function(...a){return new Promise((l,c)=>{const u=()=>{clearTimeout(r),i=f=>{},l(n(...a))};e&&i("debounced"),clearTimeout(r),i=c,r=window.setTimeout(u,typeof t=="function"?t():t)})}}const pS="RawCode",mS="Literal",CS="Property",yS="Identifier",wS="ArrayExpression",IS="BinaryExpression",ES="CallExpression",bS="ConditionalExpression",xS="LogicalExpression",BS="MemberExpression",vS="ObjectExpression",SS="UnaryExpression";function Kt(n){this.type=n}Kt.prototype.visit=function(n){let t,e,r;if(n(this))return 1;for(t=QS(this),e=0,r=t.length;e<r;++e)if(t[e].visit(n))return 1};function QS(n){switch(n.type){case wS:return n.elements;case IS:case xS:return[n.left,n.right];case ES:return[n.callee].concat(n.arguments);case bS:return[n.test,n.consequent,n.alternate];case BS:return[n.object,n.property];case vS:return n.properties;case CS:return[n.key,n.value];case SS:return[n.argument];case yS:case mS:case pS:default:return[]}}var ln,Y,N,tt,de,ku=1,Ja=2,ii=3,cr=4,Fu=5,si=6,It=7,qa=8,DS=9;ln={},ln[ku]="Boolean",ln[Ja]="<end>",ln[ii]="Identifier",ln[cr]="Keyword",ln[Fu]="Null",ln[si]="Numeric",ln[It]="Punctuator",ln[qa]="String",ln[DS]="RegularExpression";var kS="ArrayExpression",FS="BinaryExpression",MS="CallExpression",RS="ConditionalExpression",Rm="Identifier",NS="Literal",TS="LogicalExpression",PS="MemberExpression",LS="ObjectExpression",OS="Property",US="UnaryExpression",Ve="Unexpected token %0",GS="Unexpected number",zS="Unexpected string",HS="Unexpected identifier",VS="Unexpected reserved word",_S="Unexpected end of input",Ch="Invalid regular expression",yh="Invalid regular expression: missing /",Nm="Octal literals are not allowed in strict mode.",YS="Duplicate data property in object literal not allowed in strict mode",Xe="ILLEGAL",Ka="Disabled.",JS=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]"),qS=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 Mu(n,t){if(!n)throw new Error("ASSERT: "+t)}function Fn(n){return n>=48&&n<=57}function wh(n){return"0123456789abcdefABCDEF".includes(n)}function ja(n){return"01234567".includes(n)}function KS(n){return n===32||n===9||n===11||n===12||n===160||n>=5760&&[5760,6158,8192,8193,8194,8195,8196,8197,8198,8199,8200,8201,8202,8239,8287,12288,65279].includes(n)}function Wa(n){return n===10||n===13||n===8232||n===8233}function Xa(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n===92||n>=128&&JS.test(String.fromCharCode(n))}function Ru(n){return n===36||n===95||n>=65&&n<=90||n>=97&&n<=122||n>=48&&n<=57||n===92||n>=128&&qS.test(String.fromCharCode(n))}const jS={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 Tm(){for(;N<tt;){const n=Y.charCodeAt(N);if(KS(n)||Wa(n))++N;else break}}function Ih(n){var t,e,r,i=0;for(e=n==="u"?4:2,t=0;t<e;++t)N<tt&&wh(Y[N])?(r=Y[N++],i=i*16+"0123456789abcdef".indexOf(r.toLowerCase())):ue({},Ve,Xe);return String.fromCharCode(i)}function WS(){var n,t,e,r;for(n=Y[N],t=0,n==="}"&&ue({},Ve,Xe);N<tt&&(n=Y[N++],!!wh(n));)t=t*16+"0123456789abcdef".indexOf(n.toLowerCase());return(t>1114111||n!=="}")&&ue({},Ve,Xe),t<=65535?String.fromCharCode(t):(e=(t-65536>>10)+55296,r=(t-65536&1023)+56320,String.fromCharCode(e,r))}function Pm(){var n,t;for(n=Y.charCodeAt(N++),t=String.fromCharCode(n),n===92&&(Y.charCodeAt(N)!==117&&ue({},Ve,Xe),++N,n=Ih("u"),(!n||n==="\\"||!Xa(n.charCodeAt(0)))&&ue({},Ve,Xe),t=n);N<tt&&(n=Y.charCodeAt(N),!!Ru(n));)++N,t+=String.fromCharCode(n),n===92&&(t=t.substr(0,t.length-1),Y.charCodeAt(N)!==117&&ue({},Ve,Xe),++N,n=Ih("u"),(!n||n==="\\"||!Ru(n.charCodeAt(0)))&&ue({},Ve,Xe),t+=n);return t}function XS(){var n,t;for(n=N++;N<tt;){if(t=Y.charCodeAt(N),t===92)return N=n,Pm();if(Ru(t))++N;else break}return Y.slice(n,N)}function ZS(){var n,t,e;return n=N,t=Y.charCodeAt(N)===92?Pm():XS(),t.length===1?e=ii:jS.hasOwnProperty(t)?e=cr:t==="null"?e=Fu:t==="true"||t==="false"?e=ku:e=ii,{type:e,value:t,start:n,end:N}}function Eh(){var n=N,t=Y.charCodeAt(N),e,r=Y[N],i,s,o;switch(t){case 46:case 40:case 41:case 59:case 44:case 123:case 125:case 91:case 93:case 58:case 63:case 126:return++N,{type:It,value:String.fromCharCode(t),start:n,end:N};default:if(e=Y.charCodeAt(N+1),e===61)switch(t){case 43:case 45:case 47:case 60:case 62:case 94:case 124:case 37:case 38:case 42:return N+=2,{type:It,value:String.fromCharCode(t)+String.fromCharCode(e),start:n,end:N};case 33:case 61:return N+=2,Y.charCodeAt(N)===61&&++N,{type:It,value:Y.slice(n,N),start:n,end:N}}}if(o=Y.substr(N,4),o===">>>=")return N+=4,{type:It,value:o,start:n,end:N};if(s=o.substr(0,3),s===">>>"||s==="<<="||s===">>=")return N+=3,{type:It,value:s,start:n,end:N};if(i=s.substr(0,2),r===i[1]&&"+-<>&|".includes(r)||i==="=>")return N+=2,{type:It,value:i,start:n,end:N};if(i==="//"&&ue({},Ve,Xe),"<>=!+-*%&|^/".includes(r))return++N,{type:It,value:r,start:n,end:N};ue({},Ve,Xe)}function $S(n){let t="";for(;N<tt&&wh(Y[N]);)t+=Y[N++];return t.length===0&&ue({},Ve,Xe),Xa(Y.charCodeAt(N))&&ue({},Ve,Xe),{type:si,value:parseInt("0x"+t,16),start:n,end:N}}function eQ(n){let t="0"+Y[N++];for(;N<tt&&ja(Y[N]);)t+=Y[N++];return(Xa(Y.charCodeAt(N))||Fn(Y.charCodeAt(N)))&&ue({},Ve,Xe),{type:si,value:parseInt(t,8),octal:!0,start:n,end:N}}function Lm(){var n,t,e;if(e=Y[N],Mu(Fn(e.charCodeAt(0))||e===".","Numeric literal must start with a decimal digit or a decimal point"),t=N,n="",e!=="."){if(n=Y[N++],e=Y[N],n==="0"){if(e==="x"||e==="X")return++N,$S(t);if(ja(e))return eQ(t);e&&Fn(e.charCodeAt(0))&&ue({},Ve,Xe)}for(;Fn(Y.charCodeAt(N));)n+=Y[N++];e=Y[N]}if(e==="."){for(n+=Y[N++];Fn(Y.charCodeAt(N));)n+=Y[N++];e=Y[N]}if(e==="e"||e==="E")if(n+=Y[N++],e=Y[N],(e==="+"||e==="-")&&(n+=Y[N++]),Fn(Y.charCodeAt(N)))for(;Fn(Y.charCodeAt(N));)n+=Y[N++];else ue({},Ve,Xe);return Xa(Y.charCodeAt(N))&&ue({},Ve,Xe),{type:si,value:parseFloat(n),start:t,end:N}}function tQ(){var n="",t,e,r,i,s=!1;for(t=Y[N],Mu(t==="'"||t==='"',"String literal must starts with a quote"),e=N,++N;N<tt;)if(r=Y[N++],r===t){t="";break}else if(r==="\\")if(r=Y[N++],!r||!Wa(r.charCodeAt(0)))switch(r){case"u":case"x":Y[N]==="{"?(++N,n+=WS()):n+=Ih(r);break;case"n":n+=`
297
+ `;break;case"r":n+="\r";break;case"t":n+=" ";break;case"b":n+="\b";break;case"f":n+="\f";break;case"v":n+="\v";break;default:ja(r)?(i="01234567".indexOf(r),i!==0&&(s=!0),N<tt&&ja(Y[N])&&(s=!0,i=i*8+"01234567".indexOf(Y[N++]),"0123".includes(r)&&N<tt&&ja(Y[N])&&(i=i*8+"01234567".indexOf(Y[N++]))),n+=String.fromCharCode(i)):n+=r;break}else r==="\r"&&Y[N]===`
298
+ `&&++N;else{if(Wa(r.charCodeAt(0)))break;n+=r}return t!==""&&ue({},Ve,Xe),{type:qa,value:n,octal:s,start:e,end:N}}function nQ(n,t){let e=n;t.includes("u")&&(e=e.replace(/\\u\{([0-9a-fA-F]+)\}/g,(r,i)=>{if(parseInt(i,16)<=1114111)return"x";ue({},Ch)}).replace(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,"x"));try{new RegExp(e)}catch{ue({},Ch)}try{return new RegExp(n,t)}catch{return null}}function rQ(){var n,t,e,r,i;for(n=Y[N],Mu(n==="/","Regular expression literal must start with a slash"),t=Y[N++],e=!1,r=!1;N<tt;)if(n=Y[N++],t+=n,n==="\\")n=Y[N++],Wa(n.charCodeAt(0))&&ue({},yh),t+=n;else if(Wa(n.charCodeAt(0)))ue({},yh);else if(e)n==="]"&&(e=!1);else if(n==="/"){r=!0;break}else n==="["&&(e=!0);return r||ue({},yh),i=t.substr(1,t.length-2),{value:i,literal:t}}function iQ(){var n,t,e;for(t="",e="";N<tt&&(n=Y[N],!!Ru(n.charCodeAt(0)));)++N,n==="\\"&&N<tt?ue({},Ve,Xe):(e+=n,t+=n);return e.search(/[^gimuy]/g)>=0&&ue({},Ch,e),{value:e,literal:t}}function sQ(){var n,t,e,r;return de=null,Tm(),n=N,t=rQ(),e=iQ(),r=nQ(t.value,e.value),{literal:t.literal+e.literal,value:r,regex:{pattern:t.value,flags:e.value},start:n,end:N}}function oQ(n){return n.type===ii||n.type===cr||n.type===ku||n.type===Fu}function Om(){if(Tm(),N>=tt)return{type:Ja,start:N,end:N};const n=Y.charCodeAt(N);return Xa(n)?ZS():n===40||n===41||n===59?Eh():n===39||n===34?tQ():n===46?Fn(Y.charCodeAt(N+1))?Lm():Eh():Fn(n)?Lm():Eh()}function Et(){const n=de;return N=n.end,de=Om(),N=n.end,n}function Um(){const n=N;de=Om(),N=n}function aQ(n){const t=new Kt(kS);return t.elements=n,t}function Gm(n,t,e){const r=new Kt(n==="||"||n==="&&"?TS:FS);return r.operator=n,r.left=t,r.right=e,r}function cQ(n,t){const e=new Kt(MS);return e.callee=n,e.arguments=t,e}function lQ(n,t,e){const r=new Kt(RS);return r.test=n,r.consequent=t,r.alternate=e,r}function bh(n){const t=new Kt(Rm);return t.name=n,t}function Za(n){const t=new Kt(NS);return t.value=n.value,t.raw=Y.slice(n.start,n.end),n.regex&&(t.raw==="//"&&(t.raw="/(?:)/"),t.regex=n.regex),t}function zm(n,t,e){const r=new Kt(PS);return r.computed=n==="[",r.object=t,r.property=e,r.computed||(e.member=!0),r}function uQ(n){const t=new Kt(LS);return t.properties=n,t}function Hm(n,t,e){const r=new Kt(OS);return r.key=t,r.value=e,r.kind=n,r}function fQ(n,t){const e=new Kt(US);return e.operator=n,e.argument=t,e.prefix=!0,e}function ue(n,t){var e,r=Array.prototype.slice.call(arguments,2),i=t.replace(/%(\d)/g,(s,o)=>(Mu(o<r.length,"Message reference must be in range"),r[o]));throw e=new Error(i),e.index=N,e.description=i,e}function Nu(n){n.type===Ja&&ue(n,_S),n.type===si&&ue(n,GS),n.type===qa&&ue(n,zS),n.type===ii&&ue(n,HS),n.type===cr&&ue(n,VS),ue(n,Ve,n.value)}function nt(n){const t=Et();(t.type!==It||t.value!==n)&&Nu(t)}function be(n){return de.type===It&&de.value===n}function xh(n){return de.type===cr&&de.value===n}function AQ(){const n=[];for(N=de.start,nt("[");!be("]");)be(",")?(Et(),n.push(null)):(n.push(oi()),be("]")||nt(","));return Et(),aQ(n)}function Vm(){N=de.start;const n=Et();return n.type===qa||n.type===si?(n.octal&&ue(n,Nm),Za(n)):bh(n.value)}function hQ(){var n,t,e,r;if(N=de.start,n=de,n.type===ii)return e=Vm(),nt(":"),r=oi(),Hm("init",e,r);if(n.type===Ja||n.type===It)Nu(n);else return t=Vm(),nt(":"),r=oi(),Hm("init",t,r)}function dQ(){var n=[],t,e,r,i={},s=String;for(N=de.start,nt("{");!be("}");)t=hQ(),t.key.type===Rm?e=t.key.name:e=s(t.key.value),r="$"+e,Object.prototype.hasOwnProperty.call(i,r)?ue({},YS):i[r]=!0,n.push(t),be("}")||nt(",");return nt("}"),uQ(n)}function gQ(){nt("(");const n=Bh();return nt(")"),n}const pQ={if:1};function mQ(){var n,t,e;if(be("("))return gQ();if(be("["))return AQ();if(be("{"))return dQ();if(n=de.type,N=de.start,n===ii||pQ[de.value])e=bh(Et().value);else if(n===qa||n===si)de.octal&&ue(de,Nm),e=Za(Et());else{if(n===cr)throw new Error(Ka);n===ku?(t=Et(),t.value=t.value==="true",e=Za(t)):n===Fu?(t=Et(),t.value=null,e=Za(t)):be("/")||be("/=")?(e=Za(sQ()),Um()):Nu(Et())}return e}function CQ(){const n=[];if(nt("("),!be(")"))for(;N<tt&&(n.push(oi()),!be(")"));)nt(",");return nt(")"),n}function yQ(){N=de.start;const n=Et();return oQ(n)||Nu(n),bh(n.value)}function wQ(){return nt("."),yQ()}function IQ(){nt("[");const n=Bh();return nt("]"),n}function EQ(){var n,t,e;for(n=mQ();;)if(be("."))e=wQ(),n=zm(".",n,e);else if(be("("))t=CQ(),n=cQ(n,t);else if(be("["))e=IQ(),n=zm("[",n,e);else break;return n}function _m(){const n=EQ();if(de.type===It&&(be("++")||be("--")))throw new Error(Ka);return n}function Tu(){var n,t;if(de.type!==It&&de.type!==cr)t=_m();else{if(be("++")||be("--"))throw new Error(Ka);if(be("+")||be("-")||be("~")||be("!"))n=Et(),t=Tu(),t=fQ(n.value,t);else{if(xh("delete")||xh("void")||xh("typeof"))throw new Error(Ka);t=_m()}}return t}function Ym(n){let t=0;if(n.type!==It&&n.type!==cr)return 0;switch(n.value){case"||":t=1;break;case"&&":t=2;break;case"|":t=3;break;case"^":t=4;break;case"&":t=5;break;case"==":case"!=":case"===":case"!==":t=6;break;case"<":case">":case"<=":case">=":case"instanceof":case"in":t=7;break;case"<<":case">>":case">>>":t=8;break;case"+":case"-":t=9;break;case"*":case"/":case"%":t=11;break}return t}function bQ(){var n,t,e,r,i,s,o,a,l,c;if(n=de,l=Tu(),r=de,i=Ym(r),i===0)return l;for(r.prec=i,Et(),t=[n,de],o=Tu(),s=[l,r,o];(i=Ym(de))>0;){for(;s.length>2&&i<=s[s.length-2].prec;)o=s.pop(),a=s.pop().value,l=s.pop(),t.pop(),e=Gm(a,l,o),s.push(e);r=Et(),r.prec=i,s.push(r),t.push(de),e=Tu(),s.push(e)}for(c=s.length-1,e=s[c],t.pop();c>1;)t.pop(),e=Gm(s[c-1].value,s[c-2],e),c-=2;return e}function oi(){var n,t,e;return n=bQ(),be("?")&&(Et(),t=oi(),nt(":"),e=oi(),n=lQ(n,t,e)),n}function Bh(){const n=oi();if(be(","))throw new Error(Ka);return n}function Jm(n){Y=n,N=0,tt=Y.length,de=null,Um();const t=Bh();if(de.type!==Ja)throw new Error("Unexpect token after expression.");return t}var xQ={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 qm(n){function t(o,a,l,c){let u=n(a[0]);return l&&(u=l+"("+u+")",l.lastIndexOf("new ",0)===0&&(u="("+u+")")),u+"."+o+(c<0?"":c===0?"()":"("+a.slice(1).map(n).join(",")+")")}function e(o,a,l){return c=>t(o,c,a,l)}const r="new Date",i="String",s="RegExp";return{isNaN:"Number.isNaN",isFinite:"Number.isFinite",abs:"Math.abs",acos:"Math.acos",asin:"Math.asin",atan:"Math.atan",atan2:"Math.atan2",ceil:"Math.ceil",cos:"Math.cos",exp:"Math.exp",floor:"Math.floor",hypot:"Math.hypot",log:"Math.log",max:"Math.max",min:"Math.min",pow:"Math.pow",random:"Math.random",round:"Math.round",sin:"Math.sin",sqrt:"Math.sqrt",tan:"Math.tan",clamp:function(o){o.length<3&&Re("Missing arguments to clamp function."),o.length>3&&Re("Too many arguments to clamp function.");const a=o.map(n);return"Math.max("+a[1]+", Math.min("+a[2]+","+a[0]+"))"},now:"Date.now",utc:"Date.UTC",datetime:r,date:e("getDate",r,0),day:e("getDay",r,0),year:e("getFullYear",r,0),month:e("getMonth",r,0),hours:e("getHours",r,0),minutes:e("getMinutes",r,0),seconds:e("getSeconds",r,0),milliseconds:e("getMilliseconds",r,0),time:e("getTime",r,0),timezoneoffset:e("getTimezoneOffset",r,0),utcdate:e("getUTCDate",r,0),utcday:e("getUTCDay",r,0),utcyear:e("getUTCFullYear",r,0),utcmonth:e("getUTCMonth",r,0),utchours:e("getUTCHours",r,0),utcminutes:e("getUTCMinutes",r,0),utcseconds:e("getUTCSeconds",r,0),utcmilliseconds:e("getUTCMilliseconds",r,0),length:e("length",null,-1),parseFloat:"parseFloat",parseInt:"parseInt",upper:e("toUpperCase",i,0),lower:e("toLowerCase",i,0),substring:e("substring",i),split:e("split",i),trim:e("trim",i,0),btoa:"btoa",atob:"atob",regexp:s,test:e("test",s),if:function(o){o.length<3&&Re("Missing arguments to if function."),o.length>3&&Re("Too many arguments to if function.");const a=o.map(n);return"("+a[0]+"?"+a[1]+":"+a[2]+")"}}}function BQ(n){const t=n&&n.length-1;return t&&(n[0]==='"'&&n[t]==='"'||n[0]==="'"&&n[t]==="'")?n.slice(1,-1):n}function Km(n){n=n||{};const t=n.allowed?au(n.allowed):{},e=n.forbidden?au(n.forbidden):{},r=n.constants||xQ,i=(n.functions||qm)(f),s=n.globalvar,o=n.fieldvar,a=Mt(s)?s:d=>`${s}["${d}"]`;[...Object.getOwnPropertyNames(Object.prototype).filter(d=>typeof Object.prototype[d]=="function")];let l={},c={},u=0;function f(d){if(ye(d))return d;const p=h[d.type];return p==null&&Re("Unsupported type: "+d.type),p(d)}const h={Literal:d=>d.raw,Identifier:d=>{const p=d.name;return u>0?p:As(e,p)?Re("Illegal identifier: "+p):As(r,p)?r[p]:As(t,p)?p:(l[p]=1,a(p))},MemberExpression:d=>{const p=!d.computed,C=f(d.object);p&&(u+=1);const m=f(d.property);return C===o&&(c[BQ(m)]=1),p&&(u-=1),C+(p?"."+m:"["+m+"]")},CallExpression:d=>{d.callee.type!=="Identifier"&&Re("Illegal callee type: "+d.callee.type);const p=d.callee.name,C=d.arguments,m=As(i,p)&&i[p];return m||Re("Unrecognized function: "+p),Mt(m)?m(C):m+"("+C.map(f).join(",")+")"},ArrayExpression:d=>"["+d.elements.map(f).join(",")+"]",BinaryExpression:d=>"("+f(d.left)+" "+d.operator+" "+f(d.right)+")",UnaryExpression:d=>"("+d.operator+f(d.argument)+")",ConditionalExpression:d=>"("+f(d.test)+"?"+f(d.consequent)+":"+f(d.alternate)+")",LogicalExpression:d=>"("+f(d.left)+d.operator+f(d.right)+")",ObjectExpression:d=>{for(const p of d.properties){const C=p.key.name;tB.has(C)&&Re("Illegal property: "+C)}return"{"+d.properties.map(f).join(",")+"}"},Property:d=>{u+=1;const p=f(d.key);return u-=1,p+":"+f(d.value)}};function A(d){const p={code:f(d),globals:Object.keys(l),fields:Object.keys(c)};return l={},c={},p}return A.functions=i,A.constants=r,A}function jm(n,t,e){return e=(e-n)/(t-n),e=Math.max(0,Math.min(1,e)),e*e*(3-2*e)}function Es(n,t=0,e=1){return Math.max(t,Math.min(e,n))}function vQ(n,t,e){return Es((e-n)/(t-n),0,1)}const Wm={clamp:Es,format(n,t){return We(t)(n)},mapHasKey(n,t){return n.has(t)},isArray:je,isBoolean:ma,isDefined(n){return n!==void 0},isNumber:ut,isObject:et,isRegExp:pB,isString:ye,isValid(n){return n!=null&&n===n},lerp:Cp,linearstep:vQ,replace(n,t,e){return String(n).replace(t,e)},smoothstep:jm};function SQ(n){const t=qm(n);for(const e in Wm)t[e]=`this.${e}`;return t}const QQ=Km({forbidden:[],allowed:["datum","undefined"],globalvar:"globalObject",fieldvar:"datum",functions:SQ});function DQ(n,t={}){try{const e=Jm(n),r=QQ(e),i=Function("datum","globalObject",`"use strict";
318
299
  try {
319
300
  return (${r.code});
320
301
  } catch (e) {
321
302
  throw new Error("Error evaluating expression: " + ${JSON.stringify(n)} + ", " + e.message, e);
322
- }`).bind(Tp),s=(o=>i(o,t));return s.fields=r.fields,s.globals=r.globals,s.code=r.code,s}catch(e){throw new Error(`Invalid expression: ${n}, ${e.message}`)}}const iQ=Rp({forbidden:[],allowed:["event"],globalvar:"globalObject"});function Pp(n){try{const t=Fp(n),e=iQ(t);return Function("event","globalObject",`"use strict";
303
+ }`).bind(Wm),s=(o=>i(o,t));return s.fields=r.fields,s.globals=r.globals,s.code=r.code,s}catch(e){throw new Error(`Invalid expression: ${n}, ${e.message}`)}}const kQ=Km({forbidden:[],allowed:["event"],globalvar:"globalObject"});function Xm(n){try{const t=Jm(n),e=kQ(t);return Function("event","globalObject",`"use strict";
323
304
  try {
324
305
  return !!(${e.code});
325
306
  } catch (e) {
326
307
  throw new Error("Error evaluating expression: " + ${JSON.stringify(n)} + ", " + e.message, e);
327
- }`)}catch(t){throw new Error(`Invalid expression: ${n}, ${t.message}`)}}const cn=1,tr=2,DA=4;class kA{constructor(t){D(this,Bi);j(this,"stats",{count:0,first:null});j(this,"paramMediatorProvider",null);this.paramMediatorProvider=t,this.children=[],this.parent=void 0,this.completed=!1}get behavior(){return 0}get label(){return`(${this.constructor.name})`}reset(){this.completed=!1;for(const t of this.children)t.reset();this.stats.count=0,this.stats.first=null}initialize(){}setParent(t){this.parent=t}addChild(t){if(t.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(t),t.setParent(this),P(this,Bi,ll).call(this),this}adopt(t){t.parent&&t.parent.removeChild(t),this.addChild(t)}adoptChildrenOf(t){for(const e of t.children)this.adopt(e)}insertAsParent(t){var e;if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");t.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=t,P(e=this.parent,Bi,ll).call(e),this.parent=void 0,t.addChild(this)}removeChild(t){const e=this.children.indexOf(t);if(e>-1)this.children.splice(e,1),t.parent=void 0,P(this,Bi,ll).call(this);else throw new Error("Trying to remove an unknown child node!")}excise(){var t;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,P(t=this.parent,Bi,ll).call(t),this.setParent(void 0),this.children.length=0}else throw new Error("Cannot excise a node that has multiple children!")}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(t){t(this);for(const e of this.children)e.visit(t);t.afterChildren&&t.afterChildren(this)}subtreeToString(t=0){const e=this.children.map(r=>r.subtreeToString(t+1)).join("");return`${" ".repeat(t*2)}* ${this.label}${"identifier"in this&&this.identifier?": "+this.identifier:""}
328
- ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of this.children)t.complete()}beginBatch(t){for(const e of this.children)e.beginBatch(t)}get paramMediator(){if(this.paramMediatorProvider)return this.paramMediatorProvider.paramMediator;if(!this.parent)throw new Error("Cannot find paramMediator!");return this.parent.paramMediator}repropagate(){if(this.parent)this.parent.repropagate();else throw new Error("Cannot repropagate data, no FlowNode with stored data found!")}_propagate(t){}}Bi=new WeakSet,ll=function(){this._propagate=Function("children","stats",Ko(this.children.length).map(t=>`const child${t} = children[${t}];`).join(`
308
+ }`)}catch(t){throw new Error(`Invalid expression: ${n}, ${t.message}`)}}const un=1,lr=2,vh=4;class Sh{constructor(t){S(this,Oi);W(this,"stats",{count:0,first:null});S(this,Wc,!1);W(this,"paramMediatorProvider",null);this.paramMediatorProvider=t,this.children=[],this.parent=void 0,this.completed=!1}get behavior(){return 0}get label(){return`(${this.constructor.name})`}reset(){this.completed=!1;for(const t of this.children)t.reset();this.stats.count=0,this.stats.first=null}initialize(){}initializeOnce(){g(this,Wc)||(this.initialize(),D(this,Wc,!0))}setParent(t){this.parent=t}addChild(t){if(t.parent)throw new Error("Cannot add the child! It already has a parent.");return this.children.push(t),t.setParent(this),M(this,Oi,Zl).call(this),this}adopt(t){t.parent&&t.parent.removeChild(t),this.addChild(t)}adoptChildrenOf(t){for(const e of t.children)this.adopt(e)}insertAsParent(t){var e;if(this.isRoot())throw new Error("Cannot insert a new parent for a root node!");t.parent=this.parent,this.parent.children[this.parent.children.indexOf(this)]=t,M(e=this.parent,Oi,Zl).call(e),this.parent=void 0,t.addChild(this)}removeChild(t){const e=this.children.indexOf(t);if(e>-1)this.children.splice(e,1),t.parent=void 0,M(this,Oi,Zl).call(this);else throw new Error("Trying to remove an unknown child node!")}excise(){var t;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,M(t=this.parent,Oi,Zl).call(t),this.setParent(void 0),this.children.length=0}else throw new Error("Cannot excise a node that has multiple children!")}isRoot(){return!this.parent}isBranching(){return this.children.length>1}isTerminal(){return this.children.length==0}visit(t){t(this);for(const e of this.children)e.visit(t);t.afterChildren&&t.afterChildren(this)}subtreeToString(t=0){const e=this.children.map(r=>r.subtreeToString(t+1)).join("");return`${" ".repeat(t*2)}* ${this.label}${"identifier"in this&&this.identifier?": "+this.identifier:""}
309
+ ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of this.children)t.complete()}beginBatch(t){for(const e of this.children)e.beginBatch(t)}get paramMediator(){if(this.paramMediatorProvider)return this.paramMediatorProvider.paramMediator;if(!this.parent)throw new Error("Cannot find paramMediator!");return this.parent.paramMediator}repropagate(){if(this.parent)this.parent.repropagate();else throw new Error("Cannot repropagate data, no FlowNode with stored data found!")}_propagate(t){}}Wc=new WeakMap,Oi=new WeakSet,Zl=function(){this._propagate=Function("children","stats",Da(this.children.length).map(t=>`const child${t} = children[${t}];`).join(`
329
310
  `)+`return function propagate(datum) {
330
311
  if (stats.count === 0) {
331
312
  stats.first = structuredClone(datum);
332
313
  }
333
314
  stats.count++;
334
- ${Ko(this.children.length).map(t=>`child${t}.handle(datum);`).join(`
315
+ ${Da(this.children.length).map(t=>`child${t}.handle(datum);`).join(`
335
316
  `)}
336
- };`)(this.children,this.stats)};function Lp(n){return n.type=="file"}function sQ(n){return n.type=="facet"}class Ue extends kA{constructor(e,r){super(r);D(this,mc);F(this,mc,e.type)}get label(){return m(this,mc)}}mc=new WeakMap;const Rt="_uniqueId",Op=1e4,Up=[null];class FA extends Ue{get behavior(){return tr}constructor(t){super(t),this.params=t,this.as=t.as??Rt,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(t){t[this.as]=this._nextId(),this._propagate(t)}_nextId(){return++this._id%Op==0&&(this._id=this._getBlock()*Op),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const t=Up.length;return Up[t]=this,this._blocks.push(t),this._usedBlocks++,t}}function ue(n,t=n){if(/^[A-Za-z0-9_]+$/.test(n)){const e=function(i){n in i||oQ(i,n)},r=new Function("validator",`
317
+ };`)(this.children,this.stats)};function Zm(n){return n.type=="file"}function FQ(n){return n.type=="facet"}class Le extends Sh{constructor(e,r){super(r);S(this,Xc);D(this,Xc,e.type)}get label(){return g(this,Xc)}}Xc=new WeakMap;const Nt="_uniqueId",$m=1e4,e1=[null];class Qh extends Le{get behavior(){return lr}constructor(t){super(t),this.params=t,this.as=t.as??Nt,this._blocks=[],this._usedBlocks=0,this._id=-1}initialize(){}reset(){super.reset(),this._usedBlocks=0,this._id=-1}handle(t){t[this.as]=this._nextId(),this._propagate(t)}_nextId(){return++this._id%$m==0&&(this._id=this._getBlock()*$m),this._id}_getBlock(){return this._usedBlocks<this._blocks.length?this._blocks[this._usedBlocks++]:this._reserveBlock()}_reserveBlock(){const t=e1.length;return e1[t]=this,this._blocks.push(t),this._usedBlocks++,t}}function fe(n,t=n){if(/^[A-Za-z0-9_]+$/.test(n)){const e=function(i){n in i||MQ(i,n)},r=new Function("validator",`
337
318
  let validated = !validator;
338
319
  return function accessField(datum) {
339
320
  if (!validated) {
@@ -341,26 +322,26 @@ ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of t
341
322
  validated = true;
342
323
  }
343
324
  return datum[${JSON.stringify(n)}];
344
- }`)(e);return te(r,[n],t)}else return dl(n)}function oQ(n,t){throw new Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(n).join(", ")}`)}function Gp(n,t,e){if(!n)return;function r(s){const o=s;return o.fields??(o.fields=[]),o.constant=o.fields.length===0,o.channelDef=t,o.channel=n,o.scaleChannel=((vt(t)&&t.resolutionChannel)??(jl(n)&&n))||void 0,"param"in t?(o.predicate=em(!1),o.predicate.param=t.param,o.predicate.empty=t.empty??!0):(o.predicate=em(!0),o.predicate.empty=!1),o.asNumberAccessor=()=>o,o}function i(s){if(it(s)){const o=r(e.createExpression(s.expr));if(o.fields.length>0)throw new Error("Expression in DatumDef/ValueDef cannot access data fields: "+s.expr);return o}else{const o=s;return r(()=>o)}}if(nr(t))try{return r(ue(t.field))}catch(s){throw new Error(`Invalid field definition: ${s.message}`)}else{if(ya(t))return r(e.createExpression(t.expr));if(Ca(t))return i(t.datum);if(Nt(t))return i(t.value);throw new Error(`Invalid channel definition: "${n}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}}function aQ(n,t,e){const r=[];if(fQ(t)||MA(t)){const i=Array.isArray(t.condition)?t.condition:[t.condition];for(const s of i)r.push(Gp(n,s,e))}if(r.push(Gp(n,t,e)),r.filter(i=>!i.constant).length>1)throw new Error("Only one accessor can be non-constant. Channel: "+n);return r}function cQ(n,t){const e={},r=i=>{var s;return(s=n.getScaleResolution(i))==null?void 0:s.getScale()};for(const[i,s]of Object.entries(t))s&&(e[i]=lQ(aQ(i,s,n.paramMediator),r));return e}function lQ(n,t){if(n.length===1)return zp(n[0],t);const e=n.map(s=>s.predicate),r=n.map(s=>zp(s,t));return Object.assign(s=>{for(let o=0;o<r.length;o++)if(e[o](s))return r[o](s)},{constant:!1,accessors:r.map(s=>s.accessors[0]),dataAccessor:r.map(s=>s.dataAccessor).find(s=>s),scale:r.map(s=>s.scale).find(s=>s),channelDef:n.at(-1).channelDef})}function zp(n,t){const{channel:e,scaleChannel:r,channelDef:i}=n,s=n.scaleChannel?t(r):void 0;if(r&&!s)throw new Error(`Missing scale! "${e}": ${JSON.stringify(i)}`);return Object.assign(s?o=>s(n(o)):o=>n(o),{scale:s,constant:n.constant,accessors:[n],dataAccessor:n.constant?void 0:n,channelDef:i})}function Nt(n){return n&&"value"in n}function nr(n){return n&&"field"in n}function Ca(n){return n&&"datum"in n}function vt(n){return nr(n)||Ca(n)||ya(n)||Yp(n)}function Hp(n){if(MA(n)){const t=n.condition;if(!Array.isArray(t)&&vt(t))return t}else if(vt(n))return n}function uQ(n,t){const e=n.mark.encoding[t];if(vt(e))return e;throw new Error("Not a channel def with scale!")}function Yp(n){return n&&"chrom"in n}function ya(n){return n&&"expr"in n}function fQ(n){return(nr(n)||Ca(n))&&"condition"in n}function MA(n){return Nt(n)&&"condition"in n}const Wr=["x","y"],AQ=["x2","y2"],hQ=[...Wr,...AQ];function RA(n){return Wr.includes(n)}function wa(n){return hQ.includes(n)}const _p={x:"x2",y:"y2"},Vp=Object.fromEntries(Object.entries(_p).map(n=>[n[1],n[0]]));function NA(n){return n in Vp}function TA(n){const t=_p[n];if(t)return t;throw new Error(`${n} has no secondary channel!`)}function Xr(n){return Vp[n]??n}function rr(n){return["color","fill","stroke"].includes(Xr(n))}function Kl(n){return["shape"].includes(n)}function jl(n){return["x","y","x2","y2","color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","angle","dx","dy","sample"].includes(n)}function dQ(n){switch(n){case"shape":return["circle","square","cross","diamond","triangle-up","triangle-right","triangle-down","triangle-left","tick-up","tick-right","tick-down","tick-left"]}}function Jp(n){if(!Kl(n))throw new Error("Not a discrete channel: "+n);const t=new Map(dQ(n).map((e,r)=>[e,r]));return e=>{const r=t.get(e);if(r!==void 0)return r;throw new Error(`Invalid value for "${n}" channel: ${e}`)}}function PA(n){return{type:"single",datum:n,uniqueId:n==null?void 0:n[Rt]}}function LA(n){return n??(n=[]),{type:"multi",data:new Map(n.map(t=>[t[Rt],t]))}}function qp(n){return{type:"interval",intervals:Object.fromEntries(n.map(t=>[t,null]))}}function gQ(n,{add:t,remove:e,toggle:r}){const i=n.data;for(const s of t??[])i.set(s[Rt],s);for(const s of e??[])i.delete(s[Rt]);for(const s of r??[]){const o=s[Rt];i.has(o)?i.delete(o):i.set(o,s)}return{type:"multi",data:i}}function pQ(n,t){const e=!!(n.empty??!0),r=Ia(n.param),i=n.fields??{};if(jp(t))return`${r}.uniqueId == null ? ${e} : ${r}.uniqueId === datum[${JSON.stringify(Rt)}]`;if(OA(t))return`${r}.data.size == 0 ? ${e} : mapHasKey(${r}.data, datum[${JSON.stringify(Rt)}])`;if(Kp(t)){const s=Object.keys(t.intervals),o=Object.keys(i).filter(RA);if(o.length===0)throw new Error("Filtering using interval selections requires at least one primary positional channel in the config! "+JSON.stringify(n));if(o.some(c=>!s.includes(c)))throw new Error(`Selection channels (${s.join(", ")}) do not match the fields: ${JSON.stringify(n)}!`);const a=c=>`datum[${JSON.stringify(c)}]`;return s.map(c=>{const u=TA(c),f=i[c],h=i[u]??i[c],A=`${r}.intervals.${c}[0] <= ${a(h)}`,d=`${a(f)} <= ${r}.intervals.${c}[1]`;return`(${r}.intervals.${c} ? (${A} && ${d}) : ${e})`}).join(" && ")}else throw new Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function Kp(n){return n.type==="interval"}function jp(n){return n.type==="single"}function OA(n){return n.type==="multi"}function Wl(n){const t=typeof n=="string"?{type:n}:{...n};return t.on=t.on?Zp(t.on):Xl(t)?{type:"click"}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:"dblclick"}:Zp(t.clear),Xl(t)&&t.on.type==="click"&&(t.toggle=!0),t}function Xl(n){return n&&n.type=="point"}function Wp(n){return n&&n.type=="interval"}function Xp(n){return Object.values(n.intervals).some(t=>t&&t.length===2)}function mQ(n,t){return Object.entries(n.intervals).every(([e,r])=>(e=="x"||e=="y")&&r&&r[0]<=t[e]&&r[1]>=t[e])}function Zp(n){if(typeof n=="string"){const t=n.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw new Error(`Invalid event type string: ${n}`);const[,e,r]=t,i={type:e};return r&&(i.filter=r),i}else return n}class CQ{constructor(t){D(this,vr);j(this,"paramListeners");D(this,vi,new Map);D(this,Js,new Map);D(this,qs,new Map);D(this,Cc);F(this,Cc,t??(()=>{})),F(this,vr,new Map),this.paramListeners=new Map}registerParam(t){const e=t.name;if("value"in t&&"expr"in t)throw new Error(`The parameter "${e}" must not have both value and expr properties!`);let r;if(t.push=="outer"){const i=this.findMediatorForParam(e);if(!i)throw new Error(`Parameter "${e}" not found in outer scope!`);const s=i.paramConfigs.get(e);if("expr"in s||"select"in s)throw new Error(`The outer parameter "${e}" must not have expr or select properties!`);r=i.getSetter(e),m(this,vi).set(e,r)}else if("value"in t)r=this.allocateSetter(e,t.value);else if("expr"in t){const i=this.createExpression(t.expr),s=this.allocateSetter(e,i(null));i.addListener(()=>s(i(null))),r=o=>{}}else r=this.allocateSetter(e,null);if("select"in t){const i=Wl(t.select);if(Xl(i))r(i.toggle?LA():PA(null));else if(Wp(i)){if(!i.encodings)throw new Error(`Interval selection "${e}" must have encodings defined!`);r(qp(i.encodings))}}return m(this,qs).set(e,t),r}allocateSetter(t,e,r=!1){if(Ia(t),m(this,vi).has(t))throw new Error("Setter already allocated for parameter: "+t);const i=s=>{const o=m(this,vr).get(t);if(s!==o){m(this,vr).set(t,s);const a=this.paramListeners.get(t);if(a&&!r)for(const l of a)l()}};return i(e),m(this,vi).set(t,i),i}getSetter(t){const e=m(this,vi).get(t);if(!e)throw new Error("Setter not found for parameter: "+t);return e}getValue(t){return m(this,vr).get(t)}findValue(t){const e=this.findMediatorForParam(t);return e==null?void 0:e.getValue(t)}get paramConfigs(){return m(this,qs)}findMediatorForParam(t){var e;return m(this,vr).has(t)?this:(e=m(this,Cc).call(this))==null?void 0:e.findMediatorForParam(t)}createExpression(t){if(m(this,Js).has(t))return m(this,Js).get(t);const e={},r=rQ(t,e),i=new Map;for(const o of r.globals){const a=this.findMediatorForParam(o);if(!a)throw new Error(`Unknown variable "${o}" in expression: ${t}`);i.set(o,a),Object.defineProperty(e,o,{enumerable:!0,get(){return a.getValue(o)}})}const s=new Set;return r.addListener=o=>{for(const[a,l]of i){const c=l.paramListeners.get(a)??new Set;l.paramListeners.set(a,c),c.add(o),s.add(o)}},r.removeListener=o=>{var a;for(const[l,c]of i)(a=c.paramListeners.get(l))==null||a.delete(o);s.delete(o)},r.invalidate=()=>{var o;for(const[a,l]of i)for(const c of s)(o=l.paramListeners.get(a))==null||o.delete(c);s.clear()},r.identifier=()=>r.code,m(this,Js).set(t,r),r}evaluateAndGet(t){return this.createExpression(t)()}hasPointSelections(){for(const t of m(this,qs).values())if($p(t)){const e=t.select;if(Ce(e)){if(e=="point")return!0}else if(e.type=="point")return!0}return!1}}vr=new WeakMap,vi=new WeakMap,Js=new WeakMap,qs=new WeakMap,Cc=new WeakMap;function it(n){return typeof n=="object"&&n!=null&&"expr"in n&&Ce(n.expr)}function Tt(n){if(it(n))throw new Error(`ExprRef ${JSON.stringify(n)} not allowed here. Expected a scalar value.`);return n}function yQ(n){return("expr"in n||"bind"in n)&&!("select"in n)}function $p(n){return!("expr"in n||"bind"in n)&&"select"in n}function Zl(n,t,e){const r={...t},i=[],s=o=>{i.push(o),i.length===1&&queueMicrotask(()=>{e(i.slice()),i.length=0})};for(const[o,a]of Object.entries(t))if(it(a)){const l=n.createExpression(a.expr);e&&l.addListener(()=>s(o)),Object.defineProperty(r,o,{enumerable:!0,get(){return l()}})}else r[o]=a;return r}function Ia(n){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(n))throw new Error(`Invalid parameter name: ${n}. Must be a valid JavaScript identifier.`);return n}function em(n){return Object.assign(()=>n,{addListener:()=>{},removeListener:()=>{},invalidate:()=>{},identifier:()=>"constant",fields:[],globals:[],code:JSON.stringify(n)})}function wQ(n){const t=Math.floor(Math.random()*16777215).toString(16),e=[];for(const r of n.paramConfigs.values()){if(!yQ(r))continue;const i=r.bind;if(!i||!("input"in i))continue;const s=r.name,o=n.getSetter(s),a=n.getValue(s),l=i.name??s,c=i.debounce?zl(o,i.debounce,!1):o,u=`${t}-param-${s}`;if(i.input=="range")e.push(be`<label for=${u}>${l}</label>
325
+ }`)(e);return ne(r,[n],t)}else return ru(n)}function MQ(n,t){throw new Error(`Invalid field "${t}". Available fields or properties: ${Object.keys(n).join(", ")}`)}function t1(n,t,e){if(!n)return;function r(s){const o=s;return o.fields??(o.fields=[]),o.constant=o.fields.length===0,o.channelDef=t,o.channel=n,o.sourceKey=NQ(t),o.scaleChannel=((Tt(t)&&t.resolutionChannel)??(Lu(n)&&n))||void 0,o.scaleChannel!==void 0&&(o.domainKeyBase=r1({scaleChannel:o.scaleChannel,source:Dh(t)}).domainKeyBase),"param"in t?(o.predicate=w1(!1),o.predicate.param=t.param,o.predicate.empty=t.empty??!0):(o.predicate=w1(!0),o.predicate.empty=!1),o.equals=a=>a?o===a||o.sourceKey!==void 0&&o.sourceKey===a.sourceKey:!1,o.asNumberAccessor=()=>o,o}function i(s){if(Ze(s)){const o=r(e.createExpression(s.expr));if(o.fields.length>0)throw new Error("Expression in DatumDef/ValueDef cannot access data fields: "+s.expr);return o}else{const o=s;return r(()=>o)}}if(Mn(t))try{return r(fe(t.field))}catch(s){throw new Error(`Invalid field definition: ${s.message}`)}else{if(xs(t))return r(e.createExpression(t.expr));if(bs(t))return i(t.datum);if(vt(t))return i(t.value);throw new Error(`Invalid channel definition: "${n}": ${JSON.stringify(t)}! The channel definition must contain one of the following properties: "field", "datum", "value" or "expr".`)}}function RQ(n,t,e){const r=[];if(UQ(t)||kh(t)){const i=Array.isArray(t.condition)?t.condition:[t.condition];for(const s of i)r.push(t1(n,s,e))}if(r.push(t1(n,t,e)),r.filter(i=>!i.constant).length>1)throw new Error("Only one accessor can be non-constant. Channel: "+n);return r}function n1(n){return n.scaleChannel!==void 0}function Dh(n){if(Mn(n))return{kind:"field",value:n.field};if(xs(n))return{kind:"expr",value:n.expr};if(bs(n))return{kind:"datum",value:n.datum};if(vt(n))return{kind:"value",value:n.value};throw new Error("Cannot derive a domain key from channel definition: "+JSON.stringify(n))}function NQ(n){const t=Dh(n);return t.kind==="datum"||t.kind==="value"?"constant|"+o1(t.value):t.kind+"|"+s1(t)}function r1({scaleChannel:n,source:t,type:e}){if(!n)throw new Error("Cannot build a domain key without a scale channel.");const r=n+"|"+t.kind+"|"+s1(t),i=e?e+"|"+r:void 0;return{domainKeyBase:r,domainKey:i}}function i1(n,t){const{domainKey:e,domainKeyBase:r}=r1({scaleChannel:n.scaleChannel,source:Dh(n.channelDef),type:t});if(!e)throw new Error("Cannot finalize a domain key without a resolved type.");return n.domainKeyBase=r,n.domainKey=e,e}function s1(n){switch(n.kind){case"field":case"expr":return n.value;case"datum":case"value":return o1(n.value);default:throw new Error("Unknown domain key source.")}}function o1(n){return Ze(n)?"expr:"+n.expr:n===void 0?"undefined":JSON.stringify(n)}function TQ(n,t){const e={},r=i=>{var s;return(s=n.getScaleResolution(i))==null?void 0:s.getScale()};for(const[i,s]of Object.entries(t)){if(!s)continue;const o=i;if(PQ(o))continue;const a=s;e[o]=LQ(RQ(o,a,n.paramMediator),r)}return e}function PQ(n){return n==="key"||n==="search"}function LQ(n,t){if(n.length===1)return a1(n[0],t);const e=n.map(s=>s.predicate),r=n.map(s=>a1(s,t));return Object.assign(s=>{for(let o=0;o<r.length;o++)if(e[o](s))return r[o](s)},{constant:!1,accessors:r.map(s=>s.accessors[0]),dataAccessor:r.map(s=>s.dataAccessor).find(s=>s),scale:r.map(s=>s.scale).find(s=>s),channelDef:n.at(-1).channelDef})}function a1(n,t){const{channel:e,scaleChannel:r,channelDef:i}=n,s=n.scaleChannel?t(r):void 0;if(r&&!s)throw new Error(`Missing scale! "${e}": ${JSON.stringify(i)}`);return Object.assign(s?o=>s(n(o)):o=>n(o),{scale:s,constant:n.constant,accessors:[n],dataAccessor:n.constant?void 0:n,channelDef:i})}function vt(n){return n&&"value"in n}function Mn(n){return n&&"field"in n}function bs(n){return n&&"datum"in n}function Tt(n){return Mn(n)||bs(n)||xs(n)||l1(n)}function c1(n){if(kh(n)){const t=n.condition;if(!Array.isArray(t)&&Tt(t))return t}else if(Tt(n))return n}function OQ(n,t){const e=n.mark.encoding[t];if(!Array.isArray(e)&&Tt(e))return e;throw new Error("Not a channel def with scale!")}function l1(n){return n&&"chrom"in n}function xs(n){return n&&"expr"in n}function UQ(n){return(Mn(n)||bs(n))&&"condition"in n}function kh(n){return vt(n)&&"condition"in n}const ai=["x","y"],GQ=["x2","y2"],zQ=[...ai,...GQ];function Fh(n){return ai.includes(n)}function $a(n){return zQ.includes(n)}const u1={x:"x2",y:"y2"},f1=Object.fromEntries(Object.entries(u1).map(n=>[n[1],n[0]]));function Mh(n){return n in f1}function Rh(n){const t=u1[n];if(t)return t;throw new Error(`${n} has no secondary channel!`)}function ci(n){return f1[n]??n}function ur(n){return["color","fill","stroke"].includes(ci(n))}function Pu(n){return["shape"].includes(n)}function Lu(n){return["x","y","x2","y2","color","fill","stroke","opacity","fillOpacity","strokeOpacity","strokeWidth","size","shape","angle","dx","dy","sample"].includes(n)}function HQ(n){switch(n){case"shape":return["circle","square","cross","diamond","triangle-up","triangle-right","triangle-down","triangle-left","tick-up","tick-right","tick-down","tick-left"]}}function A1(n){if(!Pu(n))throw new Error("Not a discrete channel: "+n);const t=new Map(HQ(n).map((e,r)=>[e,r]));return e=>{const r=t.get(e);if(r!==void 0)return r;throw new Error(`Invalid value for "${n}" channel: ${e}`)}}function Nh(n){return{type:"single",datum:n,uniqueId:n==null?void 0:n[Nt]}}function Th(n){return n??(n=[]),{type:"multi",data:new Map(n.map(t=>[t[Nt],t]))}}function h1(n){return{type:"interval",intervals:Object.fromEntries(n.map(t=>[t,null]))}}function VQ(n,{add:t,remove:e,toggle:r}){const i=n.data;for(const s of t??[])i.set(s[Nt],s);for(const s of e??[])i.delete(s[Nt]);for(const s of r??[]){const o=s[Nt];i.has(o)?i.delete(o):i.set(o,s)}return{type:"multi",data:i}}function _Q(n,t){const e=!!(n.empty??!0),r=Bs(n.param),i=n.fields??{};if(g1(t))return`${r}.uniqueId == null ? ${e} : ${r}.uniqueId === datum[${JSON.stringify(Nt)}]`;if(Ph(t))return`${r}.data.size == 0 ? ${e} : mapHasKey(${r}.data, datum[${JSON.stringify(Nt)}])`;if(d1(t)){const s=Object.keys(t.intervals),o=Object.keys(i).filter(Fh);if(o.length===0)throw new Error("Filtering using interval selections requires at least one primary positional channel in the config! "+JSON.stringify(n));if(o.some(c=>!s.includes(c)))throw new Error(`Selection channels (${s.join(", ")}) do not match the fields: ${JSON.stringify(n)}!`);const a=c=>`datum[${JSON.stringify(c)}]`;return s.map(c=>{const u=Rh(c),f=i[c],h=i[u]??i[c],A=`${r}.intervals.${c}[0] <= ${a(h)}`,d=`${a(f)} <= ${r}.intervals.${c}[1]`;return`(${r}.intervals.${c} ? (${A} && ${d}) : ${e})`}).join(" && ")}else throw new Error(`Unrecognized selection type : ${JSON.stringify(t)}`)}function d1(n){return n.type==="interval"}function g1(n){return n.type==="single"}function Ph(n){return n.type==="multi"}function Ou(n){const t=typeof n=="string"?{type:n}:{...n};return t.on=t.on?C1(t.on):Uu(t)?{type:"click"}:void 0,t.clear=t.clear===!1?void 0:t.clear===!0||t.clear==null?{type:"dblclick"}:C1(t.clear),Uu(t)&&t.on.type==="click"&&(t.toggle=!0),t}function Uu(n){return n&&n.type=="point"}function p1(n){return n&&n.type=="interval"}function m1(n){return Object.values(n.intervals).some(t=>t&&t.length===2)}function YQ(n,t){return Object.entries(n.intervals).every(([e,r])=>(e=="x"||e=="y")&&r&&r[0]<=t[e]&&r[1]>=t[e])}function C1(n){if(typeof n=="string"){const t=n.match(/^([a-zA-Z]+)(?:\[(.+)\])?$/);if(!t)throw new Error(`Invalid event type string: ${n}`);const[,e,r]=t,i={type:e};return r&&(i.filter=r),i}else return n}class JQ{constructor(t){S(this,Nr);W(this,"paramListeners");S(this,Ui,new Map);S(this,yo,new Map);S(this,wo,new Map);S(this,Zc);D(this,Zc,t??(()=>{})),D(this,Nr,new Map),this.paramListeners=new Map}registerParam(t){const e=t.name;if("value"in t&&"expr"in t)throw new Error(`The parameter "${e}" must not have both value and expr properties!`);let r,i;if(t.push=="outer"){const s=this.findMediatorForParam(e);if(!s)throw new Error(`Parameter "${e}" not found in outer scope!`);const o=s.paramConfigs.get(e);if("expr"in o||"select"in o)throw new Error(`The outer parameter "${e}" must not have expr or select properties!`);r=s.getSetter(e),g(this,Ui).set(e,r)}else if("value"in t)i=Gu(t,this),r=this.allocateSetter(e,i);else if("expr"in t){const s=this.createExpression(t.expr);i=Gu(t,this,s);const o=this.allocateSetter(e,i);s.addListener(()=>o(s(null))),r=a=>{}}else i=Gu(t,this),r=this.allocateSetter(e,i);return"select"in t&&(i??(i=Gu(t,this)),r(i)),g(this,wo).set(e,t),r}allocateSetter(t,e,r=!1){if(Bs(t),g(this,Ui).has(t))throw new Error("Setter already allocated for parameter: "+t);const i=s=>{const o=g(this,Nr).get(t);if(s!==o){g(this,Nr).set(t,s);const a=this.paramListeners.get(t);if(a&&!r)for(const l of a)l()}};return i(e),g(this,Ui).set(t,i),i}getSetter(t){const e=g(this,Ui).get(t);if(!e)throw new Error("Setter not found for parameter: "+t);return e}getValue(t){return g(this,Nr).get(t)}subscribe(t,e){Bs(t);const r=this.findMediatorForParam(t);if(!r)throw new Error("Parameter not found: "+t);const i=r.paramListeners.get(t)??new Set;return r.paramListeners.set(t,i),i.add(e),()=>{i.delete(e),i.size||r.paramListeners.delete(t)}}findValue(t){const e=this.findMediatorForParam(t);return e==null?void 0:e.getValue(t)}get paramConfigs(){return g(this,wo)}findMediatorForParam(t){var e;return g(this,Nr).has(t)?this:(e=g(this,Zc).call(this))==null?void 0:e.findMediatorForParam(t)}createExpression(t){if(g(this,yo).has(t))return g(this,yo).get(t);const e={},r=DQ(t,e),i=new Map;for(const o of r.globals){const a=this.findMediatorForParam(o);if(!a)throw new Error(`Unknown variable "${o}" in expression: ${t}`);i.set(o,a),Object.defineProperty(e,o,{enumerable:!0,get(){return a.getValue(o)}})}const s=new Set;return r.addListener=o=>{for(const[a,l]of i){const c=l.paramListeners.get(a)??new Set;l.paramListeners.set(a,c),c.add(o),s.add(o)}},r.removeListener=o=>{var a;for(const[l,c]of i)(a=c.paramListeners.get(l))==null||a.delete(o);s.delete(o)},r.invalidate=()=>{var o;for(const[a,l]of i)for(const c of s)(o=l.paramListeners.get(a))==null||o.delete(c);s.clear()},r.identifier=()=>r.code,g(this,yo).set(t,r),r}evaluateAndGet(t){return this.createExpression(t)()}hasPointSelections(){for(const t of g(this,wo).values())if(Lh(t)){const e=t.select;if(ye(e)){if(e=="point")return!0}else if(e.type=="point")return!0}return!1}}Nr=new WeakMap,Ui=new WeakMap,yo=new WeakMap,wo=new WeakMap,Zc=new WeakMap;function Ze(n){return typeof n=="object"&&n!=null&&"expr"in n&&ye(n.expr)}function Pt(n){if(Ze(n))throw new Error(`ExprRef ${JSON.stringify(n)} not allowed here. Expected a scalar value.`);return n}function y1(n){return("expr"in n||"bind"in n)&&!("select"in n)}function Lh(n){return!("expr"in n||"bind"in n)&&"select"in n}function Gu(n,t,e){if("select"in n){const r=Ou(n.select);if(Uu(r))return r.toggle?Th():Nh(null);if(p1(r)){if(!r.encodings)throw new Error(`Interval selection "${n.name}" must have encodings defined!`);return h1(r.encodings)}throw new Error(`Unknown selection config for parameter "${n.name}".`)}if("expr"in n){const r=e??(t==null?void 0:t.createExpression(n.expr));if(!r)throw new Error(`Cannot evaluate expression for parameter "${n.name}".`);return r(null)}return"value"in n?n.value:null}function zu(n,t,e){const r={...t},i=[],s=o=>{i.push(o),i.length===1&&queueMicrotask(()=>{e(i.slice()),i.length=0})};for(const[o,a]of Object.entries(t))if(Ze(a)){const l=n.createExpression(a.expr);e&&l.addListener(()=>s(o)),Object.defineProperty(r,o,{enumerable:!0,get(){return l()}})}else r[o]=a;return r}function Bs(n){if(!/^[a-zA-Z_$][0-9a-zA-Z_$]*$/.test(n))throw new Error(`Invalid parameter name: ${n}. Must be a valid JavaScript identifier.`);return n}function w1(n){return Object.assign(()=>n,{addListener:()=>{},removeListener:()=>{},invalidate:()=>{},identifier:()=>"constant",fields:[],globals:[],code:JSON.stringify(n)})}function qQ(n){const t=Math.floor(Math.random()*16777215).toString(16),e=[];for(const r of n.paramConfigs.values()){if(!y1(r))continue;const i=r.bind;if(!i||!("input"in i))continue;const s=r.name,o=n.getSetter(s),a=n.getValue(s),l=i.name??s,c=i.debounce?Du(o,i.debounce,!1):o,u=`${t}-param-${s}`;if(i.input=="range")e.push(pe`<label for=${u}>${l}</label>
345
326
  <div>
346
327
  <input
347
328
  id=${u}
348
329
  type="range"
349
330
  min=${i.min??0}
350
331
  max=${i.max??100}
351
- step=${i.step??Yr(i.min,i.max,100)}
332
+ step=${i.step??ei(i.min,i.max,100)}
352
333
  .value=${a}
353
334
  @input=${f=>{c(f.target.valueAsNumber),f.target.nextElementSibling.textContent=f.target.valueAsNumber}}
354
335
  /><span>${a}</span>
355
- </div>`);else if(i.input=="checkbox")e.push(be`<label for=${u}>${l}</label>
336
+ </div>`);else if(i.input=="checkbox")e.push(pe`<label for=${u}>${l}</label>
356
337
  <input
357
338
  id=${u}
358
339
  type="checkbox"
359
340
  ?checked=${a}
360
341
  @input=${f=>c(f.target.checked)}
361
- />`);else if(i.input=="radio")e.push(be`<span class="label">${l}</span>
342
+ />`);else if(i.input=="radio")e.push(pe`<span class="label">${l}</span>
362
343
  <div class="radio-group">
363
- ${i.options.map((f,h)=>{var A;return be`<label>
344
+ ${i.options.map((f,h)=>{var A;return pe`<label>
364
345
  <input
365
346
  type="radio"
366
347
  name=${s}
@@ -369,18 +350,18 @@ ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of t
369
350
  @input=${d=>c(d.target.value)}
370
351
  />${((A=i.labels)==null?void 0:A[h])??f}</label
371
352
  >`})}
372
- </div>`);else if(i.input=="select")e.push(be`<label for=${u}>${l}</label>
353
+ </div>`);else if(i.input=="select")e.push(pe`<label for=${u}>${l}</label>
373
354
  <select
374
355
  id=${u}
375
356
  @input=${f=>c(f.target.value)}
376
357
  >
377
- ${i.options.map((f,h)=>{var A;return be`<option
358
+ ${i.options.map((f,h)=>{var A;return pe`<option
378
359
  value=${f}
379
360
  ?selected=${a==f}
380
361
  >
381
362
  ${((A=i.labels)==null?void 0:A[h])??f}
382
363
  </option>`})}
383
- </select> `);else if(i.input=="text"||i.input=="number"||i.input=="color")e.push(be`<label for=${u}>${l}</label>
364
+ </select> `);else if(i.input=="text"||i.input=="number"||i.input=="color")e.push(pe`<label for=${u}>${l}</label>
384
365
  <div>
385
366
  <input
386
367
  id=${u}
@@ -391,9 +372,9 @@ ${e}`}handle(t){this._propagate(t)}complete(){this.completed=!0;for(const t of t
391
372
  @focus=${f=>f.target.select()}
392
373
  @input=${f=>{c(i.input=="number"?f.target.valueAsNumber:f.target.value)}}
393
374
  />
394
- </div>`);else throw new Error("Unsupported input type: "+i.input);i.description&&e.push(be`<div class="description">${i.description}</div>`)}return e}class IQ{constructor(t,e){D(this,yc);D(this,wc);D(this,yn);F(this,yc,t),F(this,wc,e),F(this,yn,void 0)}initialize(t){const e=[];t.visit(i=>{const s=i.paramMediator;e.push(...wQ(s))});const r=m(this,wc).inputBindingContainer;if(!(!r||r=="none"||!e.length)){if(F(this,yn,document.createElement("div")),m(this,yn).className="gs-input-bindings",r=="default")m(this,yc).appendChild(m(this,yn));else if(r instanceof HTMLElement)r.appendChild(m(this,yn));else throw new Error("Invalid inputBindingContainer");e.length&&Vo(be`<div class="gs-input-binding">${e}</div>`,m(this,yn))}}remove(){var t;(t=m(this,yn))==null||t.remove()}}yc=new WeakMap,wc=new WeakMap,yn=new WeakMap;/* @license twgl.js 4.24.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
375
+ </div>`);else throw new Error("Unsupported input type: "+i.input);i.description&&e.push(pe`<div class="description">${i.description}</div>`)}return e}class KQ{constructor(t,e){S(this,$c);S(this,el);S(this,In);D(this,$c,t),D(this,el,e),D(this,In,void 0)}initialize(t){const e=[];t.visit(i=>{const s=i.paramMediator;e.push(...qQ(s))});const r=g(this,el).inputBindingContainer;if(!(!r||r=="none"||!e.length)){if(D(this,In,document.createElement("div")),g(this,In).className="gs-input-bindings",r=="default")g(this,$c).appendChild(g(this,In));else if(r instanceof HTMLElement)r.appendChild(g(this,In));else throw new Error("Invalid inputBindingContainer");e.length&&va(pe`<div class="gs-input-binding">${e}</div>`,g(this,In))}}remove(){var t;(t=g(this,In))==null||t.remove()}}$c=new WeakMap,el=new WeakMap,In=new WeakMap;/* @license twgl.js 4.24.0 Copyright (c) 2015, Gregg Tavares All Rights Reserved.
395
376
  Available via the MIT license.
396
- see: http://github.com/greggman/twgl.js for details */const UA=5120,Ea=5121,GA=5122,zA=5123,HA=5124,YA=5125,_A=5126,EQ=32819,bQ=32820,xQ=33635,BQ=5131,vQ=33640,QQ=35899,SQ=35902,DQ=36269,kQ=34042,tm={};{const n=tm;n[UA]=Int8Array,n[Ea]=Uint8Array,n[GA]=Int16Array,n[zA]=Uint16Array,n[HA]=Int32Array,n[YA]=Uint32Array,n[_A]=Float32Array,n[EQ]=Uint16Array,n[bQ]=Uint16Array,n[xQ]=Uint16Array,n[BQ]=Uint16Array,n[vQ]=Uint32Array,n[QQ]=Uint32Array,n[SQ]=Uint32Array,n[DQ]=Uint32Array,n[kQ]=Uint32Array}function VA(n){if(n instanceof Int8Array)return UA;if(n instanceof Uint8Array||n instanceof Uint8ClampedArray)return Ea;if(n instanceof Int16Array)return GA;if(n instanceof Uint16Array)return zA;if(n instanceof Int32Array)return HA;if(n instanceof Uint32Array)return YA;if(n instanceof Float32Array)return _A;throw new Error("unsupported typed array type")}function FQ(n){if(n===Int8Array)return UA;if(n===Uint8Array||n===Uint8ClampedArray)return Ea;if(n===Int16Array)return GA;if(n===Uint16Array)return zA;if(n===Int32Array)return HA;if(n===Uint32Array)return YA;if(n===Float32Array)return _A;throw new Error("unsupported typed array type")}function MQ(n){const t=tm[n];if(!t)throw new Error("unknown gl type");return t}const $l=typeof SharedArrayBuffer<"u"?function(t){return t&&t.buffer&&(t.buffer instanceof ArrayBuffer||t.buffer instanceof SharedArrayBuffer)}:function(t){return t&&t.buffer&&t.buffer instanceof ArrayBuffer};function RQ(...n){console.error(...n)}function nm(...n){console.warn(...n)}function NQ(n,t){return typeof WebGLBuffer<"u"&&t instanceof WebGLBuffer}function rm(n,t){return typeof WebGLRenderbuffer<"u"&&t instanceof WebGLRenderbuffer}function eu(n,t){return typeof WebGLTexture<"u"&&t instanceof WebGLTexture}function TQ(n,t){return typeof WebGLSampler<"u"&&t instanceof WebGLSampler}const im=35044,ln=34962,PQ=34963,LQ=34660,OQ=5120,UQ=5121,GQ=5122,zQ=5123,HQ=5124,YQ=5125,_Q=5126,sm={attribPrefix:""};function om(n,t,e,r,i){n.bindBuffer(t,e),n.bufferData(t,r,i||im)}function am(n,t,e,r){if(NQ(n,t))return t;e=e||ln;const i=n.createBuffer();return om(n,e,i,t,r),i}function cm(n){return n==="indices"}function VQ(n){return n instanceof Int8Array||n instanceof Uint8Array}function JQ(n){return n===Int8Array||n===Uint8Array}function qQ(n){return n.length?n:n.data}const KQ=/coord|texture/i,jQ=/color|colour/i;function lm(n,t){let e;if(KQ.test(n)?e=2:jQ.test(n)?e=4:e=3,t%e>0)throw new Error(`Can not guess numComponents for attribute '${n}'. Tried ${e} but ${t} values is not evenly divisible by ${e}. You should specify it.`);return e}function WQ(n,t){return n.numComponents||n.size||lm(t,qQ(n).length)}function JA(n,t){if($l(n))return n;if($l(n.data))return n.data;Array.isArray(n)&&(n={data:n});let e=n.type;return e||(cm(t)?e=Uint16Array:e=Float32Array),new e(n.data)}function XQ(n,t){const e={};return Object.keys(t).forEach(function(r){if(!cm(r)){const i=t[r],s=i.attrib||i.name||i.attribName||sm.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!$l(i.value))throw new Error("array.value is not array or typedarray");e[s]={value:i.value}}else{let o,a,l,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,c=i.numComponents||i.size,a=i.type,l=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const u=i.data||i,f=i.type||Float32Array,h=u*f.BYTES_PER_ELEMENT;a=FQ(f),l=i.normalize!==void 0?i.normalize:JQ(f),c=i.numComponents||i.size||lm(r,u),o=n.createBuffer(),n.bindBuffer(ln,o),n.bufferData(ln,h,i.drawType||im)}else{const u=JA(i,r);o=am(n,u,void 0,i.drawType),a=VA(u),l=i.normalize!==void 0?i.normalize:VQ(u),c=WQ(i,r)}e[s]={buffer:o,numComponents:c,type:a,normalize:l,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),n.bindBuffer(ln,null),e}function ZQ(n,t,e,r){e=JA(e),r!==void 0?(n.bindBuffer(ln,t.buffer),n.bufferSubData(ln,r,e)):om(n,ln,t.buffer,e,t.drawType)}function $Q(n,t){return t===OQ||t===UQ?1:t===GQ||t===zQ?2:t===HQ||t===YQ||t===_Q?4:0}const qA=["position","positions","a_position"];function eS(n,t){let e,r;for(r=0;r<qA.length&&(e=qA[r],!(e in t||(e=sm.attribPrefix+e,e in t)));++r);r===qA.length&&(e=Object.keys(t)[0]);const i=t[e];if(!i.buffer)return 1;n.bindBuffer(ln,i.buffer);const s=n.getBufferParameter(ln,LQ);n.bindBuffer(ln,null);const o=$Q(n,i.type),a=s/o,l=i.numComponents||i.size,c=a/l;if(c%1!==0)throw new Error(`numComponents ${l} not correct for length ${length}`);return c}function tS(n,t,e){const r=XQ(n,t),i=Object.assign({},e||{});i.attribs=Object.assign({},e?e.attribs:{},r);const s=t.indices;if(s){const o=JA(s,"indices");i.indices=am(n,o,PQ),i.numElements=o.length,i.elementType=VA(o)}else i.numElements||(i.numElements=eS(n,i.attribs));return i}function es(n){return!!n.texStorage2D}const KA=(function(){const n={},t={};function e(r){const i=r.constructor.name;if(!n[i]){for(const s in r)if(typeof r[s]=="number"){const o=t[r[s]];t[r[s]]=o?`${o} | ${s}`:s}n[i]=!0}}return function(i,s){return e(i),t[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}})(),ir={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},ts=$l,um=(function(){let n;return function(){return n=n||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),n}})(),fm=6406,un=6407,xe=6408,Am=6409,hm=6410,ba=6402,dm=34041,tu=33071,nS=9728,rS=9729,Nn=3553,Tn=34067,sr=32879,or=35866,nu=34069,iS=34070,sS=34071,oS=34072,aS=34073,cS=34074,jA=10241,WA=10240,ru=10242,iu=10243,gm=32882,lS=33082,uS=33083,fS=33084,AS=33085,XA=3317,pm=3314,mm=32878,Cm=3316,ym=3315,wm=32877,hS=37443,dS=37441,gS=37440,pS=33321,mS=36756,CS=33325,yS=33326,wS=33330,IS=33329,ES=33338,bS=33337,xS=33340,BS=33339,vS=33323,QS=36757,SS=33327,DS=33328,kS=33336,FS=33335,MS=33332,RS=33331,NS=33334,TS=33333,PS=32849,LS=35905,OS=36194,US=36758,GS=35898,zS=35901,HS=34843,YS=34837,_S=36221,VS=36239,JS=36215,qS=36233,KS=36209,jS=36227,WS=32856,XS=35907,ZS=36759,$S=32855,eD=32854,tD=32857,nD=34842,rD=34836,iD=36220,sD=36238,oD=36975,aD=36214,cD=36232,lD=36226,uD=36208,fD=33189,AD=33190,hD=36012,dD=36013,gD=35056,ar=5120,Be=5121,su=5122,ns=5123,ou=5124,Zr=5125,st=5126,Im=32819,Em=32820,bm=33635,jt=5131,xa=36193,ZA=33640,pD=35899,mD=35902,CD=36269,yD=34042,au=33319,rs=33320,cu=6403,is=36244,ss=36248,$r=36249;let $A;function lu(n){if(!$A){const t={};t[fm]={textureFormat:fm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Be,jt,xa,st]},t[Am]={textureFormat:Am,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Be,jt,xa,st]},t[hm]={textureFormat:hm,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Be,jt,xa,st]},t[un]={textureFormat:un,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Be,jt,xa,st,bm]},t[xe]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Be,jt,xa,st,Im,Em]},t[ba]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Zr,ns]},t[pS]={textureFormat:cu,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Be]},t[mS]={textureFormat:cu,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[ar]},t[CS]={textureFormat:cu,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[st,jt]},t[yS]={textureFormat:cu,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[st]},t[wS]={textureFormat:is,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Be]},t[IS]={textureFormat:is,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[ar]},t[MS]={textureFormat:is,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ns]},t[RS]={textureFormat:is,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[su]},t[NS]={textureFormat:is,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Zr]},t[TS]={textureFormat:is,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ou]},t[vS]={textureFormat:au,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Be]},t[QS]={textureFormat:au,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[ar]},t[SS]={textureFormat:au,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[st,jt]},t[DS]={textureFormat:au,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[st]},t[kS]={textureFormat:rs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Be]},t[FS]={textureFormat:rs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[ar]},t[ES]={textureFormat:rs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ns]},t[bS]={textureFormat:rs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[su]},t[xS]={textureFormat:rs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Zr]},t[BS]={textureFormat:rs,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ou]},t[PS]={textureFormat:un,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Be]},t[LS]={textureFormat:un,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Be]},t[OS]={textureFormat:un,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Be,bm]},t[US]={textureFormat:un,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[ar]},t[GS]={textureFormat:un,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[st,jt,pD]},t[zS]={textureFormat:un,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[st,jt,mD]},t[HS]={textureFormat:un,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[st,jt]},t[YS]={textureFormat:un,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[st]},t[_S]={textureFormat:ss,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Be]},t[VS]={textureFormat:ss,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[ar]},t[JS]={textureFormat:ss,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[ns]},t[qS]={textureFormat:ss,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[su]},t[KS]={textureFormat:ss,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[Zr]},t[jS]={textureFormat:ss,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ou]},t[WS]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Be]},t[XS]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Be]},t[ZS]={textureFormat:xe,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[ar]},t[$S]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Be,Em,ZA]},t[eD]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Be,Im]},t[tD]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[ZA]},t[nD]={textureFormat:xe,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[st,jt]},t[rD]={textureFormat:xe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[st]},t[iD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Be]},t[sD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ar]},t[oD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ZA]},t[aD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ns]},t[cD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[su]},t[lD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ou]},t[uD]={textureFormat:$r,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[Zr]},t[fD]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[ns,Zr]},t[AD]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Zr]},t[hD]={textureFormat:ba,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[st]},t[gD]={textureFormat:dm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[yD]},t[dD]={textureFormat:dm,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[CD]},Object.keys(t).forEach(function(e){const r=t[e];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,s){const o=r.type[s];r.bytesPerElementMap[o]=i})}),$A=t}return $A[n]}function wD(n,t){const e=lu(n);if(!e)throw"unknown internal format";const r=e.bytesPerElementMap[t];if(r===void 0)throw"unknown internal format";return r}function os(n){const t=lu(n);if(!t)throw"unknown internal format";return{format:t.textureFormat,type:t.type[0]}}function xm(n){return(n&n-1)===0}function ID(n,t,e,r){if(!es(n))return xm(t)&&xm(e);const i=lu(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function ED(n){const t=lu(n);if(!t)throw"unknown internal format";return t.textureFilterable}function Bm(n,t,e){return ts(t)?VA(t):e||Be}function uu(n,t,e,r,i){if(i%1!==0)throw"can't guess dimensions";if(!e&&!r){const s=Math.sqrt(i/(t===Tn?6:1));s%1===0?(e=s,r=s):(e=i,r=1)}else if(r){if(!e&&(e=i/r,e%1))throw"can't guess dimensions"}else if(r=i/e,r%1)throw"can't guess dimensions";return{width:e,height:r}}function as(n,t){t.colorspaceConversion!==void 0&&n.pixelStorei(hS,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&n.pixelStorei(dS,t.premultiplyAlpha),t.flipY!==void 0&&n.pixelStorei(gS,t.flipY)}function vm(n){n.pixelStorei(XA,4),es(n)&&(n.pixelStorei(pm,0),n.pixelStorei(mm,0),n.pixelStorei(Cm,0),n.pixelStorei(ym,0),n.pixelStorei(wm,0))}function bD(n,t,e,r){r.minMag&&(e.call(n,t,jA,r.minMag),e.call(n,t,WA,r.minMag)),r.min&&e.call(n,t,jA,r.min),r.mag&&e.call(n,t,WA,r.mag),r.wrap&&(e.call(n,t,ru,r.wrap),e.call(n,t,iu,r.wrap),(t===sr||TQ(n,t))&&e.call(n,t,gm,r.wrap)),r.wrapR&&e.call(n,t,gm,r.wrapR),r.wrapS&&e.call(n,t,ru,r.wrapS),r.wrapT&&e.call(n,t,iu,r.wrapT),r.minLod&&e.call(n,t,lS,r.minLod),r.maxLod&&e.call(n,t,uS,r.maxLod),r.baseLevel&&e.call(n,t,fS,r.baseLevel),r.maxLevel&&e.call(n,t,AS,r.maxLevel)}function Qm(n,t,e){const r=e.target||Nn;n.bindTexture(r,t),bD(n,r,n.texParameteri,e)}function xD(n){return n=n||ir.textureColor,ts(n)?n:new Uint8Array([n[0]*255,n[1]*255,n[2]*255,n[3]*255])}function eh(n,t,e,r,i,s){e=e||ir.textureOptions,s=s||xe;const o=e.target||Nn;if(r=r||e.width,i=i||e.height,n.bindTexture(o,t),ID(n,r,i,s))n.generateMipmap(o);else{const a=ED(s)?rS:nS;n.texParameteri(o,jA,a),n.texParameteri(o,WA,a),n.texParameteri(o,ru,tu),n.texParameteri(o,iu,tu)}}function Ba(n){return n.auto===!0||n.auto===void 0&&n.level===void 0}function th(n,t){return t=t||{},t.cubeFaceOrder||[nu,iS,sS,oS,aS,cS]}function nh(n,t){const r=th(n,t).map(function(i,s){return{face:i,ndx:s}});return r.sort(function(i,s){return i.face-s.face}),r}function Sm(n,t,e,r){r=r||ir.textureOptions;const i=r.target||Nn,s=r.level||0;let o=e.width,a=e.height;const l=r.internalFormat||r.format||xe,c=os(l),u=r.format||c.format,f=r.type||c.type;if(as(n,r),n.bindTexture(i,t),i===Tn){const h=e.width,A=e.height;let d,g;if(h/6===A)d=A,g=[0,0,1,0,2,0,3,0,4,0,5,0];else if(A/6===h)d=h,g=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===A/2)d=h/3,g=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===A/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: "+(e.src?e.src:e.nodeName);const p=um();p?(p.canvas.width=d,p.canvas.height=d,o=d,a=d,nh(n,r).forEach(function(C){const w=g[C.ndx*2+0]*d,b=g[C.ndx*2+1]*d;p.drawImage(e,w,b,d,d,0,0,d,d),n.texImage2D(C.face,s,l,u,f,p.canvas)}),p.canvas.width=1,p.canvas.height=1):typeof createImageBitmap<"u"&&(o=d,a=d,nh(n,r).forEach(function(C){const w=g[C.ndx*2+0]*d,b=g[C.ndx*2+1]*d;n.texImage2D(C.face,s,l,d,d,0,u,f,null),createImageBitmap(e,w,b,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(y){as(n,r),n.bindTexture(i,t),n.texImage2D(C.face,s,l,u,f,y),Ba(r)&&eh(n,t,r,o,a,l)})}))}else if(i===sr||i===or){const h=Math.min(e.width,e.height),A=Math.max(e.width,e.height),d=A/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const g=e.width===A?1:0,p=e.height===A?1:0;n.pixelStorei(XA,1),n.pixelStorei(pm,e.width),n.pixelStorei(mm,0),n.pixelStorei(wm,0),n.texImage3D(i,s,l,h,h,h,0,u,f,null);for(let C=0;C<d;++C){const w=C*h*g,b=C*h*p;n.pixelStorei(Cm,w),n.pixelStorei(ym,b),n.texSubImage3D(i,s,0,0,C,h,h,1,u,f,e)}vm(n)}else n.texImage2D(i,s,l,u,f,e);Ba(r)&&eh(n,t,r,o,a,l),Qm(n,t,r)}function va(){}function BD(n){if(typeof document<"u"){const t=document.createElement("a");return t.href=n,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{const t=new URL(location.href).origin;return new URL(n,location.href).origin===t}}function vD(n,t){return t===void 0&&!BD(n)?"anonymous":t}function QD(n,t,e){e=e||va;let r;if(t=t!==void 0?t:ir.crossOrigin,t=vD(n,t),typeof Image<"u"){r=new Image,t!==void 0&&(r.crossOrigin=t);const i=function(){r.removeEventListener("error",s),r.removeEventListener("load",o),r=null},s=function(){const l="couldn't load image: "+n;RQ(l),e(l,r),i()},o=function(){e(null,r),i()};return r.addEventListener("error",s),r.addEventListener("load",o),r.src=n,r}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){e(i,s)},a={};t&&(a.mode="cors"),fetch(n,a).then(function(l){if(!l.ok)throw l;return l.blob()}).then(function(l){return createImageBitmap(l,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(l){s=l,setTimeout(o)}).catch(function(l){i=l,setTimeout(o)}),r=null}return r}function Dm(n){return typeof ImageBitmap<"u"&&n instanceof ImageBitmap||typeof ImageData<"u"&&n instanceof ImageData||typeof HTMLElement<"u"&&n instanceof HTMLElement}function rh(n,t,e){return Dm(n)?(setTimeout(function(){e(null,n)}),n):QD(n,t,e)}function ih(n,t,e){e=e||ir.textureOptions;const r=e.target||Nn;if(n.bindTexture(r,t),e.color===!1)return;const i=xD(e.color);if(r===Tn)for(let s=0;s<6;++s)n.texImage2D(nu+s,0,xe,1,1,0,xe,Be,i);else r===sr||r===or?n.texImage3D(r,0,xe,1,1,1,0,xe,Be,i):n.texImage2D(r,0,xe,1,1,0,xe,Be,i)}function SD(n,t,e,r){return r=r||va,e=e||ir.textureOptions,ih(n,t,e),e=Object.assign({},e),rh(e.src,e.crossOrigin,function(s,o){s?r(s,t,o):(Sm(n,t,o,e),r(null,t,o))})}function DD(n,t,e,r){r=r||va;const i=e.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=e.level||0,o=e.internalFormat||e.format||xe,a=os(o),l=e.format||a.format,c=e.type||Be,u=e.target||Nn;if(u!==Tn)throw"target must be TEXTURE_CUBE_MAP";ih(n,t,e),e=Object.assign({},e);let f=6;const h=[],A=th(n,e);let d;function g(p){return function(C,w){--f,C?h.push(C):w.width!==w.height?h.push("cubemap face img is not a square: "+w.src):(as(n,e),n.bindTexture(u,t),f===5?th().forEach(function(b){n.texImage2D(b,s,o,l,c,w)}):n.texImage2D(p,s,o,l,c,w),Ba(e)&&n.generateMipmap(u)),f===0&&r(h.length?h:void 0,t,d)}}d=i.map(function(p,C){return rh(p,e.crossOrigin,g(A[C]))})}function kD(n,t,e,r){r=r||va;const i=e.src,s=e.internalFormat||e.format||xe,o=os(s),a=e.format||o.format,l=e.type||Be,c=e.target||or;if(c!==sr&&c!==or)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";ih(n,t,e),e=Object.assign({},e);let u=i.length;const f=[];let h;const A=e.level||0;let d=e.width,g=e.height;const p=i.length;let C=!0;function w(b){return function(y,x){if(--u,y)f.push(y);else{if(as(n,e),n.bindTexture(c,t),C){C=!1,d=e.width||x.width,g=e.height||x.height,n.texImage3D(c,A,s,d,g,p,0,a,l,null);for(let B=0;B<p;++B)n.texSubImage3D(c,A,0,0,B,d,g,1,a,l,x)}else{let B=x,E;(x.width!==d||x.height!==g)&&(E=um(),B=E.canvas,E.canvas.width=d,E.canvas.height=g,E.drawImage(x,0,0,d,g)),n.texSubImage3D(c,A,0,0,b,d,g,1,a,l,B),E&&B===E.canvas&&(E.canvas.width=0,E.canvas.height=0)}Ba(e)&&n.generateMipmap(c)}u===0&&r(f.length?f:void 0,t,h)}}h=i.map(function(b,y){return rh(b,e.crossOrigin,w(y))})}function km(n,t,e,r){r=r||ir.textureOptions;const i=r.target||Nn;n.bindTexture(i,t);let s=r.width,o=r.height,a=r.depth;const l=r.level||0,c=r.internalFormat||r.format||xe,u=os(c),f=r.format||u.format,h=r.type||Bm(n,e,u.type);if(ts(e))e instanceof Uint8ClampedArray&&(e=new Uint8Array(e.buffer));else{const p=MQ(h);e=new p(e)}const A=wD(c,h),d=e.byteLength/A;if(d%1)throw"length wrong size for format: "+KA(n,f);let g;if(i===sr||i===or)if(!s&&!o&&!a){const p=Math.cbrt(d);if(p%1!==0)throw"can't guess cube size of array of numElements: "+d;s=p,o=p,a=p}else s&&(!o||!a)?(g=uu(n,i,o,a,d/s),o=g.width,a=g.height):o&&(!s||!a)?(g=uu(n,i,s,a,d/o),s=g.width,a=g.height):(g=uu(n,i,s,o,d/a),s=g.width,o=g.height);else g=uu(n,i,s,o,d),s=g.width,o=g.height;if(vm(n),n.pixelStorei(XA,r.unpackAlignment||1),as(n,r),i===Tn){const p=A/e.BYTES_PER_ELEMENT,C=d/6*p;nh(n,r).forEach(w=>{const b=C*w.ndx,y=e.subarray(b,b+C);n.texImage2D(w.face,l,c,s,o,0,f,h,y)})}else i===sr||i===or?n.texImage3D(i,l,c,s,o,a,0,f,h,e):n.texImage2D(i,l,c,s,o,0,f,h,e);return{width:s,height:o,depth:a,type:h}}function FD(n,t,e){const r=e.target||Nn;n.bindTexture(r,t);const i=e.level||0,s=e.internalFormat||e.format||xe,o=os(s),a=e.format||o.format,l=e.type||o.type;if(as(n,e),r===Tn)for(let c=0;c<6;++c)n.texImage2D(nu+c,i,s,e.width,e.height,0,a,l,null);else r===sr||r===or?n.texImage3D(r,i,s,e.width,e.height,e.depth,0,a,l,null):n.texImage2D(r,i,s,e.width,e.height,0,a,l,null)}function Qa(n,t,e){e=e||va,t=t||ir.textureOptions;const r=n.createTexture(),i=t.target||Nn;let s=t.width||1,o=t.height||1;const a=t.internalFormat||xe;n.bindTexture(i,r),i===Tn&&(n.texParameteri(i,ru,tu),n.texParameteri(i,iu,tu));let l=t.src;if(l)if(typeof l=="function"&&(l=l(n,t)),typeof l=="string")SD(n,r,t,e);else if(ts(l)||Array.isArray(l)&&(typeof l[0]=="number"||Array.isArray(l[0])||ts(l[0]))){const c=km(n,r,l,t);s=c.width,o=c.height}else Array.isArray(l)&&(typeof l[0]=="string"||Dm(l[0]))?i===Tn?DD(n,r,t,e):kD(n,r,t,e):(Sm(n,r,l,t),s=l.width,o=l.height);else FD(n,r,t);return Ba(t)&&eh(n,r,t,s,o,a),Qm(n,r,t),r}function MD(n,t,e,r,i,s){r=r||e.width,i=i||e.height,s=s||e.depth;const o=e.target||Nn;n.bindTexture(o,t);const a=e.level||0,l=e.internalFormat||e.format||xe,c=os(l),u=e.format||c.format;let f;const h=e.src;if(h&&(ts(h)||Array.isArray(h)&&typeof h[0]=="number")?f=e.type||Bm(n,h,c.type):f=e.type||c.type,o===Tn)for(let A=0;A<6;++A)n.texImage2D(nu+A,a,l,r,i,0,u,f,null);else o===sr||o===or?n.texImage3D(o,a,l,r,i,s,0,u,f,null):n.texImage2D(o,a,l,r,i,0,u,f,null)}const RD=nm,fu=33984,ND=35048,Au=34962,TD=34963,sh=35345,Fm=35718,PD=35721,LD=35971,OD=35382,UD=35396,GD=35398,zD=35392,HD=35395,hu=5126,Mm=35664,Rm=35665,Nm=35666,oh=5124,Tm=35667,Pm=35668,Lm=35669,Om=35670,Um=35671,Gm=35672,zm=35673,Hm=35674,Ym=35675,_m=35676,YD=35678,_D=35680,VD=35679,JD=35682,qD=35685,KD=35686,jD=35687,WD=35688,XD=35689,ZD=35690,$D=36289,e4=36292,t4=36293,ah=5125,Vm=36294,Jm=36295,qm=36296,n4=36298,r4=36299,i4=36300,s4=36303,o4=36306,a4=36307,c4=36308,l4=36311,du=3553,gu=34067,ch=32879,pu=35866,X={};function Km(n,t){return X[t].bindPoint}function u4(n,t){return function(e){n.uniform1f(t,e)}}function f4(n,t){return function(e){n.uniform1fv(t,e)}}function A4(n,t){return function(e){n.uniform2fv(t,e)}}function h4(n,t){return function(e){n.uniform3fv(t,e)}}function d4(n,t){return function(e){n.uniform4fv(t,e)}}function jm(n,t){return function(e){n.uniform1i(t,e)}}function Wm(n,t){return function(e){n.uniform1iv(t,e)}}function Xm(n,t){return function(e){n.uniform2iv(t,e)}}function Zm(n,t){return function(e){n.uniform3iv(t,e)}}function $m(n,t){return function(e){n.uniform4iv(t,e)}}function g4(n,t){return function(e){n.uniform1ui(t,e)}}function p4(n,t){return function(e){n.uniform1uiv(t,e)}}function m4(n,t){return function(e){n.uniform2uiv(t,e)}}function C4(n,t){return function(e){n.uniform3uiv(t,e)}}function y4(n,t){return function(e){n.uniform4uiv(t,e)}}function w4(n,t){return function(e){n.uniformMatrix2fv(t,!1,e)}}function I4(n,t){return function(e){n.uniformMatrix3fv(t,!1,e)}}function E4(n,t){return function(e){n.uniformMatrix4fv(t,!1,e)}}function b4(n,t){return function(e){n.uniformMatrix2x3fv(t,!1,e)}}function x4(n,t){return function(e){n.uniformMatrix3x2fv(t,!1,e)}}function B4(n,t){return function(e){n.uniformMatrix2x4fv(t,!1,e)}}function v4(n,t){return function(e){n.uniformMatrix4x2fv(t,!1,e)}}function Q4(n,t){return function(e){n.uniformMatrix3x4fv(t,!1,e)}}function S4(n,t){return function(e){n.uniformMatrix4x3fv(t,!1,e)}}function At(n,t,e,r){const i=Km(n,t);return es(n)?function(s){let o,a;eu(n,s)?(o=s,a=null):(o=s.texture,a=s.sampler),n.uniform1i(r,e),n.activeTexture(fu+e),n.bindTexture(i,o),n.bindSampler(e,a)}:function(s){n.uniform1i(r,e),n.activeTexture(fu+e),n.bindTexture(i,s)}}function ht(n,t,e,r,i){const s=Km(n,t),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=e+a;return es(n)?function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(fu+o[c]);let u,f;eu(n,l)?(u=l,f=null):(u=l.texture,f=l.sampler),n.bindSampler(e,f),n.bindTexture(s,u)})}:function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(fu+o[c]),n.bindTexture(s,l)})}}X[hu]={Type:Float32Array,size:4,setter:u4,arraySetter:f4},X[Mm]={Type:Float32Array,size:8,setter:A4,cols:2},X[Rm]={Type:Float32Array,size:12,setter:h4,cols:3},X[Nm]={Type:Float32Array,size:16,setter:d4,cols:4},X[oh]={Type:Int32Array,size:4,setter:jm,arraySetter:Wm},X[Tm]={Type:Int32Array,size:8,setter:Xm,cols:2},X[Pm]={Type:Int32Array,size:12,setter:Zm,cols:3},X[Lm]={Type:Int32Array,size:16,setter:$m,cols:4},X[ah]={Type:Uint32Array,size:4,setter:g4,arraySetter:p4},X[Vm]={Type:Uint32Array,size:8,setter:m4,cols:2},X[Jm]={Type:Uint32Array,size:12,setter:C4,cols:3},X[qm]={Type:Uint32Array,size:16,setter:y4,cols:4},X[Om]={Type:Uint32Array,size:4,setter:jm,arraySetter:Wm},X[Um]={Type:Uint32Array,size:8,setter:Xm,cols:2},X[Gm]={Type:Uint32Array,size:12,setter:Zm,cols:3},X[zm]={Type:Uint32Array,size:16,setter:$m,cols:4},X[Hm]={Type:Float32Array,size:32,setter:w4,rows:2,cols:2},X[Ym]={Type:Float32Array,size:48,setter:I4,rows:3,cols:3},X[_m]={Type:Float32Array,size:64,setter:E4,rows:4,cols:4},X[qD]={Type:Float32Array,size:32,setter:b4,rows:2,cols:3},X[KD]={Type:Float32Array,size:32,setter:B4,rows:2,cols:4},X[jD]={Type:Float32Array,size:48,setter:x4,rows:3,cols:2},X[WD]={Type:Float32Array,size:48,setter:Q4,rows:3,cols:4},X[XD]={Type:Float32Array,size:64,setter:v4,rows:4,cols:2},X[ZD]={Type:Float32Array,size:64,setter:S4,rows:4,cols:3},X[YD]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:du},X[_D]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:gu},X[VD]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:ch},X[JD]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:du},X[$D]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:pu},X[e4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:pu},X[t4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:gu},X[n4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:du},X[r4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:ch},X[i4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:gu},X[s4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:pu},X[o4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:du},X[a4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:ch},X[c4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:gu},X[l4]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:pu};function mu(n,t){return function(e){if(e.value)switch(n.disableVertexAttribArray(t),e.value.length){case 4:n.vertexAttrib4fv(t,e.value);break;case 3:n.vertexAttrib3fv(t,e.value);break;case 2:n.vertexAttrib2fv(t,e.value);break;case 1:n.vertexAttrib1fv(t,e.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else n.bindBuffer(Au,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribPointer(t,e.numComponents||e.size,e.type||hu,e.normalize||!1,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function cr(n,t){return function(e){if(e.value)if(n.disableVertexAttribArray(t),e.value.length===4)n.vertexAttrib4iv(t,e.value);else throw new Error("The length of an integer constant value must be 4!");else n.bindBuffer(Au,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribIPointer(t,e.numComponents||e.size,e.type||oh,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function Cu(n,t){return function(e){if(e.value)if(n.disableVertexAttribArray(t),e.value.length===4)n.vertexAttrib4uiv(t,e.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else n.bindBuffer(Au,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribIPointer(t,e.numComponents||e.size,e.type||ah,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function lh(n,t,e){const r=e.size,i=e.count;return function(s){n.bindBuffer(Au,s.buffer);const o=s.size||s.numComponents||r,a=o/i,l=s.type||hu,u=X[l].size*o,f=s.normalize||!1,h=s.offset||0,A=u/i;for(let d=0;d<i;++d)n.enableVertexAttribArray(t+d),n.vertexAttribPointer(t+d,a,l,f,u,h+A*d),s.divisor!==void 0&&n.vertexAttribDivisor(t+d,s.divisor)}}const Pe={};Pe[hu]={size:4,setter:mu},Pe[Mm]={size:8,setter:mu},Pe[Rm]={size:12,setter:mu},Pe[Nm]={size:16,setter:mu},Pe[oh]={size:4,setter:cr},Pe[Tm]={size:8,setter:cr},Pe[Pm]={size:12,setter:cr},Pe[Lm]={size:16,setter:cr},Pe[ah]={size:4,setter:Cu},Pe[Vm]={size:8,setter:Cu},Pe[Jm]={size:12,setter:Cu},Pe[qm]={size:16,setter:Cu},Pe[Om]={size:4,setter:cr},Pe[Um]={size:8,setter:cr},Pe[Gm]={size:12,setter:cr},Pe[zm]={size:16,setter:cr},Pe[Hm]={size:4,setter:lh,count:2},Pe[Ym]={size:9,setter:lh,count:3},Pe[_m]={size:16,setter:lh,count:4};function e1(n){const t=n.name;return t.startsWith("gl_")||t.startsWith("webgl_")}const D4=/(\.|\[|]|\w+)/g,k4=n=>n>="0"&&n<="9";function t1(n,t,e,r){const i=n.split(D4).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const l=k4(a[0]),c=l?parseInt(a):a;if(l&&(o+=i[s++]),s===i.length){e[c]=t;break}else{const f=i[s++],h=f==="[",A=e[c]||(h?[]:{});e[c]=A,e=A,r[o]=r[o]||(function(d){return function(g){o1(d,g)}})(A),o+=f}}}function F4(n,t){let e=0;function r(a,l,c){const u=l.name.endsWith("[0]"),f=l.type,h=X[f];if(!h)throw new Error(`unknown type: 0x${f.toString(16)}`);let A;if(h.bindPoint){const d=e;e+=l.size,u?A=h.arraySetter(n,f,d,c,l.size):A=h.setter(n,f,d,c,l.size)}else h.arraySetter&&u?A=h.arraySetter(n,c):A=h.setter(n,c);return A.location=c,A}const i={},s={},o=n.getProgramParameter(t,Fm);for(let a=0;a<o;++a){const l=n.getActiveUniform(t,a);if(e1(l))continue;let c=l.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const u=n.getUniformLocation(t,l.name);if(u){const f=r(t,l,u);i[c]=f,t1(c,f,s,i)}}return i}function M4(n,t){const e={},r=n.getProgramParameter(t,LD);for(let i=0;i<r;++i){const s=n.getTransformFeedbackVarying(t,i);e[s.name]={index:i,type:s.type,size:s.size}}return e}function R4(n,t){const e=n.getProgramParameter(t,Fm),r=[],i=[];for(let a=0;a<e;++a){i.push(a),r.push({});const l=n.getActiveUniform(t,a);r[a].name=l.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const l=a[0],c=a[1];n.getActiveUniforms(t,i,n[l]).forEach(function(u,f){r[f][c]=u})});const s={},o=n.getProgramParameter(t,OD);for(let a=0;a<o;++a){const l=n.getActiveUniformBlockName(t,a),c={index:n.getUniformBlockIndex(t,l),usedByVertexShader:n.getActiveUniformBlockParameter(t,a,UD),usedByFragmentShader:n.getActiveUniformBlockParameter(t,a,GD),size:n.getActiveUniformBlockParameter(t,a,zD),uniformIndices:n.getActiveUniformBlockParameter(t,a,HD)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[l]=c}return{blockSpecs:s,uniformData:r}}const n1=/\[\d+\]\.$/,N4=(n,t)=>((n+(t-1))/t|0)*t;function T4(n,t,e,r){if(t||e){r=r||1;const s=n.length/4;return function(o){let a=0,l=0;for(let c=0;c<s;++c){for(let u=0;u<r;++u)n[a++]=o[l++];a+=4-r}}}else return function(i){i.length?n.set(i):n[0]=i}}function P4(n,t,e,r){const i=e.blockSpecs,s=e.uniformData,o=i[r];if(!o)return RD("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(o.size),l=n.createBuffer(),c=o.index;n.bindBuffer(sh,l),n.uniformBlockBinding(t,o.index,c);let u=r+".";n1.test(u)&&(u=u.replace(n1,"."));const f={},h={},A={};return o.uniformIndices.forEach(function(d){const g=s[d];let p=g.name;p.startsWith(u)&&(p=p.substr(u.length));const C=p.endsWith("[0]");C&&(p=p.substr(0,p.length-3));const w=X[g.type],b=w.Type,y=C?N4(w.size,16)*g.size:w.size*g.size,x=new b(a,g.offset,y/b.BYTES_PER_ELEMENT);f[p]=x;const B=T4(x,C,w.rows,w.cols);h[p]=B,t1(p,B,A,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:l,uniforms:f,setters:h}}function r1(n,t,e){return P4(n,t.program,t.uniformBlockSpec,e)}function i1(n,t,e){const i=(t.uniformBlockSpec||t).blockSpecs[e.name];if(i){const s=i.index;return n.bindBufferRange(sh,s,e.buffer,e.offset||0,e.array.byteLength),!0}return!1}function s1(n,t,e){i1(n,t,e)&&n.bufferData(sh,e.array,ND)}function Sa(n,t){const e=n.setters;for(const r in t){const i=e[r];if(i){const s=t[r];i(s)}}}function o1(n,t){for(const e in t){const r=n[e];typeof r=="function"?r(t[e]):o1(n[e],t[e])}}function ei(n,...t){const e=n.uniformSetters||n,r=t.length;for(let i=0;i<r;++i){const s=t[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)ei(e,s[a])}else for(const o in s){const a=e[o];a&&a(s[o])}}}function L4(n,t){const e={},r=n.getProgramParameter(t,PD);for(let i=0;i<r;++i){const s=n.getActiveAttrib(t,i);if(e1(s))continue;const o=n.getAttribLocation(t,s.name),a=Pe[s.type],l=a.setter(n,o,a);l.location=o,e[s.name]=l}return e}function O4(n,t){for(const e in t){const r=n[e];r&&r(t[e])}}function ti(n,t,e){e.vertexArrayObject?n.bindVertexArray(e.vertexArrayObject):(O4(t.attribSetters||t,e.attribs),e.indices&&n.bindBuffer(TD,e.indices))}function U4(n,t){const e=F4(n,t),r=L4(n,t),i={program:t,uniformSetters:e,attribSetters:r};return es(n)&&(i.uniformBlockSpec=R4(n,t),i.transformFeedbackInfo=M4(n,t)),i}const G4=4,a1=5123;function yu(n,t,e,r,i,s){e=e===void 0?G4:e;const o=t.indices,a=t.elementType,l=r===void 0?t.numElements:r;i=i===void 0?0:i,a||o?s!==void 0?n.drawElementsInstanced(e,l,a===void 0?a1:t.elementType,i,s):n.drawElements(e,l,a===void 0?a1:t.elementType,i):s!==void 0?n.drawArraysInstanced(e,i,l,s):n.drawArrays(e,i,l)}const z4=36160,ni=36161,H4=3553,Y4=5121,_4=6402,V4=6408,J4=33190,q4=36012,K4=35056,j4=36013,W4=32854,X4=32855,Z4=36194,c1=33189,l1=6401,u1=36168,uh=34041,fh=36064,wu=36096,f1=36128,Ah=33306,hh=33071,dh=9729,A1=[{format:V4,type:Y4,min:dh,wrap:hh},{format:uh}],Wt={};Wt[uh]=Ah,Wt[l1]=f1,Wt[u1]=f1,Wt[_4]=wu,Wt[c1]=wu,Wt[J4]=wu,Wt[q4]=wu,Wt[K4]=Ah,Wt[j4]=Ah;function $4(n,t){return Wt[n]||Wt[t]}const lr={};lr[W4]=!0,lr[X4]=!0,lr[Z4]=!0,lr[uh]=!0,lr[c1]=!0,lr[l1]=!0,lr[u1]=!0;function ek(n){return lr[n]}const tk=32;function nk(n){return n>=fh&&n<fh+tk}function h1(n,t,e,r){const i=z4,s=n.createFramebuffer();n.bindFramebuffer(i,s),e=e||n.drawingBufferWidth,r=r||n.drawingBufferHeight,t=t||A1;const o=[],a={framebuffer:s,attachments:[],width:e,height:r};return t.forEach(function(l,c){let u=l.attachment;const f=l.samples,h=l.format;let A=l.attachmentPoint||$4(h,l.internalFormat);if(A||(A=fh+c),nk(A)&&o.push(A),!u)if(f!==void 0||ek(h))u=n.createRenderbuffer(),n.bindRenderbuffer(ni,u),f>1?n.renderbufferStorageMultisample(ni,f,h,e,r):n.renderbufferStorage(ni,h,e,r);else{const d=Object.assign({},l);d.width=e,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||dh,d.mag=d.mag||d.minMag||dh,d.wrapS=d.wrapS||d.wrap||hh,d.wrapT=d.wrapT||d.wrap||hh),u=Qa(n,d)}if(rm(n,u))n.framebufferRenderbuffer(i,A,ni,u);else if(eu(n,u))l.layer!==void 0?n.framebufferTextureLayer(i,A,u,l.level||0,l.layer):n.framebufferTexture2D(i,A,l.target||H4,u,l.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),n.drawBuffers&&n.drawBuffers(o),a}function rk(n,t,e,r,i){r=r||n.drawingBufferWidth,i=i||n.drawingBufferHeight,t.width=r,t.height=i,e=e||A1,e.forEach(function(s,o){const a=t.attachments[o],l=s.format,c=s.samples;if(c!==void 0||rm(n,a))n.bindRenderbuffer(ni,a),c>1?n.renderbufferStorageMultisample(ni,c,l,r,i):n.renderbufferStorage(ni,l,r,i);else if(eu(n,a))MD(n,a,s,r,i);else throw new Error("unknown attachment type")})}function ik(n,t,e){const r=n.createVertexArray();return n.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(i){ti(n,i,e)}),n.bindVertexArray(null),{numElements:e.numElements,elementType:e.elementType,vertexArrayObject:r}}const sk=/^(.*?)_/;function ok(n,t){KA(n,0);const e=n.getExtension(t);if(e){const r={},i=sk.exec(t)[1],s="_"+i;for(const o in e){const a=e[o],l=typeof a=="function",c=l?i:s;let u=o;o.endsWith(c)&&(u=o.substring(0,o.length-c.length)),n[u]!==void 0?!l&&n[u]!==a&&nm(u,n[u],a,o):l?n[u]=(function(f){return function(){return f.apply(e,arguments)}})(a):(n[u]=a,r[u]=a)}r.constructor={name:e.constructor.name},KA(r,0)}return e}const d1=["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 g1(n){for(let t=0;t<d1.length;++t)ok(n,d1[t])}function ak(n,t){const e=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<e.length;++i)if(r=n.getContext(e[i],t),r){g1(r);break}return r}function ck(n,t){return ak(n,t)}const lk=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
377
+ see: http://github.com/greggman/twgl.js for details */const Oh=5120,ec=5121,Uh=5122,Gh=5123,zh=5124,Hh=5125,Vh=5126,jQ=32819,WQ=32820,XQ=33635,ZQ=5131,$Q=33640,eD=35899,tD=35902,nD=36269,rD=34042,I1={};{const n=I1;n[Oh]=Int8Array,n[ec]=Uint8Array,n[Uh]=Int16Array,n[Gh]=Uint16Array,n[zh]=Int32Array,n[Hh]=Uint32Array,n[Vh]=Float32Array,n[jQ]=Uint16Array,n[WQ]=Uint16Array,n[XQ]=Uint16Array,n[ZQ]=Uint16Array,n[$Q]=Uint32Array,n[eD]=Uint32Array,n[tD]=Uint32Array,n[nD]=Uint32Array,n[rD]=Uint32Array}function _h(n){if(n instanceof Int8Array)return Oh;if(n instanceof Uint8Array||n instanceof Uint8ClampedArray)return ec;if(n instanceof Int16Array)return Uh;if(n instanceof Uint16Array)return Gh;if(n instanceof Int32Array)return zh;if(n instanceof Uint32Array)return Hh;if(n instanceof Float32Array)return Vh;throw new Error("unsupported typed array type")}function iD(n){if(n===Int8Array)return Oh;if(n===Uint8Array||n===Uint8ClampedArray)return ec;if(n===Int16Array)return Uh;if(n===Uint16Array)return Gh;if(n===Int32Array)return zh;if(n===Uint32Array)return Hh;if(n===Float32Array)return Vh;throw new Error("unsupported typed array type")}function sD(n){const t=I1[n];if(!t)throw new Error("unknown gl type");return t}const Hu=typeof SharedArrayBuffer<"u"?function(t){return t&&t.buffer&&(t.buffer instanceof ArrayBuffer||t.buffer instanceof SharedArrayBuffer)}:function(t){return t&&t.buffer&&t.buffer instanceof ArrayBuffer};function oD(...n){console.error(...n)}function E1(...n){console.warn(...n)}function aD(n,t){return typeof WebGLBuffer<"u"&&t instanceof WebGLBuffer}function b1(n,t){return typeof WebGLRenderbuffer<"u"&&t instanceof WebGLRenderbuffer}function Vu(n,t){return typeof WebGLTexture<"u"&&t instanceof WebGLTexture}function cD(n,t){return typeof WebGLSampler<"u"&&t instanceof WebGLSampler}const x1=35044,fn=34962,lD=34963,uD=34660,fD=5120,AD=5121,hD=5122,dD=5123,gD=5124,pD=5125,mD=5126,B1={attribPrefix:""};function v1(n,t,e,r,i){n.bindBuffer(t,e),n.bufferData(t,r,i||x1)}function S1(n,t,e,r){if(aD(n,t))return t;e=e||fn;const i=n.createBuffer();return v1(n,e,i,t,r),i}function Q1(n){return n==="indices"}function CD(n){return n instanceof Int8Array||n instanceof Uint8Array}function yD(n){return n===Int8Array||n===Uint8Array}function wD(n){return n.length?n:n.data}const ID=/coord|texture/i,ED=/color|colour/i;function D1(n,t){let e;if(ID.test(n)?e=2:ED.test(n)?e=4:e=3,t%e>0)throw new Error(`Can not guess numComponents for attribute '${n}'. Tried ${e} but ${t} values is not evenly divisible by ${e}. You should specify it.`);return e}function bD(n,t){return n.numComponents||n.size||D1(t,wD(n).length)}function Yh(n,t){if(Hu(n))return n;if(Hu(n.data))return n.data;Array.isArray(n)&&(n={data:n});let e=n.type;return e||(Q1(t)?e=Uint16Array:e=Float32Array),new e(n.data)}function xD(n,t){const e={};return Object.keys(t).forEach(function(r){if(!Q1(r)){const i=t[r],s=i.attrib||i.name||i.attribName||B1.attribPrefix+r;if(i.value){if(!Array.isArray(i.value)&&!Hu(i.value))throw new Error("array.value is not array or typedarray");e[s]={value:i.value}}else{let o,a,l,c;if(i.buffer&&i.buffer instanceof WebGLBuffer)o=i.buffer,c=i.numComponents||i.size,a=i.type,l=i.normalize;else if(typeof i=="number"||typeof i.data=="number"){const u=i.data||i,f=i.type||Float32Array,h=u*f.BYTES_PER_ELEMENT;a=iD(f),l=i.normalize!==void 0?i.normalize:yD(f),c=i.numComponents||i.size||D1(r,u),o=n.createBuffer(),n.bindBuffer(fn,o),n.bufferData(fn,h,i.drawType||x1)}else{const u=Yh(i,r);o=S1(n,u,void 0,i.drawType),a=_h(u),l=i.normalize!==void 0?i.normalize:CD(u),c=bD(i,r)}e[s]={buffer:o,numComponents:c,type:a,normalize:l,stride:i.stride||0,offset:i.offset||0,divisor:i.divisor===void 0?void 0:i.divisor,drawType:i.drawType}}}}),n.bindBuffer(fn,null),e}function BD(n,t,e,r){e=Yh(e),r!==void 0?(n.bindBuffer(fn,t.buffer),n.bufferSubData(fn,r,e)):v1(n,fn,t.buffer,e,t.drawType)}function vD(n,t){return t===fD||t===AD?1:t===hD||t===dD?2:t===gD||t===pD||t===mD?4:0}const Jh=["position","positions","a_position"];function SD(n,t){let e,r;for(r=0;r<Jh.length&&(e=Jh[r],!(e in t||(e=B1.attribPrefix+e,e in t)));++r);r===Jh.length&&(e=Object.keys(t)[0]);const i=t[e];if(!i.buffer)return 1;n.bindBuffer(fn,i.buffer);const s=n.getBufferParameter(fn,uD);n.bindBuffer(fn,null);const o=vD(n,i.type),a=s/o,l=i.numComponents||i.size,c=a/l;if(c%1!==0)throw new Error(`numComponents ${l} not correct for length ${length}`);return c}function QD(n,t,e){const r=xD(n,t),i=Object.assign({},e||{});i.attribs=Object.assign({},e?e.attribs:{},r);const s=t.indices;if(s){const o=Yh(s,"indices");i.indices=S1(n,o,lD),i.numElements=o.length,i.elementType=_h(o)}else i.numElements||(i.numElements=SD(n,i.attribs));return i}function vs(n){return!!n.texStorage2D}const qh=(function(){const n={},t={};function e(r){const i=r.constructor.name;if(!n[i]){for(const s in r)if(typeof r[s]=="number"){const o=t[r[s]];t[r[s]]=o?`${o} | ${s}`:s}n[i]=!0}}return function(i,s){return e(i),t[s]||(typeof s=="number"?`0x${s.toString(16)}`:s)}})(),fr={textureColor:new Uint8Array([128,192,255,255]),textureOptions:{},crossOrigin:void 0},Ss=Hu,k1=(function(){let n;return function(){return n=n||(typeof document<"u"&&document.createElement?document.createElement("canvas").getContext("2d"):null),n}})(),F1=6406,An=6407,xe=6408,M1=6409,R1=6410,tc=6402,N1=34041,_u=33071,DD=9728,kD=9729,Rn=3553,Nn=34067,Ar=32879,hr=35866,Yu=34069,FD=34070,MD=34071,RD=34072,ND=34073,TD=34074,Kh=10241,jh=10240,Ju=10242,qu=10243,T1=32882,PD=33082,LD=33083,OD=33084,UD=33085,Wh=3317,P1=3314,L1=32878,O1=3316,U1=3315,G1=32877,GD=37443,zD=37441,HD=37440,VD=33321,_D=36756,YD=33325,JD=33326,qD=33330,KD=33329,jD=33338,WD=33337,XD=33340,ZD=33339,$D=33323,e4=36757,t4=33327,n4=33328,r4=33336,i4=33335,s4=33332,o4=33331,a4=33334,c4=33333,l4=32849,u4=35905,f4=36194,A4=36758,h4=35898,d4=35901,g4=34843,p4=34837,m4=36221,C4=36239,y4=36215,w4=36233,I4=36209,E4=36227,b4=32856,x4=35907,B4=36759,v4=32855,S4=32854,Q4=32857,D4=34842,k4=34836,F4=36220,M4=36238,R4=36975,N4=36214,T4=36232,P4=36226,L4=36208,O4=33189,U4=33190,G4=36012,z4=36013,H4=35056,dr=5120,Be=5121,Ku=5122,Qs=5123,ju=5124,li=5125,rt=5126,z1=32819,H1=32820,V1=33635,jt=5131,nc=36193,Xh=33640,V4=35899,_4=35902,Y4=36269,J4=34042,Wu=33319,Ds=33320,Xu=6403,ks=36244,Fs=36248,ui=36249;let Zh;function Zu(n){if(!Zh){const t={};t[F1]={textureFormat:F1,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Be,jt,nc,rt]},t[M1]={textureFormat:M1,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1,2,2,4],type:[Be,jt,nc,rt]},t[R1]={textureFormat:R1,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2,4,4,8],type:[Be,jt,nc,rt]},t[An]={textureFormat:An,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,6,6,12,2],type:[Be,jt,nc,rt,V1]},t[xe]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,8,8,16,2,2],type:[Be,jt,nc,rt,z1,H1]},t[tc]={textureFormat:tc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[li,Qs]},t[VD]={textureFormat:Xu,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[1],type:[Be]},t[_D]={textureFormat:Xu,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[1],type:[dr]},t[YD]={textureFormat:Xu,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4,2],type:[rt,jt]},t[JD]={textureFormat:Xu,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[4],type:[rt]},t[qD]={textureFormat:ks,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[Be]},t[KD]={textureFormat:ks,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[1],type:[dr]},t[s4]={textureFormat:ks,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Qs]},t[o4]={textureFormat:ks,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Ku]},t[a4]={textureFormat:ks,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[li]},t[c4]={textureFormat:ks,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[ju]},t[$D]={textureFormat:Wu,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[2],type:[Be]},t[e4]={textureFormat:Wu,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[2],type:[dr]},t[t4]={textureFormat:Wu,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[8,4],type:[rt,jt]},t[n4]={textureFormat:Wu,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[8],type:[rt]},t[r4]={textureFormat:Ds,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[Be]},t[i4]={textureFormat:Ds,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2],type:[dr]},t[jD]={textureFormat:Ds,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Qs]},t[WD]={textureFormat:Ds,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Ku]},t[XD]={textureFormat:Ds,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[li]},t[ZD]={textureFormat:Ds,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[ju]},t[l4]={textureFormat:An,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3],type:[Be]},t[u4]={textureFormat:An,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[Be]},t[f4]={textureFormat:An,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[3,2],type:[Be,V1]},t[A4]={textureFormat:An,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[3],type:[dr]},t[h4]={textureFormat:An,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[rt,jt,V4]},t[d4]={textureFormat:An,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6,4],type:[rt,jt,_4]},t[g4]={textureFormat:An,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[12,6],type:[rt,jt]},t[p4]={textureFormat:An,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[rt]},t[m4]={textureFormat:Fs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[Be]},t[C4]={textureFormat:Fs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[3],type:[dr]},t[y4]={textureFormat:Fs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Qs]},t[w4]={textureFormat:Fs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[6],type:[Ku]},t[I4]={textureFormat:Fs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[li]},t[E4]={textureFormat:Fs,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[12],type:[ju]},t[b4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Be]},t[x4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Be]},t[B4]={textureFormat:xe,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[4],type:[dr]},t[v4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2,4],type:[Be,H1,Xh]},t[S4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4,2],type:[Be,z1]},t[Q4]={textureFormat:xe,colorRenderable:!0,textureFilterable:!0,bytesPerElement:[4],type:[Xh]},t[D4]={textureFormat:xe,colorRenderable:!1,textureFilterable:!0,bytesPerElement:[16,8],type:[rt,jt]},t[k4]={textureFormat:xe,colorRenderable:!1,textureFilterable:!1,bytesPerElement:[16],type:[rt]},t[F4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Be]},t[M4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[dr]},t[R4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Xh]},t[N4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Qs]},t[T4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[8],type:[Ku]},t[P4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[ju]},t[L4]={textureFormat:ui,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[16],type:[li]},t[O4]={textureFormat:tc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[2,4],type:[Qs,li]},t[U4]={textureFormat:tc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[li]},t[G4]={textureFormat:tc,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[rt]},t[H4]={textureFormat:N1,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[J4]},t[z4]={textureFormat:N1,colorRenderable:!0,textureFilterable:!1,bytesPerElement:[4],type:[Y4]},Object.keys(t).forEach(function(e){const r=t[e];r.bytesPerElementMap={},r.bytesPerElement.forEach(function(i,s){const o=r.type[s];r.bytesPerElementMap[o]=i})}),Zh=t}return Zh[n]}function q4(n,t){const e=Zu(n);if(!e)throw"unknown internal format";const r=e.bytesPerElementMap[t];if(r===void 0)throw"unknown internal format";return r}function Ms(n){const t=Zu(n);if(!t)throw"unknown internal format";return{format:t.textureFormat,type:t.type[0]}}function _1(n){return(n&n-1)===0}function K4(n,t,e,r){if(!vs(n))return _1(t)&&_1(e);const i=Zu(r);if(!i)throw"unknown internal format";return i.colorRenderable&&i.textureFilterable}function j4(n){const t=Zu(n);if(!t)throw"unknown internal format";return t.textureFilterable}function Y1(n,t,e){return Ss(t)?_h(t):e||Be}function $u(n,t,e,r,i){if(i%1!==0)throw"can't guess dimensions";if(!e&&!r){const s=Math.sqrt(i/(t===Nn?6:1));s%1===0?(e=s,r=s):(e=i,r=1)}else if(r){if(!e&&(e=i/r,e%1))throw"can't guess dimensions"}else if(r=i/e,r%1)throw"can't guess dimensions";return{width:e,height:r}}function Rs(n,t){t.colorspaceConversion!==void 0&&n.pixelStorei(GD,t.colorspaceConversion),t.premultiplyAlpha!==void 0&&n.pixelStorei(zD,t.premultiplyAlpha),t.flipY!==void 0&&n.pixelStorei(HD,t.flipY)}function J1(n){n.pixelStorei(Wh,4),vs(n)&&(n.pixelStorei(P1,0),n.pixelStorei(L1,0),n.pixelStorei(O1,0),n.pixelStorei(U1,0),n.pixelStorei(G1,0))}function W4(n,t,e,r){r.minMag&&(e.call(n,t,Kh,r.minMag),e.call(n,t,jh,r.minMag)),r.min&&e.call(n,t,Kh,r.min),r.mag&&e.call(n,t,jh,r.mag),r.wrap&&(e.call(n,t,Ju,r.wrap),e.call(n,t,qu,r.wrap),(t===Ar||cD(n,t))&&e.call(n,t,T1,r.wrap)),r.wrapR&&e.call(n,t,T1,r.wrapR),r.wrapS&&e.call(n,t,Ju,r.wrapS),r.wrapT&&e.call(n,t,qu,r.wrapT),r.minLod&&e.call(n,t,PD,r.minLod),r.maxLod&&e.call(n,t,LD,r.maxLod),r.baseLevel&&e.call(n,t,OD,r.baseLevel),r.maxLevel&&e.call(n,t,UD,r.maxLevel)}function q1(n,t,e){const r=e.target||Rn;n.bindTexture(r,t),W4(n,r,n.texParameteri,e)}function X4(n){return n=n||fr.textureColor,Ss(n)?n:new Uint8Array([n[0]*255,n[1]*255,n[2]*255,n[3]*255])}function $h(n,t,e,r,i,s){e=e||fr.textureOptions,s=s||xe;const o=e.target||Rn;if(r=r||e.width,i=i||e.height,n.bindTexture(o,t),K4(n,r,i,s))n.generateMipmap(o);else{const a=j4(s)?kD:DD;n.texParameteri(o,Kh,a),n.texParameteri(o,jh,a),n.texParameteri(o,Ju,_u),n.texParameteri(o,qu,_u)}}function rc(n){return n.auto===!0||n.auto===void 0&&n.level===void 0}function ed(n,t){return t=t||{},t.cubeFaceOrder||[Yu,FD,MD,RD,ND,TD]}function td(n,t){const r=ed(n,t).map(function(i,s){return{face:i,ndx:s}});return r.sort(function(i,s){return i.face-s.face}),r}function K1(n,t,e,r){r=r||fr.textureOptions;const i=r.target||Rn,s=r.level||0;let o=e.width,a=e.height;const l=r.internalFormat||r.format||xe,c=Ms(l),u=r.format||c.format,f=r.type||c.type;if(Rs(n,r),n.bindTexture(i,t),i===Nn){const h=e.width,A=e.height;let d,p;if(h/6===A)d=A,p=[0,0,1,0,2,0,3,0,4,0,5,0];else if(A/6===h)d=h,p=[0,0,0,1,0,2,0,3,0,4,0,5];else if(h/3===A/2)d=h/3,p=[0,0,1,0,2,0,0,1,1,1,2,1];else if(h/2===A/3)d=h/2,p=[0,0,1,0,0,1,1,1,0,2,1,2];else throw"can't figure out cube map from element: "+(e.src?e.src:e.nodeName);const C=k1();C?(C.canvas.width=d,C.canvas.height=d,o=d,a=d,td(n,r).forEach(function(m){const w=p[m.ndx*2+0]*d,b=p[m.ndx*2+1]*d;C.drawImage(e,w,b,d,d,0,0,d,d),n.texImage2D(m.face,s,l,u,f,C.canvas)}),C.canvas.width=1,C.canvas.height=1):typeof createImageBitmap<"u"&&(o=d,a=d,td(n,r).forEach(function(m){const w=p[m.ndx*2+0]*d,b=p[m.ndx*2+1]*d;n.texImage2D(m.face,s,l,d,d,0,u,f,null),createImageBitmap(e,w,b,d,d,{premultiplyAlpha:"none",colorSpaceConversion:"none"}).then(function(y){Rs(n,r),n.bindTexture(i,t),n.texImage2D(m.face,s,l,u,f,y),rc(r)&&$h(n,t,r,o,a,l)})}))}else if(i===Ar||i===hr){const h=Math.min(e.width,e.height),A=Math.max(e.width,e.height),d=A/h;if(d%1!==0)throw"can not compute 3D dimensions of element";const p=e.width===A?1:0,C=e.height===A?1:0;n.pixelStorei(Wh,1),n.pixelStorei(P1,e.width),n.pixelStorei(L1,0),n.pixelStorei(G1,0),n.texImage3D(i,s,l,h,h,h,0,u,f,null);for(let m=0;m<d;++m){const w=m*h*p,b=m*h*C;n.pixelStorei(O1,w),n.pixelStorei(U1,b),n.texSubImage3D(i,s,0,0,m,h,h,1,u,f,e)}J1(n)}else n.texImage2D(i,s,l,u,f,e);rc(r)&&$h(n,t,r,o,a,l),q1(n,t,r)}function ic(){}function Z4(n){if(typeof document<"u"){const t=document.createElement("a");return t.href=n,t.hostname===location.hostname&&t.port===location.port&&t.protocol===location.protocol}else{const t=new URL(location.href).origin;return new URL(n,location.href).origin===t}}function $4(n,t){return t===void 0&&!Z4(n)?"anonymous":t}function ek(n,t,e){e=e||ic;let r;if(t=t!==void 0?t:fr.crossOrigin,t=$4(n,t),typeof Image<"u"){r=new Image,t!==void 0&&(r.crossOrigin=t);const i=function(){r.removeEventListener("error",s),r.removeEventListener("load",o),r=null},s=function(){const l="couldn't load image: "+n;oD(l),e(l,r),i()},o=function(){e(null,r),i()};return r.addEventListener("error",s),r.addEventListener("load",o),r.src=n,r}else if(typeof ImageBitmap<"u"){let i,s;const o=function(){e(i,s)},a={};t&&(a.mode="cors"),fetch(n,a).then(function(l){if(!l.ok)throw l;return l.blob()}).then(function(l){return createImageBitmap(l,{premultiplyAlpha:"none",colorSpaceConversion:"none"})}).then(function(l){s=l,setTimeout(o)}).catch(function(l){i=l,setTimeout(o)}),r=null}return r}function j1(n){return typeof ImageBitmap<"u"&&n instanceof ImageBitmap||typeof ImageData<"u"&&n instanceof ImageData||typeof HTMLElement<"u"&&n instanceof HTMLElement}function nd(n,t,e){return j1(n)?(setTimeout(function(){e(null,n)}),n):ek(n,t,e)}function rd(n,t,e){e=e||fr.textureOptions;const r=e.target||Rn;if(n.bindTexture(r,t),e.color===!1)return;const i=X4(e.color);if(r===Nn)for(let s=0;s<6;++s)n.texImage2D(Yu+s,0,xe,1,1,0,xe,Be,i);else r===Ar||r===hr?n.texImage3D(r,0,xe,1,1,1,0,xe,Be,i):n.texImage2D(r,0,xe,1,1,0,xe,Be,i)}function tk(n,t,e,r){return r=r||ic,e=e||fr.textureOptions,rd(n,t,e),e=Object.assign({},e),nd(e.src,e.crossOrigin,function(s,o){s?r(s,t,o):(K1(n,t,o,e),r(null,t,o))})}function nk(n,t,e,r){r=r||ic;const i=e.src;if(i.length!==6)throw"there must be 6 urls for a cubemap";const s=e.level||0,o=e.internalFormat||e.format||xe,a=Ms(o),l=e.format||a.format,c=e.type||Be,u=e.target||Rn;if(u!==Nn)throw"target must be TEXTURE_CUBE_MAP";rd(n,t,e),e=Object.assign({},e);let f=6;const h=[],A=ed(n,e);let d;function p(C){return function(m,w){--f,m?h.push(m):w.width!==w.height?h.push("cubemap face img is not a square: "+w.src):(Rs(n,e),n.bindTexture(u,t),f===5?ed().forEach(function(b){n.texImage2D(b,s,o,l,c,w)}):n.texImage2D(C,s,o,l,c,w),rc(e)&&n.generateMipmap(u)),f===0&&r(h.length?h:void 0,t,d)}}d=i.map(function(C,m){return nd(C,e.crossOrigin,p(A[m]))})}function rk(n,t,e,r){r=r||ic;const i=e.src,s=e.internalFormat||e.format||xe,o=Ms(s),a=e.format||o.format,l=e.type||Be,c=e.target||hr;if(c!==Ar&&c!==hr)throw"target must be TEXTURE_3D or TEXTURE_2D_ARRAY";rd(n,t,e),e=Object.assign({},e);let u=i.length;const f=[];let h;const A=e.level||0;let d=e.width,p=e.height;const C=i.length;let m=!0;function w(b){return function(y,x){if(--u,y)f.push(y);else{if(Rs(n,e),n.bindTexture(c,t),m){m=!1,d=e.width||x.width,p=e.height||x.height,n.texImage3D(c,A,s,d,p,C,0,a,l,null);for(let B=0;B<C;++B)n.texSubImage3D(c,A,0,0,B,d,p,1,a,l,x)}else{let B=x,E;(x.width!==d||x.height!==p)&&(E=k1(),B=E.canvas,E.canvas.width=d,E.canvas.height=p,E.drawImage(x,0,0,d,p)),n.texSubImage3D(c,A,0,0,b,d,p,1,a,l,B),E&&B===E.canvas&&(E.canvas.width=0,E.canvas.height=0)}rc(e)&&n.generateMipmap(c)}u===0&&r(f.length?f:void 0,t,h)}}h=i.map(function(b,y){return nd(b,e.crossOrigin,w(y))})}function W1(n,t,e,r){r=r||fr.textureOptions;const i=r.target||Rn;n.bindTexture(i,t);let s=r.width,o=r.height,a=r.depth;const l=r.level||0,c=r.internalFormat||r.format||xe,u=Ms(c),f=r.format||u.format,h=r.type||Y1(n,e,u.type);if(Ss(e))e instanceof Uint8ClampedArray&&(e=new Uint8Array(e.buffer));else{const C=sD(h);e=new C(e)}const A=q4(c,h),d=e.byteLength/A;if(d%1)throw"length wrong size for format: "+qh(n,f);let p;if(i===Ar||i===hr)if(!s&&!o&&!a){const C=Math.cbrt(d);if(C%1!==0)throw"can't guess cube size of array of numElements: "+d;s=C,o=C,a=C}else s&&(!o||!a)?(p=$u(n,i,o,a,d/s),o=p.width,a=p.height):o&&(!s||!a)?(p=$u(n,i,s,a,d/o),s=p.width,a=p.height):(p=$u(n,i,s,o,d/a),s=p.width,o=p.height);else p=$u(n,i,s,o,d),s=p.width,o=p.height;if(J1(n),n.pixelStorei(Wh,r.unpackAlignment||1),Rs(n,r),i===Nn){const C=A/e.BYTES_PER_ELEMENT,m=d/6*C;td(n,r).forEach(w=>{const b=m*w.ndx,y=e.subarray(b,b+m);n.texImage2D(w.face,l,c,s,o,0,f,h,y)})}else i===Ar||i===hr?n.texImage3D(i,l,c,s,o,a,0,f,h,e):n.texImage2D(i,l,c,s,o,0,f,h,e);return{width:s,height:o,depth:a,type:h}}function ik(n,t,e){const r=e.target||Rn;n.bindTexture(r,t);const i=e.level||0,s=e.internalFormat||e.format||xe,o=Ms(s),a=e.format||o.format,l=e.type||o.type;if(Rs(n,e),r===Nn)for(let c=0;c<6;++c)n.texImage2D(Yu+c,i,s,e.width,e.height,0,a,l,null);else r===Ar||r===hr?n.texImage3D(r,i,s,e.width,e.height,e.depth,0,a,l,null):n.texImage2D(r,i,s,e.width,e.height,0,a,l,null)}function sc(n,t,e){e=e||ic,t=t||fr.textureOptions;const r=n.createTexture(),i=t.target||Rn;let s=t.width||1,o=t.height||1;const a=t.internalFormat||xe;n.bindTexture(i,r),i===Nn&&(n.texParameteri(i,Ju,_u),n.texParameteri(i,qu,_u));let l=t.src;if(l)if(typeof l=="function"&&(l=l(n,t)),typeof l=="string")tk(n,r,t,e);else if(Ss(l)||Array.isArray(l)&&(typeof l[0]=="number"||Array.isArray(l[0])||Ss(l[0]))){const c=W1(n,r,l,t);s=c.width,o=c.height}else Array.isArray(l)&&(typeof l[0]=="string"||j1(l[0]))?i===Nn?nk(n,r,t,e):rk(n,r,t,e):(K1(n,r,l,t),s=l.width,o=l.height);else ik(n,r,t);return rc(t)&&$h(n,r,t,s,o,a),q1(n,r,t),r}function sk(n,t,e,r,i,s){r=r||e.width,i=i||e.height,s=s||e.depth;const o=e.target||Rn;n.bindTexture(o,t);const a=e.level||0,l=e.internalFormat||e.format||xe,c=Ms(l),u=e.format||c.format;let f;const h=e.src;if(h&&(Ss(h)||Array.isArray(h)&&typeof h[0]=="number")?f=e.type||Y1(n,h,c.type):f=e.type||c.type,o===Nn)for(let A=0;A<6;++A)n.texImage2D(Yu+A,a,l,r,i,0,u,f,null);else o===Ar||o===hr?n.texImage3D(o,a,l,r,i,s,0,u,f,null):n.texImage2D(o,a,l,r,i,0,u,f,null)}const ok=E1,ef=33984,ak=35048,tf=34962,ck=34963,id=35345,X1=35718,lk=35721,uk=35971,fk=35382,Ak=35396,hk=35398,dk=35392,gk=35395,nf=5126,Z1=35664,$1=35665,eC=35666,sd=5124,tC=35667,nC=35668,rC=35669,iC=35670,sC=35671,oC=35672,aC=35673,cC=35674,lC=35675,uC=35676,pk=35678,mk=35680,Ck=35679,yk=35682,wk=35685,Ik=35686,Ek=35687,bk=35688,xk=35689,Bk=35690,vk=36289,Sk=36292,Qk=36293,od=5125,fC=36294,AC=36295,hC=36296,Dk=36298,kk=36299,Fk=36300,Mk=36303,Rk=36306,Nk=36307,Tk=36308,Pk=36311,rf=3553,sf=34067,ad=32879,of=35866,$={};function dC(n,t){return $[t].bindPoint}function Lk(n,t){return function(e){n.uniform1f(t,e)}}function Ok(n,t){return function(e){n.uniform1fv(t,e)}}function Uk(n,t){return function(e){n.uniform2fv(t,e)}}function Gk(n,t){return function(e){n.uniform3fv(t,e)}}function zk(n,t){return function(e){n.uniform4fv(t,e)}}function gC(n,t){return function(e){n.uniform1i(t,e)}}function pC(n,t){return function(e){n.uniform1iv(t,e)}}function mC(n,t){return function(e){n.uniform2iv(t,e)}}function CC(n,t){return function(e){n.uniform3iv(t,e)}}function yC(n,t){return function(e){n.uniform4iv(t,e)}}function Hk(n,t){return function(e){n.uniform1ui(t,e)}}function Vk(n,t){return function(e){n.uniform1uiv(t,e)}}function _k(n,t){return function(e){n.uniform2uiv(t,e)}}function Yk(n,t){return function(e){n.uniform3uiv(t,e)}}function Jk(n,t){return function(e){n.uniform4uiv(t,e)}}function qk(n,t){return function(e){n.uniformMatrix2fv(t,!1,e)}}function Kk(n,t){return function(e){n.uniformMatrix3fv(t,!1,e)}}function jk(n,t){return function(e){n.uniformMatrix4fv(t,!1,e)}}function Wk(n,t){return function(e){n.uniformMatrix2x3fv(t,!1,e)}}function Xk(n,t){return function(e){n.uniformMatrix3x2fv(t,!1,e)}}function Zk(n,t){return function(e){n.uniformMatrix2x4fv(t,!1,e)}}function $k(n,t){return function(e){n.uniformMatrix4x2fv(t,!1,e)}}function e8(n,t){return function(e){n.uniformMatrix3x4fv(t,!1,e)}}function t8(n,t){return function(e){n.uniformMatrix4x3fv(t,!1,e)}}function At(n,t,e,r){const i=dC(n,t);return vs(n)?function(s){let o,a;Vu(n,s)?(o=s,a=null):(o=s.texture,a=s.sampler),n.uniform1i(r,e),n.activeTexture(ef+e),n.bindTexture(i,o),n.bindSampler(e,a)}:function(s){n.uniform1i(r,e),n.activeTexture(ef+e),n.bindTexture(i,s)}}function ht(n,t,e,r,i){const s=dC(n,t),o=new Int32Array(i);for(let a=0;a<i;++a)o[a]=e+a;return vs(n)?function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(ef+o[c]);let u,f;Vu(n,l)?(u=l,f=null):(u=l.texture,f=l.sampler),n.bindSampler(e,f),n.bindTexture(s,u)})}:function(a){n.uniform1iv(r,o),a.forEach(function(l,c){n.activeTexture(ef+o[c]),n.bindTexture(s,l)})}}$[nf]={Type:Float32Array,size:4,setter:Lk,arraySetter:Ok},$[Z1]={Type:Float32Array,size:8,setter:Uk,cols:2},$[$1]={Type:Float32Array,size:12,setter:Gk,cols:3},$[eC]={Type:Float32Array,size:16,setter:zk,cols:4},$[sd]={Type:Int32Array,size:4,setter:gC,arraySetter:pC},$[tC]={Type:Int32Array,size:8,setter:mC,cols:2},$[nC]={Type:Int32Array,size:12,setter:CC,cols:3},$[rC]={Type:Int32Array,size:16,setter:yC,cols:4},$[od]={Type:Uint32Array,size:4,setter:Hk,arraySetter:Vk},$[fC]={Type:Uint32Array,size:8,setter:_k,cols:2},$[AC]={Type:Uint32Array,size:12,setter:Yk,cols:3},$[hC]={Type:Uint32Array,size:16,setter:Jk,cols:4},$[iC]={Type:Uint32Array,size:4,setter:gC,arraySetter:pC},$[sC]={Type:Uint32Array,size:8,setter:mC,cols:2},$[oC]={Type:Uint32Array,size:12,setter:CC,cols:3},$[aC]={Type:Uint32Array,size:16,setter:yC,cols:4},$[cC]={Type:Float32Array,size:32,setter:qk,rows:2,cols:2},$[lC]={Type:Float32Array,size:48,setter:Kk,rows:3,cols:3},$[uC]={Type:Float32Array,size:64,setter:jk,rows:4,cols:4},$[wk]={Type:Float32Array,size:32,setter:Wk,rows:2,cols:3},$[Ik]={Type:Float32Array,size:32,setter:Zk,rows:2,cols:4},$[Ek]={Type:Float32Array,size:48,setter:Xk,rows:3,cols:2},$[bk]={Type:Float32Array,size:48,setter:e8,rows:3,cols:4},$[xk]={Type:Float32Array,size:64,setter:$k,rows:4,cols:2},$[Bk]={Type:Float32Array,size:64,setter:t8,rows:4,cols:3},$[pk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:rf},$[mk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:sf},$[Ck]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:ad},$[yk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:rf},$[vk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:of},$[Sk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:of},$[Qk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:sf},$[Dk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:rf},$[kk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:ad},$[Fk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:sf},$[Mk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:of},$[Rk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:rf},$[Nk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:ad},$[Tk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:sf},$[Pk]={Type:null,size:0,setter:At,arraySetter:ht,bindPoint:of};function af(n,t){return function(e){if(e.value)switch(n.disableVertexAttribArray(t),e.value.length){case 4:n.vertexAttrib4fv(t,e.value);break;case 3:n.vertexAttrib3fv(t,e.value);break;case 2:n.vertexAttrib2fv(t,e.value);break;case 1:n.vertexAttrib1fv(t,e.value);break;default:throw new Error("the length of a float constant value must be between 1 and 4!")}else n.bindBuffer(tf,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribPointer(t,e.numComponents||e.size,e.type||nf,e.normalize||!1,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function gr(n,t){return function(e){if(e.value)if(n.disableVertexAttribArray(t),e.value.length===4)n.vertexAttrib4iv(t,e.value);else throw new Error("The length of an integer constant value must be 4!");else n.bindBuffer(tf,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribIPointer(t,e.numComponents||e.size,e.type||sd,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function cf(n,t){return function(e){if(e.value)if(n.disableVertexAttribArray(t),e.value.length===4)n.vertexAttrib4uiv(t,e.value);else throw new Error("The length of an unsigned integer constant value must be 4!");else n.bindBuffer(tf,e.buffer),n.enableVertexAttribArray(t),n.vertexAttribIPointer(t,e.numComponents||e.size,e.type||od,e.stride||0,e.offset||0),e.divisor!==void 0&&n.vertexAttribDivisor(t,e.divisor)}}function cd(n,t,e){const r=e.size,i=e.count;return function(s){n.bindBuffer(tf,s.buffer);const o=s.size||s.numComponents||r,a=o/i,l=s.type||nf,u=$[l].size*o,f=s.normalize||!1,h=s.offset||0,A=u/i;for(let d=0;d<i;++d)n.enableVertexAttribArray(t+d),n.vertexAttribPointer(t+d,a,l,f,u,h+A*d),s.divisor!==void 0&&n.vertexAttribDivisor(t+d,s.divisor)}}const Ne={};Ne[nf]={size:4,setter:af},Ne[Z1]={size:8,setter:af},Ne[$1]={size:12,setter:af},Ne[eC]={size:16,setter:af},Ne[sd]={size:4,setter:gr},Ne[tC]={size:8,setter:gr},Ne[nC]={size:12,setter:gr},Ne[rC]={size:16,setter:gr},Ne[od]={size:4,setter:cf},Ne[fC]={size:8,setter:cf},Ne[AC]={size:12,setter:cf},Ne[hC]={size:16,setter:cf},Ne[iC]={size:4,setter:gr},Ne[sC]={size:8,setter:gr},Ne[oC]={size:12,setter:gr},Ne[aC]={size:16,setter:gr},Ne[cC]={size:4,setter:cd,count:2},Ne[lC]={size:9,setter:cd,count:3},Ne[uC]={size:16,setter:cd,count:4};function wC(n){const t=n.name;return t.startsWith("gl_")||t.startsWith("webgl_")}const n8=/(\.|\[|]|\w+)/g,r8=n=>n>="0"&&n<="9";function IC(n,t,e,r){const i=n.split(n8).filter(a=>a!=="");let s=0,o="";for(;;){const a=i[s++];o+=a;const l=r8(a[0]),c=l?parseInt(a):a;if(l&&(o+=i[s++]),s===i.length){e[c]=t;break}else{const f=i[s++],h=f==="[",A=e[c]||(h?[]:{});e[c]=A,e=A,r[o]=r[o]||(function(d){return function(p){vC(d,p)}})(A),o+=f}}}function i8(n,t){let e=0;function r(a,l,c){const u=l.name.endsWith("[0]"),f=l.type,h=$[f];if(!h)throw new Error(`unknown type: 0x${f.toString(16)}`);let A;if(h.bindPoint){const d=e;e+=l.size,u?A=h.arraySetter(n,f,d,c,l.size):A=h.setter(n,f,d,c,l.size)}else h.arraySetter&&u?A=h.arraySetter(n,c):A=h.setter(n,c);return A.location=c,A}const i={},s={},o=n.getProgramParameter(t,X1);for(let a=0;a<o;++a){const l=n.getActiveUniform(t,a);if(wC(l))continue;let c=l.name;c.endsWith("[0]")&&(c=c.substr(0,c.length-3));const u=n.getUniformLocation(t,l.name);if(u){const f=r(t,l,u);i[c]=f,IC(c,f,s,i)}}return i}function s8(n,t){const e={},r=n.getProgramParameter(t,uk);for(let i=0;i<r;++i){const s=n.getTransformFeedbackVarying(t,i);e[s.name]={index:i,type:s.type,size:s.size}}return e}function o8(n,t){const e=n.getProgramParameter(t,X1),r=[],i=[];for(let a=0;a<e;++a){i.push(a),r.push({});const l=n.getActiveUniform(t,a);r[a].name=l.name}[["UNIFORM_TYPE","type"],["UNIFORM_SIZE","size"],["UNIFORM_BLOCK_INDEX","blockNdx"],["UNIFORM_OFFSET","offset"]].forEach(function(a){const l=a[0],c=a[1];n.getActiveUniforms(t,i,n[l]).forEach(function(u,f){r[f][c]=u})});const s={},o=n.getProgramParameter(t,fk);for(let a=0;a<o;++a){const l=n.getActiveUniformBlockName(t,a),c={index:n.getUniformBlockIndex(t,l),usedByVertexShader:n.getActiveUniformBlockParameter(t,a,Ak),usedByFragmentShader:n.getActiveUniformBlockParameter(t,a,hk),size:n.getActiveUniformBlockParameter(t,a,dk),uniformIndices:n.getActiveUniformBlockParameter(t,a,gk)};c.used=c.usedByVertexShader||c.usedByFragmentShader,s[l]=c}return{blockSpecs:s,uniformData:r}}const EC=/\[\d+\]\.$/,a8=(n,t)=>((n+(t-1))/t|0)*t;function c8(n,t,e,r){if(t||e){r=r||1;const s=n.length/4;return function(o){let a=0,l=0;for(let c=0;c<s;++c){for(let u=0;u<r;++u)n[a++]=o[l++];a+=4-r}}}else return function(i){i.length?n.set(i):n[0]=i}}function l8(n,t,e,r){const i=e.blockSpecs,s=e.uniformData,o=i[r];if(!o)return ok("no uniform block object named:",r),{name:r,uniforms:{}};const a=new ArrayBuffer(o.size),l=n.createBuffer(),c=o.index;n.bindBuffer(id,l),n.uniformBlockBinding(t,o.index,c);let u=r+".";EC.test(u)&&(u=u.replace(EC,"."));const f={},h={},A={};return o.uniformIndices.forEach(function(d){const p=s[d];let C=p.name;C.startsWith(u)&&(C=C.substr(u.length));const m=C.endsWith("[0]");m&&(C=C.substr(0,C.length-3));const w=$[p.type],b=w.Type,y=m?a8(w.size,16)*p.size:w.size*p.size,x=new b(a,p.offset,y/b.BYTES_PER_ELEMENT);f[C]=x;const B=c8(x,m,w.rows,w.cols);h[C]=B,IC(C,B,A,h)}),{name:r,array:a,asFloat:new Float32Array(a),buffer:l,uniforms:f,setters:h}}function bC(n,t,e){return l8(n,t.program,t.uniformBlockSpec,e)}function xC(n,t,e){const i=(t.uniformBlockSpec||t).blockSpecs[e.name];if(i){const s=i.index;return n.bindBufferRange(id,s,e.buffer,e.offset||0,e.array.byteLength),!0}return!1}function BC(n,t,e){xC(n,t,e)&&n.bufferData(id,e.array,ak)}function oc(n,t){const e=n.setters;for(const r in t){const i=e[r];if(i){const s=t[r];i(s)}}}function vC(n,t){for(const e in t){const r=n[e];typeof r=="function"?r(t[e]):vC(n[e],t[e])}}function fi(n,...t){const e=n.uniformSetters||n,r=t.length;for(let i=0;i<r;++i){const s=t[i];if(Array.isArray(s)){const o=s.length;for(let a=0;a<o;++a)fi(e,s[a])}else for(const o in s){const a=e[o];a&&a(s[o])}}}function u8(n,t){const e={},r=n.getProgramParameter(t,lk);for(let i=0;i<r;++i){const s=n.getActiveAttrib(t,i);if(wC(s))continue;const o=n.getAttribLocation(t,s.name),a=Ne[s.type],l=a.setter(n,o,a);l.location=o,e[s.name]=l}return e}function f8(n,t){for(const e in t){const r=n[e];r&&r(t[e])}}function Ai(n,t,e){e.vertexArrayObject?n.bindVertexArray(e.vertexArrayObject):(f8(t.attribSetters||t,e.attribs),e.indices&&n.bindBuffer(ck,e.indices))}function A8(n,t){const e=i8(n,t),r=u8(n,t),i={program:t,uniformSetters:e,attribSetters:r};return vs(n)&&(i.uniformBlockSpec=o8(n,t),i.transformFeedbackInfo=s8(n,t)),i}const h8=4,SC=5123;function lf(n,t,e,r,i,s){e=e===void 0?h8:e;const o=t.indices,a=t.elementType,l=r===void 0?t.numElements:r;i=i===void 0?0:i,a||o?s!==void 0?n.drawElementsInstanced(e,l,a===void 0?SC:t.elementType,i,s):n.drawElements(e,l,a===void 0?SC:t.elementType,i):s!==void 0?n.drawArraysInstanced(e,i,l,s):n.drawArrays(e,i,l)}const d8=36160,hi=36161,g8=3553,p8=5121,m8=6402,C8=6408,y8=33190,w8=36012,I8=35056,E8=36013,b8=32854,x8=32855,B8=36194,QC=33189,DC=6401,kC=36168,ld=34041,ud=36064,uf=36096,FC=36128,fd=33306,Ad=33071,hd=9729,MC=[{format:C8,type:p8,min:hd,wrap:Ad},{format:ld}],Wt={};Wt[ld]=fd,Wt[DC]=FC,Wt[kC]=FC,Wt[m8]=uf,Wt[QC]=uf,Wt[y8]=uf,Wt[w8]=uf,Wt[I8]=fd,Wt[E8]=fd;function v8(n,t){return Wt[n]||Wt[t]}const pr={};pr[b8]=!0,pr[x8]=!0,pr[B8]=!0,pr[ld]=!0,pr[QC]=!0,pr[DC]=!0,pr[kC]=!0;function S8(n){return pr[n]}const Q8=32;function D8(n){return n>=ud&&n<ud+Q8}function RC(n,t,e,r){const i=d8,s=n.createFramebuffer();n.bindFramebuffer(i,s),e=e||n.drawingBufferWidth,r=r||n.drawingBufferHeight,t=t||MC;const o=[],a={framebuffer:s,attachments:[],width:e,height:r};return t.forEach(function(l,c){let u=l.attachment;const f=l.samples,h=l.format;let A=l.attachmentPoint||v8(h,l.internalFormat);if(A||(A=ud+c),D8(A)&&o.push(A),!u)if(f!==void 0||S8(h))u=n.createRenderbuffer(),n.bindRenderbuffer(hi,u),f>1?n.renderbufferStorageMultisample(hi,f,h,e,r):n.renderbufferStorage(hi,h,e,r);else{const d=Object.assign({},l);d.width=e,d.height=r,d.auto===void 0&&(d.auto=!1,d.min=d.min||d.minMag||hd,d.mag=d.mag||d.minMag||hd,d.wrapS=d.wrapS||d.wrap||Ad,d.wrapT=d.wrapT||d.wrap||Ad),u=sc(n,d)}if(b1(n,u))n.framebufferRenderbuffer(i,A,hi,u);else if(Vu(n,u))l.layer!==void 0?n.framebufferTextureLayer(i,A,u,l.level||0,l.layer):n.framebufferTexture2D(i,A,l.target||g8,u,l.level||0);else throw new Error("unknown attachment type");a.attachments.push(u)}),n.drawBuffers&&n.drawBuffers(o),a}function k8(n,t,e,r,i){r=r||n.drawingBufferWidth,i=i||n.drawingBufferHeight,t.width=r,t.height=i,e=e||MC,e.forEach(function(s,o){const a=t.attachments[o],l=s.format,c=s.samples;if(c!==void 0||b1(n,a))n.bindRenderbuffer(hi,a),c>1?n.renderbufferStorageMultisample(hi,c,l,r,i):n.renderbufferStorage(hi,l,r,i);else if(Vu(n,a))sk(n,a,s,r,i);else throw new Error("unknown attachment type")})}function F8(n,t,e){const r=n.createVertexArray();return n.bindVertexArray(r),t.length||(t=[t]),t.forEach(function(i){Ai(n,i,e)}),n.bindVertexArray(null),{numElements:e.numElements,elementType:e.elementType,vertexArrayObject:r}}const M8=/^(.*?)_/;function R8(n,t){qh(n,0);const e=n.getExtension(t);if(e){const r={},i=M8.exec(t)[1],s="_"+i;for(const o in e){const a=e[o],l=typeof a=="function",c=l?i:s;let u=o;o.endsWith(c)&&(u=o.substring(0,o.length-c.length)),n[u]!==void 0?!l&&n[u]!==a&&E1(u,n[u],a,o):l?n[u]=(function(f){return function(){return f.apply(e,arguments)}})(a):(n[u]=a,r[u]=a)}r.constructor={name:e.constructor.name},qh(r,0)}return e}const NC=["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 TC(n){for(let t=0;t<NC.length;++t)R8(n,NC[t])}function N8(n,t){const e=["webgl2","webgl","experimental-webgl"];let r=null;for(let i=0;i<e.length;++i)if(r=n.getContext(e[i],t),r){TC(r);break}return r}function T8(n,t){return N8(n,t)}const P8=`flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out float vHalfStrokeWidth;flat out vec4 vCornerRadii;
397
378
  #if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
398
379
  out vec2 vPosInPixels;
399
380
  #endif
@@ -401,7 +382,7 @@ flat out vec2 vHalfSizeInPixels;/***Adjusts the vertex position to ensure that t
401
382
  #if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
402
383
  float aaPadding=1.0/uDevicePixelRatio;float shadowPadding=uShadowBlur+max(abs(uShadowOffsetX),abs(uShadowOffsetY));float strokeWidth=getScaled_strokeWidth();float strokeOpacity=getScaled_strokeOpacity()*opaFactor;vec2 centeredFrac=frac-0.5;vec2 expand=centeredFrac*(strokeWidth+aaPadding+shadowPadding*2.0)/uViewportSize;pos+=expand;vec2 sizeInPixels=size*uViewportSize;vPosInPixels=(centeredFrac+expand/size)*sizeInPixels;vHalfSizeInPixels=sizeInPixels/2.0;vCornerRadii=min(cornerRadii,min(vHalfSizeInPixels.x,vHalfSizeInPixels.y));vHalfStrokeWidth=strokeWidth/2.0;vStrokeColor=vec4(getScaled_stroke()*strokeOpacity,strokeOpacity);
403
384
  #endif
404
- gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,uk=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
385
+ gl_Position=unitToNdc(pos);float fillOpacity=getScaled_fillOpacity()*opaFactor;vFillColor=vec4(getScaled_fill()*fillOpacity,fillOpacity);setupPicking();}`,L8=`#if defined(ROUNDED_CORNERS) || defined(STROKED) || defined(SHADOW)
405
386
  in vec2 vPosInPixels;
406
387
  #endif
407
388
  flat in vec2 vHalfSizeInPixels;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in float vHalfStrokeWidth;flat in vec4 vCornerRadii;out lowp vec4 fragColor;
@@ -427,59 +408,59 @@ if(vHalfStrokeWidth>0.0&&uHatchPattern>0){d=max(d,-pattern());}fragColor=distanc
427
408
  #else
428
409
  fragColor=vFillColor;if(uPickingEnabled){fragColor=vPickingColor;}
429
410
  #endif
430
- }`,fk=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
411
+ }`,O8=`layout(std140)uniform Mark{uniform float uMinWidth;uniform float uMinHeight;uniform float uMinOpacity;uniform float uCornerRadiusTopRight;uniform float uCornerRadiusBottomRight;uniform float uCornerRadiusTopLeft;uniform float uCornerRadiusBottomLeft;uniform int uHatchPattern;uniform vec3 uShadowColor;uniform float uShadowOpacity;uniform float uShadowBlur;uniform float uShadowOffsetX;uniform float uShadowOffsetY;
431
412
  #pragma markUniforms
432
- };`,p1=1e4;class Ak{constructor(t){D(this,Ks);D(this,Ic,!1);this.size=t,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(m(this,Ic))throw new Error("Already configured!");P(this,Ks,qE).call(this),P(this,Ks,KE).call(this),F(this,Ic,!0)}addConverter(t,e){const r=this.createUpdater(t,e.numComponents||1,e.targetArrayType??Float32Array,e.arrayReference),i=e.f;this.dataUpdaters.push(e.arrayReference?s=>r(i(s)):s=>r(i(s)))}createUpdater(t,e,r=Float32Array,i=void 0){if(!ft(this.size))throw new Error("The number of vertices must be defined!");let s,o,a=0;const l=new r(this.size*e);if(this.arrays[t]={data:l,numComponents:e},e==1){let c=0;const u=f=>{c=+f};s=()=>{l[a++]=c},o=u}else{let c=i??[0];const u=i?f=>{}:f=>{c=f};switch(e){case 1:break;case 2:s=()=>{l[a++]=c[0],l[a++]=c[1]},o=u;break;case 3:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2]},o=u;break;case 4:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2],l[a++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+e)}}return this.pushers.push(s),o}pushAll(){throw new Error("Call configure() first!")}updateFromDatum(t){throw new Error("Call configure() first!")}pushFromDatum(t){this.updateFromDatum(t),this.pushAll()}}Ic=new WeakMap,Ks=new WeakSet,qE=function(){if(this.size>p1){const t=this.pushers.map((r,i)=>`const p${i} = that.pushers[${i}];`).join(`
413
+ };`,PC=1e4;class U8{constructor(t){S(this,Io);S(this,tl,!1);this.size=t,this.arrays={},this.pushers=[],this.dataUpdaters=[],this.vertexCount=0}configure(){if(g(this,tl))throw new Error("Already configured!");M(this,Io,hx).call(this),M(this,Io,dx).call(this),D(this,tl,!0)}addConverter(t,e){const r=this.createUpdater(t,e.numComponents||1,e.targetArrayType??Float32Array,e.arrayReference),i=e.f;this.dataUpdaters.push(e.arrayReference?s=>r(i(s)):s=>r(i(s)))}createUpdater(t,e,r=Float32Array,i=void 0){if(!ut(this.size))throw new Error("The number of vertices must be defined!");let s,o,a=0;const l=new r(this.size*e);if(this.arrays[t]={data:l,numComponents:e},e==1){let c=0;const u=f=>{c=+f};s=()=>{l[a++]=c},o=u}else{let c=i??[0];const u=i?f=>{}:f=>{c=f};switch(e){case 1:break;case 2:s=()=>{l[a++]=c[0],l[a++]=c[1]},o=u;break;case 3:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2]},o=u;break;case 4:s=()=>{l[a++]=c[0],l[a++]=c[1],l[a++]=c[2],l[a++]=c[3]},o=u;break;default:throw new Error("Invalid numComponents: "+e)}}return this.pushers.push(s),o}pushAll(){throw new Error("Call configure() first!")}updateFromDatum(t){throw new Error("Call configure() first!")}pushFromDatum(t){this.updateFromDatum(t),this.pushAll()}}tl=new WeakMap,Io=new WeakSet,hx=function(){if(this.size>PC){const t=this.pushers.map((r,i)=>`const p${i} = that.pushers[${i}];`).join(`
433
414
  `),e=this.pushers.map((r,i)=>` p${i}();`).join(`
434
415
  `);this.pushAll=new Function("that",`${t}
435
416
  return function unrolledPushAll() {
436
417
  ${e}
437
418
  that.vertexCount++;
438
- };`)(this)}else this.pushAll=()=>{for(let t=0;t<this.pushers.length;t++)this.pushers[t]();this.vertexCount++}},KE=function(){if(this.size>p1){const t=this.dataUpdaters.map((r,i)=>`const u${i} = that.dataUpdaters[${i}];`).join(`
419
+ };`)(this)}else this.pushAll=()=>{for(let t=0;t<this.pushers.length;t++)this.pushers[t]();this.vertexCount++}},dx=function(){if(this.size>PC){const t=this.dataUpdaters.map((r,i)=>`const u${i} = that.dataUpdaters[${i}];`).join(`
439
420
  `),e=this.dataUpdaters.map((r,i)=>` u${i}(datum);`).join(`
440
421
  `);this.updateFromDatum=new Function("that","datum",`${t}
441
422
  return function unrolledUpdateFromDatum(datum) {
442
423
  ${e}
443
- };`)(this)}else this.updateFromDatum=t=>{for(let e=0;e<this.dataUpdaters.length;e++)this.dataUpdaters[e](t)}};const cs=5,gh=127;function ph(n){const t=[];for(let d=0;d<=gh;d++)t.push(void 0);const e=new Map;for(const d of n.chars)d.id<=gh?t[d.id]=d:e.set(d.id,d);const r=8722;e.has(r)||e.set(r,t[45]);function i(d){return(d<=gh?t[d]:e.get(d))||t[63]}function s(d){return i(d.charCodeAt(0))}const o=n.common.base,a=s("x"),l=s("X"),c=s("q"),u=a.height-cs*2,f=l.height-cs*2,h=c.height-a.height+c.yoffset-a.yoffset;function A(d,g=1){let p=0;for(let C=0;C<d.length;C++)p+=i(d.charCodeAt(C)).xadvance;return p/o*g}return{measureWidth:A,getCharByCode:i,getChar:s,xHeight:u,capHeight:f,descent:h,common:n.common}}const m1=2**31-1,hk=-2147483648;function dk(n,t,e,r=e){const i=new Array(n);i.fill(m1);let s=hk,o=-1/0,a=!1;const l=new Array(n);l.fill(0);const c=t[0],f=(t[1]-t[0])/n,h=(C,w)=>{const b=(C-c)/f,y=Math.floor(b);return $i(w&&y==b?y-1:y,0,n-1)};function A(C,w,b){if(a)return;if(w>s)s=w;else{a=!0;return}const y=e(C);if(y<o){a=!0;return}o=y;const x=h(y,!1);i[x]>w&&(i[x]=w),l[x]<b&&(l[x]=b)}function d(C,w,b){if(a)return;if(w>s)s=w;else{a=!0,console.debug("Items (vertices) are not ordered properly. Disabling binned index.");return}const y=e(C),x=r(C);if(y<o){a=!0;return}else if(x<y){a=!0;return}o=y;const B=h(y,!1),E=h(x,!0);for(let Q=B;Q<=E;Q++)i[Q]>w&&(i[Q]=w),l[Q]<b&&(l[Q]=b)}const g=(C,w,b=[0,0])=>{const y=h(C,!1),x=h(w,!0),B=i[y],E=Math.max(l[x],B);return b[0]=B,b[1]=E,b},p=()=>{if(a)return;for(let w=1;w<l.length;w++)l[w]<l[w-1]&&(l[w]=l[w-1]);let C=!0;for(let w=i.length-1;w>0;w--)C&&i[w]==m1?(i[w]=l[w],C=!1):i[w-1]>i[w]&&(i[w-1]=i[w]);return g};return A.getIndex=p,d.getIndex=p,e==r?A:d}function fn(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}function ur(n,t){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}const mh=Symbol("implicit");function Ch(){var n=new Sn,t=[],e=[],r=mh;function i(s){let o=n.get(s);if(o===void 0){if(r!==mh)return r;n.set(s,o=t.push(s)-1)}return e[o%e.length]}return i.domain=function(s){if(!arguments.length)return t.slice();t=[],n=new Sn;for(const o of s)n.has(o)||n.set(o,t.push(o)-1);return i},i.range=function(s){return arguments.length?(e=Array.from(s),i):e.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return Ch(t,e).unknown(r)},fn.apply(i,arguments),i}function ls(n,t,e){n.prototype=t.prototype=e,e.constructor=n}function Da(n,t){var e=Object.create(n.prototype);for(var r in t)e[r]=t[r];return e}function fr(){}var ri=.7,us=1/ri,fs="\\s*([+-]?\\d+)\\s*",ka="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",An="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",gk=/^#([0-9a-f]{3,8})$/,pk=new RegExp(`^rgb\\(${fs},${fs},${fs}\\)$`),mk=new RegExp(`^rgb\\(${An},${An},${An}\\)$`),Ck=new RegExp(`^rgba\\(${fs},${fs},${fs},${ka}\\)$`),yk=new RegExp(`^rgba\\(${An},${An},${An},${ka}\\)$`),wk=new RegExp(`^hsl\\(${ka},${An},${An}\\)$`),Ik=new RegExp(`^hsla\\(${ka},${An},${An},${ka}\\)$`),C1={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};ls(fr,Ar,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:y1,formatHex:y1,formatHex8:Ek,formatHsl:bk,formatRgb:w1,toString:w1});function y1(){return this.rgb().formatHex()}function Ek(){return this.rgb().formatHex8()}function bk(){return B1(this).formatHsl()}function w1(){return this.rgb().formatRgb()}function Ar(n){var t,e;return n=(n+"").trim().toLowerCase(),(t=gk.exec(n))?(e=t[1].length,t=parseInt(t[1],16),e===6?I1(t):e===3?new Je(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):e===8?Iu(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):e===4?Iu(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=pk.exec(n))?new Je(t[1],t[2],t[3],1):(t=mk.exec(n))?new Je(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Ck.exec(n))?Iu(t[1],t[2],t[3],t[4]):(t=yk.exec(n))?Iu(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=wk.exec(n))?x1(t[1],t[2]/100,t[3]/100,1):(t=Ik.exec(n))?x1(t[1],t[2]/100,t[3]/100,t[4]):C1.hasOwnProperty(n)?I1(C1[n]):n==="transparent"?new Je(NaN,NaN,NaN,0):null}function I1(n){return new Je(n>>16&255,n>>8&255,n&255,1)}function Iu(n,t,e,r){return r<=0&&(n=t=e=NaN),new Je(n,t,e,r)}function yh(n){return n instanceof fr||(n=Ar(n)),n?(n=n.rgb(),new Je(n.r,n.g,n.b,n.opacity)):new Je}function Eu(n,t,e,r){return arguments.length===1?yh(n):new Je(n,t,e,r??1)}function Je(n,t,e,r){this.r=+n,this.g=+t,this.b=+e,this.opacity=+r}ls(Je,Eu,Da(fr,{brighter(n){return n=n==null?us:Math.pow(us,n),new Je(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?ri:Math.pow(ri,n),new Je(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new Je(ii(this.r),ii(this.g),ii(this.b),bu(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:E1,formatHex:E1,formatHex8:xk,formatRgb:b1,toString:b1}));function E1(){return`#${si(this.r)}${si(this.g)}${si(this.b)}`}function xk(){return`#${si(this.r)}${si(this.g)}${si(this.b)}${si((isNaN(this.opacity)?1:this.opacity)*255)}`}function b1(){const n=bu(this.opacity);return`${n===1?"rgb(":"rgba("}${ii(this.r)}, ${ii(this.g)}, ${ii(this.b)}${n===1?")":`, ${n})`}`}function bu(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function ii(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function si(n){return n=ii(n),(n<16?"0":"")+n.toString(16)}function x1(n,t,e,r){return r<=0?n=t=e=NaN:e<=0||e>=1?n=t=NaN:t<=0&&(n=NaN),new Xt(n,t,e,r)}function B1(n){if(n instanceof Xt)return new Xt(n.h,n.s,n.l,n.opacity);if(n instanceof fr||(n=Ar(n)),!n)return new Xt;if(n instanceof Xt)return n;n=n.rgb();var t=n.r/255,e=n.g/255,r=n.b/255,i=Math.min(t,e,r),s=Math.max(t,e,r),o=NaN,a=s-i,l=(s+i)/2;return a?(t===s?o=(e-r)/a+(e<r)*6:e===s?o=(r-t)/a+2:o=(t-e)/a+4,a/=l<.5?s+i:2-s-i,o*=60):a=l>0&&l<1?0:o,new Xt(o,a,l,n.opacity)}function wh(n,t,e,r){return arguments.length===1?B1(n):new Xt(n,t,e,r??1)}function Xt(n,t,e,r){this.h=+n,this.s=+t,this.l=+e,this.opacity=+r}ls(Xt,wh,Da(fr,{brighter(n){return n=n==null?us:Math.pow(us,n),new Xt(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?ri:Math.pow(ri,n),new Xt(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*t,i=2*e-r;return new Je(Ih(n>=240?n-240:n+120,i,r),Ih(n,i,r),Ih(n<120?n+240:n-120,i,r),this.opacity)},clamp(){return new Xt(v1(this.h),xu(this.s),xu(this.l),bu(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 n=bu(this.opacity);return`${n===1?"hsl(":"hsla("}${v1(this.h)}, ${xu(this.s)*100}%, ${xu(this.l)*100}%${n===1?")":`, ${n})`}`}}));function v1(n){return n=(n||0)%360,n<0?n+360:n}function xu(n){return Math.max(0,Math.min(1,n||0))}function Ih(n,t,e){return(n<60?t+(e-t)*n/60:n<180?e:n<240?t+(e-t)*(240-n)/60:t)*255}const Q1=Math.PI/180,S1=180/Math.PI,Bu=18,D1=.96422,k1=1,F1=.82521,M1=4/29,As=6/29,R1=3*As*As,Bk=As*As*As;function N1(n){if(n instanceof hn)return new hn(n.l,n.a,n.b,n.opacity);if(n instanceof Pn)return T1(n);n instanceof Je||(n=yh(n));var t=vh(n.r),e=vh(n.g),r=vh(n.b),i=bh((.2225045*t+.7168786*e+.0606169*r)/k1),s,o;return t===e&&e===r?s=o=i:(s=bh((.4360747*t+.3850649*e+.1430804*r)/D1),o=bh((.0139322*t+.0971045*e+.7141733*r)/F1)),new hn(116*i-16,500*(s-i),200*(i-o),n.opacity)}function Eh(n,t,e,r){return arguments.length===1?N1(n):new hn(n,t,e,r??1)}function hn(n,t,e,r){this.l=+n,this.a=+t,this.b=+e,this.opacity=+r}ls(hn,Eh,Da(fr,{brighter(n){return new hn(this.l+Bu*(n??1),this.a,this.b,this.opacity)},darker(n){return new hn(this.l-Bu*(n??1),this.a,this.b,this.opacity)},rgb(){var n=(this.l+16)/116,t=isNaN(this.a)?n:n+this.a/500,e=isNaN(this.b)?n:n-this.b/200;return t=D1*xh(t),n=k1*xh(n),e=F1*xh(e),new Je(Bh(3.1338561*t-1.6168667*n-.4906146*e),Bh(-.9787684*t+1.9161415*n+.033454*e),Bh(.0719453*t-.2289914*n+1.4052427*e),this.opacity)}}));function bh(n){return n>Bk?Math.pow(n,1/3):n/R1+M1}function xh(n){return n>As?n*n*n:R1*(n-M1)}function Bh(n){return 255*(n<=.0031308?12.92*n:1.055*Math.pow(n,1/2.4)-.055)}function vh(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function vk(n){if(n instanceof Pn)return new Pn(n.h,n.c,n.l,n.opacity);if(n instanceof hn||(n=N1(n)),n.a===0&&n.b===0)return new Pn(NaN,0<n.l&&n.l<100?0:NaN,n.l,n.opacity);var t=Math.atan2(n.b,n.a)*S1;return new Pn(t<0?t+360:t,Math.sqrt(n.a*n.a+n.b*n.b),n.l,n.opacity)}function Qh(n,t,e,r){return arguments.length===1?vk(n):new Pn(n,t,e,r??1)}function Pn(n,t,e,r){this.h=+n,this.c=+t,this.l=+e,this.opacity=+r}function T1(n){if(isNaN(n.h))return new hn(n.l,0,0,n.opacity);var t=n.h*Q1;return new hn(n.l,Math.cos(t)*n.c,Math.sin(t)*n.c,n.opacity)}ls(Pn,Qh,Da(fr,{brighter(n){return new Pn(this.h,this.c,this.l+Bu*(n??1),this.opacity)},darker(n){return new Pn(this.h,this.c,this.l-Bu*(n??1),this.opacity)},rgb(){return T1(this).rgb()}}));var P1=-.14861,Sh=1.78277,Dh=-.29227,vu=-.90649,Fa=1.97294,L1=Fa*vu,O1=Fa*Sh,U1=Sh*Dh-vu*P1;function Qk(n){if(n instanceof oi)return new oi(n.h,n.s,n.l,n.opacity);n instanceof Je||(n=yh(n));var t=n.r/255,e=n.g/255,r=n.b/255,i=(U1*r+L1*t-O1*e)/(U1+L1-O1),s=r-i,o=(Fa*(e-i)-Dh*s)/vu,a=Math.sqrt(o*o+s*s)/(Fa*i*(1-i)),l=a?Math.atan2(o,s)*S1-120:NaN;return new oi(l<0?l+360:l,a,i,n.opacity)}function kh(n,t,e,r){return arguments.length===1?Qk(n):new oi(n,t,e,r??1)}function oi(n,t,e,r){this.h=+n,this.s=+t,this.l=+e,this.opacity=+r}ls(oi,kh,Da(fr,{brighter(n){return n=n==null?us:Math.pow(us,n),new oi(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?ri:Math.pow(ri,n),new oi(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=isNaN(this.h)?0:(this.h+120)*Q1,t=+this.l,e=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(n),i=Math.sin(n);return new Je(255*(t+e*(P1*r+Sh*i)),255*(t+e*(Dh*r+vu*i)),255*(t+e*(Fa*r)),this.opacity)}}));function G1(n,t,e,r,i){var s=n*n,o=s*n;return((1-3*n+3*s-o)*t+(4-6*s+3*o)*e+(1+3*n+3*s-3*o)*r+o*i)/6}function z1(n){var t=n.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,t-1):Math.floor(e*t),i=n[r],s=n[r+1],o=r>0?n[r-1]:2*i-s,a=r<t-1?n[r+2]:2*s-i;return G1((e-r/t)*t,o,i,s,a)}}function H1(n){var t=n.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*t),i=n[(r+t-1)%t],s=n[r%t],o=n[(r+1)%t],a=n[(r+2)%t];return G1((e-r/t)*t,i,s,o,a)}}const Qu=n=>()=>n;function Y1(n,t){return function(e){return n+e*t}}function Sk(n,t,e){return n=Math.pow(n,e),t=Math.pow(t,e)-n,e=1/e,function(r){return Math.pow(n+r*t,e)}}function Su(n,t){var e=t-n;return e?Y1(n,e>180||e<-180?e-360*Math.round(e/360):e):Qu(isNaN(n)?t:n)}function Dk(n){return(n=+n)==1?qe:function(t,e){return e-t?Sk(t,e,n):Qu(isNaN(t)?e:t)}}function qe(n,t){var e=t-n;return e?Y1(n,e):Qu(isNaN(n)?t:n)}const Fh=(function n(t){var e=Dk(t);function r(i,s){var o=e((i=Eu(i)).r,(s=Eu(s)).r),a=e(i.g,s.g),l=e(i.b,s.b),c=qe(i.opacity,s.opacity);return function(u){return i.r=o(u),i.g=a(u),i.b=l(u),i.opacity=c(u),i+""}}return r.gamma=n,r})(1);function _1(n){return function(t){var e=t.length,r=new Array(e),i=new Array(e),s=new Array(e),o,a;for(o=0;o<e;++o)a=Eu(t[o]),r[o]=a.r||0,i[o]=a.g||0,s[o]=a.b||0;return r=n(r),i=n(i),s=n(s),a.opacity=1,function(l){return a.r=r(l),a.g=i(l),a.b=s(l),a+""}}}var kk=_1(z1),Fk=_1(H1);function Mh(n,t){t||(t=[]);var e=n?Math.min(t.length,n.length):0,r=t.slice(),i;return function(s){for(i=0;i<e;++i)r[i]=n[i]*(1-s)+t[i]*s;return r}}function V1(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Mk(n,t){return(V1(t)?Mh:J1)(n,t)}function J1(n,t){var e=t?t.length:0,r=n?Math.min(e,n.length):0,i=new Array(r),s=new Array(e),o;for(o=0;o<r;++o)i[o]=hr(n[o],t[o]);for(;o<e;++o)s[o]=t[o];return function(a){for(o=0;o<r;++o)s[o]=i[o](a);return s}}function q1(n,t){var e=new Date;return n=+n,t=+t,function(r){return e.setTime(n*(1-r)+t*r),e}}function Zt(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function K1(n,t){var e={},r={},i;(n===null||typeof n!="object")&&(n={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in n?e[i]=hr(n[i],t[i]):r[i]=t[i];return function(s){for(i in e)r[i]=e[i](s);return r}}var Rh=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Nh=new RegExp(Rh.source,"g");function Rk(n){return function(){return n}}function Nk(n){return function(t){return n(t)+""}}function j1(n,t){var e=Rh.lastIndex=Nh.lastIndex=0,r,i,s,o=-1,a=[],l=[];for(n=n+"",t=t+"";(r=Rh.exec(n))&&(i=Nh.exec(t));)(s=i.index)>e&&(s=t.slice(e,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:Zt(r,i)})),e=Nh.lastIndex;return e<t.length&&(s=t.slice(e),a[o]?a[o]+=s:a[++o]=s),a.length<2?l[0]?Nk(l[0].x):Rk(t):(t=l.length,function(c){for(var u=0,f;u<t;++u)a[(f=l[u]).i]=f.x(c);return a.join("")})}function hr(n,t){var e=typeof t,r;return t==null||e==="boolean"?Qu(t):(e==="number"?Zt:e==="string"?(r=Ar(t))?(t=r,Fh):j1:t instanceof Ar?Fh:t instanceof Date?q1:V1(t)?Mh:Array.isArray(t)?J1:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?K1:Zt)(n,t)}function Tk(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}function Pk(n,t){var e=Su(+n,+t);return function(r){var i=e(r);return i-360*Math.floor(i/360)}}function Ma(n,t){return n=+n,t=+t,function(e){return Math.round(n*(1-e)+t*e)}}var W1=180/Math.PI,Th={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function X1(n,t,e,r,i,s){var o,a,l;return(o=Math.sqrt(n*n+t*t))&&(n/=o,t/=o),(l=n*e+t*r)&&(e-=n*l,r-=t*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),n*r<t*e&&(n=-n,t=-t,l=-l,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(t,n)*W1,skewX:Math.atan(l)*W1,scaleX:o,scaleY:a}}var Du;function Lk(n){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(n+"");return t.isIdentity?Th:X1(t.a,t.b,t.c,t.d,t.e,t.f)}function Ok(n){return n==null||(Du||(Du=document.createElementNS("http://www.w3.org/2000/svg","g")),Du.setAttribute("transform",n),!(n=Du.transform.baseVal.consolidate()))?Th:(n=n.matrix,X1(n.a,n.b,n.c,n.d,n.e,n.f))}function Z1(n,t,e,r){function i(c){return c.length?c.pop()+" ":""}function s(c,u,f,h,A,d){if(c!==f||u!==h){var g=A.push("translate(",null,t,null,e);d.push({i:g-4,x:Zt(c,f)},{i:g-2,x:Zt(u,h)})}else(f||h)&&A.push("translate("+f+t+h+e)}function o(c,u,f,h){c!==u?(c-u>180?u+=360:u-c>180&&(c+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:Zt(c,u)})):u&&f.push(i(f)+"rotate("+u+r)}function a(c,u,f,h){c!==u?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:Zt(c,u)}):u&&f.push(i(f)+"skewX("+u+r)}function l(c,u,f,h,A,d){if(c!==f||u!==h){var g=A.push(i(A)+"scale(",null,",",null,")");d.push({i:g-4,x:Zt(c,f)},{i:g-2,x:Zt(u,h)})}else(f!==1||h!==1)&&A.push(i(A)+"scale("+f+","+h+")")}return function(c,u){var f=[],h=[];return c=n(c),u=n(u),s(c.translateX,c.translateY,u.translateX,u.translateY,f,h),o(c.rotate,u.rotate,f,h),a(c.skewX,u.skewX,f,h),l(c.scaleX,c.scaleY,u.scaleX,u.scaleY,f,h),c=u=null,function(A){for(var d=-1,g=h.length,p;++d<g;)f[(p=h[d]).i]=p.x(A);return f.join("")}}}var Uk=Z1(Lk,"px, ","px)","deg)"),Gk=Z1(Ok,", ",")",")"),zk=1e-12;function $1(n){return((n=Math.exp(n))+1/n)/2}function Hk(n){return((n=Math.exp(n))-1/n)/2}function Yk(n){return((n=Math.exp(2*n))-1)/(n+1)}const _k=(function n(t,e,r){function i(s,o){var a=s[0],l=s[1],c=s[2],u=o[0],f=o[1],h=o[2],A=u-a,d=f-l,g=A*A+d*d,p,C;if(g<zk)C=Math.log(h/c)/t,p=function(E){return[a+E*A,l+E*d,c*Math.exp(t*E*C)]};else{var w=Math.sqrt(g),b=(h*h-c*c+r*g)/(2*c*e*w),y=(h*h-c*c-r*g)/(2*h*e*w),x=Math.log(Math.sqrt(b*b+1)-b),B=Math.log(Math.sqrt(y*y+1)-y);C=(B-x)/t,p=function(E){var Q=E*C,k=$1(x),S=c/(e*w)*(k*Yk(t*Q+x)-Hk(x));return[a+S*A,l+S*d,c*k/$1(t*Q+x)]}}return p.duration=C*1e3*t/Math.SQRT2,p}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,l=a*a;return n(o,a,l)},i})(Math.SQRT2,2,4);function eC(n){return function(t,e){var r=n((t=wh(t)).h,(e=wh(e)).h),i=qe(t.s,e.s),s=qe(t.l,e.l),o=qe(t.opacity,e.opacity);return function(a){return t.h=r(a),t.s=i(a),t.l=s(a),t.opacity=o(a),t+""}}}const Vk=eC(Su);var Jk=eC(qe);function qk(n,t){var e=qe((n=Eh(n)).l,(t=Eh(t)).l),r=qe(n.a,t.a),i=qe(n.b,t.b),s=qe(n.opacity,t.opacity);return function(o){return n.l=e(o),n.a=r(o),n.b=i(o),n.opacity=s(o),n+""}}function tC(n){return function(t,e){var r=n((t=Qh(t)).h,(e=Qh(e)).h),i=qe(t.c,e.c),s=qe(t.l,e.l),o=qe(t.opacity,e.opacity);return function(a){return t.h=r(a),t.c=i(a),t.l=s(a),t.opacity=o(a),t+""}}}const Kk=tC(Su);var jk=tC(qe);function nC(n){return(function t(e){e=+e;function r(i,s){var o=n((i=kh(i)).h,(s=kh(s)).h),a=qe(i.s,s.s),l=qe(i.l,s.l),c=qe(i.opacity,s.opacity);return function(u){return i.h=o(u),i.s=a(u),i.l=l(Math.pow(u,e)),i.opacity=c(u),i+""}}return r.gamma=t,r})(1)}const Wk=nC(Su);var Xk=nC(qe);function Ph(n,t){t===void 0&&(t=n,n=hr);for(var e=0,r=t.length-1,i=t[0],s=new Array(r<0?0:r);e<r;)s[e]=n(i,i=t[++e]);return function(o){var a=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return s[a](o-a)}}function Zk(n,t){for(var e=new Array(t),r=0;r<t;++r)e[r]=n(r/(t-1));return e}const $k=Object.freeze(Object.defineProperty({__proto__:null,interpolate:hr,interpolateArray:Mk,interpolateBasis:z1,interpolateBasisClosed:H1,interpolateCubehelix:Wk,interpolateCubehelixLong:Xk,interpolateDate:q1,interpolateDiscrete:Tk,interpolateHcl:Kk,interpolateHclLong:jk,interpolateHsl:Vk,interpolateHslLong:Jk,interpolateHue:Pk,interpolateLab:qk,interpolateNumber:Zt,interpolateNumberArray:Mh,interpolateObject:K1,interpolateRgb:Fh,interpolateRgbBasis:kk,interpolateRgbBasisClosed:Fk,interpolateRound:Ma,interpolateString:j1,interpolateTransformCss:Uk,interpolateTransformSvg:Gk,interpolateZoom:_k,piecewise:Ph,quantize:Zk},Symbol.toStringTag,{value:"Module"}));function e8(n){return function(){return n}}function Lh(n){return+n}var rC=[0,1];function It(n){return n}function Oh(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:e8(isNaN(t)?NaN:.5)}function t8(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function n8(n,t,e){var r=n[0],i=n[1],s=t[0],o=t[1];return i<r?(r=Oh(i,r),s=e(o,s)):(r=Oh(r,i),s=e(s,o)),function(a){return s(r(a))}}function r8(n,t,e){var r=Math.min(n.length,t.length)-1,i=new Array(r),s=new Array(r),o=-1;for(n[r]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Oh(n[o],n[o+1]),s[o]=e(t[o],t[o+1]);return function(a){var l=Zn(n,a,1,r)-1;return s[l](i[l](a))}}function Ra(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function ku(){var n=rC,t=rC,e=hr,r,i,s,o=It,a,l,c;function u(){var h=Math.min(n.length,t.length);return o!==It&&(o=t8(n[0],n[h-1])),a=h>2?r8:n8,l=c=null,f}function f(h){return h==null||isNaN(h=+h)?s:(l||(l=a(n.map(r),t,e)))(r(o(h)))}return f.invert=function(h){return o(i((c||(c=a(t,n.map(r),Zt)))(h)))},f.domain=function(h){return arguments.length?(n=Array.from(h,Lh),u()):n.slice()},f.range=function(h){return arguments.length?(t=Array.from(h),u()):t.slice()},f.rangeRound=function(h){return t=Array.from(h),e=Ma,u()},f.clamp=function(h){return arguments.length?(o=h?!0:It,u()):o!==It},f.interpolate=function(h){return arguments.length?(e=h,u()):e},f.unknown=function(h){return arguments.length?(s=h,f):s},function(h,A){return r=h,i=A,u()}}function iC(){return ku()(It,It)}function sC(n,t,e,r){var i=Yr(n,t,e),s;switch(r=Ki(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(s=Xx(i,o))&&(r.precision=s),Yg(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=Zx(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=Wx(i))&&(r.precision=s-(r.type==="%")*2);break}}return Ze(r)}function ai(n){var t=n.domain;return n.ticks=function(e){var r=t();return Bl(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return sC(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,s=r.length-1,o=r[i],a=r[s],l,c,u=10;for(a<o&&(c=o,o=a,a=c,c=i,i=s,s=c);u-- >0;){if(c=tA(o,a,e),c===l)return r[i]=o,r[s]=a,t(r);if(c>0)o=Math.floor(o/c)*c,a=Math.ceil(a/c)*c;else if(c<0)o=Math.ceil(o*c)/c,a=Math.floor(a*c)/c;else break;l=c}return n},n}function oC(){var n=iC();return n.copy=function(){return Ra(n,oC())},fn.apply(n,arguments),ai(n)}function aC(n){var t;function e(r){return r==null||isNaN(r=+r)?t:r}return e.invert=e,e.domain=e.range=function(r){return arguments.length?(n=Array.from(r,Lh),e):n.slice()},e.unknown=function(r){return arguments.length?(t=r,e):t},e.copy=function(){return aC(n).unknown(t)},n=arguments.length?Array.from(n,Lh):[0,1],ai(e)}function cC(n,t){n=n.slice();var e=0,r=n.length-1,i=n[e],s=n[r],o;return s<i&&(o=e,e=r,r=o,o=i,i=s,s=o),n[e]=t.floor(i),n[r]=t.ceil(s),n}function lC(n){return Math.log(n)}function uC(n){return Math.exp(n)}function i8(n){return-Math.log(-n)}function s8(n){return-Math.exp(-n)}function o8(n){return isFinite(n)?+("1e"+n):n<0?0:n}function a8(n){return n===10?o8:n===Math.E?Math.exp:t=>Math.pow(n,t)}function c8(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),t=>Math.log(t)/n)}function fC(n){return(t,e)=>-n(-t,e)}function Uh(n){const t=n(lC,uC),e=t.domain;let r=10,i,s;function o(){return i=c8(r),s=a8(r),e()[0]<0?(i=fC(i),s=fC(s),n(i8,s8)):n(lC,uC),t}return t.base=function(a){return arguments.length?(r=+a,o()):r},t.domain=function(a){return arguments.length?(e(a),o()):e()},t.ticks=a=>{const l=e();let c=l[0],u=l[l.length-1];const f=u<c;f&&([c,u]=[u,c]);let h=i(c),A=i(u),d,g;const p=a==null?10:+a;let C=[];if(!(r%1)&&A-h<p){if(h=Math.floor(h),A=Math.ceil(A),c>0){for(;h<=A;++h)for(d=1;d<r;++d)if(g=h<0?d/s(-h):d*s(h),!(g<c)){if(g>u)break;C.push(g)}}else for(;h<=A;++h)for(d=r-1;d>=1;--d)if(g=h>0?d/s(-h):d*s(h),!(g<c)){if(g>u)break;C.push(g)}C.length*2<p&&(C=Bl(c,u,p))}else C=Bl(h,A,Math.min(A-h,p)).map(s);return f?C.reverse():C},t.tickFormat=(a,l)=>{if(a==null&&(a=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=Ki(l)).precision==null&&(l.trim=!0),l=Ze(l)),a===1/0)return l;const c=Math.max(1,r*a/t.ticks().length);return u=>{let f=u/s(Math.round(i(u)));return f*r<r-.5&&(f*=r),f<=c?l(u):""}},t.nice=()=>e(cC(e(),{floor:a=>s(Math.floor(i(a))),ceil:a=>s(Math.ceil(i(a)))})),t}function Gh(){const n=Uh(ku()).domain([1,10]);return n.copy=()=>Ra(n,Gh()).base(n.base()),fn.apply(n,arguments),n}function AC(n){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/n))}}function hC(n){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*n}}function zh(n){var t=1,e=n(AC(t),hC(t));return e.constant=function(r){return arguments.length?n(AC(t=+r),hC(t)):t},ai(e)}function dC(){var n=zh(ku());return n.copy=function(){return Ra(n,dC()).constant(n.constant())},fn.apply(n,arguments)}function gC(n){return function(t){return t<0?-Math.pow(-t,n):Math.pow(t,n)}}function l8(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function u8(n){return n<0?-n*n:n*n}function Hh(n){var t=n(It,It),e=1;function r(){return e===1?n(It,It):e===.5?n(l8,u8):n(gC(e),gC(1/e))}return t.exponent=function(i){return arguments.length?(e=+i,r()):e},ai(t)}function Yh(){var n=Hh(ku());return n.copy=function(){return Ra(n,Yh()).exponent(n.exponent())},fn.apply(n,arguments),n}function f8(){return Yh.apply(null,arguments).exponent(.5)}function pC(){var n=[],t=[],e=[],r;function i(){var o=0,a=Math.max(1,t.length);for(e=new Array(a-1);++o<a;)e[o-1]=Lg(n,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:t[Zn(e,o)]}return s.invertExtent=function(o){var a=t.indexOf(o);return a<0?[NaN,NaN]:[a>0?e[a-1]:n[0],a<e.length?e[a]:n[n.length-1]]},s.domain=function(o){if(!arguments.length)return n.slice();n=[];for(let a of o)a!=null&&!isNaN(a=+a)&&n.push(a);return n.sort(zr),i()},s.range=function(o){return arguments.length?(t=Array.from(o),i()):t.slice()},s.unknown=function(o){return arguments.length?(r=o,s):r},s.quantiles=function(){return e.slice()},s.copy=function(){return pC().domain(n).range(t).unknown(r)},fn.apply(s,arguments)}function mC(){var n=0,t=1,e=1,r=[.5],i=[0,1],s;function o(l){return l!=null&&l<=l?i[Zn(r,l,0,e)]:s}function a(){var l=-1;for(r=new Array(e);++l<e;)r[l]=((l+1)*t-(l-e)*n)/(e+1);return o}return o.domain=function(l){return arguments.length?([n,t]=l,n=+n,t=+t,a()):[n,t]},o.range=function(l){return arguments.length?(e=(i=Array.from(l)).length-1,a()):i.slice()},o.invertExtent=function(l){var c=i.indexOf(l);return c<0?[NaN,NaN]:c<1?[n,r[0]]:c>=e?[r[e-1],t]:[r[c-1],r[c]]},o.unknown=function(l){return arguments.length&&(s=l),o},o.thresholds=function(){return r.slice()},o.copy=function(){return mC().domain([n,t]).range(i).unknown(s)},fn.apply(ai(o),arguments)}function CC(){var n=[.5],t=[0,1],e,r=1;function i(s){return s!=null&&s<=s?t[Zn(n,s,0,r)]:e}return i.domain=function(s){return arguments.length?(n=Array.from(s),r=Math.min(n.length,t.length-1),i):n.slice()},i.range=function(s){return arguments.length?(t=Array.from(s),r=Math.min(n.length,t.length-1),i):t.slice()},i.invertExtent=function(s){var o=t.indexOf(s);return[n[o-1],n[o]]},i.unknown=function(s){return arguments.length?(e=s,i):e},i.copy=function(){return CC().domain(n).range(t).unknown(e)},fn.apply(i,arguments)}function A8(n){return new Date(n)}function h8(n){return n instanceof Date?+n:+new Date(+n)}function _h(n,t,e,r,i,s,o,a,l,c){var u=iC(),f=u.invert,h=u.domain,A=c(".%L"),d=c(":%S"),g=c("%I:%M"),p=c("%I %p"),C=c("%a %d"),w=c("%b %d"),b=c("%B"),y=c("%Y");function x(B){return(l(B)<B?A:a(B)<B?d:o(B)<B?g:s(B)<B?p:r(B)<B?i(B)<B?C:w:e(B)<B?b:y)(B)}return u.invert=function(B){return new Date(f(B))},u.domain=function(B){return arguments.length?h(Array.from(B,h8)):h().map(A8)},u.ticks=function(B){var E=h();return n(E[0],E[E.length-1],B??10)},u.tickFormat=function(B,E){return E==null?x:c(E)},u.nice=function(B){var E=h();return(!B||typeof B.range!="function")&&(B=t(E[0],E[E.length-1],B??10)),B?h(cC(E,B)):u},u.copy=function(){return Ra(u,_h(n,t,e,r,i,s,o,a,l,c))},u}function d8(){return fn.apply(_h(lB,uB,sn,Zo,Wo,$n,Fl,Dl,Mn,AA).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function g8(){return fn.apply(_h(aB,cB,on,$o,Xo,_r,Ml,kl,Mn,hA).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Fu(){var n=0,t=1,e,r,i,s,o=It,a=!1,l;function c(f){return f==null||isNaN(f=+f)?l:o(i===0?.5:(f=(s(f)-e)*i,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([n,t]=f,e=s(n=+n),r=s(t=+t),i=e===r?0:1/(r-e),c):[n,t]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(o=f,c):o};function u(f){return function(h){var A,d;return arguments.length?([A,d]=h,o=f(A,d),c):[o(0),o(1)]}}return c.range=u(hr),c.rangeRound=u(Ma),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return s=f,e=f(n),r=f(t),i=e===r?0:1/(r-e),c}}function dr(n,t){return t.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function Vh(){var n=ai(Fu()(It));return n.copy=function(){return dr(n,Vh())},ur.apply(n,arguments)}function yC(){var n=Uh(Fu()).domain([1,10]);return n.copy=function(){return dr(n,yC()).base(n.base())},ur.apply(n,arguments)}function wC(){var n=zh(Fu());return n.copy=function(){return dr(n,wC()).constant(n.constant())},ur.apply(n,arguments)}function Jh(){var n=Hh(Fu());return n.copy=function(){return dr(n,Jh()).exponent(n.exponent())},ur.apply(n,arguments)}function p8(){return Jh.apply(null,arguments).exponent(.5)}function Mu(){var n=0,t=.5,e=1,r=1,i,s,o,a,l,c=It,u,f=!1,h;function A(g){return isNaN(g=+g)?h:(g=.5+((g=+u(g))-s)*(r*g<r*s?a:l),c(f?Math.max(0,Math.min(1,g)):g))}A.domain=function(g){return arguments.length?([n,t,e]=g,i=u(n=+n),s=u(t=+t),o=u(e=+e),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A):[n,t,e]},A.clamp=function(g){return arguments.length?(f=!!g,A):f},A.interpolator=function(g){return arguments.length?(c=g,A):c};function d(g){return function(p){var C,w,b;return arguments.length?([C,w,b]=p,c=Ph(g,[C,w,b]),A):[c(0),c(.5),c(1)]}}return A.range=d(hr),A.rangeRound=d(Ma),A.unknown=function(g){return arguments.length?(h=g,A):h},function(g){return u=g,i=g(n),s=g(t),o=g(e),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A}}function IC(){var n=ai(Mu()(It));return n.copy=function(){return dr(n,IC())},ur.apply(n,arguments)}function EC(){var n=Uh(Mu()).domain([.1,1,10]);return n.copy=function(){return dr(n,EC()).base(n.base())},ur.apply(n,arguments)}function bC(){var n=zh(Mu());return n.copy=function(){return dr(n,bC()).constant(n.constant())},ur.apply(n,arguments)}function qh(){var n=Hh(Mu());return n.copy=function(){return dr(n,qh()).exponent(n.exponent())},ur.apply(n,arguments)}function m8(){return qh.apply(null,arguments).exponent(.5)}function dn(n){for(var t=n.length/6|0,e=new Array(t),r=0;r<t;)e[r]="#"+n.slice(r*6,++r*6);return e}const C8=dn("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),y8=dn("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),w8=dn("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),I8=dn("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),E8=dn("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),b8=dn("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),x8=dn("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),B8=dn("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),v8=dn("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),Q8=dn("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f");function Kh(n,t,e){const r=n-t+e*2;return n?r>0?r:1:0}const S8="identity",hs="linear",gr="log",Na="pow",Ta="sqrt",Ru="symlog",xC="time",BC="utc",gn="sequential",ds="diverging",jh="quantile",vC="quantize",QC="threshold",Wh="ordinal",Xh="point",SC="band",Zh="bin-ordinal",Ge="continuous",Pa="discrete",La="discretizing",Pt="interpolating",DC="temporal";function D8(n){return function(t){let e=t[0],r=t[1],i;return r<e&&(i=e,e=r,r=i),[n.invert(e),n.invert(r)]}}function k8(n){return function(t){const e=n.range();let r=t[0],i=t[1],s=-1,o,a,l,c;for(i<r&&(a=r,r=i,i=a),l=0,c=e.length;l<c;++l)e[l]>=r&&e[l]<=i&&(s<0&&(s=l),o=l);if(!(s<0))return r=n.invertExtent(e[s]),i=n.invertExtent(e[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function $h(){const n=Ch().unknown(void 0),t=n.domain,e=n.range;let r=[0,1],i,s,o=!1,a=0,l=0,c=.5;delete n.unknown;function u(){const f=t().length,h=r[1]<r[0],A=r[1-h],d=Kh(f,a,l);let g=r[h-0];i=(A-g)/(d||1),o&&(i=Math.floor(i)),g+=(A-g-i*(f-a))*c,s=i*(1-a),o&&(g=Math.round(g),s=Math.round(s));const p=Ko(f).map(C=>g+i*C);return e(h?p.reverse():p)}return n.domain=function(f){return arguments.length?(t(f),u()):t()},n.range=function(f){return arguments.length?(r=[+f[0],+f[1]],u()):r.slice()},n.rangeRound=function(f){return r=[+f[0],+f[1]],o=!0,u()},n.bandwidth=function(){return s},n.step=function(){return i},n.round=function(f){return arguments.length?(o=!!f,u()):o},n.padding=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),a=l,u()):a},n.paddingInner=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u()):a},n.paddingOuter=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),u()):l},n.align=function(f){return arguments.length?(c=Math.max(0,Math.min(1,f)),u()):c},n.invertRange=function(f){if(f[0]==null||f[1]==null)return;const h=r[1]<r[0],A=h?e().reverse():e(),d=A.length-1;let g=+f[0],p=+f[1],C,w,b;if(!(g!==g||p!==p)&&(p<g&&(b=g,g=p,p=b),!(p<A[0]||g>r[1-h])))return C=Math.max(0,Zn(A,g)-1),w=g===p?C:Zn(A,p)-1,g-A[C]>s+1e-10&&++C,h&&(b=C,C=d-w,w=d-b),C>w?void 0:t().slice(C,w+1)},n.invert=function(f){const h=n.invertRange([f,f]);return h&&h[0]},n.copy=function(){return $h().domain(t()).range(r).round(o).paddingInner(a).paddingOuter(l).align(c)},u()}function kC(n){const t=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,n.copy=function(){return kC(t())},n}function F8(){return kC($h().paddingInner(1))}var M8=Array.prototype.map;function R8(n){return M8.call(n,To)}const N8=Array.prototype.slice;function FC(){let n=[],t=[];function e(r){return r==null||r!==r?void 0:t[(Zn(n,r)-1)%t.length]}return e.domain=function(r){return arguments.length?(n=R8(r),e):n.slice()},e.range=function(r){return arguments.length?(t=N8.call(r),e):t.slice()},e.tickFormat=function(r,i){return sC(n[0],qt(n),r??10,i)},e.copy=function(){return FC().domain(e.domain()).range(e.range())},e}const Nu=new Map,T8=Symbol("vega_scale");function P8(n){return n[T8]=!0,n}function L8(n,t,e){const r=function(){const s=t();return s.invertRange||(s.invertRange=s.invert?D8(s):s.invertExtent?k8(s):void 0),s.type=n,P8(s)};return r.metadata=Cl(Hf(e)),r}function fe(n,t,e){return arguments.length>1?(Nu.set(n,L8(n,t,e)),this):O8(n)?Nu.get(n):void 0}fe(S8,aC),fe(hs,oC,Ge),fe(gr,Gh,[Ge,gr]),fe(Na,Yh,Ge),fe(Ta,f8,Ge),fe(Ru,dC,Ge),fe(xC,d8,[Ge,DC]),fe(BC,g8,[Ge,DC]),fe(gn,Vh,[Ge,Pt]),fe(`${gn}-${hs}`,Vh,[Ge,Pt]),fe(`${gn}-${gr}`,yC,[Ge,Pt,gr]),fe(`${gn}-${Na}`,Jh,[Ge,Pt]),fe(`${gn}-${Ta}`,p8,[Ge,Pt]),fe(`${gn}-${Ru}`,wC,[Ge,Pt]),fe(`${ds}-${hs}`,IC,[Ge,Pt]),fe(`${ds}-${gr}`,EC,[Ge,Pt,gr]),fe(`${ds}-${Na}`,qh,[Ge,Pt]),fe(`${ds}-${Ta}`,m8,[Ge,Pt]),fe(`${ds}-${Ru}`,bC,[Ge,Pt]),fe(jh,pC,[La,jh]),fe(vC,mC,La),fe(QC,CC,La),fe(Zh,FC,[Pa,La]),fe(Wh,Ch,Pa),fe(SC,$h,Pa),fe(Xh,F8,Pa);function O8(n){return Nu.has(n)}function Oa(n,t){const e=Nu.get(n);return e&&e.metadata[t]}function Ke(n){return Oa(n,Ge)}function pr(n){return Oa(n,Pa)}function ci(n){return Oa(n,La)}function MC(n){return Oa(n,gr)}function Tu(n){return Oa(n,Pt)}function U8(n,t){const e=t[0],r=qt(t)-e;return function(i){return n(e+i*r)}}function Pu(n,t,e){return Ph(RC(t||"rgb",e),n)}function G8(n,t){const e=new Array(t),r=t+1;for(let i=0;i<t;)e[i]=n(++i/r);return e}function RC(n,t){const e=$k[z8(n)];return t!=null&&e&&e.gamma?e.gamma(t):e}function z8(n){return"interpolate"+n.toLowerCase().split("-").map(t=>t[0].toUpperCase()+t.slice(1)).join("")}const H8={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"},Y8={accent:y8,category10:C8,category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",dark2:w8,observable10:I8,paired:E8,pastel1:b8,pastel2:x8,set1:B8,set2:v8,set3:Q8,tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5"};function NC(n){if(Xe(n))return n;const t=n.length/6|0,e=new Array(t);for(let r=0;r<t;)e[r]="#"+n.slice(r*6,++r*6);return e}function TC(n,t){for(const e in n)ed(e,t(n[e]))}const PC={};TC(Y8,NC),TC(H8,n=>Pu(NC(n)));function ed(n,t){return n=n&&n.toLowerCase(),arguments.length>1?(PC[n]=t,this):PC[n]}function td(){const n=t=>t;return n.invert=t=>t,n.copy=td,n.invertRange=()=>{},n.type="null",n}class _8{constructor(t,e,r={}){this._container=t,this._sizeSource=e??(()=>({width:void 0,height:void 0})),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;const i=document.createElement("canvas");t.appendChild(i);const s=ck(i,{antialias:!0,depth:!1,premultipliedAlpha:!0,...r});if(!s)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!es(s))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");g1(s);const o=s.getExtension("WEBGL_provoking_vertex");o&&o.provokingVertexWEBGL(o.FIRST_VERTEX_CONVENTION_WEBGL),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA),this.canvas=i,this.gl=s,this._pickingAttachmentOptions=[{format:s.RGBA,type:s.UNSIGNED_BYTE,minMag:s.LINEAR,wrap:s.CLAMP_TO_EDGE}],this._pickingBufferInfo=h1(s,this._pickingAttachmentOptions),s.bindFramebuffer(s.FRAMEBUFFER,null),this.adjustGl()}invalidateSize(){this._logicalCanvasSize=void 0,this.adjustGl()}compileShader(t,e){const r="#version 300 es",i="precision mediump float;";Xe(e)&&(e=e.join(`
424
+ };`)(this)}else this.updateFromDatum=t=>{for(let e=0;e<this.dataUpdaters.length;e++)this.dataUpdaters[e](t)}};const Ns=5,dd=127;function gd(n){const t=[];for(let d=0;d<=dd;d++)t.push(void 0);const e=new Map;for(const d of n.chars)d.id<=dd?t[d.id]=d:e.set(d.id,d);const r=8722;e.has(r)||e.set(r,t[45]);function i(d){return(d<=dd?t[d]:e.get(d))||t[63]}function s(d){return i(d.charCodeAt(0))}const o=n.common.base,a=s("x"),l=s("X"),c=s("q"),u=a.height-Ns*2,f=l.height-Ns*2,h=c.height-a.height+c.yoffset-a.yoffset;function A(d,p=1){let C=0;for(let m=0;m<d.length;m++)C+=i(d.charCodeAt(m)).xadvance;return C/o*p}return{measureWidth:A,getCharByCode:i,getChar:s,xHeight:u,capHeight:f,descent:h,common:n.common}}const LC=2**31-1,G8=-2147483648;function z8(n,t,e,r=e){const i=new Array(n);i.fill(LC);let s=G8,o=-1/0,a=!1;const l=new Array(n);l.fill(0);const c=t[0],f=(t[1]-t[0])/n,h=(m,w)=>{const b=(m-c)/f,y=Math.floor(b);return Es(w&&y==b?y-1:y,0,n-1)};function A(m,w,b){if(a)return;if(w>s)s=w;else{a=!0;return}const y=e(m);if(y<o){a=!0;return}o=y;const x=h(y,!1);i[x]>w&&(i[x]=w),l[x]<b&&(l[x]=b)}function d(m,w,b){if(a)return;if(w>s)s=w;else{a=!0,console.debug("Items (vertices) are not ordered properly. Disabling binned index.");return}const y=e(m),x=r(m);if(y<o){a=!0;return}else if(x<y){a=!0;return}o=y;const B=h(y,!1),E=h(x,!0);for(let Q=B;Q<=E;Q++)i[Q]>w&&(i[Q]=w),l[Q]<b&&(l[Q]=b)}const p=(m,w,b=[0,0])=>{const y=h(m,!1),x=h(w,!0),B=i[y],E=Math.max(l[x],B);return b[0]=B,b[1]=E,b},C=()=>{if(a)return;for(let w=1;w<l.length;w++)l[w]<l[w-1]&&(l[w]=l[w-1]);let m=!0;for(let w=i.length-1;w>0;w--)m&&i[w]==LC?(i[w]=l[w],m=!1):i[w-1]>i[w]&&(i[w-1]=i[w]);return p};return A.getIndex=C,d.getIndex=C,e==r?A:d}function hn(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}function mr(n,t){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}const ff=Symbol("implicit");function pd(){var n=new vn,t=[],e=[],r=ff;function i(s){let o=n.get(s);if(o===void 0){if(r!==ff)return r;n.set(s,o=t.push(s)-1)}return e[o%e.length]}return i.domain=function(s){if(!arguments.length)return t.slice();t=[],n=new vn;for(const o of s)n.has(o)||n.set(o,t.push(o)-1);return i},i.range=function(s){return arguments.length?(e=Array.from(s),i):e.slice()},i.unknown=function(s){return arguments.length?(r=s,i):r},i.copy=function(){return pd(t,e).unknown(r)},hn.apply(i,arguments),i}function Ts(n,t,e){n.prototype=t.prototype=e,e.constructor=n}function ac(n,t){var e=Object.create(n.prototype);for(var r in t)e[r]=t[r];return e}function Cr(){}var di=.7,Ps=1/di,Ls="\\s*([+-]?\\d+)\\s*",cc="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",dn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",H8=/^#([0-9a-f]{3,8})$/,V8=new RegExp(`^rgb\\(${Ls},${Ls},${Ls}\\)$`),_8=new RegExp(`^rgb\\(${dn},${dn},${dn}\\)$`),Y8=new RegExp(`^rgba\\(${Ls},${Ls},${Ls},${cc}\\)$`),J8=new RegExp(`^rgba\\(${dn},${dn},${dn},${cc}\\)$`),q8=new RegExp(`^hsl\\(${cc},${dn},${dn}\\)$`),K8=new RegExp(`^hsla\\(${cc},${dn},${dn},${cc}\\)$`),OC={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};Ts(Cr,yr,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:UC,formatHex:UC,formatHex8:j8,formatHsl:W8,formatRgb:GC,toString:GC});function UC(){return this.rgb().formatHex()}function j8(){return this.rgb().formatHex8()}function W8(){return YC(this).formatHsl()}function GC(){return this.rgb().formatRgb()}function yr(n){var t,e;return n=(n+"").trim().toLowerCase(),(t=H8.exec(n))?(e=t[1].length,t=parseInt(t[1],16),e===6?zC(t):e===3?new _e(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):e===8?Af(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):e===4?Af(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=V8.exec(n))?new _e(t[1],t[2],t[3],1):(t=_8.exec(n))?new _e(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Y8.exec(n))?Af(t[1],t[2],t[3],t[4]):(t=J8.exec(n))?Af(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=q8.exec(n))?_C(t[1],t[2]/100,t[3]/100,1):(t=K8.exec(n))?_C(t[1],t[2]/100,t[3]/100,t[4]):OC.hasOwnProperty(n)?zC(OC[n]):n==="transparent"?new _e(NaN,NaN,NaN,0):null}function zC(n){return new _e(n>>16&255,n>>8&255,n&255,1)}function Af(n,t,e,r){return r<=0&&(n=t=e=NaN),new _e(n,t,e,r)}function md(n){return n instanceof Cr||(n=yr(n)),n?(n=n.rgb(),new _e(n.r,n.g,n.b,n.opacity)):new _e}function hf(n,t,e,r){return arguments.length===1?md(n):new _e(n,t,e,r??1)}function _e(n,t,e,r){this.r=+n,this.g=+t,this.b=+e,this.opacity=+r}Ts(_e,hf,ac(Cr,{brighter(n){return n=n==null?Ps:Math.pow(Ps,n),new _e(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?di:Math.pow(di,n),new _e(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new _e(gi(this.r),gi(this.g),gi(this.b),df(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:X8,formatRgb:VC,toString:VC}));function HC(){return`#${pi(this.r)}${pi(this.g)}${pi(this.b)}`}function X8(){return`#${pi(this.r)}${pi(this.g)}${pi(this.b)}${pi((isNaN(this.opacity)?1:this.opacity)*255)}`}function VC(){const n=df(this.opacity);return`${n===1?"rgb(":"rgba("}${gi(this.r)}, ${gi(this.g)}, ${gi(this.b)}${n===1?")":`, ${n})`}`}function df(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function gi(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function pi(n){return n=gi(n),(n<16?"0":"")+n.toString(16)}function _C(n,t,e,r){return r<=0?n=t=e=NaN:e<=0||e>=1?n=t=NaN:t<=0&&(n=NaN),new Xt(n,t,e,r)}function YC(n){if(n instanceof Xt)return new Xt(n.h,n.s,n.l,n.opacity);if(n instanceof Cr||(n=yr(n)),!n)return new Xt;if(n instanceof Xt)return n;n=n.rgb();var t=n.r/255,e=n.g/255,r=n.b/255,i=Math.min(t,e,r),s=Math.max(t,e,r),o=NaN,a=s-i,l=(s+i)/2;return a?(t===s?o=(e-r)/a+(e<r)*6:e===s?o=(r-t)/a+2:o=(t-e)/a+4,a/=l<.5?s+i:2-s-i,o*=60):a=l>0&&l<1?0:o,new Xt(o,a,l,n.opacity)}function Cd(n,t,e,r){return arguments.length===1?YC(n):new Xt(n,t,e,r??1)}function Xt(n,t,e,r){this.h=+n,this.s=+t,this.l=+e,this.opacity=+r}Ts(Xt,Cd,ac(Cr,{brighter(n){return n=n==null?Ps:Math.pow(Ps,n),new Xt(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?di:Math.pow(di,n),new Xt(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*t,i=2*e-r;return new _e(yd(n>=240?n-240:n+120,i,r),yd(n,i,r),yd(n<120?n+240:n-120,i,r),this.opacity)},clamp(){return new Xt(JC(this.h),gf(this.s),gf(this.l),df(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 n=df(this.opacity);return`${n===1?"hsl(":"hsla("}${JC(this.h)}, ${gf(this.s)*100}%, ${gf(this.l)*100}%${n===1?")":`, ${n})`}`}}));function JC(n){return n=(n||0)%360,n<0?n+360:n}function gf(n){return Math.max(0,Math.min(1,n||0))}function yd(n,t,e){return(n<60?t+(e-t)*n/60:n<180?e:n<240?t+(e-t)*(240-n)/60:t)*255}const qC=Math.PI/180,KC=180/Math.PI,pf=18,jC=.96422,WC=1,XC=.82521,ZC=4/29,Os=6/29,$C=3*Os*Os,Z8=Os*Os*Os;function ey(n){if(n instanceof gn)return new gn(n.l,n.a,n.b,n.opacity);if(n instanceof Tn)return ty(n);n instanceof _e||(n=md(n));var t=xd(n.r),e=xd(n.g),r=xd(n.b),i=Id((.2225045*t+.7168786*e+.0606169*r)/WC),s,o;return t===e&&e===r?s=o=i:(s=Id((.4360747*t+.3850649*e+.1430804*r)/jC),o=Id((.0139322*t+.0971045*e+.7141733*r)/XC)),new gn(116*i-16,500*(s-i),200*(i-o),n.opacity)}function wd(n,t,e,r){return arguments.length===1?ey(n):new gn(n,t,e,r??1)}function gn(n,t,e,r){this.l=+n,this.a=+t,this.b=+e,this.opacity=+r}Ts(gn,wd,ac(Cr,{brighter(n){return new gn(this.l+pf*(n??1),this.a,this.b,this.opacity)},darker(n){return new gn(this.l-pf*(n??1),this.a,this.b,this.opacity)},rgb(){var n=(this.l+16)/116,t=isNaN(this.a)?n:n+this.a/500,e=isNaN(this.b)?n:n-this.b/200;return t=jC*Ed(t),n=WC*Ed(n),e=XC*Ed(e),new _e(bd(3.1338561*t-1.6168667*n-.4906146*e),bd(-.9787684*t+1.9161415*n+.033454*e),bd(.0719453*t-.2289914*n+1.4052427*e),this.opacity)}}));function Id(n){return n>Z8?Math.pow(n,1/3):n/$C+ZC}function Ed(n){return n>Os?n*n*n:$C*(n-ZC)}function bd(n){return 255*(n<=.0031308?12.92*n:1.055*Math.pow(n,1/2.4)-.055)}function xd(n){return(n/=255)<=.04045?n/12.92:Math.pow((n+.055)/1.055,2.4)}function $8(n){if(n instanceof Tn)return new Tn(n.h,n.c,n.l,n.opacity);if(n instanceof gn||(n=ey(n)),n.a===0&&n.b===0)return new Tn(NaN,0<n.l&&n.l<100?0:NaN,n.l,n.opacity);var t=Math.atan2(n.b,n.a)*KC;return new Tn(t<0?t+360:t,Math.sqrt(n.a*n.a+n.b*n.b),n.l,n.opacity)}function Bd(n,t,e,r){return arguments.length===1?$8(n):new Tn(n,t,e,r??1)}function Tn(n,t,e,r){this.h=+n,this.c=+t,this.l=+e,this.opacity=+r}function ty(n){if(isNaN(n.h))return new gn(n.l,0,0,n.opacity);var t=n.h*qC;return new gn(n.l,Math.cos(t)*n.c,Math.sin(t)*n.c,n.opacity)}Ts(Tn,Bd,ac(Cr,{brighter(n){return new Tn(this.h,this.c,this.l+pf*(n??1),this.opacity)},darker(n){return new Tn(this.h,this.c,this.l-pf*(n??1),this.opacity)},rgb(){return ty(this).rgb()}}));var ny=-.14861,vd=1.78277,Sd=-.29227,mf=-.90649,lc=1.97294,ry=lc*mf,iy=lc*vd,sy=vd*Sd-mf*ny;function eF(n){if(n instanceof mi)return new mi(n.h,n.s,n.l,n.opacity);n instanceof _e||(n=md(n));var t=n.r/255,e=n.g/255,r=n.b/255,i=(sy*r+ry*t-iy*e)/(sy+ry-iy),s=r-i,o=(lc*(e-i)-Sd*s)/mf,a=Math.sqrt(o*o+s*s)/(lc*i*(1-i)),l=a?Math.atan2(o,s)*KC-120:NaN;return new mi(l<0?l+360:l,a,i,n.opacity)}function Qd(n,t,e,r){return arguments.length===1?eF(n):new mi(n,t,e,r??1)}function mi(n,t,e,r){this.h=+n,this.s=+t,this.l=+e,this.opacity=+r}Ts(mi,Qd,ac(Cr,{brighter(n){return n=n==null?Ps:Math.pow(Ps,n),new mi(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?di:Math.pow(di,n),new mi(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=isNaN(this.h)?0:(this.h+120)*qC,t=+this.l,e=isNaN(this.s)?0:this.s*t*(1-t),r=Math.cos(n),i=Math.sin(n);return new _e(255*(t+e*(ny*r+vd*i)),255*(t+e*(Sd*r+mf*i)),255*(t+e*(lc*r)),this.opacity)}}));function oy(n,t,e,r,i){var s=n*n,o=s*n;return((1-3*n+3*s-o)*t+(4-6*s+3*o)*e+(1+3*n+3*s-3*o)*r+o*i)/6}function ay(n){var t=n.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,t-1):Math.floor(e*t),i=n[r],s=n[r+1],o=r>0?n[r-1]:2*i-s,a=r<t-1?n[r+2]:2*s-i;return oy((e-r/t)*t,o,i,s,a)}}function cy(n){var t=n.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*t),i=n[(r+t-1)%t],s=n[r%t],o=n[(r+1)%t],a=n[(r+2)%t];return oy((e-r/t)*t,i,s,o,a)}}const Cf=n=>()=>n;function ly(n,t){return function(e){return n+e*t}}function tF(n,t,e){return n=Math.pow(n,e),t=Math.pow(t,e)-n,e=1/e,function(r){return Math.pow(n+r*t,e)}}function yf(n,t){var e=t-n;return e?ly(n,e>180||e<-180?e-360*Math.round(e/360):e):Cf(isNaN(n)?t:n)}function nF(n){return(n=+n)==1?Ye:function(t,e){return e-t?tF(t,e,n):Cf(isNaN(t)?e:t)}}function Ye(n,t){var e=t-n;return e?ly(n,e):Cf(isNaN(n)?t:n)}const Dd=(function n(t){var e=nF(t);function r(i,s){var o=e((i=hf(i)).r,(s=hf(s)).r),a=e(i.g,s.g),l=e(i.b,s.b),c=Ye(i.opacity,s.opacity);return function(u){return i.r=o(u),i.g=a(u),i.b=l(u),i.opacity=c(u),i+""}}return r.gamma=n,r})(1);function uy(n){return function(t){var e=t.length,r=new Array(e),i=new Array(e),s=new Array(e),o,a;for(o=0;o<e;++o)a=hf(t[o]),r[o]=a.r||0,i[o]=a.g||0,s[o]=a.b||0;return r=n(r),i=n(i),s=n(s),a.opacity=1,function(l){return a.r=r(l),a.g=i(l),a.b=s(l),a+""}}}var rF=uy(ay),iF=uy(cy);function kd(n,t){t||(t=[]);var e=n?Math.min(t.length,n.length):0,r=t.slice(),i;return function(s){for(i=0;i<e;++i)r[i]=n[i]*(1-s)+t[i]*s;return r}}function fy(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function sF(n,t){return(fy(t)?kd:Ay)(n,t)}function Ay(n,t){var e=t?t.length:0,r=n?Math.min(e,n.length):0,i=new Array(r),s=new Array(e),o;for(o=0;o<r;++o)i[o]=wr(n[o],t[o]);for(;o<e;++o)s[o]=t[o];return function(a){for(o=0;o<r;++o)s[o]=i[o](a);return s}}function hy(n,t){var e=new Date;return n=+n,t=+t,function(r){return e.setTime(n*(1-r)+t*r),e}}function Zt(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function dy(n,t){var e={},r={},i;(n===null||typeof n!="object")&&(n={}),(t===null||typeof t!="object")&&(t={});for(i in t)i in n?e[i]=wr(n[i],t[i]):r[i]=t[i];return function(s){for(i in e)r[i]=e[i](s);return r}}var Fd=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Md=new RegExp(Fd.source,"g");function oF(n){return function(){return n}}function aF(n){return function(t){return n(t)+""}}function gy(n,t){var e=Fd.lastIndex=Md.lastIndex=0,r,i,s,o=-1,a=[],l=[];for(n=n+"",t=t+"";(r=Fd.exec(n))&&(i=Md.exec(t));)(s=i.index)>e&&(s=t.slice(e,s),a[o]?a[o]+=s:a[++o]=s),(r=r[0])===(i=i[0])?a[o]?a[o]+=i:a[++o]=i:(a[++o]=null,l.push({i:o,x:Zt(r,i)})),e=Md.lastIndex;return e<t.length&&(s=t.slice(e),a[o]?a[o]+=s:a[++o]=s),a.length<2?l[0]?aF(l[0].x):oF(t):(t=l.length,function(c){for(var u=0,f;u<t;++u)a[(f=l[u]).i]=f.x(c);return a.join("")})}function wr(n,t){var e=typeof t,r;return t==null||e==="boolean"?Cf(t):(e==="number"?Zt:e==="string"?(r=yr(t))?(t=r,Dd):gy:t instanceof yr?Dd:t instanceof Date?hy:fy(t)?kd:Array.isArray(t)?Ay:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?dy:Zt)(n,t)}function cF(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}function lF(n,t){var e=yf(+n,+t);return function(r){var i=e(r);return i-360*Math.floor(i/360)}}function uc(n,t){return n=+n,t=+t,function(e){return Math.round(n*(1-e)+t*e)}}var py=180/Math.PI,Rd={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function my(n,t,e,r,i,s){var o,a,l;return(o=Math.sqrt(n*n+t*t))&&(n/=o,t/=o),(l=n*e+t*r)&&(e-=n*l,r-=t*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),n*r<t*e&&(n=-n,t=-t,l=-l,o=-o),{translateX:i,translateY:s,rotate:Math.atan2(t,n)*py,skewX:Math.atan(l)*py,scaleX:o,scaleY:a}}var wf;function uF(n){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(n+"");return t.isIdentity?Rd:my(t.a,t.b,t.c,t.d,t.e,t.f)}function fF(n){return n==null||(wf||(wf=document.createElementNS("http://www.w3.org/2000/svg","g")),wf.setAttribute("transform",n),!(n=wf.transform.baseVal.consolidate()))?Rd:(n=n.matrix,my(n.a,n.b,n.c,n.d,n.e,n.f))}function Cy(n,t,e,r){function i(c){return c.length?c.pop()+" ":""}function s(c,u,f,h,A,d){if(c!==f||u!==h){var p=A.push("translate(",null,t,null,e);d.push({i:p-4,x:Zt(c,f)},{i:p-2,x:Zt(u,h)})}else(f||h)&&A.push("translate("+f+t+h+e)}function o(c,u,f,h){c!==u?(c-u>180?u+=360:u-c>180&&(c+=360),h.push({i:f.push(i(f)+"rotate(",null,r)-2,x:Zt(c,u)})):u&&f.push(i(f)+"rotate("+u+r)}function a(c,u,f,h){c!==u?h.push({i:f.push(i(f)+"skewX(",null,r)-2,x:Zt(c,u)}):u&&f.push(i(f)+"skewX("+u+r)}function l(c,u,f,h,A,d){if(c!==f||u!==h){var p=A.push(i(A)+"scale(",null,",",null,")");d.push({i:p-4,x:Zt(c,f)},{i:p-2,x:Zt(u,h)})}else(f!==1||h!==1)&&A.push(i(A)+"scale("+f+","+h+")")}return function(c,u){var f=[],h=[];return c=n(c),u=n(u),s(c.translateX,c.translateY,u.translateX,u.translateY,f,h),o(c.rotate,u.rotate,f,h),a(c.skewX,u.skewX,f,h),l(c.scaleX,c.scaleY,u.scaleX,u.scaleY,f,h),c=u=null,function(A){for(var d=-1,p=h.length,C;++d<p;)f[(C=h[d]).i]=C.x(A);return f.join("")}}}var AF=Cy(uF,"px, ","px)","deg)"),hF=Cy(fF,", ",")",")"),dF=1e-12;function yy(n){return((n=Math.exp(n))+1/n)/2}function gF(n){return((n=Math.exp(n))-1/n)/2}function pF(n){return((n=Math.exp(2*n))-1)/(n+1)}const mF=(function n(t,e,r){function i(s,o){var a=s[0],l=s[1],c=s[2],u=o[0],f=o[1],h=o[2],A=u-a,d=f-l,p=A*A+d*d,C,m;if(p<dF)m=Math.log(h/c)/t,C=function(E){return[a+E*A,l+E*d,c*Math.exp(t*E*m)]};else{var w=Math.sqrt(p),b=(h*h-c*c+r*p)/(2*c*e*w),y=(h*h-c*c-r*p)/(2*h*e*w),x=Math.log(Math.sqrt(b*b+1)-b),B=Math.log(Math.sqrt(y*y+1)-y);m=(B-x)/t,C=function(E){var Q=E*m,F=yy(x),k=c/(e*w)*(F*pF(t*Q+x)-gF(x));return[a+k*A,l+k*d,c*F/yy(t*Q+x)]}}return C.duration=m*1e3*t/Math.SQRT2,C}return i.rho=function(s){var o=Math.max(.001,+s),a=o*o,l=a*a;return n(o,a,l)},i})(Math.SQRT2,2,4);function wy(n){return function(t,e){var r=n((t=Cd(t)).h,(e=Cd(e)).h),i=Ye(t.s,e.s),s=Ye(t.l,e.l),o=Ye(t.opacity,e.opacity);return function(a){return t.h=r(a),t.s=i(a),t.l=s(a),t.opacity=o(a),t+""}}}const CF=wy(yf);var yF=wy(Ye);function wF(n,t){var e=Ye((n=wd(n)).l,(t=wd(t)).l),r=Ye(n.a,t.a),i=Ye(n.b,t.b),s=Ye(n.opacity,t.opacity);return function(o){return n.l=e(o),n.a=r(o),n.b=i(o),n.opacity=s(o),n+""}}function Iy(n){return function(t,e){var r=n((t=Bd(t)).h,(e=Bd(e)).h),i=Ye(t.c,e.c),s=Ye(t.l,e.l),o=Ye(t.opacity,e.opacity);return function(a){return t.h=r(a),t.c=i(a),t.l=s(a),t.opacity=o(a),t+""}}}const IF=Iy(yf);var EF=Iy(Ye);function Ey(n){return(function t(e){e=+e;function r(i,s){var o=n((i=Qd(i)).h,(s=Qd(s)).h),a=Ye(i.s,s.s),l=Ye(i.l,s.l),c=Ye(i.opacity,s.opacity);return function(u){return i.h=o(u),i.s=a(u),i.l=l(Math.pow(u,e)),i.opacity=c(u),i+""}}return r.gamma=t,r})(1)}const bF=Ey(yf);var xF=Ey(Ye);function Nd(n,t){t===void 0&&(t=n,n=wr);for(var e=0,r=t.length-1,i=t[0],s=new Array(r<0?0:r);e<r;)s[e]=n(i,i=t[++e]);return function(o){var a=Math.max(0,Math.min(r-1,Math.floor(o*=r)));return s[a](o-a)}}function BF(n,t){for(var e=new Array(t),r=0;r<t;++r)e[r]=n(r/(t-1));return e}const vF=Object.freeze(Object.defineProperty({__proto__:null,interpolate:wr,interpolateArray:sF,interpolateBasis:ay,interpolateBasisClosed:cy,interpolateCubehelix:bF,interpolateCubehelixLong:xF,interpolateDate:hy,interpolateDiscrete:cF,interpolateHcl:IF,interpolateHclLong:EF,interpolateHsl:CF,interpolateHslLong:yF,interpolateHue:lF,interpolateLab:wF,interpolateNumber:Zt,interpolateNumberArray:kd,interpolateObject:dy,interpolateRgb:Dd,interpolateRgbBasis:rF,interpolateRgbBasisClosed:iF,interpolateRound:uc,interpolateString:gy,interpolateTransformCss:AF,interpolateTransformSvg:hF,interpolateZoom:mF,piecewise:Nd,quantize:BF},Symbol.toStringTag,{value:"Module"}));function SF(n){return function(){return n}}function Td(n){return+n}var by=[0,1];function bt(n){return n}function Pd(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:SF(isNaN(t)?NaN:.5)}function QF(n,t){var e;return n>t&&(e=n,n=t,t=e),function(r){return Math.max(n,Math.min(t,r))}}function DF(n,t,e){var r=n[0],i=n[1],s=t[0],o=t[1];return i<r?(r=Pd(i,r),s=e(o,s)):(r=Pd(r,i),s=e(s,o)),function(a){return s(r(a))}}function kF(n,t,e){var r=Math.min(n.length,t.length)-1,i=new Array(r),s=new Array(r),o=-1;for(n[r]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++o<r;)i[o]=Pd(n[o],n[o+1]),s[o]=e(t[o],t[o+1]);return function(a){var l=or(n,a,1,r)-1;return s[l](i[l](a))}}function fc(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function If(){var n=by,t=by,e=wr,r,i,s,o=bt,a,l,c;function u(){var h=Math.min(n.length,t.length);return o!==bt&&(o=QF(n[0],n[h-1])),a=h>2?kF:DF,l=c=null,f}function f(h){return h==null||isNaN(h=+h)?s:(l||(l=a(n.map(r),t,e)))(r(o(h)))}return f.invert=function(h){return o(i((c||(c=a(t,n.map(r),Zt)))(h)))},f.domain=function(h){return arguments.length?(n=Array.from(h,Td),u()):n.slice()},f.range=function(h){return arguments.length?(t=Array.from(h),u()):t.slice()},f.rangeRound=function(h){return t=Array.from(h),e=uc,u()},f.clamp=function(h){return arguments.length?(o=h?!0:bt,u()):o!==bt},f.interpolate=function(h){return arguments.length?(e=h,u()):e},f.unknown=function(h){return arguments.length?(s=h,f):s},function(h,A){return r=h,i=A,u()}}function xy(){return If()(bt,bt)}function By(n,t,e,r){var i=ei(n,t,e),s;switch(r=ps(r??",f"),r.type){case"s":{var o=Math.max(Math.abs(n),Math.abs(t));return r.precision==null&&!isNaN(s=Bv(i,o))&&(r.precision=s),em(r,o)}case"":case"e":case"g":case"p":case"r":{r.precision==null&&!isNaN(s=vv(i,Math.max(Math.abs(n),Math.abs(t))))&&(r.precision=s-(r.type==="e"));break}case"f":case"%":{r.precision==null&&!isNaN(s=xv(i))&&(r.precision=s-(r.type==="%")*2);break}}return We(r)}function Ci(n){var t=n.domain;return n.ticks=function(e){var r=t();return du(r[0],r[r.length-1],e??10)},n.tickFormat=function(e,r){var i=t();return By(i[0],i[i.length-1],e??10,r)},n.nice=function(e){e==null&&(e=10);var r=t(),i=0,s=r.length-1,o=r[i],a=r[s],l,c,u=10;for(a<o&&(c=o,o=a,a=c,c=i,i=s,s=c);u-- >0;){if(c=$A(o,a,e),c===l)return r[i]=o,r[s]=a,t(r);if(c>0)o=Math.floor(o/c)*c,a=Math.ceil(a/c)*c;else if(c<0)o=Math.ceil(o*c)/c,a=Math.floor(a*c)/c;else break;l=c}return n},n}function vy(){var n=xy();return n.copy=function(){return fc(n,vy())},hn.apply(n,arguments),Ci(n)}function Sy(n){var t;function e(r){return r==null||isNaN(r=+r)?t:r}return e.invert=e,e.domain=e.range=function(r){return arguments.length?(n=Array.from(r,Td),e):n.slice()},e.unknown=function(r){return arguments.length?(t=r,e):t},e.copy=function(){return Sy(n).unknown(t)},n=arguments.length?Array.from(n,Td):[0,1],Ci(e)}function Qy(n,t){n=n.slice();var e=0,r=n.length-1,i=n[e],s=n[r],o;return s<i&&(o=e,e=r,r=o,o=i,i=s,s=o),n[e]=t.floor(i),n[r]=t.ceil(s),n}function Dy(n){return Math.log(n)}function ky(n){return Math.exp(n)}function FF(n){return-Math.log(-n)}function MF(n){return-Math.exp(-n)}function RF(n){return isFinite(n)?+("1e"+n):n<0?0:n}function NF(n){return n===10?RF:n===Math.E?Math.exp:t=>Math.pow(n,t)}function TF(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),t=>Math.log(t)/n)}function Fy(n){return(t,e)=>-n(-t,e)}function Ld(n){const t=n(Dy,ky),e=t.domain;let r=10,i,s;function o(){return i=TF(r),s=NF(r),e()[0]<0?(i=Fy(i),s=Fy(s),n(FF,MF)):n(Dy,ky),t}return t.base=function(a){return arguments.length?(r=+a,o()):r},t.domain=function(a){return arguments.length?(e(a),o()):e()},t.ticks=a=>{const l=e();let c=l[0],u=l[l.length-1];const f=u<c;f&&([c,u]=[u,c]);let h=i(c),A=i(u),d,p;const C=a==null?10:+a;let m=[];if(!(r%1)&&A-h<C){if(h=Math.floor(h),A=Math.ceil(A),c>0){for(;h<=A;++h)for(d=1;d<r;++d)if(p=h<0?d/s(-h):d*s(h),!(p<c)){if(p>u)break;m.push(p)}}else for(;h<=A;++h)for(d=r-1;d>=1;--d)if(p=h>0?d/s(-h):d*s(h),!(p<c)){if(p>u)break;m.push(p)}m.length*2<C&&(m=du(c,u,C))}else m=du(h,A,Math.min(A-h,C)).map(s);return f?m.reverse():m},t.tickFormat=(a,l)=>{if(a==null&&(a=10),l==null&&(l=r===10?"s":","),typeof l!="function"&&(!(r%1)&&(l=ps(l)).precision==null&&(l.trim=!0),l=We(l)),a===1/0)return l;const c=Math.max(1,r*a/t.ticks().length);return u=>{let f=u/s(Math.round(i(u)));return f*r<r-.5&&(f*=r),f<=c?l(u):""}},t.nice=()=>e(Qy(e(),{floor:a=>s(Math.floor(i(a))),ceil:a=>s(Math.ceil(i(a)))})),t}function Od(){const n=Ld(If()).domain([1,10]);return n.copy=()=>fc(n,Od()).base(n.base()),hn.apply(n,arguments),n}function My(n){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/n))}}function Ry(n){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*n}}function Ud(n){var t=1,e=n(My(t),Ry(t));return e.constant=function(r){return arguments.length?n(My(t=+r),Ry(t)):t},Ci(e)}function Ny(){var n=Ud(If());return n.copy=function(){return fc(n,Ny()).constant(n.constant())},hn.apply(n,arguments)}function Ty(n){return function(t){return t<0?-Math.pow(-t,n):Math.pow(t,n)}}function PF(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function LF(n){return n<0?-n*n:n*n}function Gd(n){var t=n(bt,bt),e=1;function r(){return e===1?n(bt,bt):e===.5?n(PF,LF):n(Ty(e),Ty(1/e))}return t.exponent=function(i){return arguments.length?(e=+i,r()):e},Ci(t)}function zd(){var n=Gd(If());return n.copy=function(){return fc(n,zd()).exponent(n.exponent())},hn.apply(n,arguments),n}function OF(){return zd.apply(null,arguments).exponent(.5)}function Py(){var n=[],t=[],e=[],r;function i(){var o=0,a=Math.max(1,t.length);for(e=new Array(a-1);++o<a;)e[o-1]=Kp(n,o/a);return s}function s(o){return o==null||isNaN(o=+o)?r:t[or(e,o)]}return s.invertExtent=function(o){var a=t.indexOf(o);return a<0?[NaN,NaN]:[a>0?e[a-1]:n[0],a<e.length?e[a]:n[n.length-1]]},s.domain=function(o){if(!arguments.length)return n.slice();n=[];for(let a of o)a!=null&&!isNaN(a=+a)&&n.push(a);return n.sort(Zr),i()},s.range=function(o){return arguments.length?(t=Array.from(o),i()):t.slice()},s.unknown=function(o){return arguments.length?(r=o,s):r},s.quantiles=function(){return e.slice()},s.copy=function(){return Py().domain(n).range(t).unknown(r)},hn.apply(s,arguments)}function Ly(){var n=0,t=1,e=1,r=[.5],i=[0,1],s;function o(l){return l!=null&&l<=l?i[or(r,l,0,e)]:s}function a(){var l=-1;for(r=new Array(e);++l<e;)r[l]=((l+1)*t-(l-e)*n)/(e+1);return o}return o.domain=function(l){return arguments.length?([n,t]=l,n=+n,t=+t,a()):[n,t]},o.range=function(l){return arguments.length?(e=(i=Array.from(l)).length-1,a()):i.slice()},o.invertExtent=function(l){var c=i.indexOf(l);return c<0?[NaN,NaN]:c<1?[n,r[0]]:c>=e?[r[e-1],t]:[r[c-1],r[c]]},o.unknown=function(l){return arguments.length&&(s=l),o},o.thresholds=function(){return r.slice()},o.copy=function(){return Ly().domain([n,t]).range(i).unknown(s)},hn.apply(Ci(o),arguments)}function Oy(){var n=[.5],t=[0,1],e,r=1;function i(s){return s!=null&&s<=s?t[or(n,s,0,r)]:e}return i.domain=function(s){return arguments.length?(n=Array.from(s),r=Math.min(n.length,t.length-1),i):n.slice()},i.range=function(s){return arguments.length?(t=Array.from(s),r=Math.min(n.length,t.length-1),i):t.slice()},i.invertExtent=function(s){var o=t.indexOf(s);return[n[o-1],n[o]]},i.unknown=function(s){return arguments.length?(e=s,i):e},i.copy=function(){return Oy().domain(n).range(t).unknown(e)},hn.apply(i,arguments)}function UF(n){return new Date(n)}function GF(n){return n instanceof Date?+n:+new Date(+n)}function Hd(n,t,e,r,i,s,o,a,l,c){var u=xy(),f=u.invert,h=u.domain,A=c(".%L"),d=c(":%S"),p=c("%I:%M"),C=c("%I %p"),m=c("%a %d"),w=c("%b %d"),b=c("%B"),y=c("%Y");function x(B){return(l(B)<B?A:a(B)<B?d:o(B)<B?p:s(B)<B?C:r(B)<B?i(B)<B?m:w:e(B)<B?b:y)(B)}return u.invert=function(B){return new Date(f(B))},u.domain=function(B){return arguments.length?h(Array.from(B,GF)):h().map(UF)},u.ticks=function(B){var E=h();return n(E[0],E[E.length-1],B??10)},u.tickFormat=function(B,E){return E==null?x:c(E)},u.nice=function(B){var E=h();return(!B||typeof B.range!="function")&&(B=t(E[0],E[E.length-1],B??10)),B?h(Qy(E,B)):u},u.copy=function(){return fc(u,Hd(n,t,e,r,i,s,o,a,l,c))},u}function zF(){return hn.apply(Hd(Lv,Ov,an,Ra,Fa,ar,wu,Cu,kn,uh).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function HF(){return hn.apply(Hd(Tv,Pv,cn,Na,Ma,ti,Iu,yu,kn,fh).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function Ef(){var n=0,t=1,e,r,i,s,o=bt,a=!1,l;function c(f){return f==null||isNaN(f=+f)?l:o(i===0?.5:(f=(s(f)-e)*i,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([n,t]=f,e=s(n=+n),r=s(t=+t),i=e===r?0:1/(r-e),c):[n,t]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(o=f,c):o};function u(f){return function(h){var A,d;return arguments.length?([A,d]=h,o=f(A,d),c):[o(0),o(1)]}}return c.range=u(wr),c.rangeRound=u(uc),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return s=f,e=f(n),r=f(t),i=e===r?0:1/(r-e),c}}function Ir(n,t){return t.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function Vd(){var n=Ci(Ef()(bt));return n.copy=function(){return Ir(n,Vd())},mr.apply(n,arguments)}function Uy(){var n=Ld(Ef()).domain([1,10]);return n.copy=function(){return Ir(n,Uy()).base(n.base())},mr.apply(n,arguments)}function Gy(){var n=Ud(Ef());return n.copy=function(){return Ir(n,Gy()).constant(n.constant())},mr.apply(n,arguments)}function _d(){var n=Gd(Ef());return n.copy=function(){return Ir(n,_d()).exponent(n.exponent())},mr.apply(n,arguments)}function VF(){return _d.apply(null,arguments).exponent(.5)}function bf(){var n=0,t=.5,e=1,r=1,i,s,o,a,l,c=bt,u,f=!1,h;function A(p){return isNaN(p=+p)?h:(p=.5+((p=+u(p))-s)*(r*p<r*s?a:l),c(f?Math.max(0,Math.min(1,p)):p))}A.domain=function(p){return arguments.length?([n,t,e]=p,i=u(n=+n),s=u(t=+t),o=u(e=+e),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A):[n,t,e]},A.clamp=function(p){return arguments.length?(f=!!p,A):f},A.interpolator=function(p){return arguments.length?(c=p,A):c};function d(p){return function(C){var m,w,b;return arguments.length?([m,w,b]=C,c=Nd(p,[m,w,b]),A):[c(0),c(.5),c(1)]}}return A.range=d(wr),A.rangeRound=d(uc),A.unknown=function(p){return arguments.length?(h=p,A):h},function(p){return u=p,i=p(n),s=p(t),o=p(e),a=i===s?0:.5/(s-i),l=s===o?0:.5/(o-s),r=s<i?-1:1,A}}function zy(){var n=Ci(bf()(bt));return n.copy=function(){return Ir(n,zy())},mr.apply(n,arguments)}function Hy(){var n=Ld(bf()).domain([.1,1,10]);return n.copy=function(){return Ir(n,Hy()).base(n.base())},mr.apply(n,arguments)}function Vy(){var n=Ud(bf());return n.copy=function(){return Ir(n,Vy()).constant(n.constant())},mr.apply(n,arguments)}function Yd(){var n=Gd(bf());return n.copy=function(){return Ir(n,Yd()).exponent(n.exponent())},mr.apply(n,arguments)}function _F(){return Yd.apply(null,arguments).exponent(.5)}function pn(n){for(var t=n.length/6|0,e=new Array(t),r=0;r<t;)e[r]="#"+n.slice(r*6,++r*6);return e}const YF=pn("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),JF=pn("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),qF=pn("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),KF=pn("4269d0efb118ff725c6cc5b03ca951ff8ab7a463f297bbf59c6b4e9498a0"),jF=pn("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),WF=pn("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),XF=pn("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),ZF=pn("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),$F=pn("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),e6=pn("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f");function Jd(n,t,e){const r=n-t+e*2;return n?r>0?r:1:0}const t6="identity",Us="linear",Er="log",Ac="pow",hc="sqrt",xf="symlog",_y="time",Yy="utc",mn="sequential",Gs="diverging",qd="quantile",Jy="quantize",qy="threshold",dc="ordinal",Kd="point",Ky="band",jd="bin-ordinal",Oe="continuous",gc="discrete",pc="discretizing",Lt="interpolating",jy="temporal";function n6(n){return function(t){let e=t[0],r=t[1],i;return r<e&&(i=e,e=r,r=i),[n.invert(e),n.invert(r)]}}function r6(n){return function(t){const e=n.range();let r=t[0],i=t[1],s=-1,o,a,l,c;for(i<r&&(a=r,r=i,i=a),l=0,c=e.length;l<c;++l)e[l]>=r&&e[l]<=i&&(s<0&&(s=l),o=l);if(!(s<0))return r=n.invertExtent(e[s]),i=n.invertExtent(e[o]),[r[0]===void 0?r[1]:r[0],i[1]===void 0?i[0]:i[1]]}}function Wd(){const n=pd().unknown(void 0),t=n.domain,e=n.range;let r=[0,1],i,s,o=!1,a=0,l=0,c=.5;delete n.unknown;function u(){const f=t().length,h=r[1]<r[0],A=r[1-h],d=Jd(f,a,l);let p=r[h-0];i=(A-p)/(d||1),o&&(i=Math.floor(i)),p+=(A-p-i*(f-a))*c,s=i*(1-a),o&&(p=Math.round(p),s=Math.round(s));const C=Da(f).map(m=>p+i*m);return e(h?C.reverse():C)}return n.domain=function(f){return arguments.length?(t(f),u()):t()},n.range=function(f){return arguments.length?(r=[+f[0],+f[1]],u()):r.slice()},n.rangeRound=function(f){return r=[+f[0],+f[1]],o=!0,u()},n.bandwidth=function(){return s},n.step=function(){return i},n.round=function(f){return arguments.length?(o=!!f,u()):o},n.padding=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),a=l,u()):a},n.paddingInner=function(f){return arguments.length?(a=Math.max(0,Math.min(1,f)),u()):a},n.paddingOuter=function(f){return arguments.length?(l=Math.max(0,Math.min(1,f)),u()):l},n.align=function(f){return arguments.length?(c=Math.max(0,Math.min(1,f)),u()):c},n.invertRange=function(f){if(f[0]==null||f[1]==null)return;const h=r[1]<r[0],A=h?e().reverse():e(),d=A.length-1;let p=+f[0],C=+f[1],m,w,b;if(!(p!==p||C!==C)&&(C<p&&(b=p,p=C,C=b),!(C<A[0]||p>r[1-h])))return m=Math.max(0,or(A,p)-1),w=p===C?m:or(A,C)-1,p-A[m]>s+1e-10&&++m,h&&(b=m,m=d-w,w=d-b),m>w?void 0:t().slice(m,w+1)},n.invert=function(f){const h=n.invertRange([f,f]);return h&&h[0]},n.copy=function(){return Wd().domain(t()).range(r).round(o).paddingInner(a).paddingOuter(l).align(c)},u()}function Wy(n){const t=n.copy;return n.padding=n.paddingOuter,delete n.paddingInner,n.copy=function(){return Wy(t())},n}function i6(){return Wy(Wd().paddingInner(1))}var s6=Array.prototype.map;function o6(n){return s6.call(n,pa)}const a6=Array.prototype.slice;function Xy(){let n=[],t=[];function e(r){return r==null||r!==r?void 0:t[(or(n,r)-1)%t.length]}return e.domain=function(r){return arguments.length?(n=o6(r),e):n.slice()},e.range=function(r){return arguments.length?(t=a6.call(r),e):t.slice()},e.tickFormat=function(r,i){return By(n[0],qt(n),r??10,i)},e.copy=function(){return Xy().domain(e.domain()).range(e.range())},e}const Bf=new Map,c6=Symbol("vega_scale");function l6(n){return n[c6]=!0,n}function u6(n,t,e){const r=function(){const s=t();return s.invertRange||(s.invertRange=s.invert?n6(s):s.invertExtent?r6(s):void 0),s.type=n,l6(s)};return r.metadata=au(GA(e)),r}function he(n,t,e){return arguments.length>1?(Bf.set(n,u6(n,t,e)),this):f6(n)?Bf.get(n):void 0}he(t6,Sy),he(Us,vy,Oe),he(Er,Od,[Oe,Er]),he(Ac,zd,Oe),he(hc,OF,Oe),he(xf,Ny,Oe),he(_y,zF,[Oe,jy]),he(Yy,HF,[Oe,jy]),he(mn,Vd,[Oe,Lt]),he(`${mn}-${Us}`,Vd,[Oe,Lt]),he(`${mn}-${Er}`,Uy,[Oe,Lt,Er]),he(`${mn}-${Ac}`,_d,[Oe,Lt]),he(`${mn}-${hc}`,VF,[Oe,Lt]),he(`${mn}-${xf}`,Gy,[Oe,Lt]),he(`${Gs}-${Us}`,zy,[Oe,Lt]),he(`${Gs}-${Er}`,Hy,[Oe,Lt,Er]),he(`${Gs}-${Ac}`,Yd,[Oe,Lt]),he(`${Gs}-${hc}`,_F,[Oe,Lt]),he(`${Gs}-${xf}`,Vy,[Oe,Lt]),he(qd,Py,[pc,qd]),he(Jy,Ly,pc),he(qy,Oy,pc),he(jd,Xy,[gc,pc]),he(dc,pd,gc),he(Ky,Wd,gc),he(Kd,i6,gc);function f6(n){return Bf.has(n)}function mc(n,t){const e=Bf.get(n);return e&&e.metadata[t]}function Je(n){return mc(n,Oe)}function Pn(n){return mc(n,gc)}function yi(n){return mc(n,pc)}function Zy(n){return mc(n,Er)}function vf(n){return mc(n,Lt)}function A6(n,t){const e=t[0],r=qt(t)-e;return function(i){return n(e+i*r)}}function Sf(n,t,e){return Nd($y(t||"rgb",e),n)}function h6(n,t){const e=new Array(t),r=t+1;for(let i=0;i<t;)e[i]=n(++i/r);return e}function $y(n,t){const e=vF[d6(n)];return t!=null&&e&&e.gamma?e.gamma(t):e}function d6(n){return"interpolate"+n.toLowerCase().split("-").map(t=>t[0].toUpperCase()+t.slice(1)).join("")}const g6={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"},p6={accent:JF,category10:YF,category20:"1f77b4aec7e8ff7f0effbb782ca02c98df8ad62728ff98969467bdc5b0d58c564bc49c94e377c2f7b6d27f7f7fc7c7c7bcbd22dbdb8d17becf9edae5",category20b:"393b795254a36b6ecf9c9ede6379398ca252b5cf6bcedb9c8c6d31bd9e39e7ba52e7cb94843c39ad494ad6616be7969c7b4173a55194ce6dbdde9ed6",category20c:"3182bd6baed69ecae1c6dbefe6550dfd8d3cfdae6bfdd0a231a35474c476a1d99bc7e9c0756bb19e9ac8bcbddcdadaeb636363969696bdbdbdd9d9d9",dark2:qF,observable10:KF,paired:jF,pastel1:WF,pastel2:XF,set1:ZF,set2:$F,set3:e6,tableau10:"4c78a8f58518e4575672b7b254a24beeca3bb279a2ff9da69d755dbab0ac",tableau20:"4c78a89ecae9f58518ffbf7954a24b88d27ab79a20f2cf5b43989483bcb6e45756ff9d9879706ebab0acd67195fcbfd2b279a2d6a5c99e765fd8b5a5"};function ew(n){if(je(n))return n;const t=n.length/6|0,e=new Array(t);for(let r=0;r<t;)e[r]="#"+n.slice(r*6,++r*6);return e}function tw(n,t){for(const e in n)Xd(e,t(n[e]))}const nw={};tw(p6,ew),tw(g6,n=>Sf(ew(n)));function Xd(n,t){return n=n&&n.toLowerCase(),arguments.length>1?(nw[n]=t,this):nw[n]}function Zd(){const n=t=>t;return n.invert=t=>t,n.copy=Zd,n.invertRange=()=>{},n.type="null",n}class m6{constructor(t,e,r={}){this._container=t,this._sizeSource=e??(()=>({width:void 0,height:void 0})),this._shaderCache=new Map,this.rangeTextures=new WeakMap,this.selectionTextures=new WeakMap;const i=document.createElement("canvas");t.appendChild(i);const s=T8(i,{antialias:!0,depth:!1,premultipliedAlpha:!0,...r});if(!s)throw new Error("Unable to initialize WebGL. Your browser or machine may not support it.");if(!vs(s))throw new Error("Your web browser does not support WebGL 2.0. Chrome, Firefox, and Safari Tech Preview should work.");TC(s);const o=s.getExtension("WEBGL_provoking_vertex");o&&o.provokingVertexWEBGL(o.FIRST_VERTEX_CONVENTION_WEBGL),s.blendFunc(s.ONE,s.ONE_MINUS_SRC_ALPHA),this.canvas=i,this.gl=s,this._pickingAttachmentOptions=[{format:s.RGBA,type:s.UNSIGNED_BYTE,minMag:s.LINEAR,wrap:s.CLAMP_TO_EDGE}],this._pickingBufferInfo=RC(s,this._pickingAttachmentOptions),s.bindFramebuffer(s.FRAMEBUFFER,null),this.adjustGl()}invalidateSize(){this._logicalCanvasSize=void 0,this.adjustGl()}compileShader(t,e){const r="#version 300 es",i="precision mediump float;";je(e)&&(e=e.join(`
444
425
 
445
426
  `));const s=this.gl,o=e.replaceAll(/ {2,}|^\s*\/\/.*$/gm,"");let a=this._shaderCache.get(o);if(!a){const l=[r,i,e].join(`
446
427
 
447
- `);a=s.createShader(t),s.shaderSource(a,l),s.compileShader(a),this._shaderCache.set(o,a)}return a}adjustGl(){const t=this.getLogicalCanvasSize();this.canvas.style.width=`${t.width}px`,this.canvas.style.height=`${t.height}px`;const e=this.getPhysicalCanvasSize(t);this.canvas.width=e.width,this.canvas.height=e.height,rk(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this.canvas.remove()}getPhysicalCanvasSize(t){const e=window.devicePixelRatio??1;return t=t||this.getLogicalCanvasSize(),{width:t.width*e,height:t.height*e}}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;const t=this._sizeSource(),e=window.getComputedStyle(this._container,null),r=t.width??this._container.clientWidth-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight),i=t.height??this._container.clientHeight-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}createRangeTexture(t,e=!1){const r=this.rangeTextures.get(t.getScale());if(!e&&r)return;function i(o,a){return pr(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?o??4:o}const s=t.channel;if(rr(s)){const o=t.getScale(),a=o.props,l=o.range();let c;if(a.scheme)if(o.type=="threshold"&&l)c=nd(l,this.gl,o.domain().length,r);else{let u=Ce(a.scheme)?void 0:a.scheme.count;u=i(u,o),c=j8(a.scheme,this.gl,u,r)}else Tu(o.type)||Ke(o.type)&&l.length>1?c=W8(l,a.interpolate,this.gl,r):c=nd(l,this.gl,o.domain().length,r);this.rangeTextures.set(o,c)}else{const o=t.getScale();if(o.type==="ordinal"||ci(o.type)){const a=Kl(s)?Jp(s):c=>c,l=o.range();this.rangeTextures.set(o,X8(l.map(a),this.gl,o.domain().length,r))}}}createSelectionTexture(t,e=!0){if(!OA(t))throw new Error("Not a multi-point selection, cannot create texture");const r=Array.from(t.data.keys()),i=r.length>0?r.sort((l,c)=>l-c):[0],s=this.selectionTextures.get(t),o=this.gl,a=Ua(this.gl,{level:0,minMag:o.NEAREST,format:o.RED_INTEGER,internalFormat:o.R32UI,height:1,width:i.length},new Uint32Array(i),e?s:!1);this.selectionTextures.set(t,a)}}function V8(n,t="",e=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...t.matchAll(r)],s=new Map(i.map((o,a)=>{const l=parseInt(o[1]),c=i[a+1],u=c?c.index:t.length,f=t.substring(o.index,u);return[l-1,f]}));return n.split(`
428
+ `);a=s.createShader(t),s.shaderSource(a,l),s.compileShader(a),this._shaderCache.set(o,a)}return a}adjustGl(){const t=this.getLogicalCanvasSize();this.canvas.style.width=`${t.width}px`,this.canvas.style.height=`${t.height}px`;const e=this.getPhysicalCanvasSize(t);this.canvas.width=e.width,this.canvas.height=e.height,k8(this.gl,this._pickingBufferInfo,this._pickingAttachmentOptions)}finalize(){this.canvas.remove()}getPhysicalCanvasSize(t){const e=window.devicePixelRatio??1;return t=t||this.getLogicalCanvasSize(),{width:t.width*e,height:t.height*e}}getLogicalCanvasSize(){if(this._logicalCanvasSize)return this._logicalCanvasSize;const t=this._sizeSource(),e=window.getComputedStyle(this._container,null),r=t.width??this._container.clientWidth-parseFloat(e.paddingLeft)-parseFloat(e.paddingRight),i=t.height??this._container.clientHeight-parseFloat(e.paddingTop)-parseFloat(e.paddingBottom);return this._logicalCanvasSize={width:r,height:i},this._logicalCanvasSize}createRangeTexture(t,e=!1){const r=this.rangeTextures.get(t.getScale());if(!e&&r)return;function i(o,a){return Pn(a.type)?a.domain().length:a.type=="threshold"?a.domain().length+1:a.type=="quantize"||a.type=="quantile"?o??4:o}const s=t.channel;if(ur(s)){const o=t.getScale(),a=o.props,l=o.range();let c;if(a.scheme)if(o.type=="threshold"&&l)c=$d(l,this.gl,o.domain().length,r);else{let u=ye(a.scheme)?void 0:a.scheme.count;u=i(u,o),c=E6(a.scheme,this.gl,u,r)}else vf(o.type)||Je(o.type)&&l.length>1?c=b6(l,a.interpolate,this.gl,r):c=$d(l,this.gl,o.domain().length,r);this.rangeTextures.set(o,c)}else{const o=t.getScale();if(o.type==="ordinal"||yi(o.type)){const a=Pu(s)?A1(s):c=>c,l=o.range();this.rangeTextures.set(o,x6(l.map(a),this.gl,o.domain().length,r))}}}createSelectionTexture(t,e=!0){if(!Ph(t))throw new Error("Not a multi-point selection, cannot create texture");const r=Array.from(t.data.keys()),i=r.length>0?r.sort((l,c)=>l-c):[0],s=this.selectionTextures.get(t),o=this.gl,a=Cc(this.gl,{level:0,minMag:o.NEAREST,format:o.RED_INTEGER,internalFormat:o.R32UI,height:1,width:i.length},new Uint32Array(i),e?s:!1);this.selectionTextures.set(t,a)}}function C6(n,t="",e=0){const r=/ERROR:\s*\d+:(\d+)/gi,i=[...t.matchAll(r)],s=new Map(i.map((o,a)=>{const l=parseInt(o[1]),c=i[a+1],u=c?c.index:t.length,f=t.substring(o.index,u);return[l-1,f]}));return n.split(`
448
429
  `).map((o,a)=>{const l=s.get(a);return`${a+1+e}: ${o}${l?`
449
430
 
450
431
  ^^^ ${l}`:""}`}).join(`
451
- `)}function J8(n,t,e){const r=n.createProgram();n.attachShader(r,t),n.attachShader(r,e),n.linkProgram(r);function i(){let s,o;if(!n.getProgramParameter(r,n.LINK_STATUS)){s=n.getProgramInfoLog(r);for(const l of[t,e])n.getShaderParameter(l,n.COMPILE_STATUS)||(s=n.getShaderInfoLog(l),o=V8(n.getShaderSource(l),s,0)+`
452
- Error compiling: ${s}`,n.deleteShader(l));n.deleteProgram(r)}if(s)return{message:s,detail:o}}return{program:r,getProgramErrors:i}}function Ua(n,t,e,r){return r?km(n,r,e,t):r=Qa(n,{...t,src:e}),r}function q8(n,t,e,r){const{height:i,framebuffer:s}=t,o=new Uint8Array(4);return n.bindFramebuffer(n.FRAMEBUFFER,s),n.readPixels(e,i-r-1,1,1,n.RGBA,n.UNSIGNED_BYTE,o),n.bindFramebuffer(n.FRAMEBUFFER,null),o}function K8(n,t,e="image/png"){const{width:r,height:i}=t,s=new Uint8Array(r*i*4);n.bindFramebuffer(n.FRAMEBUFFER,t.framebuffer),n.readPixels(0,0,r,i,n.RGBA,n.UNSIGNED_BYTE,s),n.bindFramebuffer(n.FRAMEBUFFER,null);const o=document.createElement("canvas");o.width=r,o.height=i;const a=o.getContext("2d"),l=a.createImageData(r,i);for(let c=0;c<i;c++){const u=(i-1-c)*r*4,f=c*r*4;l.data.set(s.subarray(u,u+r*4),f)}return a.putImageData(l,0,0),o.toDataURL(e)}function j8(n,t,e,r){const i=Ce(n)?n:n.name,s=!Ce(n)&&n.extent||[0,1];if(e===void 0&&!Ce(n)&&(e=n.count),i){const o=ed(i);if(Ft(o)){const a=LC(o,{extent:s,count:e});return Ua(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else{if(Xe(o))return nd(o,t);throw new Error("Unknown scheme: "+i)}}}function W8(n,t="rgb",e,r){const i=Pu(n,Ce(t)?t:t.type,Ce(t)?void 0:t.gamma),s=LC(i);return Ua(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}function X8(n,t,e,r){const i=Math.max(n.length,e||0),s=new Float32Array(i);for(let o=0;o<i;o++)s[o]=n[o%n.length];return Ua(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},s,r)}function nd(n,t,e,r){const i=OC(n,e);return Ua(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function LC(n,{extent:t=[0,1],reverse:e=!1,count:r=256}={}){const i=t[0],s=Gl(t)-i,o=Ko(r).map(a=>a/(r-1)).map(a=>i+a/s).map(n);return e&&o.reverse(),OC(o)}function OC(n,t){const e=Math.max(n.length,t||0),r=new Uint8Array(e*3);for(let i=0;i<e;i++){const s=n[i%n.length],o=Ar(s);if(!o)throw new Error(`Invalid color "${s}" in the scheme ${JSON.stringify(n)}!`);const a=o.rgb();r[i*3+0]=a.r,r[i*3+1]=a.g,r[i*3+2]=a.b}return r}function rd(n){const t=Ar(n).rgb();return[t.r,t.g,t.b].map(e=>e/255)}const Z8="attr_",$8="uDomain_",eF="range_",tF="accessor_",UC="scale_",nF="getScaled_",id="uRangeTexture_",Lu="uParam_",Ga="checkSelection_",GC=3402823466e29;function rF(n){const t=n.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw new Error("Not a scale type: "+n);return{family:t[1]||"continuous",transform:t[2]}}function za(n,t){return`${tF}${n}_${t}`}function iF(n,t,e){let r;if(Kl(n))r=li(Jp(n)(e));else if(Ce(e))if(rr(n))r=lF(e);else throw new Error(`String values are not supported on the "${n}" channel: ${e}`);else if(Po(e))r=li(e?1:0);else if(e===null)if(rr(n))r=li([0,0,0]);else throw new Error(`null value is not supported on the "${n}" chanel.`);else r=li(e);const i=za(n,t),s=`
432
+ `)}function y6(n,t,e){const r=n.createProgram();n.attachShader(r,t),n.attachShader(r,e),n.linkProgram(r);function i(){let s,o;if(!n.getProgramParameter(r,n.LINK_STATUS)){s=n.getProgramInfoLog(r);for(const l of[t,e])n.getShaderParameter(l,n.COMPILE_STATUS)||(s=n.getShaderInfoLog(l),o=C6(n.getShaderSource(l),s,0)+`
433
+ Error compiling: ${s}`,n.deleteShader(l));n.deleteProgram(r)}if(s)return{message:s,detail:o}}return{program:r,getProgramErrors:i}}function Cc(n,t,e,r){return r?W1(n,r,e,t):r=sc(n,{...t,src:e}),r}function w6(n,t,e,r){const{height:i,framebuffer:s}=t,o=new Uint8Array(4);return n.bindFramebuffer(n.FRAMEBUFFER,s),n.readPixels(e,i-r-1,1,1,n.RGBA,n.UNSIGNED_BYTE,o),n.bindFramebuffer(n.FRAMEBUFFER,null),o}function I6(n,t,e="image/png"){const{width:r,height:i}=t,s=new Uint8Array(r*i*4);n.bindFramebuffer(n.FRAMEBUFFER,t.framebuffer),n.readPixels(0,0,r,i,n.RGBA,n.UNSIGNED_BYTE,s),n.bindFramebuffer(n.FRAMEBUFFER,null);const o=document.createElement("canvas");o.width=r,o.height=i;const a=o.getContext("2d"),l=a.createImageData(r,i);for(let c=0;c<i;c++){const u=(i-1-c)*r*4,f=c*r*4;l.data.set(s.subarray(u,u+r*4),f)}return a.putImageData(l,0,0),o.toDataURL(e)}function E6(n,t,e,r){const i=ye(n)?n:n.name,s=!ye(n)&&n.extent||[0,1];if(e===void 0&&!ye(n)&&(e=n.count),i){const o=Xd(i);if(Mt(o)){const a=rw(o,{extent:s,count:e});return Cc(t,{minMag:t.LINEAR,format:t.RGB,height:1,wrap:t.CLAMP_TO_EDGE},a,r)}else{if(je(o))return $d(o,t);throw new Error("Unknown scheme: "+i)}}}function b6(n,t="rgb",e,r){const i=Sf(n,ye(t)?t:t.type,ye(t)?void 0:t.gamma),s=rw(i);return Cc(e,{minMag:e.LINEAR,format:e.RGB,height:1,wrap:e.CLAMP_TO_EDGE},s,r)}function x6(n,t,e,r){const i=Math.max(n.length,e||0),s=new Float32Array(i);for(let o=0;o<i;o++)s[o]=n[o%n.length];return Cc(t,{minMag:t.NEAREST,format:t.RED,internalFormat:t.R32F,height:1},s,r)}function $d(n,t,e,r){const i=iw(n,e);return Cc(t,{minMag:t.NEAREST,format:t.RGB,height:1},i,r)}function rw(n,{extent:t=[0,1],reverse:e=!1,count:r=256}={}){const i=t[0],s=Qu(t)-i,o=Da(r).map(a=>a/(r-1)).map(a=>i+a/s).map(n);return e&&o.reverse(),iw(o)}function iw(n,t){const e=Math.max(n.length,t||0),r=new Uint8Array(e*3);for(let i=0;i<e;i++){const s=n[i%n.length],o=yr(s);if(!o)throw new Error(`Invalid color "${s}" in the scheme ${JSON.stringify(n)}!`);const a=o.rgb();r[i*3+0]=a.r,r[i*3+1]=a.g,r[i*3+2]=a.b}return r}function e0(n){const t=yr(n).rgb();return[t.r,t.g,t.b].map(e=>e/255)}const B6="attr_",v6="uDomain_",S6="range_",Q6="accessor_",sw="scale_",D6="getScaled_",t0="uRangeTexture_",Qf="uParam_",yc="checkSelection_",ow=3402823466e29;function k6(n){const t=n.match(/^(?:(\w+)-)?(\w+)$/);if(!t)throw new Error("Not a scale type: "+n);return{family:t[1]||"continuous",transform:t[2]}}function wc(n,t){return`${Q6}${n}_${t}`}function F6(n,t,e){let r;if(Pu(n))r=wi(A1(n)(e));else if(ye(e))if(ur(n))r=P6(e);else throw new Error(`String values are not supported on the "${n}" channel: ${e}`);else if(ma(e))r=wi(e?1:0);else if(e===null)if(ur(n))r=wi([0,0,0]);else throw new Error(`null value is not supported on the "${n}" chanel.`);else r=wi(e);const i=wc(n,t),s=`
453
434
  ${r.type} ${i}() {
454
435
  // Constant value
455
436
  return ${r};
456
- }`;return{channel:n,accessorGlsl:s,accessorFunctionName:i}}function sF(n,t){let e="float",r=l=>l;rr(n)&&(e="vec3",r=l=>rd(l));const i=`u${dF(n)}_${t}`,s=` // Dynamic value
457
- uniform ${e} ${i};`,o=za(n,t);let a=`
437
+ }`;return{channel:n,accessorGlsl:s,accessorFunctionName:i}}function M6(n,t){let e="float",r=l=>l;ur(n)&&(e="vec3",r=l=>e0(l));const i=`u${z6(n)}_${t}`,s=` // Dynamic value
438
+ uniform ${e} ${i};`,o=wc(n,t);let a=`
458
439
  ${e} ${o}() {
459
440
  // Dynamic value
460
441
  return ${i};
461
- }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o,adjuster:r}}function zC(n,t,e,r=[n]){const{attributeType:i}=gs(t,n),s=ps(r),o=`in highp ${i} ${s};`,a=za(n,e),l=`
442
+ }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o,adjuster:r}}function aw(n,t,e,r=[n]){const{attributeType:i}=zs(t,n),s=Hs(r),o=`in highp ${i} ${s};`,a=wc(n,e),l=`
462
443
  ${i} ${a}() {
463
444
  return ${s};
464
- }`;return{channel:n,attributeName:s,attributeGlsl:o,accessorGlsl:l,accessorFunctionName:a}}function oF(n,t,e){const{attributeType:r}=gs(t,n),i=ps(n),s=` uniform highp ${r} ${i};`,o=za(n,e),a=`
445
+ }`;return{channel:n,attributeName:s,attributeGlsl:o,accessorGlsl:l,accessorFunctionName:a}}function R6(n,t,e){const{attributeType:r}=zs(t,n),i=Hs(n),s=` uniform highp ${r} ${i};`,o=wc(n,e),a=`
465
446
  ${r} ${o}() {
466
447
  return ${i};
467
- }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o}}function aF(n,t,e){t??(t=td());const r=Xr(n),i=$8+r,s=eF+r,{hp:o,attributeType:a}=gs(t,n),l=t.domain?t.domain().length:void 0;let c;const u=[];u.push(""),u.push("/".repeat(70)),u.push(`// Channel: ${n}`),u.push("");const{transform:f}=rF(t.type),h=(E,...Q)=>uF.apply(null,[E,"value",...Q]);let A;switch(f){case"linear":A=h("scaleLinear","domain",s);break;case"log":A=h("scaleLog","domain",s,t.base());break;case"symlog":A=h("scaleSymlog","domain",s,t.constant());break;case"pow":case"sqrt":A=h("scalePow","domain",s,t.exponent());break;case"index":case"locus":A=h("scaleBandHp","domain",s,t.paddingInner(),t.paddingOuter(),t.align(),e.band??.5);break;case"point":case"band":A=h("scaleBand","domain",s,t.paddingInner(),t.paddingOuter(),t.align(),e.band??.5);break;case"ordinal":case"null":case"identity":A=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${t.type}! ${n}: ${JSON.stringify(e)}`)}const d=jC(t,n);let g;if(d&&n==r){const E=t.props.range??[];if(it(E)||E.some(it)){if(d.length<1||d.length>4)throw new Error(`A range with ExprRefs must have 1-4 elements, not ${d.length}! Range: ${JSON.stringify(d)}`);g=` uniform ${YC(d.length)} ${s};`}else if(d.length&&d.every(ft)){const Q=VC(d);u.push(`const ${Q.type} ${s} = ${Q};`)}}const p=_C(n);let C;if(rr(n)){const E=id+r;if(n==r&&u.push(`uniform sampler2D ${E};`),Ke(t.type))C=`getInterpolatedColor(${E}, transformed)`;else if(pr(t.type)||ci(t.type))C=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(t.type==="ordinal"||ci(t.type)){const E=id+r;n==r&&u.push(`uniform sampler2D ${E};`),C=`getDiscreteColor(${E}, int(transformed)).r`}const w=[],b=Ke(t.type)&&l>2,y=ci(t.type)||b;if(w.push("int slot = 0;"),y){const E=i;w.push(b?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const x=Ke(t.type)||ci(t.type)||["band","point"].includes(t.type);if(A){const E=i;x&&(o?w.push(`vec3 domain = ${E};`):w.push(`vec2 domain = vec2(${E}[slot], ${E}[slot + 1]);`)),w.push(`float transformed = ${A};`),b&&w.push(`transformed = (float(slot) + transformed) / (float(${E}.length() - 1));`)}else w.push("float transformed = float(slot);");"clamp"in t&&t.clamp()&&w.push(`transformed = clampToRange(transformed, ${VC(d)});`),w.push(`return ${C??"transformed"};`),u.push(`
468
- ${p} ${UC}${n}(${a} value) {
448
+ }`;return{channel:n,uniformName:i,uniformGlsl:s,accessorGlsl:a,accessorFunctionName:o}}function N6(n,t,e){t??(t=Zd());const r=ci(n),i=v6+r,s=S6+r,{hp:o,attributeType:a}=zs(t,n),l=t.domain?t.domain().length:void 0;let c;const u=[];u.push(""),u.push("/".repeat(70)),u.push(`// Channel: ${n}`),u.push("");const{transform:f}=k6(t.type),h=(E,...Q)=>L6.apply(null,[E,"value",...Q]);let A;switch(f){case"linear":A=h("scaleLinear","domain",s);break;case"log":A=h("scaleLog","domain",s,t.base());break;case"symlog":A=h("scaleSymlog","domain",s,t.constant());break;case"pow":case"sqrt":A=h("scalePow","domain",s,t.exponent());break;case"index":case"locus":A=h("scaleBandHp","domain",s,t.paddingInner(),t.paddingOuter(),t.align(),e.band??.5);break;case"point":case"band":A=h("scaleBand","domain",s,t.paddingInner(),t.paddingOuter(),t.align(),e.band??.5);break;case"ordinal":case"null":case"identity":A=h("scaleIdentity");break;case"threshold":break;default:throw new Error(`Unsupported scale type: ${t.type}! ${n}: ${JSON.stringify(e)}`)}const d=gw(t,n);let p;if(d&&n==r){const E=t.props.range??[];if(Ze(E)||E.some(Ze)){if(d.length<1||d.length>4)throw new Error(`A range with ExprRefs must have 1-4 elements, not ${d.length}! Range: ${JSON.stringify(d)}`);p=` uniform ${lw(d.length)} ${s};`}else if(d.length&&d.every(ut)){const Q=fw(d);u.push(`const ${Q.type} ${s} = ${Q};`)}}const C=uw(n);let m;if(ur(n)){const E=t0+r;if(n==r&&u.push(`uniform sampler2D ${E};`),Je(t.type))m=`getInterpolatedColor(${E}, transformed)`;else if(Pn(t.type)||yi(t.type))m=`getDiscreteColor(${E}, int(transformed))`;else throw new Error("Problem with color scale!")}else if(t.type==="ordinal"||yi(t.type)){const E=t0+r;n==r&&u.push(`uniform sampler2D ${E};`),m=`getDiscreteColor(${E}, int(transformed)).r`}const w=[],b=Je(t.type)&&l>2,y=yi(t.type)||b;if(w.push("int slot = 0;"),y){const E=i;w.push(b?`while (slot < ${E}.length() - 2 && value >= ${E}[slot + 1]) { slot++; }`:`while (slot < ${E}.length() && value >= ${E}[slot]) { slot++; }`)}const x=Je(t.type)||yi(t.type)||["band","point"].includes(t.type);if(A){const E=i;x&&(o?w.push(`vec3 domain = ${E};`):w.push(`vec2 domain = vec2(${E}[slot], ${E}[slot + 1]);`)),w.push(`float transformed = ${A};`),b&&w.push(`transformed = (float(slot) + transformed) / (float(${E}.length() - 1));`)}else w.push("float transformed = float(slot);");"clamp"in t&&t.clamp()&&w.push(`transformed = clampToRange(transformed, ${fw(d)});`),w.push(`return ${m??"transformed"};`),u.push(`
449
+ ${C} ${sw}${n}(${a} value) {
469
450
  ${w.map(E=>` ${E}
470
451
  `).join("")}
471
452
  }`);const B=u.join(`
472
- `);if(x&&n==r){const E=Ke(t.type)||ci(t.type)?l:2;c=o?` highp vec3 ${i};`:` mediump float ${i}[${E}];`}return{glsl:B,domainUniformName:i,domainUniform:c,rangeUniformName:s,rangeUniform:g}}function cF(n,t){const e=_C(n),r=[],i=[];for(let s=0;s<t.length;s++){const o=t[s],a=za(n,s),{param:l,empty:c}=o.predicate;r.push(l?`${Ga}${l}(${!!c})`:null),i.push(o.scaleChannel?`return ${UC}${n}(${a}());`:`return ${a}();`)}return`${e} ${nF}${n}() {
473
- ${gF(r,i)}
453
+ `);if(x&&n==r){const E=Je(t.type)||yi(t.type)?l:2;c=o?` highp vec3 ${i};`:` mediump float ${i}[${E}];`}return{glsl:B,domainUniformName:i,domainUniform:c,rangeUniformName:s,rangeUniform:p}}function T6(n,t){const e=uw(n),r=[],i=[];for(let s=0;s<t.length;s++){const o=t[s],a=wc(n,s),{param:l,empty:c}=o.predicate;r.push(l?`${yc}${l}(${!!c})`:null),i.push(o.scaleChannel?`return ${sw}${n}(${a}());`:`return ${a}();`)}return`${e} ${D6}${n}() {
454
+ ${H6(r,i)}
474
455
  }
475
456
 
476
- #define ${n}_DEFINED`}function HC(n){if(!ft(n))throw new Error(`Not a number: ${n}`);if(n==1/0)return""+GC;if(n==-1/0)return""+-GC;{let t=`${n}`;return/^(-)?\d+$/.test(t)&&(t+=".0"),t}}function li(n){typeof n=="number"&&(n=[n]);const t=n.length;if(t<1||t>4)throw new Error("Invalid number of components: "+t);const e=YC(t),r=`${e}(${n.map(HC).join(", ")})`;return Object.assign(r,{type:e,numComponents:t})}function YC(n){switch(n){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error("Invalid number of components: "+n)}}function _C(n){return rr(n)?"vec3":n=="uniqueId"?"uint":"float"}function lF(n){return li(rd(n))}function VC(n){return li([n[0],Gl(n)])}function uF(n,...t){const e=[];for(const r of t)ft(r)?e.push(HC(r)):Xe(r)?e.push(li(r)):e.push(r);return`${n}(${e.join(", ")})`}function gs(n,t){var o;const e=n&&pr(n.type),r=n&&JC(n.type),i=r&&fF(n.domain()),s=i?{attributeType:"uvec2",arrayConstructor:Uint32Array}:r?{attributeType:"uint",arrayConstructor:Uint32Array}:e?{attributeType:"uint",arrayConstructor:Uint16Array}:t=="uniqueId"?{attributeType:"uint",arrayConstructor:Uint32Array}:{attributeType:"float",arrayConstructor:Float32Array};return Object.assign(s,{numComponents:+(((o=s.attributeType.match(/^vec([234])$/))==null?void 0:o[1])??1),discrete:e,hp:r,largeHp:i})}function JC(n){return n=="index"||n=="locus"}function fF(n){return n[1]>2**32}const sd=2**12;function qC(n,t=[]){const e=n%sd,r=(n-e)/sd;return t[0]=r,t[1]=e,t}function AF(n){const t=n%sd;return[n-t,t]}function hF(n){return[...AF(n[0]),n[1]-n[0]]}function KC(n){const t=new Sn([],JSON.stringify);for(const[e,r]of Object.entries(n)){const i=r.channelDef;if(nr(i)){const o=[i.field,r.scale?(Ke(r.scale.type)||ci(r.scale.type))??!1:!1];t.set(o,[...t.get(o)??[],e])}}return t}function ps(n){return Z8+tt(n).toSorted().join("_")}function dF(n){return n[0].toUpperCase()+n.slice(1)}const jC=(n,t)=>Tu(n.type)||Ke(n.type)&&rr(t)?[0,1]:n.range?n.range():void 0;function gF(n,t){if(n.length!=t.length)throw new Error("Unequal array lengths");const e=n.length;if(e==0)return"";if(e==1&&n[0]==null)return t[0];const r=[];for(let i=0;i<e;i++){const s=n[i],o=i==0?`if (${s})`:s==null&&i==e-1?"else":`else if (${s})`;r.push(` ${o} {
457
+ #define ${n}_DEFINED`}function cw(n){if(!ut(n))throw new Error(`Not a number: ${n}`);if(n==1/0)return""+ow;if(n==-1/0)return""+-ow;{let t=`${n}`;return/^(-)?\d+$/.test(t)&&(t+=".0"),t}}function wi(n){typeof n=="number"&&(n=[n]);const t=n.length;if(t<1||t>4)throw new Error("Invalid number of components: "+t);const e=lw(t),r=`${e}(${n.map(cw).join(", ")})`;return Object.assign(r,{type:e,numComponents:t})}function lw(n){switch(n){case 1:return"float";case 2:return"vec2";case 3:return"vec3";case 4:return"vec4";default:throw new Error("Invalid number of components: "+n)}}function uw(n){return ur(n)?"vec3":n=="uniqueId"?"uint":"float"}function P6(n){return wi(e0(n))}function fw(n){return wi([n[0],Qu(n)])}function L6(n,...t){const e=[];for(const r of t)ut(r)?e.push(cw(r)):je(r)?e.push(wi(r)):e.push(r);return`${n}(${e.join(", ")})`}function zs(n,t){var o;const e=n&&Pn(n.type),r=n&&Aw(n.type),i=r&&O6(n.domain()),s=i?{attributeType:"uvec2",arrayConstructor:Uint32Array}:r?{attributeType:"uint",arrayConstructor:Uint32Array}:e?{attributeType:"uint",arrayConstructor:Uint16Array}:t=="uniqueId"?{attributeType:"uint",arrayConstructor:Uint32Array}:{attributeType:"float",arrayConstructor:Float32Array};return Object.assign(s,{numComponents:+(((o=s.attributeType.match(/^vec([234])$/))==null?void 0:o[1])??1),discrete:e,hp:r,largeHp:i})}function Aw(n){return n=="index"||n=="locus"}function O6(n){return n[1]>2**32}const n0=2**12;function hw(n,t=[]){const e=n%n0,r=(n-e)/n0;return t[0]=r,t[1]=e,t}function U6(n){const t=n%n0;return[n-t,t]}function G6(n){return[...U6(n[0]),n[1]-n[0]]}function dw(n){const t=new vn([],JSON.stringify);for(const[e,r]of Object.entries(n)){const i=r.channelDef;if(Mn(i)){const o=[i.field,r.scale?(Je(r.scale.type)||yi(r.scale.type))??!1:!1];t.set(o,[...t.get(o)??[],e])}}return t}function Hs(n){return B6+ft(n).toSorted().join("_")}function z6(n){return n[0].toUpperCase()+n.slice(1)}const gw=(n,t)=>vf(n.type)||Je(n.type)&&ur(t)?[0,1]:n.range?n.range():void 0;function H6(n,t){if(n.length!=t.length)throw new Error("Unequal array lengths");const e=n.length;if(e==0)return"";if(e==1&&n[0]==null)return t[0];const r=[];for(let i=0;i<e;i++){const s=n[i],o=i==0?`if (${s})`:s==null&&i==e-1?"else":`else if (${s})`;r.push(` ${o} {
477
458
  ${t[i]}
478
459
  }`)}return r.join(`
479
- `)}function pF(){let n=0,t,e=0;const r=new Map,i=s=>(s===t||(e=r.get(s),e===void 0&&(e=n++,r.set(s,e)),t=s),e);return i.addAll=s=>{for(const o of s)i(o)},i.invert=s=>{for(const o of r.entries())if(o[1]==s)return o[0]},i.domain=()=>[...r.keys()],i}class Ha{constructor({encoders:t,numVertices:e=void 0,attributes:r=[]}){this.encoders=t,this.variableEncoders=Object.fromEntries(Object.entries(t).filter(([s,o])=>r.includes(s)&&o&&!o.constant));const i=[...KC(t).entries()].filter(([s,o])=>s[1]&&o.length>1).map(([s,o])=>o);this.allocatedVertices=e,this.variableBuilder=new Ak(e);for(const[s,o]of Object.entries(this.variableEncoders)){const a=o.dataAccessor;if(!a)continue;const l=i.find(b=>b.find(y=>y==s));if(l&&s!=l[0])continue;const c=a.asNumberAccessor(),u=o.scale,{largeHp:f,arrayConstructor:h,discrete:A,numComponents:d}=gs(u,s),g=[0,0];let p;u&&A&&"domain"in u&&(p=pF(),p.addAll(u.domain()));const C=p?b=>p(a(b)):f?b=>qC(c(b),g):c,w=ps(l??s);this.variableBuilder.addConverter(w,{f:C,numComponents:d,arrayReference:f?g:void 0,targetArrayType:h})}this.lastOffset=0,this.rangeMap=new Sn([],JSON.stringify)}registerBatch(t){var s;const e=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-e;i&&this.rangeMap.set(t,{offset:e,count:i,xIndex:(s=this.xIndexer)==null?void 0:s.getIndex()}),this.lastOffset=r}addBatches(t){for(const[e,r]of t)this.addBatch(e,r)}addBatch(t,e,r=0,i=e.length){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.pushFromDatum(o),this.addToXIndex(o)}this.registerBatch(t)}prepareXIndexer(t,e=0,r=e+t.length){var c;const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0},s=(c=this.encoders.x)==null?void 0:c.channelDef;if(!("buildIndex"in s)||!s.buildIndex||!t.length||r-e<0){i();return}const o=u=>{var f;return u&&Ke((f=u.scale)==null?void 0:f.type)&&u},a=o(this.variableEncoders.x),l=o(this.variableEncoders.x2);if(a&&!a.constant&&(!l||!l.constant)){const u=a.dataAccessor.asNumberAccessor(),f=l?l.dataAccessor.asNumberAccessor():u,h=[u(t[e]),f(t[r-1])];if(h[1]>h[0]){this.xIndexer=dk(50,h,u,f);let A=this.variableBuilder.vertexCount;this.addToXIndex=d=>{let g=this.variableBuilder.vertexCount;this.xIndexer(d,A,g),A=g}}else i()}else i()}addToXIndex(t){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class mF extends Ha{constructor({encoders:t,attributes:e,numItems:r}){super({encoders:t,attributes:e,numVertices:r*6}),this.variableBuilder.configure();const i=this.variableBuilder.pushAll;this.pushAllSixTimes=r>500?new Function("pushAll",`return function unrolledPushAllSixTimes() {
460
+ `)}function pw(){let n=0,t,e=0;const r=new Map,i=s=>(s===t||(e=r.get(s),e===void 0&&(e=n++,r.set(s,e)),t=s),e);return i.addAll=s=>{for(const o of s)i(o)},i.invert=s=>{for(const o of r.entries())if(o[1]==s)return o[0]},i.domain=()=>[...r.keys()],i}class Ic{constructor({encoders:t,numVertices:e=void 0,attributes:r=[]}){this.encoders=t,this.variableEncoders=Object.fromEntries(Object.entries(t).filter(([s,o])=>r.includes(s)&&o&&!o.constant));const i=[...dw(t).entries()].filter(([s,o])=>s[1]&&o.length>1).map(([s,o])=>o);this.allocatedVertices=e,this.variableBuilder=new U8(e);for(const[s,o]of Object.entries(this.variableEncoders)){const a=o.dataAccessor;if(!a)continue;const l=i.find(b=>b.find(y=>y==s));if(l&&s!=l[0])continue;const c=a.asNumberAccessor(),u=o.scale,{largeHp:f,arrayConstructor:h,discrete:A,numComponents:d}=zs(u,s),p=[0,0];let C;if(u&&A)if("props"in u&&u.props.domainIndexer)C=u.props.domainIndexer;else if("domain"in u)C=pw(),C.addAll(u.domain());else throw new Error("Missing domain indexer for discrete scale.");const m=C?b=>C(a(b)):f?b=>hw(c(b),p):c,w=Hs(l??s);this.variableBuilder.addConverter(w,{f:m,numComponents:d,arrayReference:f?p:void 0,targetArrayType:h})}this.lastOffset=0,this.rangeMap=new vn([],JSON.stringify)}registerBatch(t){var s;const e=this.lastOffset,r=this.variableBuilder.vertexCount,i=r-e;i&&this.rangeMap.set(t,{offset:e,count:i,xIndex:(s=this.xIndexer)==null?void 0:s.getIndex()}),this.lastOffset=r}addBatches(t){for(const[e,r]of t)this.addBatch(e,r)}addBatch(t,e,r=0,i=e.length){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.pushFromDatum(o),this.addToXIndex(o)}this.registerBatch(t)}prepareXIndexer(t,e=0,r=e+t.length){var c;const i=()=>{this.addToXIndex=u=>{},this.xIndexer=void 0},s=(c=this.encoders.x)==null?void 0:c.channelDef;if(!("buildIndex"in s)||!s.buildIndex||!t.length||r-e<0){i();return}const o=u=>{var f;return u&&Je((f=u.scale)==null?void 0:f.type)&&u},a=o(this.variableEncoders.x),l=o(this.variableEncoders.x2);if(a&&!a.constant&&(!l||!l.constant)){const u=a.dataAccessor.asNumberAccessor(),f=l?l.dataAccessor.asNumberAccessor():u,h=[u(t[e]),f(t[r-1])];if(h[1]>h[0]){this.xIndexer=z8(50,h,u,f);let A=this.variableBuilder.vertexCount;this.addToXIndex=d=>{let p=this.variableBuilder.vertexCount;this.xIndexer(d,A,p),A=p}}else i()}else i()}addToXIndex(t){}toArrays(){return{arrays:this.variableBuilder.arrays,vertexCount:this.variableBuilder.vertexCount,allocatedVertices:this.allocatedVertices,rangeMap:this.rangeMap}}}class V6 extends Ic{constructor({encoders:t,attributes:e,numItems:r}){super({encoders:t,attributes:e,numVertices:r*6}),this.variableBuilder.configure();const i=this.variableBuilder.pushAll;this.pushAllSixTimes=r>500?new Function("pushAll",`return function unrolledPushAllSixTimes() {
480
461
  pushAll(); pushAll(); pushAll(); pushAll(); pushAll(); pushAll();
481
- };`)(i):function(){i(),i(),i(),i(),i(),i()}}addBatch(t,e,r=0,i=e.length){if(!(i<=r)){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.updateFromDatum(o),this.pushAllSixTimes(),this.addToXIndex(o)}this.registerBatch(t)}}}class CF extends Ha{constructor({encoders:t,attributes:e,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:s}){super({encoders:t,attributes:e,numVertices:r==1/0?s*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),this.variableBuilder.configure()}addBatch(t,e,r=0,i=e.length){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.updateFromDatum(o),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let l=0;l<=a;l++)this.updatePos(l/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(o)}this.registerBatch(t)}}class yF extends Ha{constructor({encoders:t,attributes:e,numItems:r=void 0}){super({encoders:t,attributes:e,numVertices:r}),this.variableBuilder.configure()}}class wF extends Ha{constructor({encoders:t,attributes:e,numItems:r=void 0}){super({encoders:t,attributes:e,numVertices:r}),this.variableBuilder.configure()}toArrays(){const t=this.variableBuilder.arrays;for(let e of Object.values(t))e.divisor=1;return super.toArrays()}}class IF extends Ha{constructor({encoders:t,attributes:e,fontMetrics:r,properties:i,numCharacters:s=void 0}){super({encoders:t,attributes:e,numVertices:s*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=t.text.channelDef;this.numberFormat=!Nt(a)&&"format"in a&&a.format?Ze(a.format):l=>l,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1),this.variableBuilder.configure()}addBatch(t,e,r=0,i=e.length){const s=this.properties.align||"left",o=this.properties.logoLetters??!1,a=this.metadata.common.base,l=this.metadata.common.scaleH;let c=-cs;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 u=this.encoders.text,f=[0,0];this.updateVertexCoord(f);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(e,r,i);for(let A=r;A<i;A++){const d=e[A],g=this.numberFormat(u(d)),p=Ce(g)?g:g===null?"":""+g;if(p.length==0)continue;this.variableBuilder.updateFromDatum(d);const C=o?p.length:this.metrics.measureWidth(p);this.updateWidth(C);let w=s=="right"?-C:s=="center"?-C/2:0;if(!o){const B=this.metrics.getCharByCode(p.charCodeAt(0));w-=(B.width-B.xadvance)/a/2}let b=-.5,y=1,x=1;for(let B=0;B<p.length;B++){const E=this.metrics.getCharByCode(p.charCodeAt(B)),Q=o?1:E.xadvance/a;if(E.id==32){w+=Q;continue}o?(x=(E.width+cs*2)/E.width,w=-x/2,y=(E.height+cs*2)/E.height,b=-.5-cs/E.height):(y=E.height/a,b=-(E.height+E.yoffset+c)/a,x=E.width/a);const k=E.x,S=E.y;f[0]=w,f[1]=b+y,h[0]=k/l,h[1]=S/l,this.variableBuilder.pushAll(),f[0]=w+x,f[1]=b+y,h[0]=(k+E.width)/l,h[1]=S/l,this.variableBuilder.pushAll(),f[0]=w,f[1]=b,h[0]=k/l,h[1]=(S+E.height)/l,this.variableBuilder.pushAll(),f[0]=w+x,f[1]=b+y,h[0]=(k+E.width)/l,h[1]=S/l,this.variableBuilder.pushAll(),f[0]=w,f[1]=b,h[0]=k/l,h[1]=(S+E.height)/l,this.variableBuilder.pushAll(),f[0]=w+x,f[1]=b,h[0]=(k+E.width)/l,h[1]=(S+E.height)/l,this.variableBuilder.pushAll(),w+=Q}this.addToXIndex(d)}this.registerBatch(t)}}const WC=`#define PI 3.141593
482
- 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);}bool isEmptyBinarySearchTexture(highp usampler2D s){return textureSize(s,0).x==1&&texelFetch(s,ivec2(0,0),0).r==0u;}bool binarySearchTexture(highp usampler2D s,uint value){int texSize=textureSize(s,0).x;if(texSize==1&&texelFetch(s,ivec2(0,0),0).r==0u){return false;}int left=0;int right=texSize-1;while(left<=right){int mid=left+(right-left)/2;uint midValue=texelFetch(s,ivec2(mid,0),0).r;if(midValue==value){return true;}if(midValue<value){left=mid+1;}else{right=mid-1;}}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***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,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,EF="uniform highp float uZero;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 scaleIdentity(uint value){return float(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(uint 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+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint 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);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 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);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",bF=`/***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;
462
+ };`)(i):function(){i(),i(),i(),i(),i(),i()}}addBatch(t,e,r=0,i=e.length){if(!(i<=r)){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.updateFromDatum(o),this.pushAllSixTimes(),this.addToXIndex(o)}this.registerBatch(t)}}}class _6 extends Ic{constructor({encoders:t,attributes:e,tessellationThreshold:r=1/0,visibleRange:i=[-1/0,1/0],numItems:s}){super({encoders:t,attributes:e,numVertices:r==1/0?s*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),this.variableBuilder.configure()}addBatch(t,e,r=0,i=e.length){this.prepareXIndexer(e,r,i);for(let s=r;s<i;s++){const o=e[s];this.variableBuilder.updateFromDatum(o),this.updateSide(-.5),this.updatePos(0),this.variableBuilder.pushAll();const a=1;for(let l=0;l<=a;l++)this.updatePos(l/a),this.updateSide(-.5),this.variableBuilder.pushAll(),this.updateSide(.5),this.variableBuilder.pushAll();this.variableBuilder.pushAll(),this.addToXIndex(o)}this.registerBatch(t)}}class Y6 extends Ic{constructor({encoders:t,attributes:e,numItems:r=void 0}){super({encoders:t,attributes:e,numVertices:r}),this.variableBuilder.configure()}}class J6 extends Ic{constructor({encoders:t,attributes:e,numItems:r=void 0}){super({encoders:t,attributes:e,numVertices:r}),this.variableBuilder.configure()}toArrays(){const t=this.variableBuilder.arrays;for(let e of Object.values(t))e.divisor=1;return super.toArrays()}}class q6 extends Ic{constructor({encoders:t,attributes:e,fontMetrics:r,properties:i,numCharacters:s=void 0}){super({encoders:t,attributes:e,numVertices:s*6}),this.metadata=r,this.metrics=r,this.properties=i;const a=t.text.channelDef;this.numberFormat=!vt(a)&&"format"in a&&a.format?We(a.format):l=>l,this.updateVertexCoord=this.variableBuilder.createUpdater("vertexCoord",2),this.updateTextureCoord=this.variableBuilder.createUpdater("textureCoord",2),this.updateWidth=this.variableBuilder.createUpdater("width",1),this.variableBuilder.configure()}addBatch(t,e,r=0,i=e.length){const s=this.properties.align||"left",o=this.properties.logoLetters??!1,a=this.metadata.common.base,l=this.metadata.common.scaleH;let c=-Ns;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 u=this.encoders.text,f=[0,0];this.updateVertexCoord(f);const h=[0,0];this.updateTextureCoord(h),this.prepareXIndexer(e,r,i);for(let A=r;A<i;A++){const d=e[A],p=this.numberFormat(u(d)),C=ye(p)?p:p===null?"":""+p;if(C.length==0)continue;this.variableBuilder.updateFromDatum(d);const m=o?C.length:this.metrics.measureWidth(C);this.updateWidth(m);let w=s=="right"?-m:s=="center"?-m/2:0;if(!o){const B=this.metrics.getCharByCode(C.charCodeAt(0));w-=(B.width-B.xadvance)/a/2}let b=-.5,y=1,x=1;for(let B=0;B<C.length;B++){const E=this.metrics.getCharByCode(C.charCodeAt(B)),Q=o?1:E.xadvance/a;if(E.id==32){w+=Q;continue}o?(x=(E.width+Ns*2)/E.width,w=-x/2,y=(E.height+Ns*2)/E.height,b=-.5-Ns/E.height):(y=E.height/a,b=-(E.height+E.yoffset+c)/a,x=E.width/a);const F=E.x,k=E.y;f[0]=w,f[1]=b+y,h[0]=F/l,h[1]=k/l,this.variableBuilder.pushAll(),f[0]=w+x,f[1]=b+y,h[0]=(F+E.width)/l,h[1]=k/l,this.variableBuilder.pushAll(),f[0]=w,f[1]=b,h[0]=F/l,h[1]=(k+E.height)/l,this.variableBuilder.pushAll(),f[0]=w+x,f[1]=b+y,h[0]=(F+E.width)/l,h[1]=k/l,this.variableBuilder.pushAll(),f[0]=w,f[1]=b,h[0]=F/l,h[1]=(k+E.height)/l,this.variableBuilder.pushAll(),f[0]=w+x,f[1]=b,h[0]=(F+E.width)/l,h[1]=(k+E.height)/l,this.variableBuilder.pushAll(),w+=Q}this.addToXIndex(d)}this.registerBatch(t)}}const mw=`#define PI 3.141593
463
+ 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);}bool isEmptyBinarySearchTexture(highp usampler2D s){return textureSize(s,0).x==1&&texelFetch(s,ivec2(0,0),0).r==0u;}bool binarySearchTexture(highp usampler2D s,uint value){int texSize=textureSize(s,0).x;if(texSize==1&&texelFetch(s,ivec2(0,0),0).r==0u){return false;}int left=0;int right=texSize-1;while(left<=right){int mid=left+(right-left)/2;uint midValue=texelFetch(s,ivec2(mid,0),0).r;if(midValue==value){return true;}if(midValue<value){left=mid+1;}else{right=mid-1;}}return false;}/***Calculates a gamma for antialiasing opacity based on the color.*/float getGammaForColor(vec3 rgb){return mix(1.25,0.75,smoothstep(0.0,1.0,dot(rgb,vec3(0.299,0.587,0.114))));}/***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,vec4 background,float halfStrokeWidth){if(halfStrokeWidth>0.0){float sd=abs(d)-halfStrokeWidth;return mix(stroke,d<=0.0 ? fill : background,distanceToRatio(sd));}else{return mix(background,fill,distanceToRatio(-d));}}`,K6="uniform highp float uZero;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 scaleIdentity(uint value){return float(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(uint 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+(float(value)-domainExtent[0])*step+bandwidth*band;}const int lowBits=12;const float lowDivisor=pow(2.0,float(lowBits));const uint lowMask=uint(lowDivisor-1.0);vec2 splitUint(uint value){uint valueLo=value&lowMask;uint valueHi=value-valueLo;return vec2(float(valueHi),float(valueLo));}/***High precision variant of scaleBand for index/locus scales*/float scaleBandHp(uint 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);vec2 splitValue=splitUint(value);float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}/***High precision variant of scaleBand for index/locus scales for large*domains where 32bit uints are not sufficient to represent the domain.*/float scaleBandHp(uvec2 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);vec2 splitValue=vec2(float(value[0])*lowDivisor,float(value[1]));float inf=1.0/uZero;float hi=max(splitValue[0]-domainStart[0],-inf);float lo=max(splitValue[1]-domainStart[1],-inf);return dot(vec4(start,hi,lo,bandwidth),vec4(1.0,step,step,band));}",j6=`/***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;
483
464
  #if !defined(SAMPLE_FACET_UNIFORM) && !defined(SAMPLE_FACET_TEXTURE)
484
465
  SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1.0);}
485
466
  #elif defined(SAMPLE_FACET_UNIFORM)
@@ -487,37 +468,37 @@ SampleFacetPosition getSampleFacetPos(){return SampleFacetPosition(0.0,1.0,0.0,1
487
468
  #elif defined(SAMPLE_FACET_TEXTURE)
488
469
  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);}
489
470
  #endif
490
- 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;}}`,xF=`/**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){
471
+ 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;}}`,W6=`/**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){
491
472
  #ifdef uniqueId_DEFINED
492
473
  uint id=attr_uniqueId;vPickingColor=vec4(ivec4(id>>0,id>>8,id>>16,id>>24)&0xFF)/float(0xFF);
493
474
  #else
494
475
  vPickingColor=vec4(1.0);
495
476
  #endif
496
- return true;}return false;}`,BF="in highp vec4 vPickingColor;",Ou=Symbol("cacheMap");function Uu(n,t,e){let r=Ya(n).get(t);return r===void 0&&(r=e(t),Ya(n).set(t,r)),r}function od(n,t){Ya(n).delete(t)}function Gu(n,t){const e=Ya(n);for(const r of e.keys())r.startsWith(t)&&e.delete(r);Ya(n).delete(t)}function XC(n){n[Ou]=new Map}function Ya(n){return n[Ou]||XC(n),n[Ou]}function ZC(...n){const t={get(e,r,i){for(const s of n){const a=s()[r];if(a!==void 0)return a}},has(e,r,i){for(const s of n){const o=s();if(r in o)return!0}return!1}};return new Proxy({},t)}function vF(n){return Ce(n)||ft(n)||Po(n)}class mr extends Error{constructor(t,e){super(t),this.name="ViewError",this.view=e}}const QF="SAMPLE_FACET_UNIFORM",$C="SAMPLE_FACET_TEXTURE",e2="uSelectionTexture_";class _a{constructor(t){D(this,en,[]);D(this,js,[]);this.unitView=t,this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new SF,this.defaultProperties={get clip(){return["x","y"].map(e=>t.getScaleResolution(e)).some(e=>(e==null?void 0:e.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=ZC(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(t){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(t))}get opaque(){return!1}get defaultHitTestMode(){return"intersects"}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const t={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(t.uniqueId={field:Rt}),t}fixEncoding(t){return t}setupExprRefsNeedingGraphicsUpdate(t){const e=this.getSupportedChannels(),r={};for(const s of t){const o=this.properties[s];if(o&&it(o)){const a=this.unitView.paramMediator.createExpression(o.expr);a.addListener(()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()}),e.includes(s)||Object.defineProperty(r,s,{get(){return a()}})}}const i=this.properties;this.properties=ZC(()=>r,()=>i)}get encoding(){return Uu(this,"encoding",()=>{var o;const t=this.getDefaultEncoding(),e=this.unitView.getEncoding(),r=a=>{const l=this.properties[a];return vF(l)||it(l)?{value:l}:void 0},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>Nt(a[1]))),s=this.fixEncoding({...t,...i,...e});for(const a of Object.keys(s))this.getSupportedChannels().includes(a)||delete s[a];return s.x&&((o=s.x).buildIndex??(o.buildIndex=!0)),s})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=cQ(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return $C;if(this.unitView.getLayoutAncestors().find(t=>"samples"in t.spec))return QF}createAndLinkShaders(t,e,r=[]){const i=this.getAttributes(),s=this.encoders,o=this.getSampleFacetMode();o&&r.push(`#define ${o}`);const a="// view: "+this.unitView.getPathString();let l=[];const c=new Set,u=KC(s),f=[],h=Object.values(s).flatMap(x=>x.accessors).map(x=>x.predicate).filter(x=>x.param),A=new Map;for(const x of h){const B=x.param,E=this.unitView.paramMediator,Q=E.findValue(B);if(!Q)throw new Error(`Cannot infer selection type as the parameter "${B}" has no value. Please ensure that the parameter is properly defined!`);const k=ps("uniqueId");if(jp(Q)){if(!A.has(B)){A.set(B,"single");const S=Lu+Ia(B);f.push(" // Selection parameter"),f.push(` uniform highp uint ${S};`),m(this,en).push(()=>{this.registerMarkUniformValue(S,{expr:B},T=>T.uniqueId??0)}),l.push(`bool ${Ga}${B}(bool empty) {
497
- return ${Lu}${B} == ${k} || (empty && ${Lu}${B} == 0u);
498
- }`)}}else if(OA(Q)){if(!A.has(B)){A.set(B,"multi");const S=e2+Ia(B);l.push(`// Selection texture
499
- uniform highp usampler2D ${S};`);const T=this.getContext().glHelper,N=T.selectionTextures;this.selectionTextureOps.push(()=>{const J=E.getValue(B),_=N.get(J);if(!_)throw new Error(`Bug: no selection texture found for "${B}"!`);ei(this.programInfo,{[S]:_})});const U=e2+B;l.push(`bool ${Ga}${B}(bool empty) {
500
- return binarySearchTexture(${U}, ${k}) || (empty && isEmptyBinarySearchTexture(${U}));
501
- }`),T.createSelectionTexture(Q);const H=E.createExpression(B);H.addListener(()=>{const J=H(null);T.createSelectionTexture(J),this.getContext().animator.requestRender()})}}else if(Kp(Q)&&!A.has(B)){A.set(B,"interval");const S=[],T=[];for(const N of Object.keys(Q.intervals)){if(!["x","y"].includes(N))continue;const U=Lu+Ia(B)+`_${N}`,{attributeType:H}=gs(this.unitView.getScaleResolution(N).getScale(),N);f.push(" // Selection parameter"),f.push(` uniform highp ${H}[2] ${U};`),m(this,en).push(()=>{this.registerMarkUniformValue(U,{expr:B},ge=>ge.intervals[N]??[1,0])});const J=ge=>{for(const[Fe,Bn]of u.entries())if(Fe[1]&&Bn.includes(ge))return ps(Bn);return ps(ge)},_=J(N),Z=U+"[0]",le=U+"[1]",de=TA(N);if(this.encoding[de]){const ge=J(de),Fe=this.defaultHitTestMode;if(Fe=="endpoints")S.push(`((${Z} <= ${_} && ${_} <= ${le}) || (${Z} <= ${ge} && ${ge} <= ${le}))`);else if(Fe=="encloses")S.push(`(${Z} <= ${_} && ${ge} <= ${le})`);else if(Fe=="intersects")S.push(`(${Z} <= ${ge} && ${_} <= ${le})`);else throw new mr(`Unsupported hit test mode "${Fe}" for interval selection!`,this.unitView)}else S.push(`(${Z} <= ${_} && ${_} <= ${le})`);T.push(`${Z} > ${le}`)}l.push(`bool ${Ga}${B}(bool empty) {
502
- return ${S.join(" && ")} || (empty && (${T.join(" || ")}));
503
- }`)}}const d=(x,B,E,Q)=>{const k=B.channelDef;if(Nt(k))if(it(k.value)){const{uniformName:S,uniformGlsl:T,accessorGlsl:N,adjuster:U}=sF(x,E);l.push(N),f.push(T),m(this,en).push(()=>{this.registerMarkUniformValue(S,k.value,U)})}else l.push(iF(x,E,k.value).accessorGlsl);else if(Ca(k)){const{uniformName:S,uniformGlsl:T,accessorGlsl:N}=oF(x,Q,E);f.push(T),l.push(N);const{largeHp:U,discrete:H}=gs(Q,x),J=H&&"domain"in Q?_=>Q.domain().indexOf(_):U?qC:_=>+_;m(this,en).push(()=>{this.registerMarkUniformValue(S,k.datum,J)})}else if(nr(k)){const S=u.get([k.field,!0]),{attributeGlsl:T,accessorGlsl:N}=zC(x,Q,E,S!=null&&S.includes(x)?S:void 0);c.add(T),l.push(N)}else if(ya(k)){const{attributeGlsl:S,accessorGlsl:T}=zC(x,Q,E);c.add(S),l.push(T)}else throw new mr(`Unsupported channel definition: ${JSON.stringify(k)}`,this.unitView)};for(const[x,B]of Object.entries(s)){if(!i.includes(x))continue;const{channelDef:E,accessors:Q,scale:k}=B;for(let S=0;S<Q.length;S++)d(x,Q[S],S,k);if(k){const S=Hp(E),T=S&&S.resolutionChannel||x,N=jl(T)?this.unitView.getScaleResolution(T):null,{glsl:U,domainUniform:H,domainUniformName:J,rangeUniform:_,rangeUniformName:Z}=aF(x,k,E);l.push(U),f.push(H),f.push(_),_&&m(this,en).push(()=>{const le=this.createMarkUniformSetter(Z),de=()=>le(jC(k,x));N.addEventListener("range",de),de()}),H&&m(this,en).push(()=>{const le=this.createMarkUniformSetter(J),de=()=>{const ge=pr(k.type)?[0,k.domain().length]:k.domain();le(JC(k.type)?hF(ge):ge)};N.addEventListener("domain",de),de()})}l.push(cF(x,Q))}const g=[...A.keys()].map(x=>`${Ga}${x}(false)`);l.push(`bool isPointSelected() {
504
- `+(this.encoders.uniqueId&&g.length>0?` return ${g.join(" || ")};`:" return false;")+`
505
- }`);const p=`precision highp float;
506
- precision highp int;`,C=x=>x.replace("#pragma markUniforms",f.join(`
507
- `));r=r.map(C),t=C(t),e=C(e);const w=[p,a,...r,WC,EF,[...c].join(`
508
- `),...l,bF,xF,t],b=[p,a,...r,WC,BF,e],y=this.gl;this.programStatus=J8(y,this.glHelper.compileShader(y.VERTEX_SHADER,w),this.glHelper.compileShader(y.FRAGMENT_SHADER,b))}finalizeGraphicsInitialization(){const t=this.programStatus.getProgramErrors();if(t){t.detail&&console.warn(t.detail);const e=new Error("Cannot create shader program: "+t.message);throw e.view=this.unitView,e}this.programInfo=U4(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=r1(this.gl,this.programInfo,"View"),this.markUniformInfo=r1(this.gl,this.programInfo,"Mark"),this.gl.useProgram(this.programInfo.program),ei(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(const e of m(this,en))e();F(this,en,void 0)}createMarkUniformSetter(t){const e=this.markUniformInfo.setters[t];if(!e)throw new Error(`Uniform "${t}" not found int the Mark block!`);return r=>{e(r),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(t,e,r=i=>i){const i=this.createMarkUniformSetter(t),s=o=>{if(o==null)throw new Error(`Trying to set null/undefined value for uniform: ${t}${it(e)?`Expr: ${e.expr}`:""}`);i(o)};if(it(e)){const o=this.unitView.paramMediator.createExpression(e.expr),a=()=>s(r(o(null)));o.addListener(a),m(this,js).push({expr:o,listener:a}),a()}else s(r(e))}deleteGraphicsData(){const t=this.glHelper;if(!t){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}const e=t.gl;if(this.vertexArrayInfo&&(this.gl.bindVertexArray(null),e.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),this.vertexArrayInfo=void 0),this.bufferInfo){for(let r=0;r<8;r++)e.disableVertexAttribArray(r);Object.values(this.bufferInfo.attribs).forEach(r=>this.gl.deleteBuffer(r.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){for(const{expr:t,listener:e}of m(this,js))t.removeListener(e);m(this,js).length=0,this.deleteGraphicsData()}updateBufferInfo(t){if(this.gl.bindVertexArray(null),this.bufferInfo&&t.vertexCount<=this.bufferInfo.allocatedVertices)for(const[e,r]of Object.entries(t.arrays))r.data&&ZQ(this.gl,this.bufferInfo.attribs[e],r.data,0);else{this.deleteGraphicsData(),this.bufferInfo=tS(this.gl,t.arrays,{numElements:t.vertexCount}),this.bufferInfo.allocatedVertices=t.allocatedVertices;for(const[e,r]of Object.entries(t.arrays))this.bytesPerElement.set(e,r.data.BYTES_PER_ELEMENT)}}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&&!this.unitView.paramMediator.hasPointSelections())return!1;for(const t of this.unitView.getLayoutAncestors())if(!t.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(s1(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):i1(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(t){const e=this.glHelper,r=this.gl,i=[];i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=ik(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)});for(const[o,a]of Object.entries(this.encoders)){const l=e.rangeTextures.get(a.scale);l&&i.push(()=>ei(this.programInfo,{[id+o]:l}))}i.push(...this.selectionTextureOps),this.getSampleFacetMode()==$C&&i.push(()=>{let o;for(const a of this.unitView.getLayoutAncestors())if(o=a.getSampleFacetTexture(),o)break;if(!o)throw new Error("No facet texture available. This is bug.");ei(this.programInfo,{uSampleFacetTexture:o})});const s=(t.picking??!1)&&this.isPickingParticipant();return i.push(()=>Sa(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:s})),this.opaque||t.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(t){const e=t.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(e&&r){const i=e.locSize?e.locSize.location:0,s=e.locSize?e.locSize.size:1;if(i>1||i+s<0)return!1;const o=e.targetLocSize?e.targetLocSize.location:i,a=e.targetLocSize?e.targetLocSize.size:s;this.gl.uniform4f(r.location,i,s,o,a)}return!0}render(t){}createRenderCallback(t,e){var f;if(!this.bufferInfo)return()=>{};const r=this;let i;const s=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),o=s&&Ke(s.type),a=["index","locus"].includes(s==null?void 0:s.type)?-1:0,l=[0,0];i=h=>{if(o&&h.xIndex){const A=s.domain(),d=h.xIndex(A[0]+a,A[1],l),g=d[0],p=d[1]-g;p>0&&t(g,p)}else t(h.offset,h.count)};const c=this.rangeMap.get(void 0).count==0?e.facetId:void 0,u=this.rangeMap.get(c);return e.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(e)&&i(u)}:function(){u.count&&i(u)}}setViewport(t,e,r,i){r=r.flatten();const s=this.gl,o=this.properties,a=.5,l=(o.xOffset??0)+a,c=(o.yOffset??0)+a;let u,f=r;if(o.clip!=="never"&&(o.clip||i)){let h=0,A=0,d;if(i){if(f=r.intersect(i).flatten(),!f.isDefined())return!1;d=[r.width/f.width,r.height/f.height],A=Math.max(0,r.y2-i.y2),h=Math.min(0,r.x-i.x)}else d=[1,1];const g=[f.x,t.height-f.y2,f.width,f.height].map(b=>b*e),p=g.map(b=>Math.floor(b)),C=g[0]-p[0],w=g[1]-p[1];s.viewport(...p),s.scissor(...p),s.enable(s.SCISSOR_TEST),u={uViewOffset:[(l+h+C/e)/f.width,-(c+A-w/e)/f.height],uViewScale:d}}else{if(!r.isDefined())return!1;s.viewport(0,0,t.width*e,t.height*e),s.disable(s.SCISSOR_TEST),u={uViewOffset:[(r.x+l)/t.width,(t.height-r.y-c-r.height)/t.height],uViewScale:[r.width/t.width,r.height/t.height]}}return Sa(this.viewUniformInfo,{...u,uViewportSize:[r.width,r.height],uDevicePixelRatio:e}),s1(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(t,e){}}en=new WeakMap,js=new WeakMap;class SF extends Sn{constructor(){super([],JSON.stringify)}get(t){let e=super.get(t);return e===void 0&&(e={offset:0,count:0,xIndex:void 0},super.set(t,e)),e}migrateEntries(t){for(const[e,r]of this.entries())t.has(e)||(r.offset=0,r.count=0,r.xIndex=void 0);for(const[e,r]of t.entries())Object.assign(this.get(e),r)}}function ad(n,t){const e=TA(t);let r=n[t]&&{...n[t]},i=n[e]&&{...n[e]};if(!(Nt(r)||Nt(i))){if(r){if(!vt(n[t]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0,contributesToScaleDomain:!1};else{i={...r};const s=(1-(r.band??1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};n[t]=r,n[e]=i}}function zu(n,t){const e=Hp(n);e&&(e.resolutionChannel=t)}function t2(n,t){n.stroke||(t?n.stroke={value:null}:(n.stroke=structuredClone(n.color),zu(n.stroke,"color"))),Nt(n.stroke)&&n.stroke.value===null&&(n.strokeWidth={value:0}),n.strokeOpacity||(n.strokeOpacity=structuredClone(n.opacity),zu(n.strokeOpacity,"opacity"))}function n2(n,t){Nt(n.fill)&&n.fill.value===null?n.fillOpacity={value:0}:n.fill||(n.fill=structuredClone(n.color),zu(n.fill,"color"),!t&&!n.fillOpacity&&(n.fillOpacity={value:0})),n.fillOpacity||(t?(n.fillOpacity=structuredClone(n.opacity),zu(n.fillOpacity,"opacity")):n.fillOpacity={value:0})}const DF=["none","diagonal","antiDiagonal","cross","vertical","horizontal","grid","dots","rings","ringsLarge"];class kF extends _a{constructor(e){super(e);D(this,Qr);this.augmentDefaultProperties({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1})}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 Uu(this,"opaque",()=>!P(this,Qr,k0).call(this)&&!P(this,Qr,F0).call(this)&&!this.properties.shadowOpacity&&Nt(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return ad(e,"x"),ad(e,"y"),t2(e,this.properties.filled),n2(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}async initializeGraphics(){await super.initializeGraphics();const e=[];P(this,Qr,k0).call(this)&&e.push("ROUNDED_CORNERS"),P(this,Qr,F0).call(this)&&e.push("STROKED"),this.properties.shadowOpacity&&e.push("SHADOW"),this.createAndLinkShaders(lk,uk,[fk,...e.map(r=>"#define "+r)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uMinWidth",e.minWidth),this.registerMarkUniformValue("uMinHeight",e.minHeight),this.registerMarkUniformValue("uMinOpacity",e.minOpacity),this.registerMarkUniformValue("uCornerRadiusTopRight",e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomRight",e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusTopLeft",e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomLeft",e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue("uHatchPattern",e.hatch,r=>Math.max(0,DF.indexOf(r??"none"))),this.registerMarkUniformValue("uShadowBlur",e.shadowBlur??0),this.registerMarkUniformValue("uShadowOpacity",e.shadowOpacity??0),this.registerMarkUniformValue("uShadowOffsetX",e.shadowOffsetX??0),this.registerMarkUniformValue("uShadowOffsetY",e.shadowOffsetY??0),this.registerMarkUniformValue("uShadowColor",e.shadowColor??"black",rd)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const r=e.getItemCount(),i=new mF({encoders:this.encoders,attributes:this.getAttributes(),numItems:r});i.addBatches(e.facetBatches);const s=i.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){const r=super.prepareRender(e);return r.push(()=>this.bindOrSetMarkUniformBlock()),r.push(()=>ti(this.gl,this.programInfo,this.vertexArrayInfo)),r}render(e){const r=this.gl;return this.createRenderCallback((i,s)=>{yu(r,this.vertexArrayInfo,r.TRIANGLE_STRIP,s,i)},e)}findDatumAt(e,r){e=tt(e);const i=this.unitView.getCollector().facetBatches.get(e);if(!i)return;const s=this.encoders,o=s.x.scale.type;if(pr(o)){const a=s.x.dataAccessor;return i.find(l=>r==a(l))}else{const a=s.x.dataAccessor,l=s.x2.dataAccessor;return i.find(c=>r>=a(c)&&r<l(c))}}}Qr=new WeakSet,k0=function(){const e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight},F0=function(){const e=this.encoding.strokeWidth;return!(Nt(e)&&!e.value)||"condition"in e};const FF=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
477
+ return true;}return false;}`,X6="in highp vec4 vPickingColor;",Df=Symbol("cacheMap");function kf(n,t,e){let r=bc(n).get(t);return r===void 0&&(r=e(t),bc(n).set(t,r)),r}function r0(n,t){bc(n).delete(t)}function Ec(n,t){const e=bc(n);for(const r of e.keys())r.startsWith(t)&&e.delete(r);bc(n).delete(t)}function Cw(n){n[Df]=new Map}function bc(n){return n[Df]||Cw(n),n[Df]}function yw(...n){const t={get(e,r,i){for(const s of n){const a=s()[r];if(a!==void 0)return a}},has(e,r,i){for(const s of n){const o=s();if(r in o)return!0}return!1}};return new Proxy({},t)}function Z6(n){return ye(n)||ut(n)||ma(n)}class Ln extends Error{constructor(t,e){super(t),this.name="ViewError",this.view=e}}const $6="SAMPLE_FACET_UNIFORM",ww="SAMPLE_FACET_TEXTURE",Iw="uSelectionTexture_";class xc{constructor(t){S(this,tn,[]);S(this,Eo,[]);this.unitView=t,this.encoders=void 0,this.bufferInfo=void 0,this.bytesPerElement=new Map,this.programInfo=void 0,this.vertexArrayInfo=void 0,this.viewUniformInfo=void 0,this.markUniformInfo=void 0,this.markUniformsAltered=!0,this.selectionTextureOps=[],this.rangeMap=new eM,this.defaultProperties={get clip(){return["x","y"].map(e=>t.getScaleResolution(e)).some(e=>(e==null?void 0:e.isZoomable())??!1)},xOffset:0,yOffset:0,minBufferSize:0},this.properties=yw(typeof this.unitView.spec.mark=="object"?()=>this.unitView.spec.mark:()=>({}),()=>this.defaultProperties)}augmentDefaultProperties(t){Object.defineProperties(this.defaultProperties,Object.getOwnPropertyDescriptors(t))}get opaque(){return!1}get defaultHitTestMode(){return"intersects"}getAttributes(){throw new Error("Not implemented!")}getSupportedChannels(){return["sample","facetIndex","x","y","color","opacity","search","uniqueId"]}getDefaultEncoding(){const t={sample:void 0,uniqueId:void 0};return this.isPickingParticipant()&&(t.uniqueId={field:Nt}),t}fixEncoding(t){return t}setupExprRefsNeedingGraphicsUpdate(t){const e=this.getSupportedChannels(),r={};for(const s of t){const o=this.properties[s];if(o&&Ze(o)){const a=this.unitView.paramMediator.createExpression(o.expr);a.addListener(()=>{this.updateGraphicsData(),this.unitView.context.animator.requestRender()}),e.includes(s)||Object.defineProperty(r,s,{get(){return a()}})}}const i=this.properties;this.properties=yw(()=>r,()=>i)}get encoding(){return kf(this,"encoding",()=>{var o;const t=this.getDefaultEncoding(),e=this.unitView.getEncoding(),r=a=>{const l=this.properties[a];return Z6(l)||Ze(l)?{value:l}:void 0},i=Object.fromEntries(this.getSupportedChannels().map(a=>[a,r(a)]).filter(a=>vt(a[1]))),s=this.fixEncoding({...t,...i,...e});for(const a of Object.keys(s))this.getSupportedChannels().includes(a)||delete s[a];return s.x&&((o=s.x).buildIndex??(o.buildIndex=!0)),s})}getContext(){return this.unitView.context}getType(){return this.unitView.getMarkType()}initializeData(){}initializeEncoders(){this.encoders=TQ(this.unitView,this.encoding)}async initializeGraphics(){}updateGraphicsData(){}getSampleFacetMode(){if(this.encoders.facetIndex)return ww;if(this.unitView.getLayoutAncestors().find(t=>"samples"in t.spec))return $6}createAndLinkShaders(t,e,r=[]){const i=this.getAttributes(),s=this.encoders,o=this.getSampleFacetMode();o&&r.push(`#define ${o}`);const a="// view: "+this.unitView.getPathString();let l=[];const c=new Set,u=dw(s),f=[],h=Object.values(s).flatMap(x=>x.accessors).map(x=>x.predicate).filter(x=>x.param),A=new Map;for(const x of h){const B=x.param,E=this.unitView.paramMediator,Q=E.findValue(B);if(!Q)throw new Error(`Cannot infer selection type as the parameter "${B}" has no value. Please ensure that the parameter is properly defined!`);const F=Hs("uniqueId");if(g1(Q)){if(!A.has(B)){A.set(B,"single");const k=Qf+Bs(B);f.push(" // Selection parameter"),f.push(` uniform highp uint ${k};`),g(this,tn).push(()=>{this.registerMarkUniformValue(k,{expr:B},P=>P.uniqueId??0)}),l.push(`bool ${yc}${B}(bool empty) {
478
+ return ${Qf}${B} == ${F} || (empty && ${Qf}${B} == 0u);
479
+ }`)}}else if(Ph(Q)){if(!A.has(B)){A.set(B,"multi");const k=Iw+Bs(B);l.push(`// Selection texture
480
+ uniform highp usampler2D ${k};`);const P=this.getContext().glHelper,T=P.selectionTextures;this.selectionTextureOps.push(()=>{const J=E.getValue(B),V=T.get(J);if(!V)throw new Error(`Bug: no selection texture found for "${B}"!`);fi(this.programInfo,{[k]:V})});const O=Iw+B;l.push(`bool ${yc}${B}(bool empty) {
481
+ return binarySearchTexture(${O}, ${F}) || (empty && isEmptyBinarySearchTexture(${O}));
482
+ }`),P.createSelectionTexture(Q);const z=E.createExpression(B);z.addListener(()=>{const J=z(null);P.createSelectionTexture(J),this.getContext().animator.requestRender()})}}else if(d1(Q)&&!A.has(B)){A.set(B,"interval");const k=[],P=[];for(const T of Object.keys(Q.intervals)){if(!["x","y"].includes(T))continue;const O=Qf+Bs(B)+`_${T}`,{attributeType:z}=zs(this.unitView.getScaleResolution(T).getScale(),T);f.push(" // Selection parameter"),f.push(` uniform highp ${z}[2] ${O};`),g(this,tn).push(()=>{this.registerMarkUniformValue(O,{expr:B},Ae=>Ae.intervals[T]??[1,0])});const J=Ae=>{for(const[at,Ft]of u.entries())if(at[1]&&Ft.includes(Ae))return Hs(Ft);return Hs(Ae)},V=J(T),q=O+"[0]",oe=O+"[1]",se=Rh(T);if(this.encoding[se]){const Ae=J(se),at=this.defaultHitTestMode;if(at=="endpoints")k.push(`((${q} <= ${V} && ${V} <= ${oe}) || (${q} <= ${Ae} && ${Ae} <= ${oe}))`);else if(at=="encloses")k.push(`(${q} <= ${V} && ${Ae} <= ${oe})`);else if(at=="intersects")k.push(`(${q} <= ${Ae} && ${V} <= ${oe})`);else throw new Ln(`Unsupported hit test mode "${at}" for interval selection!`,this.unitView)}else k.push(`(${q} <= ${V} && ${V} <= ${oe})`);P.push(`${q} > ${oe}`)}l.push(`bool ${yc}${B}(bool empty) {
483
+ return ${k.join(" && ")} || (empty && (${P.join(" || ")}));
484
+ }`)}}const d=(x,B,E,Q)=>{const F=B.channelDef;if(vt(F))if(Ze(F.value)){const{uniformName:k,uniformGlsl:P,accessorGlsl:T,adjuster:O}=M6(x,E);l.push(T),f.push(P),g(this,tn).push(()=>{this.registerMarkUniformValue(k,F.value,O)})}else l.push(F6(x,E,F.value).accessorGlsl);else if(bs(F)){const{uniformName:k,uniformGlsl:P,accessorGlsl:T}=R6(x,Q,E);f.push(P),l.push(T);const{largeHp:O,discrete:z}=zs(Q,x),J=z&&"domain"in Q?V=>Q.domain().indexOf(V):O?hw:V=>+V;g(this,tn).push(()=>{this.registerMarkUniformValue(k,F.datum,J)})}else if(Mn(F)){const k=u.get([F.field,!0]),{attributeGlsl:P,accessorGlsl:T}=aw(x,Q,E,k!=null&&k.includes(x)?k:void 0);c.add(P),l.push(T)}else if(xs(F)){const{attributeGlsl:k,accessorGlsl:P}=aw(x,Q,E);c.add(k),l.push(P)}else throw new Ln(`Unsupported channel definition: ${JSON.stringify(F)}`,this.unitView)};for(const[x,B]of Object.entries(s)){if(!i.includes(x))continue;const{channelDef:E,accessors:Q,scale:F}=B;for(let k=0;k<Q.length;k++)d(x,Q[k],k,F);if(F){const k=c1(E),P=k&&k.resolutionChannel||x,T=Lu(P)?this.unitView.getScaleResolution(P):null,{glsl:O,domainUniform:z,domainUniformName:J,rangeUniform:V,rangeUniformName:q}=N6(x,F,E);l.push(O),f.push(z),f.push(V),V&&g(this,tn).push(()=>{const oe=this.createMarkUniformSetter(q),se=()=>oe(gw(F,x));T.addEventListener("range",se),se()}),z&&g(this,tn).push(()=>{const oe=this.createMarkUniformSetter(J),se=()=>{const Ae=Pn(F.type)?[0,F.domain().length]:F.domain();oe(Aw(F.type)?G6(Ae):Ae)};T.addEventListener("domain",se),se()})}l.push(T6(x,Q))}const p=[...A.keys()].map(x=>`${yc}${x}(false)`);l.push(`bool isPointSelected() {
485
+ `+(this.encoders.uniqueId&&p.length>0?` return ${p.join(" || ")};`:" return false;")+`
486
+ }`);const C=`precision highp float;
487
+ precision highp int;`,m=x=>x.replace("#pragma markUniforms",f.join(`
488
+ `));r=r.map(m),t=m(t),e=m(e);const w=[C,a,...r,mw,K6,[...c].join(`
489
+ `),...l,j6,W6,t],b=[C,a,...r,mw,X6,e],y=this.gl;this.programStatus=y6(y,this.glHelper.compileShader(y.VERTEX_SHADER,w),this.glHelper.compileShader(y.FRAGMENT_SHADER,b))}finalizeGraphicsInitialization(){if(this.programInfo)return;if(!this.programStatus)throw new Error("No program status found! "+this.unitView.getPathString());const t=this.programStatus.getProgramErrors();if(t){t.detail&&console.warn(t.detail);const e=new Error("Cannot create shader program: "+t.message);throw e.view=this.unitView,e}this.programInfo=A8(this.gl,this.programStatus.program),delete this.programStatus,this.viewUniformInfo=bC(this.gl,this.programInfo,"View"),this.markUniformInfo=bC(this.gl,this.programInfo,"Mark"),this.gl.useProgram(this.programInfo.program),fi(this.programInfo,{uSampleFacet:[0,1,0,1],uTransitionOffset:0,uZero:0});for(const e of g(this,tn))e();D(this,tn,void 0)}createMarkUniformSetter(t){const e=this.markUniformInfo.setters[t];if(!e)throw new Error(`Uniform "${t}" not found int the Mark block!`);return r=>{e(r),this.markUniformsAltered=!0,this.unitView.context.animator.requestRender()}}registerMarkUniformValue(t,e,r=i=>i){const i=this.createMarkUniformSetter(t),s=o=>{if(o==null)throw new Error(`Trying to set null/undefined value for uniform: ${t}${Ze(e)?`Expr: ${e.expr}`:""}`);i(o)};if(Ze(e)){const o=this.unitView.paramMediator.createExpression(e.expr),a=()=>s(r(o(null)));o.addListener(a),g(this,Eo).push({expr:o,listener:a}),a()}else s(r(e))}deleteGraphicsData(){const t=this.glHelper;if(!t){this.vertexArrayInfo=void 0,this.bufferInfo=void 0;return}const e=t.gl;if(this.vertexArrayInfo&&(this.gl.bindVertexArray(null),e.deleteVertexArray(this.vertexArrayInfo.vertexArrayObject),this.vertexArrayInfo=void 0),this.bufferInfo){for(let r=0;r<8;r++)e.disableVertexAttribArray(r);Object.values(this.bufferInfo.attribs).forEach(r=>this.gl.deleteBuffer(r.buffer)),this.bufferInfo.indices&&this.gl.deleteBuffer(this.bufferInfo.indices),this.bufferInfo=void 0}}dispose(){for(const{expr:t,listener:e}of g(this,Eo))t.removeListener(e);g(this,Eo).length=0,this.deleteGraphicsData()}updateBufferInfo(t){if(this.gl.bindVertexArray(null),this.bufferInfo&&t.vertexCount<=this.bufferInfo.allocatedVertices)for(const[e,r]of Object.entries(t.arrays))r.data&&BD(this.gl,this.bufferInfo.attribs[e],r.data,0);else{this.deleteGraphicsData(),this.bufferInfo=QD(this.gl,t.arrays,{numElements:t.vertexCount}),this.bufferInfo.allocatedVertices=t.allocatedVertices;for(const[e,r]of Object.entries(t.arrays))this.bytesPerElement.set(e,r.data.BYTES_PER_ELEMENT)}}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&&!this.unitView.paramMediator.hasPointSelections())return!1;for(const t of this.unitView.getLayoutAncestors())if(!t.isPickingSupported())return!1;return!0}bindOrSetMarkUniformBlock(){this.markUniformsAltered?(BC(this.gl,this.programInfo,this.markUniformInfo),this.markUniformsAltered=!1):xC(this.gl,this.programInfo,this.markUniformInfo)}prepareRender(t){const e=this.glHelper,r=this.gl,i=[];i.push(()=>{this.vertexArrayInfo||(this.vertexArrayInfo=F8(this.gl,this.programInfo,this.bufferInfo)),r.useProgram(this.programInfo.program)});for(const[o,a]of Object.entries(this.encoders)){const l=e.rangeTextures.get(a.scale);l&&i.push(()=>fi(this.programInfo,{[t0+o]:l}))}i.push(...this.selectionTextureOps),this.getSampleFacetMode()==ww&&i.push(()=>{let o;for(const a of this.unitView.getLayoutAncestors())if(o=a.getSampleFacetTexture(),o)break;if(!o)throw new Error("No facet texture available. This is bug.");fi(this.programInfo,{uSampleFacetTexture:o})});const s=(t.picking??!1)&&this.isPickingParticipant();return i.push(()=>oc(this.viewUniformInfo,{uViewOpacity:this.unitView.getEffectiveOpacity(),uPickingEnabled:s})),this.opaque||t.picking?i.push(()=>r.disable(r.BLEND)):i.push(()=>r.enable(r.BLEND)),i}prepareSampleFacetRendering(t){const e=t.sampleFacetRenderingOptions,r=this.programInfo.uniformSetters.uSampleFacet;if(e&&r){const i=e.pixelToUnit,s=e.locSize.location*i,o=e.locSize.size*i;if(s>1||s+o<0)return!1;this.gl.uniform4f(r.location,s,o,s,o)}return!0}render(t){}createRenderCallback(t,e){var f;if(!this.bufferInfo)return()=>{};const r=this;let i;const s=(f=this.unitView.getScaleResolution("x"))==null?void 0:f.getScale(),o=s&&Je(s.type),a=["index","locus"].includes(s==null?void 0:s.type)?-1:0,l=[0,0];i=h=>{if(o&&h.xIndex){const A=s.domain(),d=h.xIndex(A[0]+a,A[1],l),p=d[0],C=d[1]-p;C>0&&t(p,C)}else t(h.offset,h.count)};const c=this.rangeMap.get(void 0).count==0?e.facetId:void 0,u=this.rangeMap.get(c);return e.sampleFacetRenderingOptions?function(){u.count&&r.prepareSampleFacetRendering(e)&&i(u)}:function(){u.count&&i(u)}}setViewport(t,e,r,i){r=r.flatten();const s=this.gl,o=this.properties,a=.5,l=(o.xOffset??0)+a,c=(o.yOffset??0)+a;let u,f=r;if(o.clip!=="never"&&(o.clip||i)){let h=0,A=0,d;if(i){if(f=r.intersect(i).flatten(),!f.isDefined())return!1;d=[r.width/f.width,r.height/f.height],A=Math.max(0,r.y2-i.y2),h=Math.min(0,r.x-i.x)}else d=[1,1];const p=[f.x,t.height-f.y2,f.width,f.height].map(b=>b*e),C=p.map(b=>Math.floor(b)),m=p[0]-C[0],w=p[1]-C[1];s.viewport(...C),s.scissor(...C),s.enable(s.SCISSOR_TEST),u={uViewOffset:[(l+h+m/e)/f.width,-(c+A-w/e)/f.height],uViewScale:d}}else{if(!r.isDefined())return!1;s.viewport(0,0,t.width*e,t.height*e),s.disable(s.SCISSOR_TEST),u={uViewOffset:[(r.x+l)/t.width,(t.height-r.y-c-r.height)/t.height],uViewScale:[r.width/t.width,r.height/t.height]}}return oc(this.viewUniformInfo,{...u,uViewportSize:[r.width,r.height],uDevicePixelRatio:e}),BC(this.gl,this.programInfo,this.viewUniformInfo),!0}findDatumAt(t,e){}}tn=new WeakMap,Eo=new WeakMap;class eM extends vn{constructor(){super([],JSON.stringify)}get(t){let e=super.get(t);return e===void 0&&(e={offset:0,count:0,xIndex:void 0},super.set(t,e)),e}migrateEntries(t){for(const[e,r]of this.entries())t.has(e)||(r.offset=0,r.count=0,r.xIndex=void 0);for(const[e,r]of t.entries())Object.assign(this.get(e),r)}}function i0(n,t){const e=Rh(t);let r=n[t]&&{...n[t]},i=n[e]&&{...n[e]};if(!(vt(r)||vt(i))){if(r){if(!Tt(n[t]))return;if(i){if(r.type!="quantitative"){const s=(1-(r.band||1))/2;r.band=s,i.band=-s}}else if(r.type=="quantitative")i={datum:0,domainInert:!0};else{i={...r};const s=(1-(r.band??1))/2;r.band=0+s,i.band=1-s}}else r={value:0},i={value:1};n[t]=r,n[e]=i}}function Ff(n,t){const e=c1(n);e&&(e.resolutionChannel=t)}function Ew(n,t){n.stroke||(t?n.stroke={value:null}:(n.stroke=structuredClone(n.color),Ff(n.stroke,"color"))),vt(n.stroke)&&n.stroke.value===null&&(n.strokeWidth={value:0}),n.strokeOpacity||(n.strokeOpacity=structuredClone(n.opacity),Ff(n.strokeOpacity,"opacity"))}function bw(n,t){vt(n.fill)&&n.fill.value===null?n.fillOpacity={value:0}:n.fill||(n.fill=structuredClone(n.color),Ff(n.fill,"color"),!t&&!n.fillOpacity&&(n.fillOpacity={value:0})),n.fillOpacity||(t?(n.fillOpacity=structuredClone(n.opacity),Ff(n.fillOpacity,"opacity")):n.fillOpacity={value:0})}const tM=["none","diagonal","antiDiagonal","cross","vertical","horizontal","grid","dots","rings","ringsLarge"];class nM extends xc{constructor(e){super(e);S(this,Tr);this.augmentDefaultProperties({x2:void 0,y2:void 0,filled:!0,color:"#4c78a8",opacity:1,strokeWidth:3,cornerRadius:0,minWidth:.5,minHeight:.5,minOpacity:1})}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 kf(this,"opaque",()=>!M(this,Tr,Tg).call(this)&&!M(this,Tr,Pg).call(this)&&!this.properties.shadowOpacity&&vt(this.encoding.fillOpacity)&&this.encoding.fillOpacity.value==1&&this.properties.minOpacity==1)&&this.unitView.getEffectiveOpacity()==1}fixEncoding(e){return i0(e,"x"),i0(e,"y"),Ew(e,this.properties.filled),bw(e,this.properties.filled),delete e.color,delete e.opacity,e}onBeforeSampleAnimation(){}onAfterSampleAnimation(){}async initializeGraphics(){await super.initializeGraphics();const e=[];M(this,Tr,Tg).call(this)&&e.push("ROUNDED_CORNERS"),M(this,Tr,Pg).call(this)&&e.push("STROKED"),this.properties.shadowOpacity&&e.push("SHADOW"),this.createAndLinkShaders(P8,L8,[O8,...e.map(r=>"#define "+r)])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uMinWidth",e.minWidth),this.registerMarkUniformValue("uMinHeight",e.minHeight),this.registerMarkUniformValue("uMinOpacity",e.minOpacity),this.registerMarkUniformValue("uCornerRadiusTopRight",e.cornerRadiusTopRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomRight",e.cornerRadiusBottomRight??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusTopLeft",e.cornerRadiusTopLeft??e.cornerRadius??0),this.registerMarkUniformValue("uCornerRadiusBottomLeft",e.cornerRadiusBottomLeft??e.cornerRadius??0),this.registerMarkUniformValue("uHatchPattern",e.hatch,r=>Math.max(0,tM.indexOf(r??"none"))),this.registerMarkUniformValue("uShadowBlur",e.shadowBlur??0),this.registerMarkUniformValue("uShadowOpacity",e.shadowOpacity??0),this.registerMarkUniformValue("uShadowOffsetX",e.shadowOffsetX??0),this.registerMarkUniformValue("uShadowOffsetY",e.shadowOffsetY??0),this.registerMarkUniformValue("uShadowColor",e.shadowColor??"black",e0)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const r=e.getItemCount(),i=new V6({encoders:this.encoders,attributes:this.getAttributes(),numItems:r});i.addBatches(e.facetBatches);const s=i.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}prepareRender(e){const r=super.prepareRender(e);return r.push(()=>this.bindOrSetMarkUniformBlock()),r.push(()=>Ai(this.gl,this.programInfo,this.vertexArrayInfo)),r}render(e){const r=this.gl;return this.createRenderCallback((i,s)=>{lf(r,this.vertexArrayInfo,r.TRIANGLE_STRIP,s,i)},e)}findDatumAt(e,r){e=ft(e);const i=this.unitView.getCollector().facetBatches.get(e);if(!i)return;const s=this.encoders,o=s.x.scale.type;if(Pn(o)){const a=s.x.dataAccessor;return i.find(l=>r==a(l))}else{const a=s.x.dataAccessor,l=s.x2.dataAccessor;return i.find(c=>r>=a(c)&&r<l(c))}}}Tr=new WeakSet,Tg=function(){const e=this.properties;return e.cornerRadius||e.cornerRadiusBottomLeft||e.cornerRadiusBottomRight||e.cornerRadiusTopLeft||e.cornerRadiusTopRight},Pg=function(){const e=this.encoding.strokeWidth;return!(vt(e)&&!e.value)||"condition"in e};const rM=`flat out float vRadius;flat out float vRadiusWithPadding;flat out lowp vec4 vFillColor;flat out lowp vec4 vStrokeColor;flat out lowp float vShape;flat out lowp float vHalfStrokeWidth;flat out mat2 vRotationMatrix;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TRIANGLE_RIGHT=5.0;const float TRIANGLE_DOWN=6.0;const float TRIANGLE_LEFT=7.0;const float TICK_UP=8.0;const float TICK_RIGHT=9.0;const float TICK_DOWN=10.0;const float TICK_LEFT=11.0;float computeSemanticThresholdFactor(){return getScaled_semanticScore()>=uSemanticThreshold ? 1.0 : 0.0;}vec2 getDxDy(){
509
490
  #if defined(dx_DEFINED) || defined(dy_DEFINED)
510
491
  return vec2(getScaled_dx(),getScaled_dy())/uViewportSize;
511
492
  #else
512
493
  return vec2(0.0,0.0);
513
494
  #endif
514
- }void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: 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;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;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+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=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*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();}`,MF="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.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 tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){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==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",RF=`layout(std140)uniform Mark{/***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 float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
495
+ }void main(void){float shapeAngle=0.0;float semanticThresholdFactor=isPointSelected()? 1.0: 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;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;if(vShape>TICK_UP&&vShape<=TICK_LEFT){shapeAngle=(vShape-TICK_UP)*90.0;vShape=TICK_UP;}else if(vShape>TRIANGLE_UP&&vShape<=TRIANGLE_LEFT){shapeAngle=(vShape-TRIANGLE_UP)*90.0;vShape=TRIANGLE_UP;}float angleInDegrees=getScaled_angle();float angle=-(shapeAngle+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=max((diameter+padding),uPickingEnabled ? uMinPickingSize : 0.0)*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();}`,iM="const lowp vec4 white=vec4(1.0);const lowp vec4 black=vec4(0.0,0.0,0.0,1.0);flat in float vRadius;flat in float vRadiusWithPadding;flat in lowp vec4 vFillColor;flat in lowp vec4 vStrokeColor;flat in lowp float vShape;flat in lowp float vHalfStrokeWidth;flat in mat2 vRotationMatrix;out lowp vec4 fragColor;const float CIRCLE=0.0;const float SQUARE=1.0;const float CROSS=2.0;const float DIAMOND=3.0;const float TRIANGLE_UP=4.0;const float TICK_UP=8.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 tickUp(vec2 p,float r){float halfR=r*0.5;p.y+=halfR;p=abs(p);return max(p.x-r*0.15,p.y-halfR);}float equilateralTriangle(vec2 p,float r){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==CROSS){d=crossShape(p,r);}else if(vShape==DIAMOND){d=diamond(p,r);}else if(vShape==TRIANGLE_UP){d=equilateralTriangle(p,r);}else if(vShape==TICK_UP){d=tickUp(p,r);}else{d=0.0;}if(!uPickingEnabled){lowp vec4 fillColor=mix(vFillColor,white,-d*uGradientStrength/vRadius);fragColor=distanceToColor(d+(uInwardStroke ? vHalfStrokeWidth : 0.0),fillColor,vStrokeColor,vec4(0.0),vHalfStrokeWidth);}else if(d-vHalfStrokeWidth<=0.0){fragColor=vPickingColor;}else{discard;}}",sM=`layout(std140)uniform Mark{/***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 float uMinPickingSize;uniform mediump float uScaleFactor;uniform mediump float uZoomLevel;uniform highp float uSemanticThreshold;uniform mediump float uGradientStrength;
515
496
  #pragma markUniforms
516
- };`;class r2 extends Ue{constructor(t){super(t),this.params=t,this.k=t.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(t){this.reservoir.push(t),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(t){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=t,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(t){this.ingester(t)}complete(){for(const t of this.reservoir)this._propagate(t);super.complete()}}function NF(n,t,e){const r=new r2({type:"sample",size:n});for(const i of t)r.handle(e(i));return r.complete(),r.reservoir}const TF={};class PF extends _a{constructor(e){super(e);D(this,xf);D(this,Ws,()=>0);this.augmentDefaultProperties({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,minPickingSize:2});const r=this.properties.semanticZoomFraction;if(r!=null)if(it(r)){const i=this.unitView.paramMediator.createExpression(r.expr);i.addListener(()=>this.getContext().animator.requestRender()),F(this,Ws,i)}else F(this,Ws,()=>r);"geometricZoomBound"in this.properties&&console.warn('geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.')}getAttributes(){return["uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","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(),...TF}}fixEncoding(e){return t2(e,this.properties.filled),n2(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){var r,i;super.initializeData();const e=(i=(r=this.encoders.semanticScore)==null?void 0:r.dataAccessor)==null?void 0:i.asNumberAccessor();e&&(this.sampledSemanticScores=Float32Array.from(NF(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((s,o)=>s-o))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(FF,MF,[RF])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uInwardStroke",e.inwardStroke,r=>!!r),this.registerMarkUniformValue("uGradientStrength",e.fillGradientStrength),this.registerMarkUniformValue("uMinPickingSize",e.minPickingSize)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const r=e.getItemCount(),i=new yF({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(r,this.properties.minBufferSize||0)});i.addBatches(e.facetBatches);const s=i.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-m(this,Ws).call(this)*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const r=this.sampledSemanticScores;return Lg(r,e)}}else return-1}prepareRender(e){const r=super.prepareRender(e);return r.push(()=>{Sa(this.markUniformInfo,{uScaleFactor:P(this,xf,jE).call(this),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),r.push(()=>this.bindOrSetMarkUniformBlock()),r.push(()=>ti(this.gl,this.programInfo,this.vertexArrayInfo)),r}render(e){const r=this.gl;return this.createRenderCallback((i,s)=>{s&&yu(r,this.vertexArrayInfo,r.POINTS,s,i)},e)}}Ws=new WeakMap,xf=new WeakSet,jE=function(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)};const LF="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat 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();}",OF="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat 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;}}",UF=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
497
+ };`;class xw extends Le{constructor(t){super(t),this.params=t,this.k=t.size||500,this.reset()}reset(){super.reset(),this.reservoir=[],this.W=void 0,this.ingester=this._initialIngester}_initialIngester(t){this.reservoir.push(t),this.reservoir.length==this.k&&(this.W=Math.exp(Math.log(Math.random())/this.k),this.i=this.k,this.next=this.i,this.ingester=this._finalIngester,this._setNextStop())}_finalIngester(t){++this.i==this.next&&(this.reservoir[Math.floor(Math.random()*this.k)]=t,this.W*=Math.exp(Math.log(Math.random())/this.k),this._setNextStop())}_setNextStop(){this.next+=Math.floor(Math.log(Math.random())/Math.log(1-this.W))+1}handle(t){this.ingester(t)}complete(){for(const t of this.reservoir)this._propagate(t);super.complete()}}function oM(n,t,e){const r=new xw({type:"sample",size:n});for(const i of t)r.handle(e(i));return r.complete(),r.reservoir}const aM={};class cM extends xc{constructor(e){super(e);S(this,yA);S(this,bo,()=>0);this.augmentDefaultProperties({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,minPickingSize:2});const r=this.properties.semanticZoomFraction;if(r!=null)if(Ze(r)){const i=this.unitView.paramMediator.createExpression(r.expr);i.addListener(()=>this.getContext().animator.requestRender()),D(this,bo,i)}else D(this,bo,()=>r);"geometricZoomBound"in this.properties&&console.warn('geometricZoomBound is deprecated. Use something like the following instead: "size": { "expr": "min(0.5 * pow(zoomLevel, 2), 200)" }.')}getAttributes(){return["uniqueId","facetIndex","x","y","size","semanticScore","shape","strokeWidth","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(),...aM}}fixEncoding(e){return Ew(e,this.properties.filled),bw(e,this.properties.filled),delete e.color,delete e.opacity,e}initializeData(){var r,i;super.initializeData();const e=(i=(r=this.encoders.semanticScore)==null?void 0:r.dataAccessor)==null?void 0:i.asNumberAccessor();e&&(this.sampledSemanticScores=Float32Array.from(oM(1e4,this.unitView.getCollector().getData(),e)),this.sampledSemanticScores.sort((s,o)=>s-o))}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(rM,iM,[sM])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const e=this.properties;this.registerMarkUniformValue("uInwardStroke",e.inwardStroke,r=>!!r),this.registerMarkUniformValue("uGradientStrength",e.fillGradientStrength),this.registerMarkUniformValue("uMinPickingSize",e.minPickingSize)}updateGraphicsData(){const e=this.unitView.getCollector();if(!e){console.debug("No collector");return}const r=e.getItemCount(),i=new Y6({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(r,this.properties.minBufferSize||0)});i.addBatches(e.facetBatches);const s=i.toArrays();this.rangeMap.migrateEntries(s.rangeMap),this.updateBufferInfo(s)}getSemanticThreshold(){if(this.sampledSemanticScores){const e=Math.max(0,1-g(this,bo).call(this)*this.unitView.getZoomLevel());if(e<=0)return-1/0;if(e>=1)return 1/0;{const r=this.sampledSemanticScores;return Kp(r,e)}}else return-1}prepareRender(e){const r=super.prepareRender(e);return r.push(()=>{oc(this.markUniformInfo,{uScaleFactor:M(this,yA,gx).call(this),uSemanticThreshold:this.getSemanticThreshold()}),this.markUniformsAltered=!0}),r.push(()=>this.bindOrSetMarkUniformBlock()),r.push(()=>Ai(this.gl,this.programInfo,this.vertexArrayInfo)),r}render(e){const r=this.gl;return this.createRenderCallback((i,s)=>{s&&lf(r,this.vertexArrayInfo,r.POINTS,s,i)},e)}}bo=new WeakMap,yA=new WeakSet,gx=function(){const e=Math.pow(2,this.properties.geometricZoomBound||0);return Math.pow(Math.min(1,this.unitView.getZoomLevel()/e),1/3)};const lM="const int BUTT=0;const int SQUARE=1;const int ROUND=2;in float pos;in float side;flat out vec4 vColor;flat 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();}",uM="const int BUTT=0;const int SQUARE=1;const int ROUND=2;uniform sampler2D uDashTexture;flat in vec4 vColor;flat 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;}}",fM=`layout(std140)uniform Mark{uniform mediump float uMinLength;uniform mediump float uDashTextureSize;uniform lowp int uStrokeCap;uniform mediump float uStrokeDashOffset;
517
498
  #pragma markUniforms
518
- };`;class GF extends _a{constructor(t){super(t),this.dashTextureSize=0,this.augmentDefaultProperties({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"})}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){if(!(t.x&&t.y&&t.x2&&t.y2))if(t.x&&t.x2&&!t.y)t.y={value:.5},t.y2=t.y;else if(t.y&&t.y2&&!t.x)t.x={value:.5},t.x2=t.x;else if(t.x&&!t.y)t.y={value:0},t.y2={value:1},t.x2=t.x;else if(t.y&&!t.x)t.x={value:0},t.x2={value:1},t.y2=t.y;else if(t.x&&t.y&&t.y2)t.x2=t.x;else if(t.y&&t.x&&t.x2)t.y2=t.y;else if(t.y&&t.x)if(!t.x2&&vt(t.y)&&t.y.type=="quantitative")t.x2=t.x,t.y2={datum:0};else if(!t.y2&&vt(t.x)&&t.x.type=="quantitative")t.y2=t.y,t.x2={datum:0};else throw new Error("A bug!");else throw new Error("At a minimum, either the x or y channel must be defined in the rule mark's encoding: "+JSON.stringify(t));return t}async initializeGraphics(){await super.initializeGraphics();const t=this.gl,e=zF(this.properties.strokeDash);this.dashTexture=Qa(t,{level:0,mag:t.NEAREST,min:t.NEAREST,internalFormat:t.R8,format:t.RED,src:e,height:1}),this.dashTextureSize=e.length,this.createAndLinkShaders(LF,OF,[UF])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;this.registerMarkUniformValue("uMinLength",t.minLength),this.registerMarkUniformValue("uStrokeCap",t.strokeCap??"butt",e=>["butt","square","round"].indexOf(e)),Sa(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getItemCount(),r=new CF({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(e,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>this.bindOrSetMarkUniformBlock()),e.push(()=>ei(this.programInfo,{uDashTexture:this.dashTexture})),e.push(()=>ti(this.gl,this.programInfo,this.vertexArrayInfo)),e}render(t){const e=this.gl;return this.createRenderCallback((r,i)=>yu(e,this.vertexArrayInfo,e.TRIANGLE_STRIP,i,r),t)}}function zF(n){if(!n)return new Uint8Array(0);if(n.length==0||n.length%2||n.findIndex(s=>Math.round(s)!=s||s<1||s>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(n));const t=n.reduce((s,o)=>s+o),e=new Uint8Array(t);let r=!0,i=0;for(let s of n){for(;s;)e[i++]=r&&255||0,s--;r=!r}return e}const HF="flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);if(chordLength>uMaxChordLength){if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);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);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}",YF="flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;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);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}",_F=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
499
+ };`;class AM extends xc{constructor(t){super(t),this.dashTextureSize=0,this.augmentDefaultProperties({x2:void 0,y2:void 0,size:1,color:"black",opacity:1,minLength:0,strokeDash:null,strokeDashOffset:0,strokeCap:"butt"})}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){if(!(t.x&&t.y&&t.x2&&t.y2))if(t.x&&t.x2&&!t.y)t.y={value:.5},t.y2=t.y;else if(t.y&&t.y2&&!t.x)t.x={value:.5},t.x2=t.x;else if(t.x&&!t.y)t.y={value:0},t.y2={value:1},t.x2=t.x;else if(t.y&&!t.x)t.x={value:0},t.x2={value:1},t.y2=t.y;else if(t.x&&t.y&&t.y2)t.x2=t.x;else if(t.y&&t.x&&t.x2)t.y2=t.y;else if(t.y&&t.x)if(!t.x2&&Tt(t.y)&&t.y.type=="quantitative")t.x2=t.x,t.y2={datum:0};else if(!t.y2&&Tt(t.x)&&t.x.type=="quantitative")t.y2=t.y,t.x2={datum:0};else throw new Error("A bug!");else throw new Error("At a minimum, either the x or y channel must be defined in the rule mark's encoding: "+JSON.stringify(t));return t}async initializeGraphics(){await super.initializeGraphics();const t=this.gl,e=hM(this.properties.strokeDash);this.dashTexture=sc(t,{level:0,mag:t.NEAREST,min:t.NEAREST,internalFormat:t.R8,format:t.RED,src:e,height:1}),this.dashTextureSize=e.length,this.createAndLinkShaders(lM,uM,[fM])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;this.registerMarkUniformValue("uMinLength",t.minLength),this.registerMarkUniformValue("uStrokeCap",t.strokeCap??"butt",e=>["butt","square","round"].indexOf(e)),oc(this.markUniformInfo,{uDashTextureSize:+this.dashTextureSize}),this.markUniformsAltered=!0}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getItemCount(),r=new _6({encoders:this.encoders,attributes:this.getAttributes(),numItems:Math.max(e,this.properties.minBufferSize||0)});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.updateBufferInfo(i)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>this.bindOrSetMarkUniformBlock()),e.push(()=>fi(this.programInfo,{uDashTexture:this.dashTexture})),e.push(()=>Ai(this.gl,this.programInfo,this.vertexArrayInfo)),e}render(t){const e=this.gl;return this.createRenderCallback((r,i)=>lf(e,this.vertexArrayInfo,e.TRIANGLE_STRIP,i,r),t)}}function hM(n){if(!n)return new Uint8Array(0);if(n.length==0||n.length%2||n.findIndex(s=>Math.round(s)!=s||s<1||s>1e3)>=0)throw new Error("Invalid stroke dash pattern: "+JSON.stringify(n));const t=n.reduce((s,o)=>s+o),e=new Uint8Array(t);let r=!0,i=0;for(let s of n){for(;s;)e[i++]=r&&255||0,s--;r=!r}return e}const dM="flat out vec4 vColor;flat out float vSize;out float vNormalLengthInPixels;flat out float vGamma;const int SHAPE_ARC=0;const int SHAPE_DOME=1;const int SHAPE_DIAGONAL=2;const int SHAPE_LINE=3;const int ORIENT_VERTICAL=0;const int ORIENT_HORIZONTAL=1;float distanceFromLine(vec2 pointOnLine1,vec2 pointOnLine2,vec2 point){vec2 a=point-pointOnLine1;vec2 b=pointOnLine2-pointOnLine1;vec2 proj=dot(a,b)/dot(b,b)*b;return length(a-proj);}bool isInsideViewport(vec2 point,float marginFactor){vec2 margin=uViewportSize*vec2(marginFactor);return point.x>=-margin.x&&point.x<=uViewportSize.x+margin.x&&point.y>=-margin.y&&point.y<=uViewportSize.y+margin.y;}void main(void){float pixelSize=1.0/uDevicePixelRatio;float opacity=getScaled_opacity()*uViewOpacity;vec2 p1,p2,p3,p4;vec2 a=applySampleFacet(vec2(getScaled_x(),getScaled_y()))*uViewportSize;vec2 b=applySampleFacet(vec2(getScaled_x2(),getScaled_y2()))*uViewportSize;if(uShape<=SHAPE_DOME){if(uShape==SHAPE_DOME){vec2 height=vec2(0.0);if(uOrient==ORIENT_VERTICAL){p1=vec2(min(a.x,b.x),b.y);p4=vec2(max(a.x,b.x),b.y);height=vec2(0.0,a.y-b.y);if(uClampApex){if(p4.x>0.0){p1.x=max(p1.x,-p4.x);}if(p1.x<uViewportSize.x){p4.x=min(p4.x,2.0*uViewportSize.x-p1.x);}}}else{p1=vec2(b.x,min(a.y,b.y));p4=vec2(b.x,max(a.y,b.y));height=vec2(a.x-b.x,0.0);if(uClampApex){if(p4.y>0.0){p1.y=max(p1.y,-p4.y);}if(p1.y<uViewportSize.y){p4.y=min(p4.y,2.0*uViewportSize.y-p1.y);}}}vec2 controlOffset=height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}if(uShape==SHAPE_ARC){p1=a;p4=b;vec2 chordVector=p4-p1;vec2 unitChordVector=normalize(chordVector);vec2 chordNormal=vec2(-unitChordVector.y,unitChordVector.x);float chordLength=length(chordVector);if(chordLength>uMaxChordLength){if(isInsideViewport(p1,2.0)){chordLength=uMaxChordLength;p4=p1+unitChordVector*uMaxChordLength;}else if(isInsideViewport(p4,2.0)){chordLength=uMaxChordLength;p1=p4-unitChordVector*uMaxChordLength;}}float height=max(chordLength/2.0*uArcHeightFactor,uMinArcHeight);vec2 controlOffset=chordNormal*height/0.75;p2=p1+controlOffset;p3=p4+controlOffset;}}else if(uShape==SHAPE_DIAGONAL){if(uOrient==ORIENT_VERTICAL){p1=a;p2=vec2(a.x,(a.y+b.y)/2.0);p3=vec2(b.x,(a.y+b.y)/2.0);p4=b;}else{p1=a;p2=vec2((a.x+b.x)/2.0,a.y);p3=vec2((a.x+b.x)/2.0,b.y);p4=b;}}else if(uShape==SHAPE_LINE){p1=a;p2=(a+b)/2.0;p3=p2;p4=b;}vec2 strip=vec2(float(gl_VertexID/2)/float(uSegmentBreaks),float(gl_VertexID % 2)-0.5);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);float size=getScaled_size();if(size<pixelSize){opacity*=size/pixelSize;size=pixelSize;}float paddedSize=uPickingEnabled? max(size,uMinPickingSize): size+pixelSize;vNormalLengthInPixels=strip.y*paddedSize;if(uShape==SHAPE_ARC&&uArcFadingDistance[0]>0.0&&uArcFadingDistance[1]>0.0&&(!uNoFadingOnPointSelection||!isPointSelected())){float d=distanceFromLine(p1,p4,p);float distanceOpacity=smoothstep(uArcFadingDistance[1],uArcFadingDistance[0],d);opacity*=distanceOpacity;if(distanceOpacity<=0.0){vNormalLengthInPixels=0.0;}}p+=normal*vNormalLengthInPixels;gl_Position=pixelsToNdc(p);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);vSize=paddedSize;setupPicking();}",gM="flat in vec4 vColor;flat in float vSize;in float vNormalLengthInPixels;flat in float vGamma;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);opacity=pow(opacity,vGamma);fragColor=vColor*opacity;if(uPickingEnabled){fragColor=vPickingColor;}}",pM=`layout(std140)uniform Mark{uniform float uArcHeightFactor;uniform float uMinArcHeight;uniform float uMinPickingSize;uniform int uShape;uniform int uOrient;uniform bool uClampApex;uniform float uMaxChordLength;uniform vec2 uArcFadingDistance;uniform bool uNoFadingOnPointSelection;uniform int uSegmentBreaks;
519
500
  #pragma markUniforms
520
- };`,VF=["arc","dome","diagonal","line"],JF=["vertical","horizontal"];class qF extends _a{constructor(t){super(t),this.augmentDefaultProperties({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:"arc",orient:"vertical"}),this._baseInstanceExt=this.gl.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")}get defaultHitTestMode(){return"endpoints"}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){return t.x2||(vt(t.x)?t.x2={datum:0}:t.x2=t.x),t.y2||(vt(t.y)?t.y2={datum:0}:t.y2=t.y),t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(HF,YF,[_F])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;this.registerMarkUniformValue("uArcFadingDistance",t.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue("uArcHeightFactor",t.arcHeightFactor),this.registerMarkUniformValue("uMinArcHeight",t.minArcHeight),this.registerMarkUniformValue("uMinPickingSize",t.minPickingSize),this.registerMarkUniformValue("uShape",t.linkShape,e=>VF.indexOf(e)),this.registerMarkUniformValue("uOrient",t.orient,e=>JF.indexOf(e)),this.registerMarkUniformValue("uClampApex",t.clampApex,e=>!!e),this.registerMarkUniformValue("uMaxChordLength",t.maxChordLength),this.registerMarkUniformValue("uSegmentBreaks",t.segments,e=>e),this.registerMarkUniformValue("uNoFadingOnPointSelection",t.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getItemCount(),r=new wF({encoders:this.encoders,attributes:this.getAttributes(),numItems:e});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([s,o])=>[s,{...o,data:void 0}])),this.updateBufferInfo(i)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?e.push(()=>ti(this.gl,this.programInfo,this.vertexArrayInfo)):e.push(()=>this.gl.bindVertexArray(null)),e}render(t){const e=this.gl,r=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((i,s)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(e.TRIANGLE_STRIP,0,r(),s,i)},t):this.createRenderCallback((i,s)=>{for(const o of Object.entries(this.bufferInfo.attribs)){const[a,l]=o;l.buffer&&l.numComponents&&l.divisor&&(l.offset=i*this.arrays[a].numComponents*this.bytesPerElement.get(a))}ti(e,this.programInfo,this.bufferInfo),e.drawArraysInstanced(e.TRIANGLE_STRIP,0,r(),s)},t)}}const KF=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
501
+ };`,mM=["arc","dome","diagonal","line"],CM=["vertical","horizontal"];class yM extends xc{constructor(t){super(t),this.augmentDefaultProperties({x:0,x2:void 0,y:0,y2:void 0,size:1,color:"black",opacity:1,segments:101,arcHeightFactor:1,minArcHeight:1.5,minPickingSize:3,clampApex:!1,maxChordLength:5e4,arcFadingDistance:!1,noFadingOnPointSelection:!0,linkShape:"arc",orient:"vertical"}),this._baseInstanceExt=this.gl.getExtension("WEBGL_draw_instanced_base_vertex_base_instance")}get defaultHitTestMode(){return"endpoints"}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","size","color","opacity"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size"]}fixEncoding(t){return t.x2||(Tt(t.x)?t.x2={datum:0}:t.x2=t.x),t.y2||(Tt(t.y)?t.y2={datum:0}:t.y2=t.y),t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(dM,gM,[pM])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties;this.registerMarkUniformValue("uArcFadingDistance",t.arcFadingDistance,e=>e||[0,0]),this.registerMarkUniformValue("uArcHeightFactor",t.arcHeightFactor),this.registerMarkUniformValue("uMinArcHeight",t.minArcHeight),this.registerMarkUniformValue("uMinPickingSize",t.minPickingSize),this.registerMarkUniformValue("uShape",t.linkShape,e=>mM.indexOf(e)),this.registerMarkUniformValue("uOrient",t.orient,e=>CM.indexOf(e)),this.registerMarkUniformValue("uClampApex",t.clampApex,e=>!!e),this.registerMarkUniformValue("uMaxChordLength",t.maxChordLength),this.registerMarkUniformValue("uSegmentBreaks",t.segments,e=>e),this.registerMarkUniformValue("uNoFadingOnPointSelection",t.noFadingOnPointSelection,e=>!!e)}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getItemCount(),r=new J6({encoders:this.encoders,attributes:this.getAttributes(),numItems:e});r.addBatches(t.facetBatches);const i=r.toArrays();this.rangeMap.migrateEntries(i.rangeMap),this.arrays=Object.fromEntries(Object.entries(i.arrays).map(([s,o])=>[s,{...o,data:void 0}])),this.updateBufferInfo(i)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>this.bindOrSetMarkUniformBlock()),this._baseInstanceExt?e.push(()=>Ai(this.gl,this.programInfo,this.vertexArrayInfo)):e.push(()=>this.gl.bindVertexArray(null)),e}render(t){const e=this.gl,r=()=>(this.markUniformInfo.uniforms.uSegmentBreaks[0]+1)*2;return this._baseInstanceExt?this.createRenderCallback((i,s)=>{this._baseInstanceExt.drawArraysInstancedBaseInstanceWEBGL(e.TRIANGLE_STRIP,0,r(),s,i)},t):this.createRenderCallback((i,s)=>{for(const o of Object.entries(this.bufferInfo.attribs)){const[a,l]=o;l.buffer&&l.numComponents&&l.divisor&&(l.offset=i*this.arrays[a].numComponents*this.bytesPerElement.get(a))}Ai(e,this.programInfo,this.bufferInfo),e.drawArraysInstanced(e.TRIANGLE_STRIP,0,r(),s)},t)}}const wM=`in mediump vec2 vertexCoord;in lowp vec2 textureCoord;in float width;out vec2 vTexCoord;out float vEdgeFadeOpacity;flat out vec4 vColor;flat out float vSlope;flat out float vGamma;struct RangeResult{float pos;float scale;};float minValue(vec4 v){return min(min(v.x,v.y),min(v.z,v.w));}float maxValue(vec4 v){return max(max(v.x,v.y),max(v.z,v.w));}/***All measures are in[0,1]*/RangeResult positionInsideRange(float a,float b,float width,float padding,int align,bool flush){float span=b-a;float paddedWidth=width+2.0*padding;if(a>1.0||b<0.0){return RangeResult(0.0,0.0);}float extra=max(0.0,span-paddedWidth);float pos;if(align==0){float centre=a+b;if(flush){float leftOver=max(0.0,paddedWidth-centre);centre+=min(leftOver,extra);float rightOver=max(0.0,paddedWidth+centre-2.0);centre-=min(rightOver,extra);}pos=centre/2.0;}else if(align<0){float edge=a;if(flush){float over=max(0.0,-edge);edge+=min(over,extra);}pos=edge+padding;}else{float edge=b;if(flush){float over=max(0.0,edge-1.0);edge-=min(over,extra);}pos=edge-padding;}float scale=clamp((span-padding)/paddedWidth,0.0,1.0);return RangeResult(pos,scale);}vec2 calculateRotatedDimensions(float width,mat2 rotationMatrix){vec2 a=abs(rotationMatrix*vec2(width/2.0,0.5));vec2 b=abs(rotationMatrix*vec2(width/2.0,-0.5));return vec2(max(a.x,b.x),max(a.y,b.y))*2.0;}ivec2 fixAlignForAngle(ivec2 align,float angleInDegrees){float a=mod(angleInDegrees+45.0,360.0);int x=align.x;int y=-align.y;if(a<90.0){return ivec2(x,y);}else if(a<180.0){return ivec2(y,-x);}else if(a<270.0){return ivec2(-x,y);}else{return ivec2(-y,x);}}void main(void){float opacity=getScaled_opacity()*uViewOpacity;vec2 size=vec2(getScaled_size());float x=getScaled_x();float y=getScaled_y();float scale=1.0;float angleInDegrees=getScaled_angle();float angle=-angleInDegrees*PI/180.0;float sinTheta=sin(angle);float cosTheta=cos(angle);mat2 rotationMatrix=mat2(cosTheta,sinTheta,-sinTheta,cosTheta);vec2 flushSize=calculateRotatedDimensions(width,rotationMatrix);
521
502
  #if defined(x2_DEFINED) || defined(y2_DEFINED)
522
503
  ivec2 align=fixAlignForAngle(uAlign,angleInDegrees);
523
504
  #else
@@ -530,9 +511,9 @@ vec2 pos=applySampleFacet(vec2(x,y));
530
511
  #ifdef y2_DEFINED
531
512
  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;}
532
513
  #endif
533
- 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*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);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();}`,jF="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",WF=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
514
+ 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*uDevicePixelRatio);vec3 color=getScaled_color();vColor=vec4(color*opacity,opacity);vGamma=getGammaForColor(color);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();}`,IM="uniform sampler2D uTexture;in vec2 vTexCoord;in float vEdgeFadeOpacity;flat in vec4 vColor;flat in float vSlope;flat in float vGamma;out lowp vec4 fragColor;float median(float r,float g,float b){return max(min(r,g),min(max(r,g),b));}float getDist(vec2 uv){vec3 c=texture(uTexture,uv).rgb;return 1.0-median(c.r,c.g,c.b);}/***Calculates the super-sampled distance to the edge.*This is used to avoid aliasing when rendering small text,*as mip-mapping cannot be used here.*The distance is averaged over a grid of n x n samples.*/float getSuperDist(vec2 uv){vec2 dx=dFdx(uv);vec2 dy=dFdy(uv);float n=2.0;float sum=0.0;for(float x=0.5;x<n;x++){for(float y=0.5;y<n;y++){sum+=getDist(uv+x/n*dx+y/n*dy);}}return sum/(n*n);}void main(){float sigDist=getSuperDist(vTexCoord);float slope=vSlope;if(uLogoLetter){slope=0.7/length(vec2(dFdy(sigDist),dFdx(sigDist)));}float opa=clamp((sigDist-0.5)*slope+0.5,0.0,1.0);opa*=clamp(vEdgeFadeOpacity,0.0,1.0);opa=pow(opa,vGamma);fragColor=vColor*opa;if(uPickingEnabled){fragColor=vPickingColor;}}",EM=`layout(std140)uniform Mark{uniform mediump float uSdfNumerator;uniform mediump vec2 uD;uniform mediump vec4 uViewportEdgeFadeWidth;uniform mediump vec4 uViewportEdgeFadeDistance;uniform bool uSqueeze;uniform bool uLogoLetter;uniform lowp ivec2 uAlign;uniform mediump float uPaddingX;uniform bool uFlushX;uniform mediump float uPaddingY;uniform bool uFlushY;
534
515
  #pragma markUniforms
535
- };`,XF={left:-1,center:0,right:1},ZF={top:-1,middle:0,bottom:1,alphabetic:1};class $F extends _a{constructor(t){super(t),this.augmentDefaultProperties({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0}),this.font=this.properties.font?t.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):t.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate(["text","fitToBand","logoLetters"])}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(t){for(const e of Wr)this.properties.fitToBand&&ad(t,e);return t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(KF,jF,[WF])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties,e=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue("uPaddingX",t.paddingX),this.registerMarkUniformValue("uPaddingY",t.paddingY),this.registerMarkUniformValue("uFlushX",t.flushX,r=>!!r),this.registerMarkUniformValue("uFlushY",t.flushY,r=>!!r),this.registerMarkUniformValue("uSqueeze",t.squeeze,r=>!!r),Sa(this.markUniformInfo,{uAlign:[XF[t.align],ZF[t.baseline]],uD:[t.dx,-t.dy],uLogoLetter:!!t.logoLetters,uSdfNumerator:e,uViewportEdgeFadeWidth:[t.viewportEdgeFadeWidthTop,t.viewportEdgeFadeWidthRight,t.viewportEdgeFadeWidthBottom,t.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[t.viewportEdgeFadeDistanceTop,t.viewportEdgeFadeDistanceRight,t.viewportEdgeFadeDistanceBottom,t.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getData(),r=this.encoding,i=this.encoders.text;let s=0;const o="format"in r.text?Ze(r.text.format):c=>c;for(const c of e){const u=o(i(c)),f=Ce(u)?u:u===null?"":""+u;s+=f&&f.length||0}const a=new IF({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(s,this.properties.minBufferSize||1024)});a.addBatches(t.facetBatches);const l=a.toArrays();this.rangeMap.migrateEntries(l.rangeMap),this.updateBufferInfo(l)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>{ei(this.programInfo,{uTexture:this.font.texture})}),e.push(()=>this.bindOrSetMarkUniformBlock()),e.push(()=>ti(this.gl,this.programInfo,this.vertexArrayInfo)),e}render(t){const e=this.gl;return this.createRenderCallback((r,i)=>yu(e,this.vertexArrayInfo,e.TRIANGLES,i,r),t)}}const i2=1;function cd(){let n=[0,1],t=[0,1],e=1,r=1,i=0,s=0,o=.5,a=0;const c=u=>(u+o-n[0])/e*r+t[0];return c.invert=u=>(u-t[0])/r*e+n[0]-o,c.domain=function(u){if(arguments.length){n=kx(u),e=n[1]-n[0];const f=n[0]===0&&n[0]===0;if(e<i2&&!f){e=i2;const h=(n[0]+n[1])/2;n[0]=h-e/2,n[1]=h+e/2}return c}else return n.slice()},c.range=function(u){return arguments.length?(t=[...u],r=t[1]-t[0],c):t},c.numberingOffset=function(u){return arguments.length?(a=u,c):a},c.padding=function(u){return arguments.length?(s=u,i=Math.min(1,u),c):i},c.paddingInner=function(u){return arguments.length?(i=Math.min(1,u),c):i},c.paddingOuter=function(u){return arguments.length?(s=u,c):s},c.align=function(u){return arguments.length?(o=Math.max(0,Math.min(1,u)),c):o},c.step=()=>r/e,c.bandwidth=()=>c.step(),c.ticks=u=>{const f=c.align(),h=c.numberingOffset();return Bl(n[0]-f+h,n[1]-f+h,Math.min(u,Math.ceil(e))).filter(Number.isInteger).map(A=>A-a)},c.tickFormat=(u,f)=>{if(f)throw new Error("Index scale's tickFormat does not support a specifier!");const A=Yr(n[0],n[1],Math.min(u,Math.ceil(e)))<1e5?Ze(","):Ze(".3s");return d=>A(d+a)},c.copy=()=>cd().domain(n).range(t).paddingInner(i).paddingOuter(s).numberingOffset(a),c}const s2=Ze(",d");function e6(n,t){return n.chrom+":"+s2(Math.floor(n.pos+1))+"-"+(n.chrom!=t.chrom?t.chrom+":":"")+s2(Math.ceil(t.pos))}const o2={dm6:`chr3R 32079331
516
+ };`,bM={left:-1,center:0,right:1},xM={top:-1,middle:0,bottom:1,alphabetic:1};class BM extends xc{constructor(t){super(t),this.augmentDefaultProperties({x:.5,y:.5,x2:void 0,y2:void 0,text:"",size:11,color:"black",opacity:1,font:void 0,fontStyle:void 0,fontWeight:void 0,align:"center",baseline:"middle",dx:0,dy:0,angle:0,fitToBand:!1,squeeze:!0,paddingX:0,paddingY:0,flushX:!0,flushY:!0,logoLetters:!1,viewportEdgeFadeWidthTop:0,viewportEdgeFadeWidthRight:0,viewportEdgeFadeWidthBottom:0,viewportEdgeFadeWidthLeft:0,viewportEdgeFadeDistanceTop:-1/0,viewportEdgeFadeDistanceRight:-1/0,viewportEdgeFadeDistanceBottom:-1/0,viewportEdgeFadeDistanceLeft:-1/0}),this.font=this.properties.font?t.context.fontManager.getFont(this.properties.font,this.properties.fontStyle,this.properties.fontWeight):t.context.fontManager.getDefaultFont(),this.setupExprRefsNeedingGraphicsUpdate(["text","fitToBand","logoLetters"])}getAttributes(){return["uniqueId","facetIndex","x","x2","y","y2","color","size","opacity","angle"]}getSupportedChannels(){return[...super.getSupportedChannels(),"x2","y2","size","text","angle"]}fixEncoding(t){for(const e of ai)this.properties.fitToBand&&i0(t,e);return t}async initializeGraphics(){await super.initializeGraphics(),this.createAndLinkShaders(wM,IM,[EM])}finalizeGraphicsInitialization(){super.finalizeGraphicsInitialization(),this.gl.useProgram(this.programInfo.program);const t=this.properties,e=this.font.metrics.common.base*.35*(this.properties.logoLetters?.5:1);this.registerMarkUniformValue("uPaddingX",t.paddingX),this.registerMarkUniformValue("uPaddingY",t.paddingY),this.registerMarkUniformValue("uFlushX",t.flushX,r=>!!r),this.registerMarkUniformValue("uFlushY",t.flushY,r=>!!r),this.registerMarkUniformValue("uSqueeze",t.squeeze,r=>!!r),oc(this.markUniformInfo,{uAlign:[bM[t.align],xM[t.baseline]],uD:[t.dx,-t.dy],uLogoLetter:!!t.logoLetters,uSdfNumerator:e,uViewportEdgeFadeWidth:[t.viewportEdgeFadeWidthTop,t.viewportEdgeFadeWidthRight,t.viewportEdgeFadeWidthBottom,t.viewportEdgeFadeWidthLeft],uViewportEdgeFadeDistance:[t.viewportEdgeFadeDistanceTop,t.viewportEdgeFadeDistanceRight,t.viewportEdgeFadeDistanceBottom,t.viewportEdgeFadeDistanceLeft]})}updateGraphicsData(){const t=this.unitView.getCollector();if(!t){console.debug("No collector");return}const e=t.getData(),r=this.encoding,i=this.encoders.text;let s=0;const o="format"in r.text?We(r.text.format):c=>c;for(const c of e){const u=o(i(c)),f=ye(u)?u:u===null?"":""+u;s+=f&&f.length||0}const a=new q6({encoders:this.encoders,attributes:this.getAttributes(),properties:this.properties,fontMetrics:this.font.metrics,numCharacters:Math.max(s,this.properties.minBufferSize||1024)});a.addBatches(t.facetBatches);const l=a.toArrays();this.rangeMap.migrateEntries(l.rangeMap),this.updateBufferInfo(l)}prepareRender(t){const e=super.prepareRender(t);return e.push(()=>{fi(this.programInfo,{uTexture:this.font.texture})}),e.push(()=>this.bindOrSetMarkUniformBlock()),e.push(()=>Ai(this.gl,this.programInfo,this.vertexArrayInfo)),e}render(t){const e=this.gl;return this.createRenderCallback((r,i)=>lf(e,this.vertexArrayInfo,e.TRIANGLES,i,r),t)}}const Bw=1;function s0(){let n=[0,1],t=[0,1],e=1,r=1,i=0,s=0,o=.5,a=0;const c=u=>(u+o-n[0])/e*r+t[0];return c.invert=u=>(u-t[0])/r*e+n[0]-o,c.domain=function(u){if(arguments.length){n=iv(u),e=n[1]-n[0];const f=n[0]===0&&n[0]===0;if(e<Bw&&!f){e=Bw;const h=(n[0]+n[1])/2;n[0]=h-e/2,n[1]=h+e/2}return c}else return n.slice()},c.range=function(u){return arguments.length?(t=[...u],r=t[1]-t[0],c):t},c.numberingOffset=function(u){return arguments.length?(a=u,c):a},c.padding=function(u){return arguments.length?(s=u,i=Math.min(1,u),c):i},c.paddingInner=function(u){return arguments.length?(i=Math.min(1,u),c):i},c.paddingOuter=function(u){return arguments.length?(s=u,c):s},c.align=function(u){return arguments.length?(o=Math.max(0,Math.min(1,u)),c):o},c.step=()=>r/e,c.bandwidth=()=>c.step(),c.ticks=u=>{const f=c.align(),h=c.numberingOffset();return du(n[0]-f+h,n[1]-f+h,Math.min(u,Math.ceil(e))).filter(Number.isInteger).map(A=>A-a)},c.tickFormat=(u,f)=>{if(f)throw new Error("Index scale's tickFormat does not support a specifier!");const A=ei(n[0],n[1],Math.min(u,Math.ceil(e)))<1e5?We(","):We(".3s");return d=>A(d+a)},c.copy=()=>s0().domain(n).range(t).paddingInner(i).paddingOuter(s).numberingOffset(a),c}const vw=We(",d");function vM(n,t){return n.chrom+":"+vw(Math.floor(n.pos+1))+"-"+(n.chrom!=t.chrom?t.chrom+":":"")+vw(Math.ceil(t.pos))}const Sw={dm6:`chr3R 32079331
536
517
  chr3L 28110227
537
518
  chr2R 25286936
538
519
  chrX 23542271
@@ -653,8 +634,8 @@ chr18 90702639
653
634
  chr19 61431566
654
635
  chrX 171031299
655
636
  chrY 91744698
656
- chrM 16299`};function t6(n){if(!(n in o2))throw new Error(`Unknown assembly: ${n}`);return o2[n].split(`
657
- `).map(t=>{const e=t.split(" ");return{name:e[0],size:parseInt(e[1])}})}const n6=/^([A-Za-z]+:)?\/\//;function ui(n,t){if(t&&n6.test(t))return t;const e=typeof n=="function"?n():n;if(!e)return t;if(!t)return e;if(/[#?]/.test(e))throw new Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${e}`);return a2(e)+t}function a2(n){const t=n.replace(/[^/]*$/,"");return t===""?void 0:t.endsWith("://")?n+"/":t}class r6{constructor(t){if(this.config={name:"custom",...t},"baseUrl"in t)throw new Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!ld(t))throw new Error("Not a genome configuration: "+JSON.stringify(t));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,l2(this.config))this.setChromSizes(this.config.contigs);else if(!ud(this.config)){const e=t6(this.config.name);if(e)this.setChromSizes(e);else throw new Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(t){if(ud(this.config))try{const e=ui(t,this.config.url),r=await fetch(e);if(!r.ok)throw new Error(`${r.status} ${r.statusText}`);this.setChromSizes(i6(await r.text()))}catch(e){throw new Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`)}}hasChrPrefix(){return this.chromosomes.some(t=>t.name.startsWith("chr"))}setChromSizes(t){let e=0;this.startByIndex=[0];for(let r=0;r<t.length;r++){this.startByIndex.push(e);const i=t[r].size,s={...t[r],continuousStart:e,continuousEnd:e+i,continuousInterval:[e,e+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(s);const o=s.name.replace(/^chr/i,"");for(const a of["chr"+o,"CHR"+o,"Chr"+o,s.number,""+s.number,o,s.name])this.cumulativeChromPositions.set(a,e),this.chromosomesByName.set(a,s);e+=s.size}this.totalSize=e}getExtent(){return[0,this.totalSize]}toContinuous(t,e){let r=this.cumulativeChromPositions.get(t);if(r===void 0)throw new Error("Unknown chromosome/contig: "+t);return r+ +e}toChromosome(t){if(t>this.totalSize)return;t=Math.floor(t);const e=Zn(this.startByIndex,t)-1;if(e>0&&e<=this.chromosomes.length)return this.chromosomes[e-1]}toChromosomal(t){const e=this.toChromosome(t);if(e)return{chrom:e.name,pos:Math.floor(t)-e.continuousStart}}getChromosome(t){return this.chromosomesByName.get(t)}formatInterval(t){return e6(...this.toChromosomalInterval(t))}toChromosomalInterval(t){const e=this.toChromosomal(t[0]+.5),r=this.toChromosomal(t[1]-.5);return r.pos+=1,[e,r]}toContinuousInterval(t){var i;let[e,r]=t;return r||(r=e),[this.toContinuous(e.chrom,e.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}toDiscreteChromosomeIntervals(t){const e=t[0],r=t[1],i=[];if(e.chrom===r.chrom)i.push({chrom:e.chrom,startPos:e.pos,endPos:r.pos});else{const s=this.chromosomes.findIndex(a=>a.name===e.chrom),o=this.chromosomes.findIndex(a=>a.name===r.chrom);i.push({chrom:e.chrom,startPos:e.pos,endPos:this.chromosomes[s].size});for(let a=s+1;a<o;a++)i.push({chrom:this.chromosomes[a].name,startPos:0,endPos:this.chromosomes[a].size});i.push({chrom:r.chrom,startPos:0,endPos:r.pos})}return i}continuousToDiscreteChromosomeIntervals(t){return this.toDiscreteChromosomeIntervals([this.toChromosomal(t[0]),this.toChromosomal(t[1])])}parseInterval(t){const e=t.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(e){const r=e[1];if(e.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=e[3]||r,s=parseInt(e[2].replace(/,/g,"")),o=e[4]!==void 0?parseInt(e[4].replace(/,/g,"")):s;return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function i6(n){return px(n).map(([t,e])=>({name:t,size:parseInt(e)}))}function c2(n){return et(n)&&"chrom"in n}function s6(n){return n.every(c2)}function ld(n){return et(n)&&("name"in n||ud(n)||l2(n))}function ud(n){return ld(n)&&"url"in n}function l2(n){return ld(n)&&"contigs"in n}function o6(){const n=cd().numberingOffset(1);let t;n.genome=function(r){return arguments.length?(t=r,n):t},n.ticks=r=>{if(!t)return[];const i=n.domain(),s=n.numberingOffset(),[o,a]=[Math.max(i[0],0),Math.min(i[1],t.totalSize-1)].map(u=>t.toChromosome(u)),l=Math.max(1,Yr(i[0],i[1],r)),c=[];for(let u=o.index;u<=a.index;u++){const f=t.chromosomes[u],h=Math.max(f.continuousStart+l,i[0]-(i[0]-f.continuousStart)%l),A=Math.min(f.continuousEnd-l/4,i[1]+1);for(let d=h;d<=A;d+=l){const g=d-s;g>=i[0]&&g<i[1]&&c.push(g)}}return c},n.tickFormat=(r,i)=>{if(!t)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const s=n.domain(),o=s[1]-s[0],a=n.numberingOffset(),c=Yr(s[0],s[1],Math.min(r,Math.ceil(o)))<1e6?Ze(","):Ze(".3s"),u=f=>f-t.toChromosome(f).continuousStart;return f=>c(u(f)+a)};const e=n.copy;return n.copy=()=>e().genome(t),n}function a6(n){return n.type=="locus"}function c6(n,t){const e=Va(n);return e?e.toChromosomal(t):t}function l6(n,t){const e=Va(n);return e&&c2(t)?e.toContinuous(t.chrom,t.pos):t}function u6(n,t){const e=Va(n);return e&&s6(t)?e.toContinuousInterval(t):t}function f6(n,t){const e=Va(n);return e?e.toChromosomalInterval(t):t}function A6(n){const t=Va(n);if(!t)throw new Error("No genome has been defined!");return t.getExtent()}function Va(n){if(n&&"toChromosomal"in n)return n;if(n&&"genome"in n)return n.genome()}/*!
637
+ chrM 16299`};function SM(n){if(!(n in Sw))throw new Error(`Unknown assembly: ${n}`);return Sw[n].split(`
638
+ `).map(t=>{const e=t.split(" ");return{name:e[0],size:parseInt(e[1])}})}const QM=/^([A-Za-z]+:)?\/\//;function Ii(n,t){if(t&&QM.test(t))return t;const e=typeof n=="function"?n():n;if(!e)return t;if(!t)return e;if(/[#?]/.test(e))throw new Error(`Cannot append to a url with query or hash. Append: ${t}, base: ${e}`);return Qw(e)+t}function Qw(n){const t=n.replace(/[^/]*$/,"");return t===""?void 0:t.endsWith("://")?n+"/":t}class DM{constructor(t){if(this.config={name:"custom",...t},"baseUrl"in t)throw new Error("The `baseUrl` property in genome config has been removed in GenomeSpy v0.52.0. Use `url` instead. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.");if(!o0(t))throw new Error("Not a genome configuration: "+JSON.stringify(t));if(this.chromosomes=[],this.cumulativeChromPositions=new Map,this.chromosomesByName=new Map,this.startByIndex=[],this.totalSize=0,kw(this.config))this.setChromSizes(this.config.contigs);else if(!a0(this.config)){const e=SM(this.config.name);if(e)this.setChromSizes(e);else throw new Error(`Unknown genome: ${this.config.name}. Please provide contigs or a URL. See https://genomespy.app/docs/genomic-data/genomic-coordinates/.`)}}get name(){return this.config.name}async load(t){if(a0(this.config))try{const e=Ii(t,this.config.url),r=await fetch(e);if(!r.ok)throw new Error(`${r.status} ${r.statusText}`);this.setChromSizes(kM(await r.text()))}catch(e){throw new Error(`Could not load chrom sizes: ${this.config.url}. Reason: ${e.message}`)}}hasChrPrefix(){return this.chromosomes.some(t=>t.name.startsWith("chr"))}setChromSizes(t){let e=0;this.startByIndex=[0];for(let r=0;r<t.length;r++){this.startByIndex.push(e);const i=t[r].size,s={...t[r],continuousStart:e,continuousEnd:e+i,continuousInterval:[e,e+i],index:r,number:r+1,odd:!(r&1)};this.chromosomes.push(s);const o=s.name.replace(/^chr/i,"");for(const a of["chr"+o,"CHR"+o,"Chr"+o,s.number,""+s.number,o,s.name])this.cumulativeChromPositions.set(a,e),this.chromosomesByName.set(a,s);e+=s.size}this.totalSize=e}getExtent(){return[0,this.totalSize]}toContinuous(t,e){let r=this.cumulativeChromPositions.get(t);if(r===void 0)throw new Error("Unknown chromosome/contig: "+t);return r+ +e}toChromosome(t){if(t>this.totalSize)return;t=Math.floor(t);const e=or(this.startByIndex,t)-1;if(e>0&&e<=this.chromosomes.length)return this.chromosomes[e-1]}toChromosomal(t){const e=this.toChromosome(t);if(e)return{chrom:e.name,pos:Math.floor(t)-e.continuousStart}}getChromosome(t){return this.chromosomesByName.get(t)}formatInterval(t){return vM(...this.toChromosomalInterval(t))}toChromosomalInterval(t){const e=this.toChromosomal(t[0]+.5),r=this.toChromosomal(t[1]-.5);return r.pos+=1,[e,r]}toContinuousInterval(t){var i;let[e,r]=t;return r||(r=e),[this.toContinuous(e.chrom,e.pos??0),this.toContinuous(r.chrom,r.pos??((i=this.chromosomesByName.get(r.chrom))==null?void 0:i.size))]}toDiscreteChromosomeIntervals(t){const e=t[0],r=t[1],i=[];if(e.chrom===r.chrom)i.push({chrom:e.chrom,startPos:e.pos,endPos:r.pos});else{const s=this.chromosomes.findIndex(a=>a.name===e.chrom),o=this.chromosomes.findIndex(a=>a.name===r.chrom);i.push({chrom:e.chrom,startPos:e.pos,endPos:this.chromosomes[s].size});for(let a=s+1;a<o;a++)i.push({chrom:this.chromosomes[a].name,startPos:0,endPos:this.chromosomes[a].size});i.push({chrom:r.chrom,startPos:0,endPos:r.pos})}return i}continuousToDiscreteChromosomeIntervals(t){return this.toDiscreteChromosomeIntervals([this.toChromosomal(t[0]),this.toChromosomal(t[1])])}parseInterval(t){const e=t.match(/^(chr[0-9A-Z]+)(?::([0-9,]+)(?:-(?:(chr[0-9A-Z]+):)?([0-9,]+))?)?$/);if(e){const r=e[1];if(e.slice(2).every(a=>a===void 0)){const a=this.getChromosome(r);return a?[a.continuousStart,a.continuousEnd]:void 0}const i=e[3]||r,s=parseInt(e[2].replace(/,/g,"")),o=e[4]!==void 0?parseInt(e[4].replace(/,/g,"")):s;return[this.toContinuous(r,s-1),this.toContinuous(i,o)]}}}function kM(n){return _B(n).map(([t,e])=>({name:t,size:parseInt(e)}))}function Dw(n){return et(n)&&"chrom"in n}function FM(n){return n.every(Dw)}function o0(n){return et(n)&&("name"in n||a0(n)||kw(n))}function a0(n){return o0(n)&&"url"in n}function kw(n){return o0(n)&&"contigs"in n}function MM(){const n=s0().numberingOffset(1);let t;n.genome=function(r){return arguments.length?(t=r,n):t},n.ticks=r=>{if(!t)return[];const i=n.domain(),s=n.numberingOffset(),[o,a]=[Math.max(i[0],0),Math.min(i[1],t.totalSize-1)].map(u=>t.toChromosome(u)),l=Math.max(1,ei(i[0],i[1],r)),c=[];for(let u=o.index;u<=a.index;u++){const f=t.chromosomes[u],h=Math.max(f.continuousStart+l,i[0]-(i[0]-f.continuousStart)%l),A=Math.min(f.continuousEnd-l/4,i[1]+1);for(let d=h;d<=A;d+=l){const p=d-s;p>=i[0]&&p<i[1]&&c.push(p)}}return c},n.tickFormat=(r,i)=>{if(!t)return;if(i)throw new Error("Locus scale's tickFormat does not support a specifier!");const s=n.domain(),o=s[1]-s[0],a=n.numberingOffset(),c=ei(s[0],s[1],Math.min(r,Math.ceil(o)))<1e6?We(","):We(".3s"),u=f=>f-t.toChromosome(f).continuousStart;return f=>c(u(f)+a)};const e=n.copy;return n.copy=()=>{const r=e();let i=t;return r.genome=function(s){return arguments.length?(i=s,r):i},r.genome(t)},n}function RM(n){return n.type=="locus"}function NM(n,t){const e=Bc(n);return e?e.toChromosomal(t):t}function TM(n,t){const e=Bc(n);return e&&Dw(t)?e.toContinuous(t.chrom,t.pos):t}function PM(n,t){const e=Bc(n);return e&&FM(t)?e.toContinuousInterval(t):t}function LM(n,t){const e=Bc(n);return e?e.toChromosomalInterval(t):t}function OM(n){const t=Bc(n);if(!t)throw new Error("No genome has been defined!");return t.getExtent()}function Bc(n){if(n&&"toChromosomal"in n)return n;if(n&&"genome"in n)return n.genome()}/*!
658
639
  * Adapted from vega-encode:
659
640
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/ticks.js
660
641
  *
@@ -662,7 +643,7 @@ chrM 16299`};function t6(n){if(!(n in o2))throw new Error(`Unknown assembly: ${n
662
643
  * All rights reserved.
663
644
  *
664
645
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
665
- */function u2(n,t,e){return ft(t)&&e!=null&&(t=Math.min(t,~~(Lo(n.domain())/e)||1)),et(t)&&(t.step,t=t.interval),t}function f2(n,t,e){var r=n.range(),i=Math.floor(r[0]),s=Math.ceil(qt(r));if(i>s&&(r=s,s=i,i=r),t=t.filter(function(a){return a=n(a),i<=a&&a<=s}),e>0&&t.length>1){for(var o=[t[0],qt(t)];t.length>e&&t.length>=3;)t=t.filter(function(a,l){return!(l%2)});t.length<3&&(t=o)}return t}function h6(n,t){return n.bins?f2(n,d6(n.bins,t)):n.ticks?n.ticks(t):n.domain()}function d6(n,t){var e=n.length,r=~~(e/(t||e));return r<2?n.slice():n.filter(function(i,s){return!(s%r)})}function g6(n,t,e){var r=n.tickFormat?n.tickFormat(t,e):e?Ze(e):String;if(MC(n.type)){var i=m6(e);r=n.bins?i:p6(r,i)}return r}function p6(n,t){return function(e){return n(e)?t(e):""}}function m6(n){var t=Ki(n||",");if(t.precision==null){switch(t.precision=12,t.type){case"%":t.precision-=2;break;case"e":t.precision-=1;break}return C6(Ze(t),Ze(".1f")(1)[1])}else return Ze(t)}function C6(n,t){return function(e){var r=n(e),i=r.indexOf(t),s,o;if(i<0)return r;for(s=y6(r,i),o=s<r.length?r.slice(s):"";--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function y6(n,t){var e=n.lastIndexOf("e"),r;if(e>0)return e;for(e=n.length;--e>t;)if(r=n.charCodeAt(e),r>=48&&r<=57)return e+1}/*!
646
+ */function Fw(n,t,e){return ut(t)&&e!=null&&(t=Math.min(t,~~(Ca(n.domain())/e)||1)),et(t)&&(t.step,t=t.interval),t}function Mw(n,t,e){var r=n.range(),i=Math.floor(r[0]),s=Math.ceil(qt(r));if(i>s&&(r=s,s=i,i=r),t=t.filter(function(a){return a=n(a),i<=a&&a<=s}),e>0&&t.length>1){for(var o=[t[0],qt(t)];t.length>e&&t.length>=3;)t=t.filter(function(a,l){return!(l%2)});t.length<3&&(t=o)}return t}function UM(n,t){return n.bins?Mw(n,GM(n.bins,t)):n.ticks?n.ticks(t):n.domain()}function GM(n,t){var e=n.length,r=~~(e/(t||e));return r<2?n.slice():n.filter(function(i,s){return!(s%r)})}function zM(n,t,e){var r=n.tickFormat?n.tickFormat(t,e):e?We(e):String;if(Zy(n.type)){var i=VM(e);r=n.bins?i:HM(r,i)}return r}function HM(n,t){return function(e){return n(e)?t(e):""}}function VM(n){var t=ps(n||",");if(t.precision==null){switch(t.precision=12,t.type){case"%":t.precision-=2;break;case"e":t.precision-=1;break}return _M(We(t),We(".1f")(1)[1])}else return We(t)}function _M(n,t){return function(e){var r=n(e),i=r.indexOf(t),s,o;if(i<0)return r;for(s=YM(r,i),o=s<r.length?r.slice(s):"";--s>i;)if(r[s]!=="0"){++s;break}return r.slice(0,s)+o}}function YM(n,t){var e=n.lastIndexOf("e"),r;if(e>0)return e;for(e=n.length;--e>t;)if(r=n.charCodeAt(e),r>=48&&r<=57)return e+1}/*!
666
647
  * Adapted from vega-encode:
667
648
  * https://github.com/vega/vega/blob/master/packages/vega-encode/src/Scale.js
668
649
  *
@@ -670,11 +651,11 @@ chrM 16299`};function t6(n){if(!(n in o2))throw new Error(`Unknown assembly: ${n
670
651
  * All rights reserved.
671
652
  *
672
653
  * BSD-3-Clause License: https://github.com/vega/vega-lite/blob/master/LICENSE
673
- */const w6="locus",I6="index";var E6=5;function b6(n){const t=n.type;return!n.bins&&(t===hs||t===Na||t===Ta)}function A2(n){return Ke(n)&&![gn,I6,w6].includes(n)}function h2(n){return n||{warn:(t,...e)=>console.warn(t,...e)}}var x6=Cl(["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 d2(n,t,e){e=h2(e);for(const r in n)if(!x6[r]){if(r==="padding"&&A2(t.type))continue;Ft(t[r])?t[r](n[r]):e.warn("Unsupported scale property: "+r)}F6(t,n,k6(t,n,g2(t,n,e)))}function B6(n,t){const e=v6(n),r=fe(e);if(!r)throw new Error("Unknown scale type: "+e);const i=r();return!n.domain&&Ke(i.type)&&(n.domain=[0,0]),d2(n,i,t),i}function v6(n){var t=n.type,e="",r;return t===gn?gn+"-"+hs:(Q6(n)&&(r=n.rawDomain?n.rawDomain.length:n.domain?n.domain.length+ +(n.domainMid!=null):0,e=r===2?gn+"-":r===3?ds+"-":""),(e+t||hs).toLowerCase())}function Q6(n){const t=n.type;return Ke(t)&&t!==xC&&t!==BC&&(n.scheme||n.range&&n.range.length&&n.range.every(Ce))}function g2(n,t,e){if(!n.domain)return 0;e=h2(e);var r=S6(n,t.domainRaw,e);if(r>-1)return r;var i=t.domain,s=n.type,o=t.zero||t.zero===void 0&&b6(n),a,l;return i?(A2(s)&&t.padding&&i[0]!==qt(i)&&(i=D6(s,i,t.range,t.padding,t.exponent,t.constant)),(o||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(a=(i=i.slice()).length-1||1,o&&(i[0]>0&&(i[0]=0),i[a]<0&&(i[a]=0)),t.domainMin!=null&&(i[0]=t.domainMin),t.domainMax!=null&&(i[a]=t.domainMax),t.domainMid!=null&&(l=t.domainMid,(l<i[0]||l>i[a])&&e.warn("Scale domainMid exceeds domain min or max.",l),i.splice(a,0,l))),n.domain(p2(s,i,e)),s===Wh&&n.unknown(t.domainImplicit?mh:void 0),t.nice&&n.nice&&n.nice(t.nice!==!0&&u2(n,t.nice)||null),i.length):0}function S6(n,t,e){return t?(n.domain(p2(n.type,t,e)),t.length):-1}function D6(n,t,e,r,i,s){e??(e=[0,1]);var o=Math.abs(qt(e)-e[0]),a=o/(o-2*r),l=n===gr?ig(t,null,a):n===Ta?zf(t,null,a,.5):n===Na?zf(t,null,a,i||1):n===Ru?Rb(t,null,a,s||1):rg(t,null,a);return t=t.slice(),t[0]=l[0],t[t.length-1]=l[1],t}function p2(n,t,e){if(MC(n)){var r=Math.abs(t.reduce(function(i,s){return i+(s<0?-1:s>0?1:0)},0));r!==t.length&&e.warn("Log scale domain includes zero: "+Yf(t))}return t}function k6(n,t,e){let r=t.bins;if(r&&!Xe(r)){const i=(r.start==null||r.stop==null)&&n.domain(),s=r.start==null?i[0]:r.start,o=r.stop==null?qt(i):r.stop,a=r.step;a||Ne("Scale bins parameter missing step property."),r=Ko(s,o+a,a)}return r?n.bins=r:n.bins&&delete n.bins,n.type===Zh&&(r?!t.domain&&!t.domainRaw&&(n.domain(r),e=r.length):n.bins=n.domain()),e}function F6(n,t,e){var r=n.type,i=t.round||!1,s=t.range;if(t.rangeStep!=null)s=M6(r,t,e);else if(t.scheme&&(s=R6(r,t,e),Ft(s))){if(n.interpolator)return n.interpolator(s);Ne(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&Tu(r))return n.interpolator(Pu(fd(s,t.reverse),t.interpolate,t.interpolateGamma));s&&t.interpolate&&n.interpolate?n.interpolate(RC(t.interpolate,t.interpolateGamma)):Ft(n.round)?n.round(i):Ft(n.rangeRound)&&n.interpolate(i?Ma:hr),s&&n.range(fd(s,t.reverse))}function M6(n,t,e){n!==SC&&n!==Xh&&Ne("Only band and point scales support rangeStep.");var r=(t.paddingOuter!=null?t.paddingOuter:t.padding)||0,i=n===Xh?1:(t.paddingInner!=null?t.paddingInner:t.padding)||0;return[0,t.rangeStep*Kh(e,i,r)]}function R6(n,t,e){var r=t.schemeExtent,i,s;return Xe(t.scheme)?s=Pu(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),s=ed(i),s||Ne(`Unrecognized scheme name: ${t.scheme}`)),e=n===QC?e+1:n===Zh?e-1:n===jh||n===vC?+t.schemeCount||E6:e,Tu(n)?m2(s,r,t.reverse):Ft(s)?G8(m2(s,r),e):n===Wh?s:s.slice(0,e)}function m2(n,t,e){return Ft(n)&&(t||e)?U8(n,fd(t||[0,1],e)):n}function fd(n,t){return t?n.slice().reverse():n}class N6{constructor({getParamMediator:t,onRangeChange:e,onDomainChange:r,getGenomeStore:i}){D(this,zt);D(this,wn);D(this,Ec,new Set);D(this,bc);D(this,xc);D(this,Bc);D(this,Xs);D(this,Zs,0);F(this,bc,t),F(this,xc,e),F(this,Bc,r),F(this,Xs,i)}get scale(){return m(this,wn)}getLocusGenome(){var r;const t=(r=m(this,Xs))==null?void 0:r.call(this),e=t==null?void 0:t.getGenome();if(!e)throw new Error("No genome has been defined!");return e}createScale(t){const e=B6({...P(this,zt,M0).call(this,t),range:void 0});return e.props=t,"unknown"in e&&e.unknown(null),F(this,wn,e),P(this,zt,WE).call(this,t),P(this,zt,R0).call(this),P(this,zt,XE).call(this),m(this,wn)}reconfigureScale(t){const e=m(this,wn);!e||e.type=="null"||(d2({...P(this,zt,M0).call(this,t),range:void 0},e),e.props=t,P(this,zt,R0).call(this))}withDomainNotificationsSuppressed(t){F(this,Zs,m(this,Zs)+1);try{t()}finally{F(this,Zs,m(this,Zs)-1)}}}wn=new WeakMap,Ec=new WeakMap,bc=new WeakMap,xc=new WeakMap,Bc=new WeakMap,Xs=new WeakMap,Zs=new WeakMap,zt=new WeakSet,WE=function(t){var s;const e=m(this,wn);if(!e||!a6(e))return;const r=(s=m(this,Xs))==null?void 0:s.call(this),i=r==null?void 0:r.getGenome(t.assembly);if(!i)throw new Error("No genome has been defined!");e.genome(i)},M0=function(t){if(!("assembly"in t))return t;const{assembly:e,...r}=t;return r},R0=function(){const t=m(this,wn);if(!t)return;const e=t.props;m(this,Ec).forEach(s=>s.invalidate());const r=P6({range:e.range,reverse:e.reverse,createExpression:s=>m(this,bc).call(this).createExpression(s),registerExpr:s=>m(this,Ec).add(s)});if(!r)return;if("values"in r){t.range(r.values);return}const i=()=>t.range(r.evaluate());r.setup(i),i()},XE=function(){const t=m(this,wn);if(!t)return;const e=t.range,r=t.domain,i=()=>{var o;return(o=m(this,xc))==null?void 0:o.call(this)};T6(t,{onRangeChange:i,onDomainChange:()=>{var o;m(this,Zs)>0||(o=m(this,Bc))==null||o.call(this)},range:e,domain:r}),i()};function T6(n,{onRangeChange:t,onDomainChange:e,range:r,domain:i}){typeof r=="function"&&(n.range=(function(s){if(arguments.length)r(s),t==null||t();else return r()})),typeof i=="function"&&(n.domain=(function(s){if(arguments.length)i(s),e==null||e();else return i()}))}function P6({range:n,reverse:t,createExpression:e,registerExpr:r}){if(!n||!Xe(n))return null;const i=(s,o)=>o?s.slice().reverse():s;if(n.some(it)){let s;return{dynamic:!0,evaluate:()=>i(s.map(l=>l()),t),setup:l=>{s=n.map(c=>{if(it(c)){const u=e(c.expr);return u.addListener(l),r(u),()=>u(null)}return()=>c})}}}return{dynamic:!1,values:i(n,t)}}function Hu(n,t,e){if(e=e||[],n.some(o=>o===null)){if(n.every(o=>o===null))return null;throw console.warn(n),new Error("Cannot merge objects with nulls!")}const r={},i=(o,a)=>o===a||ms(o)&&ms(a)||ms(o)&&a===!0||o===!0&&et(a)||Array.isArray(o)&&Array.isArray(a)&&o.length===a.length&&o.every((l,c)=>l===a[c]),s=o=>{for(let a in o){const l=o[a];if(!e.includes(a)&&l!==void 0)if(r[a]!==void 0&&!i(r[a],l))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(o[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(ms(c))ms(l)&&(r[a]=Hu([c,l],a));else if(ms(l)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Hu([{},l],a)}else r[a]=l}}};for(const o of n)s(o);return r}function ms(n){return et(n)&&!Array.isArray(n)}const C2="quantitative",y2="ordinal",w2="nominal",Ja="locus",I2="index";function L6(n,t,e){const r={};return e&&(r.zero=!1),wa(n)?r.nice=!e:rr(n)?r.scheme=t==w2?"tableau10":t==y2?"blues":"viridis":Kl(n)?r.range=n=="shape"?["circle","square","triangle-up","cross","diamond"]:[]:n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}function O6(n,t){if(t==I2||t==Ja){if(RA(n))return t;throw new Error(n+" does not support "+t+" data type. Only positional channels do.")}const e={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"],sample:["null",void 0,void 0]},i=["sample"].includes(n)?"null":e[n]?e[n][[w2,y2,C2].indexOf(t)]:t==C2?"linear":"ordinal";if(i===void 0)throw new Error('Channel "'+n+'" is not compatible with "'+t+'" data type. Use of a proper scale may be needed.');return i}function U6(n,t){wa(t)&&n.type!=="ordinal"&&(n.range=[0,1]),t=="opacity"&&Ke(n.type)&&(n.clamp=!0)}function G6({channel:n,dataType:t,members:e,isExplicitDomain:r}){const i=Array.from(e).map(a=>a.channelDef.scale).filter(a=>a!==void 0),s=Hu(i,"scale",["domain"]);if(s===null||s.type=="null")return{type:"null"};const o={...L6(n,t,r),...s};return o.type||(o.type=O6(n,t)),n=="y"&&pr(o.type)&&o.reverse==null&&(o.reverse=!0),o.range&&o.scheme&&delete o.scheme,!("zoom"in o)&&[I2,Ja].includes(o.type)&&(o.zoom=!0),U6(o,n),o}class qa extends Array{constructor(){super(),this.type=void 0}extend(t){return this}extendAll(t){if(t instanceof qa&&t.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(const e of t)this.extend(e);return this}extendAllWithAccessor(t,e){for(const r of t)this.extend(e(r));return this}}class Ad extends qa{constructor(){super(),this.type="quantitative"}extend(t){return t==null||Number.isNaN(t)?this:(t=+t,this.length?t<this[0]?this[0]=t:t>this[1]&&(this[1]=t):(this.push(t),this.push(t)),this)}}class E2 extends qa{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(t){return t==null||Number.isNaN(t)?this:(this.uniqueValues.has(t)||(this.uniqueValues.add(t),this.push(t)),this)}}class b2 extends E2{constructor(){super(),this.type="nominal"}}class z6 extends qa{constructor(t){super();let e=0;for(let r=1;r<t.length;r++)e+=Math.sign(t[r]-t[r-1]);if(Math.abs(e)!=t.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(t));t.forEach(r=>this.push(r))}extend(t){if(this.includes(t))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const x2={quantitative:Ad,index:Ad,locus:Ad,nominal:b2,ordinal:E2};function B2(n,t){if(n=="quantitative"&&H6(t)){const e=new z6(t);return e.type=n,e}else if(x2[n]){const e=new x2[n];return e.type=n,t&&e.extendAll(t),e}throw new Error("Unknown type: "+n)}function H6(n){return n&&n.length>0&&n.length!=2&&n.every(t=>typeof t=="number")}class Y6{constructor({getMembers:t,getType:e,getLocusExtent:r,fromComplexInterval:i}){D(this,$s);D(this,eo);D(this,vc);D(this,Qc);D(this,Qi);F(this,$s,t()),F(this,eo,e),F(this,vc,r),F(this,Qc,i)}get initialDomainSnapshot(){return m(this,Qi)}hasConfiguredDomain(){return!!this.getConfiguredDomain()}getConfiguredOrDefaultDomain(t=!1){return this.getConfiguredDomain()??J6(m(this,eo).call(this),m(this,vc),t?this.getDataDomain():void 0)}getConfiguredDomain(){return _6(m(this,$s),m(this,Qc))}getDataDomain(){return V6(m(this,$s),m(this,eo))}captureInitialDomain(t,e){if(!m(this,Qi)&&Ke(t.type)){const r=t.domain();Lo(r)>0&&F(this,Qi,r)}return e?!1:(F(this,Qi,t.domain()),!0)}}$s=new WeakMap,eo=new WeakMap,vc=new WeakMap,Qc=new WeakMap,Qi=new WeakMap;function _6(n,t){const e=Array.from(n).map(r=>r.channelDef).filter(r=>{var i;return(i=r.scale)==null?void 0:i.domain}).map(r=>B2(r.type,t(r.scale.domain)));if(e.length>0)return e.reduce((r,i)=>r.extendAll(i))}function V6(n,t){return Array.from(n).map(e=>{var r;return(r=e.dataDomainSource)==null?void 0:r.call(e,e.channel,t())}).filter(e=>!!e).reduce((e,r)=>e.extendAll(r))}function J6(n,t,e){return n==Ja?t():e??[]}function q6(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)/2}function K6(n,t,e){return n*Math.pow(t/n,e)}class j6{constructor({getScale:t,getAnimator:e,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:s,getGenomeExtent:o}){D(this,Ht);D(this,Sc);D(this,Dc);D(this,to);D(this,no);D(this,kc);F(this,Ht,t),F(this,Sc,e),F(this,Dc,r),F(this,to,i),F(this,no,s),F(this,kc,o)}getZoomExtent(){const t=m(this,Ht).call(this),e=t.props.zoom;return W6(t,e,m(this,no),m(this,kc),m(this,Dc))}isZoomable(){return this.isZoomingSupported()&&!!m(this,Ht).call(this).props.zoom}isZoomingSupported(){return Ke(m(this,Ht).call(this).type)}isZoomed(){return this.isZoomingSupported()&&Ul(m(this,to).call(this),m(this,Ht).call(this).domain())}zoom(t,e,r){if(!this.isZoomingSupported())return!1;const i=m(this,Ht).call(this),s=i.domain();let o=X6(i,s,t,e,r);const a=this.getZoomExtent();return o=Nb(o,a[0],a[1]),[0,1].some(l=>o[l]!=s[l])?(i.domain(o),!0):!1}async zoomTo(t,e=!1){if(Po(e)&&(e=e?700:0),!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const r=m(this,no).call(this,t),i=m(this,Sc).call(this),s=m(this,Ht).call(this),o=s.domain();if(e>0&&o.length==2){const a=o[1]-o[0],l=r[1]-r[0],c=o[0]+a/2,u=r[0]+l/2,f=o[0]==r[0],h=o[1]==r[1];await i.transition({duration:e,easingFunction:q6,onUpdate:A=>{const d=K6(a,l,A),g=a==l?A:(a-d)/(a-l),p=g*u+(1-g)*c,C=[f?o[0]:p-d/2,h?o[1]:p+d/2];s.domain(C)}}),s.domain(r)}else s.domain(r),i==null||i.requestRender()}resetZoom(){if(!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const t=m(this,Ht).call(this),e=t.domain(),r=m(this,to).call(this);return[0,1].some(i=>r[i]!=e[i])?(t.domain(r),!0):!1}getZoomLevel(){return this.isZoomable()?Lo(this.getZoomExtent())/Lo(m(this,Ht).call(this).domain()):1}}Ht=new WeakMap,Sc=new WeakMap,Dc=new WeakMap,to=new WeakMap,no=new WeakMap,kc=new WeakMap;function W6(n,t,e,r,i){return Z6(t)&&Xe(t.extent)?e(t.extent):t&&n.props.type=="locus"?r():i()}function X6(n,t,e,r,i){let s=[...t],o=n.invert(r);switch(n.props.reverse&&(i=-i),"align"in n&&(o+=n.align()),n.type){case"linear":case"index":case"locus":s=kb(s,i||0),s=rg(s,o,e);break;case"log":s=Fb(s,i||0),s=ig(s,o,e);break;case"pow":case"sqrt":{const a=n;s=Mb(s,i||0,a.exponent()),s=zf(s,o,e,a.exponent());break}default:throw new Error("Zooming is not implemented for: "+n.type)}return s}function Z6(n){return et(n)}fe("index",cd,["continuous"]),fe("locus",o6,["continuous"]),fe("null",td,[]);class $6{constructor(t){D(this,re);D(this,In,new Set);D(this,ro,{domain:new Set,range:new Set});D(this,Re);D(this,En);D(this,Yt);this.channel=t,this.type=null,this.name=void 0,F(this,En,new Y6({getMembers:()=>m(this,In),getType:()=>this.type,getLocusExtent:()=>P(this,re,P0).call(this),fromComplexInterval:this.fromComplexInterval.bind(this)})),F(this,Re,new N6({getParamMediator:()=>m(this,re,N0).paramMediator,onRangeChange:()=>P(this,re,ul).call(this,"range"),onDomainChange:()=>P(this,re,ul).call(this,"domain"),getGenomeStore:()=>m(this,re,T0).genomeStore})),F(this,Yt,new j6({getScale:()=>this.getScale(),getAnimator:()=>m(this,re,T0).animator,getInitialDomainSnapshot:()=>m(this,En).initialDomainSnapshot,getResetDomain:()=>m(this,En).getConfiguredOrDefaultDomain(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>P(this,re,P0).call(this)}))}get zoomExtent(){return(m(this,Re).scale&&Ke(m(this,Re).scale.type)&&m(this,Yt).getZoomExtent())??[-1/0,1/0]}addEventListener(t,e){m(this,ro)[t].add(e)}removeEventListener(t,e){m(this,ro)[t].delete(e)}registerMember(t){return P(this,re,ZE).call(this,t),()=>m(this,In).delete(t)&&m(this,In).size===0}reconfigure(){const t=P(this,re,Nf).call(this,!0);P(this,re,L0).call(this,()=>m(this,Re).reconfigureScale(t))}reconfigureDomain(){const t=P(this,re,Nf).call(this,!0);P(this,re,L0).call(this,()=>{g2(m(this,Re).scale,t)})}get scale(){if(m(this,Re).scale)return m(this,Re).scale;throw new Error("ScaleResolution.scale accessed before initialization. Call initializeScale().")}getScale(){return m(this,Re).scale??this.initializeScale()}initializeScale(){if(m(this,Re).scale)return m(this,Re).scale;const t=P(this,re,Nf).call(this);return m(this,Re).createScale(t)}getDomain(){return this.getScale().domain()}getDataDomain(){return m(this,En).getDataDomain()}getComplexDomain(){return f6(P(this,re,No).call(this),this.getDomain())}isZoomed(){return m(this,Yt).isZoomed()}isZoomable(){return m(this,Yt).isZoomable()}zoom(t,e,r){return m(this,Yt).zoom(t,e,r)}async zoomTo(t,e=!1){return m(this,Yt).zoomTo(t,e)}resetZoom(){return m(this,Yt).resetZoom()}getZoomLevel(){return m(this,Yt).getZoomLevel()}getAxisLength(){if(this.channel!=="x"&&this.channel!=="y")throw new Error("Axis length is only defined for x and y channels!");const t=Array.from(m(this,In)).map(e=>{var r;return(r=e.view.coords)==null?void 0:r[this.channel==="x"?"width":"height"]}).filter(e=>e>0);return t.length?t.reduce((e,r)=>Math.min(e,r),1e4):0}invertToComplex(t){const e=this.getScale();if("invert"in e){const r=e.invert(t);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(t){return c6(P(this,re,No).call(this),t)}fromComplex(t){return l6(P(this,re,No).call(this),t)}fromComplexInterval(t){return this.type==Ja?u6(P(this,re,No).call(this),t):t}}In=new WeakMap,ro=new WeakMap,Re=new WeakMap,En=new WeakMap,Yt=new WeakMap,re=new WeakSet,N0=function(){const t=m(this,In).values().next().value;if(!t)throw new Error("ScaleResolution has no members!");return t.view},T0=function(){return m(this,re,N0).context},P0=function(){return A6(P(this,re,No).call(this))},No=function(){if(this.type===Ja)return m(this,Re).scale??m(this,Re).getLocusGenome()},ul=function(t){for(const e of m(this,ro)[t].values())e({type:t,scaleResolution:this})},ZE=function(t){var a;const{channel:e,channelDef:r}=t,i=r.type==null&&this.type;if(e!="sample"&&!r.type&&!NA(e)&&!i)throw new Error(`The "type" property must be defined in channel definition: "${e}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);const s=e=="sample"?"nominal":r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.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(!i){if(!this.type)this.type=s;else if(s!==this.type&&!NA(e))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${s}. Use "resolve: independent" for channel ${this.channel}`)}m(this,In).add(t)},$E=function(){return m(this,En).hasConfiguredDomain()},eb=function(){const t=m(this,Re).scale;if(!t)return!1;const e=t.domain();return Ke(t.type)?e.length>2||e.length==2&&(e[0]!==0||e[1]!==0):e.length>0},tb=function(){return G6({channel:this.channel,dataType:this.type,members:m(this,In),isExplicitDomain:P(this,re,$E).call(this)})},Nf=function(t=!1){const e=P(this,re,tb).call(this);if(e===null||e.type=="null")return{type:"null"};const r=m(this,En).getConfiguredOrDefaultDomain(t);return r&&r.length>0?e.domain=r:pr(e.type)&&(e.domain=new b2),!e.domain&&e.domainMid!==void 0&&(e.domain=[e.domainMin??0,e.domainMax??1]),e},L0=function(t){const e=m(this,Re).scale;if(!e||e.type=="null")return;const r=P(this,re,eb).call(this),i=e.domain();if(m(this,Re).withDomainNotificationsSuppressed(t),m(this,En).captureInitialDomain(e,r)){P(this,re,ul).call(this,"domain");return}const s=e.domain();Ul(s,i)||(this.isZoomable()?m(this,Re).withDomainNotificationsSuppressed(()=>{e.domain(i)}):m(this,Yt).isZoomingSupported()?(m(this,Re).withDomainNotificationsSuppressed(()=>{e.domain(i)}),this.zoomTo(s,500)):P(this,re,ul).call(this,"domain"))};function v2(n){const t=new Set;function e(r){for(const i of Object.values(r.resolutions.scale))t.add(i)}for(const r of tt(n)){r.visit(e);for(const i of r.getDataAncestors()){if(!i.options.contributesToScaleDomain)break;e(i)}}t.forEach(r=>r.reconfigureDomain())}function hd(...n){for(const t of n)if(t!==void 0)return t}class e5{constructor(t){D(this,Bf);D(this,bn,new Set);this.channel=t}get scaleResolution(){const t=m(this,bn).values().next().value;return t==null?void 0:t.view.getScaleResolution(this.channel)}registerMember(t){return P(this,Bf,nb).call(this,t),()=>this.removeMember(t)&&m(this,bn).size===0}removeMember(t){const e=m(this,bn).delete(t);return e&&od(this,"axisProps"),e}getAxisProps(){return Uu(this,"axisProps",()=>{const t=Array.from(m(this,bn)).map(e=>{const r=e.view.mark.encoding[e.channel];return"axis"in r&&r.axis});return t.length>0&&t.some(e=>e===null)?null:Hu(t.filter(e=>e!==void 0),"axis",["title"])})}getTitle(){const t=s=>{var a;const o=uQ(s.view,s.channel);if(!Nt(o))return{member:s,explicitTitle:hd("axis"in o?(a=o.axis)==null?void 0:a.title:void 0,o.title),implicitTitle:hd(nr(o)?o.field:void 0,ya(o)?o.expr:void 0)}},e=Array.from(m(this,bn)).map(t),r=e.filter(s=>{var o;if(NA(s.member.channel)&&!s.explicitTitle){const a=Xr(s.member.channel);return((o=e.find(l=>l.member.view==s.member.view&&l.member.channel==a))==null?void 0:o.explicitTitle)===void 0}return!0}),i=new Set(r.map(s=>hd(s.explicitTitle,s.implicitTitle)).filter(Ce));return i.size?[...i].join(", "):null}}bn=new WeakMap,Bf=new WeakSet,nb=function(t){const{view:e}=t,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! Channel: ${this.channel}, existing views: [${Array.from(m(this,bn)).map(i=>i.view.getPathString()).join(", ")}], new view: ${e.getPathString()}.`);m(this,bn).add(t),od(this,"axisProps")};function Q2(n,t,{spacing:e,devicePixelRatio:r,offset:i,reverse:s}={}){e=e||0,i=i||0;let o=0,a=0;for(const d of n)o+=Yu(d.px)+(dd(d)?0:e),a+=Yu(d.grow);o-=e;const l=Math.max(0,t-o),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,u=[],f=[],h=d=>{const g=u.length;if(!g)return;const p=(d?e:0)*(s?-1:1);A-=p;for(let C=0;C<g;C++)f.push({location:A+(C+1)/(g+1)*p,size:0});A+=p,u.length=0};let A=s?Math.max(t,o):0+i;if(n.length==1&&dd(n[0]))return[{location:A,size:0}];for(let d=0;d<n.length;d++){const g=n[d];if(dd(g))u.push(g);else{h(f.length>0);const p=Yu(g.px)+(a?Yu(g.grow)/a*l:0);s&&(A-=p),f.push({location:c(A),size:c(p)}),s?A-=e:A+=p+e}}return A+=s?e:-e,h(!1),f}function t5(n){let t=0,e=0;for(const r of n)t=Math.max(t,r.px??0),e=Math.max(e,r.grow??0);return{px:t,grow:e}}const x0=class x0{constructor(t,e){D(this,Fc);this.width=t,this.height=e}addPadding(t){return P(this,Fc,O0).call(this,t.width,t.height)}subtractPadding(t){return P(this,Fc,O0).call(this,-t.width,-t.height)}isGrowing(){return!!(this.width.grow||this.height.grow)}};Fc=new WeakSet,O0=function(t,e){return new x0({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+e,grow:this.height.grow})};let Cr=x0;const Ka=Object.freeze({px:0,grow:0}),S2=new Cr(Ka,Ka);function dd(n){return!n.px&&!n.grow}function Yu(n){return n||0}function n5(n){return n&&(ft(n.px)||ft(n.grow))}function D2(n){if(R2(n))throw new Error("parseSizeDef does not accept step-based sizes.");if(n5(n))return n;if(ft(n))return{px:n,grow:0};if(n==="container")return{px:0,grow:1};if(!n)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${n}`)}class ot{constructor(t,e,r,i){this.top=t||0,this.right=e||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new ot(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new ot(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new ot(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new ot(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new ot(0,this.right,0,this.left)}getVertical(){return new ot(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(t){return typeof t=="number"?this.createUniformPadding(t):t?this.createFromRecord(t):gd}static createFromRecord(t){return new ot(t.top,t.right,t.bottom,t.left)}static zero(){return gd}static createUniformPadding(t){return new ot(t,t,t,t)}}const gd=ot.createUniformPadding(0);Object.freeze(gd);function ja(n,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(n)||n.startsWith("/")?n:(t.endsWith("/")||(t+="/"),t+n)}function r5(n){if(!n)return n;if(/[?#]/.test(n))throw new Error(`Invalid base URL: ${n} - cannot contain query or hash.`);return n.endsWith("/")?n:n+"/"}const k2="VISIT_SKIP",Wa="VISIT_STOP",F2=n=>n;class M2{constructor(t,e,r,i,s,o={}){D(this,xn);D(this,io,{});D(this,so,{});D(this,oo,{});D(this,Mc);D(this,Rc);j(this,"opacityFunction",F2);D(this,ao,[]);j(this,"facetCoords",new Sn([],JSON.stringify));var a;if(!t)throw new Error("View spec must be defined!");if(this.context=e,this.layoutParent=r,this.dataParent=i,this.name=t.name||s,this.spec=t,this.resolutions={scale:{},axis:{}},XC(this),this.options={blockEncodingInheritance:!1,contributesToScaleDomain:!0,...o},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramMediator=new CQ(()=>{var l;return(l=this.dataParent)==null?void 0:l.paramMediator}),t.params)for(const l of t.params)this.paramMediator.registerParam(l);if(!((a=this.layoutParent)!=null&&a.options.layeredChildren)){const l=c=>this.paramMediator.findMediatorForParam(c)?void 0:this.paramMediator.allocateSetter(c,0);F(this,Rc,l("height")),F(this,Mc,l("width"))}}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache("size/padding",()=>ot.createFromConfig(this.spec.padding))}getOverhang(){return ot.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?new Cr(P(this,xn,fl).call(this,"width"),P(this,xn,fl).call(this,"height")):S2)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return S2;const t=this.getSize();return new Cr(P(this,xn,fl).call(this,"viewportWidth")??t.width,P(this,xn,fl).call(this,"viewportHeight")??t.height)}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(t=>t.isConfiguredVisible())}getEffectiveOpacity(){var t;return this.opacityFunction(((t=this.layoutParent)==null?void 0:t.getEffectiveOpacity())??1)}getPathString(){return this.getLayoutAncestors().map(t=>t.name).reverse().join("/")}getLayoutAncestors(){return P(this,xn,U0).call(this,"layoutParent")}getDataAncestors(){return P(this,xn,U0).call(this,"dataParent")}handleBroadcast(t){for(const e of m(this,io)[t.type]||[])e(t)}_addBroadcastHandler(t,e){let r=m(this,io)[t];r||(r=[],m(this,io)[t]=r),r.push(e)}handleInteractionEvent(t,e,r){const i=r?m(this,so):m(this,oo);for(const s of i[e.type]||[])s(t,e)}addInteractionEventListener(t,e,r){const i=r?m(this,so):m(this,oo);let s=i[t];s||(s=[],i[t]=s),s.push(e)}removeInteractionEventListener(t,e,r){const i=r?m(this,so):m(this,oo);let s=i==null?void 0:i[t];if(s){const o=s.indexOf(e);o>=0&&s.splice(o,1)}}visit(t){try{const e=t(this);if(t.postOrder&&t.postOrder(this),e!==Wa)return e}catch(e){throw e.view=this,e}}getDescendants(){const t=[];return this.visit(e=>{t.push(e)}),t}dispose(){for(const e of m(this,ao))e();m(this,ao).length=0;const t=this.flowHandle;t!=null&&t.collector&&(this.context.dataFlow.pruneCollectorBranch(t.collector),this.context.dataFlow.removeCollector(t.collector)),t!=null&&t.dataSource&&t.dataSource.view===this&&!t.dataSource.identifier&&this.context.dataFlow.removeDataSource(t.dataSource),this.flowHandle=void 0}registerDisposer(t){m(this,ao).push(t)}disposeSubtree(){const t=()=>{};t.postOrder=e=>{e.dispose()},this.visit(t)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===F2)&&(this.opacityFunction=s5(this))}onBeforeRender(){}render(t,e,r={}){var i,s;r.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(r.facetId,r.clipRect?e.intersect(r.clipRect):e),(i=m(this,Mc))==null||i.call(this,e.width),(s=m(this,Rc))==null||s.call(this,e.height)}getEncoding(){const t=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},e=this.spec.encoding||{},r={...t,...e};for(const[i,s]of Object.entries(r))s===null&&delete r[i];return r}getFacetAccessor(t){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(t){var r;const e=this.getEncoding().sample;return nr(e)?[e.field]:(r=this.layoutParent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(t){const e=Xr(t);return this.getDataAncestors().map(r=>r.resolutions.scale[e]).find(r=>r)}getAxisResolution(t){const e=Xr(t);return this.getDataAncestors().map(r=>r.resolutions.axis[e]).find(r=>r)}getConfiguredResolution(t,e){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[e])==null?void 0:i[t]}getConfiguredOrDefaultResolution(t,e){return this.getConfiguredResolution(t,e)??this.getConfiguredResolution("default",e)??this.getDefaultResolution(t,e)}getDefaultResolution(t,e){return"independent"}getBaseUrl(){return ui(()=>{var t;return(t=this.dataParent)==null?void 0:t.getBaseUrl()},r5(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){const t=this.spec.title;if(t)return Ce(t)?t:it(t.text)?this.paramMediator.evaluateAndGet(t.text.expr):t.text}_cache(t,e){return Uu(this,t,e)}_invalidateCacheByPrefix(t,e="self"){switch(e){case"self":Gu(this,t);break;case"ancestors":for(const r of this.getLayoutAncestors())Gu(r,t);break;case"progeny":this.visit(r=>Gu(r,t));break}}invalidateSizeCache(){this._invalidateCacheByPrefix("size/","ancestors")}propagateInteractionEvent(t){}}io=new WeakMap,so=new WeakMap,oo=new WeakMap,Mc=new WeakMap,Rc=new WeakMap,ao=new WeakMap,xn=new WeakSet,fl=function(t){var i;let e=this.spec[t];const r=t=="viewportWidth"||t=="viewportHeight";if(R2(e)){if(r)throw new mr(`Cannot use step-based size with "${t}"!`,this);const s=e.step,o=(i=this.getScaleResolution(t=="width"?"x":"y"))==null?void 0:i.getScale();if(o){let a=0;if(pr(o.type))a=o.domain().length;else if(["locus","index"].includes(o.type)){const c=o.domain();a=Gl(c)-c[0]}else throw new mr(`Cannot use step-based size with "${o.type}" scale!`,this);const l=o;return a=Kh(a,l.paddingInner(),l.paddingOuter()),{px:a*s,grow:0}}else throw new mr("Cannot use 'step' size with missing scale!",this)}else return(e&&D2(e))??(r?void 0:{px:0,grow:1})},U0=function(t){const e=[];let r=this;do e.push(r),r=r[t];while(r);return e};function i5(n){return"unitsPerPixel"in n}function s5(n){const t="opacity"in n.spec?n.spec.opacity:void 0;if(t!==void 0){if(ft(t))return e=>e*t;if(i5(t)){const e=s=>{var a;const o=(a=n.getScaleResolution(s))==null?void 0:a.getScale();if(["linear","index","locus"].includes(o==null?void 0:o.type))return o},r=t.channel?e(t.channel):e("x")??e("y");if(!r)throw new mr("Cannot find a resolved quantitative scale for dynamic opacity!",n);const i=Gh().domain(t.unitsPerPixel).range(t.values).clamp(!0);return s=>{const a=Lo(r.domain())/1e3;return i(a)*s}}else if(it(t)){const e=n.paramMediator.createExpression(t.expr);return e.addListener(()=>n.context.animator.requestRender()),r=>e(null)*r}}return e=>e}const R2=n=>!!(n!=null&&n.step),o5={point:PF,rect:kF,rule:GF,link:qF,text:$F};class Qt extends M2{constructor(e,r,i,s,o,a){super(e,r,i,s,o,a);D(this,vf);D(this,Nc);this.spec=e;const l=o5[this.getMarkType()];if(l)this.mark=new l(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.resolve(),F(this,Nc,this.paramMediator.allocateSetter("zoomLevel",1));for(const c of["x","y"]){const u=this.getScaleResolution(c);if(u){const f=()=>{m(this,Nc).call(this,Math.sqrt(this.getZoomLevel()))};u.addEventListener("domain",f),this.registerDisposer(()=>u.removeEventListener("domain",f))}}this.needsAxes={x:!0,y:!0},P(this,vf,rb).call(this)}render(e,r,i={}){super.render(e,r,i),this.isConfiguredVisible()&&(e.pushView(this,r),e.renderMark(this.mark,i),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}getEncoding(){const e=super.getEncoding(),r=this.mark.getSupportedChannels();for(const i of Object.keys(e))r.includes(i)||delete e[i];return e}resolve(e){if(!e){this.resolve("scale"),this.resolve("axis");return}const r=this.mark.encoding;for(const[i,s]of Object.entries(r)){if(!s)continue;let o;if(vt(s))o=s;else if(MA(s)){const c=s.condition;if(!Array.isArray(c)&&vt(c))o=c;else continue}else continue;const a=Xr(o.resolutionChannel??i);if(!jl(a)||e=="axis"&&!wa(a))continue;let l=this;for(;(l.getConfiguredOrDefaultResolution(a,e)=="forced"||l.dataParent&&["shared","excluded","forced"].includes(l.dataParent.getConfiguredOrDefaultResolution(a,e)))&&l.getConfiguredOrDefaultResolution(a,e)!="excluded";)l=l.dataParent;if(e=="axis"&&wa(i)&&RA(a)){l.resolutions[e][a]||(l.resolutions[e][a]=new e5(a));const c=l.resolutions[e][a],u=c.registerMember({view:this,channel:i,channelDef:o});this.registerDisposer(()=>{u()&&l.resolutions[e][a]===c&&delete l.resolutions[e][a]})}else if(e=="scale"&&jl(i)){if(!l.resolutions[e][a]){const h=new $6(a);l.resolutions[e][a]=h,h.addEventListener("range",A=>{var d;(d=this.context.glHelper)==null||d.createRangeTexture(A.scaleResolution,!0)})}const c=this.getLayoutAncestors().some(h=>!h.options.contributesToScaleDomain)||vt(o)&&o.contributesToScaleDomain===!1?void 0:this.extractDataDomain.bind(this),u=l.resolutions[e][a],f=u.registerMember({view:this,channel:i,channelDef:o,dataDomainSource:c});this.registerDisposer(()=>{f()&&l.resolutions[e][a]===u&&delete l.resolutions[e][a]})}}}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){var i;const r=this.mark.encoders;if(r)return(i=r[e])==null?void 0:i.dataAccessor}getFacetAccessor(e){const r=this.getDataAccessor("sample");return r||super.getFacetAccessor(this)}getCollector(){var e;return(e=this.flowHandle)==null?void 0:e.collector}extractDataDomain(e,r){var s;let i=B2(r);return(((s=this.mark.encoders[e])==null?void 0:s.accessors)??[]).filter(o=>o.scaleChannel).forEach(o=>{if(o.constant)i.extend(o({}));else{const a=this.getCollector();a!=null&&a.completed&&a.visitData(l=>i.extend(o(l)))}}),i}getZoomLevel(){const e=r=>{var i;return((i=this.getScaleResolution(r))==null?void 0:i.getZoomLevel())??1};return Wr.map(e).reduce((r,i)=>r*i,1)}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),e.target=this,!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,r){return e=="x"?"shared":"independent"}}Nc=new WeakMap,vf=new WeakSet,rb=function(){for(const[e,r]of this.paramMediator.paramConfigs){if(!("select"in r))continue;const i=Wl(r.select),s=i.on,o=i.clear;if(Xl(i)){let l=0;const c=this.paramMediator.getSetter(e),u=()=>{var d;const A=this.context.getCurrentHover();return((d=A==null?void 0:A.mark)==null?void 0:d.unitView)===this?A.datum:null},f=s.filter?Pp(s.filter):()=>!0,h=(A,d)=>{if(!f(d.proxiedMouseEvent))return;const g=u(),p=g?g[Rt]:0;let C;if(i.toggle)if(d.mouseEvent.shiftKey){if(g){const b=this.paramMediator.getValue(e);C=gQ(b,{toggle:[g]})}}else C=LA(g?[g]:null);else p!=l&&(l=p,C=PA(g));C!==void 0&&c(C)};if(this.addInteractionEventListener(["mouseover","pointerover"].includes(s.type)?"mousemove":s.type,h),o){const A=o.filter?Pp(o.filter):()=>!0,d=(g,p)=>{if(!A(p.proxiedMouseEvent))return;l=0;const C=i.toggle?LA():PA(null);c(C)};this.addInteractionEventListener(o.type,d)}}}};function a5(n){const t=new Set;n.visit(e=>{for(const r of Object.values(e.resolutions.scale)){const i=r.name;if(i&&t.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);t.add(i)}})}function c5(n){for(const t of Wr){const e=n.getScaleResolution(t);e&&!e.name&&e.isZoomable()&&(e.name=`${t}_at_root`)}}function N2(n,t=()=>!0){return Promise.allSettled(n).then(e=>{if(t())for(const r of e)"value"in r?r.value.finalizeGraphicsInitialization():"reason"in r&&console.error(r.reason)})}async function l5(n,t,e){const r=n.import;if(!("url"in r))throw new Error("Not an url import: "+JSON.stringify(r));const i=ui(t,r.url);let s;try{const o=await fetch(i);if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);s=await o.json()}catch(o){throw new Error(`Could not load imported view spec: ${i}. Reason: ${o.message}`)}if(e.isViewSpec(s))return s.baseUrl=ui(a2(r.url),s.baseUrl),s;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(n)}`)}function u5(n){const t=n.getSize(),e=n.getPadding(),r=(i,s)=>i.grow>0?void 0:i.px+s;return{width:r(t.width,e.horizontalTotal),height:r(t.height,e.verticalTotal)}}function*pd(n,t=[]){for(const[e,r]of n.entries())if(r instanceof Map)for(const i of pd(r,[...t,e]))yield i;else yield[[...t,e],r]}const T2=2147483647,f5=P2([T2]);function P2(n){let t=0;for(let e=0,r=n.length;e<r;e++)t=Math.max(t,n[e]);return Math.floor(Math.log2(t)/4)+1}function A5(n){const t=P2(n);let e=Array.from({length:n.length},(s,o)=>o),r=new Array(n.length);const i=new Array(16);for(let s=0;s<t;s++){i.fill(0);const o=s*4,a=Math.pow(16,s),l=c=>{const u=n[e[c]];return s>=f5?u>T2?Math.floor(u/a)%16:0:u>>o&15};for(let c=0;c<n.length;c++)i[l(c)]++;for(let c=1;c<16;c++)i[c]+=i[c-1];for(let c=n.length-1;c>=0;c--)r[--i[l(c)]]=e[c];[e,r]=[r,e]}return e}class L2 extends kA{constructor(e){var r;super();D(this,Dt);D(this,Hn,[]);D(this,Tc,ue(Rt));D(this,Sr,[]);D(this,Si);D(this,co);this.params=e??{type:"collect"},this.observers=new Set,this.facetBatches=new Sn([],JSON.stringify),F(this,co,d5((r=this.params)==null?void 0:r.sort)),P(this,Dt,G0).call(this)}get behavior(){return DA}get label(){return"collect"}reset(){super.reset(),P(this,Dt,G0).call(this)}handle(e){m(this,Hn).push(e)}beginBatch(e){sQ(e)&&(F(this,Hn,[]),this.facetBatches.set(tt(e.facetId),m(this,Hn)))}complete(){var e;if(F(this,Hn,[]),(e=this.params.groupby)!=null&&e.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const r=this.facetBatches.get(void 0),i=this.params.groupby.map(o=>ue(o)),s=i.length>1?bl(r,...i):h5(r,i[0]);this.facetBatches.clear();for(const[o,a]of pd(s))this.facetBatches.set(o,a)}if(m(this,co))for(const r of this.facetBatches.values())r.sort(m(this,co));P(this,Dt,ib).call(this),P(this,Dt,z0).call(this),super.complete();for(const r of this.observers)r(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}repropagate(){for(const e of this.children)e.reset();P(this,Dt,z0).call(this);for(const e of this.children)e.complete()}getData(){switch(P(this,Dt,H0).call(this),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const i of e.values())yield*i}}}}}visitData(e){P(this,Dt,H0).call(this);for(const r of this.facetBatches.values())for(let i=0;i<r.length;i++)e(r[i])}getItemCount(){let e=0;for(const r of this.facetBatches.values())e+=r.length;return e}findDatumByUniqueId(e){if(!m(this,Sr).length)return;const r=Hr(l=>l.start).right,i=m(this,Tc),s=Hr(l=>i(o(l))).left,o=l=>{const c=r(m(this,Si),l),u=m(this,Si)[c-1];return!u||l>=u.stop?void 0:this.facetBatches.get(u.facetId)[l-u.start]},a=s(m(this,Sr),e);if(a>=0){const l=o(m(this,Sr)[a]);if(l&&i(l)===e)return l}}}Hn=new WeakMap,Tc=new WeakMap,Sr=new WeakMap,Si=new WeakMap,co=new WeakMap,Dt=new WeakSet,G0=function(){F(this,Hn,[]),F(this,Sr,[]),this.facetBatches.clear(),this.facetBatches.set(void 0,m(this,Hn))},z0=function(){if(this.children.length)for(const[e,r]of this.facetBatches.entries()){if(e){const i={type:"facet",facetId:e};for(const s of this.children)s.beginBatch(i)}for(let i=0,s=r.length;i<s;i++)this._propagate(r[i])}},H0=function(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")},ib=function(){var o;F(this,Si,[]);const e=(o=this.facetBatches.values().next().value)==null?void 0:o[0];if(e==null||!(Rt in e))return;let r=0;const i=[],s=m(this,Tc);for(const[a,l]of this.facetBatches){m(this,Si).push({start:r,stop:r+l.length,facetId:a}),r+=l.length;for(let c=0,u=l.length;c<u;c++)i.push(s(l[c]))}F(this,Sr,A5(i))};function h5(n,t){const e=new Map;for(let r=0,i=n.length;r<i;r++){const s=n[r],o=t(s);let a=e.get(o);a||(a=[],e.set(o,a)),a.push(s)}return e}function d5(n){if(n!=null&&n.field){const t=tt(n.field);if(t.length==1&&!t[0].includes(".")){const e=tt(n.order)[0]??"ascending",r=JSON.stringify(t[0]);return new Function("a","b",`return a[${r}] ${e==="ascending"?"-":"+"} b[${r}];`)}return sg(n.field,n.order)}}class _u{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,e){let r=this.length++;for(;r>0;){const i=r-1>>1,s=this.values[i];if(e>=s)break;this.ids[r]=this.ids[i],this.values[r]=s,r=i}this.ids[r]=t,this.values[r]=e}pop(){if(this.length===0)return;const t=this.ids[0];if(this.length--,this.length>0){const e=this.ids[0]=this.ids[this.length],r=this.values[0]=this.values[this.length],i=this.length>>1;let s=0;for(;s<i;){let o=(s<<1)+1;const a=o+1;let l=this.ids[o],c=this.values[o];const u=this.values[a];if(a<this.length&&u<c&&(o=a,l=this.ids[a],c=u),c>=r)break;this.ids[s]=l,this.values[s]=c,s=o}this.ids[s]=e,this.values[s]=r}return t}peek(){if(this.length!==0)return this.ids[0]}peekValue(){if(this.length!==0)return this.values[0]}shrink(){this.ids.length=this.values.length=this.length}}class g5 extends Ue{get behavior(){return cn}constructor(t){super(t),this.params=t,this.startAccessor=ue(t.start),this.endAccessor=ue(t.end),this.chromAccessor=t.chrom?ue(t.chrom):e=>{},this.weightAccessor=t.weight?ue(t.weight):e=>1,this.as={coverage:t.as??"coverage",start:t.asStart??t.start,end:t.asEnd??t.end,chrom:t.asChrom??t.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([e,r])=>r).map(([e,r])=>`${JSON.stringify(r)}: ${e}`).join(", ")+"};"),this.ends=new _u}reset(){super.reset(),this.initialize()}initialize(){const t=this.as.coverage,e=this.as.end,r=this.as.chrom,i=this.startAccessor,s=this.endAccessor,o=this.chromAccessor,a=this.weightAccessor;let l,c,u,f=0,h=NaN;const A=this.ends;A.clear();const d=C=>{this._propagate(C),l=null},g=(C,w,b)=>{if(C==w)return;let y=!1;l&&(l[t]===b?(l[e]=w,y=!0):l[t]!=0&&d(l)),y||(l=this.createSegment(C,w,b,u))},p=()=>{let C=0;for(;(C=A.peekValue())!==void 0;)g(h,C,f),h=C,f-=A.pop();h=NaN,l&&d(l)};this.handle=C=>{const w=i(C);let b=0;for(;(b=A.peekValue())!==void 0&&b<w;)g(h,b,f),h=b,f-=A.pop();if(r){let x=o(C);x!==c&&(p(),u=x,c=u)}isNaN(h)||g(h,w,f),h=w;const y=a(C);f+=y,A.push(y,s(C))},this.complete=()=>{p(),super.complete()},this.beginBatch=C=>{p(),c=null,super.beginBatch(C)}}}function p5(n,t,e=s=>+s,r=0,i=n.length){const s=new _u,o=i-r;let a;for(a=0;a<t&&a<o;a++)s.push(a,e(n[r+a]));for(;a<o;a++){const u=e(n[r+a]);u>=s.peekValue()&&(s.push(a,u),s.pop())}const l=[];let c;for(;(c=s.pop())!==void 0;)l.push(n[r+c]);return l.reverse()}class m5{constructor(t,e=-1/0,r=1/0){this.maxSize=t,this.lowerLimit=e,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(t,e,r=0){if(t>=this.lowerLimits[r]&&e<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const s=this._findSlot(t,e,i);return s>=0?s:this._findSlot(t,e,this.upperChildren[r])}else return r}else return-1}reserve(t,e){if(e-t<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(t,e);if(r<0)return!1;const i=this.n++,s=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=t,this.lowerLimits[s]=e,this.upperLimits[s]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=s,!0}}class C5 extends Ue{get behavior(){return DA}constructor(t,e){if(super(t),this.params=t,this._data=[],this.channel=t.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.startPosAccessor=ue(this.params.pos),this.endPosAccessor=ue(this.params.pos2??this.params.pos),this.startPosBisector=Hr(this.startPosAccessor),this.endPosBisector=Hr(this.endPosAccessor),this.scoreAccessor=ue(this.params.score),this.widthAccessor=ue(this.params.width),this.laneAccessor=this.params.lane?ue(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=e.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>e.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),e._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const t=this.startPosAccessor;this._data.sort((e,r)=>t(e)-t(r));for(const e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new m5(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();const t=this.resolution.getScale(),e=this.resolution.getAxisLength();if(!e)return;for(const o of this.reservationMaps.values())o.reset();const r=t.domain(),s=p5(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,r[0]),this.startPosBisector.right(this._data,r[1]));for(const o of s){let a=t(this.startPosAccessor(o))*e,l=t(this.endPosAccessor(o))*e;const c=l-a,u=this.widthAccessor(o)+this.padding*2;let f=(a+l)/2;const h=Math.max(0,(c-u)/2);if(h>0){const A=Math.max(0,u/2-f);f+=Math.min(A,h);const d=Math.max(0,u/2+f-e);f-=Math.min(d,h)}if(this.reservationMaps.get(this.laneAccessor(o)).reserve(f-u/2,f+u/2))if(this.params.asMidpoint){const A=Object.assign({},o);A[this.params.asMidpoint]=t.invert(f/e),this._propagate(A)}else this._propagate(o)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(t){this._data.push(t)}}class y5 extends Ue{constructor(t,e){super(t,e),this.params=t,this.predicate=void 0}initialize(){let t="";if(w5(this.params))t=this.params.expr;else if(I5(this.params)){const e=this.paramMediator.findValue(this.params.param);if(!e)throw new Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);t=pQ(this.params,e)}else throw new Error("Invalid filter params: "+JSON.stringify(this.params));this.predicate=this.paramMediator.createExpression(t),this.predicate.addListener(()=>this.repropagate())}handle(t){this.predicate(t)&&this._propagate(t)}}function w5(n){return"expr"in n}function I5(n){return"param"in n}class E5 extends Ue{get behavior(){return cn}constructor(t){super(t),this.params=t;const e=t.index;if(t.fields){const r=tt(t.fields).map(s=>ue(s)),i=tt(t.as||t.fields);if(r.length!==i.length)throw new Error(`Lengths of "fields" (${r.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{const o=r.map((l,c)=>l(s)??[]),a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<r.length;u++)c[i[u]]=l<o[u].length?o[u][l]:null;e&&(c[e]=l),this._propagate(c)}}}else this.handle=r=>{for(let i=0;i<r.length;i++){const s=Object.assign({},r[i]);e&&(s[e]=i),this._propagate(s)}}}}const b5=48;function*x5(n,t=","){const e=t.charCodeAt(0);let r=0;for(let i=0;i<n.length;i++){const s=n.charCodeAt(i);s==e?(yield r,r=0):r=r*10+s-b5}yield r}class B5 extends Ue{get behavior(){return cn}constructor(t){super(t);const e=ue(t.exons??"exons"),r=ue(t.start??"start"),[i,s]=t.as||["exonStart","exonEnd"];this.handle=o=>{let a=r(o),l=a,c=!0;const u=e(o);for(const f of x5(u)){if(c)l=a+f;else{a=l+f;const h=Object.assign({},o);h[i]=l,h[s]=a,this._propagate(h)}c=!c}}}}class v5 extends Ue{get behavior(){return cn}constructor(t){super(t);const e=tt(t.field).map(s=>ue(s)),r=tt(t.separator),i=tt(t.as||t.field);if(e.length!==r.length||e.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${e.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{if(e.some(l=>!l(s)))return;const o=e.map((l,c)=>l(s).split(r[c]));Q5(o,s);const a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<e.length;u++)c[i[u]]=o[u][l];this._propagate(c)}}}}function Q5(n,t){const e=n.map(r=>r.length);if(!e.every(r=>r==e[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(t))}class S5 extends Ue{get behavior(){return tr}constructor(t,e){super(t,e),this.params=t,this.as=t.as,this.fn=void 0}initialize(){this.fn=this.paramMediator.createExpression(this.params.expr),this.fn.addListener(()=>this.repropagate())}handle(t){t[this.as]=this.fn(t),this._propagate(t)}}class O2 extends Ue{get behavior(){return tr}constructor(t,e){t={channel:"x",...t},super(t),this.params=t;const r=t.channel;if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=e.getScaleResolution(r).getScale(),s="genome"in i?i.genome():void 0;if(!s)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=ue(t.chrom),a=tt(t.pos).map(g=>ue(g)),l=tt(t.as);if(a.length!=l.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=tt(t.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(t.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",l.map((g,p)=>`datum[${JSON.stringify(g)}] = chromOffset + +posAccessors[${p}](datum) - ${u[p]};`).join(`
674
- `));let h,A=0;const d=g=>{if(g!==h){if(A=s.cumulativeChromPositions.get(g),A===void 0)return;h=g}return A};this.handle=g=>{const p=o(g),C=d(p);if(C===void 0)throw new Error(`Unknown chromosome/contig "${p}" in datum: ${JSON.stringify(g)}`);f(g,C,a),this._propagate(g)}}}const U2={chars:JSON.parse('[{"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}]'),common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0}};class D5 extends Ue{get behavior(){return tr}constructor(t,e){super(t),this.params=t;const r=ph(U2),i=ue(t.field),s=t.as;let o=0;if(it(t.fontSize)){const a=e.paramMediator.createExpression(t.fontSize.expr);o=a(),a.addListener(()=>{o=a(),this.repropagate()})}else o=t.fontSize;this.handle=a=>{const l=i(a);l!==void 0?a[s]=r.measureWidth(l,o):a[s]=0,this._propagate(a)}}}const k5=65536;class F5 extends Ue{get behavior(){return tr}constructor(t){super(t),this.params=t}reset(){super.reset(),this.initialize()}initialize(){const t=this.params,e=t.as||"lane",r=ft(t.spacing)?t.spacing:1,i=ue(t.start),s=ue(t.end);if(!t.preference!=!t.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(t.preference){const o=new Float64Array(k5),a=ue(t.preference),l=t.preferredOrder;let c=1/0;this.handle=u=>{const f=i(u);f<c&&o.fill(-1/0),c=f;const h=l.indexOf(a(u));let A=-1;if(h>=0&&o[h]<f)A=h;else{const d=i(u);for(A=0;A<o.length&&!(o[A]<d);A++);if(A>=o.length)throw new Error("Out of lanes!")}o[A]=s(u)+r,u[e]=A,this._propagate(u)}}else{const o=new _u,a=new _u;let l=-1/0,c=0;this.handle=u=>{const f=i(u);for(;o.length&&(o.peekValue()<=f||f<l);){const A=o.pop();a.push(A,A)}l=f;let h=a.pop();h===void 0&&(h=c++),u[e]=h,this._propagate(u),o.push(h,s(u)+r)}}}}class M5 extends Ue{get behavior(){return cn}constructor(t){if(super(t),this.params=t,t.as&&t.as.length!=t.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const e=t.fields.map(i=>ue(i)),r=t.as?t.as:e.map(De);this.handle=i=>{const s={};for(let o=0;o<e.length;o++)s[r[o]]=e[o](i);this._propagate(s)}}}class R5 extends Ue{get behavior(){return tr}constructor(t){super(t),this.params=t;const e=new RegExp(t.regex),r=typeof t.as=="string"?[t.as]:t.as,i=ue(t.field);this.handle=s=>{const o=i(s);if(Ce(o)){const a=o.match(e);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 l=0;l<r.length;l++)s[r[l]]=a[l+1]}else if(t.skipInvalidInput)for(let l=0;l<r.length;l++)s[r[l]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${e.toString()}`)}else if(!t.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(s)}}}class N5 extends Ue{get behavior(){return cn}constructor(t){super(t),this.params=t;const e=tt(t.columnRegex).map(h=>new RegExp(h));for(const h of e)if(RegExp("|"+h.source).exec("").length-1!=1)throw new Error(`Regex ${h.toString()} must have exactly one capturing group!`);const r=tt(t.asValue);if(e.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=t.skipRegex?new RegExp(t.skipRegex):void 0,s=t.asKey||"sample";let o,a,l;const c=h=>{var p;const A=Object.keys(h);for(const C of e)if(!A.some(w=>C.test(w)))throw new Error(`No columns matching the regex ${C.toString()} found in the data!`);const d=new Map;for(const[C,w]of e.entries())for(const b of A){const y=(p=w.exec(b))==null?void 0:p[1];if(y!==void 0){let x=d.get(y);x||(x=[],d.set(y,x)),x[C]=b}}o=[...d.entries()],a=A.filter(C=>!e.some(w=>w.test(C))&&!(i&&i.test(C)));const g=[...a.map(C=>JSON.stringify(C)+": datum["+JSON.stringify(C)+"]"),JSON.stringify(s)+": sampleId",...r.map((C,w)=>JSON.stringify(C)+`: datum[attrs[${w}]]`)];l=new Function("datum","sampleId","attrs",`return {
675
- `+g.join(`,
654
+ */const JM="locus",qM="index";var KM=5;function jM(n){const t=n.type;return!n.bins&&(t===Us||t===Ac||t===hc)}function Rw(n){return Je(n)&&![mn,qM,JM].includes(n)}function Nw(n){return n||{warn:(t,...e)=>console.warn(t,...e)}}var WM=au(["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 Tw(n,t,e){e=Nw(e);for(const i in n)if(!WM[i]){if(i==="padding"&&Rw(t.type))continue;Mt(t[i])?t[i](n[i]):e.warn("Unsupported scale property: "+i)}const r=Pw(t,n,e);r.domain&&t.domain(r.domain),r.applyOrdinalUnknown&&t.unknown(r.ordinalUnknown),iR(t,n,rR(t,n,r.count))}function XM(n,t){const e=ZM(n),r=he(e);if(!r)throw new Error("Unknown scale type: "+e);const i=r();return!n.domain&&Je(i.type)&&(n.domain=[0,0]),Tw(n,i,t),i}function ZM(n){var t=n.type,e="",r;return t===mn?mn+"-"+Us:($M(n)&&(r=n.rawDomain?n.rawDomain.length:n.domain?n.domain.length+ +(n.domainMid!=null):0,e=r===2?mn+"-":r===3?Gs+"-":""),(e+t||Us).toLowerCase())}function $M(n){const t=n.type;return Je(t)&&t!==_y&&t!==Yy&&(n.scheme||n.range&&n.range.length&&n.range.every(ye))}function eR(n){if(!n.copy)return n;const t=n.copy();return t.type==null&&n.type!=null&&(t.type=n.type),t}function Pw(n,t,e){if(!n.domain)return{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1};e=Nw(e);const r=eR(n);var i=tR(r,t.domainRaw,e);if(i>-1)return{domain:r.domain(),count:i,ordinalUnknown:r.type===dc&&t.domainImplicit?ff:void 0,applyOrdinalUnknown:!1};var s=t.domain,o=r.type,a=t.zero||t.zero===void 0&&jM(r),l,c;return s?(Rw(o)&&t.padding&&s[0]!==qt(s)&&(s=nR(o,s,t.range,t.padding,t.exponent,t.constant)),(a||t.domainMin!=null||t.domainMax!=null||t.domainMid!=null)&&(l=(s=s.slice()).length-1||1,a&&(s[0]>0&&(s[0]=0),s[l]<0&&(s[l]=0)),t.domainMin!=null&&(s[0]=t.domainMin),t.domainMax!=null&&(s[l]=t.domainMax),t.domainMid!=null&&(c=t.domainMid,(c<s[0]||c>s[l])&&e.warn("Scale domainMid exceeds domain min or max.",c),s.splice(l,0,c))),r.domain(Lw(o,s,e)),t.nice&&r.nice&&r.nice(t.nice!==!0&&Fw(r,t.nice)||null),{domain:r.domain(),count:s.length,ordinalUnknown:o===dc&&t.domainImplicit?ff:void 0,applyOrdinalUnknown:o===dc}):{domain:null,count:0,ordinalUnknown:void 0,applyOrdinalUnknown:!1}}function tR(n,t,e){return t?(n.domain(Lw(n.type,t,e)),t.length):-1}function nR(n,t,e,r,i,s){e??(e=[0,1]);var o=Math.abs(qt(e)-e[0]),a=o/(o-2*r),l=n===Er?gp(t,null,a):n===hc?UA(t,null,a,.5):n===Ac?UA(t,null,a,i||1):n===xf?aB(t,null,a,s||1):dp(t,null,a);return t=t.slice(),t[0]=l[0],t[t.length-1]=l[1],t}function Lw(n,t,e){if(Zy(n)){var r=Math.abs(t.reduce(function(i,s){return i+(s<0?-1:s>0?1:0)},0));r!==t.length&&e.warn("Log scale domain includes zero: "+zA(t))}return t}function rR(n,t,e){let r=t.bins;if(r&&!je(r)){const i=(r.start==null||r.stop==null)&&n.domain(),s=r.start==null?i[0]:r.start,o=r.stop==null?qt(i):r.stop,a=r.step;a||Re("Scale bins parameter missing step property."),r=Da(s,o+a,a)}return r?n.bins=r:n.bins&&delete n.bins,n.type===jd&&(r?!t.domain&&!t.domainRaw&&(n.domain(r),e=r.length):n.bins=n.domain()),e}function iR(n,t,e){var r=n.type,i=t.round||!1,s=t.range;if(t.rangeStep!=null)s=sR(r,t,e);else if(t.scheme&&(s=oR(r,t,e),Mt(s))){if(n.interpolator)return n.interpolator(s);Re(`Scale type ${r} does not support interpolating color schemes.`)}if(s&&vf(r))return n.interpolator(Sf(c0(s,t.reverse),t.interpolate,t.interpolateGamma));s&&t.interpolate&&n.interpolate?n.interpolate($y(t.interpolate,t.interpolateGamma)):Mt(n.round)?n.round(i):Mt(n.rangeRound)&&n.interpolate(i?uc:wr),s&&n.range(c0(s,t.reverse))}function sR(n,t,e){n!==Ky&&n!==Kd&&Re("Only band and point scales support rangeStep.");var r=(t.paddingOuter!=null?t.paddingOuter:t.padding)||0,i=n===Kd?1:(t.paddingInner!=null?t.paddingInner:t.padding)||0;return[0,t.rangeStep*Jd(e,i,r)]}function oR(n,t,e){var r=t.schemeExtent,i,s;return je(t.scheme)?s=Sf(t.scheme,t.interpolate,t.interpolateGamma):(i=t.scheme.toLowerCase(),s=Xd(i),s||Re(`Unrecognized scheme name: ${t.scheme}`)),e=n===qy?e+1:n===jd?e-1:n===qd||n===Jy?+t.schemeCount||KM:e,vf(n)?Ow(s,r,t.reverse):Mt(s)?h6(Ow(s,r),e):n===dc?s:s.slice(0,e)}function Ow(n,t,e){return Mt(n)&&(t||e)?A6(n,c0(t||[0,1],e)):n}function c0(n,t){return t?n.slice().reverse():n}class aR{constructor({getParamMediator:t,onRangeChange:e,onDomainChange:r,getGenomeStore:i}){S(this,Ht);S(this,En);S(this,nl,new Set);S(this,rl);S(this,il);S(this,sl);S(this,xo);S(this,Bo,0);D(this,rl,t),D(this,il,e),D(this,sl,r),D(this,xo,i)}get scale(){return g(this,En)}getLocusGenome(){var r;const t=(r=g(this,xo))==null?void 0:r.call(this),e=t==null?void 0:t.getGenome();if(!e)throw new Error("No genome has been defined!");return e}createScale(t){const e=XM({...M(this,Ht,Lg).call(this,t),range:void 0});return e.props=t,"unknown"in e&&e.unknown(null),D(this,En,e),M(this,Ht,px).call(this,t),M(this,Ht,Og).call(this),M(this,Ht,mx).call(this),g(this,En)}reconfigureScale(t){const e=g(this,En);!e||e.type=="null"||(Tw({...M(this,Ht,Lg).call(this,t),range:void 0},e),e.props=t,M(this,Ht,Og).call(this))}withDomainNotificationsSuppressed(t){D(this,Bo,g(this,Bo)+1);try{t()}finally{D(this,Bo,g(this,Bo)-1)}}}En=new WeakMap,nl=new WeakMap,rl=new WeakMap,il=new WeakMap,sl=new WeakMap,xo=new WeakMap,Bo=new WeakMap,Ht=new WeakSet,px=function(t){var s;const e=g(this,En);if(!e||!RM(e))return;const r=(s=g(this,xo))==null?void 0:s.call(this),i=r==null?void 0:r.getGenome(t.assembly);if(!i)throw new Error("No genome has been defined!");e.genome(i)},Lg=function(t){const e=t,{assembly:r,domainIndexer:i,...s}=e;return s},Og=function(){const t=g(this,En);if(!t)return;const e=t.props;g(this,nl).forEach(s=>s.invalidate());const r=lR({range:e.range,reverse:e.reverse,createExpression:s=>g(this,rl).call(this).createExpression(s),registerExpr:s=>g(this,nl).add(s)});if(!r)return;if("values"in r){t.range(r.values);return}const i=()=>t.range(r.evaluate());r.setup(i),i()},mx=function(){const t=g(this,En);if(!t)return;const e=t.range,r=t.domain,i=()=>{var o;return(o=g(this,il))==null?void 0:o.call(this)};cR(t,{onRangeChange:i,onDomainChange:()=>{var o;g(this,Bo)>0||(o=g(this,sl))==null||o.call(this)},range:e,domain:r}),i()};function cR(n,{onRangeChange:t,onDomainChange:e,range:r,domain:i}){typeof r=="function"&&(n.range=(function(s){if(arguments.length)r(s),t==null||t();else return r()})),typeof i=="function"&&(n.domain=(function(s){if(arguments.length)i(s),e==null||e();else return i()}))}function lR({range:n,reverse:t,createExpression:e,registerExpr:r}){if(!n||!je(n))return null;const i=(s,o)=>o?s.slice().reverse():s;if(n.some(Ze)){let s;return{dynamic:!0,evaluate:()=>i(s.map(l=>l()),t),setup:l=>{s=n.map(c=>{if(Ze(c)){const u=e(c.expr);return u.addListener(l),r(u),()=>u(null)}return()=>c})}}}return{dynamic:!1,values:i(n,t)}}function Mf(n,t,e){if(e=e||[],n.some(o=>o===null)){if(n.every(o=>o===null))return null;throw console.warn(n),new Error("Cannot merge objects with nulls!")}const r={},i=(o,a)=>o===a||Vs(o)&&Vs(a)||Vs(o)&&a===!0||o===!0&&et(a)||Array.isArray(o)&&Array.isArray(a)&&o.length===a.length&&o.every((l,c)=>l===a[c]),s=o=>{for(let a in o){const l=o[a];if(!e.includes(a)&&l!==void 0)if(r[a]!==void 0&&!i(r[a],l))console.warn(`Conflicting property ${a} of ${t}: (${JSON.stringify(r[a])} and ${JSON.stringify(o[a])}). Using ${JSON.stringify(r[a])}.`);else{const c=r[a];if(Vs(c))Vs(l)&&(r[a]=Mf([c,l],a));else if(Vs(l)){if(!(c===!0||c===void 0))throw new Error("Bug in merge! Target is: "+c);r[a]=Mf([{},l],a)}else r[a]=l}}};for(const o of n)s(o);return r}function Vs(n){return et(n)&&!Array.isArray(n)}const Uw="quantitative",Gw="ordinal",zw="nominal",vc="locus",Hw="index";function uR(n,t,e){const r={};return e&&(r.zero=!1),$a(n)?r.nice=!e:ur(n)?r.scheme=t==zw?"tableau10":t==Gw?"blues":"viridis":Pu(n)?r.range=n=="shape"?["circle","square","triangle-up","cross","diamond"]:[]:n=="size"?r.range=[0,400]:n=="angle"&&(r.range=[0,360]),r}function fR(n,t){if(t==Hw||t==vc){if(Fh(n))return t;throw new Error(n+" does not support "+t+" data type. Only positional channels do.")}const e={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"],sample:["null",void 0,void 0]},i=["sample"].includes(n)?"null":e[n]?e[n][[zw,Gw,Uw].indexOf(t)]:t==Uw?"linear":"ordinal";if(i===void 0)throw new Error('Channel "'+n+'" is not compatible with "'+t+'" data type. Use of a proper scale may be needed.');return i}function AR(n,t){$a(t)&&n.type!=="ordinal"&&(n.range=[0,1]),t=="opacity"&&Je(n.type)&&(n.clamp=!0)}function hR({channel:n,dataType:t,members:e,isExplicitDomain:r}){const i=Array.from(e).map(a=>a.channelDef.scale).filter(a=>a!==void 0),s=Mf(i,"scale",["domain"]);if(s===null||s.type=="null")return{type:"null"};const o={...uR(n,t,r),...s};return o.type||(o.type=fR(n,t)),n=="y"&&Pn(o.type)&&o.reverse==null&&(o.reverse=!0),o.range&&o.scheme&&delete o.scheme,!("zoom"in o)&&[Hw,vc].includes(o.type)&&(o.zoom=!0),AR(o,n),o}class Sc extends Array{constructor(){super(),this.type=void 0}extend(t){return this}extendAll(t){if(t instanceof Sc&&t.type!=this.type)throw new Error(`Cannot combine different types of domains: ${this.type} and ${t.type}`);for(const e of t)this.extend(e);return this}extendAllWithAccessor(t,e){for(const r of t)this.extend(e(r));return this}}class l0 extends Sc{constructor(){super(),this.type="quantitative"}extend(t){return t==null||Number.isNaN(t)?this:(t=+t,this.length?t<this[0]?this[0]=t:t>this[1]&&(this[1]=t):(this.push(t),this.push(t)),this)}}class Vw extends Sc{constructor(){super(),this.type="ordinal",this.uniqueValues=new Set}extend(t){return t==null||Number.isNaN(t)?this:(this.uniqueValues.has(t)||(this.uniqueValues.add(t),this.push(t)),this)}}class u0 extends Vw{constructor(){super(),this.type="nominal"}}class dR extends Sc{constructor(t){super();let e=0;for(let r=1;r<t.length;r++)e+=Math.sign(t[r]-t[r-1]);if(Math.abs(e)!=t.length-1)throw new Error("Piecewise domain must be strictly increasing or decreasing: "+JSON.stringify(t));t.forEach(r=>this.push(r))}extend(t){if(this.includes(t))return this;throw new Error("Piecewise domains are immutable and cannot be unioned!")}}const _w={quantitative:l0,index:l0,locus:l0,nominal:u0,ordinal:Vw};function Rf(n,t){if(n=="quantitative"&&gR(t)){const e=new dR(t);return e.type=n,e}else if(_w[n]){const e=new _w[n];return e.type=n,t&&e.extendAll(t),e}throw new Error("Unknown type: "+n)}function gR(n){return n&&n.length>0&&n.length!=2&&n.every(t=>typeof t=="number")}class pR{constructor({getMembers:t,getDataMembers:e,getType:r,getLocusExtent:i,fromComplexInterval:s}){S(this,wA);S(this,ol);S(this,al);S(this,vo);S(this,cl);S(this,ll);S(this,Gi);S(this,ul);S(this,So,!0);S(this,fl,new WeakMap);D(this,ol,t),D(this,al,e??t),D(this,vo,r),D(this,cl,i),D(this,ll,s)}get initialDomainSnapshot(){return g(this,Gi)}hasConfiguredDomain(){return!!this.getConfiguredDomain()}invalidateConfiguredDomain(){D(this,So,!0)}getConfiguredOrDefaultDomain(t=!1){return this.getConfiguredDomain()??yR(g(this,vo).call(this),g(this,cl),t?this.getDataDomain():void 0)}getConfiguredDomain(){if(!g(this,So))return g(this,ul);const t=mR(g(this,ol).call(this),g(this,ll));return D(this,ul,t),D(this,So,!1),t}getDataDomain(){return CR(g(this,al).call(this),g(this,vo),t=>M(this,wA,Cx).call(this,t))}captureInitialDomain(t,e){if(!g(this,Gi)&&Je(t.type)){const r=t.domain();Ca(r)>0&&D(this,Gi,r)}return e?!1:(D(this,Gi,t.domain()),!0)}}ol=new WeakMap,al=new WeakMap,vo=new WeakMap,cl=new WeakMap,ll=new WeakMap,Gi=new WeakMap,ul=new WeakMap,So=new WeakMap,fl=new WeakMap,wA=new WeakSet,Cx=function(t){const e=g(this,fl).get(t);if(e)return e;const r=t.view.mark.encoders;if(!r)return[];const i=r[t.channel];if(!i)return[];const s=i.accessors??[];if(s.length===0)return[];const o=s.filter(n1).filter(a=>!a.channelDef.domainInert);return g(this,fl).set(t,o),o};function mR(n,t){const e=Array.from(n).filter(r=>r.contributesToDomain).map(r=>r.channelDef).filter(r=>{var i;return(i=r.scale)==null?void 0:i.domain}).map(r=>Rf(r.type,t(r.scale.domain)));if(e.length>0)return e.reduce((r,i)=>r.extendAll(i))}function CR(n,t,e){const r=t(),i=new Map;for(const o of n){if(!o.contributesToDomain)continue;const a=e(o);if(a.length===0)continue;const l=o.view.getCollector();for(const c of a){const u=i1(c,r),f=l??null;let h=i.get(f);if(h||(h=new Map,i.set(f,h)),h.has(u))continue;let A;if(l)A=l.getDomain(u,r,c);else if(c.constant)A=Rf(r),A.extend(c({}));else continue;h.set(u,A)}}if(i.size===0)return;const s=Rf(r);for(const o of i.values())for(const a of o.values())s.extendAll(a);return s}function yR(n,t,e){return n==vc?t():e??[]}function wR(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)/2}function IR(n,t,e){return n*Math.pow(t/n,e)}const ER=n=>new Promise(t=>setTimeout(t,n));function bR(){return{canceled:!1}}function xR(n){const t=n.requestAnimationFrame||window.requestAnimationFrame,e=n.signal,r=n.cancelToken,i=()=>new Promise((s,o)=>{if(r!=null&&r.canceled)return s();if(e!=null&&e.aborted)return o("aborted");const a=performance.now(),l=a+(n.duration||1e3),c=typeof n.from=="number"?n.from:0,u=typeof n.to=="number"?n.to:1,f=n.easingFunction||(C=>C),h=C=>(C-a)/(l-a),A=C=>C*(u-c)+c,d=C=>Math.max(0,Math.min(1,C)),p=C=>{if(r!=null&&r.canceled){s();return}e!=null&&e.aborted?o("aborted"):(n.onUpdate(A(f(d(h(C))))),C<l?t(p):(n.onUpdate(A(f(1))),s()))};t(p)});return n.delay?r!=null&&r.canceled?Promise.resolve():e!=null&&e.aborted?Promise.reject("aborted"):ER(n.delay).then(i):i()}class BR{constructor({getScale:t,getAnimator:e,getInitialDomainSnapshot:r,getResetDomain:i,fromComplexInterval:s,getGenomeExtent:o}){S(this,gl);S(this,Vt);S(this,Al);S(this,hl);S(this,Qo);S(this,Do);S(this,dl);S(this,_n,null);D(this,Vt,t),D(this,Al,e),D(this,hl,r),D(this,Qo,i),D(this,Do,s),D(this,dl,o)}getZoomExtent(){const t=g(this,Vt).call(this),e=t.props.zoom;return vR(t,e,g(this,Do),g(this,dl),g(this,hl))}isZoomable(){return this.isZoomingSupported()&&!!g(this,Vt).call(this).props.zoom}isZoomingSupported(){const t=g(this,Vt).call(this).type;return Je(t)&&!Pn(t)}getDomainChangeAction(t,e){return Is(e,t)?"none":this.isZoomable()?"restore":this.isZoomingSupported()?"animate":"notify"}isZoomed(){return this.isZoomingSupported()&&Is(g(this,Qo).call(this),g(this,Vt).call(this).domain())}zoom(t,e,r){if(!this.isZoomingSupported())return!1;const i=g(this,Vt).call(this),s=i.domain();let o=SR(i,s,t,e,r);const a=this.getZoomExtent();return o=cB(o,a[0],a[1]),[0,1].some(l=>o[l]!=s[l])?(i.domain(o),!0):!1}async zoomTo(t,e=!1){if(ma(e)&&(e=e?700:0),!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const r=g(this,Do).call(this,t),i=g(this,Al).call(this),s=g(this,Vt).call(this),o=s.domain();if(e>0&&o.length==2){const a=o[1]-o[0],l=r[1]-r[0],c=o[0]+a/2,u=r[0]+l/2,f=o[0]==r[0],h=o[1]==r[1];M(this,gl,Ug).call(this);const A=bR();D(this,_n,A),await i.transition({duration:e,easingFunction:wR,cancelToken:A,onUpdate:d=>{const p=IR(a,l,d),C=a==l?d:(a-p)/(a-l),m=C*u+(1-C)*c,w=[f?o[0]:m-p/2,h?o[1]:m+p/2];s.domain(w)}}),g(this,_n)===A&&D(this,_n,null),s.domain(r)}else M(this,gl,Ug).call(this),s.domain(r),i==null||i.requestRender()}resetZoom(){if(!this.isZoomingSupported())throw new Error("Not a zoomable scale!");const t=g(this,Vt).call(this),e=t.domain(),r=g(this,Qo).call(this);return[0,1].some(i=>r[i]!=e[i])?(t.domain(r),!0):!1}getZoomLevel(){return this.isZoomable()?Ca(this.getZoomExtent())/Ca(g(this,Vt).call(this).domain()):1}}Vt=new WeakMap,Al=new WeakMap,hl=new WeakMap,Qo=new WeakMap,Do=new WeakMap,dl=new WeakMap,_n=new WeakMap,gl=new WeakSet,Ug=function(){g(this,_n)&&(g(this,_n).canceled=!0,D(this,_n,null))};function vR(n,t,e,r,i){return QR(t)&&je(t.extent)?e(t.extent):t&&n.props.type=="locus"?r():i()}function SR(n,t,e,r,i){let s=[...t],o=n.invert(r);switch(n.props.reverse&&(i=-i),"align"in n&&(o+=n.align()),n.type){case"linear":case"index":case"locus":s=iB(s,i||0),s=dp(s,o,e);break;case"log":s=sB(s,i||0),s=gp(s,o,e);break;case"pow":case"sqrt":{const a=n;s=oB(s,i||0,a.exponent()),s=UA(s,o,e,a.exponent());break}default:throw new Error("Zooming is not implemented for: "+n.type)}return s}function QR(n){return et(n)}he("index",s0,["continuous"]),he("locus",MM,["continuous"]),he("null",Zd,[]);class DR{constructor(t){S(this,K);S(this,nn,new Set);S(this,ko,new Set);S(this,Fo,{domain:new Set,range:new Set});S(this,Te);S(this,Qt);S(this,_t);S(this,zi);S(this,pl,!1);this.channel=t,this.type=null,this.name=void 0,D(this,Qt,new pR({getMembers:()=>M(this,K,zg).call(this),getDataMembers:()=>M(this,K,zg).call(this,g(this,ko)),getType:()=>this.type,getLocusExtent:()=>M(this,K,Vg).call(this),fromComplexInterval:this.fromComplexInterval.bind(this)})),D(this,Te,new aR({getParamMediator:()=>g(this,K,Gg).paramMediator,onRangeChange:()=>M(this,K,ga).call(this,"range"),onDomainChange:()=>M(this,K,ga).call(this,"domain"),getGenomeStore:()=>g(this,K,Hg).genomeStore})),D(this,_t,new BR({getScale:()=>this.getScale(),getAnimator:()=>g(this,K,Hg).animator,getInitialDomainSnapshot:()=>g(this,Qt).initialDomainSnapshot,getResetDomain:()=>g(this,Qt).getConfiguredOrDefaultDomain(),fromComplexInterval:this.fromComplexInterval.bind(this),getGenomeExtent:()=>M(this,K,Vg).call(this)}))}get zoomExtent(){return(g(this,Te).scale&&Je(g(this,Te).scale.type)&&g(this,_t).getZoomExtent())??[-1/0,1/0]}addEventListener(t,e){g(this,Fo)[t].add(e)}removeEventListener(t,e){g(this,Fo)[t].delete(e)}registerMember(t){return M(this,K,yx).call(this,t),()=>{const e=g(this,nn).delete(t);return e&&(g(this,ko).delete(t),g(this,Qt).invalidateConfiguredDomain()),e&&g(this,nn).size===0}}registerCollectorSubscriptions(t,e){const r=new Set;for(const o of e)o.channelDef.domainInert||r.add(i1(o,this.type));if(r.size===0)return()=>{};const i=()=>{this.reconfigureDomain()},s=[];for(const o of r)s.push(t.subscribeDomainChanges(o,i));return()=>{for(const o of s)o()}}reconfigure(){g(this,Qt).invalidateConfiguredDomain();const t=M(this,K,Yg).call(this,!0);t&&(M(this,K,Jg).call(this,t,(e,r)=>g(this,Te).reconfigureScale(r)),M(this,K,qg).call(this,t))}reconfigureDomain(){const t=M(this,K,Yg).call(this,!0,!0);if(!t)return;const{domainConfig:e,targetDomain:r}=t,i=r!=null&&Is(r,t.scale.domain());r!=null&&!i&&M(this,K,Jg).call(this,t,s=>{s.domain(r),e.applyOrdinalUnknown&&s.unknown(e.ordinalUnknown)}),M(this,K,qg).call(this,t)}get scale(){if(g(this,Te).scale)return g(this,Te).scale;throw new Error("ScaleResolution.scale accessed before initialization. Call initializeScale().")}getScale(){return g(this,Te).scale??this.initializeScale()}initializeScale(){if(g(this,Te).scale)return g(this,Te).scale;const t=M(this,K,FA).call(this);return g(this,Te).createScale(t)}getDomain(){return this.getScale().domain()}getDataDomain(){return g(this,Qt).getDataDomain()}getComplexDomain(){return LM(M(this,K,da).call(this),this.getDomain())}isZoomed(){return g(this,_t).isZoomed()}isZoomable(){return g(this,_t).isZoomable()}zoom(t,e,r){return g(this,_t).zoom(t,e,r)}async zoomTo(t,e=!1){return g(this,_t).zoomTo(t,e)}resetZoom(){return g(this,_t).resetZoom()}getZoomLevel(){return g(this,_t).getZoomLevel()}getAxisLength(){if(this.channel!=="x"&&this.channel!=="y")throw new Error("Axis length is only defined for x and y channels!");const t=Array.from(g(this,nn)).map(e=>{var r;return(r=e.view.coords)==null?void 0:r[this.channel==="x"?"width":"height"]}).filter(e=>e>0);return t.length?t.reduce((e,r)=>Math.min(e,r),1e4):0}invertToComplex(t){const e=this.getScale();if("invert"in e){const r=e.invert(t);return this.toComplex(r)}else throw new Error("The scale does not support inverting!")}toComplex(t){return NM(M(this,K,da).call(this),t)}fromComplex(t){return TM(M(this,K,da).call(this),t)}fromComplexInterval(t){return this.type==vc?PM(M(this,K,da).call(this),t):t}}nn=new WeakMap,ko=new WeakMap,Fo=new WeakMap,Te=new WeakMap,Qt=new WeakMap,_t=new WeakMap,zi=new WeakMap,pl=new WeakMap,K=new WeakSet,Gg=function(){const t=g(this,nn).values().next().value;if(!t)throw new Error("ScaleResolution has no members!");return t.view},zg=function(t=g(this,nn)){var r,i;const e=new Set;for(const s of t){const o=s.view;o.isConfiguredVisible()&&(!o.isDataInitialized()&&!((i=(r=s.channelDef)==null?void 0:r.scale)!=null&&i.domain)||e.add(s))}return e},Hg=function(){return g(this,K,Gg).context},Vg=function(){return OM(M(this,K,da).call(this))},da=function(){if(this.type===vc)return g(this,Te).scale??g(this,Te).getLocusGenome()},ga=function(t){for(const e of g(this,Fo)[t].values())e({type:t,scaleResolution:this})},yx=function(t){var a;const{channel:e,channelDef:r}=t,i=r.type==null&&this.type;if(e!="sample"&&!r.type&&!Mh(e)&&!i)throw new Error(`The "type" property must be defined in channel definition: "${e}": ${JSON.stringify(r)}. Must be one of: "quantitative", "ordinal", "nominal", "locus", "index"`);const s=e=="sample"?"nominal":r.type,o=(a=r==null?void 0:r.scale)==null?void 0:a.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(!i){if(!this.type)this.type=s;else if(s!==this.type&&!Mh(e))throw new Error(`Can not use shared scale for different data types: ${this.type} vs. ${s}. Use "resolve: independent" for channel ${this.channel}`)}g(this,nn).add(t),t.contributesToDomain&&g(this,ko).add(t),g(this,Qt).invalidateConfiguredDomain()},wx=function(){for(const t of g(this,nn))if(t.view.hasRendered())return!0;return!1},_g=function(){return g(this,Qt).hasConfiguredDomain()},Ix=function(){const t=g(this,Te).scale;if(!t)return!1;const e=t.domain();return Je(t.type)?e.length>2||e.length==2&&(e[0]!==0||e[1]!==0):e.length>0},Ex=function(){return hR({channel:this.channel,dataType:this.type,members:g(this,nn),isExplicitDomain:M(this,K,_g).call(this)})},FA=function(t=!1){const e=M(this,K,Ex).call(this);if(e===null||e.type=="null")return{type:"null"};const r=g(this,Qt).getConfiguredOrDefaultDomain(t);if(Pn(e.type)){const i=M(this,K,_g).call(this),s=M(this,K,bx).call(this,i);if(r!=null){if(i&&s.domain().length>0&&!Is(s.domain(),r))return D(this,zi,void 0),M(this,K,FA).call(this,t);s.addAll(r);const o=new Set(r),a=s.domain().filter(l=>o.has(l));e.domain=a.length>0?a:new u0}else{const o=s.domain();e.domain=o.length>0?o:new u0}e.domainIndexer=s}else r&&r.length>0&&(e.domain=r);return!e.domain&&e.domainMid!==void 0&&(e.domain=[e.domainMin??0,e.domainMax??1]),e},bx=function(t){return(!g(this,zi)||g(this,pl)!==t)&&(D(this,zi,pw()),D(this,pl,t)),g(this,zi)},Yg=function(t,e=!1){const r=g(this,Te).scale;if(!r||r.type=="null")return;const i={scale:r,props:M(this,K,FA).call(this,t),previousDomain:r.domain(),domainWasInitialized:M(this,K,Ix).call(this)};if(e){const s=Pw(r,i.props);return{...i,domainConfig:s,targetDomain:s.domain}}return i},Jg=function(t,e){g(this,Te).withDomainNotificationsSuppressed(()=>{e(t.scale,t.props)})},qg=function(t){const{scale:e,previousDomain:r,domainWasInitialized:i}=t;if(g(this,Qt).captureInitialDomain(e,i)){M(this,K,ga).call(this,"domain");return}const s=e.domain(),o=g(this,_t).getDomainChangeAction(r,s);o==="restore"?g(this,Te).withDomainNotificationsSuppressed(()=>{e.domain(r)}):o==="animate"?M(this,K,wx).call(this)?(g(this,Te).withDomainNotificationsSuppressed(()=>{e.domain(r)}),this.zoomTo(s,500)):M(this,K,ga).call(this,"domain"):o==="notify"&&M(this,K,ga).call(this,"domain")};function f0(...n){for(const t of n)if(t!==void 0)return t}class kR{constructor(t){S(this,IA);S(this,bn,new Set);this.channel=t}get scaleResolution(){const t=g(this,bn).values().next().value;return t==null?void 0:t.view.getScaleResolution(this.channel)}registerMember(t){return M(this,IA,xx).call(this,t),()=>this.removeMember(t)&&g(this,bn).size===0}removeMember(t){const e=g(this,bn).delete(t);return e&&r0(this,"axisProps"),e}getAxisProps(){return kf(this,"axisProps",()=>{const t=Array.from(g(this,bn)).map(e=>{const r=e.view.mark.encoding[e.channel];return"axis"in r&&r.axis});return t.length>0&&t.some(e=>e===null)?null:Mf(t.filter(e=>e!==void 0),"axis",["title"])})}getTitle(){const t=o=>{var l,c;const a=OQ(o.view,o.channel);if(!vt(a))return{member:o,axisTitle:"axis"in a?(l=a.axis)==null?void 0:l.title:void 0,explicitTitle:f0("axis"in a?(c=a.axis)==null?void 0:c.title:void 0,a.title),implicitTitle:f0(Mn(a)?a.field:void 0,xs(a)?a.expr:void 0)}},e=Array.from(g(this,bn)).map(t),r=e.map(o=>o.axisTitle).find(o=>o!==void 0);if(r!==void 0)return r;const i=e.filter(o=>{var a;if(Mh(o.member.channel)&&!o.explicitTitle){const l=ci(o.member.channel);return((a=e.find(c=>c.member.view==o.member.view&&c.member.channel==l))==null?void 0:a.explicitTitle)===void 0}return!0}),s=new Set(i.map(o=>f0(o.explicitTitle,o.implicitTitle)).filter(ye));return s.size?[...s].join(", "):null}}bn=new WeakMap,IA=new WeakSet,xx=function(t){const{view:e}=t,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! Channel: ${this.channel}, existing views: [${Array.from(g(this,bn)).map(i=>i.view.getPathString()).join(", ")}], new view: ${e.getPathString()}.`);g(this,bn).add(t),r0(this,"axisProps")};function Yw(n,t,{spacing:e,devicePixelRatio:r,offset:i,reverse:s}={}){e=e||0,i=i||0;let o=0,a=0;for(const d of n)o+=Nf(d.px)+(A0(d)?0:e),a+=Nf(d.grow);o-=e;const l=Math.max(0,t-o),c=r!==void 0?d=>Math.round(d*r)/r:d=>d,u=[],f=[],h=d=>{const p=u.length;if(!p)return;const C=(d?e:0)*(s?-1:1);A-=C;for(let m=0;m<p;m++)f.push({location:A+(m+1)/(p+1)*C,size:0});A+=C,u.length=0};let A=s?Math.max(t,o):0+i;if(n.length==1&&A0(n[0]))return[{location:A,size:0}];for(let d=0;d<n.length;d++){const p=n[d];if(A0(p))u.push(p);else{h(f.length>0);const C=Nf(p.px)+(a?Nf(p.grow)/a*l:0);s&&(A-=C),f.push({location:c(A),size:c(C)}),s?A-=e:A+=C+e}}return A+=s?e:-e,h(!1),f}function FR(n){let t=0,e=0;for(const r of n)t=Math.max(t,r.px??0),e=Math.max(e,r.grow??0);return{px:t,grow:e}}const Qg=class Qg{constructor(t,e){S(this,ml);this.width=t,this.height=e}addPadding(t){return M(this,ml,Kg).call(this,t.width,t.height)}subtractPadding(t){return M(this,ml,Kg).call(this,-t.width,-t.height)}isGrowing(){return!!(this.width.grow||this.height.grow)}};ml=new WeakSet,Kg=function(t,e){return new Qg({px:(this.width.px??0)+t,grow:this.width.grow},{px:(this.height.px??0)+e,grow:this.height.grow})};let br=Qg;const Qc=Object.freeze({px:0,grow:0}),Jw=new br(Qc,Qc);function A0(n){return!n.px&&!n.grow}function Nf(n){return n||0}function MR(n){return n&&(ut(n.px)||ut(n.grow))}function qw(n){if(d0(n))throw new Error("parseSizeDef does not accept step-based sizes.");if(MR(n))return n;if(ut(n))return{px:n,grow:0};if(n==="container")return{px:0,grow:1};if(!n)return{px:0,grow:1};throw new Error(`Invalid sizeDef: ${n}`)}class it{constructor(t,e,r,i){this.top=t||0,this.right=e||0,this.bottom=r||0,this.left=i||0}get width(){return this.left+this.right}get height(){return this.top+this.bottom}expand(t){return t<=0?this:new it(this.top+t,this.right+t,this.bottom+t,this.left+t)}add(t){return new it(this.top+t.top,this.right+t.right,this.bottom+t.bottom,this.left+t.left)}subtract(t){return new it(this.top-t.top,this.right-t.right,this.bottom-t.bottom,this.left-t.left)}union(t){return new it(Math.max(this.top,t.top),Math.max(this.right,t.right),Math.max(this.bottom,t.bottom),Math.max(this.left,t.left))}getHorizontal(){return new it(0,this.right,0,this.left)}getVertical(){return new it(this.top,0,this.bottom,0)}get horizontalTotal(){return this.left+this.right}get verticalTotal(){return this.top+this.bottom}static createFromConfig(t){return typeof t=="number"?this.createUniformPadding(t):t?this.createFromRecord(t):h0}static createFromRecord(t){return new it(t.top,t.right,t.bottom,t.left)}static zero(){return h0}static createUniformPadding(t){return new it(t,t,t,t)}}const h0=it.createUniformPadding(0);Object.freeze(h0);function Dc(n,t){return!t||/^(data:|([A-Za-z]+:)?\/\/)/.test(n)||n.startsWith("/")?n:(t.endsWith("/")||(t+="/"),t+n)}function RR(n){if(!n)return n;if(/[?#]/.test(n))throw new Error(`Invalid base URL: ${n} - cannot contain query or hash.`);return n.endsWith("/")?n:n+"/"}const $t="VISIT_SKIP",xr="VISIT_STOP",Kw=n=>n;class jw{constructor(t,e,r,i,s,o={}){S(this,Dt);S(this,Mo);S(this,Ro,{});S(this,No,{});S(this,To,{});S(this,Cl);S(this,yl);S(this,Po,!1);W(this,"opacityFunction",Kw);S(this,Lo,[]);S(this,Oo,"none");W(this,"facetCoords",new vn([],JSON.stringify));var a;if(!t)throw new Error("View spec must be defined!");if(this.context=e,this.layoutParent=r,this.dataParent=i,D(this,Mo,s),this.spec=t,this.resolutions={scale:{},axis:{}},Cw(this),this.options={blockEncodingInheritance:!1,...o},this.flowHandle=void 0,this.needsAxes={x:!1,y:!1},this.paramMediator=new JQ(()=>{var l;return(l=this.dataParent)==null?void 0:l.paramMediator}),t.params)for(const l of t.params)this.paramMediator.registerParam(l);if(!((a=this.layoutParent)!=null&&a.options.layeredChildren)){const l=c=>this.paramMediator.findMediatorForParam(c)?void 0:this.paramMediator.allocateSetter(c,0);D(this,yl,l("height")),D(this,Cl,l("width"))}}get name(){return this.spec.name??g(this,Mo)}get explicitName(){return this.spec.name}get defaultName(){return g(this,Mo)}get coords(){return this.facetCoords.values().next().value}getPadding(){return this._cache("size/padding",()=>it.createFromConfig(this.spec.padding))}getOverhang(){return it.zero()}isScrollable(){return this.spec.viewportWidth!=null||this.spec.viewportHeight!=null}getSize(){return this._cache("size/size",()=>this.isConfiguredVisible()?new br(M(this,Dt,$l).call(this,"width"),M(this,Dt,$l).call(this,"height")):Jw)}getViewportSize(){if(!this.isScrollable())return this.getSize();if(!this.isConfiguredVisible())return Jw;const t=this.getSize();return new br(M(this,Dt,$l).call(this,"viewportWidth")??t.width,M(this,Dt,$l).call(this,"viewportHeight")??t.height)}registerStepSizeInvalidation(){M(this,Dt,jg).call(this,"width","x"),M(this,Dt,jg).call(this,"height","y")}isConfiguredVisible(){return this.context.isViewConfiguredVisible(this)}isVisibleInSpec(){return this.spec.visible??!0}isVisible(){return this.getLayoutAncestors().every(t=>t.isConfiguredVisible())}isDomainInert(){if(this.spec.domainInert)return!0;const t=this.dataParent;return t?t.isDomainInert():!1}getDataInitializationState(){return g(this,Oo)}_setDataInitializationState(t){D(this,Oo,t)}isDataInitialized(){return g(this,Oo)==="ready"}getEffectiveOpacity(){var t;return this.opacityFunction(((t=this.layoutParent)==null?void 0:t.getEffectiveOpacity())??1)}getPathString(){return this.getLayoutAncestors().map(t=>t.name).reverse().join("/")}getLayoutAncestors(){return M(this,Dt,Wg).call(this,"layoutParent")}getDataAncestors(){return M(this,Dt,Wg).call(this,"dataParent")}handleBroadcast(t){for(const e of g(this,Ro)[t.type]||[])e(t)}_addBroadcastHandler(t,e){let r=g(this,Ro)[t];r||(r=[],g(this,Ro)[t]=r),r.push(e)}handleInteractionEvent(t,e,r){const i=r?g(this,No):g(this,To);for(const s of i[e.type]||[])s(t,e)}addInteractionEventListener(t,e,r){const i=r?g(this,No):g(this,To);let s=i[t];s||(s=[],i[t]=s),s.push(e)}removeInteractionEventListener(t,e,r){const i=r?g(this,No):g(this,To);let s=i==null?void 0:i[t];if(s){const o=s.indexOf(e);o>=0&&s.splice(o,1)}}visit(t){try{const e=t(this);if(t.postOrder&&t.postOrder(this),e!==xr)return e}catch(e){throw e.view=this,e}}getDescendants(){const t=[];return this.visit(e=>{t.push(e)}),t}dispose(){for(const e of g(this,Lo))e();g(this,Lo).length=0;const t=this.flowHandle;t!=null&&t.collector&&(this.context.dataFlow.pruneCollectorBranch(t.collector),this.context.dataFlow.removeCollector(t.collector)),t!=null&&t.dataSource&&t.dataSource.view===this&&!t.dataSource.identifier&&this.context.dataFlow.removeDataSource(t.dataSource),this.context.dataFlow.loadingStatusRegistry.delete(this),this.flowHandle=void 0}registerDisposer(t){g(this,Lo).push(t)}disposeSubtree(){const t=()=>{};t.postOrder=e=>{e.dispose()},this.visit(t)}configureViewOpacity(){(!this.opacityFunction||this.opacityFunction===Kw)&&(this.opacityFunction=TR(this))}onBeforeRender(){g(this,Po)||D(this,Po,!0)}hasRendered(){return g(this,Po)}render(t,e,r={}){var i,s;r.firstFacet&&this.facetCoords.clear(),this.facetCoords.set(r.facetId,r.clipRect?e.intersect(r.clipRect):e),(i=g(this,Cl))==null||i.call(this,e.width),(s=g(this,yl))==null||s.call(this,e.height)}getEncoding(){const t=this.dataParent&&!this.options.blockEncodingInheritance?this.dataParent.getEncoding():{},e=this.spec.encoding||{},r={...t,...e};for(const[i,s]of Object.entries(r))s===null&&delete r[i];return r}getFacetAccessor(t){if(this.layoutParent)return this.layoutParent.getFacetAccessor(this)}getFacetFields(t){var r;const e=this.getEncoding().sample;return Mn(e)?[e.field]:(r=this.layoutParent)==null?void 0:r.getFacetFields(this)}getSampleFacetTexture(){}getScaleResolution(t){const e=ci(t);return this.getDataAncestors().map(r=>r.resolutions.scale[e]).find(r=>r)}getAxisResolution(t){const e=ci(t);return this.getDataAncestors().map(r=>r.resolutions.axis[e]).find(r=>r)}getConfiguredResolution(t,e){var r,i;return(i=(r=this.spec.resolve)==null?void 0:r[e])==null?void 0:i[t]}getConfiguredOrDefaultResolution(t,e){return this.getConfiguredResolution(t,e)??this.getConfiguredResolution("default",e)??this.getDefaultResolution(t,e)}getDefaultResolution(t,e){return"independent"}getBaseUrl(){return Ii(()=>{var t;return(t=this.dataParent)==null?void 0:t.getBaseUrl()},RR(this.spec.baseUrl))}isPickingSupported(){return!0}getTitleText(){const t=this.spec.title;if(t)return ye(t)?t:Ze(t.text)?this.paramMediator.evaluateAndGet(t.text.expr):t.text}_cache(t,e){return kf(this,t,e)}_invalidateCacheByPrefix(t,e="self"){switch(e){case"self":Ec(this,t);break;case"ancestors":for(const r of this.getLayoutAncestors())Ec(r,t);break;case"progeny":this.visit(r=>Ec(r,t));break}}invalidateSizeCache(){Ec(this,"size"),this._invalidateCacheByPrefix("size","ancestors")}propagateInteractionEvent(t){}}Mo=new WeakMap,Ro=new WeakMap,No=new WeakMap,To=new WeakMap,Cl=new WeakMap,yl=new WeakMap,Po=new WeakMap,Lo=new WeakMap,Oo=new WeakMap,Dt=new WeakSet,$l=function(t){var s;let e=this.spec[t];const r=d0(e),i=t=="viewportWidth"||t=="viewportHeight";if(r){if(i)throw new Ln(`Cannot use step-based size with "${t}"!`,this);const o=e.step,a=(s=this.getScaleResolution(t=="width"?"x":"y"))==null?void 0:s.getScale();if(a){let l=0;if(Pn(a.type))l=a.domain().length;else if(["locus","index"].includes(a.type)){const u=a.domain();l=Qu(u)-u[0]}else throw new Ln(`Cannot use step-based size with "${a.type}" scale!`,this);const c=a;return l=Jd(l,c.paddingInner(),c.paddingOuter()),{px:l*o,grow:0}}else throw new Ln(`Cannot use step-based size with "${t}"!`,this)}else return(e&&qw(e))??(i?void 0:{px:0,grow:1})},jg=function(t,e){const r=this.spec[t];if(!d0(r))return;const i=this.getScaleResolution(e);if(!i)throw new Ln("Cannot use 'step' size without a scale!",this);const s=()=>this.invalidateSizeCache();i.addEventListener("domain",s),this.registerDisposer(()=>i.removeEventListener("domain",s))},Wg=function(t){const e=[];let r=this;do e.push(r),r=r[t];while(r);return e};function NR(n){return"unitsPerPixel"in n}function TR(n){const t="opacity"in n.spec?n.spec.opacity:void 0;if(t!==void 0){if(ut(t))return e=>e*t;if(NR(t)){const e=s=>{var a;const o=(a=n.getScaleResolution(s))==null?void 0:a.getScale();if(["linear","index","locus"].includes(o==null?void 0:o.type))return o},r=t.channel?e(t.channel):e("x")??e("y");if(!r)throw new Ln("Cannot find a resolved quantitative scale for dynamic opacity!",n);const i=Od().domain(t.unitsPerPixel).range(t.values).clamp(!0);return s=>{const a=Ca(r.domain())/1e3;return i(a)*s}}else if(Ze(t)){const e=n.paramMediator.createExpression(t.expr);return e.addListener(()=>n.context.animator.requestRender()),r=>e(null)*r}}return e=>e}const d0=n=>!!(n!=null&&n.step);function PR(n){return LR(n==null?void 0:n.search,"search")}function LR(n,t){if(!n)return;const e=Array.isArray(n)?n:[n];if(e.length===0)throw new Error("The "+t+" channel array must not be empty.");const r=[];for(const i of e){if(!i||typeof i!="object"||!("field"in i))throw new Error("The "+t+" channel must be a field definition or an array of field definitions.");const s=i.field;if(typeof s!="string")throw new Error("The "+t+" channel field definition must include a string field name.");r.push(s)}return r}const OR={point:cM,rect:nM,rule:AM,link:yM,text:BM};class dt extends jw{constructor(e,r,i,s,o,a){super(e,r,i,s,o,a);S(this,EA);S(this,wl);S(this,Il,!1);S(this,Uo,null);this.spec=e;const l=OR[this.getMarkType()];if(l)this.mark=new l(this);else throw new Error(`No such mark: ${this.getMarkType()}`);this.resolve(),D(this,wl,this.paramMediator.allocateSetter("zoomLevel",1));for(const c of["x","y"]){const u=this.getScaleResolution(c);if(u){const f=()=>{g(this,wl).call(this,Math.sqrt(this.getZoomLevel()))};u.addEventListener("domain",f),this.registerDisposer(()=>u.removeEventListener("domain",f))}}this.needsAxes={x:!0,y:!0},M(this,EA,Bx).call(this)}render(e,r,i={}){super.render(e,r,i),this.isConfiguredVisible()&&(e.pushView(this,r),e.renderMark(this.mark,i),e.popView(this))}getMarkType(){return typeof this.spec.mark=="object"?this.spec.mark.type:this.spec.mark}getEncoding(){const e=super.getEncoding(),r=this.mark.getSupportedChannels();for(const i of Object.keys(e))i!=="key"&&(r.includes(i)||delete e[i]);return e}resolve(e){if(!e){this.resolve("scale"),this.resolve("axis");return}const r=this.mark.encoding;for(const[i,s]of Object.entries(r)){if(!s||Array.isArray(s))continue;let o;if(Tt(s))o=s;else if(kh(s)){const c=s.condition;if(!Array.isArray(c)&&Tt(c))o=c;else continue}else continue;const a=ci(o.resolutionChannel??i);if(!Lu(a)||e=="axis"&&!$a(a))continue;let l=this;for(;(l.getConfiguredOrDefaultResolution(a,e)=="forced"||l.dataParent&&["shared","excluded","forced"].includes(l.dataParent.getConfiguredOrDefaultResolution(a,e)))&&l.getConfiguredOrDefaultResolution(a,e)!="excluded";)l=l.dataParent;if(e=="axis"&&$a(i)&&Fh(a)){l.resolutions[e][a]||(l.resolutions[e][a]=new kR(a));const c=l.resolutions[e][a],u=c.registerMember({view:this,channel:i,channelDef:o});this.registerDisposer(()=>{u()&&l.resolutions[e][a]===c&&delete l.resolutions[e][a]})}else if(e=="scale"&&Lu(i)){if(!l.resolutions[e][a]){const h=new DR(a);l.resolutions[e][a]=h;const A=d=>{var p;(p=this.context.glHelper)==null||p.createRangeTexture(d.scaleResolution,!0)};h.addEventListener("range",A),h.addEventListener("domain",A),this.registerDisposer(()=>{h.removeEventListener("range",A),h.removeEventListener("domain",A)})}const c=!this.isDomainInert(),u=l.resolutions[e][a],f=u.registerMember({view:this,channel:i,channelDef:o,contributesToDomain:c});this.registerDisposer(()=>{f()&&l.resolutions[e][a]===u&&delete l.resolutions[e][a]})}}}dispose(){super.dispose(),this.mark.dispose()}getDataAccessor(e){var i;const r=this.mark.encoders;if(r)return(i=r[e])==null?void 0:i.dataAccessor}getSearchAccessors(){if(!g(this,Uo)){const e=PR(this.getEncoding())??[];D(this,Uo,e.map(r=>fe(r)))}return g(this,Uo)}getFacetAccessor(e){const r=this.getDataAccessor("sample");return r||super.getFacetAccessor(this)}getCollector(){var e;return(e=this.flowHandle)==null?void 0:e.collector}registerDomainSubscriptions(){if(g(this,Il)||this.isDomainInert())return;const e=this.getCollector();if(!e)return;const r=this.mark.encoders;if(!r)throw new Error("Encoders are not initialized!");D(this,Il,!0);const i=new Map;for(const s of Object.values(r)){if(!s)continue;const o=s.accessors??[];if(o.length!==0)for(const a of o){if(!n1(a)||a.channelDef.domainInert)continue;const l=this.getScaleResolution(a.scaleChannel);if(!l)throw new Error("Missing scale resolution for channel: "+a.scaleChannel);let c=i.get(l);c||(c=new Set,i.set(l,c)),c.add(a)}}for(const[s,o]of i){if(o.size===0)continue;const a=s.registerCollectorSubscriptions(e,o);this.registerDisposer(a)}}getZoomLevel(){const e=r=>{var i;return((i=this.getScaleResolution(r))==null?void 0:i.getZoomLevel())??1};return ai.map(e).reduce((r,i)=>r*i,1)}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0),e.target=this,!e.stopped&&this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,r){return e=="x"?"shared":"independent"}}wl=new WeakMap,Il=new WeakMap,Uo=new WeakMap,EA=new WeakSet,Bx=function(){for(const[e,r]of this.paramMediator.paramConfigs){if(!("select"in r))continue;const i=Ou(r.select),s=i.on,o=i.clear;if(Uu(i)){let l=0;const c=this.paramMediator.getSetter(e),u=()=>{var d;const A=this.context.getCurrentHover();return((d=A==null?void 0:A.mark)==null?void 0:d.unitView)===this?A.datum:null},f=s.filter?Xm(s.filter):()=>!0,h=(A,d)=>{if(!f(d.proxiedMouseEvent))return;const p=u(),C=p?p[Nt]:0;let m;if(i.toggle)if(d.mouseEvent.shiftKey){if(p){const b=this.paramMediator.getValue(e);m=VQ(b,{toggle:[p]})}}else m=Th(p?[p]:null);else C!=l&&(l=C,m=Nh(p));m!==void 0&&c(m)};if(this.addInteractionEventListener(["mouseover","pointerover"].includes(s.type)?"mousemove":s.type,h),o){const A=o.filter?Xm(o.filter):()=>!0,d=(p,C)=>{if(!A(C.proxiedMouseEvent))return;l=0;const m=i.toggle?Th():Nh(null);c(m)};this.addInteractionEventListener(o.type,d)}}}};function UR(n){const t=new Set;n.visit(e=>{for(const r of Object.values(e.resolutions.scale)){const i=r.name;if(i&&t.has(i))throw new Error(`The same scale name "${i}" occurs in multiple scale resolutions!`);t.add(i)}})}function GR(n){for(const t of ai){const e=n.getScaleResolution(t);e&&!e.name&&e.isZoomable()&&(e.name=`${t}_at_root`)}}function g0(n,t=()=>!0){return Promise.allSettled(n).then(e=>{if(t())for(const r of e)"value"in r?r.value.finalizeGraphicsInitialization():"reason"in r&&console.error(r.reason)})}async function zR(n,t,e){const r=n.import;if(!("url"in r))throw new Error("Not an url import: "+JSON.stringify(r));const i=Ii(t,r.url);let s;try{const o=await fetch(i);if(!o.ok)throw new Error(`${o.status} ${o.statusText}`);s=await o.json()}catch(o){throw new Error(`Could not load imported view spec: ${i}. Reason: ${o.message}`)}if(e.isViewSpec(s))return s.baseUrl=Ii(Qw(r.url),s.baseUrl),s;throw new Error(`The imported spec "${i}" is not a view spec: ${JSON.stringify(n)}`)}function HR(n){const t=n.getSize(),e=n.getPadding(),r=(i,s)=>i.grow>0?void 0:i.px+s;return{width:r(t.width,e.horizontalTotal),height:r(t.height,e.verticalTotal)}}function*p0(n,t=[]){for(const[e,r]of n.entries())if(r instanceof Map)for(const i of p0(r,[...t,e]))yield i;else yield[[...t,e],r]}const Ww=2147483647,VR=Xw([Ww]);function Xw(n){let t=0;for(let e=0,r=n.length;e<r;e++)t=Math.max(t,n[e]);return Math.floor(Math.log2(t)/4)+1}function _R(n){const t=Xw(n);let e=Array.from({length:n.length},(s,o)=>o),r=new Array(n.length);const i=new Array(16);for(let s=0;s<t;s++){i.fill(0);const o=s*4,a=Math.pow(16,s),l=c=>{const u=n[e[c]];return s>=VR?u>Ww?Math.floor(u/a)%16:0:u>>o&15};for(let c=0;c<n.length;c++)i[l(c)]++;for(let c=1;c<16;c++)i[c]+=i[c-1];for(let c=n.length-1;c>=0;c--)r[--i[l(c)]]=e[c];[e,r]=[r,e]}return e}const Tf="|",m0="\\";class YR{constructor(){S(this,zo);S(this,Hi,null);S(this,Yn,null);S(this,Go,!1)}invalidate(){D(this,Hi,null),D(this,Yn,null),D(this,Go,!1)}findDatum(t,e,r){if(!t||t.length===0)return;const i=t.join(", ");if(t.length!==e.length)throw new Error(`Key tuple length ${e.length} does not match fields [${i}]`);(!g(this,Hi)||!M(this,zo,Sx).call(this,t))&&M(this,zo,vx).call(this,t,r);const s=g(this,Yn);let o;if(g(this,Go)){let a="";for(let l=0;l<e.length;l++){l>0&&(a+=Tf);const c=s[l],u=Pf(e[l],c);a+=Zw(u)}o=a}else{const a=s[0];o=Pf(e[0],a)}return g(this,Hi).get(o)}}Hi=new WeakMap,Yn=new WeakMap,Go=new WeakMap,zo=new WeakSet,vx=function(t,e){const r=t.map(a=>fe(a)),i=new Map,s=t.join(", "),o=t.length!==1;if(o)for(const a of e)for(let l=0,c=a.length;l<c;l++){const u=a[l];let f="";for(let A=0;A<r.length;A++){A>0&&(f+=Tf);const d=t[A],p=Pf(r[A](u),d);f+=Zw(p)}if(i.get(f)!==void 0){const A=r.map(d=>d(u));throw new Error(`Duplicate key detected for fields [${s}]: ${JSON.stringify(A)}`)}i.set(f,u)}else{const a=r[0],l=t[0];for(const c of e)for(let u=0,f=c.length;u<f;u++){const h=c[u],A=Pf(a(h),l);if(i.get(A)!==void 0)throw new Error(`Duplicate key detected for fields [${s}]: ${JSON.stringify(A)}`);i.set(A,h)}}D(this,Hi,i),D(this,Yn,[...t]),D(this,Go,o)},Sx=function(t){if(!g(this,Yn)||g(this,Yn).length!==t.length)return!1;for(let e=0;e<t.length;e++)if(g(this,Yn)[e]!==t[e])return!1;return!0};function Pf(n,t){if(n===void 0)throw new Error(`Key field "${t}" is undefined. Ensure all key fields are present in the data.`);if(n===null)throw new Error(`Key field "${t}" is null. Ensure all key fields are present in the data.`);if(typeof n!="string"&&typeof n!="number"&&typeof n!="boolean")throw new Error(`Key field "${t}" must be a scalar value (string, number, or boolean).`);return n}function JR(n){if(!(n.indexOf(m0)!==-1||n.indexOf(Tf)!==-1))return n;let e="";for(let r=0;r<n.length;r++){const i=n[r];(i===m0||i===Tf)&&(e+=m0),e+=i}return e}function Zw(n){return typeof n=="string"?JR(n):String(n)}class $w extends Sh{constructor(e){var r;super();S(this,$e);S(this,Jn,[]);S(this,El,fe(Nt));S(this,Pr,[]);S(this,Ho,new YR);S(this,Vi);S(this,Vo);S(this,Lr,new qR);this.params=e??{type:"collect"},this.observers=new Set,this.facetBatches=new vn([],JSON.stringify),D(this,Vo,jR((r=this.params)==null?void 0:r.sort)),M(this,$e,Xg).call(this)}get behavior(){return vh}get label(){return"collect"}reset(){super.reset(),M(this,$e,Xg).call(this)}handle(e){g(this,Jn).push(e)}beginBatch(e){g(this,Ho).invalidate(),FQ(e)&&(D(this,Jn,[]),this.facetBatches.set(ft(e.facetId),g(this,Jn)))}complete(){var e;if(D(this,Jn,[]),(e=this.params.groupby)!=null&&e.length){if(this.facetBatches.size>1)throw new Error("TODO: Support faceted data!");const r=this.facetBatches.get(void 0),i=this.params.groupby.map(o=>fe(o)),s=i.length>1?Au(r,...i):KR(r,i[0]);this.facetBatches.clear();for(const[o,a]of p0(s))this.facetBatches.set(o,a)}if(g(this,Vo))for(const r of this.facetBatches.values())r.sort(g(this,Vo));M(this,$e,Qx).call(this),M(this,$e,Zg).call(this),super.complete(),M(this,$e,$g).call(this);for(const r of this.observers)r(this)}observe(e){return this.observers.add(e),()=>{this.observers.delete(e)}}repropagate(){for(const e of this.children)e.reset();M(this,$e,Zg).call(this);for(const e of this.children)e.complete();M(this,$e,$g).call(this)}getDomain(e,r,i){return g(this,Lr).getDomain(e,()=>{const s=Rf(r);if(i.constant)s.extend(i({}));else if(this.completed)for(const o of this.facetBatches.values())for(let a=0,l=o.length;a<l;a++)s.extend(i(o[a]));return s})}subscribeDomainChanges(e,r){return g(this,Lr).subscribe(e,r)}getData(){switch(M(this,$e,MA).call(this),this.facetBatches.size){case 0:return[];case 1:return[...this.facetBatches.values()][0];default:{const e=this.facetBatches;return{[Symbol.iterator]:function*(){for(const i of e.values())yield*i}}}}}visitData(e){M(this,$e,MA).call(this);for(const r of this.facetBatches.values())for(let i=0;i<r.length;i++)e(r[i])}getItemCount(){let e=0;for(const r of this.facetBatches.values())e+=r.length;return e}findDatumByUniqueId(e){if(!g(this,Pr).length)return;const r=$r(l=>l.start).right,i=g(this,El),s=$r(l=>i(o(l))).left,o=l=>{const c=r(g(this,Vi),l),u=g(this,Vi)[c-1];return!u||l>=u.stop?void 0:this.facetBatches.get(u.facetId)[l-u.start]},a=s(g(this,Pr),e);if(a>=0){const l=o(g(this,Pr)[a]);if(l&&i(l)===e)return l}}findDatumByKey(e,r){return M(this,$e,MA).call(this),g(this,Ho).findDatum(e,r,this.facetBatches.values())}}Jn=new WeakMap,El=new WeakMap,Pr=new WeakMap,Ho=new WeakMap,Vi=new WeakMap,Vo=new WeakMap,Lr=new WeakMap,$e=new WeakSet,Xg=function(){D(this,Jn,[]),D(this,Pr,[]),g(this,Ho).invalidate(),this.facetBatches.clear(),this.facetBatches.set(void 0,g(this,Jn))},Zg=function(){if(this.children.length)for(const[e,r]of this.facetBatches.entries()){if(e){const i={type:"facet",facetId:e};for(const s of this.children)s.beginBatch(i)}for(let i=0,s=r.length;i<s;i++)this._propagate(r[i])}},MA=function(){if(!this.completed)throw new Error("Data propagation is not completed! No data are available.")},$g=function(){g(this,Lr).hasCachedDomains()&&g(this,Lr).clear(),g(this,Lr).notify()},Qx=function(){var o;D(this,Vi,[]);const e=(o=this.facetBatches.values().next().value)==null?void 0:o[0];if(e==null||!(Nt in e))return;let r=0;const i=[],s=g(this,El);for(const[a,l]of this.facetBatches){g(this,Vi).push({start:r,stop:r+l.length,facetId:a}),r+=l.length;for(let c=0,u=l.length;c<u;c++)i.push(s(l[c]))}D(this,Pr,_R(i))};class qR{constructor(){S(this,_i,new Map);S(this,qn,new Map)}hasCachedDomains(){return g(this,_i).size>0}clear(){g(this,_i).clear()}getDomain(t,e){const r=g(this,_i).get(t);if(r)return r;{const i=e();return g(this,_i).set(t,i),i}}subscribe(t,e){let r=g(this,qn).get(t);return r||(r=new Set,g(this,qn).set(t,r)),r.add(e),()=>{const i=g(this,qn).get(t);i&&(i.delete(e),i.size===0&&g(this,qn).delete(t))}}notify(){if(g(this,qn).size===0)return;const t=new Set;for(const e of g(this,qn).values())for(const r of e)t.add(r);for(const e of t)e()}}_i=new WeakMap,qn=new WeakMap;function KR(n,t){const e=new Map;for(let r=0,i=n.length;r<i;r++){const s=n[r],o=t(s);let a=e.get(o);a||(a=[],e.set(o,a)),a.push(s)}return e}function jR(n){if(n!=null&&n.field){const t=ft(n.field);if(t.length==1&&!t[0].includes(".")){const e=ft(n.order)[0]??"ascending",r=JSON.stringify(t[0]);return new Function("a","b",`return a[${r}] ${e==="ascending"?"-":"+"} b[${r}];`)}return pp(n.field,n.order)}}class Lf{constructor(){this.ids=[],this.values=[],this.length=0}clear(){this.length=0}push(t,e){let r=this.length++;for(;r>0;){const i=r-1>>1,s=this.values[i];if(e>=s)break;this.ids[r]=this.ids[i],this.values[r]=s,r=i}this.ids[r]=t,this.values[r]=e}pop(){if(this.length===0)return;const t=this.ids,e=this.values,r=t[0],i=--this.length;if(i>0){const s=t[i],o=e[i];let a=0;const l=i>>1;for(;a<l;){const c=(a<<1)+1,u=c+1,f=c+(+(u<i)&+(e[u]<e[c]));if(e[f]>=o)break;t[a]=t[f],e[a]=e[f],a=f}t[a]=s,e[a]=o}return r}peek(){return this.length>0?this.ids[0]:void 0}peekValue(){return this.length>0?this.values[0]:void 0}shrink(){this.ids.length=this.values.length=this.length}}class WR extends Le{get behavior(){return un}constructor(t){super(t),this.params=t,this.startAccessor=fe(t.start),this.endAccessor=fe(t.end),this.chromAccessor=t.chrom?fe(t.chrom):e=>{},this.weightAccessor=t.weight?fe(t.weight):e=>1,this.as={coverage:t.as??"coverage",start:t.asStart??t.start,end:t.asEnd??t.end,chrom:t.asChrom??t.chrom},this.createSegment=new Function("start","end","coverage","chrom","return {"+Object.entries(this.as).filter(([e,r])=>r).map(([e,r])=>`${JSON.stringify(r)}: ${e}`).join(", ")+"};"),this.ends=new Lf}reset(){super.reset(),this.initialize()}initialize(){const t=this.as.coverage,e=this.as.end,r=this.as.chrom,i=this.startAccessor,s=this.endAccessor,o=this.chromAccessor,a=this.weightAccessor;let l,c,u,f=0,h=NaN;const A=this.ends;A.clear();const d=m=>{this._propagate(m),l=null},p=(m,w,b)=>{if(m==w)return;let y=!1;l&&(l[t]===b?(l[e]=w,y=!0):l[t]!=0&&d(l)),y||(l=this.createSegment(m,w,b,u))},C=()=>{let m=0;for(;(m=A.peekValue())!==void 0;)p(h,m,f),h=m,f-=A.pop();h=NaN,l&&d(l)};this.handle=m=>{const w=i(m);let b=0;for(;(b=A.peekValue())!==void 0&&b<w;)p(h,b,f),h=b,f-=A.pop();if(r){let x=o(m);x!==c&&(C(),u=x,c=u)}isNaN(h)||p(h,w,f),h=w;const y=a(m);f+=y,A.push(y,s(m))},this.complete=()=>{C(),super.complete()},this.beginBatch=m=>{C(),c=null,super.beginBatch(m)}}}function XR(n,t,e=s=>+s,r=0,i=n.length){const s=new Lf,o=i-r;let a;for(a=0;a<t&&a<o;a++)s.push(a,e(n[r+a]));for(;a<o;a++){const u=e(n[r+a]);u>=s.peekValue()&&(s.push(a,u),s.pop())}const l=[];let c;for(;(c=s.pop())!==void 0;)l.push(n[r+c]);return l.reverse()}class ZR{constructor(t,e=-1/0,r=1/0){this.maxSize=t,this.lowerLimit=e,this.upperLimit=r;const i=this.maxSize*2+1;this.lowerLimits=new Float64Array(i),this.upperLimits=new Float64Array(i),this.lowerChildren=new Int32Array(i),this.upperChildren=new Int32Array(i),this.reset()}reset(){this.lowerLimits.fill(0),this.upperLimits.fill(0),this.lowerChildren.fill(0),this.upperChildren.fill(0),this.n=1,this.lowerLimits[0]=this.lowerLimit,this.upperLimits[0]=this.upperLimit}_findSlot(t,e,r=0){if(t>=this.lowerLimits[r]&&e<=this.upperLimits[r]){const i=this.lowerChildren[r];if(i){const s=this._findSlot(t,e,i);return s>=0?s:this._findSlot(t,e,this.upperChildren[r])}else return r}else return-1}reserve(t,e){if(e-t<=0)throw new Error("Cannot reserve an empty or negative-size slot!");if(this.n+1>this.lowerLimits.length)return!1;const r=this._findSlot(t,e);if(r<0)return!1;const i=this.n++,s=this.n++;return this.lowerLimits[i]=this.lowerLimits[r],this.upperLimits[i]=t,this.lowerLimits[s]=e,this.upperLimits[s]=this.upperLimits[r],this.lowerChildren[r]=i,this.upperChildren[r]=s,!0}}class $R extends Le{get behavior(){return vh}constructor(t,e){if(super(t),this.params=t,this._data=[],this.channel=t.channel??"x",!["x","y"].includes(this.channel))throw new Error("Invalid channel: "+this.channel);this.startPosAccessor=fe(this.params.pos),this.endPosAccessor=fe(this.params.pos2??this.params.pos),this.startPosBisector=$r(this.startPosAccessor),this.endPosBisector=$r(this.endPosAccessor),this.scoreAccessor=fe(this.params.score),this.widthAccessor=fe(this.params.width),this.laneAccessor=this.params.lane?fe(this.params.lane):i=>0,this.padding=this.params.padding??0,this.reservationMaps=new Map,this.resolution=e.getScaleResolution(this.channel);const r=()=>this._filterAndPropagate();this.schedule=()=>e.context.animator.requestTransition(r),this.resolution.addEventListener("domain",i=>this.schedule()),e._addBroadcastHandler("layoutComputed",()=>this.schedule())}complete(){const t=this.startPosAccessor;this._data.sort((e,r)=>t(e)-t(r));for(const e of new Set(this._data.map(this.laneAccessor)))this.reservationMaps.set(e,new ZR(200));this.schedule(),super.complete()}_filterAndPropagate(){super.reset();const t=this.resolution.getScale(),e=this.resolution.getAxisLength();if(!e)return;for(const o of this.reservationMaps.values())o.reset();const r=t.domain(),s=XR(this._data,70,this.scoreAccessor,this.endPosBisector.left(this._data,r[0]),this.startPosBisector.right(this._data,r[1]));for(const o of s){let a=t(this.startPosAccessor(o))*e,l=t(this.endPosAccessor(o))*e;const c=l-a,u=this.widthAccessor(o)+this.padding*2;let f=(a+l)/2;const h=Math.max(0,(c-u)/2);if(h>0){const A=Math.max(0,u/2-f);f+=Math.min(A,h);const d=Math.max(0,u/2+f-e);f-=Math.min(d,h)}if(this.reservationMaps.get(this.laneAccessor(o)).reserve(f-u/2,f+u/2))if(this.params.asMidpoint){const A=Object.assign({},o);A[this.params.asMidpoint]=t.invert(f/e),this._propagate(A)}else this._propagate(o)}super.complete()}reset(){super.reset(),this._data=[],this.groups=new Map}handle(t){this._data.push(t)}}class e5 extends Le{constructor(t,e){super(t,e),this.params=t,this.predicate=void 0}initialize(){let t="";if(t5(this.params))t=this.params.expr;else if(n5(this.params)){const e=this.paramMediator.findValue(this.params.param);if(!e)throw new Error(`Cannot initialize filter transform. Selection parameter "${this.params.param}" not found!`);t=_Q(this.params,e)}else throw new Error("Invalid filter params: "+JSON.stringify(this.params));this.predicate=this.paramMediator.createExpression(t),this.predicate.addListener(()=>this.repropagate())}handle(t){this.predicate(t)&&this._propagate(t)}}function t5(n){return"expr"in n}function n5(n){return"param"in n}class r5 extends Le{get behavior(){return un}constructor(t){super(t),this.params=t;const e=t.index;if(t.fields){const r=ft(t.fields).map(s=>fe(s)),i=ft(t.as||t.fields);if(r.length!==i.length)throw new Error(`Lengths of "fields" (${r.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{const o=r.map((l,c)=>l(s)??[]),a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<r.length;u++)c[i[u]]=l<o[u].length?o[u][l]:null;e&&(c[e]=l),this._propagate(c)}}}else this.handle=r=>{for(let i=0;i<r.length;i++){const s=Object.assign({},r[i]);e&&(s[e]=i),this._propagate(s)}}}}const i5=48;function*s5(n,t=","){const e=t.charCodeAt(0);let r=0;for(let i=0;i<n.length;i++){const s=n.charCodeAt(i);s==e?(yield r,r=0):r=r*10+s-i5}yield r}class o5 extends Le{get behavior(){return un}constructor(t){super(t);const e=fe(t.exons??"exons"),r=fe(t.start??"start"),[i,s]=t.as||["exonStart","exonEnd"];this.handle=o=>{let a=r(o),l=a,c=!0;const u=e(o);for(const f of s5(u)){if(c)l=a+f;else{a=l+f;const h=Object.assign({},o);h[i]=l,h[s]=a,this._propagate(h)}c=!c}}}}class a5 extends Le{get behavior(){return un}constructor(t){super(t);const e=ft(t.field).map(s=>fe(s)),r=ft(t.separator),i=ft(t.as||t.field);if(e.length!==r.length||e.length!==i.length)throw new Error(`Lengths of "separator" (${r.length}), "fields" (${e.length}), and "as" (${i.length}) do not match!`);this.handle=s=>{if(e.some(l=>!l(s)))return;const o=e.map((l,c)=>l(s).split(r[c]));c5(o,s);const a=o[0].length;for(let l=0;l<a;l++){const c=Object.assign({},s);for(let u=0;u<e.length;u++)c[i[u]]=o[u][l];this._propagate(c)}}}}function c5(n,t){const e=n.map(r=>r.length);if(!e.every(r=>r==e[0]))throw new Error("Mismatching number of elements in the fields to be split: "+JSON.stringify(t))}class l5 extends Le{get behavior(){return lr}constructor(t,e){super(t,e),this.params=t,this.as=t.as,this.fn=void 0}initialize(){this.fn=this.paramMediator.createExpression(this.params.expr),this.fn.addListener(()=>this.repropagate())}handle(t){t[this.as]=this.fn(t),this._propagate(t)}}class e2 extends Le{get behavior(){return lr}constructor(t,e){t={channel:"x",...t},super(t),this.params=t;const r=t.channel;if(!["x","y"].includes(r))throw new Error("Invalid channel: "+r);const i=e.getScaleResolution(r).getScale(),s="genome"in i?i.genome():void 0;if(!s)throw new Error("LinearizeGenomicCoordinate transform requires a locus scale!");const o=fe(t.chrom),a=ft(t.pos).map(p=>fe(p)),l=ft(t.as);if(a.length!=l.length)throw new Error('The number of "pos" and "as" elements must be equal!');const c=ft(t.offset);let u;if(c.length==0)u=new Array(a.length).fill(0);else if(c.length==1)u=new Array(a.length).fill(c[0]);else if(c.length==a.length)u=c;else throw new Error(`Invalid "offset" parameter: ${JSON.stringify(t.offset)}!`);const f=new Function("datum","chromOffset","posAccessors",l.map((p,C)=>`datum[${JSON.stringify(p)}] = chromOffset + +posAccessors[${C}](datum) - ${u[C]};`).join(`
655
+ `));let h,A=0;const d=p=>{if(p!==h){if(A=s.cumulativeChromPositions.get(p),A===void 0)return;h=p}return A};this.handle=p=>{const C=o(p),m=d(C);if(m===void 0)throw new Error(`Unknown chromosome/contig "${C}" in datum: ${JSON.stringify(p)}`);f(p,m,a),this._propagate(p)}}}const t2={chars:JSON.parse('[{"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}]'),common:{lineHeight:50.400000000000006,base:41.454,scaleW:512,scaleH:512,pages:1,packed:0,alphaChnl:0,redChnl:0,greenChnl:0,blueChnl:0}};class u5 extends Le{get behavior(){return lr}constructor(t,e){super(t),this.params=t;const r=gd(t2),i=fe(t.field),s=t.as;let o=0;if(Ze(t.fontSize)){const a=e.paramMediator.createExpression(t.fontSize.expr);o=a(),a.addListener(()=>{o=a(),this.repropagate()})}else o=t.fontSize;this.handle=a=>{const l=i(a);l!==void 0?a[s]=r.measureWidth(l,o):a[s]=0,this._propagate(a)}}}const f5=65536;class A5 extends Le{get behavior(){return lr}constructor(t){super(t),this.params=t}reset(){super.reset(),this.initialize()}initialize(){const t=this.params,e=t.as||"lane",r=ut(t.spacing)?t.spacing:1,i=fe(t.start),s=fe(t.end);if(!t.preference!=!t.preferredOrder)throw new Error('Must specify both "preference" and "preferredOrder"');if(t.preference){const o=new Float64Array(f5),a=fe(t.preference),l=t.preferredOrder;let c=1/0;this.handle=u=>{const f=i(u);f<c&&o.fill(-1/0),c=f;const h=l.indexOf(a(u));let A=-1;if(h>=0&&o[h]<f)A=h;else{const d=i(u);for(A=0;A<o.length&&!(o[A]<d);A++);if(A>=o.length)throw new Error("Out of lanes!")}o[A]=s(u)+r,u[e]=A,this._propagate(u)}}else{const o=new Lf,a=new Lf;let l=-1/0,c=0;this.handle=u=>{const f=i(u);for(;o.length&&(o.peekValue()<=f||f<l);){const A=o.pop();a.push(A,A)}l=f;let h=a.pop();h===void 0&&(h=c++),u[e]=h,this._propagate(u),o.push(h,s(u)+r)}}}}class h5 extends Le{get behavior(){return un}constructor(t){if(super(t),this.params=t,t.as&&t.as.length!=t.fields.length)throw new Error('"fields" and "as" have unequal lengths!');const e=t.fields.map(i=>fe(i)),r=t.as?t.as:e.map(ke);this.handle=i=>{const s={};for(let o=0;o<e.length;o++)s[r[o]]=e[o](i);this._propagate(s)}}}class d5 extends Le{get behavior(){return lr}constructor(t){super(t),this.params=t;const e=new RegExp(t.regex),r=typeof t.as=="string"?[t.as]:t.as,i=fe(t.field);this.handle=s=>{const o=i(s);if(ye(o)){const a=o.match(e);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 l=0;l<r.length;l++)s[r[l]]=a[l+1]}else if(t.skipInvalidInput)for(let l=0;l<r.length;l++)s[r[l]]=void 0;else throw new Error(`"${o}" does not match the given regex: ${e.toString()}`)}else if(!t.skipInvalidInput)throw new Error(`Trying to match a non-string field. Encountered type: ${typeof o}, field content: "${o}".`);this._propagate(s)}}}class g5 extends Le{get behavior(){return un}constructor(t){super(t),this.params=t;const e=ft(t.columnRegex).map(h=>new RegExp(h));for(const h of e)if(RegExp("|"+h.source).exec("").length-1!=1)throw new Error(`Regex ${h.toString()} must have exactly one capturing group!`);const r=ft(t.asValue);if(e.length!=r.length)throw new Error('Lengths of "columnRegex" and "as" are not equal!');const i=t.skipRegex?new RegExp(t.skipRegex):void 0,s=t.asKey||"sample";let o,a,l;const c=h=>{var C;const A=Object.keys(h);for(const m of e)if(!A.some(w=>m.test(w)))throw new Error(`No columns matching the regex ${m.toString()} found in the data!`);const d=new Map;for(const[m,w]of e.entries())for(const b of A){const y=(C=w.exec(b))==null?void 0:C[1];if(y!==void 0){let x=d.get(y);x||(x=[],d.set(y,x)),x[m]=b}}o=[...d.entries()],a=A.filter(m=>!e.some(w=>w.test(m))&&!(i&&i.test(m)));const p=[...a.map(m=>JSON.stringify(m)+": datum["+JSON.stringify(m)+"]"),JSON.stringify(s)+": sampleId",...r.map((m,w)=>JSON.stringify(m)+`: datum[attrs[${w}]]`)];l=new Function("datum","sampleId","attrs",`return {
656
+ `+p.join(`,
676
657
  `)+`
677
- };`)},u=h=>{o||c(h);for(let A=0;A<o.length;A++){const[d,g]=o[A],p=l(h,d,g);this._propagate(p)}},f=h=>{c(h),u(h),this.handle=u};this.handle=f,this.beginBatch=h=>{Lp(h)&&(this.handle=f),super.beginBatch(h)}}}class T5 extends Ue{get behavior(){return tr}constructor(t){super(t),this.params=t,this.buffer=[]}reset(){this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,e=t.as||["y0","y1"],r=t.sort?sg(t.sort.field,t.sort.order):void 0,i=t.field?ue(t.field):()=>1,s=t.groupby.map(u=>ue(u)),o=Nx(this.buffer,u=>s.map(f=>f(u)).join()).map(u=>u[1]);let a=u=>!0;if(t.baseField){const u=ue(t.baseField);a=f=>u(f)!==null}let l,c;switch(t.offset){case"normalize":l=(u,f)=>u/f,c=(u,f)=>jo(u,f);break;case"center":l=(u,f)=>u-f/2,c=(u,f)=>jo(u,f);break;case"information":{const u=Math.log2(t.cardinality??4);l=(f,h)=>f/h,c=(f,h)=>{const d=jo(f,w=>+!a(w)),g=jo(f,h),p=g-d;let C=0;for(let w=0;w<f.length;w++){const b=f[w];if(a(b)){const y=h(b)/p;C-=y*Math.log2(y)}}return p/(u-(C+0))*(p/g)}}break;default:l=(u,f)=>u,c=(u,f)=>1}for(const u of o){r&&u.sort(r);const f=c(u,i);let h=0;for(const A of u){const d=h+i(A);a(A)&&(A[e[0]]=l(h,f),A[e[1]]=l(d,f),this._propagate(A),h=d)}}super.complete()}}class P5 extends Ue{get behavior(){return cn}constructor(t){super(t),this.params=t;const e=ue(t.field??"sequence"),[r,i]=t.as??["pos","sequence"];this.handle=s=>{const o=Object.assign({},s,{[i]:"",[r]:0}),a=e(s);for(let l=0;l<a.length;l++){const c=Object.assign({},o);c[r]=l,c[i]=a.charAt(l),this._propagate(c)}}}}const G2={count:n=>n.length,valid:Sx,sum:jo,min:rA,max:nA,mean:Gx,median:zx,variance:Dx};class L5 extends Ue{get behavior(){return cn}constructor(t){if(super(t),this.params=t,this.buffer=[],this.ops=[],this.as=[],t.fields){if(t.fields.length!=t.ops.length)throw new Error("Fields and ops must have the same length!");if(t.as&&t.as.length!=t.ops.length)throw new Error('If "as" is defined, "fields" and "as" must have the same length!');t.fields.forEach((e,r)=>{const i=ue(e),s=G2[t.ops[r]];this.ops.push(o=>s(o,i)),this.as.push(t.as?t.as[r]:`${t.ops[r]}_${t.fields[r]}`)})}else this.ops.push(e=>G2.count(e)),this.as.push("count")}reset(){super.reset(),this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,e=t==null?void 0:t.groupby;if((e==null?void 0:e.length)>0){const r=e.map(s=>ue(s)),i=bl(this.buffer,...r);for(const[s,o]of pd(i)){const a={};for(let l=0;l<e.length;l++)a[e[l]]=s[l];this.ops.forEach((l,c)=>{a[this.as[c]]=l(o)}),this._propagate(a)}}else{const r={};this.ops.forEach((i,s)=>{r[this.as[s]]=i(this.buffer)}),this._propagate(r)}super.complete()}}const O5={aggregate:L5,collect:L2,coverage:g5,filterScoredLabels:C5,filter:y5,flatten:E5,flattenCompressedExons:B5,flattenDelimited:v5,flattenSequence:P5,formula:S5,identifier:FA,linearizeGenomicCoordinate:O2,measureText:D5,pileup:F5,project:M5,regexExtract:R5,regexFold:N5,sample:r2,stack:T5};function U5(n,t){const e=O5[n.type];if(e)return new e(n,t);throw new Error("Unknown transform: "+n.type)}function z2(n,t=[]){if(!_2(n)&&!Y2(n))return;const e={...n.format};if(e.type??(e.type=Y2(n)&&z5(t)),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(n));return e}function G5(n){var t;return((t=CA(n))==null?void 0:t.responseType)??"text"}function z5(n){var t;if(Array.isArray(n)&&(n=n[0]),n)return(t=n.match(/\.(csv|tsv|json)/))==null?void 0:t[1]}const H2=n=>typeof n!="object"?H5:Y5,H5=n=>({data:n}),Y5=n=>n;function Y2(n){return"url"in n}class fi extends kA{constructor(e){super();j(this,"view");this.view=e}get identifier(){}setLoadingStatus(e,r){this.view.context.setDataLoadingStatus(this.view,e,r)}get paramMediator(){return this.view.paramMediator}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}repropagate(){this.load()}}function _2(n){return"values"in n}class _5 extends fi{constructor(e,r){var i;super(r);D(this,Pc);if(this.params=e,typeof e.values=="string"&&!((i=e==null?void 0:e.format)!=null&&i.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}get label(){return"inlineSource"}isTrivial(){const e=this.params.values,r=Array.isArray(e)?e[0]:e;return!!(r&&Object.keys(r).length==0&&r.constructor===Object)}updateDynamicData(e){P(this,Pc,Y0).call(this,e)}loadSynchronously(){P(this,Pc,Y0).call(this,this.params.values)}async load(){this.loadSynchronously()}}Pc=new WeakSet,Y0=function(e){let r=[],i=s=>s;if(Array.isArray(e))e.length>0&&(r=e,i=H2(e[0]));else if(typeof e=="object")r=[e];else if(typeof e=="string")r=yA(e,z2(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 s of r)this._propagate(i(s));this.complete()};function V5(n){return"url"in n}class J5 extends fi{constructor(e,r){super(r);D(this,Qf);this.params=Zl(r.paramMediator,e,()=>this.load()),this.baseUrl=r==null?void 0:r.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return"urlSource"}async load(){const e=Tt(this.params.url),r=typeof e=="object"&&"urlsFromFile"in e?await P(this,Qf,sb).call(this,e):(Array.isArray(e)?e:[e]).map(l=>ui(this.baseUrl,l)),i=z2(this.params,r),s=G5(i.type);if(r.length===0||!r[0]){this.reset(),this.complete();return}const o=async l=>{try{const c=await fetch(l);if(!c.ok)throw new Error(`${c.status} ${c.statusText}`);return typeof c[s]=="function"?c[s]():c.text()}catch(c){throw new Error(`Could not load data: ${l}. Reason: ${c.message}`)}},a=(l,c)=>{try{const u=yA(l,i);this.beginBatch({type:"file",url:c});for(const f of u)this._propagate(f)}catch(u){throw new Error(`Cannot parse: ${c}: ${u.message}`)}};this.setLoadingStatus("loading"),this.reset();try{await Promise.all(r.map(l=>o(l).then(a))),this.setLoadingStatus("complete")}catch(l){this.setLoadingStatus("error",l.message)}this.complete()}}Qf=new WeakSet,sb=async function(e){const r=ui(this.baseUrl,e.urlsFromFile),i=await fetch(r);if(!i.ok)throw new Error(`Cannot load "${r}": ${i.status} ${i.statusText}`);const s=await i.text();return yA(s,{type:e.type??"tsv"}).map(a=>typeof a=="string"?a:a.url).map(a=>ui(r,a))};function q5(n){return"sequence"in n}class K5 extends fi{constructor(t,e){if(super(e),this.sequence=Zl(e.paramMediator,t.sequence,()=>this.loadSynchronously()),!("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!")}get label(){return"sequenceSource"}loadSynchronously(){const t=Tt(this.sequence.as)??"data",e=Tt(this.sequence.start)??0,r=Tt(this.sequence.step)??1,i=Tt(this.sequence.stop);this.reset(),this.beginBatch({type:"file"});for(let s=e;s<i;s+=r)this._propagate({[t]:s});this.complete()}async load(){this.loadSynchronously()}}class md extends fi{constructor(e,r){super(e);j(this,"initializedPromise",Promise.resolve());if(r){if(r!=="x"&&r!=="y")throw new Error(`Invalid channel specified for the lazy data source: ${r}. Must be either "x" or "y"`)}else throw new Error('No channel has been specified for the lazy data source. Must be either "x" or "y".');if(this.channel=r,this.scaleResolution=this.view.getScaleResolution(r),!this.scaleResolution){const s=[`The lazy data source cannot find a resolved scale for channel "${r}".`];throw this.view instanceof Qt||s.push('Make sure the view has a "shared" scale resolution as it is not a unit view.'),new Error(s.join(" "))}const i=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",i),this.view.context.addBroadcastListener("layoutComputed",i)}get genome(){const e=this.scaleResolution.getScale();if("genome"in e){const r=e.genome();if(r)return r}throw new Error("No genome has been defined!")}onDomainChanged(e,r){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this.reset(),this.beginBatch({type:"file"});for(const r of e)for(const i of r)this._propagate(i);this.complete(),v2(this.view)}}class j5 extends md{constructor(e,r){const i={...e};super(r,i.channel);j(this,"ticks",[]);this.params=e}get label(){return"axisTickSource"}async load(){this.ticks=null,this.onDomainChanged()}onDomainChanged(){const e=this.scaleResolution.getScale(),r=this.scaleResolution.getAxisLength(),i=this.params.axis,s=c=>25+60*Np(100,700,c),o=ft(i.tickCount)?i.tickCount:Math.round(r/s(r)),a=u2(e,o,i.tickMinStep),l=i.values?f2(e,i.values,a):h6(e,a);if(this.ticks==null||!Ul(l,this.ticks)){this.ticks=l;const c=g6(e,o,i.format);this.publishData([l.map(u=>({value:u,label:c(u)}))])}}}class W5 extends md{constructor(t,e){super(e,t.channel)}get label(){return"axisGenomeSource"}async load(){this.publishData([this.genome.chromosomes])}}class Xa extends md{constructor(){super(...arguments);D(this,lo,new AbortController);D(this,uo,[0,0]);D(this,fo,[0,0]);D(this,Lc,0);j(this,"params")}setupDebouncing(e){const r=()=>Tt(e.debounce),i=e.debounceMode;if(i=="domain")this.onDomainChanged=zl(this.onDomainChanged.bind(this),r,!1);else if(i=="window")this.loadInterval=zl(this.loadInterval.bind(this),r,!1);else throw new Error("Invalid debounceMode: "+i)}onDomainChanged(e){var i;F(this,fo,e);const r=Tt((i=this.params)==null?void 0:i.windowSize)??-1;e[1]-e[0]>r||this.callIfWindowsChanged(e,r,async s=>{await this.initializedPromise,this.loadInterval(s)})}reloadLastDomain(){const e=m(this,fo);F(this,fo,[0,0]),F(this,uo,[0,0]),this.onDomainChanged(e)}async loadInterval(e){}async discretizeAndLoad(e,r){m(this,lo).abort(),this.setLoadingStatus("loading"),F(this,lo,new AbortController);const i=m(this,lo).signal,s=this.genome.continuousToDiscreteChromosomeIntervals(e);try{const o=await Promise.all(s.map(async a=>r(a,i)));if(!i.aborted)return this.setLoadingStatus("complete"),o}catch(o){if(!i.aborted)throw this.setLoadingStatus("error",o.message),o}}callIfWindowsChanged(e,r,i){const s=[Math.max(Math.floor(e[0]/r)*r,0),Math.min(Math.ceil(e[1]/r)*r,this.genome.totalSize)],o=m(this,uo);(r!==m(this,Lc)||s[0]<o[0]||s[1]>o[1])&&(F(this,uo,s),F(this,Lc,r),i(s))}}lo=new WeakMap,uo=new WeakMap,fo=new WeakMap,Lc=new WeakMap;class X5 extends Xa{constructor(t,e){const r={channel:"x",windowSize:7e3,debounce:200,debounceMode:"window",...t};if(super(e,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>RN),Promise.resolve().then(()=>tc)]).then(([{IndexedFasta:s},{RemoteFile:o}])=>{const a=l=>new o(ja(l,this.view.getBaseUrl()));this.fasta=new s({fasta:a(this.params.url),fai:a(this.params.indexUrl??this.params.url+".fai")}),i()})})}get label(){return"bigWigSource"}async loadInterval(t){const e=await this.discretizeAndLoad(t,async(r,i)=>this.fasta.getSequence(r.chrom,r.startPos,r.endPos,{signal:i}).then(s=>{if(s!=null)return{chrom:r.chrom,start:r.startPos,sequence:s};console.log(`No sequence found for interval ${r.chrom}:${r.startPos}-${r.endPos}`)}));this.publishData([e.filter(r=>r!==void 0)])}}class Z5 extends Xa{constructor(e,r){const i={pixelsPerBin:2,channel:"x",debounce:200,debounceMode:"window",...e},s=Zl(r.paramMediator,i,o=>{o.includes("url")?P(this,Oc,_0).call(this).then(()=>this.reloadLastDomain()):o.includes("pixelsPerBin")&&this.reloadLastDomain()});super(r,s.channel);D(this,Oc);D(this,Ao,[]);D(this,ho);if(this.params=s,!this.params.url)throw new Error("No URL provided for BigWigSource");this.setupDebouncing(this.params),P(this,Oc,_0).call(this)}get label(){return"bigWigSource"}async onDomainChanged(e){await this.initializedPromise;const r=this.scaleResolution.getAxisLength()||700,i=$5(e,r,m(this,Ao)),s=Math.max(i*r,5e3);this.callIfWindowsChanged(e,s,o=>this.loadInterval(o,i))}async loadInterval(e,r){const i=.5/r/Tt(this.params.pixelsPerBin),s=await this.discretizeAndLoad(e,(o,a)=>m(this,ho).getFeatures(o.chrom,o.startPos,o.endPos,{scale:i,signal:a}).then(l=>l.map(c=>({chrom:o.chrom,start:c.start,end:c.end,score:c.score}))));s&&this.publishData(s)}}Ao=new WeakMap,ho=new WeakMap,Oc=new WeakSet,_0=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>Xw),Promise.resolve().then(()=>tc)]).then(([{BigWig:i},{RemoteFile:s}])=>{F(this,ho,new i({filehandle:new s(ja(Tt(this.params.url),this.view.getBaseUrl()))})),this.setLoadingStatus("loading"),m(this,ho).getHeader().then(o=>{F(this,Ao,o.zoomLevels.map(a=>a.reductionLevel).reverse()),m(this,Ao).push(1),this.setLoadingStatus("complete"),e()}).catch(o=>{this.load(),this.setLoadingStatus("error",`${Tt(this.params.url)}: ${o.message}`),r(o)})})}),this.initializedPromise};function $5(n,t,e){const r=(n[1]-n[0])/t;return e.find(i=>i<r)??e.at(-1)}class eM extends Xa{constructor(e,r){const i={channel:"x",windowSize:1e6,debounce:200,debounceMode:"window",...e},s=Zl(r.paramMediator,i,o=>{o.includes("url")?P(this,Uc,V0).call(this).then(()=>this.reloadLastDomain()):o.includes("windowSize")&&this.reloadLastDomain()});super(r,s.channel);D(this,Uc);j(this,"parser");j(this,"bbi");j(this,"parseLine");if(this.params=s,!this.params.url)throw new Error("No URL provided for BigBedSource");this.setupDebouncing(this.params),P(this,Uc,V0).call(this)}get label(){return"bigBedSource"}async loadInterval(e){const r=await this.discretizeAndLoad(e,async(i,s)=>this.bbi.getFeatures(i.chrom,i.startPos,i.endPos,{signal:s}).then(o=>o.map(a=>this.parseLine(i.chrom,a))));r&&this.publishData(r)}}Uc=new WeakSet,V0=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>U9),Promise.resolve().then(()=>Xw),Promise.resolve().then(()=>tc)]).then(([i,{BigBed:s},{RemoteFile:o}])=>{const a=i.default;this.bbi=new s({filehandle:new o(ja(Tt(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus("loading"),this.bbi.getHeader().then(async l=>{this.parser=new a({autoSql:l.autoSql});try{const c=tM(this.parser);this.parseLine=(u,f)=>c(u,f.start,f.end,f.rest)}catch{this.parseLine=(u,f)=>this.parser.parseLine(`${u} ${f.start} ${f.end} ${f.rest}`)}this.setLoadingStatus("complete"),e()}).catch(l=>{this.load(),this.setLoadingStatus("error",`${Tt(this.params.url)}: ${l.message}`),r(l)})})}),this.initializedPromise};function tM(n){const t=n.autoSql.fields.filter(w=>w.type).slice(3);let e=0,r="",i=0,s={};const o=" ",a=o.charCodeAt(0),l=48,c=45;function u(){let w=r.indexOf(o,e);w<0&&(w=i);const b=r.substring(e,w);return e=w+1,b}function f(){let w=0,b=r.charCodeAt(e),y=1;b===c&&(y=-1,e++,b=r.charCodeAt(e));do{if(b===a){e++;break}w=w*10+b-l,b=r.charCodeAt(++e)}while(e<i);return w*y}const h=t.map(w=>`${JSON.stringify(w.name)}: ${w.isNumeric?"0":"emptyString"}`),A=new Function(`
658
+ };`)},u=h=>{o||c(h);for(let A=0;A<o.length;A++){const[d,p]=o[A],C=l(h,d,p);this._propagate(C)}},f=h=>{c(h),u(h),this.handle=u};this.handle=f,this.beginBatch=h=>{Zm(h)&&(this.handle=f),super.beginBatch(h)}}}class p5 extends Le{get behavior(){return lr}constructor(t){super(t),this.params=t,this.buffer=[]}reset(){super.reset(),this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,e=t.as||["y0","y1"],r=t.sort?pp(t.sort.field,t.sort.order):void 0,i=t.field?fe(t.field):()=>1,s=t.groupby.map(u=>fe(u)),o=cv(this.buffer,u=>s.map(f=>f(u)).join()).map(u=>u[1]);let a=u=>!0;if(t.baseField){const u=fe(t.baseField);a=f=>u(f)!==null}let l,c;switch(t.offset){case"normalize":l=(u,f)=>u/f,c=(u,f)=>ka(u,f);break;case"center":l=(u,f)=>u-f/2,c=(u,f)=>ka(u,f);break;case"information":{const u=Math.log2(t.cardinality??4);l=(f,h)=>f/h,c=(f,h)=>{const d=ka(f,w=>+!a(w)),p=ka(f,h),C=p-d;let m=0;for(let w=0;w<f.length;w++){const b=f[w];if(a(b)){const y=h(b)/C;m-=y*Math.log2(y)}}return C/(u-(m+0))*(C/p)}}break;default:l=(u,f)=>u,c=(u,f)=>1}for(const u of o){r&&u.sort(r);const f=c(u,i);let h=0;for(const A of u){const d=h+i(A);a(A)&&(A[e[0]]=l(h,f),A[e[1]]=l(d,f),this._propagate(A),h=d)}}super.complete()}}class m5 extends Le{get behavior(){return un}constructor(t){super(t),this.params=t;const e=fe(t.field??"sequence"),[r,i]=t.as??["pos","sequence"];this.handle=s=>{const o=Object.assign({},s,{[i]:"",[r]:0}),a=e(s);for(let l=0;l<a.length;l++){const c=Object.assign({},o);c[r]=l,c[i]=a.charAt(l),this._propagate(c)}}}}const n2={count:n=>n.length,valid:nv,sum:ka,min:th,max:eh,mean:dv,median:gv,variance:rv};class C5 extends Le{get behavior(){return un}constructor(t){if(super(t),this.params=t,this.buffer=[],this.ops=[],this.as=[],t.fields){if(t.fields.length!=t.ops.length)throw new Error("Fields and ops must have the same length!");if(t.as&&t.as.length!=t.ops.length)throw new Error('If "as" is defined, "fields" and "as" must have the same length!');t.fields.forEach((e,r)=>{const i=fe(e),s=n2[t.ops[r]];this.ops.push(o=>s(o,i)),this.as.push(t.as?t.as[r]:`${t.ops[r]}_${t.fields[r]}`)})}else this.ops.push(e=>n2.count(e)),this.as.push("count")}reset(){super.reset(),this.buffer=[]}handle(t){this.buffer.push(t)}complete(){const t=this.params,e=t==null?void 0:t.groupby;if((e==null?void 0:e.length)>0){const r=e.map(s=>fe(s)),i=Au(this.buffer,...r);for(const[s,o]of p0(i)){const a={};for(let l=0;l<e.length;l++)a[e[l]]=s[l];this.ops.forEach((l,c)=>{a[this.as[c]]=l(o)}),this._propagate(a)}}else{const r={};this.ops.forEach((i,s)=>{r[this.as[s]]=i(this.buffer)}),this._propagate(r)}super.complete()}}const y5={aggregate:C5,collect:$w,coverage:WR,filterScoredLabels:$R,filter:e5,flatten:r5,flattenCompressedExons:o5,flattenDelimited:a5,flattenSequence:m5,formula:l5,identifier:Qh,linearizeGenomicCoordinate:e2,measureText:u5,pileup:A5,project:h5,regexExtract:d5,regexFold:g5,sample:xw,stack:p5};function w5(n,t){const e=y5[n.type];if(e)return new e(n,t);throw new Error("Unknown transform: "+n.type)}function r2(n,t=[]){if(!o2(n)&&!s2(n))return;const e={...n.format};if(e.type??(e.type=s2(n)&&E5(t)),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(n));return e}function I5(n){var t;return((t=ph(n))==null?void 0:t.responseType)??"text"}function E5(n){var t;if(Array.isArray(n)&&(n=n[0]),n)return(t=n.match(/\.(csv|tsv|json)/))==null?void 0:t[1]}const i2=n=>typeof n!="object"?b5:x5,b5=n=>({data:n}),x5=n=>n;function s2(n){return"url"in n}class Ei extends Sh{constructor(e){super();W(this,"view");this.view=e}get identifier(){}setLoadingStatus(e,r){this.view.context.dataFlow.loadingStatusRegistry.set(this.view,e,r)}get paramMediator(){return this.view.paramMediator}handle(e){throw new Error("Source does not handle incoming data!")}async load(){}repropagate(){this.load()}}function o2(n){return"values"in n}class B5 extends Ei{constructor(e,r){var i;super(r);S(this,bl);if(this.params=e,typeof e.values=="string"&&!((i=e==null?void 0:e.format)!=null&&i.type))throw new Error("Data format type (csv, dsv, ...) must be specified if a string is provided!")}get label(){return"inlineSource"}isTrivial(){const e=this.params.values,r=Array.isArray(e)?e[0]:e;return!!(r&&Object.keys(r).length==0&&r.constructor===Object)}updateDynamicData(e){M(this,bl,ep).call(this,e)}loadSynchronously(){M(this,bl,ep).call(this,this.params.values)}async load(){this.loadSynchronously()}}bl=new WeakSet,ep=function(e){let r=[],i=s=>s;if(Array.isArray(e))e.length>0&&(r=e,i=i2(e[0]));else if(typeof e=="object")r=[e];else if(typeof e=="string")r=mh(e,r2(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 s of r)this._propagate(i(s));this.complete()};function v5(n){return"url"in n}class S5 extends Ei{constructor(e,r){super(r);S(this,bA);this.params=zu(r.paramMediator,e,()=>this.load()),this.baseUrl=r==null?void 0:r.getBaseUrl()}get identifier(){return JSON.stringify({params:this.params,baseUrl:this.baseUrl})}get label(){return"urlSource"}async load(){const e=Pt(this.params.url),r=typeof e=="object"&&"urlsFromFile"in e?await M(this,bA,Dx).call(this,e):(Array.isArray(e)?e:[e]).map(l=>Ii(this.baseUrl,l)),i=r2(this.params,r),s=I5(i.type);if(r.length===0||!r[0]){this.reset(),this.complete();return}const o=async l=>{try{const c=await fetch(l);if(!c.ok)throw new Error(`${c.status} ${c.statusText}`);return typeof c[s]=="function"?c[s]():c.text()}catch(c){throw new Error(`Could not load data: ${l}. Reason: ${c.message}`)}},a=(l,c)=>{try{const u=mh(l,i);this.beginBatch({type:"file",url:c});for(const f of u)this._propagate(f)}catch(u){throw new Error(`Cannot parse: ${c}: ${u.message}`)}};this.setLoadingStatus("loading"),this.reset();try{await Promise.all(r.map(l=>o(l).then(a))),this.setLoadingStatus("complete")}catch(l){this.setLoadingStatus("error",l.message)}this.complete()}}bA=new WeakSet,Dx=async function(e){const r=Ii(this.baseUrl,e.urlsFromFile),i=await fetch(r);if(!i.ok)throw new Error(`Cannot load "${r}": ${i.status} ${i.statusText}`);const s=await i.text();return mh(s,{type:e.type??"tsv"}).map(a=>typeof a=="string"?a:a.url).map(a=>Ii(r,a))};function Q5(n){return"sequence"in n}class D5 extends Ei{constructor(t,e){if(super(e),this.sequence=zu(e.paramMediator,t.sequence,()=>this.loadSynchronously()),!("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!")}get label(){return"sequenceSource"}loadSynchronously(){const t=Pt(this.sequence.as)??"data",e=Pt(this.sequence.start)??0,r=Pt(this.sequence.step)??1,i=Pt(this.sequence.stop);this.reset(),this.beginBatch({type:"file"});for(let s=e;s<i;s+=r)this._propagate({[t]:s});this.complete()}async load(){this.loadSynchronously()}}class C0 extends Ei{constructor(e,r){super(e);W(this,"initializedPromise",Promise.resolve());W(this,"_lastLoadedDomain");if(r){if(r!=="x"&&r!=="y")throw new Error(`Invalid channel specified for the lazy data source: ${r}. Must be either "x" or "y"`)}else throw new Error('No channel has been specified for the lazy data source. Must be either "x" or "y".');if(this.channel=r,this.scaleResolution=this.view.getScaleResolution(r),!this.scaleResolution){const s=[`The lazy data source cannot find a resolved scale for channel "${r}".`];throw this.view instanceof dt||s.push('Make sure the view has a "shared" scale resolution as it is not a unit view.'),new Error(s.join(" "))}const i=()=>{this.view.isVisible()&&this.onDomainChanged(this.scaleResolution.getDomain(),this.scaleResolution.getComplexDomain())};this.scaleResolution.addEventListener("domain",i),this.view.context.addBroadcastListener("layoutComputed",i)}get genome(){const e=this.scaleResolution.getScale();if("genome"in e){const r=e.genome();if(r)return r}throw new Error("No genome has been defined!")}onDomainChanged(e,r){}requestRender(){this.view.context.animator.requestRender()}async load(){this.reset(),this.complete()}publishData(e){this._lastLoadedDomain=Array.from(this.scaleResolution.getDomain()),this.reset(),this.beginBatch({type:"file"});for(const r of e)for(const i of r)this._propagate(i);this.complete()}isDataReadyForDomain(e){const r=e[this.channel];if(!r||!this._lastLoadedDomain)return!1;const[i,s]=r[0]<=r[1]?r:[r[1],r[0]],[o,a]=this._lastLoadedDomain[0]<=this._lastLoadedDomain[1]?this._lastLoadedDomain:[this._lastLoadedDomain[1],this._lastLoadedDomain[0]];return i>=o&&s<=a}}class k5 extends C0{constructor(e,r){const i={...e};super(r,i.channel);W(this,"ticks",[]);this.params=e}get label(){return"axisTickSource"}async load(){this.ticks=null,this.onDomainChanged()}onDomainChanged(){const e=this.scaleResolution.getScale(),r=this.scaleResolution.getAxisLength(),i=this.params.axis,s=c=>25+60*jm(100,700,c),o=ut(i.tickCount)?i.tickCount:Math.round(r/s(r)),a=Fw(e,o,i.tickMinStep),l=i.values?Mw(e,i.values,a):UM(e,a);if(this.ticks==null||!Is(l,this.ticks)){this.ticks=l;const c=zM(e,o,i.format);this.publishData([l.map(u=>({value:u,label:c(u)}))])}}}class F5 extends C0{constructor(t,e){super(e,t.channel)}get label(){return"axisGenomeSource"}async load(){this.publishData([this.genome.chromosomes])}}class kc extends C0{constructor(){super(...arguments);S(this,_o,new AbortController);S(this,Yo,[0,0]);S(this,Jo,[0,0]);S(this,xl,0);W(this,"params")}setupDebouncing(e){const r=()=>Pt(e.debounce),i=e.debounceMode;if(i=="domain")this.onDomainChanged=Du(this.onDomainChanged.bind(this),r,!1);else if(i=="window")this.loadInterval=Du(this.loadInterval.bind(this),r,!1);else throw new Error("Invalid debounceMode: "+i)}onDomainChanged(e){var i;D(this,Jo,e);const r=Pt((i=this.params)==null?void 0:i.windowSize)??-1;e[1]-e[0]>r||this.callIfWindowsChanged(e,r,async s=>{await this.initializedPromise,this.loadInterval(s)})}reloadLastDomain(){const e=g(this,Jo);D(this,Jo,[0,0]),D(this,Yo,[0,0]),this._lastLoadedDomain=void 0,this.onDomainChanged(e)}async loadInterval(e){}publishData(e){const r=this._lastLoadedDomain;super.publishData(e),r&&(this._lastLoadedDomain=r)}async discretizeAndLoad(e,r){g(this,_o).abort(),this.setLoadingStatus("loading"),D(this,_o,new AbortController);const i=g(this,_o).signal,s=this.genome.continuousToDiscreteChromosomeIntervals(e);try{const o=await Promise.all(s.map(async a=>r(a,i)));if(!i.aborted)return this.setLoadingStatus("complete"),this._lastLoadedDomain=Array.from(e),o}catch(o){if(!i.aborted)throw this.setLoadingStatus("error",o.message),o}}callIfWindowsChanged(e,r,i){const s=[Math.max(Math.floor(e[0]/r)*r,0),Math.min(Math.ceil(e[1]/r)*r,this.genome.totalSize)],o=g(this,Yo);(r!==g(this,xl)||s[0]<o[0]||s[1]>o[1])&&(D(this,Yo,s),D(this,xl,r),i(s))}}_o=new WeakMap,Yo=new WeakMap,Jo=new WeakMap,xl=new WeakMap;class M5 extends kc{constructor(t,e){const r={channel:"x",windowSize:7e3,debounce:200,debounceMode:"window",...t};if(super(e,r.channel),this.params=r,!this.params.url)throw new Error("No URL provided for IndexedFastaSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(i=>{Promise.all([Promise.resolve().then(()=>FT),Promise.resolve().then(()=>Nc)]).then(([{IndexedFasta:s},{RemoteFile:o}])=>{const a=l=>new o(Dc(l,this.view.getBaseUrl()));this.fasta=new s({fasta:a(this.params.url),fai:a(this.params.indexUrl??this.params.url+".fai")}),i()})})}get label(){return"bigWigSource"}async loadInterval(t){const e=await this.discretizeAndLoad(t,async(r,i)=>this.fasta.getSequence(r.chrom,r.startPos,r.endPos,{signal:i}).then(s=>{if(s!=null)return{chrom:r.chrom,start:r.startPos,sequence:s};console.log(`No sequence found for interval ${r.chrom}:${r.startPos}-${r.endPos}`)}));this.publishData([e.filter(r=>r!==void 0)])}}class R5 extends kc{constructor(e,r){const i={pixelsPerBin:2,channel:"x",debounce:200,debounceMode:"window",...e},s=zu(r.paramMediator,i,o=>{o.includes("url")?M(this,Bl,tp).call(this).then(()=>this.reloadLastDomain()):o.includes("pixelsPerBin")&&this.reloadLastDomain()});super(r,s.channel);S(this,Bl);S(this,qo,[]);S(this,Ko);if(this.params=s,!this.params.url)throw new Error("No URL provided for BigWigSource");this.setupDebouncing(this.params),M(this,Bl,tp).call(this)}get label(){return"bigWigSource"}async onDomainChanged(e){await this.initializedPromise;const r=this.scaleResolution.getAxisLength()||700,i=N5(e,r,g(this,qo)),s=Math.max(i*r,5e3);this.callIfWindowsChanged(e,s,o=>this.loadInterval(o,i))}async loadInterval(e,r){const i=.5/r/Pt(this.params.pixelsPerBin),s=await this.discretizeAndLoad(e,(o,a)=>g(this,Ko).getFeatures(o.chrom,o.startPos,o.endPos,{scale:i,signal:a}).then(l=>l.map(c=>({chrom:o.chrom,start:c.start,end:c.end,score:c.score}))));s&&this.publishData(s)}}qo=new WeakMap,Ko=new WeakMap,Bl=new WeakSet,tp=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>mE),Promise.resolve().then(()=>Nc)]).then(([{BigWig:i},{RemoteFile:s}])=>{D(this,Ko,new i({filehandle:new s(Dc(Pt(this.params.url),this.view.getBaseUrl()))})),this.setLoadingStatus("loading"),g(this,Ko).getHeader().then(o=>{D(this,qo,o.zoomLevels.map(a=>a.reductionLevel).reverse()),g(this,qo).push(1),this.setLoadingStatus("complete"),e()}).catch(o=>{this.load(),this.setLoadingStatus("error",`${Pt(this.params.url)}: ${o.message}`),r(o)})})}),this.initializedPromise};function N5(n,t,e){const r=(n[1]-n[0])/t;return e.find(i=>i<r)??e.at(-1)}class T5 extends kc{constructor(e,r){const i={channel:"x",windowSize:1e6,debounce:200,debounceMode:"window",...e},s=zu(r.paramMediator,i,o=>{o.includes("url")?M(this,vl,np).call(this).then(()=>this.reloadLastDomain()):o.includes("windowSize")&&this.reloadLastDomain()});super(r,s.channel);S(this,vl);W(this,"parser");W(this,"bbi");W(this,"parseLine");if(this.params=s,!this.params.url)throw new Error("No URL provided for BigBedSource");this.setupDebouncing(this.params),M(this,vl,np).call(this)}get label(){return"bigBedSource"}async loadInterval(e){const r=await this.discretizeAndLoad(e,async(i,s)=>this.bbi.getFeatures(i.chrom,i.startPos,i.endPos,{signal:s}).then(o=>o.map(a=>this.parseLine(i.chrom,a))));r&&this.publishData(r)}}vl=new WeakSet,np=function(){return this.initializedPromise=new Promise((e,r)=>{Promise.all([Promise.resolve().then(()=>LP),Promise.resolve().then(()=>mE),Promise.resolve().then(()=>Nc)]).then(([i,{BigBed:s},{RemoteFile:o}])=>{const a=i.default;this.bbi=new s({filehandle:new o(Dc(Pt(this.params.url),this.view.getBaseUrl()))}),this.setLoadingStatus("loading"),this.bbi.getHeader().then(async l=>{this.parser=new a({autoSql:l.autoSql});try{const c=P5(this.parser);this.parseLine=(u,f)=>c(u,f.start,f.end,f.rest)}catch{this.parseLine=(u,f)=>this.parser.parseLine(`${u} ${f.start} ${f.end} ${f.rest}`)}this.setLoadingStatus("complete"),e()}).catch(l=>{this.load(),this.setLoadingStatus("error",`${Pt(this.params.url)}: ${l.message}`),r(l)})})}),this.initializedPromise};function P5(n){const t=n.autoSql.fields.filter(w=>w.type).slice(3);let e=0,r="",i=0,s={};const o=" ",a=o.charCodeAt(0),l=48,c=45;function u(){let w=r.indexOf(o,e);w<0&&(w=i);const b=r.substring(e,w);return e=w+1,b}function f(){let w=0,b=r.charCodeAt(e),y=1;b===c&&(y=-1,e++,b=r.charCodeAt(e));do{if(b===a){e++;break}w=w*10+b-l,b=r.charCodeAt(++e)}while(e<i);return w*y}const h=t.map(w=>`${JSON.stringify(w.name)}: ${w.isNumeric?"0":"emptyString"}`),A=new Function(`
678
659
  const emptyString = "";
679
660
  return function makeTemplate(chrom, chromStart, chromEnd) {
680
661
  return {
@@ -684,43 +665,43 @@ chrM 16299`};function t6(n){if(!(n in o2))throw new Error(`Unknown assembly: ${n
684
665
  ${h.join(`,
685
666
  `)}
686
667
  }
687
- };`)(),d=t.map(w=>{const b=w.type,y=JSON.stringify(w.name);if(["ubyte","int","uint"].includes(b))return`d[${y}] = parseInt();`;if(w.isNumeric)return`d[${y}] = Number(parseString());`;if(["char","string","lstring"].includes(b))return`d[${y}] = parseString();`;throw new Error("Unsupported type: "+b)}),g=nM(d,50).map((w,b)=>Function("parseInt","parseString",`return function parseFieldChunk${b}(d) {
668
+ };`)(),d=t.map(w=>{const b=w.type,y=JSON.stringify(w.name);if(["ubyte","int","uint"].includes(b))return`d[${y}] = parseInt();`;if(w.isNumeric)return`d[${y}] = Number(parseString());`;if(["char","string","lstring"].includes(b))return`d[${y}] = parseString();`;throw new Error("Unsupported type: "+b)}),p=L5(d,50).map((w,b)=>Function("parseInt","parseString",`return function parseFieldChunk${b}(d) {
688
669
  ${w.join(`
689
670
  `)}
690
- }`)(f,u));function p(w){r=w,i=w.length,e=0}function C(w,b,y,x){p(x),s=A(w,b,y);for(const B of g)B(s);return s}return C}function nM(n,t){return Array.from({length:Math.ceil(n.length/t)},(e,r)=>n.slice(r*t,r*t+t))}class rM extends Xa{constructor(e,r){const i={channel:"x",windowSize:2e4,debounce:200,debounceMode:"domain",...e};super(r,i.channel);D(this,Di);j(this,"chrPrefixFixer",e=>e);if(this.params=i,!this.params.url)throw new Error("No URL provided for BamSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(s=>{Promise.all([Promise.resolve().then(()=>r7),Promise.resolve().then(()=>tc)]).then(([{BamFile:o},{RemoteFile:a}])=>{const l=c=>new a(ja(c,this.view.getBaseUrl()));F(this,Di,new o({bamFilehandle:l(this.params.url),baiFilehandle:l(this.params.indexUrl??this.params.url+".bai")})),m(this,Di).getHeader().then(c=>{var h,A;const u=this.genome.hasChrPrefix(),f=(A=(h=m(this,Di).indexToChr)==null?void 0:h[0])==null?void 0:A.refName.startsWith("chr");u&&!f?this.chrPrefixFixer=d=>d.replace("chr",""):!u&&f&&(this.chrPrefixFixer=d=>"chr"+d),s()})})})}get label(){return"bamSource"}async loadInterval(e){const r=await this.discretizeAndLoad(e,async(i,s)=>m(this,Di).getRecordsForRange(this.chrPrefixFixer(i.chrom),i.startPos,i.endPos,{signal:s}).then(o=>o.map(a=>({chrom:i.chrom,start:a.start,end:a.end,name:a.name,cigar:a.CIGAR,mapq:a.mq,strand:a.strand===1?"+":"-"}))));r&&this.publishData(r)}}Di=new WeakMap;class V2 extends Xa{constructor(e,r){const i={channel:"x",windowSize:3e6,debounce:200,debounceMode:"domain",addChrPrefix:!1,...e};super(r,i.channel);D(this,go);if(this.params=i,!this.params.url)throw new Error("No URL provided for TabixSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(s=>{Promise.all([Promise.resolve().then(()=>h7),Promise.resolve().then(()=>tc)]).then(async([{TabixIndexedFile:o},{RemoteFile:a}])=>{const l=u=>new a(ja(u,this.view.getBaseUrl()));F(this,go,new o({filehandle:l(this.params.url),tbiFilehandle:l(this.params.indexUrl??this.params.url+".tbi"),renameRefSeqs:this.params.addChrPrefix===!0?u=>"chr"+u:this.params.addChrPrefix?u=>this.params.addChrPrefix+u:void 0}));const c=await m(this,go).getHeader();await this._handleHeader(c),s()})})}async loadInterval(e){await this.initializedPromise;const r=await this.discretizeAndLoad(e,async(i,s)=>{const o=[];return await m(this,go).getLines(i.chrom,i.startPos,i.endPos,{lineCallback:a=>{o.push(a)},signal:s}),this._parseFeatures(o)});r&&this.publishData(r)}async _handleHeader(e){}_parseFeatures(e){return[]}}go=new WeakMap;class iM extends V2{constructor(){super(...arguments);D(this,Gc)}get label(){return"gff3Source"}async _handleHeader(e){F(this,Gc,await Promise.resolve().then(()=>F7))}_parseFeatures(e){var i;return(i=m(this,Gc))==null?void 0:i.parseArraySync(e)}}Gc=new WeakMap;class sM extends V2{constructor(){super(...arguments);D(this,zc)}get label(){return"vcfSource"}async _handleHeader(e){const r=(await Promise.resolve().then(()=>O7)).default;F(this,zc,new r({header:e}))}_parseFeatures(e){return e.map(r=>{const i=m(this,zc).parseLine(r);return delete i.GENOTYPES,i.SAMPLES=i.SAMPLES(),i})}}zc=new WeakMap;function oM(n,t){if(_2(n))return new _5(n,t);if(V5(n))return new J5(n,t);if(q5(n))return new K5(n,t);if(aM(n))return pM(n.lazy,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function aM(n){return"lazy"in n}function cM(n){return(n==null?void 0:n.type)=="axisTicks"}function lM(n){return(n==null?void 0:n.type)=="axisGenome"}function uM(n){return(n==null?void 0:n.type)=="indexedFasta"}function fM(n){return(n==null?void 0:n.type)=="bigwig"}function AM(n){return(n==null?void 0:n.type)=="bigbed"}function hM(n){return(n==null?void 0:n.type)=="bam"}function dM(n){return(n==null?void 0:n.type)=="gff3"}function gM(n){return(n==null?void 0:n.type)=="vcf"}function pM(n,t){if(cM(n))return new j5(n,t);if(lM(n))return new W5(n,t);if(uM(n))return new X5(n,t);if(fM(n))return new Z5(n,t);if(AM(n))return new eM(n,t);if(hM(n))return new rM(n,t);if(dM(n))return new iM(n,t);if(gM(n))return new sM(n,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function mM(n){const t=J2(n).filter(r=>typeof r=="string"),e=new Function("source","return { "+t.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
691
- `)+" };");return e.properties=t,e}function J2(n){let t=[];do t=t.concat(Object.keys(n)),n=Object.getPrototypeOf(n);while(n&&n!==Object.prototype);return Array.from(new Set(t))}class Vu extends Ue{constructor(){super({type:"clone"});D(this,po);D(this,Hc,e=>e);const e=r=>{const i=J2(r);(!m(this,po)||!Ul(i,m(this,po)))&&(F(this,po,i),F(this,Hc,mM(r)));const s=m(this,Hc);this.handle=o=>this._propagate(s(o)),this.handle(r)};this.handle=e,this.beginBatch=r=>{Lp(r)&&(this.handle=e),super.beginBatch(r)}}get behavior(){return cn}}po=new WeakMap,Hc=new WeakMap;function CM(n){return"name"in n}class q2 extends fi{constructor(e,r,i){super(r);D(this,Yc);this.provider=i,this.params=e}get identifier(){return this.params.name}get label(){return"namedSource"}updateDynamicData(e){F(this,Yc,e),this.loadSynchronously()}loadSynchronously(){const e=m(this,Yc)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(e))e.length>0&&(r=H2(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of e)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}Yc=new WeakMap;class K2{constructor(){D(this,Yn);D(this,ki);F(this,Yn,new Set),F(this,ki,new Set)}get dataSources(){return[...m(this,Yn)]}get collectors(){return[...m(this,ki)]}replaceDataSources(t){F(this,Yn,new Set(t))}addDataSource(t){m(this,Yn).add(t)}removeDataSource(t){m(this,Yn).delete(t)}addCollector(t){m(this,ki).add(t)}removeCollector(t){t.observers.clear(),m(this,ki).delete(t)}pruneCollectorBranch(t){let e=t.parent;for(e&&e.removeChild(t);e&&e.children.length===0;){const r=e;e=r.parent,e?e.removeChild(r):r instanceof fi&&this.removeDataSource(r)}}findNamedDataSource(t){let e;for(const r of m(this,Yn).values())if(r instanceof q2&&t==r.identifier){if(e&&e!==r)throw new Error(`Found multiple instances of named data: ${t}. Data flow optimization is broken (it's a bug).`);e=r}if(e)return{dataSource:e}}}Yn=new WeakMap,ki=new WeakMap;function yM(n,t){const e=new Map,r=[];for(const i of n)e.set(i,{ref:i,children:[]});for(const i of e.values()){const s=e.get(t(i.ref));s?s.children.push(i):r.push(i)}return r}function j2(n,t,e){var i,s;const r=(i=t.preOrder)==null?void 0:i.call(t,n);if(r)return r;for(const o of e(n)){const a=j2(o,t,e);if(a==="stop")return a}return(s=t.postOrder)==null?void 0:s.call(t,n)}function wM(n,t){return j2(n,t,e=>e.children)}function IM(n,t){const e=[],r=[];let i;const s=t??new K2,o=[];function a(A,d=()=>{}){if(!i)throw d()||new Error("Cannot append data flow node, no parent exist!");return i.addChild(A),i=A,e.push(A),A}function l(A,d){return a(A,()=>new Error("Cannot append a transform because no (inherited) data are available! "))}function c(A,d){for(const g of A){let p;try{p=U5(g,d)}catch(C){throw console.warn(C),new Error(`Cannot initialize "${g.type}" transform: ${C}`)}p.behavior&tr&&l(new Vu),l(p)}}function u(){return e.findLastIndex(A=>A instanceof FA)>e.findLastIndex(A=>A instanceof fi)}const f=A=>{var d,g;if(A.spec.data){const p=(d=A.flowHandle)==null?void 0:d.dataSource;p&&p.view===A&&!p.identifier&&s.removeDataSource(p);const C=CM(A.spec.data)?new q2(A.spec.data,A,A.context.getNamedDataFromProvider):oM(A.spec.data,A);i=C,e.push(C),s.addDataSource(C),A.flowHandle??(A.flowHandle={}),A.flowHandle.dataSource=C}if(A.spec.transform&&c(A.spec.transform,A),A instanceof Qt){if(!i)throw new Error(`A unit view (${A.getPathString()}) has no (inherited) data source`);const p=EM(A);if(p){o.push(p.rewrite);for(const b of p.transforms)l(b)}A.mark.isPickingParticipant()&&!u()&&(l(new Vu),l(new FA({type:"identifier"})));const C=new L2({type:"collect",groupby:A.getFacetFields(),sort:bM(A,p==null?void 0:p.rewrittenEncoding)});a(C);const w=(g=A.flowHandle)==null?void 0:g.collector;w&&s.removeCollector(w),s.addCollector(C),A.flowHandle??(A.flowHandle={}),A.flowHandle.collector=C}},h=yM(n.getDescendants(),A=>A.dataParent);for(const A of h)wM(A,{preOrder:d=>{r.push({view:d.ref,nodeStackDepth:e.length}),f(d.ref)},postOrder:()=>{const{nodeStackDepth:d}=r.pop();e.length=d,i=e.at(-1)}});return o.forEach(A=>A()),s}function EM(n){var s;const t=[],e={},r=[];for(const[o,a]of Object.entries(n.getEncoding())){const l=o;wa(l)&&Yp(a)&&r.push({channel:l,chromPosDef:a})}const i=bl(r,o=>Xr(o.channel),o=>o.chromPosDef.chrom);for(const[o,a]of i.entries())for(const[l,c]of a.entries()){const u=[],f=[],h=[];for(const{channel:A,chromPosDef:d}of c){const g=w=>w.replace(/[^A-Za-z0-9_]/g,""),p=["_linearized_",g(d.chrom),"_",g(d.pos)].join(""),C={...((s=n.spec.encoding)==null?void 0:s[A])??n.getEncoding()[A]??{},field:p};delete C.chrom,delete C.pos,!C.type&&d.type&&(C.type=d.type),e[A]=C,u.push(d.pos),h.push(d.offset??0),f.push(p)}t.push(new Vu),t.push(new O2({type:"linearizeGenomicCoordinate",channel:o,chrom:l,pos:u,offset:h,as:f},n))}return t.length?{transforms:t,rewrittenEncoding:e,rewrite:()=>{n.spec.encoding={...n.spec.encoding,...e},od(n.mark,"encoding")}}:void 0}function bM(n,t){var r;const e={...n.getEncoding(),...t}.x;if(vt(e)&&(r=n.getScaleResolution("x"))!=null&&r.isZoomable()){if(nr(e))return"buildIndex"in e&&e.buildIndex?{field:e.field}:null;if(!Ca(e)){if(ya(e))throw new Error("A zoomable x channel must be mapped to a field.")}}}function W2(n,t=void 0){if(n.parent!==t)return!1;for(const e of n.children)if(!W2(e,n))return!1;return!0}function Cd(n,t=!1){if(n.behavior&DA&&(t=!0),n instanceof Vu)if(t)t=!1;else{const e=n.children[0];n.excise(),e&&Cd(e,t);return}n.behavior&cn&&(t=!1);for(let e=0,r=n.children.length;e<r;e++)Cd(n.children[e],t||r>1)}function xM(n){const t=n.dataSources,e=new Map;for(const s of t)s.identifier&&!e.has(s.identifier)&&e.set(s.identifier,s);const r=new Set,i=new Map;for(const s of t)if(s.identifier){const o=e.get(s.identifier);o&&(o!==s&&o.adoptChildrenOf(s),r.add(o),i.set(s,o))}else r.add(s),i.set(s,s);return n.replaceDataSources(r),i}function BM(n){if(Cd(n),!W2(n))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function vM(n){const t=xM(n);for(const e of n.dataSources)BM(e);return t}const yd=new WeakMap;function QM(n){const t=yd.get(n);if(t)return t;const e=Promise.resolve().then(()=>n.load()).finally(()=>{yd.delete(n)});return yd.set(n,e),e}function SM(n,t){for(const e of n.getDescendants()){const r=e.flowHandle;if(!r)continue;const i=r.dataSource;i&&(r.dataSource=t.get(i)??i)}}function X2(n,t){const e=IM(n,t),r=vM(e);SM(n,r);const i=n.getDescendants(),s=DM(i);for(const c of s)c.visit(u=>u.initialize());const o=i.filter(c=>c instanceof Qt),a=[],l=!!n.context.glHelper;for(const c of o){const u=c.mark;u.initializeEncoders(),l&&a.push(u.initializeGraphics().then(()=>u));const f=h=>{if(u.initializeData(),l)try{u.updateGraphicsData()}catch(A){throw A.view=c,A}c.context.animator.requestRender()};c.registerDisposer(c.flowHandle.collector.observe(f))}return{dataFlow:e,unitViews:o,dataSources:s,graphicsPromises:a}}function DM(n){var r,i;const t=Array.isArray(n)?n:n.getDescendants(),e=new Set;for(const s of t){let o=s;for(;o&&!((r=o.flowHandle)!=null&&r.dataSource);)o=o.dataParent;(i=o==null?void 0:o.flowHandle)!=null&&i.dataSource&&e.add(o.flowHandle.dataSource)}return e}function kM(n){const t=new Set;return n.visit(e=>{var r;if((r=e.flowHandle)!=null&&r.dataSource)return t.add(e.flowHandle.dataSource),k2}),t}function Z2(n,t=kM(n)){return Promise.all(Array.from(t).map(e=>QM(e))).then(e=>(v2(n),FM(n),e))}function FM(n){const t={type:"subtreeDataReady",payload:{subtreeRoot:n}};n.visit(e=>e.handleBroadcast(t))}async function MM(n,t,e,r){const{dataFlow:i,graphicsPromises:s}=X2(n,t);return r(i),await e.waitUntilReady(),await Z2(n,new Set(i.dataSources)),await N2(s),i}const RM=n=>new Promise(t=>setTimeout(t,n));function NM(n){const t=n.requestAnimationFrame||window.requestAnimationFrame,e=n.signal,r=()=>new Promise((i,s)=>{if(e!=null&&e.aborted)return s("aborted");const o=performance.now(),a=o+(n.duration||1e3),l=typeof n.from=="number"?n.from:0,c=typeof n.to=="number"?n.to:1,u=n.easingFunction||(g=>g),f=g=>(g-o)/(a-o),h=g=>g*(c-l)+l,A=g=>Math.max(0,Math.min(1,g)),d=g=>{e!=null&&e.aborted?s("aborted"):(n.onUpdate(h(u(A(f(g))))),g<a?t(d):(n.onUpdate(h(u(1))),i()))};t(d)});return n.delay?e!=null&&e.aborted?Promise.reject("aborted"):RM(n.delay).then(r):r()}class TM{constructor(t){this._renderCallback=t,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(t){this.cancelTransition(t),this.transitions.push(t),this.requestRender()}cancelTransition(t){const e=this.transitions.indexOf(t);e>=0&&this.transitions.splice(e,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(t=>{this._renderRequested=!1;const e=this.transitions;this.transitions=[];let r;for(;r=e.shift();)r(t);this._renderCallback(t)}))}transition(t){return NM({requestAnimationFrame:e=>this.requestTransition(e),...t})}}function wd(n,t,e,r,i){let s=0,o=!0,a=structuredClone(i),l=a;function c(h,A,d,g){return A+(h-A)*Math.pow(2,-d/g)}function u(h){if(o)return;const A=h-s;s=h;for(const g of Object.keys(l))a[g]=c(a[g],l[g],A,e);t(a);let d=-1/0;for(const g of Object.keys(l))d=Math.max(d,Math.abs(l[g]-a[g]));d<r?(a=l,t(a),o=!0,d!=0&&n.requestRender()):n.requestTransition(g=>u(g))}function f(h){l=h,o&&(o=!1,s=+document.timeline.currentTime,u(s))}return f.stop=()=>{o=!0},f}class PM{constructor(t){this.genomes=new Map,this.baseUrl=t}async initialize(t){const e=new r6(t);return this.genomes.set(e.name,e),Promise.all([...this.genomes.values()].map(r=>r.load(this.baseUrl)))}getGenome(t){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(t){const e=this.genomes.get(t);if(!e)throw new Error(`No genome with the name ${t} has been configured!`);return e}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 LM="data:image/png;base64,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",OM={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class UM{constructor(t){this._webGLHelper=t,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new Sn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:ph(U2),texture:t?this._createTextureNow(LM):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(t,e="normal",r="regular"){if(Ce(r)&&(r=OM[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:t,style:e,weight:r};let s=this._fonts.get(i);return s||(s={metrics:void 0,texture:void 0},this._fonts.set(i,s),this._promises.push(this._loadFontEntry(s,i))),s}async _loadFontEntry(t,e){try{const r=await this._loadMetadata(e.family),i=zM(r,e),s=this.fontRepository+$2(e.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(s+".png"),a=this._loadFont(s+".json");t.texture=await o,t.metrics=await a}catch{console.warn(`Cannot load font: "${e.family}". Using the embedded default font.`),t.metrics=this._defaultFontEntry.metrics,t.texture=this._defaultFontEntry.texture}}_loadFont(t){let e=this._fontPromises.get(t);return e||(e=fetch(t).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>ph(r)),this._fontPromises.set(t,e)),e}_loadMetadata(t){const e=$2(t);let r=this._metadataPromises.get(e);if(!r){const i=this.fontRepository+e+"/METADATA.pb";r=fetch(i).then(s=>{if(!s.ok)throw new Error("Could not load font metadata. Response status: "+s.status+", url: "+i);return s}).then(s=>s.text()).then(s=>GM(s)).catch(s=>{console.warn(s.message)}),this._metadataPromises.set(e,r)}return r}getDefaultFont(){return this._defaultFontEntry}_createTexture(t){const e=this._webGLHelper.gl;return new Promise((r,i)=>{Qa(e,{src:t,min:e.LINEAR},(s,o,a)=>{s?i(s):r(o)})})}_createTextureNow(t){const e=this._webGLHelper.gl;let r;const i=new Promise((s,o)=>{r=Qa(e,{src:t,min:e.LINEAR},(a,l,c)=>{a?o(a):s(l)})});return this._promises.push(i),r}}function $2(n){return n.toLowerCase().replaceAll(/[^\w]/g,"")}function GM(n){const t=n.split(`
692
- `),e=[];let r;for(const i of t)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(e.push(r),r=void 0),r){let s=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(s){const o=s[1];r[o]=s[2]}if(s=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),s){const o=s[1];r[o]=+s[2]}}return e}function zM(n,t){let e,r=Number.POSITIVE_INFINITY;for(const i of n)if(t.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&t.style==i.style){const s=Math.abs(t.weight-i.weight);s<r&&(r=s,e=i)}return e==null?void 0:e.filename}function HM(n,t){const e=[];let r;for(const i of n.split(`
693
- `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},e.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return e}const ey=new Map,YM={Organism:"Homo sapiens"};async function _M(n,t,e={}){const r=n.symbol,i={...YM,...e,GENE:r};let s=ey.get(r)??await qM(i);return s?(ey.set(r,s),be`
671
+ }`)(f,u));function C(w){r=w,i=w.length,e=0}function m(w,b,y,x){C(x),s=A(w,b,y);for(const B of p)B(s);return s}return m}function L5(n,t){return Array.from({length:Math.ceil(n.length/t)},(e,r)=>n.slice(r*t,r*t+t))}class O5 extends kc{constructor(e,r){const i={channel:"x",windowSize:2e4,debounce:200,debounceMode:"domain",...e};super(r,i.channel);S(this,Yi);W(this,"chrPrefixFixer",e=>e);if(this.params=i,!this.params.url)throw new Error("No URL provided for BamSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise(s=>{Promise.all([Promise.resolve().then(()=>tL),Promise.resolve().then(()=>Nc)]).then(([{BamFile:o},{RemoteFile:a}])=>{const l=c=>new a(Dc(c,this.view.getBaseUrl()));D(this,Yi,new o({bamFilehandle:l(this.params.url),baiFilehandle:l(this.params.indexUrl??this.params.url+".bai")})),g(this,Yi).getHeader().then(c=>{var h,A;const u=this.genome.hasChrPrefix(),f=(A=(h=g(this,Yi).indexToChr)==null?void 0:h[0])==null?void 0:A.refName.startsWith("chr");u&&!f?this.chrPrefixFixer=d=>d.replace("chr",""):!u&&f&&(this.chrPrefixFixer=d=>"chr"+d),s()})})})}get label(){return"bamSource"}async loadInterval(e){const r=await this.discretizeAndLoad(e,async(i,s)=>g(this,Yi).getRecordsForRange(this.chrPrefixFixer(i.chrom),i.startPos,i.endPos,{signal:s}).then(o=>o.map(a=>({chrom:i.chrom,start:a.start,end:a.end,name:a.name,cigar:a.CIGAR,mapq:a.mq,strand:a.strand===1?"+":"-"}))));r&&this.publishData(r)}}Yi=new WeakMap;class a2 extends kc{constructor(e,r){const i={channel:"x",windowSize:3e6,debounce:200,debounceMode:"domain",addChrPrefix:!1,...e};super(r,i.channel);S(this,jo);if(this.params=i,!this.params.url)throw new Error("No URL provided for TabixSource");this.setupDebouncing(this.params),this.initializedPromise=new Promise((s,o)=>{Promise.all([Promise.resolve().then(()=>fL),Promise.resolve().then(()=>Nc)]).then(async([{TabixIndexedFile:a},{RemoteFile:l}])=>{const c=u=>new l(Dc(u,this.view.getBaseUrl()));D(this,jo,new a({filehandle:c(this.params.url),tbiFilehandle:c(this.params.indexUrl??this.params.url+".tbi"),renameRefSeqs:this.params.addChrPrefix===!0?u=>"chr"+u:this.params.addChrPrefix?u=>this.params.addChrPrefix+u:void 0}));try{this.setLoadingStatus("loading");const u=await g(this,jo).getHeader();await this._handleHeader(u),this.setLoadingStatus("complete"),s()}catch(u){this.load(),this.setLoadingStatus("error",`${this.params.url}: ${u.message}`),o(u)}})})}async loadInterval(e){await this.initializedPromise;const r=await this.discretizeAndLoad(e,async(i,s)=>{const o=[];return await g(this,jo).getLines(i.chrom,i.startPos,i.endPos,{lineCallback:a=>{o.push(a)},signal:s}),this._parseFeatures(o)});r&&this.publishData(r)}async _handleHeader(e){}_parseFeatures(e){return[]}}jo=new WeakMap;class U5 extends a2{constructor(){super(...arguments);S(this,Sl)}get label(){return"gff3Source"}async _handleHeader(e){D(this,Sl,await Promise.resolve().then(()=>DL))}_parseFeatures(e){var i;return(i=g(this,Sl))==null?void 0:i.parseArraySync(e)}}Sl=new WeakMap;class G5 extends a2{constructor(){super(...arguments);S(this,Ql)}get label(){return"vcfSource"}async _handleHeader(e){const r=(await Promise.resolve().then(()=>PL)).default;D(this,Ql,new r({header:e}))}_parseFeatures(e){return e.map(r=>{const i=g(this,Ql).parseLine(r);return delete i.GENOTYPES,i.SAMPLES=i.SAMPLES(),i})}}Ql=new WeakMap;const z5=[];function H5(n,t){if(o2(n))return new B5(n,t);if(v5(n))return new S5(n,t);if(Q5(n))return new D5(n,t);if(V5(n))return $5(n.lazy,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function V5(n){return"lazy"in n}function _5(n){return(n==null?void 0:n.type)=="axisTicks"}function Y5(n){return(n==null?void 0:n.type)=="axisGenome"}function J5(n){return(n==null?void 0:n.type)=="indexedFasta"}function q5(n){return(n==null?void 0:n.type)=="bigwig"}function K5(n){return(n==null?void 0:n.type)=="bigbed"}function j5(n){return(n==null?void 0:n.type)=="bam"}function W5(n){return(n==null?void 0:n.type)=="gff3"}function X5(n){return(n==null?void 0:n.type)=="vcf"}const Z5=[{guard:_5,Source:k5},{guard:Y5,Source:F5},{guard:J5,Source:M5},{guard:q5,Source:R5},{guard:K5,Source:T5},{guard:j5,Source:O5},{guard:W5,Source:U5},{guard:X5,Source:G5}];function $5(n,t){for(const e of z5)if(e.guard(n))return new e.Source(n,t);for(const e of Z5)if(e.guard(n))return new e.Source(n,t);throw new Error("Cannot figure out the data source type: "+JSON.stringify(n))}function eN(n){const t=c2(n).filter(r=>typeof r=="string"),e=new Function("source","return { "+t.map(r=>JSON.stringify(r)).map(r=>`${r}: source[${r}]`).join(`,
672
+ `)+" };");return e.properties=t,e}function c2(n){let t=[];do t=t.concat(Object.keys(n)),n=Object.getPrototypeOf(n);while(n&&n!==Object.prototype);return Array.from(new Set(t))}class Of extends Le{constructor(){super({type:"clone"});S(this,Wo);S(this,Dl,e=>e);const e=r=>{const i=c2(r);(!g(this,Wo)||!Is(i,g(this,Wo)))&&(D(this,Wo,i),D(this,Dl,eN(r)));const s=g(this,Dl);this.handle=o=>this._propagate(s(o)),this.handle(r)};this.handle=e,this.beginBatch=r=>{Zm(r)&&(this.handle=e),super.beginBatch(r)}}get behavior(){return un}}Wo=new WeakMap,Dl=new WeakMap;function tN(n){return"name"in n}class l2 extends Ei{constructor(e,r,i){super(r);S(this,kl);this.provider=i,this.params=e}get identifier(){return this.params.name}get label(){return"namedSource"}updateDynamicData(e){D(this,kl,e),this.loadSynchronously()}loadSynchronously(){const e=g(this,kl)??this.provider(this.params.name)??[];let r=i=>i;if(Array.isArray(e))e.length>0&&(r=i2(e[0]));else throw new Error(`Named data "${this.params.name}" is not an array!`);this.reset(),this.beginBatch({type:"file"});for(const i of e)this._propagate(r(i));this.complete()}async load(){this.loadSynchronously()}}kl=new WeakMap;class u2{constructor(){S(this,Kn);S(this,Ji);W(this,"loadingStatusRegistry");D(this,Kn,new Set),D(this,Ji,new Set),this.loadingStatusRegistry=new Fm}get dataSources(){return[...g(this,Kn)]}get collectors(){return[...g(this,Ji)]}replaceDataSources(t){D(this,Kn,new Set(t))}addDataSource(t){g(this,Kn).add(t)}removeDataSource(t){g(this,Kn).delete(t)}addCollector(t){g(this,Ji).add(t)}removeCollector(t){t.observers.clear(),g(this,Ji).delete(t)}pruneCollectorBranch(t){let e=t.parent;for(e&&e.removeChild(t);e&&e.children.length===0;){const r=e;e=r.parent,e?e.removeChild(r):r instanceof Ei&&this.removeDataSource(r)}}findNamedDataSource(t){let e;for(const r of g(this,Kn).values())if(r instanceof l2&&t==r.identifier){if(e&&e!==r)throw new Error(`Found multiple instances of named data: ${t}. Data flow optimization is broken (it's a bug).`);e=r}if(e)return{dataSource:e}}}Kn=new WeakMap,Ji=new WeakMap;function nN(n,t){const e=new Map,r=[];for(const i of n)e.set(i,{ref:i,children:[]});for(const i of e.values()){const s=e.get(t(i.ref));s?s.children.push(i):r.push(i)}return r}function f2(n,t,e){var i,s;const r=(i=t.preOrder)==null?void 0:i.call(t,n);if(r)return r;for(const o of e(n)){const a=f2(o,t,e);if(a==="stop")return a}return(s=t.postOrder)==null?void 0:s.call(t,n)}function rN(n,t){return f2(n,t,e=>e.children)}function iN(n,t,e,r){const i=[],s=[];let o;const a=t??new u2,l=[],c=r??(()=>!0);function u(m,w=()=>{}){if(!o)throw w()||new Error("Cannot append data flow node, no parent exist!");return o.addChild(m),o=m,i.push(m),m}function f(m,w){return u(m,()=>new Error("Cannot append a transform because no (inherited) data are available! "))}function h(m,w){for(const b of m){let y;try{y=w5(b,w)}catch(x){throw console.warn(x),new Error(`Cannot initialize "${b.type}" transform: ${x}`)}y.behavior&lr&&f(new Of),f(y)}}function A(){return i.findLastIndex(m=>m instanceof Qh)>i.findLastIndex(m=>m instanceof Ei)}const d=m=>{var w,b,y;if(!c(m)){const x=(w=m.flowHandle)==null?void 0:w.node;if(x){x!==o&&(o=x,i.push(x));return}if(m.spec.data||m.spec.transform||m instanceof dt)throw new Error("Cannot reuse missing flow nodes for "+m.getPathString());return}if(m.spec.data){const x=(b=m.flowHandle)==null?void 0:b.dataSource;x&&x.view===m&&!x.identifier&&a.removeDataSource(x);const B=tN(m.spec.data)?new l2(m.spec.data,m,m.context.getNamedDataFromProvider):H5(m.spec.data,m);o=B,i.push(B),a.addDataSource(B),m.flowHandle??(m.flowHandle={}),m.flowHandle.dataSource=B}if(m.spec.transform&&h(m.spec.transform,m),m instanceof dt){if(!o)throw new Error(`A unit view (${m.getPathString()}) has no (inherited) data source`);const x=oN(m);if(x){l.push(x.rewrite);for(const Q of x.transforms)f(Q)}m.mark.isPickingParticipant()&&!A()&&(f(new Of),f(new Qh({type:"identifier"})));const B=new $w({type:"collect",groupby:m.getFacetFields(),sort:aN(m,x==null?void 0:x.rewrittenEncoding)});u(B);const E=(y=m.flowHandle)==null?void 0:y.collector;E&&a.removeCollector(E),a.addCollector(B),m.flowHandle??(m.flowHandle={}),m.flowHandle.collector=B}o&&(m.flowHandle??(m.flowHandle={}),m.flowHandle.node=o)},p=sN(n,e),C=nN(p,m=>m.dataParent);for(const m of C)rN(m,{preOrder:w=>{s.push({view:w.ref,nodeStackDepth:i.length}),d(w.ref)},postOrder:()=>{const{nodeStackDepth:w}=s.pop();i.length=w,o=i.at(-1)}});return l.forEach(m=>m()),a}function sN(n,t){if(!t)return n.getDescendants();const e=[];return n.visit(r=>{if(!t(r))return $t;e.push(r)}),e}function oN(n){var o;const t=[],e={},r=n.mark.encoding,i=[];for(const[a,l]of Object.entries(r)){const c=a;$a(c)&&!Array.isArray(l)&&l1(l)&&i.push({channel:c,chromPosDef:l})}const s=Au(i,a=>ci(a.channel),a=>a.chromPosDef.chrom);for(const[a,l]of s.entries())for(const[c,u]of l.entries()){const f=[],h=[],A=[];for(const{channel:d,chromPosDef:p}of u){const C=b=>b.replace(/[^A-Za-z0-9_]/g,""),m=["_linearized_",C(p.chrom),"_",C(p.pos)].join(""),w={...((o=n.spec.encoding)==null?void 0:o[d])??r[d]??{},field:m};delete w.chrom,delete w.pos,!w.type&&p.type&&(w.type=p.type),e[d]=w,f.push(p.pos),A.push(p.offset??0),h.push(m)}t.push(new Of),t.push(new e2({type:"linearizeGenomicCoordinate",channel:a,chrom:c,pos:f,offset:A,as:h},n))}return t.length?{transforms:t,rewrittenEncoding:e,rewrite:()=>{n.spec.encoding={...n.spec.encoding,...e},r0(n.mark,"encoding")}}:void 0}function aN(n,t){var r;const e={...n.getEncoding(),...t}.x;if(Tt(e)&&(r=n.getScaleResolution("x"))!=null&&r.isZoomable()){if(Mn(e))return"buildIndex"in e&&e.buildIndex?{field:e.field}:null;if(!bs(e)){if(xs(e))throw new Error("A zoomable x channel must be mapped to a field.")}}}function A2(n,t=void 0){if(n.parent!==t)return!1;for(const e of n.children)if(!A2(e,n))return!1;return!0}function y0(n,t=!1){if(n.behavior&vh&&(t=!0),n instanceof Of)if(t)t=!1;else{const e=n.children[0];n.excise(),e&&y0(e,t);return}n.behavior&un&&(t=!1);for(let e=0,r=n.children.length;e<r;e++)y0(n.children[e],t||r>1)}function cN(n){const t=n.dataSources,e=new Map;for(const s of t)s.identifier&&!e.has(s.identifier)&&e.set(s.identifier,s);const r=new Set,i=new Map;for(const s of t)if(s.identifier){const o=e.get(s.identifier);o&&(o!==s&&o.adoptChildrenOf(s),r.add(o),i.set(s,o))}else r.add(s),i.set(s,s);return n.replaceDataSources(r),i}function lN(n){if(y0(n),!A2(n))throw new Error("Encountered a bug! There's a problem in the data flow structure.")}function uN(n){const t=cN(n);for(const e of n.dataSources)lN(e);return t}const w0=new WeakMap,I0=new WeakMap;function h2(n,t){const e=w0.get(n);if(e){if(!(t!=null&&t.queueReload))return e;const i=I0.get(n);if(i)return i;const s=e.catch(()=>{}).then(()=>h2(n)).finally(()=>{I0.delete(n)});return I0.set(n,s),s}const r=Promise.resolve().then(()=>n.load()).finally(()=>{w0.delete(n)});return w0.set(n,r),r}function fN(n,t){for(const e of n.getDescendants()){const r=e.flowHandle;if(!r)continue;const i=r.dataSource;i&&(r.dataSource=t.get(i)??i)}}function E0(n,t,e,r){const i=r??(()=>!0),o=d2(n,e).filter(i);if(o.length===0)return{dataFlow:t,unitViews:[],dataSources:new Set,graphicsPromises:[]};const a=new Set(o);for(const A of o)A._setDataInitializationState("pending");let l;try{l=iN(n,t,e,d=>a.has(d));const A=uN(l);fN(n,A)}catch(A){for(const d of o)d._setDataInitializationState("none");throw A}const c=AN(o);for(const A of c)A.visit(d=>d.initializeOnce());const u=o.filter(A=>A instanceof dt),f=[],h=!!n.context.glHelper;for(const A of u){const d=A.mark;d.initializeEncoders(),A.registerDomainSubscriptions(),h&&f.push(d.initializeGraphics().then(()=>d));const p=C=>{if(d.initializeData(),h)try{d.updateGraphicsData()}catch(m){throw m.view=A,m}A.context.animator.requestRender()};A.registerDisposer(A.flowHandle.collector.observe(p))}for(const A of o)A._setDataInitializationState("ready");return{dataFlow:l,unitViews:u,dataSources:c,graphicsPromises:f}}function AN(n,t){var i,s;const e=Array.isArray(n)?n:d2(n,t),r=new Set;for(const o of e){let a=o;for(;a&&!((i=a.flowHandle)!=null&&i.dataSource);)a=a.dataParent;(s=a==null?void 0:a.flowHandle)!=null&&s.dataSource&&r.add(a.flowHandle.dataSource)}return r}function hN(n,t){const e=new Set;return n.visit(r=>{var i;if(t&&!t(r))return $t;if((i=r.flowHandle)!=null&&i.dataSource)return e.add(r.flowHandle.dataSource),$t}),e}function b0(n,t,e,r){return t||(t=hN(n,e)),Promise.all(Array.from(t).map(i=>h2(i,r))).then(i=>(dN(n),i))}function d2(n,t){const e=[];return t?(n.visit(r=>{if(!t(r))return $t;e.push(r)}),e):n.getDescendants()}function dN(n){const t={type:"subtreeDataReady",payload:{subtreeRoot:n}};n.visit(e=>e.handleBroadcast(t))}async function gN(n,t,e,r){const i=a=>a.isConfiguredVisible(),{dataFlow:s,graphicsPromises:o}=E0(n,t,i);return r(s),await e.waitUntilReady(),await b0(n,new Set(s.dataSources),i),await g0(o),s}async function pN(n,t,e){const r=h=>h.isConfiguredVisible(),s=mN(n,r).filter(h=>h.getDataInitializationState()==="none");if(s.length===0)return t;const o=new Set(s),a=h=>o.has(h),l=new Set,c=[];for(const h of s){if(h.spec.data){c.push(h);continue}const A=yN(h);A?l.add(A):c.push(h)}const{dataFlow:u,graphicsPromises:f}=E0(n,t,r,a);await e.waitUntilReady();for(const h of l)h.repropagate();if(c.length){const h=CN(c);await Promise.all(Array.from(h.entries()).map(([A,d])=>b0(A,d,void 0,{queueReload:!0})))}return await g0(f),u}function mN(n,t){const e=[];return n.visit(r=>{if(!t(r))return $t;e.push(r)}),e}function CN(n){var e,r;const t=new Map;for(const i of n){let s=i;for(;s&&!((e=s.flowHandle)!=null&&e.dataSource);)s=s.dataParent;if(!((r=s==null?void 0:s.flowHandle)!=null&&r.dataSource)){if(i.spec.data)throw new Error("No data source found for view "+i.getPathString());continue}let o=t.get(s);o||(o=new Set,t.set(s,o)),o.add(s.flowHandle.dataSource)}return t}function yN(n){var e;let t=n.dataParent;for(;t;){const r=(e=t.flowHandle)==null?void 0:e.collector;if(r)return r.completed?r:void 0;t=t.dataParent}}class wN{constructor(t){this._renderCallback=t,this._renderRequested=!1,this._warn=!1,this.transitions=[]}requestTransition(t){this.cancelTransition(t),this.transitions.push(t),this.requestRender()}cancelTransition(t){const e=this.transitions.indexOf(t);e>=0&&this.transitions.splice(e,1)}requestRender(){this._renderRequested?this._warn&&console.warn("Render already requested!"):(this._renderRequested=!0,window.requestAnimationFrame(t=>{this._renderRequested=!1;const e=this.transitions;this.transitions=[];let r;for(;r=e.shift();)r(t);this._renderCallback(t)}))}transition(t){return xR({requestAnimationFrame:e=>this.requestTransition(e),...t})}}function x0(n,t,e,r,i){let s=0,o=!0,a=structuredClone(i),l=a;function c(h,A,d,p){return A+(h-A)*Math.pow(2,-d/p)}function u(h){if(o)return;const A=h-s;s=h;for(const p of Object.keys(l))a[p]=c(a[p],l[p],A,e);t(a);let d=-1/0;for(const p of Object.keys(l))d=Math.max(d,Math.abs(l[p]-a[p]));d<r?(a=l,t(a),o=!0,d!=0&&n.requestRender()):n.requestTransition(p=>u(p))}function f(h){l=h,o&&(o=!1,s=+document.timeline.currentTime,u(s))}return f.stop=()=>{o=!0},f}class IN{constructor(t){this.genomes=new Map,this.baseUrl=t}async initialize(t){const e=new DM(t);return this.genomes.set(e.name,e),Promise.all([...this.genomes.values()].map(r=>r.load(this.baseUrl)))}getGenome(t){if(!this.genomes.size)throw new Error("No genomes have been configured!");if(t){const e=this.genomes.get(t);if(!e)throw new Error(`No genome with the name ${t} has been configured!`);return e}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 EN="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAIAAAB7GkOtAAEFzklEQVR4AezcRXjr2BnG8b8SQ+gJOiA5d1NmZuZVuU133Zf3++6XxW27Ku7LzIzDrMgByxQGaxwfWVFGMly088z7e76Zi5bu6nvP+Y4sKwgC2n4KP4QfgEcvAVdZGHfuM++Fj8HHwUZERO6aMTocsMGhl4C7bbrzr7C5N0REFAC30nct7qwhdH8REQXAfKf7FrjTLPpJ7EPuMhERycB36XD+hX0/DuzSlsnw3OfyilcwAA/vn/yzQQMoUHg9r59hhn7Oz/njH9ncJAiAXNj9P2qTxdhARETufgDYNs4fsH/Cv2jL53nzm1lcZH2dngKCP/Gnn/LTEiXg+Tw/Q+btvJ1+/vlPfvYz/v1vEwA26w4fs8lm4R4GgIiIAmB5GdvGnmbuh9Rq8MIXcuMGpVJ6AFhEXNwneOI//OfnSz8fL49/jI+9lJcecjjJJD15Ho8+yo9/TKUCb7J5vY1tcw+JiOgMILYJcDpNuFQKq5+neMrFbRXLnI+fu7im6KlSCS9fqXDBccLb31siIgqARBOu1SiV8DzKZbpr0nRxWxnQqs8tv51lol/2Xf63qlS6euOpKYZIREQ7ANOHTYdu1SDL/wMOlguFlxW+Hf8dujMX9ryrNx4KEREFgGXd9BQoWu97S0vLbU36T4EOD6NwGf78R0REAZBoxWaJ3qqDA9Kcx3p9YXW1sLLSCoBM5jIV+i7/gwCWl8Nbzs0xLCIiCgDbDiub7b8JMF3exT3kMOM4a3bLmuNczoX22ScpPluK33KIREQUALmc2QS0KjGqT3BxzWKf2VmKhl0sEhD0ngKZS5ZKOgAQERmVAEg05KhVBwFXnXJ62eWLRYoGrRofv8yGHsv/gwOYmwtvtryMiIgMLQCSxwCHh92mQNGg/4gjEwCTxRZMRdOhPfbSl/86/hURGbUAmJ4eaAoULf/N/OeibDsKgPhf0AOgIiLXIQASbTn+la3ICSfRSS+xru84YY2NpU+BqtXwYr4PU1PaAYiIjFoAxNpy9NKGajV5/HvMcTwApqYuf2X+govboJG+/I82GiIiMiIBsLAQdualpStfCIg/AJqc/9DWewqUfABUy38RkREKgPjpbKJtc8xxdAIc7/dXAyBlCnR8HIuSbFYHACIioxgA6e+EODqKr+tPOU0GQHwKtMmm2SvUqcdzpNmM3SCXQ0RERicAVlbCFj07C81m/CjYrP1T5z/pUyArnALFJ0k6/hURGdEASL4XyNQRR2b5n5z/9JsCRdfQA6AiIqMdAClTIM+Ljn/POEsGQHIK5BF+ZGurZpb/+/uxS09PIyIiIxgApiYnYX/fjIDcrc7x79xc6vyn27NArY/qBXAiItcjAMbGnrkJOLzo4rH3/6yvR8v/vlMgz3tKb4AQEbkWAZBo1Ftb3vb25s6mi3vOeXyRn2S+5GuqRMk9cLd2Wp9u7O5CoRBedH4eEREZzQCIdgCZDJTLZd/f8Xe2m9u95z/JKdB2dXunsuP7uzr+FRG5HgGQz8fadbPpV6t+zW9VvLv3DQDLotwol+vlet2/HvMfEREFQLxdW1Cp16v1amWx0jMArOitotHf8hu+v+c3Gj5zc+HllpcREZFRDoD4AzvVWq1Sq1zOf9bW6CkKgPLr/Uqj0njkA/HLiYjIsGQYwMxMuAlYW+Oz//8/X/4/L3lJcvlvQdBrChR896vf1QHAdSIi2gEkm/Yg85/kFOjC5KQOAERERkEGPjT4McC6w/rfYQ6KS93nPx9K3QS8ulVPgdMJE8tCRESGGgAbDGBhAcdhw4YlWIUiqcv/b8Gn2UgNgI0iWGB3MkBERIYdAJ9iMO8Je3e7iu1Klbjg9HS7+5syV3AsRERk2AGQZzB52/TudhVhjVSpF8ybT0X5kUNERIZrjMGtJpb/gyuaCiPk+hARUQAYzq0GwMzVEZCIiAybFQQBIiLyrN4BiIiIAqAK34T3wxp8CX7N0+zZAQYCQRzF4bfMAQroCKETRMfYvWRHqFt0kI4wkaaQDQQ7+33mDPPz9wBwAQAgAAAIAAALU3KeWwEu+dglp7yNATqEADT35Np+/zGNAHQOEIDWgFsyBQAbAAACAIAAACAAAAgAAAIAgAAAIAAACAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAAIAgAAAIAAAAgCAAAAgAAAIAAACAIAAACAAAAgAAH8iAAAIAAACAIAAACAAAAgAAAIAgAAAULLPD9v0CYCSKXOO6RYAJaPff40ASg75tnm+5QLACAyAAAAgAAAMtdasBAAuAADKkJcHO3eZ3Uh2wFH8GtRkZmb2kXrCWUNWHGbmxAwyW2RmtpXSyOrwfJ9X93f+ghW8K6xZSP3LRvgvf4bvw/fgl7wq8iUlSaqlYgn2P62SgWYqcjBXWSAkyQBUXMCv/ysDST73d5j7/P6csEiSAajYgcy/LzWX7Z3rZQ5WkCSFGICKJ/jrp/cBh4f7f/9xam4q9ffUe94jSQo2ABWH8BPIzM9n5uYyf9/KHGe+zbd76UWSFG4AKtLp1YWF/dLOjjiqp94AxIAkA/D8zNISi4vXCwtn1L/hTTTCJ0n+EWx1lZWVaIn9wgwz0aaYInCSZACKRdbXWVtjdXWSySmmppnuppvASZIB2NxkY4N0mkJhnPFok0wSPkkyAFtbpW1ujjASbYyxDjoInCQZgNNTdnfZ2WFvb4ihYYajIUkKPwCZTGn7+3XU9dM/wMAgg4RPkgxAPk8uRzbbQ08vvX30VVNN4CTJANzfc3BAoRCtm+7yCJ8kGYCjo9dBO+0ddHTSSfgkyQCcnXF6yslJE01ttEXzGnDxIMkAXFxwfh6tmeZoLbQgKRZkAK6uymugIVojjUiKBRmA29vSbm4+8KGOumhIkmIRgLu70u7v3/O+PCRJ4Qfg8fF1kCDhJaAlKTYBeH7m5aV0D7XU1lATDUlS+AEoFl9XQhVV0ZAkhR+AqqrSqquBIsUXXqIhSQo/ALW1pdXUAE88lYckKRYBSCR484aqqgceykOSFH4AIu/elXfL7Q030ZAkxSIAHz6UVld3xdU119E9kqRYBKC+noaGaJdcXnARDUlSLALQ1FRac/MZZ6ecnnCCJCkWAWhpobU12jXXxxxHO+ccSVL4AWhvL62jg0TigIPykCSFH4Dqarq6SuvuLlDIkcuSRZIUfgAiPT309tLXlyWbIRPNH4NKUjwC0NdHfz8DA0+Jqj32dtndYQdJUvgB+PCBwUGGhhgZ2WFnm+1oSJLCD0BkZITR0Wh58ptspknbgHiQZAD6+hgfZ2KC4eE06XXW11hDkhR+ACITE0xOMj29xdYqqyuspEkjSbEXgwAMDzMzU9rU1DLLUQCiEiBJCkItX2x2lu3tod3d5P5d63XrW94iKQ5kAJp6elKpVDKTSWbbkr9Nfo2vETxJMgDJ8j5+TGXzyVxyND/KFpKkkAPQD0lIlQPw7l3qs+8k8glylHaHJCnAANR/OvcrTzqAkQQfeQ3AHwiNJBmAmX8596NN8C8+g1xlewRCkgxAz3+98H/Hv6v7lwbk4ZEvNUlSVbFYRJLkH8FiQpL0D/buAqqtNd/7+DcUSQrBQ4TgGg6NNEyZqZ13pvJed3dZet3d71123WXZdR13OX7OSIVOE6BKC6USCMGC9oS2+z6bTUIoFkrP9Ib+P+u3Uk+C/X/7efZOycHEanzwy/Aq643CS/Cn8MPQBQWk6YU/htNg2jTrmDZJDnwV/Cn087TNwz/B14Ips9TBL8I5duwe/AUcA9Nq/o8TQshVQL3gTMaDIQF9azPKWl6IwdhywuxOIJlOstZ0MkIIkT0FkN4BLihhcO3ov8Im/DAGseVEeFK1cDBZAFksnowQQmRVAYxAL7iYck71Hy9Ln/4zbK7C6IBkHrBzFggkUyoFIIQQz+KVwL30O/v7nH19rnf1NTf3wTCbej9JHoi9SSzKGPRgcOI8ylEUE2g8JhxmYABNS9v8cQd4TwvLvp2thMPh4eHhRCJRWVnZ0dFRVVW11bMzzMOn2Lk6OISy7dOKRLhy5cHUVDw/P15XN+PzIYQQWVQAceJfevClvl41/Qf6XAV91dUPLRYyKQDF72fsc3pi00ZpBAlasfrwsYYJuHWLM2d4/XUePgRaqQpwOkAgkMmkPXPmzJtvvnn58uXFxcWampqxsbETJ05UVFRsUwBP0gF1y2H7Ahgf54031DObHh2dtlimOztZWqKri2whhJACGGDgLd46c+dMX99CzO2mtpaurkwLoLiYQIBYjLHPqhooX7TkkefE6cBhx06ahQVCIT3nzjE4VaaP/oMHCQQwm9nO1NSUGv2qA954443p6Wmv15ubm+t2uw8fPszjPsJ68+Rt3QGvwImlJZRaqCNDg4P09vLaa/H+/nh5eXxxEaeTjg727ycrCCGkAAoosGBZYCHW309dHfX1NDRQUUGGmpqW1wFjxGKTX/ximLADhxPnKU6RJhRayeAgvC9AYDk1NWRgZmZmYmLi7t27k5OTwMDAgN/vV02AYbvD9dIt1hYaXISX4FTsP15+qVqrLqGkkEIysbDAzAyjo3FNi09MxCMRxseZnpYCyBpCSAG00OLBM8jgzbmbsStXaGykuZnDh8lcIKAKwMilG5ecOI1FwAEOsOzmzdUCwOslEFhJZgoKCvbv319SUsIytftfVFRksVi2LoBtpr+G7hb0xLjwMhcufFlr76LLi7eRRjJhtVJeTk3N9NTUtM2maoDsIoSQAjBjbqf9Bjeucz129TwtLQwM0N6uT7cMmc3GRpCesbHwzMoiQKWSytnZ1el/v8xJILn5kzGHw9HS0hIMBvPy8hYWFurq6jo7OxsaGmC9byJNof7rdTRWxOP0vKRGv4pjMu8UXUGCKhYsmS59vF4WF+NtbfEy0/TgJIWF2XT4L4SQAlBaaW2hpZnmy4nLUzduoDI4mGkBGGprjY0gldgbb4QJG4uAE5xITf/he7nGWV89Nhs7cejQoZycnKampkQiYbPZVAHU19fzBDRW9fSo0W+6cKHg5t2TnDSmfzXVZKi0lBdfnKiqmpy8MW39UOLf7Nhs+m9mESGEFEAeeU00NdLYQMPUzesMDenx+cjLI2Ppi4C+K31GATivO0OhDqMAjAN/PR4PO1RaWnry5MmpqamlpSX18/z8/N1O/y9/WY1+lhPkPcb076STHamqGqgaHGLobnCUr+uipobsIoSQAlDqqVepo+7i3EVteJjbt7lzh8bGHczVffvw+03GyYBYLDwediaczj5VAI5QiCV3g7H5o6nbJBM7U1ZWxhPTSDGpektOf4/WHiRohB0aNA320nul8sr1/++hrY2mJrKOEEL+N9ASSmqoceOuppq7d/Xcu8d2ND1pnE413zW//77fHyUajoTDw+Fr13rvThfNqd9fDlbrun/+DvskaBhMKtPTqenvmMw3Rn8XXfvZzxZMjydqip7hTE9uT+jg3H2fj85OSkrIOkIIKQBFjX4VFy599I+M6HnwgHW0tKxnXORzMRD4XZ8v3BgOR8PRaPg3Dx4MGZs/DQ1b3OHTVwg/lD7Adcnpr2/9p6a/C9dOn9YII5fyLvUcuT7Y3U1XF14vQgiRjVtAyuoLuJaWiEaNnRycTnZoqCkQahxTsQyM1X506LW8Xw4H/r8jUG4PlDfzDJhYs/W/UgA9PUEOd9Gl8gIvkKKRIVepy9ftm+vOzTl8+ILqgOwlhJACsGK1YVMpoSQ+Po7KxMROC2B+nlCoIhQKhEK/0fhXFY7PePI/E1G/sh+02/PsDhxFFD2b0a8MDaWmvwdPV/K6TwwaO+CiqrvqePfxfd1VOd3dORbLebKWEEIKQKmgQqWc8vjkJFNTKlvOVY11QiEjnqGhoZPek46I93ok4vyhL4S0kB27ylGOZnp/O2dic9PTqenvnDJ3pV/1r5Hyd/DtUMmWmqFbj6PbceyQIweMnCVrCSGkAMooK6VUhfh14nFmZnY0bwcGCIW4eFG/7aCj09tZH/E6IhFGRsKmsAOHscXUQgtfecnpbx6MBJNX/bs0F2neC9/BdrzQnUwnVXAMcpL5EtlJCCEFUEyxFasK8/PMzel59IicHDKgyiIUWknR2xV+/P58f8DrNc4nJyKR0P2VRYADhxUrOxePx43XAeTm5rITxta/8cqvIEf06a8F07f+Tej+H9v1XXdaGjFUru2AL5CFhBBSAIUUGkFZWFhJURHbW53+d+5wAr9f8/vxO+rr8XqJRFTunDsXYqUDjnGMnZidne3p6RkcHEwkElVVVZ2dnW1tbWRoaCg1/TvoCGorV/6wI4Vrp7+DdOXrOuARWUUIIQVgwaJixozy9ttGMimAq1dXC+AABwIE/Ph9+ACjAIyE765uBLXSSsbOnj376quv9vb2Liws1NfXT05OWiyW2tpatjU9TU+PMf2dk2Zj9KuYMe/s9WhzbK0UvlZPdhJCSAHkkptPvooJk7a0hJHtTE6ubv1XPLD78RvBUFi40gEjI0sjnwk9XN0IKqaYDESj0YGBgQsXLrz00kuapjU1NVmt1paWlkwKwBj9Kub/iATPnlw+99vq5DYqm47+JqgkpRshxN4nBaDsY5+KaoKlhw9RefQo882fkYjpNH7j8N+GjZSWFqMA1O3dixfDhI0OOM5xMnD//v25ubmpqSk1/YGRkZGZmRm1FGBbly+nLvwPvv9IF21BbndsNfqVpuUgBfDcEUIKwIRJBUXTkrdbuXRptQACyWP/tPOrST6fUQAqoWjIWAGoZLIRVFRUVFZW5nK5SkpK4vF4c3OzzWZTP89k7cCtW/T1AV3vvxNEBRNbaIQmHvPHPBeEEFIAj3ikoqGRk4PJpOdxx0mKxVZ2fhZDHIdmmo0CYL3S0pWNoGj0wcJCiFl78oRwCSVsqaKioqOjY3x8vLi4eHFx0e12BwKB1tZWtnhmBk3T35q2Jdq4yO2L8EdwfOsCeG4JIaQAHvDACPv2Gdniu26FQkyHOKQSXbmKNEiwjDI21NHB+DgWCw8f3oMw2BmzE3qRF9nO4cOHLRZLe3t7IpGorKz0eDxqEZDRN4Ts1COE2IaQAkiQMIKSn29kszEbDeMN6aEPgxnzNofzx4/j8RjnFUJgB4eeaBt2thNYpmmayWTCsG0BvKBHCLE9IQWwwMIiiyooZvNKHmdHGcUeAiM7kjxyf2h0QDKlZGSL6a/YN/+1EEKIHDY3x5zKPPPk5LB/vx6LhfUewcXk9J/giUUgvJwQz5QQQsgKYIYZI1itKpu+BCyUzGV2Z3UR4IB2nhEhhJACmGRyiikVSkspKdGzoYPL+VUypPGsvG85f48QQmxNtoDGGZ9gYpJJystXIoTY84QUwDjjY4ypLLCAzaanogIhxJ4npABGGBllVIWiIhwOqqqorEQIsecJKYC73L3HvQgRqqtxOnG5EELseUIKYJTR29y+w50YMWpqVPQaEELseUIKYIihW9xSwWajvp66OimAvU8IIQUQJ36Tm4MMqhqgqYmGBr0DhBB7npACuMa161wfYOB+qZnmZhW9BoQQe5uQAhhn/CpXjQ6gvZ22NlpbsVgQQuxtQgpgmGFVAFe4Mu+w0tGBx6PXgBBCiD0nd92vc61Y22lf6rRffeEFvQPMZoQQe56QAvDhS5BwdDjc3v6aAwf6PZ4RhBB7nZACMLyr7F01vhq3113j9dZAH/TDIkKIvU5IAeDD4XU4fI4aOzXghhroh+sIIfYwIQXQBl7wgZd2cCcLwGiCfhhDCLH3CCmAYvAlk4NSBO82pn/aUqAPEggh9hIhBeBLHv67SFe9nJq0JugnuwkhhDBpmoYQQgh5IVgaIYQQUgCmjXIY/gzukrke+C3wg2mzZPK4Rk7BX8Ntnoj6Z38C74Zq+Bn4ArtzAX4FmsCUWerhF+EcG/hx+Ev4LAyzVlR/ezme8WPkwnfDh8lEDP4W3gsm6ITfhStsYhT+Kvk0fPAHG1wcZnraqYDvYnMP4b/gW1P/4ImfzPNg03eWKS1e+H24yjv1kX0P/N7az/8p+Hf4Xih9Sg+RbgD+GI7tfuyY4TvhP2CerX0GfhSsO3zOJ+EfYIrtDcMfwaHN7+o74P1PswA0NpCHkcw1QSN69rE7juQd1bIXzKx+NXwCPZ9Ev30ZvV7FQT3iK8eMkXeEGw5Ap367qgw6wKPfPn31yVif1h0V7uHLQDOXb4TNGIe6Q2s/zKkOGGAXjLtoIOvNw1W4podDxtpEzw0Y0G/1tOnB9RxP/6CejGmIXb6zLO9kAaSmv4U1OvRZwS39llGepjxoSKaXXUjdC89hAWjrVkp5WxWACQrAt9HoblLZTQFYocHoALLY4iLXrnHNz7VkB/wuKUMqRg3oMWog2gZ27DxP6iG4ixWACfGEKwCLyjs5/Vt4XAF0ZFYAuzh230UBOJN34XwuCyC9A85zfphhLV8jj2/Me6wCvj31hefTk/L+1BWljZ+lcQZ3an+juJiuLioq2FyceA89k0ymHf43UNCVesiNvX/TMwBnSeOCI2zo28egiqcskdBHv8rVWq6BUQCzrHdjNUYNfLKNNpVKKslIxu+XGLzOWp3gSXtHvD91CuCt9S8cpzX1gcjU6CiRCBMTzM+ztERODmYzJSU4HNTVkZcHFCdHfxDKSDmzflf7/OrEN9VR58CBMjvL8DDRqPqJ/hC5uRQVYbfrnzlWK7szPj5+7969iYmJ2dnZJXXnUFBQYLVabTab2+0uUW/IU6Ge/L17q++lffvYv5/yclwu3G629b/sfQdYFGnW9SmBJgoNKJIzggKCIKLojDppZ76dmY3On3POOeecc845rRu+71t3djbNrI6ZIAgiUTI0OTTdQHdD/ef1LmUrdFMdGNedPs996oEOVV1vOOfe+4Zqxs6yaoNAFTnPwfIg1FWGh9WFNjZgscQdOhRXWhrH9wLCzAzGxiC/1uN5+muzspCXByBV2F/Z7qgAhrzMgDotG8ziIpxOSGtJTMShQ8jPR0aGmaaeDhR+jMJ5FBija/x6Y6P6hb4xh7lWtK5gxUtDqoEKo7X7JpmPADuCxBtP2/tlX5cYAe5hb1ze8WeIKSAdE9rEXdz9FJ9SAC5b2FrghW8Y7J8niwp2I53iYhT/KorvbgsAa5Ed/rXX4Bud6PwxfjyIQRwQAfglnmWvW8P3LuOLAD7wqwHZu39f3cm/Um+FE5ub29Tfg94F9OYr6l+Cf/Q+jQOc/bjaj/4KVFAGUpEaugD40IBKoMq7LOQru2nACW+Vv2yS1B4+RH8/ezV5VLGzIQCpqYraSkpw7BjNSP6U7PXjh7e57gAOnMGZ9/T3LO0PtUePMDiIqSksL4sA0NVQ5y8rQ02N2uY2KJD0u7q6BgYGRkdHZ2dnKQAbGxuaplEAyPtHjhwpKCg4evRoVVVVIkkqaHiX0uwsVldFAIT4yKfqLqqqeDuB1vPgtgbwZPX1eP99WDqacf8+r6Uuur7OO4nLzIyraow98XVZELo3WInt7WzVSnEpA/y1IgD8tXTs+GtZp5WVVfn5wv5+/BcjCOBRB9SvYn8ZGnrOXRAtJwnwtLwNEsieRVBYiMIOFN7eFoCKCvXzTp+Gb3Sg44f44RjGkMDvR6PwS+osgG8BCF0DXofArwAYrd4E+4dXAACn7lzRVvpi+o7HtHsVu+4ddEcbS8p8CQCtC12/ioUF4L33VIcnF7Bl7wYq8BCGBjDwK/gVd3EBit5X36dnYRLkL82HBvhgfx3hh/C+lwA0YR4msQU8gsQBN1kONEMGkpEctAD40IBKmt+vGBpwQllA4I03N6OjA2RnupxknJWVGDegwZ1ggZDF0aPkkRNzc/VnztTFxNTtqE5fveEeUKqXFtmLlu9cO9zaigcP0NeH8XFtYUEXAbBaVXhByiCV8BXKQGAgHfU3Nzd3dHT09PQMDQ1NT08vLy9vbm7qum6xWKxWa1ZWVnFx8fHjxycnJxsbG7MNgg6xlPhrLRZsbdGHIPGRhlSXobadOcOYMMB6Fg2g36Xn5GDp/t2M69e1O3fQ2cmyYmYyPi4hvvhy/Hg8pgAbVA3n7CGJuHED9+6hq0u1TZstcWXD4rFsRm3akzQ9I4NlTrYtHh+vbmiorq2thj8UAMdEAFZXH7ISqSvd3eq0/G2GEFIARMt57xQGvnjhAjVgbwGgkdR/BUvuRH5eyVVtrSrY3TCPeeY52NG+i++i8Liw/y574/8AvnAA30/GajDs77seTWvA5f0aBHbB5dJdriSXxcJGv3vK1WD/UuwCegZ0CEQGlABQ3mmPH/sSAHk8PT/khlu+pqJ4c/itUKXn0APPB18Mn/svXgzN0ICZeAQON9ClZEAFATSRAWoAlSDxpZiXwBu/fh23bqGlhe5tNrKLUJGBjAQkQIfT4Zx2TA+PDk0ODuZOT9fZ7XVud/3581HP989x+ADfyF7NdnzqcNz8acadO8XD9/PyFtOaVE93uehgeAYH56Za58hQ6v/4eOoNkyABsf/169dv3brV0tLCIIDkTk//0KFD8fHxFACn0zkzM/P48eNHjx6NjY0tLCwwMrhw4QIlIWD2v3ZNlRLpj8THSOWVV+jukHoU+y8vq5iABcjj0pJytC0Wn91hGH6YIzOTxdC30dys8VrXr6csbCYiFUhdX1+P646Lm4qDDZiCshPAKewOXVdaRQH49FP+4DJPUSkaWaexiKUuUh0nlice93cuDg1Vzc5WOzerPalRpwpA+A8C5ueHbt0aunvX2dZGIU+YWGS3z0R9EpKiEOXcck4tTfUs9ayTGFggBAMCaqE/UDVYTmIMeByK/fl1HhlL+aYdagAA45vmmVYLH3/gLeyKVL7zmY0BkKolCnOvrrqI/+qy/OiqxZKIjjS6JGxNBsFmP91NzifI4aIBdBrWhf15rK7e9dmTpH4xJhNZB/wa/cRABwN1UxrgFchcQOjgfXnzPs06tUbKPoqjWcgKzHmXaPrEifXY2I6+voHR74kA8EiTsYF4xOPnFnTfSFu3b5NrWJn1qD+Jk/zNLAf2agCrWJ3EJO+ly9Z16JPoeldaPXIOw4Lz4MEkHLcdzptLjuvX34y/efw9nS2FTkVsLBMbpH02NvIqo4IJUpX40eYFgEl/+v5k/2vXrg0ODp4+ffrkyZNlZWWZmZkJKo9MN3SVXj8jg9bW1rt3766trR04cIBZoLfeeovZoQCGRuhK81dSA1ZW8MYbOHkSpaXMdLNrUADYAdmo+LPVZ27eVPfGvBm5nO8GiA2Fzo3u9uzm5qqFU3nIk4pgwE1/Im4xToWDU9t2yreoM3Rgzd69ywo9h3NVqMpBDpuiB54FLIxilK20d7C32lFa7a4u2CzAJtAIP8iYxfEbg0M3W4ZvfdzS3Hzcc7QK58pQlotcdhkKAJsKeZlXue68bmfskpLCaIC0sNd4gKpwMQZXW6R+mg8B2MSmvE0NYGnL13Y//+V9Zn8fSew0efmzEAC2ue5u+j8Shbnsdhex6YqJuxLznSSyEkufvMwoj7Ge5sX+KfAFCrZoAI2+oAOGBtDf2cH+IsVsTCg+JxFAqHPeNB/vhHHuCBvPs9SfMm4n7wtT8w/x3GEeLLJz59jbmSHh2Ry9vW2UgbEBkQGaIQMWWBB+6CGWC6uZ3Y7My1omU1zAhbM4ewIn8pEfhzgA61gnWXSjm/08ai2q7kYd7wUC0xpAAXDcufPXs2+91aAzwcPiIDdaLCQ7XlY1VZdLJVSWWWCDg6qOFhdVkZoAXf729nb6/mT/hoYGuvZnz56trq7mkG8cfXPA4XCMjIzk5+dTD9g/Hjx4IGPCOTk5dXV1MAlqFJMe5FP2tbfeUpmNs2dVrt9qNWYQqM5IyqMYfPQRi1Qy7EGks1yufper19Xd/frEa6dwqhSlVlh16MtY1qDxXxC92wLwF3yFXeMsWTbIdKSzWl/BK01oYg0CkDpl/+1BTzWq82x5VderFPuLNfleaXgTx24eG7o5NHJvJAUJbCQ1qOGgEDmY414UAP5CthM2G2rVp85PeXWVEBsd3UsAWIqGBpBvxiUI2DX5TMIR4yVQeALynV3xBV+v/SdlAePfmdGYVHntsxCAvj42R0ZhJDJJR7pWVtxs4B6PJf7Kr0lOth06pFEhqaJsB7W1NQ0NNVFRNdib20jjYmQGcfF3FQBJ/tCY9fOd/zEXBPhgMx1hxfi4wftiySOLivFxwVsAVN4jUOTn0ygALG0aq2alt7e5t7d/QrE/zVsG2E/CxvyhY2aGIsWMNr1FzmStRe1pnKYGHMZhbIP9mcXCO6RXAKByvRI3QASkARv/em3sUuWFV/7q2bOv0HXeBsc1lX+ytqa6PPmTHMsEOhszO78ZAWBuh/kfevednZ3M/NTW1jK/f/HixVSv79LZZ+o/OTmZKRQODnOImJpRWFjINFFlZaWpIGBignXKUuJPZKjH3qSmqZw/D29Qzfi6283fxG7Bz1PJ2DEDFwCK4sDG6OBf6c95A+dexatkWJ+rFG/AJ5aW6CCyJA+hjMEcG56wv1GnPC21ZA5zVJf4uXhc3xYAD3Bux4rQSbK/soM3D9a01Gxgg84+2wMFIBOZRlOkDHCof1abZYNnSn+F5Sa1aQJeAqC8NNGAnQJguP9qwpjxHdP4CG9fAb4B2AMhqNcVrf+eD7BjdkcyfLyw3wIgSVuG7a2t5Gm2cSZh3IWF7vj4xNH45ssrhy8vHaqf4lsSHxyZnz+xulpz7twJEwEp1drgcw6nSRBAGSfHeY/DCPurmiiuheR/LJYwerR6GKeOsxU+O9KbNDSr6BjnvKk/xHy9lJoIAI/Ug6Xe3juUgcmnMmAMEePnBOPK21I1CfDX84fRJfRmf2/K4FsQrD9LPa9hT5wBzh7G+WqcOLlLZdNXZkCgOrsw18qKMhNgTp/ePfP7zPUXFRXJJB/F/jvAgIAywDlC/Fh3dzcHivlFfr20tNTMZVQpsRdI0plKz/Hq3cCmRJ3gxdgxlWzYbIYbax4D9q/8OLHh3W+/W/9KPWk6mC6g6zIuzSNzJh541rCGHYhBDLUBgkVANMADdbzk3Ugg7K8q/T7YgDlKRA1gO9nphdC/ydKzOB86TUtbWR6G1KbHo4b6/aKgQJL5KhyclzEAGQr2+iJpR9x/hqQorBb29znR6Ns+JADOYOnk0lMJ+OoLXAdAF6O5mXlGagB5mblIOlFkZ1damivhkeVfnHvNsgLLwoQ+MaANPHr8aGbmxyfsjhpX/Ak9K+18JeLNUhmNzCApIB55iZ2BGAeOTbj/Wz5e8IFNIA9be330gNef/srK4H2h/gHbUdWDG71zPirHGi6QUGjbMkCb7+u7SRmYUuzvPVOIn8MLx/S0TPzXoDF1SzefdQkzEA0wLQBnoeyED8GnM8d0vTgnWF+nDwyXy1wAM2Oz2Tjxn2l9RgBkefK7b4op4Ac49ksB4KgAv8iv7xSAsV1bEUuJhH74MD0t5OQg3Qk4oe24lWQoArNalU+2sMBEFhnQWwDysDeYpqdzzZZJ9g8y26dpqjSTkmgTqxN96LuN29QAnpZxwAFf/WVFNOBZARjdpn4eOyBI1pPhG3SkeAtxehw0sCrFyOMmgwBW4HyLHYYGlJTsdP99DP+anKLzPcCJgHERghcuAHQxjKQtLl1CUxPDUlKw6/CUK7HD8u9+v8Uy8K5ljiXVp/cVaoXdq90112tObJ2oRCUkZo/fuyaMoeDp7SwQryJTPN1wG8O/Qv08+gjYfUwQ/D5g3z0LJMiGfGdM2W56/ZrXOjAfO5LNAz0Y68WHvXikNODUXzloTS/MPHymOK/46CHF+7SDOLgfGRfyvmHrfX3D5eVkqbn5+T+8cLV/QGTAXY7S8he7aNrtJj2RpGhpirfS6dNJ3t+8BpjEnwZ0v3x14IAy8V7FTPx899LSEmf18JiWlkbHPz09nZM+fYe2GfwAPymLBhYXF/nFvRur0wkpJYeD7K/IPe0B8ACaj2xmLC1WuaX8PL9LPfPCn8DeSEbeYeTnoIBMGvyIT2amLEpYu3//Jm4y6c9Z8+RLOu80iv3uSuCA0gCPd3oTyn7dnmkSFXKsremkes2jHdg8oG1pJmrT51CwW1JAXgKwhS1j/g/FXD7qb5nqd+EbVxMD04BLPzcrgdkW6YzTm2R6p7paLZfgeNSZM8yIufAtl+aKOeWKiclJseS8hxMckOEUguM4XugurLlRA4E5DTCmA01P60YQIAJgDP/aYUdx047hX3Na/JE/DTjD7/hlf4FvAXACo4Yld43GPx79+jffsXJuYEZGQVHB0fLC5PJCHDqI/cRGwdG+jbLejb4B9+NJi23u4MJU0p+MH4hPQGY8QEuAsswXuOkFGYo8BXDkg3RjREL7oQFSxWEE53c6ngAAB3iZ60+iz+sbMvmHnyQ4NYhf5BmwA38Sz6Bxfd0oJeXXJ32CPwDcAzQfYekPobC8rMKFzU1aoAIA5AnvhjTqL+vRGLt4PDOdnd/H9xkHMMIzBIB/k0F3yXyuKw0wB413abNRTRUtra6ynLSNDd0jSaQtBAjvrD4ZblQiAAZSQjtC/TwuYxmFtXtn/y/DF74ugvJSbgUh0ej4OEWV96+82Lo6lhwbGtnfBZfFsmWxaDExugaNLn+BXsAxGTp3ye5k3IBpDRBWl7lAWPGaD0rvxhj+lTleyhgU+8PH2A2Wj2AxOqCRXfuHUNzvxOX/9vF/+29YAmCFNy7ADBKAk0ApUFaF0hiU0hX/X9/u+ST9WlpWlsa+QQXt62PpMRskEXrYN5Xg6Xt7edR6e8v7+spHR+3Rs9Vvud6qiFJjABVIKQdywjkcrAUTAdBcLkkHW2ChIVCsA3gxGuB5AtnvIWYb8AvjY6R+fpHgpPgopjF94y4ZXAycHnvg8oOCywUoK4BP/Aco8ENEfHxQA2M/Af6wtI7gNcBqpXfIMlK0mpvL/jo4OjroHGRyRtx/SfeRIupQ93zez7P3Nk7kA5rsBDE7qwTAbldCycXXbverm5uXgiJYbwGAsSDAEADRAJkzFLQAfA0GXkYBYDFTdhmQxsWxIEheEgSR+tmbeVSdWJn0NdCno0HgftZfexO+QZ5/OhLQ3m43pgPZKqzy1wQmUHxe8j9BTJeN3fmqDoxKtNBx9YMx4N2rwLmQRn8P1uNUCRT7M+FO+93zvT3zPb29VzfZvkj9chQZYDHukfzRTJKqUL/3MX4+t0KR/rsyx5RHdr+ft/mgenDkXB3CpK/wIbjH52maUWKm8lOeDzybqN7EMbNlLVQVzKStvDDUNvsmQ5bMTNX2SaNk68nJtampgcnJgZWBFKTQ/WcvZhyvQWN2yOTGfeT6tjaVHGbvGR3lKemUpi5a0u3JybwceanroOVK1P1vRCEIUKoksX/kCKaNuUC1tQvaorj/PBruv1SKT/wSduJtAC+1AIgzQmH3Tq6JAIgGbAuAj7birQFvmh0KZmV7toOA4YpUkWKkpJie/Xl5J/tf9pli71ACQO7/b/HUgNCJzQprIxpLvWSgzN3b09XT23cVO2UgLS0Eh3QX6o+Zy6reJn05eve0F6wBMTE0aStsOeJABLyXYwOAF6MB4stL0l9CAddeQ8fubTAdxC/y6+L+7+EKiQEbX9tgMn0NJUCtmbLWQ9psWzdf23nAmK8pfa+/ruZwk6qZNpiaImGr0ezBweXu7ubF5iUsUdzSkEaPhBN49mT/hQW1Eu7uXTqFaixyNKFCdf+abHqiMvStx8U9ZI1EDyGqH98JKQiYvrtkzAcdLloU9n9m3fAvNKL9d1rGWqo2pqdZo0zFiADQkrwFwLcGmEFqqqEBpLMpsr/z8eOh8bShXBn+PSbuv/o9e+CNPf7XvfcB6gAxKR+KB86FrgEEk2BNaHpGBly9PZ09A5QByQXJUZSAdx4IOPzV0/M8+2uzGce2SZ/2WU37uQ2chUnExzN3zk4ry33pCa5gJaAyxWllLwoJCir1L6u9Vp8AvsFsj5H657IAGQ8wtdKbUTQTKZpm1+wr+gpz0Lum3nSEF5qc1YzCXISq+AH4QFYWjRkhcgU1gGLABkrS4DTC/ul+WSUwjvECFGAvtLbiyf4UuNdu4UoITkFkl6HfTqWhAOgsKGYmLBNQAuBz6Nj8UPD6kxTQFmfsPhEAmvE2L/e5FAA2xJQUcVQp43TOqb2sWlcO1EZAmuuJOtD0sHgjJSWGAKi03+jw8MiofTh3eD3a81Qcwg1t356ykoEMmrcM9Gz09Hb2DvVffRoKUN0uXlQdxjQ+/lgFxQb1b86kG/6+8QeCAt1TmkS6koqmnw6faAfuBBYBWK1UOx4XlxbnMT+DGQccptZDWKCov0HZi0J0dDRn/qQ9wcITcFsI7vTALYB8zRnlB/gxADIdKNWM0rP009QkKQ7qzs3MzWgzNt3GiY0MCkLh/fDGSxcAC5R1+89l5eQoq6lBZ6di6sVFepCzmGUcQPk3s2iEzfvBA7UpBk7XUgCUVVczy/RsOUxgFbgWtK4/JfmeXuX+c+3eiH1h5OCIkt7CeiP7/7kUAJY1q7CgQA3Okm+Yd9N1hgKuo0ddhS7XATUGwBFgskZYIHsA06jxrP+Jyclx2xrnkxnsr9QorNB8tHwJAsICujw0QwZ47Fnv6X3QOyoy4HZTGkwLAGlF1cMPfqAqZGPaupP6Q1n6y04qbjrBLsoOwL66a/ksoFuxv7IMmAcFUVrU0hJ9wFGMcmyvGtV+NhyUgWJhf3WswwsEN3nmvH5u6kBa59R+LuziCq/jPjaUZiJhfHx8ii4wwK9wsyBODDV5Gdno3z0zwyIa0ob60FetV/tpxMwUyYRaHAdeAy5BHa2h9glfDt1FIBbKLEC7GeGvq5N1tpS3LQLKTGy7BBYeUzKQxXsVFZyDLhGk/ty8gJvALQQLLwHo0cEVG1NTk9Pz4wfHKcPyBgnw8yoADLJIUlVVsNnUPn/NzbINoaukxFVgdV1xWX75lsUyAk8OHaRwTHAXnteoAWvj67bZ2anZ9cm5SRS/bW74N7Dra+aD4JCRi1zaMzKw1tO7NDjBvhDIiKKu06gaB/Omn6d+cmXIWQ7lo7PZM/Cbtk9zyI7JN47dZSLTKB+P7ulARzOa7+HmCG4DM0Cm+UE3WYJJ+RrEYA96mAfgMk4KJJ4FL92GNuaIuDqprqZO2J/HEN3a0GSdLJTH5V3c55k7fXIvoN7eXi4EI61zuu9O9n/48CH3jeCyYfr+/Bi/yK+b3OpDlsaQkPqd/d3opiOdoqXsOpI/hakudNlgY0m+mv8qJEvWCFj3MUFUAli2LdZ4okZ3N5xOVjE1fud2EzS2WjJ/EpISkGBmv0KXS31pfV1FpkpFYmOF/Z8Bs3B3pnBLD0UAZG9JGmWXHhY38JiZnZsunUZhuZH9/7wKAMEIjlrMqmU1tLfLriPuoiJ3Xp4rlxHAty2DOfhODiueDVc5dyFBBEDnMa9L+3Nzc7Y5B2pz8CX1KusnLOyvmWvqEgSEF+ylNC8Z6JWnQNoCYWmgPNeb+sO6/WdmJouZNUmK9pCgKVqyOY8VVgAMCEa0EVLSfdy3nX/72IXZ0b88ij8RgAvNcEe5ckND8w8ftqOdp+Wo4AmcYLGQGljqvARVpxOdLWiZxvRq8WpKQ0rJ6RLF/vF4sSDRc/sHuvzMEty/f5/PA2BWhwO83OSHi36Z5dd1fWVlhe/yLXlgAHfa5H5Bx44d446hatqoGaSk0OuSodS5u3db0cqSoctchSpqQApSGOTR5WcuRbbYfIiHAxg4n34+qTGp7nSdEoCcfU8Q5QEWL7vd2uphanJ+XlXuiRP8/cp3NNj//n15losExMyLcpAMMDUczqhUtr9WLDQ+Tp4x+ijPqTNDRK+Uu9TcHADCEASsPJgTrFo28KUiefXzLQCshHPnFPvLbqsDA2yXGwMDroGB2fh4S/Z3LP0q00fvSJEb57xXVobC1AcOiAYsFhf/1z/Z/N2i+9/iNujhcf8dgRD69rrCiwg/JJ9FAVCG3jJAZGB2rx4BlAMVPH5xm/pJDQgrWNKsQ5LPxAQeLj20wEJGpo8pa5jpkk9isj+6X2/sPNf0tYGmRJxFYGDzGB+Xx0V1jnRq0Oywc7SNvMDBANIcx4eZ9GPSg/KwlrVG9reetvJ4KONQOPgrVHDjT2Z1uLKX2f+2tjZN07jZPff8YXaIY7wUAA788gMMDvguX6+vrz916lRNTQ13DYJ58MOTk+J4dXd2slgWsch0mWweTsmkR72ABabR+CJ1eiZlJq4xThVUY0pJeQk+ExwxckHT07GdndQAB+lYJoAyGmC+i9Th8VAV6DWSpulTVKKSzgSd6jSkmZkVInthMOdJ2lGjtPHxJBmlCS4XE9G8Fh/3VtHefqb81x7+V55Hv/t66AKQ3bH6V+cVjJcYDn++BUBckjfeYI2SHmQ9hnt83DU1FT81ZXn82DI4yIqhAMhe0HwXDQ3sKFAIeih4oLh4kE/cG4q1hmf497/62TzP9xsp+Oky/hX2BdtBAI8rpYAhA7sh2qB+2mko6qcniH0AuxwduNlZtW63pYV+/n2yM1NAZGcdugMOe870iROL9fX66cbvTjUlxiXFrZ9AYMMAbB5OJ9WVF3jw6AGTGAwp6BUyjiHT8RI22MhrK8dycLKp5cwJ6+mKlJJDb6hSePHg0764CzTZn9TPlcDc6ZNbAzG9w2Fe7wfCcGyAue5XXnmF7N/U1MSvqAmg5iEPKWT6Q9P4N3cfnXBMSCmxIigALriWsUwxZu1sHS1F9aWWU3XWM8dT6kqsQPpnVhoyINzZZekaT+hce/BobXjiQ5AQGEJyKNtiUQKwtESXkfNHKu353LyTm0VTBswl3FSnP3ZM+SJMpvFsbJcMUakrsq2IZWKiZrn/1KlHjY3fXDybihDAUxqE/6c4K/wq8OabL4P7XwD8Kdo+C4BMEJE5WFR4sv/EhKttyn1lyvKVSVaDzPSiMfdJ547dm548fb0gZxkkOg6UDB4oHogqHkTsUWF/hDzQ/Dt9LdarUvZCoEFT8zXhKQNKlaFsl/IqN9ifxxglAGnYT9TXK+aJiaEYUO7Z6RbX1xddioiQq7ZuVfFBbS08pxKSEpNOBzExk16CrtOPk0G22ZGR2dkhOLrU0KDFQodLXTj/ouwu0F5fb62uTgGswBl4owg+UASz7xQFGSQVkf3p73OXf+7zzEmD8gQYeSYwnwpAkaioqOBQATM/3DKaD43hJxEoGFW/+qo8sIxur314+IHNxgwc1PY3miq95GRVUDnV8vDkoZqaloYGKSiKZZTZZV55CA0JPbjQeSG+Mz6tO40JQ675Gm0enWu+tmr1eGJiojc3E+1ahjujEOfZ1OtQdxZnj+CIyS3m6IswCiLbMxrgqMriL/d5Dh1iJi3F48k6tFJSsnq8kbQUH9eQlpqfmufvXl41HwSkPwQytv9nxunzgWiTjgl7P8314yXXnank5C9ZvvqBZaxBqQIlurOT0RpDe8kXMeG7+7YH2h6jwmrzsuKBgZKB1X4X3i8OPf/zwy/6WB9MVNP8fxl/AJh5a1+LPrpS2F8dvVEmpO91PJyGzwLM+dGBY/tnOMdQWzzRhATWpzysV6cnMIhCOnRsDQgC9OusVsVx5eX0J3gNiQmU7CQlkfL4lrh/bEUtgPAaj8f2WnpfSjO1QlB0NUiQ9zm0y0Hd8vJyzgWSh8LLujB5KDxHhvlMGNkv2kj9B6MBZD4eWdysCbpWKyvgVQgKAJWSBcUUCeuJH8jOvr9dULTGPZbGC4qUhYJVoBPRndFNnU1MT9FTY+jGAXympxxLjk1scriCQ77M+JOdGe9Wo9ok+xubNlME2SL4B1Niy8tuj2eKxclbJ7vwRTZF5hoGkrM4WUDGFYJ+NK4kON4uUpqIbCmbInxuEK0YptfsHBiXy+pypVomK2O+HBMz9j6GRiTrx5lC7M/yfCLZ9ybQBShuuAcxOHB4YPB3DqJcUb8yOjshwCd75yszgwzsO2KBE8+Q1zvPUn8mPluQe+VR24zgxemkM0pVYMcTlKDksHZ4DWvBz72gMdk9NYXFRaacRADoZPAyjPR5NEimZVsAeMzyzWplynZHK1Dv9ZUKZSGBa7vOnDnD4V+6/0wZM/VvCIDxCDBGA6EvP2PGTMZk6Awr74pX0TQJlaQ+vOdGS0FJWVX4Z7/Q2Z/oVIYuYAqyXpZZKRtsi1h0wikCwMweM/4yGTq4hDC/ydY4PQ27HR6POAmKWuidUwEJBhZxWpwd9lAEgKguVAZaNo+0g58nATgHbAGaqRmbbrfGdmjhJKBEi6XCgop3lJ/C5u5wsD8zccD2yhoLYnxOsT8GeKQTgeJGw/3/nCABBt7dZv8cvCAwjcc+RvMVsiUjmRbqrCPaXpgAjDjgPQjq8Syi5CXfMN63qL/CA3I9gwDsNyiKdKdo/rFDLKVk0YgdiFKvhogxEQBlBmT7z3CvwaafoMwP9opETYUdRwoBbwFIwOdPADaBxwD8rzon+1MDYOFWQJrFoltAMF23vEzqp+/PdB1jVXor6kMBxr9kfzFFPOL+0wH4POJd7/AkgofeAuAbEYx7ieW72Ddsebn/63hB0MPOgt4CEA68rQz/6aUSAB6HfY7cCvuLbe8EaoG+PYPEaqVTZOwip4b1AgETiOL+M4pE8asiAPic4ueT/XW8OIhvG8Ge6PoMBKBrWwAG8AsFQwA+Z25nNMq9BIDHMZ8U4HKJBuzY1d1rx1CRhiDcf0kBqeRm8TPDvxFE4FIaEMGLF0vM70z+vFBfREPYkA78dnwOEQ3imJcAfApMQBblk+0LtIID+gFjD3ojAlAaoFsgWFxUmR+7HSkpNIYCu+ygXeUndB2X5M8okpGYJe6/OkMoiGBzP915/ecpWIgCfq2yvWEBfgPtcxtSGUUVLNL3qQD1F1WIEURDUOUVB1xX64Bu47YTTo7B1KP+MA4DpH6dg8CUgURYRANAzM4az+xRxM3JCbvOff7Av/s/P4AmGX9Ugz6lpXi5UK8Mf3ef11/+QWURRBBBBOEWAOKECACmNqfaP22/PnPdBhttXpvnloQVqHC5LNQAJoIsUCPAPKrZgi0taqegnh7qg5q6VVDA0WDz07FmMDOIzAFcHjQmoGRnIzFx//Psf0JZBBFEEEFEAAQ4CX1L79js6Njq6LjZ0TPTs4CFaUyPYrQPfTmunCfrAOos/RbLA4s2+zGGhtDZqfbtfvAAdXVqDXBFxe7T+yp8uf8ZyiLBXAQRRBDBC18J3FGvdWyld6Cgx1KDVk/nQCcHAx5rj7lT5xH3kWRXssv16yxXHlrW2jA/rzI/8nSS6mo0NlID1KxQ01gCBoEBdYwggggiiOCFCoAN6KA1NDx4suxaVt0t9PXdmrzVoXUcKjh08DcddLkSYq64Y9buqKWiNpvK+F+4gNpaJQBnzwb0mEOD/TfwWSOCCCKIIAJN13Vs4wfb1g1gdJTpHZXcHxigp69PTzcvLn7D6fxva2uXLZYP4uIuyLY/+flqpSIjALr/TP68dIgggggiiEQAD8T9F/YnyOwczi0r05non5jAzIyLezI5HJb1b1ssX46JjZVdCRkiyK6EkYmbLyUiiCCCiADMKOoXDfCCpumyFQmzPXNzrrFl1xWn5TtXLd9MtMR+RXYljHj9LzciiCCCiAB0bNv8rsssrFaa+zF+thPcBYsFCUAlXlpEEEEEEURwAEDnNvt3+Vxkp9FcLo0LwX62ExwseJkRQQQRRBBB9JyR/d+d/eugcBKAy6UsweW1E9xLiwgiiCCCCKKN5M/sLuz/d409HLa2FPvX0DZRjvJMZELDS68BEUQQQQQRAeh8nv0Hn9vAgezf4FZGkP0TkADgZdeACCKIIIKIAOz0/UvwLOJcKHEBNC+8vBoQQQQRRBDBgQ5g2szWqm5gVwEgNLyUiCCCCCKICADMOPEuwK0MiGhABBFEEMEvzFYQn09EEEEEEUTWAUQQQQQRRBARALQAfwYoAjRT5oUfAX8cOBbo12DuC9nA7wC+CTiggFd3ntIkaoC/CfTBBLR9ts/gGsHDiWBxD/gHwLvAwTD91uvAHwKOBHX/2cAfAW7ue+2+ppoVbiMofAj8diB5r2sUAX8aaMY+oVj1fbSGu1v4Pksc8JuAXzX7iNP/C3zN92lfCOSXHAX+AtARdGF9AFx50ZvBhY4qYAwYV4ZVhBtV25ZorE+bB7r3ZzpSBMPAgirkoHDaa8rANXX8hUc90CCGwOEBVoBlwI4XiG7sByLQTYrVyy8AWUC1Yn8lA3cQVhxTp1ZWAcBbAGjTCAQTiMAMepQAoARIQVA4C7i8NOAXGmWK93GKx+C607IyrOAFYgpoRQT7pwGE9osuAEYQYMQB4UGS4f4/53MtKAHAjwCPySBgALiLCPbEgJcANAadWRQNkFDgNn5RccTL909DUFgRQwgIKQZeV+yPFoQf+xib6y+Bf/9ShALRz6efWoAheScaiYlqx/+CAqT5bdvGKeKB6n6Mt3sLQApS6lB3CIdgDhsbuHsX09PYRjWtCNWnkOn9fPnK7Qhg4VlW14BvYDd0deHOIyM0qQGOwg8uwxw2NzE6CpsNS0tYW+O/UmyqwLKykJOD8ICnHhtThbK8rApI1+H1yDajdsxUkRn0XEXvmirbEmWXTNXd5R3XiKMGrMB1Da51uMTDhAYtDWlsD1ZYzf/U68A0QkQ2cM5E7ZrA48fo78fKirR3of5TKC/ECVPFshPL7VjuxzJMopBX9NlcDYr5Bkyj5QZaprwjgGKgPpRuMYKRKUwtYnENa5vYjEZ0EpLYinKRexiHYQLNuw8CtG17FwfykS+nwvo6hoZUD2SNuFyIikJSEjIyFGulpiJ0sLqnprC4qC5ExMXxtKpjFxYC6EGPHXYIYFG8so2GvTRgZgbNzXA6jbINgYbAJtk/MDCwurqanJx89OjRoqKiYAXA0AAyGSkmMxMlJaiuxsmTptilrExR1dj3MTaChyDykMdG8A7egTm0tuKTT/BQfZfItaLqHVRVoWpnqRhZINoAnuKDnQXHkr5zB8rcSMIJqaiQBeDRI/T0qObHFrKwoOpSBIAtkMzMRsKSq6xEXh6Ch8eDzk709WF4mJcRnVECYLEgOdl4IpsqoZSUsAgA70jZPREA3kHWeZwPRgAI/sKzZ6kBytw2PABRhCK2hzfxpumfGroGZLFRmKtdE3Tw8cdoa8PcHIT9UdWA108I+wcnAGSulU+xYjPF/jRTzfUDk/fKjsYe13pTCUCW1A+Kg+4WpP4udA1gYAIT85h3wsm6jkFMkpaU8aOMAhQUohyoAp6l5je8//RTYoOiAVGIakDDe3gvpmeQjp3S48lJxdEiAGx1ZK3SUtUpyFpBY2REdT2enITG7s1+R8THIz1dqcvx49212T849ANKHRRinmtjDXvFAb29bEo8t8+C/YYdOGiyz/Z88sknHR0dCwsLhw4dqquru3TpUgn7bpACACT3osIVPTObskAHs6KCaqUczzNnTHVZqsX4OJR9nx7rJVzKQhYVuxKV2AsTE6pFdnTgww95QYpG9SuoJvvHIQ47kPSsBizu+ntcLqF+GiMLNpQTqrOGCDkrew6bnzwxE/PzcDiUAIhuigtSXq7u6PRpVSTBgCxz7x7a29HdjcFBnktdRgQgNlYxPqOM4mIcO0Zt4GUoBiEKAOWG7M+m2fMp5mzRJXiXGkBjDSK4KINKqDTAJTLAs7+BN47gCJ3BYzgW0E+9BswEyf6XERZQfVnldCZ+/GMqQS1qSf1kolM4FVLwxahO2fcAZ1DsH/zFSZuK/Wk3sD4l7E8LEg/x8DZu38d9+g9Ugtn42fjk+KioKJfLpS/qWVeyilGcicfAGPAbYOCLAEwJgKEBRXoR3cql2y2HWRfsHXTESNbkaFIGBcBqpc+lWMtmU07ZuXMIAqR+9vD793ly+l4kQPY7ht009m1xc+cWGh6ff3xVv4qjMTvb2N/fKxe0uqoa1Ecfwf72Lp/Af5ZTmhWAlpaWH//4x6Ojo8XFxZubm5mZmeYFwBuq9PjFy5dZmJ7x8fn29vn2H40x/GHsozozdXVPMGtE7SUp0m7eZLOg8lMAeGQkuKc/QiOrsirJ+2JlKIMPFHhpwE927VrC+yIA9BHCAdLvjRv49FOeWLUQNrNsZJch6yAOMjhd96zPL86PLo729q4NDZHDWXhslvQYAmf/69dZgGhpwYMHMQ4Hw7oj9fWJiYmapq2trc3Ozo4MDq5SG0ZHeWuqyC5eDDHrRPYXy/lb9X/wO1n/82qPbwEwjexs0QCxrsddZH8xlhhM48gRmvn0cBvwCa1ztRsWi5LlkCFkSSP7k8tI/WKxiEXQYK2trNBIVdXVZIKvK/ORH2Oqj6KfkBC2tKLcDdtX4p8r/X3fzP7o+lgI08aGb+HWNVy7i7vzqfNVVVVnC85arVYRgLm5ucetjz8c/DAJo8A//rcH0n4v86S0HdL57+Rsfi+VgQzHDYfjxrXDt28rsmBTYj2QmlmYlAH2OqoCO4XdDk1TV6mtRUAg6bN7s5PT/aLjxfOfOqXYj+7/1hZPq/r8T35iX1+3H7DPvjbrQLbZwZa4pxpAf1Fsl+b7TgDsz7TP4uLi1NQU2R9g23w8OTnJUGB9fT2OpB2oAJDh2cKoTtROeoIsPYdjoZ8xL51NvkczA/L2+LjYzIiKCikAtDM44599WJsUAEZdzBFXo1oEAH7hHQS0wws2m0H9tIzkf13/3pXvf/f7YeEBnlg0IHYj+RLqK1BBlyQFKQxOGfbOYGYQg+1oZ2KO3Yzkw6iUfgObEMyPLdC7uXWLGsAOSuqvvXSprKwsOzv74MGDFACn02mz2Zj1Y9z3iD9IREZyTwwOggLPIe4/j2eys7Kys28fvvsbZ3+mAaw+BA0mTN1uEQCb61rX+M80oAlNMAEWHeWTR9PsPwDc68TdT/7y9/DaaxRFJR0hoq3NEACmsw32598IBcL+y8tRfz3qOFIqkQLabgOGQmUM9uh9hgXkfbHpq2lvXqmvdwx8hODBPt6GNkYAi6mLzD+cPn2azTU9PT0mJoZMxLb68OHD5NvJzFSc/g2nexNrf5KUVEdXhpoWeNWstq067jhWb7SoJvveeygqUmkZEYDpadWCeVdMI7DjS8cj9/BC5h0vo4fThSX119erWD4zk8xIAWBl8XXPo0f227ft8QWORAfM43+olQ+E06k7HBppluczoBvjOG/DNNjdY+Pj4w8+gd1uT01N5TBAQkICXw8mAhCPzQjfGaRQAvs/GqOiMmLkzSsnZE9YLEYQQHu49VAEgEGAL1+SekPqFyOE+qkBZkaNZEaQ2CgUGLV5Z34KCuYbG6/Mn3HhzwK/D6FgdpbRIR1/xc9k/4u4SFWrQQ1dwnSkUwAo6kyA8j6oB1vYGhwfpDsi4wHmBYBKSC9GOig70quvvsoeVVlZWVBQkJKScuDAAdb0+Pg4O1VaWhqdrC5+nvUiQwLMe4bm/sfMZeXm5ubk51qLinrCIgAyOORyiQx0XruWM9MpGmDmtIzmyX1Op8l5IesP8eD7aL2He3P/LkcNkPDSVKAQwOZksL8FFoP9WekIDZL/oQakfMD6SzmDlHzfk0bogDK3oWmhzzNh+zJuCK866uscR+ucDxAsRjFKj6cXvY/x+NVq1VZfe+01ZqLZMrdlboW5aYYCVILey73lieXDiV+oSyzVk5O1wKvG0exw3Ot20LF64w3U1Sl2Zsu3WKgHinDYOfm3w8HkrGIT5kj5BxOkJsGQWno4T8XQ4ZVXVBKppoY9i6eVmyEnOnJyVuPjV7/1U/wDIGBJFt9faUDoc5ooscz21NTUuN3u+fn5jIwM/s1X6CaGOg2UHZSyR3GllmwsLFANePOmBABguRtxwFpHh5EI8iUABvszm12IQiP/AxNIezYOcDCCM9j/wYOKCr2xcfrUGfeVM27UIkRQDvv6VCNht72Ak2R/0QAN2vaPSWM0wCiV7D+HOYbGvb2bpLCREeVJmFJll4tBEONQ/niKeX19fVNTEzWg1Cv8YiIo8wmio6MdDsf09PQsy45ETReRoxzseAGCzojh/lehpLC4sKCkgNQ52Nvbs6w0QAyhoLJSgoCN6OgutzsXP9MA5s2wB0h8ZqcEPkDfIzxiUxrRRnDpEgWAFipHG2S5uNiAc8L+tSE3JmETseSK5BRdaUB5SBMHJ4FsMyNtxg1VrtfVNdfVr6+fZKwKDUFhHvOMeun30BXNz8/nLBQ2Wrop2AabMVlpaGgoLy/v0ZcfTelTs5idxwX6TEFMkl//I7aN1x0uVi7ZubERBuihUwyokyxSMg95n92V4i2OPH/PniDL8Vu9vYqJSHzsSlSOV19VaW2vm1E+1sGDKky3j2PxMQLC+8CvigDQVBXroe6qyZs75fF4cnJy6BfSQSwvLz9p2guM3ktelFFrN9h1xYMzDRkNliCgd6GX7C9WjnI8i5kZSf2rI51o8f1pvLhZ/9IQgLa2T7cdf1I1y+HMGTaSraUzm5vlm9AQyBDwBVmjuX10M17jDZHKORmEGWneCEeUG9FosL8B+obsD2QiEtyIa4SBKUOH+XmJrkx0UF5jaIh0U1pXd+zYsdraWrL/bgqdy7fGWLy9vbO8ZX6Lv29yknwZtPtvWcrgfZUnlJeWF1CH2B967oZJAAhpl/n5g5ubXUAunJQBxk/hmhC+hjX6oX1aH4/IUe6/RABhSf2TTdgmDfcfut8NcXWz6iLGAf1kJNN8n8UMSaRiLzCQMlL/cbbCerolm/V1ntuax1OEGAQFFrsTThJaUlISuZ5ZCLL/jpHBwxwSYJoCgENzOHXnOtaDXCtVb8WpEkX9tJ0gx7CzMLBgA2BXokdpsymKoTO7J4SvqBns6nRh2XjotZD9d6L0MFY0LELZiMlSWnduM79z1el4AgC3Ibi9c1XVQXjjLHyAzv7Zs2c57sLMMKuA3mHYFoJR5MToVNJMqaj3oJUxGHDtmvdo8HOzeoT6afRDa7Z9/6IAJyTUbW7O37mj7O7d7jt3DkyMnWkS9lfH7+QjcHz9WQFYmZtbnplZmZ5ejltbyUQmyZ3Bii8HlgpBBycVqSMYsdtVtbPvmQKFgnLBhgvQxyfLc2QfPsC36FVlcYSG4Lfm5ujFBCoADO0M9/8kysmatOiKIrI/bbS/v2fhZxrA0Y4waAAN6ARyty09TGuByPu9Wi+PC1jA0XC4/+3thgCw3f6M/fWGeMT7/jnBRAApqEjRUhgEhLYIKg64CrwL3xDqp032JL+J+jrmUPTcVIQEdgExfRvYAe+31Ie1A5quBVmE9cpwyu+8AyaFSNwycW5xkU3clABQJ6gWdKEI9qncXH/JwzpgEfgz/lJAbYBDGZzyBz50YMapOTmG8QTOPwZc8cH+NJgTAIEMA4R5JfD6uhpZoanAKi5OGRBcEDD5+LExGuw9c25wUNhf5VXImHSyxBAYVi1Rd+qK784P3pmPvTPvmqu6JOyv8+gRCddCFQBieXm5bmmlBMvUQ7J/tu+I2wILLRrRMr1SdNRsOsZu59XoRrFGGdPRdYIPMOjmB/gx/rHGb/G7DkfQ7n/i6hFhfxWlxUepgFqCgFtPgwAJy0LHgpcGXAyZ+sWvJPWLkQJCd/8ZURnsn6pbhfp5pLSHbSKORADr6ylQ7M8jQoUVIKv8E1+TG0n9ck9NivrrGAGUwGOu1H2664lI5IQu/vgZ+8zS0hLn/OycgsLsP6emsPvI4lB+PlFLDFI1/wXUYF68nzKwsjhVQEWwU0i/MOkKUS3oQiUl0X9Vo3b+KfUN+MeVZ9hf/r7mwLDj1zucX1BBgLC/2kbzA//sT/xjhIIgBEDKjabrSl9YoDwGpNhUehkNljjgoetpECCju0wpGVM/CSP1T8cZAWAOuEPLyrpTX39nYcHBtkflFvefVTmF4JBJ8ybmhNWVL68ur6yusNfSi2Gex8/vdMHlhtsDjwyKSzLN5BQgKgaNAkCokTS/iNoGXC75YqDTTQ33v2Gb/SlvACgAEgRM9fcbo8FKm8MEEYAcdURpaOwPDX3oE1vCEo7Whur+2+0G+0fNLzXoaso/zc+kZA2BRQUy/EvjRNJkPZm0mIAEeltSg5o0moADjFTA6iu9YWSzKlwnSP00RgDAPVNF7vvFDC1D1vp0bXQNDw9zWjojV6ahmY7Ydqxn7t+/z0lxnKqYgxwOkvHzvN/gd4nIhj8Y3qq3D2smO+ZwKL5jB+RwAhMp8vtN1rcPATDYf1PTyIf8bfpXy64D35jGlQMY/+q3L2+evnwaNM1LAD4zRJsITxWBiaKyUAJukQUFRhxgb2szggAuEAOM1D/fBMklKPdfNp8Tu1tZyWUQnDVI/WamQX9KnhpCRlL2Ki0b5pyJRSySiVh+AAuP0um7Oe1gdI660Diws7GxwSn/HN+P8aEejKnpR/AzhLqANLKg3P+UdTWqQSNxGlPMngYBs4+MIEDxVDigP5sIiguW+gk6Kjvdf1roqX/ee4N+RrH/akP9ag7cY6wgEgTdTA2mUA7YgGU/+Z/+lJR7KclL8bB/i2GBRreI9WixGGvK2Yk0s7piVRqAV4Hrz007MVL/MdO5Qv00UXottF13jugqcKTfZtNsnJfMMQB2Qg5NceaPTAPlLPXu7u579+6N94+z43MNIGeUB7dTkKlvsfuIBRJ9GzOVjcFPWijsTww+O2GTxKTzV0mK7AYUvv1t/J8o4Ks+Bv1ftABIhKoITEwB84Hue2VMCWUQMPN0Sqh1odiY/GOBxXD/tQDKoc+gfmOrEA7d0/YFq2Im2pLiibEpTE1jmqKZlRXIOgB+QeKt2VlGzQyoGT4z0e8jSzHC3kUPa1Pclvj4gNYB2GxP3f+m7ey/kILACALmGATYfhYEkDgQJox5aUBDoOyvwYDB/mywOHoyVPZ/8MAQgOOu4w0PGxpGGhpmRmDvIk1oFADWUXq6oubi4j3rlZ3btm1TPO4cAf5WSspCUsriNxl2aPRDDQFgG2Aim92FiazKSmOlt18xSBUN8JX6H+2NfxOK+uv1ekbh4dpzjSP5c5hb19ctvZbrvddn/sYM5yhTCThLjU4MFy0ODg4udi/KlDle3XcgFSYN0HVlhKbJ0dQKT29oGi28e7vpHP2qqVEXuolt/DpcBiAaAPy8CYAk0LwF4N8icPCLxv4QH38so8G0tEdFDx9qZH+m3eq3ff9A5pt3bFM/j492lvYLFAC61GTNIQw54DhRwnwUO69p15zMwm7PMavBQbpRnDzHmJpDwTsn9nLWV2dnJ6cAcfkfiNRUyX4G4f4f8mQa2f/nnSkJApQAtBtBAFsDwgIfAmDS8RewkTLzIwJAsQ0x+0/dRUeHmgne1pY1kHHqw1OnurMahr6XNDWlka9dLtnvSaiZF2KzJaOaEQDF/t62suKUCOCbhSkL30xZXNRWVrTNLRLPFrZkXqNqBkVFqKjgyKRsKrIXDcZva0Ai4DDkzEj9N6rMjzJWdLjYX2Y/n184H9Mck9aZlt+XP544/iDzgeN/OjajNmNcMcn2ZOZ8mtB0HMd56bM4G4YOqvtdX00RpREWi2RgzUTeYt5p2DDu76kbWfHnGnEU5PIvJAiIlov6z4khN4ktnm7p6yHMATfWhXFWCedHliyUHOo/2ttbzrHfDGQEMvFfYFA/bRj+oYWJ/e3qiC34B12hTnR2o5t8RDY+dowsYXYNtczuVMxC1/LRI/pNpHiG0vSkOM2Lc+mwDSZb+dadO3eYXeXfIEgWDDT4GXOgHBvu/6vb7L9zUpORBVpmImjiZ0FAIxrDqKqiAc9CN1+bQv3UACoBjtaJAJhy+nytkurspAZYZmfrfvjFuvbEUw++Vz84yJH2Y9HRTMdxJJMuLYMARc1s2NPTqp9wTroPnNqOm23P2fIyberI8szQzJX5wz9G8ZeRRLqiALjgojJMOaco7etU95ER2eyMRKbEgNg7C0RzAKrPGdmsMvdxet9iXsXpn17N7UnmdGbdaH7rxq1/3tKSmvrb33t7xl497/zTzs18tRkch3wZbTD1z4qp0Cv2fTtocpYxG0Jyr2ZmRjJ09h45oDGt6h+fAq+E/HvDt132FvDNbdPNXT1aPrBrYxARdbmUiqrSoYUAIwigsa/2P+5fHuReBuW8hPj+ZH81D9osfrrN/tPh3i9cD8X9Z9dlqM0tsR7gAZXg4knmo6hsAaxFZ2mTc+n+s6C4M+rdu3c5wMsJSBQDLvPjIu+trS36/hMTE319fWT/27dvy9Q3zv6kePjYBbfKl/s/3KPe88r+74CmkXQoACoISJ0pwc80QO2CECb0PCMAekBazhyKCIDh/ivfn8egIKooY1Mu4Hu/53vDlZU/LSv7Wm0tZ1sxo+1yubj1CpdhM/Dqp1RMTKhIeWuLxKEGiX0jXRkqgTVh/9VVm7YydX7FVvrlFVv2EduRNFvaQdvB2LFYCgBHLTmAxK7Cm2JbeszCp1dL9pf13juq2EcWaJw0aKT+tZkj5H1x/2P1WHM94D8BH5hUTY2XuXHjfNTtxsarr702E1235Dzg3NK3mIxPRCJbi+kdpUzMAuqFvwBGFt0sLMhkdImMzfQ7cXNVHtVul+wcQwGfyyq7gJZQqF/bVQN04B0EA2re8tracmLickKCHkwKaIcSyORe3j7bN41lEYoqM2EqgwHa2NiU3jw8Nrw+yvyGTQ0f2auqkqoqURmII/+JYn+s7P1DtCDYP3gB4HYo3ISgGc0d6GDGj72N7lZNTeBiabOp9ufx2FtafvSjH5FxuA8EN1fhdE8KgKz+/TcTEx81NFh/rfWjP/zhFlmPtFxUZHInX8YMJLq0XlweAJGJTHH/dy8DyUGvrzvd7h6gBCOUAdkmOoyJoODCOIP96fXhaH2o7j91l2zb1yeL7M+dO8dllsePH2fhc9cNvsKMNhfcMy/HDZr4CuWZWzYxV8PEHTXYzGZ88UARLWkFX1mx2ZZttt+wYsvJtGWm29IpABabBf8PHnjmMc8UIjOl9Ip06ENjQwxKlMCXqDVQewkAzeqd+h/qi3lTpv3odSRi35kM79p/2+SeZJoEGiy3jo64JpJtQmpqYY5LaeK+oBVIA1KBDB8L6RkwUZjZgyiZ9AlkTYAJUCpk9idvhyrCM/A8u2+yO25HK5Rlhsz+OzTg+8B/DnR/SnqB/f3LDsdycvLysWOs6hDHAHRATXOQOQh0eTAzQ85gaVIeg/a3ZV3YL4+PX8kZv/9nx91jY5vnS6ovv2M2+aM/FwG49oP9QxEAbohIAaDdxd3jx9U8VKZtT50KfGsGTeOXqbiyCetWf//DJzv/kP25x5Ou68709Jmioh++9VZHnaOjoWOLQyqs9fJyn4nvHX7ceg/e6AFoCmCQngO/5MWtRgsL6QcoARDDVNh8OmA6qAwe3WRj9iczYOL7KwsODocsBIUaUyHNNnIHDu7DwRmNjL3gBeoxX6EecPLVA6bYmTJiFfDqAezGukzLzFzJzPwKEIcVr4GCs4j+o9FHcETWEpL9F7HI5KmHMsdaJrvV1flNalslAqBeGKn/U4r6VeaHHc1fNltHENA9HtKuGr52Oll+bW0aNzkg5SYm8mey8fNIY1vmK4xhyMb8W/N1MrMCYLXjgmNnbocixNwp1Yj+E3sE64WRsVktYpGzFVHIx9TuZ2wG9JIoukbi3qh+pfr37qNlFDbgIAKEFuZcECv4pz9Fc/MScfgwE5SKpUlAIQ4CFxbqLMDaWjhuakNs4snJmJpSgRJeB9KCebhGUpIxI6j/j/yIWfLT75yWjR+EfczDBPsHQ/2hCAA3oLiJmzTKQP7R9aYm7oJMGieBB3VFlvalS3RJ2HzloTNs0Gsu11pUlP5kBPIn+fltR6faT9ycKJrBF77AgqWT7tvzrYA3BlDRA/QCwwEkpoRY3YChAeGi/6A123D/HXAY7j+7a7AqNK3KeXKSOldYWMhtNrivGTWAurtzEw4qMeMwTsFias7R3886Ug3bIZRk/lGQHRAkK8NRwA3YgD8KAWfL2GDjEDxDgcG1Qf429SPn5pQr5hMJQOroqLW1NaG11UlyKHKXGckf+EDu801SA74Ac5ANb/Un06K03glmzru7NbbcHQJAAqAAkGPJLWyt/BKCQec0rO2IT2Y18SxKdBUpgcVCT4A8SAmiJJMEZfyNMVMAw28UjOJieQIHT6LESuZBMDJgu1pZUcLA12Wz3vz30POPgT8SrsZtaMBvD3TFYlcXd6hettuXjxxZYrHyrkMXADIXm8z6+nJS0t3h4anpD/+OanYxbyOUpysxm9w7hoxxxIxnux9VIb0KBaSufaFsLXynMgRg0if7f4pPb+AGBeBI2Qo3EKRRA/LzQ5Ao9hgKCJsv29zMDBuf7nbjyRzE1vT0lpwbrYWtbVobowyqNNNMbLhmb7dHDMHBEABaPl4YFrBgCAB9tzDM/ZdVoOQRgBke7sPKHVgN9t+5uQ13PeP0ds7Q5TQtGPs9mRWAZWU7EQPkefvkyEUuE3TMoQ9iEEtLsnzMrwDAbif7pz4x59b/S6//RFF/Curuwfht2i6t8RPRJXzy3BD2QQguwSfYShdPnhzc2PjWo0e/t7W1RYtf+3SNzCkCwD8sFhKyKht5oiKDJWrZ+fNBbdT9r4/gWjZ9XlUU9PQZnPHUHo8qHHmMF/NyLCIOy7Nf0DFiWZkEU3n8ZbJ3I/md5+GvZ6vgmBCFS9Mo8HQRZD9ItUlc3xmAFlbXJtDQiCrIeyczkP2BZe5Us7jIv2X0ItStIJIrx6wJtw/ldjomRvS/P++JSeI3QkY1MA6MVeER/6IlvshHNush64dif1K/WHrpIps1jQJA6g49OiHTMJw2appuyGD0SAt+rCJ7rZWulOyuw7Zu3m2GuP/jwU9L6HnxAgAj+bOGNRw9Far7T6ytydQ3LsAmv3OHpXwKuG9wvSs/xpEAmTQd4D4cZp8Er3ZNQKJafGesa3W54BcjrakdLVbOx+nrm3jrSn0q6lqUyb1ou9b0e8BHV2AHrsCAseXO3gLQ5aloT/H0FqaOaGVfP3TIUXbEWep0lbrc75KZlK1jnVHaHOa6YYuN5SCXKiry9i/9EgJGE+DKwKceXL0KVhAjD7pK5DvqAVWFLYJqc+ECA3DlGzHvFeiiJXkIMMuZ0dMPf8iUIJNCssqSzYMyz8sp9q9pQl8jkBoK+4cONnh5NvhabS23KlvOyWGSAGIhRgCsMI5nXiu6dqfoTt9Zy+q7775OuolByMgEqoDf/kPgTwHlCDOuARfMaoAOA8NAIYKAsL+4/9biBfH9KQD0JIKmft1XTVss85jnqF4r6GS1LCa6hPppZtcZu0N1/wWDz8QBLwAsh/C6/yKxYvT6OduKOxlQCfyu2EuMfwKZM+dz5vhvAW4D/XgGunr4l8mt1jRoNACm1jS1I5VTMVtTLa1WAG1X6toUkdcCmg9iOiSPKcEVYf+3gTlhf5o3/jV2x/376uFI9+5VPXz4/mD1+V95553V48VrpWuuIpdH97g1twsuCgAf5DJzbab/p/3N15pbWpbYYEknDG7J4YGhBvAAUReZQmK6n346+VqVv8ySYlKIfY8KU1/PGDzguYskd8oGJZYqQsdrcFDFdszvaZo8I50np0goXZlvBLIBDSjbd+ov2GuS/dzcUmLikt2+lNmOx2rjgTAsBHuMx91aN+mmLWca77/PYUB126q5hyUIUHgT0BF+/AHgX+2tAToM/IMgHxzLwV7D908pWiDvi5GITNxZwOKwiU1x/FkpQxhC7Tlx/5n8Cdj9tyEkvGgBMNifzIKjDcL+yusJAWQQMf0JONsKfqFvQ/LgPt2uC4AFiAG6fdCC7o80GN9wVihN6InEpMwXRoBWWFutFICszay38Bbm2gDa3wP/3rX93QauPMQV9B/HZbR/wNECYxagppnYQFOjAHDs6/r1WNu5d9n6L7EDcM8D6OR9SiLdf5euBGAFK5OuyXZXO5zgxDby6sKC8tqDQT2QVCN0rLz+lRVKrzyPm96ALJ1TXhFfCQI8gwy/FRQwFyQP4pZHsjHdRNVSJ6+qwZWkz8jxLwWa4A8shzfftJWVzTl/ZeH3L+LLauJTaAKggZjF7BSmhjGMjBwORaoRFR7Dg3jsMzKAGX8aoMPA6eDZXxx/HpMLDfbniJGZtFIw0ifUL+sMFN8Z7r9JrIXH/ReMemlABT5TsGUaAsA+GR73HzC2AHOOj3OAl09b5XZM0b5JhHMuuCCDHwMgq414Bp8CINYeMEvwZhewsIQlQNbk+/bvVoBWZYmtidVz1bIqxZz30f3X0B1zGUAtUAbpMaS80lJey/8vJv3SP2aS3Barxnb1qioZftSgxSKW5t3OqxqrNmY2+AA77hW6ubnOtI0e9EZA5UD+F+WJ7bDbKQBUX1mhTZpSpRQKmNZ77TXVoiYmVHixvi77uDHdxJOrSyyHzu/mUAE0KfOP5bSo3rS+x7GPx75YSv0zH1VF+2mLlG6J3YxR/HDO8/A9GrX/4wHmr2bK9z9YIJkfnceKihBcAc2fS8hkN6lfDFYreV/cf/aygN3/OYQBL04AjOw/2yd7qXn33+w0cIBrfbkFE6d7cjoQfIB7W/IB3NyISYZqyA67L9Eq2Wb/GHXEPZgHb5AemOwrBYuFvh4v5GtimbA/WoB+sGWwUOiAm2F/JQAw3KCTsjerTgVITt6zKTscpF9FkohTo73+W6PL5eJCCq6mprKyCVNcKJrBQ+b50PYJubnK9gfGVkMSJDHCo1hKaKtDr5AuVbXN/uf81QOzlkwMPMCD7lM9y8e/QA+UTTFAAdB2fS9ajOoqA82hRzqhf18PyFHYc0xYAxqCZH9x/xPy5kn94vvT9Qn4xjRTL85gxmB/O+w4eUnc/wAaqD2c7r9gSjQAnylYFPvi/gMyB5xFSmbhLnuc38lJPhwK3vX52pz5w3e5xbHah4NeIX2unByfjmeelwDQbgFbaEYz74V7JBzH8SQk+aD01i50UeoYBKD0uOwqtXsK6L6ifmWtT7fpN9+LxoEiq/F6ivlZFLJLAKkY8wuw2bhzeHpGhmW3VAFXs7e3t7PcuMNVXJyHt8KSllxFcEHAi4YWinLJnChpzyMY4VCiFdZpTLO6xfmurq1+yv6F/q7JhsSvt5S1tDNFLxOfTCPaz10kIIHGZrQgWwLZ7T8BLuNlh47QwIFxw/ePz517Qv1uWlElnL6bRxzifD/81tT2EmJ0BtWYj+H+AwG7/0sIG16EABjsz05isL+5bK8JMiMtlZTQhxpub+fOxlx6zdVefJ6t90IwPniP+0C0trY2NzerVWCAqfnmR4CLT0OBttttH69//AiPClBAH78c5YUo9N5izwYb32WNy6pyJCfTv+AP83mV1m3bCrgHaL6I1YQGsGBkU9TBwSW0t38rMTF9eTmdq9YPH+YgOXcx4VAKd4Q29s9guVEGTp0iTakyS0oKjX71l4z6jQwTyy0rSy0160Qn652JPpKtLGzMRGbWqay8pjxrk1Wxfy78YxnLk2WTM03ZW41qrz82lfDsBkqvhFPQaFhZpHwrA37vz4sG3AziHePtWdrz9Zhj6Ow5v+wvjj8tLuf2+fM3z59fSDlvb61yt/ptHixMEnYxihE4DPZnW2HDMeZ9BrDhwWL43X/BnDrlZwe6SEb+h8kQ8xt/mgUZlp1yfBxzc9zmgQMATPEz1ZOdnc3N4DgpiEt/mfPhHm1MZHODezqzaGhgdZDP9l5wlCrjARixjLRZ2qgBP1r5UQlKKADUszzkMRqgo6BDd8BBARjEIGucTW7V4sLpV9VVTpygz+xPAOYDY3/NBLHqfjmvoEAJ0+SkPG244w85HF8bHk7PyUlLT+dMKkMAuIMeU2qPFbpOn3adOcNi894i5SWSAQ0hg1EcGwsdOaYP+/tXPsJHD/GQKaBVrDqtk1VVJztP5+Y25b5y7hVkYk8crz2+2Lh4oNF5oKnpflFR2LaDpi6JYXlYtkYytrXS8cLxDfiCB/i2D4fmDwM//cbsLl/OFV3zLwDMshm+f0zW3z937ttZ56bvnpu3V9tdcPlvGFnI4hyRIASgG92GAAAg74v7TyIIxv1fRdjR8yLcfw88hvuvBqjCBRlcWVjA2trGnTsff/wxaYtZiyNHjtCfFQHgQxooCXRmlxgZNzbKfHOzu68kYfWCq80y3GaZa0v0LN63tgy1kOiLUMR8cypSRQCccNIlHMUogwCVz62/yKvwWv5mtbcAAwGwv2aeWPfiWFL5+joTQapJcn/HT+4MaFo6n2PKCbJUUAoA8/7M/2xtzeTnb3LiP7WSpcUbslh8FZLA9HsHATv2Hwd3/oKkYKebUfyWljhuRTGgs7Hlco2wNHLSmE1ki+6src091piHQ7mAX0KPAhqR25j7SuMrBxpdBwoLDwCt4RKAZCSLUdyNh5dyKPiFhl8GrsAPPMB3nmnJ/xQCzB6+csUv+xP/zPe8WAbjZP85zL079duHzjfcPT8zVzPn0BzYC1/BV9awRtpSYyqmMYlJg/35dfH9xd8MlKTF9gPL+Iwwhann5/7L5j/hBfM5Gxtq1gej366u7icjAdwKlP4sh0XJZcxmbLEH0/WtqFDzzZnOaGpSymEObRZL24ULbfHxA/wKswA9PYt8WMr4gzZPG9OtFlhk6uc61tWQclEdfw/ZglchZfpb5tZqlv21cPvXdBI5ZYY6xfzZ8LCKBrhf3urqPEtxa4s/mZwhz7aRZBFviJGMv1u57PNKvt/77cB/xn7it++8dk4I6RCWA9mfZcI4wFjGwBaRnc23PJWVnTExuQAtzydLH1TsL5bdmP1KBg5ADM1hEQAmf5i4oD19fJ3dLgKww79+DwHibYSIGvhFvQeYhYGPgIPqojU4DLOohcAYaudIvVrNCFUxV8EG58Z/VjsvohbBw/d36QYK9beicwpHYMlTvC/uf6AQ938dLwF8N6Xtp77oW/giGyZpUVEw+03YwUKWSd8MqIeGwE07l5a4167iM4uFwiBzDSWMN78Kj3gItIkxaOD55Wlfwppzc5x56nC5ZMYhyYAiZzwObO90iW7q3fd9FfBJZbvjfSj86h4TaClP1OKxMZaWiqAYHRkCEBuryuzQIeodRWLvmT8fYDdYfb3h1cnfxv7go53XzpWXQkBBAU22/RUBoEyyzkUah4EuQDTg5O5DSo1eloRM4BUYGoC7oQsAUxYJSIhHfCxiN1ifTidtD802hy8geJi5Yr2ykPFByOcO/ipG6v9hK7K65UN0GEg69ARTU4MRANpLgcs+g6FejPahhiZLosiMKv28T+DJc3MVpclGTBL+6jq7KeleNn/+/+y9B1wU2bru/S8FGhAkJ4liAAOimJ0czz5p9rlnNt64z3dzzjnnnHPO+Y4n3JmTdpysM86YYVRMgAhKjgJNqu9Zs37UbYWWohsanKlnv7umraaraq1a63ned721akkezNY3uj32h2kQF1qfWacwNNDfL9a060GqdPa1mboGOYQihhV57uG/QeNy2d/C/vjbS69lJwMV4nEBUJ0lJcXhHW5cHXKP9YqyVu5yiouNRV8rr9xsKSASWx9l/w1YFD6qAZ/EKQDek6BSAvskaPQlAU7GXpcrLQANshXJ5TTGz/6xl+MKt86x5TyN57DARowxPjbRAjM8HTgZrQR5LZxsAdcbRhW1rCrS0uxCpTb29QTAvtJsudMOZiLY/wERsDKgniW32S4I7PnMHu+vBPuH4aS/DhM/7GhGfAgwFLFe6ks+n2HMh28as4hbAOy7UVxcOyUgeqMP4RshVgSZPr+IHdt5FBsW7Fr5s1jchXNst3N6pp62RK1/+G8f96CFUAvcYC1gc2HxwWP/L1gAT91XHK6PfhdivSJA83wEINvBKmAD0THIYD/9QwxNMGEnoHvu51OPGtYtRuAcWPbvIYDBDaw9rbgdIQABAiwHTdBsbHWQxALYVOc441e5ep3r7bTz5VIPFBWZD6uMAN58fst3ATqgBWM3n9pI3lL/eRgjgXDX/3H9YyP8OmPrBFnw22U+6mp9w3FxH0u1neb0AAOTTHbQcZ7zH2z8yH3hBb1tjh//cerq/JRv/SNAgAABAiRFe/B8mmmzFl3pOHtesfNc7LPnXxUECBAgQCAAz7MQd5hpS04hcw9btrB9O/X1Zhai4/DVQYAAAQIEAnCSBagwtnGjyfraBRB27OCrhgABAgQIBKBxMfYX7OoKoRBfTQQIECBAIACFPIpCAgQIECDA1wAbCBAgQIAAgQAECBAgQICvDxzXdQkQIECAAEEEECBAgAABvt4CMAz/Hn4EnEetBv48XMEvRuE/wjfAgTT4/+CXiAbHh5XDt+E/wG3fJ145i/N00dEB/xCOgQOvwL+GfnxhAv4L/AQ4UA9/HW7gIeYaSjTG4H/AX/XfrtZhGR1/9jr8G+/ufg5/CrYtp8W0w9+HIz7OtB/+BtyIcnGvwb+DIXyiCf4i1IIDu+EvQTP+8Dn8SagCBw7A34q+atl78Idhawxd0fFnb2CIo48n4R78IzgOIfhN8A4eVoluDsPfhTaWQBj+O7wRB3mFDHPyzlMdARTA8XnbRoCvyote2ozRru3TW0bXn7OVDTnGDBiEIWMGAaqssTqomD96PgGeSgHYDMfhmDF2E+Crwv7MU7+1u1/hV6R57L8BmIUhGJQlpMTrH1vnKTonwfKy/hEIQMo89R+HBlYHAX6RNcA96/5726eujP6Z1rJ/NkIE+7sE8DTA2kojK6oABEg6FTUJ8D2ioAb2LVjUKspxRuE7RCANfgJY8HOHR9HWRksLIyMYeCM/Bcd58dHfwSkfZ10MGzaQnExaGllZ5OVRUkJ6OkvAx+mSkqiuXnQBVwfcKAfogE95BC9DnlfKaCeeWCSlUg87gWi/9V9FDk4yyWmkbWZzHnkllGSQ4b96/KL9NG1dHvvLXq83d8Q//De/hdjAhhRSVMYssmwZ9TluDXCIgJrwxYv09GDZnwM5bKeRU4O3GLzIkJ1yrxazf7+vSm2Hz+K/LA+vQfaSvalpwXpCu2AvPvH5AlU/ANu9k0aetWqYqu9RBZdh1lsv8ciRGN5H0ELLda5PMRUhLNvZeGCpst6DT/BACN7w05tsQ4sDh6FqkTrxEIZ3iBcLSkSjJwC+NWAn1PjrgQvrJg0a/SyKePcuH3zA2bP09WF9f6qP8eIxji34XYxd3xMAkb5de7W01HTD2tonLGXn63QpKRw/rharQ/k9wAINeBnw1exgHH4ZD/ug3tdvF1bRz0QVAJFjAQWllG5lay21IsoVE4CxMaP07W/TBrNou7eNmnb27cM//Dc/fmZxAUgn3StjNdUqo/7pK+/rLk2258/z/e9z6xaQzSs55OS8BUgABhk6z+AdTCt87rnHVoZ1o1aqpwHx4zX/vSlSA3YZs4hBAw4Yg0XJTj2xqoiqt6nq4DYG7NmjvmQ0YDnoo+8MZz7iozHGcKzv/2NUVfkrq6cBKXDSR2+KXwMOweFodbKiGhCyR/clAJ4G7Nv3a+EkvOkJwPJ7/gh8NxVO+omau7v55BM+/ZT33+f69f3sF/Uf57gslVS/J/bOSlQ4jiHrTZsM4xcWUlHBjh20t3P4sFECixhOV1amHq2mrMPaHu3/AHfhLLy8zBN7GrBPtrzfelWUGjUCEDlmk11IYQUV29neSmsDDbvZvTICIPa3Nv05kNdOZrv5l38B8N/8SI0aAWxiU2QZdUEHOagPvjRAcKNqQDhMVxfXrvH22477LcP+8/7FqaEhpAGDP4TaExw6xPR0xI+XKlwbfE58eHW59XgFWmJhf4vPoB32w4Enn1Usbewyt3+I8c6Skti1SwH1soIA3cE73DnHuSaaqNpK1Td1UFW+77J2wAVojI0ClolDMr9nmYxjDNPTM/9rAv816yebeM9r0yLKlV+71MFTnGFRvzWx/y52ifetWacsBrySmsrJZ2jEPi7pYdadnQxPDoWHHgw8uHNn6NIldu826jMxYYLyykpiw717nDuHFYBXX0Unf8xptPW4rvAKqfDMwuWgw4SHGe6h5zM+u8hFucaddGrPNNP11BM/pLeytraa/1jz5s9t/5u//MtWDu7eVTNb2QLCYmWcYWaSySGGHvDgNrcvcUlNTp+N5whWA+IIBQzFW3Nz5tlfbQvm5rD7JQN4X0U9zAFfu1w4D6fgraGL2a1Q/zTO8tF9txqQn09f37htHsZqavAH3VO1KutZeJJiLFE4Ia062AiyN+Lo6yf87Y0CF8bg+/A9bbvP3L6t0Daf/M1s9i0AkXqxG08DcnJWUABcIjE5aXx/a5cuacBBYz7W5J0RKxoRSuHEY9H5LLMTTKgb3uNeCy0XJi9cuDA1NkZSkumMW7YYRz42NDdbATD27LOsf0RWUaQAWHK8z/1b3LrCFflTAwyI/eU1q3CVVBIPJJW2b/f2FhTUFBQU3N28+cW2EdvlV1AA/jUWi5RRbWCccbUBCdtNbkoALnBBCufiKiwooCCLrFg1wAXHY3lL8dq6WGFwBwcd7Z8LpZGbq/1kZrpPvj8R+DVP6knD8JayDvxN4M2nUQO2brUmAcC2EMmAfwGw1C8NGGVUdZt4AWgEquEgXjOI8TAL8PKyOPUiXOjn4ve5ffsG+Qrc5bTtZKdfAXB5FDvjLE/UMzjMw/P9z57dwhbP96+gIm52W0QDbOfvp1/N5TKX00l/l3dv3JC8qbUo7jRNLga8/o3Xf9j4w3O/d9YKgJSgrs5HRi4B8F1FkQIgxu+g4ypX88jToKqI8nM+zyW3lNI4BcBz7hzXKTpbVFhYWFBY2N46Yrt8vU0Fr1TpomiA2sBDHqoNiC+aadYde5/3FQrIUVILlNN0hCNAzBoglrcaQMGX7D8/CmFVQVvttOYyj/8D34KNUUvwU0uw/yngz3o/ego1wGPsy5eZ6uqy7cTE5kVF+ECk+++JSeJ7k38N8CkALy3Lnb42woXvIUfgwoUyeJ2GAxyQBqhV+xIAd+nzOCv7wJx1/K2Jayz1y/ffwQ7iQx7eyXIXErBYTFF/JpkiArGbQgG1Hfmm9+/HKADT4UOHwsNn7509t9cKgNmWlz/KE2ukAf6ryEMZZfvYV0JJMsnSy1/hV8SPqqVaaiUM5ZQTE2z61/ZtNcqSYv2vJHXLltlbt+xu2b59Kx1jLlZGuflim73stVGm6FpN8AY3lOdQAQ9z2MGJWQPk6Q8NGQ1gZ2QCAMv+ngB4wsBvW8j+wnbmUblECc8v9qPtC3loPSMjA08D5JB5iSI/AtBHn3X/de9ISkq8+y+ULvgUU92XEoEQlPpv5b294n3L/s70dMM8+6sj+5oH4OIH7gr2Sl2r5/5vmkr2Rn7qqEvAE9tppO1hj/wEebVgAk/roMWGsBGAQzXhGrksSgZYGx31X4PrEWo9ysaL9LexDVDv6qKrm258I3r6d7qCirLSstLSUsrKSE/3Rn0TOQEqREhcL9JXARULyhtQ6cQmAwzEms5ichLL8qNjjijeNUNAXgRgtQHL/makQqiALNkKZdQcnlo8ytueRxAOsxQWH/3fvBmf2LhRJuWwps+x139iuru74MCua9nfEfvfv6/OZdlfWxZDUvyPPMfbWK9e9Xz/pJHx4/PP/BziECsEJ/qTGp4bmEuuHfANh03XnZrCdWNYBVk/PFQ5PXxoemjIHWpxur1kwEsvrU4NrmoVRUACqWigmGJFAJYZRWLxp39TSVUbrUyqrKyooLJS1n/tWuyp4Dg6nDSghJJ88tUSFOuMMSYZ0Ic88lgOJp1JPV8AjAxaT38sN6fioWX/jZMIc3hDQGO5uQ9NEJCN85A9sBljbAKDTbGzz9ON0lJL3cbp7+4eV2vwkwqeYca6/7IY079paY/bSvamyH3Oajk4ov4vfX+amuTKeOyvRuZLANwETzK/fdvz/RW5HOc5z/1PJMElkyzplwGOYz5pK4sBc3Pls7OHDs2qgw/9kB+eOzfpJQMaGha5FvvJWfcaYAUyk0zAMuMEE/GnfyupEevLUrWxZgSAOFPBLrFAPV4ykEKKTQ/I5phjOfiYj1Wwaaaxw0nGdPez3zIs3wlv2f3Thv1FL5u+3D9LutlPlrVXPeb/Lcssp7PUHXXBecpSwRKAiCBAAuDD/R9hxKbyjJWXJ14ABMfPQPpncAT4uyvVxJ27d637bww89n/CQHpSwgclXDx0dhret+5/hxlvFe9b919cvBpnjdZdRhn1GC03V2Rto8aYsfcQEgBjp+dOawjISwZUV/vIq6xLDUgiydNI0aK1ONO/gHH/qdSW4mJsEFBU1N7ebb/fv183InEuyRRT8iJlgFUCeQb4xk1uypE5zemwE8aFIasBSi/knMppIrsJwYFb2P3P52h/D7mnsNgse9MW2BMA/3B83NGnNBU80dWl1rBkKthz/2NP/4ZChvTT08nI0DYeAXCffJMqoRFjBn8y/qM7wPi4N/Qv7qmhxhv9JzqS1oz9+/ocO+FLduuWEhTeYz+KXBL8Mqw73Omks4ceMBxdVhZ9VqY/Fi3hkNEAd2jYGW4eaPZmBsgkMLBOZcAlKqSOYcIywDKjLJ70ryyffOv22+yLPloNmO3utn/if1KYywqgjz4xs/EfQffKRjxEwwJu0W/VhC5zuRWoNt//BFyaYWCAb/3bgT/xb+eH0l7jt8HPwrXkpG+9ff3n3qbVHi3riFqJLIa75fhQ9acrCEhL8zRAMWHE86BRBKCffhsB3OWueDz29O+WLeYRwLw864usLPvHDh9hn8f+otM88jz2DxEiOpLWhv3FApb6pQHNzRIrb+Qnh5xEsv8009e4pkcbr3JVo9tqMHV11NaybVuctZKqHMYQQ8MMa3vnzj1PAF55RY607ZRrLwP+K+o+93vpteP+YqnNbM4gIy73f2rKsr/3mK/+ZU3tuL192v6VBCAxuM51NQDRh+5XCSU24SEB8P+gtpRjBGeERluZb4vluxj6Oer/wJVs9g1CNgafaj+zg/xsLrk5vParUAMO2Pno8bC/fw14jacAkQLgJY28WcHRHv9/5JebNrFcyHOTb/PwISUlsvXM/g4RuH7dsr/Zgsf+1rVaQgAShe97/2V01Dl/3rD/+fOVbqU38qMqX/E8V/OiHx1D/WOMPeCB3P8rXJEcFe0a0N0/etQ9cMCEgHFC9CENsAIgu3hxbD4ZoFOsmEvrOAv/sfLsP8poCy2ttHbQAeg2FVJYQAExYN6338AGkb01LDZt8oKA/lu34kwF+8ccc3ICNNv5Epf0AdjN7u1sl7MO+BeAYbKHaRyen4Y52MzQVWYmTmQ3vpnDkez5Yg7SK/ZXk9jGNu3UV1jHXC1jxw784LMovcG3Bnwf/h3rHcXFlsaNU97V9dALAti5k0cxy+yKzf4V+4sF4sCZhR+dqOR7xP9s398ki3K8vj6P/QmHRf2W/f1M109K4POIpxDeATtcdedO+tmzO365ft+Vfcdrjh8PHdcdW41o/xQWn8se8/2VzJRXe3fz3f4t/31nVW5t7WYNOh854qMb+utttdQOu8NDjhEAzTCKTAbU1BA/NmywtuAfK+37K6l0jnPNNPfQk056NdVibfnI8aV/t1r3P3J6uqjfaoDCWPV0/6ngW/jHLSwcptwpue0qoHx/OQFnOdtJp2RbnaeOuhpqeAIOEYkRGDZ6z4xl+Q6GPsZkgMnOOWRSvXDIphks+8szMF+hr+oheRmDM3/cB/v70IDfAUNPTSpYAoDnOkgAorn/upuP6MYawCOc95Zk/0b/L4EIPfFgHvt3dpZT7uV+8YEkN5E18w7eM9L1k5OlP/ZrS//vjoqKmrIDDcXP1pC1SmddhP1d3Jn8mfGS8f6S/l9X8sef3/Kz5eV527eW7K2sLDHNayMrBDsQZDv8xdGLX2qANaeoyCU+JCVZW/CPZaJ1wUdvprQEUo6/xsc0SiYfGdjP/j3sETmKuONJ/1rfX/EfEXDLyx2rATk5bW2D/lPBp/CJJpnXk6Y+nRrdPdqzuUfccZ3rYcLP8Zx9GGG5TyEPz5v7yFQvJ8fOASPHyxOoMWibRZbdn0zyMp4TrPTB/r41IPupSgWPRU8FP+7+W9FYI7yF8C6/B2NdLIpkaCQa/tGyBj489lcdpZHmsX8uSyQbEz4E1DAJDVjMzl7u77/8K/8nP/9sbe2OsbEcBV4vv2zpa4WxyW4Woo/M0czNPZu/0/7vfzG7qrSgYItchm3bTAqooYHSUlYCG9loNcBaa0dr5KviQqH4Dr4R1VtKCo6Dq//oH7IYm6zwhSxyYGSCiX7673HvBjfEj4DI8ShHrYMcT/pX9Gfcf7dCWx6F++UQkGRg9tKg/1TwW/jBFVlkZ5o+Pj32v8b6d/dn7c7amrRVYzIa/FHnOcIR23/8o3yIP/Kz/JHfjoVlf20rsM/5W7LFsr8sx9sfU1jmxBedPi1Qo/Y0oLkZr/1ECoCaqHX/Tfo3Pd1Qv/3BGqF/G40XshuzeQOcKLe3cqXmdnR0eLlfwGP/nez02aqSEvuOjO1wwAoAnZ189lnf6aMff+yKtTT8K3vmmWXViYsPnPTeZrcAM+GZ8e7x/u7+v0qHCO5W0ecmulSdDg+7L7xgnyCOv5/luXmHnP+XEG5qGvQSwipv/D1EJiGZtJ9ky8epBezvCYB9UyZQTrnIUe6/BEAOsnyNuNK/bq2NAJyFzdsGBtKAS5fsL/wIwCWWQGolJ89OnD0Lf5yWGnBdw8O9va//yut5bXn57flbDm+pKq6qoWYve2N5wGnMGM/A6ci5vk69a1g+MgKwQUAO3v5lt2oHi6+FBkQKgNeEIlPB9tHPx0f/U1PX9NVaDbDN/7BejHd5YsJjfzUrkb6X+/VB/WsjAPMaMDPjNjc7GzYwOcl5R93SCoD0+8CBlT/twlWM7J2ZYcamAZQHrqAio/vMpe6PGBiQPjm6moICrxm5xAW5lp4A/IAfnDvn2lGgrCx3717igS7Q2qT3afm4YTdR3pWv9lRCiXrVDnbI8dc/de3xpH8JUzlVaWcATC2kpU05Ng8crqgI3b1rf7QCqeCTwNG/T+VP2JPNzXH/PmfPnv+VN3e35RU+yKuZKX711YrMzHT84QqP4mELY2EeggOjdq4vMxPJ2VcMy98l++6jQ0AapND+MDlXsPfRmR/ZdnxNX/naaEDkjK6OjsdTwbPMLv78D6ypAMSrAQ4+4LH/zZsKWD32Fwv4jyWT1uolSeJ7KZi18atXpQFif5l2686uIKoiP0aBgkeRmvSgn/6OL74wQ85lZSYXLHpeof5ykIPeE0GfT34emRAuww+qowlAWhq5xtKQ6d+xcSO/BpKJgIPjLZZSRFE55ZIxWfyzf8veKhP7h6j8VfLsqRbQUqXVgP929+5fnvf5tGMluuURqARcabxu9Oxs//f/ykcfdYbDZGSQm4sCP584tXCAa+z/MmZpHoYwGeA/n625XpeQWUyBYX+1BLH/fXJOWSnFyczkxRc5ciSBb3pwYpv678ZxQie+VLAEAFF/ZCrYc/9VpY+8QWINsSfi0+rNvWhpWfS5zzLKolH/H4WTcGxtBGAhiebnu8eOORKAyUlZ7507VgNsHCD6FRLm64iPppnuoquFlg46uHXL+JxdXVYA4j+zbQKRCeEbD254yYDsg2T4Y+mFMKqZxsk0MJZGcnLs3MhPQXJkd/WWSyykMN75GV6/hcpTlR0YW8Bp3j+noZKcCrFyW9uYj1SwD9Qt+CSxHBigX6KfeuFCODfXlQDI6upiFoBBxn6A8Br8WhhE7P8uOfB7oQUL/gUMAl+Q8wV/BX4DBpw4sfR5nQT0yuiTwLW179tRT5HhD/aP9St7HGvxpIKHOzuxDaKnh8LChe6/hGK9zadfeQ3o7/fYX+SpgVnL/voQbbJYWZS0c9JaVo1o/tgxFcDGAe3t9z/7zAqA2ebkkLCXwdmHUoopzicf742gw8OsKDazOXJ22PXrPVlZTna2GQ560T9LLxCAxnTwLCb8yIKPK4yxMS9yT0/fdGnTJf7XJfgr0d94lo19q/0tZq/iIxUcSyNwa2sddSTZwMDMmTN6eWJeHlYDSkvdJd3mFh7F7Cxzc+wtc/dyEX72ND87Q1L5/W9x9k3K6ikDOrWfn/+56Q19yXkv0vYtyl6lzIEi7HsHEsH7MYQCqaTKD1AsaF8DJaEbYQR/GGXUvlYPML4KabIYHnaI1ACvQQwUJln3X1syM22YYMd/vuIa4LH/vXty+R957tNdXvtJWuOq2bHDCoC2WgT46tVBbyBIr88MhRLn6CSRFCJk3wpn3uY4NcXMjGxln0yqoMJqwHwyYMpmg7M2cIAno4HFsCstgv3T1uuAcET6t6L6Nx6vhE/haPS26UI3vA2VD7j6q+/4TAXHUM6GBgmAtZ6WlvPnDfvn5cmcZY+lVVYqp+/W1wODsssMNf3FHX90RzY/nkO6Pe0XMPiAgZ8lZ7I9548fzsZSFZnGbHyzHpFFlswmflRTffT10CO/Xp1lSfbXX+rv1doB+/yz3KA4nwf1mlPb/qS2lAWj/zYIXp8asPh8vr8JjbADn7h0ybK/PkibPfbXwyYxeA9JrCGsKtbVWQHQVhqg12d6CeHnn1+5E/mIVSeZnGJqllk7IdB7rH4FR4GEfezzgoAzs2e+TAYkZR3fmJ2UtDW2FMcfN2Zwfr0mBT0fnl8RTx4xT4BGd4pcDIqgUvYOxcX/6cGDWFLBPsrppqU5ERpw/XqfBMDash/Q2rbNLSmx76wffNc+BfS7c04eMY978k0MGGhm8Jr215U0lZhHgHgVcrHsb7brFKqPQgqLKMokU5zeQYc49za3a6ld8hVb+stOOu0b13UEbWOIACBybUe1o4e2Rd29m9K+fcHzP+sE7tJh1xGE/dC4vFzawuc+3QM11MQWOyatC208ciQyDohMCB88iB/E/3YO+zI40QAgSjb+WEYGq4PIV0Rc7XfOnevLygplp6RkQw5x4OC6fDCks9NL/xYW/tiXT3jyoyU+AuOKa9hJYQ8etPtIBcc+DulpwPe/f+GC6w0E7dq1vAZmW62dAqZt0nRado55BCgDbx0Ya527c3fnuHYSQA6W/Y2tX5RSWkGF+LWJJlH/da7rswj9CZmhbrqbaW6h5Ra3AP29jqDjxD8rWM1APNjd2Xm/M6Nze6e6UuRa8uub/Z0oO2U+IHr02H9gYAc7Gtyoz306+ELSmj8PZhlAyQArALLJTz+NfDBU/XDl4RAJ9f7LXL7JTRtO2teBUli4OnKHeCIyIXz7dkpWVkp2YSgbXoENy3lMo6+v78aNG8PDw+np6dXV1eXl5YnXAN/uv/eiB389R39q7dKltrawj1RwrKiv94KAyfOCHQgy26KiZfd0bwpYNiU5To6IHgMePsR+NTm+IXISgAs/aYMA1i+2YmbJ7WSn2Pw+9y9xSRJpl1ErppgFuMc9zRs/xzl1KzvrTb/VEXSc+CcE6L7Q1dVz/37Pg5zume715/4vl/1907XH/jduqF15T/6kkRb9NOsuAojCbSkpkQnhgcuXI+OAePy+URjDYizy7PaRhjHG1KBF/Re5eJ7zIhn7ICrV1fasK6kBEd5uCSURCeGSCxceZr/8zWzIgiO+b+GDBw/ef//9ixcv9vb2bt68ua6u7vnnn9+xY8eKNFJ3pdO/yckepUfJjrkLEtxmSrBRjNmbNyUiPlLBMY7MRSYDutrarAbIXnuNpKTlOXmieBsE5Ni5vk42Lp4wDAxg2V/asMG1Wm/Zn3TWL/LJ381u3QF1ljOcUU8R+08zrfoSs8uvzyIriSTtUZO2a2tLJM5yVhGDfX3IXvbWUmszyfFrABdm+nt7+76Eide96GA9oA/6wW580bKDkIdFHlFw44aX+6WPhv4Gy/7lpEP/cqg/L/Jj0jqaFJKVFRkHdLS0RMYBMcd2p7DotR9x8OBNBBNFXeWqmixiqcOHjZ+5Zw8FBauaEtrFLu8VER/wwbvvvv0uy8O1a9c+++yzd99999atWyUlJWNjWmEwd9u2bRs2bFh5jY4//bvNuv9ORobvJyTm14nk5k17GCsAK39DRCIRGtDcPOoNBB096l80I8d52GmJfj4CGBhw7H7r+8u8Kv6f8APWO5S76qZbbVUOmrwlyYA+y9NXx7HvzZYAqEPZl+tp9P8LvrjBDeAoRxUoiK10hJWaFZx0mf/TLxhQtRu7V81+HcDSTBec8s/+rzseLf9uFsPAgMf+Ysj6U/WG/ck6wFmM4eAT+z0BsCdLSkQO0L9nXFQUGQe0tNy17C97+eUY1+c5FYX9rQCMM25fdzPGGMXFZjTgyBHT6UUHq4/Ip0IVLLNMyP25d+/elStXXNeVBlRWVnZ3dw8NDUkGVly44hr/keG5/8tZ4q6sDPubvDx1dT+p4NjLtm2bupk1JaIiB4J27PAf0WPdfxsBWHtMGEofewuQg/CqyzpHGmmi8jBh+1nekl1Co4IKxQcZZFgBGGVUHpVuuT5vZrN9sdIJTmi7gQ3xu4ieBnzrSv/rL/ZP1U3zzXU2/nPKY39/zCz29xBNAK5f59Ilw/4dHaUvlx44ldfAhQNcWOaATz3sBxYKwNprQKTKe3GAthcu9NpRIJmmSsaAX9Vx/uuv8l+jv1J582YKSigtNRQgx//AASMAycmrUtRHXd1kkiMTwuo2y3x1eXIoFNLgj3IAjuOkpaWlpKQkRRuzSHwoEDFnJyfHSwAss615QUB/f+ypYH+IDALGmpqsBngy4Ace+yfNpFpPX8z42Fd7yLZfPXXvZiii6HmeTyVVF7+FLXLwdTc0fCrjUaiAGpGxL1ZqoEHKoZ+s7Auib9/u/N4/7fRe/WZUdX0g/G74Xf47Mj846PhayUPtpqvLyAB0vtv5n5EtF2VQv4o5gJ8kOlLs175RW2sjAEDbs7Dpoo0D5J2v6InF/qmpZGSYAaaSEtOMamp09kSVE/t4nI0DJplcboxcUVGxe/duufxdXV3y+pUD2Lp1q/TA/0X7v+I34J3lNgPrsae2aa9q2mZV/BOe46WCdV/27pVCt80fcmREqh3/bbGlihDljRutBugEOulduNBD7nmbDPDVFCzFpwzyDTZKtXRzI5ebzcrScZxULwLwU8UxNKm9slXUgFd5tZBCla6W2g46euiRB6PuOstsEklppKlo+oMKKrazXeOc9dRrPx7iK2J5OZbwf7IAeqGKhLv//nuTDzgyx+85XmXFkRSnF+L9phFiePW1wX+Dby8YBJYbPjtLWRnh8DSchXTY1GLiAPnoHuI6sRUA9Uv7Fhi7KHl0xHu66OPd6ifqP3nkSQPwC1tJB8bHx/Py8gYHBzdt2lRTU3No8cWMGuO7Yu9GGXzbZ/XY9G+drN26OKpd0bhPOJFhv7Iy0unJyVlohzZsJmBFb4uHwkITgKpJSAPgIuRC3gPJwMInkhsXFYDiQRqH2MCGUkojlmRS2VUCRkdzwLD/Rjb6rOJGloM9skSMBanRyv3vpLOX3hFG1HTnmFOhFB9kkSXlU/GrqdZn/Hcq35mA56tANgdbZVmJFQD/vckvFmpAY0LYX0iKfczX8fGqmhT7RUwQl8kdm54GhsDEAZAuC7M1tEInlgD4GOpZuXKGIcRiqKNuD3ummV5ms3GeffZZ8f7o6GhqaqrWM/B70bHfGVsGH9WT3M63LF1PeS6wz7bmLIwId+60LaFt3vaxas1v2zaZndIlnIdcKwNhqkJLnHPPoDEGsW9SIgJlZdafycE+/u+7ik8m3vf3AfkrMvuKw1FGIwUgk8xlTvdd3k3aUSWbFwD7IUFY+d6EI/NxjldZJSTFmPdzoqxZ5muvb1gPHYMuLw7AWGHsJ44Jq386+YyhmI5T8CWWe9Gh1a6ekCXqdl/xo++W0D9/0LtQ4eu2xBSVRejVEFyA3Hnb/ORaHYQhGCQaQiHL/jK/COEboTV7UUT8rcY/QhmQAAFIWG9yfNBpKHEC4KNfOqwJbs4LgLYvQQYB1i06wQpAzwq/Cd0bBYIKEoTbNgLAbF8iOgbnbeYJxbLsn008CLBVNi8Am3mK4bC2SCIKBqLs0MQW+aqrNiV4CVyeFwBtXybAukWbJWr/SST/3cGLLEYS1/cjBoJgH1GwlPsPDmRjLId4EGALVMGs2T71cGRreHLXZSGGhzl16l+fOsUPfkBjIydf4qcxcNjClhd44ZExPpenDgECBAgQIIno+N1YL7sX3vLcs+d4roqqOup4mhEgQIAAAZKe50mYeXaO++/yTzD2PLBzhhkXl6ccAQIECBAg6STR8QZfVQQIECBAgKTGryX7BwgQIECApEIWQxZfbQQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fF0RIECAAEEEECBAgAABAgE4DX8YtoDzqL0J/wfmeBxOAi0Z3lit06bAT8N/hB6w6IP/Dr8R8lboFPHDWV2Liln43/AmOFAMfxA+Wt8FibR9ROAm/At4A0IxVIfjw47An4cPeTJGMU3tG6vTSiC+s0cv62H4u9DG0rgH/wiOQwh+E7yDQQf8Q8zOVPi2dsZ0wcv7rcV34LdBJjjwCvxr6E/EiRfiV+G3RlzIv4GBZV9HGvx/8EtfxwhgH9SxSqiZt0KwyIc675xPJwKUwAEisAP2z9vKo3L+0AeIDS5rCZcAwasg1isKoc7YaiAUIQCRqIPOebtFvAjgJJZkUqBBtnBZ7G6M9UAbK4e0eeqXZQbsHyAQgJV3/2Wr6v7nL4iPIjVggqcJwVtvGxYVgE3zGtCj7QreVEv9+2EbMeBt1hJv8/VEgKRTiyQBuoiCN2EDHhpZPsYYe8CDAQZGGBlnfJrpOebsWijppGeRlU9+CSUppBCJXfPsv4dlYHCQe/fo62N0lKkpu4w6GRnk5FBczPz6Wamwc94WojxCA84yj+lp7t7lwQOGhpicZG6OlBQ2b6aoiIoKc4plYmJi4sqVK52dnYAW9tLqvlrikZhhr03FHx9nZoaNG0lPJztbpfa3eN6CRjELP8+jKIbniIbGlWZ/3cTubgYGzK1Uhc/O4jimzlVLKldBAaWlppgR2A4HrAAsLFU17P+Ennt0wydYqAXuY18VVfjDZ5/R3h55tv2k7OdHDpD6SB2cijqo+x0fqulsZGMaaZlk5pJbRJG2+ISPs8f2cvbDRNZRY5Sz3INPHo2x34AO+HTBzhiqy/vlApxqXDQDMMqjeBnyHm2qp3ycdeF5G72f+k8CjBGBVyA38nD+L4U0+AmWi8ZoAuBDA96MbyXPDjpuc1vb+9zvo2+YYQnAFFMurhWATWzKJruAgi1sUT/czvY8e5cyoQ5rfiGaaGri5k3TR0UcIyN4ApCZSV6eYX+7BPy2bZ77nxc99uict3tgjnzjBq2t3L8vShJ5GwGwa36XlFBdze7d1NezHHz00UenT5++desW6Iq2aY3fV199NVlXu1zcvs21a9y5Q1cX/f08fIgnALbU9vK2b/fJG1E0oPhJd/+tFaV+1YkKZSXNarkq3BMAK+fS3fJyVZy5oampQM489R+ATYuWav9+0zC6v0d3H3cQcsiROyL/I4Ol9fv6dT75hNOnwWAz7Of1AzKd3UdvXtCnfxPRYJdZ38xm9YUSSsopr6ZaXQN/8H92nzgEh4GlBMDTgAULJnoaELK/XX512V9GgXl3PUtowMsLCuBPebzz+hIAHxrwChYxiGCa/eNVEgAoaKEA4T/DKfjlK1d+mtghum+i6RrXbnGrjbYuunrpHWLoIQ8jBUAdT52wkEK18q1sraFmL3v3s3/Dvg1Y9i/BF+T1nz3LpUtcvWqoUDQtPz0cRhBNSwDkMJaViQTFLOn792sl9Zq0tBqiIt3TgIGBznPnXHtkEZNOZEnWdc2Rc3ONH7pzp9k/PMxzz+H4IUDp1E25/9KATz/91HXdI0eOpKWlVVZW7hZTLwuffsr581jl6+igt5exMSsAxlNWqcWSujx9NTjI4cPL5A1PA4qiLoDqrqjjL8a/fNnomYrT1kZnpxEAVWykAOhuqtqlu5WV7NhhpKKuTh88378yWqnS0owG9PTQ/V16vqeKOsIRudgi2ROcWDKwVBOQffyxaVy8YKjfHK2iwndVWozAdwkBTxIALzKWY1RJ5Q527GJXHXX6J9Hh/+z+cUi2vLN0wAVoXLDzIjTGdsGGhWMos8e7Ly/nV95ZLfv7/6kPDXgZYrwUUuHkquUA5EyJd/LzXRi31/IpXGmEv0BMuMGNc5xTf2mmWZ/vcMfFBeOPlmSaLrxhg7rz3OTkxMjIxI3hXv2NWrx8HIULnXT2VvYeqTuSU5fDPvxAPVLutOman3/OlSviffXqPLbJjXJwJsOTg+HBzj6J0TV5cfIra/r6tKR6zTPP5GRlER07oPP+/c4zZzrPnr1y/ryOnE+fOCevxjCJAoCRkXBn5/1b5+4byRkYMLSrL0SyPjA0NNTT09Pa2qqBIEBxwIMHDxQEsCycOcOHHxoNuHhR5ZKOKsYRcYhBwrPhgZGBeyP3RsSPMgnD5KRRhYYGVhDuijr+ukG6gypLc7PulDTVjtLkkptOUTLJc+5cOBweDY8O9KnJ3CAnx7j/7e1qAPUDAw1Hj1oBeBKqqmwcIJMzf5nLYn9r8j+IDsv+0ibD/rt26SDGDhwgJjxDCA4RBdNMjzE2wMBFLsrkG+1kp7yoBzw4xKE97CE+nCAEB7EIECSBjV+cnu7Kc7T4xBu1Owk1LBMi/dOcPsvZ85y/whUwbmh1tXGU9UHemyJmx5EAIOobHjbU1NlJa+v4lcEr7bT3JPUM7Rsarxs/UXeiKKWIJaEDXbggEpQGyBEupliO0ja2iQ0lKg7OBBN99N3l7k1uXuu4ltE9WDOSWTO1s2YOnoEcoqOjLuVM5+SZzq4znZfPydeUSm7dKrlUbRkBEF23tYkXxMMDYXGxPG59J4koLGQJqBJSNeKfm5vbpkMYaczLyMgIhUL4x9WrGpMWi6ngqcPhgzwjJ7GCCtGlBGCSSZW6lVZxXHNHs6nrpCSys20iZB2yv+6dkXDdx3PnTNFAZREpl1KaR56GCo0AMBcmPMyw+Fs39NbgrTH9fWdnaV9fw+how9TUgRMnjMg9GZ4A9PSEb96M1IBUUqPVtGV/bXWrLPXLvHP5xz/Bw1Y4zAK4uBKAUUb76e+kU87Tda530KHP2iNh0LcSH2LCP8JDNYEGBALgwfVIYdx3YiiK7y/2/5APz3BGPktKiukme/YYiamoMMSYlRUpAIZD1RM7OuQCq5uJBIaH976XVPcwvy5cVD0Nx6F86aHZ5mZ1Tf1YZKGlKw9zuJZafbYDu+OMq7urIykE0M7BqcGaj2pqZmuyZrOYhWcgn8XQCmfy8s7U1Z3u7Lw8OmoKsm+fGU2RkonqJQCSLvmsKtH0tLhrxFxJTY08cT8CUFFRUVtbK69fvA/oswZ/quSf+sTDh7bUosvk4fHneUmDGOIFKV8BBeJKyZ4cRnGHTSE29zWb2Ki8HOlY/AKwssM+IHdeKmrDOLWGTDIbaJCru4Md8n9VIt1KFcrFlbANMthFl1pXCy3yNm533G4YmW0IZzTMFubPbOQZSOFJSEmxGiAB0LZtpM3TgKMcZQH6+w31W/Z3XSz16wj6RdzjsVWLaoBETgLQQ494X15LFVUXuKBbqZ1TTDk4IUIS+xjP/lXTAJc4EQiAG/fK7d64v0Z+5Ptb9hczyiE7dIj6ehGcfGc5zosOhhg/uqXFKERZmXFS6+o+27dvCqZB2xNQzRPQ3m6GOES+IAY8znFpwGOrV4pKdrNbHUnxgcRAnWfnmZ3MgbVnoJBHcRPOYOx0Xd0XAwPY/PHBg6Sl4UF0KqqfnDQCJvUa6Ow0nCLC8IGsrKzjx4+npKTs0ngCKnjZgQMH8vPz8QkNOok0pT8PHhw4ceToTx194adeOL7juKjBo2SpnUjNxdV90e0Yk8aqru7dIxwmFFqp7uYQN/r7JWNK4UgDVJWie4mZRufrqded0l3bwAYehTRAA1vVVG9hyxd80TDccODDAxJ1ZmAWTkA60WDv3HwyoFtjaIpTvSCgggoegaV+mWoauQB28EdteoW4qoToGGBAXovKmE32x3wsJ0Y9S2GKzQ8rxo377KU83XBjcFMDJPlh/xg0oIkm9RSN/IhuRJTPPMPzz3P8uOHN6M83GsZXh6quFglqa/0z8eOleQHQVlYT9ckf9eGuLnXmMsrk/4rrDfsvgKhfpr40wog6uboQn8LsvD0LxczjmqV+zLbFcXjxRaamzIUthIjUDm3l5DBw9yHj4yau8QcFAaWlpcoEgI5QkJSUxGJ4CUZgeH4bBgOJzd27koHMUGZNeU1ded3h8sOW/SNvl8pbQ41IRJVzffa6odrBQYaHJVzrhf3t4I9Y9sIF6ZN8f7G/JFxbjXdvZCOLIYccfVtOeRFFknZJXcPDBj7ACoDZPrPExCxPAGQPW1psEKAWoq1CDebxxRd4o/9qQd7gT2I8VUVvz/CMtrqzs8w+5OE97ikakEbqOl/hlZU8e/xMunGjMTVja/oM9nOkrZbX7y6zUQYC4LKSuMtdEY1Ccjvu39DA0aNGA559Fj/YvNn88d69aiGeWnyxtACMjRkNEKNBFlnqKk92i0QWROJzmLPm5dibItj/duSwQTRs2IDjGLP/MeYT32PjWxtL/n0Jws9AI/wkC/GtRwVgRDY+PtzTM9LdPez25VVu31KxpaqialPq4hqrChFdGsETJiclZbJ1NM9LEYniGBGtRqhA5KoRPIVxZjRmKYj9v8E3pOi2dIThw3kB0PbHiQpLTPX1XjLg9uBtbyBI0uLNQ7DsLzO32Rv8yc9P5DiFwiCx/yijffR9l++qi0nOlR3ZwQ65MutolCQt7TGzyS5jkTvjQ/wDFgGS/LcJ//Wq+FTjlS202Ai7rs70lMOHn3D/fgFOYWwmYmBk4VCMjQN+Z9QMsDVwcKyxLJy3QYAnAB/Os387/jAwYARISmRELCMjSrDzWdRdWRD2zn6ECBzxBOAxDRgZGdb/a4eGS5iby922I3dLZV40bvZcL+ujichk8fa7/n6nt9dIr33eVKUuLIyBFu1Ylsn/tLTguqIz+xCwpWCfMOzvYQY+8CcAQmkpXjLgvfciB4JKKY188kffc9BQv7HduxM/Sq1qkVLZWTW3uHWDG9qqx/kRADdmVX8WTsJ/jUsA7AerAVYMVpf9Aw3wUVtJ7krXvtwTRQBttLXSap8qqqkxud9QKP6O0AZTRENyMtZgmOF++u9z33Pz/eISzDGPD+AMdPqfgyXuam/HDBAfKKe4WDzo8znfIfg+kXgeWCgAhRjzMA4jjA2/NjYyMibhkQBUVOSWluZg8TcfP9VDHk4wMckkQmam0af09Lie07961RFr68PICNPTRlykfKLNbdsk+8uTgYcPuXvXVF9rK6ARvJ3slMNr5Sp2nIZZ/MAKgLWRq1cjNeCLpg2W/U1kUl6+cPAnwaihRnlgOf6ifvUydTfpgW7uJjatrtf/i1CML4RCYnm1LjkE2noRgD6o1cnszkTkewMNcBP7LqAHPBDzdtHl4ooNKiqU8hUhxNwgre/RuHTTE6PpfNnZdtaxeogdw62nPoss/OMK4EUA3X6lqQ37CH5zM/aZdCN9VVX+J3oMwg+isL/w91gE6bLiseLiMZAJOZBrtsLNxSdj6+700WcnT8lVV3XFMjRsa+nCdxw7KdpOfJuask+XGopUNrunxwzklZUtQ07u36ezk9lZOfLyZ6uoqqaa+PEpvuA4kU8EtfS3lDglJW5JSU9J8+X9Nv0rXrPUb3NTa/WQShllqp9SSlVRI4yor+m2SrgWVpfL2mHLFtMM8vKorKSoyIu07E51De1cXfYPNMBdi5fByfUWxfTQY2eViWfUEhKB9HQ53WIfaY58ybOcVR5qjDGxntzJcsptLO8f/tlfjuH580YAPvmE9r5NPHfUPvFq6XUB2omCQRghxPIwNm9CrrHFIMdfLu0lLt3ghhxG9j7Pjh3qhDFyxFn45LxmHqRdvFg6c116l7LF8H9/P61X2l2RpSTh4UPpgVhSwuz3+Z++PpGvzVXYHGyCu4ZN7To2IfzDHyoTYC6jqaTpUvGlS8W9vXDMUL8r9lftRYGTkMH3IopUS/nkSwDU3dTpBhjwBGBdZHUOHTLhuJqBjaMsDh60O0UK2rmK7B9ogLtGbwNVixxmeIghQNQgXzM/P1FOiR1vamsTjwxPDv+AH8gzUpgsX1JOkwRAW9kKMsvEBGfPcu6c8f21vTFSzIsHOXaMo0YDSATGYHReAP4F/PNODFzuubgzzIj6Bxm8x70WWi5w4Vz6Ofaf4MgRt77eDGHHgHNwGj76YN/tM2/U91RWmvubkkI4bGjz+nVTIf3yltXP8/JMfasq/GBkhKEhmX2wJ5dcsdsadIr6evdLAQh3d6c2N1/pvVJyu6TlWklzc8mt6uptPgZ/7Cmc1WR/W0VZZMnsgKc63SijLMAo/jHqh/0zl9wROSQrDVg48UI748JF778B/Df0xAnAOOMPeSgDM9aXkWFdwISguhp10cFBpqfFx9MDZgL9da7beNnTgEoqNX66ne0ppBAHdBJNVzp92lCeIoC+gl28etD4OGrix4+TIERGAO4/ARdrEy7vzDI7yaRoVYNyrQWtP1c2VbLtxQ0KTXSFUqnYnsM7Lev8S8Mff+MbfV++d8fEeaEQdg6Ejfa+8x3mmpt1OxTvi1J9pfvGx42p4YAGiTPIkK1Jp7ADQZe7u/9qT89fLLxa8hdLejpKfmdGxuUDB4oPHNikb30kTtxVdnnSSZelkWZ7nGRexgK8hU/0wltLsv+PL8L3v41E4xTCp8Z8IGD/d+CNhArAFFOyaaZtKsja45iN9q/o2Bj53+gQr83MGMYpKKClBb1gp79fzq8sk0wJgMRAAqBguZZa+6IIYsXlyxoFwWrAVN1Bkb6I1ZgYNtHsPwfuc+A+YuFZfkECIPew5yd7/njJz/y85hpUVW2tqdm1b19qrCm4wT/J9RdKX3zx548de66hwYZ3jqe/jiPytPnwCSMI9++bf1dWsiTUaqyBhFmWSiprAbWc9v37L3V3X+rpyfje9y53Xu5r+mH6c0eL9+8p3r/3RFXVepicmkyyNUBxnrVY31PWC6c86o/O/hZrLgBv8QkyHwjY/9vQmNAIYI45F1fmPRdv7ckN8x0I80S8CMVY/DqeCHWKl14yA09lZXY4yNBQZyddXaNDQ4oGZEUUyf1vpbWbbgXOMb9NRQfW4T7/nKmtNXaqm5Gf0lISgctQHyEA7lEWgZM8s7G+OTROxif5P//fPy7cUlheXr4j27wy7TCHJYcsH8dzOFGrV51qVocq+/FhD2X7y80DUEZysXPNhoZ8CYDrMjdntmBbjYPDWiAc5vKdvZfvdF++3eP+i9Pf+M7xX5P8nd+4/3LxgWKZ96q49QM3usp8lyUQCocb//t3//t/58l4lnWDvfdgLzGgJRvOf53YPxUaEz0EZLuubMGj+UuEpu/AJFHwEhZ+BMAbyZU7KvffvvBAAiBXVBpgXzXXPWae9eukc5hhXV0aaTXUsHzI6ZLDOjaGEZvaWk6coKSEBGEL/Bv4hfk+7pzF/Qc8ihBzjeYKHz5kYKCv85/33bx59WJL1m52q/gT7sSLvBhDOuS4tSSx/yJZtpwcOwXCG9XxOx1arcZOTZAM6KZYYw3gTfjaf/v2qzv37Szt2l3a1TX5z85f/lOXi5OL7SRhtZm1XQXT8/ptNOBN71g2fiQEL74Nb4DD04BGYNeyNeAGtADnvzbs70BobXIAdtRH8fskk+Ewk5PGRAqP4BcWf8h4ZgV9j8xM9u0z9uCBqN+anHa7ZIr6dxtt6j/ppBdQUEGF/y4dmdCyNmWfdxb5JQ4FsAVKIAuGMXD+GO5dIlevEJdiJaq3l7t3uXqVz/OHT5/+ZIyxjc7GLLI8AfDPUn8b/jSkRp9Ua83qv67AmP/aDIUkGGHCajUyVhjOkkVtb7eve3O0VTOu3Vdb1VVV1rXP7epyytrM5ADXCMAxjvk/z2poQOS4v5quupuMGHDStqWXIuO4dS8Ay9SAG8YEtdwg67vqApBBhjV14NFRZCMjFBYuETeo9/+4HWZ0oRVOyTqVyH076hgo0/hDcbGxhgbDgurfN25QXi550OD9Pe5d5aodDlpsyliKTwFAAiBTH0woSqwGWAGwqFj4KWKhhJISQ83DwzQ1N+WRJ9nbyU4V3xc3RiCLlYd9YEBb0ZpajWyEEd25RK5PPDnpuf8mbDrqmvm++/btK+2alPegGjQPhjpqTMaqqFrD1fCHGLIP/9j5zzL1uDj4NB9eejqelqyO/OQPN75uz/w4aykA2WTbx/j66BscpL/fEO/27U96JreGmh/jx6aZjihJJ5wCGqOsWPcMfAhzy0zu2eUIjKvuugwN0dRk50b10rt45/AhAN80ApBiBCDRsOyv7XU/PCP2V4air4+bN2luxi7PqbDICoDFWg5rZGXJdGt0iQMM9NOvmyJ9In5ULSOrb+3OHSqprKfeWG09nRM2ghxvarKTA+w0hRChtaq0HnpUP6olQFqu7iYjBmz2LitzfT8xH389OgH7J0IA8sm3E3lucMOb3Tk9TXJyVA2opVZdfdadBYt7kWnik4u54idgBj5m+VBPOXIEXdm1axIAuVFyNhVQxyYAP5oCsnSsAKxRBJAO4376R34+RUXk5RmPsXfE0IccSSzWXAN0WZLnwkIJlCRZdKv4bJLJeJ8FKoJj+IFdz8eamN2yv2wTm9i3zyaQtL3Tf8dqgATgCEdYC6h+rHgPMgjoSuy8MOLG060B65/9Xdda5IsjEzrykwAB2MKWUkrLKVdMOjY+Zl/ucusWu3YtuHsRg44bXJs69tscn4FZjH0SG9fYZGVy8ty0GaWOkm/8Jk/EcyH4fwKwJv2gZGpqS2trSXv77YkJtmzh8OEl+od0yr6Ja2RkMkxYtvID6rFBXnVJCaWl0tXwVLiNNvtKwTrqiBmb4Rgc9TWhz77tRzY+zlHM4I9dVMfGjlYDjL3/vicA2lZQkXjVbKFFAZx915Z9rFndbTObE8CnT6cGOKwTqMPJ7LPOKdZWlv2dtReAJJKqqLIzreROacDh+nW2bjVdW5Tr3T2fIjYFISBKBGDt8zik2N6FZJKJASkQkq2RAPTJaS35vLWktVUacHt0VP6qhtDt9F4n2sCn5M6ag2ONdQKJUkUFlZWmrbS03OLWda5XU11GWQ45xIBkOGaNJeGt8+UN/lhjHlYArD28ccNbM0Cm9pNIsrVrn13jmiJsQKGzVMp7MjXQgPXL/mNjcrtQR52edhzvnXgJ8P0TKwCCqL+GGjkp8uO6u4euXDEdJTtbD8pbxfN7967DNTywCRqwINsGAfMacBED+xIICgt58mwd+8oB3YyZmSyyMsmUEQP2G+NvkGi0GqONLa1b5lq3XGjd8lFbaHY2LNd+505qa+3Ei532Eh+ba9Xba5eBQfGZWmA66awfVFfbl3koYOyb7WuiSSQr9n+e5/0MBPXTr5S+4kh57iqapX6OLi0Ara3e254XDP54cJxIDbg9dttLBhzmcMLIVn3KrrCts0vHxf672V1LrZRyxfnUBeep1wCH9YPOTrq76euzg7G5uYYSHWcF2d9ZLwKgTruHPTa/+h7vXbhAVpao3ziehw6p5N7lRi3NHbgG1+GPY0EFNBjzQN58HDBrjCti/+9/nxs32LaNhgYOHoy6TndLi6RC3diOn9qXasU0D2Cmvb19YmIiMzOzsrKSBOCKx/5mm9KaUt5aXjlWeYkqOYYqukom7RN7zePSYwua377N3btyQaiiWKW2mcP1gpISM1Bo5+5dvHiRi9lki/pd3EMcyiPvyWsQfc7nIkf54+OMP3/o+dCxkB/2n5gQ70cZ/Fm4ZoCnAWfORGaDFaastgY85KG8fumUyvgJn6hzqd0e5KCEai97iRMLeuS6hP9rdlhvUNtS51SAqe4HW7ao6chTTQj7J14ABLXLHnrkaavhfjb32enTYn9VgjxQ9XGRlGRgkcHkcNgubsiNeQGwOAAN8xaJIm8sSGhuviov7ld/1fRf+2rJ3bt1pse7+xdfmBc4NDXpfsgLVuxcSeVyOzDoDP1nzpy5fv366OhoXl7e3r17n3322VAoxKribY/9zVbQ9cv7U8glAVDJxFE5OSQlLfI2CsVhZ8+K5kzyW9CvVHDfk4ETFWvX1YleTSsZHlY7OM1pF1eE3kef/Nwqqh6TAX1rV/mX73+BC9IABXPJe5KTjiW9cOyFDcc2kOZz2pfigCiDP7DoQNBoW1tkMmC587AG/e3zFoWXwikj0kyziqk4wFstWRqwYjdxQY90wXn6RoQc1haTk6YBp6YaP99xTNz94IGhnXPnaG5Wy0lONrFuZSXl5cSCe95//XW9soiPCRMAReJqnRNMzDCzkY2fT37+3nszAwPcu4eyAhUVFBWZCCg9XWwlbRD1O6Oj9PS4nZ3GBTSZgx7uQi40RNgOHkepHQtqbp5tapprarqufizq15lU6XJ3y8p0G8zNcF3pj9l565a6u7hQ/6znmV3s2sGOGEZC5KF++OGHn376aV9fn96vMDQ0lJGRcfTo0UQIwAAexD52tE0E0dTf9OmnJuwZGzM+dEmJqV7XNf/s7JTeoVBMfzA4iHxGhWj6YTnlsJ5Gj9UmFCSqKagXue5Ua+v7vD/AwD3u3eCGdFrEJ4oX284xN8WUyLGXXpVd317hijIHodra5OP3ko51JR+9/2xu6ZKDP9b3jzL4swChUKQG3Jy66QmAiJjlIBf+DZF4AKcWvuNhmmm7AGQnndI55UX0T4m3TneMY9IAXe2qOteu+zRqwNphZoYf/AAF4xrgz8lRbxS1iZGMV2tpB7UwOcEarZUTHPvb8G7K/LD/tkdY/48kTADsQNCzPCslSCMtm+wmmi5fvqcuJ/UrLTXhT1YWaWlWACST6vWqKOf+fdrb70gnHM6bVd0p89z/aNVV0c+J5s2zzVs2NO9OY+zS6CX3gw90FJ1JsZa5DVYA5P7buWDygUdG1IU0enuAAzFE0PL6Ozo6rl279vHHH4OilrsKAvbs2bPqAnCehVAtiY366Zfc3mq9pVJK5kT3BQWmeq3wdXerBcr/MBUgV1rc0UDDPvatL/ffYts202dcl5QUNm8WN4vZW2lVrLOFLXnkKW7zBGCMMRVc5CgJnNK+/YfChw+fOXYs6fjx5NLSJDj2xKDcc/9VaQsGf6Jg61ZPA+TTRWaDl+uJ/y54BYv70V7cKQFQGSWB97kfJiz9s2M+dsFkbRPAqq7Lc0RFgHrohh6YA3Uw09N+4RfkfKn1SgAMtQ0MyCPTfhviHjnCgQPs3UuMOLUc9pexRgJg5wS8zMtZZBVSKGezhZY7I3cuXepQl7Prd4mhVEWua99YoIoyYrCJut1UbuMnRFViN7X4/RTzBDRR3VS9oWlD2qBRGnVIOUp32u7Q1mZOIKcyFDLnmJw0J5ieLqJoNwfFgHbB8RieNJ/9EtPT0xigNICGoLRnbm5uw4YNJBYiBXHBJJPS2s1svvbg2g8eTFy5Iv/CEz4bFBlJPsEucZxKLQ3QTWF9QmN3ipMzMkz0VlYmNRttbb0yqzJdCRGSe+4JwEMezjJLUpIR+9pa9Sr1rbEjR85UVCRDEiQT1TP3nvtsa/Mx+BNlIGikq8sOBFlTsMty8EOEsP1vNKSQoh4kr1/6V0WVAlaFrRJvfSZR+Aj+GYsjwE9Dj9UAWTjcHQ4PhsMY1xD7bivvOeeaGuNiyEuUZWURGyY/mfyE/4rsyQjBNpZE0mqHW/LXXuAF23ZrqGmjrZPOHnoGRwdHBcLqwA6OunQW6eVslounjiS1kMdnV4VdgqduQ7OxquYqT2nUSXQiOU0DEwMPJx5OM6ZTiOizqNHB1dt1JepCCgJiSv9KU7KLioqqq6vl9ff29ioDXFVVpT3+2L8i6mGNxQKVV+wvZlTp9Pkud/t6+oZ7xvqYBlTwYjbXU1RBhb6V/yjxe+LgT3L0L/x+k0x82LHDrltJVZX6jYIs7t+XiIVHR8MmPpgzXSs1m4wy+2dUVuondvkBeRZDcMYKgNl6pP6TkevP2+c+Cy6ZvdIV6aId/PH7mikJgER1drYFimktxoQCC11yHTw6Usz34SUeqk4jTbquhmqnHUgJ1Hp9phx+cqmT+8Ib8A4JgI8Ljv0YL63Sia0AeBowOSnr3TI59IIJMaen5REaLzQnh9JSBbcmOdfQIDGI4VLsdawwkuKcz+OfoZSotEPV4uVeeocYGmMsHCEAtqHLS5WHXkqpBEMfeDLC0GSMZnDRb1/kRSmHfc9BN92DDI4zPs20TqFOruNbhVCYv5vd8WUr6zTuLyWwSeD6+vq9foO6kyyGHPtFrFCJxBGqNI0U2xEhece24HIhLYOUUWYXQlBVxHCFaXDS308y4OSKzA1+8UW2bxdbm9xRdzeDg4yN2QEiEzmGQnak1SSUysrUvSJXH+2FM48LQKO3/ryoP+MSb16GSWzKSq6G/8UhpEm6GAUo1r+7DMVQQrNNCfibTZ7sfcl/X/zvbL+QfmeSmUuuuoMcKZaDRh8n94X/xh+AB98mBiT2gv/bon/34mqe2Hb7KasBU1M9h6b6qqZGRowAzMzgOEYAsrIM6VdWmoazlJfY6P864kdSTNM6HZYPB0caIJtgoo++YYbFUJ4AJJNsG7pIvIACfKJ53u7ioZJK2QgjVmZ0Ok8AdHzrSRE35PKnp6fX1taOj49v3rx5+/btehg05kaevRJ3N4ssBZeKbB7wwD5/ZV8XLAFQwfPIEzc5OLFdYVr0K3wbvhnxZcbKtlQxu2xykp4ehoYMeU9NiXaNAKSkGAHIzqagYNE38d2fjwN+z6MqlXSZH78MsjYsrEyyLBw7Znw51wWG4DKUQLEx18FZQktJ8SmREgA7rBQbTvo/uQ8UhyGEHyTggv0f4KWEnDgFymT7ptg3NTFhBGBiQgJg6D4UUlCKX3rgpP/riB9Jyx/XcYgP8vTlg8uIE90RArAA9hWJrCYKvwTLxhEfu+Kq3rhXLPkmj2Kjdvn7SYo+rd48YdkycRfO4CGEcJvQJZBdJk5ETuS/7gkA7MdDNMIMLVJ/LiuOkP+9sWNdXXAoyq6E1dSULC1Nhn/4KkICBMCHBjisHzTPj/+MEA0BAtwhAg/h8rxNsrKwA0GexZ5WC/AUY8oaTwmSWICwE37oPmQR5LF+cGPe979KgAB+cWne2llxDDyqAQQa8HXE9NMtABo+/piP+53+9d4Qm+YtQAD/eMYYf5UY4LJyyITfaiwGrMPTu+v8gr9hjP+QmLO+Zox/t77umH8BaKX1Ez65xCUceMg83k3szfeBN419dfC6Mf49FuuutjfCr5P5y4X9Rtk6LUckAgQIkMTzRMK+HP8aM/eBH8WC55/nq4YAAQIECATgJAuww9hXHAECBAgQCEBjwP5fTwQIECAQgEIeRSFfAwQIECBAgA18fRAgQIAAAQIBCBAgQIAAjuu6fE0QIECAAAGCCCBAgAABAmxwwL+9CP8Cenkczhrb47gOfwdOrNyRnZWwZ+DvQktMa8CdhN8G3yGR8FHyDfC6KRUXWZ9wlml74C/DVVYUw/Dv4UfAgZ3w5+AyfjAL/xveBAeK4Q/CR8SJhHVFZ40sOn4Rvg2pkAW/A74Hq3oTnAUWRAAJQ5UxKiGN9YJ0qJq3SHTzNOPgvB1gfcJleUgyxsaoHTpAAB9wWEsEApAKlZZt15Mm2UsK8Qh+BT6DMZ5CVEcIwFcFSdae6p4dIECQA6iytv6CEhYIgOxX4QtixzRcIrHIiWD/bNYz3PgFIAgFnnYE7n/sawLfvUtnJwMDTE7OL3D8IhRg0UjsePCAnh4GBzFrA4fNwe06fxkZ5ORQWEhx8XIHyz0UQyXfqWS0BO4nJVFezqFDJB7nztHRsWVmxggAWUW8jodGhFR4B9qhzWzZEykS34fXTj1arkz4BkLjp3AMA27BF3AV9rM0bt682dnZqcUstaJ9SkqKlrQsLS3Vcmb4QB99t7k9zTR47J/O1gYi8CyxYGBg4MGDB9pqfc3JyUmtsO84ji5Pa65lZWXl5+eXlJSkpqYSK9xovfLhQ9ra6O5mZITpaTW/jZmZSYWFSWVl5OX56OXuo60vGoYXDDnvhPqIhhDlALPw8zyKYniOaGhkRTDOeAcdPfQMMxwmPMdcCikZZOSRV0ppAQWsHFTrugNigqEhwwGCt4JuZSWx4tSiKYBJIpFFRGdsXKk74BA/1P7b29vVI9RP1R1c11Vf0LKDBQUF5eXl+pAoAdA9uXCBq1dpb6evj/FxXBdeiLfNSUhu3aK1lXv3zJ2XtEgAtNMKgPq5BCA31y70SlUVO3aoUcRw36vMj9+u4vz9lBTsgr0J1oDPPuOHP6S5uWp6upJDlXxzYdX9GFTCF/Ar0D6vAbshv8Xs5bVGODlftEz7G97CfEflfUos9dvtn+EJkNT2nD9//urVq2pbotqpqSm1Kq1mrBXtd+/effDgQTWvJ7UFht7n/c/5fJLJL6k/jYOv0mAJ//+n7jzAokizd38KUERUGhHMNJKlQR1QEAzj5GfdnHdvjk+8Oeecc8453/vf8E8zOzlgwKwgTZLUKCCSJEuy7s86Q03ZQFNd3Yzs2e9hR+jqrq4633ve857zfeU9AHR2dnZ0dPT09PT39w8NDY2Pj4cFAEIUj10jSvEMTgIVwUDiZc3N0tCAK0pfn4yN8aRJ3C9px46kvWVJB78vB0SHpLndv19vlYsYUGAFAIkUAFZGoD0R5hteEbuxEWSDNLRKa7d0szO8PlHVFFOfKgr081Q2nupaKqW7JA43orVVgkHp6IBhwgPBAA0Awk0G/QsLecI/JDA+AQCDac3a6O+8kvxjo9wBvLK5paWFedHX18c8nZmZefr0aXJyMkxoz549zNbCwkIeSM7UWOcAACeqrZXLl3l+NpPkwMCsb8onZobEaC0t3HPuPFOf3EL6+3cNDe3YOr5ly5OEhKeLiwmzsymTMztGMjIWuPPQdp70zXOUAwE5fNhDAGD4+QI7fmNmcZF/8T4aS74EI17i2nx46i9+kTPxdT0ZWWZfEcm2RpCxFAO6nzwJBIOBxgDPSV76VtvkV37guDnBYDC7qVoDAEKeVEkkA1tra2svX758584dkgC8B0KNb4G2oCo5weTk5Llz5yLA6025eUNufCQf9R0akYo3pOK0VKyg/f9TcWnQ7oGGhgYCEufT3d2Nuw8ODo6NjXFWdgBITU1NT0/fvXs3xCc3N7eoqCgQCBw7diyJlC7GJACvvnRJrl+H3+CHwE/ynJFIAEivStx/LOlAEtAvB4Wf8jvFfSoABBhrxIACRjSwZSPQbuLLum6uDd+/Ile40UEJkur1Su+IjCxsXkhgZj55mkb+Krt52mixFPdJX6VUEgkkBuPaX73KfQASuAMyPMzDuzeJyNbN83A/5j2TdXBQamokNzcuAcCOATu4kvG8A/ZNMGIl/nV1dbC0u3fvMinu37/PtJ2amiIDYLYyEfbt28csgK6RHFRVVREP1jMAcGe4P599tvVKQ7VUl0gJMZ/nU/NgcbiAeDDSbe45b3v3LmFud+e9nJyh/YWSeYpH5gPLPD1ZiHVPnkxNTEwND/c/fNjY82lGV1M+MEqugC9IZaVEowOAnn7xP0Pe8f3N5Jk6CCRfjunHhUL+iYN6GjyVfsXHwZ+CzC8NAP1TYkBjYyj4i1AwFDACRaap4o96GYGs6a4RDL7Z9DA7mOEfLCwkXQgwJIKRyN26cuXKZ599hj+dPXsWHkEM4HH2ZAP8CdgFcEkt33zzzRXVzFtyC1x4NnwdEH+gn0GiHgP1a71+/frt27fxdf6bDEBEoDl4OXx/06ZNeMLs7CyKUIdlTICCggL+48GDB8QJvH8nOaLnGMDH4YoXLsjFi5BP+GyOnPCJL3ExMXEocfPQ5qT6JGa7HAgLAK5SAXP9deD1QH+YPk+CuiAXrspVHgeSsDMBZlCxt2Lbtm0EAIgCYNTV1fWb3b8ZkhCBAWkINPD89GkwgPjLHQBjeoeShVl59IBY4sbU48edXV2dHzSTmIEZhoEigB7s8rEp62/e0D9N1jKc8eKFCxeYp0xJIJ6s9/DhwxB/rj/TFsIEeyM/YAogDZHBv/zyy0yWdQkAoC1zlLvEPDkhp8/JuSqpOiAHuOV7ZA/AKlEa8Z1kAkkETdxXX1+a11/8dYI8FJ9bC5IQAMi/QTcepQ+9hbGSG6ASDbe1DTd+GLqPUkSKCKc+fVpwB9cG7Opo7r6tcPwlBwBGjlRYiUgkRVOhxq9jcBB6/04wSABgsvEWX8B7p7wThLOSRDU2JWcX+/1fyc4ObNnCn/Miyiz4TX19PV711ltv4Tfw6O3btwOvfBDY+v777+NbBw4cYM5DMZY/Iwjo1yHgvg5e5tGQxBrxdRz9xo0bnICQAGVnHzp0CIKDJAXiEABgPYAOihDKFVQI6CdUEK6YBiqMnj59Gs3KcxqK+IMrgv5n5MxJOQmrhd8kSVKCJODhsF0ZEGHcjK725wwDxi8P+mOAPvreJblEGMANKisrcRJVnAEg0jKcp62tDWyCpRItgIIdsoOcYKtErUUgLdfXC5efGDDwJE1ePy0vvYRHKaVg8nODkIGCFy5ACgkKe/fKq6+uhvgcwvDpzw3aZZAqsLzIBh9iRmgMIBMlHQf9mRdQIv7JVCVF5vrDmbj++D+MLSUlBcZGohz/AIA0z9wAvHYtphdK4TE59oq8wvQQbwZ2K9uqq8t/dK3i7ALSXkmJoO2DzWhZy66ksbAA6Yf6kyrIvn0Pr1//qAEywG/xCHzBtQLAZFbw3fvwTj9wCiITWHCo9TbYi/Vx+wYSNQIxVWQtK1Y5qDuYbQaDBxuDp0c0BgSMHsM4b9QZ7e/A/Y2mpoL0YMlbhVkB/0wguzVQcTTy5YAywN1IKiHRpaWlJ0+eREsRy+AXo6Oj+ld+ArUEgDBZwEb/0fJDXwQAr8YHoUTh5ZcuXQLQOYGXXnqJrBbQAW7AdCKTHQDAenCHl5ElEACQjEhiSFwWFxeZFa+++irRIuokAHzp7sa3GIgYfBn4DYKGd1E7ciqw4aFfy/vN0oz6j8pHvb2mpgaWQFmIm4IKJyJccHyD688/4Z7IFOmSTkE4T/IAB4m68IMbCKGf6ru8dlzOnJFTp4Qqnc+n4iAlYOY4pcG7d+5kZwveWlYmVrjfYcO9/kfYPzci+m+x0L9GIhgaLPwMPnSVhEi4HmdOnTrFvNCiF65Ojs4sYAowX5gChAFuBEkwKtBx6prxDwBjY4RpaDu3mYnBnfaO/tTWrlyB/hMAApNXa15ByAFAuKPc4tUuoMmflLpnZxsZGQSJOaP2Yn1dIpkCoCVVVeLaVH5h9NsqEAHgy9J/NPzw0/V6sc4TJxr9/qA1JOjvv3U21P+X+jMzz2292PXhxe2Tt1871oM6GggEA4HsgC/bxzeMjF1oJvBoGER1dTUg6+z5ISTAMpjzgDKvIc1fLv3r6MhZjBn9cahh9XI+DofGfcGaEydOHDlypLiYfMaPry8rRY2TwRCWeDFsFIoEV6IGoA1C4FS08o85NGTQewYPQOSXg0BYmVlmo39cY0A4QBgb9Qm89Pzgr+3SToWfG0GVBVc57MiVuS8U4bngpAKU64nibeNtyMI90uMhAEAvoXfMD2ailnrJ7MU2KgAnT9IbwivkGSlJ7+/3DQ6mZ2auiPvOX255YehvrI6vNToiZ6QtpMLgO0AP9KNwotMyNezpwJVnnhIMIP7IQcxTAobdGUGjRLwDwPw8wM1IkjQaABji1ZCfSfaQ+ooeX0VLIthT1Tl0yKUjg1AmJC8hwZidfTr2/vXuWz40I5ICxKNoVaA73XdmFJePHVvXUrA2FzJSux849R8XtqDF4Kyst/mWfj+jhdH36wPTTxaebBrxf/X/+n/f+UBJIJAbQJET7E9bWcM5Wc2YsXgMKSSUAXKNr4SBLL7F7/krr6EUDL+2Gwxuy+3PA0DavS+kf8R3r4aLozXBH6n6cibKNMEayCY6g6xkgD54hDxFLky2CxUlBSYGaHHYdQ+rFmh/oHfHnJw00BlF0P13mjtJEx3z+KvWy2j1SIlXDFghw91I6I8NyzBNn/3Sj6qgsKLoH2Zcc03UYAyt460DMkDqMC7jaEHisMj5DzIv1x56yZD9VrPf8rmMFoT3M2u/970Jn28qMX16ekX0T97o60sU+k8xInVDoHASU1F4uLDa5oAEt5wMcVPgQ7we8sQkIi0mlYcelZeXxzkAgLg69BHBDPFmPT2ofcSAPW03Kt+Q6moivbb3msvlU9jHpExqmzkhJ1VSt2zeIt+Vvf9LTpwwR0eNhw8n79+9u0hOiEyB07guBX9Ow5/kNGsZYJ1LwfoRDP+sJh9a/nV3O65/Xd75OgvDHlx9cM8M3ssO3ssP9gz2VL5X/WQurfGdb83l7kkOFSQHJDlgZGa+LH/3vNVJVCarGIi5YBn+lGSZPG/oLfp7fRmvF81hjG6b/ps296du49VQoihFwHRQEkQEr8XLiQFucli4D3kxp0eIgv4wW4glIBGVA9cBAAPWfwUhEX5jzs8niLHJ3MSt2SSbvMOy2xgQIRK8eEPTp/ef2bctdZuyBFnFiAGEZFXeOIQDmbZ2AHATBvAvBjdBnY9B9V+WG4rQkyfcqbn09GfDp4i/WTaGmW5Wfp1aGjWRThxtDUBHgBUR/DkvL48kjIYIWckQS9vb20mImUQcwoE0UMQ/AECQGSgv3F0dnptaKflB/I4cmabMw0wPR39DpmRKe86gIRMyYQcAeo12Ze06mHUwtzY39+yWQMDs6jLa2tpbkA8RcJGQ4A5RqkDNodtfRi/QUpjJkeN8NEPcW0Aehx4He56VgIMI/v7g5pJgxZF/Har+Sdr75w//mZ82/u7Gnh4qAyjjhwKWpaSUyuoGs060zI4E8rwp6GMaBpR3QOts9B95yR8m/nirc0Jz8F1oC/o+Hkw1AqbjXsEEmHB0rQnDevgJY+INmQZMm5WE1edOtW8liDZ6DX1huO38IgHYL25tclIXNGk/Ow1rRnq6SbKa4plFRng1H4OQtbR+jc4INHKG12Bl6PB2rOvzNpyYz+dR5yFFJSeT5Qbiv/66ICFbA1DY+EZKhGwialVK/yWtRnZoRi0rc1YkNeRZ6BGzj0wXqYcMLMIs4AW8jESNNJqjOJY6meeW0KQVUzU+h9ybn1PSDy8Alz0S4bY2uokKEjoQrUFsfoah/1252yRNbdKGmDgog+AOVxCXIgBAK3Zn7vZn+r+dlVcsufn5eUxz0LQlFCJoUjchAHgpBWsAoEjL1FwH0+I5Y/+jTW7Lv04BaKsESx8Ge64GQ7Wjhcj87SUl5u7Ar3T+67kn21/5+mxGdnd20PDXhogBmaHp0tCuQCDHKJZVDT0HeQfKhrYDfSaFBH9REp0iO79HJlIhiNc7pf92//wX6G8dZXrCLz4CqoLLgt0iAs1hPcvhKMMwfk/OSwghfpAEKAMiEhAA1uzpvqQxQAyRK87X3BfGMvT/vtj2R9xpfvCc9nayHF0yrySK1cRGdrZZXCxHJX7GB+jqKcoYhAENAExYIIDMOBBAWI92VTSdPCTcrPWdmp7iTiEGyiqGSM1f8RYR4fUcCFWMKoLhe2A7Gg+1PZI5YibTmTJAhG1OGHPisP9o3aAdsqGM7imq6MqVBabE8oUaefmUtraq/bEVr6eW6JiGdMGhagLlSv9XM2QiXkMDKLOJAzmcy+g9AKyYqnHWDOThcWkFlBkeAwB5Db0WRVR64NzPIcYT40md1AExXLUWaenKGRwCkSnwJm27PD//s8eP/8Hwx29l7a7IOpSZmQdi7N2by9/5mtuu9U3SJwD9wTyXgjk33m49uz/5xKjKvx2gv47iYoJcoKenem8T05l2qZu5It9AmuaEzfNaGkj0Nx2a/kUg0JOT0yPCCKzOVdFPcBd8C6YAZYCJ27KJUmllEJg2VtIReNOwAsCOVlv6Z76a4t34CJgO3Q40+CMjoN5Q8oXLSJQG1nMghxMAlP7wtiQxsKdIAcAZA2yrlvsEgLA0Pl0rBe4DAKCv61so5XHbATVIrYZe4XLm5xvd3Y+HMqSa38QuOrQRnN8TNDQ+DNykv479E/juTBw6Z2iXgX/QIkHMwVwrUOzxkCVZ+2Rf/XQ9EjMXlsjKdV7WzzFHFOdWgjs7ZSfMhqSDMBAlIzD37OFkCY0ydGsIfBC+C58FQ1zJ5nTYJ/yWhf7GxtJ/gDI6aGullhUSRPsTFvTT2UScwyIEAPrcaMNjxa/KazT20Am9phzKy3ixdlVwLO8QHwnIJgf4kw74OI2ABACEGjhCVPs94Iv46O4pPIl5yy13UF1jQVedsPLw1q5bQ8hDh6sFsrRzJ/nhr8/OPhqt3TbcmPlgIDNzICMDVCQG5LJMlb/7UkcnuV58Z9QMXN9DKVg1ekgHczTu5V/rzVO7e9F/XJZ/BwB9xyBfOI+y87inpCQUCISoxdw0ZGmWQfZNf5rfH/DnBJpJEOzFw4zfvzpx1m4BBBN68PEw6AZ8n5+I8vwGMIVZK7bSdWrT/6dL3N8kYMRmeKoyHREhGhFsIDISvZH5cqwuFmM7I6U/vDnhTcLs8nMyBRUtqkHJ8sp01R+ePjXNZjfm5Yq5r3XIw78j8nfkxnFR+2rU7b50OOuaYpbNzDxNFrxs7y4EIJY1dkxOttUOwHGnquWpyMsxathBglgzPXUU1ZhfTE/YIAGAi0sCQlSAb+m8QGFhyrlFMkPohmJJFw3frPlQJ+EKQ9WdERpvofsQ6ZkMDNAB33Ill50holeyuEKkgGZhIeBvjHHmUDFQDxWLc47QZrNR9+Jj/cRluUwAYBwIjCn019S4EuQ038JEhDSdWUlThkS0HZbxSr0p2rsRtxrAbatb4m9zMzQGbN48MTdBAEAFii4AsJQMnv6MWi5yfy30N+1bSLsx0E8MuLi/de7Uq0Jn6JEjoAzXbHTT/ODszwZHBjPOTWZ9V1cATgisVBo5KZqSGeAsi8IYXIyoS8GzVilYB+x6nVb/zrkt/15zQL8pUinCOQUOHAicZ60WqP5z3RsIW/q/QMrj4PG/eZwY4GcnH+vA+ogBAOhHbIHpM2/pv6S/nrYz+j0QhSB0zGpmO3I8QScjJ+MD+UDp//Cxg6Loz8+Ybcwy+I6IUGOEvyjTidZAJaU/vAnozxvqO2sAiGCH5TDlpcfm4+mr09P/r29afuXvyPdJm8/8QW358QIrYC8NbnV1wp4poD/4xYImGtdIVBGACABM0JHe3k9bvv/00g8Sk4Ra81nPG/C2WyGNTwIxAwGcC8YIWyISkA3TV09UgEqjCIH+/InYQBBySWih8/R0UocbM8bqOuvo0+U6E1khBPZCMDIt3IYuXtaC0fqJZ9A+ywI6idqYtegBTJSnrG2qre2Q63+YWQ3UoGXBAiNXWTdWDDCETjnQX8fe4jGFfoZLejNjGTNR8MElk4jG7dCXsYSTA9XiXATOx9+IMBbiTs0Bt89GtIu/ECvhJhl7yVnA8eeajuulHoi5uv36XNUbdIbSG2TSmqmBQ9oeJT8aTBvMOhFW1lrAQ7SCpC2q+LonFYgAcGtdA4CWf13qP+9YCP5QRHFef+I8sp3/DMlfsfXoEoazVpxZSg+Q+HWs9RAryqeQBeQXujA//vhj6APeQyTAddDiWXLC6jBew01R9L+XPSsVZwX0p0hLDhKz8UEIx0pVtCahFMaDcSCH8yYEAN4TczMBAmaAln94zIx0Tsv/mxZoPy20nc9igPclzfS4ccmW0P/cORrYkTLIuZg7NLuQ4dO6MHbw4K/UvfMrn17/K7GUgq8wpkiphe06mCzwZ+YGkwG9iVQb+s8nfvwxpJrfA6OEfUiVuDYAnWofp0LzRfNo83sn3qPEgiptbwXB1UYwHPrNoZo9NUeMI2wNcEJOeG4QTz3SWtrfMjTUPjrKGu82vghuRngHDVZr8FuQBZPzM0THJlnRNn2Z+k+jNIL7Sv/T84cV+okBLlsUVVWbtUzIDi2LXADA7Fdi3BfeAVMVNJ57AcEj+BwGWAt1YkTntiQ1DKSGQq0miG2UfFl2SPm3sqzsW+Xl36qqylb01wBA7mAM0pVcmknYYIQRQIZ9AtFlnloKZuwduNOvZQAtBa9b+ZfTdxMAitB8lqA/37l7SNOPVY9ettlPkwRKmHr2c2YYkUMNBJmOe0ATCcXeDRRXQ09E+YH704nfk97zufizvRnp31yS/kVEsZvqMbxDU9RoDbmGT+Sn033FkzkPZ+bwnpibWUsWyAD0nTUFwTE89fwDvNBubXPjjeH+oD8xAGi2PxPuAxCr93MR5YP3xbP99gE51SosfKOTmozZmT/Rmwvl5yJQf/jgAzovCAP4YVQBAInsZXl5W8e2PR17Cu4X9Pyenv/15/8X9xqf0QCA0Py1P/u1Uz87lbsvt+RQyUtFL2WmeGk6IswgANxJuhM8Hmwba6v678H5U8Utl4Kic1tjABH0eaNVhGIhHaTK/b+9agD4rfJlGZVLcF8DQErOgEI/g5nv3uwePF1tZ7fhRTZ9GeZ8h3gHAM7JNBls+oFzMKLq/GBqkpySOjI1UlKIJnqYjBqjqMyd0jmSPnKm8Iyf/S6cDQCGAP3EgNHtg0A/VMaJNni4DoEv6IjS7HW5ui0EgwAQ9+5PO9UQF/amzf2X34ySZf9lW8FzCXGprP1hSOfnz59n6S8lPvt5AMgpugUQXVg2/V9ckv5RM1CEKRpT90NqJADQI0ShWHeQ3uT6+j+1jMPtHFZNPJkeq41MvKe+ebQrdgxHt763ttaeHu42VXRIDjcgn7orgOtAf4dVFslkg4yKjKCFiUcL7JYT5SylAR+Xb4dF2gH/APpJBZBeKUxDbqBSTCH35asENv5qaPC3tnaGQjQGfLJ3LzIdd5yrTaAl8frWz+5l75nwHxjLy5+QrinySoq3UT0UhRopoMl+c9r9kXUs6/T583I42fzjZut3Gp0xwNi/33webd+Rd9CiwaHvWKmCvIgAYJ8Sq6YvG58rP3LggUI/MSDaYpm5ZCpvqrkRQtXC3iF+AaC/H3/Cgchh90g5TQI+0yfRGPGDkchIFIZt4Dv7jLOdLNklvRzsAQajc65IBP15TVbWDK4bRv/RD1T8FxRD6rcMzJMKVN9dP60BgPDDu8VunJyu/g31sbWk+/4fuH9JPDYx2eYOOossExHdTscmZTb6Dx3dr7o/FeDLFy8i+KL8EjPQ2XEy+CCBRKMIC9Zd7s4fhviLSyaeTI8F9O135otEpa0YEeb319xvZy1gLLNE6+xAIUx81Y+tgPtQW9PI7cmO8yb8TAP9V6v1IzyT63FmpAKor2iwLgMA6Yzu/Y4LkNH4ExJICr9dVUVxyM4AyBrfffCACvCdW7eIdiYQQeg7exbty/1yM7plaP2g+Hct8dri6dO9lZUdZE6BObPYFBH2e3LGAJuczZgzU8YU3Si/Lr/+HVQJa7zA5h/muco+/Jzd2312SfeHA0RrSmWcbMYNlOvLMOc7eA4AvxK2K6DcE2p26JqJLS3lc0dLTehNPmpGtNU6hpmQwEk6+Rl3kUXgAP3BnQeBj7DandJ/hqJ/mPfyB7x6dMJqIdYKWJSmpWAGa3Sb7X7QkpJ4qv9zOfoRLuXRGnkx5gRNG/3bDs6w0T/oz5q9Omv7aPZdYNcR7U7jEPptWINOCAEOQOHXXnst1V34TF6y2SUDU7w924gDbdmUSgbvSSrjHf01CYjatMIl+CQnoWWuSGibBnzH4/n7Ebq9mRQ+n6bMzF8EWEiJyy1Muf80F7H3OxXt4vx8tqOhIERxiGAP8dcisG4H/awsfOUKz5YwqOcTwiFhfHfKOS4uIvVSbZghDMjJU7oHXB5y1s5RU6z/GWYbGYwjBmgtFcRgAB18mnaC4Lxfvn0kanMDoL/xDP1HM26cq0lT9C8t9fJkSHQbXYqvYo6aG+FITd9BLU4BQDuB6qequ7r2/OPiouwiSj0vyUsSpalEs7Bpk9ZriQHK/9hGHCLAYN4iKIc916b3am9/VT8L6o4sLRVxCuwMaMeEMh2vCx/s9vzm7puq2BAA4rn9Qxj93/DWYDR8Lv1vC9rSf6fV88f+tHQNsQfD0aNH6drUAEDnKFGBvTxVDmInH3FhduEX4NbWN4rS3nYz51i79Y33xFwGIcxYc9uG3xT5b66anLXIRRiSXds4DyGYRZZID0lM9ofWgFjNidFb9fx0uLoCtKk2NenzP3b5fOzNp7tRhu2xQTxgiwJ4gPZ0QQv41kxDMgB90J4R8euT9wclqN0fQqoE8a+qAuLxjDzZKXqsdXQb7+yIAXwEgAApZN8hPpxGcJDhhdj/UwATOgimWSuzWPCdc0feq64u51JRxPS234dWfeExWhDGlNlENl6jLwb3ORxjbnoOAIOyzHa2TX83UJj1s8yc/J1l/T7f6e3RVvt1JwmGtmsi3cAS7I5sfurOBM7yHbWBdl9799/s7vvzfZVb9A2cG+bpcyQTpSQXDHcW2j2Wgh8trQomsNCmGoMhuWoysX9ws7P8u/HtvnHf7vpfWJL+mevt778P0NP0TXsoWAAiAAd4GwuvSNq4a2+//bZuxEYxwE1Z2GcZ7ZsQSbIHAgn/weESpeH6HGgvftF+UE7AO/ovjwG/A9FhzeYNLXKJTmISHIbnz459eyElkzqUIqoG69J7cV0q2nwrvaHQ/xVvDYkg2zfRDkQqwKPc5ltbaeekMcnNk1aZaez4gpRPXEIp50BKJrb6SoMW9N8OA/eIRgZmmFYM6N3d22/2PzQe5u6xE60XYD+VBX5oP9JY0tgf2pFc5hs45puoyOCa53jb72Prktmdctia/RS8EmMuaJVeD/ccAL6//OEk35bxhl9rvrD7g86yTvg6SS5JTrTNegxokb3zH/+yF53zNyYwnkRzuq4+vT90/3rf9YbdDQNpA3/23LmG+U+ZY0wwEgncGHxCeKTd4t7WUpQ2ipPiUJ+9l4KXdJtYA4C+ibP8u+FNd2Gy0X/wyF5t+uQn/A6JnyUC+CJ7NoAINs0HcFFg6CNiTzdWonP7CAlu8NdejcyiM9aa6v4nWoeIdkc5jqUorRVp3hP/WbMUYUSLrylrirCi2qZz50SJ0WKPAZwTA7MZtDsxCyWLPEA7BWgK4KbLKkYMQAUiHeSycwe13sD0JsJLRCMDIIen1wBMEMR9GlUZDkNntpMA7N7t2/oVeBRG15n+UFZoNGGY5J+ZytEvxJLkB99RCJb5toW2f3az9v7Y2AEQSpU3T4nJdst0Bo1bxuxzs6SGV+pWvjssiyUA/CAM/fk3Wny6pD8eeGyMf8A5QrdNdJJodp3mcuAszPuhXl0TZvAeglBpZmQZzxad3+m6A4gAKExpJvPDRw/v9t29+qevHk87Xu579IFFqalLkWVC9ZqbrYeJtefKuQrKtmF6W6ylYOgPKRxkJMbyb7ej/LthzVhhr//WA1NSUaP0HwpJjxAUm/BMvg/C7nt+wlG6100jgHKIvMtl6EAG7wO4oPsRV4guNJXTYqQVaffGUQQeDtczIQvhbb2jv9d6gAK+Bi8YCqGAEe0OPHHeg1hXxjAwe8mMC9MMHTfWhzCDJpEZJS+wZTftyoAjRgYHJF8aeOCByAGybR9vsSJcEgM0AOjPe5A+w2gxjHvG044z7F/CXkcm8xZAekH2/STIsfV1PjM/mzamD7bf4IubwDfn9NprK5YmjIi3Trd/wEREM2PmnUQ0XsDLMBFhhuq6yFgCgJM98Q/9uYtGHWA6Y2brMJMN/Obz+Kri1kjVaEiAUfTfSOnrmyHLpGeMOcOic1aQs4Cwd6yXh3sQyoAYitrDI8NdfV1Vf7mqMquyfN+tu3dyttdCMBGCUFpBV6kfKR07e5w2OPJNz1vSh5eC5/zNdj9oIBDr3p/zzvLvi4f4yMY6jM8DQOpde8Mfsmvn6kQt0oQ9dcveM05XYPFKl837MEfd7VY3n9A93UBw90/14hCUBzYB1QDA4bwh2xV4vQzeYwAAqyNcD4pg9SJH1w39nVgs0bXJaS7DMJKStKXEbQ+iHquHRzTUKGQTRqTsxBSsgP+J2GHAMG7+E8NoNtJ7ftj5la88IvMnOYk1fHu3VxQxq2WUSEYNiKjWduOGQTzT3TNZCBKlMZU0MyaLBdl1yyzYfQRSr/tfkUZrxsaxsLH4PxRe90ln4NzKLCJHs+Ucib40SNr4Pn93dwsLU1DwaZKGObGCfMgYwuOa+5oB/fYt7alm6r7ZfW/JWywxr86vzi2bnx0b+6R5562PR5INYzotbRLFn2ZquD89A3iBw8zYVCBKwbEHAI0BlH9/WfSfB/LApv/z9oY/kHFH274uLUmwbMWeTu3FxMSdIStrIREWjwezoT/uC3mhwOCmh4GN5NiHgNoj8UNrkmQPvKdmAPEzV26OJgrGErk4cZ5RoBXhSCh0n4RLYrV+MqmISo6KrZp/qy7hLjjzfRizU8+M6jricoT1qLp3rAZ+LX6s2ZVJaQIkIWLaCQeXa7VrRQz4PAB0mfJfpel33mgy9h858kdLSy+WlJzZv39XnKK9d3KAOsIzRLnlOvqvX9cAwPDQUaKZMeksxS19NgAThNqbrGTspmVLr0QODtQnacc/AAD5OogCWlyKaopggCEkjXl/71ZLayuh22C3NzyNbafQfNKN9CIpGpXRxSeLcBWqpvyeDUkO5B6Q0wvMLbR+hC6YAhcXBUG3ujVJLOJhbGSoYL3vUX1fLKVgkhTrcMq/GlQ2fvkX8mKj/6Oy3WI1ffLT+YgYDM4+bxnNBmGL19W0/9L9cjA4DuUE/BvfpbmIdlJoDu9ALwBVx8hOTMbAU8D0WWBEAqRPniLJEwV0Q+n1sciNLaArGEsuypycpSGU/1t14dWEhf43iFq8WQxdQLzJG6s/BUub5DgNjOSbM3GHC6pfc3vAZXilPkGaOC0rGeRUNwSFrsIF+P5uIg3hhZ3FfOKj+DeBZsh5hkLUc+CIK8aAQv7XLmadKRflo2Kzt69j/1uXZo8aw2XGsJxhWVKM0B97DKCCUWlWThjPAsBHEx9NEgNAfx0Q32hMHwBAOoskzqJLElz6L4gHK84I2A95MNqp7qmuGziuwzOB24XFQRQJAQvtLWNIlEZ+Ak8Dx/s6O4PBJi4LOwzW1Jgiggp00Dz4wHhADkUqgH/ohrT2w4BIHUh1IBsEAIKBGdmbvSYBCtl9SxoOAcBz9ydv9ctC/230b9k/IRVvKP136sVoMkAz3TUwEa0HhEmQ6P4AAeKj1qDEtYHaYAdvSB8nGQC9pKQRMEpwBzrPTNBNKJ0t/+QKnAZTgl2Mrl27xgQgZtCLwt4VNKeiIMkLMtU4YSZArjbSkOQCu+FxA8J75Zpc75KbY9IWw0KwW1RgIZ+rPFywrY0gSZMctwdEEa2WutTW+A68GBwJhQAg1v3BK5EmwKDlGzqRhIFTxGNuDQjEPOVwN+uy9speHmLKBEF7RMujeZQryIH8DGOTBBnaUgtpBgVV6669XzXzgwu5/+8/XTP+lGH4cA7jjJxh97oXvh9cQAKaAQBin/R9Is4YwHBtTDQSWfyfi4+Ta2bMtGJ7LmcMgCdx8TUJRgjlNQRplmRybLwDwN8WWrX4VgzKHdrPo84UtUHQQiG4yZ33B3btGuay8Jik8nJutJASHjJXbY2mriKMNTL0vZaqesz6+SPPCwLqQ45VwdF8Te6+ij+p3f1+qdz47f+6fdXnAWBrvS39MwmdLAxJEWGR1BK6TbKJX0I0gFqFAAgILB4ajgijj7AQ10a/M23mIL5mFfg6O9NRzoJUKu6QJRB+yCrIEYEYSkTEBv4KLQL6ORmAiYnBgySJAfo0sRdl+lxqfIilSybgSys9lwi2FAhoumzofhH8+erVgrq6vKPp8kdF/qLnuD0uvi6ehiEJSc4GSkV/lnHRyM85aMc+0Ox+SxqwGFlVGzofdnVx07lNKDxAEveXkg8hWTeDwxNAH/YKBaf4phA1QTbks1wYnA9er3uOjnC50tO5SswgzpZACr8E4QwIH+GUi9bWBtel889vmmdPs9I2+c+IlBdf1eqBxgB0GHkh5hCuWCOlOyUzbrTcsNGfgnCUMHlY55Q+7Z0pwDWHe5EW6AJMTbwIvXAgbhAcCI2orKyMlJpEPH4BwPhiva4O6toAsQ7xYNxaxKzBwenHj69e/TQ5ecZq5TaIAVGeNmcD0hpEItyVE7WhX3/GWgq2+0HxaQ+rfxec5d+Na8w9m/7P2crPsmQfRZ6cVFvClWvoQwVwRBy0wTJcEIAgCY2Wg9MOxMIC/BvHJYGot4yUlk/kT7g7EK8BACUavwd3ECXQPTVZZuNScJ+2VGKAvEgjIwX6AEBoN5HM2hgafRMIA7yYLIbBf5PFsoDl4O3bVYf+4EzVr0iVeLbUf7d36wc7t9bW8rZ8JOm1gqagqPBP+DIxABWorIyBEs3Jud+OALenDZQ5xhsSlbnyJGpkXSRkCkb8hjhNAOaX7A6yyOytrsZ5CEUuV+SQ4h+RIyzpAjHZRGGcrj5yI65PMIj6JLwhzVTUBhDTSKc6OhKbm8tmisrN8sqWypOSeNRqb73SecUZA9CUXmwMSDQTK40vigGtziTgxIloWibTcWwyYwgWrTFkxvoEPZIw8gPmHf8kFSbxYrJwL5QAIZwyQ2PtbQ1H/7AAYH8fzwat5p1mZgYWFmprL8/OTo2PE+YNzpzchaUeLjaWNjo7mVZMJWBIvvY1gMLGfYaqwDGWgm8ol/cWAKD/G1//IZmz0X+gNJPZq2M1SoL/Ab64IyQd5yMtoPALK0GQoRKFC+KyAU+Vc1RL0B9qCd8nfsDuec+gZfg6/UV2ALD3edZFZ+S8iEh8LmkEUUpesAGzkGboDcBFf+oD+fBDwItzJWPGswE4HD2vs6OqqqOm5jevVKVuzdk67bl1rXzLlpFDWz6+I2+/ja8BmsQb8JrJBe4zN/gp3A4aUYjrTLqoLDeXA4FgggqxpK21lTIA4ZYbRCeYbgbHrad4g/pHaGGa8CnEgKhgjg0FEJbpCIJ7sSS4E47PxOZyUUhAC+LTuWIjI0n9/bnzh4rkdTSWo3K0oriiQBZ1fQM/67rqnDEAZvpiYwBB6IuCsDnR54wB0bQ449t4Oy0VUCsVgki1ycDQggjA/IlJx8UnJED88X8mIJtxScyWtGIhhSitA0mEEWPnLY7C3YVoDGzZ8uGNm0NDffgqfUFweYpAJAmkg3yIrf2aJvECx4YNwEt0mS0KJ06e+MYbZd3dxxwBID0+peDB+j5V863ClNvyr3XI/qHkjVX+Pb6G9N8sqSCFov9q6i28D4qBUIMaoNDM/Mc7QW1SgTfffBP2gRSDO4onI6vgTYjkEH94jVaGSS/QfBAfKAzg9KQCYBAMCJWJD0WGQnSC8uS547ZrTb6t+pIYDK0MAMRXyZPxYUoAQ2MXL5JAoc/gzZmbZgoKZo9YRZa8k6l3A6mpRup8pBrApgh/SClJSZlISZk7LXBn+D5ArKAJ8hB/EKTYiRo+zgkx3ZhUURrH6pNk8H/QaJ5Hh6L5MFFnZ5mQlIj4UihFZHDMW16gnyVRhmEgmywZ9YZ6AAuDe6eRg0ZmpEMfA47WnCEH91p0ijUBPMOHdIYXS7HYAYAzvPx02pBLdgwAa11dyfj/jbkzRxQ4aBzUGABgfjT20awzBnC5XBtzCvQnLQb3cXUSX2YE3AsyBGFirjElEYUgZ+g/xADmZjwCgLEyW6T8SxFYtmy3K8DeDe85exb3IpBM79p1ubEx9DZ9QRPop4R/ZpHPp08EIkbQg0ifCZOK+AMbYAUCzAZV0Oicyp8rKio0SkOho8eOHU1JORz/UrAOJkA03Z8brvz7fVluQQla6J96U76pHTnAUmSYwOFeffVVNBkAF3TW7aABZeCY30BDQGSJwfB1Crm8lf1cYkQGNB/kZupdBADyAD6O+UDyQQZA3kAS4H7Xwx9EFFT07zEbJA+n1dYP+4HAnPwYhIYaJ27BM/0RQYdytrO25k1508Mppyz9YUfVjq1JlcwWtDD4BxSJqQIEM610Tx4+DMWVYOD9ywBYxFe+CeIM/Au5yQ4AiP6EB3xGnzbjNfZXSRUFYfZ+YP70Sz+Nq1QcNQBANvVRw6wW4gWsQ3LmpNp1ynfkfC6JGAxp0BhA5HB587/n0WlSIjsMtQ3QH8mEMzHvm3J9XnZc12JAVCtMaWxDdoMVkYEB/VB+uL8GACYCUw9K5L3w674LiCUbOrQBlNsf++aTgmhLroeH+f29bQW9XV07Pr6/ZyvawmJaGt4VFgDwPQIAOXTWwD5aFLLxSwhIN32EZWWhlPRiiY8p+tOBGuoOTSmmM4WWlYLTlnXDaQDY1j2z8QMAa/puytab8o2bIrP2Rh0u9tLA4eDp6Dykn/YDYfR5AArEsRsEv9wybS4izDgDAHIQfq+V4XjEQbWt+sd4mT4Ckp9kj3gs3TG4Mf5MkQCQpMaJY2dJyaQxSc4V7Smn2L81hMa5PRXlzCCQWnQ3ZuYoM4uLo08B4yRivC8qXrNTG6k3X4ZJyGzUAAALJPbwQbwmNqOHksHmbloSmLW8kgDAJjHwfTJpNCLBzHBdkgvNWWk2cFHE0CEDZ8QgeKx587/n0WlS3DgMBWF+UucwOe8gV5JhEgbIzKLrLrMMjk/7A2k304HMWyVTpp69f+L6BgD28GeA/eAxg0xT4mFkjjAlBEeyZdBzvLd3fGCgDaIxOA7k85Bvg++akLCgK1MAqcJ0OZWp/RZgLLwjdOBAt0hIJF4BgHUsLEeAlfjmfXPdczD6FUvB31+5+zN988I3WdXMO2yg8u/zvPwJ4o/sA/oZD8WL7bdM1tkyLZP4WZmHv3g1XJWF7gzEGBgzIAxa4sI2hrHS5ZysCQTfDJ+G/GrF9iMGsxLxRwMAHBOAjqPB+ZinjPU0UiKGRGWkIAw1RwxgnCGtW/1KYl8XzP0diHwTVsbMk3JSbLtOAFga5RKtxbTDT+wBgEQGBYsCy0Pdy406V7wMtoL4EAgg65BmwvAJ6bgyAYA1R8R26BPezOzhlTAOnET7lPXG94O91hiAn0p8jOXHzM9SKV0ILQjhpbtv7QBA8hqqku4qYiTpqq5f35h2c2k0/X/2zjOuqXTb/98tVQIiIFEIwtBU0BksyH/G+Yin934O8++99zf/3st9dc+r++b23u89vdw+fYQpeKyoY4NANIAh5BAgkFD2/V122CcaxBDAwjzfWbMNO/t5kuDH9XvWWjvPYtMxyBXLHgX6Z6LA+YONnaYBRY/rfVjpWZR7NSCrnM1jEwA1Y1eeTq7t2vDL9Pdz+TKlpdTVablBeTnrR/5dsbFMsUUkokhTAkC6AJSWpi9tBsEJAnazYeityAiBf8kCsJdUPkEKQ+D/BH4I84RzJUUAth4Gw+K9GvAJniTG79UA79MjADXUNNHUSmuQ4JWzZykqkptWlC4BoLGRj32MjUITao0vy5jBZQ04DPlsNP5ledn7kGtkTzgjKd5/FsOjx2bzMSzA6SdTAIQ/RQM+yxOIZWOzEnL9r/LqaU6f5ez1kusTjfXJL+996Ut0dbl7ntiPY0OOF+GL8CVo3vA9ofI09bKVsAJR+B58d+m48Ij8wzeWrAS64FMYDAbDZkYAoprqk5wspLCKqtbJ1tD5UIzY4qkEtv0kyKoTBDSz0cylLPCfXTVEWOCR0YXsUWEwGIwAiDrqlJ1ppDFAIEx4hhkbmyeAO8uJoBBUPuKY+7kl+59sZQwGgxEA4cFzhCPOd7hXEQCbrYXBYDAYAXAppljGVsFgMBgM2/jgYDAYDAYjAAaDwWDIxSZDDAaDwWAiAIPBYDAYAbAet63CJPwqfCq7eTIZ8+mlF5jkoSzA78NXV3659b6P1cf/BfwrqMrw6lvw09Cx2kUrzlMN/xpezuqtr8o34SXIgb8J3yYD3oP/CM9k/OqF8HfhBxgMRgAMW26PgOqkZUb5sqViZf0q62cxy9+WwWAwAmDwyTJ3zWVQDhWQv5kyk6m+2EkzGAybKgAG60l8YYt1sxOqwQeVWQQBmeFdfomdbCyLj14ADAbzRTD1Zb148eKdO3cANahUJ271ZmIjGGd8lFEdo0RnmZ1n3sLKI6+IolJKnW2oCylkjXzjgUWAP035qLkNNLTRth6nfP48AwPMz+PCp6AEhy4E75DOAvQuT23VUbeHPcCtW9y+rYYLJBLk51Nejnpt1dbauCwu6iKGh3UR8bjT/cNp/7T6FqrfIYXqS1TfxAchnDbWxzi2gx0P+IDlt26VLy6Ww0hNjfrLprTATmGe+Xd59y53wfH+OjbDIZb4chYi+IekYzNv851FXHLgK7h0YTAYNl4A3nrrre7u7ps3bwLqP6nOZB//+Mdz5H3WQT/9t7g1xNAww2HCEoAZZlwB8OCRY5IA+PCpvWIzzbvYtS4BSNOAfPJPcUrT6iXICgliby+vv87cXIr3536P9I3VdoZlG9vUOehD4c+fPZt/+bIlOQmHkwLg9dLczLFjdHQgGBriwgWuXSMQIBJhdjbZ/2/PHhobefZZXcoD+MP7e0i9S/UrnE92wZQWnuQkaYRC+oDlr71WPj9fAXobUhm9pZWbDL/GazqC4/0/plcBMheAG9y4w50o0UUWt7O94hsVPnyS/7TWpLOL/GAbWORadAFGAAyGTRSAGzduaPkvDXjnnXcAtaLX8l9tYNWNnqzQOvEiF69w5QY3/PjvcCdEaIIJVwDcdqC72V1Djdbp+9l/kIOHOSxtWJ8AiCj8mdP1RQJTT33WAnD1KleucOYM16+73n9155uuAe812831wfpXuyd6e73nzqGpRketeFx9n/H5aGsjFiMvjyMlNzl9GglOXx9SiVDIEYBkA/KWFp2RbmiJ/vBfSEXFkgYUU/GdnPDkl/myNHieeckA9xIMSuTKL18uv3ixvLZWg3RmZQHQDAECL/NyZBdUf1mXpnYK+j1WQ33A3+O9S1waZDBCRAKg+M/7DW8NNbXUSp9kHjzAEEMhQhFGPFws4mvSCQwGw6YKgNb7agKutvRKBAGKA0ZGRtSwm6y4zvVees9x7hKXrnFtkEEgPz+/vLzc6/Hm5ubatp1IJKLR6K3xWwoRCilsokkPbnM7RKiDjvRQIOt3Is8iAdBRL8Ea6e+XAMgc778at1d9sjpUHeuOvfnmdE9PZcHZpiN4CyiYZXYkPvJ+//tvTkTz8uSxQzV573rfeiuvu/tA/rWaQ5SUOM3TFvz+SP+liDJHytORn09ZGQcOkMZCWmNfmdz0QvjSCCOOyeGuJABF0oB/8A/Kf/u3S4LBSZ2Jx5E4pSLx1nBpwBhjVD+nadHkmREn3k33m7x5hjP6G9EMkqJiip0OdHXU6W/HSZFZWH78ffT106+VwS52lVPOClxK/yErnk19ZDB8QAWgsLDQ4/HIQfv9fpAzqtCPOsnaUYqgm+53eEca0EcfsHfv3vr6ejUZ17TFxcV5eXkSAHW+lwCEQqFAIHDr1q2+SJ90YpRRLRUVJShZ4cXL+vha19e++cffvDp91REAHXPIIWNsW2v/pABA0ec+99kf/vAbZMV07/TwO9Pd3Z89dO5TinLkmLWwjRHTR9bjN8JvXL5MY+OVlvkLpb29JxquHTlCfT07dyIBCIXQG3j7bc6di6BIxOtFy+X9+7EsVkc+2nHTly45vlt2nwCEw/L+0gCKi8tFzRsVwf80qet0Rm8gFXcGhDOtjpnRR99ZzvbQc5rTcvTHOa6PP820ZnuFVyqo0N+O4gBH9RU7at0wyugn+aTO6w0/NNqZgR+SBccxAmAwAiBqa2sPHDigVb8cNKDMT2tr6zNyNGvkJjd76NFaTxrgx68m90eOHDl48KCKCpKBysrKkpISVwAUdoyOjkpyrl+/funSpQsXLmig3OICC7nkfoSPlFDCOoi1xn7Nf/wf9vYqEyXvL3uWZ9eU/HFsaIhfbG/9RryFbIm9F/uL3m+d/JkPPX/y+SMcabQaHQ8oscwnP0Kk1z8eCPQHJ6+3e/s6OzlxgoMHJcNIALTu372b+XkpgR4Po5BpcFCPpKusTmWlowGKGIYjw04EkLb8dyIAypcJBv06ky4ActaO6VLH+2fY1HOe+X76FQhe4EIrrZL2AxzQ8n+SSQV8fvwyXaDgoIwyIEJEz77Ii/pF6Xp9gExSbjPwg7V6f1kK/w+D4YMqAKWlpS+88IKyNHL9zppdjlvugLUQIfIjfqQbRd7mbT/+3bt3nzhxor29va2tTeoiOUkvKU9OTmr5f+XKlT179kgtVIU+s3hG63TnBqEP8SHWwUzrzMxAixJbrWM/CQLkXDIaO5P0/goCRsrLv9HSEh9chwD8vP2Rlzrk1DrprKEGG+GxPB10yCm/z/vnphtGRv79v7/m/+IXbS3/pQFu++S6OubmCATQO5HbR054dJSxMUcAMgkCZNHIZUcAxhhLTa/J9TsRQFtbuagor7gcTKqCJCc3FzeH43h/zUB1S3LazAgR0ij5eun6czynX4KsggqFegqAZH78AQJ6IzojtSiiSLO30NJOu4yVaVvpVFYYDEYAnCBAWRpVAgAt1ZWpZ40ocj/PeQX7/fRLUeT9Ozs7dTx27Fi663dQQHD48GHpTVlZmeRnYWGhp6fHWQx68frwNdOcvQC0SABaZwcGxt56yw0C5HPXtPzX7yPxYktcAnC9hexpL6J9Lx33JDRssFCmW95Qn/fllwfb2/0+Hw0N3EdNDQoCFBAgJiaIRqWcZIBbBuDyZdeDuwIQiSR9vdSuqqpyz56qam91QXxHMBh1ztfW3r/8lxN3RYUVOcx9TDE1yeQEE/vw6uM306yCPyCBr6MuSlQaIAEYOT+ix5q/kEIvXl0jtXjw7QBd3MtfQ5YtBoMRAP6cnD/MqfrlKsTfgy74PJmjFZwcZh99ivQBBRC6lUjeX0cehmoDJ0+enJ+fn5qaCofD165dk5YoKSwv0ESThUVWJFoTcwPMDbTaAwOe21fcIKCSSlZDJfHk2l9Hu6qqv6VlzmqZm2sle9rhODSRRhFFcnkFFMBveDxSREpL0ys0FBWxfTuS0YXZWRIJZJkg3XDy9Tt2jESTdeBDHEpZ/sv0vGNJ1+4IwPDw/QKgsXpzzoSaOTPPjHw6zHcxDwVQqM9LCjvYobycbOL8hHRikcUCCqSIueSyGl8jhQ5kmWIwGAF4jzSSp0ohDi8h0v9Zdax6y/8Nblzn+iKLyvYcOnRImZ/jx4+TGao9KFBQ/BFQLry//87cHU2lisIAA5IBsiMHu9W2B1oYGIjd/nMFAY4AnOJUhsv/iQk41mK3tJBose08sue/gM1KSN62sc0RuW3bkpaOZaHzOmLbSXPJrBQ8Gr3qFHKnmfbgcQsAsoMHlwRA4NPV7wbfd867aJQzluo6t/yboQDkuOdW3QqutKu0dF8pBoNh8wXgG6TxY/gLUukEMhSAGLEhhpxqHtDY2Lhv3z6VEyzLgsw9VbVKBSoINzQ0KAiQ69eEmjZ7ARBN0NoqAZBduZHMAskUXnA/NljAyEjKzT8qg8v7yy7sZ71YYPPIcTM2+jyOH5c10ihtc8q/09P3RAD605ouDganHA3QKTf/EyOW9P6yB9G8yglrybZhMBieNAEQEXj5wd5ffJ2VcZaH8hjzzCv7r3KCvkSWxU1EultUA1USkAAECGhCTZsgkU9+9i63pYGBv9IAWxow7wQBjgCsjFv7jceXxEPef58EALCeSg1wb9ksLh6ZGnEFwC3/6knHRDVuFui6KwDu8p+SkuTzVVVkw2oRgCvBBoNhswVgkAcQgSgFrJEw4RAhZ5cYr9er+3+0nGftaJRuB9IMBQUF8Xhcc44xpsmrqCJrapATl/fXDgz9ly5dJXlH0AEOkIbfnxSA99+HAwdsZ/lPipI9zRowcn3IWcsvshgMbnMiAGmcKwD607Gzw0kBSK0Au9kkssRZ/uvIBmtAx5J9HYPB8Bh2A51gQhYhAuzcuVO39Di3kGaBBmq4JnH2D9C0UaKsE2chr2NxsSoBMjn5OHHScGu/5OdrSNKeclzHPcusEwGoIOxEAFNTK0cAcxNFjgDcvTvuLP8jRFwhITsc7y8zGAxbSQBixKaZlgEej0cVXd3fSVYUL6FJAE2omWWsk4oKeX/H5Mvk/R0Z4F6uXUsu/wcGwPX+VVVbRABkRUXJL/QGhx3/nur9nU3rnBNLWSCWbPkLwB5PWgFgo1NADjYGg+FpEoAECceA/CWUwyErNNCZ4b5ps8RKCwIqK90gQBEGyyQSKbXfkpK05b/F08u2ba4GOAn90eDovTeA4uJcp3P3C4CrIpZFFpgisMGwVQXAxl5kUUc0+xJWtm4idbjmdKddL0VF9rIGyO9LABxLr/3K2zlqYevisjK2BO43wvTZwzPh8HB4eHgmGl1BAJzlvyw2XjgysjAyMjb247EQodQCwPojABMEGAxbRwCUOsghR0dgYYlFue6sSB2uOd1pNwAnAtCxttbNAjm7m0WjSQGQKUTY5Oy/9RjLABQWRu5GQqPahenH6d7f+Z27peDR0XHVAMKh8EJhXnoBIPsisMFg2EoCUECBY0B8Ce31RlbMLqEZUqfdqEyIqwFx4k4WSMfU2m8kkpL9LyraOg0pc3PdHM7E6MTdu9HR0eiD9nRwS8FjY5Oh0MREaMINIJAiw/qLwCYIMBi2jgB48BRT7Gzeqe0ctMVbNBolKzR2aglAc2pm2Yb52cbGpAbs23eNa04Q0B/qd5f/Tt8V55rUKbZMECCbvDs5Oqo9nydXjACEGwEEQy1jY1OTY5OkasX6U0AGw1bCCEAppTvZmdzONxIJh8NjY2Osnbm5OQ0cHx/XJEA55ZpTk7NB2KnV4Lw8JwjQl86WvL8Vi+Eu/22FC1sLdxXf/5XAr/961OdzBGCFmm4eeclS8LTvN8d+6lrXwIYKwDbABAGPC4Mhl42mkkov3t3s1rJaW/yrr4Cay8uba+t/1sLt27eDwaCGqwywne2aUzPvYtfGLoTdzSGGLly4Gb3ZP9B/69bta9eW4wNZUxNrpD6LJ+szncNlL6txglXJz0/m8Y9Xw88VFPycz2frp3TcUrCOVX9cxTM4AzWDiQDux2AwAlBFlfxFDTUePNOx6cHBQXWXVF/JtbYUVm8A9YcZGhoC9rLXcUPWRrsMVwBk/iG/f9Cv/+cXt+l81rXfLh5EkyyDMV/gYdRoRJbvIUX8amU+GLQspcGsmpqVV9o11Oxn/1f5KqIafKxj+X8A/heyLLB50jEYjADkkltHXT31jTRe5KJcv/Iq2tOtpqYm82+EqTH91atXtRmc/DHQQIPTKXDj918oK8MNAgLnA0u4yR/27s0iX/8SK9KMbEV+pDFr8P57ZVm8h3QBeKkaZDmwsHt36ge078sCfZyPH+UouY73l5VjMBiMAKyIXH8zzVo29tOvHM7Fixe1I5B2dFBPmEwSQcr8nDlz5vz58319fYAzlY4+fGwoNlggR+8IQPwf+odG/+Du9u/T+VlHALJbdx4jnRydzmDAoezmT6eah7FdebWkO4fAQ+/sqkb/kbRCVsZgMBgBqKCildYhhoIEu+k+e/astgXV13qVzT969OiuVfvHKmKQ91cvsN7eXpUBSilto+0QhzThJqUF5ApdDQjMz1NXl/T+Xi9bGjehA4FML3dGGAyGLUHuJm28qx5+o4yGCU8yeXHh4unTp+X9dUOn2ryoPYD2edY2n5Zlpd7yPzw8rGqBMj9a+7/33ntqDZ9Pfgcdxzh2mMM+fNibtgtnayuDg0Qit51b/g8dQg/Sh201XI+ewb6kVopeGAxbCBMBbLwGFFDQTvsUUwkSFtaF2QuvvfaabglVUVctYlQPUBygkoAyQrZty/tPTExIG1QxVvZfmR9d5ol6ni95/gQnpAGaig3E1YDUT67+5BUVTE+Tn09TEzt2APZW9v7CA39HZuquH3AMJgVkw5twio1jD3te5EVHDHaw4wIXVAxQhkedXqqqqrTVs3b6dAQgHo9Ho9FQKKScj1P1rf2vtUd6jrSfan+h8AVpAGlsfBwgj9/RsVnf1cqBv4FsdQ4t2f/lYXxpyX4Hg8GwUZgaQBz+KfwSG8de9n6YD5dQsotdPnzXuDYQG7i8hHZ50z7PrgDEYjHE59gTLhmdOlDfc7gtr+1E3tHOzo7c3Bw2Exsss/z9YGMwGAFIINtodrP7E3xC0UAddfvZP8hgkGCIUHQxOjM5M8+8s3uEpKKsu8z7htc3F/e98cb/7TmvL+fm5TXl5tLZufqq3AY+z4PJf/DTX4Dv8zC+kD6+BpnBYNhqGAHIhXk2lDzyVMhtoqmf/iGGRhgJE44SnWVWAmBh6QKP7Sm1SysTldUJv29u7n+88UZPT1NeHhIAHV944SHZmK4HvzZd2QQB9oPn9jmnDAbDVsEIwOKyAMyzOZRSeoQjsjHGxhmfZPInAmDnFVFUapVWnKgomXuHuTkSidhpq6dH3j9p7e1r/95Tvp7IJhFkP3juGudng8GwhTAC4Hj/OEvYNkksi41G9QDZyrn2fDhxQgLg2MS770oDnCBA1tbGgyjI9GwWFKT/YDAYthJGAOJLlgAWF5meJhZjdhaKCikspKCAR4bHo4yPqwFjZ8+6cYCU4ODBTa8G23zAMBgMJgK4eTMxNZUAxse5cYNgkEQCnvFSXs7OnZvodNMpK5MG6OUdG+nrkwa49YB9+9gwzJ0/BoPBCMDwcOLllxOBQAKYnOTmTS5cgPx8mpupq8Pn4xHj9bq5IHn9QDicmguqryczSuAfIdtAGuG/IDMYDFsEIwCz44noaOLPv5GYgOlpgkGorKSzjWPHlHbZLAGwH9a0RBpgWehBNNoPebK+pAbU1LAeDAaDwZDLKzBEYiiRCCTiTZU3pjsRh4upqmL/fo4epaODR4vFMs88Q1kZgQCxGLZ9DXIdGbhDZy579mAwGAyGrMnloxAhPhSPBw4n7lYjV2tZFBWhCKC+Xsv/x5xuLy1FtsxlRwAgF05BBevBYDAYTAqojETZc4m25xLRKDMzSAC2b6ekhCeS88sCoOMp/rKdO+BQIIgCOP5mupRGYQpQxSEFEZAAhPvcg44OKAClQGkXxoJb2BubAw539txp+v889OYL/GVqpCMVAAB3APltOh0J8wcKqeLtMwBhXgQAUD0A8v+UfMvrbwUAAAjAezk/VtzlL/EBAKooCnk8AAAtAIBoEAAAAAEAABAAAAABAAA8yVeyLNvtdpfLRSnV7/dns1mj0ZC4AQAByPPcObderw+HQ61WG4/H3vvVaiVxAwACsN/vt9utc26z2dTr9cVi0W63n0sCIGIgAN77JEmOx2NeOp1OYQ2HAiBu4BK42WwaY6y1tzV8CGs4FABxA98AhsPhZDK5Xq+9Xk9rPZ1OwzoajQRA3EAArLXL5dIYcz6flVKDwWA+n7daLQHwCMBjcOE8TVOtdbfbFQAAr4ECAPgnMACAAAAA7s0HoDFhsamH/bcAAAAASUVORK5CYII=",bN={thin:100,light:300,regular:400,normal:400,medium:500,bold:700,black:900};class xN{constructor(t){this._webGLHelper=t,this.fontRepository="https://raw.githubusercontent.com/etiennepinchon/aframe-fonts/master/fonts/",this._fonts=new vn([],JSON.stringify),this._metadataPromises=new Map,this._fontPromises=new Map,this._promises=[],this._defaultFontEntry={metrics:gd(t2),texture:t?this._createTextureNow(EN):void 0}}async waitUntilReady(){await Promise.all(this._promises)}getFont(t,e="normal",r="regular"){if(ye(r)&&(r=bN[r.toLowerCase()],!r))throw new Error("Unknown font weight: "+r);const i={family:t,style:e,weight:r};let s=this._fonts.get(i);return s||(s={metrics:void 0,texture:void 0},this._fonts.set(i,s),this._promises.push(this._loadFontEntry(s,i))),s}async _loadFontEntry(t,e){try{const r=await this._loadMetadata(e.family),i=vN(r,e),s=this.fontRepository+g2(e.family)+"/"+i.replace(/\.\w+/,""),o=this._createTexture(s+".png"),a=this._loadFont(s+".json");t.texture=await o,t.metrics=await a}catch{console.warn(`Cannot load font: "${e.family}". Using the embedded default font.`),t.metrics=this._defaultFontEntry.metrics,t.texture=this._defaultFontEntry.texture}}_loadFont(t){let e=this._fontPromises.get(t);return e||(e=fetch(t).then(r=>{if(!r.ok)throw new Error("Could not load font: "+r.status);return r}).then(r=>r.json()).then(r=>gd(r)),this._fontPromises.set(t,e)),e}_loadMetadata(t){const e=g2(t);let r=this._metadataPromises.get(e);if(!r){const i=this.fontRepository+e+"/METADATA.pb";r=fetch(i).then(s=>{if(!s.ok)throw new Error("Could not load font metadata. Response status: "+s.status+", url: "+i);return s}).then(s=>s.text()).then(s=>BN(s)).catch(s=>{console.warn(s.message)}),this._metadataPromises.set(e,r)}return r}getDefaultFont(){return this._defaultFontEntry}_createTexture(t){const e=this._webGLHelper.gl;return new Promise((r,i)=>{sc(e,{src:t,min:e.LINEAR},(s,o,a)=>{s?i(s):r(o)})})}_createTextureNow(t){const e=this._webGLHelper.gl;let r;const i=new Promise((s,o)=>{r=sc(e,{src:t,min:e.LINEAR},(a,l,c)=>{a?o(a):s(l)})});return this._promises.push(i),r}}function g2(n){return n.toLowerCase().replaceAll(/[^\w]/g,"")}function BN(n){const t=n.split(`
673
+ `),e=[];let r;for(const i of t)if(i.startsWith("fonts {")&&(r={name:void 0,style:void 0,weight:void 0,filename:void 0,post_script_name:void 0,full_name:void 0,copyright:void 0}),i.startsWith("}")&&(e.push(r),r=void 0),r){let s=i.match(/^\s*([A-Za-z_]+):[ ]?"(.*)"$/);if(s){const o=s[1];r[o]=s[2]}if(s=i.match(/^\s*([A-Za-z_]+):[ ]?(\d+)$/),s){const o=s[1];r[o]=+s[2]}}return e}function vN(n,t){let e,r=Number.POSITIVE_INFINITY;for(const i of n)if(t.family.localeCompare(i.name,void 0,{sensitivity:"accent"})==0&&t.style==i.style){const s=Math.abs(t.weight-i.weight);s<r&&(r=s,e=i)}return e==null?void 0:e.filename}function SN(n,t){const e=[];let r;for(const i of n.split(`
674
+ `))if(i.startsWith(">"))r={identifier:i.match(/>(\S+)/)[1],sequence:""},e.push(r);else if(r)r.sequence+=i.trim();else throw new Error("Invalid fasta file!");return e}const p2=new Map,QN={Organism:"Homo sapiens"};async function DN(n,t,e={}){const r=n.symbol,i={...QN,...e,GENE:r};let s=p2.get(r)??await MN(i);return s?(p2.set(r,s),pe`
694
675
  <div class="title">
695
676
  <strong>${s.name}</strong>
696
677
  ${s.description}
697
678
  </div>
698
679
  <p class="summary">${s.summary}</p>
699
680
  <p class="source">Source: NCBI RefSeq Gene</p>
700
- `):null}async function VM(n){const t={mode:"cors"},e=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi");e.search=new URLSearchParams({db:"gene",term:KM(n),sort:"relevance",retmax:"1",retmode:"json"}).toString();const i=(await fetch(e.toString(),t).then(s=>s.json())).esearchresult.idlist[0];if(i){const s=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi");return s.search=new URLSearchParams({db:"gene",id:i,retmode:"json"}).toString(),(await fetch(s.toString(),t).then(l=>l.json())).result[i]}else return null}const JM=zl(VM,500);function qM(n){return JM(n)}function KM(n){return Object.entries(n).filter(([t,e])=>e&&e.length>0).map(([t,e])=>`("${e}"[${t}])`).join(" AND ")}const jM=Ze(".4~r"),WM=Ze(".4~e");function ty(n){return n==null?be` <span class="na">NA</span> `:Ce(n)?n.substring(0,30):Number.isInteger(n)?""+n:ft(n)?Math.abs(n)>Math.pow(10,8)||Math.abs(n)<Math.pow(10,-8)?WM(n):jM(n):Po(n)?n?"True":"False":Xe(n)?be`${n.map((t,e)=>[ty(t),e<n.length-1?", ":Te])}`:"?"+typeof n+" "+n}async function XM(n,t,e){const r=(c,u)=>{var f;for(const[h,A]of Object.entries(t.encoders))if((f=A==null?void 0:A.dataAccessor)!=null&&f.fields.includes(c))switch(h){case"color":case"fill":case"stroke":return be`
681
+ `):null}async function kN(n){const t={mode:"cors"},e=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi");e.search=new URLSearchParams({db:"gene",term:RN(n),sort:"relevance",retmax:"1",retmode:"json"}).toString();const i=(await fetch(e.toString(),t).then(s=>s.json())).esearchresult.idlist[0];if(i){const s=new URL("https://eutils.ncbi.nlm.nih.gov/entrez/eutils/esummary.fcgi");return s.search=new URLSearchParams({db:"gene",id:i,retmode:"json"}).toString(),(await fetch(s.toString(),t).then(l=>l.json())).result[i]}else return null}const FN=Du(kN,500);function MN(n){return FN(n)}function RN(n){return Object.entries(n).filter(([t,e])=>e&&e.length>0).map(([t,e])=>`("${e}"[${t}])`).join(" AND ")}const NN=We(".4~r"),TN=We(".4~e");function m2(n){return n==null?pe` <span class="na">NA</span> `:ye(n)?n.substring(0,30):Number.isInteger(n)?""+n:ut(n)?Math.abs(n)>Math.pow(10,8)||Math.abs(n)<Math.pow(10,-8)?TN(n):NN(n):ma(n)?n?"True":"False":je(n)?pe`${n.map((t,e)=>[m2(t),e<n.length-1?", ":Me])}`:"?"+typeof n+" "+n}async function PN(n,t,e){const r=(c,u)=>{var f;for(const[h,A]of Object.entries(t.encoders))if((f=A==null?void 0:A.dataAccessor)!=null&&f.fields.includes(c))switch(h){case"color":case"fill":case"stroke":return pe`
701
682
  <span
702
683
  class="color-legend"
703
684
  style=${`background-color: ${A(u)}`}
704
685
  ></span>
705
- `}return""},i=(c,u)=>{const f=c.filter(([h,A])=>!h.startsWith("_"));if(f.length!==0)return f.map(([h,A])=>A!==null&&typeof A=="object"&&!Array.isArray(A)?be`${i(Object.entries(A),(u||"")+h+".")}`:be`
686
+ `}return""},i=(c,u)=>{const f=c.filter(([h,A])=>!h.startsWith("_"));if(f.length!==0)return f.map(([h,A])=>A!==null&&typeof A=="object"&&!Array.isArray(A)?pe`${i(Object.entries(A),(u||"")+h+".")}`:pe`
706
687
  <tr>
707
688
  <th>${u}${h}</th>
708
- <td>${ty(A)} ${r(h,n)}</td>
689
+ <td>${m2(A)} ${r(h,n)}</td>
709
690
  </tr>
710
- `)},s=i(Object.entries(n));if(!s)return;const o=be`
691
+ `)},s=i(Object.entries(n));if(!s)return;const o=pe`
711
692
  <table class="attributes">
712
693
  ${s}
713
694
  </table>
714
- `,a=t.unitView.getTitleText(),l=a?be`
695
+ `,a=t.unitView.getTitleText(),l=a?pe`
715
696
  <div class="title">
716
697
  <strong>${a}</strong>
717
698
  </div>
718
- `:"";return be`${l}${o}`}class Za extends M2{constructor(t,e,r,i,s,o){super(t,e,r,i,s,o),this.spec=t}async initializeChildren(){}*[Symbol.iterator](){}visit(t){let e;try{e=t(this)}catch(r){throw r.view=this,r}if(e===Wa)return e;if(e!==k2){t.beforeChildren&&t.beforeChildren(this);for(const r of this){const i=r.visit(t);if(i===Wa)return i}t.afterChildren&&t.afterChildren(this),t.postOrder&&t.postOrder(this)}}findDescendantByPath(t){for(const e of this)if(e.name===t[0]){if(t.length==1)return e;if(e instanceof Za)return e.findDescendantByPath(t.slice(1))}}findChildByName(t){for(const e of this)if(e.name===t)return e}findDescendantByName(t){let e;return this.visit(r=>{if(r.name==t)return e=r,Wa}),e}getDefaultResolution(t,e){return"shared"}}function ZM(n){a5(n),c5(n)}function ny(n){n.getDescendants().forEach(t=>t.configureViewOpacity())}class ry{constructor(t,e){this.container=t,this.options=e}async addChildSpec(t,e){var f,h;const{specs:r,insertAt:i}=this.options.getChildSpecs(),s=e??r.length,o=((h=(f=this.options).defaultName)==null?void 0:h.call(f,s,t))??"child"+r.length,a=await this.container.context.createOrImportView(t,this.container,this.container,o);i(s,t);const l=this.options.insertView(a,s);this.options.prepareView&&await this.options.prepareView(a,s,l),ny(a);const{dataSources:c,graphicsPromises:u}=X2(a,this.container.context.dataFlow);return await Z2(a,c),await N2(u),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),a}async removeChildAt(t){const{removeAt:e}=this.options.getChildSpecs();this.options.removeView(t),e(t),this.options.afterRemove&&await this.options.afterRemove(t),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}}class Cs extends Za{constructor(e,r,i,s,o,a){super(e,r,i,s,o,{layersChildren:!0,...a});D(this,_c);D(this,_t,[]);this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){F(this,_t,await Promise.all(this.spec.layer.map((e,r)=>this.context.createOrImportView(e,this,this,"grid"+r,i=>{if(!Bd(i)&&!xd(i))throw new mr("LayerView accepts only unit or layer specs as children!",this)}))))}async addChildSpec(e,r){return P(this,_c,J0).call(this).addChildSpec(e,r)}async removeChildAt(e){await P(this,_c,J0).call(this).removeChildAt(e)}get children(){return m(this,_t).slice()}*[Symbol.iterator](){for(const e of m(this,_t))yield e}render(e,r,i={}){if(super.render(e,r,i),!!this.isConfiguredVisible()){e.pushView(this,r);for(const s of m(this,_t))s.render(e,r,i);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0);for(let r=m(this,_t).length-1;r>=0;r--)if(m(this,_t)[r].propagateInteractionEvent(e),e.stopped)return;this.handleInteractionEvent(void 0,e,!1)}}_t=new WeakMap,_c=new WeakSet,J0=function(){return new ry(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,r)=>{this.spec.layer.splice(e,0,r)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,r)=>(e.layoutParent??(e.layoutParent=this),m(this,_t).splice(r,0,e),e),removeView:e=>{const r=m(this,_t)[e];if(!r)throw new Error("Child index out of range!");r.disposeSubtree(),m(this,_t).splice(e,1)},defaultName:e=>"layer"+e})};class iy{constructor(t,e){this.n=t,this.maxCols=e??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const t=[],e=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const s=[];t.push(s);for(let o=0;o<e;o++){const a=i*e+o;a<this.n&&s.push(a)}}return t}get colIndices(){const t=[],e=this.nCols,r=this.nRows;for(let i=0;i<e;i++){const s=[];t.push(s);for(let o=0;o<r;o++){const a=o*e+i;a<this.n&&s.push(a)}}return t}getCellIndex(t,e){let r=0;if(this.maxCols==1/0)r=e==0?t:void 0;else{if(t>=this.maxCols)return;r=e*this.nCols+t}return r<this.n?r:void 0}getCellCoords(t){if(!(t<0||t>=this.n))return[t%this.nCols,Math.floor(t/this.nCols)]}}function Ln(n){return()=>n}const tn=class tn{static create(t,e,r,i){return new tn(Ln(t),Ln(e),Ln(r),Ln(i))}_offset(t,e){const r=this["_"+t];if(e===0)return r;switch(typeof e){case"number":return()=>r()+e;case"function":return()=>r()+e();default:throw new Error("Not a number of function")}}_passThrough(t){return this._offset(t,0)}constructor(t,e,r,i){this._x=t,this._y=e,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(t){return t?this===t||this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height:!1}modify(t){if(!Object.keys(t).length)return this;const e=r=>{const i=t[r];return typeof i=="number"?Ln(i):typeof i=="function"?i:this._passThrough(r)};return new tn(e("x"),e("y"),e("width"),e("height"))}translate(t,e){return t===0&&e===0?this:new tn(this._offset("x",t),this._offset("y",e),this._passThrough("width"),this._passThrough("height"))}translateBy(t){return this.translate(t.x,t.y)}expand(t,e=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new tn(t.left?this._offset("x",-t.left*e):this._passThrough("x"),t.top?this._offset("y",-t.top*e):this._passThrough("y"),t.width?this._offset("width",t.width*e):this._passThrough("width"),t.height?this._offset("height",t.height*e):this._passThrough("height"))}shrink(t){return this.expand(t,-1)}intersect(t){return this===t||t==null?this:new tn(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new tn(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new tn(Ln(this.x),Ln(this.y),Ln(this.width),Ln(this.height))}containsPoint(t,e){return t>=this.x&&t<this.x2&&e>=this.y&&e<this.y2}normalizePoint(t,e,r=!1){const i={x:(t-this.x)/this.width,y:(e-this.y)/this.height};return r&&(i.y=1-i.y),i}denormalizePoint(t,e,r=!1){return r&&(e=1-e),{x:this.x+t*this.width,y:this.y+e*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}};j(tn,"ZERO",tn.create(0,0,0,0));let St=tn;const $M="chromosome_ticks_and_labels",eR={x:"width",y:"height"};function Id(n){return n=="x"?"y":"x"}const Ju={x:["bottom","top"],y:["left","right"]},Ed=Object.fromEntries(Object.entries(Ju).map(([n,t])=>t.map(e=>[e,n])).flat(1));function yr(n){return Ed[n]}class sy extends Cs{constructor(t,e,r,i,s,o){const a=e=="locus",l={...a?nR:oy,...tR(e,t),...t};super(a?rR(l,e):ay(l,e),r,i,s,`axis_${t.orient}`,{blockEncodingInheritance:!0,contributesToScaleDomain:!1,...o}),this.axisProps=l}getSize(){const t={px:this.getPerpendicularSize()},e={grow:1};return Ed[this.axisProps.orient]=="x"?new Cr(e,t):new Cr(t,e)}getPerpendicularSize(){return bd(this.axisProps)}isPickingSupported(){return!1}}function bd(n){const t=yr(n.orient);let e=n.ticks&&n.tickSize||0;return n.labels&&(e+=n.labelPadding,t=="x"?e+=n.labelFontSize:e+=30),n.title&&(e+=n.titlePadding+n.titleFontSize),e=Math.min(n.maxExtent||1/0,Math.max(n.minExtent||0,e)),e}const oy={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 tR(n,t){const e=t.orient,r=n=="nominal"||n=="ordinal";let i="center",s="middle",o=t.labelAngle??((e=="top"||e=="bottom")&&r?-90:0);switch(e){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(e=="bottom")?"left":"right",s="middle"):s=e=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:s}}function ay(n,t){const e={...n,extent:bd(n)},r=yr(e.orient),i=Id(r),s=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({name:"domain",data:{values:[{}]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[i]:o,size:e.domainWidth}}),l=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[i+"Offset"]:(e.tickSize+e.labelPadding)*s,[i]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[r]:{field:"value",type:t},text:{field:"label"}}}),c=()=>({name:"ticks",mark:{type:"rule",clip:!1,strokeDash:e.tickDash,strokeCap:e.tickCap,color:e.tickColor,size:e.tickWidth,minBufferSize:300},encoding:{[i]:{value:o},[i+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),u=()=>({name:"title",data:{values:[{}]},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,[r]:.5,[i]:1-o}}),f=()=>{const A={name:"ticks_and_labels",encoding:{[r]:{field:"value",type:t}},layer:[]};return e.ticks&&A.layer.push(c()),e.labels&&A.layer.push(l()),A},h={resolve:{scale:{[r]:"forced"}},[eR[Id(r)]]:e.extent,data:{lazy:{type:"axisTicks",channel:r,axis:n}},layer:[]};return e.domain&&h.layer.push(a()),(e.ticks||e.labels)&&h.layer.push(f()),e.title&&h.layer.push(u()),h}const nR={...oy,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 rR(n,t){const e={...n,extent:bd(n)},r=yr(e.orient),i=Id(r),s=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:n.chromTickDash,strokeDashOffset:n.chromTickDashOffset,[i]:s,[i+"2"]:s-e.chromTickSize/e.extent*(s?1:-1),color:n.chromTickColor,size:e.chromTickWidth}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:n.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[r+"2"]:{field:"continuousEnd",type:t},text:{field:"name"}}}};let l;switch(e.orient){case"bottom":case"top":l={};break;case"left":l={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":l={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:l={}}const c=ay({...n,...l},t);if(n.chromTicks||n.chromLabels){const u={name:$M,data:{lazy:{type:"axisGenome",channel:yr(e.orient)}},encoding:{[r]:{field:"continuousStart",type:t,band:0}},layer:[]};if(n.chromTicks&&u.layer.push(o()),n.chromLabels){u.layer.push(a());let f;c.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(A=>A.name=="labels").forEach(A=>{f=A.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}class iR{constructor(t){D(this,Fi);D(this,Dr,0);D(this,kr,0);F(this,Fi,new Array(t))}push(t){m(this,Fi)[m(this,Dr)]=t,F(this,Dr,(m(this,Dr)+1)%this.size),F(this,kr,Math.min(m(this,kr)+1,this.size))}get(){const t=m(this,Fi);return m(this,kr)<this.size?t.slice(0,m(this,kr)):t.slice(m(this,Dr),this.size).concat(t.slice(0,m(this,Dr)))}get size(){return m(this,Fi).length}get length(){return m(this,kr)}}Fi=new WeakMap,Dr=new WeakMap,kr=new WeakMap;class Et{static fromMouseEvent(t){return new Et(t.clientX,t.clientY)}constructor(t,e){this.x=t,this.y=e}subtract(t){return new Et(this.x-t.x,this.y-t.y)}add(t){return new Et(this.x-t.x,this.y-t.y)}multiply(t){return new Et(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(t){return t?t===this||t.x===this.x&&t.y===this.y:!1}}let Ai,cy=0;function ly(){return performance.now()-cy<50}function sR(n){return function(...t){cy=performance.now(),n(...t)}}function oR(n,t,e,r,i){if(e=sR(e),n.type=="wheel"){n.uiEvent.preventDefault();const s=n.uiEvent,o=s.deltaMode?120:1;if(!s.deltaX&&!s.deltaY)return;Ai==null||Ai.stop();let{x:a,y:l}=n.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&!c.x.constant&&(a=+c.x(r.datum)*t.width+t.x),c.y&&!c.y2&&!c.y.constant&&(l=(1-+c.y(r.datum))*t.height+t.y)}Math.abs(s.deltaX)<Math.abs(s.deltaY)?e({x:a,y:l,xDelta:0,yDelta:0,zDelta:s.deltaY*o/300}):e({x:a,y:l,xDelta:-s.deltaX*o,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.mouseEvent.button===0){Ai&&Ai.stop();const s=new iR(30),o=n.mouseEvent;o.preventDefault();let a=Et.fromMouseEvent(o);const l=f=>{const h=Et.fromMouseEvent(f);s.push({point:h,timestamp:performance.now()});const A=h.subtract(a);e({x:a.x,y:a.y,xDelta:A.x,yDelta:A.y,zDelta:0}),a=h},c=()=>{const h=performance.now(),A=s.get().filter(b=>h-b.timestamp<160);if(A.length<5||!i||aR(A))return;const d=A.at(-1),g=A[0],p=d.point.subtract(g.point).multiply(1/(d.timestamp-g.timestamp));let C=a.x,w=a.y;Ai=wd(i,b=>{e({x:b.x,y:b.y,xDelta:C-b.x,yDelta:w-b.y,zDelta:0}),C=b.x,w=b.y},150,.5,{x:C,y:w}),Ai({x:a.x-p.x*250,y:a.y-p.y*250})},u=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",u),c()};document.addEventListener("mouseup",u,!1),document.addEventListener("mousemove",l,!1)}}function aR(n){const t=n[Math.floor(n.length/2)],e=t.point.subtract(n[0].point).multiply(t.timestamp-n[0].timestamp),r=n.at(-1).point.subtract(t.point).multiply(n.at(-1).timestamp-t.timestamp),i=e.length;return r.length/i<.4}class cR extends Cs{constructor(t,e,r,i,s,o){const l={...e=="locus"?lR:uy,...t};super(hR(l,e),r,i,s,`axisGrid_${t.orient}`,{blockEncodingInheritance:!0,contributesToScaleDomain:!1,...o}),this.axisProps=l}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const uy={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},lR={...uy,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function uR(n,t){const e=n,r=yr(e.orient);return{name:"grid_lines",data:{lazy:{type:"axisTicks",channel:r,axis:n}},mark:{type:"rule",strokeDash:e.gridDash,strokeCap:e.gridCap,color:e.gridColor,size:e.gridWidth,opacity:e.gridOpacity,minBufferSize:300},encoding:{[r]:{field:"value",type:t}}}}function fR(n,t){const e=n,r=yr(e.orient);return{name:"chromosome_lines",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rule",strokeDash:e.chromGridDash,strokeCap:e.chromGridCap,color:e.chromGridColor,size:e.chromGridWidth,opacity:e.chromGridOpacity},encoding:{[r]:{field:"continuousStart",type:t,band:0}}}}function AR(n,t){const e=n,r=yr(e.orient);return{name:"chromosome_fill",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:t,band:0},[r+"2"]:{field:"continuousEnd",band:0},fill:{field:"odd",type:"nominal",scale:{domain:[!1,!0],range:[e.chromGridFillEven??"white",e.chromGridFillOdd??"white"]}},opacity:{field:"odd",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[e.chromGridFillEven?1:0,e.chromGridFillOdd?1:0]}}}}}function hR(n,t){const e={...n},r=[];return e.chromGrid&&(e.chromGridFillOdd||e.chromGridFillEven)&&r.push(AR(e,t)),e.chromGrid&&e.chromGridOpacity>0&&r.push(fR(e,t)),e.grid&&e.gridOpacity>0&&r.push(uR(e,t)),{name:"grid_layers",configurableVisibility:!1,resolve:{scale:{[yr(n.orient)]:"forced",fill:"independent",opacity:"independent"}},layer:r}}const fy={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"},dR={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},gR={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},pR={start:0,middle:.5,end:1},mR={start:"left",middle:"center",end:"right"};function CR(n){if(!n)return;const t=Ce(n)?{text:n}:n;if(!t.text||t.orient=="none")return;const e={"track-title":dR,overlay:gR}[t.style]??{},r={...fy,...e,...t};let i={},s={x:0,y:0};const o=pR[r.anchor??"middle"];switch(r.orient){case"top":s={x:o,y:1},i={baseline:"alphabetic",angle:0};break;case"right":s={x:1,y:1-o},i={baseline:"alphabetic",angle:90};break;case"bottom":s={x:o,y:0},i={baseline:"top",angle:0};break;case"left":s={x:0,y:o},i={baseline:"alphabetic",angle:-90};break}const a={...fy,...i,...e,...t},l={xOffset:0,yOffset:0};switch(r.orient){case"top":l.yOffset=-a.offset;break;case"right":l.xOffset=a.offset;break;case"bottom":l.yOffset=a.offset;break;case"left":l.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...s,...l,text:a.text,align:a.align??mR[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}}}class Ay extends Qt{constructor(e,r,i={}){const s={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20};super({params:[{name:"scrollbarOpacity",value:1}],opacity:{expr:"scrollbarOpacity"},data:{values:[{}]},mark:{type:"rect",fill:"#b0b0b0",fillOpacity:.6,stroke:"white",strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1},configurableVisibility:!1},e.layoutParent.context,e.layoutParent,e.view,"scrollbar-"+r,{blockEncodingInheritance:!0});D(this,me);D(this,Fr);D(this,Vc,St.ZERO);D(this,kt,St.ZERO);D(this,mo,St.ZERO);j(this,"viewportOffset",0);D(this,Co);this.config=s,F(this,Fr,r),F(this,Co,i.onViewportOffsetChange);const o=this.config.scrollbarPadding,a=this.config.scrollbarSize;F(this,Vc,m(this,Fr)=="vertical"?new St(()=>m(this,kt).x+m(this,kt).width-a-o,()=>m(this,kt).y+o+this.scrollOffset,()=>a,()=>P(this,me,Tf).call(this)):new St(()=>m(this,kt).x+o+this.scrollOffset,()=>m(this,kt).y+m(this,kt).height-a-o,()=>P(this,me,Tf).call(this),()=>a)),P(this,me,K0).call(this,this.viewportOffset),this.addInteractionEventListener("mousedown",(l,c)=>{if(c.stopPropagation(),P(this,me,Al).call(this)<=0)return;const u=g=>r=="vertical"?g.clientY:g.clientX;c.mouseEvent.preventDefault();const f=this.scrollOffset,h=u(c.mouseEvent),A=g=>{const p=P(this,me,Al).call(this);if(p<=0)return;const C=$i(u(g)-h+f,0,p);this.interpolateViewportOffset({x:P(this,me,cb).call(this,C)})},d=()=>{document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",d)};document.addEventListener("mouseup",d,!1),document.addEventListener("mousemove",A,!1)})}get scrollOffset(){return P(this,me,ab).call(this,this.viewportOffset)}setViewportOffset(e,{notify:r=!0,syncSmoother:i=!1}={}){this.viewportOffset=$i(e,0,P(this,me,Pf).call(this)),i&&P(this,me,K0).call(this,this.viewportOffset),r&&m(this,Co)&&m(this,Co).call(this,this.viewportOffset)}render(e,r,i){super.render(e,m(this,Vc),i)}updateScrollbar(e,r){F(this,kt,e.flatten()),F(this,mo,r),this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}}Fr=new WeakMap,Vc=new WeakMap,kt=new WeakMap,mo=new WeakMap,Co=new WeakMap,me=new WeakSet,ob=function(){const e=m(this,Fr)=="horizontal"?"width":"height",r=m(this,kt)[e],i=m(this,mo)[e];return i>0?Math.min(1,r/i):1},q0=function(){const e=m(this,Fr)=="horizontal"?"width":"height";return Math.max(0,m(this,kt)[e]-2*this.config.scrollbarPadding)},Tf=function(){const e=P(this,me,q0).call(this),r=P(this,me,ob).call(this)*e,i=this.config.scrollbarMinLength;return Math.min(e,Math.max(i,r))},Al=function(){return Math.max(0,P(this,me,q0).call(this)-P(this,me,Tf).call(this))},ab=function(e){const r=P(this,me,Pf).call(this),i=P(this,me,Al).call(this);return r<=0||i<=0?0:e/r*i},cb=function(e){const r=P(this,me,Pf).call(this),i=P(this,me,Al).call(this);return r<=0||i<=0?0:e/i*r},Pf=function(){const e=m(this,Fr)=="horizontal"?"width":"height";return Math.max(0,m(this,mo)[e]-m(this,kt)[e])},K0=function(e){this.interpolateViewportOffset=wd(this.context.animator,r=>{this.setViewportOffset(r.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})};class yR extends Cs{constructor(e,r,i={}){const s=r(),o=Object.keys(s.intervals);if(Wr.every(u=>!o.includes(u)))throw new Error("SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.");const a={name:"selectionRect",configurableVisibility:!1,resolve:{scale:{x:"forced",y:"forced"}},data:{values:hy(r())},encoding:{},layer:[]};o.includes("x")&&(a.encoding.x={field:"_x",type:null,title:null},a.encoding.x2={field:"_x2"}),o.includes("y")&&(a.encoding.y={field:"_y",type:null,title:null},a.encoding.y2={field:"_y2"}),a.layer.push({name:"selectionRectRect",mark:{type:"rect",clip:!0,fill:"#808080",fillOpacity:.05,stroke:"black",strokeWidth:1,strokeOpacity:.2,...i}});const l=u=>{const f=e.view.getScaleResolution(u);return`format(datum._${u}2 - datum._${u}, '.3s')`+(f.type==="locus"?" + 'b'":"")},c=i.measure=="inside"?9:i.measure=="outside"?-9:0;o.includes("x")&&c!=0&&a.layer.push({name:"selectionRectTextX",mark:{type:"text",align:"center",paddingX:5,dy:c,tooltip:null},encoding:{text:{expr:l("x")},y:o.includes("y")?{field:"_y2",type:null,title:null}:{value:1},y2:null}}),o.includes("y")&&c!=0&&a.layer.push({name:"selectionRectTextY",mark:{type:"text",align:"center",paddingY:5,dy:c,tooltip:null,angle:-90},encoding:{text:{expr:l("y")},x2:null}});super(a,e.layoutParent.context,e.layoutParent,e.view,"selectionRect",{blockEncodingInheritance:!0,contributesToScaleDomain:!1});j(this,"_selectionExpr");j(this,"_selectionListener");this._selectionExpr=r,this._selectionListener=()=>{var h;const u=r(),f=(h=this.flowHandle)==null?void 0:h.dataSource;if(!f)throw new Error("Cannot find selection rect data source handle!");f.updateDynamicData(hy(u))},r.addListener(this._selectionListener)}dispose(){this._selectionExpr.removeListener(this._selectionListener),super.dispose()}}function hy(n){const t=n.intervals.x,e=n.intervals.y;return!t&&!e?[]:[{_x:t==null?void 0:t[0],_x2:t==null?void 0:t[1],_y:e==null?void 0:e[0],_y2:e==null?void 0:e[1]}]}class wR{constructor(t,e,r){D(this,Sf);if(this.layoutParent=e,this.view=t,this.serial=r,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.coords=St.ZERO,t.needsAxes.x||t.needsAxes.y){const i=t.spec,s="view"in i?i==null?void 0:i.view:void 0,o=IR(s);o&&(this.background=new Qt(o,e.context,e,t,"background"+r,{blockEncodingInheritance:!0}));const a=ER(s);a&&(this.backgroundStroke=new Qt(a,e.context,e,t,"backgroundStroke"+r,{blockEncodingInheritance:!0}));const l=CR(t.spec.title);if(l){const c=new Qt(l,e.context,e,t,"title"+r,{blockEncodingInheritance:!0});this.title=c}}t.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new Ay(this,"horizontal")),t.spec.viewportHeight!=null&&(this.scrollbars.vertical=new Ay(this,"vertical")),P(this,Sf,lb).call(this)}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();const{view:t,axes:e,gridLines:r}=this,i=(a,l)=>{const c=a.getAxisProps();if(c===null)return;const u=c?{...c}:{};if(!u.orient){for(const f of Ju[l])if(!e[f]){u.orient=f;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=a.getTitle()),!Ju[l].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${l}"!`);return u},s=async(a,l,c)=>{const u=i(a,l);if(u){if(e[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);const f=new sy(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);e[u.orient]=f,await f.initializeChildren()}},o=async(a,l,c)=>{const u=i(a,l);if(u&&(u.grid||u.chromGrid)){const f=new cR(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);r[u.orient]=f,await f.initializeChildren()}};for(const a of["x","y"])if(t.needsAxes[a]){const l=t.resolutions.axis[a];if(!l)continue;await s(l,a,t)}for(const a of["x","y"])if(t.needsAxes[a]&&t.getConfiguredOrDefaultResolution(a,"axis")!="excluded"){const l=t.getAxisResolution(a);if(!l)continue;await o(l,a,t)}if(t instanceof Cs){for(const a of t)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&await s(c,l,a)}for(const a of t)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&await s(c,l,a)}}[...Object.values(e),...Object.values(r)].forEach(a=>a.visit(l=>{l instanceof Qt&&l.resolve("scale")}))}disposeAxisViews(){for(const t of Object.values(this.axes))t.disposeSubtree();for(const t of Object.values(this.gridLines))t.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){const t=e=>{const r=this.axes[e];return r?Math.max(r.getPerpendicularSize()+(r.axisProps.offset??0),0):0};return new ot(t("top"),t("right"),t("bottom"),t("left")).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}}Sf=new WeakSet,lb=function(){const t=this.view,e=r=>{this.view.context.glHelper.canvas.style.cursor=r};for(const[r,i]of t.paramMediator.paramConfigs){if(!("select"in i))continue;const s=Wl(i.select);if(!Wp(s))continue;const o=s.encodings,a=Object.fromEntries(o.map(b=>{const y=this.view.getScaleResolution(b),x=y==null?void 0:y.getScale();if(!x||!Ke(x.type))throw new Error(`No continuous scale found for interval selection param "${r}" on channel "${b}"! Scale type is "${(x==null?void 0:x.type)??"none"}".`);return[b,y]}));if(this.selectionRect)throw new Error("Only one interval selection per container is currently allowed!");let l=!1,c=!1,u=!1,f=null;const h=(b,y)=>Object.fromEntries(o.map(x=>[x,[Math.min(b[x],y[x]),Math.max(b[x],y[x])]])),A=t.paramMediator.createExpression(r),d=t.paramMediator.getSetter(r);i.value&&d({type:"interval",intervals:i.value});const g=()=>{d(qp(o)),e(null)};this.selectionRect=new yR(this,A,s.mark),this.selectionRect.initializeChildren();const p=b=>{const y={x:0,y:0},x=t.coords.normalizePoint(b.x,b.y,!0);for(const B of o){const E=a[B].getScale(),Q=E.invert(B=="x"?x.x:x.y);y[B]=Q+(["index","locus"].includes(E.type)?.5:0)}return y},C=b=>{var Q,k,S,T;const{intervals:y}=b,x=(N,U,H)=>{const J=(le,de)=>de==null?null:a[le].getScale()(de),_=J("x",N)??H,Z=J("y",U)??H;return t.coords.denormalizePoint(_,Z,!0)},B=x((Q=y.x)==null?void 0:Q[0],(k=y.y)==null?void 0:k[0],0),E=x((S=y.x)==null?void 0:S[1],(T=y.y)==null?void 0:T[1],1);return St.create(B.x,B.y,E.x-B.x,E.y-B.y)};t.addInteractionEventListener("mousedown",(b,y)=>{if(y.mouseEvent.button!=0)return;if(f=l?C(A()):null,f)e("grabbing"),c=!0;else{const k=y.point;if(Xp(A())&&(c=!0),y.mouseEvent.shiftKey)g(),u=!0;else if(Xp(A())){const T=(N,U)=>{t.removeInteractionEventListener("mouseup",T);const H=U.point;k.subtract(H).length<2&&g()};t.addInteractionEventListener("mouseup",T);return}else return}y.stopPropagation();const x=y.point,B=Et.fromMouseEvent(y.mouseEvent).subtract(x),E=k=>{const S=Et.fromMouseEvent(k).subtract(B);let T;if(f){const N=S.subtract(x),U=f.translate(N.x,N.y);T=h(p(new Et(U.x,U.y)),p(new Et(U.x2,U.y2)))}else T=h(p(x),p(S));for(const N of o){const U=a[N],{zoomExtent:H,scale:J}=U,_=T[N];if(["index","locus"].includes(J.type)&&(_[0]=Math.ceil(_[0]),_[1]=Math.ceil(_[1])),f){const Z=_[1]-_[0],le=H[0],de=H[1];_[0]<le&&(_[0]=le,_[1]=le+Z),_[1]>de&&(_[1]=de,_[0]=de-Z)}else _[0]=Math.max(H[0],_[0]),_[1]=Math.min(H[1],_[1]);_[1]=Math.min(H[1],_[1])}d({type:"interval",intervals:T})},Q=()=>{document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",Q),u=!1,f&&(e("move"),f=null)};document.addEventListener("mousemove",E),document.addEventListener("mouseup",Q)}),t.addInteractionEventListener("click",(b,y)=>{y.mouseEvent.button==0&&c&&(y.stopPropagation(),c=!1)},!0);const w=b=>mQ(A(),p(b));t.addInteractionEventListener("dblclick",(b,y)=>{w(y.point)&&(g(),y.stopPropagation())},!0),t.addInteractionEventListener("mousemove",(b,y)=>{w(y.point)?u||(l=!0,f||e("move")):(l=!1,f||e(null))})}};function IR(n){if(n!=null&&n.fill||n!=null&&n.fillOpacity||n!=null&&n.shadowOpacity)return{configurableVisibility:!1,data:{values:[{}]},mark:{color:n.fill,opacity:n.fillOpacity??(n.fill?1:0),type:"rect",clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:n.shadowBlur,shadowColor:n.shadowColor,shadowOffsetX:n.shadowOffsetX,shadowOffsetY:n.shadowOffsetY,shadowOpacity:n.shadowOpacity}}}function ER(n){if(!(!n||!n.stroke||n.strokeWidth===0||n.strokeOpacity===0))return{configurableVisibility:!1,resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:n.strokeWidth??1,color:n.stroke??"lightgray",strokeCap:"square",opacity:n.strokeOpacity??1,type:"rule",clip:!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:null},y:{field:"y",type:"quantitative",scale:null},x2:{field:"x2"},y2:{field:"y2"}}}}class bR extends Za{constructor(e,r,i,s,o,a,l){super(e,r,i,s,o,l);D(this,se);D(this,yo,1/0);D(this,wo,10);D(this,ct,[]);D(this,_n,{});D(this,Jc,0);this.spec=e,F(this,wo,e.spacing??10),F(this,yo,a),F(this,ct,[]),this.wrappingFacet=!1}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,m(this,ct).length)}insertChildViewAt(e,r){e.layoutParent??(e.layoutParent=this);const i=new wR(e,this,m(this,Jc));return VE(this,Jc)._++,m(this,ct).splice(r,0,i),i}removeChildView(e){const r=m(this,ct).findIndex(i=>i.view===e);if(r<0)throw new Error("Not my child view!");this.removeChildAt(r)}removeChildAt(e){const r=m(this,ct)[e];if(!r)throw new Error("Child index out of range!");P(this,se,j0).call(this,r),m(this,ct).splice(e,1)}setChildren(e){for(const r of m(this,ct))P(this,se,j0).call(this,r);F(this,ct,[]);for(const r of e)this.appendChild(r)}get children(){return m(this,ct).map(e=>e.view)}get childCount(){return m(this,ct).length}async createAxes(){await this.syncSharedAxes(),await Promise.all(m(this,ct).map(e=>e.createAxes()))}async syncSharedAxes(){for(const r of Object.values(m(this,_n)))r.disposeSubtree();F(this,_n,{});const e=[];for(const r of Wr){const i=this.resolutions.axis[r];if(!i)continue;const s=i.getAxisProps();if(!s)continue;const o={title:i.getTitle(),orient:Ju[r][0],...s},a=new sy(o,i.scaleResolution.type,this.context,this,this);e.push(a.initializeChildren()),m(this,_n)[r]=a}await Promise.all(e)}*[Symbol.iterator](){for(const e of m(this,ct))yield*e.getChildren();for(const e of Object.values(m(this,_n)))yield e}getOverhang(){return P(this,se,fb).call(this).union(P(this,se,Lf).call(this))}getSize(){return this._cache("size",()=>new Cr(P(this,se,X0).call(this,"column"),P(this,se,X0).call(this,"row")).addPadding(P(this,se,Lf).call(this)))}render(e,r,i={}){if(super.render(e,r,i),!this.isConfiguredVisible())return;this.layoutParent||(r=r.shrink(this.getPadding())),r=r.shrink(P(this,se,Lf).call(this)),e.pushView(this,r);const s={devicePixelRatio:e.getDevicePixelRatio()},o=Q2(P(this,se,W0).call(this,"column"),r.width,s),a=Q2(P(this,se,W0).call(this,"row"),r.height,s),l=new iy(m(this,se,Hi).length,m(this,yo)??1/0),c=u=>Math.round(u*devicePixelRatio)/devicePixelRatio;for(const[u,f]of m(this,se,Hi).entries()){const{view:h,axes:A,gridLines:d,background:g,backgroundStroke:p,title:C,selectionRect:w}=f,[b,y]=l.getCellCoords(u),x=o[P(this,se,Z0).call(this,"column",b)],B=a[P(this,se,Z0).call(this,"row",y)],E=h.getViewportSize(),Q=h.getSize(),k=h.getOverhang(),S=x.location-k.left,T=B.location-k.top,N=(Le,Vt)=>(Le[Vt].grow?(Vt=="width"?x:B).size:Le[Vt].px)+k[Vt],U=N(E,"width"),H=N(E,"height"),J=N(Q,"width"),_=N(Q,"height"),Z=f.scrollbars.horizontal,le=f.scrollbars.vertical,de=Z?()=>c(Z.viewportOffset):()=>0,ge=le?()=>c(le.viewportOffset):()=>0,Fe=new St(()=>r.x+S,()=>r.y+T,()=>U,()=>H),Bn=h.isScrollable(),vn=Bn?new St(()=>r.x+S-de(),()=>r.y+T-ge(),()=>J,()=>_):Fe;f.coords=Fe;const Mr=i.clipRect?Fe.intersect(i.clipRect):Fe;g==null||g.render(e,Mr,{...i,clipRect:void 0});for(const Le of Object.values(d))Le.render(e,Fe,i);const Ro=BR(h)||Bn;Ro&&h.render(e,vn,{...i,clipRect:Mr}),p==null||p.render(e,Mr,{...i,clipRect:void 0});for(const[Le,Vt]of Object.entries(A)){const Bt=Le=="left"||Le=="right"?"vertical":"horizontal",Y=f.scrollbars[Bt],$=Y?Fe.modify(Bt=="vertical"?{y:()=>vn.y,height:_}:{x:()=>vn.x,width:J}):Fe,ie=dy($,Le,Vt);let L=i.clipRect;Y&&(L=ie.intersect(L).intersect(Y?Fe.modify(Bt=="vertical"?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),Vt.render(e,ie,{...i,clipRect:L})}for(const Le of Object.values(m(this,_n))){const Bt=Le.axisProps.orient;(Bt=="left"&&b==0||Bt=="right"&&b==l.nCols-1||Bt=="top"&&y==0||Bt=="bottom"&&y==l.nRows-1)&&Le.render(e,dy(Fe.shrink(f.view.getOverhang()),Bt,Le),i)}Ro||h.render(e,vn,i),w==null||w.render(e,vn,i);for(const Le of Object.values(f.scrollbars))Le.updateScrollbar(Fe,vn),Le.render(e,r,i);C==null||C.render(e,Fe,i)}e.popView(this)}propagateInteractionEvent(e){if(this.handleInteractionEvent(void 0,e,!0),e.stopped)return;const r=m(this,se,Hi).find(s=>s.coords.containsPoint(e.point.x,e.point.y));for(const s of Object.values((r==null?void 0:r.scrollbars)??{}))if(s.coords.containsPoint(e.point.x,e.point.y)&&(s.propagateInteractionEvent(e),e.stopped))return;const i=r==null?void 0:r.view;if(i){if(i.propagateInteractionEvent(e),e.stopped)return;(i instanceof Qt||i instanceof Cs)&&oR(e,r.coords,s=>P(this,se,Ab).call(this,r.coords,r.view,s),this.context.getCurrentHover(),this.context.animator)}e.stopped||this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,r){return"independent"}}yo=new WeakMap,wo=new WeakMap,ct=new WeakMap,_n=new WeakMap,Jc=new WeakMap,se=new WeakSet,Hi=function(){return m(this,ct).filter(e=>e.view.isConfiguredVisible())},ub=function(){return new iy(m(this,se,Hi).length,m(this,yo)??1/0)},j0=function(e){e.disposeAxisViews();for(const r of e.getChildren())r.disposeSubtree()},hl=function(e){const r=e=="column"?"width":"height",i=(s,o)=>s.map(a=>{const c=m(this,se,Hi)[a].getOverhangAndPadding();return e=="column"?o?c.right:c.left:o?c.bottom:c.top}).reduce((a,l)=>Math.max(a,l),0);return this._cache(`size/directionSizes/${e}`,()=>m(this,se,ub)[e=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:i(s,0),axisAfter:i(s,1),view:t5(s.map(o=>m(this,se,Hi)[o].view.getViewportSize()[r]))})))},W0=function(e){const r=P(this,se,hl).call(this,e),i=[];i.push(Ka);for(const[s,o]of r.entries())s>0&&i.push({px:m(this,wo),grow:0}),(s==0||this.wrappingFacet)&&i.push(Ka),i.push({px:o.axisBefore,grow:0}),i.push(o.view),i.push({px:o.axisAfter,grow:0}),(s==r.length-1||this.wrappingFacet)&&i.push(Ka);return i},X0=function(e){let r=0,i=0;const s=e=="row"?this.spec.height:this.spec.width;if(s||s===0)return D2(s);const o=P(this,se,hl).call(this,e);for(const[a,l]of o.entries())a>0&&(i+=m(this,wo)),(a==0||this.wrappingFacet)&&(i+=0),i+=l.axisBefore,i+=l.view.px??0,r+=l.view.grow??0,i+=l.axisAfter,(a==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},Z0=function(e,r){return e=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},fb=function(){const e=P(this,se,hl).call(this,"column"),r=P(this,se,hl).call(this,"row");return!e.length||!r.length?ot.zero():new ot(r.at(0).axisBefore,e.at(-1).axisAfter,r.at(-1).axisAfter,e.at(0).axisBefore)},Lf=function(){const e=r=>{const i=Ed[r],s=m(this,_n)[i];return(s==null?void 0:s.axisProps.orient)!==r?0:Math.max(s.getPerpendicularSize()+(s.axisProps.offset??0),0)};return new ot(e("top"),e("right"),e("bottom"),e("left"))},Ab=function(e,r,i){for(const[s,o]of Object.entries(xR(r))){if(o.size<=0)continue;const a=e.normalizePoint(i.x,i.y),l=e.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:l.x-a.x,y:l.y-a.y};for(const u of o)u.zoom(2**i.zDelta,s=="y"?1-a[s]:a[s],s=="x"?c.x:-c.y)}this.context.animator.requestRender()};function xR(n){const t={x:new Set,y:new Set};return n.visit(e=>{for(const[r,i]of Object.entries(t)){const s=e.getScaleResolution(r);s&&s.isZoomable()&&i.add(s)}}),t}function BR(n){let t=!0;return n.visit(e=>{e instanceof Qt&&t&&(t=e.mark.properties.clip===!0)}),t}function dy(n,t,e){const r=e.axisProps,i=e.getPerpendicularSize();if(t=="bottom")return n.translate(0,n.height+r.offset).modify({height:i});if(t=="top")return n.translate(0,-i-r.offset).modify({height:i});if(t=="left")return n.translate(-i-r.offset,0).modify({width:i});if(t=="right")return n.translate(n.width+r.offset,0).modify({width:i})}const B0=class B0 extends bR{constructor(e,r,i,s,o){super(e,r,i,s,o,qu(e)?e.columns:ec(e)?1:1/0);D(this,Mi);this.spec=e}async initializeChildren(){const e=this.spec,r=qu(e)?e.concat:ec(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(r.map((i,s)=>this.context.createOrImportView(i,this,this,"grid"+s)))),await this.createAxes()}async addChildSpec(e,r){return P(this,Mi,$0).call(this).addChildSpec(e,r)}async removeChildAt(e){await P(this,Mi,$0).call(this).removeChildAt(e)}getDefaultResolution(e,r){return r=="axis"?"independent":ec(this.spec)&&e==="x"||my(this.spec)&&e==="y"?"shared":"independent"}};Mi=new WeakSet,hb=function(){const e=this.spec;let r;return qu(e)?r=e.concat:ec(e)?r=e.vconcat:r=e.hconcat,{specs:r,insertAt:(i,s)=>{r.splice(i,0,s)},removeAt:i=>{r.splice(i,1)}}},$0=function(){return new ry(this,{getChildSpecs:P(this,Mi,hb).bind(this),insertView:(e,r)=>this.insertChildViewAt(e,r),removeView:e=>JE(B0.prototype,this,"removeChildAt").call(this,e),prepareView:async(e,r,i)=>{await i.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:e=>"grid"+this.childCount})};let $a=B0;const gy="viewRoot";class vR{constructor(t={}){D(this,Io,new Map);this.options={allowImport:!0,wrapRoot:!0,...t};const e=r=>(i,s,o,a,l)=>new r(i,s,o,a,i.name??l);this.addViewType(Bd,e(Cs)),this.addViewType(xd,e(Qt)),this.addViewType(ec,e($a)),this.addViewType(my,e($a)),this.addViewType(qu,e($a)),this.addViewType(DR,()=>{throw new Error("SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!")})}addViewType(t,e){m(this,Io).set(t,e)}createView(t,e,r,i,s){for(const[o,a]of m(this,Io))if(o(t))return a(t,e,r,i,s);throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(t)]))}isViewSpec(t){const e=[...m(this,Io).keys()].filter(r=>r(t));if(e.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return e.length==1}async createOrImportView(t,e,r,i,s,o){let a;if(SR(t)){let u;if("url"in t.import)if(this.options.allowImport)u=await l5(t,i.getBaseUrl(),e);else throw new mr("Importing views is not allowed!",r);else if("template"in t.import)u=py(t.import.template,i);else throw new Error("Invalid import: "+JSON.stringify(t));o==null||o(u),QR(u,t),a=u}else a=t;const l=u=>{var f;return(f=u==null?void 0:u.params)==null?void 0:f.some(h=>$p(h)&&Wl(h.select).type=="interval")};!i&&this.options.wrapRoot&&(xd(a)||Bd(a)||l(a))&&s===gy&&(a={name:"implicitRoot",vconcat:[a]});const c=this.createView(a,e,r,i,s);return c instanceof Za&&await c.initializeChildren(),c}}Io=new WeakMap;function py(n,t){var r,i;const e=(i=(r=t.spec)==null?void 0:r.templates)==null?void 0:i[n];if(e)return structuredClone(e);if(t.dataParent)return py(n,t.dataParent);throw new Error(`Cannot find template "${n}" in current view or its ancestors!`)}function QR(n,t){t.name!=null&&(n.name=t.name);const e=Xe(t.params)?t.params:et(t.params)?Object.entries(t.params).map(([r,i])=>({name:r,value:i})):[];if(e.length){n.params??(n.params=[]);for(const r of e){const i=n.params.findIndex(s=>s.name==r.name);i>=0&&(n.params[i]=r)}for(const r of e)n.params.some(i=>i.name==r.name)||n.params.push(r)}}function xd(n){return"mark"in n&&(Ce(n.mark)||et(n.mark))}function Bd(n){return"layer"in n&&et(n.layer)}function SR(n){return"import"in n}function ec(n){return"vconcat"in n&&Xe(n.vconcat)}function my(n){return"hconcat"in n&&Xe(n.hconcat)}function qu(n){return"concat"in n&&Xe(n.concat)}function DR(n){return"samples"in n&&et(n.samples)&&"spec"in n&&et(n.spec)}class kR{constructor(t,e){D(this,Eo);this.point=t,this.uiEvent=e,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}get proxiedMouseEvent(){return m(this,Eo)||F(this,Eo,FR(this.mouseEvent)),m(this,Eo)}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw new Error("Not a MouseEvent!")}}Eo=new WeakMap;function FR(n){const t=r=>r===null||typeof r!="object"&&typeof r!="function",e={get(r,i,s){const o=Reflect.get(r,i,r);if(!t(o))throw new Error(`Access to non-primitive property "${String(i)}" is not allowed.`);return o},getPrototypeOf(){return null},ownKeys(r){return Reflect.ownKeys(r).filter(s=>t(r[s])).map(s=>typeof s=="symbol"?s:String(s))},getOwnPropertyDescriptor(r,i){const s=Reflect.getOwnPropertyDescriptor(r,i);if(s&&!("get"in s||"set"in s)&&t(s.value))return{value:s.value,writable:!!s.writable,enumerable:!!s.enumerable,configurable:!!s.configurable}},has(r,i){return i in r?t(r[i]):!1}};return new Proxy(n,e)}class MR{constructor(t,e){this.animator=t,this.disabled=!!e,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=wd(t,r=>{var s;const i=r.x-this.lastValue;this.lastValue=r.x,(s=this.callback)==null||s.call(this,i)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=ag([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(t,e){if(this.disabled){e(t);return}this.callback=e;const r=$i(this.targetValue+t-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+r,this.smoother({x:this.targetValue})}}function RR(n){const t={},e=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in n){const s=i;!r.includes(i)&&e.includes(typeof n[s])&&(t[s]=n[s])}return t}class NR{constructor({viewRoot:t,glHelper:e,tooltip:r,animator:i,emitEvent:s,tooltipHandlers:o,renderPickingFramebuffer:a,getDevicePixelRatio:l}){D(this,Df);D(this,bo);D(this,Ri);D(this,gt);D(this,qc);D(this,Kc);D(this,jc);D(this,xo);D(this,Wc);D(this,Ye);D(this,Ni);D(this,Bo);D(this,Vn);F(this,bo,t),F(this,Ri,e),F(this,gt,r),F(this,qc,i),F(this,Kc,s),F(this,jc,o),F(this,xo,a),F(this,Wc,l),F(this,Ye,void 0),F(this,Ni,new MR(m(this,qc))),F(this,Bo,void 0),F(this,Vn,!1)}getCurrentHover(){return m(this,Ye)}registerMouseEvents(){const t=m(this,Ri).canvas;let e=performance.now(),r=!1;const i=s=>{var l;const o=performance.now(),a=o-e<200;if(s instanceof MouseEvent){const c=t.getBoundingClientRect(),u=new Et(s.clientX-c.left-t.clientLeft,s.clientY-c.top-t.clientTop);s.type=="mousemove"&&!a&&(m(this,gt).handleMouseMove(s),F(this,Vn,!1),s.buttons==0&&!ly()&&(m(this,xo).call(this),P(this,Df,db).call(this,u.x,u.y)));const f=h=>{m(this,bo).propagateInteractionEvent(new kR(u,h)),m(this,Vn)||m(this,gt).clear()};if(s.type!="wheel"&&m(this,Ni).cancel(),(s.type=="mousedown"||s.type=="mouseup")&&!ly())m(this,xo).call(this);else if(s.type=="wheel"){e=o,F(this,Vn,!1);const h=s;if(Math.abs(h.deltaX)>Math.abs(h.deltaY))F(this,Ye,null),m(this,Ni).cancel();else{const A=RR(h);m(this,Ni).setMomentum(h.deltaY*(h.deltaMode?80:1),d=>{const g=new WheelEvent("wheel",{...A,deltaMode:0,deltaX:0,deltaY:d});f(g)}),h.preventDefault();return}}if(s.type=="click"){if(r)return;const h=m(this,Ye)?{type:s.type,viewPath:m(this,Ye).mark.unitView.getLayoutAncestors().map(A=>A.name).reverse(),datum:m(this,Ye).datum}:{type:s.type,viewPath:null,datum:null};m(this,Kc).call(this,"click",h)}(s.type!="click"||((l=m(this,Bo))==null?void 0:l.subtract(Et.fromMouseEvent(s)).length)<3)&&f(s)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu","dblclick"].forEach(s=>t.addEventListener(s,i)),t.addEventListener("mousedown",s=>{F(this,Bo,Et.fromMouseEvent(s)),m(this,gt).sticky?(m(this,gt).sticky=!1,m(this,gt).clear(),r=!0):r=!1;const o=()=>{document.addEventListener("mouseup",()=>m(this,gt).popEnabledState(),{once:!0}),m(this,gt).pushEnabledState(!1)};if(s.button==2||s.shiftKey||s.ctrlKey||s.metaKey)o();else if(m(this,gt).visible){const a=setTimeout(()=>{r=!0,m(this,gt).sticky=!0},400),l=()=>clearTimeout(a);document.addEventListener("mouseup",l,{once:!0}),document.addEventListener("mousemove",l,{once:!0})}}),t.addEventListener("dragstart",s=>s.stopPropagation()),t.addEventListener("mouseout",()=>{m(this,gt).clear(),F(this,Ye,null)})}updateTooltip(t,e){if(!m(this,Vn)||!t)m(this,gt).updateWithDatum(t,e),F(this,Vn,!0);else throw new Error("Tooltip has already been updated! Duplicate event handler?")}}bo=new WeakMap,Ri=new WeakMap,gt=new WeakMap,qc=new WeakMap,Kc=new WeakMap,jc=new WeakMap,xo=new WeakMap,Wc=new WeakMap,Ye=new WeakMap,Ni=new WeakMap,Bo=new WeakMap,Vn=new WeakMap,Df=new WeakSet,db=function(t,e){var o;const r=m(this,Wc).call(this),i=q8(m(this,Ri).gl,m(this,Ri)._pickingBufferInfo,t*r,e*r),s=i[0]|i[1]<<8|i[2]<<16|i[3]<<24;if(s==0){F(this,Ye,null);return}if(s!==((o=m(this,Ye))==null?void 0:o.uniqueId)&&F(this,Ye,null),m(this,Ye)||m(this,bo).visit(a=>{if(a instanceof Qt){if(a.mark.isPickingParticipant()&&[...a.facetCoords.values()].some(l=>l.containsPoint(t,e))){const l=a.getCollector().findDatumByUniqueId(s);l&&F(this,Ye,{mark:a.mark,datum:l,uniqueId:s})}if(m(this,Ye))return Wa}}),m(this,Ye)){const a=m(this,Ye).mark;this.updateTooltip(m(this,Ye).datum,async l=>{if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const u=(c==null?void 0:c.handler)??"default",f=m(this,jc)[u];if(!f)throw new Error("No such tooltip handler: "+u);return f(l,a,c==null?void 0:c.params)}})}};class Cy{constructor(t){this.globalOptions=t}pushView(t,e){}popView(t){}renderMark(t,e){}getDevicePixelRatio(){return 1}}class vd extends Cy{constructor(e,r){super(e);D(this,kf);D(this,Xc,[0,0,0,0]);D(this,nn);D(this,Zc,[]);D(this,vo);D(this,$c);D(this,el,new Set);D(this,tl);D(this,Qo,1);D(this,nl,{width:0,height:0});if(F(this,$c,r.webGLHelper),F(this,vo,r.framebufferInfo),F(this,Qo,r.devicePixelRatio),F(this,nl,r.canvasSize),r.clearColor){const i=Ar(r.clearColor).rgb();F(this,Xc,[i.r/255,i.g/255,i.b/255,i.opacity])}}getDevicePixelRatio(){return m(this,Qo)}pushView(e,r){m(this,el).add(e),F(this,tl,r)}renderMark(e,r){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const i=e.render(r);i&&m(this,Zc).push({mark:e,callback:i,coords:m(this,tl),clipRect:r.clipRect})}render(){if(m(this,nn)||P(this,kf,gb).call(this),m(this,nn).length==0)return;const e=m(this,$c).gl,r=m(this,vo);r?(e.bindFramebuffer(e.FRAMEBUFFER,r.framebuffer),e.viewport(0,0,r.width,r.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...m(this,Xc)),e.clear(e.COLOR_BUFFER_BIT);for(const i of m(this,el))i.onBeforeRender();for(const i of m(this,nn))i();m(this,vo)&&e.bindFramebuffer(e.FRAMEBUFFER,null)}}Xc=new WeakMap,nn=new WeakMap,Zc=new WeakMap,vo=new WeakMap,$c=new WeakMap,el=new WeakMap,tl=new WeakMap,Qo=new WeakMap,nl=new WeakMap,kf=new WeakSet,gb=function(){F(this,nn,[]);let e=!0,r=!0;const i=a=>()=>{e&&a()},s=a=>()=>{e&&r&&a()},o=bl(m(this,Zc).reverse(),a=>a.mark);for(const[a,l]of[...o.entries()].reverse()){if(!a.isReady())continue;m(this,nn).push(()=>{e=a.unitView.getEffectiveOpacity()>0}),m(this,nn).push(...a.prepareRender(this.globalOptions).map(u=>i(u)));let c;for(const u of l){const f=u.coords;f.equals(c)||m(this,nn).push(i(()=>{r=a.setViewport(m(this,nl),m(this,Qo),f,u.clipRect)})),m(this,nn).push(s(u.callback)),c=u.coords}}};class TR extends Cy{constructor(...t){super({}),this.contexts=t}pushView(t,e){for(const r of this.contexts)r.pushView(t,e)}popView(t){for(const e of this.contexts)e.popView(t)}renderMark(t,e){for(const r of this.contexts)r.renderMark(t,e)}}class PR{constructor({viewRoot:t,glHelper:e,getBackground:r,broadcast:i,onLayoutComputed:s}){D(this,rl);D(this,Ti);D(this,il);D(this,So);D(this,sl);D(this,Pi);D(this,Li);D(this,Oi);F(this,rl,t),F(this,Ti,e),F(this,il,r),F(this,So,i),F(this,sl,s),F(this,Pi,void 0),F(this,Li,void 0),F(this,Oi,!1)}computeLayout(){const t=m(this,rl);if(!t)return;m(this,So).call(this,"layout");const e=m(this,Ti).getLogicalCanvasSize();if(isNaN(e.width)||isNaN(e.height)){console.log(`NaN in canvas size: ${e.width}x${e.height}. Skipping computeLayout().`);return}const r={webGLHelper:m(this,Ti),canvasSize:e,devicePixelRatio:window.devicePixelRatio??1};F(this,Pi,new vd({picking:!1},{...r,clearColor:m(this,il).call(this)})),F(this,Li,new vd({picking:!0},{...r,framebufferInfo:m(this,Ti)._pickingBufferInfo})),t.render(new TR(m(this,Pi),m(this,Li)),St.create(0,0,e.width,e.height)),m(this,sl).call(this),m(this,So).call(this,"layoutComputed")}renderAll(){var t;(t=m(this,Pi))==null||t.render(),F(this,Oi,!0)}renderPickingFramebuffer(){m(this,Oi)&&(m(this,Li).render(),F(this,Oi,!1))}}rl=new WeakMap,Ti=new WeakMap,il=new WeakMap,So=new WeakMap,sl=new WeakMap,Pi=new WeakMap,Li=new WeakMap,Oi=new WeakMap;function LR(n){const t=o=>{throw new Error("ViewContext."+o+" is not configured.")},e={dataFlow:n.dataFlow??t("dataFlow"),glHelper:n.glHelper??t("glHelper"),animator:n.animator??t("animator"),genomeStore:n.genomeStore,fontManager:n.fontManager??t("fontManager"),createOrImportView:async function(o,a,l,c,u){const f=n.createOrImportViewWithContext;return f?f(e,o,a,l,c,u):Promise.reject(new Error("ViewContext.createOrImportView is not configured."))}},r=["requestLayoutReflow","updateTooltip","getNamedDataFromProvider","getCurrentHover","setDataLoadingStatus","addKeyboardListener","addBroadcastListener","removeBroadcastListener","highlightView","isViewConfiguredVisible","isViewSpec"],i=n,s=e;for(const o of r)s[o]=i[o]??(()=>t(o));return e}function OR({glHelper:n,viewRoot:t,logicalWidth:e,logicalHeight:r,devicePixelRatio:i,clearColor:s="white"}){e??(e=n.getLogicalCanvasSize().width),r??(r=n.getLogicalCanvasSize().height),i??(i=window.devicePixelRatio??1);const o=n.gl,a=Math.floor(e*i),l=Math.floor(r*i),c=h1(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],a,l),u=new vd({picking:!1},{webGLHelper:n,canvasSize:{width:e,height:r},devicePixelRatio:i,clearColor:s,framebufferInfo:c});return t.render(u,St.create(0,0,e,r)),u.render(),K8(o,c,"image/png")}CA("fasta",HM);class yy{constructor(t,e,r={}){D(this,Me);D(this,Do,[]);D(this,Ui);D(this,ko);D(this,Fo);D(this,Gi);D(this,xt);D(this,ol,new Yv);D(this,zi,new mp);D(this,Mo,new mp);this.container=t,this.options=r,r.inputBindingContainer??(r.inputBindingContainer="default"),this.spec=e,this.viewFactory=new vR,this.namedDataProviders=[],this.animator=new TM(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this.tooltipHandlers={default:XM,refseqgene:_M,...r.tooltipHandlers??{}},this.viewRoot=void 0,F(this,Fo,new IQ(t,r)),this.dpr=window.devicePixelRatio}registerNamedDataProvider(t){this.namedDataProviders.unshift(t)}getNamedDataFromProvider(t){for(const e of this.namedDataProviders){const r=e(t);if(r)return r}}updateNamedData(t,e){const r=this.viewRoot.context.dataFlow.findNamedDataSource(t);if(!r)throw new Error("No such named data source: "+t);r.dataSource.updateDynamicData(e),this.animator.requestRender()}addEventListener(t,e){m(this,zi).add(t,e)}removeEventListener(t,e){m(this,zi).remove(t,e)}broadcast(t,e){const r={type:t,payload:e};this.viewRoot.visit(i=>i.handleBroadcast(r)),m(this,Mo).emit(t,r)}destroy(){const t=m(this,Me,Of);for(this.container.classList.remove("genome-spy"),t.classList.remove("loading"),m(this,ol).removeAll(),m(this,Do).forEach(e=>e()),m(this,xt).finalize(),m(this,Fo).remove();this.container.firstChild;)this.container.firstChild.remove()}async launch(){var t,e;try{return P(this,Me,Cb).call(this),await P(this,Me,yb).call(this),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),!0}catch(r){const i=`${r.view?`At "${r.view.getPathString()}": `:""}${r.toString()}`;return console.error(r.stack),((e=(t=this.options).onError)==null?void 0:e.call(t,r,this.container))||Nv(this.container,i),!1}finally{m(this,Me,Of).classList.remove("loading"),window.setTimeout(()=>{this.loadingMessageElement.style.display="none"},2e3)}}registerMouseEvents(){m(this,Gi).registerMouseEvents()}updateTooltip(t,e){m(this,Gi).updateTooltip(t,e)}exportCanvas(t,e,r,i="white"){const s=OR({glHelper:m(this,xt),viewRoot:this.viewRoot,logicalWidth:t,logicalHeight:e,devicePixelRatio:r,clearColor:i});return this.computeLayout(),this.renderAll(),s}getLogicalCanvasSize(){return m(this,xt).getLogicalCanvasSize()}computeLayout(){m(this,Ui).computeLayout()}renderAll(){m(this,Ui).renderAll()}renderPickingFramebuffer(){m(this,Ui).renderPickingFramebuffer()}getSearchableViews(){const t=[];return this.viewRoot.visit(e=>{e instanceof Qt&&e.getDataAccessor("search")&&t.push(e)}),t}getNamedScaleResolutions(){const t=new Map;return this.viewRoot.visit(e=>{for(const r of Object.values(e.resolutions.scale))r.name&&t.set(r.name,r)}),t}}Do=new WeakMap,Ui=new WeakMap,ko=new WeakMap,Fo=new WeakMap,Gi=new WeakMap,xt=new WeakMap,ol=new WeakMap,zi=new WeakMap,Mo=new WeakMap,Me=new WeakSet,Of=function(){return this.container.querySelector(".canvas-wrapper")},pb=function(){m(this,Fo).initialize(this.viewRoot)},mb=function(){const t=this.viewRoot.paramMediator.allocateSetter("devicePixelRatio",this.dpr),e=()=>{m(this,xt).invalidateSize(),this.dpr=window.devicePixelRatio,t(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){const s=new ResizeObserver(e);s.observe(this.container),m(this,Do).push(()=>s.disconnect())}let r=null;const i=()=>{r!=null&&(r(),e());const s=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);s.addEventListener("change",i),r=()=>{s.removeEventListener("change",i)}};i(),r&&m(this,Do).push(r)},Cb=function(){const{canvasWrapper:t,loadingMessageElement:e,loadingIndicatorsElement:r,tooltip:i}=Rv(this.container);F(this,xt,new _8(t,()=>this.viewRoot?u5(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??"default"})),this.loadingMessageElement=e,this.loadingIndicatorsElement=r,this.tooltip=i,F(this,ko,new zv(r))},yb=async function(){await P(this,Me,wb).call(this);const t=P(this,Me,Ib).call(this);await P(this,Me,Eb).call(this,t),await MM(this.viewRoot,t.dataFlow,t.fontManager,e=>this.broadcast("dataFlowBuilt",e)),P(this,Me,bb).call(this,t)},wb=async function(){this.spec.genome&&(this.genomeStore=new PM(this.spec.baseUrl),await this.genomeStore.initialize(this.spec.genome))},Ib=function(){return LR({dataFlow:new K2,glHelper:m(this,xt),animator:this.animator,genomeStore:this.genomeStore,fontManager:new UM(m(this,xt)),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>m(this,Gi).getCurrentHover(),setDataLoadingStatus:(t,e,r)=>m(this,ko).setDataLoadingStatus(t,e,r),addKeyboardListener:(t,e)=>{m(this,ol).add(t,e)},addBroadcastListener:(t,e)=>m(this,Mo).add(t,e),removeBroadcastListener:(t,e)=>m(this,Mo).remove(t,e),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:t=>this.viewFactory.isViewSpec(t),createOrImportViewWithContext:(t,e,r,i,s,o)=>this.viewFactory.createOrImportView(e,t,r,i,s,o),highlightView:Hv(this.container)})},Eb=async function(t){const e=this.spec;e.datasets&&this.registerNamedDataProvider(r=>e.datasets[r]),this.viewRoot=await t.createOrImportView(e,null,null,gy),m(this,Me,Of).style.flexGrow=this.viewRoot.getSize().height.grow>0?"1":"0",P(this,Me,pb).call(this),ZM(this.viewRoot),ny(this.viewRoot),m(this,xt).invalidateSize(),F(this,Ui,new PR({viewRoot:this.viewRoot,glHelper:m(this,xt),getBackground:()=>this.spec.background,broadcast:this.broadcast.bind(this),onLayoutComputed:()=>m(this,ko).updateLayout()})),t.requestLayoutReflow=this.computeLayout.bind(this),P(this,Me,mb).call(this)},bb=function(t){t.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>Gu(e,"size")),m(this,xt).invalidateSize(),F(this,Gi,new NR({viewRoot:this.viewRoot,glHelper:m(this,xt),tooltip:this.tooltip,animator:this.animator,emitEvent:m(this,zi).emit.bind(m(this,zi)),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr}))};const UR="data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e",GR="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e";async function zR(n,t,e={}){let r;if(Ce(n)){if(r=document.querySelector(n),!r)throw new Error(`No such element: ${n}`)}else if(n instanceof HTMLElement)r=n;else throw new Error(`Invalid element: ${n}`);let i;try{const s=et(t)?t:await wy(t);if(s.baseUrl??(s.baseUrl=""),s.width??(s.width="container"),s.padding??(s.padding=10),r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new yy(r,s,e),HR(i,e),await i.launch()}catch(s){r.innerText=s.toString(),console.error(s)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(s,o){i.addEventListener(s,o)},removeEventListener(s,o){i.removeEventListener(s,o)},getScaleResolutionByName(s){return i.getNamedScaleResolutions().get(s)},updateNamedData:i.updateNamedData.bind(i),exportCanvas:i.exportCanvas.bind(i)}}function HR(n,t){t.namedDataProvider&&n.registerNamedDataProvider(t.namedDataProvider)}async function wy(n){let t;try{const e=await fetch(n);if(!e.ok)throw new Error(`${e.status} ${e.statusText}`);t=await e.json()}catch(e){throw new Error(`Could not load or parse configuration: ${n}, reason: ${e.message}`)}if(!t.baseUrl){const e=n.match(/^[^?#]*\//);t.baseUrl=e&&e[0]||"./"}return t}class YR{constructor(t){this.blob=t}async read(t,e=0){if(!t)return new Uint8Array(0);const r=e,i=r+t,s=this.blob.slice(r,i);return s.bytes?s.bytes():new Uint8Array(await s.arrayBuffer())}async readFile(t){const e=typeof t=="string"?t:t==null?void 0:t.encoding;if(e==="utf8")return this.blob.text();if(e)throw new Error(`unsupported encoding: ${e}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}function _R(n){return(typeof n=="object"&&n!==null&&"message"in n?n.message:`${n}`).replace(/\.$/,"")}class pn{constructor(t,e={}){this.baseOverrides={},this.url=t;const r=e.fetch||globalThis.fetch.bind(globalThis);e.overrides&&(this.baseOverrides=e.overrides),this.fetchImplementation=r}async fetch(t,e){const r=s=>new Error(`${_R(s)} fetching ${t}`,{cause:s});let i;try{i=await this.fetchImplementation(t,e)}catch(s){if(`${s}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${t} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(t,{...e,cache:"reload"})}catch(o){throw r(o)}}else throw r(s)}return i}async read(t,e,r={}){if(t===0)return new Uint8Array(0);const{headers:i={},signal:s,overrides:o={}}=r;t<1/0?i.range=`bytes=${e}-${e+t-1}`:t===1/0&&e!==0&&(i.range=`bytes=${e}-`);const a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(a.status===200&&e===0||a.status===206){const l=a.headers.get("content-range"),c=/\/(\d+)$/.exec(l||"");c!=null&&c[1]&&(this._stat={size:parseInt(c[1],10)});const u=a.bytes?await a.bytes():new Uint8Array(await a.arrayBuffer());return u.byteLength<=t?u:u.subarray(0,t)}throw new Error(a.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${a.status} fetching ${this.url}`)}async readFile(t={}){let e,r;if(typeof t=="string")e=t,r={};else{e=t.encoding;const{encoding:l,...c}=t;r=c}const{headers:i={},signal:s,overrides:o={}}=r,a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(e==="utf8")return a.text();if(e)throw new Error(`unsupported encoding: ${e}`);return a.bytes?a.bytes():new Uint8Array(await a.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw new Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}class at{readFile(){throw new Error("unimplemented")}read(){throw new Error("unimplemented")}close(){throw new Error("unimplemented")}}const tc=Object.freeze(Object.defineProperty({__proto__:null,BlobFile:YR,LocalFile:at,RemoteFile:pn},Symbol.toStringTag,{value:"Module"})),Iy=65536,VR=Iy*Iy;function Qd(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*VR+(e>>>0)}const Ku=1;function Ey(n,t,e){const r=t[Ku],i=e?e[Ku]:1/0;return r<=n&&i>n?0:r<n?-1:1}class JR{constructor({filehandle:t}){j(this,"filehandle");j(this,"index");this.filehandle=t}_getIndex(){return this.index||(this.index=this._readIndex().catch(t=>{throw this.index=void 0,t})),this.index}async _readIndex(){const t=await this.filehandle.read(8,0),e=Qd(t);if(!e)return[[0,0]];const r=new Array(e+1);r[0]=[0,0];const i=16*e;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");const s=await this.filehandle.read(i,8);for(let o=0;o<e;o+=1){const a=Qd(s,o*16),l=Qd(s,o*16+8);r[o+1]=[a,l]}return r}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(t,e){const r=e+t;if(t===0)return[];const i=await this._getIndex(),s=[];let o=0,a=i.length-1,l=Math.floor(i.length/2),c=Ey(e,i[l],i[l+1]);for(;c!==0;)c>0?a=l-1:c<0&&(o=l+1),l=Math.ceil((a-o)/2)+o,c=Ey(e,i[l],i[l+1]);s.push(i[l]);let u=l+1;for(;u<i.length&&(s.push(i[u]),!(i[u][Ku]>=r));u+=1);return s[s.length-1][Ku]<r&&s.push([]),s}}var by=0,Sd=2,ju=4,hi=0,Wu=1,qR=2,KR=-5;function jR(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function WR(n){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var r in e)jR(e,r)&&(n[r]=e[r])}}return n}function xy(n,t){return n.length===t?n:n.subarray?n.subarray(0,t):(n.length=t,n)}var nc={arraySet:function(n,t,e,r,i){if(t.subarray&&n.subarray){n.set(t.subarray(e,e+r),i);return}for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){var t,e,r,i,s,o;for(r=0,t=0,e=n.length;t<e;t++)r+=n[t].length;for(o=new Uint8Array(r),i=0,t=0,e=n.length;t<e;t++)s=n[t],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},rc={arraySet:function(n,t,e,r,i){for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let ys=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return ys=()=>n,n},wr=(n,t,e,r,i)=>(wr=ys()?nc.arraySet:rc.arraySet,wr(n,t,e,r,i)),Dd=n=>(Dd=ys()?nc.flattenChunks:rc.flattenChunks,Dd(n)),ws=n=>(ws=ys()?nc.Buf8:rc.Buf8,ws(n)),Is=n=>(Is=ys()?nc.Buf16:rc.Buf16,Is(n)),Es=n=>(Es=ys()?nc.Buf32:rc.Buf32,Es(n)),By=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return By=()=>n,n},vy=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return vy=()=>n,n},kd=function(n){for(var t=ws(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,kd=r=>t[r],t[n]};function Qy(n){var t,e,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(a),s=0,i=0;s<a;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),e<128?t[s++]=e:e<2048?(t[s++]=192|e>>>6,t[s++]=128|e&63):e<65536?(t[s++]=224|e>>>12,t[s++]=128|e>>>6&63,t[s++]=128|e&63):(t[s++]=240|e>>>18,t[s++]=128|e>>>12&63,t[s++]=128|e>>>6&63,t[s++]=128|e&63);return t}function XR(n,t){if(t<65534&&(n.subarray&&vy()||!n.subarray&&By()))return String.fromCharCode.apply(null,xy(n,t));for(var e="",r=0;r<t;r++)e+=String.fromCharCode(n[r]);return e}function ZR(n){for(var t=new Uint8Array(n.length),e=0,r=t.length;e<r;e++)t[e]=n.charCodeAt(e);return t}function $R(n,t){var e,r,i,s,o=t||n.length,a=new Array(o*2);for(r=0,e=0;e<o;){if(i=n[e++],i<128){a[r++]=i;continue}if(s=kd(i),s>4){a[r++]=65533,e+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&e<o;)i=i<<6|n[e++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return XR(a,r)}function eN(n,t){var e;for(t=t||n.length,t>n.length&&(t=n.length),e=t-1;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+kd(n[e])>t?e:t}function tN(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function Fd(n,t,e,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;e!==0;){o=e>2e3?2e3:e,e-=o;do i=i+t[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function nN(){for(var n,t=[],e=0;e<256;e++){n=e;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t}let Sy=function(){const n=nN();return Sy=()=>n,n};function mn(n,t,e,r){var i=Sy(),s=r+e;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^t[o])&255];return n^-1}var Xu=30,rN=12;function iN(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,g,p,C,w,b,y,x,B,E,Q,k,S;e=n.state,r=n.next_in,k=n.input,i=r+(n.avail_in-5),s=n.next_out,S=n.output,o=s-(t-n.avail_out),a=s+(n.avail_out-257),l=e.dmax,c=e.wsize,u=e.whave,f=e.wnext,h=e.window,A=e.hold,d=e.bits,g=e.lencode,p=e.distcode,C=(1<<e.lenbits)-1,w=(1<<e.distbits)-1;e:do{d<15&&(A+=k[r++]<<d,d+=8,A+=k[r++]<<d,d+=8),b=g[A&C];t:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y===0)S[s++]=b&65535;else if(y&16){x=b&65535,y&=15,y&&(d<y&&(A+=k[r++]<<d,d+=8),x+=A&(1<<y)-1,A>>>=y,d-=y),d<15&&(A+=k[r++]<<d,d+=8,A+=k[r++]<<d,d+=8),b=p[A&w];n:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y&16){if(B=b&65535,y&=15,d<y&&(A+=k[r++]<<d,d+=8,d<y&&(A+=k[r++]<<d,d+=8)),B+=A&(1<<y)-1,B>l){n.msg="invalid distance too far back",e.mode=Xu;break e}if(A>>>=y,d-=y,y=s-o,B>y){if(y=B-y,y>u&&e.sane){n.msg="invalid distance too far back",e.mode=Xu;break e}if(E=0,Q=h,f===0){if(E+=c-y,y<x){x-=y;do S[s++]=h[E++];while(--y);E=s-B,Q=S}}else if(f<y){if(E+=c+f-y,y-=f,y<x){x-=y;do S[s++]=h[E++];while(--y);if(E=0,f<x){y=f,x-=y;do S[s++]=h[E++];while(--y);E=s-B,Q=S}}}else if(E+=f-y,y<x){x-=y;do S[s++]=h[E++];while(--y);E=s-B,Q=S}for(;x>2;)S[s++]=Q[E++],S[s++]=Q[E++],S[s++]=Q[E++],x-=3;x&&(S[s++]=Q[E++],x>1&&(S[s++]=Q[E++]))}else{E=s-B;do S[s++]=S[E++],S[s++]=S[E++],S[s++]=S[E++],x-=3;while(x>2);x&&(S[s++]=S[E++],x>1&&(S[s++]=S[E++]))}}else if((y&64)===0){b=p[(b&65535)+(A&(1<<y)-1)];continue n}else{n.msg="invalid distance code",e.mode=Xu;break e}break}}else if((y&64)===0){b=g[(b&65535)+(A&(1<<y)-1)];continue t}else if(y&32){e.mode=rN;break e}else{n.msg="invalid literal/length code",e.mode=Xu;break e}break}}while(r<i&&s<a);x=d>>3,r-=x,d-=x<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),e.hold=A,e.bits=d}var bs=15,Dy=852,ky=592,Fy=0,Md=1,My=2,sN=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],oN=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],aN=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],cN=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function ic(n,t,e,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,g=0,p=0,C=0,w=0,b,y,x,B,E,Q=null,k=0,S,T=Is(bs+1),N=Is(bs+1),U=null,H=0,J,_,Z;for(c=0;c<=bs;c++)T[c]=0;for(u=0;u<r;u++)T[t[e+u]]++;for(A=l,h=bs;h>=1&&T[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&T[f]===0;f++);for(A<f&&(A=f),p=1,c=1;c<=bs;c++)if(p<<=1,p-=T[c],p<0)return-1;if(p>0&&(n===Fy||h!==1))return-1;for(N[1]=0,c=1;c<bs;c++)N[c+1]=N[c]+T[c];for(u=0;u<r;u++)t[e+u]!==0&&(o[N[t[e+u]]++]=u);if(n===Fy?(Q=U=o,S=19):n===Md?(Q=sN,k-=257,U=oN,H-=257,S=256):(Q=aN,U=cN,S=-1),w=0,u=0,c=f,E=s,d=A,g=0,x=-1,C=1<<A,B=C-1,n===Md&&C>Dy||n===My&&C>ky)return 1;for(;;){J=c-g,o[u]<S?(_=0,Z=o[u]):o[u]>S?(_=U[H+o[u]],Z=Q[k+o[u]]):(_=96,Z=0),b=1<<c-g,y=1<<d,f=y;do y-=b,i[E+(w>>g)+y]=J<<24|_<<16|Z|0;while(y!==0);for(b=1<<c-1;w&b;)b>>=1;if(b!==0?(w&=b-1,w+=b):w=0,u++,--T[c]===0){if(c===h)break;c=t[e+o[u]]}if(c>A&&(w&B)!==x){for(g===0&&(g=A),E+=f,d=c-g,p=1<<d;d+g<h&&(p-=T[d+g],!(p<=0));)d++,p<<=1;if(C+=1<<d,n===Md&&C>Dy||n===My&&C>ky)return 1;x=w&B,i[x]=A<<24|d<<16|E-s|0}}return w!==0&&(i[E+w]=c-g<<24|64<<16|0),a.bits=A,0}var lN=0,Ry=1,Ny=2,Ty=4,di=0,uN=1,fN=2,Lt=-2,Py=-3,Ly=-4,AN=-5,Oy=8,Uy=1,Gy=2,zy=3,Hy=4,Yy=5,_y=6,Vy=7,Jy=8,qy=9,Ky=10,Zu=11,On=12,Rd=13,jy=14,Nd=15,Wy=16,Xy=17,Zy=18,$y=19,$u=20,ef=21,ew=22,tw=23,nw=24,rw=25,iw=26,Td=27,sw=28,ow=29,ve=30,aw=31,hN=32,dN=852,gN=592;function cw(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function pN(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Is(320),this.work=Is(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function mN(n){var t;return!n||!n.state?Lt:(t=n.state,n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=Uy,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Es(dN),t.distcode=t.distdyn=Es(gN),t.sane=1,t.back=-1,di)}function CN(n){var t;return!n||!n.state?Lt:(t=n.state,t.wsize=0,t.whave=0,t.wnext=0,mN(n))}function yN(n,t){var e,r;return!n||!n.state||(r=n.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Lt:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,CN(n))}function wN(n,t){var e,r;return n?(r=new pN,n.state=r,r.window=null,e=yN(n,t),e!==di&&(n.state=null),e):Lt}var lw=!0,Pd,Ld;function IN(n){if(lw){var t;for(Pd=Es(512),Ld=Es(32),t=0;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(ic(Ry,n.lens,0,288,Pd,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;ic(Ny,n.lens,0,32,Ld,0,n.work,{bits:5}),lw=!1}n.lencode=Pd,n.lenbits=9,n.distcode=Ld,n.distbits=5}function uw(n,t,e,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=ws(s.wsize)),r>=s.wsize?(wr(s.window,t,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),wr(s.window,t,e-r,i,s.wnext),r-=i,r?(wr(s.window,t,e-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function EN(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,g,p=0,C,w,b,y,x,B,E,Q,k=ws(4),S,T,N=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Lt;e=n.state,e.mode===On&&(e.mode=Rd),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,f=a,h=l,Q=di;e:for(;;)switch(e.mode){case Uy:if(e.wrap===0){e.mode=Rd;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.wrap&2&&c===35615){e.check=0,k[0]=c&255,k[1]=c>>>8&255,e.check=mn(e.check,k,2,0),c=0,u=0,e.mode=Gy;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",e.mode=ve;break}if((c&15)!==Oy){n.msg="unknown compression method",e.mode=ve;break}if(c>>>=4,u-=4,E=(c&15)+8,e.wbits===0)e.wbits=E;else if(E>e.wbits){n.msg="invalid window size",e.mode=ve;break}e.dmax=1<<E,n.adler=e.check=1,e.mode=c&512?Ky:On,c=0,u=0;break;case Gy:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.flags=c,(e.flags&255)!==Oy){n.msg="unknown compression method",e.mode=ve;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=ve;break}e.head&&(e.head.text=c>>8&1),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,e.check=mn(e.check,k,2,0)),c=0,u=0,e.mode=zy;case zy:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.time=c),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,k[2]=c>>>16&255,k[3]=c>>>24&255,e.check=mn(e.check,k,4,0)),c=0,u=0,e.mode=Hy;case Hy:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.xflags=c&255,e.head.os=c>>8),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,e.check=mn(e.check,k,2,0)),c=0,u=0,e.mode=Yy;case Yy:if(e.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length=c,e.head&&(e.head.extra_len=c),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,e.check=mn(e.check,k,2,0)),c=0,u=0}else e.head&&(e.head.extra=null);e.mode=_y;case _y:if(e.flags&1024&&(A=e.length,A>a&&(A=a),A&&(e.head&&(E=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),wr(e.head.extra,r,s,A,E)),e.flags&512&&(e.check=mn(e.check,r,A,s)),a-=A,s+=A,e.length-=A),e.length))break e;e.length=0,e.mode=Vy;case Vy:if(e.flags&2048){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.name+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=mn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=Jy;case Jy:if(e.flags&4096){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.comment+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=mn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.comment=null);e.mode=qy;case qy:if(e.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.check&65535)){n.msg="header crc mismatch",e.mode=ve;break}c=0,u=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=On;break;case Ky:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=e.check=cw(c),c=0,u=0,e.mode=Zu;case Zu:if(e.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,fN;n.adler=e.check=1,e.mode=On;case On:case Rd:if(e.last){c>>>=u&7,u-=u&7,e.mode=Td;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(e.last=c&1,c>>>=1,u-=1,c&3){case 0:e.mode=jy;break;case 1:IN(e),e.mode=$u;break;case 2:e.mode=Xy;break;case 3:n.msg="invalid block type",e.mode=ve}c>>>=2,u-=2;break;case jy:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",e.mode=ve;break}e.length=c&65535,c=0,u=0,e.mode=Nd;case Nd:e.mode=Wy;case Wy:if(A=e.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;wr(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,e.length-=A;break}e.mode=On;break;case Xy:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.nlen=(c&31)+257,c>>>=5,u-=5,e.ndist=(c&31)+1,c>>>=5,u-=5,e.ncode=(c&15)+4,c>>>=4,u-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=ve;break}e.have=0,e.mode=Zy;case Zy:for(;e.have<e.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.lens[N[e.have++]]=c&7,c>>>=3,u-=3}for(;e.have<19;)e.lens[N[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,S={bits:e.lenbits},Q=ic(lN,e.lens,0,19,e.lencode,0,e.work,S),e.lenbits=S.bits,Q){n.msg="invalid code lengths set",e.mode=ve;break}e.have=0,e.mode=$y;case $y:for(;e.have<e.nlen+e.ndist;){for(;p=e.lencode[c&(1<<e.lenbits)-1],C=p>>>24,w=p>>>16&255,b=p&65535,!(C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(b<16)c>>>=C,u-=C,e.lens[e.have++]=b;else{if(b===16){for(T=C+2;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=C,u-=C,e.have===0){n.msg="invalid bit length repeat",e.mode=ve;break}E=e.lens[e.have-1],A=3+(c&3),c>>>=2,u-=2}else if(b===17){for(T=C+3;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=C,u-=C,E=0,A=3+(c&7),c>>>=3,u-=3}else{for(T=C+7;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=C,u-=C,E=0,A=11+(c&127),c>>>=7,u-=7}if(e.have+A>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=ve;break}for(;A--;)e.lens[e.have++]=E}}if(e.mode===ve)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=ve;break}if(e.lenbits=9,S={bits:e.lenbits},Q=ic(Ry,e.lens,0,e.nlen,e.lencode,0,e.work,S),e.lenbits=S.bits,Q){n.msg="invalid literal/lengths set",e.mode=ve;break}if(e.distbits=6,e.distcode=e.distdyn,S={bits:e.distbits},Q=ic(Ny,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,S),e.distbits=S.bits,Q){n.msg="invalid distances set",e.mode=ve;break}e.mode=$u;case $u:e.mode=ef;case ef:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,iN(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,e.mode===On&&(e.back=-1);break}for(e.back=0;p=e.lencode[c&(1<<e.lenbits)-1],C=p>>>24,w=p>>>16&255,b=p&65535,!(C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(w&&(w&240)===0){for(y=C,x=w,B=b;p=e.lencode[B+((c&(1<<y+x)-1)>>y)],C=p>>>24,w=p>>>16&255,b=p&65535,!(y+C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=C,u-=C,e.back+=C,e.length=b,w===0){e.mode=iw;break}if(w&32){e.back=-1,e.mode=On;break}if(w&64){n.msg="invalid literal/length code",e.mode=ve;break}e.extra=w&15,e.mode=ew;case ew:if(e.extra){for(T=e.extra;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=tw;case tw:for(;p=e.distcode[c&(1<<e.distbits)-1],C=p>>>24,w=p>>>16&255,b=p&65535,!(C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((w&240)===0){for(y=C,x=w,B=b;p=e.distcode[B+((c&(1<<y+x)-1)>>y)],C=p>>>24,w=p>>>16&255,b=p&65535,!(y+C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=C,u-=C,e.back+=C,w&64){n.msg="invalid distance code",e.mode=ve;break}e.offset=b,e.extra=w&15,e.mode=nw;case nw:if(e.extra){for(T=e.extra;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.offset+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=ve;break}e.mode=rw;case rw:if(l===0)break e;if(A=h-l,e.offset>A){if(A=e.offset-A,A>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=ve;break}A>e.wnext?(A-=e.wnext,d=e.wsize-A):d=e.wnext-A,A>e.length&&(A=e.length),g=e.window}else g=i,d=o-e.offset,A=e.length;A>l&&(A=l),l-=A,e.length-=A;do i[o++]=g[d++];while(--A);e.length===0&&(e.mode=ef);break;case iw:if(l===0)break e;i[o++]=e.length,l--,e.mode=ef;break;case Td:if(e.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,e.total+=h,h&&(n.adler=e.check=e.flags?mn(e.check,i,h,o-h):Fd(e.check,i,h,o-h)),h=l,(e.flags?c:cw(c))!==e.check){n.msg="incorrect data check",e.mode=ve;break}c=0,u=0}e.mode=sw;case sw:if(e.wrap&&e.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=ve;break}c=0,u=0}e.mode=ow;case ow:Q=uN;break e;case ve:Q=Py;break e;case aw:return Ly;case hN:default:return Lt}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,(e.wsize||h!==n.avail_out&&e.mode<ve&&(e.mode<Td||t!==Ty))&&uw(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,e.total+=h,e.wrap&&h&&(n.adler=e.check=e.flags?mn(e.check,i,h,n.next_out-h):Fd(e.check,i,h,n.next_out-h)),n.data_type=e.bits+(e.last?64:0)+(e.mode===On?128:0)+(e.mode===$u||e.mode===Nd?256:0),(f===0&&h===0||t===Ty)&&Q===di&&(Q=AN),Q}function bN(n){if(!n||!n.state)return Lt;var t=n.state;return t.window&&(t.window=null),n.state=null,di}function xN(n,t){var e;return!n||!n.state||(e=n.state,(e.wrap&2)===0)?Lt:(e.head=t,t.done=!1,di)}function fw(n,t){var e=t.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==Zu)?Lt:r.mode===Zu&&(i=1,i=Fd(i,t,e,0),i!==r.check)?Py:(s=uw(n,t,e,e),s?(r.mode=aw,Ly):(r.havedict=1,di))}const Od={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function BN(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var Ud=Object.prototype.toString;let Aw=class eg{constructor(t){if(!(this instanceof eg))return new eg(t);this.options=WR({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new BN,this.strm.avail_out=0;var r=wN(this.strm,e.windowBits);if(r!==hi)throw new Error(Od[r]);if(this.header=new tN,xN(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=Qy(e.dictionary):Ud.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=fw(this.strm,e.dictionary),r!==hi)))throw new Error(Od[r])}push(t,e){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?ju:by,typeof t=="string"?r.input=ZR(t):Ud.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=ws(i),r.next_out=0,r.avail_out=i),o=EN(r,by),o===qR&&s&&(typeof s=="string"?f=Qy(s):Ud.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=fw(this.strm,f)),o===KR&&h===!0&&(o=hi,h=!1),o!==Wu&&o!==hi)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===Wu||r.avail_in===0&&(a===ju||a===Sd))&&(this.options.to==="string"?(l=eN(r.output,r.next_out),c=r.next_out-l,u=$R(r.output,l),r.next_out=c,r.avail_out=i-c,c&&wr(r.output,r.output,l,c,0),this.onData(u)):this.onData(xy(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==Wu);return o===Wu&&(a=ju),a===ju?(o=bN(this.strm),this.onEnd(o),this.ended=!0,o===hi):(a===Sd&&(this.onEnd(hi),r.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===hi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=Dd(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}};function vN(n,t){var e=new Aw(t);if(e.push(n,!0),e.err)throw e.msg||Od[e.err];return e.result}function QN(n,t){return t=t||{},t.raw=!0,vN(n,t)}function SN(n){let t=0;for(const e of n)t+=e.length;return t}function hw(n,t){const e=new Uint8Array(t??SN(n));let r=0;for(const i of n)e.set(i,r),r+=i.length;return e}async function DN(n){try{let t,e=0,r;const i=[];let s=0;do{const o=n.subarray(e);if(r=new Aw(void 0),{strm:t}=r,r.push(o,Sd),r.err)throw new Error(r.msg);e+=t.next_in;const a=r.result;i.push(a),s+=a.length}while(t.avail_in);return hw(i,s)}catch(t){throw/incorrect header check/.exec(`${t}`)?new Error("problem decompressing block: incorrect gzip header check"):t}}class dw{constructor({filehandle:t,gziFilehandle:e}){j(this,"filehandle");j(this,"gzi");this.filehandle=t,this.gzi=new JR({filehandle:e})}async _readAndUncompressBlock(t,e){let r=e;r||(r=(await this.filehandle.stat()).size);const i=r-t,s=await this.filehandle.read(i,t);return DN(s)}async read(t,e){const r=await this.gzi.getRelevantBlocksForRead(t,e),i=[];for(let s=0;s<r.length-1;s+=1){const o=await this._readAndUncompressBlock(r[s][0],r[s+1][0]),[,a]=r[s],l=a>=e?0:e-a,c=Math.min(e+t,a+o.length)-a;l>=0&&l<o.length&&i.push(o.subarray(l,c))}return hw(i)}}function gw(n,t){return n.offset+n.lineBytes*Math.floor(t/n.lineLength)+t%n.lineLength}async function kN(n,t={}){const e=new TextDecoder("utf8");return Object.fromEntries(e.decode(await n.readFile(t)).split(/\r?\n/).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")).map(r=>{var i;if((i=r[0])!=null&&i.startsWith(">"))throw new Error("found > in sequence name, might have supplied FASTA file for the FASTA index");return[r[0],{name:r[0],length:+r[1],start:0,end:+r[1],offset:+r[2],lineLength:+r[3],lineBytes:+r[4]}]}))}class pw{constructor({fasta:t,fai:e,path:r,faiPath:i}){if(t)this.fasta=t;else if(r)this.fasta=new at(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(e)this.fai=e;else if(i)this.fai=new at(i);else if(r)this.fai=new at(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile")}async _getIndexes(t){return this.indexes||(this.indexes=kN(this.fai,t).catch(e=>{throw this.indexes=void 0,e})),this.indexes}async getSequenceNames(t){return Object.keys(await this._getIndexes(t))}async getSequenceSizes(t){const e={},r=await this._getIndexes(t);for(const i of Object.values(r))e[i.name]=i.length;return e}async getSequenceSize(t,e){var i;return(i=(await this._getIndexes(e))[t])==null?void 0:i.length}async hasReferenceSequence(t,e){return!!(await this._getIndexes(e))[t]}async getResiduesByName(t,e,r,i){const s=(await this._getIndexes(i))[t];return s?this._fetchFromIndexEntry(s,e,r,i):void 0}async getSequence(t,e,r,i){return this.getResiduesByName(t,e,r,i)}async _fetchFromIndexEntry(t,e=0,r,i){let s=r;if(e<0)throw new TypeError("regionStart cannot be less than 0");if((s===void 0||s>t.length)&&(s=t.length),e>=s)return"";const o=gw(t,e),a=gw(t,s)-o,c=new TextDecoder("utf8").decode(await this.fasta.read(a,o,i)).replace(/\s+/g,"");if(/[^\x20-\x7e]/.test(c.slice(0,1e3)))throw new Error("Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.");return c}}class FN extends pw{constructor({fasta:t,path:e,fai:r,faiPath:i,gzi:s,gziPath:o}){super({fasta:t,path:e,fai:r,faiPath:i}),t&&s?this.fasta=new dw({filehandle:t,gziFilehandle:s}):e&&o&&(this.fasta=new dw({filehandle:new at(e),gziFilehandle:new at(o)}))}}function mw(n){return n.split(">").filter(t=>/\S/.test(t)).map(t=>{const[e,...r]=t.split(`
719
- `),[i,...s]=e.split(" "),o=r.join("").replace(/\s/g,"");return{id:i,description:s.join(" "),sequence:o}})}class MN{constructor({fasta:t,path:e}){if(t)this.fasta=t;else if(e)this.fasta=new at(e);else throw new Error("Need to pass fasta or path");this.data=this.fasta.readFile().then(r=>{const s=new TextDecoder("utf8").decode(r);return mw(s)})}async fetch(t,e,r){const s=(await this.data).find(a=>a.id===t),o=r-e;if(!s)throw new Error(`no sequence with id ${t} exists`);return s.sequence.slice(e,o)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}const RN=Object.freeze(Object.defineProperty({__proto__:null,BgzipIndexedFasta:FN,FetchableSmallFasta:MN,IndexedFasta:pw,parseSmallFasta:mw},Symbol.toStringTag,{value:"Module"})),Cw=BigInt(32);function NN(n,t,e){const r=+!!e,i=+!e;return BigInt(n.getInt32(t,e)*i+n.getInt32(t+4,e)*r)<<Cw|BigInt(n.getUint32(t,e)*r+n.getUint32(t+4,e)*i)}function TN(n,t,e){const r=n.getUint32(t,e),i=n.getUint32(t+4,e),s=+!!e,o=+!e;return BigInt(r*o+i*s)<<Cw|BigInt(r*s+i*o)}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(n,t){return NN(this,n,t)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(n,t){return TN(this,n,t)});var Gd=function(n,t){return Gd=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])},Gd(n,t)};function zd(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");Gd(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function PN(n,t,e,r){function i(s){return s instanceof e?s:new e(function(o){o(s)})}return new(e||(e=Promise))(function(s,o){function a(u){try{c(r.next(u))}catch(f){o(f)}}function l(u){try{c(r.throw(u))}catch(f){o(f)}}function c(u){u.done?s(u.value):i(u.value).then(a,l)}c((r=r.apply(n,t||[])).next())})}function yw(n,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,i,s,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(u){return l([c,u])}}function l(c){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(e=0)),e;)try{if(r=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,i=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){e.label=c[1];break}if(c[0]===6&&e.label<s[1]){e.label=s[1],s=c;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(c);break}s[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(u){c=[6,u],i=0}finally{r=s=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function sc(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function Hd(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),i,s=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(e=r.return)&&e.call(r)}finally{if(o)throw o.error}}return s}function Yd(n,t,e){if(e||arguments.length===2)for(var r=0,i=t.length,s;r<i;r++)(s||!(r in t))&&(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return n.concat(s||Array.prototype.slice.call(t))}function xs(n){return this instanceof xs?(this.v=n,this):new xs(n)}function LN(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e.apply(n,t||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(A){return function(d){return Promise.resolve(d).then(A,f)}}function a(A,d){r[A]&&(i[A]=function(g){return new Promise(function(p,C){s.push([A,g,p,C])>1||l(A,g)})},d&&(i[A]=d(i[A])))}function l(A,d){try{c(r[A](d))}catch(g){h(s[0][3],g)}}function c(A){A.value instanceof xs?Promise.resolve(A.value.v).then(u,f):h(s[0][2],A)}function u(A){l("next",A)}function f(A){l("throw",A)}function h(A,d){A(d),s.shift(),s.length&&l(s[0][0],s[0][1])}}function ON(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof sc=="function"?sc(n):n[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(s){e[s]=n[s]&&function(o){return new Promise(function(a,l){o=n[s](o),i(a,l,o.done,o.value)})}}function i(s,o,a,l){Promise.resolve(l).then(function(c){s({value:c,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;function ze(n){return typeof n=="function"}function ww(n){var t=function(r){Error.call(r),r.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var _d=ww(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
699
+ `:"";return pe`${l}${o}`}const Dg=class Dg extends jw{constructor(e,r,i,s,o,a){super(e,r,i,s,o,a);S(this,xA);S(this,Fl,new Map);this.spec=e}async initializeChildren(){}getNextAutoName(e){const r=g(this,Fl).get(e)??0;return g(this,Fl).set(e,r+1),e+r}*[Symbol.iterator](){}visit(e){let r;try{r=e(this)}catch(i){throw i.view=this,i}if(r===xr)return r;if(r!==$t){e.beforeChildren&&e.beforeChildren(this);for(const i of this){const s=i.visit(e);if(s===xr)return s}e.afterChildren&&e.afterChildren(this),e.postOrder&&e.postOrder(this)}}findDescendantByPath(e){var i;let r=this;for(let s=0;s<e.length;s++){if(!(r instanceof Dg))return;const o=M(i=r,xA,kx).call(i,e[s]);if(!o)return;if(s===e.length-1)return o;r=o}}findDescendantByName(e){let r;return this.visit(i=>{if(i.name==e)return r=i,xr}),r}getDefaultResolution(e,r){return"shared"}};Fl=new WeakMap,xA=new WeakSet,kx=function(e){for(const r of this)if(r.name===e)return r};let Fc=Dg;function LN(n){UR(n),GR(n)}function C2(n){n.getDescendants().forEach(t=>t.configureViewOpacity())}class y2{constructor(t,e){this.container=t,this.options=e}async addChildSpec(t,e){var h,A;const{specs:r,insertAt:i}=this.options.getChildSpecs(),s=e??r.length,o=((A=(h=this.options).defaultName)==null?void 0:A.call(h,s,t))??this.container.getNextAutoName("child"),a=await this.container.context.createOrImportView(t,this.container,this.container,o);i(s,t);const l=this.options.insertView(a,s);this.options.prepareView&&await this.options.prepareView(a,s,l),C2(a);const c=d=>d.isConfiguredVisible(),{dataSources:u,graphicsPromises:f}=E0(a,this.container.context.dataFlow,c);return await b0(a,u),await g0(f),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow()),a}async removeChildAt(t){const{removeAt:e}=this.options.getChildSpecs();this.options.removeView(t),e(t),this.options.afterRemove&&await this.options.afterRemove(t),this.options.requestLayout!==!1&&(this.container.invalidateSizeCache(),this.container.context.requestLayoutReflow())}}class _s extends Fc{constructor(e,r,i,s,o,a){super(e,r,i,s,o,{layersChildren:!0,...a});S(this,Ml);S(this,Yt,[]);this.spec=e,this.needsAxes={x:!0,y:!0}}async initializeChildren(){D(this,Yt,await Promise.all(this.spec.layer.map(e=>this.context.createOrImportView(e,this,this,this.getNextAutoName("layer"),r=>{if(!D0(r)&&!Q0(r))throw new Ln("LayerView accepts only unit or layer specs as children!",this)}))))}async addChildSpec(e,r){return M(this,Ml,rp).call(this).addChildSpec(e,r)}async removeChildAt(e){await M(this,Ml,rp).call(this).removeChildAt(e)}get children(){return g(this,Yt).slice()}*[Symbol.iterator](){for(const e of g(this,Yt))yield e}render(e,r,i={}){if(super.render(e,r,i),!!this.isConfiguredVisible()){e.pushView(this,r);for(const s of g(this,Yt))s.render(e,r,i);e.popView(this)}}propagateInteractionEvent(e){this.handleInteractionEvent(void 0,e,!0);for(let r=g(this,Yt).length-1;r>=0;r--)if(g(this,Yt)[r].propagateInteractionEvent(e),e.stopped)return;this.handleInteractionEvent(void 0,e,!1)}}Yt=new WeakMap,Ml=new WeakSet,rp=function(){return new y2(this,{getChildSpecs:()=>({specs:this.spec.layer,insertAt:(e,r)=>{this.spec.layer.splice(e,0,r)},removeAt:e=>{this.spec.layer.splice(e,1)}}),insertView:(e,r)=>(e.layoutParent??(e.layoutParent=this),g(this,Yt).splice(r,0,e),e),removeView:e=>{const r=g(this,Yt)[e];if(!r)throw new Error("Child index out of range!");r.disposeSubtree(),g(this,Yt).splice(e,1)},defaultName:()=>this.getNextAutoName("layer")})};class w2{constructor(t,e){this.n=t,this.maxCols=e??1/0}get nRows(){return this.maxCols==1/0?1:Math.ceil(this.n/this.maxCols)}get nCols(){return Math.min(this.n,this.maxCols)}get rowIndices(){const t=[],e=this.nCols,r=this.nRows;for(let i=0;i<r;i++){const s=[];t.push(s);for(let o=0;o<e;o++){const a=i*e+o;a<this.n&&s.push(a)}}return t}get colIndices(){const t=[],e=this.nCols,r=this.nRows;for(let i=0;i<e;i++){const s=[];t.push(s);for(let o=0;o<r;o++){const a=o*e+i;a<this.n&&s.push(a)}}return t}getCellIndex(t,e){let r=0;if(this.maxCols==1/0)r=e==0?t:void 0;else{if(t>=this.maxCols)return;r=e*this.nCols+t}return r<this.n?r:void 0}getCellCoords(t){if(!(t<0||t>=this.n))return[t%this.nCols,Math.floor(t/this.nCols)]}}function On(n){return()=>n}const rn=class rn{static create(t,e,r,i){return new rn(On(t),On(e),On(r),On(i))}_offset(t,e){const r=this["_"+t];if(e===0)return r;switch(typeof e){case"number":return()=>r()+e;case"function":return()=>r()+e();default:throw new Error("Not a number of function")}}_passThrough(t){return this._offset(t,0)}constructor(t,e,r,i){this._x=t,this._y=e,this._width=r,this._height=i}get x(){return this._x()}get y(){return this._y()}get width(){return this._width()}get height(){return this._height()}get x2(){return this._x()+this._width()}get y2(){return this._y()+this._height()}equals(t){return t?this===t||this.x===t.x&&this.y===t.y&&this.width===t.width&&this.height===t.height:!1}modify(t){if(!Object.keys(t).length)return this;const e=r=>{const i=t[r];return typeof i=="number"?On(i):typeof i=="function"?i:this._passThrough(r)};return new rn(e("x"),e("y"),e("width"),e("height"))}translate(t,e){return t===0&&e===0?this:new rn(this._offset("x",t),this._offset("y",e),this._passThrough("width"),this._passThrough("height"))}translateBy(t){return this.translate(t.x,t.y)}expand(t,e=1){return t.left==0&&t.top==0&&t.right==0&&t.bottom==0?this:new rn(t.left?this._offset("x",-t.left*e):this._passThrough("x"),t.top?this._offset("y",-t.top*e):this._passThrough("y"),t.width?this._offset("width",t.width*e):this._passThrough("width"),t.height?this._offset("height",t.height*e):this._passThrough("height"))}shrink(t){return this.expand(t,-1)}intersect(t){return this===t||t==null?this:new rn(()=>Math.max(this.x,t.x),()=>Math.max(this.y,t.y),()=>Math.min(this.x2,t.x2)-Math.max(this.x,t.x),()=>Math.min(this.y2,t.y2)-Math.max(this.y,t.y))}union(t){return this===t||t==null?this:new rn(()=>Math.min(this.x,t.x),()=>Math.min(this.y,t.y),()=>Math.max(this.x2,t.x2)-Math.min(this.x,t.x),()=>Math.max(this.y2,t.y2)-Math.min(this.y,t.y))}isDefined(){return this.width>=0&&this.height>=0}flatten(){return new rn(On(this.x),On(this.y),On(this.width),On(this.height))}containsPoint(t,e){return t>=this.x&&t<this.x2&&e>=this.y&&e<this.y2}normalizePoint(t,e,r=!1){const i={x:(t-this.x)/this.width,y:(e-this.y)/this.height};return r&&(i.y=1-i.y),i}denormalizePoint(t,e,r=!1){return r&&(e=1-e),{x:this.x+t*this.width,y:this.y+e*this.height}}toString(){return`Rectangle: x: ${this.x}, y: ${this.y}, width: ${this.width}, height: ${this.height}`}toRoundedString(){return`Rectangle: x: ${Math.round(this.x)}, y: ${Math.round(this.y)}, width: ${Math.round(this.width)}, height: ${Math.round(this.height)}`}};W(rn,"ZERO",rn.create(0,0,0,0));let St=rn;const bi=new WeakMap,Uf=new WeakMap;function ON(n,t){if(t!==null&&typeof t!="string")throw new Error("Import scope name must be a string or null.");bi.set(n,{name:t})}function Un(n,t={}){const r=t.skipSubtree??!1?"excludeSubtree":"exclude";Uf.set(n,r)}function UN(n){const t=n.getDataAncestors(),e=[];for(let r=t.length-1;r>=0;r-=1){const i=bi.get(t[r]);i&&typeof i.name=="string"&&e.push(i.name)}return e}function GN(n){const t=[];for(const e of zN(n)){const r=HN(e);VN(e,r,t),_N(e,r,t),YN(e,r,t)}return t}function I2(n){const t=n.spec.configurableVisibility;return t!==void 0?t:!(n.layoutParent&&n.layoutParent.spec&&"layer"in n.layoutParent.spec)}function E2(n){return n.persist===!1?!1:Lh(n)?!0:y1(n)?!!n.bind:!1}function zN(n){const t=new Set([n]);return n.visit(e=>{const r=bi.get(e);r&&typeof r.name=="string"&&t.add(e)}),Array.from(t)}function HN(n){const t=UN(n),e=bi.get(n);return e&&typeof e.name=="string"?[...t,e.name]:t}function Gf(n){return n.length?"import scope ["+n.join(" / ")+"]":"import scope (root)"}function VN(n,t,e){const r=new Map;b2(n,i=>{const s=i.explicitName,o=I2(i),a=i.spec.configurableVisibility===!0;if(!o)return;if(!s){if(!a)return;e.push({message:"Configurable view must have an explicit name in "+Gf(t)+".",scope:t});return}const l=r.get(s);l?l.push(i):r.set(s,[i])},{includeNamedImportRoots:!0});for(const[i,s]of r){if(s.length<=1)continue;const o=s.map(a=>a.getPathString()).join(", ");e.push({message:'Configurable view name "'+i+'" is not unique within '+Gf(t)+". Found in: "+o+".",scope:t})}}function _N(n,t,e){const r=new Map;b2(n,i=>{for(const[s,o]of i.paramMediator.paramConfigs){if(!E2(o))continue;const a=r.get(s);a?a.push(i):r.set(s,[i])}});for(const[i,s]of r){if(s.length<=1)continue;const o=s.map(a=>a.getPathString()).join(", ");e.push({message:'Bookmarkable parameter "'+i+'" is not unique within '+Gf(t)+". Found in: "+o+".",scope:t})}}function YN(n,t,e){const r=JN(n);if(!r.length)return;const i=r.filter(o=>qN(o));if(i.length<=1)return;const s=new Map;for(const o of i){const a=bi.get(o),l=a?a.name:void 0;typeof l!="string"||!l.length||s.set(l,(s.get(l)??0)+1)}for(const[o,a]of s)a>1&&e.push({message:'Import instance name "'+o+'" is used multiple times for addressable instances in '+Gf(t)+".",scope:t})}function JN(n){const t=[];return n.visit(e=>{if(e===n)return;if(Uf.get(e)==="excludeSubtree")return $t;if(bi.get(e))return t.push(e),$t}),t}function qN(n){let t=!1;return n.visit(e=>{const r=Uf.get(e);if(r==="excludeSubtree")return $t;if(r!=="exclude"){const i=I2(e),s=e.spec.configurableVisibility===!0;if(i&&(e.explicitName||s))return t=!0,xr;for(const o of e.paramMediator.paramConfigs.values())if(E2(o))return t=!0,xr}}),t}function b2(n,t,e={}){const r=e.includeNamedImportRoots??!1;n.visit(i=>{const s=Uf.get(i);if(s==="excludeSubtree")return $t;const o=bi.get(i);if(i!==n&&o&&typeof o.name=="string"){if(s!=="exclude"&&r){const l=t(i);if(l===xr)return l}return $t}if(s!=="exclude")return t(i)})}const KN="chromosome_ticks_and_labels",jN={x:"width",y:"height"};function B0(n){return n=="x"?"y":"x"}const zf={x:["bottom","top"],y:["left","right"]},v0=Object.fromEntries(Object.entries(zf).map(([n,t])=>t.map(e=>[e,n])).flat(1));function Br(n){return v0[n]}class x2 extends _s{constructor(t,e,r,i,s,o){const a=e=="locus",l={...a?XN:B2,...WN(e,t),...t};super(a?ZN(l,e):v2(l,e),r,i,s,`axis_${t.orient}`,{blockEncodingInheritance:!0,...o}),this.axisProps=l,Un(this,{skipSubtree:!0})}getSize(){const t={px:this.getPerpendicularSize()},e={grow:1};return v0[this.axisProps.orient]=="x"?new br(e,t):new br(t,e)}getPerpendicularSize(){return S0(this.axisProps)}isPickingSupported(){return!1}}function S0(n){const t=Br(n.orient);let e=n.ticks&&n.tickSize||0;return n.labels&&(e+=n.labelPadding,t=="x"?e+=n.labelFontSize:e+=30),n.title&&(e+=n.titlePadding+n.titleFontSize),e=Math.min(n.maxExtent||1/0,Math.max(n.minExtent||0,e)),e}const B2={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 WN(n,t){const e=t.orient,r=n=="nominal"||n=="ordinal";let i="center",s="middle",o=t.labelAngle??((e=="top"||e=="bottom")&&r?-90:0);switch(e){case"left":i="right";break;case"right":i="left";break;case"top":case"bottom":Math.abs(o)>30?(i=o>0==(e=="bottom")?"left":"right",s="middle"):s=e=="top"?"alphabetic":"top";break}return{labelAlign:i,labelAngle:o,labelBaseline:s}}function v2(n,t){const e={...n,extent:S0(n)},r=Br(e.orient),i=B0(r),s=e.orient=="bottom"||e.orient=="right"?1:-1,o=e.orient=="bottom"||e.orient=="left"?1:0,a=()=>({field:"value",type:t}),l=()=>({name:"domain",data:{values:[{}]},mark:{type:"rule",clip:!1,strokeDash:e.domainDash,strokeCap:e.domainCap,color:e.domainColor,[i]:o,size:e.domainWidth}}),c=()=>({name:"labels",mark:{type:"text",clip:!1,align:e.labelAlign,angle:e.labelAngle,baseline:e.labelBaseline,[i+"Offset"]:(e.tickSize+e.labelPadding)*s,[i]:o,size:e.labelFontSize,color:e.labelColor,minBufferSize:1500},encoding:{[r]:a(),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:{[i]:{value:o},[i+"2"]:{value:o-e.tickSize/e.extent*(o?1:-1)}}}),f=()=>({name:"title",data:{values:[{}]},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,[r]:.5,[i]:1-o}}),h=()=>{const d={name:"ticks_and_labels",encoding:{[r]:a()},layer:[]};return e.ticks&&d.layer.push(u()),e.labels&&d.layer.push(c()),d},A={resolve:{scale:{[r]:"forced"}},domainInert:!0,[jN[B0(r)]]:e.extent,data:{lazy:{type:"axisTicks",channel:r,axis:n}},layer:[]};return e.domain&&A.layer.push(l()),(e.ticks||e.labels)&&A.layer.push(h()),e.title&&A.layer.push(f()),A}const XN={...B2,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 ZN(n,t){const e={...n,extent:S0(n)},r=Br(e.orient),i=B0(r),s=e.orient=="bottom"||e.orient=="left"?1:0,o=()=>({name:"chromosome_ticks",mark:{type:"rule",strokeDash:n.chromTickDash,strokeDashOffset:n.chromTickDashOffset,[i]:s,[i+"2"]:s-e.chromTickSize/e.extent*(s?1:-1),color:n.chromTickColor,size:e.chromTickWidth}}),a=()=>{let u;switch(e.orient){case"top":u={y:0,angle:0,paddingX:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"bottom":u={y:1,angle:0,paddingX:4,dy:e.chromLabelPadding+e.chromLabelFontSize*.73,viewportEdgeFadeWidthLeft:20,viewportEdgeFadeWidthRight:20,viewportEdgeFadeDistanceRight:-10,viewportEdgeFadeDistanceLeft:-20};break;case"left":u={x:1,angle:-90,paddingY:4,dy:-e.chromLabelPadding,viewportEdgeFadeWidthBottom:20,viewportEdgeFadeWidthTop:20,viewportEdgeFadeDistanceBottom:-20,viewportEdgeFadeDistanceTop:-10};break;case"right":u={x:0,angle:90,align:"right",paddingY:4,dy:-e.chromLabelPadding};break;default:u={}}return{name:"chromosome_labels",mark:{type:"text",size:e.chromLabelFontSize,font:e.chromLabelFont,fontWeight:e.chromLabelFontWeight,fontStyle:e.chromLabelFontStyle,color:e.chromLabelColor,align:n.chromLabelAlign,baseline:"alphabetic",clip:!1,...u},encoding:{[r+"2"]:{field:"continuousEnd",type:t},text:{field:"name"}}}};let l;switch(e.orient){case"bottom":case"top":l={};break;case"left":l={labelAngle:-90,labelAlign:"center",labelPadding:6};break;case"right":l={labelAngle:90,labelAlign:"center",labelPadding:6};break;default:l={}}const c=v2({...n,...l},t);if(n.chromTicks||n.chromLabels){const u={name:KN,data:{lazy:{type:"axisGenome",channel:Br(e.orient)}},encoding:{[r]:{field:"continuousStart",type:t,band:0}},layer:[]};if(n.chromTicks&&u.layer.push(o()),n.chromLabels){u.layer.push(a());let f;c.layer.filter(h=>h.name=="ticks_and_labels").forEach(h=>h.layer.filter(A=>A.name=="labels").forEach(A=>{f=A.mark})),f&&(e.orient=="top"||e.orient=="bottom"?(f.viewportEdgeFadeWidthLeft=30,f.viewportEdgeFadeDistanceLeft=40):(f.viewportEdgeFadeWidthBottom=30,f.viewportEdgeFadeDistanceBottom=40))}c.layer.push(u)}return c}class $N{constructor(t){S(this,qi);S(this,Or,0);S(this,Ur,0);D(this,qi,new Array(t))}push(t){g(this,qi)[g(this,Or)]=t,D(this,Or,(g(this,Or)+1)%this.size),D(this,Ur,Math.min(g(this,Ur)+1,this.size))}get(){const t=g(this,qi);return g(this,Ur)<this.size?t.slice(0,g(this,Ur)):t.slice(g(this,Or),this.size).concat(t.slice(0,g(this,Or)))}get size(){return g(this,qi).length}get length(){return g(this,Ur)}}qi=new WeakMap,Or=new WeakMap,Ur=new WeakMap;class xt{static fromMouseEvent(t){return new xt(t.clientX,t.clientY)}constructor(t,e){this.x=t,this.y=e}subtract(t){return new xt(this.x-t.x,this.y-t.y)}add(t){return new xt(this.x-t.x,this.y-t.y)}multiply(t){return new xt(this.x*t,this.y*t)}get length(){return Math.sqrt(this.x**2+this.y**2)}equals(t){return t?t===this||t.x===this.x&&t.y===this.y:!1}}let xi,S2=0;function Q2(){return performance.now()-S2<50}function e9(n){return function(...t){S2=performance.now(),n(...t)}}function t9(n,t,e,r,i){if(e=e9(e),n.type=="wheel"){n.uiEvent.preventDefault();const s=n.uiEvent,o=s.deltaMode?120:1;if(!s.deltaX&&!s.deltaY)return;xi==null||xi.stop();let{x:a,y:l}=n.point;if(r){const c=r.mark.encoders;c.x&&!c.x2&&!c.x.constant&&(a=+c.x(r.datum)*t.width+t.x),c.y&&!c.y2&&!c.y.constant&&(l=(1-+c.y(r.datum))*t.height+t.y)}Math.abs(s.deltaX)<Math.abs(s.deltaY)?e({x:a,y:l,xDelta:0,yDelta:0,zDelta:s.deltaY*o/300}):e({x:a,y:l,xDelta:-s.deltaX*o,yDelta:0,zDelta:0})}else if(n.type=="mousedown"&&n.mouseEvent.button===0){xi&&xi.stop();const s=new $N(30),o=n.mouseEvent;o.preventDefault();let a=xt.fromMouseEvent(o);const l=f=>{const h=xt.fromMouseEvent(f);s.push({point:h,timestamp:performance.now()});const A=h.subtract(a);e({x:a.x,y:a.y,xDelta:A.x,yDelta:A.y,zDelta:0}),a=h},c=()=>{const h=performance.now(),A=s.get().filter(b=>h-b.timestamp<160);if(A.length<5||!i||n9(A))return;const d=A.at(-1),p=A[0],C=d.point.subtract(p.point).multiply(1/(d.timestamp-p.timestamp));let m=a.x,w=a.y;xi=x0(i,b=>{e({x:b.x,y:b.y,xDelta:m-b.x,yDelta:w-b.y,zDelta:0}),m=b.x,w=b.y},150,.5,{x:m,y:w}),xi({x:a.x-C.x*250,y:a.y-C.y*250})},u=()=>{document.removeEventListener("mousemove",l),document.removeEventListener("mouseup",u),c()};document.addEventListener("mouseup",u,!1),document.addEventListener("mousemove",l,!1)}}function n9(n){const t=n[Math.floor(n.length/2)],e=t.point.subtract(n[0].point).multiply(t.timestamp-n[0].timestamp),r=n.at(-1).point.subtract(t.point).multiply(n.at(-1).timestamp-t.timestamp),i=e.length;return r.length/i<.4}class r9 extends _s{constructor(t,e,r,i,s,o){const l={...e=="locus"?i9:D2,...t};super(c9(l,e),r,i,s,`axisGrid_${t.orient}`,{blockEncodingInheritance:!0,...o}),this.axisProps=l,Un(this,{skipSubtree:!0})}getOrient(){return this.axisProps.orient}isPickingSupported(){return!1}}const D2={values:null,grid:!1,gridCap:"butt",gridColor:"lightgray",gridDash:null,gridOpacity:1,gridWidth:1,tickCount:null,tickMinStep:null},i9={...D2,chromGrid:!1,chromGridCap:"butt",chromGridColor:"gray",chromGridDash:[1,5],chromGridOpacity:1,chromGridWidth:1};function s9(n,t){const e=n,r=Br(e.orient);return{name:"grid_lines",data:{lazy:{type:"axisTicks",channel:r,axis:n}},mark:{type:"rule",strokeDash:e.gridDash,strokeCap:e.gridCap,color:e.gridColor,size:e.gridWidth,opacity:e.gridOpacity,minBufferSize:300},encoding:{[r]:{field:"value",type:t}}}}function o9(n,t){const e=n,r=Br(e.orient);return{name:"chromosome_lines",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rule",strokeDash:e.chromGridDash,strokeCap:e.chromGridCap,color:e.chromGridColor,size:e.chromGridWidth,opacity:e.chromGridOpacity},encoding:{[r]:{field:"continuousStart",type:t,band:0}}}}function a9(n,t){const e=n,r=Br(e.orient);return{name:"chromosome_fill",data:{lazy:{type:"axisGenome",channel:r}},mark:{type:"rect"},encoding:{[r]:{field:"continuousStart",type:t,band:0},[r+"2"]:{field:"continuousEnd",band:0},fill:{field:"odd",type:"nominal",scale:{domain:[!1,!0],range:[e.chromGridFillEven??"white",e.chromGridFillOdd??"white"]}},opacity:{field:"odd",type:"nominal",scale:{type:"ordinal",domain:[!1,!0],range:[e.chromGridFillEven?1:0,e.chromGridFillOdd?1:0]}}}}}function c9(n,t){const e={...n},r=[];return e.chromGrid&&(e.chromGridFillOdd||e.chromGridFillEven)&&r.push(a9(e,t)),e.chromGrid&&e.chromGridOpacity>0&&r.push(o9(e,t)),e.grid&&e.gridOpacity>0&&r.push(s9(e,t)),{name:"grid_layers",configurableVisibility:!1,resolve:{scale:{[Br(n.orient)]:"forced",fill:"independent",opacity:"independent"}},domainInert:!0,layer:r}}const k2={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"},l9={orient:"left",anchor:"middle",align:"right",baseline:"middle",angle:0,fontSize:12},u9={orient:"top",anchor:"start",align:"left",baseline:"top",offset:-10,dx:10,fontSize:12},f9={start:0,middle:.5,end:1},A9={start:"left",middle:"center",end:"right"};function h9(n){if(!n)return;const t=ye(n)?{text:n}:n;if(!t.text||t.orient=="none")return;const e={"track-title":l9,overlay:u9}[t.style]??{},r={...k2,...e,...t};let i={},s={x:0,y:0};const o=f9[r.anchor??"middle"];switch(r.orient){case"top":s={x:o,y:1},i={baseline:"alphabetic",angle:0};break;case"right":s={x:1,y:1-o},i={baseline:"alphabetic",angle:90};break;case"bottom":s={x:o,y:0},i={baseline:"top",angle:0};break;case"left":s={x:0,y:o},i={baseline:"alphabetic",angle:-90};break}const a={...k2,...i,...e,...t},l={xOffset:0,yOffset:0};switch(r.orient){case"top":l.yOffset=-a.offset;break;case"right":l.xOffset=a.offset;break;case"bottom":l.yOffset=a.offset;break;case"left":l.xOffset=-a.offset;break}return{configurableVisibility:!1,data:{values:[{}]},mark:{type:"text",tooltip:null,clip:!1,...s,...l,text:a.text,align:a.align??A9[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}}}class F2 extends dt{constructor(e,r,i={}){const s={scrollbarSize:8,scrollbarPadding:2,scrollbarMinLength:20};super({params:[{name:"scrollbarOpacity",value:1}],opacity:{expr:"scrollbarOpacity"},data:{values:[{}]},mark:{type:"rect",fill:"#b0b0b0",fillOpacity:.6,stroke:"white",strokeWidth:1,strokeOpacity:1,cornerRadius:5,clip:!1},configurableVisibility:!1},e.layoutParent.context,e.layoutParent,e.view,"scrollbar-"+r,{blockEncodingInheritance:!0});S(this,Ce);S(this,Gr);S(this,Rl,St.ZERO);S(this,kt,St.ZERO);S(this,Xo,St.ZERO);W(this,"viewportOffset",0);S(this,Zo);Un(this,{skipSubtree:!0}),this.config=s,D(this,Gr,r),D(this,Zo,i.onViewportOffsetChange);const o=this.config.scrollbarPadding,a=this.config.scrollbarSize;D(this,Rl,g(this,Gr)=="vertical"?new St(()=>g(this,kt).x+g(this,kt).width-a-o,()=>g(this,kt).y+o+this.scrollOffset,()=>a,()=>M(this,Ce,RA).call(this)):new St(()=>g(this,kt).x+o+this.scrollOffset,()=>g(this,kt).y+g(this,kt).height-a-o,()=>M(this,Ce,RA).call(this),()=>a)),M(this,Ce,sp).call(this,this.viewportOffset),this.addInteractionEventListener("mousedown",(l,c)=>{if(c.stopPropagation(),M(this,Ce,eu).call(this)<=0)return;const u=p=>r=="vertical"?p.clientY:p.clientX;c.mouseEvent.preventDefault();const f=this.scrollOffset,h=u(c.mouseEvent),A=p=>{const C=M(this,Ce,eu).call(this);if(C<=0)return;const m=Es(u(p)-h+f,0,C);this.interpolateViewportOffset({x:M(this,Ce,Rx).call(this,m)})},d=()=>{document.removeEventListener("mousemove",A),document.removeEventListener("mouseup",d)};document.addEventListener("mouseup",d,!1),document.addEventListener("mousemove",A,!1)})}get scrollOffset(){return M(this,Ce,Mx).call(this,this.viewportOffset)}setViewportOffset(e,{notify:r=!0,syncSmoother:i=!1}={}){this.viewportOffset=Es(e,0,M(this,Ce,NA).call(this)),i&&M(this,Ce,sp).call(this,this.viewportOffset),r&&g(this,Zo)&&g(this,Zo).call(this,this.viewportOffset)}render(e,r,i){super.render(e,g(this,Rl),i)}updateScrollbar(e,r){D(this,kt,e.flatten()),D(this,Xo,r),this.setViewportOffset(this.viewportOffset,{notify:!1,syncSmoother:!0})}}Gr=new WeakMap,Rl=new WeakMap,kt=new WeakMap,Xo=new WeakMap,Zo=new WeakMap,Ce=new WeakSet,Fx=function(){const e=g(this,Gr)=="horizontal"?"width":"height",r=g(this,kt)[e],i=g(this,Xo)[e];return i>0?Math.min(1,r/i):1},ip=function(){const e=g(this,Gr)=="horizontal"?"width":"height";return Math.max(0,g(this,kt)[e]-2*this.config.scrollbarPadding)},RA=function(){const e=M(this,Ce,ip).call(this),r=M(this,Ce,Fx).call(this)*e,i=this.config.scrollbarMinLength;return Math.min(e,Math.max(i,r))},eu=function(){return Math.max(0,M(this,Ce,ip).call(this)-M(this,Ce,RA).call(this))},Mx=function(e){const r=M(this,Ce,NA).call(this),i=M(this,Ce,eu).call(this);return r<=0||i<=0?0:e/r*i},Rx=function(e){const r=M(this,Ce,NA).call(this),i=M(this,Ce,eu).call(this);return r<=0||i<=0?0:e/i*r},NA=function(){const e=g(this,Gr)=="horizontal"?"width":"height";return Math.max(0,g(this,Xo)[e]-g(this,kt)[e])},sp=function(e){this.interpolateViewportOffset=x0(this.context.animator,r=>{this.setViewportOffset(r.x,{notify:!0,syncSmoother:!1})},35,.4,{x:e})};class d9 extends _s{constructor(e,r,i={}){const s=r(),o=Object.keys(s.intervals);if(ai.every(u=>!o.includes(u)))throw new Error("SelectionRect requires at least one of the channels 'x' or 'y' to be present in the selection.");const a={name:"selectionRect",configurableVisibility:!1,domainInert:!0,resolve:{scale:{x:"forced",y:"forced"}},data:{values:M2(r())},encoding:{},layer:[]};o.includes("x")&&(a.encoding.x={field:"_x",type:null,title:null},a.encoding.x2={field:"_x2"}),o.includes("y")&&(a.encoding.y={field:"_y",type:null,title:null},a.encoding.y2={field:"_y2"}),a.layer.push({name:"selectionRectRect",mark:{type:"rect",clip:!0,fill:"#808080",fillOpacity:.05,stroke:"black",strokeWidth:1,strokeOpacity:.2,...i}});const l=u=>{const f=e.view.getScaleResolution(u);return`format(datum._${u}2 - datum._${u}, '.3s')`+(f.type==="locus"?" + 'b'":"")},c=i.measure=="inside"?9:i.measure=="outside"?-9:0;o.includes("x")&&c!=0&&a.layer.push({name:"selectionRectTextX",mark:{type:"text",align:"center",paddingX:5,dy:c,tooltip:null},encoding:{text:{expr:l("x")},y:o.includes("y")?{field:"_y2",type:null,title:null}:{value:1},y2:null}}),o.includes("y")&&c!=0&&a.layer.push({name:"selectionRectTextY",mark:{type:"text",align:"center",paddingY:5,dy:c,tooltip:null,angle:-90},encoding:{text:{expr:l("y")},x2:null}});super(a,e.layoutParent.context,e.layoutParent,e.view,"selectionRect",{blockEncodingInheritance:!0});W(this,"_selectionExpr");W(this,"_selectionListener");Un(this,{skipSubtree:!0}),this._selectionExpr=r,this._selectionListener=()=>{var h;const u=r(),f=(h=this.flowHandle)==null?void 0:h.dataSource;if(!f)throw new Error("Cannot find selection rect data source handle!");f.updateDynamicData(M2(u))},r.addListener(this._selectionListener)}dispose(){this._selectionExpr.removeListener(this._selectionListener),super.dispose()}}function M2(n){const t=n.intervals.x,e=n.intervals.y;return!t&&!e?[]:[{_x:t==null?void 0:t[0],_x2:t==null?void 0:t[1],_y:e==null?void 0:e[0],_y2:e==null?void 0:e[1]}]}class g9{constructor(t,e,r){S(this,BA);if(this.layoutParent=e,this.view=t,this.serial=r,this.background=void 0,this.backgroundStroke=void 0,this.axes={},this.gridLines={},this.scrollbars={},this.selectionRect=void 0,this.title=void 0,this.coords=St.ZERO,t.needsAxes.x||t.needsAxes.y){const i=t.spec,s="view"in i?i==null?void 0:i.view:void 0,o=p9(s);o&&(this.background=new dt(o,e.context,e,t,"background"+r,{blockEncodingInheritance:!0}),Un(this.background,{skipSubtree:!0}));const a=m9(s);a&&(this.backgroundStroke=new dt(a,e.context,e,t,"backgroundStroke"+r,{blockEncodingInheritance:!0}),Un(this.backgroundStroke,{skipSubtree:!0}));const l=h9(t.spec.title);if(l){const c=new dt(l,e.context,e,t,"title"+r,{blockEncodingInheritance:!0});this.title=c,Un(this.title,{skipSubtree:!0})}}t.spec.viewportWidth!=null&&(this.scrollbars.horizontal=new F2(this,"horizontal")),t.spec.viewportHeight!=null&&(this.scrollbars.vertical=new F2(this,"vertical")),M(this,BA,Nx).call(this)}*getChildren(){this.background&&(yield this.background),this.backgroundStroke&&(yield this.backgroundStroke),this.title&&(yield this.title),yield*Object.values(this.axes),yield*Object.values(this.gridLines),yield this.view,yield*Object.values(this.scrollbars),this.selectionRect&&(yield this.selectionRect)}async createAxes(){this.disposeAxisViews();const{view:t,axes:e,gridLines:r}=this,i=(a,l)=>{const c=a.getAxisProps();if(c===null)return;const u=c?{...c}:{};if(!u.orient){for(const f of zf[l])if(!e[f]){u.orient=f;break}if(!u.orient)throw new Error("No slots available for an axis! Perhaps a LayerView has more than two children?")}if(u.title??(u.title=a.getTitle()),!zf[l].includes(u.orient))throw new Error(`Invalid axis orientation "${u.orient}" on channel "${l}"!`);return u},s=async(a,l,c)=>{const u=i(a,l);if(u){if(e[u.orient])throw new Error(`An axis with the orient "${u.orient}" already exists!`);const f=new x2(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);e[u.orient]=f,await f.initializeChildren()}},o=async(a,l,c)=>{const u=i(a,l);if(u&&(u.grid||u.chromGrid)){const f=new r9(u,a.scaleResolution.type,this.layoutParent.context,this.layoutParent,c);r[u.orient]=f,await f.initializeChildren()}};for(const a of["x","y"])if(t.needsAxes[a]){const l=t.resolutions.axis[a];if(!l)continue;await s(l,a,t)}for(const a of["x","y"])if(t.needsAxes[a]&&t.getConfiguredOrDefaultResolution(a,"axis")!="excluded"){const l=t.getAxisResolution(a);if(!l)continue;await o(l,a,t)}if(t instanceof _s){for(const a of t)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&u.orient&&await s(c,l,a)}for(const a of t)for(const[l,c]of Object.entries(a.resolutions.axis)){const u=c.getAxisProps();u&&!u.orient&&await s(c,l,a)}}[...Object.values(e),...Object.values(r)].forEach(a=>a.visit(l=>{l instanceof dt&&l.resolve("scale")}))}disposeAxisViews(){for(const t of Object.values(this.axes))t.disposeSubtree();for(const t of Object.values(this.gridLines))t.disposeSubtree();this.axes={},this.gridLines={}}getOverhang(){const t=e=>{const r=this.axes[e];return r?Math.max(r.getPerpendicularSize()+(r.axisProps.offset??0),0):0};return new it(t("top"),t("right"),t("bottom"),t("left")).add(this.view.getOverhang())}getOverhangAndPadding(){return this.getOverhang().add(this.view.getPadding())}}BA=new WeakSet,Nx=function(){const t=this.view,e=r=>{this.view.context.glHelper.canvas.style.cursor=r};for(const[r,i]of t.paramMediator.paramConfigs){if(!("select"in i))continue;const s=Ou(i.select);if(!p1(s))continue;const o=s.encodings,a=Object.fromEntries(o.map(b=>{const y=this.view.getScaleResolution(b),x=y==null?void 0:y.getScale();if(!x||!Je(x.type))throw new Error(`No continuous scale found for interval selection param "${r}" on channel "${b}"! Scale type is "${(x==null?void 0:x.type)??"none"}".`);return[b,y]}));if(this.selectionRect)throw new Error("Only one interval selection per container is currently allowed!");let l=!1,c=!1,u=!1,f=null;const h=(b,y)=>Object.fromEntries(o.map(x=>[x,[Math.min(b[x],y[x]),Math.max(b[x],y[x])]])),A=t.paramMediator.createExpression(r),d=t.paramMediator.getSetter(r);i.value&&d({type:"interval",intervals:i.value});const p=()=>{d(h1(o)),e(null)};this.selectionRect=new d9(this,A,s.mark),this.selectionRect.initializeChildren();const C=b=>{const y={x:0,y:0},x=t.coords.normalizePoint(b.x,b.y,!0);for(const B of o){const E=a[B].getScale(),Q=E.invert(B=="x"?x.x:x.y);y[B]=Q+(["index","locus"].includes(E.type)?.5:0)}return y},m=b=>{var Q,F,k,P;const{intervals:y}=b,x=(T,O,z)=>{const J=(oe,se)=>se==null?null:a[oe].getScale()(se),V=J("x",T)??z,q=J("y",O)??z;return t.coords.denormalizePoint(V,q,!0)},B=x((Q=y.x)==null?void 0:Q[0],(F=y.y)==null?void 0:F[0],0),E=x((k=y.x)==null?void 0:k[1],(P=y.y)==null?void 0:P[1],1);return St.create(B.x,B.y,E.x-B.x,E.y-B.y)};t.addInteractionEventListener("mousedown",(b,y)=>{if(y.mouseEvent.button!=0)return;if(f=l?m(A()):null,f)e("grabbing"),c=!0;else{const F=y.point;if(m1(A())&&(c=!0),y.mouseEvent.shiftKey)p(),u=!0;else if(m1(A())){const P=(T,O)=>{t.removeInteractionEventListener("mouseup",P);const z=O.point;F.subtract(z).length<2&&p()};t.addInteractionEventListener("mouseup",P);return}else return}y.stopPropagation();const x=y.point,B=xt.fromMouseEvent(y.mouseEvent).subtract(x),E=F=>{const k=xt.fromMouseEvent(F).subtract(B);let P;if(f){const T=k.subtract(x),O=f.translate(T.x,T.y);P=h(C(new xt(O.x,O.y)),C(new xt(O.x2,O.y2)))}else P=h(C(x),C(k));for(const T of o){const O=a[T],{zoomExtent:z,scale:J}=O,V=P[T];if(["index","locus"].includes(J.type)&&(V[0]=Math.ceil(V[0]),V[1]=Math.ceil(V[1])),f){const q=V[1]-V[0],oe=z[0],se=z[1];V[0]<oe&&(V[0]=oe,V[1]=oe+q),V[1]>se&&(V[1]=se,V[0]=se-q)}else V[0]=Math.max(z[0],V[0]),V[1]=Math.min(z[1],V[1]);V[1]=Math.min(z[1],V[1])}d({type:"interval",intervals:P})},Q=()=>{document.removeEventListener("mousemove",E),document.removeEventListener("mouseup",Q),u=!1,f&&(e("move"),f=null)};document.addEventListener("mousemove",E),document.addEventListener("mouseup",Q)}),t.addInteractionEventListener("click",(b,y)=>{y.mouseEvent.button==0&&c&&(y.stopPropagation(),c=!1)},!0);const w=b=>YQ(A(),C(b));t.addInteractionEventListener("dblclick",(b,y)=>{w(y.point)&&(p(),y.stopPropagation())},!0),t.addInteractionEventListener("mousemove",(b,y)=>{w(y.point)?u||(l=!0,f||e("move")):(l=!1,f||e(null))})}};function p9(n){if(n!=null&&n.fill||n!=null&&n.fillOpacity||n!=null&&n.shadowOpacity)return{configurableVisibility:!1,data:{values:[{}]},mark:{color:n.fill,opacity:n.fillOpacity??(n.fill?1:0),type:"rect",clip:!1,tooltip:null,minHeight:1,minOpacity:0,shadowBlur:n.shadowBlur,shadowColor:n.shadowColor,shadowOffsetX:n.shadowOffsetX,shadowOffsetY:n.shadowOffsetY,shadowOpacity:n.shadowOpacity}}}function m9(n){if(!(!n||!n.stroke||n.strokeWidth===0||n.strokeOpacity===0))return{configurableVisibility:!1,resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},data:{values:[{x:0,y:0,x2:1,y2:0},{x:1,y:0,x2:1,y2:1},{x:1,y:1,x2:0,y2:1},{x:0,y:1,x2:0,y2:0}]},mark:{size:n.strokeWidth??1,color:n.stroke??"lightgray",strokeCap:"square",opacity:n.strokeOpacity??1,type:"rule",clip:!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:null},y:{field:"y",type:"quantitative",scale:null},x2:{field:"x2"},y2:{field:"y2"}}}}const Hf=Object.freeze({size:1,color:"#ccc",opacity:1,strokeDash:[4,4],strokeCap:"butt"});class C9{constructor({direction:t,props:e,context:r,layoutParent:i,dataParent:s,getName:o}){S(this,Vr);S(this,Ki);S(this,zr);S(this,jn);S(this,ji,[]);S(this,Hr,[]);S(this,Wi,{x:[0,0],y:[0,0]});D(this,Ki,t),D(this,zr,e.includePlotMargin??!0);const a={...e};delete a.includePlotMargin,D(this,jn,M(this,Vr,Lx).call(this,a,r,i,s,o))}get view(){return g(this,jn)}update(t,e,r,i,s,o){M(this,Vr,Tx).call(this,t,e,i,s),M(this,Vr,Px).call(this,r,o)}render(t,e,r){g(this,jn).render(t,e,r)}}Ki=new WeakMap,zr=new WeakMap,jn=new WeakMap,ji=new WeakMap,Hr=new WeakMap,Wi=new WeakMap,Vr=new WeakSet,Tx=function(t,e,r,i){if(g(this,Hr).length=0,e<2)return;const s=g(this,Ki)==="vertical"?"column":"row",o=i?3:2;for(let a=1;a<e;a++){const c=r(s,a)-o,u=t[c],f=u?u.location:0,h=u?u.size:0;g(this,Hr).push(f+h/2)}},Px=function(t,e){var u,f,h;const r=g(this,zr)?0:e.left,i=g(this,zr)?t.width:t.width-e.right,s=g(this,zr)?0:e.bottom,o=g(this,zr)?t.height:t.height-e.top;g(this,ji).length=g(this,Hr).length;for(let A=0;A<g(this,Hr).length;A++){const d=g(this,Hr)[A],p=g(this,ji)[A]??{};if(g(this,Ki)==="vertical")p.x=d,p.x2=d,p.y=s,p.y2=o;else{const C=t.height-d;p.x=r,p.x2=i,p.y=C,p.y2=C}g(this,ji)[A]=p}const a=(u=g(this,jn).flowHandle)==null?void 0:u.dataSource;if(!a)return;a.updateDynamicData(g(this,ji)),g(this,Wi).x[1]=t.width,g(this,Wi).y[1]=t.height;const l=(f=g(this,jn).getScaleResolution("x"))==null?void 0:f.getScale();l&&l.domain(g(this,Wi).x);const c=(h=g(this,jn).getScaleResolution("y"))==null?void 0:h.getScale();c&&c.domain(g(this,Wi).y)},Lx=function(t,e,r,i,s){const o=w9(t),a=g(this,Ki)==="horizontal"?s("separatorHorizontal"):s("separatorVertical"),l=new dt(o,e,r,i,a,{blockEncodingInheritance:!0});return Un(l,{skipSubtree:!0}),l};function y9(n){if(!n)return null;const t=n===!0?{...Hf}:{...Hf,...n};return t.strokeDash===Hf.strokeDash&&(t.strokeDash=Hf.strokeDash.slice()),t}function w9(n){return{configurableVisibility:!1,domainInert:!0,data:{values:[]},resolve:{scale:{x:"excluded",y:"excluded"},axis:{x:"excluded",y:"excluded"}},mark:{...n,type:"rule",clip:n.clip??!1,tooltip:null},encoding:{x:{field:"x",type:"quantitative",scale:{nice:!1,zero:!1}},y:{field:"y",type:"quantitative",scale:{nice:!1,zero:!1}},x2:{field:"x2"},y2:{field:"y2"}}}}class I9 extends Fc{constructor(e,r,i,s,o,a,l){super(e,r,i,s,o,l);S(this,ie);S(this,$o,1/0);S(this,ea,10);S(this,ot,[]);S(this,Wn,{});S(this,Nl,0);S(this,Xi,{});this.spec=e,D(this,ea,e.spacing??10),D(this,$o,a),D(this,ot,[]),this.wrappingFacet=!1;const c=y9(e.separator);if(c)for(const u of x9(e))g(this,Xi)[u]=new C9({direction:u,props:c,context:this.context,layoutParent:this,dataParent:this,getName:f=>this.getNextAutoName(f)})}appendChild(e){this.appendChildView(e)}appendChildView(e){return this.insertChildViewAt(e,g(this,ot).length)}insertChildViewAt(e,r){e.layoutParent??(e.layoutParent=this);const i=new g9(e,this,g(this,Nl));return fx(this,Nl)._++,g(this,ot).splice(r,0,i),this.invalidateSizeCache(),i}removeChildView(e){const r=g(this,ot).findIndex(i=>i.view===e);if(r<0)throw new Error("Not my child view!");this.removeChildAt(r)}removeChildAt(e){const r=g(this,ot)[e];if(!r)throw new Error("Child index out of range!");M(this,ie,op).call(this,r),g(this,ot).splice(e,1),this.invalidateSizeCache()}setChildren(e){for(const r of g(this,ot))M(this,ie,op).call(this,r);D(this,ot,[]);for(const r of e)this.appendChild(r);this.invalidateSizeCache()}get children(){return g(this,ot).map(e=>e.view)}get childCount(){return g(this,ot).length}async createAxes(){await this.syncSharedAxes(),await Promise.all(g(this,ot).map(e=>e.createAxes()))}async syncSharedAxes(){for(const r of Object.values(g(this,Wn)))r.disposeSubtree();D(this,Wn,{});const e=[];for(const r of ai){const i=this.resolutions.axis[r];if(!i)continue;const s=i.getAxisProps();if(!s)continue;const o={title:i.getTitle(),orient:zf[r][0],...s},a=new x2(o,i.scaleResolution.type,this.context,this,this);e.push(a.initializeChildren()),g(this,Wn)[r]=a}await Promise.all(e)}*[Symbol.iterator](){for(const e of g(this,ot))yield*e.getChildren();for(const e of Object.values(g(this,Xi)))yield e.view;for(const e of Object.values(g(this,Wn)))yield e}getOverhang(){return M(this,ie,lp).call(this).union(M(this,ie,TA).call(this))}getSize(){return this._cache("size",()=>new br(M(this,ie,cp).call(this,"column"),M(this,ie,cp).call(this,"row")).addPadding(M(this,ie,TA).call(this)))}render(e,r,i={}){var p;if(super.render(e,r,i),!this.isConfiguredVisible())return;this.layoutParent||(r=r.shrink(this.getPadding())),r=r.shrink(M(this,ie,TA).call(this)),e.pushView(this,r);const s=e.getDevicePixelRatio(),o={devicePixelRatio:s},a=Yw(M(this,ie,ap).call(this,"column"),r.width,o),l=Yw(M(this,ie,ap).call(this,"row"),r.height,o),c=new w2(g(this,ie,us).length,g(this,$o)??1/0),u=C=>Math.round(C*s)/s,f=[];for(const[C,m]of g(this,ie,us).entries()){const{view:w,axes:b,gridLines:y,background:x,backgroundStroke:B,title:E,selectionRect:Q}=m,[F,k]=c.getCellCoords(C),P=a[M(this,ie,nu).call(this,"column",F)],T=l[M(this,ie,nu).call(this,"row",k)],O=w.getViewportSize(),z=w.getSize(),J=w.getOverhang(),V=P.location-J.left,q=T.location-J.top,oe=(ae,L)=>(ae[L].grow?(L=="width"?P:T).size:ae[L].px)+J[L],se=oe(O,"width"),Ae=oe(O,"height"),at=oe(z,"width"),Ft=oe(z,"height"),xn=m.scrollbars.horizontal,cs=m.scrollbars.vertical,jl=xn?()=>u(xn.viewportOffset):()=>0,ha=cs?()=>u(cs.viewportOffset):()=>0,$n=new St(()=>r.x+V,()=>r.y+q,()=>se,()=>Ae),ls=w.isScrollable(),_=ls?new St(()=>r.x+V-jl(),()=>r.y+q-ha(),()=>at,()=>Ft):$n;m.coords=$n;const ee=i.clipRect?$n.intersect(i.clipRect):$n;f.push({col:F,row:k,view:w,axes:b,gridLines:y,background:x,backgroundStroke:B,title:E,selectionRect:Q,viewportCoords:$n,viewCoords:_,clippedChildCoords:ee,viewWidth:at,viewHeight:Ft,scrollable:ls,gridChild:m})}for(const C of f)(p=C.background)==null||p.render(e,C.clippedChildCoords,{...i,clipRect:void 0});const h=M(this,ie,lp).call(this),A=g(this,Xi).vertical;A&&(A.update(a,c.nCols,r,(C,m)=>M(this,ie,nu).call(this,C,m),this.wrappingFacet,h),A.render(e,r,i));const d=g(this,Xi).horizontal;d&&(d.update(l,c.nRows,r,(C,m)=>M(this,ie,nu).call(this,C,m),this.wrappingFacet,h),d.render(e,r,i));for(const C of f){const{view:m,axes:w,gridLines:b,backgroundStroke:y,title:x,selectionRect:B,viewportCoords:E,viewCoords:Q,clippedChildCoords:F,viewWidth:k,viewHeight:P,scrollable:T,gridChild:O,col:z,row:J}=C;for(const q of Object.values(b))q.render(e,E,i);const V=b9(m)||T;V&&m.render(e,Q,{...i,clipRect:F}),y==null||y.render(e,F,{...i,clipRect:void 0});for(const[q,oe]of Object.entries(w)){const se=q=="left"||q=="right"?"vertical":"horizontal",Ae=O.scrollbars[se],at=Ae?E.modify(se=="vertical"?{y:()=>Q.y,height:P}:{x:()=>Q.x,width:k}):E,Ft=R2(at,q,oe);let xn=i.clipRect;Ae&&(xn=Ft.intersect(xn).intersect(Ae?E.modify(se=="vertical"?{x:-1e5,width:2e5}:{y:-1e5,height:2e5}):void 0)),oe.render(e,Ft,{...i,clipRect:xn})}for(const q of Object.values(g(this,Wn))){const se=q.axisProps.orient;(se=="left"&&z==0||se=="right"&&z==c.nCols-1||se=="top"&&J==0||se=="bottom"&&J==c.nRows-1)&&q.render(e,R2(E.shrink(O.view.getOverhang()),se,q),i)}V||m.render(e,Q,i),B==null||B.render(e,Q,i);for(const q of Object.values(O.scrollbars))q.updateScrollbar(E,Q),q.render(e,r,i);x==null||x.render(e,E,i)}e.popView(this)}propagateInteractionEvent(e){if(this.handleInteractionEvent(void 0,e,!0),e.stopped)return;const r=g(this,ie,us).find(s=>s.coords.containsPoint(e.point.x,e.point.y));for(const s of Object.values((r==null?void 0:r.scrollbars)??{}))if(s.coords.containsPoint(e.point.x,e.point.y)&&(s.propagateInteractionEvent(e),e.stopped))return;const i=r==null?void 0:r.view;if(i){if(i.propagateInteractionEvent(e),e.stopped)return;(i instanceof dt||i instanceof _s)&&t9(e,r.coords,s=>M(this,ie,Ux).call(this,r.coords,r.view,s),this.context.getCurrentHover(),this.context.animator)}e.stopped||this.handleInteractionEvent(void 0,e,!1)}getDefaultResolution(e,r){return"independent"}}$o=new WeakMap,ea=new WeakMap,ot=new WeakMap,Wn=new WeakMap,Nl=new WeakMap,Xi=new WeakMap,ie=new WeakSet,us=function(){return g(this,ot).filter(e=>e.view.isConfiguredVisible())},Ox=function(){return new w2(g(this,ie,us).length,g(this,$o)??1/0)},op=function(e){e.disposeAxisViews();for(const r of e.getChildren())r.disposeSubtree()},tu=function(e){const r=e=="column"?"width":"height",i=(s,o)=>s.map(a=>{const c=g(this,ie,us)[a].getOverhangAndPadding();return e=="column"?o?c.right:c.left:o?c.bottom:c.top}).reduce((a,l)=>Math.max(a,l),0);return this._cache(`size/directionSizes/${e}`,()=>g(this,ie,Ox)[e=="column"?"colIndices":"rowIndices"].map(s=>({axisBefore:i(s,0),axisAfter:i(s,1),view:FR(s.map(o=>g(this,ie,us)[o].view.getViewportSize()[r]))})))},ap=function(e){const r=M(this,ie,tu).call(this,e),i=[];i.push(Qc);for(const[s,o]of r.entries())s>0&&i.push({px:g(this,ea),grow:0}),(s==0||this.wrappingFacet)&&i.push(Qc),i.push({px:o.axisBefore,grow:0}),i.push(o.view),i.push({px:o.axisAfter,grow:0}),(s==r.length-1||this.wrappingFacet)&&i.push(Qc);return i},cp=function(e){let r=0,i=0;const s=e=="row"?this.spec.height:this.spec.width;if(s||s===0)return qw(s);const o=M(this,ie,tu).call(this,e);for(const[a,l]of o.entries())a>0&&(i+=g(this,ea)),(a==0||this.wrappingFacet)&&(i+=0),i+=l.axisBefore,i+=l.view.px??0,r+=l.view.grow??0,i+=l.axisAfter,(a==o.length-1||this.wrappingFacet)&&(i+=0);return{px:i,grow:r}},nu=function(e,r){return e=="row"&&this.wrappingFacet?1+6*r+2:2+4*r+1},lp=function(){const e=M(this,ie,tu).call(this,"column"),r=M(this,ie,tu).call(this,"row");return!e.length||!r.length?it.zero():new it(r.at(0).axisBefore,e.at(-1).axisAfter,r.at(-1).axisAfter,e.at(0).axisBefore)},TA=function(){const e=r=>{const i=v0[r],s=g(this,Wn)[i];return(s==null?void 0:s.axisProps.orient)!==r?0:Math.max(s.getPerpendicularSize()+(s.axisProps.offset??0),0)};return new it(e("top"),e("right"),e("bottom"),e("left"))},Ux=function(e,r,i){for(const[s,o]of Object.entries(E9(r))){if(o.size<=0)continue;const a=e.normalizePoint(i.x,i.y),l=e.normalizePoint(i.x+i.xDelta,i.y+i.yDelta),c={x:l.x-a.x,y:l.y-a.y};for(const u of o)u.zoom(2**i.zDelta,s=="y"?1-a[s]:a[s],s=="x"?c.x:-c.y)}this.context.animator.requestRender()};function E9(n){const t={x:new Set,y:new Set};return n.visit(e=>{for(const[r,i]of Object.entries(t)){const s=e.getScaleResolution(r);s&&s.isZoomable()&&i.add(s)}}),t}function b9(n){let t=!0;return n.visit(e=>{e instanceof dt&&t&&(t=e.mark.properties.clip===!0)}),t}function x9(n){return"vconcat"in n?["horizontal"]:"hconcat"in n?["vertical"]:["horizontal","vertical"]}function R2(n,t,e){const r=e.axisProps,i=e.getPerpendicularSize();if(t=="bottom")return n.translate(0,n.height+r.offset).modify({height:i});if(t=="top")return n.translate(0,-i-r.offset).modify({height:i});if(t=="left")return n.translate(-i-r.offset,0).modify({width:i});if(t=="right")return n.translate(n.width+r.offset,0).modify({width:i})}const kg=class kg extends I9{constructor(e,r,i,s,o){super(e,r,i,s,o,Vf(e)?e.columns:Rc(e)?1:1/0);S(this,Zi);this.spec=e}async initializeChildren(){const e=this.spec,r=Vf(e)?e.concat:Rc(e)?e.vconcat:e.hconcat;this.setChildren(await Promise.all(r.map(i=>this.context.createOrImportView(i,this,this,this.getNextAutoName("grid"))))),await this.createAxes()}async addChildSpec(e,r){return M(this,Zi,up).call(this).addChildSpec(e,r)}async removeChildAt(e){await M(this,Zi,up).call(this).removeChildAt(e)}getDefaultResolution(e,r){return r=="axis"?"independent":Rc(this.spec)&&e==="x"||L2(this.spec)&&e==="y"?"shared":"independent"}};Zi=new WeakSet,Gx=function(){const e=this.spec;let r;return Vf(e)?r=e.concat:Rc(e)?r=e.vconcat:r=e.hconcat,{specs:r,insertAt:(i,s)=>{r.splice(i,0,s)},removeAt:i=>{r.splice(i,1)}}},up=function(){return new y2(this,{getChildSpecs:M(this,Zi,Gx).bind(this),insertView:(e,r)=>this.insertChildViewAt(e,r),removeView:e=>Ax(kg.prototype,this,"removeChildAt").call(this,e),prepareView:async(e,r,i)=>{await i.createAxes(),await this.syncSharedAxes()},afterRemove:async()=>{await this.syncSharedAxes()},defaultName:()=>this.getNextAutoName("grid")})};let Mc=kg;const N2="viewRoot";class B9{constructor(t={}){S(this,ta,new Map);this.options={allowImport:!0,wrapRoot:!0,...t};const e=r=>(i,s,o,a,l)=>new r(i,s,o,a,l);this.addViewType(D0,e(_s)),this.addViewType(Q0,e(dt)),this.addViewType(Rc,e(Mc)),this.addViewType(L2,e(Mc)),this.addViewType(Vf,e(Mc)),this.addViewType(S9,()=>{throw new Error("SampleView is not supported by the @genome-spy/core package. Use @genome-spy/app instead!")})}addViewType(t,e){g(this,ta).set(t,e)}createView(t,e,r,i,s){for(const[o,a]of g(this,ta))if(o(t))return a(t,e,r,i,s);throw new Error("Invalid spec, cannot figure out the view type from the properties: "+JSON.stringify([...Object.keys(t)]))}isViewSpec(t){const e=[...g(this,ta).keys()].filter(r=>r(t));if(e.length>1)throw new Error("Ambiguous spec. Cannot create a view!");return e.length==1}async createOrImportView(t,e,r,i,s,o){let a;const l=P2(t)?t.name??null:void 0;if(P2(t)){let h;if("url"in t.import)if(this.options.allowImport)h=await zR(t,i.getBaseUrl(),e);else throw new Ln("Importing views is not allowed!",r);else if("template"in t.import)h=T2(t.import.template,i);else throw new Error("Invalid import: "+JSON.stringify(t));o==null||o(h),v9(h,t),a=h}else a=t;const c=h=>{var A;return(A=h==null?void 0:h.params)==null?void 0:A.some(d=>Lh(d)&&Ou(d.select).type=="interval")};let u=!1;!i&&this.options.wrapRoot&&(Q0(a)||D0(a)||c(a))&&s===N2&&(a={name:"implicitRoot",vconcat:[a]},u=!0);const f=this.createView(a,e,r,i,s);return l!==void 0&&ON(f,l),u&&Un(f),f instanceof Fc&&await f.initializeChildren(),f.registerStepSizeInvalidation(),f}}ta=new WeakMap;function T2(n,t){var r,i;const e=(i=(r=t.spec)==null?void 0:r.templates)==null?void 0:i[n];if(e)return structuredClone(e);if(t.dataParent)return T2(n,t.dataParent);throw new Error(`Cannot find template "${n}" in current view or its ancestors!`)}function v9(n,t){t.name!=null&&(n.name=t.name);const e=je(t.params)?t.params:et(t.params)?Object.entries(t.params).map(([r,i])=>({name:r,value:i})):[];if(e.length){n.params??(n.params=[]);for(const r of e){const i=n.params.findIndex(s=>s.name==r.name);i>=0&&(n.params[i]=r)}for(const r of e)n.params.some(i=>i.name==r.name)||n.params.push(r)}}function Q0(n){return"mark"in n&&(ye(n.mark)||et(n.mark))}function D0(n){return"layer"in n&&et(n.layer)}function P2(n){return"import"in n}function Rc(n){return"vconcat"in n&&je(n.vconcat)}function L2(n){return"hconcat"in n&&je(n.hconcat)}function Vf(n){return"concat"in n&&je(n.concat)}function S9(n){return"samples"in n&&et(n.samples)&&"spec"in n&&et(n.spec)}class Q9{constructor(t,e){S(this,na);this.point=t,this.uiEvent=e,this.stopped=!1,this.target=void 0}stopPropagation(){this.stopped=!0}get type(){return this.uiEvent.type}get proxiedMouseEvent(){return g(this,na)||D(this,na,D9(this.mouseEvent)),g(this,na)}get mouseEvent(){if(this.uiEvent instanceof MouseEvent)return this.uiEvent;throw new Error("Not a MouseEvent!")}}na=new WeakMap;function D9(n){const t=r=>r===null||typeof r!="object"&&typeof r!="function",e={get(r,i,s){const o=Reflect.get(r,i,r);if(!t(o))throw new Error(`Access to non-primitive property "${String(i)}" is not allowed.`);return o},getPrototypeOf(){return null},ownKeys(r){return Reflect.ownKeys(r).filter(s=>t(r[s])).map(s=>typeof s=="symbol"?s:String(s))},getOwnPropertyDescriptor(r,i){const s=Reflect.getOwnPropertyDescriptor(r,i);if(s&&!("get"in s||"set"in s)&&t(s.value))return{value:s.value,writable:!!s.writable,enumerable:!!s.enumerable,configurable:!!s.configurable}},has(r,i){return i in r?t(r[i]):!1}};return new Proxy(n,e)}class k9{constructor(t,e){this.animator=t,this.disabled=!!e,this.maxDistance=500,this.callback=null,this.targetValue=0,this.lastValue=0,this.smoother=x0(t,r=>{var s;const i=r.x-this.lastValue;this.lastValue=r.x,(s=this.callback)==null||s.call(this,i)},40,.1,{x:0})}cancel(){this.lastValue!==this.targetValue&&(this.targetValue=Cp([this.lastValue,this.targetValue],.3),this.smoother({x:this.targetValue}))}setMomentum(t,e){if(this.disabled){e(t);return}this.callback=e;const r=Es(this.targetValue+t-this.lastValue,-this.maxDistance,this.maxDistance);this.targetValue=this.lastValue+r,this.smoother({x:this.targetValue})}}function F9(n){const t={},e=["string","number","boolean"],r=["wheelDelta","wheelDeltaX","wheelDeltaY"];for(const i in n){const s=i;!r.includes(i)&&e.includes(typeof n[s])&&(t[s]=n[s])}return t}class M9{constructor({viewRoot:t,glHelper:e,tooltip:r,animator:i,emitEvent:s,tooltipHandlers:o,renderPickingFramebuffer:a,getDevicePixelRatio:l}){S(this,vA);S(this,ra);S(this,$i);S(this,pt);S(this,Tl);S(this,Pl);S(this,Ll);S(this,ia);S(this,Ol);S(this,ze);S(this,es);S(this,sa);S(this,Xn);D(this,ra,t),D(this,$i,e),D(this,pt,r),D(this,Tl,i),D(this,Pl,s),D(this,Ll,o),D(this,ia,a),D(this,Ol,l),D(this,ze,void 0),D(this,es,new k9(g(this,Tl))),D(this,sa,void 0),D(this,Xn,!1)}getCurrentHover(){return g(this,ze)}registerMouseEvents(){const t=g(this,$i).canvas;let e=performance.now(),r=!1;const i=s=>{var l;const o=performance.now(),a=o-e<200;if(s instanceof MouseEvent){const c=t.getBoundingClientRect(),u=new xt(s.clientX-c.left-t.clientLeft,s.clientY-c.top-t.clientTop);s.type=="mousemove"&&!a&&(g(this,pt).handleMouseMove(s),D(this,Xn,!1),s.buttons==0&&!Q2()&&(g(this,ia).call(this),M(this,vA,zx).call(this,u.x,u.y)));const f=h=>{g(this,ra).propagateInteractionEvent(new Q9(u,h)),g(this,Xn)||g(this,pt).clear()};if(s.type!="wheel"&&g(this,es).cancel(),(s.type=="mousedown"||s.type=="mouseup")&&!Q2())g(this,ia).call(this);else if(s.type=="wheel"){e=o,D(this,Xn,!1);const h=s;if(Math.abs(h.deltaX)>Math.abs(h.deltaY))D(this,ze,null),g(this,es).cancel();else{const A=F9(h);g(this,es).setMomentum(h.deltaY*(h.deltaMode?80:1),d=>{const p=new WheelEvent("wheel",{...A,deltaMode:0,deltaX:0,deltaY:d});f(p)}),h.preventDefault();return}}if(s.type=="click"){if(r)return;const h=g(this,ze)?{type:s.type,viewPath:g(this,ze).mark.unitView.getLayoutAncestors().map(A=>A.name).reverse(),datum:g(this,ze).datum}:{type:s.type,viewPath:null,datum:null};g(this,Pl).call(this,"click",h)}(s.type!="click"||((l=g(this,sa))==null?void 0:l.subtract(xt.fromMouseEvent(s)).length)<3)&&f(s)}};["mousedown","mouseup","wheel","click","mousemove","gesturechange","contextmenu","dblclick"].forEach(s=>t.addEventListener(s,i)),t.addEventListener("mousedown",s=>{D(this,sa,xt.fromMouseEvent(s)),g(this,pt).sticky?(g(this,pt).sticky=!1,g(this,pt).clear(),r=!0):r=!1;const o=()=>{document.addEventListener("mouseup",()=>g(this,pt).popEnabledState(),{once:!0}),g(this,pt).pushEnabledState(!1)};if(s.button==2||s.shiftKey||s.ctrlKey||s.metaKey)o();else if(g(this,pt).visible){const a=setTimeout(()=>{r=!0,g(this,pt).sticky=!0},400),l=()=>clearTimeout(a);document.addEventListener("mouseup",l,{once:!0}),document.addEventListener("mousemove",l,{once:!0})}}),t.addEventListener("dragstart",s=>s.stopPropagation()),t.addEventListener("mouseout",()=>{g(this,pt).clear(),D(this,ze,null)})}updateTooltip(t,e){if(!g(this,Xn)||!t)g(this,pt).updateWithDatum(t,e),D(this,Xn,!0);else throw new Error("Tooltip has already been updated! Duplicate event handler?")}}ra=new WeakMap,$i=new WeakMap,pt=new WeakMap,Tl=new WeakMap,Pl=new WeakMap,Ll=new WeakMap,ia=new WeakMap,Ol=new WeakMap,ze=new WeakMap,es=new WeakMap,sa=new WeakMap,Xn=new WeakMap,vA=new WeakSet,zx=function(t,e){var o;const r=g(this,Ol).call(this),i=w6(g(this,$i).gl,g(this,$i)._pickingBufferInfo,t*r,e*r),s=i[0]|i[1]<<8|i[2]<<16|i[3]<<24;if(s==0){D(this,ze,null);return}if(s!==((o=g(this,ze))==null?void 0:o.uniqueId)&&D(this,ze,null),g(this,ze)||g(this,ra).visit(a=>{if(a instanceof dt){if(a.mark.isPickingParticipant()&&[...a.facetCoords.values()].some(l=>l.containsPoint(t,e))){const l=a.getCollector().findDatumByUniqueId(s);l&&D(this,ze,{mark:a.mark,datum:l,uniqueId:s})}if(g(this,ze))return xr}}),g(this,ze)){const a=g(this,ze).mark;this.updateTooltip(g(this,ze).datum,async l=>{if(!a.isPickingParticipant())return;const c=a.properties.tooltip;if(c!==null){const u=(c==null?void 0:c.handler)??"default",f=g(this,Ll)[u];if(!f)throw new Error("No such tooltip handler: "+u);return f(l,a,c==null?void 0:c.params)}})}};class O2{constructor(t){this.globalOptions=t}pushView(t,e){}popView(t){}renderMark(t,e){}getDevicePixelRatio(){return 1}}class k0 extends O2{constructor(e,r){super(e);S(this,SA);S(this,Ul,[0,0,0,0]);S(this,sn);S(this,Gl,[]);S(this,oa);S(this,zl);S(this,Hl,new Set);S(this,Vl);S(this,aa,1);S(this,_l,{width:0,height:0});if(D(this,zl,r.webGLHelper),D(this,oa,r.framebufferInfo),D(this,aa,r.devicePixelRatio),D(this,_l,r.canvasSize),r.clearColor){const i=yr(r.clearColor).rgb();D(this,Ul,[i.r/255,i.g/255,i.b/255,i.opacity])}}getDevicePixelRatio(){return g(this,aa)}pushView(e,r){g(this,Hl).add(e),D(this,Vl,r)}renderMark(e,r){if(this.globalOptions.picking&&!e.isPickingParticipant())return;const i=e.render(r);i&&g(this,Gl).push({mark:e,callback:i,coords:g(this,Vl),clipRect:r.clipRect})}render(){if(g(this,sn)||M(this,SA,Hx).call(this),g(this,sn).length==0)return;const e=g(this,zl).gl,r=g(this,oa);r?(e.bindFramebuffer(e.FRAMEBUFFER,r.framebuffer),e.viewport(0,0,r.width,r.height)):e.viewport(0,0,e.drawingBufferWidth,e.drawingBufferHeight),e.disable(e.SCISSOR_TEST),e.clearColor(...g(this,Ul)),e.clear(e.COLOR_BUFFER_BIT);for(const i of g(this,Hl))i.onBeforeRender();for(const i of g(this,sn))i();g(this,oa)&&e.bindFramebuffer(e.FRAMEBUFFER,null)}}Ul=new WeakMap,sn=new WeakMap,Gl=new WeakMap,oa=new WeakMap,zl=new WeakMap,Hl=new WeakMap,Vl=new WeakMap,aa=new WeakMap,_l=new WeakMap,SA=new WeakSet,Hx=function(){D(this,sn,[]);let e=!0,r=!0;const i=a=>()=>{e&&a()},s=a=>()=>{e&&r&&a()},o=Au(g(this,Gl).reverse(),a=>a.mark);for(const[a,l]of[...o.entries()].reverse()){if(!a.isReady())continue;g(this,sn).push(()=>{e=a.unitView.getEffectiveOpacity()>0}),g(this,sn).push(...a.prepareRender(this.globalOptions).map(u=>i(u)));let c;for(const u of l){const f=u.coords;f.equals(c)||g(this,sn).push(i(()=>{r=a.setViewport(g(this,_l),g(this,aa),f,u.clipRect)})),g(this,sn).push(s(u.callback)),c=u.coords}}};class R9 extends O2{constructor(...t){super({}),this.contexts=t}pushView(t,e){for(const r of this.contexts)r.pushView(t,e)}popView(t){for(const e of this.contexts)e.popView(t)}renderMark(t,e){for(const r of this.contexts)r.renderMark(t,e)}}class N9{constructor({viewRoot:t,glHelper:e,getBackground:r,broadcast:i,onLayoutComputed:s}){S(this,Yl);S(this,ts);S(this,Jl);S(this,ca);S(this,ql);S(this,ns);S(this,rs);S(this,is);D(this,Yl,t),D(this,ts,e),D(this,Jl,r),D(this,ca,i),D(this,ql,s),D(this,ns,void 0),D(this,rs,void 0),D(this,is,!1)}computeLayout(){const t=g(this,Yl);if(!t)return;g(this,ca).call(this,"layout");const e=g(this,ts).getLogicalCanvasSize();if(isNaN(e.width)||isNaN(e.height)){console.log(`NaN in canvas size: ${e.width}x${e.height}. Skipping computeLayout().`);return}const r={webGLHelper:g(this,ts),canvasSize:e,devicePixelRatio:window.devicePixelRatio??1};D(this,ns,new k0({picking:!1},{...r,clearColor:g(this,Jl).call(this)})),D(this,rs,new k0({picking:!0},{...r,framebufferInfo:g(this,ts)._pickingBufferInfo})),t.render(new R9(g(this,ns),g(this,rs)),St.create(0,0,e.width,e.height)),g(this,ql).call(this),g(this,ca).call(this,"layoutComputed")}renderAll(){var t;(t=g(this,ns))==null||t.render(),D(this,is,!0)}renderPickingFramebuffer(){g(this,is)&&(g(this,rs).render(),D(this,is,!1))}}Yl=new WeakMap,ts=new WeakMap,Jl=new WeakMap,ca=new WeakMap,ql=new WeakMap,ns=new WeakMap,rs=new WeakMap,is=new WeakMap;function T9(n){const t=o=>{throw new Error("ViewContext."+o+" is not configured.")},e={dataFlow:n.dataFlow??t("dataFlow"),glHelper:n.glHelper??t("glHelper"),animator:n.animator??t("animator"),genomeStore:n.genomeStore,fontManager:n.fontManager??t("fontManager"),createOrImportView:async function(o,a,l,c,u){const f=n.createOrImportViewWithContext;return f?f(e,o,a,l,c,u):Promise.reject(new Error("ViewContext.createOrImportView is not configured."))}},r=["requestLayoutReflow","updateTooltip","getNamedDataFromProvider","getCurrentHover","addKeyboardListener","addBroadcastListener","removeBroadcastListener","highlightView","isViewConfiguredVisible","isViewSpec"],i=n,s=e;for(const o of r)s[o]=i[o]??(()=>t(o));return e}function P9({glHelper:n,viewRoot:t,logicalWidth:e,logicalHeight:r,devicePixelRatio:i,clearColor:s="white"}){e??(e=n.getLogicalCanvasSize().width),r??(r=n.getLogicalCanvasSize().height),i??(i=window.devicePixelRatio??1);const o=n.gl,a=Math.floor(e*i),l=Math.floor(r*i),c=RC(o,[{format:o.RGBA,type:o.UNSIGNED_BYTE,minMag:o.LINEAR,wrap:o.CLAMP_TO_EDGE}],a,l),u=new k0({picking:!1},{webGLHelper:n,canvasSize:{width:e,height:r},devicePixelRatio:i,clearColor:s,framebufferInfo:c});return t.render(u,St.create(0,0,e,r)),u.render(),I6(o,c,"image/png")}ph("fasta",SN);class U2{constructor(t,e,r={}){S(this,Qe);S(this,la,[]);S(this,ss);S(this,ua);S(this,Zn);S(this,fa);S(this,os);S(this,mt);S(this,Kl,new gS);S(this,as,new Mm);S(this,Aa,new Mm);this.container=t,this.options=r,r.inputBindingContainer??(r.inputBindingContainer="default"),this.spec=e,this.viewFactory=new B9,this.namedDataProviders=[],this.animator=new wN(()=>this.renderAll()),this.genomeStore=void 0,this.viewVisibilityPredicate=i=>i.isVisibleInSpec(),this.tooltipHandlers={default:PN,refseqgene:DN,...r.tooltipHandlers??{}},this.viewRoot=void 0,D(this,fa,new KQ(t,r)),this.dpr=window.devicePixelRatio}registerNamedDataProvider(t){this.namedDataProviders.unshift(t)}getNamedDataFromProvider(t){for(const e of this.namedDataProviders){const r=e(t);if(r)return r}}updateNamedData(t,e){const r=this.viewRoot.context.dataFlow.findNamedDataSource(t);if(!r)throw new Error("No such named data source: "+t);r.dataSource.updateDynamicData(e),this.animator.requestRender()}addEventListener(t,e){g(this,as).add(t,e)}removeEventListener(t,e){g(this,as).remove(t,e)}broadcast(t,e){const r={type:t,payload:e};this.viewRoot.visit(i=>i.handleBroadcast(r)),g(this,Aa).emit(t,r)}destroy(){const t=g(this,Qe,PA);for(this.container.classList.remove("genome-spy"),t.classList.remove("loading"),g(this,Kl).removeAll(),g(this,la).forEach(e=>e()),g(this,mt).finalize(),g(this,fa).remove(),g(this,ua).destroy();this.container.firstChild;)this.container.firstChild.remove()}async launch(){var e,r;let t=!1;try{return M(this,Qe,Yx).call(this),await M(this,Qe,Jx).call(this),this.registerMouseEvents(),this.computeLayout(),this.animator.requestRender(),t=!0,!0}catch(i){const s=`${i.view?`At "${i.view.getPathString()}": `:""}${i.toString()}`;return console.error(i.stack),((r=(e=this.options).onError)==null?void 0:r.call(e,i,this.container))||cS(this.container,s),this.viewRoot&&g(this,Zn).set(this.viewRoot,"error",s),!1}finally{g(this,Qe,PA).classList.remove("loading"),t&&this.viewRoot&&g(this,Zn).set(this.viewRoot,"complete")}}async initializeVisibleViewData(){this.viewRoot&&(await pN(this.viewRoot,this.viewRoot.context.dataFlow,this.viewRoot.context.fontManager),this.viewRoot._invalidateCacheByPrefix("size","progeny"),g(this,mt).invalidateSize(),this.computeLayout(),this.animator.requestRender())}registerMouseEvents(){g(this,os).registerMouseEvents()}updateTooltip(t,e){g(this,os).updateTooltip(t,e)}exportCanvas(t,e,r,i="white"){const s=P9({glHelper:g(this,mt),viewRoot:this.viewRoot,logicalWidth:t,logicalHeight:e,devicePixelRatio:r,clearColor:i});return this.computeLayout(),this.renderAll(),s}getLogicalCanvasSize(){return g(this,mt).getLogicalCanvasSize()}computeLayout(){g(this,ss).computeLayout()}renderAll(){g(this,ss).renderAll()}renderPickingFramebuffer(){g(this,ss).renderPickingFramebuffer()}getSearchableViews(){const t=[];return this.viewRoot.visit(e=>{e instanceof dt&&e.getSearchAccessors().length>0&&t.push(e)}),t}getNamedScaleResolutions(){const t=new Map;return this.viewRoot.visit(e=>{for(const r of Object.values(e.resolutions.scale))r.name&&t.set(r.name,r)}),t}}la=new WeakMap,ss=new WeakMap,ua=new WeakMap,Zn=new WeakMap,fa=new WeakMap,os=new WeakMap,mt=new WeakMap,Kl=new WeakMap,as=new WeakMap,Aa=new WeakMap,Qe=new WeakSet,PA=function(){return this.container.querySelector(".canvas-wrapper")},Vx=function(){g(this,fa).initialize(this.viewRoot)},_x=function(){const t=this.viewRoot.paramMediator.allocateSetter("devicePixelRatio",this.dpr),e=()=>{g(this,mt).invalidateSize(),this.dpr=window.devicePixelRatio,t(this.dpr),this.computeLayout(),this.renderAll()};if(this.viewRoot.getSize().isGrowing()){const s=new ResizeObserver(e);s.observe(this.container),g(this,la).push(()=>s.disconnect())}let r=null;const i=()=>{r!=null&&(r(),e());const s=matchMedia(`(resolution: ${window.devicePixelRatio}dppx)`);s.addEventListener("change",i),r=()=>{s.removeEventListener("change",i)}};i(),r&&g(this,la).push(r)},Yx=function(){const{canvasWrapper:t,loadingIndicatorsElement:e,tooltip:r}=aS(this.container);D(this,mt,new m6(t,()=>this.viewRoot?HR(this.viewRoot):{width:void 0,height:void 0},{powerPreference:this.options.powerPreference??"default"})),this.tooltip=r,D(this,Zn,new Fm),D(this,ua,new hS(e,g(this,Zn)))},Jx=async function(){await M(this,Qe,qx).call(this);const t=M(this,Qe,Kx).call(this);await M(this,Qe,jx).call(this,t),await gN(this.viewRoot,t.dataFlow,t.fontManager,e=>this.broadcast("dataFlowBuilt",e)),M(this,Qe,Xx).call(this,t)},qx=async function(){this.spec.genome&&(this.genomeStore=new IN(this.spec.baseUrl),await this.genomeStore.initialize(this.spec.genome))},Kx=function(){const t=new u2;return t.loadingStatusRegistry=g(this,Zn),T9({dataFlow:t,glHelper:g(this,mt),animator:this.animator,genomeStore:this.genomeStore,fontManager:new xN(g(this,mt)),updateTooltip:this.updateTooltip.bind(this),getNamedDataFromProvider:this.getNamedDataFromProvider.bind(this),getCurrentHover:()=>g(this,os).getCurrentHover(),addKeyboardListener:(e,r)=>{g(this,Kl).add(e,r)},addBroadcastListener:(e,r)=>g(this,Aa).add(e,r),removeBroadcastListener:(e,r)=>g(this,Aa).remove(e,r),isViewConfiguredVisible:this.viewVisibilityPredicate,isViewSpec:e=>this.viewFactory.isViewSpec(e),createOrImportViewWithContext:(e,r,i,s,o,a)=>this.viewFactory.createOrImportView(r,e,i,s,o,a),highlightView:dS(this.container)})},jx=async function(t){const e=this.spec;e.datasets&&this.registerNamedDataProvider(r=>e.datasets[r]),this.viewRoot=await t.createOrImportView(e,null,null,N2),g(this,Zn).set(this.viewRoot,"loading"),g(this,Qe,PA).style.flexGrow=this.viewRoot.getSize().height.grow>0?"1":"0",M(this,Qe,Vx).call(this),LN(this.viewRoot),C2(this.viewRoot),M(this,Qe,Wx).call(this),g(this,mt).invalidateSize(),D(this,ss,new N9({viewRoot:this.viewRoot,glHelper:g(this,mt),getBackground:()=>this.spec.background,broadcast:this.broadcast.bind(this),onLayoutComputed:()=>g(this,ua).updateLayout()})),t.requestLayoutReflow=this.computeLayout.bind(this),M(this,Qe,_x).call(this)},Wx=function(){const t=GN(this.viewRoot);if(t.length)for(const e of t)console.warn("Selector constraints warning:",e.message)},Xx=function(t){t.requestLayoutReflow=this.computeLayout.bind(this),this.viewRoot.visit(e=>Ec(e,"size")),g(this,mt).invalidateSize(),D(this,os,new M9({viewRoot:this.viewRoot,glHelper:g(this,mt),tooltip:this.tooltip,animator:this.animator,emitEvent:g(this,as).emit.bind(g(this,as)),tooltipHandlers:this.tooltipHandlers,renderPickingFramebuffer:this.renderPickingFramebuffer.bind(this),getDevicePixelRatio:()=>this.dpr}))};const L9="data:image/svg+xml,%3csvg%20viewBox='0%200%2032%2032'%20xmlns='http://www.w3.org/2000/svg'%20fill-rule='evenodd'%20clip-rule='evenodd'%20stroke-linecap='round'%20stroke-linejoin='round'%20stroke-miterlimit='1.5'%3e%3cpath%20d='M4.7%2021.2s.4%202.3%201.3%203.6C7%2026%209.8%2028%209.8%2028s3.4-2.6%206.4-8.5c0%200%201%20.1%201.9-.4.9-.6.8-.4%201-1.2%200%200%202.9.5%206.6%200%202.1-.3%204.3-1%206.2-2.5%200%200-1.1-1.7-2.5-5.1-.5-1.3-2-1.8-4.6-4.6l-8.2%208.6-11.9%206.9z'%20fill-opacity='.1'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='%237fbbdd'/%3e%3cpath%20d='M12.4%2015.5c-.7-.5-2.4-.8-4.4-.4-2%20.4-4%201.3-4.8%201.8-.5.3-1.2%201-1.2%201.4%200%20.7.3%201.8.8%202.4.3.3.7.5%201.4.6.8%200%202.5-1.4%203.5-2%201-.6%201.6-.8%202.7-1.2l-2.9%202.4c-1.3%201.2-2.2%201.5-2.4%202.3%200%20.5%200%201.4.5%201.8.4.5.6.8%201.6.8.6%200%201%200%202.6-1.5.9-.9%202.3-3%202.7-3.7.6-1.1%201-2.2.7-3-.2-1-.4-1.4-.8-1.7zM17.4%2014.2c-.3-.5-.9-1.2-.2-2.5l1.9-3c.5-.8%202-2.3%202.6-2.6.6-.4%201.5-.6%202-.2.6.4%201%201%201.3%201.5.4.6.7%201.3.2%202-.7%201-1.6.9-2.8%201.7-1.2.8-1.9%201.2-2.5%201.9l3.8-1.8c1.3-.6%202.7-1.1%203.4-.7.8.5.8.7%201%201.4.3%201-.2%201.9-.8%202.4-.5.6-1.5.9-2.6%201.2-1.4.4-4.5%201-5.8.5-1.3-.5-1.3-1.4-1.5-1.8z'%20fill='%23fff'/%3e%3cpath%20d='M12.7%2014.8s-4-1.8-12%202.7c0%200%201%203.7%202.5%205.3%201.4%201.5%202.3%203.6%204.6%204.6%200%200%204.7-3%206.9-9.2l3-2s4.7%202.8%2012.6-1.6c0%200-.6-3.3-3-6-2.6-3-3.8-4.7-3.8-4.7s-4.1%202.3-7.5%209.3l-3.3%201.6z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='%237fbbdd'/%3e%3cpath%20d='M13.8%2015.3c.9.8.6%202%201.4%201.8%201-.2%201.4-.8%201.3-1.5%200-.7%200-.8-.4-1.6-.3-.7-1-1.1-2-.5-.7.5-1.4%201.3-1.4%201.3s.2-.3%201.1.5z'%20fill='%23fff'/%3e%3cpath%20d='M12.4%2014.9s2.1-2%203-2c1.1%200%202.3%202.7%202.3%203.5%200%20.8-2.1%202.4-3.1%202.3%200%200%200-1.2-.7-2.6-.8-1.3-1.5-1.2-1.5-1.2z'%20fill='none'%20stroke='%23000'%20stroke-width='.5'/%3e%3c/svg%3e",O9="data:image/svg+xml,%3csvg%20xmlns='http://www.w3.org/2000/svg'%20style='fill-rule:evenodd;clip-rule:evenodd;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:1.5'%20viewBox='0%200%2064%2064'%3e%3cpath%20d='M208.6%20548.2s11.2%2046.2%2031.2%2071c20%2024.9%2079.3%2061.6%2079.3%2061.6S385.6%20623%20438%20498.3c0%200%2018.1%201%2036-11.9%2017.7-12.7%2016.3-7.9%2021-24.8%200%200%2057%206.3%20131-9.7%2041.7-9.1%2084.3-26.3%20121.5-58.8%200%200-25.4-32.9-58-101.7-12.4-26.1-41.9-34.3-98.7-88L438.1%20391.2%20208.6%20548.2Z'%20style='fill-opacity:.11'%20transform='matrix(.10221%20.00684%20-.00671%20.10035%20-8%20-13.2)'/%3e%3cg%20transform='rotate(-35.4%2034.2%2080.8)%20scale(.10057)'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='a'%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23a)'%3e%3cpath%20d='M386.9%20397.2c-15.6-13.6-51.8-22.4-96.3-16.7-44.5%205.8-93.8%2021.8-111.8%2031.6-10.6%205.7-27.3%2017.3-28.1%2027.2-1.2%2014.2%202.9%2037.8%2015%2052%206%207.2%2014.2%2012.1%2028.1%2014.1%2017.9%202.6%2059-24.8%2081.6-36.2%2024-12%2038.6-14.6%2063-22.2%200%200-47%2031.6-68.2%2047.4-30.6%2022.9-51.6%2028-57.3%2045.5-3.1%209.4-.7%2027.9%207.5%2037.6%209%2011%2012.8%2017.6%2034.2%2020.1%2012.7%201.5%2022%201.2%2059.8-28.6%2021.7-17.2%2055.9-59.2%2067-74.4%2016.2-22%2023.8-43.1%2021.3-59.6-3.7-23.6-8.4-31.3-15.8-37.8Z'%20style='fill:%23fff'%20transform='scale(.88664)%20rotate(31.2%20485%20792.2)'/%3e%3cpath%20d='M484.7%20379c-5.4-11.1-17.6-28.5-.8-53.8a739%20739%200%200%201%2044.2-60.6c13.2-16.3%2046.7-46.2%2059.6-52%2013-6%2033.3-8.7%2044.2.2%2011%209.1%2016.5%2020.6%2023%2032.7%207.4%2013.8%2012.4%2029.3%201.6%2042.8-15.4%2019.2-34.3%2017-61.6%2031.5-27.7%2014.8-42.3%2023.1-55.7%2035.9%200%200%2052.2-21.6%2082-31.2%2029.8-9.7%2059.8-20%2074.8-8.5s14.6%2015.5%2018.4%2031.2c4.7%2019.4-7.2%2038-20.1%2048.6-13%2010.7-34.3%2016-57.4%2021-30.5%206.8-96.6%2015.1-124%202.6-27.5-12.6-24.4-32.8-28.2-40.5Z'%20style='fill:%23fff'%20transform='scale(.87906)%20rotate(31.2%20487.2%20893.5)'/%3e%3c/g%3e%3cpath%20d='M561.6%20349.2s-45.3-77.9-232.8-97.2c0%200-26.5%2073.2-21.1%20116%205.3%2043-4.7%2088.1%2021.4%20133.2%200%200%20114%205.5%20225.5-72.7l74.6%203.6S673.8%20534.4%20857%20554.4c0%200%2029.7-62.6%2022.2-137-8-78.7-7.5-124-7.5-124s-96.2-9.5-236.3%2068.4l-73.8-12.6Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3cg%20transform='rotate(-4.2%20-78%20211)%20scale(.10057)'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:%237fbbdd'/%3e%3cclipPath%20id='b'%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'/%3e%3c/clipPath%3e%3cg%20clip-path='url(%23b)'%3e%3cpath%20d='M413.3%20402.7c17.5%2018.9%2010%2045.7%2028.4%2043.4%2021.7-2.7%2030.9-15.7%2031.6-32.7.7-17-1-19.5-7.1-38-6.1-18.7-18.2-23.2-43.4-18.2-20.8%204.1-17.8%203-24%2010-6.4%207-14.5%2026-14.5%2026s8.4-12.7%2029%209.5Z'%20style='fill:%23fff'%20transform='matrix(.90907%200%200%20.85852%2037%2052.2)'/%3e%3c/g%3e%3cpath%20d='M385%20385.5s45.8-37.6%2065-35.4c21.7%202.5%2040.5%2057.6%2040.2%2074.3-.3%2016.7-47.3%2045.5-67.7%2041.8%200%200%203-24-10.4-52.9-13.4-28.8-27.2-27.8-27.2-27.8Z'%20style='fill:none;stroke:%23000;stroke-width:16.57px'/%3e%3c/g%3e%3c/svg%3e";async function U9(n,t,e={}){let r;if(ye(n)){if(r=document.querySelector(n),!r)throw new Error(`No such element: ${n}`)}else if(n instanceof HTMLElement)r=n;else throw new Error(`Invalid element: ${n}`);let i;try{const s=et(t)?t:await G2(t);if(s.baseUrl??(s.baseUrl=""),s.width??(s.width="container"),s.padding??(s.padding=10),r==document.body){const o=document.createElement("div");o.style.position="fixed",o.style.inset="0",o.style.overflow="hidden",r.appendChild(o),r=o}i=new U2(r,s,e),G9(i,e),await i.launch()}catch(s){r.innerText=s.toString(),console.error(s)}return{finalize(){for(i.destroy();r.firstChild;)r.firstChild.remove()},addEventListener(s,o){i.addEventListener(s,o)},removeEventListener(s,o){i.removeEventListener(s,o)},getScaleResolutionByName(s){return i.getNamedScaleResolutions().get(s)},updateNamedData:i.updateNamedData.bind(i),exportCanvas:i.exportCanvas.bind(i)}}function G9(n,t){t.namedDataProvider&&n.registerNamedDataProvider(t.namedDataProvider)}async function G2(n){let t;try{const e=await fetch(n);if(!e.ok)throw new Error(`${e.status} ${e.statusText}`);t=await e.json()}catch(e){throw new Error(`Could not load or parse configuration: ${n}, reason: ${e.message}`)}if(!t.baseUrl){const e=n.match(/^[^?#]*\//);t.baseUrl=e&&e[0]||"./"}return t}class z9{constructor(t){this.blob=t}async read(t,e=0){if(!t)return new Uint8Array(0);const r=e,i=r+t,s=this.blob.slice(r,i);return s.bytes?s.bytes():new Uint8Array(await s.arrayBuffer())}async readFile(t){const e=typeof t=="string"?t:t==null?void 0:t.encoding;if(e==="utf8")return this.blob.text();if(e)throw new Error(`unsupported encoding: ${e}`);return this.blob.bytes?this.blob.bytes():new Uint8Array(await this.blob.arrayBuffer())}async stat(){return{size:this.blob.size}}async close(){}}function H9(n){return(typeof n=="object"&&n!==null&&"message"in n?n.message:`${n}`).replace(/\.$/,"")}class Cn{constructor(t,e={}){this.baseOverrides={},this.url=t;const r=e.fetch||globalThis.fetch.bind(globalThis);e.overrides&&(this.baseOverrides=e.overrides),this.fetchImplementation=r}async fetch(t,e){const r=s=>new Error(`${H9(s)} fetching ${t}`,{cause:s});let i;try{i=await this.fetchImplementation(t,e)}catch(s){if(`${s}`.includes("Failed to fetch")){console.warn(`generic-filehandle: refetching ${t} to attempt to work around chrome CORS header caching bug`);try{i=await this.fetchImplementation(t,{...e,cache:"reload"})}catch(o){throw r(o)}}else throw r(s)}return i}async read(t,e,r={}){if(t===0)return new Uint8Array(0);const{headers:i={},signal:s,overrides:o={}}=r;t<1/0?i.range=`bytes=${e}-${e+t-1}`:t===1/0&&e!==0&&(i.range=`bytes=${e}-`);const a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(a.status===200&&e===0||a.status===206){const l=a.headers.get("content-range"),c=/\/(\d+)$/.exec(l||"");c!=null&&c[1]&&(this._stat={size:parseInt(c[1],10)});const u=a.bytes?await a.bytes():new Uint8Array(await a.arrayBuffer());return u.byteLength<=t?u:u.subarray(0,t)}throw new Error(a.status===200?`${this.url} fetch returned status 200, expected 206`:`HTTP ${a.status} fetching ${this.url}`)}async readFile(t={}){let e,r;if(typeof t=="string")e=t,r={};else{e=t.encoding;const{encoding:l,...c}=t;r=c}const{headers:i={},signal:s,overrides:o={}}=r,a=await this.fetch(this.url,{...this.baseOverrides,...o,headers:{...this.baseOverrides.headers,...o.headers,...i},method:"GET",redirect:"follow",mode:"cors",signal:s});if(!a.ok)throw new Error(`HTTP ${a.status} fetching ${this.url}`);if(e==="utf8")return a.text();if(e)throw new Error(`unsupported encoding: ${e}`);return a.bytes?a.bytes():new Uint8Array(await a.arrayBuffer())}async stat(){if(!this._stat&&(await this.read(10,0),!this._stat))throw new Error(`unable to determine size of file at ${this.url}`);return this._stat}async close(){}}class st{readFile(){throw new Error("unimplemented")}read(){throw new Error("unimplemented")}close(){throw new Error("unimplemented")}}const Nc=Object.freeze(Object.defineProperty({__proto__:null,BlobFile:z9,LocalFile:st,RemoteFile:Cn},Symbol.toStringTag,{value:"Module"})),z2=65536,V9=z2*z2;function F0(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*V9+(e>>>0)}const _f=1;function H2(n,t,e){const r=t[_f],i=e?e[_f]:1/0;return r<=n&&i>n?0:r<n?-1:1}class _9{constructor({filehandle:t}){W(this,"filehandle");W(this,"index");this.filehandle=t}_getIndex(){return this.index||(this.index=this._readIndex().catch(t=>{throw this.index=void 0,t})),this.index}async _readIndex(){const t=await this.filehandle.read(8,0),e=F0(t);if(!e)return[[0,0]];const r=new Array(e+1);r[0]=[0,0];const i=16*e;if(i>Number.MAX_SAFE_INTEGER)throw new TypeError("integer overflow");const s=await this.filehandle.read(i,8);for(let o=0;o<e;o+=1){const a=F0(s,o*16),l=F0(s,o*16+8);r[o+1]=[a,l]}return r}async getLastBlock(){return(await this._getIndex()).at(-1)}async getRelevantBlocksForRead(t,e){const r=e+t;if(t===0)return[];const i=await this._getIndex(),s=[];let o=0,a=i.length-1,l=Math.floor(i.length/2),c=H2(e,i[l],i[l+1]);for(;c!==0;)c>0?a=l-1:c<0&&(o=l+1),l=Math.ceil((a-o)/2)+o,c=H2(e,i[l],i[l+1]);s.push(i[l]);let u=l+1;for(;u<i.length&&(s.push(i[u]),!(i[u][_f]>=r));u+=1);return s[s.length-1][_f]<r&&s.push([]),s}}var V2=0,M0=2,Yf=4,Bi=0,Jf=1,Y9=2,J9=-5;function q9(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function K9(n){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var r in e)q9(e,r)&&(n[r]=e[r])}}return n}function _2(n,t){return n.length===t?n:n.subarray?n.subarray(0,t):(n.length=t,n)}var Tc={arraySet:function(n,t,e,r,i){if(t.subarray&&n.subarray){n.set(t.subarray(e,e+r),i);return}for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){var t,e,r,i,s,o;for(r=0,t=0,e=n.length;t<e;t++)r+=n[t].length;for(o=new Uint8Array(r),i=0,t=0,e=n.length;t<e;t++)s=n[t],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},Pc={arraySet:function(n,t,e,r,i){for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let Ys=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return Ys=()=>n,n},vr=(n,t,e,r,i)=>(vr=Ys()?Tc.arraySet:Pc.arraySet,vr(n,t,e,r,i)),R0=n=>(R0=Ys()?Tc.flattenChunks:Pc.flattenChunks,R0(n)),Js=n=>(Js=Ys()?Tc.Buf8:Pc.Buf8,Js(n)),qs=n=>(qs=Ys()?Tc.Buf16:Pc.Buf16,qs(n)),Ks=n=>(Ks=Ys()?Tc.Buf32:Pc.Buf32,Ks(n)),Y2=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return Y2=()=>n,n},J2=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return J2=()=>n,n},N0=function(n){for(var t=Js(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,N0=r=>t[r],t[n]};function q2(n){var t,e,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(a),s=0,i=0;s<a;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),e<128?t[s++]=e:e<2048?(t[s++]=192|e>>>6,t[s++]=128|e&63):e<65536?(t[s++]=224|e>>>12,t[s++]=128|e>>>6&63,t[s++]=128|e&63):(t[s++]=240|e>>>18,t[s++]=128|e>>>12&63,t[s++]=128|e>>>6&63,t[s++]=128|e&63);return t}function j9(n,t){if(t<65534&&(n.subarray&&J2()||!n.subarray&&Y2()))return String.fromCharCode.apply(null,_2(n,t));for(var e="",r=0;r<t;r++)e+=String.fromCharCode(n[r]);return e}function W9(n){for(var t=new Uint8Array(n.length),e=0,r=t.length;e<r;e++)t[e]=n.charCodeAt(e);return t}function X9(n,t){var e,r,i,s,o=t||n.length,a=new Array(o*2);for(r=0,e=0;e<o;){if(i=n[e++],i<128){a[r++]=i;continue}if(s=N0(i),s>4){a[r++]=65533,e+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&e<o;)i=i<<6|n[e++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return j9(a,r)}function Z9(n,t){var e;for(t=t||n.length,t>n.length&&(t=n.length),e=t-1;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+N0(n[e])>t?e:t}function $9(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function T0(n,t,e,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;e!==0;){o=e>2e3?2e3:e,e-=o;do i=i+t[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function eT(){for(var n,t=[],e=0;e<256;e++){n=e;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t}let K2=function(){const n=eT();return K2=()=>n,n};function yn(n,t,e,r){var i=K2(),s=r+e;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^t[o])&255];return n^-1}var qf=30,tT=12;function nT(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C,m,w,b,y,x,B,E,Q,F,k;e=n.state,r=n.next_in,F=n.input,i=r+(n.avail_in-5),s=n.next_out,k=n.output,o=s-(t-n.avail_out),a=s+(n.avail_out-257),l=e.dmax,c=e.wsize,u=e.whave,f=e.wnext,h=e.window,A=e.hold,d=e.bits,p=e.lencode,C=e.distcode,m=(1<<e.lenbits)-1,w=(1<<e.distbits)-1;e:do{d<15&&(A+=F[r++]<<d,d+=8,A+=F[r++]<<d,d+=8),b=p[A&m];t:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y===0)k[s++]=b&65535;else if(y&16){x=b&65535,y&=15,y&&(d<y&&(A+=F[r++]<<d,d+=8),x+=A&(1<<y)-1,A>>>=y,d-=y),d<15&&(A+=F[r++]<<d,d+=8,A+=F[r++]<<d,d+=8),b=C[A&w];n:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y&16){if(B=b&65535,y&=15,d<y&&(A+=F[r++]<<d,d+=8,d<y&&(A+=F[r++]<<d,d+=8)),B+=A&(1<<y)-1,B>l){n.msg="invalid distance too far back",e.mode=qf;break e}if(A>>>=y,d-=y,y=s-o,B>y){if(y=B-y,y>u&&e.sane){n.msg="invalid distance too far back",e.mode=qf;break e}if(E=0,Q=h,f===0){if(E+=c-y,y<x){x-=y;do k[s++]=h[E++];while(--y);E=s-B,Q=k}}else if(f<y){if(E+=c+f-y,y-=f,y<x){x-=y;do k[s++]=h[E++];while(--y);if(E=0,f<x){y=f,x-=y;do k[s++]=h[E++];while(--y);E=s-B,Q=k}}}else if(E+=f-y,y<x){x-=y;do k[s++]=h[E++];while(--y);E=s-B,Q=k}for(;x>2;)k[s++]=Q[E++],k[s++]=Q[E++],k[s++]=Q[E++],x-=3;x&&(k[s++]=Q[E++],x>1&&(k[s++]=Q[E++]))}else{E=s-B;do k[s++]=k[E++],k[s++]=k[E++],k[s++]=k[E++],x-=3;while(x>2);x&&(k[s++]=k[E++],x>1&&(k[s++]=k[E++]))}}else if((y&64)===0){b=C[(b&65535)+(A&(1<<y)-1)];continue n}else{n.msg="invalid distance code",e.mode=qf;break e}break}}else if((y&64)===0){b=p[(b&65535)+(A&(1<<y)-1)];continue t}else if(y&32){e.mode=tT;break e}else{n.msg="invalid literal/length code",e.mode=qf;break e}break}}while(r<i&&s<a);x=d>>3,r-=x,d-=x<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),e.hold=A,e.bits=d}var js=15,j2=852,W2=592,X2=0,P0=1,Z2=2,rT=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],iT=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],sT=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],oT=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function Lc(n,t,e,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,p=0,C=0,m=0,w=0,b,y,x,B,E,Q=null,F=0,k,P=qs(js+1),T=qs(js+1),O=null,z=0,J,V,q;for(c=0;c<=js;c++)P[c]=0;for(u=0;u<r;u++)P[t[e+u]]++;for(A=l,h=js;h>=1&&P[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&P[f]===0;f++);for(A<f&&(A=f),C=1,c=1;c<=js;c++)if(C<<=1,C-=P[c],C<0)return-1;if(C>0&&(n===X2||h!==1))return-1;for(T[1]=0,c=1;c<js;c++)T[c+1]=T[c]+P[c];for(u=0;u<r;u++)t[e+u]!==0&&(o[T[t[e+u]]++]=u);if(n===X2?(Q=O=o,k=19):n===P0?(Q=rT,F-=257,O=iT,z-=257,k=256):(Q=sT,O=oT,k=-1),w=0,u=0,c=f,E=s,d=A,p=0,x=-1,m=1<<A,B=m-1,n===P0&&m>j2||n===Z2&&m>W2)return 1;for(;;){J=c-p,o[u]<k?(V=0,q=o[u]):o[u]>k?(V=O[z+o[u]],q=Q[F+o[u]]):(V=96,q=0),b=1<<c-p,y=1<<d,f=y;do y-=b,i[E+(w>>p)+y]=J<<24|V<<16|q|0;while(y!==0);for(b=1<<c-1;w&b;)b>>=1;if(b!==0?(w&=b-1,w+=b):w=0,u++,--P[c]===0){if(c===h)break;c=t[e+o[u]]}if(c>A&&(w&B)!==x){for(p===0&&(p=A),E+=f,d=c-p,C=1<<d;d+p<h&&(C-=P[d+p],!(C<=0));)d++,C<<=1;if(m+=1<<d,n===P0&&m>j2||n===Z2&&m>W2)return 1;x=w&B,i[x]=A<<24|d<<16|E-s|0}}return w!==0&&(i[E+w]=c-p<<24|64<<16|0),a.bits=A,0}var aT=0,$2=1,eI=2,tI=4,vi=0,cT=1,lT=2,Ot=-2,nI=-3,rI=-4,uT=-5,iI=8,sI=1,oI=2,aI=3,cI=4,lI=5,uI=6,fI=7,AI=8,hI=9,dI=10,Kf=11,Gn=12,L0=13,gI=14,O0=15,pI=16,mI=17,CI=18,yI=19,jf=20,Wf=21,wI=22,II=23,EI=24,bI=25,xI=26,U0=27,BI=28,vI=29,ve=30,SI=31,fT=32,AT=852,hT=592;function QI(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function dT(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=qs(320),this.work=qs(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function gT(n){var t;return!n||!n.state?Ot:(t=n.state,n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=sI,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Ks(AT),t.distcode=t.distdyn=Ks(hT),t.sane=1,t.back=-1,vi)}function pT(n){var t;return!n||!n.state?Ot:(t=n.state,t.wsize=0,t.whave=0,t.wnext=0,gT(n))}function mT(n,t){var e,r;return!n||!n.state||(r=n.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Ot:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,pT(n))}function CT(n,t){var e,r;return n?(r=new dT,n.state=r,r.window=null,e=mT(n,t),e!==vi&&(n.state=null),e):Ot}var DI=!0,G0,z0;function yT(n){if(DI){var t;for(G0=Ks(512),z0=Ks(32),t=0;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(Lc($2,n.lens,0,288,G0,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;Lc(eI,n.lens,0,32,z0,0,n.work,{bits:5}),DI=!1}n.lencode=G0,n.lenbits=9,n.distcode=z0,n.distbits=5}function kI(n,t,e,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=Js(s.wsize)),r>=s.wsize?(vr(s.window,t,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),vr(s.window,t,e-r,i,s.wnext),r-=i,r?(vr(s.window,t,e-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function wT(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C=0,m,w,b,y,x,B,E,Q,F=Js(4),k,P,T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Ot;e=n.state,e.mode===Gn&&(e.mode=L0),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,f=a,h=l,Q=vi;e:for(;;)switch(e.mode){case sI:if(e.wrap===0){e.mode=L0;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.wrap&2&&c===35615){e.check=0,F[0]=c&255,F[1]=c>>>8&255,e.check=yn(e.check,F,2,0),c=0,u=0,e.mode=oI;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",e.mode=ve;break}if((c&15)!==iI){n.msg="unknown compression method",e.mode=ve;break}if(c>>>=4,u-=4,E=(c&15)+8,e.wbits===0)e.wbits=E;else if(E>e.wbits){n.msg="invalid window size",e.mode=ve;break}e.dmax=1<<E,n.adler=e.check=1,e.mode=c&512?dI:Gn,c=0,u=0;break;case oI:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.flags=c,(e.flags&255)!==iI){n.msg="unknown compression method",e.mode=ve;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=ve;break}e.head&&(e.head.text=c>>8&1),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,e.check=yn(e.check,F,2,0)),c=0,u=0,e.mode=aI;case aI:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.time=c),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,F[2]=c>>>16&255,F[3]=c>>>24&255,e.check=yn(e.check,F,4,0)),c=0,u=0,e.mode=cI;case cI:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.xflags=c&255,e.head.os=c>>8),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,e.check=yn(e.check,F,2,0)),c=0,u=0,e.mode=lI;case lI:if(e.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length=c,e.head&&(e.head.extra_len=c),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,e.check=yn(e.check,F,2,0)),c=0,u=0}else e.head&&(e.head.extra=null);e.mode=uI;case uI:if(e.flags&1024&&(A=e.length,A>a&&(A=a),A&&(e.head&&(E=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),vr(e.head.extra,r,s,A,E)),e.flags&512&&(e.check=yn(e.check,r,A,s)),a-=A,s+=A,e.length-=A),e.length))break e;e.length=0,e.mode=fI;case fI:if(e.flags&2048){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.name+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=yn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=AI;case AI:if(e.flags&4096){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.comment+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=yn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.comment=null);e.mode=hI;case hI:if(e.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.check&65535)){n.msg="header crc mismatch",e.mode=ve;break}c=0,u=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=Gn;break;case dI:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=e.check=QI(c),c=0,u=0,e.mode=Kf;case Kf:if(e.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,lT;n.adler=e.check=1,e.mode=Gn;case Gn:case L0:if(e.last){c>>>=u&7,u-=u&7,e.mode=U0;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(e.last=c&1,c>>>=1,u-=1,c&3){case 0:e.mode=gI;break;case 1:yT(e),e.mode=jf;break;case 2:e.mode=mI;break;case 3:n.msg="invalid block type",e.mode=ve}c>>>=2,u-=2;break;case gI:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",e.mode=ve;break}e.length=c&65535,c=0,u=0,e.mode=O0;case O0:e.mode=pI;case pI:if(A=e.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;vr(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,e.length-=A;break}e.mode=Gn;break;case mI:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.nlen=(c&31)+257,c>>>=5,u-=5,e.ndist=(c&31)+1,c>>>=5,u-=5,e.ncode=(c&15)+4,c>>>=4,u-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=ve;break}e.have=0,e.mode=CI;case CI:for(;e.have<e.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.lens[T[e.have++]]=c&7,c>>>=3,u-=3}for(;e.have<19;)e.lens[T[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,k={bits:e.lenbits},Q=Lc(aT,e.lens,0,19,e.lencode,0,e.work,k),e.lenbits=k.bits,Q){n.msg="invalid code lengths set",e.mode=ve;break}e.have=0,e.mode=yI;case yI:for(;e.have<e.nlen+e.ndist;){for(;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,w=C>>>16&255,b=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(b<16)c>>>=m,u-=m,e.lens[e.have++]=b;else{if(b===16){for(P=m+2;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=m,u-=m,e.have===0){n.msg="invalid bit length repeat",e.mode=ve;break}E=e.lens[e.have-1],A=3+(c&3),c>>>=2,u-=2}else if(b===17){for(P=m+3;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=3+(c&7),c>>>=3,u-=3}else{for(P=m+7;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=11+(c&127),c>>>=7,u-=7}if(e.have+A>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=ve;break}for(;A--;)e.lens[e.have++]=E}}if(e.mode===ve)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=ve;break}if(e.lenbits=9,k={bits:e.lenbits},Q=Lc($2,e.lens,0,e.nlen,e.lencode,0,e.work,k),e.lenbits=k.bits,Q){n.msg="invalid literal/lengths set",e.mode=ve;break}if(e.distbits=6,e.distcode=e.distdyn,k={bits:e.distbits},Q=Lc(eI,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,k),e.distbits=k.bits,Q){n.msg="invalid distances set",e.mode=ve;break}e.mode=jf;case jf:e.mode=Wf;case Wf:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,nT(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,e.mode===Gn&&(e.back=-1);break}for(e.back=0;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,w=C>>>16&255,b=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(w&&(w&240)===0){for(y=m,x=w,B=b;C=e.lencode[B+((c&(1<<y+x)-1)>>y)],m=C>>>24,w=C>>>16&255,b=C&65535,!(y+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=m,u-=m,e.back+=m,e.length=b,w===0){e.mode=xI;break}if(w&32){e.back=-1,e.mode=Gn;break}if(w&64){n.msg="invalid literal/length code",e.mode=ve;break}e.extra=w&15,e.mode=wI;case wI:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=II;case II:for(;C=e.distcode[c&(1<<e.distbits)-1],m=C>>>24,w=C>>>16&255,b=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((w&240)===0){for(y=m,x=w,B=b;C=e.distcode[B+((c&(1<<y+x)-1)>>y)],m=C>>>24,w=C>>>16&255,b=C&65535,!(y+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=m,u-=m,e.back+=m,w&64){n.msg="invalid distance code",e.mode=ve;break}e.offset=b,e.extra=w&15,e.mode=EI;case EI:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.offset+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=ve;break}e.mode=bI;case bI:if(l===0)break e;if(A=h-l,e.offset>A){if(A=e.offset-A,A>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=ve;break}A>e.wnext?(A-=e.wnext,d=e.wsize-A):d=e.wnext-A,A>e.length&&(A=e.length),p=e.window}else p=i,d=o-e.offset,A=e.length;A>l&&(A=l),l-=A,e.length-=A;do i[o++]=p[d++];while(--A);e.length===0&&(e.mode=Wf);break;case xI:if(l===0)break e;i[o++]=e.length,l--,e.mode=Wf;break;case U0:if(e.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,e.total+=h,h&&(n.adler=e.check=e.flags?yn(e.check,i,h,o-h):T0(e.check,i,h,o-h)),h=l,(e.flags?c:QI(c))!==e.check){n.msg="incorrect data check",e.mode=ve;break}c=0,u=0}e.mode=BI;case BI:if(e.wrap&&e.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=ve;break}c=0,u=0}e.mode=vI;case vI:Q=cT;break e;case ve:Q=nI;break e;case SI:return rI;case fT:default:return Ot}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,(e.wsize||h!==n.avail_out&&e.mode<ve&&(e.mode<U0||t!==tI))&&kI(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,e.total+=h,e.wrap&&h&&(n.adler=e.check=e.flags?yn(e.check,i,h,n.next_out-h):T0(e.check,i,h,n.next_out-h)),n.data_type=e.bits+(e.last?64:0)+(e.mode===Gn?128:0)+(e.mode===jf||e.mode===O0?256:0),(f===0&&h===0||t===tI)&&Q===vi&&(Q=uT),Q}function IT(n){if(!n||!n.state)return Ot;var t=n.state;return t.window&&(t.window=null),n.state=null,vi}function ET(n,t){var e;return!n||!n.state||(e=n.state,(e.wrap&2)===0)?Ot:(e.head=t,t.done=!1,vi)}function FI(n,t){var e=t.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==Kf)?Ot:r.mode===Kf&&(i=1,i=T0(i,t,e,0),i!==r.check)?nI:(s=kI(n,t,e,e),s?(r.mode=SI,rI):(r.havedict=1,vi))}const H0={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function bT(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var V0=Object.prototype.toString;let MI=class fp{constructor(t){if(!(this instanceof fp))return new fp(t);this.options=K9({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new bT,this.strm.avail_out=0;var r=CT(this.strm,e.windowBits);if(r!==Bi)throw new Error(H0[r]);if(this.header=new $9,ET(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=q2(e.dictionary):V0.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=FI(this.strm,e.dictionary),r!==Bi)))throw new Error(H0[r])}push(t,e){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?Yf:V2,typeof t=="string"?r.input=W9(t):V0.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=Js(i),r.next_out=0,r.avail_out=i),o=wT(r,V2),o===Y9&&s&&(typeof s=="string"?f=q2(s):V0.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=FI(this.strm,f)),o===J9&&h===!0&&(o=Bi,h=!1),o!==Jf&&o!==Bi)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===Jf||r.avail_in===0&&(a===Yf||a===M0))&&(this.options.to==="string"?(l=Z9(r.output,r.next_out),c=r.next_out-l,u=X9(r.output,l),r.next_out=c,r.avail_out=i-c,c&&vr(r.output,r.output,l,c,0),this.onData(u)):this.onData(_2(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==Jf);return o===Jf&&(a=Yf),a===Yf?(o=IT(this.strm),this.onEnd(o),this.ended=!0,o===Bi):(a===M0&&(this.onEnd(Bi),r.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===Bi&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=R0(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}};function xT(n,t){var e=new MI(t);if(e.push(n,!0),e.err)throw e.msg||H0[e.err];return e.result}function BT(n,t){return t=t||{},t.raw=!0,xT(n,t)}function vT(n){let t=0;for(const e of n)t+=e.length;return t}function RI(n,t){const e=new Uint8Array(t??vT(n));let r=0;for(const i of n)e.set(i,r),r+=i.length;return e}async function ST(n){try{let t,e=0,r;const i=[];let s=0;do{const o=n.subarray(e);if(r=new MI(void 0),{strm:t}=r,r.push(o,M0),r.err)throw new Error(r.msg);e+=t.next_in;const a=r.result;i.push(a),s+=a.length}while(t.avail_in);return RI(i,s)}catch(t){throw/incorrect header check/.exec(`${t}`)?new Error("problem decompressing block: incorrect gzip header check"):t}}class NI{constructor({filehandle:t,gziFilehandle:e}){W(this,"filehandle");W(this,"gzi");this.filehandle=t,this.gzi=new _9({filehandle:e})}async _readAndUncompressBlock(t,e){let r=e;r||(r=(await this.filehandle.stat()).size);const i=r-t,s=await this.filehandle.read(i,t);return ST(s)}async read(t,e){const r=await this.gzi.getRelevantBlocksForRead(t,e),i=[];for(let s=0;s<r.length-1;s+=1){const o=await this._readAndUncompressBlock(r[s][0],r[s+1][0]),[,a]=r[s],l=a>=e?0:e-a,c=Math.min(e+t,a+o.length)-a;l>=0&&l<o.length&&i.push(o.subarray(l,c))}return RI(i)}}function TI(n,t){return n.offset+n.lineBytes*Math.floor(t/n.lineLength)+t%n.lineLength}async function QT(n,t={}){const e=new TextDecoder("utf8");return Object.fromEntries(e.decode(await n.readFile(t)).split(/\r?\n/).map(r=>r.trim()).filter(r=>!!r).map(r=>r.split(" ")).map(r=>{var i;if((i=r[0])!=null&&i.startsWith(">"))throw new Error("found > in sequence name, might have supplied FASTA file for the FASTA index");return[r[0],{name:r[0],length:+r[1],start:0,end:+r[1],offset:+r[2],lineLength:+r[3],lineBytes:+r[4]}]}))}class PI{constructor({fasta:t,fai:e,path:r,faiPath:i}){if(t)this.fasta=t;else if(r)this.fasta=new st(r);else throw new Error("Need to pass filehandle for fasta or path to localfile");if(e)this.fai=e;else if(i)this.fai=new st(i);else if(r)this.fai=new st(`${r}.fai`);else throw new Error("Need to pass filehandle for or path to localfile")}async _getIndexes(t){return this.indexes||(this.indexes=QT(this.fai,t).catch(e=>{throw this.indexes=void 0,e})),this.indexes}async getSequenceNames(t){return Object.keys(await this._getIndexes(t))}async getSequenceSizes(t){const e={},r=await this._getIndexes(t);for(const i of Object.values(r))e[i.name]=i.length;return e}async getSequenceSize(t,e){var i;return(i=(await this._getIndexes(e))[t])==null?void 0:i.length}async hasReferenceSequence(t,e){return!!(await this._getIndexes(e))[t]}async getResiduesByName(t,e,r,i){const s=(await this._getIndexes(i))[t];return s?this._fetchFromIndexEntry(s,e,r,i):void 0}async getSequence(t,e,r,i){return this.getResiduesByName(t,e,r,i)}async _fetchFromIndexEntry(t,e=0,r,i){let s=r;if(e<0)throw new TypeError("regionStart cannot be less than 0");if((s===void 0||s>t.length)&&(s=t.length),e>=s)return"";const o=TI(t,e),a=TI(t,s)-o,c=new TextDecoder("utf8").decode(await this.fasta.read(a,o,i)).replace(/\s+/g,"");if(/[^\x20-\x7e]/.test(c.slice(0,1e3)))throw new Error("Non-ASCII characters detected in sequence. The file may be gzip compressed. Use BgzipIndexedFasta for bgzip files, or decompress the file.");return c}}class DT extends PI{constructor({fasta:t,path:e,fai:r,faiPath:i,gzi:s,gziPath:o}){super({fasta:t,path:e,fai:r,faiPath:i}),t&&s?this.fasta=new NI({filehandle:t,gziFilehandle:s}):e&&o&&(this.fasta=new NI({filehandle:new st(e),gziFilehandle:new st(o)}))}}function LI(n){return n.split(">").filter(t=>/\S/.test(t)).map(t=>{const[e,...r]=t.split(`
700
+ `),[i,...s]=e.split(" "),o=r.join("").replace(/\s/g,"");return{id:i,description:s.join(" "),sequence:o}})}class kT{constructor({fasta:t,path:e}){if(t)this.fasta=t;else if(e)this.fasta=new st(e);else throw new Error("Need to pass fasta or path");this.data=this.fasta.readFile().then(r=>{const s=new TextDecoder("utf8").decode(r);return LI(s)})}async fetch(t,e,r){const s=(await this.data).find(a=>a.id===t),o=r-e;if(!s)throw new Error(`no sequence with id ${t} exists`);return s.sequence.slice(e,o)}async getSequenceNames(){return(await this.data).map(e=>e.id)}}const FT=Object.freeze(Object.defineProperty({__proto__:null,BgzipIndexedFasta:DT,FetchableSmallFasta:kT,IndexedFasta:PI,parseSmallFasta:LI},Symbol.toStringTag,{value:"Module"})),OI=BigInt(32);function MT(n,t,e){const r=+!!e,i=+!e;return BigInt(n.getInt32(t,e)*i+n.getInt32(t+4,e)*r)<<OI|BigInt(n.getUint32(t,e)*r+n.getUint32(t+4,e)*i)}function RT(n,t,e){const r=n.getUint32(t,e),i=n.getUint32(t+4,e),s=+!!e,o=+!e;return BigInt(r*o+i*s)<<OI|BigInt(r*s+i*o)}"getBigInt64"in DataView||(DataView.prototype.getBigInt64=function(n,t){return MT(this,n,t)}),"getBigUint64"in DataView||(DataView.prototype.getBigUint64=function(n,t){return RT(this,n,t)});var _0=function(n,t){return _0=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,r){e.__proto__=r}||function(e,r){for(var i in r)Object.prototype.hasOwnProperty.call(r,i)&&(e[i]=r[i])},_0(n,t)};function Y0(n,t){if(typeof t!="function"&&t!==null)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");_0(n,t);function e(){this.constructor=n}n.prototype=t===null?Object.create(t):(e.prototype=t.prototype,new e)}function NT(n,t,e,r){function i(s){return s instanceof e?s:new e(function(o){o(s)})}return new(e||(e=Promise))(function(s,o){function a(u){try{c(r.next(u))}catch(f){o(f)}}function l(u){try{c(r.throw(u))}catch(f){o(f)}}function c(u){u.done?s(u.value):i(u.value).then(a,l)}c((r=r.apply(n,t||[])).next())})}function UI(n,t){var e={label:0,sent:function(){if(s[0]&1)throw s[1];return s[1]},trys:[],ops:[]},r,i,s,o=Object.create((typeof Iterator=="function"?Iterator:Object).prototype);return o.next=a(0),o.throw=a(1),o.return=a(2),typeof Symbol=="function"&&(o[Symbol.iterator]=function(){return this}),o;function a(c){return function(u){return l([c,u])}}function l(c){if(r)throw new TypeError("Generator is already executing.");for(;o&&(o=0,c[0]&&(e=0)),e;)try{if(r=1,i&&(s=c[0]&2?i.return:c[0]?i.throw||((s=i.return)&&s.call(i),0):i.next)&&!(s=s.call(i,c[1])).done)return s;switch(i=0,s&&(c=[c[0]&2,s.value]),c[0]){case 0:case 1:s=c;break;case 4:return e.label++,{value:c[1],done:!1};case 5:e.label++,i=c[1],c=[0];continue;case 7:c=e.ops.pop(),e.trys.pop();continue;default:if(s=e.trys,!(s=s.length>0&&s[s.length-1])&&(c[0]===6||c[0]===2)){e=0;continue}if(c[0]===3&&(!s||c[1]>s[0]&&c[1]<s[3])){e.label=c[1];break}if(c[0]===6&&e.label<s[1]){e.label=s[1],s=c;break}if(s&&e.label<s[2]){e.label=s[2],e.ops.push(c);break}s[2]&&e.ops.pop(),e.trys.pop();continue}c=t.call(n,e)}catch(u){c=[6,u],i=0}finally{r=s=0}if(c[0]&5)throw c[1];return{value:c[0]?c[1]:void 0,done:!0}}}function Oc(n){var t=typeof Symbol=="function"&&Symbol.iterator,e=t&&n[t],r=0;if(e)return e.call(n);if(n&&typeof n.length=="number")return{next:function(){return n&&r>=n.length&&(n=void 0),{value:n&&n[r++],done:!n}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function J0(n,t){var e=typeof Symbol=="function"&&n[Symbol.iterator];if(!e)return n;var r=e.call(n),i,s=[],o;try{for(;(t===void 0||t-- >0)&&!(i=r.next()).done;)s.push(i.value)}catch(a){o={error:a}}finally{try{i&&!i.done&&(e=r.return)&&e.call(r)}finally{if(o)throw o.error}}return s}function q0(n,t,e){if(e||arguments.length===2)for(var r=0,i=t.length,s;r<i;r++)(s||!(r in t))&&(s||(s=Array.prototype.slice.call(t,0,r)),s[r]=t[r]);return n.concat(s||Array.prototype.slice.call(t))}function Ws(n){return this instanceof Ws?(this.v=n,this):new Ws(n)}function TT(n,t,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var r=e.apply(n,t||[]),i,s=[];return i=Object.create((typeof AsyncIterator=="function"?AsyncIterator:Object).prototype),a("next"),a("throw"),a("return",o),i[Symbol.asyncIterator]=function(){return this},i;function o(A){return function(d){return Promise.resolve(d).then(A,f)}}function a(A,d){r[A]&&(i[A]=function(p){return new Promise(function(C,m){s.push([A,p,C,m])>1||l(A,p)})},d&&(i[A]=d(i[A])))}function l(A,d){try{c(r[A](d))}catch(p){h(s[0][3],p)}}function c(A){A.value instanceof Ws?Promise.resolve(A.value.v).then(u,f):h(s[0][2],A)}function u(A){l("next",A)}function f(A){l("throw",A)}function h(A,d){A(d),s.shift(),s.length&&l(s[0][0],s[0][1])}}function PT(n){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=n[Symbol.asyncIterator],e;return t?t.call(n):(n=typeof Oc=="function"?Oc(n):n[Symbol.iterator](),e={},r("next"),r("throw"),r("return"),e[Symbol.asyncIterator]=function(){return this},e);function r(s){e[s]=n[s]&&function(o){return new Promise(function(a,l){o=n[s](o),i(a,l,o.done,o.value)})}}function i(s,o,a,l){Promise.resolve(l).then(function(c){s({value:c,done:a})},o)}}typeof SuppressedError=="function"&&SuppressedError;function Ue(n){return typeof n=="function"}function GI(n){var t=function(r){Error.call(r),r.stack=new Error().stack},e=n(t);return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}var K0=GI(function(n){return function(e){n(this),this.message=e?e.length+` errors occurred during unsubscription:
720
701
  `+e.map(function(r,i){return i+1+") "+r.toString()}).join(`
721
- `):"",this.name="UnsubscriptionError",this.errors=e}});function Iw(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var Vd=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,r,i,s;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=sc(o),l=a.next();!l.done;l=a.next()){var c=l.value;c.remove(this)}}catch(g){t={error:g}}finally{try{l&&!l.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else o.remove(this);var u=this.initialTeardown;if(ze(u))try{u()}catch(g){s=g instanceof _d?g.errors:[g]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var h=sc(f),A=h.next();!A.done;A=h.next()){var d=A.value;try{bw(d)}catch(g){s=s??[],g instanceof _d?s=Yd(Yd([],Hd(s)),Hd(g.errors)):s.push(g)}}}catch(g){r={error:g}}finally{try{A&&!A.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}}if(s)throw new _d(s)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)bw(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&Iw(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&Iw(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})();Vd.EMPTY;function Ew(n){return n instanceof Vd||n&&"closed"in n&&ze(n.remove)&&ze(n.add)&&ze(n.unsubscribe)}function bw(n){ze(n)?n():n.unsubscribe()}var UN={Promise:void 0},GN={setTimeout:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setTimeout.apply(void 0,Yd([n,t],Hd(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function xw(n){GN.setTimeout(function(){throw n})}function Bw(){}function zN(n){n()}var Jd=(function(n){zd(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,Ew(e)&&e.add(r)):r.destination=_N,r}return t.create=function(e,r,i){return new tf(e,r,i)},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t})(Vd),HN=(function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(r){nf(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){nf(r)}else nf(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){nf(e)}},n})(),tf=(function(n){zd(t,n);function t(e,r,i){var s=n.call(this)||this,o;return ze(e)||!e?o={next:e??void 0,error:r??void 0,complete:i??void 0}:o=e,s.destination=new HN(o),s}return t})(Jd);function nf(n){xw(n)}function YN(n){throw n}var _N={closed:!0,next:Bw,error:YN,complete:Bw},qd=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function vw(n){return n}function VN(n){return n.length===0?vw:n.length===1?n[0]:function(e){return n.reduce(function(r,i){return i(r)},e)}}var Ot=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,r){var i=this,s=qN(t)?t:new tf(t,e,r);return zN(function(){var o=i,a=o.operator,l=o.source;s.add(a?a.call(s,l):l?i._subscribe(s):i._trySubscribe(s))}),s},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var r=this;return e=Qw(e),new e(function(i,s){var o=new tf({next:function(a){try{t(a)}catch(l){s(l),o.unsubscribe()}},error:s,complete:i});r.subscribe(o)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[qd]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return VN(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=Qw(t),new t(function(r,i){var s;e.subscribe(function(o){return s=o},function(o){return i(o)},function(){return r(s)})})},n.create=function(t){return new n(t)},n})();function Qw(n){var t;return(t=n??UN.Promise)!==null&&t!==void 0?t:Promise}function JN(n){return n&&ze(n.next)&&ze(n.error)&&ze(n.complete)}function qN(n){return n&&n instanceof Jd||JN(n)&&Ew(n)}function KN(n){return ze(n==null?void 0:n.lift)}function Bs(n){return function(t){if(KN(t))return t.lift(function(e){try{return n(e,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function oc(n,t,e,r,i){return new jN(n,t,e,r,i)}var jN=(function(n){zd(t,n);function t(e,r,i,s,o,a){var l=n.call(this,e)||this;return l.onFinalize=o,l.shouldUnsubscribe=a,l._next=r?function(c){try{r(c)}catch(u){e.error(u)}}:n.prototype._next,l._error=s?function(c){try{s(c)}catch(u){e.error(u)}finally{this.unsubscribe()}}:n.prototype._error,l._complete=i?function(){try{i()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,l}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;n.prototype.unsubscribe.call(this),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(Jd),WN=new Ot(function(n){return n.complete()});function XN(n){return n&&ze(n.schedule)}function Sw(n){return n[n.length-1]}function ZN(n){return XN(Sw(n))?n.pop():void 0}function $N(n,t){return typeof Sw(n)=="number"?n.pop():t}var Dw=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function kw(n){return ze(n==null?void 0:n.then)}function Fw(n){return ze(n[qd])}function Mw(n){return Symbol.asyncIterator&&ze(n==null?void 0:n[Symbol.asyncIterator])}function Rw(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function e9(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Nw=e9();function Tw(n){return ze(n==null?void 0:n[Nw])}function Pw(n){return LN(this,arguments,function(){var e,r,i,s;return yw(this,function(o){switch(o.label){case 0:e=n.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,xs(e.read())];case 3:return r=o.sent(),i=r.value,s=r.done,s?[4,xs(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,xs(i)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function Lw(n){return ze(n==null?void 0:n.getReader)}function vs(n){if(n instanceof Ot)return n;if(n!=null){if(Fw(n))return t9(n);if(Dw(n))return n9(n);if(kw(n))return r9(n);if(Mw(n))return Ow(n);if(Tw(n))return i9(n);if(Lw(n))return s9(n)}throw Rw(n)}function t9(n){return new Ot(function(t){var e=n[qd]();if(ze(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function n9(n){return new Ot(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function r9(n){return new Ot(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,xw)})}function i9(n){return new Ot(function(t){var e,r;try{for(var i=sc(n),s=i.next();!s.done;s=i.next()){var o=s.value;if(t.next(o),t.closed)return}}catch(a){e={error:a}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}t.complete()})}function Ow(n){return new Ot(function(t){o9(n,t).catch(function(e){return t.error(e)})})}function s9(n){return Ow(Pw(n))}function o9(n,t){var e,r,i,s;return PN(this,void 0,void 0,function(){var o,a;return yw(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),e=ON(n),l.label=1;case 1:return[4,e.next()];case 2:if(r=l.sent(),!!r.done)return[3,4];if(o=r.value,t.next(o),t.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=l.sent(),i={error:a},[3,11];case 6:return l.trys.push([6,,9,10]),r&&!r.done&&(s=e.return)?[4,s.call(e)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function gi(n,t,e,r,i){r===void 0&&(r=0),i===void 0&&(i=!1);var s=t.schedule(function(){e(),i?n.add(this.schedule(null,r)):this.unsubscribe()},r);if(n.add(s),!i)return s}function Uw(n,t){return t===void 0&&(t=0),Bs(function(e,r){e.subscribe(oc(r,function(i){return gi(r,n,function(){return r.next(i)},t)},function(){return gi(r,n,function(){return r.complete()},t)},function(i){return gi(r,n,function(){return r.error(i)},t)}))})}function Gw(n,t){return t===void 0&&(t=0),Bs(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function a9(n,t){return vs(n).pipe(Gw(t),Uw(t))}function c9(n,t){return vs(n).pipe(Gw(t),Uw(t))}function l9(n,t){return new Ot(function(e){var r=0;return t.schedule(function(){r===n.length?e.complete():(e.next(n[r++]),e.closed||this.schedule())})})}function u9(n,t){return new Ot(function(e){var r;return gi(e,t,function(){r=n[Nw](),gi(e,t,function(){var i,s,o;try{i=r.next(),s=i.value,o=i.done}catch(a){e.error(a);return}o?e.complete():e.next(s)},0,!0)}),function(){return ze(r==null?void 0:r.return)&&r.return()}})}function zw(n,t){if(!n)throw new Error("Iterable cannot be null");return new Ot(function(e){gi(e,t,function(){var r=n[Symbol.asyncIterator]();gi(e,t,function(){r.next().then(function(i){i.done?e.complete():e.next(i.value)})},0,!0)})})}function f9(n,t){return zw(Pw(n),t)}function A9(n,t){if(n!=null){if(Fw(n))return a9(n,t);if(Dw(n))return l9(n,t);if(kw(n))return c9(n,t);if(Mw(n))return zw(n,t);if(Tw(n))return u9(n,t);if(Lw(n))return f9(n,t)}throw Rw(n)}function h9(n,t){return t?A9(n,t):vs(n)}var d9=ww(function(n){return function(){n(this),this.name="EmptyError",this.message="no elements in sequence"}});function Hw(n,t){return new Promise(function(e,r){var i=new tf({next:function(s){e(s),i.unsubscribe()},error:r,complete:function(){r(new d9)}});n.subscribe(i)})}function Yw(n,t){return Bs(function(e,r){var i=0;e.subscribe(oc(r,function(s){r.next(n.call(t,s,i++))}))})}function g9(n,t,e,r,i,s,o,a){var l=[],c=0,u=0,f=!1,h=function(){f&&!l.length&&!c&&t.complete()},A=function(g){return c<r?d(g):l.push(g)},d=function(g){c++;var p=!1;vs(e(g,u++)).subscribe(oc(t,function(C){t.next(C)},function(){p=!0},void 0,function(){if(p)try{c--;for(var C=function(){var w=l.shift();o||d(w)};l.length&&c<r;)C();h()}catch(w){t.error(w)}}))};return n.subscribe(oc(t,A,function(){f=!0,h()})),function(){}}function _w(n,t,e){return e===void 0&&(e=1/0),ze(t)?_w(function(r,i){return Yw(function(s,o){return t(r,s,i,o)})(vs(n(r,i)))},e):(typeof t=="number"&&(e=t),Bs(function(r,i){return g9(r,i,n,e)}))}function p9(n){return n===void 0&&(n=1/0),_w(vw,n)}function m9(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=ZN(n),r=$N(n,1/0),i=n;return i.length?i.length===1?vs(i[0]):p9(r)(h9(i,e)):WN}function C9(n,t,e,r,i){return function(s,o){var a=e,l=t,c=0;s.subscribe(oc(o,function(u){var f=c++;l=a?n(l,u,f):(a=!0,u)},(function(){a&&o.next(l),o.complete()})))}}function Vw(n,t){return Bs(C9(n,t,arguments.length>=2,!1,!0))}var y9=function(n,t){return n.push(t),n};function w9(){return Bs(function(n,t){Vw(y9,[])(n).subscribe(t)})}class I9{}class E9{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(t=new I9){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):typeof t.addEventListener=="function"&&t.addEventListener("abort",()=>{this.handleAborted(t)})}handleAborted(t){this.signals.delete(t),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class b9{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),this.currentMessage&&t(this.currentMessage)}callback(t){this.currentMessage=t;for(const e of this.callbacks)e(t)}}class Qs{constructor({fill:t,cache:e}){if(typeof t!="function")throw new TypeError("must pass a fill function");if(typeof e!="object")throw new TypeError("must pass a cache object");if(typeof e.get!="function"||typeof e.set!="function"||typeof e.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=e,this.fillCallback=t}static isAbortException(t){return t.name==="AbortError"||t.code==="ERR_ABORTED"||t.message==="AbortError: aborted"||t.message==="Error: aborted"}evict(t,e){this.cache.get(t)===e&&this.cache.delete(t)}fill(t,e,r,i){const s=new E9,o=new b9;o.addCallback(i);const a={aborter:s,promise:this.fillCallback(e,s.signal,l=>{o.callback(l)}),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};a.aborter.addSignal(r),a.aborter.signal.addEventListener("abort",()=>{a.settled||this.evict(t,a)}),a.promise.then(()=>{a.settled=!0},()=>{a.settled=!0,this.evict(t,a)}).catch(l=>{throw console.error(l),l}),this.cache.set(t,a)}static checkSinglePromise(t,e){function r(){if(e!=null&&e.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then(i=>(r(),i),i=>{throw r(),i})}has(t){return this.cache.has(t)}get(t,e,r,i){if(!r&&e instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const s=this.cache.get(t);return s?s.aborted&&!s.settled?(this.evict(t,s),this.get(t,e,r,i)):s.settled?s.promise:(s.aborter.addSignal(r),s.statusReporter.addCallback(i),Qs.checkSinglePromise(s.promise,r)):(this.fill(t,e,r,i),Qs.checkSinglePromise(this.cache.get(t).promise,r))}delete(t){const e=this.cache.get(t);e&&(e.settled||e.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let e=0;for(let r=t.next();!r.done;r=t.next())this.delete(r.value),e+=1;return e}}function x9(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Kd,Jw;function B9(){if(Jw)return Kd;Jw=1;class n{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){const r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){const r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache)yield e;for(const e of this.oldCache){const[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(const r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}}return Kd=n,Kd}var v9=B9();const qw=x9(v9);class Ss{constructor(t){j(this,"ranges");this.ranges=t}get min(){return this.ranges[0].min}get max(){return this.ranges.at(-1).max}contains(t){for(const e of this.ranges)if(e.min<=t&&e.max>=t)return!0;return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(t=>new Ss([{min:t.min,max:t.max}]))}toString(){return this.ranges.map(t=>`[${t.min}-${t.max}]`).join(",")}union(t){const e=[...this.getRanges(),...t.getRanges()].sort((s,o)=>s.min<o.min?-1:s.min>o.min?1:s.max<o.max?-1:o.max>s.max?1:0),r=[];let i=e[0];for(const s of e)s.min>i.max+1?(r.push(i),i=s):s.max>i.max&&(i=new Ss([{min:i.min,max:s.max}]));return r.push(i),r.length===1?r[0]:new Ss(r)}}function Q9(n){return QN(n.subarray(2),void 0)}class S9 extends Error{constructor(e){super(e);j(this,"code");this.code="ERR_ABORTED"}}function D9(n){n.sort((i,s)=>i.offset-s.offset);const t=[];let e,r;for(const i of n)e&&r&&i.offset-r<=2e3?(e.length=e.length+i.length-r+i.offset,e.blocks.push(i)):t.push(e={blocks:[i],length:i.length,offset:i.offset}),r=e.offset+e.length;return t}function rf(n){if(n&&n.aborted)if(typeof DOMException>"u"){const t=new S9("aborted");throw t.code="ERR_ABORTED",t}else throw new DOMException("aborted","AbortError")}const jd=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function Wd(n,t,e,r){return n<r&&t>=e}class Kw{constructor(t,e,r,i,s){j(this,"bbi");j(this,"refsByName");j(this,"cirTreeOffset");j(this,"isCompressed");j(this,"blockType");j(this,"cirTreePromise");j(this,"featureCache",new Qs({cache:new qw({maxSize:1e3}),fill:async({length:t,offset:e},r)=>this.bbi.read(t,e,{signal:r})}));if(this.bbi=t,this.refsByName=e,this.cirTreeOffset=r,this.isCompressed=i,this.blockType=s,!(r>=0))throw new Error("invalid cirTreeOffset!")}async readWigData(t,e,r,i,s){try{const o=this.refsByName[t];o===void 0&&i.complete();const a={chrId:o,start:e,end:r};this.cirTreePromise||(this.cirTreePromise=this.bbi.read(48,this.cirTreeOffset,s));const l=await this.cirTreePromise,u=new DataView(l.buffer).getUint32(4,!0);let f=[],h=0;const A=(C,w,b)=>{try{const x=C.subarray(w),B=new DataView(x.buffer,x.byteOffset,x.length);let E=0;const Q=B.getUint8(E);E+=2;const k=B.getUint16(E,!0);if(E+=2,Q===1){const S=[];for(let T=0;T<k;T++){const N=B.getUint32(E,!0);E+=4;const U=B.getUint32(E,!0);E+=4;const H=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4;const _=Number(B.getBigUint64(E,!0));E+=8;const Z=Number(B.getBigUint64(E,!0));E+=8,S.push({startChrom:N,startBase:U,endBase:J,endChrom:H,blockOffset:_,blockSize:Z,offset:E})}f=f.concat(S.filter(T=>d(T)).map(T=>({offset:T.blockOffset,length:T.blockSize})))}else if(Q===0){const S=[];for(let N=0;N<k;N++){const U=B.getUint32(E,!0);E+=4;const H=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4;const _=B.getUint32(E,!0);E+=4;const Z=Number(B.getBigUint64(E,!0));E+=8,S.push({startChrom:U,startBase:H,endChrom:J,endBase:_,blockOffset:Z,offset:E})}const T=S.filter(N=>d(N)).map(N=>N.blockOffset);T.length>0&&p(T,b+1)}}catch(y){i.error(y)}},d=C=>{const{startChrom:w,startBase:b,endChrom:y,endBase:x}=C;return(w<o||w===o&&b<=r)&&(y>o||y===o&&x>=e)},g=async(C,w,b)=>{try{const y=w.max-w.min,x=w.min,B=await this.featureCache.get(`${y}_${x}`,{length:y,offset:x},s==null?void 0:s.signal);for(const E of C)w.contains(E)&&(A(B,E-x,b),h-=1,h===0&&this.readFeatures(i,f,{...s,request:a}).catch(Q=>{i.error(Q)}))}catch(y){i.error(y)}},p=(C,w)=>{try{h+=C.length;const b=4+u*32;let y=new Ss([{min:C[0],max:C[0]+b}]);for(let x=1;x<C.length;x+=1){const B=new Ss([{min:C[x],max:C[x]+b}]);y=y.union(B)}y.getRanges().map(x=>g(C,x,w))}catch(b){i.error(b)}};p([this.cirTreeOffset+48],1);return}catch(o){i.error(o)}}parseSummaryBlock(t,e,r){const i=[];let s=e;const o=new DataView(t.buffer,t.byteOffset,t.length);for(;s<t.byteLength;){const a=o.getUint32(s,!0);s+=4;const l=o.getUint32(s,!0);s+=4;const c=o.getUint32(s,!0);s+=4;const u=o.getUint32(s,!0);s+=4;const f=o.getFloat32(s,!0);s+=4;const h=o.getFloat32(s,!0);s+=4;const A=o.getFloat32(s,!0);s+=4,s+=4,(!r||a===r.chrId&&Wd(l,c,r.start,r.end))&&i.push({start:l,end:c,maxScore:h,minScore:f,summary:!0,score:A/(u||1)})}return i}parseBigBedBlock(t,e,r,i){const s=[];let o=e;const a=t,l=new DataView(a.buffer,a.byteOffset,a.length);for(;o<t.byteLength;){const c=o,u=l.getUint32(o,!0);o+=4;const f=l.getInt32(o,!0);o+=4;const h=l.getInt32(o,!0);o+=4;let A=o;for(;A<t.length&&t[A]!==0;A++);const d=t.subarray(o,A),g=(jd==null?void 0:jd.decode(d))??d.toString();o=A+1,s.push({chromId:u,start:f,end:h,rest:g,uniqueId:`bb-${r+c}`})}return i?s.filter(c=>Wd(c.start,c.end,i.start,i.end)):s}parseBigWigBlock(t,e,r){const i=t.subarray(e),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=4;const a=s.getInt32(o,!0);o+=8;const l=s.getUint32(o,!0);o+=4;const c=s.getUint32(o,!0);o+=4;const u=s.getUint8(o);o+=2;const f=s.getUint16(o,!0);o+=2;const h=new Array(f);switch(u){case 1:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const g=s.getInt32(o,!0);o+=4;const p=s.getFloat32(o,!0);o+=4,h[A]={start:d,end:g,score:p}}break}case 2:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const g=s.getFloat32(o,!0);o+=4,h[A]={score:g,start:d,end:d+c}}break}case 3:{for(let A=0;A<f;A++){const d=s.getFloat32(o,!0);o+=4;const g=a+A*l;h[A]={score:d,start:g,end:g+c}}break}}return r?h.filter(A=>Wd(A.start,A.end,r.start,r.end)):h}async readFeatures(t,e,r={}){try{const{blockType:i,isCompressed:s}=this,{signal:o,request:a}=r,l=D9(e);rf(o),await Promise.all(l.map(async c=>{rf(o);const{length:u,offset:f}=c,h=await this.featureCache.get(`${u}_${f}`,c,o);for(const A of c.blocks){rf(o);let d=h.subarray(A.offset-c.offset);switch(s&&(d=Q9(d)),rf(o),i){case"summary":{t.next(this.parseSummaryBlock(d,0,a));break}case"bigwig":{t.next(this.parseBigWigBlock(d,0,a));break}case"bigbed":{t.next(this.parseBigBedBlock(d,0,A.offset*256,a));break}default:console.warn(`Don't know what to do with ${i}`)}}})),t.complete()}catch(i){t.error(i)}}}const k9=-2003829722,jw=-2021002517;function Ds(n){return new DataView(n.buffer,n.byteOffset,n.length)}class Ww{constructor(t){j(this,"bbi");j(this,"headerP");j(this,"renameRefSeqs");const{filehandle:e,renameRefSeqs:r=o=>o,path:i,url:s}=t;if(this.renameRefSeqs=r,e)this.bbi=e;else if(s)this.bbi=new pn(s);else if(i)this.bbi=new at(i);else throw new Error("no file given")}getHeader(t){return this.headerP||(this.headerP=this._getHeader(t).catch(e=>{throw this.headerP=void 0,e})),this.headerP}async _getHeader(t){const e=await this._getMainHeader(t),r=await this._readChromTree(e,t);return{...e,...r}}async _getMainHeader(t,e=2e3){const r=await this.bbi.read(e,0,t),i=Ds(r),s=i.getInt32(0,!0);if(s!==k9&&s!==jw)throw new Error("not a BigWig/BigBed file");let o=0;const a=i.getInt32(o,!0);o+=4;const l=i.getUint16(o,!0);o+=2;const c=i.getUint16(o,!0);o+=2;const u=Number(i.getBigUint64(o,!0));o+=8;const f=Number(i.getBigUint64(o,!0));o+=8;const h=Number(i.getBigUint64(o,!0));o+=8;const A=i.getUint16(o,!0);o+=2;const d=i.getUint16(o,!0);o+=2;const g=Number(i.getBigUint64(o,!0));o+=8;const p=Number(i.getBigUint64(o,!0));o+=8;const C=i.getUint32(o,!0);o+=4;const w=Number(i.getBigUint64(o,!0));o+=8;const b=[];for(let E=0;E<c;E++){const Q=i.getUint32(o,!0);o+=4;const k=i.getUint32(o,!0);o+=4;const S=Number(i.getBigUint64(o,!0));o+=8;const T=Number(i.getBigUint64(o,!0));o+=8,b.push({reductionLevel:Q,reserved:k,dataOffset:S,indexOffset:T})}const y=a===jw?"bigbed":"bigwig";if(g>e||p>e-40)return this._getMainHeader(t,e*2);let x;if(p){const E=r.subarray(p);let Q=0;const k=Ds(E),S=Number(k.getBigUint64(Q,!0));Q+=8;const T=k.getFloat64(Q,!0);Q+=8;const N=k.getFloat64(Q,!0);Q+=8;const U=k.getFloat64(Q,!0);Q+=8;const H=k.getFloat64(Q,!0);Q+=8,x={scoreMin:T,scoreMax:N,scoreSum:U,scoreSumSquares:H,basesCovered:S}}else throw new Error("no stats");const B=new TextDecoder("utf8");return{zoomLevels:b,magic:a,extHeaderOffset:w,numZoomLevels:c,fieldCount:A,totalSummary:x,definedFieldCount:d,uncompressBufSize:C,asOffset:g,chromTreeOffset:u,totalSummaryOffset:p,unzoomedDataOffset:f,unzoomedIndexOffset:h,fileType:y,version:l,autoSql:g?B.decode(r.subarray(g,r.indexOf(0,g))):""}}async _readChromTree(t,e){const r=[],i={},s=t.chromTreeOffset,o=Ds(await this.bbi.read(32,s,e));let a=0;a+=4,a+=4;const l=o.getUint32(a,!0);a+=4;const c=o.getUint32(a,!0);a+=4,a+=8;const u=new TextDecoder("utf8"),f=async h=>{const A=await this.bbi.read(4,h),d=Ds(A);let g=0;const p=d.getUint8(g);g+=1,g+=1;const C=d.getUint16(g,!0);if(g+=2,p){const w=await this.bbi.read(C*(l+c),h+g),b=Ds(w);g=0;for(let y=0;y<C;y++){const x=u.decode(w.subarray(g,g+l)).replaceAll("\0","");g+=l;const B=b.getUint32(g,!0);g+=4;const E=b.getUint32(g,!0);g+=4,i[this.renameRefSeqs(x)]=B,r[B]={name:x,id:B,length:E}}}else{const w=[],b=Ds(await this.bbi.read(C*(l+8),h+g));g=0;for(let y=0;y<C;y++){g+=l;const x=Number(b.getBigUint64(g,!0));g+=8,w.push(f(x))}await Promise.all(w)}};return await f(s+32),{refsByName:i,refsByNumber:r}}async getUnzoomedView(t){const{unzoomedIndexOffset:e,refsByName:r,uncompressBufSize:i,fileType:s}=await this.getHeader(t);return new Kw(this.bbi,r,e,i>0,s)}async getFeatureStream(t,e,r,i){await this.getHeader(i);const s=this.renameRefSeqs(t);let o;const{basesPerSpan:a,scale:l}=i||{};return a?o=await this.getView(1/a,i):l?o=await this.getView(l,i):o=await this.getView(1,i),new Ot(c=>{o.readWigData(s,e,r,c,i).catch(u=>{c.error(u)})})}async getFeatures(t,e,r,i){const s=await this.getFeatureStream(t,e,r,i);return(await Hw(s.pipe(w9()))).flat()}}class F9 extends Ww{async getView(t,e){const{zoomLevels:r,refsByName:i,uncompressBufSize:s}=await this.getHeader(e),o=1/t,a=r.length-1;for(let l=a;l>=0;l-=1){const c=r[l];if(c&&c.reductionLevel<=2*o)return new Kw(this.bbi,i,c.indexOffset,s>0,"summary")}return this.getUnzoomedView(e)}}function M9(n){return n.filter(t=>!!t)}class R9 extends Ww{constructor(){super(...arguments);j(this,"readIndicesCache",new Qs({cache:new qw({maxSize:1}),fill:(e,r)=>this._readIndices({...e,signal:r})}))}readIndices(e={}){const{signal:r,...i}=e;return this.readIndicesCache.get(JSON.stringify(i),e,r)}async getView(e,r){return this.getUnzoomedView(r)}async _readIndices(e){const{extHeaderOffset:r}=await this.getHeader(e),i=await this.bbi.read(64,r),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=2;const a=s.getUint16(o,!0);o+=2;const l=Number(s.getBigUint64(o,!0));if(o+=8,a===0)return[];const c=20,u=c*a,f=await this.bbi.read(u,l),h=[];for(let A=0;A<a;A+=1){const d=f.subarray(A*c),g=new DataView(d.buffer,d.byteOffset,d.length);let p=0;const C=g.getInt16(p,!0);p+=2;const w=g.getInt16(p,!0);p+=2;const b=Number(g.getBigUint64(p,!0));p+=12;const y=g.getInt16(p,!0);h.push({type:C,fieldcount:w,offset:b,field:y})}return h}async searchExtraIndexBlocks(e,r={}){const i=await this.readIndices(r);if(i.length===0)return[];const s=new TextDecoder("utf8"),o=i.map(async a=>{const{offset:l,field:c}=a,u=await this.bbi.read(32,l,r),f=new DataView(u.buffer,u.byteOffset,u.length);let h=0;h+=4;const A=f.getInt32(h,!0);h+=4;const d=f.getInt32(h,!0);h+=4;const g=f.getInt32(h,!0);h+=4,h+=8;const p=async C=>{const w=C,b=4+A*(d+g),x=await this.bbi.read(b,w,r),B=new DataView(x.buffer,x.byteOffset,x.length);let E=0;const Q=B.getInt8(E);E+=2;const k=B.getInt16(E,!0);E+=2;const S=[];if(Q===0){const T=[];for(let U=0;U<k;U++){const H=s.decode(x.subarray(E,E+d)).replaceAll("\0","");E+=d;const J=Number(B.getBigUint64(E,!0));E+=8,T.push({key:H,offset:J})}let N=0;for(const{key:U,offset:H}of T){if(e.localeCompare(U)<0&&N)return p(N);N=H}return p(N)}else if(Q===1){for(let T=0;T<k;T++){const N=s.decode(x.subarray(E,E+d)).replaceAll("\0","");E+=d;const U=Number(B.getBigUint64(E,!0));E+=8;const H=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4,S.push({key:N,offset:U,length:H,reserved:J})}for(const T of S)if(T.key===e)return{...T,field:c};return}};return p(l+32)});return M9(await Promise.all(o))}async searchExtraIndex(e,r={}){const i=await this.searchExtraIndexBlocks(e,r);if(i.length===0)return[];const s=await this.getUnzoomedView(r),o=i.map(l=>new Ot(c=>{s.readFeatures(c,[l],r).catch(u=>{c.error(u)})}).pipe(Vw((c,u)=>c.concat(u)),Yw(c=>{for(const u of c)u.field=l.field;return c})));return(await Hw(m9(...o))).filter(l=>{var c;return((c=l.rest)==null?void 0:c.split(" ")[(l.field||0)-3])===e})}}const Xw=Object.freeze(Object.defineProperty({__proto__:null,BigBed:R9,BigWig:F9},Symbol.toStringTag,{value:"Module"}));function N9(n,t){function e(){this.constructor=n}e.prototype=t.prototype,n.prototype=new e}function ks(n,t,e,r){this.message=n,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,ks)}N9(ks,Error),ks.buildMessage=function(n,t){var e={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var u="",f;for(f=0;f<c.parts.length;f++)u+=c.parts[f]instanceof Array?s(c.parts[f][0])+"-"+s(c.parts[f][1]):s(c.parts[f]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function i(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function s(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function o(c){return e[c.type](c)}function a(c){var u=new Array(c.length),f,h;for(f=0;f<c.length;f++)u[f]=o(c[f]);if(u.sort(),u.length>0){for(f=1,h=1;f<u.length;f++)u[f-1]!==u[f]&&(u[h]=u[f],h++);u.length=h}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+i(c)+'"':"end of input"}return"Expected "+a(n)+" but "+l(t)+" found."};function T9(n,t){t=t!==void 0?t:{};var e={},r={declaration:UE},i=UE,s="(",o=pe("(",!1),a=")",l=pe(")",!1),c=function(I,M,O,z){return{type:I,name:M,comment:O,fields:z}},u="simple",f=pe("simple",!1),h="object",A=pe("object",!1),d="table",g=pe("table",!1),p="auto",C=pe("auto",!1),w="primary",b=pe("primary",!1),y="index",x=pe("index",!1),B="unique",E=pe("unique",!1),Q=function(I,M){return M},k=function(I,M){return I.name&&M.unshift(I),M},S="#",T=pe("#",!1),N=";",U=pe(";",!1),H=function(I,M,O){return{type:I,name:M,comment:O}},J="[",_=pe("[",!1),Z="]",le=pe("]",!1),de=function(I,M,O,z){return{type:I,size:M,name:O,comment:z}},ge=function(I,M,O,z){return{type:I,vals:M,name:O,comment:z}},Fe=",",Bn=pe(",",!1),vn=function(I,M){return M.unshift(I),M},Mr="int",Ro=pe("int",!1),Le="uint",Vt=pe("uint",!1),Bt="short",Y=pe("short",!1),$="ushort",ie=pe("ushort",!1),L="byte",lt=pe("byte",!1),he="ubyte",pt=pe("ubyte",!1),ut="float",Jn=pe("float",!1),al="char",U7=pe("char",!1),IE="string",G7=pe("string",!1),EE="lstring",z7=pe("lstring",!1),bE="enum",H7=pe("enum",!1),xE="double",Y7=pe("double",!1),BE="bigint",_7=pe("bigint",!1),vE="set",V7=pe("set",!1),J7=function(I,M){return I+" "+M},q7=/^[a-zA-Z_]/,K7=cl([["a","z"],["A","Z"],"_"],!1,!1),QE=/^[a-zA-Z0-9_]/,SE=cl([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),j7=function(I){return TE()},DE=/^[^\n\r]/,kE=cl([`
722
- `,"\r"],!0,!1),W7=function(I){return I.join("").replace(/^"/,"").replace(/"$/,"")},X7=PE("integer"),FE=/^[0-9]/,ME=cl([["0","9"]],!1,!1),Z7=function(){return parseInt(TE(),10)},$7=PE("whitespace"),RE=/^[ \t\n\r]/,NE=cl([" "," ",`
723
- `,"\r"],!1,!1),v=0,mt=0,Ff=[{line:1,column:1}],Qn=0,v0=[],K=0,Mf;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');i=r[t.startRule]}function TE(){return n.substring(mt,v)}function pe(I,M){return{type:"literal",text:I,ignoreCase:M}}function cl(I,M,O){return{type:"class",parts:I,inverted:M,ignoreCase:O}}function eP(){return{type:"end"}}function PE(I){return{type:"other",description:I}}function LE(I){var M=Ff[I],O;if(M)return M;for(O=I-1;!Ff[O];)O--;for(M=Ff[O],M={line:M.line,column:M.column};O<I;)n.charCodeAt(O)===10?(M.line++,M.column=1):M.column++,O++;return Ff[I]=M,M}function OE(I,M){var O=LE(I),z=LE(M);return{start:{offset:I,line:O.line,column:O.column},end:{offset:M,line:z.line,column:z.column}}}function W(I){v<Qn||(v>Qn&&(Qn=v,v0=[]),v0.push(I))}function tP(I,M,O){return new ks(ks.buildMessage(I,M),I,M,O)}function UE(){var I,M,O,z,q,Ie,Se,Jt,Rr,qn,Nr,Kn,Tr,jn;return I=v,M=oe(),M!==e?(O=GE(),O!==e?(z=oe(),z!==e?(q=zE(),q!==e?(Ie=oe(),Ie!==e?(Se=Rf(),Se!==e?(Jt=oe(),Jt!==e?(n.charCodeAt(v)===40?(Rr=s,v++):(Rr=e,K===0&&W(o)),Rr!==e?(qn=oe(),qn!==e?(Nr=nP(),Nr!==e?(Kn=oe(),Kn!==e?(n.charCodeAt(v)===41?(Tr=a,v++):(Tr=e,K===0&&W(l)),Tr!==e?(jn=oe(),jn!==e?(mt=I,M=c(O,q,Se,Nr),I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I}function GE(){var I;return n.substr(v,6)===u?(I=u,v+=6):(I=e,K===0&&W(f)),I===e&&(n.substr(v,6)===h?(I=h,v+=6):(I=e,K===0&&W(A)),I===e&&(n.substr(v,5)===d?(I=d,v+=5):(I=e,K===0&&W(g)))),I}function zE(){var I,M,O,z;return I=rn(),I===e&&(I=v,M=rn(),M!==e?(O=HE(),O!==e?(M=[M,O],I=M):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,M=rn(),M!==e?(n.substr(v,4)===p?(O=p,v+=4):(O=e,K===0&&W(C)),O!==e?(M=[M,O],I=M):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,M=rn(),M!==e?(O=HE(),O!==e?(n.substr(v,4)===p?(z=p,v+=4):(z=e,K===0&&W(C)),z!==e?(M=[M,O,z],I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)))),I}function HE(){var I;return n.substr(v,7)===w?(I=w,v+=7):(I=e,K===0&&W(b)),I===e&&(n.substr(v,5)===y?(I=y,v+=5):(I=e,K===0&&W(x)),I===e&&(n.substr(v,6)===B?(I=B,v+=6):(I=e,K===0&&W(E)))),I}function Rf(){var I;return I=YE(),I===e&&(I=oe()),I}function nP(){var I,M,O,z,q,Ie,Se;if(I=v,M=Q0(),M!==e)if(O=oe(),O!==e){for(z=[],q=v,Ie=oe(),Ie!==e?(Se=Q0(),Se!==e?(mt=q,Ie=Q(M,Se),q=Ie):(v=q,q=e)):(v=q,q=e);q!==e;)z.push(q),q=v,Ie=oe(),Ie!==e?(Se=Q0(),Se!==e?(mt=q,Ie=Q(M,Se),q=Ie):(v=q,q=e)):(v=q,q=e);z!==e?(q=oe(),q!==e?(mt=I,M=k(M,z),I=M):(v=I,I=e)):(v=I,I=e)}else v=I,I=e;else v=I,I=e;return I}function rP(){var I;return n.charCodeAt(v)===35?(I=S,v++):(I=e,K===0&&W(T)),I}function iP(){var I,M,O,z,q;return I=v,M=oe(),M!==e?(O=rP(),O!==e?(z=YE(),z!==e?(q=oe(),q!==e?(M=[M,O,z,q],I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I}function Q0(){var I,M,O,z,q,Ie,Se,Jt,Rr,qn,Nr,Kn,Tr,jn;return I=v,M=S0(),M!==e?(O=oe(),O!==e?(z=rn(),z!==e?(q=oe(),q!==e?(n.charCodeAt(v)===59?(Ie=N,v++):(Ie=e,K===0&&W(U)),Ie!==e?(Se=oe(),Se!==e?(Jt=Rf(),Jt!==e?(mt=I,M=H(M,z,Jt),I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,M=S0(),M!==e?(O=oe(),O!==e?(n.charCodeAt(v)===91?(z=J,v++):(z=e,K===0&&W(_)),z!==e?(q=oe(),q!==e?(Ie=oP(),Ie!==e?(Se=oe(),Se!==e?(n.charCodeAt(v)===93?(Jt=Z,v++):(Jt=e,K===0&&W(le)),Jt!==e?(Rr=oe(),Rr!==e?(qn=rn(),qn!==e?(Nr=oe(),Nr!==e?(n.charCodeAt(v)===59?(Kn=N,v++):(Kn=e,K===0&&W(U)),Kn!==e?(Tr=oe(),Tr!==e?(jn=Rf(),jn!==e?(mt=I,M=de(M,Ie,qn,jn),I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,M=S0(),M!==e?(O=oe(),O!==e?(n.charCodeAt(v)===40?(z=s,v++):(z=e,K===0&&W(o)),z!==e?(q=oe(),q!==e?(Ie=sP(),Ie!==e?(Se=oe(),Se!==e?(n.charCodeAt(v)===41?(Jt=a,v++):(Jt=e,K===0&&W(l)),Jt!==e?(Rr=oe(),Rr!==e?(qn=rn(),qn!==e?(Nr=oe(),Nr!==e?(n.charCodeAt(v)===59?(Kn=N,v++):(Kn=e,K===0&&W(U)),Kn!==e?(Tr=oe(),Tr!==e?(jn=Rf(),jn!==e?(mt=I,M=ge(M,Ie,qn,jn),I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I===e&&(I=iP()))),I}function sP(){var I,M,O,z,q,Ie,Se;if(I=v,M=rn(),M!==e){for(O=[],z=v,n.charCodeAt(v)===44?(q=Fe,v++):(q=e,K===0&&W(Bn)),q!==e?(Ie=oe(),Ie!==e?(Se=rn(),Se!==e?(mt=z,q=Q(M,Se),z=q):(v=z,z=e)):(v=z,z=e)):(v=z,z=e);z!==e;)O.push(z),z=v,n.charCodeAt(v)===44?(q=Fe,v++):(q=e,K===0&&W(Bn)),q!==e?(Ie=oe(),Ie!==e?(Se=rn(),Se!==e?(mt=z,q=Q(M,Se),z=q):(v=z,z=e)):(v=z,z=e)):(v=z,z=e);O!==e?(mt=I,M=vn(M,O),I=M):(v=I,I=e)}else v=I,I=e;return I}function S0(){var I,M,O,z;return n.substr(v,3)===Mr?(I=Mr,v+=3):(I=e,K===0&&W(Ro)),I===e&&(n.substr(v,4)===Le?(I=Le,v+=4):(I=e,K===0&&W(Vt)),I===e&&(n.substr(v,5)===Bt?(I=Bt,v+=5):(I=e,K===0&&W(Y)),I===e&&(n.substr(v,6)===$?(I=$,v+=6):(I=e,K===0&&W(ie)),I===e&&(n.substr(v,4)===L?(I=L,v+=4):(I=e,K===0&&W(lt)),I===e&&(n.substr(v,5)===he?(I=he,v+=5):(I=e,K===0&&W(pt)),I===e&&(n.substr(v,5)===ut?(I=ut,v+=5):(I=e,K===0&&W(Jn)),I===e&&(n.substr(v,4)===al?(I=al,v+=4):(I=e,K===0&&W(U7)),I===e&&(n.substr(v,6)===IE?(I=IE,v+=6):(I=e,K===0&&W(G7)),I===e&&(n.substr(v,7)===EE?(I=EE,v+=7):(I=e,K===0&&W(z7)),I===e&&(n.substr(v,4)===bE?(I=bE,v+=4):(I=e,K===0&&W(H7)),I===e&&(n.substr(v,6)===xE?(I=xE,v+=6):(I=e,K===0&&W(Y7)),I===e&&(n.substr(v,6)===BE?(I=BE,v+=6):(I=e,K===0&&W(_7)),I===e&&(n.substr(v,3)===vE?(I=vE,v+=3):(I=e,K===0&&W(V7)),I===e&&(I=v,M=GE(),M!==e?(O=oe(),O!==e?(z=zE(),z!==e?(mt=I,M=J7(M,z),I=M):(v=I,I=e)):(v=I,I=e)):(v=I,I=e))))))))))))))),I}function oP(){var I;return I=aP(),I===e&&(I=rn()),I}function rn(){var I,M,O,z,q;if(I=v,M=v,q7.test(n.charAt(v))?(O=n.charAt(v),v++):(O=e,K===0&&W(K7)),O!==e){for(z=[],QE.test(n.charAt(v))?(q=n.charAt(v),v++):(q=e,K===0&&W(SE));q!==e;)z.push(q),QE.test(n.charAt(v))?(q=n.charAt(v),v++):(q=e,K===0&&W(SE));z!==e?(O=[O,z],M=O):(v=M,M=e)}else v=M,M=e;return M!==e&&(mt=I,M=j7()),I=M,I}function YE(){var I,M,O;for(I=v,M=[],DE.test(n.charAt(v))?(O=n.charAt(v),v++):(O=e,K===0&&W(kE));O!==e;)M.push(O),DE.test(n.charAt(v))?(O=n.charAt(v),v++):(O=e,K===0&&W(kE));return M!==e&&(mt=I,M=W7(M)),I=M,I}function aP(){var I,M,O,z;if(K++,I=v,M=oe(),M!==e){if(O=[],FE.test(n.charAt(v))?(z=n.charAt(v),v++):(z=e,K===0&&W(ME)),z!==e)for(;z!==e;)O.push(z),FE.test(n.charAt(v))?(z=n.charAt(v),v++):(z=e,K===0&&W(ME));else O=e;O!==e?(mt=I,M=Z7(),I=M):(v=I,I=e)}else v=I,I=e;return K--,I===e&&(M=e,K===0&&W(X7)),I}function oe(){var I,M;for(K++,I=[],RE.test(n.charAt(v))?(M=n.charAt(v),v++):(M=e,K===0&&W(NE));M!==e;)I.push(M),RE.test(n.charAt(v))?(M=n.charAt(v),v++):(M=e,K===0&&W(NE));return K--,I===e&&(M=e,K===0&&W($7)),I}if(Mf=i(),Mf!==e&&v===n.length)return Mf;throw Mf!==e&&v<n.length&&W(eP()),tP(v0,Qn<n.length?n.charAt(Qn):null,Qn<n.length?OE(Qn,Qn+1):OE(Qn,Qn))}const Zw={SyntaxError:ks,parse:T9},Xd=Object.fromEntries(Object.entries(Object.freeze(Object.defineProperty({__proto__:null,bigChain:`table bigChain
702
+ `):"",this.name="UnsubscriptionError",this.errors=e}});function zI(n,t){if(n){var e=n.indexOf(t);0<=e&&n.splice(e,1)}}var j0=(function(){function n(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return n.prototype.unsubscribe=function(){var t,e,r,i,s;if(!this.closed){this.closed=!0;var o=this._parentage;if(o)if(this._parentage=null,Array.isArray(o))try{for(var a=Oc(o),l=a.next();!l.done;l=a.next()){var c=l.value;c.remove(this)}}catch(p){t={error:p}}finally{try{l&&!l.done&&(e=a.return)&&e.call(a)}finally{if(t)throw t.error}}else o.remove(this);var u=this.initialTeardown;if(Ue(u))try{u()}catch(p){s=p instanceof K0?p.errors:[p]}var f=this._finalizers;if(f){this._finalizers=null;try{for(var h=Oc(f),A=h.next();!A.done;A=h.next()){var d=A.value;try{VI(d)}catch(p){s=s??[],p instanceof K0?s=q0(q0([],J0(s)),J0(p.errors)):s.push(p)}}}catch(p){r={error:p}}finally{try{A&&!A.done&&(i=h.return)&&i.call(h)}finally{if(r)throw r.error}}}if(s)throw new K0(s)}},n.prototype.add=function(t){var e;if(t&&t!==this)if(this.closed)VI(t);else{if(t instanceof n){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(e=this._finalizers)!==null&&e!==void 0?e:[]).push(t)}},n.prototype._hasParent=function(t){var e=this._parentage;return e===t||Array.isArray(e)&&e.includes(t)},n.prototype._addParent=function(t){var e=this._parentage;this._parentage=Array.isArray(e)?(e.push(t),e):e?[e,t]:t},n.prototype._removeParent=function(t){var e=this._parentage;e===t?this._parentage=null:Array.isArray(e)&&zI(e,t)},n.prototype.remove=function(t){var e=this._finalizers;e&&zI(e,t),t instanceof n&&t._removeParent(this)},n.EMPTY=(function(){var t=new n;return t.closed=!0,t})(),n})();j0.EMPTY;function HI(n){return n instanceof j0||n&&"closed"in n&&Ue(n.remove)&&Ue(n.add)&&Ue(n.unsubscribe)}function VI(n){Ue(n)?n():n.unsubscribe()}var LT={Promise:void 0},OT={setTimeout:function(n,t){for(var e=[],r=2;r<arguments.length;r++)e[r-2]=arguments[r];return setTimeout.apply(void 0,q0([n,t],J0(e)))},clearTimeout:function(n){return clearTimeout(n)},delegate:void 0};function _I(n){OT.setTimeout(function(){throw n})}function YI(){}function UT(n){n()}var W0=(function(n){Y0(t,n);function t(e){var r=n.call(this)||this;return r.isStopped=!1,e?(r.destination=e,HI(e)&&e.add(r)):r.destination=HT,r}return t.create=function(e,r,i){return new Xf(e,r,i)},t.prototype.next=function(e){this.isStopped||this._next(e)},t.prototype.error=function(e){this.isStopped||(this.isStopped=!0,this._error(e))},t.prototype.complete=function(){this.isStopped||(this.isStopped=!0,this._complete())},t.prototype.unsubscribe=function(){this.closed||(this.isStopped=!0,n.prototype.unsubscribe.call(this),this.destination=null)},t.prototype._next=function(e){this.destination.next(e)},t.prototype._error=function(e){try{this.destination.error(e)}finally{this.unsubscribe()}},t.prototype._complete=function(){try{this.destination.complete()}finally{this.unsubscribe()}},t})(j0),GT=(function(){function n(t){this.partialObserver=t}return n.prototype.next=function(t){var e=this.partialObserver;if(e.next)try{e.next(t)}catch(r){Zf(r)}},n.prototype.error=function(t){var e=this.partialObserver;if(e.error)try{e.error(t)}catch(r){Zf(r)}else Zf(t)},n.prototype.complete=function(){var t=this.partialObserver;if(t.complete)try{t.complete()}catch(e){Zf(e)}},n})(),Xf=(function(n){Y0(t,n);function t(e,r,i){var s=n.call(this)||this,o;return Ue(e)||!e?o={next:e??void 0,error:r??void 0,complete:i??void 0}:o=e,s.destination=new GT(o),s}return t})(W0);function Zf(n){_I(n)}function zT(n){throw n}var HT={closed:!0,next:YI,error:zT,complete:YI},X0=(function(){return typeof Symbol=="function"&&Symbol.observable||"@@observable"})();function JI(n){return n}function VT(n){return n.length===0?JI:n.length===1?n[0]:function(e){return n.reduce(function(r,i){return i(r)},e)}}var Ut=(function(){function n(t){t&&(this._subscribe=t)}return n.prototype.lift=function(t){var e=new n;return e.source=this,e.operator=t,e},n.prototype.subscribe=function(t,e,r){var i=this,s=YT(t)?t:new Xf(t,e,r);return UT(function(){var o=i,a=o.operator,l=o.source;s.add(a?a.call(s,l):l?i._subscribe(s):i._trySubscribe(s))}),s},n.prototype._trySubscribe=function(t){try{return this._subscribe(t)}catch(e){t.error(e)}},n.prototype.forEach=function(t,e){var r=this;return e=qI(e),new e(function(i,s){var o=new Xf({next:function(a){try{t(a)}catch(l){s(l),o.unsubscribe()}},error:s,complete:i});r.subscribe(o)})},n.prototype._subscribe=function(t){var e;return(e=this.source)===null||e===void 0?void 0:e.subscribe(t)},n.prototype[X0]=function(){return this},n.prototype.pipe=function(){for(var t=[],e=0;e<arguments.length;e++)t[e]=arguments[e];return VT(t)(this)},n.prototype.toPromise=function(t){var e=this;return t=qI(t),new t(function(r,i){var s;e.subscribe(function(o){return s=o},function(o){return i(o)},function(){return r(s)})})},n.create=function(t){return new n(t)},n})();function qI(n){var t;return(t=n??LT.Promise)!==null&&t!==void 0?t:Promise}function _T(n){return n&&Ue(n.next)&&Ue(n.error)&&Ue(n.complete)}function YT(n){return n&&n instanceof W0||_T(n)&&HI(n)}function JT(n){return Ue(n==null?void 0:n.lift)}function Xs(n){return function(t){if(JT(t))return t.lift(function(e){try{return n(e,this)}catch(r){this.error(r)}});throw new TypeError("Unable to lift unknown Observable type")}}function Uc(n,t,e,r,i){return new qT(n,t,e,r,i)}var qT=(function(n){Y0(t,n);function t(e,r,i,s,o,a){var l=n.call(this,e)||this;return l.onFinalize=o,l.shouldUnsubscribe=a,l._next=r?function(c){try{r(c)}catch(u){e.error(u)}}:n.prototype._next,l._error=s?function(c){try{s(c)}catch(u){e.error(u)}finally{this.unsubscribe()}}:n.prototype._error,l._complete=i?function(){try{i()}catch(c){e.error(c)}finally{this.unsubscribe()}}:n.prototype._complete,l}return t.prototype.unsubscribe=function(){var e;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){var r=this.closed;n.prototype.unsubscribe.call(this),!r&&((e=this.onFinalize)===null||e===void 0||e.call(this))}},t})(W0),KT=new Ut(function(n){return n.complete()});function jT(n){return n&&Ue(n.schedule)}function KI(n){return n[n.length-1]}function WT(n){return jT(KI(n))?n.pop():void 0}function XT(n,t){return typeof KI(n)=="number"?n.pop():t}var jI=(function(n){return n&&typeof n.length=="number"&&typeof n!="function"});function WI(n){return Ue(n==null?void 0:n.then)}function XI(n){return Ue(n[X0])}function ZI(n){return Symbol.asyncIterator&&Ue(n==null?void 0:n[Symbol.asyncIterator])}function $I(n){return new TypeError("You provided "+(n!==null&&typeof n=="object"?"an invalid object":"'"+n+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function ZT(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var eE=ZT();function tE(n){return Ue(n==null?void 0:n[eE])}function nE(n){return TT(this,arguments,function(){var e,r,i,s;return UI(this,function(o){switch(o.label){case 0:e=n.getReader(),o.label=1;case 1:o.trys.push([1,,9,10]),o.label=2;case 2:return[4,Ws(e.read())];case 3:return r=o.sent(),i=r.value,s=r.done,s?[4,Ws(void 0)]:[3,5];case 4:return[2,o.sent()];case 5:return[4,Ws(i)];case 6:return[4,o.sent()];case 7:return o.sent(),[3,2];case 8:return[3,10];case 9:return e.releaseLock(),[7];case 10:return[2]}})})}function rE(n){return Ue(n==null?void 0:n.getReader)}function Zs(n){if(n instanceof Ut)return n;if(n!=null){if(XI(n))return $T(n);if(jI(n))return eP(n);if(WI(n))return tP(n);if(ZI(n))return iE(n);if(tE(n))return nP(n);if(rE(n))return rP(n)}throw $I(n)}function $T(n){return new Ut(function(t){var e=n[X0]();if(Ue(e.subscribe))return e.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function eP(n){return new Ut(function(t){for(var e=0;e<n.length&&!t.closed;e++)t.next(n[e]);t.complete()})}function tP(n){return new Ut(function(t){n.then(function(e){t.closed||(t.next(e),t.complete())},function(e){return t.error(e)}).then(null,_I)})}function nP(n){return new Ut(function(t){var e,r;try{for(var i=Oc(n),s=i.next();!s.done;s=i.next()){var o=s.value;if(t.next(o),t.closed)return}}catch(a){e={error:a}}finally{try{s&&!s.done&&(r=i.return)&&r.call(i)}finally{if(e)throw e.error}}t.complete()})}function iE(n){return new Ut(function(t){iP(n,t).catch(function(e){return t.error(e)})})}function rP(n){return iE(nE(n))}function iP(n,t){var e,r,i,s;return NT(this,void 0,void 0,function(){var o,a;return UI(this,function(l){switch(l.label){case 0:l.trys.push([0,5,6,11]),e=PT(n),l.label=1;case 1:return[4,e.next()];case 2:if(r=l.sent(),!!r.done)return[3,4];if(o=r.value,t.next(o),t.closed)return[2];l.label=3;case 3:return[3,1];case 4:return[3,11];case 5:return a=l.sent(),i={error:a},[3,11];case 6:return l.trys.push([6,,9,10]),r&&!r.done&&(s=e.return)?[4,s.call(e)]:[3,8];case 7:l.sent(),l.label=8;case 8:return[3,10];case 9:if(i)throw i.error;return[7];case 10:return[7];case 11:return t.complete(),[2]}})})}function Si(n,t,e,r,i){r===void 0&&(r=0),i===void 0&&(i=!1);var s=t.schedule(function(){e(),i?n.add(this.schedule(null,r)):this.unsubscribe()},r);if(n.add(s),!i)return s}function sE(n,t){return t===void 0&&(t=0),Xs(function(e,r){e.subscribe(Uc(r,function(i){return Si(r,n,function(){return r.next(i)},t)},function(){return Si(r,n,function(){return r.complete()},t)},function(i){return Si(r,n,function(){return r.error(i)},t)}))})}function oE(n,t){return t===void 0&&(t=0),Xs(function(e,r){r.add(n.schedule(function(){return e.subscribe(r)},t))})}function sP(n,t){return Zs(n).pipe(oE(t),sE(t))}function oP(n,t){return Zs(n).pipe(oE(t),sE(t))}function aP(n,t){return new Ut(function(e){var r=0;return t.schedule(function(){r===n.length?e.complete():(e.next(n[r++]),e.closed||this.schedule())})})}function cP(n,t){return new Ut(function(e){var r;return Si(e,t,function(){r=n[eE](),Si(e,t,function(){var i,s,o;try{i=r.next(),s=i.value,o=i.done}catch(a){e.error(a);return}o?e.complete():e.next(s)},0,!0)}),function(){return Ue(r==null?void 0:r.return)&&r.return()}})}function aE(n,t){if(!n)throw new Error("Iterable cannot be null");return new Ut(function(e){Si(e,t,function(){var r=n[Symbol.asyncIterator]();Si(e,t,function(){r.next().then(function(i){i.done?e.complete():e.next(i.value)})},0,!0)})})}function lP(n,t){return aE(nE(n),t)}function uP(n,t){if(n!=null){if(XI(n))return sP(n,t);if(jI(n))return aP(n,t);if(WI(n))return oP(n,t);if(ZI(n))return aE(n,t);if(tE(n))return cP(n,t);if(rE(n))return lP(n,t)}throw $I(n)}function fP(n,t){return t?uP(n,t):Zs(n)}var AP=GI(function(n){return function(){n(this),this.name="EmptyError",this.message="no elements in sequence"}});function cE(n,t){return new Promise(function(e,r){var i=new Xf({next:function(s){e(s),i.unsubscribe()},error:r,complete:function(){r(new AP)}});n.subscribe(i)})}function lE(n,t){return Xs(function(e,r){var i=0;e.subscribe(Uc(r,function(s){r.next(n.call(t,s,i++))}))})}function hP(n,t,e,r,i,s,o,a){var l=[],c=0,u=0,f=!1,h=function(){f&&!l.length&&!c&&t.complete()},A=function(p){return c<r?d(p):l.push(p)},d=function(p){c++;var C=!1;Zs(e(p,u++)).subscribe(Uc(t,function(m){t.next(m)},function(){C=!0},void 0,function(){if(C)try{c--;for(var m=function(){var w=l.shift();o||d(w)};l.length&&c<r;)m();h()}catch(w){t.error(w)}}))};return n.subscribe(Uc(t,A,function(){f=!0,h()})),function(){}}function uE(n,t,e){return e===void 0&&(e=1/0),Ue(t)?uE(function(r,i){return lE(function(s,o){return t(r,s,i,o)})(Zs(n(r,i)))},e):(typeof t=="number"&&(e=t),Xs(function(r,i){return hP(r,i,n,e)}))}function dP(n){return n===void 0&&(n=1/0),uE(JI,n)}function gP(){for(var n=[],t=0;t<arguments.length;t++)n[t]=arguments[t];var e=WT(n),r=XT(n,1/0),i=n;return i.length?i.length===1?Zs(i[0]):dP(r)(fP(i,e)):KT}function pP(n,t,e,r,i){return function(s,o){var a=e,l=t,c=0;s.subscribe(Uc(o,function(u){var f=c++;l=a?n(l,u,f):(a=!0,u)},(function(){a&&o.next(l),o.complete()})))}}function fE(n,t){return Xs(pP(n,t,arguments.length>=2,!1,!0))}var mP=function(n,t){return n.push(t),n};function CP(){return Xs(function(n,t){fE(mP,[])(n).subscribe(t)})}class yP{}class wP{constructor(){this.signals=new Set,this.abortController=new AbortController}addSignal(t=new yP){if(this.signal.aborted)throw new Error("cannot add a signal, already aborted!");this.signals.add(t),t.aborted?this.handleAborted(t):typeof t.addEventListener=="function"&&t.addEventListener("abort",()=>{this.handleAborted(t)})}handleAborted(t){this.signals.delete(t),this.signals.size===0&&this.abortController.abort()}get signal(){return this.abortController.signal}abort(){this.abortController.abort()}}class IP{constructor(){this.callbacks=new Set}addCallback(t=()=>{}){this.callbacks.add(t),this.currentMessage&&t(this.currentMessage)}callback(t){this.currentMessage=t;for(const e of this.callbacks)e(t)}}class $s{constructor({fill:t,cache:e}){if(typeof t!="function")throw new TypeError("must pass a fill function");if(typeof e!="object")throw new TypeError("must pass a cache object");if(typeof e.get!="function"||typeof e.set!="function"||typeof e.delete!="function")throw new TypeError("cache must implement get(key), set(key, val), and and delete(key)");this.cache=e,this.fillCallback=t}static isAbortException(t){return t.name==="AbortError"||t.code==="ERR_ABORTED"||t.message==="AbortError: aborted"||t.message==="Error: aborted"}evict(t,e){this.cache.get(t)===e&&this.cache.delete(t)}fill(t,e,r,i){const s=new wP,o=new IP;o.addCallback(i);const a={aborter:s,promise:this.fillCallback(e,s.signal,l=>{o.callback(l)}),settled:!1,statusReporter:o,get aborted(){return this.aborter.signal.aborted}};a.aborter.addSignal(r),a.aborter.signal.addEventListener("abort",()=>{a.settled||this.evict(t,a)}),a.promise.then(()=>{a.settled=!0},()=>{a.settled=!0,this.evict(t,a)}).catch(l=>{throw console.error(l),l}),this.cache.set(t,a)}static checkSinglePromise(t,e){function r(){if(e!=null&&e.aborted)throw Object.assign(new Error("aborted"),{code:"ERR_ABORTED"})}return t.then(i=>(r(),i),i=>{throw r(),i})}has(t){return this.cache.has(t)}get(t,e,r,i){if(!r&&e instanceof AbortSignal)throw new TypeError("second get argument appears to be an AbortSignal, perhaps you meant to pass `null` for the fill data?");const s=this.cache.get(t);return s?s.aborted&&!s.settled?(this.evict(t,s),this.get(t,e,r,i)):s.settled?s.promise:(s.aborter.addSignal(r),s.statusReporter.addCallback(i),$s.checkSinglePromise(s.promise,r)):(this.fill(t,e,r,i),$s.checkSinglePromise(this.cache.get(t).promise,r))}delete(t){const e=this.cache.get(t);e&&(e.settled||e.aborter.abort(),this.cache.delete(t))}clear(){const t=this.cache.keys();let e=0;for(let r=t.next();!r.done;r=t.next())this.delete(r.value),e+=1;return e}}function EP(n){return n&&n.__esModule&&Object.prototype.hasOwnProperty.call(n,"default")?n.default:n}var Z0,AE;function bP(){if(AE)return Z0;AE=1;class n{constructor(e={}){if(!(e.maxSize&&e.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");this.maxSize=e.maxSize,this.cache=new Map,this.oldCache=new Map,this._size=0}_set(e,r){this.cache.set(e,r),this._size++,this._size>=this.maxSize&&(this._size=0,this.oldCache=this.cache,this.cache=new Map)}get(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e)){const r=this.oldCache.get(e);return this.oldCache.delete(e),this._set(e,r),r}}set(e,r){return this.cache.has(e)?this.cache.set(e,r):this._set(e,r),this}has(e){return this.cache.has(e)||this.oldCache.has(e)}peek(e){if(this.cache.has(e))return this.cache.get(e);if(this.oldCache.has(e))return this.oldCache.get(e)}delete(e){const r=this.cache.delete(e);return r&&this._size--,this.oldCache.delete(e)||r}clear(){this.cache.clear(),this.oldCache.clear(),this._size=0}*keys(){for(const[e]of this)yield e}*values(){for(const[,e]of this)yield e}*[Symbol.iterator](){for(const e of this.cache)yield e;for(const e of this.oldCache){const[r]=e;this.cache.has(r)||(yield e)}}get size(){let e=0;for(const r of this.oldCache.keys())this.cache.has(r)||e++;return this._size+e}}return Z0=n,Z0}var xP=bP();const hE=EP(xP);class eo{constructor(t){W(this,"ranges");this.ranges=t}get min(){return this.ranges[0].min}get max(){return this.ranges.at(-1).max}contains(t){for(const e of this.ranges)if(e.min<=t&&e.max>=t)return!0;return!1}isContiguous(){return this.ranges.length>1}getRanges(){return this.ranges.map(t=>new eo([{min:t.min,max:t.max}]))}toString(){return this.ranges.map(t=>`[${t.min}-${t.max}]`).join(",")}union(t){const e=[...this.getRanges(),...t.getRanges()].sort((s,o)=>s.min<o.min?-1:s.min>o.min?1:s.max<o.max?-1:o.max>s.max?1:0),r=[];let i=e[0];for(const s of e)s.min>i.max+1?(r.push(i),i=s):s.max>i.max&&(i=new eo([{min:i.min,max:s.max}]));return r.push(i),r.length===1?r[0]:new eo(r)}}function BP(n){return BT(n.subarray(2),void 0)}class vP extends Error{constructor(e){super(e);W(this,"code");this.code="ERR_ABORTED"}}function SP(n){n.sort((i,s)=>i.offset-s.offset);const t=[];let e,r;for(const i of n)e&&r&&i.offset-r<=2e3?(e.length=e.length+i.length-r+i.offset,e.blocks.push(i)):t.push(e={blocks:[i],length:i.length,offset:i.offset}),r=e.offset+e.length;return t}function $f(n){if(n&&n.aborted)if(typeof DOMException>"u"){const t=new vP("aborted");throw t.code="ERR_ABORTED",t}else throw new DOMException("aborted","AbortError")}const $0=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function eg(n,t,e,r){return n<r&&t>=e}class dE{constructor(t,e,r,i,s){W(this,"bbi");W(this,"refsByName");W(this,"cirTreeOffset");W(this,"isCompressed");W(this,"blockType");W(this,"cirTreePromise");W(this,"featureCache",new $s({cache:new hE({maxSize:1e3}),fill:async({length:t,offset:e},r)=>this.bbi.read(t,e,{signal:r})}));if(this.bbi=t,this.refsByName=e,this.cirTreeOffset=r,this.isCompressed=i,this.blockType=s,!(r>=0))throw new Error("invalid cirTreeOffset!")}async readWigData(t,e,r,i,s){try{const o=this.refsByName[t];o===void 0&&i.complete();const a={chrId:o,start:e,end:r};this.cirTreePromise||(this.cirTreePromise=this.bbi.read(48,this.cirTreeOffset,s));const l=await this.cirTreePromise,u=new DataView(l.buffer).getUint32(4,!0);let f=[],h=0;const A=(m,w,b)=>{try{const x=m.subarray(w),B=new DataView(x.buffer,x.byteOffset,x.length);let E=0;const Q=B.getUint8(E);E+=2;const F=B.getUint16(E,!0);if(E+=2,Q===1){const k=[];for(let P=0;P<F;P++){const T=B.getUint32(E,!0);E+=4;const O=B.getUint32(E,!0);E+=4;const z=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4;const V=Number(B.getBigUint64(E,!0));E+=8;const q=Number(B.getBigUint64(E,!0));E+=8,k.push({startChrom:T,startBase:O,endBase:J,endChrom:z,blockOffset:V,blockSize:q,offset:E})}f=f.concat(k.filter(P=>d(P)).map(P=>({offset:P.blockOffset,length:P.blockSize})))}else if(Q===0){const k=[];for(let T=0;T<F;T++){const O=B.getUint32(E,!0);E+=4;const z=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4;const V=B.getUint32(E,!0);E+=4;const q=Number(B.getBigUint64(E,!0));E+=8,k.push({startChrom:O,startBase:z,endChrom:J,endBase:V,blockOffset:q,offset:E})}const P=k.filter(T=>d(T)).map(T=>T.blockOffset);P.length>0&&C(P,b+1)}}catch(y){i.error(y)}},d=m=>{const{startChrom:w,startBase:b,endChrom:y,endBase:x}=m;return(w<o||w===o&&b<=r)&&(y>o||y===o&&x>=e)},p=async(m,w,b)=>{try{const y=w.max-w.min,x=w.min,B=await this.featureCache.get(`${y}_${x}`,{length:y,offset:x},s==null?void 0:s.signal);for(const E of m)w.contains(E)&&(A(B,E-x,b),h-=1,h===0&&this.readFeatures(i,f,{...s,request:a}).catch(Q=>{i.error(Q)}))}catch(y){i.error(y)}},C=(m,w)=>{try{h+=m.length;const b=4+u*32;let y=new eo([{min:m[0],max:m[0]+b}]);for(let x=1;x<m.length;x+=1){const B=new eo([{min:m[x],max:m[x]+b}]);y=y.union(B)}y.getRanges().map(x=>p(m,x,w))}catch(b){i.error(b)}};C([this.cirTreeOffset+48],1);return}catch(o){i.error(o)}}parseSummaryBlock(t,e,r){const i=[];let s=e;const o=new DataView(t.buffer,t.byteOffset,t.length);for(;s<t.byteLength;){const a=o.getUint32(s,!0);s+=4;const l=o.getUint32(s,!0);s+=4;const c=o.getUint32(s,!0);s+=4;const u=o.getUint32(s,!0);s+=4;const f=o.getFloat32(s,!0);s+=4;const h=o.getFloat32(s,!0);s+=4;const A=o.getFloat32(s,!0);s+=4,s+=4,(!r||a===r.chrId&&eg(l,c,r.start,r.end))&&i.push({start:l,end:c,maxScore:h,minScore:f,summary:!0,score:A/(u||1)})}return i}parseBigBedBlock(t,e,r,i){const s=[];let o=e;const a=t,l=new DataView(a.buffer,a.byteOffset,a.length);for(;o<t.byteLength;){const c=o,u=l.getUint32(o,!0);o+=4;const f=l.getInt32(o,!0);o+=4;const h=l.getInt32(o,!0);o+=4;let A=o;for(;A<t.length&&t[A]!==0;A++);const d=t.subarray(o,A),p=($0==null?void 0:$0.decode(d))??d.toString();o=A+1,s.push({chromId:u,start:f,end:h,rest:p,uniqueId:`bb-${r+c}`})}return i?s.filter(c=>eg(c.start,c.end,i.start,i.end)):s}parseBigWigBlock(t,e,r){const i=t.subarray(e),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=4;const a=s.getInt32(o,!0);o+=8;const l=s.getUint32(o,!0);o+=4;const c=s.getUint32(o,!0);o+=4;const u=s.getUint8(o);o+=2;const f=s.getUint16(o,!0);o+=2;const h=new Array(f);switch(u){case 1:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const p=s.getInt32(o,!0);o+=4;const C=s.getFloat32(o,!0);o+=4,h[A]={start:d,end:p,score:C}}break}case 2:{for(let A=0;A<f;A++){const d=s.getInt32(o,!0);o+=4;const p=s.getFloat32(o,!0);o+=4,h[A]={score:p,start:d,end:d+c}}break}case 3:{for(let A=0;A<f;A++){const d=s.getFloat32(o,!0);o+=4;const p=a+A*l;h[A]={score:d,start:p,end:p+c}}break}}return r?h.filter(A=>eg(A.start,A.end,r.start,r.end)):h}async readFeatures(t,e,r={}){try{const{blockType:i,isCompressed:s}=this,{signal:o,request:a}=r,l=SP(e);$f(o),await Promise.all(l.map(async c=>{$f(o);const{length:u,offset:f}=c,h=await this.featureCache.get(`${u}_${f}`,c,o);for(const A of c.blocks){$f(o);let d=h.subarray(A.offset-c.offset);switch(s&&(d=BP(d)),$f(o),i){case"summary":{t.next(this.parseSummaryBlock(d,0,a));break}case"bigwig":{t.next(this.parseBigWigBlock(d,0,a));break}case"bigbed":{t.next(this.parseBigBedBlock(d,0,A.offset*256,a));break}default:console.warn(`Don't know what to do with ${i}`)}}})),t.complete()}catch(i){t.error(i)}}}const QP=-2003829722,gE=-2021002517;function to(n){return new DataView(n.buffer,n.byteOffset,n.length)}class pE{constructor(t){W(this,"bbi");W(this,"headerP");W(this,"renameRefSeqs");const{filehandle:e,renameRefSeqs:r=o=>o,path:i,url:s}=t;if(this.renameRefSeqs=r,e)this.bbi=e;else if(s)this.bbi=new Cn(s);else if(i)this.bbi=new st(i);else throw new Error("no file given")}getHeader(t){return this.headerP||(this.headerP=this._getHeader(t).catch(e=>{throw this.headerP=void 0,e})),this.headerP}async _getHeader(t){const e=await this._getMainHeader(t),r=await this._readChromTree(e,t);return{...e,...r}}async _getMainHeader(t,e=2e3){const r=await this.bbi.read(e,0,t),i=to(r),s=i.getInt32(0,!0);if(s!==QP&&s!==gE)throw new Error("not a BigWig/BigBed file");let o=0;const a=i.getInt32(o,!0);o+=4;const l=i.getUint16(o,!0);o+=2;const c=i.getUint16(o,!0);o+=2;const u=Number(i.getBigUint64(o,!0));o+=8;const f=Number(i.getBigUint64(o,!0));o+=8;const h=Number(i.getBigUint64(o,!0));o+=8;const A=i.getUint16(o,!0);o+=2;const d=i.getUint16(o,!0);o+=2;const p=Number(i.getBigUint64(o,!0));o+=8;const C=Number(i.getBigUint64(o,!0));o+=8;const m=i.getUint32(o,!0);o+=4;const w=Number(i.getBigUint64(o,!0));o+=8;const b=[];for(let E=0;E<c;E++){const Q=i.getUint32(o,!0);o+=4;const F=i.getUint32(o,!0);o+=4;const k=Number(i.getBigUint64(o,!0));o+=8;const P=Number(i.getBigUint64(o,!0));o+=8,b.push({reductionLevel:Q,reserved:F,dataOffset:k,indexOffset:P})}const y=a===gE?"bigbed":"bigwig";if(p>e||C>e-40)return this._getMainHeader(t,e*2);let x;if(C){const E=r.subarray(C);let Q=0;const F=to(E),k=Number(F.getBigUint64(Q,!0));Q+=8;const P=F.getFloat64(Q,!0);Q+=8;const T=F.getFloat64(Q,!0);Q+=8;const O=F.getFloat64(Q,!0);Q+=8;const z=F.getFloat64(Q,!0);Q+=8,x={scoreMin:P,scoreMax:T,scoreSum:O,scoreSumSquares:z,basesCovered:k}}else throw new Error("no stats");const B=new TextDecoder("utf8");return{zoomLevels:b,magic:a,extHeaderOffset:w,numZoomLevels:c,fieldCount:A,totalSummary:x,definedFieldCount:d,uncompressBufSize:m,asOffset:p,chromTreeOffset:u,totalSummaryOffset:C,unzoomedDataOffset:f,unzoomedIndexOffset:h,fileType:y,version:l,autoSql:p?B.decode(r.subarray(p,r.indexOf(0,p))):""}}async _readChromTree(t,e){const r=[],i={},s=t.chromTreeOffset,o=to(await this.bbi.read(32,s,e));let a=0;a+=4,a+=4;const l=o.getUint32(a,!0);a+=4;const c=o.getUint32(a,!0);a+=4,a+=8;const u=new TextDecoder("utf8"),f=async h=>{const A=await this.bbi.read(4,h),d=to(A);let p=0;const C=d.getUint8(p);p+=1,p+=1;const m=d.getUint16(p,!0);if(p+=2,C){const w=await this.bbi.read(m*(l+c),h+p),b=to(w);p=0;for(let y=0;y<m;y++){const x=u.decode(w.subarray(p,p+l)).replaceAll("\0","");p+=l;const B=b.getUint32(p,!0);p+=4;const E=b.getUint32(p,!0);p+=4,i[this.renameRefSeqs(x)]=B,r[B]={name:x,id:B,length:E}}}else{const w=[],b=to(await this.bbi.read(m*(l+8),h+p));p=0;for(let y=0;y<m;y++){p+=l;const x=Number(b.getBigUint64(p,!0));p+=8,w.push(f(x))}await Promise.all(w)}};return await f(s+32),{refsByName:i,refsByNumber:r}}async getUnzoomedView(t){const{unzoomedIndexOffset:e,refsByName:r,uncompressBufSize:i,fileType:s}=await this.getHeader(t);return new dE(this.bbi,r,e,i>0,s)}async getFeatureStream(t,e,r,i){await this.getHeader(i);const s=this.renameRefSeqs(t);let o;const{basesPerSpan:a,scale:l}=i||{};return a?o=await this.getView(1/a,i):l?o=await this.getView(l,i):o=await this.getView(1,i),new Ut(c=>{o.readWigData(s,e,r,c,i).catch(u=>{c.error(u)})})}async getFeatures(t,e,r,i){const s=await this.getFeatureStream(t,e,r,i);return(await cE(s.pipe(CP()))).flat()}}class DP extends pE{async getView(t,e){const{zoomLevels:r,refsByName:i,uncompressBufSize:s}=await this.getHeader(e),o=1/t,a=r.length-1;for(let l=a;l>=0;l-=1){const c=r[l];if(c&&c.reductionLevel<=2*o)return new dE(this.bbi,i,c.indexOffset,s>0,"summary")}return this.getUnzoomedView(e)}}function kP(n){return n.filter(t=>!!t)}class FP extends pE{constructor(){super(...arguments);W(this,"readIndicesCache",new $s({cache:new hE({maxSize:1}),fill:(e,r)=>this._readIndices({...e,signal:r})}))}readIndices(e={}){const{signal:r,...i}=e;return this.readIndicesCache.get(JSON.stringify(i),e,r)}async getView(e,r){return this.getUnzoomedView(r)}async _readIndices(e){const{extHeaderOffset:r}=await this.getHeader(e),i=await this.bbi.read(64,r),s=new DataView(i.buffer,i.byteOffset,i.length);let o=0;o+=2;const a=s.getUint16(o,!0);o+=2;const l=Number(s.getBigUint64(o,!0));if(o+=8,a===0)return[];const c=20,u=c*a,f=await this.bbi.read(u,l),h=[];for(let A=0;A<a;A+=1){const d=f.subarray(A*c),p=new DataView(d.buffer,d.byteOffset,d.length);let C=0;const m=p.getInt16(C,!0);C+=2;const w=p.getInt16(C,!0);C+=2;const b=Number(p.getBigUint64(C,!0));C+=12;const y=p.getInt16(C,!0);h.push({type:m,fieldcount:w,offset:b,field:y})}return h}async searchExtraIndexBlocks(e,r={}){const i=await this.readIndices(r);if(i.length===0)return[];const s=new TextDecoder("utf8"),o=i.map(async a=>{const{offset:l,field:c}=a,u=await this.bbi.read(32,l,r),f=new DataView(u.buffer,u.byteOffset,u.length);let h=0;h+=4;const A=f.getInt32(h,!0);h+=4;const d=f.getInt32(h,!0);h+=4;const p=f.getInt32(h,!0);h+=4,h+=8;const C=async m=>{const w=m,b=4+A*(d+p),x=await this.bbi.read(b,w,r),B=new DataView(x.buffer,x.byteOffset,x.length);let E=0;const Q=B.getInt8(E);E+=2;const F=B.getInt16(E,!0);E+=2;const k=[];if(Q===0){const P=[];for(let O=0;O<F;O++){const z=s.decode(x.subarray(E,E+d)).replaceAll("\0","");E+=d;const J=Number(B.getBigUint64(E,!0));E+=8,P.push({key:z,offset:J})}let T=0;for(const{key:O,offset:z}of P){if(e.localeCompare(O)<0&&T)return C(T);T=z}return C(T)}else if(Q===1){for(let P=0;P<F;P++){const T=s.decode(x.subarray(E,E+d)).replaceAll("\0","");E+=d;const O=Number(B.getBigUint64(E,!0));E+=8;const z=B.getUint32(E,!0);E+=4;const J=B.getUint32(E,!0);E+=4,k.push({key:T,offset:O,length:z,reserved:J})}for(const P of k)if(P.key===e)return{...P,field:c};return}};return C(l+32)});return kP(await Promise.all(o))}async searchExtraIndex(e,r={}){const i=await this.searchExtraIndexBlocks(e,r);if(i.length===0)return[];const s=await this.getUnzoomedView(r),o=i.map(l=>new Ut(c=>{s.readFeatures(c,[l],r).catch(u=>{c.error(u)})}).pipe(fE((c,u)=>c.concat(u)),lE(c=>{for(const u of c)u.field=l.field;return c})));return(await cE(gP(...o))).filter(l=>{var c;return((c=l.rest)==null?void 0:c.split(" ")[(l.field||0)-3])===e})}}const mE=Object.freeze(Object.defineProperty({__proto__:null,BigBed:FP,BigWig:DP},Symbol.toStringTag,{value:"Module"}));function MP(n,t){function e(){this.constructor=n}e.prototype=t.prototype,n.prototype=new e}function no(n,t,e,r){this.message=n,this.expected=t,this.found=e,this.location=r,this.name="SyntaxError",typeof Error.captureStackTrace=="function"&&Error.captureStackTrace(this,no)}MP(no,Error),no.buildMessage=function(n,t){var e={literal:function(c){return'"'+i(c.text)+'"'},class:function(c){var u="",f;for(f=0;f<c.parts.length;f++)u+=c.parts[f]instanceof Array?s(c.parts[f][0])+"-"+s(c.parts[f][1]):s(c.parts[f]);return"["+(c.inverted?"^":"")+u+"]"},any:function(c){return"any character"},end:function(c){return"end of input"},other:function(c){return c.description}};function r(c){return c.charCodeAt(0).toString(16).toUpperCase()}function i(c){return c.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function s(c){return c.replace(/\\/g,"\\\\").replace(/\]/g,"\\]").replace(/\^/g,"\\^").replace(/-/g,"\\-").replace(/\0/g,"\\0").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/[\x00-\x0F]/g,function(u){return"\\x0"+r(u)}).replace(/[\x10-\x1F\x7F-\x9F]/g,function(u){return"\\x"+r(u)})}function o(c){return e[c.type](c)}function a(c){var u=new Array(c.length),f,h;for(f=0;f<c.length;f++)u[f]=o(c[f]);if(u.sort(),u.length>0){for(f=1,h=1;f<u.length;f++)u[f-1]!==u[f]&&(u[h]=u[f],h++);u.length=h}switch(u.length){case 1:return u[0];case 2:return u[0]+" or "+u[1];default:return u.slice(0,-1).join(", ")+", or "+u[u.length-1]}}function l(c){return c?'"'+i(c)+'"':"end of input"}return"Expected "+a(n)+" but "+l(t)+" found."};function RP(n,t){t=t!==void 0?t:{};var e={},r={declaration:sx},i=sx,s="(",o=me("(",!1),a=")",l=me(")",!1),c=function(I,R,U,H){return{type:I,name:R,comment:U,fields:H}},u="simple",f=me("simple",!1),h="object",A=me("object",!1),d="table",p=me("table",!1),C="auto",m=me("auto",!1),w="primary",b=me("primary",!1),y="index",x=me("index",!1),B="unique",E=me("unique",!1),Q=function(I,R){return R},F=function(I,R){return I.name&&R.unshift(I),R},k="#",P=me("#",!1),T=";",O=me(";",!1),z=function(I,R,U){return{type:I,name:R,comment:U}},J="[",V=me("[",!1),q="]",oe=me("]",!1),se=function(I,R,U,H){return{type:I,size:R,name:U,comment:H}},Ae=function(I,R,U,H){return{type:I,vals:R,name:U,comment:H}},at=",",Ft=me(",",!1),xn=function(I,R){return R.unshift(I),R},cs="int",jl=me("int",!1),ha="uint",$n=me("uint",!1),ls="short",_=me("short",!1),ee="ushort",ae=me("ushort",!1),L="byte",ct=me("byte",!1),ge="ubyte",Ct=me("ubyte",!1),lt="float",er=me("float",!1),Wl="char",LL=me("char",!1),zb="string",OL=me("string",!1),Hb="lstring",UL=me("lstring",!1),Vb="enum",GL=me("enum",!1),_b="double",zL=me("double",!1),Yb="bigint",HL=me("bigint",!1),Jb="set",VL=me("set",!1),_L=function(I,R){return I+" "+R},YL=/^[a-zA-Z_]/,JL=Xl([["a","z"],["A","Z"],"_"],!1,!1),qb=/^[a-zA-Z0-9_]/,Kb=Xl([["a","z"],["A","Z"],["0","9"],"_"],!1,!1),qL=function(I){return tx()},jb=/^[^\n\r]/,Wb=Xl([`
703
+ `,"\r"],!0,!1),KL=function(I){return I.join("").replace(/^"/,"").replace(/"$/,"")},jL=nx("integer"),Xb=/^[0-9]/,Zb=Xl([["0","9"]],!1,!1),WL=function(){return parseInt(tx(),10)},XL=nx("whitespace"),$b=/^[ \t\n\r]/,ex=Xl([" "," ",`
704
+ `,"\r"],!1,!1),v=0,yt=0,QA=[{line:1,column:1}],Bn=0,Fg=[],X=0,DA;if("startRule"in t){if(!(t.startRule in r))throw new Error(`Can't start parsing from rule "`+t.startRule+'".');i=r[t.startRule]}function tx(){return n.substring(yt,v)}function me(I,R){return{type:"literal",text:I,ignoreCase:R}}function Xl(I,R,U){return{type:"class",parts:I,inverted:R,ignoreCase:U}}function ZL(){return{type:"end"}}function nx(I){return{type:"other",description:I}}function rx(I){var R=QA[I],U;if(R)return R;for(U=I-1;!QA[U];)U--;for(R=QA[U],R={line:R.line,column:R.column};U<I;)n.charCodeAt(U)===10?(R.line++,R.column=1):R.column++,U++;return QA[I]=R,R}function ix(I,R){var U=rx(I),H=rx(R);return{start:{offset:I,line:U.line,column:U.column},end:{offset:R,line:H.line,column:H.column}}}function Z(I){v<Bn||(v>Bn&&(Bn=v,Fg=[]),Fg.push(I))}function $L(I,R,U){return new no(no.buildMessage(I,R),I,R,U)}function sx(){var I,R,U,H,j,Ee,De,Jt,_r,tr,Yr,nr,Jr,rr;return I=v,R=ce(),R!==e?(U=ox(),U!==e?(H=ce(),H!==e?(j=ax(),j!==e?(Ee=ce(),Ee!==e?(De=kA(),De!==e?(Jt=ce(),Jt!==e?(n.charCodeAt(v)===40?(_r=s,v++):(_r=e,X===0&&Z(o)),_r!==e?(tr=ce(),tr!==e?(Yr=eO(),Yr!==e?(nr=ce(),nr!==e?(n.charCodeAt(v)===41?(Jr=a,v++):(Jr=e,X===0&&Z(l)),Jr!==e?(rr=ce(),rr!==e?(yt=I,R=c(U,j,De,Yr),I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I}function ox(){var I;return n.substr(v,6)===u?(I=u,v+=6):(I=e,X===0&&Z(f)),I===e&&(n.substr(v,6)===h?(I=h,v+=6):(I=e,X===0&&Z(A)),I===e&&(n.substr(v,5)===d?(I=d,v+=5):(I=e,X===0&&Z(p)))),I}function ax(){var I,R,U,H;return I=on(),I===e&&(I=v,R=on(),R!==e?(U=cx(),U!==e?(R=[R,U],I=R):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,R=on(),R!==e?(n.substr(v,4)===C?(U=C,v+=4):(U=e,X===0&&Z(m)),U!==e?(R=[R,U],I=R):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,R=on(),R!==e?(U=cx(),U!==e?(n.substr(v,4)===C?(H=C,v+=4):(H=e,X===0&&Z(m)),H!==e?(R=[R,U,H],I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)))),I}function cx(){var I;return n.substr(v,7)===w?(I=w,v+=7):(I=e,X===0&&Z(b)),I===e&&(n.substr(v,5)===y?(I=y,v+=5):(I=e,X===0&&Z(x)),I===e&&(n.substr(v,6)===B?(I=B,v+=6):(I=e,X===0&&Z(E)))),I}function kA(){var I;return I=lx(),I===e&&(I=ce()),I}function eO(){var I,R,U,H,j,Ee,De;if(I=v,R=Mg(),R!==e)if(U=ce(),U!==e){for(H=[],j=v,Ee=ce(),Ee!==e?(De=Mg(),De!==e?(yt=j,Ee=Q(R,De),j=Ee):(v=j,j=e)):(v=j,j=e);j!==e;)H.push(j),j=v,Ee=ce(),Ee!==e?(De=Mg(),De!==e?(yt=j,Ee=Q(R,De),j=Ee):(v=j,j=e)):(v=j,j=e);H!==e?(j=ce(),j!==e?(yt=I,R=F(R,H),I=R):(v=I,I=e)):(v=I,I=e)}else v=I,I=e;else v=I,I=e;return I}function tO(){var I;return n.charCodeAt(v)===35?(I=k,v++):(I=e,X===0&&Z(P)),I}function nO(){var I,R,U,H,j;return I=v,R=ce(),R!==e?(U=tO(),U!==e?(H=lx(),H!==e?(j=ce(),j!==e?(R=[R,U,H,j],I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I}function Mg(){var I,R,U,H,j,Ee,De,Jt,_r,tr,Yr,nr,Jr,rr;return I=v,R=Rg(),R!==e?(U=ce(),U!==e?(H=on(),H!==e?(j=ce(),j!==e?(n.charCodeAt(v)===59?(Ee=T,v++):(Ee=e,X===0&&Z(O)),Ee!==e?(De=ce(),De!==e?(Jt=kA(),Jt!==e?(yt=I,R=z(R,H,Jt),I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,R=Rg(),R!==e?(U=ce(),U!==e?(n.charCodeAt(v)===91?(H=J,v++):(H=e,X===0&&Z(V)),H!==e?(j=ce(),j!==e?(Ee=iO(),Ee!==e?(De=ce(),De!==e?(n.charCodeAt(v)===93?(Jt=q,v++):(Jt=e,X===0&&Z(oe)),Jt!==e?(_r=ce(),_r!==e?(tr=on(),tr!==e?(Yr=ce(),Yr!==e?(n.charCodeAt(v)===59?(nr=T,v++):(nr=e,X===0&&Z(O)),nr!==e?(Jr=ce(),Jr!==e?(rr=kA(),rr!==e?(yt=I,R=se(R,Ee,tr,rr),I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I===e&&(I=v,R=Rg(),R!==e?(U=ce(),U!==e?(n.charCodeAt(v)===40?(H=s,v++):(H=e,X===0&&Z(o)),H!==e?(j=ce(),j!==e?(Ee=rO(),Ee!==e?(De=ce(),De!==e?(n.charCodeAt(v)===41?(Jt=a,v++):(Jt=e,X===0&&Z(l)),Jt!==e?(_r=ce(),_r!==e?(tr=on(),tr!==e?(Yr=ce(),Yr!==e?(n.charCodeAt(v)===59?(nr=T,v++):(nr=e,X===0&&Z(O)),nr!==e?(Jr=ce(),Jr!==e?(rr=kA(),rr!==e?(yt=I,R=Ae(R,Ee,tr,rr),I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e)):(v=I,I=e),I===e&&(I=nO()))),I}function rO(){var I,R,U,H,j,Ee,De;if(I=v,R=on(),R!==e){for(U=[],H=v,n.charCodeAt(v)===44?(j=at,v++):(j=e,X===0&&Z(Ft)),j!==e?(Ee=ce(),Ee!==e?(De=on(),De!==e?(yt=H,j=Q(R,De),H=j):(v=H,H=e)):(v=H,H=e)):(v=H,H=e);H!==e;)U.push(H),H=v,n.charCodeAt(v)===44?(j=at,v++):(j=e,X===0&&Z(Ft)),j!==e?(Ee=ce(),Ee!==e?(De=on(),De!==e?(yt=H,j=Q(R,De),H=j):(v=H,H=e)):(v=H,H=e)):(v=H,H=e);U!==e?(yt=I,R=xn(R,U),I=R):(v=I,I=e)}else v=I,I=e;return I}function Rg(){var I,R,U,H;return n.substr(v,3)===cs?(I=cs,v+=3):(I=e,X===0&&Z(jl)),I===e&&(n.substr(v,4)===ha?(I=ha,v+=4):(I=e,X===0&&Z($n)),I===e&&(n.substr(v,5)===ls?(I=ls,v+=5):(I=e,X===0&&Z(_)),I===e&&(n.substr(v,6)===ee?(I=ee,v+=6):(I=e,X===0&&Z(ae)),I===e&&(n.substr(v,4)===L?(I=L,v+=4):(I=e,X===0&&Z(ct)),I===e&&(n.substr(v,5)===ge?(I=ge,v+=5):(I=e,X===0&&Z(Ct)),I===e&&(n.substr(v,5)===lt?(I=lt,v+=5):(I=e,X===0&&Z(er)),I===e&&(n.substr(v,4)===Wl?(I=Wl,v+=4):(I=e,X===0&&Z(LL)),I===e&&(n.substr(v,6)===zb?(I=zb,v+=6):(I=e,X===0&&Z(OL)),I===e&&(n.substr(v,7)===Hb?(I=Hb,v+=7):(I=e,X===0&&Z(UL)),I===e&&(n.substr(v,4)===Vb?(I=Vb,v+=4):(I=e,X===0&&Z(GL)),I===e&&(n.substr(v,6)===_b?(I=_b,v+=6):(I=e,X===0&&Z(zL)),I===e&&(n.substr(v,6)===Yb?(I=Yb,v+=6):(I=e,X===0&&Z(HL)),I===e&&(n.substr(v,3)===Jb?(I=Jb,v+=3):(I=e,X===0&&Z(VL)),I===e&&(I=v,R=ox(),R!==e?(U=ce(),U!==e?(H=ax(),H!==e?(yt=I,R=_L(R,H),I=R):(v=I,I=e)):(v=I,I=e)):(v=I,I=e))))))))))))))),I}function iO(){var I;return I=sO(),I===e&&(I=on()),I}function on(){var I,R,U,H,j;if(I=v,R=v,YL.test(n.charAt(v))?(U=n.charAt(v),v++):(U=e,X===0&&Z(JL)),U!==e){for(H=[],qb.test(n.charAt(v))?(j=n.charAt(v),v++):(j=e,X===0&&Z(Kb));j!==e;)H.push(j),qb.test(n.charAt(v))?(j=n.charAt(v),v++):(j=e,X===0&&Z(Kb));H!==e?(U=[U,H],R=U):(v=R,R=e)}else v=R,R=e;return R!==e&&(yt=I,R=qL()),I=R,I}function lx(){var I,R,U;for(I=v,R=[],jb.test(n.charAt(v))?(U=n.charAt(v),v++):(U=e,X===0&&Z(Wb));U!==e;)R.push(U),jb.test(n.charAt(v))?(U=n.charAt(v),v++):(U=e,X===0&&Z(Wb));return R!==e&&(yt=I,R=KL(R)),I=R,I}function sO(){var I,R,U,H;if(X++,I=v,R=ce(),R!==e){if(U=[],Xb.test(n.charAt(v))?(H=n.charAt(v),v++):(H=e,X===0&&Z(Zb)),H!==e)for(;H!==e;)U.push(H),Xb.test(n.charAt(v))?(H=n.charAt(v),v++):(H=e,X===0&&Z(Zb));else U=e;U!==e?(yt=I,R=WL(),I=R):(v=I,I=e)}else v=I,I=e;return X--,I===e&&(R=e,X===0&&Z(jL)),I}function ce(){var I,R;for(X++,I=[],$b.test(n.charAt(v))?(R=n.charAt(v),v++):(R=e,X===0&&Z(ex));R!==e;)I.push(R),$b.test(n.charAt(v))?(R=n.charAt(v),v++):(R=e,X===0&&Z(ex));return X--,I===e&&(R=e,X===0&&Z(XL)),I}if(DA=i(),DA!==e&&v===n.length)return DA;throw DA!==e&&v<n.length&&Z(ZL()),$L(Fg,Bn<n.length?n.charAt(Bn):null,Bn<n.length?ix(Bn,Bn+1):ix(Bn,Bn))}const CE={SyntaxError:no,parse:RP},tg=Object.fromEntries(Object.entries(Object.freeze(Object.defineProperty({__proto__:null,bigChain:`table bigChain
724
705
  "bigChain pairwise alignment"
725
706
  (
726
707
  string chrom; "Reference sequence chromosome or scaffold"
@@ -879,12 +860,12 @@ chrM 16299`};function t6(n){if(!(n in o2))throw new Error(`Unknown assembly: ${n
879
860
  float score; "Floating point score."
880
861
  char[1] leftStatus; "Gap/break annotation for preceding block"
881
862
  char[1] rightStatus; "Gap/break annotation for following block"
882
- )`},Symbol.toStringTag,{value:"Module"}))).map(([n,t])=>[n,Zw.parse(t.trim())]));function Zd(n){const t=new Set(["uint","int","float","long"]);return{...n,fields:n.fields.map(e=>({...e,isArray:e.size&&e.type!=="char",arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)})).filter(e=>!!e.name)}}const P9={".":0,"-":-1,"+":1};function L9(n){var t;return n.length>=12&&!Number.isNaN(Number.parseInt(n[9],10))&&((t=n[10])==null?void 0:t.split(",").filter(e=>!!e).length)===Number.parseInt(n[9],10)}class O9{constructor(t={}){if(t.autoSql)this.autoSql=Zd(Zw.parse(t.autoSql));else if(t.type){if(!Xd[t.type])throw new Error("Type not found");this.autoSql=Zd(Xd[t.type])}else this.autoSql=Zd(Xd.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(t,e={}){const{autoSql:r}=this,{uniqueId:i}=e,s=Array.isArray(t)?t:t.split(" ");let o={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&L9(s))for(let a=0;a<r.fields.length;a++){const l=r.fields[a];let c=s[a];const{isNumeric:u,isArray:f,arrayIsNumeric:h,name:A}=l;if(c==null)break;if(c!=="."){if(u){const d=Number(c);c=Number.isNaN(d)?c:d}else f&&(c=c.split(","),c.at(-1)===""&&c.pop(),h&&(c=c.map(Number)));o[A]=c}}else{const a=["chrom","chromStart","chromEnd","name"];o=Object.fromEntries(s.map((l,c)=>[a[c]||"field"+c,l])),o.chromStart=+o.chromStart,o.chromEnd=+o.chromEnd,Number.isNaN(Number.parseFloat(o.field4))||(o.score=+o.field4,delete o.field4),(o.field5==="+"||o.field5==="-")&&(o.strand=o.field5,delete o.field5)}return i&&(o.uniqueId=i),o.strand=P9[o.strand]||0,o.chrom=decodeURIComponent(o.chrom),o}}const U9=Object.freeze(Object.defineProperty({__proto__:null,default:O9},Symbol.toStringTag,{value:"Module"}));var He=function(n,t,e,r,i){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?n!==t||!i:!t.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?i.call(n,e):i?i.value=e:t.set(n,e),e},G=function(n,t,e,r){if(e==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?n!==t||!r:!t.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?r:e==="a"?r.call(n):r?r.value:t.get(n)},ye,bt,we,ke,pi,ac,mi,sf,$t,$w,$d,e0,t0,eI,of;class cc extends Map{constructor(t={}){if(super(),ye.add(this),bt.set(this,0),we.set(this,new Map),ke.set(this,new Map),pi.set(this,void 0),ac.set(this,void 0),mi.set(this,void 0),!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");He(this,pi,t.maxSize,"f"),He(this,ac,t.maxAge||Number.POSITIVE_INFINITY,"f"),He(this,mi,t.onEviction,"f")}get __oldCache(){return G(this,ke,"f")}get(t){if(G(this,we,"f").has(t)){const e=G(this,we,"f").get(t);return G(this,ye,"m",$d).call(this,t,e)}if(G(this,ke,"f").has(t)){const e=G(this,ke,"f").get(t);if(!G(this,ye,"m",$t).call(this,t,e))return G(this,ye,"m",eI).call(this,t,e),e.value}}set(t,e,{maxAge:r=G(this,ac,"f")}={}){const i=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;return G(this,we,"f").has(t)?G(this,we,"f").set(t,{value:e,expiry:i}):G(this,ye,"m",t0).call(this,t,{value:e,expiry:i}),this}has(t){return G(this,we,"f").has(t)?!G(this,ye,"m",$t).call(this,t,G(this,we,"f").get(t)):G(this,ke,"f").has(t)?!G(this,ye,"m",$t).call(this,t,G(this,ke,"f").get(t)):!1}peek(t){if(G(this,we,"f").has(t))return G(this,ye,"m",e0).call(this,t,G(this,we,"f"));if(G(this,ke,"f").has(t))return G(this,ye,"m",e0).call(this,t,G(this,ke,"f"))}expiresIn(t){const e=G(this,we,"f").get(t)??G(this,ke,"f").get(t);if(e)return e.expiry?e.expiry-Date.now():Number.POSITIVE_INFINITY}delete(t){var e;const r=G(this,we,"f").delete(t);return r&&He(this,bt,(e=G(this,bt,"f"),e--,e),"f"),G(this,ke,"f").delete(t)||r}clear(){G(this,we,"f").clear(),G(this,ke,"f").clear(),He(this,bt,0,"f")}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");const e=[...G(this,ye,"m",of).call(this)],r=e.length-t;r<0?(He(this,we,new Map(e),"f"),He(this,ke,new Map,"f"),He(this,bt,e.length,"f")):(r>0&&G(this,ye,"m",sf).call(this,e.slice(0,r)),He(this,ke,new Map(e.slice(r)),"f"),He(this,we,new Map,"f"),He(this,bt,0,"f")),He(this,pi,t,"f")}evict(t=1){const e=t;if(!e||e<=0)return;const r=[...G(this,ye,"m",of).call(this)],i=Math.trunc(Math.min(e,Math.max(r.length-1,0)));i<=0||(G(this,ye,"m",sf).call(this,r.slice(0,i)),He(this,ke,new Map(r.slice(i)),"f"),He(this,we,new Map,"f"),He(this,bt,0,"f"))}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[(bt=new WeakMap,we=new WeakMap,ke=new WeakMap,pi=new WeakMap,ac=new WeakMap,mi=new WeakMap,ye=new WeakSet,sf=function(e){if(typeof G(this,mi,"f")=="function")for(const[r,i]of e)G(this,mi,"f").call(this,r,i.value)},$t=function(e,r){return typeof r.expiry=="number"&&r.expiry<=Date.now()?(typeof G(this,mi,"f")=="function"&&G(this,mi,"f").call(this,e,r.value),this.delete(e)):!1},$w=function(e,r){if(!G(this,ye,"m",$t).call(this,e,r))return r.value},$d=function(e,r){return r.expiry?G(this,ye,"m",$w).call(this,e,r):r.value},e0=function(e,r){const i=r.get(e);return G(this,ye,"m",$d).call(this,e,i)},t0=function(e,r){var i;G(this,we,"f").set(e,r),He(this,bt,(i=G(this,bt,"f"),i++,i),"f"),G(this,bt,"f")>=G(this,pi,"f")&&(He(this,bt,0,"f"),G(this,ye,"m",sf).call(this,G(this,ke,"f")),He(this,ke,G(this,we,"f"),"f"),He(this,we,new Map,"f"))},eI=function(e,r){G(this,ke,"f").delete(e),G(this,ye,"m",t0).call(this,e,r)},of=function*(){for(const e of G(this,ke,"f")){const[r,i]=e;G(this,we,"f").has(r)||G(this,ye,"m",$t).call(this,r,i)||(yield e)}for(const e of G(this,we,"f")){const[r,i]=e;G(this,ye,"m",$t).call(this,r,i)||(yield e)}},Symbol.iterator)](){for(const t of G(this,we,"f")){const[e,r]=t;G(this,ye,"m",$t).call(this,e,r)||(yield[e,r.value])}for(const t of G(this,ke,"f")){const[e,r]=t;G(this,we,"f").has(e)||G(this,ye,"m",$t).call(this,e,r)||(yield[e,r.value])}}*entriesDescending(){let t=[...G(this,we,"f")];for(let e=t.length-1;e>=0;--e){const r=t[e],[i,s]=r;G(this,ye,"m",$t).call(this,i,s)||(yield[i,s.value])}t=[...G(this,ke,"f")];for(let e=t.length-1;e>=0;--e){const r=t[e],[i,s]=r;G(this,we,"f").has(i)||G(this,ye,"m",$t).call(this,i,s)||(yield[i,s.value])}}*entriesAscending(){for(const[t,e]of G(this,ye,"m",of).call(this))yield[t,e.value]}get size(){if(!G(this,bt,"f"))return G(this,ke,"f").size;let t=0;for(const e of G(this,ke,"f").keys())G(this,we,"f").has(e)||t++;return Math.min(G(this,bt,"f")+t,G(this,pi,"f"))}get maxSize(){return G(this,pi,"f")}get maxAge(){return G(this,ac,"f")}entries(){return this.entriesAscending()}forEach(t,e=this){for(const[r,i]of this.entriesAscending())t.call(e,i,r,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}let tI=class{constructor(t,e,r,i){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}};const nI=65536,G9=nI*nI;function z9(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*G9+(e>>>0)}function H9(n={}){return"aborted"in n?{signal:n}:n}function n0(n,t){const e=n.length;if(e===0)return n;let r;if(t){const l=t.blockPosition,c=t.dataPosition;r=[];for(let u=0;u<e;u++){const f=n[u],h=f.maxv;(h.blockPosition-l||h.dataPosition-c)>0&&r.push(f)}if(r.length===0)return r}else r=n;r.sort((l,c)=>{const u=l.minv.blockPosition-c.minv.blockPosition;return u!==0?u:l.minv.dataPosition-c.minv.dataPosition});const i=[];let s=r[0];i.push(s);let o=s.minv.blockPosition,a=s.maxv.blockPosition;for(let l=1;l<r.length;l++){const c=r[l],u=c.minv.blockPosition,f=c.maxv.blockPosition;if(u-a<65e3&&f-o<5e6){const h=c.maxv,A=s.maxv;(f-a||h.dataPosition-A.dataPosition)>0&&(s.maxv=h,a=f)}else i.push(c),s=c,o=u,a=f}return i}function rI(n,t){return{lineCount:z9(n,t)}}function lc(n,t){return n?n.compareTo(t)>0?t:n:t}function Y9(n,t=e=>e){let e=0,r=0;const i=[],s={};for(let o=0;o<n.length;o+=1)if(!n[o]){if(r<o){let a="";for(let l=r;l<o;l++)a+=String.fromCharCode(n[l]);a=t(a),i[e]=a,s[a]=e}r=o+1,e+=1}return{refNameToId:s,refIdToName:i}}function _9(n){let t=0;for(const i of n)t+=i.length;const e=new Uint8Array(t);let r=0;for(const i of n)e.set(i,r),r+=i.length;return e}function V9(n,t,e){return!!((n&t)!==t||n&e)}function J9(n,t){return t==="*"?n===void 0:`${n}`!=`${t}`}function q9(n){if(!n)return"";const{flagInclude:t=0,flagExclude:e=0,tagFilter:r}=n,i=r?`:${r.tag}=${r.value??"*"}`:"";return`:f${t}x${e}${i}`}let iI=class{constructor({filehandle:t,renameRefSeq:e=r=>r}){this.filehandle=t,this.renameRefSeq=e}async estimatedBytesForRegions(t,e){const r=await Promise.all(t.map(o=>this.blocksForRange(o.refId,o.start,o.end,e))),i=n0(r.flat());let s=0;for(const o of i)s+=o.fetchedSize();return s}},sI=class{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}};function Ir(n,t=0,e=!1){if(e)throw new Error("big-endian virtual file offsets not implemented");return new sI(n[t+7]*1099511627776+n[t+6]*4294967296+n[t+5]*16777216+n[t+4]*65536+n[t+3]*256+n[t+2],n[t+1]<<8|n[t])}const K9=21578050;function j9(n,t){return n-n%t}function W9(n,t){return n-n%t+t}function X9(n,t){return t-=1,[[0,0],[1+(n>>26),1+(t>>26)],[9+(n>>23),9+(t>>23)],[73+(n>>20),73+(t>>20)],[585+(n>>17),585+(t>>17)],[4681+(n>>14),4681+(t>>14)]]}class Fs extends iI{async lineCount(t,e){var i,s;return((s=(i=(await this.parse(e)).indices(t))==null?void 0:i.stats)==null?void 0:s.lineCount)||0}async _parse(t){const e=await this.filehandle.readFile(),r=new DataView(e.buffer);if(r.getUint32(0,!0)!==K9)throw new Error("Not a BAI file");const i=r.getInt32(4,!0),o=((1<<(5+1)*3)-1)/7;let a=8,l;const c=[];for(let h=0;h<i;h++){c.push(a);const A=r.getInt32(a,!0);a+=4;for(let p=0;p<A;p+=1){const C=r.getUint32(a,!0);if(a+=4,C===o+1)a+=4,a+=32;else{if(C>o+1)throw new Error("bai index contains too many bins, please use CSI");{const w=r.getInt32(a,!0);a+=4;for(let b=0;b<w;b++)a+=8,a+=8}}}const d=r.getInt32(a,!0);a+=4;const g=new Array(d);for(let p=0;p<d;p++){const C=Ir(e,a);a+=8,l=lc(l,C),g[p]=C}}const u=new cc({maxSize:5});function f(h){let A=c[h];if(A===void 0)return;const d=r.getInt32(A,!0);let g;A+=4;const p={};for(let b=0;b<d;b+=1){const y=r.getUint32(A,!0);if(A+=4,y===o+1)A+=4,g=rI(e,A+16),A+=32;else{if(y>o+1)throw new Error("bai index contains too many bins, please use CSI");{const x=r.getInt32(A,!0);A+=4;const B=new Array(x);for(let E=0;E<x;E++){const Q=Ir(e,A);A+=8;const k=Ir(e,A);A+=8,l=lc(l,Q),B[E]=new tI(Q,k,y)}p[y]=B}}}const C=r.getInt32(A,!0);A+=4;const w=new Array(C);for(let b=0;b<C;b++){const y=Ir(e,A);A+=8,l=lc(l,y),w[b]=y}return{binIndex:p,linearIndex:w,stats:g}}return{bai:!0,firstDataLine:l,maxBlockSize:65536,indices:h=>{if(!u.has(h)){const A=f(h);return A&&u.set(h,A),A}return u.get(h)},refCount:i}}async indexCov(t,e,r,i){const o=e!==void 0,l=(await this.parse(i)).indices(t);if(!l)return[];const{linearIndex:c,stats:u}=l;if(c.length===0)return[];const f=r===void 0?(c.length-1)*16384:W9(r,16384),h=e===void 0?0:j9(e,16384),A=o?new Array((f-h)/16384):new Array(c.length-1),d=c[c.length-1].blockPosition;if(f>(c.length-1)*16384)throw new Error("query outside of range of linear index");let g=c[h/16384].blockPosition;for(let p=h/16384,C=0;p<f/16384;p++,C++)A[C]={score:c[p+1].blockPosition-g,start:p*16384,end:p*16384+16384},g=c[p+1].blockPosition;return A.map(p=>({...p,score:p.score*((u==null?void 0:u.lineCount)||0)/d}))}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i);if(!s)return[];const o=s.indices(t);if(!o)return[];const a=X9(e,r),l=[],{binIndex:c}=o;for(const[d,g]of a)for(let p=d;p<=g;p++){const C=c[p];if(C)for(let w=0,b=C.length;w<b;w++)l.push(C[w])}const{linearIndex:u}=o,f=u.length,h=Math.min(e>>14,f-1),A=u[h];return n0(l,A)}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(e=>{throw this.setupP=void 0,e})),this.setupP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices(t))!=null&&i.binIndex)}}var oI=0,aI=2,af=4,Ci=0,cf=1,Z9=2,$9=-5;function eT(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function tT(n){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var r in e)eT(e,r)&&(n[r]=e[r])}}return n}function cI(n,t){return n.length===t?n:n.subarray?n.subarray(0,t):(n.length=t,n)}var uc={arraySet:function(n,t,e,r,i){if(t.subarray&&n.subarray){n.set(t.subarray(e,e+r),i);return}for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){var t,e,r,i,s,o;for(r=0,t=0,e=n.length;t<e;t++)r+=n[t].length;for(o=new Uint8Array(r),i=0,t=0,e=n.length;t<e;t++)s=n[t],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},fc={arraySet:function(n,t,e,r,i){for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let Ms=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return Ms=()=>n,n},Er=(n,t,e,r,i)=>(Er=Ms()?uc.arraySet:fc.arraySet,Er(n,t,e,r,i)),r0=n=>(r0=Ms()?uc.flattenChunks:fc.flattenChunks,r0(n)),Rs=n=>(Rs=Ms()?uc.Buf8:fc.Buf8,Rs(n)),Ns=n=>(Ns=Ms()?uc.Buf16:fc.Buf16,Ns(n)),Ts=n=>(Ts=Ms()?uc.Buf32:fc.Buf32,Ts(n)),lI=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return lI=()=>n,n},uI=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return uI=()=>n,n},i0=function(n){for(var t=Rs(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,i0=r=>t[r],t[n]};function fI(n){var t,e,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(a),s=0,i=0;s<a;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),e<128?t[s++]=e:e<2048?(t[s++]=192|e>>>6,t[s++]=128|e&63):e<65536?(t[s++]=224|e>>>12,t[s++]=128|e>>>6&63,t[s++]=128|e&63):(t[s++]=240|e>>>18,t[s++]=128|e>>>12&63,t[s++]=128|e>>>6&63,t[s++]=128|e&63);return t}function nT(n,t){if(t<65534&&(n.subarray&&uI()||!n.subarray&&lI()))return String.fromCharCode.apply(null,cI(n,t));for(var e="",r=0;r<t;r++)e+=String.fromCharCode(n[r]);return e}function rT(n){for(var t=new Uint8Array(n.length),e=0,r=t.length;e<r;e++)t[e]=n.charCodeAt(e);return t}function iT(n,t){var e,r,i,s,o=t||n.length,a=new Array(o*2);for(r=0,e=0;e<o;){if(i=n[e++],i<128){a[r++]=i;continue}if(s=i0(i),s>4){a[r++]=65533,e+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&e<o;)i=i<<6|n[e++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return nT(a,r)}function sT(n,t){var e;for(t=t||n.length,t>n.length&&(t=n.length),e=t-1;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+i0(n[e])>t?e:t}function oT(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function s0(n,t,e,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;e!==0;){o=e>2e3?2e3:e,e-=o;do i=i+t[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function aT(){for(var n,t=[],e=0;e<256;e++){n=e;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t}let AI=function(){const n=aT();return AI=()=>n,n};function Cn(n,t,e,r){var i=AI(),s=r+e;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^t[o])&255];return n^-1}var lf=30,cT=12;function lT(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,g,p,C,w,b,y,x,B,E,Q,k,S;e=n.state,r=n.next_in,k=n.input,i=r+(n.avail_in-5),s=n.next_out,S=n.output,o=s-(t-n.avail_out),a=s+(n.avail_out-257),l=e.dmax,c=e.wsize,u=e.whave,f=e.wnext,h=e.window,A=e.hold,d=e.bits,g=e.lencode,p=e.distcode,C=(1<<e.lenbits)-1,w=(1<<e.distbits)-1;e:do{d<15&&(A+=k[r++]<<d,d+=8,A+=k[r++]<<d,d+=8),b=g[A&C];t:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y===0)S[s++]=b&65535;else if(y&16){x=b&65535,y&=15,y&&(d<y&&(A+=k[r++]<<d,d+=8),x+=A&(1<<y)-1,A>>>=y,d-=y),d<15&&(A+=k[r++]<<d,d+=8,A+=k[r++]<<d,d+=8),b=p[A&w];n:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y&16){if(B=b&65535,y&=15,d<y&&(A+=k[r++]<<d,d+=8,d<y&&(A+=k[r++]<<d,d+=8)),B+=A&(1<<y)-1,B>l){n.msg="invalid distance too far back",e.mode=lf;break e}if(A>>>=y,d-=y,y=s-o,B>y){if(y=B-y,y>u&&e.sane){n.msg="invalid distance too far back",e.mode=lf;break e}if(E=0,Q=h,f===0){if(E+=c-y,y<x){x-=y;do S[s++]=h[E++];while(--y);E=s-B,Q=S}}else if(f<y){if(E+=c+f-y,y-=f,y<x){x-=y;do S[s++]=h[E++];while(--y);if(E=0,f<x){y=f,x-=y;do S[s++]=h[E++];while(--y);E=s-B,Q=S}}}else if(E+=f-y,y<x){x-=y;do S[s++]=h[E++];while(--y);E=s-B,Q=S}for(;x>2;)S[s++]=Q[E++],S[s++]=Q[E++],S[s++]=Q[E++],x-=3;x&&(S[s++]=Q[E++],x>1&&(S[s++]=Q[E++]))}else{E=s-B;do S[s++]=S[E++],S[s++]=S[E++],S[s++]=S[E++],x-=3;while(x>2);x&&(S[s++]=S[E++],x>1&&(S[s++]=S[E++]))}}else if((y&64)===0){b=p[(b&65535)+(A&(1<<y)-1)];continue n}else{n.msg="invalid distance code",e.mode=lf;break e}break}}else if((y&64)===0){b=g[(b&65535)+(A&(1<<y)-1)];continue t}else if(y&32){e.mode=cT;break e}else{n.msg="invalid literal/length code",e.mode=lf;break e}break}}while(r<i&&s<a);x=d>>3,r-=x,d-=x<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),e.hold=A,e.bits=d}var Ps=15,hI=852,dI=592,gI=0,o0=1,pI=2,uT=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],fT=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],AT=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],hT=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function Ac(n,t,e,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,g=0,p=0,C=0,w=0,b,y,x,B,E,Q=null,k=0,S,T=Ns(Ps+1),N=Ns(Ps+1),U=null,H=0,J,_,Z;for(c=0;c<=Ps;c++)T[c]=0;for(u=0;u<r;u++)T[t[e+u]]++;for(A=l,h=Ps;h>=1&&T[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&T[f]===0;f++);for(A<f&&(A=f),p=1,c=1;c<=Ps;c++)if(p<<=1,p-=T[c],p<0)return-1;if(p>0&&(n===gI||h!==1))return-1;for(N[1]=0,c=1;c<Ps;c++)N[c+1]=N[c]+T[c];for(u=0;u<r;u++)t[e+u]!==0&&(o[N[t[e+u]]++]=u);if(n===gI?(Q=U=o,S=19):n===o0?(Q=uT,k-=257,U=fT,H-=257,S=256):(Q=AT,U=hT,S=-1),w=0,u=0,c=f,E=s,d=A,g=0,x=-1,C=1<<A,B=C-1,n===o0&&C>hI||n===pI&&C>dI)return 1;for(;;){J=c-g,o[u]<S?(_=0,Z=o[u]):o[u]>S?(_=U[H+o[u]],Z=Q[k+o[u]]):(_=96,Z=0),b=1<<c-g,y=1<<d,f=y;do y-=b,i[E+(w>>g)+y]=J<<24|_<<16|Z|0;while(y!==0);for(b=1<<c-1;w&b;)b>>=1;if(b!==0?(w&=b-1,w+=b):w=0,u++,--T[c]===0){if(c===h)break;c=t[e+o[u]]}if(c>A&&(w&B)!==x){for(g===0&&(g=A),E+=f,d=c-g,p=1<<d;d+g<h&&(p-=T[d+g],!(p<=0));)d++,p<<=1;if(C+=1<<d,n===o0&&C>hI||n===pI&&C>dI)return 1;x=w&B,i[x]=A<<24|d<<16|E-s|0}}return w!==0&&(i[E+w]=c-g<<24|64<<16|0),a.bits=A,0}var dT=0,mI=1,CI=2,yI=4,yi=0,gT=1,pT=2,Ut=-2,wI=-3,II=-4,mT=-5,EI=8,bI=1,xI=2,BI=3,vI=4,QI=5,SI=6,DI=7,kI=8,FI=9,MI=10,uf=11,Un=12,a0=13,RI=14,c0=15,NI=16,TI=17,PI=18,LI=19,ff=20,Af=21,OI=22,UI=23,GI=24,zI=25,HI=26,l0=27,YI=28,_I=29,Qe=30,VI=31,CT=32,yT=852,wT=592;function JI(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function IT(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=Ns(320),this.work=Ns(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function ET(n){var t;return!n||!n.state?Ut:(t=n.state,n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=bI,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=Ts(yT),t.distcode=t.distdyn=Ts(wT),t.sane=1,t.back=-1,yi)}function bT(n){var t;return!n||!n.state?Ut:(t=n.state,t.wsize=0,t.whave=0,t.wnext=0,ET(n))}function xT(n,t){var e,r;return!n||!n.state||(r=n.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Ut:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,bT(n))}function BT(n,t){var e,r;return n?(r=new IT,n.state=r,r.window=null,e=xT(n,t),e!==yi&&(n.state=null),e):Ut}var qI=!0,u0,f0;function vT(n){if(qI){var t;for(u0=Ts(512),f0=Ts(32),t=0;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(Ac(mI,n.lens,0,288,u0,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;Ac(CI,n.lens,0,32,f0,0,n.work,{bits:5}),qI=!1}n.lencode=u0,n.lenbits=9,n.distcode=f0,n.distbits=5}function KI(n,t,e,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=Rs(s.wsize)),r>=s.wsize?(Er(s.window,t,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),Er(s.window,t,e-r,i,s.wnext),r-=i,r?(Er(s.window,t,e-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function QT(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,g,p=0,C,w,b,y,x,B,E,Q,k=Rs(4),S,T,N=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Ut;e=n.state,e.mode===Un&&(e.mode=a0),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,f=a,h=l,Q=yi;e:for(;;)switch(e.mode){case bI:if(e.wrap===0){e.mode=a0;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.wrap&2&&c===35615){e.check=0,k[0]=c&255,k[1]=c>>>8&255,e.check=Cn(e.check,k,2,0),c=0,u=0,e.mode=xI;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",e.mode=Qe;break}if((c&15)!==EI){n.msg="unknown compression method",e.mode=Qe;break}if(c>>>=4,u-=4,E=(c&15)+8,e.wbits===0)e.wbits=E;else if(E>e.wbits){n.msg="invalid window size",e.mode=Qe;break}e.dmax=1<<E,n.adler=e.check=1,e.mode=c&512?MI:Un,c=0,u=0;break;case xI:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.flags=c,(e.flags&255)!==EI){n.msg="unknown compression method",e.mode=Qe;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=Qe;break}e.head&&(e.head.text=c>>8&1),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,e.check=Cn(e.check,k,2,0)),c=0,u=0,e.mode=BI;case BI:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.time=c),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,k[2]=c>>>16&255,k[3]=c>>>24&255,e.check=Cn(e.check,k,4,0)),c=0,u=0,e.mode=vI;case vI:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.xflags=c&255,e.head.os=c>>8),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,e.check=Cn(e.check,k,2,0)),c=0,u=0,e.mode=QI;case QI:if(e.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length=c,e.head&&(e.head.extra_len=c),e.flags&512&&(k[0]=c&255,k[1]=c>>>8&255,e.check=Cn(e.check,k,2,0)),c=0,u=0}else e.head&&(e.head.extra=null);e.mode=SI;case SI:if(e.flags&1024&&(A=e.length,A>a&&(A=a),A&&(e.head&&(E=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Er(e.head.extra,r,s,A,E)),e.flags&512&&(e.check=Cn(e.check,r,A,s)),a-=A,s+=A,e.length-=A),e.length))break e;e.length=0,e.mode=DI;case DI:if(e.flags&2048){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.name+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=Cn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=kI;case kI:if(e.flags&4096){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.comment+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=Cn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.comment=null);e.mode=FI;case FI:if(e.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.check&65535)){n.msg="header crc mismatch",e.mode=Qe;break}c=0,u=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=Un;break;case MI:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=e.check=JI(c),c=0,u=0,e.mode=uf;case uf:if(e.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,pT;n.adler=e.check=1,e.mode=Un;case Un:case a0:if(e.last){c>>>=u&7,u-=u&7,e.mode=l0;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(e.last=c&1,c>>>=1,u-=1,c&3){case 0:e.mode=RI;break;case 1:vT(e),e.mode=ff;break;case 2:e.mode=TI;break;case 3:n.msg="invalid block type",e.mode=Qe}c>>>=2,u-=2;break;case RI:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",e.mode=Qe;break}e.length=c&65535,c=0,u=0,e.mode=c0;case c0:e.mode=NI;case NI:if(A=e.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;Er(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,e.length-=A;break}e.mode=Un;break;case TI:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.nlen=(c&31)+257,c>>>=5,u-=5,e.ndist=(c&31)+1,c>>>=5,u-=5,e.ncode=(c&15)+4,c>>>=4,u-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=Qe;break}e.have=0,e.mode=PI;case PI:for(;e.have<e.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.lens[N[e.have++]]=c&7,c>>>=3,u-=3}for(;e.have<19;)e.lens[N[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,S={bits:e.lenbits},Q=Ac(dT,e.lens,0,19,e.lencode,0,e.work,S),e.lenbits=S.bits,Q){n.msg="invalid code lengths set",e.mode=Qe;break}e.have=0,e.mode=LI;case LI:for(;e.have<e.nlen+e.ndist;){for(;p=e.lencode[c&(1<<e.lenbits)-1],C=p>>>24,w=p>>>16&255,b=p&65535,!(C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(b<16)c>>>=C,u-=C,e.lens[e.have++]=b;else{if(b===16){for(T=C+2;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=C,u-=C,e.have===0){n.msg="invalid bit length repeat",e.mode=Qe;break}E=e.lens[e.have-1],A=3+(c&3),c>>>=2,u-=2}else if(b===17){for(T=C+3;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=C,u-=C,E=0,A=3+(c&7),c>>>=3,u-=3}else{for(T=C+7;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=C,u-=C,E=0,A=11+(c&127),c>>>=7,u-=7}if(e.have+A>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=Qe;break}for(;A--;)e.lens[e.have++]=E}}if(e.mode===Qe)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=Qe;break}if(e.lenbits=9,S={bits:e.lenbits},Q=Ac(mI,e.lens,0,e.nlen,e.lencode,0,e.work,S),e.lenbits=S.bits,Q){n.msg="invalid literal/lengths set",e.mode=Qe;break}if(e.distbits=6,e.distcode=e.distdyn,S={bits:e.distbits},Q=Ac(CI,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,S),e.distbits=S.bits,Q){n.msg="invalid distances set",e.mode=Qe;break}e.mode=ff;case ff:e.mode=Af;case Af:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,lT(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,e.mode===Un&&(e.back=-1);break}for(e.back=0;p=e.lencode[c&(1<<e.lenbits)-1],C=p>>>24,w=p>>>16&255,b=p&65535,!(C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(w&&(w&240)===0){for(y=C,x=w,B=b;p=e.lencode[B+((c&(1<<y+x)-1)>>y)],C=p>>>24,w=p>>>16&255,b=p&65535,!(y+C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=C,u-=C,e.back+=C,e.length=b,w===0){e.mode=HI;break}if(w&32){e.back=-1,e.mode=Un;break}if(w&64){n.msg="invalid literal/length code",e.mode=Qe;break}e.extra=w&15,e.mode=OI;case OI:if(e.extra){for(T=e.extra;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=UI;case UI:for(;p=e.distcode[c&(1<<e.distbits)-1],C=p>>>24,w=p>>>16&255,b=p&65535,!(C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((w&240)===0){for(y=C,x=w,B=b;p=e.distcode[B+((c&(1<<y+x)-1)>>y)],C=p>>>24,w=p>>>16&255,b=p&65535,!(y+C<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=C,u-=C,e.back+=C,w&64){n.msg="invalid distance code",e.mode=Qe;break}e.offset=b,e.extra=w&15,e.mode=GI;case GI:if(e.extra){for(T=e.extra;u<T;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.offset+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=Qe;break}e.mode=zI;case zI:if(l===0)break e;if(A=h-l,e.offset>A){if(A=e.offset-A,A>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=Qe;break}A>e.wnext?(A-=e.wnext,d=e.wsize-A):d=e.wnext-A,A>e.length&&(A=e.length),g=e.window}else g=i,d=o-e.offset,A=e.length;A>l&&(A=l),l-=A,e.length-=A;do i[o++]=g[d++];while(--A);e.length===0&&(e.mode=Af);break;case HI:if(l===0)break e;i[o++]=e.length,l--,e.mode=Af;break;case l0:if(e.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,e.total+=h,h&&(n.adler=e.check=e.flags?Cn(e.check,i,h,o-h):s0(e.check,i,h,o-h)),h=l,(e.flags?c:JI(c))!==e.check){n.msg="incorrect data check",e.mode=Qe;break}c=0,u=0}e.mode=YI;case YI:if(e.wrap&&e.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=Qe;break}c=0,u=0}e.mode=_I;case _I:Q=gT;break e;case Qe:Q=wI;break e;case VI:return II;case CT:default:return Ut}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,(e.wsize||h!==n.avail_out&&e.mode<Qe&&(e.mode<l0||t!==yI))&&KI(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,e.total+=h,e.wrap&&h&&(n.adler=e.check=e.flags?Cn(e.check,i,h,n.next_out-h):s0(e.check,i,h,n.next_out-h)),n.data_type=e.bits+(e.last?64:0)+(e.mode===Un?128:0)+(e.mode===ff||e.mode===c0?256:0),(f===0&&h===0||t===yI)&&Q===yi&&(Q=mT),Q}function ST(n){if(!n||!n.state)return Ut;var t=n.state;return t.window&&(t.window=null),n.state=null,yi}function DT(n,t){var e;return!n||!n.state||(e=n.state,(e.wrap&2)===0)?Ut:(e.head=t,t.done=!1,yi)}function jI(n,t){var e=t.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==uf)?Ut:r.mode===uf&&(i=1,i=s0(i,t,e,0),i!==r.check)?wI:(s=KI(n,t,e,e),s?(r.mode=VI,II):(r.havedict=1,yi))}const A0={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function kT(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var h0=Object.prototype.toString;class hf{constructor(t){if(!(this instanceof hf))return new hf(t);this.options=tT({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new kT,this.strm.avail_out=0;var r=BT(this.strm,e.windowBits);if(r!==Ci)throw new Error(A0[r]);if(this.header=new oT,DT(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=fI(e.dictionary):h0.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=jI(this.strm,e.dictionary),r!==Ci)))throw new Error(A0[r])}push(t,e){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?af:oI,typeof t=="string"?r.input=rT(t):h0.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=Rs(i),r.next_out=0,r.avail_out=i),o=QT(r,oI),o===Z9&&s&&(typeof s=="string"?f=fI(s):h0.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=jI(this.strm,f)),o===$9&&h===!0&&(o=Ci,h=!1),o!==cf&&o!==Ci)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===cf||r.avail_in===0&&(a===af||a===aI))&&(this.options.to==="string"?(l=sT(r.output,r.next_out),c=r.next_out-l,u=iT(r.output,l),r.next_out=c,r.avail_out=i-c,c&&Er(r.output,r.output,l,c,0),this.onData(u)):this.onData(cI(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==cf);return o===cf&&(a=af),a===af?(o=ST(this.strm),this.onEnd(o),this.ended=!0,o===Ci):(a===aI&&(this.onEnd(Ci),r.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===Ci&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=r0(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}}function FT(n,t){var e=new hf(t);if(e.push(n,!0),e.err)throw e.msg||A0[e.err];return e.result}var MT=FT,wi={};wi.d=(n,t)=>{for(var e in t)wi.o(t,e)&&!wi.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},wi.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),wi.r=n=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var d0={};wi.r(d0),wi.d(d0,{ChunkSliceResult:()=>Os,DecompressResult:()=>Us,__wbg_Error_52673b7de5a0ca89:()=>zT,__wbg___wbindgen_throw_dd24417ed36fc46e:()=>HT,__wbg_set_wasm:()=>WI,decompress_all:()=>tE,decompress_block:()=>GT,decompress_chunk_slice:()=>nE});const RT="data:application/wasm;base64,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fGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKALAoEBHDQAgAygCBEEDcUEDRw0BQQAgADYCuKBAIAMgAygCBEF+cTYCBCABIABBAXI2AgQgAyAANgIADwsgASACEBALAkACQAJAAkACQAJAIAMoAgQiAkECcQ0AIANBACgCxKBARg0CIANBACgCwKBARg0DIAMgAkF4cSICEBAgASACIABqIgBBAXI2AgQgASAAaiAANgIAIAFBACgCwKBARw0BQQAgADYCuKBADwsgAyACQX5xNgIEIAEgAEEBcjYCBCABIABqIAA2AgALIABBgAJJDQIgASAAEBFBACEBQQBBACgC2KBAQX9qIgA2AtigQCAADQQCQEEAKAKgnkAiAEUNAEEAIQEDQCABQQFqIQEgACgCCCIADQALC0EAIAFB/x8gAUH/H0sbNgLYoEAPC0EAIAE2AsSgQEEAQQAoArygQCAAaiIANgK8oEAgASAAQQFyNgIEAkAgAUEAKALAoEBHDQBBAEEANgK4oEBBAEEANgLAoEALIABBACgC0KBAIgRNDQNBACgCxKBAIgBFDQNBACECQQAoArygQCIFQSlJDQJBmJ7AACEBA0ACQCABKAIAIgMgAEsNACAAIAMgASgCBGpJDQQLIAEoAgghAQwACwtBACABNgLAoEBBAEEAKAK4oEAgAGoiADYCuKBAIAEgAEEBcjYCBCABIABqIAA2AgAPCwJAAkBBACgCsKBAIgNBASAAQQN2dCICcQ0AQQAgAyACcjYCsKBAIABB+AFxQaiewABqIgAhAwwBCyAAQfgBcSIDQaiewABqIQAgA0GwnsAAaigCACEDCyAAIAE2AgggAyABNgIMIAEgADYCDCABIAM2AggPCwJAQQAoAqCeQCIBRQ0AQQAhAgNAIAJBAWohAiABKAIIIgENAAsLQQAgAkH/HyACQf8fSxs2AtigQCAFIARNDQBBAEF/NgLQoEALC44FAQd/AkACQCAAKAIIIgNBgICAwAFxRQ0AAkACQAJAAkACQCADQYCAgIABcUUNACAALwEOIgQNAUEAIQIMAgsCQCACQRBJDQAgASACEAYhBQwECwJAIAINAEEAIQJBACEFDAQLIAJBA3EhBgJAAkAgAkEETw0AQQAhBUEAIQcMAQsg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IgJBAWoiAzYCACADRQ0BIAAoAgBBf0YNAiAAKAIQIQAgASACNgIAIAAPCxBdCwALEF8AC1ABAX8CQCACIAAoAgAgACgCCCIDa00NACAAIAMgAkEBQQEQFyAAKAIIIQMLAkAgAkUNACAAKAIEIANqIAEgAvwKAAALIAAgAyACajYCCEEAC0wBAX8CQCAAKAIAIgBBDGooAgAiAUUNACAAQRBqKAIAIAFBARBXCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEcQQQQVwsLRQACQAJAIAFBCUkNACABIAAQDyEBDAELIAAQAiEBCwJAIAFFDQAgAUF8ai0AAEEDcUUNACAARQ0AIAFBACAA/AsACyABC1IBAn9BACEBQQBBACgC6KBAIgJBAWo2AuigQAJAIAJBAEgNAEEBIQFBAC0A5KBADQBBACAAOgDkoEBBAEEAKALgoEBBAWo2AuCgQEECIQELIAELRwECfyABKAIEIQIgASgCACEDEGsCQEEIQQQQWiIBDQBBBEEIEGEACyABIAI2AgQgASADNgIAIABB8JfAADYCBCAAIAE2AgALOAACQAJAIAAgAksNACABIAJLDQEgACABTQ0BIAAgASADECsACyAAIAIgAxAsAAsgASACIAMQLQALQQEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQQQALOQACQCACQYCAxABGDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzYBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQaSZwAA2AgggAUIENwIQIAFBCGogABBBAAsnAAJAIAAgARBPRQ0AAkAgAEUNABBrIAAgARBaIgFFDQELIAEPCwALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQZgALLQEBfyMAQRBrIgEkACABIAApAgA3AgggAUEIakH0lsAAIAAoAghBAUEAECEACyoBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQgA0EEahBnAAsqAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQPgALKQEBfwJAIAAoAgAiAUGAgICAeHJBgICAgHhGDQAgACgCBCABQQEQVwsLHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACyAAAkAgASgCAEUNACAAQfCXwAA2AgQgACABNgIADwsACxsBAX8QayAAQQRqQQQQWiIBIAA2AgAgAUEEagsjAQF/AkBBjIvAABAwIgANAEHAisAAQTpB/IrAABBAAAsgAAsXAAJAIAFBCUkNACABIAAQDw8LIAAQAgsfAAJAIABBgICAgHhyQYCAgIB4Rg0AIAEgAEEBEFcLCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQVwsLFgACQCAARQ0AIAAgARBhAAsgAhA8AAsVACAAQXxqIgAgACgCAEEEakEEEFcLGgEBfyABIABBACgC3KBAIgJBAyACGxEEAAALHQAgAEEIakEAKQKYlkA3AgAgAEEAKQKQlkA3AgALHQAgAEEIakEAKQKolkA3AgAgAEEAKQKglkA3AgALFQAgAWlBAUYgAEGAgICAeCABa01xCxIAAkAgAUUNACAAIAEgAhBXCwsSACAAIAEgAiADIARBACAFEAMLFQACQCAARQ0AIAAgACgCqFoRAgALCxYAIAAoAgAgASACIAAoAgQoAgwRBwALDQAgACABIAIgAxAHDwsQACABIAAoAgAgACgCBBBTCxMAIABB8JfAADYCBCAAIAE2AgALCwAgACABIAIQLw8LCgAgACABEGoaAAsLACAAIwBqJAAjAAsJACAAIAEQRw8LCQAgACABEDYPCwkAIAAgARBMDwsMAEG4iMAAQRsQXgALCQAgACABEGMACw0AQdOIwABBzwAQXgALDAAgACABKQIANwMACwkAIAEgABBcAAsNACABQdicwABBGBAKCwgAIAAgARAACwgAIAAgARABCwkAIAAoAgAQUgsHACAAECMACwcAIAAQPwALCQAgAEEANgIACwUAQQAPCwUAEGwACwMADwsDAAALC4YdAgBBgIDAAAvwHC9ob21lL2NkaWVzaC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA2L3NyYy9jb252ZXJ0L3NsaWNlcy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEwNi9zcmMvZXh0ZXJucmVmLnJzAC9ob21lL2NkaWVzaC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAvaG9tZS9jZGllc2gvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2VkNjFlN2Q3ZTI0MjQ5NGZiNzA1N2YyNjU3MzAwZDllNzdiYjRmY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjAvc3JjL2xpYi5ycwBFARAAdQAAACoCAAARAAAA1QAQAG8AAAC9AQAAHQAAAGF0dGVtcHRlZCB0byB0YWtlIG93bmVyc2hpcCBvZiBSdXN0IHZhbHVlIHdoaWxlIGl0IHdhcyBib3Jyb3dlZAClAhAACgAAAF0AAAAWAAAAaW52YWxpZCBiZ3pmIGhlYWRlcgClAhAACgAAACkAAAAJAAAApQIQAAoAAAAqAAAACQAAAKUCEAAKAAAAKwAAAAkAAAClAhAACgAAACwAAAAJAAAApQIQAAoAAAAwAAAAFgAAAGRlY29tcHJlc3Npb24gZmFpbGVkpQIQAAoAAAAvAAAAHgAAAKUCEAAKAAAApQAAACQAAAClAhAACgAAAKYAAAAkAAAApQIQAAoAAACnAAAAFgAAAKUCEAAKAAAAxQAAABQAAAClAhAACgAAAMYAAAAUAAAApQIQAAoAAADbAAAAGAAAAKUCEAAKAAAA3AAAABgAAAClAhAACgAAANMAAAAxAAAAAAAQAGwAAAAjAQAADgAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3QAAG0AEABnAAAAfwAAABEAAABtABAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkUAIQAF8AAAAMAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAFACEABfAAAAnAAAABEAAAAMAAAAAQAAAAIAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAAAAAAAEAAAACAAAAAwAAAAQAAQAFAAEABwACAAkAAgANAAMAEQADABkABAAhAAQAMQAFAEEABQBhAAYAgQAGAMEABwABAQcAgQEIAAECCAABAwkAAQQJAAEGCgABCAoAAQwLAAEQCwABGAwAASAMAAEwDQABQA0AAWANAAFgDQABYAAAAIAAAAGAAAACgAAAA4AAAASAAAAFgAAABoAAAAeAAAAIgAAACYAAAAqAAAALgAAADIAAAA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAAAO6AAADvgAAA8IAAAPGAAADygAAA84AAAPSAAAD1gAAA9oAAAPeAAAD4gAAA+YAAAPqAAAD7gAAA/IAAAP2AAAD+gAAA/4AAoAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgABAAsAAQANAAEADwABABEAAgATAAIAFwACABsAAgAfAAMAIwADACsAAwAzAAMAOwAEAEMABABTAAQAYwAEAHMABQCDAAUAowAFAMMABQDjAAAAAgEAAAIBAAACAW1dy9YsUOtjeEGmV3Ebi7nyfVy2Bv6hO/Xnf5Lkw1AabWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAMAsQABUAAABFCxAADQAAADcCEAAYAAAAZAEAAAkAAAAAAAAACAAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAwAAAAEAAAACgAAAAsAAAAMAAAAAAAAAAgAAAAEAAAADQAAAA4AAAAPAAAAEAAAABEAAAAQAAAABAAAABIAAAATAAAAFAAAAAgAAAC7ARAAUAAAACoCAAARAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAwCEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAMAhAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAkAwQABEAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQEAAAAAAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHwNEAASAAAAjg0QACIAAAByYW5nZSBlbmQgaW5kZXggwA0QABAAAACODRAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgAOANEAAWAAAA9g0QAA0AAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAFA4QACAAAAA0DhAAEgAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB8JzAAAsEBAAAAAApBG5hbWUBIgFZH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjQuNAx3YXNtLWJpbmRnZW4HMC4yLjEwNg==";let ne;function WI(n){ne=n}function NT(n){hc===Gn.length&&Gn.push(Gn.length+1);const t=hc;return hc=Gn[t],Gn[t]=n,t}function TT(n){n<132||(Gn[n]=hc,hc=n)}function XI(n,t){return n=n>>>0,PT().subarray(n/4,n/4+t)}function g0(n,t){return n=n>>>0,p0().subarray(n/1,n/1+t)}let Ls=null;function je(){return(Ls===null||Ls.buffer.detached===!0||Ls.buffer.detached===void 0&&Ls.buffer!==ne.memory.buffer)&&(Ls=new DataView(ne.memory.buffer)),Ls}function ZI(n,t){return n=n>>>0,UT(n,t)}let df=null;function PT(){return(df===null||df.byteLength===0)&&(df=new Uint32Array(ne.memory.buffer)),df}let gf=null;function p0(){return(gf===null||gf.byteLength===0)&&(gf=new Uint8Array(ne.memory.buffer)),gf}function LT(n){return Gn[n]}let Gn=new Array(128).fill(void 0);Gn.push(void 0,null,!0,!1);let hc=Gn.length;function m0(n,t){const e=t(n.length*1,1)>>>0;return p0().set(n,e/1),mf=n.length,e}function C0(n){const t=LT(n);return TT(n),t}let pf=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});pf.decode();const OT=2146435072;let y0=0;function UT(n,t){return y0+=t,y0>=OT&&(pf=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),pf.decode(),y0=t),pf.decode(p0().subarray(n,n+t))}let mf=0;const $I=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ne.__wbg_chunksliceresult_free(n>>>0,1)),eE=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>ne.__wbg_decompressresult_free(n>>>0,1));class Os{static __wrap(t){t=t>>>0;const e=Object.create(Os.prototype);return e.__wbg_ptr=t,$I.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,$I.unregister(this),t}free(){const t=this.__destroy_into_raw();ne.__wbg_chunksliceresult_free(t,0)}get cpositions(){try{const i=ne.__wbindgen_add_to_stack_pointer(-16);ne.chunksliceresult_cpositions(i,this.__wbg_ptr);var t=je().getInt32(i+0,!0),e=je().getInt32(i+4,!0),r=XI(t,e).slice();return ne.__wbindgen_export(t,e*4,4),r}finally{ne.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{const i=ne.__wbindgen_add_to_stack_pointer(-16);ne.chunksliceresult_dpositions(i,this.__wbg_ptr);var t=je().getInt32(i+0,!0),e=je().getInt32(i+4,!0),r=XI(t,e).slice();return ne.__wbindgen_export(t,e*4,4),r}finally{ne.__wbindgen_add_to_stack_pointer(16)}}get buffer(){try{const i=ne.__wbindgen_add_to_stack_pointer(-16);ne.chunksliceresult_buffer(i,this.__wbg_ptr);var t=je().getInt32(i+0,!0),e=je().getInt32(i+4,!0),r=g0(t,e).slice();return ne.__wbindgen_export(t,e*1,1),r}finally{ne.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(Os.prototype[Symbol.dispose]=Os.prototype.free);class Us{static __wrap(t){t=t>>>0;const e=Object.create(Us.prototype);return e.__wbg_ptr=t,eE.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,eE.unregister(this),t}free(){const t=this.__destroy_into_raw();ne.__wbg_decompressresult_free(t,0)}get bytes_read(){return ne.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{const i=ne.__wbindgen_add_to_stack_pointer(-16);ne.decompressresult_data(i,this.__wbg_ptr);var t=je().getInt32(i+0,!0),e=je().getInt32(i+4,!0),r=g0(t,e).slice();return ne.__wbindgen_export(t,e*1,1),r}finally{ne.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(Us.prototype[Symbol.dispose]=Us.prototype.free);function tE(n){try{const o=ne.__wbindgen_add_to_stack_pointer(-16),a=m0(n,ne.__wbindgen_export2),l=mf;ne.decompress_all(o,a,l);var t=je().getInt32(o+0,!0),e=je().getInt32(o+4,!0),r=je().getInt32(o+8,!0),i=je().getInt32(o+12,!0);if(i)throw C0(r);var s=g0(t,e).slice();return ne.__wbindgen_export(t,e*1,1),s}finally{ne.__wbindgen_add_to_stack_pointer(16)}}function GT(n){try{const i=ne.__wbindgen_add_to_stack_pointer(-16),s=m0(n,ne.__wbindgen_export2),o=mf;ne.decompress_block(i,s,o);var t=je().getInt32(i+0,!0),e=je().getInt32(i+4,!0),r=je().getInt32(i+8,!0);if(r)throw C0(e);return Us.__wrap(t)}finally{ne.__wbindgen_add_to_stack_pointer(16)}}function nE(n,t,e,r,i){try{const l=ne.__wbindgen_add_to_stack_pointer(-16),c=m0(n,ne.__wbindgen_export2),u=mf;ne.decompress_chunk_slice(l,c,u,t,e,r,i);var s=je().getInt32(l+0,!0),o=je().getInt32(l+4,!0),a=je().getInt32(l+8,!0);if(a)throw C0(o);return Os.__wrap(s)}finally{ne.__wbindgen_add_to_stack_pointer(16)}}function zT(n,t){const e=Error(ZI(n,t));return NT(e)}function HT(n,t){throw new Error(ZI(n,t))}let dc=null,w0=null;async function rE(){return dc||(w0||(w0=(async()=>{const t=await(await fetch(RT)).arrayBuffer(),{instance:e}=await WebAssembly.instantiate(t,{"./bgzf_wasm_bg.js":d0});return dc=e.exports,WI(dc),dc})()),w0)}async function YT(n){return await rE(),tE(n)}async function _T(n,t,e,r,i){await rE();const s=nE(n,t,e,r,i),o=s.buffer,a=[...s.cpositions],l=[...s.dpositions];return s.free(),{buffer:o,cpositions:a,dpositions:l}}function VT(n){return n.length>=2&&n[0]===31&&n[1]===139}async function JT(n){if(typeof DecompressionStream<"u"){const t=new DecompressionStream("gzip"),e=t.writable.getWriter(),r=e.write(n).then(()=>e.close()),i=[],s=t.readable.getReader();for(;;){const{done:c,value:u}=await s.read();if(c)break;i.push(u)}await r;const o=i.reduce((c,u)=>c+u.length,0),a=new Uint8Array(o);let l=0;for(const c of i)a.set(c,l),l+=c.length;return a}else return MT(n,void 0)}async function Gs(n){try{return await YT(n)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(VT(n))return JT(n);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}throw/invalid gzip header/.exec(`${t}`)?new Error("problem decompressing block: incorrect gzip header check"):t}}async function iE(n,t,e){try{const{minv:r,maxv:i}=t,s=await _T(n,r.blockPosition,r.dataPosition,i.blockPosition,i.dataPosition);return{buffer:s.buffer,cpositions:s.cpositions,dpositions:s.dpositions}}catch(r){throw/invalid gzip header/.exec(`${r}`)?new Error("problem decompressing block: incorrect gzip header check"):r}}let I0=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(I0=new Int32Array(I0));const qT=(n,t)=>{let e=-1;for(let r=0;r<n.length;r++)e=I0[(e^n[r])&255]^e>>>8;return e^-1},KT=21582659,jT=38359875;function WT(n,t){return n*2**t}function sE(n,t){return Math.floor(n/2**t)}let Cf=class extends iI{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e){var i,s;return((s=(i=(await this.parse(e)).indices(t))==null?void 0:i.stats)==null?void 0:s.lineCount)||0}async indexCov(){return[]}parseAuxData(t,e){const r=new DataView(t.buffer),i=r.getUint32(e,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(e+4,!0),start:r.getInt32(e+8,!0),end:r.getInt32(e+12,!0)},l=r.getInt32(e+16,!0),c=l?String.fromCharCode(l):"",u=r.getInt32(e+20,!0),f=r.getInt32(e+24,!0);return{columnNumbers:a,coordinateType:s,metaValue:l,metaChar:c,skipLines:u,format:o,formatFlags:i,...Y9(t.subarray(e+28,e+28+f),this.renameRefSeq)}}async _parse(t){const e=await this.filehandle.readFile(t),r=await Gs(e),i=new DataView(r.buffer);let s;const o=i.getUint32(0,!0);if(o===KT)s=1;else if(o===jT)s=2;else throw new Error(`Not a CSI file ${o}`);this.minShift=i.getInt32(4,!0),this.depth=i.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const a=this.maxBinNumber,l=i.getInt32(12,!0),c=l>=30?this.parseAuxData(r,16):void 0,u=i.getInt32(16+l,!0);let f=16+l+4,h;const A=[];for(let p=0;p<u;p++){A.push(f);const C=i.getInt32(f,!0);f+=4;for(let w=0;w<C;w++){const b=i.getUint32(f,!0);if(f+=4,b>this.maxBinNumber)f+=44;else{f+=8;const y=i.getInt32(f,!0);f+=4;for(let x=0;x<y;x+=1){const B=Ir(r,f);f+=8,f+=8,h=lc(h,B)}}}}const d=new cc({maxSize:5});function g(p){let C=A[p];if(C===void 0)return;const w=i.getInt32(C,!0);C+=4;const b={};let y;for(let x=0;x<w;x++){const B=i.getUint32(C,!0);if(C+=4,B>a)y=rI(r,C+28),C+=44;else{h=lc(h,Ir(r,C)),C+=8;const E=i.getInt32(C,!0);C+=4;const Q=new Array(E);for(let k=0;k<E;k+=1){const S=Ir(r,C);C+=8;const T=Ir(r,C);C+=8,Q[k]=new tI(S,T,B)}b[B]=Q}}return{binIndex:b,stats:y}}return{csiVersion:s,firstDataLine:h,indices:p=>{if(!d.has(p)){const C=g(p);return C&&d.set(p,C),C}return d.get(p)},refCount:u,csi:!0,maxBlockSize:65536,...c}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const o=(await this.parse(i)).indices(t);if(!o)return[];const a=this.reg2bins(e,r);if(a.length===0)return[];const l=[],{binIndex:c}=o;for(const[u,f]of a)for(let h=u;h<=f;h++){const A=c[h];if(A)for(let d=0,g=A.length;d<g;d++)l.push(A[d])}return n0(l,new sI(0,0))}reg2bins(t,e){t-=1,t<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=WT(1,r*3),r+=1){const a=i+sE(t,s),l=i+sE(e,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(e=>{throw this.setupP=void 0,e})),this.setupP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices(t))!=null&&i.binIndex)}};class XT{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}const ZT=3,$T=4,Gt={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048},gc="=ACMGRSVTWYHKDBN".split(""),e7=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],oE=461;class aE{constructor(t){this.bytes=t.bytes,this.fileOffset=t.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){const t=(this.bin_mq_nl&65280)>>8;return t===255?void 0:t}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{const t=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(t,t+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){const t=this.read_name_length-1,e=this.b0,r=this.byteArray,i=new Array(t);for(let s=0;s<t;s++)i[s]=r[e+s];return String.fromCharCode(...i)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){const t=this.getTagRaw("MD");this._cachedNUMERIC_MD=t instanceof Uint8Array?t:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(t){return this._cachedTags!==void 0?this._cachedTags[t]:this._findTag(t,!1)}getTagRaw(t){return this._findTag(t,!0)}_findTag(t,e){const r=t.charCodeAt(0),i=t.charCodeAt(1);let s=this.tagsStart;const o=this.bytes.end,a=this.byteArray;for(;s<o;){const l=a[s],c=a[s+1],u=a[s+2];s+=3;const f=l===r&&c===i;switch(u){case 65:if(f)return String.fromCharCode(a[s]);s+=1;break;case 105:if(f)return this._dataView.getInt32(s,!0);s+=4;break;case 73:if(f)return this._dataView.getUint32(s,!0);s+=4;break;case 99:if(f)return this._dataView.getInt8(s);s+=1;break;case 67:if(f)return this._dataView.getUint8(s);s+=1;break;case 115:if(f)return this._dataView.getInt16(s,!0);s+=2;break;case 83:if(f)return this._dataView.getUint16(s,!0);s+=2;break;case 102:if(f)return this._dataView.getFloat32(s,!0);s+=4;break;case 90:case 72:{if(f){const h=s;for(;s<o&&a[s]!==0;)s++;if(e)return a.subarray(h,s);const A=[];for(let d=h;d<s;d++)A.push(String.fromCharCode(a[d]));return A.join("")}for(;s<=o&&a[s++]!==0;);break}case 66:{const h=a[s++],A=this._dataView.getInt32(s,!0);s+=4;const d=a.byteOffset+s;if(f)if(h===105){if(d%4===0)return new Int32Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getInt32(s+p*4,!0);return g}else if(h===73){if(d%4===0)return new Uint32Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getUint32(s+p*4,!0);return g}else if(h===115){if(d%2===0)return new Int16Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getInt16(s+p*2,!0);return g}else if(h===83){if(d%2===0)return new Uint16Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getUint16(s+p*2,!0);return g}else{if(h===99)return new Int8Array(a.buffer,d,A);if(h===67)return new Uint8Array(a.buffer,d,A);if(h===102){if(d%4===0)return new Float32Array(a.buffer,d,A);const g=new Array(A);for(let p=0;p<A;p++)g[p]=this._dataView.getFloat32(s+p*4,!0);return g}}h===105||h===73||h===102?s+=A<<2:h===115||h===83?s+=A<<1:(h===99||h===67)&&(s+=A);break}}}}_computeTags(){let t=this.tagsStart;const e=this.bytes.end,r=this.byteArray,i={};for(;t<e;){const s=String.fromCharCode(r[t],r[t+1]),o=r[t+2];switch(t+=3,o){case 65:i[s]=String.fromCharCode(r[t]),t+=1;break;case 105:i[s]=this._dataView.getInt32(t,!0),t+=4;break;case 73:i[s]=this._dataView.getUint32(t,!0),t+=4;break;case 99:i[s]=this._dataView.getInt8(t),t+=1;break;case 67:i[s]=this._dataView.getUint8(t),t+=1;break;case 115:i[s]=this._dataView.getInt16(t,!0),t+=2;break;case 83:i[s]=this._dataView.getUint16(t,!0),t+=2;break;case 102:i[s]=this._dataView.getFloat32(t,!0),t+=4;break;case 90:case 72:{const a=[];for(;t<=e;){const l=r[t++];if(l!==0)a.push(String.fromCharCode(l));else break}i[s]=a.join("");break}case 66:{const a=r[t++],l=this._dataView.getInt32(t,!0);t+=4;const c=r.byteOffset+t;if(a===105){if(c%4===0)i[s]=new Int32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt32(t+f*4,!0);i[s]=u}t+=l<<2}else if(a===73){if(c%4===0)i[s]=new Uint32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint32(t+f*4,!0);i[s]=u}t+=l<<2}else if(a===115){if(c%2===0)i[s]=new Int16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt16(t+f*2,!0);i[s]=u}t+=l<<1}else if(a===83){if(c%2===0)i[s]=new Uint16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint16(t+f*2,!0);i[s]=u}t+=l<<1}else if(a===99)i[s]=new Int8Array(r.buffer,c,l),t+=l;else if(a===67)i[s]=new Uint8Array(r.buffer,c,l),t+=l;else if(a===102){if(c%4===0)i[s]=new Float32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getFloat32(t+f*4,!0);i[s]=u}t+=l<<2}break}default:console.error("Unknown BAM tag type",o);break}}return i}isPaired(){return!!(this.flags&Gt.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&Gt.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&Gt.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&Gt.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&Gt.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&Gt.BAM_FMREVERSE)}isRead1(){return!!(this.flags&Gt.BAM_FREAD1)}isRead2(){return!!(this.flags&Gt.BAM_FREAD2)}isSecondary(){return!!(this.flags&Gt.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&Gt.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&Gt.BAM_FDUP)}isSupplementary(){return!!(this.flags&Gt.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array(0)};const t=this.num_cigar_ops;let e=this.b0+this.read_name_length;const r=this._dataView.getInt32(e,!0),i=r>>4;if((r&15)===$T&&i===this.seq_length){e+=4;const u=this._dataView.getInt32(e,!0),f=u>>4;return(u&15)!==ZT&&console.warn("CG tag with no N tag"),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:f}}const o=this.byteArray.byteOffset+e;if(o%4===0&&t>50){const u=new Uint32Array(this.byteArray.buffer,o,t);let f=0;for(let h=0;h<t;++h){const A=u[h];f+=(A>>4)*(oE>>(A&15)&1)}return{NUMERIC_CIGAR:u,length_on_ref:f}}const l=new Array(t);let c=0;for(let u=0;u<t;++u){const f=this._dataView.getInt32(e+u*4,!0)|0;l[u]=f,c+=(f>>4)*(oE>>(f&15)&1)}return{NUMERIC_CIGAR:l,length_on_ref:c}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){const t=this.NUMERIC_CIGAR;let e="";for(let r=0,i=t.length;r<i;r++){const s=t[r],o=s>>4,a=e7[s&15];e+=o+String.fromCharCode(a)}return e}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){const t=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(t,t+this.num_seq_bytes)}get seq(){const t=this.NUMERIC_SEQ,e=this.seq_length,r=new Array(e);let i=0;const s=e>>1;for(let o=0;o<s;++o){const a=t[o];r[i++]=gc[(a&240)>>4],r[i++]=gc[a&15]}if(i<e){const o=t[s];r[i]=gc[(o&240)>>4]}return r.join("")}get pair_orientation(){if(!this.isSegmentUnmapped()&&!this.isMateUnmapped()&&this.ref_id===this.next_refid){const t=this.isReverseComplemented()?"R":"F",e=this.isMateReverseComplemented()?"R":"F";let r=" ",i=" ";return this.isRead1()?(r="1",i="2"):this.isRead2()&&(r="2",i="1"),this.template_length>0?`${t}${r}${e}${i}`:`${e}${i}${t}${r}`}}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(t){if(t<this.seq_length){const e=t>>1,r=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+e];return t%2===0?gc[(r&240)>>4]:gc[r&15]}else return}toJSON(){const t={};for(const e of Object.keys(this))e.startsWith("_")||e==="bytes"||(t[e]=this[e]);return t}}function cE(n){const t=n.split(/\r?\n/),e=[];for(const r of t){const[i,...s]=r.split(/\t/);i&&e.push({tag:i.slice(1),data:s.map(o=>{const a=o.indexOf(":"),l=o.slice(0,a),c=o.slice(a+1);return{tag:l,value:c}})})}return e}const lE=21840194,t7=65536;class uE{constructor({bamFilehandle:t,bamPath:e,bamUrl:r,baiPath:i,baiFilehandle:s,baiUrl:o,csiPath:a,csiFilehandle:l,csiUrl:c,htsget:u,renameRefSeqs:f=A=>A,recordClass:h}){if(this.htsget=!1,this.chunkFeatureCache=new cc({maxSize:100}),this.renameRefSeq=f,this.RecordClass=h??aE,t)this.bam=t;else if(e)this.bam=new at(e);else if(r)this.bam=new pn(r);else if(u)this.htsget=!0,this.bam=new XT;else throw new Error("unable to initialize bam");if(l)this.index=new Cf({filehandle:l});else if(a)this.index=new Cf({filehandle:new at(a)});else if(c)this.index=new Cf({filehandle:new pn(c)});else if(s)this.index=new Fs({filehandle:s});else if(i)this.index=new Fs({filehandle:new at(i)});else if(o)this.index=new Fs({filehandle:new pn(o)});else if(e)this.index=new Fs({filehandle:new at(`${e}.bai`)});else if(r)this.index=new Fs({filehandle:new pn(`${r}.bai`)});else if(u)this.htsget=!0;else throw new Error("unable to infer index format")}async getHeaderPre(t){const e=H9(t);if(!this.index)return;const r=await this.index.parse(e),i=r.firstDataLine===void 0?await this.bam.readFile():await this.bam.read(r.firstDataLine.blockPosition+t7,0),s=await Gs(i),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==lE)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),l=new TextDecoder("utf8");this.header=l.decode(s.subarray(8,8+a));const{chrToIndex:c,indexToChr:u}=this._parseRefSeqs(s,a+8);return this.chrToIndex=c,this.indexToChr=u,cE(this.header)}getHeader(t){return this.headerP||(this.headerP=this.getHeaderPre(t).catch(e=>{throw this.headerP=void 0,e})),this.headerP}async getHeaderText(t={}){return await this.getHeader(t),this.header}_parseRefSeqs(t,e){const r=new DataView(t.buffer),i=r.getInt32(e,!0);let s=e+4;const o={},a=[],l=new TextDecoder("utf8");for(let c=0;c<i;c+=1){if(s+8>t.length)throw new Error(`Insufficient data for reference sequences: need more than ${t.length} bytes`);const u=r.getInt32(s,!0),f=this.renameRefSeq(l.decode(t.subarray(s+4,s+4+u-1))),h=r.getInt32(s+u+4,!0);o[f]=c,a.push({refName:f,length:h}),s=s+8+u}return{chrToIndex:o,indexToChr:a}}async getRecordsForRange(t,e,r,i){var a;await this.getHeader(i);const s=(a=this.chrToIndex)==null?void 0:a[t];if(s===void 0||!this.index)return[];const o=await this.index.blocksForRange(s,e-1,r,i);return this._fetchChunkFeaturesDirect(o,s,e,r,i)}chunkCacheKey(t,e){const{minv:r,maxv:i}=t;return`${r.blockPosition}:${r.dataPosition}-${i.blockPosition}:${i.dataPosition}${q9(e)}`}blocksOverlap(t,e,r,i){return t<=i&&e>=r}evictOverlappingChunks(t,e){for(const[r,i]of this.chunkFeatureCache)this.blocksOverlap(t,e,i.minBlock,i.maxBlock)&&this.chunkFeatureCache.delete(r)}async _fetchChunkFeaturesDirect(t,e,r,i,s={}){const{viewAsPairs:o,filterBy:a}=s,{flagInclude:l=0,flagExclude:c=0,tagFilter:u}=a||{},f=[];for(let h=0,A=t.length;h<A;h++){const d=t[h],g=this.chunkCacheKey(d,a),p=d.minv.blockPosition,C=d.maxv.blockPosition;let w;const b=this.chunkFeatureCache.get(g);if(b)w=b.features;else{this.evictOverlappingChunks(p,C);const{data:x,cpositions:B,dpositions:E}=await this._readChunk({chunk:d,opts:s}),Q=await this.readBamFeatures(x,B,E,d);if(a){w=[];for(let k=0,S=Q.length;k<S;k++){const T=Q[k];V9(T.flags,l,c)||u&&J9(T.tags[u.tag],u.value)||w.push(T)}}else w=Q;this.chunkFeatureCache.set(g,{minBlock:p,maxBlock:C,features:w})}let y=!1;for(let x=0,B=w.length;x<B;x++){const E=w[x];if(E.ref_id===e)if(E.start>=i){y=!0;break}else E.end>=r&&f.push(E)}if(y)break}if(o){const h=await this.fetchPairs(e,f,s);for(let A=0,d=h.length;A<d;A++)f.push(h[A])}return f}async fetchPairs(t,e,r){const{pairAcrossChr:i,maxInsertSize:s=2e5}=r,o={},a={};for(let h=0,A=e.length;h<A;h++){const d=e[h],g=d.name;o[g]=(o[g]||0)+1,a[d.fileOffset]=1}const l=[];for(let h=0,A=e.length;h<A;h++){const d=e[h],g=d.name;this.index&&o[g]===1&&(i||d.next_refid===t&&Math.abs(d.start-d.next_pos)<s)&&l.push(this.index.blocksForRange(d.next_refid,d.next_pos,d.next_pos+1,r))}const c=new Map,u=await Promise.all(l);for(let h=0,A=u.length;h<A;h++){const d=u[h];for(let g=0,p=d.length;g<p;g++){const C=d[g],w=C.toString();c.has(w)||c.set(w,C)}}return(await Promise.all([...c.values()].map(async h=>{const{data:A,cpositions:d,dpositions:g,chunk:p}=await this._readChunk({chunk:h,opts:r}),C=[],w=await this.readBamFeatures(A,d,g,p);for(let b=0,y=w.length;b<y;b++){const x=w[b];o[x.name]===1&&!a[x.fileOffset]&&C.push(x)}return C}))).flat()}async _readChunk({chunk:t,opts:e}){const r=await this.bam.read(t.fetchedSize(),t.minv.blockPosition,e),{buffer:i,cpositions:s,dpositions:o}=await iE(r,t);return{data:i,cpositions:s,dpositions:o,chunk:t}}async readBamFeatures(t,e,r,i){let s=0;const o=[];let a=0;const l=new DataView(t.buffer),c=r.length>0,u=e.length>0;for(;s+4<t.length;){const f=l.getInt32(s,!0),h=s+4+f-1;if(c){for(;s+i.minv.dataPosition>=r[a++];);a--}if(h<t.length){const A=new this.RecordClass({bytes:{byteArray:t,start:s,end:h},fileOffset:u?e[a]*256+(s-r[a])+i.minv.dataPosition+1:qT(t.subarray(s,h))>>>0});o.push(A)}s=h+1}return o}async hasRefSeq(t){var r,i;const e=(r=this.chrToIndex)==null?void 0:r[t];return e===void 0?!1:(i=this.index)==null?void 0:i.hasRefSeq(e)}async lineCount(t){var r;const e=(r=this.chrToIndex)==null?void 0:r[t];return e===void 0||!this.index?0:this.index.lineCount(e)}async indexCov(t,e,r){var s;if(!this.index)return[];await this.index.parse();const i=(s=this.chrToIndex)==null?void 0:s[t];return i===void 0?[]:this.index.indexCov(i,e,r)}async blocksForRange(t,e,r,i){var o;if(!this.index)return[];await this.index.parse();const s=(o=this.chrToIndex)==null?void 0:o[t];return s===void 0?[]:this.index.blocksForRange(s,e,r,i)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(t,e){if(!this.index)return 0;if(await this.getHeader(e),!this.chrToIndex)throw new Error("Header not yet parsed");return this.index.estimatedBytesForRegions(t.map(r=>{const i=this.chrToIndex[r.refName];if(i===void 0)throw new Error(`Unknown reference name: ${r.refName}`);return{refId:i,start:r.start,end:r.end}}),e)}}async function fE(n,t){const e=await Promise.all(n.map(async r=>{const{url:i,headers:s}=r;if(i.startsWith("data:")){const o=await fetch(i);if(!o.ok)throw new Error("failed to decode base64");const a=await o.arrayBuffer();return new Uint8Array(a)}else{const{referer:o,...a}=s,l=await fetch(i,{...t,headers:{...t==null?void 0:t.headers,...a}});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${i}: ${await l.text()}`);return new Uint8Array(await l.arrayBuffer())}}));return _9(await Promise.all(e.map(r=>Gs(r))))}class n7 extends uE{constructor(t){super({htsget:!0,recordClass:t.recordClass}),this.baseUrl=t.baseUrl,this.trackId=t.trackId}async getRecordsForRange(t,e,r,i){var A;const o=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${t}&start=${e}&end=${r}&format=BAM`,a=(A=this.chrToIndex)==null?void 0:A[t];if(a===void 0)return[];const l=await fetch(o,{...i});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${o}: ${await l.text()}`);const c=await l.json(),u=await fE(c.htsget.urls.slice(1),i),f=await this.readBamFeatures(u,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),h=[];for(let d=0,g=f.length;d<g;d++){const p=f[d];if(p.ref_id===a){if(p.start>=r)break;p.end>=e&&h.push(p)}}return h}async getHeader(t={}){const e=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(e,t);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${e}: ${await r.text()}`);const i=await r.json(),s=await fE(i.htsget.urls,t),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==lE)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),c=new TextDecoder("utf8").decode(s.subarray(8,8+a)),u=cE(c),f=[],h={},A=u.filter(d=>d.tag==="SQ");for(const[d,g]of A.entries()){let p="",C=0;for(const w of g.data)w.tag==="SN"?p=w.value:w.tag==="LN"&&(C=+w.value);h[p]=d,f[d]={refName:p,length:C}}return this.chrToIndex=h,this.indexToChr=f,u}}const r7=Object.freeze(Object.defineProperty({__proto__:null,BAI:Fs,BamFile:uE,BamRecord:aE,CSI:Cf,HtsgetFile:n7},Symbol.toStringTag,{value:"Module"}));class yf{constructor(t,e,r,i){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class AE{constructor({filehandle:t,renameRefSeqs:e=r=>r}){this.filehandle=t,this.renameRefSeq=e}async getMetadata(t={}){const{indices:e,...r}=await this.parse(t);return r}_findFirstData(t,e){return t?t.compareTo(e)>0?e:t:e}async parse(t={}){return this.parseP||(this.parseP=this._parse(t).catch(e=>{throw this.parseP=void 0,e})),this.parseP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices[t])!=null&&i.binIndex)}_parseNameBytes(t){let e=0,r=0;const i=[],s={},o=new TextDecoder("utf8");for(let a=0;a<t.length;a+=1)if(!t[a]){if(r<a){const l=this.renameRefSeq(o.decode(t.subarray(r,a)));i[e]=l,s[l]=e}r=a+1,e+=1}return{refNameToId:s,refIdToName:i}}}const hE=65536,i7=hE*hE;function dE(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*i7+(e>>>0)}function s7(n,t){return t.minv.blockPosition-n.maxv.blockPosition<65e3&&t.maxv.blockPosition-n.minv.blockPosition<5e6}function gE(n,t){const e=[];let r;if(n.length===0)return n;n.sort(function(i,s){const o=i.minv.blockPosition-s.minv.blockPosition;return o===0?i.minv.dataPosition-s.minv.dataPosition:o});for(const i of n)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(e.push(i),r=i):s7(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(e.push(i),r=i));return e}class E0{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}}function zs(n,t=0){return new E0(n[t+7]*1099511627776+n[t+6]*4294967296+n[t+5]*16777216+n[t+4]*65536+n[t+3]*256+n[t+2],n[t+1]<<8|n[t])}const o7=21582659,a7=38359875,c7={0:"generic",1:"SAM",2:"VCF"};function l7(n,t){return n*2**t}function pE(n,t){return Math.floor(n/2**t)}class wf extends AE{constructor(t){super(t),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e={}){const r=await this.parse(e),i=r.refNameToId[t];if(i===void 0||!r.indices[i])return-1;const{stats:o}=r.indices[i];return o?o.lineCount:-1}indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(t,e){const r=new DataView(t.buffer),i=r.getInt32(e,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o=c7[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(e+4,!0),start:r.getInt32(e+8,!0),end:r.getInt32(e+12,!0)},l=r.getInt32(e+16,!0),c=l?String.fromCharCode(l):void 0,u=r.getInt32(e+20,!0),f=r.getInt32(e+24,!0),{refIdToName:h,refNameToId:A}=this._parseNameBytes(t.subarray(e+28,e+28+f));return{refIdToName:h,refNameToId:A,skipLines:u,metaChar:c,columnNumbers:a,format:o,coordinateType:s}}async _parse(t={}){const e=await Gs(await this.filehandle.readFile(t)),r=new DataView(e.buffer);let i;if(r.getUint32(0,!0)===o7)i=1;else if(r.getUint32(0,!0)===a7)i=2;else throw new Error("Not a CSI file");this.minShift=r.getInt32(4,!0),this.depth=r.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const s=2**(this.minShift+this.depth*3),o=r.getInt32(12,!0),a=o&&o>=30?this.parseAuxData(e,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},l=r.getInt32(16+o,!0);let c,u=16+o+4;const f=new Array(l).fill(0).map(()=>{const h=r.getInt32(u,!0);u+=4;const A={};let d;for(let g=0;g<h;g+=1){const p=r.getUint32(u,!0);if(p>this.maxBinNumber)d=this.parsePseudoBin(e,u+4),u+=48;else{const C=zs(e,u+4);c=this._findFirstData(c,C);const w=r.getInt32(u+12,!0);u+=16;const b=new Array(w);for(let y=0;y<w;y+=1){const x=zs(e,u),B=zs(e,u+8);u+=16,b[y]=new yf(x,B,p)}A[p]=b}}return{binIndex:A,stats:d}});return{...a,csi:!0,refCount:l,maxBlockSize:65536,firstDataLine:c,csiVersion:i,indices:f,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:s}}parsePseudoBin(t,e){return{lineCount:dE(t,e+28)}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i),o=s.refNameToId[t];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];const l=this.reg2bins(e,r),c=[];for(const[u,f]of l)for(let h=u;h<=f;h++)if(a.binIndex[h])for(const A of a.binIndex[h])c.push(new yf(A.minv,A.maxv,h));return gE(c,new E0(0,0))}reg2bins(t,e){t-=1,t<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=l7(1,r*3),r+=1){const a=i+pE(t,s),l=i+pE(e,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}}const u7=21578324,mE=14;function f7(n,t){return n+=1,t-=1,[[0,0],[1+(n>>26),1+(t>>26)],[9+(n>>23),9+(t>>23)],[73+(n>>20),73+(t>>20)],[585+(n>>17),585+(t>>17)],[4681+(n>>14),4681+(t>>14)]]}class Hs extends AE{async lineCount(t,e={}){var o;const r=await this.parse(e),i=r.refNameToId[t];return i===void 0||!r.indices[i]?-1:((o=r.indices[i].stats)==null?void 0:o.lineCount)??-1}async _parse(t={}){const e=await this.filehandle.readFile(t),r=await Gs(e),i=new DataView(r.buffer);if(i.getUint32(0,!0)!==u7)throw new Error("Not a TBI file");const o=i.getUint32(4,!0),a=i.getUint32(8,!0),l=a&65536?"zero-based-half-open":"1-based-closed",u={0:"generic",1:"SAM",2:"VCF"}[a&15];if(!u)throw new Error(`invalid Tabix preset format flags ${a}`);const f={ref:i.getInt32(12,!0),start:i.getInt32(16,!0),end:i.getInt32(20,!0)},h=i.getInt32(24,!0),A=5,d=((1<<(A+1)*3)-1)/7,g=2**(14+A*3),p=h?String.fromCharCode(h):void 0,C=i.getInt32(28,!0),w=i.getInt32(32,!0),{refNameToId:b,refIdToName:y}=this._parseNameBytes(r.slice(36,36+w));let x=36+w,B;return{indices:new Array(o).fill(0).map(()=>{const Q=i.getInt32(x,!0);x+=4;const k={};let S;for(let U=0;U<Q;U+=1){const H=i.getUint32(x,!0);if(x+=4,H>d+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(H===d+1){const J=i.getInt32(x,!0);x+=4,J===2&&(S=this.parsePseudoBin(r,x)),x+=16*J}else{const J=i.getInt32(x,!0);x+=4;const _=new Array(J);for(let Z=0;Z<J;Z+=1){const le=zs(r,x),de=zs(r,x+8);x+=16,B=this._findFirstData(B,le),_[Z]=new yf(le,de,H)}k[H]=_}}const T=i.getInt32(x,!0);x+=4;const N=new Array(T);for(let U=0;U<T;U+=1)N[U]=zs(r,x),x+=8,B=this._findFirstData(B,N[U]);return{binIndex:k,linearIndex:N,stats:S}}),metaChar:p,maxBinNumber:d,maxRefLength:g,skipLines:C,firstDataLine:B,columnNumbers:f,coordinateType:l,format:u,refIdToName:y,refNameToId:b,maxBlockSize:65536}}parsePseudoBin(t,e){return{lineCount:dE(t,e+16)}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i),o=s.refNameToId[t];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];(a.linearIndex.length>0?a.linearIndex[e>>mE>=a.linearIndex.length?a.linearIndex.length-1:e>>mE]:new E0(0,0))||console.warn("querying outside of possible tabix range");const c=f7(e,r),u=[];for(const[g,p]of c)for(let C=g;C<=p;C++)if(a.binIndex[C])for(const w of a.binIndex[C])u.push(new yf(w.minv,w.maxv,C));const f=a.linearIndex.length;let h;const A=Math.min(e>>14,f-1),d=Math.min(r>>14,f-1);for(let g=A;g<=d;++g){const p=a.linearIndex[g];p&&(!h||p.compareTo(h)<0)&&(h=p)}return gE(u,h)}}class A7{constructor({path:t,filehandle:e,url:r,tbiPath:i,tbiUrl:s,tbiFilehandle:o,csiPath:a,csiUrl:l,csiFilehandle:c,renameRefSeqs:u,chunkCacheSize:f=5*2**20}){this.cache=new cc({maxSize:1e3});const h=u??(A=>A);if(e)this.filehandle=e;else if(t)this.filehandle=new at(t);else if(r)this.filehandle=new pn(r);else throw new TypeError("must provide either filehandle or path");if(o)this.index=new Hs({filehandle:o,renameRefSeqs:h});else if(c)this.index=new wf({filehandle:c,renameRefSeqs:h});else if(i)this.index=new Hs({filehandle:new at(i),renameRefSeqs:h});else if(a)this.index=new wf({filehandle:new at(a),renameRefSeqs:h});else if(t)this.index=new Hs({filehandle:new at(`${t}.tbi`),renameRefSeqs:h});else if(l)this.index=new wf({filehandle:new pn(l)});else if(s)this.index=new Hs({filehandle:new pn(s)});else if(r)this.index=new Hs({filehandle:new pn(`${r}.tbi`)});else throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl");this.renameRefSeq=h,this.hasCustomRenameRefSeq=u!==void 0,this.chunkCache=new Qs({cache:new cc({maxSize:Math.floor(f/65536)}),fill:(A,d)=>this.readChunk(A,{signal:d})})}calculateFileOffset(t,e,r,i,s){return t[r]*256+(i-e[r])+s+1}async getLines(t,e,r,i){var b;let s,o={},a;typeof i=="function"?a=i:(o=i,a=i.lineCallback,s=i.signal);const l=await this.index.getMetadata(o),c=e??0,u=r??l.maxRefLength;if(!(c<=u))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(c===u)return;const f=await this.index.blocksForRange(t,c,u,o),h=new TextDecoder("utf8"),A=l.format==="VCF",d={ref:l.columnNumbers.ref||0,start:l.columnNumbers.start||0,end:A?8:l.columnNumbers.end||0},g=Math.max(d.ref,d.start,d.end),p=(b=l.metaChar)==null?void 0:b.charCodeAt(0),C=l.coordinateType==="1-based-closed"?-1:0,w=!this.hasCustomRenameRefSeq;for(const y of f){const{buffer:x,cpositions:B,dpositions:E}=await this.chunkCache.get(y.toString(),y,s);let Q=0,k=0;const S=h.decode(x);if(x.length==S.length)for(;Q<S.length;){const N=S.indexOf(`
883
- `,Q);if(N===-1)break;const U=S.slice(Q,N);if(E){const J=Q+y.minv.dataPosition;for(;k<E.length&&J>=E[k];)k++}const H=this.checkLine(t,c,u,U,d.ref,d.start,d.end,g,p,C,A,w);if(H===null)return;H!==void 0&&a(U,this.calculateFileOffset(B,E,k,Q,y.minv.dataPosition),H.start,H.end),Q=N+1}else for(;Q<x.length;){const N=x.indexOf(10,Q);if(N===-1)break;const U=x.slice(Q,N),H=h.decode(U);if(E){const _=Q+y.minv.dataPosition;for(;k<E.length&&_>=E[k];)k++}const J=this.checkLine(t,c,u,H,d.ref,d.start,d.end,g,p,C,A,w);if(J===null)return;J!==void 0&&a(H,this.calculateFileOffset(B,E,k,Q,y.minv.dataPosition),J.start,J.end),Q=N+1}}}async getMetadata(t={}){return this.index.getMetadata(t)}async getHeaderBuffer(t={}){const{firstDataLine:e,metaChar:r,maxBlockSize:i}=await this.getMetadata(t),s=((e==null?void 0:e.blockPosition)||0)+i,o=await this.filehandle.read(s,0,t),a=await Gs(o);if(r){let l=-1;const c=10,u=r.charCodeAt(0);for(let f=0,h=a.length;f<h;f++){const A=a[f];if(f===l+1&&A!==u)break;A===c&&(l=f)}return a.subarray(0,l+1)}return a}async getHeader(t={}){const e=new TextDecoder("utf8"),r=await this.getHeaderBuffer(t);return e.decode(r)}async getReferenceSequenceNames(t={}){return(await this.getMetadata(t)).refIdToName}checkLine(t,e,r,i,s,o,a,l,c,u,f,h){if(c!==void 0&&i.charCodeAt(0)===c)return;if(i.length<500){const b=i.split(" "),y=b[s-1];if(!(h?y===t:this.renameRefSeq(y)===t))return;const B=+b[o-1]+u;if(B>=r)return null;let E;return a===0||a===o?E=B+1:f?E=this._getVcfEnd(B,b[3],b[a-1]):E=+b[a-1],E<=e?void 0:{start:B,end:E}}let A=-1;const d=[-1];for(let b=0;b<l;b++){const y=i.indexOf(" ",A+1);if(y===-1){d.push(i.length);break}d.push(y),A=y}const g=i.slice(d[s-1]+1,d[s]);if(!(h?g===t:this.renameRefSeq(g)===t))return;const C=+i.slice(d[o-1]+1,d[o])+u;if(C>=r)return null;let w;if(a===0||a===o?w=C+1:f?w=this._getVcfEnd(C,i.slice(d[3]+1,d[4]),i.slice(d[a-1]+1,d[a])):w=+i.slice(d[a-1]+1,d[a]),!(w<=e))return{start:C,end:w}}_getVcfEnd(t,e,r){let i=t+e.length;if(r.includes("SVTYPE=TRA"))return t+1;if(r[0]!=="."){const o=r.indexOf("END=");if(o!==-1&&(o===0||r[o-1]===";")){const a=o+4;let l=r.indexOf(";",a);l===-1&&(l=r.length),i=Number.parseInt(r.slice(a,l),10)}}return i}async lineCount(t,e={}){return this.index.lineCount(t,e)}async readChunk(t,e={}){const r=await this.filehandle.read(t.fetchedSize(),t.minv.blockPosition,e);return iE(r,t,this.cache)}}const h7=Object.freeze(Object.defineProperty({__proto__:null,CSI:wf,TBI:Hs,TabixIndexedFile:A7},Symbol.toStringTag,{value:"Module"})),d7=/%([0-9A-Fa-f]{2})/g,g7=/^\s*##\s*(\S+)\s*(.*)/,p7=/\r?\n$/,CE=/\s+/,yE=/\D/g;function If(n){return n.includes("%")?n.replaceAll(d7,(t,e)=>String.fromCharCode(parseInt(e,16))):n}function m7(n){if(!n.length||n===".")return{};const t={};let e=n;e.endsWith(`
863
+ )`},Symbol.toStringTag,{value:"Module"}))).map(([n,t])=>[n,CE.parse(t.trim())]));function ng(n){const t=new Set(["uint","int","float","long"]);return{...n,fields:n.fields.map(e=>({...e,isArray:e.size&&e.type!=="char",arrayIsNumeric:e.size&&t.has(e.type),isNumeric:!e.size&&t.has(e.type)})).filter(e=>!!e.name)}}const NP={".":0,"-":-1,"+":1};function TP(n){var t;return n.length>=12&&!Number.isNaN(Number.parseInt(n[9],10))&&((t=n[10])==null?void 0:t.split(",").filter(e=>!!e).length)===Number.parseInt(n[9],10)}class PP{constructor(t={}){if(t.autoSql)this.autoSql=ng(CE.parse(t.autoSql));else if(t.type){if(!tg[t.type])throw new Error("Type not found");this.autoSql=ng(tg[t.type])}else this.autoSql=ng(tg.defaultBedSchema),this.attemptDefaultBed=!0}parseLine(t,e={}){const{autoSql:r}=this,{uniqueId:i}=e,s=Array.isArray(t)?t:t.split(" ");let o={};if(!this.attemptDefaultBed||this.attemptDefaultBed&&TP(s))for(let a=0;a<r.fields.length;a++){const l=r.fields[a];let c=s[a];const{isNumeric:u,isArray:f,arrayIsNumeric:h,name:A}=l;if(c==null)break;if(c!=="."){if(u){const d=Number(c);c=Number.isNaN(d)?c:d}else f&&(c=c.split(","),c.at(-1)===""&&c.pop(),h&&(c=c.map(Number)));o[A]=c}}else{const a=["chrom","chromStart","chromEnd","name"];o=Object.fromEntries(s.map((l,c)=>[a[c]||"field"+c,l])),o.chromStart=+o.chromStart,o.chromEnd=+o.chromEnd,Number.isNaN(Number.parseFloat(o.field4))||(o.score=+o.field4,delete o.field4),(o.field5==="+"||o.field5==="-")&&(o.strand=o.field5,delete o.field5)}return i&&(o.uniqueId=i),o.strand=NP[o.strand]||0,o.chrom=decodeURIComponent(o.chrom),o}}const LP=Object.freeze(Object.defineProperty({__proto__:null,default:PP},Symbol.toStringTag,{value:"Module"}));var Ge=function(n,t,e,r,i){if(r==="m")throw new TypeError("Private method is not writable");if(r==="a"&&!i)throw new TypeError("Private accessor was defined without a setter");if(typeof t=="function"?n!==t||!i:!t.has(n))throw new TypeError("Cannot write private member to an object whose class did not declare it");return r==="a"?i.call(n,e):i?i.value=e:t.set(n,e),e},G=function(n,t,e,r){if(e==="a"&&!r)throw new TypeError("Private accessor was defined without a getter");if(typeof t=="function"?n!==t||!r:!t.has(n))throw new TypeError("Cannot read private member from an object whose class did not declare it");return e==="m"?r:e==="a"?r.call(n):r?r.value:t.get(n)},we,Bt,Ie,Fe,Qi,Gc,Di,eA,en,yE,rg,ig,sg,wE,tA;class zc extends Map{constructor(t={}){if(super(),we.add(this),Bt.set(this,0),Ie.set(this,new Map),Fe.set(this,new Map),Qi.set(this,void 0),Gc.set(this,void 0),Di.set(this,void 0),!(t.maxSize&&t.maxSize>0))throw new TypeError("`maxSize` must be a number greater than 0");if(typeof t.maxAge=="number"&&t.maxAge===0)throw new TypeError("`maxAge` must be a number greater than 0");Ge(this,Qi,t.maxSize,"f"),Ge(this,Gc,t.maxAge||Number.POSITIVE_INFINITY,"f"),Ge(this,Di,t.onEviction,"f")}get __oldCache(){return G(this,Fe,"f")}get(t){if(G(this,Ie,"f").has(t)){const e=G(this,Ie,"f").get(t);return G(this,we,"m",rg).call(this,t,e)}if(G(this,Fe,"f").has(t)){const e=G(this,Fe,"f").get(t);if(!G(this,we,"m",en).call(this,t,e))return G(this,we,"m",wE).call(this,t,e),e.value}}set(t,e,{maxAge:r=G(this,Gc,"f")}={}){const i=typeof r=="number"&&r!==Number.POSITIVE_INFINITY?Date.now()+r:void 0;return G(this,Ie,"f").has(t)?G(this,Ie,"f").set(t,{value:e,expiry:i}):G(this,we,"m",sg).call(this,t,{value:e,expiry:i}),this}has(t){return G(this,Ie,"f").has(t)?!G(this,we,"m",en).call(this,t,G(this,Ie,"f").get(t)):G(this,Fe,"f").has(t)?!G(this,we,"m",en).call(this,t,G(this,Fe,"f").get(t)):!1}peek(t){if(G(this,Ie,"f").has(t))return G(this,we,"m",ig).call(this,t,G(this,Ie,"f"));if(G(this,Fe,"f").has(t))return G(this,we,"m",ig).call(this,t,G(this,Fe,"f"))}expiresIn(t){const e=G(this,Ie,"f").get(t)??G(this,Fe,"f").get(t);if(e)return e.expiry?e.expiry-Date.now():Number.POSITIVE_INFINITY}delete(t){var e;const r=G(this,Ie,"f").delete(t);return r&&Ge(this,Bt,(e=G(this,Bt,"f"),e--,e),"f"),G(this,Fe,"f").delete(t)||r}clear(){G(this,Ie,"f").clear(),G(this,Fe,"f").clear(),Ge(this,Bt,0,"f")}resize(t){if(!(t&&t>0))throw new TypeError("`maxSize` must be a number greater than 0");const e=[...G(this,we,"m",tA).call(this)],r=e.length-t;r<0?(Ge(this,Ie,new Map(e),"f"),Ge(this,Fe,new Map,"f"),Ge(this,Bt,e.length,"f")):(r>0&&G(this,we,"m",eA).call(this,e.slice(0,r)),Ge(this,Fe,new Map(e.slice(r)),"f"),Ge(this,Ie,new Map,"f"),Ge(this,Bt,0,"f")),Ge(this,Qi,t,"f")}evict(t=1){const e=t;if(!e||e<=0)return;const r=[...G(this,we,"m",tA).call(this)],i=Math.trunc(Math.min(e,Math.max(r.length-1,0)));i<=0||(G(this,we,"m",eA).call(this,r.slice(0,i)),Ge(this,Fe,new Map(r.slice(i)),"f"),Ge(this,Ie,new Map,"f"),Ge(this,Bt,0,"f"))}*keys(){for(const[t]of this)yield t}*values(){for(const[,t]of this)yield t}*[(Bt=new WeakMap,Ie=new WeakMap,Fe=new WeakMap,Qi=new WeakMap,Gc=new WeakMap,Di=new WeakMap,we=new WeakSet,eA=function(e){if(typeof G(this,Di,"f")=="function")for(const[r,i]of e)G(this,Di,"f").call(this,r,i.value)},en=function(e,r){return typeof r.expiry=="number"&&r.expiry<=Date.now()?(typeof G(this,Di,"f")=="function"&&G(this,Di,"f").call(this,e,r.value),this.delete(e)):!1},yE=function(e,r){if(!G(this,we,"m",en).call(this,e,r))return r.value},rg=function(e,r){return r.expiry?G(this,we,"m",yE).call(this,e,r):r.value},ig=function(e,r){const i=r.get(e);return G(this,we,"m",rg).call(this,e,i)},sg=function(e,r){var i;G(this,Ie,"f").set(e,r),Ge(this,Bt,(i=G(this,Bt,"f"),i++,i),"f"),G(this,Bt,"f")>=G(this,Qi,"f")&&(Ge(this,Bt,0,"f"),G(this,we,"m",eA).call(this,G(this,Fe,"f")),Ge(this,Fe,G(this,Ie,"f"),"f"),Ge(this,Ie,new Map,"f"))},wE=function(e,r){G(this,Fe,"f").delete(e),G(this,we,"m",sg).call(this,e,r)},tA=function*(){for(const e of G(this,Fe,"f")){const[r,i]=e;G(this,Ie,"f").has(r)||G(this,we,"m",en).call(this,r,i)||(yield e)}for(const e of G(this,Ie,"f")){const[r,i]=e;G(this,we,"m",en).call(this,r,i)||(yield e)}},Symbol.iterator)](){for(const t of G(this,Ie,"f")){const[e,r]=t;G(this,we,"m",en).call(this,e,r)||(yield[e,r.value])}for(const t of G(this,Fe,"f")){const[e,r]=t;G(this,Ie,"f").has(e)||G(this,we,"m",en).call(this,e,r)||(yield[e,r.value])}}*entriesDescending(){let t=[...G(this,Ie,"f")];for(let e=t.length-1;e>=0;--e){const r=t[e],[i,s]=r;G(this,we,"m",en).call(this,i,s)||(yield[i,s.value])}t=[...G(this,Fe,"f")];for(let e=t.length-1;e>=0;--e){const r=t[e],[i,s]=r;G(this,Ie,"f").has(i)||G(this,we,"m",en).call(this,i,s)||(yield[i,s.value])}}*entriesAscending(){for(const[t,e]of G(this,we,"m",tA).call(this))yield[t,e.value]}get size(){if(!G(this,Bt,"f"))return G(this,Fe,"f").size;let t=0;for(const e of G(this,Fe,"f").keys())G(this,Ie,"f").has(e)||t++;return Math.min(G(this,Bt,"f")+t,G(this,Qi,"f"))}get maxSize(){return G(this,Qi,"f")}get maxAge(){return G(this,Gc,"f")}entries(){return this.entriesAscending()}forEach(t,e=this){for(const[r,i]of this.entriesAscending())t.call(e,i,r,this)}get[Symbol.toStringTag](){return"QuickLRU"}toString(){return`QuickLRU(${this.size}/${this.maxSize})`}[Symbol.for("nodejs.util.inspect.custom")](){return this.toString()}}let IE=class{constructor(t,e,r,i){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv.toString()}..${this.maxv.toString()} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}};const EE=65536,OP=EE*EE;function UP(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*OP+(e>>>0)}function GP(n={}){return"aborted"in n?{signal:n}:n}function og(n,t){const e=n.length;if(e===0)return n;let r;if(t){const l=t.blockPosition,c=t.dataPosition;r=[];for(let u=0;u<e;u++){const f=n[u],h=f.maxv;(h.blockPosition-l||h.dataPosition-c)>0&&r.push(f)}if(r.length===0)return r}else r=n;r.sort((l,c)=>{const u=l.minv.blockPosition-c.minv.blockPosition;return u!==0?u:l.minv.dataPosition-c.minv.dataPosition});const i=[];let s=r[0];i.push(s);let o=s.minv.blockPosition,a=s.maxv.blockPosition;for(let l=1;l<r.length;l++){const c=r[l],u=c.minv.blockPosition,f=c.maxv.blockPosition;if(u-a<65e3&&f-o<5e6){const h=c.maxv,A=s.maxv;(f-a||h.dataPosition-A.dataPosition)>0&&(s.maxv=h,a=f)}else i.push(c),s=c,o=u,a=f}return i}function bE(n,t){return{lineCount:UP(n,t)}}function Hc(n,t){return n?n.compareTo(t)>0?t:n:t}function zP(n,t=e=>e){let e=0,r=0;const i=[],s={};for(let o=0;o<n.length;o+=1)if(!n[o]){if(r<o){let a="";for(let l=r;l<o;l++)a+=String.fromCharCode(n[l]);a=t(a),i[e]=a,s[a]=e}r=o+1,e+=1}return{refNameToId:s,refIdToName:i}}function HP(n){let t=0;for(const i of n)t+=i.length;const e=new Uint8Array(t);let r=0;for(const i of n)e.set(i,r),r+=i.length;return e}function VP(n,t,e){return!!((n&t)!==t||n&e)}function _P(n,t){return t==="*"?n===void 0:`${n}`!=`${t}`}function YP(n){if(!n)return"";const{flagInclude:t=0,flagExclude:e=0,tagFilter:r}=n,i=r?`:${r.tag}=${r.value??"*"}`:"";return`:f${t}x${e}${i}`}let xE=class{constructor({filehandle:t,renameRefSeq:e=r=>r}){this.filehandle=t,this.renameRefSeq=e}async estimatedBytesForRegions(t,e){const r=await Promise.all(t.map(o=>this.blocksForRange(o.refId,o.start,o.end,e))),i=og(r.flat());let s=0;for(const o of i)s+=o.fetchedSize();return s}},BE=class{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}};function Sr(n,t=0,e=!1){if(e)throw new Error("big-endian virtual file offsets not implemented");return new BE(n[t+7]*1099511627776+n[t+6]*4294967296+n[t+5]*16777216+n[t+4]*65536+n[t+3]*256+n[t+2],n[t+1]<<8|n[t])}const JP=21578050;function qP(n,t){return n-n%t}function KP(n,t){return n-n%t+t}function jP(n,t){return t-=1,[[0,0],[1+(n>>26),1+(t>>26)],[9+(n>>23),9+(t>>23)],[73+(n>>20),73+(t>>20)],[585+(n>>17),585+(t>>17)],[4681+(n>>14),4681+(t>>14)]]}class ro extends xE{async lineCount(t,e){var i,s;return((s=(i=(await this.parse(e)).indices(t))==null?void 0:i.stats)==null?void 0:s.lineCount)||0}async _parse(t){const e=await this.filehandle.readFile(),r=new DataView(e.buffer);if(r.getUint32(0,!0)!==JP)throw new Error("Not a BAI file");const i=r.getInt32(4,!0),o=((1<<(5+1)*3)-1)/7;let a=8,l;const c=[];for(let h=0;h<i;h++){c.push(a);const A=r.getInt32(a,!0);a+=4;for(let C=0;C<A;C+=1){const m=r.getUint32(a,!0);if(a+=4,m===o+1)a+=4,a+=32;else{if(m>o+1)throw new Error("bai index contains too many bins, please use CSI");{const w=r.getInt32(a,!0);a+=4;for(let b=0;b<w;b++)a+=8,a+=8}}}const d=r.getInt32(a,!0);a+=4;const p=new Array(d);for(let C=0;C<d;C++){const m=Sr(e,a);a+=8,l=Hc(l,m),p[C]=m}}const u=new zc({maxSize:5});function f(h){let A=c[h];if(A===void 0)return;const d=r.getInt32(A,!0);let p;A+=4;const C={};for(let b=0;b<d;b+=1){const y=r.getUint32(A,!0);if(A+=4,y===o+1)A+=4,p=bE(e,A+16),A+=32;else{if(y>o+1)throw new Error("bai index contains too many bins, please use CSI");{const x=r.getInt32(A,!0);A+=4;const B=new Array(x);for(let E=0;E<x;E++){const Q=Sr(e,A);A+=8;const F=Sr(e,A);A+=8,l=Hc(l,Q),B[E]=new IE(Q,F,y)}C[y]=B}}}const m=r.getInt32(A,!0);A+=4;const w=new Array(m);for(let b=0;b<m;b++){const y=Sr(e,A);A+=8,l=Hc(l,y),w[b]=y}return{binIndex:C,linearIndex:w,stats:p}}return{bai:!0,firstDataLine:l,maxBlockSize:65536,indices:h=>{if(!u.has(h)){const A=f(h);return A&&u.set(h,A),A}return u.get(h)},refCount:i}}async indexCov(t,e,r,i){const o=e!==void 0,l=(await this.parse(i)).indices(t);if(!l)return[];const{linearIndex:c,stats:u}=l;if(c.length===0)return[];const f=r===void 0?(c.length-1)*16384:KP(r,16384),h=e===void 0?0:qP(e,16384),A=o?new Array((f-h)/16384):new Array(c.length-1),d=c[c.length-1].blockPosition;if(f>(c.length-1)*16384)throw new Error("query outside of range of linear index");let p=c[h/16384].blockPosition;for(let C=h/16384,m=0;C<f/16384;C++,m++)A[m]={score:c[C+1].blockPosition-p,start:C*16384,end:C*16384+16384},p=c[C+1].blockPosition;return A.map(C=>({...C,score:C.score*((u==null?void 0:u.lineCount)||0)/d}))}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i);if(!s)return[];const o=s.indices(t);if(!o)return[];const a=jP(e,r),l=[],{binIndex:c}=o;for(const[d,p]of a)for(let C=d;C<=p;C++){const m=c[C];if(m)for(let w=0,b=m.length;w<b;w++)l.push(m[w])}const{linearIndex:u}=o,f=u.length,h=Math.min(e>>14,f-1),A=u[h];return og(l,A)}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(e=>{throw this.setupP=void 0,e})),this.setupP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices(t))!=null&&i.binIndex)}}var vE=0,SE=2,nA=4,ki=0,rA=1,WP=2,XP=-5;function ZP(n,t){return Object.prototype.hasOwnProperty.call(n,t)}function $P(n){for(var t=Array.prototype.slice.call(arguments,1);t.length;){var e=t.shift();if(e){if(typeof e!="object")throw new TypeError(e+"must be non-object");for(var r in e)ZP(e,r)&&(n[r]=e[r])}}return n}function QE(n,t){return n.length===t?n:n.subarray?n.subarray(0,t):(n.length=t,n)}var Vc={arraySet:function(n,t,e,r,i){if(t.subarray&&n.subarray){n.set(t.subarray(e,e+r),i);return}for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){var t,e,r,i,s,o;for(r=0,t=0,e=n.length;t<e;t++)r+=n[t].length;for(o=new Uint8Array(r),i=0,t=0,e=n.length;t<e;t++)s=n[t],o.set(s,i),i+=s.length;return o},Buf8:function(n){return new Uint8Array(n)},Buf16:function(n){return new Uint16Array(n)},Buf32:function(n){return new Int32Array(n)}},_c={arraySet:function(n,t,e,r,i){for(var s=0;s<r;s++)n[i+s]=t[e+s]},flattenChunks:function(n){return[].concat.apply([],n)},Buf8:function(n){return new Array(n)},Buf16:function(n){return new Array(n)},Buf32:function(n){return new Array(n)}};let io=()=>{const n=typeof Uint8Array<"u"&&typeof Uint16Array<"u"&&typeof Int32Array<"u";return io=()=>n,n},Qr=(n,t,e,r,i)=>(Qr=io()?Vc.arraySet:_c.arraySet,Qr(n,t,e,r,i)),ag=n=>(ag=io()?Vc.flattenChunks:_c.flattenChunks,ag(n)),so=n=>(so=io()?Vc.Buf8:_c.Buf8,so(n)),oo=n=>(oo=io()?Vc.Buf16:_c.Buf16,oo(n)),ao=n=>(ao=io()?Vc.Buf32:_c.Buf32,ao(n)),DE=function(){let n=!0;try{String.fromCharCode.apply(null,[0])}catch{n=!1}return DE=()=>n,n},kE=function(){let n=!0;try{String.fromCharCode.apply(null,new Uint8Array(1))}catch{n=!1}return kE=()=>n,n},cg=function(n){for(var t=so(256),e=0;e<256;e++)t[e]=e>=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;return t[254]=t[254]=1,cg=r=>t[r],t[n]};function FE(n){var t,e,r,i,s,o=n.length,a=0;for(i=0;i<o;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),a+=e<128?1:e<2048?2:e<65536?3:4;for(t=new Uint8Array(a),s=0,i=0;s<a;i++)e=n.charCodeAt(i),(e&64512)===55296&&i+1<o&&(r=n.charCodeAt(i+1),(r&64512)===56320&&(e=65536+(e-55296<<10)+(r-56320),i++)),e<128?t[s++]=e:e<2048?(t[s++]=192|e>>>6,t[s++]=128|e&63):e<65536?(t[s++]=224|e>>>12,t[s++]=128|e>>>6&63,t[s++]=128|e&63):(t[s++]=240|e>>>18,t[s++]=128|e>>>12&63,t[s++]=128|e>>>6&63,t[s++]=128|e&63);return t}function e7(n,t){if(t<65534&&(n.subarray&&kE()||!n.subarray&&DE()))return String.fromCharCode.apply(null,QE(n,t));for(var e="",r=0;r<t;r++)e+=String.fromCharCode(n[r]);return e}function t7(n){for(var t=new Uint8Array(n.length),e=0,r=t.length;e<r;e++)t[e]=n.charCodeAt(e);return t}function n7(n,t){var e,r,i,s,o=t||n.length,a=new Array(o*2);for(r=0,e=0;e<o;){if(i=n[e++],i<128){a[r++]=i;continue}if(s=cg(i),s>4){a[r++]=65533,e+=s-1;continue}for(i&=s===2?31:s===3?15:7;s>1&&e<o;)i=i<<6|n[e++]&63,s--;if(s>1){a[r++]=65533;continue}i<65536?a[r++]=i:(i-=65536,a[r++]=55296|i>>10&1023,a[r++]=56320|i&1023)}return e7(a,r)}function r7(n,t){var e;for(t=t||n.length,t>n.length&&(t=n.length),e=t-1;e>=0&&(n[e]&192)===128;)e--;return e<0||e===0?t:e+cg(n[e])>t?e:t}function i7(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1}function lg(n,t,e,r){for(var i=n&65535|0,s=n>>>16&65535|0,o=0;e!==0;){o=e>2e3?2e3:e,e-=o;do i=i+t[r++]|0,s=s+i|0;while(--o);i%=65521,s%=65521}return i|s<<16|0}function s7(){for(var n,t=[],e=0;e<256;e++){n=e;for(var r=0;r<8;r++)n=n&1?3988292384^n>>>1:n>>>1;t[e]=n}return t}let ME=function(){const n=s7();return ME=()=>n,n};function wn(n,t,e,r){var i=ME(),s=r+e;n^=-1;for(var o=r;o<s;o++)n=n>>>8^i[(n^t[o])&255];return n^-1}var iA=30,o7=12;function a7(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C,m,w,b,y,x,B,E,Q,F,k;e=n.state,r=n.next_in,F=n.input,i=r+(n.avail_in-5),s=n.next_out,k=n.output,o=s-(t-n.avail_out),a=s+(n.avail_out-257),l=e.dmax,c=e.wsize,u=e.whave,f=e.wnext,h=e.window,A=e.hold,d=e.bits,p=e.lencode,C=e.distcode,m=(1<<e.lenbits)-1,w=(1<<e.distbits)-1;e:do{d<15&&(A+=F[r++]<<d,d+=8,A+=F[r++]<<d,d+=8),b=p[A&m];t:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y===0)k[s++]=b&65535;else if(y&16){x=b&65535,y&=15,y&&(d<y&&(A+=F[r++]<<d,d+=8),x+=A&(1<<y)-1,A>>>=y,d-=y),d<15&&(A+=F[r++]<<d,d+=8,A+=F[r++]<<d,d+=8),b=C[A&w];n:for(;;){if(y=b>>>24,A>>>=y,d-=y,y=b>>>16&255,y&16){if(B=b&65535,y&=15,d<y&&(A+=F[r++]<<d,d+=8,d<y&&(A+=F[r++]<<d,d+=8)),B+=A&(1<<y)-1,B>l){n.msg="invalid distance too far back",e.mode=iA;break e}if(A>>>=y,d-=y,y=s-o,B>y){if(y=B-y,y>u&&e.sane){n.msg="invalid distance too far back",e.mode=iA;break e}if(E=0,Q=h,f===0){if(E+=c-y,y<x){x-=y;do k[s++]=h[E++];while(--y);E=s-B,Q=k}}else if(f<y){if(E+=c+f-y,y-=f,y<x){x-=y;do k[s++]=h[E++];while(--y);if(E=0,f<x){y=f,x-=y;do k[s++]=h[E++];while(--y);E=s-B,Q=k}}}else if(E+=f-y,y<x){x-=y;do k[s++]=h[E++];while(--y);E=s-B,Q=k}for(;x>2;)k[s++]=Q[E++],k[s++]=Q[E++],k[s++]=Q[E++],x-=3;x&&(k[s++]=Q[E++],x>1&&(k[s++]=Q[E++]))}else{E=s-B;do k[s++]=k[E++],k[s++]=k[E++],k[s++]=k[E++],x-=3;while(x>2);x&&(k[s++]=k[E++],x>1&&(k[s++]=k[E++]))}}else if((y&64)===0){b=C[(b&65535)+(A&(1<<y)-1)];continue n}else{n.msg="invalid distance code",e.mode=iA;break e}break}}else if((y&64)===0){b=p[(b&65535)+(A&(1<<y)-1)];continue t}else if(y&32){e.mode=o7;break e}else{n.msg="invalid literal/length code",e.mode=iA;break e}break}}while(r<i&&s<a);x=d>>3,r-=x,d-=x<<3,A&=(1<<d)-1,n.next_in=r,n.next_out=s,n.avail_in=r<i?5+(i-r):5-(r-i),n.avail_out=s<a?257+(a-s):257-(s-a),e.hold=A,e.bits=d}var co=15,RE=852,NE=592,TE=0,ug=1,PE=2,c7=[3,4,5,6,7,8,9,10,11,13,15,17,19,23,27,31,35,43,51,59,67,83,99,115,131,163,195,227,258,0,0],l7=[16,16,16,16,16,16,16,16,17,17,17,17,18,18,18,18,19,19,19,19,20,20,20,20,21,21,21,21,16,72,78],u7=[1,2,3,4,5,7,9,13,17,25,33,49,65,97,129,193,257,385,513,769,1025,1537,2049,3073,4097,6145,8193,12289,16385,24577,0,0],f7=[16,16,16,16,17,17,18,18,19,19,20,20,21,21,22,22,23,23,24,24,25,25,26,26,27,27,28,28,29,29,64,64];function Yc(n,t,e,r,i,s,o,a){var l=a.bits,c=0,u=0,f=0,h=0,A=0,d=0,p=0,C=0,m=0,w=0,b,y,x,B,E,Q=null,F=0,k,P=oo(co+1),T=oo(co+1),O=null,z=0,J,V,q;for(c=0;c<=co;c++)P[c]=0;for(u=0;u<r;u++)P[t[e+u]]++;for(A=l,h=co;h>=1&&P[h]===0;h--);if(A>h&&(A=h),h===0)return i[s++]=1<<24|64<<16|0,i[s++]=1<<24|64<<16|0,a.bits=1,0;for(f=1;f<h&&P[f]===0;f++);for(A<f&&(A=f),C=1,c=1;c<=co;c++)if(C<<=1,C-=P[c],C<0)return-1;if(C>0&&(n===TE||h!==1))return-1;for(T[1]=0,c=1;c<co;c++)T[c+1]=T[c]+P[c];for(u=0;u<r;u++)t[e+u]!==0&&(o[T[t[e+u]]++]=u);if(n===TE?(Q=O=o,k=19):n===ug?(Q=c7,F-=257,O=l7,z-=257,k=256):(Q=u7,O=f7,k=-1),w=0,u=0,c=f,E=s,d=A,p=0,x=-1,m=1<<A,B=m-1,n===ug&&m>RE||n===PE&&m>NE)return 1;for(;;){J=c-p,o[u]<k?(V=0,q=o[u]):o[u]>k?(V=O[z+o[u]],q=Q[F+o[u]]):(V=96,q=0),b=1<<c-p,y=1<<d,f=y;do y-=b,i[E+(w>>p)+y]=J<<24|V<<16|q|0;while(y!==0);for(b=1<<c-1;w&b;)b>>=1;if(b!==0?(w&=b-1,w+=b):w=0,u++,--P[c]===0){if(c===h)break;c=t[e+o[u]]}if(c>A&&(w&B)!==x){for(p===0&&(p=A),E+=f,d=c-p,C=1<<d;d+p<h&&(C-=P[d+p],!(C<=0));)d++,C<<=1;if(m+=1<<d,n===ug&&m>RE||n===PE&&m>NE)return 1;x=w&B,i[x]=A<<24|d<<16|E-s|0}}return w!==0&&(i[E+w]=c-p<<24|64<<16|0),a.bits=A,0}var A7=0,LE=1,OE=2,UE=4,Fi=0,h7=1,d7=2,Gt=-2,GE=-3,zE=-4,g7=-5,HE=8,VE=1,_E=2,YE=3,JE=4,qE=5,KE=6,jE=7,WE=8,XE=9,ZE=10,sA=11,zn=12,fg=13,$E=14,Ag=15,eb=16,tb=17,nb=18,rb=19,oA=20,aA=21,ib=22,sb=23,ob=24,ab=25,cb=26,hg=27,lb=28,ub=29,Se=30,fb=31,p7=32,m7=852,C7=592;function Ab(n){return(n>>>24&255)+(n>>>8&65280)+((n&65280)<<8)+((n&255)<<24)}function y7(){this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=oo(320),this.work=oo(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}function w7(n){var t;return!n||!n.state?Gt:(t=n.state,n.total_in=n.total_out=t.total=0,n.msg="",t.wrap&&(n.adler=t.wrap&1),t.mode=VE,t.last=0,t.havedict=0,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=ao(m7),t.distcode=t.distdyn=ao(C7),t.sane=1,t.back=-1,Fi)}function I7(n){var t;return!n||!n.state?Gt:(t=n.state,t.wsize=0,t.whave=0,t.wnext=0,w7(n))}function E7(n,t){var e,r;return!n||!n.state||(r=n.state,t<0?(e=0,t=-t):(e=(t>>4)+1,t<48&&(t&=15)),t&&(t<8||t>15))?Gt:(r.window!==null&&r.wbits!==t&&(r.window=null),r.wrap=e,r.wbits=t,I7(n))}function b7(n,t){var e,r;return n?(r=new y7,n.state=r,r.window=null,e=E7(n,t),e!==Fi&&(n.state=null),e):Gt}var hb=!0,dg,gg;function x7(n){if(hb){var t;for(dg=ao(512),gg=ao(32),t=0;t<144;)n.lens[t++]=8;for(;t<256;)n.lens[t++]=9;for(;t<280;)n.lens[t++]=7;for(;t<288;)n.lens[t++]=8;for(Yc(LE,n.lens,0,288,dg,0,n.work,{bits:9}),t=0;t<32;)n.lens[t++]=5;Yc(OE,n.lens,0,32,gg,0,n.work,{bits:5}),hb=!1}n.lencode=dg,n.lenbits=9,n.distcode=gg,n.distbits=5}function db(n,t,e,r){var i,s=n.state;return s.window===null&&(s.wsize=1<<s.wbits,s.wnext=0,s.whave=0,s.window=so(s.wsize)),r>=s.wsize?(Qr(s.window,t,e-s.wsize,s.wsize,0),s.wnext=0,s.whave=s.wsize):(i=s.wsize-s.wnext,i>r&&(i=r),Qr(s.window,t,e-r,i,s.wnext),r-=i,r?(Qr(s.window,t,e-r,r,0),s.wnext=r,s.whave=s.wsize):(s.wnext+=i,s.wnext===s.wsize&&(s.wnext=0),s.whave<s.wsize&&(s.whave+=i))),0}function B7(n,t){var e,r,i,s,o,a,l,c,u,f,h,A,d,p,C=0,m,w,b,y,x,B,E,Q,F=so(4),k,P,T=[16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15];if(!n||!n.state||!n.output||!n.input&&n.avail_in!==0)return Gt;e=n.state,e.mode===zn&&(e.mode=fg),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,f=a,h=l,Q=Fi;e:for(;;)switch(e.mode){case VE:if(e.wrap===0){e.mode=fg;break}for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.wrap&2&&c===35615){e.check=0,F[0]=c&255,F[1]=c>>>8&255,e.check=wn(e.check,F,2,0),c=0,u=0,e.mode=_E;break}if(e.flags=0,e.head&&(e.head.done=!1),!(e.wrap&1)||(((c&255)<<8)+(c>>8))%31){n.msg="incorrect header check",e.mode=Se;break}if((c&15)!==HE){n.msg="unknown compression method",e.mode=Se;break}if(c>>>=4,u-=4,E=(c&15)+8,e.wbits===0)e.wbits=E;else if(E>e.wbits){n.msg="invalid window size",e.mode=Se;break}e.dmax=1<<E,n.adler=e.check=1,e.mode=c&512?ZE:zn,c=0,u=0;break;case _E:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.flags=c,(e.flags&255)!==HE){n.msg="unknown compression method",e.mode=Se;break}if(e.flags&57344){n.msg="unknown header flags set",e.mode=Se;break}e.head&&(e.head.text=c>>8&1),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,e.check=wn(e.check,F,2,0)),c=0,u=0,e.mode=YE;case YE:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.time=c),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,F[2]=c>>>16&255,F[3]=c>>>24&255,e.check=wn(e.check,F,4,0)),c=0,u=0,e.mode=JE;case JE:for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.head&&(e.head.xflags=c&255,e.head.os=c>>8),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,e.check=wn(e.check,F,2,0)),c=0,u=0,e.mode=qE;case qE:if(e.flags&1024){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length=c,e.head&&(e.head.extra_len=c),e.flags&512&&(F[0]=c&255,F[1]=c>>>8&255,e.check=wn(e.check,F,2,0)),c=0,u=0}else e.head&&(e.head.extra=null);e.mode=KE;case KE:if(e.flags&1024&&(A=e.length,A>a&&(A=a),A&&(e.head&&(E=e.head.extra_len-e.length,e.head.extra||(e.head.extra=new Array(e.head.extra_len)),Qr(e.head.extra,r,s,A,E)),e.flags&512&&(e.check=wn(e.check,r,A,s)),a-=A,s+=A,e.length-=A),e.length))break e;e.length=0,e.mode=jE;case jE:if(e.flags&2048){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.name+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=wn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.name=null);e.length=0,e.mode=WE;case WE:if(e.flags&4096){if(a===0)break e;A=0;do E=r[s+A++],e.head&&E&&e.length<65536&&(e.head.comment+=String.fromCharCode(E));while(E&&A<a);if(e.flags&512&&(e.check=wn(e.check,r,A,s)),a-=A,s+=A,E)break e}else e.head&&(e.head.comment=null);e.mode=XE;case XE:if(e.flags&512){for(;u<16;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.check&65535)){n.msg="header crc mismatch",e.mode=Se;break}c=0,u=0}e.head&&(e.head.hcrc=e.flags>>9&1,e.head.done=!0),n.adler=e.check=0,e.mode=zn;break;case ZE:for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}n.adler=e.check=Ab(c),c=0,u=0,e.mode=sA;case sA:if(e.havedict===0)return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,d7;n.adler=e.check=1,e.mode=zn;case zn:case fg:if(e.last){c>>>=u&7,u-=u&7,e.mode=hg;break}for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}switch(e.last=c&1,c>>>=1,u-=1,c&3){case 0:e.mode=$E;break;case 1:x7(e),e.mode=oA;break;case 2:e.mode=tb;break;case 3:n.msg="invalid block type",e.mode=Se}c>>>=2,u-=2;break;case $E:for(c>>>=u&7,u-=u&7;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((c&65535)!==(c>>>16^65535)){n.msg="invalid stored block lengths",e.mode=Se;break}e.length=c&65535,c=0,u=0,e.mode=Ag;case Ag:e.mode=eb;case eb:if(A=e.length,A){if(A>a&&(A=a),A>l&&(A=l),A===0)break e;Qr(i,r,s,A,o),a-=A,s+=A,l-=A,o+=A,e.length-=A;break}e.mode=zn;break;case tb:for(;u<14;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(e.nlen=(c&31)+257,c>>>=5,u-=5,e.ndist=(c&31)+1,c>>>=5,u-=5,e.ncode=(c&15)+4,c>>>=4,u-=4,e.nlen>286||e.ndist>30){n.msg="too many length or distance symbols",e.mode=Se;break}e.have=0,e.mode=nb;case nb:for(;e.have<e.ncode;){for(;u<3;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.lens[T[e.have++]]=c&7,c>>>=3,u-=3}for(;e.have<19;)e.lens[T[e.have++]]=0;if(e.lencode=e.lendyn,e.lenbits=7,k={bits:e.lenbits},Q=Yc(A7,e.lens,0,19,e.lencode,0,e.work,k),e.lenbits=k.bits,Q){n.msg="invalid code lengths set",e.mode=Se;break}e.have=0,e.mode=rb;case rb:for(;e.have<e.nlen+e.ndist;){for(;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,w=C>>>16&255,b=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(b<16)c>>>=m,u-=m,e.lens[e.have++]=b;else{if(b===16){for(P=m+2;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c>>>=m,u-=m,e.have===0){n.msg="invalid bit length repeat",e.mode=Se;break}E=e.lens[e.have-1],A=3+(c&3),c>>>=2,u-=2}else if(b===17){for(P=m+3;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=3+(c&7),c>>>=3,u-=3}else{for(P=m+7;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=m,u-=m,E=0,A=11+(c&127),c>>>=7,u-=7}if(e.have+A>e.nlen+e.ndist){n.msg="invalid bit length repeat",e.mode=Se;break}for(;A--;)e.lens[e.have++]=E}}if(e.mode===Se)break;if(e.lens[256]===0){n.msg="invalid code -- missing end-of-block",e.mode=Se;break}if(e.lenbits=9,k={bits:e.lenbits},Q=Yc(LE,e.lens,0,e.nlen,e.lencode,0,e.work,k),e.lenbits=k.bits,Q){n.msg="invalid literal/lengths set",e.mode=Se;break}if(e.distbits=6,e.distcode=e.distdyn,k={bits:e.distbits},Q=Yc(OE,e.lens,e.nlen,e.ndist,e.distcode,0,e.work,k),e.distbits=k.bits,Q){n.msg="invalid distances set",e.mode=Se;break}e.mode=oA;case oA:e.mode=aA;case aA:if(a>=6&&l>=258){n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,a7(n,h),o=n.next_out,i=n.output,l=n.avail_out,s=n.next_in,r=n.input,a=n.avail_in,c=e.hold,u=e.bits,e.mode===zn&&(e.back=-1);break}for(e.back=0;C=e.lencode[c&(1<<e.lenbits)-1],m=C>>>24,w=C>>>16&255,b=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(w&&(w&240)===0){for(y=m,x=w,B=b;C=e.lencode[B+((c&(1<<y+x)-1)>>y)],m=C>>>24,w=C>>>16&255,b=C&65535,!(y+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=m,u-=m,e.back+=m,e.length=b,w===0){e.mode=cb;break}if(w&32){e.back=-1,e.mode=zn;break}if(w&64){n.msg="invalid literal/length code",e.mode=Se;break}e.extra=w&15,e.mode=ib;case ib:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.length+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}e.was=e.length,e.mode=sb;case sb:for(;C=e.distcode[c&(1<<e.distbits)-1],m=C>>>24,w=C>>>16&255,b=C&65535,!(m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if((w&240)===0){for(y=m,x=w,B=b;C=e.distcode[B+((c&(1<<y+x)-1)>>y)],m=C>>>24,w=C>>>16&255,b=C&65535,!(y+m<=u);){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}c>>>=y,u-=y,e.back+=y}if(c>>>=m,u-=m,e.back+=m,w&64){n.msg="invalid distance code",e.mode=Se;break}e.offset=b,e.extra=w&15,e.mode=ob;case ob:if(e.extra){for(P=e.extra;u<P;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}e.offset+=c&(1<<e.extra)-1,c>>>=e.extra,u-=e.extra,e.back+=e.extra}if(e.offset>e.dmax){n.msg="invalid distance too far back",e.mode=Se;break}e.mode=ab;case ab:if(l===0)break e;if(A=h-l,e.offset>A){if(A=e.offset-A,A>e.whave&&e.sane){n.msg="invalid distance too far back",e.mode=Se;break}A>e.wnext?(A-=e.wnext,d=e.wsize-A):d=e.wnext-A,A>e.length&&(A=e.length),p=e.window}else p=i,d=o-e.offset,A=e.length;A>l&&(A=l),l-=A,e.length-=A;do i[o++]=p[d++];while(--A);e.length===0&&(e.mode=aA);break;case cb:if(l===0)break e;i[o++]=e.length,l--,e.mode=aA;break;case hg:if(e.wrap){for(;u<32;){if(a===0)break e;a--,c|=r[s++]<<u,u+=8}if(h-=l,n.total_out+=h,e.total+=h,h&&(n.adler=e.check=e.flags?wn(e.check,i,h,o-h):lg(e.check,i,h,o-h)),h=l,(e.flags?c:Ab(c))!==e.check){n.msg="incorrect data check",e.mode=Se;break}c=0,u=0}e.mode=lb;case lb:if(e.wrap&&e.flags){for(;u<32;){if(a===0)break e;a--,c+=r[s++]<<u,u+=8}if(c!==(e.total&4294967295)){n.msg="incorrect length check",e.mode=Se;break}c=0,u=0}e.mode=ub;case ub:Q=h7;break e;case Se:Q=GE;break e;case fb:return zE;case p7:default:return Gt}return n.next_out=o,n.avail_out=l,n.next_in=s,n.avail_in=a,e.hold=c,e.bits=u,(e.wsize||h!==n.avail_out&&e.mode<Se&&(e.mode<hg||t!==UE))&&db(n,n.output,n.next_out,h-n.avail_out),f-=n.avail_in,h-=n.avail_out,n.total_in+=f,n.total_out+=h,e.total+=h,e.wrap&&h&&(n.adler=e.check=e.flags?wn(e.check,i,h,n.next_out-h):lg(e.check,i,h,n.next_out-h)),n.data_type=e.bits+(e.last?64:0)+(e.mode===zn?128:0)+(e.mode===oA||e.mode===Ag?256:0),(f===0&&h===0||t===UE)&&Q===Fi&&(Q=g7),Q}function v7(n){if(!n||!n.state)return Gt;var t=n.state;return t.window&&(t.window=null),n.state=null,Fi}function S7(n,t){var e;return!n||!n.state||(e=n.state,(e.wrap&2)===0)?Gt:(e.head=t,t.done=!1,Fi)}function gb(n,t){var e=t.length,r,i,s;return!n||!n.state||(r=n.state,r.wrap!==0&&r.mode!==sA)?Gt:r.mode===sA&&(i=1,i=lg(i,t,e,0),i!==r.check)?GE:(s=db(n,t,e,e),s?(r.mode=fb,zE):(r.havedict=1,Fi))}const pg={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"};function Q7(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0}var mg=Object.prototype.toString;class cA{constructor(t){if(!(this instanceof cA))return new cA(t);this.options=$P({chunkSize:16384,windowBits:0,to:""},t||{});var e=this.options;e.raw&&e.windowBits>=0&&e.windowBits<16&&(e.windowBits=-e.windowBits,e.windowBits===0&&(e.windowBits=-15)),e.windowBits>=0&&e.windowBits<16&&!(t&&t.windowBits)&&(e.windowBits+=32),e.windowBits>15&&e.windowBits<48&&(e.windowBits&15)===0&&(e.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new Q7,this.strm.avail_out=0;var r=b7(this.strm,e.windowBits);if(r!==ki)throw new Error(pg[r]);if(this.header=new i7,S7(this.strm,this.header),e.dictionary&&(typeof e.dictionary=="string"?e.dictionary=FE(e.dictionary):mg.call(e.dictionary)==="[object ArrayBuffer]"&&(e.dictionary=new Uint8Array(e.dictionary)),e.raw&&(r=gb(this.strm,e.dictionary),r!==ki)))throw new Error(pg[r])}push(t,e){var r=this.strm,i=this.options.chunkSize,s=this.options.dictionary,o,a,l,c,u,f,h=!1;if(this.ended)return!1;a=e===~~e?e:e===!0?nA:vE,typeof t=="string"?r.input=t7(t):mg.call(t)==="[object ArrayBuffer]"?r.input=new Uint8Array(t):r.input=t,r.next_in=0,r.avail_in=r.input.length;do{if(r.avail_out===0&&(r.output=so(i),r.next_out=0,r.avail_out=i),o=B7(r,vE),o===WP&&s&&(typeof s=="string"?f=FE(s):mg.call(s)==="[object ArrayBuffer]"?f=new Uint8Array(s):f=s,o=gb(this.strm,f)),o===XP&&h===!0&&(o=ki,h=!1),o!==rA&&o!==ki)return this.onEnd(o),this.ended=!0,!1;r.next_out&&(r.avail_out===0||o===rA||r.avail_in===0&&(a===nA||a===SE))&&(this.options.to==="string"?(l=r7(r.output,r.next_out),c=r.next_out-l,u=n7(r.output,l),r.next_out=c,r.avail_out=i-c,c&&Qr(r.output,r.output,l,c,0),this.onData(u)):this.onData(QE(r.output,r.next_out))),r.avail_in===0&&r.avail_out===0&&(h=!0)}while((r.avail_in>0||r.avail_out===0)&&o!==rA);return o===rA&&(a=nA),a===nA?(o=v7(this.strm),this.onEnd(o),this.ended=!0,o===ki):(a===SE&&(this.onEnd(ki),r.avail_out=0),!0)}onData(t){this.chunks.push(t)}onEnd(t){t===ki&&(this.options.to==="string"?this.result=this.chunks.join(""):this.result=ag(this.chunks)),this.chunks=[],this.err=t,this.msg=this.strm.msg}}function D7(n,t){var e=new cA(t);if(e.push(n,!0),e.err)throw e.msg||pg[e.err];return e.result}var k7=D7,Mi={};Mi.d=(n,t)=>{for(var e in t)Mi.o(t,e)&&!Mi.o(n,e)&&Object.defineProperty(n,e,{enumerable:!0,get:t[e]})},Mi.o=(n,t)=>Object.prototype.hasOwnProperty.call(n,t),Mi.r=n=>{typeof Symbol<"u"&&Symbol.toStringTag&&Object.defineProperty(n,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(n,"__esModule",{value:!0})};var Cg={};Mi.r(Cg),Mi.d(Cg,{ChunkSliceResult:()=>uo,DecompressResult:()=>fo,__wbg_Error_52673b7de5a0ca89:()=>U7,__wbg___wbindgen_throw_dd24417ed36fc46e:()=>G7,__wbg_set_wasm:()=>pb,decompress_all:()=>Ib,decompress_block:()=>O7,decompress_chunk_slice:()=>Eb});const F7="data:application/wasm;base64,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fGooAgAiAkF4cSIAaiEDAkACQCACQQFxDQAgAkECcUUNASABKAIAIgIgAGohAAJAIAEgAmsiAUEAKALAoEBHDQAgAygCBEEDcUEDRw0BQQAgADYCuKBAIAMgAygCBEF+cTYCBCABIABBAXI2AgQgAyAANgIADwsgASACEBALAkACQAJAAkACQAJAIAMoAgQiAkECcQ0AIANBACgCxKBARg0CIANBACgCwKBARg0DIAMgAkF4cSICEBAgASACIABqIgBBAXI2AgQgASAAaiAANgIAIAFBACgCwKBARw0BQQAgADYCuKBADwsgAyACQX5xNgIEIAEgAEEBcjYCBCABIABqIAA2AgALIABBgAJJDQIgASAAEBFBACEBQQBBACgC2KBAQX9qIgA2AtigQCAADQQCQEEAKAKgnkAiAEUNAEEAIQEDQCABQQFqIQEgACgCCCIADQALC0EAIAFB/x8gAUH/H0sbNgLYoEAPC0EAIAE2AsSgQEEAQQAoArygQCAAaiIANgK8oEAgASAAQQFyNgIEAkAgAUEAKALAoEBHDQBBAEEANgK4oEBBAEEANgLAoEALIABBACgC0KBAIgRNDQNBACgCxKBAIgBFDQNBACECQQAoArygQCIFQSlJDQJBmJ7AACEBA0ACQCABKAIAIgMgAEsNACAAIAMgASgCBGpJDQQLIAEoAgghAQwACwtBACABNgLAoEBBAEEAKAK4oEAgAGoiADYCuKBAIAEgAEEBcjYCBCABIABqIAA2AgAPCwJAAkBBACgCsKBAIgNBASAAQQN2dCICcQ0AQQAgAyACcjYCsKBAIABB+AFxQaiewABqIgAhAwwBCyAAQfgBcSIDQaiewABqIQAgA0GwnsAAaigCACEDCyAAIAE2AgggAyABNgIMIAEgADYCDCABIAM2AggPCwJAQQAoAqCeQCIBRQ0AQQAhAgNAIAJBAWohAiABKAIIIgENAAsLQQAgAkH/HyACQf8fSxs2AtigQCAFIARNDQBBAEF/NgLQoEALC44FAQd/AkACQCAAKAIIIgNBgICAwAFxRQ0AAkACQAJAAkACQCADQYCAgIABcUUNACAALwEOIgQNAUEAIQIMAgsCQCACQRBJDQAgASACEAYhBQwECwJAIAINAEEAIQJBACEFDAQLIAJBA3EhBgJAAkAgAkEETw0AQQAhBUEAIQcMAQsg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IgJBAWoiAzYCACADRQ0BIAAoAgBBf0YNAiAAKAIQIQAgASACNgIAIAAPCxBdCwALEF8AC1ABAX8CQCACIAAoAgAgACgCCCIDa00NACAAIAMgAkEBQQEQFyAAKAIIIQMLAkAgAkUNACAAKAIEIANqIAEgAvwKAAALIAAgAyACajYCCEEAC0wBAX8CQCAAKAIAIgBBDGooAgAiAUUNACAAQRBqKAIAIAFBARBXCwJAIABBf0YNACAAIAAoAgRBf2oiATYCBCABDQAgAEEcQQQQVwsLRQACQAJAIAFBCUkNACABIAAQDyEBDAELIAAQAiEBCwJAIAFFDQAgAUF8ai0AAEEDcUUNACAARQ0AIAFBACAA/AsACyABC1IBAn9BACEBQQBBACgC6KBAIgJBAWo2AuigQAJAIAJBAEgNAEEBIQFBAC0A5KBADQBBACAAOgDkoEBBAEEAKALgoEBBAWo2AuCgQEECIQELIAELRwECfyABKAIEIQIgASgCACEDEGsCQEEIQQQQWiIBDQBBBEEIEGEACyABIAI2AgQgASADNgIAIABB8JfAADYCBCAAIAE2AgALOAACQAJAIAAgAksNACABIAJLDQEgACABTQ0BIAAgASADECsACyAAIAIgAxAsAAsgASACIAMQLQALQQEBfyMAQSBrIgMkACADQQA2AhAgA0EBNgIEIANCBDcCCCADIAE2AhwgAyAANgIYIAMgA0EYajYCACADIAIQQQALOQACQCACQYCAxABGDQAgACACIAEoAhARBQBFDQBBAQ8LAkAgAw0AQQAPCyAAIAMgBCABKAIMEQcACzYBAX8jAEEgayIBJAAgAUEANgIYIAFBATYCDCABQaSZwAA2AgggAUIENwIQIAFBCGogABBBAAsnAAJAIAAgARBPRQ0AAkAgAEUNABBrIAAgARBaIgFFDQELIAEPCwALLAIBfwF+IwBBEGsiASQAIAApAgAhAiABIAA2AgwgASACNwIEIAFBBGoQZgALLQEBfyMAQRBrIgEkACABIAApAgA3AgggAUEIakH0lsAAIAAoAghBAUEAECEACyoBAX8jAEEQayIDJAAgAyACNgIMIAMgATYCCCADIAA2AgQgA0EEahBnAAsqAQF/IwBBEGsiAiQAIAJBATsBDCACIAE2AgggAiAANgIEIAJBBGoQPgALKQEBfwJAIAAoAgAiAUGAgICAeHJBgICAgHhGDQAgACgCBCABQQEQVwsLHgEBfwJAIAAoAgAiAkUNACABIAIgACgCBBBTDwsACyAAAkAgASgCAEUNACAAQfCXwAA2AgQgACABNgIADwsACxsBAX8QayAAQQRqQQQQWiIBIAA2AgAgAUEEagsjAQF/AkBBjIvAABAwIgANAEHAisAAQTpB/IrAABBAAAsgAAsXAAJAIAFBCUkNACABIAAQDw8LIAAQAgsfAAJAIABBgICAgHhyQYCAgIB4Rg0AIAEgAEEBEFcLCxwBAX8CQCAAKAIAIgFFDQAgACgCBCABQQEQVwsLFgACQCAARQ0AIAAgARBhAAsgAhA8AAsVACAAQXxqIgAgACgCAEEEakEEEFcLGgEBfyABIABBACgC3KBAIgJBAyACGxEEAAALHQAgAEEIakEAKQKYlkA3AgAgAEEAKQKQlkA3AgALHQAgAEEIakEAKQKolkA3AgAgAEEAKQKglkA3AgALFQAgAWlBAUYgAEGAgICAeCABa01xCxIAAkAgAUUNACAAIAEgAhBXCwsSACAAIAEgAiADIARBACAFEAMLFQACQCAARQ0AIAAgACgCqFoRAgALCxYAIAAoAgAgASACIAAoAgQoAgwRBwALDQAgACABIAIgAxAHDwsQACABIAAoAgAgACgCBBBTCxMAIABB8JfAADYCBCAAIAE2AgALCwAgACABIAIQLw8LCgAgACABEGoaAAsLACAAIwBqJAAjAAsJACAAIAEQRw8LCQAgACABEDYPCwkAIAAgARBMDwsMAEG4iMAAQRsQXgALCQAgACABEGMACw0AQdOIwABBzwAQXgALDAAgACABKQIANwMACwkAIAEgABBcAAsNACABQdicwABBGBAKCwgAIAAgARAACwgAIAAgARABCwkAIAAoAgAQUgsHACAAECMACwcAIAAQPwALCQAgAEEANgIACwUAQQAPCwUAEGwACwMADwsDAAALC4YdAgBBgIDAAAvwHC9ob21lL2NkaWVzaC8uY2FyZ28vcmVnaXN0cnkvc3JjL2luZGV4LmNyYXRlcy5pby0xOTQ5Y2Y4YzZiNWI1NTdmL3dhc20tYmluZGdlbi0wLjIuMTA2L3NyYy9jb252ZXJ0L3NsaWNlcy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi93YXNtLWJpbmRnZW4tMC4yLjEwNi9zcmMvZXh0ZXJucmVmLnJzAC9ob21lL2NkaWVzaC8ucnVzdHVwL3Rvb2xjaGFpbnMvc3RhYmxlLXg4Nl82NC11bmtub3duLWxpbnV4LWdudS9saWIvcnVzdGxpYi9zcmMvcnVzdC9saWJyYXJ5L2FsbG9jL3NyYy9zbGljZS5ycwAvaG9tZS9jZGllc2gvLnJ1c3R1cC90b29sY2hhaW5zL3N0YWJsZS14ODZfNjQtdW5rbm93bi1saW51eC1nbnUvbGliL3J1c3RsaWIvc3JjL3J1c3QvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3RjL2VkNjFlN2Q3ZTI0MjQ5NGZiNzA1N2YyNjU3MzAwZDllNzdiYjRmY2IvbGlicmFyeS9hbGxvYy9zcmMvcmF3X3ZlYy9tb2QucnMAL3J1c3QvZGVwcy9kbG1hbGxvYy0wLjIuMTAvc3JjL2RsbWFsbG9jLnJzAGxpYnJhcnkvc3RkL3NyYy9hbGxvYy5ycwAvaG9tZS9jZGllc2gvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9pbmRleC5jcmF0ZXMuaW8tMTk0OWNmOGM2YjViNTU3Zi9saWJkZWZsYXRlci0xLjI1LjAvc3JjL2xpYi5ycwBFARAAdQAAACoCAAARAAAA1QAQAG8AAAC9AQAAHQAAAGF0dGVtcHRlZCB0byB0YWtlIG93bmVyc2hpcCBvZiBSdXN0IHZhbHVlIHdoaWxlIGl0IHdhcyBib3Jyb3dlZAClAhAACgAAAF0AAAAWAAAAaW52YWxpZCBiZ3pmIGhlYWRlcgClAhAACgAAACkAAAAJAAAApQIQAAoAAAAqAAAACQAAAKUCEAAKAAAAKwAAAAkAAAClAhAACgAAACwAAAAJAAAApQIQAAoAAAAwAAAAFgAAAGRlY29tcHJlc3Npb24gZmFpbGVkpQIQAAoAAAAvAAAAHgAAAKUCEAAKAAAApQAAACQAAAClAhAACgAAAKYAAAAkAAAApQIQAAoAAACnAAAAFgAAAKUCEAAKAAAAxQAAABQAAAClAhAACgAAAMYAAAAUAAAApQIQAAoAAADbAAAAGAAAAKUCEAAKAAAA3AAAABgAAAClAhAACgAAANMAAAAxAAAAAAAQAGwAAAAjAQAADgAAAG51bGwgcG9pbnRlciBwYXNzZWQgdG8gcnVzdHJlY3Vyc2l2ZSB1c2Ugb2YgYW4gb2JqZWN0IGRldGVjdGVkIHdoaWNoIHdvdWxkIGxlYWQgdG8gdW5zYWZlIGFsaWFzaW5nIGluIHJ1c3QAAG0AEABnAAAAfwAAABEAAABtABAAZwAAAIwAAAARAAAAbGliZGVmbGF0ZV9kZWZsYXRlX2RlY29tcHJlc3MgcmV0dXJuZWQgYW4gdW5rbm93biBlcnJvciB0eXBlOiB0aGlzIGlzIGFuIGludGVybmFsIGJ1ZyB0aGF0ICoqbXVzdCoqIGJlIGZpeGVkUAIQAF8AAAAMAQAAFQAAAGxpYmRlZmxhdGVfYWxsb2NfZGVjb21wcmVzc29yIHJldHVybmVkIE5VTEw6IG91dCBvZiBtZW1vcnkAAFACEABfAAAAnAAAABEAAAAMAAAAAQAAAAIAAAAAAAAAAAAAABAREgAIBwkGCgULBAwDDQIOAQ8AAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAIAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgAAAAsAAAAMAAAADQAAAA4AAAAPAAAAEAAAABEAAAASAAAAAAAAAAEAAAACAAAAAwAAAAQAAQAFAAEABwACAAkAAgANAAMAEQADABkABAAhAAQAMQAFAEEABQBhAAYAgQAGAMEABwABAQcAgQEIAAECCAABAwkAAQQJAAEGCgABCAoAAQwLAAEQCwABGAwAASAMAAEwDQABQA0AAWANAAFgDQABYAAAAIAAAAGAAAACgAAAA4AAAASAAAAFgAAABoAAAAeAAAAIgAAACYAAAAqAAAALgAAADIAAAA2AAAAOgAAAD4AAABCAAAARgAAAEoAAABOAAAAUgAAAFYAAABaAAAAXgAAAGIAAABmAAAAagAAAG4AAAByAAAAdgAAAHoAAAB+AAAAggAAAIYAAACKAAAAjgAAAJIAAACWAAAAmgAAAJ4AAACiAAAApgAAAKoAAACuAAAAsgAAALYAAAC6AAAAvgAAAMIAAADGAAAAygAAAM4AAADSAAAA1gAAANoAAADeAAAA4gAAAOYAAADqAAAA7gAAAPIAAAD2AAAA+gAAAP4AAAECAAABBgAAAQoAAAEOAAABEgAAARYAAAEaAAABHgAAASIAAAEmAAABKgAAAS4AAAEyAAABNgAAAToAAAE+AAABQgAAAUYAAAFKAAABTgAAAVIAAAFWAAABWgAAAV4AAAFiAAABZgAAAWoAAAFuAAABcgAAAXYAAAF6AAABfgAAAYIAAAGGAAABigAAAY4AAAGSAAABlgAAAZoAAAGeAAABogAAAaYAAAGqAAABrgAAAbIAAAG2AAABugAAAb4AAAHCAAABxgAAAcoAAAHOAAAB0gAAAdYAAAHaAAAB3gAAAeIAAAHmAAAB6gAAAe4AAAHyAAAB9gAAAfoAAAH+AAACAgAAAgYAAAIKAAACDgAAAhIAAAIWAAACGgAAAh4AAAIiAAACJgAAAioAAAIuAAACMgAAAjYAAAI6AAACPgAAAkIAAAJGAAACSgAAAk4AAAJSAAACVgAAAloAAAJeAAACYgAAAmYAAAJqAAACbgAAAnIAAAJ2AAACegAAAn4AAAKCAAAChgAAAooAAAKOAAACkgAAApYAAAKaAAACngAAAqIAAAKmAAACqgAAAq4AAAKyAAACtgAAAroAAAK+AAACwgAAAsYAAALKAAACzgAAAtIAAALWAAAC2gAAAt4AAALiAAAC5gAAAuoAAALuAAAC8gAAAvYAAAL6AAAC/gAAAwIAAAMGAAADCgAAAw4AAAMSAAADFgAAAxoAAAMeAAADIgAAAyYAAAMqAAADLgAAAzIAAAM2AAADOgAAAz4AAANCAAADRgAAA0oAAANOAAADUgAAA1YAAANaAAADXgAAA2IAAANmAAADagAAA24AAANyAAADdgAAA3oAAAN+AAADggAAA4YAAAOKAAADjgAAA5IAAAOWAAADmgAAA54AAAOiAAADpgAAA6oAAAOuAAADsgAAA7YAAAO6AAADvgAAA8IAAAPGAAADygAAA84AAAPSAAAD1gAAA9oAAAPeAAAD4gAAA+YAAAPqAAAD7gAAA/IAAAP2AAAD+gAAA/4AAoAAAAAADAAAABAAAAAUAAAAGAAAABwAAAAgAAAAJAAAACgABAAsAAQANAAEADwABABEAAgATAAIAFwACABsAAgAfAAMAIwADACsAAwAzAAMAOwAEAEMABABTAAQAYwAEAHMABQCDAAUAowAFAMMABQDjAAAAAgEAAAIBAAACAW1dy9YsUOtjeEGmV3Ebi7nyfVy2Bv6hO/Xnf5Lkw1AabWVtb3J5IGFsbG9jYXRpb24gb2YgIGJ5dGVzIGZhaWxlZAAAMAsQABUAAABFCxAADQAAADcCEAAYAAAAZAEAAAkAAAAAAAAACAAAAAQAAAAFAAAABgAAAAcAAAAIAAAACQAAAAwAAAAEAAAACgAAAAsAAAAMAAAAAAAAAAgAAAAEAAAADQAAAA4AAAAPAAAAEAAAABEAAAAQAAAABAAAABIAAAATAAAAFAAAAAgAAAC7ARAAUAAAACoCAAARAAAAAAAAAAgAAAAEAAAAFQAAAGFzc2VydGlvbiBmYWlsZWQ6IHBzaXplID49IHNpemUgKyBtaW5fb3ZlcmhlYWQAAAwCEAAqAAAAsQQAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBwc2l6ZSA8PSBzaXplICsgbWF4X292ZXJoZWFkAAAMAhAAKgAAALcEAAANAAAACQAAAAwAAAAEAAAAFgAAAGNhcGFjaXR5IG92ZXJmbG93AAAAkAwQABEAAAAwMDAxMDIwMzA0MDUwNjA3MDgwOTEwMTExMjEzMTQxNTE2MTcxODE5MjAyMTIyMjMyNDI1MjYyNzI4MjkzMDMxMzIzMzM0MzUzNjM3MzgzOTQwNDE0MjQzNDQ0NTQ2NDc0ODQ5NTA1MTUyNTM1NDU1NTY1NzU4NTk2MDYxNjI2MzY0NjU2NjY3Njg2OTcwNzE3MjczNzQ3NTc2Nzc3ODc5ODA4MTgyODM4NDg1ODY4Nzg4ODk5MDkxOTI5Mzk0OTU5Njk3OTg5OQEAAAAAAAAAcmFuZ2Ugc3RhcnQgaW5kZXggIG91dCBvZiByYW5nZSBmb3Igc2xpY2Ugb2YgbGVuZ3RoIHwNEAASAAAAjg0QACIAAAByYW5nZSBlbmQgaW5kZXggwA0QABAAAACODRAAIgAAAHNsaWNlIGluZGV4IHN0YXJ0cyBhdCAgYnV0IGVuZHMgYXQgAOANEAAWAAAA9g0QAA0AAABpbmRleCBvdXQgb2YgYm91bmRzOiB0aGUgbGVuIGlzICBidXQgdGhlIGluZGV4IGlzIAAAFA4QACAAAAA0DhAAEgAAAFJlZkNlbGwgYWxyZWFkeSBib3Jyb3dlZABB8JzAAAsEBAAAAAApBG5hbWUBIgFZH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIAPAlwcm9kdWNlcnMBDHByb2Nlc3NlZC1ieQIGd2FscnVzBjAuMjQuNAx3YXNtLWJpbmRnZW4HMC4yLjEwNg==";let re;function pb(n){re=n}function M7(n){Jc===Hn.length&&Hn.push(Hn.length+1);const t=Jc;return Jc=Hn[t],Hn[t]=n,t}function R7(n){n<132||(Hn[n]=Jc,Jc=n)}function mb(n,t){return n=n>>>0,N7().subarray(n/4,n/4+t)}function yg(n,t){return n=n>>>0,wg().subarray(n/1,n/1+t)}let lo=null;function qe(){return(lo===null||lo.buffer.detached===!0||lo.buffer.detached===void 0&&lo.buffer!==re.memory.buffer)&&(lo=new DataView(re.memory.buffer)),lo}function Cb(n,t){return n=n>>>0,L7(n,t)}let lA=null;function N7(){return(lA===null||lA.byteLength===0)&&(lA=new Uint32Array(re.memory.buffer)),lA}let uA=null;function wg(){return(uA===null||uA.byteLength===0)&&(uA=new Uint8Array(re.memory.buffer)),uA}function T7(n){return Hn[n]}let Hn=new Array(128).fill(void 0);Hn.push(void 0,null,!0,!1);let Jc=Hn.length;function Ig(n,t){const e=t(n.length*1,1)>>>0;return wg().set(n,e/1),AA=n.length,e}function Eg(n){const t=T7(n);return R7(n),t}let fA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});fA.decode();const P7=2146435072;let bg=0;function L7(n,t){return bg+=t,bg>=P7&&(fA=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0}),fA.decode(),bg=t),fA.decode(wg().subarray(n,n+t))}let AA=0;const yb=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>re.__wbg_chunksliceresult_free(n>>>0,1)),wb=typeof FinalizationRegistry>"u"?{register:()=>{},unregister:()=>{}}:new FinalizationRegistry(n=>re.__wbg_decompressresult_free(n>>>0,1));class uo{static __wrap(t){t=t>>>0;const e=Object.create(uo.prototype);return e.__wbg_ptr=t,yb.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,yb.unregister(this),t}free(){const t=this.__destroy_into_raw();re.__wbg_chunksliceresult_free(t,0)}get cpositions(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.chunksliceresult_cpositions(i,this.__wbg_ptr);var t=qe().getInt32(i+0,!0),e=qe().getInt32(i+4,!0),r=mb(t,e).slice();return re.__wbindgen_export(t,e*4,4),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}get dpositions(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.chunksliceresult_dpositions(i,this.__wbg_ptr);var t=qe().getInt32(i+0,!0),e=qe().getInt32(i+4,!0),r=mb(t,e).slice();return re.__wbindgen_export(t,e*4,4),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}get buffer(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.chunksliceresult_buffer(i,this.__wbg_ptr);var t=qe().getInt32(i+0,!0),e=qe().getInt32(i+4,!0),r=yg(t,e).slice();return re.__wbindgen_export(t,e*1,1),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(uo.prototype[Symbol.dispose]=uo.prototype.free);class fo{static __wrap(t){t=t>>>0;const e=Object.create(fo.prototype);return e.__wbg_ptr=t,wb.register(e,e.__wbg_ptr,e),e}__destroy_into_raw(){const t=this.__wbg_ptr;return this.__wbg_ptr=0,wb.unregister(this),t}free(){const t=this.__destroy_into_raw();re.__wbg_decompressresult_free(t,0)}get bytes_read(){return re.decompressresult_bytes_read(this.__wbg_ptr)>>>0}get data(){try{const i=re.__wbindgen_add_to_stack_pointer(-16);re.decompressresult_data(i,this.__wbg_ptr);var t=qe().getInt32(i+0,!0),e=qe().getInt32(i+4,!0),r=yg(t,e).slice();return re.__wbindgen_export(t,e*1,1),r}finally{re.__wbindgen_add_to_stack_pointer(16)}}}Symbol.dispose&&(fo.prototype[Symbol.dispose]=fo.prototype.free);function Ib(n){try{const o=re.__wbindgen_add_to_stack_pointer(-16),a=Ig(n,re.__wbindgen_export2),l=AA;re.decompress_all(o,a,l);var t=qe().getInt32(o+0,!0),e=qe().getInt32(o+4,!0),r=qe().getInt32(o+8,!0),i=qe().getInt32(o+12,!0);if(i)throw Eg(r);var s=yg(t,e).slice();return re.__wbindgen_export(t,e*1,1),s}finally{re.__wbindgen_add_to_stack_pointer(16)}}function O7(n){try{const i=re.__wbindgen_add_to_stack_pointer(-16),s=Ig(n,re.__wbindgen_export2),o=AA;re.decompress_block(i,s,o);var t=qe().getInt32(i+0,!0),e=qe().getInt32(i+4,!0),r=qe().getInt32(i+8,!0);if(r)throw Eg(e);return fo.__wrap(t)}finally{re.__wbindgen_add_to_stack_pointer(16)}}function Eb(n,t,e,r,i){try{const l=re.__wbindgen_add_to_stack_pointer(-16),c=Ig(n,re.__wbindgen_export2),u=AA;re.decompress_chunk_slice(l,c,u,t,e,r,i);var s=qe().getInt32(l+0,!0),o=qe().getInt32(l+4,!0),a=qe().getInt32(l+8,!0);if(a)throw Eg(o);return uo.__wrap(s)}finally{re.__wbindgen_add_to_stack_pointer(16)}}function U7(n,t){const e=Error(Cb(n,t));return M7(e)}function G7(n,t){throw new Error(Cb(n,t))}let qc=null,xg=null;async function bb(){return qc||(xg||(xg=(async()=>{const t=await(await fetch(F7)).arrayBuffer(),{instance:e}=await WebAssembly.instantiate(t,{"./bgzf_wasm_bg.js":Cg});return qc=e.exports,pb(qc),qc})()),xg)}async function z7(n){return await bb(),Ib(n)}async function H7(n,t,e,r,i){await bb();const s=Eb(n,t,e,r,i),o=s.buffer,a=[...s.cpositions],l=[...s.dpositions];return s.free(),{buffer:o,cpositions:a,dpositions:l}}function V7(n){return n.length>=2&&n[0]===31&&n[1]===139}async function _7(n){if(typeof DecompressionStream<"u"){const t=new DecompressionStream("gzip"),e=t.writable.getWriter(),r=e.write(n).then(()=>e.close()),i=[],s=t.readable.getReader();for(;;){const{done:c,value:u}=await s.read();if(c)break;i.push(u)}await r;const o=i.reduce((c,u)=>c+u.length,0),a=new Uint8Array(o);let l=0;for(const c of i)a.set(c,l),l+=c.length;return a}else return k7(n,void 0)}async function Ao(n){try{return await z7(n)}catch(t){if(/invalid bgzf header/.exec(`${t}`)){if(V7(n))return _7(n);throw new Error("problem decompressing block: not a valid bgzf or gzip block")}throw/invalid gzip header/.exec(`${t}`)?new Error("problem decompressing block: incorrect gzip header check"):t}}async function xb(n,t,e){try{const{minv:r,maxv:i}=t,s=await H7(n,r.blockPosition,r.dataPosition,i.blockPosition,i.dataPosition);return{buffer:s.buffer,cpositions:s.cpositions,dpositions:s.dpositions}}catch(r){throw/invalid gzip header/.exec(`${r}`)?new Error("problem decompressing block: incorrect gzip header check"):r}}let Bg=[0,1996959894,3993919788,2567524794,124634137,1886057615,3915621685,2657392035,249268274,2044508324,3772115230,2547177864,162941995,2125561021,3887607047,2428444049,498536548,1789927666,4089016648,2227061214,450548861,1843258603,4107580753,2211677639,325883990,1684777152,4251122042,2321926636,335633487,1661365465,4195302755,2366115317,997073096,1281953886,3579855332,2724688242,1006888145,1258607687,3524101629,2768942443,901097722,1119000684,3686517206,2898065728,853044451,1172266101,3705015759,2882616665,651767980,1373503546,3369554304,3218104598,565507253,1454621731,3485111705,3099436303,671266974,1594198024,3322730930,2970347812,795835527,1483230225,3244367275,3060149565,1994146192,31158534,2563907772,4023717930,1907459465,112637215,2680153253,3904427059,2013776290,251722036,2517215374,3775830040,2137656763,141376813,2439277719,3865271297,1802195444,476864866,2238001368,4066508878,1812370925,453092731,2181625025,4111451223,1706088902,314042704,2344532202,4240017532,1658658271,366619977,2362670323,4224994405,1303535960,984961486,2747007092,3569037538,1256170817,1037604311,2765210733,3554079995,1131014506,879679996,2909243462,3663771856,1141124467,855842277,2852801631,3708648649,1342533948,654459306,3188396048,3373015174,1466479909,544179635,3110523913,3462522015,1591671054,702138776,2966460450,3352799412,1504918807,783551873,3082640443,3233442989,3988292384,2596254646,62317068,1957810842,3939845945,2647816111,81470997,1943803523,3814918930,2489596804,225274430,2053790376,3826175755,2466906013,167816743,2097651377,4027552580,2265490386,503444072,1762050814,4150417245,2154129355,426522225,1852507879,4275313526,2312317920,282753626,1742555852,4189708143,2394877945,397917763,1622183637,3604390888,2714866558,953729732,1340076626,3518719985,2797360999,1068828381,1219638859,3624741850,2936675148,906185462,1090812512,3747672003,2825379669,829329135,1181335161,3412177804,3160834842,628085408,1382605366,3423369109,3138078467,570562233,1426400815,3317316542,2998733608,733239954,1555261956,3268935591,3050360625,752459403,1541320221,2607071920,3965973030,1969922972,40735498,2617837225,3943577151,1913087877,83908371,2512341634,3803740692,2075208622,213261112,2463272603,3855990285,2094854071,198958881,2262029012,4057260610,1759359992,534414190,2176718541,4139329115,1873836001,414664567,2282248934,4279200368,1711684554,285281116,2405801727,4167216745,1634467795,376229701,2685067896,3608007406,1308918612,956543938,2808555105,3495958263,1231636301,1047427035,2932959818,3654703836,1088359270,936918e3,2847714899,3736837829,1202900863,817233897,3183342108,3401237130,1404277552,615818150,3134207493,3453421203,1423857449,601450431,3009837614,3294710456,1567103746,711928724,3020668471,3272380065,1510334235,755167117];typeof Int32Array<"u"&&(Bg=new Int32Array(Bg));const Y7=(n,t)=>{let e=-1;for(let r=0;r<n.length;r++)e=Bg[(e^n[r])&255]^e>>>8;return e^-1},J7=21582659,q7=38359875;function K7(n,t){return n*2**t}function Bb(n,t){return Math.floor(n/2**t)}let hA=class extends xE{constructor(){super(...arguments),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e){var i,s;return((s=(i=(await this.parse(e)).indices(t))==null?void 0:i.stats)==null?void 0:s.lineCount)||0}async indexCov(){return[]}parseAuxData(t,e){const r=new DataView(t.buffer),i=r.getUint32(e,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o={0:"generic",1:"SAM",2:"VCF"}[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(e+4,!0),start:r.getInt32(e+8,!0),end:r.getInt32(e+12,!0)},l=r.getInt32(e+16,!0),c=l?String.fromCharCode(l):"",u=r.getInt32(e+20,!0),f=r.getInt32(e+24,!0);return{columnNumbers:a,coordinateType:s,metaValue:l,metaChar:c,skipLines:u,format:o,formatFlags:i,...zP(t.subarray(e+28,e+28+f),this.renameRefSeq)}}async _parse(t){const e=await this.filehandle.readFile(t),r=await Ao(e),i=new DataView(r.buffer);let s;const o=i.getUint32(0,!0);if(o===J7)s=1;else if(o===q7)s=2;else throw new Error(`Not a CSI file ${o}`);this.minShift=i.getInt32(4,!0),this.depth=i.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const a=this.maxBinNumber,l=i.getInt32(12,!0),c=l>=30?this.parseAuxData(r,16):void 0,u=i.getInt32(16+l,!0);let f=16+l+4,h;const A=[];for(let C=0;C<u;C++){A.push(f);const m=i.getInt32(f,!0);f+=4;for(let w=0;w<m;w++){const b=i.getUint32(f,!0);if(f+=4,b>this.maxBinNumber)f+=44;else{f+=8;const y=i.getInt32(f,!0);f+=4;for(let x=0;x<y;x+=1){const B=Sr(r,f);f+=8,f+=8,h=Hc(h,B)}}}}const d=new zc({maxSize:5});function p(C){let m=A[C];if(m===void 0)return;const w=i.getInt32(m,!0);m+=4;const b={};let y;for(let x=0;x<w;x++){const B=i.getUint32(m,!0);if(m+=4,B>a)y=bE(r,m+28),m+=44;else{h=Hc(h,Sr(r,m)),m+=8;const E=i.getInt32(m,!0);m+=4;const Q=new Array(E);for(let F=0;F<E;F+=1){const k=Sr(r,m);m+=8;const P=Sr(r,m);m+=8,Q[F]=new IE(k,P,B)}b[B]=Q}}return{binIndex:b,stats:y}}return{csiVersion:s,firstDataLine:h,indices:C=>{if(!d.has(C)){const m=p(C);return m&&d.set(C,m),m}return d.get(C)},refCount:u,csi:!0,maxBlockSize:65536,...c}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const o=(await this.parse(i)).indices(t);if(!o)return[];const a=this.reg2bins(e,r);if(a.length===0)return[];const l=[],{binIndex:c}=o;for(const[u,f]of a)for(let h=u;h<=f;h++){const A=c[h];if(A)for(let d=0,p=A.length;d<p;d++)l.push(A[d])}return og(l,new BE(0,0))}reg2bins(t,e){t-=1,t<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=K7(1,r*3),r+=1){const a=i+Bb(t,s),l=i+Bb(e,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}async parse(t={}){return this.setupP||(this.setupP=this._parse(t).catch(e=>{throw this.setupP=void 0,e})),this.setupP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices(t))!=null&&i.binIndex)}};class j7{read(){throw new Error("never called")}stat(){throw new Error("never called")}readFile(){throw new Error("never called")}close(){throw new Error("never called")}}const W7=3,X7=4,zt={BAM_FPAIRED:1,BAM_FPROPER_PAIR:2,BAM_FUNMAP:4,BAM_FMUNMAP:8,BAM_FREVERSE:16,BAM_FMREVERSE:32,BAM_FREAD1:64,BAM_FREAD2:128,BAM_FSECONDARY:256,BAM_FQCFAIL:512,BAM_FDUP:1024,BAM_FSUPPLEMENTARY:2048},Kc="=ACMGRSVTWYHKDBN".split(""),Z7=[77,73,68,78,83,72,80,61,88,63,63,63,63,63,63,63],vb=461;class Sb{constructor(t){this.bytes=t.bytes,this.fileOffset=t.fileOffset,this._dataView=new DataView(this.bytes.byteArray.buffer)}get byteArray(){return this.bytes.byteArray}get flags(){return this._cachedFlags===void 0&&(this._cachedFlags=(this._dataView.getInt32(this.bytes.start+16,!0)&4294901760)>>16),this._cachedFlags}get ref_id(){return this._cachedRefId===void 0&&(this._cachedRefId=this._dataView.getInt32(this.bytes.start+4,!0)),this._cachedRefId}get start(){return this._cachedStart===void 0&&(this._cachedStart=this._dataView.getInt32(this.bytes.start+8,!0)),this._cachedStart}get end(){return this._cachedEnd===void 0&&(this._cachedEnd=this.start+this.length_on_ref),this._cachedEnd}get mq(){const t=(this.bin_mq_nl&65280)>>8;return t===255?void 0:t}get score(){return this.mq}get qual(){if(this.isSegmentUnmapped())return null;{const t=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes;return this.byteArray.subarray(t,t+this.seq_length)}}get strand(){return this.isReverseComplemented()?-1:1}get b0(){return this.bytes.start+36}get tagsStart(){return this._cachedTagsStart===void 0&&(this._cachedTagsStart=this.b0+this.read_name_length+this.num_cigar_bytes+this.num_seq_bytes+this.seq_length),this._cachedTagsStart}get name(){const t=this.read_name_length-1,e=this.b0,r=this.byteArray,i=new Array(t);for(let s=0;s<t;s++)i[s]=r[e+s];return String.fromCharCode(...i)}get NUMERIC_MD(){if(this._cachedNUMERIC_MD===void 0){const t=this.getTagRaw("MD");this._cachedNUMERIC_MD=t instanceof Uint8Array?t:null}return this._cachedNUMERIC_MD===null?void 0:this._cachedNUMERIC_MD}get tags(){return this._cachedTags===void 0&&(this._cachedTags=this._computeTags()),this._cachedTags}getTag(t){return this._cachedTags!==void 0?this._cachedTags[t]:this._findTag(t,!1)}getTagRaw(t){return this._findTag(t,!0)}_findTag(t,e){const r=t.charCodeAt(0),i=t.charCodeAt(1);let s=this.tagsStart;const o=this.bytes.end,a=this.byteArray;for(;s<o;){const l=a[s],c=a[s+1],u=a[s+2];s+=3;const f=l===r&&c===i;switch(u){case 65:if(f)return String.fromCharCode(a[s]);s+=1;break;case 105:if(f)return this._dataView.getInt32(s,!0);s+=4;break;case 73:if(f)return this._dataView.getUint32(s,!0);s+=4;break;case 99:if(f)return this._dataView.getInt8(s);s+=1;break;case 67:if(f)return this._dataView.getUint8(s);s+=1;break;case 115:if(f)return this._dataView.getInt16(s,!0);s+=2;break;case 83:if(f)return this._dataView.getUint16(s,!0);s+=2;break;case 102:if(f)return this._dataView.getFloat32(s,!0);s+=4;break;case 90:case 72:{if(f){const h=s;for(;s<o&&a[s]!==0;)s++;if(e)return a.subarray(h,s);const A=[];for(let d=h;d<s;d++)A.push(String.fromCharCode(a[d]));return A.join("")}for(;s<=o&&a[s++]!==0;);break}case 66:{const h=a[s++],A=this._dataView.getInt32(s,!0);s+=4;const d=a.byteOffset+s;if(f)if(h===105){if(d%4===0)return new Int32Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getInt32(s+C*4,!0);return p}else if(h===73){if(d%4===0)return new Uint32Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getUint32(s+C*4,!0);return p}else if(h===115){if(d%2===0)return new Int16Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getInt16(s+C*2,!0);return p}else if(h===83){if(d%2===0)return new Uint16Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getUint16(s+C*2,!0);return p}else{if(h===99)return new Int8Array(a.buffer,d,A);if(h===67)return new Uint8Array(a.buffer,d,A);if(h===102){if(d%4===0)return new Float32Array(a.buffer,d,A);const p=new Array(A);for(let C=0;C<A;C++)p[C]=this._dataView.getFloat32(s+C*4,!0);return p}}h===105||h===73||h===102?s+=A<<2:h===115||h===83?s+=A<<1:(h===99||h===67)&&(s+=A);break}}}}_computeTags(){let t=this.tagsStart;const e=this.bytes.end,r=this.byteArray,i={};for(;t<e;){const s=String.fromCharCode(r[t],r[t+1]),o=r[t+2];switch(t+=3,o){case 65:i[s]=String.fromCharCode(r[t]),t+=1;break;case 105:i[s]=this._dataView.getInt32(t,!0),t+=4;break;case 73:i[s]=this._dataView.getUint32(t,!0),t+=4;break;case 99:i[s]=this._dataView.getInt8(t),t+=1;break;case 67:i[s]=this._dataView.getUint8(t),t+=1;break;case 115:i[s]=this._dataView.getInt16(t,!0),t+=2;break;case 83:i[s]=this._dataView.getUint16(t,!0),t+=2;break;case 102:i[s]=this._dataView.getFloat32(t,!0),t+=4;break;case 90:case 72:{const a=[];for(;t<=e;){const l=r[t++];if(l!==0)a.push(String.fromCharCode(l));else break}i[s]=a.join("");break}case 66:{const a=r[t++],l=this._dataView.getInt32(t,!0);t+=4;const c=r.byteOffset+t;if(a===105){if(c%4===0)i[s]=new Int32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt32(t+f*4,!0);i[s]=u}t+=l<<2}else if(a===73){if(c%4===0)i[s]=new Uint32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint32(t+f*4,!0);i[s]=u}t+=l<<2}else if(a===115){if(c%2===0)i[s]=new Int16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getInt16(t+f*2,!0);i[s]=u}t+=l<<1}else if(a===83){if(c%2===0)i[s]=new Uint16Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getUint16(t+f*2,!0);i[s]=u}t+=l<<1}else if(a===99)i[s]=new Int8Array(r.buffer,c,l),t+=l;else if(a===67)i[s]=new Uint8Array(r.buffer,c,l),t+=l;else if(a===102){if(c%4===0)i[s]=new Float32Array(r.buffer,c,l);else{const u=new Array(l);for(let f=0;f<l;f++)u[f]=this._dataView.getFloat32(t+f*4,!0);i[s]=u}t+=l<<2}break}default:console.error("Unknown BAM tag type",o);break}}return i}isPaired(){return!!(this.flags&zt.BAM_FPAIRED)}isProperlyPaired(){return!!(this.flags&zt.BAM_FPROPER_PAIR)}isSegmentUnmapped(){return!!(this.flags&zt.BAM_FUNMAP)}isMateUnmapped(){return!!(this.flags&zt.BAM_FMUNMAP)}isReverseComplemented(){return!!(this.flags&zt.BAM_FREVERSE)}isMateReverseComplemented(){return!!(this.flags&zt.BAM_FMREVERSE)}isRead1(){return!!(this.flags&zt.BAM_FREAD1)}isRead2(){return!!(this.flags&zt.BAM_FREAD2)}isSecondary(){return!!(this.flags&zt.BAM_FSECONDARY)}isFailedQc(){return!!(this.flags&zt.BAM_FQCFAIL)}isDuplicate(){return!!(this.flags&zt.BAM_FDUP)}isSupplementary(){return!!(this.flags&zt.BAM_FSUPPLEMENTARY)}get cigarAndLength(){return this._cachedCigarAndLength===void 0&&(this._cachedCigarAndLength=this._computeCigarAndLength()),this._cachedCigarAndLength}_computeCigarAndLength(){if(this.isSegmentUnmapped())return{length_on_ref:0,NUMERIC_CIGAR:new Uint32Array(0)};const t=this.num_cigar_ops;let e=this.b0+this.read_name_length;const r=this._dataView.getInt32(e,!0),i=r>>4;if((r&15)===X7&&i===this.seq_length){e+=4;const u=this._dataView.getInt32(e,!0),f=u>>4;return(u&15)!==W7&&console.warn("CG tag with no N tag"),{NUMERIC_CIGAR:this.tags.CG,length_on_ref:f}}const o=this.byteArray.byteOffset+e;if(o%4===0&&t>50){const u=new Uint32Array(this.byteArray.buffer,o,t);let f=0;for(let h=0;h<t;++h){const A=u[h];f+=(A>>4)*(vb>>(A&15)&1)}return{NUMERIC_CIGAR:u,length_on_ref:f}}const l=new Array(t);let c=0;for(let u=0;u<t;++u){const f=this._dataView.getInt32(e+u*4,!0)|0;l[u]=f,c+=(f>>4)*(vb>>(f&15)&1)}return{NUMERIC_CIGAR:l,length_on_ref:c}}get length_on_ref(){return this.cigarAndLength.length_on_ref}get NUMERIC_CIGAR(){return this.cigarAndLength.NUMERIC_CIGAR}get CIGAR(){const t=this.NUMERIC_CIGAR;let e="";for(let r=0,i=t.length;r<i;r++){const s=t[r],o=s>>4,a=Z7[s&15];e+=o+String.fromCharCode(a)}return e}get num_cigar_ops(){return this.flag_nc&65535}get num_cigar_bytes(){return this.num_cigar_ops<<2}get read_name_length(){return this.bin_mq_nl&255}get num_seq_bytes(){return this.seq_length+1>>1}get NUMERIC_SEQ(){const t=this.b0+this.read_name_length+this.num_cigar_bytes;return this.byteArray.subarray(t,t+this.num_seq_bytes)}get seq(){const t=this.NUMERIC_SEQ,e=this.seq_length,r=new Array(e);let i=0;const s=e>>1;for(let o=0;o<s;++o){const a=t[o];r[i++]=Kc[(a&240)>>4],r[i++]=Kc[a&15]}if(i<e){const o=t[s];r[i]=Kc[(o&240)>>4]}return r.join("")}get pair_orientation(){if(!this.isSegmentUnmapped()&&!this.isMateUnmapped()&&this.ref_id===this.next_refid){const t=this.isReverseComplemented()?"R":"F",e=this.isMateReverseComplemented()?"R":"F";let r=" ",i=" ";return this.isRead1()?(r="1",i="2"):this.isRead2()&&(r="2",i="1"),this.template_length>0?`${t}${r}${e}${i}`:`${e}${i}${t}${r}`}}get bin_mq_nl(){return this._dataView.getInt32(this.bytes.start+12,!0)}get flag_nc(){return this._dataView.getInt32(this.bytes.start+16,!0)}get seq_length(){return this._dataView.getInt32(this.bytes.start+20,!0)}get next_refid(){return this._dataView.getInt32(this.bytes.start+24,!0)}get next_pos(){return this._dataView.getInt32(this.bytes.start+28,!0)}get template_length(){return this._dataView.getInt32(this.bytes.start+32,!0)}seqAt(t){if(t<this.seq_length){const e=t>>1,r=this.byteArray[this.b0+this.read_name_length+this.num_cigar_bytes+e];return t%2===0?Kc[(r&240)>>4]:Kc[r&15]}else return}toJSON(){const t={};for(const e of Object.keys(this))e.startsWith("_")||e==="bytes"||(t[e]=this[e]);return t}}function Qb(n){const t=n.split(/\r?\n/),e=[];for(const r of t){const[i,...s]=r.split(/\t/);i&&e.push({tag:i.slice(1),data:s.map(o=>{const a=o.indexOf(":"),l=o.slice(0,a),c=o.slice(a+1);return{tag:l,value:c}})})}return e}const Db=21840194,$7=65536;class kb{constructor({bamFilehandle:t,bamPath:e,bamUrl:r,baiPath:i,baiFilehandle:s,baiUrl:o,csiPath:a,csiFilehandle:l,csiUrl:c,htsget:u,renameRefSeqs:f=A=>A,recordClass:h}){if(this.htsget=!1,this.chunkFeatureCache=new zc({maxSize:100}),this.renameRefSeq=f,this.RecordClass=h??Sb,t)this.bam=t;else if(e)this.bam=new st(e);else if(r)this.bam=new Cn(r);else if(u)this.htsget=!0,this.bam=new j7;else throw new Error("unable to initialize bam");if(l)this.index=new hA({filehandle:l});else if(a)this.index=new hA({filehandle:new st(a)});else if(c)this.index=new hA({filehandle:new Cn(c)});else if(s)this.index=new ro({filehandle:s});else if(i)this.index=new ro({filehandle:new st(i)});else if(o)this.index=new ro({filehandle:new Cn(o)});else if(e)this.index=new ro({filehandle:new st(`${e}.bai`)});else if(r)this.index=new ro({filehandle:new Cn(`${r}.bai`)});else if(u)this.htsget=!0;else throw new Error("unable to infer index format")}async getHeaderPre(t){const e=GP(t);if(!this.index)return;const r=await this.index.parse(e),i=r.firstDataLine===void 0?await this.bam.readFile():await this.bam.read(r.firstDataLine.blockPosition+$7,0),s=await Ao(i),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==Db)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),l=new TextDecoder("utf8");this.header=l.decode(s.subarray(8,8+a));const{chrToIndex:c,indexToChr:u}=this._parseRefSeqs(s,a+8);return this.chrToIndex=c,this.indexToChr=u,Qb(this.header)}getHeader(t){return this.headerP||(this.headerP=this.getHeaderPre(t).catch(e=>{throw this.headerP=void 0,e})),this.headerP}async getHeaderText(t={}){return await this.getHeader(t),this.header}_parseRefSeqs(t,e){const r=new DataView(t.buffer),i=r.getInt32(e,!0);let s=e+4;const o={},a=[],l=new TextDecoder("utf8");for(let c=0;c<i;c+=1){if(s+8>t.length)throw new Error(`Insufficient data for reference sequences: need more than ${t.length} bytes`);const u=r.getInt32(s,!0),f=this.renameRefSeq(l.decode(t.subarray(s+4,s+4+u-1))),h=r.getInt32(s+u+4,!0);o[f]=c,a.push({refName:f,length:h}),s=s+8+u}return{chrToIndex:o,indexToChr:a}}async getRecordsForRange(t,e,r,i){var a;await this.getHeader(i);const s=(a=this.chrToIndex)==null?void 0:a[t];if(s===void 0||!this.index)return[];const o=await this.index.blocksForRange(s,e-1,r,i);return this._fetchChunkFeaturesDirect(o,s,e,r,i)}chunkCacheKey(t,e){const{minv:r,maxv:i}=t;return`${r.blockPosition}:${r.dataPosition}-${i.blockPosition}:${i.dataPosition}${YP(e)}`}blocksOverlap(t,e,r,i){return t<=i&&e>=r}evictOverlappingChunks(t,e){for(const[r,i]of this.chunkFeatureCache)this.blocksOverlap(t,e,i.minBlock,i.maxBlock)&&this.chunkFeatureCache.delete(r)}async _fetchChunkFeaturesDirect(t,e,r,i,s={}){const{viewAsPairs:o,filterBy:a}=s,{flagInclude:l=0,flagExclude:c=0,tagFilter:u}=a||{},f=[];for(let h=0,A=t.length;h<A;h++){const d=t[h],p=this.chunkCacheKey(d,a),C=d.minv.blockPosition,m=d.maxv.blockPosition;let w;const b=this.chunkFeatureCache.get(p);if(b)w=b.features;else{this.evictOverlappingChunks(C,m);const{data:x,cpositions:B,dpositions:E}=await this._readChunk({chunk:d,opts:s}),Q=await this.readBamFeatures(x,B,E,d);if(a){w=[];for(let F=0,k=Q.length;F<k;F++){const P=Q[F];VP(P.flags,l,c)||u&&_P(P.tags[u.tag],u.value)||w.push(P)}}else w=Q;this.chunkFeatureCache.set(p,{minBlock:C,maxBlock:m,features:w})}let y=!1;for(let x=0,B=w.length;x<B;x++){const E=w[x];if(E.ref_id===e)if(E.start>=i){y=!0;break}else E.end>=r&&f.push(E)}if(y)break}if(o){const h=await this.fetchPairs(e,f,s);for(let A=0,d=h.length;A<d;A++)f.push(h[A])}return f}async fetchPairs(t,e,r){const{pairAcrossChr:i,maxInsertSize:s=2e5}=r,o={},a={};for(let h=0,A=e.length;h<A;h++){const d=e[h],p=d.name;o[p]=(o[p]||0)+1,a[d.fileOffset]=1}const l=[];for(let h=0,A=e.length;h<A;h++){const d=e[h],p=d.name;this.index&&o[p]===1&&(i||d.next_refid===t&&Math.abs(d.start-d.next_pos)<s)&&l.push(this.index.blocksForRange(d.next_refid,d.next_pos,d.next_pos+1,r))}const c=new Map,u=await Promise.all(l);for(let h=0,A=u.length;h<A;h++){const d=u[h];for(let p=0,C=d.length;p<C;p++){const m=d[p],w=m.toString();c.has(w)||c.set(w,m)}}return(await Promise.all([...c.values()].map(async h=>{const{data:A,cpositions:d,dpositions:p,chunk:C}=await this._readChunk({chunk:h,opts:r}),m=[],w=await this.readBamFeatures(A,d,p,C);for(let b=0,y=w.length;b<y;b++){const x=w[b];o[x.name]===1&&!a[x.fileOffset]&&m.push(x)}return m}))).flat()}async _readChunk({chunk:t,opts:e}){const r=await this.bam.read(t.fetchedSize(),t.minv.blockPosition,e),{buffer:i,cpositions:s,dpositions:o}=await xb(r,t);return{data:i,cpositions:s,dpositions:o,chunk:t}}async readBamFeatures(t,e,r,i){let s=0;const o=[];let a=0;const l=new DataView(t.buffer),c=r.length>0,u=e.length>0;for(;s+4<t.length;){const f=l.getInt32(s,!0),h=s+4+f-1;if(c){for(;s+i.minv.dataPosition>=r[a++];);a--}if(h<t.length){const A=new this.RecordClass({bytes:{byteArray:t,start:s,end:h},fileOffset:u?e[a]*256+(s-r[a])+i.minv.dataPosition+1:Y7(t.subarray(s,h))>>>0});o.push(A)}s=h+1}return o}async hasRefSeq(t){var r,i;const e=(r=this.chrToIndex)==null?void 0:r[t];return e===void 0?!1:(i=this.index)==null?void 0:i.hasRefSeq(e)}async lineCount(t){var r;const e=(r=this.chrToIndex)==null?void 0:r[t];return e===void 0||!this.index?0:this.index.lineCount(e)}async indexCov(t,e,r){var s;if(!this.index)return[];await this.index.parse();const i=(s=this.chrToIndex)==null?void 0:s[t];return i===void 0?[]:this.index.indexCov(i,e,r)}async blocksForRange(t,e,r,i){var o;if(!this.index)return[];await this.index.parse();const s=(o=this.chrToIndex)==null?void 0:o[t];return s===void 0?[]:this.index.blocksForRange(s,e,r,i)}clearFeatureCache(){this.chunkFeatureCache.clear()}async estimatedBytesForRegions(t,e){if(!this.index)return 0;if(await this.getHeader(e),!this.chrToIndex)throw new Error("Header not yet parsed");return this.index.estimatedBytesForRegions(t.map(r=>{const i=this.chrToIndex[r.refName];if(i===void 0)throw new Error(`Unknown reference name: ${r.refName}`);return{refId:i,start:r.start,end:r.end}}),e)}}async function Fb(n,t){const e=await Promise.all(n.map(async r=>{const{url:i,headers:s}=r;if(i.startsWith("data:")){const o=await fetch(i);if(!o.ok)throw new Error("failed to decode base64");const a=await o.arrayBuffer();return new Uint8Array(a)}else{const{referer:o,...a}=s,l=await fetch(i,{...t,headers:{...t==null?void 0:t.headers,...a}});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${i}: ${await l.text()}`);return new Uint8Array(await l.arrayBuffer())}}));return HP(await Promise.all(e.map(r=>Ao(r))))}class eL extends kb{constructor(t){super({htsget:!0,recordClass:t.recordClass}),this.baseUrl=t.baseUrl,this.trackId=t.trackId}async getRecordsForRange(t,e,r,i){var A;const o=`${`${this.baseUrl}/${this.trackId}`}?referenceName=${t}&start=${e}&end=${r}&format=BAM`,a=(A=this.chrToIndex)==null?void 0:A[t];if(a===void 0)return[];const l=await fetch(o,{...i});if(!l.ok)throw new Error(`HTTP ${l.status} fetching ${o}: ${await l.text()}`);const c=await l.json(),u=await Fb(c.htsget.urls.slice(1),i),f=await this.readBamFeatures(u,[],[],{minv:{dataPosition:0,blockPosition:0},maxv:{dataPosition:0,blockPosition:0}}),h=[];for(let d=0,p=f.length;d<p;d++){const C=f[d];if(C.ref_id===a){if(C.start>=r)break;C.end>=e&&h.push(C)}}return h}async getHeader(t={}){const e=`${this.baseUrl}/${this.trackId}?referenceName=na&class=header`,r=await fetch(e,t);if(!r.ok)throw new Error(`HTTP ${r.status} fetching ${e}: ${await r.text()}`);const i=await r.json(),s=await Fb(i.htsget.urls,t),o=new DataView(s.buffer);if(o.getInt32(0,!0)!==Db)throw new Error("Not a BAM file");const a=o.getInt32(4,!0),c=new TextDecoder("utf8").decode(s.subarray(8,8+a)),u=Qb(c),f=[],h={},A=u.filter(d=>d.tag==="SQ");for(const[d,p]of A.entries()){let C="",m=0;for(const w of p.data)w.tag==="SN"?C=w.value:w.tag==="LN"&&(m=+w.value);h[C]=d,f[d]={refName:C,length:m}}return this.chrToIndex=h,this.indexToChr=f,u}}const tL=Object.freeze(Object.defineProperty({__proto__:null,BAI:ro,BamFile:kb,BamRecord:Sb,CSI:hA,HtsgetFile:eL},Symbol.toStringTag,{value:"Module"}));class dA{constructor(t,e,r,i){this.minv=t,this.maxv=e,this.bin=r,this._fetchedSize=i}toUniqueString(){return`${this.minv}..${this.maxv} (bin ${this.bin}, fetchedSize ${this.fetchedSize()})`}toString(){return this.toUniqueString()}compareTo(t){return this.minv.compareTo(t.minv)||this.maxv.compareTo(t.maxv)||this.bin-t.bin}fetchedSize(){return this._fetchedSize!==void 0?this._fetchedSize:this.maxv.blockPosition+65536-this.minv.blockPosition}}class Mb{constructor({filehandle:t,renameRefSeqs:e=r=>r}){this.filehandle=t,this.renameRefSeq=e}async getMetadata(t={}){const{indices:e,...r}=await this.parse(t);return r}_findFirstData(t,e){return t?t.compareTo(e)>0?e:t:e}async parse(t={}){return this.parseP||(this.parseP=this._parse(t).catch(e=>{throw this.parseP=void 0,e})),this.parseP}async hasRefSeq(t,e={}){var i;return!!((i=(await this.parse(e)).indices[t])!=null&&i.binIndex)}_parseNameBytes(t){let e=0,r=0;const i=[],s={},o=new TextDecoder("utf8");for(let a=0;a<t.length;a+=1)if(!t[a]){if(r<a){const l=this.renameRefSeq(o.decode(t.subarray(r,a)));i[e]=l,s[l]=e}r=a+1,e+=1}return{refNameToId:s,refIdToName:i}}}const Rb=65536,nL=Rb*Rb;function Nb(n,t=0){const e=n[t]|n[t+1]<<8|n[t+2]<<16|n[t+3]<<24;return((n[t+4]|n[t+5]<<8|n[t+6]<<16|n[t+7]<<24)>>>0)*nL+(e>>>0)}function rL(n,t){return t.minv.blockPosition-n.maxv.blockPosition<65e3&&t.maxv.blockPosition-n.minv.blockPosition<5e6}function Tb(n,t){const e=[];let r;if(n.length===0)return n;n.sort(function(i,s){const o=i.minv.blockPosition-s.minv.blockPosition;return o===0?i.minv.dataPosition-s.minv.dataPosition:o});for(const i of n)(!t||i.maxv.compareTo(t)>0)&&(r===void 0?(e.push(i),r=i):rL(r,i)?i.maxv.compareTo(r.maxv)>0&&(r.maxv=i.maxv):(e.push(i),r=i));return e}class vg{constructor(t,e){this.blockPosition=t,this.dataPosition=e}toString(){return`${this.blockPosition}:${this.dataPosition}`}compareTo(t){return this.blockPosition-t.blockPosition||this.dataPosition-t.dataPosition}}function ho(n,t=0){return new vg(n[t+7]*1099511627776+n[t+6]*4294967296+n[t+5]*16777216+n[t+4]*65536+n[t+3]*256+n[t+2],n[t+1]<<8|n[t])}const iL=21582659,sL=38359875,oL={0:"generic",1:"SAM",2:"VCF"};function aL(n,t){return n*2**t}function Pb(n,t){return Math.floor(n/2**t)}class gA extends Mb{constructor(t){super(t),this.maxBinNumber=0,this.depth=0,this.minShift=0}async lineCount(t,e={}){const r=await this.parse(e),i=r.refNameToId[t];if(i===void 0||!r.indices[i])return-1;const{stats:o}=r.indices[i];return o?o.lineCount:-1}indexCov(){throw new Error("CSI indexes do not support indexcov")}parseAuxData(t,e){const r=new DataView(t.buffer),i=r.getInt32(e,!0),s=i&65536?"zero-based-half-open":"1-based-closed",o=oL[i&15];if(!o)throw new Error(`invalid Tabix preset format flags ${i}`);const a={ref:r.getInt32(e+4,!0),start:r.getInt32(e+8,!0),end:r.getInt32(e+12,!0)},l=r.getInt32(e+16,!0),c=l?String.fromCharCode(l):void 0,u=r.getInt32(e+20,!0),f=r.getInt32(e+24,!0),{refIdToName:h,refNameToId:A}=this._parseNameBytes(t.subarray(e+28,e+28+f));return{refIdToName:h,refNameToId:A,skipLines:u,metaChar:c,columnNumbers:a,format:o,coordinateType:s}}async _parse(t={}){const e=await Ao(await this.filehandle.readFile(t)),r=new DataView(e.buffer);let i;if(r.getUint32(0,!0)===iL)i=1;else if(r.getUint32(0,!0)===sL)i=2;else throw new Error("Not a CSI file");this.minShift=r.getInt32(4,!0),this.depth=r.getInt32(8,!0),this.maxBinNumber=((1<<(this.depth+1)*3)-1)/7;const s=2**(this.minShift+this.depth*3),o=r.getInt32(12,!0),a=o&&o>=30?this.parseAuxData(e,16):{refIdToName:[],refNameToId:{},metaChar:void 0,columnNumbers:{ref:0,start:1,end:2},coordinateType:"zero-based-half-open",format:"generic"},l=r.getInt32(16+o,!0);let c,u=16+o+4;const f=new Array(l).fill(0).map(()=>{const h=r.getInt32(u,!0);u+=4;const A={};let d;for(let p=0;p<h;p+=1){const C=r.getUint32(u,!0);if(C>this.maxBinNumber)d=this.parsePseudoBin(e,u+4),u+=48;else{const m=ho(e,u+4);c=this._findFirstData(c,m);const w=r.getInt32(u+12,!0);u+=16;const b=new Array(w);for(let y=0;y<w;y+=1){const x=ho(e,u),B=ho(e,u+8);u+=16,b[y]=new dA(x,B,C)}A[C]=b}}return{binIndex:A,stats:d}});return{...a,csi:!0,refCount:l,maxBlockSize:65536,firstDataLine:c,csiVersion:i,indices:f,depth:this.depth,maxBinNumber:this.maxBinNumber,maxRefLength:s}}parsePseudoBin(t,e){return{lineCount:Nb(t,e+28)}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i),o=s.refNameToId[t];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];const l=this.reg2bins(e,r),c=[];for(const[u,f]of l)for(let h=u;h<=f;h++)if(a.binIndex[h])for(const A of a.binIndex[h])c.push(new dA(A.minv,A.maxv,h));return Tb(c,new vg(0,0))}reg2bins(t,e){t-=1,t<1&&(t=1),e>2**50&&(e=2**34),e-=1;let r=0,i=0,s=this.minShift+this.depth*3;const o=[];for(;r<=this.depth;s-=3,i+=aL(1,r*3),r+=1){const a=i+Pb(t,s),l=i+Pb(e,s);if(l-a+o.length>this.maxBinNumber)throw new Error(`query ${t}-${e} is too large for current binning scheme (shift ${this.minShift}, depth ${this.depth}), try a smaller query or a coarser index binning scheme`);o.push([a,l])}return o}}const cL=21578324,Lb=14;function lL(n,t){return n+=1,t-=1,[[0,0],[1+(n>>26),1+(t>>26)],[9+(n>>23),9+(t>>23)],[73+(n>>20),73+(t>>20)],[585+(n>>17),585+(t>>17)],[4681+(n>>14),4681+(t>>14)]]}class go extends Mb{async lineCount(t,e={}){var o;const r=await this.parse(e),i=r.refNameToId[t];return i===void 0||!r.indices[i]?-1:((o=r.indices[i].stats)==null?void 0:o.lineCount)??-1}async _parse(t={}){const e=await this.filehandle.readFile(t),r=await Ao(e),i=new DataView(r.buffer);if(i.getUint32(0,!0)!==cL)throw new Error("Not a TBI file");const o=i.getUint32(4,!0),a=i.getUint32(8,!0),l=a&65536?"zero-based-half-open":"1-based-closed",u={0:"generic",1:"SAM",2:"VCF"}[a&15];if(!u)throw new Error(`invalid Tabix preset format flags ${a}`);const f={ref:i.getInt32(12,!0),start:i.getInt32(16,!0),end:i.getInt32(20,!0)},h=i.getInt32(24,!0),A=5,d=((1<<(A+1)*3)-1)/7,p=2**(14+A*3),C=h?String.fromCharCode(h):void 0,m=i.getInt32(28,!0),w=i.getInt32(32,!0),{refNameToId:b,refIdToName:y}=this._parseNameBytes(r.slice(36,36+w));let x=36+w,B;return{indices:new Array(o).fill(0).map(()=>{const Q=i.getInt32(x,!0);x+=4;const F={};let k;for(let O=0;O<Q;O+=1){const z=i.getUint32(x,!0);if(x+=4,z>d+1)throw new Error("tabix index contains too many bins, please use a CSI index");if(z===d+1){const J=i.getInt32(x,!0);x+=4,J===2&&(k=this.parsePseudoBin(r,x)),x+=16*J}else{const J=i.getInt32(x,!0);x+=4;const V=new Array(J);for(let q=0;q<J;q+=1){const oe=ho(r,x),se=ho(r,x+8);x+=16,B=this._findFirstData(B,oe),V[q]=new dA(oe,se,z)}F[z]=V}}const P=i.getInt32(x,!0);x+=4;const T=new Array(P);for(let O=0;O<P;O+=1)T[O]=ho(r,x),x+=8,B=this._findFirstData(B,T[O]);return{binIndex:F,linearIndex:T,stats:k}}),metaChar:C,maxBinNumber:d,maxRefLength:p,skipLines:m,firstDataLine:B,columnNumbers:f,coordinateType:l,format:u,refIdToName:y,refNameToId:b,maxBlockSize:65536}}parsePseudoBin(t,e){return{lineCount:Nb(t,e+16)}}async blocksForRange(t,e,r,i={}){e<0&&(e=0);const s=await this.parse(i),o=s.refNameToId[t];if(o===void 0)return[];const a=s.indices[o];if(!a)return[];(a.linearIndex.length>0?a.linearIndex[e>>Lb>=a.linearIndex.length?a.linearIndex.length-1:e>>Lb]:new vg(0,0))||console.warn("querying outside of possible tabix range");const c=lL(e,r),u=[];for(const[p,C]of c)for(let m=p;m<=C;m++)if(a.binIndex[m])for(const w of a.binIndex[m])u.push(new dA(w.minv,w.maxv,m));const f=a.linearIndex.length;let h;const A=Math.min(e>>14,f-1),d=Math.min(r>>14,f-1);for(let p=A;p<=d;++p){const C=a.linearIndex[p];C&&(!h||C.compareTo(h)<0)&&(h=C)}return Tb(u,h)}}class uL{constructor({path:t,filehandle:e,url:r,tbiPath:i,tbiUrl:s,tbiFilehandle:o,csiPath:a,csiUrl:l,csiFilehandle:c,renameRefSeqs:u,chunkCacheSize:f=5*2**20}){this.cache=new zc({maxSize:1e3});const h=u??(A=>A);if(e)this.filehandle=e;else if(t)this.filehandle=new st(t);else if(r)this.filehandle=new Cn(r);else throw new TypeError("must provide either filehandle or path");if(o)this.index=new go({filehandle:o,renameRefSeqs:h});else if(c)this.index=new gA({filehandle:c,renameRefSeqs:h});else if(i)this.index=new go({filehandle:new st(i),renameRefSeqs:h});else if(a)this.index=new gA({filehandle:new st(a),renameRefSeqs:h});else if(t)this.index=new go({filehandle:new st(`${t}.tbi`),renameRefSeqs:h});else if(l)this.index=new gA({filehandle:new Cn(l)});else if(s)this.index=new go({filehandle:new Cn(s)});else if(r)this.index=new go({filehandle:new Cn(`${r}.tbi`)});else throw new TypeError("must provide one of tbiFilehandle, tbiPath, csiFilehandle, csiPath, tbiUrl, csiUrl");this.renameRefSeq=h,this.hasCustomRenameRefSeq=u!==void 0,this.chunkCache=new $s({cache:new zc({maxSize:Math.floor(f/65536)}),fill:(A,d)=>this.readChunk(A,{signal:d})})}calculateFileOffset(t,e,r,i,s){return t[r]*256+(i-e[r])+s+1}async getLines(t,e,r,i){var b;let s,o={},a;typeof i=="function"?a=i:(o=i,a=i.lineCallback,s=i.signal);const l=await this.index.getMetadata(o),c=e??0,u=r??l.maxRefLength;if(!(c<=u))throw new TypeError("invalid start and end coordinates. start must be less than or equal to end");if(c===u)return;const f=await this.index.blocksForRange(t,c,u,o),h=new TextDecoder("utf8"),A=l.format==="VCF",d={ref:l.columnNumbers.ref||0,start:l.columnNumbers.start||0,end:A?8:l.columnNumbers.end||0},p=Math.max(d.ref,d.start,d.end),C=(b=l.metaChar)==null?void 0:b.charCodeAt(0),m=l.coordinateType==="1-based-closed"?-1:0,w=!this.hasCustomRenameRefSeq;for(const y of f){const{buffer:x,cpositions:B,dpositions:E}=await this.chunkCache.get(y.toString(),y,s);let Q=0,F=0;const k=h.decode(x);if(x.length==k.length)for(;Q<k.length;){const T=k.indexOf(`
864
+ `,Q);if(T===-1)break;const O=k.slice(Q,T);if(E){const J=Q+y.minv.dataPosition;for(;F<E.length&&J>=E[F];)F++}const z=this.checkLine(t,c,u,O,d.ref,d.start,d.end,p,C,m,A,w);if(z===null)return;z!==void 0&&a(O,this.calculateFileOffset(B,E,F,Q,y.minv.dataPosition),z.start,z.end),Q=T+1}else for(;Q<x.length;){const T=x.indexOf(10,Q);if(T===-1)break;const O=x.slice(Q,T),z=h.decode(O);if(E){const V=Q+y.minv.dataPosition;for(;F<E.length&&V>=E[F];)F++}const J=this.checkLine(t,c,u,z,d.ref,d.start,d.end,p,C,m,A,w);if(J===null)return;J!==void 0&&a(z,this.calculateFileOffset(B,E,F,Q,y.minv.dataPosition),J.start,J.end),Q=T+1}}}async getMetadata(t={}){return this.index.getMetadata(t)}async getHeaderBuffer(t={}){const{firstDataLine:e,metaChar:r,maxBlockSize:i}=await this.getMetadata(t),s=((e==null?void 0:e.blockPosition)||0)+i,o=await this.filehandle.read(s,0,t),a=await Ao(o);if(r){let l=-1;const c=10,u=r.charCodeAt(0);for(let f=0,h=a.length;f<h;f++){const A=a[f];if(f===l+1&&A!==u)break;A===c&&(l=f)}return a.subarray(0,l+1)}return a}async getHeader(t={}){const e=new TextDecoder("utf8"),r=await this.getHeaderBuffer(t);return e.decode(r)}async getReferenceSequenceNames(t={}){return(await this.getMetadata(t)).refIdToName}checkLine(t,e,r,i,s,o,a,l,c,u,f,h){if(c!==void 0&&i.charCodeAt(0)===c)return;if(i.length<500){const b=i.split(" "),y=b[s-1];if(!(h?y===t:this.renameRefSeq(y)===t))return;const B=+b[o-1]+u;if(B>=r)return null;let E;return a===0||a===o?E=B+1:f?E=this._getVcfEnd(B,b[3],b[a-1]):E=+b[a-1],E<=e?void 0:{start:B,end:E}}let A=-1;const d=[-1];for(let b=0;b<l;b++){const y=i.indexOf(" ",A+1);if(y===-1){d.push(i.length);break}d.push(y),A=y}const p=i.slice(d[s-1]+1,d[s]);if(!(h?p===t:this.renameRefSeq(p)===t))return;const m=+i.slice(d[o-1]+1,d[o])+u;if(m>=r)return null;let w;if(a===0||a===o?w=m+1:f?w=this._getVcfEnd(m,i.slice(d[3]+1,d[4]),i.slice(d[a-1]+1,d[a])):w=+i.slice(d[a-1]+1,d[a]),!(w<=e))return{start:m,end:w}}_getVcfEnd(t,e,r){let i=t+e.length;if(r.includes("SVTYPE=TRA"))return t+1;if(r[0]!=="."){const o=r.indexOf("END=");if(o!==-1&&(o===0||r[o-1]===";")){const a=o+4;let l=r.indexOf(";",a);l===-1&&(l=r.length),i=Number.parseInt(r.slice(a,l),10)}}return i}async lineCount(t,e={}){return this.index.lineCount(t,e)}async readChunk(t,e={}){const r=await this.filehandle.read(t.fetchedSize(),t.minv.blockPosition,e);return xb(r,t,this.cache)}}const fL=Object.freeze(Object.defineProperty({__proto__:null,CSI:gA,TBI:go,TabixIndexedFile:uL},Symbol.toStringTag,{value:"Module"})),AL=/%([0-9A-Fa-f]{2})/g,hL=/^\s*##\s*(\S+)\s*(.*)/,dL=/\r?\n$/,Ob=/\s+/,Ub=/\D/g;function pA(n){return n.includes("%")?n.replaceAll(AL,(t,e)=>String.fromCharCode(parseInt(e,16))):n}function gL(n){if(!n.length||n===".")return{};const t={};let e=n;e.endsWith(`
884
865
  `)&&(e=e.slice(0,e.endsWith(`\r
885
- `)?-2:-1));for(const r of e.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=t[o];a||(a=[],t[o]=a);for(const l of s.split(","))a.push(If(l.trim()))}return t}function C7(n){if(!n.length||n===".")return{};const t={};let e=n;e.endsWith(`
866
+ `)?-2:-1));for(const r of e.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=t[o];a||(a=[],t[o]=a);for(const l of s.split(","))a.push(pA(l.trim()))}return t}function pL(n){if(!n.length||n===".")return{};const t={};let e=n;e.endsWith(`
886
867
  `)&&(e=e.slice(0,e.endsWith(`\r
887
- `)?-2:-1));for(const r of e.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=t[o];a||(a=[],t[o]=a);for(const l of s.split(","))a.push(l.trim())}return t}function y7(n){return b0(n.split(" "))}function We(n){return n==="."||n===""||n===void 0?null:n}function b0(n){const t=We(n[0]),e=We(n[1]),r=We(n[2]),i=We(n[3]),s=We(n[4]),o=We(n[5]),a=We(n[6]),l=We(n[7]),c=We(n[8]);return{seq_id:t?If(t):null,source:e?If(e):null,type:r?If(r):null,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:m7(c)}}function w7(n){const t=We(n[0]),e=We(n[1]),r=We(n[2]),i=We(n[3]),s=We(n[4]),o=We(n[5]),a=We(n[6]),l=We(n[7]),c=We(n[8]);return{seq_id:t,source:e,type:r,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:C7(c)}}function I7(n){var s,o;const t=g7.exec(n);if(!t)return null;const[,e]=t;let[,,r]=t;const i={directive:e};if(r.length&&(r=r.replace(p7,""),i.value=r),e==="sequence-region"){const a=r.split(CE,3);return{...i,seq_id:a[0],start:(s=a[1])==null?void 0:s.replaceAll(yE,""),end:(o=a[2])==null?void 0:o.replaceAll(yE,"")}}else if(e==="genome-build"){const[a,l]=r.split(CE,2);return{...i,source:a,buildName:l}}return i}const E7=/^\s*[^#\s>]/,b7=/^\s*(#+)(.*)/,x7=/^\s*$/,B7=/^\s*>/,v7=/\r?\n?$/g;class Ef{constructor(t){j(this,"featureCallback");j(this,"endCallback");j(this,"commentCallback");j(this,"errorCallback");j(this,"disableDerivesFromReferences");j(this,"directiveCallback");j(this,"bufferSize");j(this,"eof",!1);j(this,"lineNumber",0);j(this,"_underConstructionTopLevel",[]);j(this,"_underConstructionById",{});j(this,"_completedReferences",{});j(this,"_underConstructionOrphans",{});const e=()=>{};this.featureCallback=t.featureCallback||e,this.endCallback=t.endCallback||e,this.commentCallback=t.commentCallback||e,this.errorCallback=t.errorCallback||e,this.directiveCallback=t.directiveCallback||e,this.disableDerivesFromReferences=t.disableDerivesFromReferences||!1,this.bufferSize=t.bufferSize===void 0?1/0:t.bufferSize}addLine(t){if(this.eof)return;if(this.lineNumber+=1,E7.test(t)){this._bufferLine(t);return}const e=b7.exec(t);if(e){const[,r]=e;let[,,i]=e;if(r.length===3)this._emitAllUnderConstructionFeatures();else if(r.length===2){const s=I7(t);s&&(s.directive==="FASTA"?(this._emitAllUnderConstructionFeatures(),this.eof=!0):this._emitItem(s))}else this._emitItem({comment:i.trimStart()})}else if(!x7.test(t))if(B7.test(t))this._emitAllUnderConstructionFeatures(),this.eof=!0;else{const r=t.replaceAll(v7,"");throw new Error(`GFF3 parse error. Cannot parse '${r}'.`)}}addParsedFeatureLine(t){this.eof||(this.lineNumber+=1,this._bufferParsedLine(t))}finish(){this._emitAllUnderConstructionFeatures(),this.endCallback()}_emitItem(t){Array.isArray(t)?this.featureCallback(t):"directive"in t?this.directiveCallback(t):"comment"in t&&this.commentCallback(t)}_enforceBufferSizeLimit(t=0){const e=r=>{var i,s;r&&Array.isArray(r)&&((s=(i=r[0].attributes)==null?void 0:i.ID)!=null&&s[0])&&(r[0].attributes.ID.forEach(a=>{delete this._underConstructionById[a],delete this._completedReferences[a]}),r.forEach(a=>{a.child_features&&a.child_features.forEach(l=>{e(l)}),a.derived_features&&a.derived_features.forEach(l=>{e(l)})}))};for(;this._underConstructionTopLevel.length+t>this.bufferSize;){const r=this._underConstructionTopLevel.shift();r&&(this._emitItem(r),e(r))}}_emitAllUnderConstructionFeatures(){this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={};const t=Object.keys(this._underConstructionOrphans);if(t.length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${t.join(",")}`)}_bufferLine(t){this._bufferParsedLine(y7(t))}_bufferParsedLine(t){var a,l,c;const e=t;e.child_features=[],e.derived_features=[];const r=((a=e.attributes)==null?void 0:a.ID)||[],i=((l=e.attributes)==null?void 0:l.Parent)||[],s=this.disableDerivesFromReferences?[]:((c=e.attributes)==null?void 0:c.Derives_from)||[];if(!r.length&&!i.length&&!s.length){this._emitItem([e]);return}let o;r.forEach(u=>{const f=this._underConstructionById[u];f?(f[f.length-1].type!==e.type&&this._parseError(`multi-line feature "${u}" has inconsistent types: "${e.type}", "${f[f.length-1].type}"`),f.push(e),o=f):(o=[e],this._enforceBufferSizeLimit(1),!i.length&&!s.length&&this._underConstructionTopLevel.push(o),this._underConstructionById[u]=o,this._resolveReferencesTo(o,u))}),this._resolveReferencesFrom(o||[e],{Parent:i,Derives_from:s},r)}_resolveReferencesTo(t,e){const r=this._underConstructionOrphans[e];if(r){for(const i of t)i.child_features.push(...r.Parent),i.derived_features.push(...r.Derives_from);delete this._underConstructionOrphans[e]}}_parseError(t){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${t}`)}_resolveReferencesFrom(t,e,r){for(const i of e.Parent){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Parent,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.child_features.push(t)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Parent.push(t)}}for(const i of e.Derives_from){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Derives_from,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.derived_features.push(t)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Derives_from.push(t)}}}}function Q7(n){const t=[],e=new Ef({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n.split(/\r?\n/))e.addLine(r);return e.finish(),t}function S7(n){const t=[],e=new Ef({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n)e.addLine(r);return e.finish(),t}function D7(n){const t=[],e=new Ef({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n){const i=b0(r.fields);r.lineHash!==void 0&&(i.attributes||(i.attributes={}),i.attributes._lineHash=[String(r.lineHash)]),e.addParsedFeatureLine(i)}return e.finish(),t}function k7(n,t){const e=[],r=new Ef({featureCallback:s=>e.push(s),disableDerivesFromReferences:!0,errorCallback:s=>{throw new Error(s)}}),i=t?b0:w7;for(const s of n){const o=i(s.fields);s.lineHash!==void 0&&(o.attributes||(o.attributes={}),o.attributes._lineHash=[String(s.lineHash)]),r.addParsedFeatureLine(o)}return r.finish(),e}const F7=Object.freeze(Object.defineProperty({__proto__:null,parseArraySync:S7,parseRecordsSync:D7,parseRecordsSyncFast:k7,parseStringSync:Q7},Symbol.toStringTag,{value:"Module"}));function M7(n,t,e){const r=Object.create(null),i=e.length,s=t.length,o=9,a=58;let l=0;if(n==="GT"){for(let f=0;f<i;f++){const h=l;for(;l<s&&t.charCodeAt(l)!==o;)l++;r[e[f]]=t.slice(h,l),l++}return r}const c=n.indexOf("GT");if(c===-1)return r;if(c===0){for(let f=0;f<i;f++){const h=l;for(;l<s&&t.charCodeAt(l)!==a&&t.charCodeAt(l)!==o;)l++;for(r[e[f]]=t.slice(h,l);l<s&&t.charCodeAt(l)!==o;)l++;l++}return r}let u=0;for(let f=0;f<c;f++)n.charCodeAt(f)===a&&u++;for(let f=0;f<i;f++){const h=l;let A=l;for(;A<s&&t.charCodeAt(A)!==o;)A++;let d=0,g=h;for(let p=h;p<=A;p++)if(p===A||t.charCodeAt(p)===a){if(d===u){r[e[f]]=t.slice(g,p);break}d++,g=p+1}l=A+1}return r}function R7(n){const t=[],e=[];let r=!1,i=!1;const s=n.length;for(let o=0;o<s;o++){const a=n[o];a==='"'?(r=!r,e.push(a)):a==="["?(i=!0,e.push(a)):a==="]"?(i=!1,e.push(a)):a===","&&!r&&!i?(t.push(e.join("").trim()),e.length=0):e.push(a)}return e.length>0&&t.push(e.join("").trim()),t}function N7(n,t){const e=n.indexOf(t);return[n.slice(0,e),n.slice(e+1)]}function T7(n){const t=n.slice(1,-1),e=R7(t),r=[];for(let i=0;i<e.length;i++){const s=e[i],[o,a]=N7(s,"=");if(a&&a.startsWith("[")&&a.endsWith("]")){const l=a.slice(1,-1).split(",");for(let c=0;c<l.length;c++)l[c]=l[c].trim();r.push([o,l])}else a&&a.startsWith('"')&&a.endsWith('"')?r.push([o,a.slice(1,-1)]):r.push([o,a])}return Object.fromEntries(r)}const bf={InfoFields:{AA:{Number:1,Type:"String",Description:"Ancestral allele"},AC:{Number:"A",Type:"Integer",Description:"Allele count in genotypes, for each ALT allele, in the same order as listed"},AD:{Number:"R",Type:"Integer",Description:"Total read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},AF:{Number:"A",Type:"Float",Description:"Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)"},AN:{Number:1,Type:"Integer",Description:"Total number of alleles in called genotypes"},BQ:{Number:1,Type:"Float",Description:"RMS base quality"},CIGAR:{Number:1,Type:"Float",Description:"Cigar string describing how to align an alternate allele to the reference allele"},DB:{Number:0,Type:"Flag",Description:"dbSNP membership"},DP:{Number:1,Type:"Integer",Description:"combined depth across samples"},END:{Number:1,Type:"Integer",Description:"End position (for use with symbolic alleles)"},H2:{Number:0,Type:"Flag",Description:"HapMap2 membership"},H3:{Number:0,Type:"Flag",Description:"HapMap3 membership"},MQ:{Number:1,Type:null,Description:"RMS mapping quality"},MQ0:{Number:1,Type:"Integer",Description:"Number of MAPQ == 0 reads"},NS:{Number:1,Type:"Integer",Description:"Number of samples with data"},SB:{Number:4,Type:"Integer",Description:"Strand bias"},SOMATIC:{Number:0,Type:"Flag",Description:"Somatic mutation (for cancer genomics)"},VALIDATED:{Number:0,Type:"Flag",Description:"Validated by follow-up experiment"},"1000G":{Number:0,Type:"Flag",Description:"1000 Genomes membership"},IMPRECISE:{Number:0,Type:"Flag",Description:"Imprecise structural variation"},NOVEL:{Number:0,Type:"Flag",Description:"Indicates a novel structural variation"},SVTYPE:{Number:1,Type:"String",Description:"Type of structural variant"},SVLEN:{Number:null,Type:"Integer",Description:"Difference in length between REF and ALT alleles"},CIPOS:{Number:2,Type:"Integer",Description:"Confidence interval around POS for imprecise variants"},CIEND:{Number:2,Type:"Integer",Description:"Confidence interval around END for imprecise variants"},HOMLEN:{Type:"Integer",Description:"Length of base pair identical micro-homology at event breakpoints"},HOMSEQ:{Type:"String",Description:"Sequence of base pair identical micro-homology at event breakpoints"},BKPTID:{Type:"String",Description:"ID of the assembled alternate allele in the assembly file"},MEINFO:{Number:4,Type:"String",Description:"Mobile element info of the form NAME,START,END,POLARITY"},METRANS:{Number:4,Type:"String",Description:"Mobile element transduction info of the form CHR,START,END,POLARITY"},DGVID:{Number:1,Type:"String",Description:"ID of this element in Database of Genomic Variation"},DBVARID:{Number:1,Type:"String",Description:"ID of this element in DBVAR"},DBRIPID:{Number:1,Type:"String",Description:"ID of this element in DBRIP"},MATEID:{Number:null,Type:"String",Description:"ID of mate breakends"},PARID:{Number:1,Type:"String",Description:"ID of partner breakend"},EVENT:{Number:1,Type:"String",Description:"ID of event associated to breakend"},CILEN:{Number:2,Type:"Integer",Description:"Confidence interval around the inserted material between breakend"},DPADJ:{Type:"Integer",Description:"Read Depth of adjacency"},CN:{Number:1,Type:"Integer",Description:"Copy number of segment containing breakend"},CNADJ:{Number:null,Type:"Integer",Description:"Copy number of adjacency"},CICN:{Number:2,Type:"Integer",Description:"Confidence interval around copy number for the segment"},CICNADJ:{Number:null,Type:"Integer",Description:"Confidence interval around copy number for the adjacency"}},GenotypeFields:{AD:{Number:"R",Type:"Integer",Description:"Read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},DP:{Number:1,Type:"Integer",Description:"Read depth"},EC:{Number:"A",Type:"Integer",Description:"Expected alternate allele counts"},FT:{Number:1,Type:"String",Description:'Filter indicating if this genotype was "called"'},GL:{Number:"G",Type:"Float",Description:"Genotype likelihoods"},GP:{Number:"G",Type:"Float",Description:"Genotype posterior probabilities"},GQ:{Number:1,Type:"Integer",Description:"Conditional genotype quality"},GT:{Number:1,Type:"String",Description:"Genotype"},HQ:{Number:2,Type:"Integer",Description:"Haplotype quality"},MQ:{Number:1,Type:"Integer",Description:"RMS mapping quality"},PL:{Number:"G",Type:"Integer",Description:"Phred-scaled genotype likelihoods rounded to the closest integer"},PQ:{Number:1,Type:"Integer",Description:"Phasing quality"},PS:{Number:1,Type:"Integer",Description:"Phase set"}},AltTypes:{DEL:{Description:"Deletion relative to the reference"},INS:{Description:"Insertion of novel sequence relative to the reference"},DUP:{Description:"Region of elevated copy number relative to the reference"},INV:{Description:"Inversion of reference sequence"},CNV:{Description:"Copy number variable region (may be both deletion and duplication)"},"DUP:TANDEM":{Description:"Tandem duplication"},"DEL:ME":{Description:"Deletion of mobile element relative to the reference"},"INS:ME":{Description:"Insertion of a mobile element relative to the reference"},NON_REF:{Description:"Represents any possible alternative allele at this location"},"*":{Description:"Represents any possible alternative allele at this location"}},FilterTypes:{PASS:{Description:"Passed all filters"}}};function P7(n){try{return decodeURIComponent(n)}catch{return n}}class L7{constructor({header:t="",strict:e=!0}){if(!t.length)throw new Error("empty header received");const r=t.split(/[\r\n]+/).filter(Boolean);if(!r.length)throw new Error("no non-empty header lines specified");this.strict=e,this.metadata={INFO:{...bf.InfoFields},FORMAT:{...bf.GenotypeFields},ALT:{...bf.AltTypes},FILTER:{...bf.FilterTypes}};let i;for(let l=0;l<r.length;l++){const c=r[l];if(c.startsWith("#"))c.startsWith("##")?this.parseMetadata(c):i=c;else throw new Error(`Bad line in header:
868
+ `)?-2:-1));for(const r of e.split(";")){const i=r.indexOf("=");if(i===-1)continue;const s=r.slice(i+1);if(!s.length)continue;const o=r.slice(0,i).trim();let a=t[o];a||(a=[],t[o]=a);for(const l of s.split(","))a.push(l.trim())}return t}function mL(n){return Sg(n.split(" "))}function Ke(n){return n==="."||n===""||n===void 0?null:n}function Sg(n){const t=Ke(n[0]),e=Ke(n[1]),r=Ke(n[2]),i=Ke(n[3]),s=Ke(n[4]),o=Ke(n[5]),a=Ke(n[6]),l=Ke(n[7]),c=Ke(n[8]);return{seq_id:t?pA(t):null,source:e?pA(e):null,type:r?pA(r):null,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:gL(c)}}function CL(n){const t=Ke(n[0]),e=Ke(n[1]),r=Ke(n[2]),i=Ke(n[3]),s=Ke(n[4]),o=Ke(n[5]),a=Ke(n[6]),l=Ke(n[7]),c=Ke(n[8]);return{seq_id:t,source:e,type:r,start:i===null?null:parseInt(i,10),end:s===null?null:parseInt(s,10),score:o===null?null:parseFloat(o),strand:a,phase:l,attributes:c===null?null:pL(c)}}function yL(n){var s,o;const t=hL.exec(n);if(!t)return null;const[,e]=t;let[,,r]=t;const i={directive:e};if(r.length&&(r=r.replace(dL,""),i.value=r),e==="sequence-region"){const a=r.split(Ob,3);return{...i,seq_id:a[0],start:(s=a[1])==null?void 0:s.replaceAll(Ub,""),end:(o=a[2])==null?void 0:o.replaceAll(Ub,"")}}else if(e==="genome-build"){const[a,l]=r.split(Ob,2);return{...i,source:a,buildName:l}}return i}const wL=/^\s*[^#\s>]/,IL=/^\s*(#+)(.*)/,EL=/^\s*$/,bL=/^\s*>/,xL=/\r?\n?$/g;class mA{constructor(t){W(this,"featureCallback");W(this,"endCallback");W(this,"commentCallback");W(this,"errorCallback");W(this,"disableDerivesFromReferences");W(this,"directiveCallback");W(this,"bufferSize");W(this,"eof",!1);W(this,"lineNumber",0);W(this,"_underConstructionTopLevel",[]);W(this,"_underConstructionById",{});W(this,"_completedReferences",{});W(this,"_underConstructionOrphans",{});const e=()=>{};this.featureCallback=t.featureCallback||e,this.endCallback=t.endCallback||e,this.commentCallback=t.commentCallback||e,this.errorCallback=t.errorCallback||e,this.directiveCallback=t.directiveCallback||e,this.disableDerivesFromReferences=t.disableDerivesFromReferences||!1,this.bufferSize=t.bufferSize===void 0?1/0:t.bufferSize}addLine(t){if(this.eof)return;if(this.lineNumber+=1,wL.test(t)){this._bufferLine(t);return}const e=IL.exec(t);if(e){const[,r]=e;let[,,i]=e;if(r.length===3)this._emitAllUnderConstructionFeatures();else if(r.length===2){const s=yL(t);s&&(s.directive==="FASTA"?(this._emitAllUnderConstructionFeatures(),this.eof=!0):this._emitItem(s))}else this._emitItem({comment:i.trimStart()})}else if(!EL.test(t))if(bL.test(t))this._emitAllUnderConstructionFeatures(),this.eof=!0;else{const r=t.replaceAll(xL,"");throw new Error(`GFF3 parse error. Cannot parse '${r}'.`)}}addParsedFeatureLine(t){this.eof||(this.lineNumber+=1,this._bufferParsedLine(t))}finish(){this._emitAllUnderConstructionFeatures(),this.endCallback()}_emitItem(t){Array.isArray(t)?this.featureCallback(t):"directive"in t?this.directiveCallback(t):"comment"in t&&this.commentCallback(t)}_enforceBufferSizeLimit(t=0){const e=r=>{var i,s;r&&Array.isArray(r)&&((s=(i=r[0].attributes)==null?void 0:i.ID)!=null&&s[0])&&(r[0].attributes.ID.forEach(a=>{delete this._underConstructionById[a],delete this._completedReferences[a]}),r.forEach(a=>{a.child_features&&a.child_features.forEach(l=>{e(l)}),a.derived_features&&a.derived_features.forEach(l=>{e(l)})}))};for(;this._underConstructionTopLevel.length+t>this.bufferSize;){const r=this._underConstructionTopLevel.shift();r&&(this._emitItem(r),e(r))}}_emitAllUnderConstructionFeatures(){this._underConstructionTopLevel.forEach(this._emitItem.bind(this)),this._underConstructionTopLevel=[],this._underConstructionById={},this._completedReferences={};const t=Object.keys(this._underConstructionOrphans);if(t.length)throw new Error(`some features reference other features that do not exist in the file (or in the same '###' scope). ${t.join(",")}`)}_bufferLine(t){this._bufferParsedLine(mL(t))}_bufferParsedLine(t){var a,l,c;const e=t;e.child_features=[],e.derived_features=[];const r=((a=e.attributes)==null?void 0:a.ID)||[],i=((l=e.attributes)==null?void 0:l.Parent)||[],s=this.disableDerivesFromReferences?[]:((c=e.attributes)==null?void 0:c.Derives_from)||[];if(!r.length&&!i.length&&!s.length){this._emitItem([e]);return}let o;r.forEach(u=>{const f=this._underConstructionById[u];f?(f[f.length-1].type!==e.type&&this._parseError(`multi-line feature "${u}" has inconsistent types: "${e.type}", "${f[f.length-1].type}"`),f.push(e),o=f):(o=[e],this._enforceBufferSizeLimit(1),!i.length&&!s.length&&this._underConstructionTopLevel.push(o),this._underConstructionById[u]=o,this._resolveReferencesTo(o,u))}),this._resolveReferencesFrom(o||[e],{Parent:i,Derives_from:s},r)}_resolveReferencesTo(t,e){const r=this._underConstructionOrphans[e];if(r){for(const i of t)i.child_features.push(...r.Parent),i.derived_features.push(...r.Derives_from);delete this._underConstructionOrphans[e]}}_parseError(t){this.eof=!0,this.errorCallback(`${this.lineNumber}: ${t}`)}_resolveReferencesFrom(t,e,r){for(const i of e.Parent){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Parent,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.child_features.push(t)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Parent.push(t)}}for(const i of e.Derives_from){const s=this._underConstructionById[i];if(s){let o=!1;for(const a of r){const l=`Derives_from,${i}`,c=this._completedReferences[a]||(this._completedReferences[a]={});c[l]&&(o=!0),c[l]=!0}if(!o)for(const a of s)a.derived_features.push(t)}else{let o=this._underConstructionOrphans[i];o||(o={Parent:[],Derives_from:[]},this._underConstructionOrphans[i]=o),o.Derives_from.push(t)}}}}function BL(n){const t=[],e=new mA({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n.split(/\r?\n/))e.addLine(r);return e.finish(),t}function vL(n){const t=[],e=new mA({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n)e.addLine(r);return e.finish(),t}function SL(n){const t=[],e=new mA({featureCallback:r=>t.push(r),disableDerivesFromReferences:!0,errorCallback:r=>{throw new Error(r)}});for(const r of n){const i=Sg(r.fields);r.lineHash!==void 0&&(i.attributes||(i.attributes={}),i.attributes._lineHash=[String(r.lineHash)]),e.addParsedFeatureLine(i)}return e.finish(),t}function QL(n,t){const e=[],r=new mA({featureCallback:s=>e.push(s),disableDerivesFromReferences:!0,errorCallback:s=>{throw new Error(s)}}),i=t?Sg:CL;for(const s of n){const o=i(s.fields);s.lineHash!==void 0&&(o.attributes||(o.attributes={}),o.attributes._lineHash=[String(s.lineHash)]),r.addParsedFeatureLine(o)}return r.finish(),e}const DL=Object.freeze(Object.defineProperty({__proto__:null,parseArraySync:vL,parseRecordsSync:SL,parseRecordsSyncFast:QL,parseStringSync:BL},Symbol.toStringTag,{value:"Module"}));function kL(n,t,e){const r=Object.create(null),i=e.length,s=t.length,o=9,a=58;let l=0;if(n==="GT"){for(let f=0;f<i;f++){const h=l;for(;l<s&&t.charCodeAt(l)!==o;)l++;r[e[f]]=t.slice(h,l),l++}return r}const c=n.indexOf("GT");if(c===-1)return r;if(c===0){for(let f=0;f<i;f++){const h=l;for(;l<s&&t.charCodeAt(l)!==a&&t.charCodeAt(l)!==o;)l++;for(r[e[f]]=t.slice(h,l);l<s&&t.charCodeAt(l)!==o;)l++;l++}return r}let u=0;for(let f=0;f<c;f++)n.charCodeAt(f)===a&&u++;for(let f=0;f<i;f++){const h=l;let A=l;for(;A<s&&t.charCodeAt(A)!==o;)A++;let d=0,p=h;for(let C=h;C<=A;C++)if(C===A||t.charCodeAt(C)===a){if(d===u){r[e[f]]=t.slice(p,C);break}d++,p=C+1}l=A+1}return r}function FL(n){const t=[],e=[];let r=!1,i=!1;const s=n.length;for(let o=0;o<s;o++){const a=n[o];a==='"'?(r=!r,e.push(a)):a==="["?(i=!0,e.push(a)):a==="]"?(i=!1,e.push(a)):a===","&&!r&&!i?(t.push(e.join("").trim()),e.length=0):e.push(a)}return e.length>0&&t.push(e.join("").trim()),t}function ML(n,t){const e=n.indexOf(t);return[n.slice(0,e),n.slice(e+1)]}function RL(n){const t=n.slice(1,-1),e=FL(t),r=[];for(let i=0;i<e.length;i++){const s=e[i],[o,a]=ML(s,"=");if(a&&a.startsWith("[")&&a.endsWith("]")){const l=a.slice(1,-1).split(",");for(let c=0;c<l.length;c++)l[c]=l[c].trim();r.push([o,l])}else a&&a.startsWith('"')&&a.endsWith('"')?r.push([o,a.slice(1,-1)]):r.push([o,a])}return Object.fromEntries(r)}const CA={InfoFields:{AA:{Number:1,Type:"String",Description:"Ancestral allele"},AC:{Number:"A",Type:"Integer",Description:"Allele count in genotypes, for each ALT allele, in the same order as listed"},AD:{Number:"R",Type:"Integer",Description:"Total read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},AF:{Number:"A",Type:"Float",Description:"Allele frequency for each ALT allele in the same order as listed (estimated from primary data, not called genotypes)"},AN:{Number:1,Type:"Integer",Description:"Total number of alleles in called genotypes"},BQ:{Number:1,Type:"Float",Description:"RMS base quality"},CIGAR:{Number:1,Type:"Float",Description:"Cigar string describing how to align an alternate allele to the reference allele"},DB:{Number:0,Type:"Flag",Description:"dbSNP membership"},DP:{Number:1,Type:"Integer",Description:"combined depth across samples"},END:{Number:1,Type:"Integer",Description:"End position (for use with symbolic alleles)"},H2:{Number:0,Type:"Flag",Description:"HapMap2 membership"},H3:{Number:0,Type:"Flag",Description:"HapMap3 membership"},MQ:{Number:1,Type:null,Description:"RMS mapping quality"},MQ0:{Number:1,Type:"Integer",Description:"Number of MAPQ == 0 reads"},NS:{Number:1,Type:"Integer",Description:"Number of samples with data"},SB:{Number:4,Type:"Integer",Description:"Strand bias"},SOMATIC:{Number:0,Type:"Flag",Description:"Somatic mutation (for cancer genomics)"},VALIDATED:{Number:0,Type:"Flag",Description:"Validated by follow-up experiment"},"1000G":{Number:0,Type:"Flag",Description:"1000 Genomes membership"},IMPRECISE:{Number:0,Type:"Flag",Description:"Imprecise structural variation"},NOVEL:{Number:0,Type:"Flag",Description:"Indicates a novel structural variation"},SVTYPE:{Number:1,Type:"String",Description:"Type of structural variant"},SVLEN:{Number:null,Type:"Integer",Description:"Difference in length between REF and ALT alleles"},CIPOS:{Number:2,Type:"Integer",Description:"Confidence interval around POS for imprecise variants"},CIEND:{Number:2,Type:"Integer",Description:"Confidence interval around END for imprecise variants"},HOMLEN:{Type:"Integer",Description:"Length of base pair identical micro-homology at event breakpoints"},HOMSEQ:{Type:"String",Description:"Sequence of base pair identical micro-homology at event breakpoints"},BKPTID:{Type:"String",Description:"ID of the assembled alternate allele in the assembly file"},MEINFO:{Number:4,Type:"String",Description:"Mobile element info of the form NAME,START,END,POLARITY"},METRANS:{Number:4,Type:"String",Description:"Mobile element transduction info of the form CHR,START,END,POLARITY"},DGVID:{Number:1,Type:"String",Description:"ID of this element in Database of Genomic Variation"},DBVARID:{Number:1,Type:"String",Description:"ID of this element in DBVAR"},DBRIPID:{Number:1,Type:"String",Description:"ID of this element in DBRIP"},MATEID:{Number:null,Type:"String",Description:"ID of mate breakends"},PARID:{Number:1,Type:"String",Description:"ID of partner breakend"},EVENT:{Number:1,Type:"String",Description:"ID of event associated to breakend"},CILEN:{Number:2,Type:"Integer",Description:"Confidence interval around the inserted material between breakend"},DPADJ:{Type:"Integer",Description:"Read Depth of adjacency"},CN:{Number:1,Type:"Integer",Description:"Copy number of segment containing breakend"},CNADJ:{Number:null,Type:"Integer",Description:"Copy number of adjacency"},CICN:{Number:2,Type:"Integer",Description:"Confidence interval around copy number for the segment"},CICNADJ:{Number:null,Type:"Integer",Description:"Confidence interval around copy number for the adjacency"}},GenotypeFields:{AD:{Number:"R",Type:"Integer",Description:"Read depth for each allele"},ADF:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the forward strand"},ADR:{Number:"R",Type:"Integer",Description:"Read depth for each allele on the reverse strand"},DP:{Number:1,Type:"Integer",Description:"Read depth"},EC:{Number:"A",Type:"Integer",Description:"Expected alternate allele counts"},FT:{Number:1,Type:"String",Description:'Filter indicating if this genotype was "called"'},GL:{Number:"G",Type:"Float",Description:"Genotype likelihoods"},GP:{Number:"G",Type:"Float",Description:"Genotype posterior probabilities"},GQ:{Number:1,Type:"Integer",Description:"Conditional genotype quality"},GT:{Number:1,Type:"String",Description:"Genotype"},HQ:{Number:2,Type:"Integer",Description:"Haplotype quality"},MQ:{Number:1,Type:"Integer",Description:"RMS mapping quality"},PL:{Number:"G",Type:"Integer",Description:"Phred-scaled genotype likelihoods rounded to the closest integer"},PQ:{Number:1,Type:"Integer",Description:"Phasing quality"},PS:{Number:1,Type:"Integer",Description:"Phase set"}},AltTypes:{DEL:{Description:"Deletion relative to the reference"},INS:{Description:"Insertion of novel sequence relative to the reference"},DUP:{Description:"Region of elevated copy number relative to the reference"},INV:{Description:"Inversion of reference sequence"},CNV:{Description:"Copy number variable region (may be both deletion and duplication)"},"DUP:TANDEM":{Description:"Tandem duplication"},"DEL:ME":{Description:"Deletion of mobile element relative to the reference"},"INS:ME":{Description:"Insertion of a mobile element relative to the reference"},NON_REF:{Description:"Represents any possible alternative allele at this location"},"*":{Description:"Represents any possible alternative allele at this location"}},FilterTypes:{PASS:{Description:"Passed all filters"}}};function NL(n){try{return decodeURIComponent(n)}catch{return n}}class TL{constructor({header:t="",strict:e=!0}){if(!t.length)throw new Error("empty header received");const r=t.split(/[\r\n]+/).filter(Boolean);if(!r.length)throw new Error("no non-empty header lines specified");this.strict=e,this.metadata={INFO:{...CA.InfoFields},FORMAT:{...CA.GenotypeFields},ALT:{...CA.AltTypes},FILTER:{...CA.FilterTypes}};let i;for(let l=0;l<r.length;l++){const c=r[l];if(c.startsWith("#"))c.startsWith("##")?this.parseMetadata(c):i=c;else throw new Error(`Bad line in header:
888
869
  ${c}`)}if(!i)throw new Error("No format line found in header");const s=i.trim().split(" "),o=s.slice(0,8),a=["#CHROM","POS","ID","REF","ALT","QUAL","FILTER","INFO"];if(s.length<8)throw new Error(`VCF header missing columns:
889
870
  ${i}`);if(o.length!==a.length||!o.every((l,c)=>l===a[c]))throw new Error(`VCF column headers not correct:
890
- ${i}`);this.samples=s.slice(9)}parseInfo(t){var a;const e={},r=t.includes("%"),i=t.split(";"),s=this.metadata.INFO,o=i.length;for(let l=0;l<o;l++){const c=i[l],u=c.indexOf("="),f=u===-1?c:c.slice(0,u),h=u===-1?void 0:c.slice(u+1),A=(a=s[f])==null?void 0:a.Type;if(A==="Flag")e[f]=!0;else if(!h)e[f]=!0;else{const d=A==="Integer"||A==="Float",g=h.split(","),p=g.length;if(r){const C=[];for(let w=0;w<p;w++){const b=g[w];if(b===".")C.push(void 0);else{const y=P7(b);C.push(d?Number(y):y)}}e[f]=C}else{const C=[];for(let w=0;w<p;w++){const b=g[w];b==="."?C.push(void 0):C.push(d?Number(b):b)}e[f]=C}}}return e}parseSamples(t,e){var i;const r={};if(t){const s=e.split(" "),o=t.split(":"),a=this.metadata.FORMAT,l=[];for(let f=0;f<o.length;f++){const h=(i=a[o[f]])==null?void 0:i.Type;l.push(h==="Integer"||h==="Float")}const c=o.length,u=this.samples.length;for(let f=0;f<u;f++){const h=this.samples[f],A={},d=s[f],g=d.length;let p=0,C=0;for(let w=0;w<=g;w++)if(w===g||d[w]===":"){const b=d.slice(p,w);if(b===""||b===".")A[o[C]]=void 0;else{const y=b.split(","),x=[];if(l[C])for(let B=0;B<y.length;B++){const E=y[B];x.push(E==="."?void 0:+E)}else for(let B=0;B<y.length;B++){const E=y[B];x.push(E==="."?void 0:E)}A[o[C]]=x}if(p=w+1,C+=1,C>=c)break}r[h]=A}}return r}parseMetadata(t){const e=/^##(.+?)=(.*)/.exec(t.trim());if(!e)throw new Error(`Line is not a valid metadata line: ${t}`);const[r,i]=e.slice(1,3),s=r;if(i!=null&&i.startsWith("<")){s in this.metadata||(this.metadata[s]={});const[o,a]=this.parseStructuredMetaVal(i);o?this.metadata[s][o]=a:this.metadata[s]=a}else this.metadata[s]=i}parseStructuredMetaVal(t){const e=T7(t),r=e.ID;return delete e.ID,"Number"in e&&(Number.isNaN(Number(e.Number))||(e.Number=Number(e.Number))),[r,e]}getMetadata(...t){let e=this.metadata;const r=t.length;for(let i=0;i<r;i++)if(e=e[t[i]],!e)return e;return e}parseLine(t){let e=0,r=0;for(;e<t.length&&r<9;)t[e]===" "&&(r+=1),e+=1;const i=r===9?e-1:e,s=t.slice(0,i).split(" "),o=t.slice(i+1),[a,l,c,u,f,h,A]=s,d=a,g=+l,p=c==="."?void 0:c.split(";"),C=u,w=f==="."?void 0:f.split(","),b=h==="."?void 0:+h,y=A==="."?void 0:A.split(";"),x=s[8];if(this.strict&&!s[7])throw new Error("no INFO field specified, must contain at least a '.' (turn off strict mode to allow)");const B=s[7]===void 0||s[7]==="."?{}:this.parseInfo(s[7]);return{CHROM:d,POS:g,ALT:w,INFO:B,REF:C,FILTER:(y==null?void 0:y.length)===1&&y[0]==="PASS"?"PASS":y,ID:p,QUAL:b,FORMAT:x,SAMPLES:()=>this.parseSamples(s[8]??"",o),GENOTYPES:()=>M7(s[8]??"",o,this.samples)}}}const O7=Object.freeze(Object.defineProperty({__proto__:null,default:L7},Symbol.toStringTag,{value:"Module"}));ee.GenomeSpy=yy,ee.embed=zR,ee.favIcon=GR,ee.html=be,ee.icon=UR,ee.loadSpec=wy,Object.defineProperty(ee,Symbol.toStringTag,{value:"Module"})}));
871
+ ${i}`);this.samples=s.slice(9)}parseInfo(t){var a;const e={},r=t.includes("%"),i=t.split(";"),s=this.metadata.INFO,o=i.length;for(let l=0;l<o;l++){const c=i[l],u=c.indexOf("="),f=u===-1?c:c.slice(0,u),h=u===-1?void 0:c.slice(u+1),A=(a=s[f])==null?void 0:a.Type;if(A==="Flag")e[f]=!0;else if(!h)e[f]=!0;else{const d=A==="Integer"||A==="Float",p=h.split(","),C=p.length;if(r){const m=[];for(let w=0;w<C;w++){const b=p[w];if(b===".")m.push(void 0);else{const y=NL(b);m.push(d?Number(y):y)}}e[f]=m}else{const m=[];for(let w=0;w<C;w++){const b=p[w];b==="."?m.push(void 0):m.push(d?Number(b):b)}e[f]=m}}}return e}parseSamples(t,e){var i;const r={};if(t){const s=e.split(" "),o=t.split(":"),a=this.metadata.FORMAT,l=[];for(let f=0;f<o.length;f++){const h=(i=a[o[f]])==null?void 0:i.Type;l.push(h==="Integer"||h==="Float")}const c=o.length,u=this.samples.length;for(let f=0;f<u;f++){const h=this.samples[f],A={},d=s[f],p=d.length;let C=0,m=0;for(let w=0;w<=p;w++)if(w===p||d[w]===":"){const b=d.slice(C,w);if(b===""||b===".")A[o[m]]=void 0;else{const y=b.split(","),x=[];if(l[m])for(let B=0;B<y.length;B++){const E=y[B];x.push(E==="."?void 0:+E)}else for(let B=0;B<y.length;B++){const E=y[B];x.push(E==="."?void 0:E)}A[o[m]]=x}if(C=w+1,m+=1,m>=c)break}r[h]=A}}return r}parseMetadata(t){const e=/^##(.+?)=(.*)/.exec(t.trim());if(!e)throw new Error(`Line is not a valid metadata line: ${t}`);const[r,i]=e.slice(1,3),s=r;if(i!=null&&i.startsWith("<")){s in this.metadata||(this.metadata[s]={});const[o,a]=this.parseStructuredMetaVal(i);o?this.metadata[s][o]=a:this.metadata[s]=a}else this.metadata[s]=i}parseStructuredMetaVal(t){const e=RL(t),r=e.ID;return delete e.ID,"Number"in e&&(Number.isNaN(Number(e.Number))||(e.Number=Number(e.Number))),[r,e]}getMetadata(...t){let e=this.metadata;const r=t.length;for(let i=0;i<r;i++)if(e=e[t[i]],!e)return e;return e}parseLine(t){let e=0,r=0;for(;e<t.length&&r<9;)t[e]===" "&&(r+=1),e+=1;const i=r===9?e-1:e,s=t.slice(0,i).split(" "),o=t.slice(i+1),[a,l,c,u,f,h,A]=s,d=a,p=+l,C=c==="."?void 0:c.split(";"),m=u,w=f==="."?void 0:f.split(","),b=h==="."?void 0:+h,y=A==="."?void 0:A.split(";"),x=s[8];if(this.strict&&!s[7])throw new Error("no INFO field specified, must contain at least a '.' (turn off strict mode to allow)");const B=s[7]===void 0||s[7]==="."?{}:this.parseInfo(s[7]);return{CHROM:d,POS:p,ALT:w,INFO:B,REF:m,FILTER:(y==null?void 0:y.length)===1&&y[0]==="PASS"?"PASS":y,ID:C,QUAL:b,FORMAT:x,SAMPLES:()=>this.parseSamples(s[8]??"",o),GENOTYPES:()=>kL(s[8]??"",o,this.samples)}}}const PL=Object.freeze(Object.defineProperty({__proto__:null,default:TL},Symbol.toStringTag,{value:"Module"}));te.GenomeSpy=U2,te.embed=U9,te.favIcon=O9,te.html=pe,te.icon=L9,te.loadSpec=G2,Object.defineProperty(te,Symbol.toStringTag,{value:"Module"})}));