<!doctype html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Tachyon Profiler - Flamegraph Report</title>
    <script>
// https://d3js.org v7.8.5 Copyright 2010-2023 Mike Bostock
!function(t,n){"object"==typeof exports&&"undefined"!=typeof module?n(exports):"function"==typeof define&&define.amd?define(["exports"],n):n((t="undefined"!=typeof globalThis?globalThis:t||self).d3=t.d3||{})}(this,(function(t){"use strict";function n(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function e(t,n){return null==t||null==n?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function r(t){let r,o,a;function u(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<0?e=r+1:i=r}while(e<i)}return e}return 2!==t.length?(r=n,o=(e,r)=>n(t(e),r),a=(n,e)=>t(n)-e):(r=t===n||t===e?t:i,o=t,a=t),{left:u,center:function(t,n,e=0,r=t.length){const i=u(t,n,e,r-1);return i>e&&a(t[i-1],n)>-a(t[i],n)?i-1:i},right:function(t,n,e=0,i=t.length){if(e<i){if(0!==r(n,n))return i;do{const r=e+i>>>1;o(t[r],n)<=0?e=r+1:i=r}while(e<i)}return e}}}function i(){return 0}function o(t){return null===t?NaN:+t}const a=r(n),u=a.right,c=a.left,f=r(o).center;var s=u;const l=d(y),h=d((function(t){const n=y(t);return(t,e,r,i,o)=>{n(t,e,(r<<=2)+0,(i<<=2)+0,o<<=2),n(t,e,r+1,i+1,o),n(t,e,r+2,i+2,o),n(t,e,r+3,i+3,o)}}));function d(t){return function(n,e,r=e){if(!((e=+e)>=0))throw new RangeError("invalid rx");if(!((r=+r)>=0))throw new RangeError("invalid ry");let{data:i,width:o,height:a}=n;if(!((o=Math.floor(o))>=0))throw new RangeError("invalid width");if(!((a=Math.floor(void 0!==a?a:i.length/o))>=0))throw new RangeError("invalid height");if(!o||!a||!e&&!r)return n;const u=e&&t(e),c=r&&t(r),f=i.slice();return u&&c?(p(u,f,i,o,a),p(u,i,f,o,a),p(u,f,i,o,a),g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)):u?(p(u,i,f,o,a),p(u,f,i,o,a),p(u,i,f,o,a)):c&&(g(c,i,f,o,a),g(c,f,i,o,a),g(c,i,f,o,a)),n}}function p(t,n,e,r,i){for(let o=0,a=r*i;o<a;)t(n,e,o,o+=r,1)}function g(t,n,e,r,i){for(let o=0,a=r*i;o<r;++o)t(n,e,o,o+a,r)}function y(t){const n=Math.floor(t);if(n===t)return function(t){const n=2*t+1;return(e,r,i,o,a)=>{if(!((o-=a)>=i))return;let u=t*r[i];const c=a*t;for(let t=i,n=i+c;t<n;t+=a)u+=r[Math.min(o,t)];for(let t=i,f=o;t<=f;t+=a)u+=r[Math.min(o,t+c)],e[t]=u/n,u-=r[Math.max(i,t-c)]}}(t);const e=t-n,r=2*t+1;return(t,i,o,a,u)=>{if(!((a-=u)>=o))return;let c=n*i[o];const f=u*n,s=f+u;for(let t=o,n=o+f;t<n;t+=u)c+=i[Math.min(a,t)];for(let n=o,l=a;n<=l;n+=u)c+=i[Math.min(a,n+f)],t[n]=(c+e*(i[Math.max(o,n-s)]+i[Math.min(a,n+s)]))/r,c-=i[Math.max(o,n-f)]}}function v(t,n){let e=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&++e;else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(i=+i)>=i&&++e}return e}function _(t){return 0|t.length}function b(t){return!(t>0)}function m(t){return"object"!=typeof t||"length"in t?t:Array.from(t)}function x(t,n){let e,r=0,i=0,o=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(e=n-i,i+=e/++r,o+=e*(n-i));else{let a=-1;for(let u of t)null!=(u=n(u,++a,t))&&(u=+u)>=u&&(e=u-i,i+=e/++r,o+=e*(u-i))}if(r>1)return o/(r-1)}function w(t,n){const e=x(t,n);return e?Math.sqrt(e):e}function M(t,n){let e,r;if(void 0===n)for(const n of t)null!=n&&(void 0===e?n>=n&&(e=r=n):(e>n&&(e=n),r<n&&(r=n)));else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(void 0===e?o>=o&&(e=r=o):(e>o&&(e=o),r<o&&(r=o)))}return[e,r]}class T{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const n=this._partials;let e=0;for(let r=0;r<this._n&&r<32;r++){const i=n[r],o=t+i,a=Math.abs(t)<Math.abs(i)?t-(o-i):i-(o-t);a&&(n[e++]=a),t=o}return n[e]=t,this._n=e+1,this}valueOf(){const t=this._partials;let n,e,r,i=this._n,o=0;if(i>0){for(o=t[--i];i>0&&(n=o,e=t[--i],o=n+e,r=e-(o-n),!r););i>0&&(r<0&&t[i-1]<0||r>0&&t[i-1]>0)&&(e=2*r,n=o+e,e==n-o&&(o=n))}return o}}class InternMap extends Map{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const[n,e]of t)this.set(n,e)}get(t){return super.get(A(this,t))}has(t){return super.has(A(this,t))}set(t,n){return super.set(S(this,t),n)}delete(t){return super.delete(E(this,t))}}class InternSet extends Set{constructor(t,n=N){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:n}}),null!=t)for(const n of t)this.add(n)}has(t){return super.has(A(this,t))}add(t){return super.add(S(this,t))}delete(t){return super.delete(E(this,t))}}function A({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):e}function S({_intern:t,_key:n},e){const r=n(e);return t.has(r)?t.get(r):(t.set(r,e),e)}function E({_intern:t,_key:n},e){const r=n(e);return t.has(r)&&(e=t.get(r),t.delete(r)),e}function N(t){return null!==t&&"object"==typeof t?t.valueOf():t}function k(t){return t}function C(t,...n){return F(t,k,k,n)}function P(t,...n){return F(t,Array.from,k,n)}function z(t,n){for(let e=1,r=n.length;e<r;++e)t=t.flatMap((t=>t.pop().map((([n,e])=>[...t,n,e]))));return t}function $(t,n,...e){return F(t,k,n,e)}function D(t,n,...e){return F(t,Array.from,n,e)}function R(t){if(1!==t.length)throw new Error("duplicate key");return t[0]}function F(t,n,e,r){return function t(i,o){if(o>=r.length)return e(i);const a=new InternMap,u=r[o++];let c=-1;for(const t of i){const n=u(t,++c,i),e=a.get(n);e?e.push(t):a.set(n,[t])}for(const[n,e]of a)a.set(n,t(e,o));return n(a)}(t,0)}function q(t,n){return Array.from(n,(n=>t[n]))}function U(t,...n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");t=Array.from(t);let[e]=n;if(e&&2!==e.length||n.length>1){const r=Uint32Array.from(t,((t,n)=>n));return n.length>1?(n=n.map((n=>t.map(n))),r.sort(((t,e)=>{for(const r of n){const n=O(r[t],r[e]);if(n)return n}}))):(e=t.map(e),r.sort(((t,n)=>O(e[t],e[n])))),q(t,r)}return t.sort(I(e))}function I(t=n){if(t===n)return O;if("function"!=typeof t)throw new TypeError("compare is not a function");return(n,e)=>{const r=t(n,e);return r||0===r?r:(0===t(e,e))-(0===t(n,n))}}function O(t,n){return(null==t||!(t>=t))-(null==n||!(n>=n))||(t<n?-1:t>n?1:0)}var B=Array.prototype.slice;function Y(t){return()=>t}const L=Math.sqrt(50),j=Math.sqrt(10),H=Math.sqrt(2);function X(t,n,e){const r=(n-t)/Math.max(0,e),i=Math.floor(Math.log10(r)),o=r/Math.pow(10,i),a=o>=L?10:o>=j?5:o>=H?2:1;let u,c,f;return i<0?(f=Math.pow(10,-i)/a,u=Math.round(t*f),c=Math.round(n*f),u/f<t&&++u,c/f>n&&--c,f=-f):(f=Math.pow(10,i)*a,u=Math.round(t/f),c=Math.round(n/f),u*f<t&&++u,c*f>n&&--c),c<u&&.5<=e&&e<2?X(t,n,2*e):[u,c,f]}function G(t,n,e){if(!((e=+e)>0))return[];if((t=+t)===(n=+n))return[t];const r=n<t,[i,o,a]=r?X(n,t,e):X(t,n,e);if(!(o>=i))return[];const u=o-i+1,c=new Array(u);if(r)if(a<0)for(let t=0;t<u;++t)c[t]=(o-t)/-a;else for(let t=0;t<u;++t)c[t]=(o-t)*a;else if(a<0)for(let t=0;t<u;++t)c[t]=(i+t)/-a;else for(let t=0;t<u;++t)c[t]=(i+t)*a;return c}function V(t,n,e){return X(t=+t,n=+n,e=+e)[2]}function W(t,n,e){e=+e;const r=(n=+n)<(t=+t),i=r?V(n,t,e):V(t,n,e);return(r?-1:1)*(i<0?1/-i:i)}function Z(t,n,e){let r;for(;;){const i=V(t,n,e);if(i===r||0===i||!isFinite(i))return[t,n];i>0?(t=Math.floor(t/i)*i,n=Math.ceil(n/i)*i):i<0&&(t=Math.ceil(t*i)/i,n=Math.floor(n*i)/i),r=i}}function K(t){return Math.max(1,Math.ceil(Math.log(v(t))/Math.LN2)+1)}function Q(){var t=k,n=M,e=K;function r(r){Array.isArray(r)||(r=Array.from(r));var i,o,a,u=r.length,c=new Array(u);for(i=0;i<u;++i)c[i]=t(r[i],i,r);var f=n(c),l=f[0],h=f[1],d=e(c,l,h);if(!Array.isArray(d)){const t=h,e=+d;if(n===M&&([l,h]=Z(l,h,e)),(d=G(l,h,e))[0]<=l&&(a=V(l,h,e)),d[d.length-1]>=h)if(t>=h&&n===M){const t=V(l,h,e);isFinite(t)&&(t>0?h=(Math.floor(h/t)+1)*t:t<0&&(h=(Math.ceil(h*-t)+1)/-t))}else d.pop()}for(var p=d.length,g=0,y=p;d[g]<=l;)++g;for(;d[y-1]>h;)--y;(g||y<p)&&(d=d.slice(g,y),p=y-g);var v,_=new Array(p+1);for(i=0;i<=p;++i)(v=_[i]=[]).x0=i>0?d[i-1]:l,v.x1=i<p?d[i]:h;if(isFinite(a)){if(a>0)for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[Math.min(p,Math.floor((o-l)/a))].push(r[i]);else if(a<0)for(i=0;i<u;++i)if(null!=(o=c[i])&&l<=o&&o<=h){const t=Math.floor((l-o)*a);_[Math.min(p,t+(d[t]<=o))].push(r[i])}}else for(i=0;i<u;++i)null!=(o=c[i])&&l<=o&&o<=h&&_[s(d,o,0,p)].push(r[i]);return _}return r.value=function(n){return arguments.length?(t="function"==typeof n?n:Y(n),r):t},r.domain=function(t){return arguments.length?(n="function"==typeof t?t:Y([t[0],t[1]]),r):n},r.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Y(Array.isArray(t)?B.call(t):t),r):e},r}function J(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e<n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e<i||void 0===e&&i>=i)&&(e=i)}return e}function tt(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e<n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e<o||void 0===e&&o>=o)&&(e=o,r=i);return r}function nt(t,n){let e;if(void 0===n)for(const n of t)null!=n&&(e>n||void 0===e&&n>=n)&&(e=n);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&(e>i||void 0===e&&i>=i)&&(e=i)}return e}function et(t,n){let e,r=-1,i=-1;if(void 0===n)for(const n of t)++i,null!=n&&(e>n||void 0===e&&n>=n)&&(e=n,r=i);else for(let o of t)null!=(o=n(o,++i,t))&&(e>o||void 0===e&&o>=o)&&(e=o,r=i);return r}function rt(t,n,e=0,r=1/0,i){if(n=Math.floor(n),e=Math.floor(Math.max(0,e)),r=Math.floor(Math.min(t.length-1,r)),!(e<=n&&n<=r))return t;for(i=void 0===i?O:I(i);r>e;){if(r-e>600){const o=r-e+1,a=n-e+1,u=Math.log(o),c=.5*Math.exp(2*u/3),f=.5*Math.sqrt(u*c*(o-c)/o)*(a-o/2<0?-1:1);rt(t,n,Math.max(e,Math.floor(n-a*c/o+f)),Math.min(r,Math.floor(n+(o-a)*c/o+f)),i)}const o=t[n];let a=e,u=r;for(it(t,e,n),i(t[r],o)>0&&it(t,e,r);a<u;){for(it(t,a,u),++a,--u;i(t[a],o)<0;)++a;for(;i(t[u],o)>0;)--u}0===i(t[e],o)?it(t,e,u):(++u,it(t,u,r)),u<=n&&(e=u+1),n<=u&&(r=u-1)}return t}function it(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function ot(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)>0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)>0:0===e(n,n))&&(r=n,i=!0);return r}function at(t,n,e){if(t=Float64Array.from(function*(t,n){if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(yield n);else{let e=-1;for(let r of t)null!=(r=n(r,++e,t))&&(r=+r)>=r&&(yield r)}}(t,e)),(r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return nt(t);if(n>=1)return J(t);var r,i=(r-1)*n,o=Math.floor(i),a=J(rt(t,o).subarray(0,o+1));return a+(nt(t.subarray(o+1))-a)*(i-o)}}function ut(t,n,e=o){if((r=t.length)&&!isNaN(n=+n)){if(n<=0||r<2)return+e(t[0],0,t);if(n>=1)return+e(t[r-1],r-1,t);var r,i=(r-1)*n,a=Math.floor(i),u=+e(t[a],a,t);return u+(+e(t[a+1],a+1,t)-u)*(i-a)}}function ct(t,n,e=o){if(!isNaN(n=+n)){if(r=Float64Array.from(t,((n,r)=>o(e(t[r],r,t)))),n<=0)return et(r);if(n>=1)return tt(r);var r,i=Uint32Array.from(t,((t,n)=>n)),a=r.length-1,u=Math.floor(a*n);return rt(i,u,0,a,((t,n)=>O(r[t],r[n]))),(u=ot(i.subarray(0,u+1),(t=>r[t])))>=0?u:-1}}function ft(t){return Array.from(function*(t){for(const n of t)yield*n}(t))}function st(t,n){return[t,n]}function lt(t,n,e){t=+t,n=+n,e=(i=arguments.length)<2?(n=t,t=0,1):i<3?1:+e;for(var r=-1,i=0|Math.max(0,Math.ceil((n-t)/e)),o=new Array(i);++r<i;)o[r]=t+r*e;return o}function ht(t,e=n){if(1===e.length)return et(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)<0)&&(r=n,i=o);return i}var dt=pt(Math.random);function pt(t){return function(n,e=0,r=n.length){let i=r-(e=+e);for(;i;){const r=t()*i--|0,o=n[i+e];n[i+e]=n[r+e],n[r+e]=o}return n}}function gt(t){if(!(i=t.length))return[];for(var n=-1,e=nt(t,yt),r=new Array(e);++n<e;)for(var i,o=-1,a=r[n]=new Array(i);++o<i;)a[o]=t[o][n];return r}function yt(t){return t.length}function vt(t){return t instanceof InternSet?t:new InternSet(t)}function _t(t,n){const e=t[Symbol.iterator](),r=new Set;for(const t of n){const n=bt(t);if(r.has(n))continue;let i,o;for(;({value:i,done:o}=e.next());){if(o)return!1;const t=bt(i);if(r.add(t),Object.is(n,t))break}}return!0}function bt(t){return null!==t&&"object"==typeof t?t.valueOf():t}function mt(t){return t}var xt=1,wt=2,Mt=3,Tt=4,At=1e-6;function St(t){return"translate("+t+",0)"}function Et(t){return"translate(0,"+t+")"}function Nt(t){return n=>+t(n)}function kt(t,n){return n=Math.max(0,t.bandwidth()-2*n)/2,t.round()&&(n=Math.round(n)),e=>+t(e)+n}function Ct(){return!this.__axis}function Pt(t,n){var e=[],r=null,i=null,o=6,a=6,u=3,c="undefined"!=typeof window&&window.devicePixelRatio>1?0:.5,f=t===xt||t===Tt?-1:1,s=t===Tt||t===wt?"x":"y",l=t===xt||t===Mt?St:Et;function h(h){var d=null==r?n.ticks?n.ticks.apply(n,e):n.domain():r,p=null==i?n.tickFormat?n.tickFormat.apply(n,e):mt:i,g=Math.max(o,0)+u,y=n.range(),v=+y[0]+c,_=+y[y.length-1]+c,b=(n.bandwidth?kt:Nt)(n.copy(),c),m=h.selection?h.selection():h,x=m.selectAll(".domain").data([null]),w=m.selectAll(".tick").data(d,n).order(),M=w.exit(),T=w.enter().append("g").attr("class","tick"),A=w.select("line"),S=w.select("text");x=x.merge(x.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),w=w.merge(T),A=A.merge(T.append("line").attr("stroke","currentColor").attr(s+"2",f*o)),S=S.merge(T.append("text").attr("fill","currentColor").attr(s,f*g).attr("dy",t===xt?"0em":t===Mt?"0.71em":"0.32em")),h!==m&&(x=x.transition(h),w=w.transition(h),A=A.transition(h),S=S.transition(h),M=M.transition(h).attr("opacity",At).attr("transform",(function(t){return isFinite(t=b(t))?l(t+c):this.getAttribute("transform")})),T.attr("opacity",At).attr("transform",(function(t){var n=this.parentNode.__axis;return l((n&&isFinite(n=n(t))?n:b(t))+c)}))),M.remove(),x.attr("d",t===Tt||t===wt?a?"M"+f*a+","+v+"H"+c+"V"+_+"H"+f*a:"M"+c+","+v+"V"+_:a?"M"+v+","+f*a+"V"+c+"H"+_+"V"+f*a:"M"+v+","+c+"H"+_),w.attr("opacity",1).attr("transform",(function(t){return l(b(t)+c)})),A.attr(s+"2",f*o),S.attr(s,f*g).text(p),m.filter(Ct).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",t===wt?"start":t===Tt?"end":"middle"),m.each((function(){this.__axis=b}))}return h.scale=function(t){return arguments.length?(n=t,h):n},h.ticks=function(){return e=Array.from(arguments),h},h.tickArguments=function(t){return arguments.length?(e=null==t?[]:Array.from(t),h):e.slice()},h.tickValues=function(t){return arguments.length?(r=null==t?null:Array.from(t),h):r&&r.slice()},h.tickFormat=function(t){return arguments.length?(i=t,h):i},h.tickSize=function(t){return arguments.length?(o=a=+t,h):o},h.tickSizeInner=function(t){return arguments.length?(o=+t,h):o},h.tickSizeOuter=function(t){return arguments.length?(a=+t,h):a},h.tickPadding=function(t){return arguments.length?(u=+t,h):u},h.offset=function(t){return arguments.length?(c=+t,h):c},h}var zt={value:()=>{}};function $t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new Dt(r)}function Dt(t){this._=t}function Rt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function Ft(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=zt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}Dt.prototype=$t.prototype={constructor:Dt,on:function(t,n){var e,r,i=this._,o=(r=i,(t+"").trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");if(e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),t&&!r.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:n}}))),a=-1,u=o.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++a<u;)if(e=(t=o[a]).type)i[e]=Ft(i[e],t.name,n);else if(null==n)for(e in i)i[e]=Ft(i[e],t.name,null);return this}for(;++a<u;)if((e=(t=o[a]).type)&&(e=Rt(i[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new Dt(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};var qt="http://www.w3.org/1999/xhtml",Ut={svg:"http://www.w3.org/2000/svg",xhtml:qt,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function It(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),Ut.hasOwnProperty(n)?{space:Ut[n],local:t}:t}function Ot(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===qt&&n.documentElement.namespaceURI===qt?n.createElement(t):n.createElementNS(e,t)}}function Bt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function Yt(t){var n=It(t);return(n.local?Bt:Ot)(n)}function Lt(){}function jt(t){return null==t?Lt:function(){return this.querySelector(t)}}function Ht(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function Xt(){return[]}function Gt(t){return null==t?Xt:function(){return this.querySelectorAll(t)}}function Vt(t){return function(){return this.matches(t)}}function Wt(t){return function(n){return n.matches(t)}}var Zt=Array.prototype.find;function Kt(){return this.firstElementChild}var Qt=Array.prototype.filter;function Jt(){return Array.from(this.children)}function tn(t){return new Array(t.length)}function nn(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function en(t,n,e,r,i,o){for(var a,u=0,c=n.length,f=o.length;u<f;++u)(a=n[u])?(a.__data__=o[u],r[u]=a):e[u]=new nn(t,o[u]);for(;u<c;++u)(a=n[u])&&(i[u]=a)}function rn(t,n,e,r,i,o,a){var u,c,f,s=new Map,l=n.length,h=o.length,d=new Array(l);for(u=0;u<l;++u)(c=n[u])&&(d[u]=f=a.call(c,c.__data__,u,n)+"",s.has(f)?i[u]=c:s.set(f,c));for(u=0;u<h;++u)f=a.call(t,o[u],u,o)+"",(c=s.get(f))?(r[u]=c,c.__data__=o[u],s.delete(f)):e[u]=new nn(t,o[u]);for(u=0;u<l;++u)(c=n[u])&&s.get(d[u])===c&&(i[u]=c)}function on(t){return t.__data__}function an(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function un(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}function cn(t){return function(){this.removeAttribute(t)}}function fn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function sn(t,n){return function(){this.setAttribute(t,n)}}function ln(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function hn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function dn(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function pn(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function gn(t){return function(){this.style.removeProperty(t)}}function yn(t,n,e){return function(){this.style.setProperty(t,n,e)}}function vn(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function _n(t,n){return t.style.getPropertyValue(n)||pn(t).getComputedStyle(t,null).getPropertyValue(n)}function bn(t){return function(){delete this[t]}}function mn(t,n){return function(){this[t]=n}}function xn(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function wn(t){return t.trim().split(/^|\s+/)}function Mn(t){return t.classList||new Tn(t)}function Tn(t){this._node=t,this._names=wn(t.getAttribute("class")||"")}function An(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function Sn(t,n){for(var e=Mn(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function En(t){return function(){An(this,t)}}function Nn(t){return function(){Sn(this,t)}}function kn(t,n){return function(){(n.apply(this,arguments)?An:Sn)(this,t)}}function Cn(){this.textContent=""}function Pn(t){return function(){this.textContent=t}}function zn(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function $n(){this.innerHTML=""}function Dn(t){return function(){this.innerHTML=t}}function Rn(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Fn(){this.nextSibling&&this.parentNode.appendChild(this)}function qn(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Un(){return null}function In(){var t=this.parentNode;t&&t.removeChild(this)}function On(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Bn(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function Yn(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function Ln(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var a=0,u=i.length;a<u;++a)if((r=i[a]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function jn(t,n,e){var r=pn(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function Hn(t,n){return function(){return jn(this,t,n)}}function Xn(t,n){return function(){return jn(this,t,n.apply(this,arguments))}}nn.prototype={constructor:nn,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}},Tn.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var Gn=[null];function Vn(t,n){this._groups=t,this._parents=n}function Wn(){return new Vn([[document.documentElement]],Gn)}function Zn(t){return"string"==typeof t?new Vn([[document.querySelector(t)]],[document.documentElement]):new Vn([[t]],Gn)}Vn.prototype=Wn.prototype={constructor:Vn,select:function(t){"function"!=typeof t&&(t=jt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a,u=n[i],c=u.length,f=r[i]=new Array(c),s=0;s<c;++s)(o=u[s])&&(a=t.call(o,o.__data__,s,u))&&("__data__"in o&&(a.__data__=o.__data__),f[s]=a);return new Vn(r,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return Ht(t.apply(this,arguments))}}(t):Gt(t);for(var n=this._groups,e=n.length,r=[],i=[],o=0;o<e;++o)for(var a,u=n[o],c=u.length,f=0;f<c;++f)(a=u[f])&&(r.push(t.call(a,a.__data__,f,u)),i.push(a));return new Vn(r,i)},selectChild:function(t){return this.select(null==t?Kt:function(t){return function(){return Zt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},selectChildren:function(t){return this.selectAll(null==t?Jt:function(t){return function(){return Qt.call(this.children,t)}}("function"==typeof t?t:Wt(t)))},filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new Vn(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,on);var e=n?rn:en,r=this._parents,i=this._groups;"function"!=typeof t&&(t=function(t){return function(){return t}}(t));for(var o=i.length,a=new Array(o),u=new Array(o),c=new Array(o),f=0;f<o;++f){var s=r[f],l=i[f],h=l.length,d=an(t.call(s,s&&s.__data__,f,r)),p=d.length,g=u[f]=new Array(p),y=a[f]=new Array(p);e(s,l,g,y,c[f]=new Array(h),d,n);for(var v,_,b=0,m=0;b<p;++b)if(v=g[b]){for(b>=m&&(m=b+1);!(_=y[m])&&++m<p;);v._next=_||null}}return(a=new Vn(a,r))._enter=u,a._exit=c,a},enter:function(){return new Vn(this._enter||this._groups.map(tn),this._parents)},exit:function(){return new Vn(this._exit||this._groups.map(tn),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,a=Math.min(i,o),u=new Array(i),c=0;c<a;++c)for(var f,s=e[c],l=r[c],h=s.length,d=u[c]=new Array(h),p=0;p<h;++p)(f=s[p]||l[p])&&(d[p]=f);for(;c<i;++c)u[c]=e[c];return new Vn(u,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,a=i[o];--o>=0;)(r=i[o])&&(a&&4^r.compareDocumentPosition(a)&&a.parentNode.insertBefore(r,a),a=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=un);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var a,u=e[o],c=u.length,f=i[o]=new Array(c),s=0;s<c;++s)(a=u[s])&&(f[s]=a);f.sort(n)}return new Vn(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var a=r[i];if(a)return a}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],a=0,u=o.length;a<u;++a)(i=o[a])&&t.call(i,i.__data__,a,o);return this},attr:function(t,n){var e=It(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?fn:cn:"function"==typeof n?e.local?dn:hn:e.local?ln:sn)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?gn:"function"==typeof n?vn:yn)(t,n,null==e?"":e)):_n(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?bn:"function"==typeof n?xn:mn)(t,n)):this.node()[t]},classed:function(t,n){var e=wn(t+"");if(arguments.length<2){for(var r=Mn(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?kn:n?En:Nn)(e,n))},text:function(t){return arguments.length?this.each(null==t?Cn:("function"==typeof t?zn:Pn)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?$n:("function"==typeof t?Rn:Dn)(t)):this.node().innerHTML},raise:function(){return this.each(Fn)},lower:function(){return this.each(qn)},append:function(t){var n="function"==typeof t?t:Yt(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:Yt(t),r=null==n?Un:"function"==typeof n?n:jt(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),r.apply(this,arguments)||null)}))},remove:function(){return this.each(In)},clone:function(t){return this.select(t?Bn:On)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=function(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}(t+""),a=o.length;if(!(arguments.length<2)){for(u=n?Ln:Yn,r=0;r<a;++r)this.each(u(o[r],n,e));return this}var u=this.node().__on;if(u)for(var c,f=0,s=u.length;f<s;++f)for(r=0,c=u[f];r<a;++r)if((i=o[r]).type===c.type&&i.name===c.name)return c.value},dispatch:function(t,n){return this.each(("function"==typeof n?Xn:Hn)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,a=i.length;o<a;++o)(r=i[o])&&(yield r)}};var Kn=0;function Qn(){return new Jn}function Jn(){this._="@"+(++Kn).toString(36)}function te(t){let n;for(;n=t.sourceEvent;)t=n;return t}function ne(t,n){if(t=te(t),void 0===n&&(n=t.currentTarget),n){var e=n.ownerSVGElement||n;if(e.createSVGPoint){var r=e.createSVGPoint();return r.x=t.clientX,r.y=t.clientY,[(r=r.matrixTransform(n.getScreenCTM().inverse())).x,r.y]}if(n.getBoundingClientRect){var i=n.getBoundingClientRect();return[t.clientX-i.left-n.clientLeft,t.clientY-i.top-n.clientTop]}}return[t.pageX,t.pageY]}Jn.prototype=Qn.prototype={constructor:Jn,get:function(t){for(var n=this._;!(n in t);)if(!(t=t.parentNode))return;return t[n]},set:function(t,n){return t[this._]=n},remove:function(t){return this._ in t&&delete t[this._]},toString:function(){return this._}};const ee={passive:!1},re={capture:!0,passive:!1};function ie(t){t.stopImmediatePropagation()}function oe(t){t.preventDefault(),t.stopImmediatePropagation()}function ae(t){var n=t.document.documentElement,e=Zn(t).on("dragstart.drag",oe,re);"onselectstart"in n?e.on("selectstart.drag",oe,re):(n.__noselect=n.style.MozUserSelect,n.style.MozUserSelect="none")}function ue(t,n){var e=t.document.documentElement,r=Zn(t).on("dragstart.drag",null);n&&(r.on("click.drag",oe,re),setTimeout((function(){r.on("click.drag",null)}),0)),"onselectstart"in e?r.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}var ce=t=>()=>t;function fe(t,{sourceEvent:n,subject:e,target:r,identifier:i,active:o,x:a,y:u,dx:c,dy:f,dispatch:s}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:r,enumerable:!0,configurable:!0},identifier:{value:i,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:a,enumerable:!0,configurable:!0},y:{value:u,enumerable:!0,configurable:!0},dx:{value:c,enumerable:!0,configurable:!0},dy:{value:f,enumerable:!0,configurable:!0},_:{value:s}})}function se(t){return!t.ctrlKey&&!t.button}function le(){return this.parentNode}function he(t,n){return null==n?{x:t.x,y:t.y}:n}function de(){return navigator.maxTouchPoints||"ontouchstart"in this}function pe(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function ge(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function ye(){}fe.prototype.on=function(){var t=this._.on.apply(this._,arguments);return t===this._?this:t};var ve=.7,_e=1/ve,be="\\s*([+-]?\\d+)\\s*",me="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xe="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",we=/^#([0-9a-f]{3,8})$/,Me=new RegExp(`^rgb\\(${be},${be},${be}\\)$`),Te=new RegExp(`^rgb\\(${xe},${xe},${xe}\\)$`),Ae=new RegExp(`^rgba\\(${be},${be},${be},${me}\\)$`),Se=new RegExp(`^rgba\\(${xe},${xe},${xe},${me}\\)$`),Ee=new RegExp(`^hsl\\(${me},${xe},${xe}\\)$`),Ne=new RegExp(`^hsla\\(${me},${xe},${xe},${me}\\)$`),ke={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};function Ce(){return this.rgb().formatHex()}function Pe(){return this.rgb().formatRgb()}function ze(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=we.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?$e(n):3===e?new qe(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?De(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?De(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=Me.exec(t))?new qe(n[1],n[2],n[3],1):(n=Te.exec(t))?new qe(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=Ae.exec(t))?De(n[1],n[2],n[3],n[4]):(n=Se.exec(t))?De(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=Ee.exec(t))?Le(n[1],n[2]/100,n[3]/100,1):(n=Ne.exec(t))?Le(n[1],n[2]/100,n[3]/100,n[4]):ke.hasOwnProperty(t)?$e(ke[t]):"transparent"===t?new qe(NaN,NaN,NaN,0):null}function $e(t){return new qe(t>>16&255,t>>8&255,255&t,1)}function De(t,n,e,r){return r<=0&&(t=n=e=NaN),new qe(t,n,e,r)}function Re(t){return t instanceof ye||(t=ze(t)),t?new qe((t=t.rgb()).r,t.g,t.b,t.opacity):new qe}function Fe(t,n,e,r){return 1===arguments.length?Re(t):new qe(t,n,e,null==r?1:r)}function qe(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Ue(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}`}function Ie(){const t=Oe(this.opacity);return`${1===t?"rgb(":"rgba("}${Be(this.r)}, ${Be(this.g)}, ${Be(this.b)}${1===t?")":`, ${t})`}`}function Oe(t){return isNaN(t)?1:Math.max(0,Math.min(1,t))}function Be(t){return Math.max(0,Math.min(255,Math.round(t)||0))}function Ye(t){return((t=Be(t))<16?"0":"")+t.toString(16)}function Le(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xe(t,n,e,r)}function je(t){if(t instanceof Xe)return new Xe(t.h,t.s,t.l,t.opacity);if(t instanceof ye||(t=ze(t)),!t)return new Xe;if(t instanceof Xe)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),a=NaN,u=o-i,c=(o+i)/2;return u?(a=n===o?(e-r)/u+6*(e<r):e===o?(r-n)/u+2:(n-e)/u+4,u/=c<.5?o+i:2-o-i,a*=60):u=c>0&&c<1?0:a,new Xe(a,u,c,t.opacity)}function He(t,n,e,r){return 1===arguments.length?je(t):new Xe(t,n,e,null==r?1:r)}function Xe(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Ge(t){return(t=(t||0)%360)<0?t+360:t}function Ve(t){return Math.max(0,Math.min(1,t||0))}function We(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}pe(ye,ze,{copy(t){return Object.assign(new this.constructor,this,t)},displayable(){return this.rgb().displayable()},hex:Ce,formatHex:Ce,formatHex8:function(){return this.rgb().formatHex8()},formatHsl:function(){return je(this).formatHsl()},formatRgb:Pe,toString:Pe}),pe(qe,Fe,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new qe(this.r*t,this.g*t,this.b*t,this.opacity)},rgb(){return this},clamp(){return new qe(Be(this.r),Be(this.g),Be(this.b),Oe(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:Ue,formatHex:Ue,formatHex8:function(){return`#${Ye(this.r)}${Ye(this.g)}${Ye(this.b)}${Ye(255*(isNaN(this.opacity)?1:this.opacity))}`},formatRgb:Ie,toString:Ie})),pe(Xe,He,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Xe(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Xe(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new qe(We(t>=240?t-240:t+120,i,r),We(t,i,r),We(t<120?t+240:t-120,i,r),this.opacity)},clamp(){return new Xe(Ge(this.h),Ve(this.s),Ve(this.l),Oe(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const t=Oe(this.opacity);return`${1===t?"hsl(":"hsla("}${Ge(this.h)}, ${100*Ve(this.s)}%, ${100*Ve(this.l)}%${1===t?")":`, ${t})`}`}}));const Ze=Math.PI/180,Ke=180/Math.PI,Qe=.96422,Je=1,tr=.82521,nr=4/29,er=6/29,rr=3*er*er,ir=er*er*er;function or(t){if(t instanceof ur)return new ur(t.l,t.a,t.b,t.opacity);if(t instanceof pr)return gr(t);t instanceof qe||(t=Re(t));var n,e,r=lr(t.r),i=lr(t.g),o=lr(t.b),a=cr((.2225045*r+.7168786*i+.0606169*o)/Je);return r===i&&i===o?n=e=a:(n=cr((.4360747*r+.3850649*i+.1430804*o)/Qe),e=cr((.0139322*r+.0971045*i+.7141733*o)/tr)),new ur(116*a-16,500*(n-a),200*(a-e),t.opacity)}function ar(t,n,e,r){return 1===arguments.length?or(t):new ur(t,n,e,null==r?1:r)}function ur(t,n,e,r){this.l=+t,this.a=+n,this.b=+e,this.opacity=+r}function cr(t){return t>ir?Math.pow(t,1/3):t/rr+nr}function fr(t){return t>er?t*t*t:rr*(t-nr)}function sr(t){return 255*(t<=.0031308?12.92*t:1.055*Math.pow(t,1/2.4)-.055)}function lr(t){return(t/=255)<=.04045?t/12.92:Math.pow((t+.055)/1.055,2.4)}function hr(t){if(t instanceof pr)return new pr(t.h,t.c,t.l,t.opacity);if(t instanceof ur||(t=or(t)),0===t.a&&0===t.b)return new pr(NaN,0<t.l&&t.l<100?0:NaN,t.l,t.opacity);var n=Math.atan2(t.b,t.a)*Ke;return new pr(n<0?n+360:n,Math.sqrt(t.a*t.a+t.b*t.b),t.l,t.opacity)}function dr(t,n,e,r){return 1===arguments.length?hr(t):new pr(t,n,e,null==r?1:r)}function pr(t,n,e,r){this.h=+t,this.c=+n,this.l=+e,this.opacity=+r}function gr(t){if(isNaN(t.h))return new ur(t.l,0,0,t.opacity);var n=t.h*Ze;return new ur(t.l,Math.cos(n)*t.c,Math.sin(n)*t.c,t.opacity)}pe(ur,ar,ge(ye,{brighter(t){return new ur(this.l+18*(null==t?1:t),this.a,this.b,this.opacity)},darker(t){return new ur(this.l-18*(null==t?1:t),this.a,this.b,this.opacity)},rgb(){var t=(this.l+16)/116,n=isNaN(this.a)?t:t+this.a/500,e=isNaN(this.b)?t:t-this.b/200;return new qe(sr(3.1338561*(n=Qe*fr(n))-1.6168667*(t=Je*fr(t))-.4906146*(e=tr*fr(e))),sr(-.9787684*n+1.9161415*t+.033454*e),sr(.0719453*n-.2289914*t+1.4052427*e),this.opacity)}})),pe(pr,dr,ge(ye,{brighter(t){return new pr(this.h,this.c,this.l+18*(null==t?1:t),this.opacity)},darker(t){return new pr(this.h,this.c,this.l-18*(null==t?1:t),this.opacity)},rgb(){return gr(this).rgb()}}));var yr=-.14861,vr=1.78277,_r=-.29227,br=-.90649,mr=1.97294,xr=mr*br,wr=mr*vr,Mr=vr*_r-br*yr;function Tr(t,n,e,r){return 1===arguments.length?function(t){if(t instanceof Ar)return new Ar(t.h,t.s,t.l,t.opacity);t instanceof qe||(t=Re(t));var n=t.r/255,e=t.g/255,r=t.b/255,i=(Mr*r+xr*n-wr*e)/(Mr+xr-wr),o=r-i,a=(mr*(e-i)-_r*o)/br,u=Math.sqrt(a*a+o*o)/(mr*i*(1-i)),c=u?Math.atan2(a,o)*Ke-120:NaN;return new Ar(c<0?c+360:c,u,i,t.opacity)}(t):new Ar(t,n,e,null==r?1:r)}function Ar(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sr(t,n,e,r,i){var o=t*t,a=o*t;return((1-3*t+3*o-a)*n+(4-6*o+3*a)*e+(1+3*t+3*o-3*a)*r+a*i)/6}function Er(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],a=r>0?t[r-1]:2*i-o,u=r<n-1?t[r+2]:2*o-i;return Sr((e-r/n)*n,a,i,o,u)}}function Nr(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],a=t[(r+1)%n],u=t[(r+2)%n];return Sr((e-r/n)*n,i,o,a,u)}}pe(Ar,Tr,ge(ye,{brighter(t){return t=null==t?_e:Math.pow(_e,t),new Ar(this.h,this.s,this.l*t,this.opacity)},darker(t){return t=null==t?ve:Math.pow(ve,t),new Ar(this.h,this.s,this.l*t,this.opacity)},rgb(){var t=isNaN(this.h)?0:(this.h+120)*Ze,n=+this.l,e=isNaN(this.s)?0:this.s*n*(1-n),r=Math.cos(t),i=Math.sin(t);return new qe(255*(n+e*(yr*r+vr*i)),255*(n+e*(_r*r+br*i)),255*(n+e*(mr*r)),this.opacity)}}));var kr=t=>()=>t;function Cr(t,n){return function(e){return t+e*n}}function Pr(t,n){var e=n-t;return e?Cr(t,e>180||e<-180?e-360*Math.round(e/360):e):kr(isNaN(t)?n:t)}function zr(t){return 1==(t=+t)?$r:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):kr(isNaN(n)?e:n)}}function $r(t,n){var e=n-t;return e?Cr(t,e):kr(isNaN(t)?n:t)}var Dr=function t(n){var e=zr(n);function r(t,n){var r=e((t=Fe(t)).r,(n=Fe(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),a=$r(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=a(n),t+""}}return r.gamma=t,r}(1);function Rr(t){return function(n){var e,r,i=n.length,o=new Array(i),a=new Array(i),u=new Array(i);for(e=0;e<i;++e)r=Fe(n[e]),o[e]=r.r||0,a[e]=r.g||0,u[e]=r.b||0;return o=t(o),a=t(a),u=t(u),r.opacity=1,function(t){return r.r=o(t),r.g=a(t),r.b=u(t),r+""}}}var Fr=Rr(Er),qr=Rr(Nr);function Ur(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Ir(t){return ArrayBuffer.isView(t)&&!(t instanceof DataView)}function Or(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),a=new Array(r);for(e=0;e<i;++e)o[e]=Gr(t[e],n[e]);for(;e<r;++e)a[e]=n[e];return function(t){for(e=0;e<i;++e)a[e]=o[e](t);return a}}function Br(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Yr(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Lr(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Gr(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var jr=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Hr=new RegExp(jr.source,"g");function Xr(t,n){var e,r,i,o=jr.lastIndex=Hr.lastIndex=0,a=-1,u=[],c=[];for(t+="",n+="";(e=jr.exec(t))&&(r=Hr.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),u[a]?u[a]+=i:u[++a]=i),(e=e[0])===(r=r[0])?u[a]?u[a]+=r:u[++a]=r:(u[++a]=null,c.push({i:a,x:Yr(e,r)})),o=Hr.lastIndex;return o<n.length&&(i=n.slice(o),u[a]?u[a]+=i:u[++a]=i),u.length<2?c[0]?function(t){return function(n){return t(n)+""}}(c[0].x):function(t){return function(){return t}}(n):(n=c.length,function(t){for(var e,r=0;r<n;++r)u[(e=c[r]).i]=e.x(t);return u.join("")})}function Gr(t,n){var e,r=typeof n;return null==n||"boolean"===r?kr(n):("number"===r?Yr:"string"===r?(e=ze(n))?(n=e,Dr):Xr:n instanceof ze?Dr:n instanceof Date?Br:Ir(n)?Ur:Array.isArray(n)?Or:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Lr:Yr)(t,n)}function Vr(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}var Wr,Zr=180/Math.PI,Kr={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qr(t,n,e,r,i,o){var a,u,c;return(a=Math.sqrt(t*t+n*n))&&(t/=a,n/=a),(c=t*e+n*r)&&(e-=t*c,r-=n*c),(u=Math.sqrt(e*e+r*r))&&(e/=u,r/=u,c/=u),t*r<n*e&&(t=-t,n=-n,c=-c,a=-a),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Zr,skewX:Math.atan(c)*Zr,scaleX:a,scaleY:u}}function Jr(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,a){var u=[],c=[];return o=t(o),a=t(a),function(t,r,i,o,a,u){if(t!==i||r!==o){var c=a.push("translate(",null,n,null,e);u.push({i:c-4,x:Yr(t,i)},{i:c-2,x:Yr(r,o)})}else(i||o)&&a.push("translate("+i+n+o+e)}(o.translateX,o.translateY,a.translateX,a.translateY,u,c),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Yr(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,a.rotate,u,c),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Yr(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,a.skewX,u,c),function(t,n,e,r,o,a){if(t!==e||n!==r){var u=o.push(i(o)+"scale(",null,",",null,")");a.push({i:u-4,x:Yr(t,e)},{i:u-2,x:Yr(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,a.scaleX,a.scaleY,u,c),o=a=null,function(t){for(var n,e=-1,r=c.length;++e<r;)u[(n=c[e]).i]=n.x(t);return u.join("")}}}var ti=Jr((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Kr:Qr(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),ni=Jr((function(t){return null==t?Kr:(Wr||(Wr=document.createElementNS("http://www.w3.org/2000/svg","g")),Wr.setAttribute("transform",t),(t=Wr.transform.baseVal.consolidate())?Qr((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Kr)}),", ",")",")");function ei(t){return((t=Math.exp(t))+1/t)/2}var ri=function t(n,e,r){function i(t,i){var o,a,u=t[0],c=t[1],f=t[2],s=i[0],l=i[1],h=i[2],d=s-u,p=l-c,g=d*d+p*p;if(g<1e-12)a=Math.log(h/f)/n,o=function(t){return[u+t*d,c+t*p,f*Math.exp(n*t*a)]};else{var y=Math.sqrt(g),v=(h*h-f*f+r*g)/(2*f*e*y),_=(h*h-f*f-r*g)/(2*h*e*y),b=Math.log(Math.sqrt(v*v+1)-v),m=Math.log(Math.sqrt(_*_+1)-_);a=(m-b)/n,o=function(t){var r=t*a,i=ei(b),o=f/(e*y)*(i*function(t){return((t=Math.exp(2*t))-1)/(t+1)}(n*r+b)-function(t){return((t=Math.exp(t))-1/t)/2}(b));return[u+o*d,c+o*p,f*i/ei(n*r+b)]}}return o.duration=1e3*a*n/Math.SQRT2,o}return i.rho=function(n){var e=Math.max(.001,+n),r=e*e;return t(e,r,r*r)},i}(Math.SQRT2,2,4);function ii(t){return function(n,e){var r=t((n=He(n)).h,(e=He(e)).h),i=$r(n.s,e.s),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.s=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var oi=ii(Pr),ai=ii($r);function ui(t){return function(n,e){var r=t((n=dr(n)).h,(e=dr(e)).h),i=$r(n.c,e.c),o=$r(n.l,e.l),a=$r(n.opacity,e.opacity);return function(t){return n.h=r(t),n.c=i(t),n.l=o(t),n.opacity=a(t),n+""}}}var ci=ui(Pr),fi=ui($r);function si(t){return function n(e){function r(n,r){var i=t((n=Tr(n)).h,(r=Tr(r)).h),o=$r(n.s,r.s),a=$r(n.l,r.l),u=$r(n.opacity,r.opacity);return function(t){return n.h=i(t),n.s=o(t),n.l=a(Math.pow(t,e)),n.opacity=u(t),n+""}}return e=+e,r.gamma=n,r}(1)}var li=si(Pr),hi=si($r);function di(t,n){void 0===n&&(n=t,t=Gr);for(var e=0,r=n.length-1,i=n[0],o=new Array(r<0?0:r);e<r;)o[e]=t(i,i=n[++e]);return function(t){var n=Math.max(0,Math.min(r-1,Math.floor(t*=r)));return o[n](t-n)}}var pi,gi,yi=0,vi=0,_i=0,bi=1e3,mi=0,xi=0,wi=0,Mi="object"==typeof performance&&performance.now?performance:Date,Ti="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Ai(){return xi||(Ti(Si),xi=Mi.now()+wi)}function Si(){xi=0}function Ei(){this._call=this._time=this._next=null}function Ni(t,n,e){var r=new Ei;return r.restart(t,n,e),r}function ki(){Ai(),++yi;for(var t,n=pi;n;)(t=xi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--yi}function Ci(){xi=(mi=Mi.now())+wi,yi=vi=0;try{ki()}finally{yi=0,function(){var t,n,e=pi,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pi=n);gi=t,zi(r)}(),xi=0}}function Pi(){var t=Mi.now(),n=t-mi;n>bi&&(wi-=n,mi=t)}function zi(t){yi||(vi&&(vi=clearTimeout(vi)),t-xi>24?(t<1/0&&(vi=setTimeout(Ci,t-Mi.now()-wi)),_i&&(_i=clearInterval(_i))):(_i||(mi=Mi.now(),_i=setInterval(Pi,bi)),yi=1,Ti(Ci)))}function $i(t,n,e){var r=new Ei;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ei.prototype=Ni.prototype={constructor:Ei,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Ai():+e)+(null==n?0:+n),this._next||gi===this||(gi?gi._next=this:pi=this,gi=this),this._call=t,this._time=e,zi()},stop:function(){this._call&&(this._call=null,this._time=1/0,zi())}};var Di=$t("start","end","cancel","interrupt"),Ri=[],Fi=0,qi=1,Ui=2,Ii=3,Oi=4,Bi=5,Yi=6;function Li(t,n,e,r,i,o){var a=t.__transition;if(a){if(e in a)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=qi,e.timer.restart(a,e.delay,e.time),e.delay<=t&&a(t-e.delay)}function a(o){var f,s,l,h;if(e.state!==qi)return c();for(f in i)if((h=i[f]).name===e.name){if(h.state===Ii)return $i(a);h.state===Oi?(h.state=Yi,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[f]):+f<n&&(h.state=Yi,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[f])}if($i((function(){e.state===Ii&&(e.state=Oi,e.timer.restart(u,e.delay,e.time),u(o))})),e.state=Ui,e.on.call("start",t,t.__data__,e.index,e.group),e.state===Ui){for(e.state=Ii,r=new Array(l=e.tween.length),f=0,s=-1;f<l;++f)(h=e.tween[f].value.call(t,t.__data__,e.index,e.group))&&(r[++s]=h);r.length=s+1}}function u(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(c),e.state=Bi,1),o=-1,a=r.length;++o<a;)r[o].call(t,i);e.state===Bi&&(e.on.call("end",t,t.__data__,e.index,e.group),c())}function c(){for(var r in e.state=Yi,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=Ni(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Di,tween:Ri,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Fi})}function ji(t,n){var e=Xi(t,n);if(e.state>Fi)throw new Error("too late; already scheduled");return e}function Hi(t,n){var e=Xi(t,n);if(e.state>Ii)throw new Error("too late; already running");return e}function Xi(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Gi(t,n){var e,r,i,o=t.__transition,a=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>Ui&&e.state<Bi,e.state=Yi,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):a=!1;a&&delete t.__transition}}function Vi(t,n){var e,r;return function(){var i=Hi(this,t),o=i.tween;if(o!==e)for(var a=0,u=(r=e=o).length;a<u;++a)if(r[a].name===n){(r=r.slice()).splice(a,1);break}i.tween=r}}function Wi(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Hi(this,t),a=o.tween;if(a!==r){i=(r=a).slice();for(var u={name:n,value:e},c=0,f=i.length;c<f;++c)if(i[c].name===n){i[c]=u;break}c===f&&i.push(u)}o.tween=i}}function Zi(t,n,e){var r=t._id;return t.each((function(){var t=Hi(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Xi(t,r).value[n]}}function Ki(t,n){var e;return("number"==typeof n?Yr:n instanceof ze?Dr:(e=ze(n))?(n=e,Dr):Xr)(t,n)}function Qi(t){return function(){this.removeAttribute(t)}}function Ji(t){return function(){this.removeAttributeNS(t.space,t.local)}}function to(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttribute(t);return a===o?null:a===r?i:i=n(r=a,e)}}function no(t,n,e){var r,i,o=e+"";return function(){var a=this.getAttributeNS(t.space,t.local);return a===o?null:a===r?i:i=n(r=a,e)}}function eo(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttribute(t))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttribute(t)}}function ro(t,n,e){var r,i,o;return function(){var a,u,c=e(this);if(null!=c)return(a=this.getAttributeNS(t.space,t.local))===(u=c+"")?null:a===r&&u===i?o:(i=u,o=n(r=a,c));this.removeAttributeNS(t.space,t.local)}}function io(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}(t,i)),e}return i._value=n,i}function oo(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&function(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}(t,i)),e}return i._value=n,i}function ao(t,n){return function(){ji(this,t).delay=+n.apply(this,arguments)}}function uo(t,n){return n=+n,function(){ji(this,t).delay=n}}function co(t,n){return function(){Hi(this,t).duration=+n.apply(this,arguments)}}function fo(t,n){return n=+n,function(){Hi(this,t).duration=n}}var so=Wn.prototype.constructor;function lo(t){return function(){this.style.removeProperty(t)}}var ho=0;function po(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function go(t){return Wn().transition(t)}function yo(){return++ho}var vo=Wn.prototype;po.prototype=go.prototype={constructor:po,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=jt(t));for(var r=this._groups,i=r.length,o=new Array(i),a=0;a<i;++a)for(var u,c,f=r[a],s=f.length,l=o[a]=new Array(s),h=0;h<s;++h)(u=f[h])&&(c=t.call(u,u.__data__,h,f))&&("__data__"in u&&(c.__data__=u.__data__),l[h]=c,Li(l[h],n,e,h,l,Xi(u,e)));return new po(o,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=Gt(t));for(var r=this._groups,i=r.length,o=[],a=[],u=0;u<i;++u)for(var c,f=r[u],s=f.length,l=0;l<s;++l)if(c=f[l]){for(var h,d=t.call(c,c.__data__,l,f),p=Xi(c,e),g=0,y=d.length;g<y;++g)(h=d[g])&&Li(h,n,e,g,d,p);o.push(d),a.push(c)}return new po(o,a,n,e)},selectChild:vo.selectChild,selectChildren:vo.selectChildren,filter:function(t){"function"!=typeof t&&(t=Vt(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,a=n[i],u=a.length,c=r[i]=[],f=0;f<u;++f)(o=a[f])&&t.call(o,o.__data__,f,a)&&c.push(o);return new po(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),a=new Array(r),u=0;u<o;++u)for(var c,f=n[u],s=e[u],l=f.length,h=a[u]=new Array(l),d=0;d<l;++d)(c=f[d]||s[d])&&(h[d]=c);for(;u<r;++u)a[u]=n[u];return new po(a,this._parents,this._name,this._id)},selection:function(){return new so(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=yo(),r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)if(a=u[f]){var s=Xi(a,n);Li(a,t,e,f,u,{time:s.time+s.delay+s.duration,delay:0,duration:s.duration,ease:s.ease})}return new po(r,this._parents,t,e)},call:vo.call,nodes:vo.nodes,node:vo.node,size:vo.size,empty:vo.empty,each:vo.each,on:function(t,n){var e=this._id;return arguments.length<2?Xi(this.node(),e).on.on(t):this.each(function(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?ji:Hi;return function(){var a=o(this,t),u=a.on;u!==r&&(i=(r=u).copy()).on(n,e),a.on=i}}(e,t,n))},attr:function(t,n){var e=It(t),r="transform"===e?ni:Ki;return this.attrTween(t,"function"==typeof n?(e.local?ro:eo)(e,r,Zi(this,"attr."+t,n)):null==n?(e.local?Ji:Qi)(e):(e.local?no:to)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=It(t);return this.tween(e,(r.local?io:oo)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?ti:Ki;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=_n(this,t),a=(this.style.removeProperty(t),_n(this,t));return o===a?null:o===e&&a===r?i:i=n(e=o,r=a)}}(t,r)).on("end.style."+t,lo(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var a=_n(this,t),u=e(this),c=u+"";return null==u&&(this.style.removeProperty(t),c=u=_n(this,t)),a===c?null:a===r&&c===i?o:(i=c,o=n(r=a,u))}}(t,r,Zi(this,"style."+t,n))).each(function(t,n){var e,r,i,o,a="style."+n,u="end."+a;return function(){var c=Hi(this,t),f=c.on,s=null==c.value[a]?o||(o=lo(n)):void 0;f===e&&i===s||(r=(e=f).copy()).on(u,i=s),c.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var a=_n(this,t);return a===o?null:a===r?i:i=n(r=a,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,function(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&function(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}(t,o,e)),r}return o._value=n,o}(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Zi(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,function(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&function(t){return function(n){this.textContent=t.call(this,n)}}(r)),n}return r._value=t,r}(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Xi(this.node(),e).tween,o=0,a=i.length;o<a;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Vi:Wi)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ao:uo)(n,t)):Xi(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?co:fo)(n,t)):Xi(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(function(t,n){if("function"!=typeof n)throw new Error;return function(){Hi(this,t).ease=n}}(n,t)):Xi(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Hi(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,a){var u={value:a},c={value:function(){0==--i&&o()}};e.each((function(){var e=Hi(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(u),n._.interrupt.push(u),n._.end.push(c)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:vo[Symbol.iterator]};function _o(t){return((t*=2)<=1?t*t:--t*(2-t)+1)/2}function bo(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var mo=function t(n){function e(t){return Math.pow(t,n)}return n=+n,e.exponent=t,e}(3),xo=function t(n){function e(t){return 1-Math.pow(1-t,n)}return n=+n,e.exponent=t,e}(3),wo=function t(n){function e(t){return((t*=2)<=1?Math.pow(t,n):2-Math.pow(2-t,n))/2}return n=+n,e.exponent=t,e}(3),Mo=Math.PI,To=Mo/2;function Ao(t){return(1-Math.cos(Mo*t))/2}function So(t){return 1.0009775171065494*(Math.pow(2,-10*t)-.0009765625)}function Eo(t){return((t*=2)<=1?So(1-t):2-So(t-1))/2}function No(t){return((t*=2)<=1?1-Math.sqrt(1-t*t):Math.sqrt(1-(t-=2)*t)+1)/2}var ko=4/11,Co=6/11,Po=8/11,zo=3/4,$o=9/11,Do=10/11,Ro=15/16,Fo=21/22,qo=63/64,Uo=1/ko/ko;function Io(t){return(t=+t)<ko?Uo*t*t:t<Po?Uo*(t-=Co)*t+zo:t<Do?Uo*(t-=$o)*t+Ro:Uo*(t-=Fo)*t+qo}var Oo=1.70158,Bo=function t(n){function e(t){return(t=+t)*t*(n*(t-1)+t)}return n=+n,e.overshoot=t,e}(Oo),Yo=function t(n){function e(t){return--t*t*((t+1)*n+t)+1}return n=+n,e.overshoot=t,e}(Oo),Lo=function t(n){function e(t){return((t*=2)<1?t*t*((n+1)*t-n):(t-=2)*t*((n+1)*t+n)+2)/2}return n=+n,e.overshoot=t,e}(Oo),jo=2*Math.PI,Ho=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return n*So(- --t)*Math.sin((r-t)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Xo=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return 1-n*So(t=+t)*Math.sin((t+r)/e)}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Go=function t(n,e){var r=Math.asin(1/(n=Math.max(1,n)))*(e/=jo);function i(t){return((t=2*t-1)<0?n*So(-t)*Math.sin((r-t)/e):2-n*So(t)*Math.sin((r+t)/e))/2}return i.amplitude=function(n){return t(n,e*jo)},i.period=function(e){return t(n,e)},i}(1,.3),Vo={time:null,delay:0,duration:250,ease:bo};function Wo(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}Wn.prototype.interrupt=function(t){return this.each((function(){Gi(this,t)}))},Wn.prototype.transition=function(t){var n,e;t instanceof po?(n=t._id,t=t._name):(n=yo(),(e=Vo).time=Ai(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var a,u=r[o],c=u.length,f=0;f<c;++f)(a=u[f])&&Li(a,t,n,f,u,e||Wo(a,n));return new po(r,this._parents,t,n)};var Zo=[null];var Ko=t=>()=>t;function Qo(t,{sourceEvent:n,target:e,selection:r,mode:i,dispatch:o}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:r,enumerable:!0,configurable:!0},mode:{value:i,enumerable:!0,configurable:!0},_:{value:o}})}function Jo(t){t.preventDefault(),t.stopImmediatePropagation()}var ta={name:"drag"},na={name:"space"},ea={name:"handle"},ra={name:"center"};const{abs:ia,max:oa,min:aa}=Math;function ua(t){return[+t[0],+t[1]]}function ca(t){return[ua(t[0]),ua(t[1])]}var fa={name:"x",handles:["w","e"].map(va),input:function(t,n){return null==t?null:[[+t[0],n[0][1]],[+t[1],n[1][1]]]},output:function(t){return t&&[t[0][0],t[1][0]]}},sa={name:"y",handles:["n","s"].map(va),input:function(t,n){return null==t?null:[[n[0][0],+t[0]],[n[1][0],+t[1]]]},output:function(t){return t&&[t[0][1],t[1][1]]}},la={name:"xy",handles:["n","w","e","s","nw","ne","sw","se"].map(va),input:function(t){return null==t?null:ca(t)},output:function(t){return t}},ha={overlay:"crosshair",selection:"move",n:"ns-resize",e:"ew-resize",s:"ns-resize",w:"ew-resize",nw:"nwse-resize",ne:"nesw-resize",se:"nwse-resize",sw:"nesw-resize"},da={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},pa={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},ga={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},ya={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function va(t){return{type:t}}function _a(t){return!t.ctrlKey&&!t.button}function ba(){var t=this.ownerSVGElement||this;return t.hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]}function ma(){return navigator.maxTouchPoints||"ontouchstart"in this}function xa(t){for(;!t.__brush;)if(!(t=t.parentNode))return;return t.__brush}function wa(t){var n,e=ba,r=_a,i=ma,o=!0,a=$t("start","brush","end"),u=6;function c(n){var e=n.property("__brush",g).selectAll(".overlay").data([va("overlay")]);e.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",ha.overlay).merge(e).each((function(){var t=xa(this).extent;Zn(this).attr("x",t[0][0]).attr("y",t[0][1]).attr("width",t[1][0]-t[0][0]).attr("height",t[1][1]-t[0][1])})),n.selectAll(".selection").data([va("selection")]).enter().append("rect").attr("class","selection").attr("cursor",ha.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var r=n.selectAll(".handle").data(t.handles,(function(t){return t.type}));r.exit().remove(),r.enter().append("rect").attr("class",(function(t){return"handle handle--"+t.type})).attr("cursor",(function(t){return ha[t.type]})),n.each(f).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",h).filter(i).on("touchstart.brush",h).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function f(){var t=Zn(this),n=xa(this).selection;n?(t.selectAll(".selection").style("display",null).attr("x",n[0][0]).attr("y",n[0][1]).attr("width",n[1][0]-n[0][0]).attr("height",n[1][1]-n[0][1]),t.selectAll(".handle").style("display",null).attr("x",(function(t){return"e"===t.type[t.type.length-1]?n[1][0]-u/2:n[0][0]-u/2})).attr("y",(function(t){return"s"===t.type[0]?n[1][1]-u/2:n[0][1]-u/2})).attr("width",(function(t){return"n"===t.type||"s"===t.type?n[1][0]-n[0][0]+u:u})).attr("height",(function(t){return"e"===t.type||"w"===t.type?n[1][1]-n[0][1]+u:u}))):t.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function s(t,n,e){var r=t.__brush.emitter;return!r||e&&r.clean?new l(t,n,e):r}function l(t,n,e){this.that=t,this.args=n,this.state=t.__brush,this.active=0,this.clean=e}function h(e){if((!n||e.touches)&&r.apply(this,arguments)){var i,a,u,c,l,h,d,p,g,y,v,_=this,b=e.target.__data__.type,m="selection"===(o&&e.metaKey?b="overlay":b)?ta:o&&e.altKey?ra:ea,x=t===sa?null:ga[b],w=t===fa?null:ya[b],M=xa(_),T=M.extent,A=M.selection,S=T[0][0],E=T[0][1],N=T[1][0],k=T[1][1],C=0,P=0,z=x&&w&&o&&e.shiftKey,$=Array.from(e.touches||[e],(t=>{const n=t.identifier;return(t=ne(t,_)).point0=t.slice(),t.identifier=n,t}));Gi(_);var D=s(_,arguments,!0).beforestart();if("overlay"===b){A&&(g=!0);const n=[$[0],$[1]||$[0]];M.selection=A=[[i=t===sa?S:aa(n[0][0],n[1][0]),u=t===fa?E:aa(n[0][1],n[1][1])],[l=t===sa?N:oa(n[0][0],n[1][0]),d=t===fa?k:oa(n[0][1],n[1][1])]],$.length>1&&I(e)}else i=A[0][0],u=A[0][1],l=A[1][0],d=A[1][1];a=i,c=u,h=l,p=d;var R=Zn(_).attr("pointer-events","none"),F=R.selectAll(".overlay").attr("cursor",ha[b]);if(e.touches)D.moved=U,D.ended=O;else{var q=Zn(e.view).on("mousemove.brush",U,!0).on("mouseup.brush",O,!0);o&&q.on("keydown.brush",(function(t){switch(t.keyCode){case 16:z=x&&w;break;case 18:m===ea&&(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra,I(t));break;case 32:m!==ea&&m!==ra||(x<0?l=h-C:x>0&&(i=a-C),w<0?d=p-P:w>0&&(u=c-P),m=na,F.attr("cursor",ha.selection),I(t));break;default:return}Jo(t)}),!0).on("keyup.brush",(function(t){switch(t.keyCode){case 16:z&&(y=v=z=!1,I(t));break;case 18:m===ra&&(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea,I(t));break;case 32:m===na&&(t.altKey?(x&&(l=h-C*x,i=a+C*x),w&&(d=p-P*w,u=c+P*w),m=ra):(x<0?l=h:x>0&&(i=a),w<0?d=p:w>0&&(u=c),m=ea),F.attr("cursor",ha[b]),I(t));break;default:return}Jo(t)}),!0),ae(e.view)}f.call(_),D.start(e,m.name)}function U(t){for(const n of t.changedTouches||[t])for(const t of $)t.identifier===n.identifier&&(t.cur=ne(n,_));if(z&&!y&&!v&&1===$.length){const t=$[0];ia(t.cur[0]-t[0])>ia(t.cur[1]-t[1])?v=!0:y=!0}for(const t of $)t.cur&&(t[0]=t.cur[0],t[1]=t.cur[1]);g=!0,Jo(t),I(t)}function I(t){const n=$[0],e=n.point0;var r;switch(C=n[0]-e[0],P=n[1]-e[1],m){case na:case ta:x&&(C=oa(S-i,aa(N-l,C)),a=i+C,h=l+C),w&&(P=oa(E-u,aa(k-d,P)),c=u+P,p=d+P);break;case ea:$[1]?(x&&(a=oa(S,aa(N,$[0][0])),h=oa(S,aa(N,$[1][0])),x=1),w&&(c=oa(E,aa(k,$[0][1])),p=oa(E,aa(k,$[1][1])),w=1)):(x<0?(C=oa(S-i,aa(N-i,C)),a=i+C,h=l):x>0&&(C=oa(S-l,aa(N-l,C)),a=i,h=l+C),w<0?(P=oa(E-u,aa(k-u,P)),c=u+P,p=d):w>0&&(P=oa(E-d,aa(k-d,P)),c=u,p=d+P));break;case ra:x&&(a=oa(S,aa(N,i-C*x)),h=oa(S,aa(N,l+C*x))),w&&(c=oa(E,aa(k,u-P*w)),p=oa(E,aa(k,d+P*w)))}h<a&&(x*=-1,r=i,i=l,l=r,r=a,a=h,h=r,b in da&&F.attr("cursor",ha[b=da[b]])),p<c&&(w*=-1,r=u,u=d,d=r,r=c,c=p,p=r,b in pa&&F.attr("cursor",ha[b=pa[b]])),M.selection&&(A=M.selection),y&&(a=A[0][0],h=A[1][0]),v&&(c=A[0][1],p=A[1][1]),A[0][0]===a&&A[0][1]===c&&A[1][0]===h&&A[1][1]===p||(M.selection=[[a,c],[h,p]],f.call(_),D.brush(t,m.name))}function O(t){if(function(t){t.stopImmediatePropagation()}(t),t.touches){if(t.touches.length)return;n&&clearTimeout(n),n=setTimeout((function(){n=null}),500)}else ue(t.view,g),q.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);R.attr("pointer-events","all"),F.attr("cursor",ha.overlay),M.selection&&(A=M.selection),function(t){return t[0][0]===t[1][0]||t[0][1]===t[1][1]}(A)&&(M.selection=null,f.call(_)),D.end(t,m.name)}}function d(t){s(this,arguments).moved(t)}function p(t){s(this,arguments).ended(t)}function g(){var n=this.__brush||{selection:null};return n.extent=ca(e.apply(this,arguments)),n.dim=t,n}return c.move=function(n,e,r){n.tween?n.on("start.brush",(function(t){s(this,arguments).beforestart().start(t)})).on("interrupt.brush end.brush",(function(t){s(this,arguments).end(t)})).tween("brush",(function(){var n=this,r=n.__brush,i=s(n,arguments),o=r.selection,a=t.input("function"==typeof e?e.apply(this,arguments):e,r.extent),u=Gr(o,a);function c(t){r.selection=1===t&&null===a?null:u(t),f.call(n),i.brush()}return null!==o&&null!==a?c:c(1)})):n.each((function(){var n=this,i=arguments,o=n.__brush,a=t.input("function"==typeof e?e.apply(n,i):e,o.extent),u=s(n,i).beforestart();Gi(n),o.selection=null===a?null:a,f.call(n),u.start(r).brush(r).end(r)}))},c.clear=function(t,n){c.move(t,null,n)},l.prototype={beforestart:function(){return 1==++this.active&&(this.state.emitter=this,this.starting=!0),this},start:function(t,n){return this.starting?(this.starting=!1,this.emit("start",t,n)):this.emit("brush",t),this},brush:function(t,n){return this.emit("brush",t,n),this},end:function(t,n){return 0==--this.active&&(delete this.state.emitter,this.emit("end",t,n)),this},emit:function(n,e,r){var i=Zn(this.that).datum();a.call(n,this.that,new Qo(n,{sourceEvent:e,target:c,selection:t.output(this.state.selection),mode:r,dispatch:a}),i)}},c.extent=function(t){return arguments.length?(e="function"==typeof t?t:Ko(ca(t)),c):e},c.filter=function(t){return arguments.length?(r="function"==typeof t?t:Ko(!!t),c):r},c.touchable=function(t){return arguments.length?(i="function"==typeof t?t:Ko(!!t),c):i},c.handleSize=function(t){return arguments.length?(u=+t,c):u},c.keyModifiers=function(t){return arguments.length?(o=!!t,c):o},c.on=function(){var t=a.on.apply(a,arguments);return t===a?c:t},c}var Ma=Math.abs,Ta=Math.cos,Aa=Math.sin,Sa=Math.PI,Ea=Sa/2,Na=2*Sa,ka=Math.max,Ca=1e-12;function Pa(t,n){return Array.from({length:n-t},((n,e)=>t+e))}function za(t,n){var e=0,r=null,i=null,o=null;function a(a){var u,c=a.length,f=new Array(c),s=Pa(0,c),l=new Array(c*c),h=new Array(c),d=0;a=Float64Array.from({length:c*c},n?(t,n)=>a[n%c][n/c|0]:(t,n)=>a[n/c|0][n%c]);for(let n=0;n<c;++n){let e=0;for(let r=0;r<c;++r)e+=a[n*c+r]+t*a[r*c+n];d+=f[n]=e}u=(d=ka(0,Na-e*c)/d)?e:Na/c;{let n=0;r&&s.sort(((t,n)=>r(f[t],f[n])));for(const e of s){const r=n;if(t){const t=Pa(1+~c,c).filter((t=>t<0?a[~t*c+e]:a[e*c+t]));i&&t.sort(((t,n)=>i(t<0?-a[~t*c+e]:a[e*c+t],n<0?-a[~n*c+e]:a[e*c+n])));for(const r of t)if(r<0){(l[~r*c+e]||(l[~r*c+e]={source:null,target:null})).target={index:e,startAngle:n,endAngle:n+=a[~r*c+e]*d,value:a[~r*c+e]}}else{(l[e*c+r]||(l[e*c+r]={source:null,target:null})).source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}else{const t=Pa(0,c).filter((t=>a[e*c+t]||a[t*c+e]));i&&t.sort(((t,n)=>i(a[e*c+t],a[e*c+n])));for(const r of t){let t;if(e<r?(t=l[e*c+r]||(l[e*c+r]={source:null,target:null}),t.source={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]}):(t=l[r*c+e]||(l[r*c+e]={source:null,target:null}),t.target={index:e,startAngle:n,endAngle:n+=a[e*c+r]*d,value:a[e*c+r]},e===r&&(t.source=t.target)),t.source&&t.target&&t.source.value<t.target.value){const n=t.source;t.source=t.target,t.target=n}}h[e]={index:e,startAngle:r,endAngle:n,value:f[e]}}n+=u}}return(l=Object.values(l)).groups=h,o?l.sort(o):l}return a.padAngle=function(t){return arguments.length?(e=ka(0,t),a):e},a.sortGroups=function(t){return arguments.length?(r=t,a):r},a.sortSubgroups=function(t){return arguments.length?(i=t,a):i},a.sortChords=function(t){return arguments.length?(null==t?o=null:(n=t,o=function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)})._=t,a):o&&o._;var n},a}const $a=Math.PI,Da=2*$a,Ra=1e-6,Fa=Da-Ra;function qa(t){this._+=t[0];for(let n=1,e=t.length;n<e;++n)this._+=arguments[n]+t[n]}let Ua=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=null==t?qa:function(t){let n=Math.floor(t);if(!(n>=0))throw new Error(`invalid digits: ${t}`);if(n>15)return qa;const e=10**n;return function(t){this._+=t[0];for(let n=1,r=t.length;n<r;++n)this._+=Math.round(arguments[n]*e)/e+t[n]}}(t)}moveTo(t,n){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,n){this._append`L${this._x1=+t},${this._y1=+n}`}quadraticCurveTo(t,n,e,r){this._append`Q${+t},${+n},${this._x1=+e},${this._y1=+r}`}bezierCurveTo(t,n,e,r,i,o){this._append`C${+t},${+n},${+e},${+r},${this._x1=+i},${this._y1=+o}`}arcTo(t,n,e,r,i){if(t=+t,n=+n,e=+e,r=+r,(i=+i)<0)throw new Error(`negative radius: ${i}`);let o=this._x1,a=this._y1,u=e-t,c=r-n,f=o-t,s=a-n,l=f*f+s*s;if(null===this._x1)this._append`M${this._x1=t},${this._y1=n}`;else if(l>Ra)if(Math.abs(s*u-c*f)>Ra&&i){let h=e-o,d=r-a,p=u*u+c*c,g=h*h+d*d,y=Math.sqrt(p),v=Math.sqrt(l),_=i*Math.tan(($a-Math.acos((p+l-g)/(2*y*v)))/2),b=_/v,m=_/y;Math.abs(b-1)>Ra&&this._append`L${t+b*f},${n+b*s}`,this._append`A${i},${i},0,0,${+(s*h>f*d)},${this._x1=t+m*u},${this._y1=n+m*c}`}else this._append`L${this._x1=t},${this._y1=n}`;else;}arc(t,n,e,r,i,o){if(t=+t,n=+n,o=!!o,(e=+e)<0)throw new Error(`negative radius: ${e}`);let a=e*Math.cos(r),u=e*Math.sin(r),c=t+a,f=n+u,s=1^o,l=o?r-i:i-r;null===this._x1?this._append`M${c},${f}`:(Math.abs(this._x1-c)>Ra||Math.abs(this._y1-f)>Ra)&&this._append`L${c},${f}`,e&&(l<0&&(l=l%Da+Da),l>Fa?this._append`A${e},${e},0,1,${s},${t-a},${n-u}A${e},${e},0,1,${s},${this._x1=c},${this._y1=f}`:l>Ra&&this._append`A${e},${e},0,${+(l>=$a)},${s},${this._x1=t+e*Math.cos(i)},${this._y1=n+e*Math.sin(i)}`)}rect(t,n,e,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${e=+e}v${+r}h${-e}Z`}toString(){return this._}};function Ia(){return new Ua}Ia.prototype=Ua.prototype;var Oa=Array.prototype.slice;function Ba(t){return function(){return t}}function Ya(t){return t.source}function La(t){return t.target}function ja(t){return t.radius}function Ha(t){return t.startAngle}function Xa(t){return t.endAngle}function Ga(){return 0}function Va(){return 10}function Wa(t){var n=Ya,e=La,r=ja,i=ja,o=Ha,a=Xa,u=Ga,c=null;function f(){var f,s=n.apply(this,arguments),l=e.apply(this,arguments),h=u.apply(this,arguments)/2,d=Oa.call(arguments),p=+r.apply(this,(d[0]=s,d)),g=o.apply(this,d)-Ea,y=a.apply(this,d)-Ea,v=+i.apply(this,(d[0]=l,d)),_=o.apply(this,d)-Ea,b=a.apply(this,d)-Ea;if(c||(c=f=Ia()),h>Ca&&(Ma(y-g)>2*h+Ca?y>g?(g+=h,y-=h):(g-=h,y+=h):g=y=(g+y)/2,Ma(b-_)>2*h+Ca?b>_?(_+=h,b-=h):(_-=h,b+=h):_=b=(_+b)/2),c.moveTo(p*Ta(g),p*Aa(g)),c.arc(0,0,p,g,y),g!==_||y!==b)if(t){var m=v-+t.apply(this,arguments),x=(_+b)/2;c.quadraticCurveTo(0,0,m*Ta(_),m*Aa(_)),c.lineTo(v*Ta(x),v*Aa(x)),c.lineTo(m*Ta(b),m*Aa(b))}else c.quadraticCurveTo(0,0,v*Ta(_),v*Aa(_)),c.arc(0,0,v,_,b);if(c.quadraticCurveTo(0,0,p*Ta(g),p*Aa(g)),c.closePath(),f)return c=null,f+""||null}return t&&(f.headRadius=function(n){return arguments.length?(t="function"==typeof n?n:Ba(+n),f):t}),f.radius=function(t){return arguments.length?(r=i="function"==typeof t?t:Ba(+t),f):r},f.sourceRadius=function(t){return arguments.length?(r="function"==typeof t?t:Ba(+t),f):r},f.targetRadius=function(t){return arguments.length?(i="function"==typeof t?t:Ba(+t),f):i},f.startAngle=function(t){return arguments.length?(o="function"==typeof t?t:Ba(+t),f):o},f.endAngle=function(t){return arguments.length?(a="function"==typeof t?t:Ba(+t),f):a},f.padAngle=function(t){return arguments.length?(u="function"==typeof t?t:Ba(+t),f):u},f.source=function(t){return arguments.length?(n=t,f):n},f.target=function(t){return arguments.length?(e=t,f):e},f.context=function(t){return arguments.length?(c=null==t?null:t,f):c},f}var Za=Array.prototype.slice;function Ka(t,n){return t-n}var Qa=t=>()=>t;function Ja(t,n){for(var e,r=-1,i=n.length;++r<i;)if(e=tu(t,n[r]))return e;return 0}function tu(t,n){for(var e=n[0],r=n[1],i=-1,o=0,a=t.length,u=a-1;o<a;u=o++){var c=t[o],f=c[0],s=c[1],l=t[u],h=l[0],d=l[1];if(nu(c,l,n))return 0;s>r!=d>r&&e<(h-f)*(r-s)/(d-s)+f&&(i=-i)}return i}function nu(t,n,e){var r,i,o,a;return function(t,n,e){return(n[0]-t[0])*(e[1]-t[1])==(e[0]-t[0])*(n[1]-t[1])}(t,n,e)&&(i=t[r=+(t[0]===n[0])],o=e[r],a=n[r],i<=o&&o<=a||a<=o&&o<=i)}function eu(){}var ru=[[],[[[1,1.5],[.5,1]]],[[[1.5,1],[1,1.5]]],[[[1.5,1],[.5,1]]],[[[1,.5],[1.5,1]]],[[[1,1.5],[.5,1]],[[1,.5],[1.5,1]]],[[[1,.5],[1,1.5]]],[[[1,.5],[.5,1]]],[[[.5,1],[1,.5]]],[[[1,1.5],[1,.5]]],[[[.5,1],[1,.5]],[[1.5,1],[1,1.5]]],[[[1.5,1],[1,.5]]],[[[.5,1],[1.5,1]]],[[[1,1.5],[1.5,1]]],[[[.5,1],[1,1.5]]],[]];function iu(){var t=1,n=1,e=K,r=u;function i(t){var n=e(t);if(Array.isArray(n))n=n.slice().sort(Ka);else{const e=M(t,ou);for(n=G(...Z(e[0],e[1],n),n);n[n.length-1]>=e[1];)n.pop();for(;n[1]<e[0];)n.shift()}return n.map((n=>o(t,n)))}function o(e,i){const o=null==i?NaN:+i;if(isNaN(o))throw new Error(`invalid value: ${i}`);var u=[],c=[];return function(e,r,i){var o,u,c,f,s,l,h=new Array,d=new Array;o=u=-1,f=au(e[0],r),ru[f<<1].forEach(p);for(;++o<t-1;)c=f,f=au(e[o+1],r),ru[c|f<<1].forEach(p);ru[f<<0].forEach(p);for(;++u<n-1;){for(o=-1,f=au(e[u*t+t],r),s=au(e[u*t],r),ru[f<<1|s<<2].forEach(p);++o<t-1;)c=f,f=au(e[u*t+t+o+1],r),l=s,s=au(e[u*t+o+1],r),ru[c|f<<1|s<<2|l<<3].forEach(p);ru[f|s<<3].forEach(p)}o=-1,s=e[u*t]>=r,ru[s<<2].forEach(p);for(;++o<t-1;)l=s,s=au(e[u*t+o+1],r),ru[s<<2|l<<3].forEach(p);function p(t){var n,e,r=[t[0][0]+o,t[0][1]+u],c=[t[1][0]+o,t[1][1]+u],f=a(r),s=a(c);(n=d[f])?(e=h[s])?(delete d[n.end],delete h[e.start],n===e?(n.ring.push(c),i(n.ring)):h[n.start]=d[e.end]={start:n.start,end:e.end,ring:n.ring.concat(e.ring)}):(delete d[n.end],n.ring.push(c),d[n.end=s]=n):(n=h[s])?(e=d[f])?(delete h[n.start],delete d[e.end],n===e?(n.ring.push(c),i(n.ring)):h[e.start]=d[n.end]={start:e.start,end:n.end,ring:e.ring.concat(n.ring)}):(delete h[n.start],n.ring.unshift(r),h[n.start=f]=n):h[f]=d[s]={start:f,end:s,ring:[r,c]}}ru[s<<3].forEach(p)}(e,o,(function(t){r(t,e,o),function(t){for(var n=0,e=t.length,r=t[e-1][1]*t[0][0]-t[e-1][0]*t[0][1];++n<e;)r+=t[n-1][1]*t[n][0]-t[n-1][0]*t[n][1];return r}(t)>0?u.push([t]):c.push(t)})),c.forEach((function(t){for(var n,e=0,r=u.length;e<r;++e)if(-1!==Ja((n=u[e])[0],t))return void n.push(t)})),{type:"MultiPolygon",value:i,coordinates:u}}function a(n){return 2*n[0]+n[1]*(t+1)*4}function u(e,r,i){e.forEach((function(e){var o=e[0],a=e[1],u=0|o,c=0|a,f=uu(r[c*t+u]);o>0&&o<t&&u===o&&(e[0]=cu(o,uu(r[c*t+u-1]),f,i)),a>0&&a<n&&c===a&&(e[1]=cu(a,uu(r[(c-1)*t+u]),f,i))}))}return i.contour=o,i.size=function(e){if(!arguments.length)return[t,n];var r=Math.floor(e[0]),o=Math.floor(e[1]);if(!(r>=0&&o>=0))throw new Error("invalid size");return t=r,n=o,i},i.thresholds=function(t){return arguments.length?(e="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),i):e},i.smooth=function(t){return arguments.length?(r=t?u:eu,i):r===u},i}function ou(t){return isFinite(t)?t:NaN}function au(t,n){return null!=t&&+t>=n}function uu(t){return null==t||isNaN(t=+t)?-1/0:t}function cu(t,n,e,r){const i=r-n,o=e-n,a=isFinite(i)||isFinite(o)?i/o:Math.sign(i)/Math.sign(o);return isNaN(a)?t:t+a-.5}function fu(t){return t[0]}function su(t){return t[1]}function lu(){return 1}const hu=134217729,du=33306690738754706e-32;function pu(t,n,e,r,i){let o,a,u,c,f=n[0],s=r[0],l=0,h=0;s>f==s>-f?(o=f,f=n[++l]):(o=s,s=r[++h]);let d=0;if(l<t&&h<e)for(s>f==s>-f?(a=f+o,u=o-(a-f),f=n[++l]):(a=s+o,u=o-(a-s),s=r[++h]),o=a,0!==u&&(i[d++]=u);l<t&&h<e;)s>f==s>-f?(a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l]):(a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h]),o=a,0!==u&&(i[d++]=u);for(;l<t;)a=o+f,c=a-o,u=o-(a-c)+(f-c),f=n[++l],o=a,0!==u&&(i[d++]=u);for(;h<e;)a=o+s,c=a-o,u=o-(a-c)+(s-c),s=r[++h],o=a,0!==u&&(i[d++]=u);return 0===o&&0!==d||(i[d++]=o),d}function gu(t){return new Float64Array(t)}const yu=22204460492503146e-32,vu=11093356479670487e-47,_u=gu(4),bu=gu(8),mu=gu(12),xu=gu(16),wu=gu(4);function Mu(t,n,e,r,i,o){const a=(n-o)*(e-i),u=(t-i)*(r-o),c=a-u,f=Math.abs(a+u);return Math.abs(c)>=33306690738754716e-32*f?c:-function(t,n,e,r,i,o,a){let u,c,f,s,l,h,d,p,g,y,v,_,b,m,x,w,M,T;const A=t-i,S=e-i,E=n-o,N=r-o;m=A*N,h=hu*A,d=h-(h-A),p=A-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=E*S,h=hu*E,d=h-(h-E),p=E-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,_u[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,_u[1]=b-(v+l)+(l-w),T=_+v,l=T-_,_u[2]=_-(T-l)+(v-l),_u[3]=T;let k=function(t,n){let e=n[0];for(let r=1;r<t;r++)e+=n[r];return e}(4,_u),C=yu*a;if(k>=C||-k>=C)return k;if(l=t-A,u=t-(A+l)+(l-i),l=e-S,f=e-(S+l)+(l-i),l=n-E,c=n-(E+l)+(l-o),l=r-N,s=r-(N+l)+(l-o),0===u&&0===c&&0===f&&0===s)return k;if(C=vu*a+du*Math.abs(k),k+=A*s+N*u-(E*f+S*c),k>=C||-k>=C)return k;m=u*N,h=hu*u,d=h-(h-u),p=u-d,h=hu*N,g=h-(h-N),y=N-g,x=p*y-(m-d*g-p*g-d*y),w=c*S,h=hu*c,d=h-(h-c),p=c-d,h=hu*S,g=h-(h-S),y=S-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const P=pu(4,_u,4,wu,bu);m=A*s,h=hu*A,d=h-(h-A),p=A-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=E*f,h=hu*E,d=h-(h-E),p=E-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const z=pu(P,bu,4,wu,mu);m=u*s,h=hu*u,d=h-(h-u),p=u-d,h=hu*s,g=h-(h-s),y=s-g,x=p*y-(m-d*g-p*g-d*y),w=c*f,h=hu*c,d=h-(h-c),p=c-d,h=hu*f,g=h-(h-f),y=f-g,M=p*y-(w-d*g-p*g-d*y),v=x-M,l=x-v,wu[0]=x-(v+l)+(l-M),_=m+v,l=_-m,b=m-(_-l)+(v-l),v=b-w,l=b-v,wu[1]=b-(v+l)+(l-w),T=_+v,l=T-_,wu[2]=_-(T-l)+(v-l),wu[3]=T;const $=pu(z,mu,4,wu,xu);return xu[$-1]}(t,n,e,r,i,o,f)}const Tu=Math.pow(2,-52),Au=new Uint32Array(512);class Su{static from(t,n=zu,e=$u){const r=t.length,i=new Float64Array(2*r);for(let o=0;o<r;o++){const r=t[o];i[2*o]=n(r),i[2*o+1]=e(r)}return new Su(i)}constructor(t){const n=t.length>>1;if(n>0&&"number"!=typeof t[0])throw new Error("Expected coords to contain numbers.");this.coords=t;const e=Math.max(2*n-5,0);this._triangles=new Uint32Array(3*e),this._halfedges=new Int32Array(3*e),this._hashSize=Math.ceil(Math.sqrt(n)),this._hullPrev=new Uint32Array(n),this._hullNext=new Uint32Array(n),this._hullTri=new Uint32Array(n),this._hullHash=new Int32Array(this._hashSize).fill(-1),this._ids=new Uint32Array(n),this._dists=new Float64Array(n),this.update()}update(){const{coords:t,_hullPrev:n,_hullNext:e,_hullTri:r,_hullHash:i}=this,o=t.length>>1;let a=1/0,u=1/0,c=-1/0,f=-1/0;for(let n=0;n<o;n++){const e=t[2*n],r=t[2*n+1];e<a&&(a=e),r<u&&(u=r),e>c&&(c=e),r>f&&(f=r),this._ids[n]=n}const s=(a+c)/2,l=(u+f)/2;let h,d,p,g=1/0;for(let n=0;n<o;n++){const e=Eu(s,l,t[2*n],t[2*n+1]);e<g&&(h=n,g=e)}const y=t[2*h],v=t[2*h+1];g=1/0;for(let n=0;n<o;n++){if(n===h)continue;const e=Eu(y,v,t[2*n],t[2*n+1]);e<g&&e>0&&(d=n,g=e)}let _=t[2*d],b=t[2*d+1],m=1/0;for(let n=0;n<o;n++){if(n===h||n===d)continue;const e=ku(y,v,_,b,t[2*n],t[2*n+1]);e<m&&(p=n,m=e)}let x=t[2*p],w=t[2*p+1];if(m===1/0){for(let n=0;n<o;n++)this._dists[n]=t[2*n]-t[0]||t[2*n+1]-t[1];Cu(this._ids,this._dists,0,o-1);const n=new Uint32Array(o);let e=0;for(let t=0,r=-1/0;t<o;t++){const i=this._ids[t];this._dists[i]>r&&(n[e++]=i,r=this._dists[i])}return this.hull=n.subarray(0,e),this.triangles=new Uint32Array(0),void(this.halfedges=new Uint32Array(0))}if(Mu(y,v,_,b,x,w)<0){const t=d,n=_,e=b;d=p,_=x,b=w,p=t,x=n,w=e}const M=function(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=t+(f*s-u*l)*h,p=n+(a*l-c*s)*h;return{x:d,y:p}}(y,v,_,b,x,w);this._cx=M.x,this._cy=M.y;for(let n=0;n<o;n++)this._dists[n]=Eu(t[2*n],t[2*n+1],M.x,M.y);Cu(this._ids,this._dists,0,o-1),this._hullStart=h;let T=3;e[h]=n[p]=d,e[d]=n[h]=p,e[p]=n[d]=h,r[h]=0,r[d]=1,r[p]=2,i.fill(-1),i[this._hashKey(y,v)]=h,i[this._hashKey(_,b)]=d,i[this._hashKey(x,w)]=p,this.trianglesLen=0,this._addTriangle(h,d,p,-1,-1,-1);for(let o,a,u=0;u<this._ids.length;u++){const c=this._ids[u],f=t[2*c],s=t[2*c+1];if(u>0&&Math.abs(f-o)<=Tu&&Math.abs(s-a)<=Tu)continue;if(o=f,a=s,c===h||c===d||c===p)continue;let l=0;for(let t=0,n=this._hashKey(f,s);t<this._hashSize&&(l=i[(n+t)%this._hashSize],-1===l||l===e[l]);t++);l=n[l];let g,y=l;for(;g=e[y],Mu(f,s,t[2*y],t[2*y+1],t[2*g],t[2*g+1])>=0;)if(y=g,y===l){y=-1;break}if(-1===y)continue;let v=this._addTriangle(y,c,e[y],-1,-1,r[y]);r[c]=this._legalize(v+2),r[y]=v,T++;let _=e[y];for(;g=e[_],Mu(f,s,t[2*_],t[2*_+1],t[2*g],t[2*g+1])<0;)v=this._addTriangle(_,c,g,r[c],-1,r[_]),r[c]=this._legalize(v+2),e[_]=_,T--,_=g;if(y===l)for(;g=n[y],Mu(f,s,t[2*g],t[2*g+1],t[2*y],t[2*y+1])<0;)v=this._addTriangle(g,c,y,-1,r[y],r[g]),this._legalize(v+2),r[g]=v,e[y]=y,T--,y=g;this._hullStart=n[c]=y,e[y]=n[_]=c,e[c]=_,i[this._hashKey(f,s)]=c,i[this._hashKey(t[2*y],t[2*y+1])]=y}this.hull=new Uint32Array(T);for(let t=0,n=this._hullStart;t<T;t++)this.hull[t]=n,n=e[n];this.triangles=this._triangles.subarray(0,this.trianglesLen),this.halfedges=this._halfedges.subarray(0,this.trianglesLen)}_hashKey(t,n){return Math.floor(function(t,n){const e=t/(Math.abs(t)+Math.abs(n));return(n>0?3-e:1+e)/4}(t-this._cx,n-this._cy)*this._hashSize)%this._hashSize}_legalize(t){const{_triangles:n,_halfedges:e,coords:r}=this;let i=0,o=0;for(;;){const a=e[t],u=t-t%3;if(o=u+(t+2)%3,-1===a){if(0===i)break;t=Au[--i];continue}const c=a-a%3,f=u+(t+1)%3,s=c+(a+2)%3,l=n[o],h=n[t],d=n[f],p=n[s];if(Nu(r[2*l],r[2*l+1],r[2*h],r[2*h+1],r[2*d],r[2*d+1],r[2*p],r[2*p+1])){n[t]=p,n[a]=l;const r=e[s];if(-1===r){let n=this._hullStart;do{if(this._hullTri[n]===s){this._hullTri[n]=t;break}n=this._hullPrev[n]}while(n!==this._hullStart)}this._link(t,r),this._link(a,e[o]),this._link(o,s);const u=c+(a+1)%3;i<Au.length&&(Au[i++]=u)}else{if(0===i)break;t=Au[--i]}}return o}_link(t,n){this._halfedges[t]=n,-1!==n&&(this._halfedges[n]=t)}_addTriangle(t,n,e,r,i,o){const a=this.trianglesLen;return this._triangles[a]=t,this._triangles[a+1]=n,this._triangles[a+2]=e,this._link(a,r),this._link(a+1,i),this._link(a+2,o),this.trianglesLen+=3,a}}function Eu(t,n,e,r){const i=t-e,o=n-r;return i*i+o*o}function Nu(t,n,e,r,i,o,a,u){const c=t-a,f=n-u,s=e-a,l=r-u,h=i-a,d=o-u,p=s*s+l*l,g=h*h+d*d;return c*(l*g-p*d)-f*(s*g-p*h)+(c*c+f*f)*(s*d-l*h)<0}function ku(t,n,e,r,i,o){const a=e-t,u=r-n,c=i-t,f=o-n,s=a*a+u*u,l=c*c+f*f,h=.5/(a*f-u*c),d=(f*s-u*l)*h,p=(a*l-c*s)*h;return d*d+p*p}function Cu(t,n,e,r){if(r-e<=20)for(let i=e+1;i<=r;i++){const r=t[i],o=n[r];let a=i-1;for(;a>=e&&n[t[a]]>o;)t[a+1]=t[a--];t[a+1]=r}else{let i=e+1,o=r;Pu(t,e+r>>1,i),n[t[e]]>n[t[r]]&&Pu(t,e,r),n[t[i]]>n[t[r]]&&Pu(t,i,r),n[t[e]]>n[t[i]]&&Pu(t,e,i);const a=t[i],u=n[a];for(;;){do{i++}while(n[t[i]]<u);do{o--}while(n[t[o]]>u);if(o<i)break;Pu(t,i,o)}t[e+1]=t[o],t[o]=a,r-i+1>=o-e?(Cu(t,n,i,r),Cu(t,n,e,o-1)):(Cu(t,n,e,o-1),Cu(t,n,i,r))}}function Pu(t,n,e){const r=t[n];t[n]=t[e],t[e]=r}function zu(t){return t[0]}function $u(t){return t[1]}const Du=1e-6;class Ru{constructor(){this._x0=this._y0=this._x1=this._y1=null,this._=""}moveTo(t,n){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}`}closePath(){null!==this._x1&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")}lineTo(t,n){this._+=`L${this._x1=+t},${this._y1=+n}`}arc(t,n,e){const r=(t=+t)+(e=+e),i=n=+n;if(e<0)throw new Error("negative radius");null===this._x1?this._+=`M${r},${i}`:(Math.abs(this._x1-r)>Du||Math.abs(this._y1-i)>Du)&&(this._+="L"+r+","+i),e&&(this._+=`A${e},${e},0,1,1,${t-e},${n}A${e},${e},0,1,1,${this._x1=r},${this._y1=i}`)}rect(t,n,e,r){this._+=`M${this._x0=this._x1=+t},${this._y0=this._y1=+n}h${+e}v${+r}h${-e}Z`}value(){return this._||null}}class Fu{constructor(){this._=[]}moveTo(t,n){this._.push([t,n])}closePath(){this._.push(this._[0].slice())}lineTo(t,n){this._.push([t,n])}value(){return this._.length?this._:null}}class qu{constructor(t,[n,e,r,i]=[0,0,960,500]){if(!((r=+r)>=(n=+n)&&(i=+i)>=(e=+e)))throw new Error("invalid bounds");this.delaunay=t,this._circumcenters=new Float64Array(2*t.points.length),this.vectors=new Float64Array(2*t.points.length),this.xmax=r,this.xmin=n,this.ymax=i,this.ymin=e,this._init()}update(){return this.delaunay.update(),this._init(),this}_init(){const{delaunay:{points:t,hull:n,triangles:e},vectors:r}=this;let i,o;const a=this.circumcenters=this._circumcenters.subarray(0,e.length/3*2);for(let r,u,c=0,f=0,s=e.length;c<s;c+=3,f+=2){const s=2*e[c],l=2*e[c+1],h=2*e[c+2],d=t[s],p=t[s+1],g=t[l],y=t[l+1],v=t[h],_=t[h+1],b=g-d,m=y-p,x=v-d,w=_-p,M=2*(b*w-m*x);if(Math.abs(M)<1e-9){if(void 0===i){i=o=0;for(const e of n)i+=t[2*e],o+=t[2*e+1];i/=n.length,o/=n.length}const e=1e9*Math.sign((i-d)*w-(o-p)*x);r=(d+v)/2-e*w,u=(p+_)/2+e*x}else{const t=1/M,n=b*b+m*m,e=x*x+w*w;r=d+(w*n-m*e)*t,u=p+(b*e-x*n)*t}a[f]=r,a[f+1]=u}let u,c,f,s=n[n.length-1],l=4*s,h=t[2*s],d=t[2*s+1];r.fill(0);for(let e=0;e<n.length;++e)s=n[e],u=l,c=h,f=d,l=4*s,h=t[2*s],d=t[2*s+1],r[u+2]=r[l]=f-d,r[u+3]=r[l+1]=h-c}render(t){const n=null==t?t=new Ru:void 0,{delaunay:{halfedges:e,inedges:r,hull:i},circumcenters:o,vectors:a}=this;if(i.length<=1)return null;for(let n=0,r=e.length;n<r;++n){const r=e[n];if(r<n)continue;const i=2*Math.floor(n/3),a=2*Math.floor(r/3),u=o[i],c=o[i+1],f=o[a],s=o[a+1];this._renderSegment(u,c,f,s,t)}let u,c=i[i.length-1];for(let n=0;n<i.length;++n){u=c,c=i[n];const e=2*Math.floor(r[c]/3),f=o[e],s=o[e+1],l=4*u,h=this._project(f,s,a[l+2],a[l+3]);h&&this._renderSegment(f,s,h[0],h[1],t)}return n&&n.value()}renderBounds(t){const n=null==t?t=new Ru:void 0;return t.rect(this.xmin,this.ymin,this.xmax-this.xmin,this.ymax-this.ymin),n&&n.value()}renderCell(t,n){const e=null==n?n=new Ru:void 0,r=this._clip(t);if(null===r||!r.length)return;n.moveTo(r[0],r[1]);let i=r.length;for(;r[0]===r[i-2]&&r[1]===r[i-1]&&i>1;)i-=2;for(let t=2;t<i;t+=2)r[t]===r[t-2]&&r[t+1]===r[t-1]||n.lineTo(r[t],r[t+1]);return n.closePath(),e&&e.value()}*cellPolygons(){const{delaunay:{points:t}}=this;for(let n=0,e=t.length/2;n<e;++n){const t=this.cellPolygon(n);t&&(t.index=n,yield t)}}cellPolygon(t){const n=new Fu;return this.renderCell(t,n),n.value()}_renderSegment(t,n,e,r,i){let o;const a=this._regioncode(t,n),u=this._regioncode(e,r);0===a&&0===u?(i.moveTo(t,n),i.lineTo(e,r)):(o=this._clipSegment(t,n,e,r,a,u))&&(i.moveTo(o[0],o[1]),i.lineTo(o[2],o[3]))}contains(t,n,e){return(n=+n)==n&&(e=+e)==e&&this.delaunay._step(t,n,e)===t}*neighbors(t){const n=this._clip(t);if(n)for(const e of this.delaunay.neighbors(t)){const t=this._clip(e);if(t)t:for(let r=0,i=n.length;r<i;r+=2)for(let o=0,a=t.length;o<a;o+=2)if(n[r]===t[o]&&n[r+1]===t[o+1]&&n[(r+2)%i]===t[(o+a-2)%a]&&n[(r+3)%i]===t[(o+a-1)%a]){yield e;break t}}}_cell(t){const{circumcenters:n,delaunay:{inedges:e,halfedges:r,triangles:i}}=this,o=e[t];if(-1===o)return null;const a=[];let u=o;do{const e=Math.floor(u/3);if(a.push(n[2*e],n[2*e+1]),u=u%3==2?u-2:u+1,i[u]!==t)break;u=r[u]}while(u!==o&&-1!==u);return a}_clip(t){if(0===t&&1===this.delaunay.hull.length)return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];const n=this._cell(t);if(null===n)return null;const{vectors:e}=this,r=4*t;return this._simplify(e[r]||e[r+1]?this._clipInfinite(t,n,e[r],e[r+1],e[r+2],e[r+3]):this._clipFinite(t,n))}_clipFinite(t,n){const e=n.length;let r,i,o,a,u=null,c=n[e-2],f=n[e-1],s=this._regioncode(c,f),l=0;for(let h=0;h<e;h+=2)if(r=c,i=f,c=n[h],f=n[h+1],o=s,s=this._regioncode(c,f),0===o&&0===s)a=l,l=0,u?u.push(c,f):u=[c,f];else{let n,e,h,d,p;if(0===o){if(null===(n=this._clipSegment(r,i,c,f,o,s)))continue;[e,h,d,p]=n}else{if(null===(n=this._clipSegment(c,f,r,i,s,o)))continue;[d,p,e,h]=n,a=l,l=this._edgecode(e,h),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(e,h):u=[e,h]}a=l,l=this._edgecode(d,p),a&&l&&this._edge(t,a,l,u,u.length),u?u.push(d,p):u=[d,p]}if(u)a=l,l=this._edgecode(u[0],u[1]),a&&l&&this._edge(t,a,l,u,u.length);else if(this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2))return[this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax,this.xmin,this.ymin];return u}_clipSegment(t,n,e,r,i,o){const a=i<o;for(a&&([t,n,e,r,i,o]=[e,r,t,n,o,i]);;){if(0===i&&0===o)return a?[e,r,t,n]:[t,n,e,r];if(i&o)return null;let u,c,f=i||o;8&f?(u=t+(e-t)*(this.ymax-n)/(r-n),c=this.ymax):4&f?(u=t+(e-t)*(this.ymin-n)/(r-n),c=this.ymin):2&f?(c=n+(r-n)*(this.xmax-t)/(e-t),u=this.xmax):(c=n+(r-n)*(this.xmin-t)/(e-t),u=this.xmin),i?(t=u,n=c,i=this._regioncode(t,n)):(e=u,r=c,o=this._regioncode(e,r))}}_clipInfinite(t,n,e,r,i,o){let a,u=Array.from(n);if((a=this._project(u[0],u[1],e,r))&&u.unshift(a[0],a[1]),(a=this._project(u[u.length-2],u[u.length-1],i,o))&&u.push(a[0],a[1]),u=this._clipFinite(t,u))for(let n,e=0,r=u.length,i=this._edgecode(u[r-2],u[r-1]);e<r;e+=2)n=i,i=this._edgecode(u[e],u[e+1]),n&&i&&(e=this._edge(t,n,i,u,e),r=u.length);else this.contains(t,(this.xmin+this.xmax)/2,(this.ymin+this.ymax)/2)&&(u=[this.xmin,this.ymin,this.xmax,this.ymin,this.xmax,this.ymax,this.xmin,this.ymax]);return u}_edge(t,n,e,r,i){for(;n!==e;){let e,o;switch(n){case 5:n=4;continue;case 4:n=6,e=this.xmax,o=this.ymin;break;case 6:n=2;continue;case 2:n=10,e=this.xmax,o=this.ymax;break;case 10:n=8;continue;case 8:n=9,e=this.xmin,o=this.ymax;break;case 9:n=1;continue;case 1:n=5,e=this.xmin,o=this.ymin}r[i]===e&&r[i+1]===o||!this.contains(t,e,o)||(r.splice(i,0,e,o),i+=2)}return i}_project(t,n,e,r){let i,o,a,u=1/0;if(r<0){if(n<=this.ymin)return null;(i=(this.ymin-n)/r)<u&&(a=this.ymin,o=t+(u=i)*e)}else if(r>0){if(n>=this.ymax)return null;(i=(this.ymax-n)/r)<u&&(a=this.ymax,o=t+(u=i)*e)}if(e>0){if(t>=this.xmax)return null;(i=(this.xmax-t)/e)<u&&(o=this.xmax,a=n+(u=i)*r)}else if(e<0){if(t<=this.xmin)return null;(i=(this.xmin-t)/e)<u&&(o=this.xmin,a=n+(u=i)*r)}return[o,a]}_edgecode(t,n){return(t===this.xmin?1:t===this.xmax?2:0)|(n===this.ymin?4:n===this.ymax?8:0)}_regioncode(t,n){return(t<this.xmin?1:t>this.xmax?2:0)|(n<this.ymin?4:n>this.ymax?8:0)}_simplify(t){if(t&&t.length>4){for(let n=0;n<t.length;n+=2){const e=(n+2)%t.length,r=(n+4)%t.length;(t[n]===t[e]&&t[e]===t[r]||t[n+1]===t[e+1]&&t[e+1]===t[r+1])&&(t.splice(e,2),n-=2)}t.length||(t=null)}return t}}const Uu=2*Math.PI,Iu=Math.pow;function Ou(t){return t[0]}function Bu(t){return t[1]}function Yu(t,n,e){return[t+Math.sin(t+n)*e,n+Math.cos(t-n)*e]}class Lu{static from(t,n=Ou,e=Bu,r){return new Lu("length"in t?function(t,n,e,r){const i=t.length,o=new Float64Array(2*i);for(let a=0;a<i;++a){const i=t[a];o[2*a]=n.call(r,i,a,t),o[2*a+1]=e.call(r,i,a,t)}return o}(t,n,e,r):Float64Array.from(function*(t,n,e,r){let i=0;for(const o of t)yield n.call(r,o,i,t),yield e.call(r,o,i,t),++i}(t,n,e,r)))}constructor(t){this._delaunator=new Su(t),this.inedges=new Int32Array(t.length/2),this._hullIndex=new Int32Array(t.length/2),this.points=this._delaunator.coords,this._init()}update(){return this._delaunator.update(),this._init(),this}_init(){const t=this._delaunator,n=this.points;if(t.hull&&t.hull.length>2&&function(t){const{triangles:n,coords:e}=t;for(let t=0;t<n.length;t+=3){const r=2*n[t],i=2*n[t+1],o=2*n[t+2];if((e[o]-e[r])*(e[i+1]-e[r+1])-(e[i]-e[r])*(e[o+1]-e[r+1])>1e-10)return!1}return!0}(t)){this.collinear=Int32Array.from({length:n.length/2},((t,n)=>n)).sort(((t,e)=>n[2*t]-n[2*e]||n[2*t+1]-n[2*e+1]));const t=this.collinear[0],e=this.collinear[this.collinear.length-1],r=[n[2*t],n[2*t+1],n[2*e],n[2*e+1]],i=1e-8*Math.hypot(r[3]-r[1],r[2]-r[0]);for(let t=0,e=n.length/2;t<e;++t){const e=Yu(n[2*t],n[2*t+1],i);n[2*t]=e[0],n[2*t+1]=e[1]}this._delaunator=new Su(n)}else delete this.collinear;const e=this.halfedges=this._delaunator.halfedges,r=this.hull=this._delaunator.hull,i=this.triangles=this._delaunator.triangles,o=this.inedges.fill(-1),a=this._hullIndex.fill(-1);for(let t=0,n=e.length;t<n;++t){const n=i[t%3==2?t-2:t+1];-1!==e[t]&&-1!==o[n]||(o[n]=t)}for(let t=0,n=r.length;t<n;++t)a[r[t]]=t;r.length<=2&&r.length>0&&(this.triangles=new Int32Array(3).fill(-1),this.halfedges=new Int32Array(3).fill(-1),this.triangles[0]=r[0],o[r[0]]=1,2===r.length&&(o[r[1]]=0,this.triangles[1]=r[1],this.triangles[2]=r[1]))}voronoi(t){return new qu(this,t)}*neighbors(t){const{inedges:n,hull:e,_hullIndex:r,halfedges:i,triangles:o,collinear:a}=this;if(a){const n=a.indexOf(t);return n>0&&(yield a[n-1]),void(n<a.length-1&&(yield a[n+1]))}const u=n[t];if(-1===u)return;let c=u,f=-1;do{if(yield f=o[c],c=c%3==2?c-2:c+1,o[c]!==t)return;if(c=i[c],-1===c){const n=e[(r[t]+1)%e.length];return void(n!==f&&(yield n))}}while(c!==u)}find(t,n,e=0){if((t=+t)!=t||(n=+n)!=n)return-1;const r=e;let i;for(;(i=this._step(e,t,n))>=0&&i!==e&&i!==r;)e=i;return i}_step(t,n,e){const{inedges:r,hull:i,_hullIndex:o,halfedges:a,triangles:u,points:c}=this;if(-1===r[t]||!c.length)return(t+1)%(c.length>>1);let f=t,s=Iu(n-c[2*t],2)+Iu(e-c[2*t+1],2);const l=r[t];let h=l;do{let r=u[h];const l=Iu(n-c[2*r],2)+Iu(e-c[2*r+1],2);if(l<s&&(s=l,f=r),h=h%3==2?h-2:h+1,u[h]!==t)break;if(h=a[h],-1===h){if(h=i[(o[t]+1)%i.length],h!==r&&Iu(n-c[2*h],2)+Iu(e-c[2*h+1],2)<s)return h;break}}while(h!==l);return f}render(t){const n=null==t?t=new Ru:void 0,{points:e,halfedges:r,triangles:i}=this;for(let n=0,o=r.length;n<o;++n){const o=r[n];if(o<n)continue;const a=2*i[n],u=2*i[o];t.moveTo(e[a],e[a+1]),t.lineTo(e[u],e[u+1])}return this.renderHull(t),n&&n.value()}renderPoints(t,n){void 0!==n||t&&"function"==typeof t.moveTo||(n=t,t=null),n=null==n?2:+n;const e=null==t?t=new Ru:void 0,{points:r}=this;for(let e=0,i=r.length;e<i;e+=2){const i=r[e],o=r[e+1];t.moveTo(i+n,o),t.arc(i,o,n,0,Uu)}return e&&e.value()}renderHull(t){const n=null==t?t=new Ru:void 0,{hull:e,points:r}=this,i=2*e[0],o=e.length;t.moveTo(r[i],r[i+1]);for(let n=1;n<o;++n){const i=2*e[n];t.lineTo(r[i],r[i+1])}return t.closePath(),n&&n.value()}hullPolygon(){const t=new Fu;return this.renderHull(t),t.value()}renderTriangle(t,n){const e=null==n?n=new Ru:void 0,{points:r,triangles:i}=this,o=2*i[t*=3],a=2*i[t+1],u=2*i[t+2];return n.moveTo(r[o],r[o+1]),n.lineTo(r[a],r[a+1]),n.lineTo(r[u],r[u+1]),n.closePath(),e&&e.value()}*trianglePolygons(){const{triangles:t}=this;for(let n=0,e=t.length/3;n<e;++n)yield this.trianglePolygon(n)}trianglePolygon(t){const n=new Fu;return this.renderTriangle(t,n),n.value()}}var ju={},Hu={},Xu=34,Gu=10,Vu=13;function Wu(t){return new Function("d","return {"+t.map((function(t,n){return JSON.stringify(t)+": d["+n+'] || ""'})).join(",")+"}")}function Zu(t){var n=Object.create(null),e=[];return t.forEach((function(t){for(var r in t)r in n||e.push(n[r]=r)})),e}function Ku(t,n){var e=t+"",r=e.length;return r<n?new Array(n-r+1).join(0)+e:e}function Qu(t){var n,e=t.getUTCHours(),r=t.getUTCMinutes(),i=t.getUTCSeconds(),o=t.getUTCMilliseconds();return isNaN(t)?"Invalid Date":((n=t.getUTCFullYear())<0?"-"+Ku(-n,6):n>9999?"+"+Ku(n,6):Ku(n,4))+"-"+Ku(t.getUTCMonth()+1,2)+"-"+Ku(t.getUTCDate(),2)+(o?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"."+Ku(o,3)+"Z":i?"T"+Ku(e,2)+":"+Ku(r,2)+":"+Ku(i,2)+"Z":r||e?"T"+Ku(e,2)+":"+Ku(r,2)+"Z":"")}function Ju(t){var n=new RegExp('["'+t+"\n\r]"),e=t.charCodeAt(0);function r(t,n){var r,i=[],o=t.length,a=0,u=0,c=o<=0,f=!1;function s(){if(c)return Hu;if(f)return f=!1,ju;var n,r,i=a;if(t.charCodeAt(i)===Xu){for(;a++<o&&t.charCodeAt(a)!==Xu||t.charCodeAt(++a)===Xu;);return(n=a)>=o?c=!0:(r=t.charCodeAt(a++))===Gu?f=!0:r===Vu&&(f=!0,t.charCodeAt(a)===Gu&&++a),t.slice(i+1,n-1).replace(/""/g,'"')}for(;a<o;){if((r=t.charCodeAt(n=a++))===Gu)f=!0;else if(r===Vu)f=!0,t.charCodeAt(a)===Gu&&++a;else if(r!==e)continue;return t.slice(i,n)}return c=!0,t.slice(i,o)}for(t.charCodeAt(o-1)===Gu&&--o,t.charCodeAt(o-1)===Vu&&--o;(r=s())!==Hu;){for(var l=[];r!==ju&&r!==Hu;)l.push(r),r=s();n&&null==(l=n(l,u++))||i.push(l)}return i}function i(n,e){return n.map((function(n){return e.map((function(t){return a(n[t])})).join(t)}))}function o(n){return n.map(a).join(t)}function a(t){return null==t?"":t instanceof Date?Qu(t):n.test(t+="")?'"'+t.replace(/"/g,'""')+'"':t}return{parse:function(t,n){var e,i,o=r(t,(function(t,r){if(e)return e(t,r-1);i=t,e=n?function(t,n){var e=Wu(t);return function(r,i){return n(e(r),i,t)}}(t,n):Wu(t)}));return o.columns=i||[],o},parseRows:r,format:function(n,e){return null==e&&(e=Zu(n)),[e.map(a).join(t)].concat(i(n,e)).join("\n")},formatBody:function(t,n){return null==n&&(n=Zu(t)),i(t,n).join("\n")},formatRows:function(t){return t.map(o).join("\n")},formatRow:o,formatValue:a}}var tc=Ju(","),nc=tc.parse,ec=tc.parseRows,rc=tc.format,ic=tc.formatBody,oc=tc.formatRows,ac=tc.formatRow,uc=tc.formatValue,cc=Ju("\t"),fc=cc.parse,sc=cc.parseRows,lc=cc.format,hc=cc.formatBody,dc=cc.formatRows,pc=cc.formatRow,gc=cc.formatValue;const yc=new Date("2019-01-01T00:00").getHours()||new Date("2019-07-01T00:00").getHours();function vc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.blob()}function _c(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.arrayBuffer()}function bc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);return t.text()}function mc(t,n){return fetch(t,n).then(bc)}function xc(t){return function(n,e,r){return 2===arguments.length&&"function"==typeof e&&(r=e,e=void 0),mc(n,e).then((function(n){return t(n,r)}))}}var wc=xc(nc),Mc=xc(fc);function Tc(t){if(!t.ok)throw new Error(t.status+" "+t.statusText);if(204!==t.status&&205!==t.status)return t.json()}function Ac(t){return(n,e)=>mc(n,e).then((n=>(new DOMParser).parseFromString(n,t)))}var Sc=Ac("application/xml"),Ec=Ac("text/html"),Nc=Ac("image/svg+xml");function kc(t,n,e,r){if(isNaN(n)||isNaN(e))return t;var i,o,a,u,c,f,s,l,h,d=t._root,p={data:r},g=t._x0,y=t._y0,v=t._x1,_=t._y1;if(!d)return t._root=p,t;for(;d.length;)if((f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a,i=d,!(d=d[l=s<<1|f]))return i[l]=p,t;if(u=+t._x.call(null,d.data),c=+t._y.call(null,d.data),n===u&&e===c)return p.next=d,i?i[l]=p:t._root=p,t;do{i=i?i[l]=new Array(4):t._root=new Array(4),(f=n>=(o=(g+v)/2))?g=o:v=o,(s=e>=(a=(y+_)/2))?y=a:_=a}while((l=s<<1|f)==(h=(c>=a)<<1|u>=o));return i[h]=d,i[l]=p,t}function Cc(t,n,e,r,i){this.node=t,this.x0=n,this.y0=e,this.x1=r,this.y1=i}function Pc(t){return t[0]}function zc(t){return t[1]}function $c(t,n,e){var r=new Dc(null==n?Pc:n,null==e?zc:e,NaN,NaN,NaN,NaN);return null==t?r:r.addAll(t)}function Dc(t,n,e,r,i,o){this._x=t,this._y=n,this._x0=e,this._y0=r,this._x1=i,this._y1=o,this._root=void 0}function Rc(t){for(var n={data:t.data},e=n;t=t.next;)e=e.next={data:t.data};return n}var Fc=$c.prototype=Dc.prototype;function qc(t){return function(){return t}}function Uc(t){return 1e-6*(t()-.5)}function Ic(t){return t.x+t.vx}function Oc(t){return t.y+t.vy}function Bc(t){return t.index}function Yc(t,n){var e=t.get(n);if(!e)throw new Error("node not found: "+n);return e}Fc.copy=function(){var t,n,e=new Dc(this._x,this._y,this._x0,this._y0,this._x1,this._y1),r=this._root;if(!r)return e;if(!r.length)return e._root=Rc(r),e;for(t=[{source:r,target:e._root=new Array(4)}];r=t.pop();)for(var i=0;i<4;++i)(n=r.source[i])&&(n.length?t.push({source:n,target:r.target[i]=new Array(4)}):r.target[i]=Rc(n));return e},Fc.add=function(t){const n=+this._x.call(null,t),e=+this._y.call(null,t);return kc(this.cover(n,e),n,e,t)},Fc.addAll=function(t){var n,e,r,i,o=t.length,a=new Array(o),u=new Array(o),c=1/0,f=1/0,s=-1/0,l=-1/0;for(e=0;e<o;++e)isNaN(r=+this._x.call(null,n=t[e]))||isNaN(i=+this._y.call(null,n))||(a[e]=r,u[e]=i,r<c&&(c=r),r>s&&(s=r),i<f&&(f=i),i>l&&(l=i));if(c>s||f>l)return this;for(this.cover(c,f).cover(s,l),e=0;e<o;++e)kc(this,a[e],u[e],t[e]);return this},Fc.cover=function(t,n){if(isNaN(t=+t)||isNaN(n=+n))return this;var e=this._x0,r=this._y0,i=this._x1,o=this._y1;if(isNaN(e))i=(e=Math.floor(t))+1,o=(r=Math.floor(n))+1;else{for(var a,u,c=i-e||1,f=this._root;e>t||t>=i||r>n||n>=o;)switch(u=(n<r)<<1|t<e,(a=new Array(4))[u]=f,f=a,c*=2,u){case 0:i=e+c,o=r+c;break;case 1:e=i-c,o=r+c;break;case 2:i=e+c,r=o-c;break;case 3:e=i-c,r=o-c}this._root&&this._root.length&&(this._root=f)}return this._x0=e,this._y0=r,this._x1=i,this._y1=o,this},Fc.data=function(){var t=[];return this.visit((function(n){if(!n.length)do{t.push(n.data)}while(n=n.next)})),t},Fc.extent=function(t){return arguments.length?this.cover(+t[0][0],+t[0][1]).cover(+t[1][0],+t[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]},Fc.find=function(t,n,e){var r,i,o,a,u,c,f,s=this._x0,l=this._y0,h=this._x1,d=this._y1,p=[],g=this._root;for(g&&p.push(new Cc(g,s,l,h,d)),null==e?e=1/0:(s=t-e,l=n-e,h=t+e,d=n+e,e*=e);c=p.pop();)if(!(!(g=c.node)||(i=c.x0)>h||(o=c.y0)>d||(a=c.x1)<s||(u=c.y1)<l))if(g.length){var y=(i+a)/2,v=(o+u)/2;p.push(new Cc(g[3],y,v,a,u),new Cc(g[2],i,v,y,u),new Cc(g[1],y,o,a,v),new Cc(g[0],i,o,y,v)),(f=(n>=v)<<1|t>=y)&&(c=p[p.length-1],p[p.length-1]=p[p.length-1-f],p[p.length-1-f]=c)}else{var _=t-+this._x.call(null,g.data),b=n-+this._y.call(null,g.data),m=_*_+b*b;if(m<e){var x=Math.sqrt(e=m);s=t-x,l=n-x,h=t+x,d=n+x,r=g.data}}return r},Fc.remove=function(t){if(isNaN(o=+this._x.call(null,t))||isNaN(a=+this._y.call(null,t)))return this;var n,e,r,i,o,a,u,c,f,s,l,h,d=this._root,p=this._x0,g=this._y0,y=this._x1,v=this._y1;if(!d)return this;if(d.length)for(;;){if((f=o>=(u=(p+y)/2))?p=u:y=u,(s=a>=(c=(g+v)/2))?g=c:v=c,n=d,!(d=d[l=s<<1|f]))return this;if(!d.length)break;(n[l+1&3]||n[l+2&3]||n[l+3&3])&&(e=n,h=l)}for(;d.data!==t;)if(r=d,!(d=d.next))return this;return(i=d.next)&&delete d.next,r?(i?r.next=i:delete r.next,this):n?(i?n[l]=i:delete n[l],(d=n[0]||n[1]||n[2]||n[3])&&d===(n[3]||n[2]||n[1]||n[0])&&!d.length&&(e?e[h]=d:this._root=d),this):(this._root=i,this)},Fc.removeAll=function(t){for(var n=0,e=t.length;n<e;++n)this.remove(t[n]);return this},Fc.root=function(){return this._root},Fc.size=function(){var t=0;return this.visit((function(n){if(!n.length)do{++t}while(n=n.next)})),t},Fc.visit=function(t){var n,e,r,i,o,a,u=[],c=this._root;for(c&&u.push(new Cc(c,this._x0,this._y0,this._x1,this._y1));n=u.pop();)if(!t(c=n.node,r=n.x0,i=n.y0,o=n.x1,a=n.y1)&&c.length){var f=(r+o)/2,s=(i+a)/2;(e=c[3])&&u.push(new Cc(e,f,s,o,a)),(e=c[2])&&u.push(new Cc(e,r,s,f,a)),(e=c[1])&&u.push(new Cc(e,f,i,o,s)),(e=c[0])&&u.push(new Cc(e,r,i,f,s))}return this},Fc.visitAfter=function(t){var n,e=[],r=[];for(this._root&&e.push(new Cc(this._root,this._x0,this._y0,this._x1,this._y1));n=e.pop();){var i=n.node;if(i.length){var o,a=n.x0,u=n.y0,c=n.x1,f=n.y1,s=(a+c)/2,l=(u+f)/2;(o=i[0])&&e.push(new Cc(o,a,u,s,l)),(o=i[1])&&e.push(new Cc(o,s,u,c,l)),(o=i[2])&&e.push(new Cc(o,a,l,s,f)),(o=i[3])&&e.push(new Cc(o,s,l,c,f))}r.push(n)}for(;n=r.pop();)t(n.node,n.x0,n.y0,n.x1,n.y1);return this},Fc.x=function(t){return arguments.length?(this._x=t,this):this._x},Fc.y=function(t){return arguments.length?(this._y=t,this):this._y};const Lc=1664525,jc=1013904223,Hc=4294967296;function Xc(t){return t.x}function Gc(t){return t.y}var Vc=Math.PI*(3-Math.sqrt(5));function Wc(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function Zc(t){return(t=Wc(Math.abs(t)))?t[1]:NaN}var Kc,Qc=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function Jc(t){if(!(n=Qc.exec(t)))throw new Error("invalid format: "+t);var n;return new tf({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function tf(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function nf(t,n){var e=Wc(t,n);if(!e)return t+"";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")}Jc.prototype=tf.prototype,tf.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};var ef={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>nf(100*t,n),r:nf,s:function(t,n){var e=Wc(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(Kc=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,a=r.length;return o===a?r:o>a?r+new Array(o-a+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+Wc(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function rf(t){return t}var of,af=Array.prototype.map,uf=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function cf(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?rf:(n=af.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],a=0,u=n[0],c=0;i>0&&u>0&&(c+u+1>r&&(u=Math.max(1,r-c)),o.push(t.substring(i-=u,i+u)),!((c+=u+1)>r));)u=n[a=(a+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",a=void 0===t.decimal?".":t.decimal+"",u=void 0===t.numerals?rf:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(af.call(t.numerals,String)),c=void 0===t.percent?"%":t.percent+"",f=void 0===t.minus?"−":t.minus+"",s=void 0===t.nan?"NaN":t.nan+"";function l(t){var n=(t=Jc(t)).fill,e=t.align,l=t.sign,h=t.symbol,d=t.zero,p=t.width,g=t.comma,y=t.precision,v=t.trim,_=t.type;"n"===_?(g=!0,_="g"):ef[_]||(void 0===y&&(y=12),v=!0,_="g"),(d||"0"===n&&"="===e)&&(d=!0,n="0",e="=");var b="$"===h?i:"#"===h&&/[boxX]/.test(_)?"0"+_.toLowerCase():"",m="$"===h?o:/[%p]/.test(_)?c:"",x=ef[_],w=/[defgprs%]/.test(_);function M(t){var i,o,c,h=b,M=m;if("c"===_)M=x(t)+M,t="";else{var T=(t=+t)<0||1/t<0;if(t=isNaN(t)?s:x(Math.abs(t),y),v&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),T&&0==+t&&"+"!==l&&(T=!1),h=(T?"("===l?l:f:"-"===l||"("===l?"":l)+h,M=("s"===_?uf[8+Kc/3]:"")+M+(T&&"("===l?")":""),w)for(i=-1,o=t.length;++i<o;)if(48>(c=t.charCodeAt(i))||c>57){M=(46===c?a+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!d&&(t=r(t,1/0));var A=h.length+t.length+M.length,S=A<p?new Array(p-A+1).join(n):"";switch(g&&d&&(t=r(S+t,S.length?p-M.length:1/0),S=""),e){case"<":t=h+t+M+S;break;case"=":t=h+S+t+M;break;case"^":t=S.slice(0,A=S.length>>1)+h+t+M+S.slice(A);break;default:t=S+h+t+M}return u(t)}return y=void 0===y?6:/[gprs]/.test(_)?Math.max(1,Math.min(21,y)):Math.max(0,Math.min(20,y)),M.toString=function(){return t+""},M}return{format:l,formatPrefix:function(t,n){var e=l(((t=Jc(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3))),i=Math.pow(10,-r),o=uf[8+r/3];return function(t){return e(i*t)+o}}}}function ff(n){return of=cf(n),t.format=of.format,t.formatPrefix=of.formatPrefix,of}function sf(t){return Math.max(0,-Zc(Math.abs(t)))}function lf(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(Zc(n)/3)))-Zc(Math.abs(t)))}function hf(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,Zc(n)-Zc(t))+1}t.format=void 0,t.formatPrefix=void 0,ff({thousands:",",grouping:[3],currency:["$",""]});var df=1e-6,pf=1e-12,gf=Math.PI,yf=gf/2,vf=gf/4,_f=2*gf,bf=180/gf,mf=gf/180,xf=Math.abs,wf=Math.atan,Mf=Math.atan2,Tf=Math.cos,Af=Math.ceil,Sf=Math.exp,Ef=Math.hypot,Nf=Math.log,kf=Math.pow,Cf=Math.sin,Pf=Math.sign||function(t){return t>0?1:t<0?-1:0},zf=Math.sqrt,$f=Math.tan;function Df(t){return t>1?0:t<-1?gf:Math.acos(t)}function Rf(t){return t>1?yf:t<-1?-yf:Math.asin(t)}function Ff(t){return(t=Cf(t/2))*t}function qf(){}function Uf(t,n){t&&Of.hasOwnProperty(t.type)&&Of[t.type](t,n)}var If={Feature:function(t,n){Uf(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)Uf(e[r].geometry,n)}},Of={Sphere:function(t,n){n.sphere()},Point:function(t,n){t=t.coordinates,n.point(t[0],t[1],t[2])},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)t=e[r],n.point(t[0],t[1],t[2])},LineString:function(t,n){Bf(t.coordinates,n,0)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Bf(e[r],n,0)},Polygon:function(t,n){Yf(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)Yf(e[r],n)},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)Uf(e[r],n)}};function Bf(t,n,e){var r,i=-1,o=t.length-e;for(n.lineStart();++i<o;)r=t[i],n.point(r[0],r[1],r[2]);n.lineEnd()}function Yf(t,n){var e=-1,r=t.length;for(n.polygonStart();++e<r;)Bf(t[e],n,1);n.polygonEnd()}function Lf(t,n){t&&If.hasOwnProperty(t.type)?If[t.type](t,n):Uf(t,n)}var jf,Hf,Xf,Gf,Vf,Wf,Zf,Kf,Qf,Jf,ts,ns,es,rs,is,os,as=new T,us=new T,cs={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){as=new T,cs.lineStart=fs,cs.lineEnd=ss},polygonEnd:function(){var t=+as;us.add(t<0?_f+t:t),this.lineStart=this.lineEnd=this.point=qf},sphere:function(){us.add(_f)}};function fs(){cs.point=ls}function ss(){hs(jf,Hf)}function ls(t,n){cs.point=hs,jf=t,Hf=n,Xf=t*=mf,Gf=Tf(n=(n*=mf)/2+vf),Vf=Cf(n)}function hs(t,n){var e=(t*=mf)-Xf,r=e>=0?1:-1,i=r*e,o=Tf(n=(n*=mf)/2+vf),a=Cf(n),u=Vf*a,c=Gf*o+u*Tf(i),f=u*r*Cf(i);as.add(Mf(f,c)),Xf=t,Gf=o,Vf=a}function ds(t){return[Mf(t[1],t[0]),Rf(t[2])]}function ps(t){var n=t[0],e=t[1],r=Tf(e);return[r*Tf(n),r*Cf(n),Cf(e)]}function gs(t,n){return t[0]*n[0]+t[1]*n[1]+t[2]*n[2]}function ys(t,n){return[t[1]*n[2]-t[2]*n[1],t[2]*n[0]-t[0]*n[2],t[0]*n[1]-t[1]*n[0]]}function vs(t,n){t[0]+=n[0],t[1]+=n[1],t[2]+=n[2]}function _s(t,n){return[t[0]*n,t[1]*n,t[2]*n]}function bs(t){var n=zf(t[0]*t[0]+t[1]*t[1]+t[2]*t[2]);t[0]/=n,t[1]/=n,t[2]/=n}var ms,xs,ws,Ms,Ts,As,Ss,Es,Ns,ks,Cs,Ps,zs,$s,Ds,Rs,Fs={point:qs,lineStart:Is,lineEnd:Os,polygonStart:function(){Fs.point=Bs,Fs.lineStart=Ys,Fs.lineEnd=Ls,rs=new T,cs.polygonStart()},polygonEnd:function(){cs.polygonEnd(),Fs.point=qs,Fs.lineStart=Is,Fs.lineEnd=Os,as<0?(Wf=-(Kf=180),Zf=-(Qf=90)):rs>df?Qf=90:rs<-df&&(Zf=-90),os[0]=Wf,os[1]=Kf},sphere:function(){Wf=-(Kf=180),Zf=-(Qf=90)}};function qs(t,n){is.push(os=[Wf=t,Kf=t]),n<Zf&&(Zf=n),n>Qf&&(Qf=n)}function Us(t,n){var e=ps([t*mf,n*mf]);if(es){var r=ys(es,e),i=ys([r[1],-r[0],0],r);bs(i),i=ds(i);var o,a=t-Jf,u=a>0?1:-1,c=i[0]*bf*u,f=xf(a)>180;f^(u*Jf<c&&c<u*t)?(o=i[1]*bf)>Qf&&(Qf=o):f^(u*Jf<(c=(c+360)%360-180)&&c<u*t)?(o=-i[1]*bf)<Zf&&(Zf=o):(n<Zf&&(Zf=n),n>Qf&&(Qf=n)),f?t<Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t):Kf>=Wf?(t<Wf&&(Wf=t),t>Kf&&(Kf=t)):t>Jf?js(Wf,t)>js(Wf,Kf)&&(Kf=t):js(t,Kf)>js(Wf,Kf)&&(Wf=t)}else is.push(os=[Wf=t,Kf=t]);n<Zf&&(Zf=n),n>Qf&&(Qf=n),es=e,Jf=t}function Is(){Fs.point=Us}function Os(){os[0]=Wf,os[1]=Kf,Fs.point=qs,es=null}function Bs(t,n){if(es){var e=t-Jf;rs.add(xf(e)>180?e+(e>0?360:-360):e)}else ts=t,ns=n;cs.point(t,n),Us(t,n)}function Ys(){cs.lineStart()}function Ls(){Bs(ts,ns),cs.lineEnd(),xf(rs)>df&&(Wf=-(Kf=180)),os[0]=Wf,os[1]=Kf,es=null}function js(t,n){return(n-=t)<0?n+360:n}function Hs(t,n){return t[0]-n[0]}function Xs(t,n){return t[0]<=t[1]?t[0]<=n&&n<=t[1]:n<t[0]||t[1]<n}var Gs={sphere:qf,point:Vs,lineStart:Zs,lineEnd:Js,polygonStart:function(){Gs.lineStart=tl,Gs.lineEnd=nl},polygonEnd:function(){Gs.lineStart=Zs,Gs.lineEnd=Js}};function Vs(t,n){t*=mf;var e=Tf(n*=mf);Ws(e*Tf(t),e*Cf(t),Cf(n))}function Ws(t,n,e){++ms,ws+=(t-ws)/ms,Ms+=(n-Ms)/ms,Ts+=(e-Ts)/ms}function Zs(){Gs.point=Ks}function Ks(t,n){t*=mf;var e=Tf(n*=mf);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Gs.point=Qs,Ws($s,Ds,Rs)}function Qs(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Mf(zf((a=Ds*o-Rs*i)*a+(a=Rs*r-$s*o)*a+(a=$s*i-Ds*r)*a),$s*r+Ds*i+Rs*o);xs+=a,As+=a*($s+($s=r)),Ss+=a*(Ds+(Ds=i)),Es+=a*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function Js(){Gs.point=Vs}function tl(){Gs.point=el}function nl(){rl(Ps,zs),Gs.point=Vs}function el(t,n){Ps=t,zs=n,t*=mf,n*=mf,Gs.point=rl;var e=Tf(n);$s=e*Tf(t),Ds=e*Cf(t),Rs=Cf(n),Ws($s,Ds,Rs)}function rl(t,n){t*=mf;var e=Tf(n*=mf),r=e*Tf(t),i=e*Cf(t),o=Cf(n),a=Ds*o-Rs*i,u=Rs*r-$s*o,c=$s*i-Ds*r,f=Ef(a,u,c),s=Rf(f),l=f&&-s/f;Ns.add(l*a),ks.add(l*u),Cs.add(l*c),xs+=s,As+=s*($s+($s=r)),Ss+=s*(Ds+(Ds=i)),Es+=s*(Rs+(Rs=o)),Ws($s,Ds,Rs)}function il(t){return function(){return t}}function ol(t,n){function e(e,r){return e=t(e,r),n(e[0],e[1])}return t.invert&&n.invert&&(e.invert=function(e,r){return(e=n.invert(e,r))&&t.invert(e[0],e[1])}),e}function al(t,n){return xf(t)>gf&&(t-=Math.round(t/_f)*_f),[t,n]}function ul(t,n,e){return(t%=_f)?n||e?ol(fl(t),sl(n,e)):fl(t):n||e?sl(n,e):al}function cl(t){return function(n,e){return xf(n+=t)>gf&&(n-=Math.round(n/_f)*_f),[n,e]}}function fl(t){var n=cl(t);return n.invert=cl(-t),n}function sl(t,n){var e=Tf(t),r=Cf(t),i=Tf(n),o=Cf(n);function a(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*e+u*r;return[Mf(c*i-s*o,u*e-f*r),Rf(s*i+c*o)]}return a.invert=function(t,n){var a=Tf(n),u=Tf(t)*a,c=Cf(t)*a,f=Cf(n),s=f*i-c*o;return[Mf(c*i+f*o,u*e+s*r),Rf(s*e-u*r)]},a}function ll(t){function n(n){return(n=t(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n}return t=ul(t[0]*mf,t[1]*mf,t.length>2?t[2]*mf:0),n.invert=function(n){return(n=t.invert(n[0]*mf,n[1]*mf))[0]*=bf,n[1]*=bf,n},n}function hl(t,n,e,r,i,o){if(e){var a=Tf(n),u=Cf(n),c=r*e;null==i?(i=n+r*_f,o=n-c/2):(i=dl(a,i),o=dl(a,o),(r>0?i<o:i>o)&&(i+=r*_f));for(var f,s=i;r>0?s>o:s<o;s-=c)f=ds([a,-u*Tf(s),-u*Cf(s)]),t.point(f[0],f[1])}}function dl(t,n){(n=ps(n))[0]-=t,bs(n);var e=Df(-n[1]);return((-n[2]<0?-e:e)+_f-df)%_f}function pl(){var t,n=[];return{point:function(n,e,r){t.push([n,e,r])},lineStart:function(){n.push(t=[])},lineEnd:qf,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function gl(t,n){return xf(t[0]-n[0])<df&&xf(t[1]-n[1])<df}function yl(t,n,e,r){this.x=t,this.z=n,this.o=e,this.e=r,this.v=!1,this.n=this.p=null}function vl(t,n,e,r,i){var o,a,u=[],c=[];if(t.forEach((function(t){if(!((n=t.length-1)<=0)){var n,e,r=t[0],a=t[n];if(gl(r,a)){if(!r[2]&&!a[2]){for(i.lineStart(),o=0;o<n;++o)i.point((r=t[o])[0],r[1]);return void i.lineEnd()}a[0]+=2*df}u.push(e=new yl(r,t,null,!0)),c.push(e.o=new yl(r,null,e,!1)),u.push(e=new yl(a,t,null,!1)),c.push(e.o=new yl(a,null,e,!0))}})),u.length){for(c.sort(n),_l(u),_l(c),o=0,a=c.length;o<a;++o)c[o].e=e=!e;for(var f,s,l=u[0];;){for(var h=l,d=!0;h.v;)if((h=h.n)===l)return;f=h.z,i.lineStart();do{if(h.v=h.o.v=!0,h.e){if(d)for(o=0,a=f.length;o<a;++o)i.point((s=f[o])[0],s[1]);else r(h.x,h.n.x,1,i);h=h.n}else{if(d)for(f=h.p.z,o=f.length-1;o>=0;--o)i.point((s=f[o])[0],s[1]);else r(h.x,h.p.x,-1,i);h=h.p}f=(h=h.o).z,d=!d}while(!h.v);i.lineEnd()}}}function _l(t){if(n=t.length){for(var n,e,r=0,i=t[0];++r<n;)i.n=e=t[r],e.p=i,i=e;i.n=e=t[0],e.p=i}}function bl(t){return xf(t[0])<=gf?t[0]:Pf(t[0])*((xf(t[0])+gf)%_f-gf)}function ml(t,n){var e=bl(n),r=n[1],i=Cf(r),o=[Cf(e),-Tf(e),0],a=0,u=0,c=new T;1===i?r=yf+df:-1===i&&(r=-yf-df);for(var f=0,s=t.length;f<s;++f)if(h=(l=t[f]).length)for(var l,h,d=l[h-1],p=bl(d),g=d[1]/2+vf,y=Cf(g),v=Tf(g),_=0;_<h;++_,p=m,y=w,v=M,d=b){var b=l[_],m=bl(b),x=b[1]/2+vf,w=Cf(x),M=Tf(x),A=m-p,S=A>=0?1:-1,E=S*A,N=E>gf,k=y*w;if(c.add(Mf(k*S*Cf(E),v*M+k*Tf(E))),a+=N?A+S*_f:A,N^p>=e^m>=e){var C=ys(ps(d),ps(b));bs(C);var P=ys(o,C);bs(P);var z=(N^A>=0?-1:1)*Rf(P[2]);(r>z||r===z&&(C[0]||C[1]))&&(u+=N^A>=0?1:-1)}}return(a<-df||a<df&&c<-pf)^1&u}function xl(t,n,e,r){return function(i){var o,a,u,c=n(i),f=pl(),s=n(f),l=!1,h={point:d,lineStart:g,lineEnd:y,polygonStart:function(){h.point=v,h.lineStart=_,h.lineEnd=b,a=[],o=[]},polygonEnd:function(){h.point=d,h.lineStart=g,h.lineEnd=y,a=ft(a);var t=ml(o,r);a.length?(l||(i.polygonStart(),l=!0),vl(a,Ml,t,e,i)):t&&(l||(i.polygonStart(),l=!0),i.lineStart(),e(null,null,1,i),i.lineEnd()),l&&(i.polygonEnd(),l=!1),a=o=null},sphere:function(){i.polygonStart(),i.lineStart(),e(null,null,1,i),i.lineEnd(),i.polygonEnd()}};function d(n,e){t(n,e)&&i.point(n,e)}function p(t,n){c.point(t,n)}function g(){h.point=p,c.lineStart()}function y(){h.point=d,c.lineEnd()}function v(t,n){u.push([t,n]),s.point(t,n)}function _(){s.lineStart(),u=[]}function b(){v(u[0][0],u[0][1]),s.lineEnd();var t,n,e,r,c=s.clean(),h=f.result(),d=h.length;if(u.pop(),o.push(u),u=null,d)if(1&c){if((n=(e=h[0]).length-1)>0){for(l||(i.polygonStart(),l=!0),i.lineStart(),t=0;t<n;++t)i.point((r=e[t])[0],r[1]);i.lineEnd()}}else d>1&&2&c&&h.push(h.pop().concat(h.shift())),a.push(h.filter(wl))}return h}}function wl(t){return t.length>1}function Ml(t,n){return((t=t.x)[0]<0?t[1]-yf-df:yf-t[1])-((n=n.x)[0]<0?n[1]-yf-df:yf-n[1])}al.invert=al;var Tl=xl((function(){return!0}),(function(t){var n,e=NaN,r=NaN,i=NaN;return{lineStart:function(){t.lineStart(),n=1},point:function(o,a){var u=o>0?gf:-gf,c=xf(o-e);xf(c-gf)<df?(t.point(e,r=(r+a)/2>0?yf:-yf),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),t.point(o,r),n=0):i!==u&&c>=gf&&(xf(e-i)<df&&(e-=i*df),xf(o-u)<df&&(o-=u*df),r=function(t,n,e,r){var i,o,a=Cf(t-e);return xf(a)>df?wf((Cf(n)*(o=Tf(r))*Cf(e)-Cf(r)*(i=Tf(n))*Cf(t))/(i*o*a)):(n+r)/2}(e,r,o,a),t.point(i,r),t.lineEnd(),t.lineStart(),t.point(u,r),n=0),t.point(e=o,r=a),i=u},lineEnd:function(){t.lineEnd(),e=r=NaN},clean:function(){return 2-n}}}),(function(t,n,e,r){var i;if(null==t)i=e*yf,r.point(-gf,i),r.point(0,i),r.point(gf,i),r.point(gf,0),r.point(gf,-i),r.point(0,-i),r.point(-gf,-i),r.point(-gf,0),r.point(-gf,i);else if(xf(t[0]-n[0])>df){var o=t[0]<n[0]?gf:-gf;i=e*o/2,r.point(-o,i),r.point(0,i),r.point(o,i)}else r.point(n[0],n[1])}),[-gf,-yf]);function Al(t){var n=Tf(t),e=6*mf,r=n>0,i=xf(n)>df;function o(t,e){return Tf(t)*Tf(e)>n}function a(t,e,r){var i=[1,0,0],o=ys(ps(t),ps(e)),a=gs(o,o),u=o[0],c=a-u*u;if(!c)return!r&&t;var f=n*a/c,s=-n*u/c,l=ys(i,o),h=_s(i,f);vs(h,_s(o,s));var d=l,p=gs(h,d),g=gs(d,d),y=p*p-g*(gs(h,h)-1);if(!(y<0)){var v=zf(y),_=_s(d,(-p-v)/g);if(vs(_,h),_=ds(_),!r)return _;var b,m=t[0],x=e[0],w=t[1],M=e[1];x<m&&(b=m,m=x,x=b);var T=x-m,A=xf(T-gf)<df;if(!A&&M<w&&(b=w,w=M,M=b),A||T<df?A?w+M>0^_[1]<(xf(_[0]-m)<df?w:M):w<=_[1]&&_[1]<=M:T>gf^(m<=_[0]&&_[0]<=x)){var S=_s(d,(-p+v)/g);return vs(S,h),[_,ds(S)]}}}function u(n,e){var i=r?t:gf-t,o=0;return n<-i?o|=1:n>i&&(o|=2),e<-i?o|=4:e>i&&(o|=8),o}return xl(o,(function(t){var n,e,c,f,s;return{lineStart:function(){f=c=!1,s=1},point:function(l,h){var d,p=[l,h],g=o(l,h),y=r?g?0:u(l,h):g?u(l+(l<0?gf:-gf),h):0;if(!n&&(f=c=g)&&t.lineStart(),g!==c&&(!(d=a(n,p))||gl(n,d)||gl(p,d))&&(p[2]=1),g!==c)s=0,g?(t.lineStart(),d=a(p,n),t.point(d[0],d[1])):(d=a(n,p),t.point(d[0],d[1],2),t.lineEnd()),n=d;else if(i&&n&&r^g){var v;y&e||!(v=a(p,n,!0))||(s=0,r?(t.lineStart(),t.point(v[0][0],v[0][1]),t.point(v[1][0],v[1][1]),t.lineEnd()):(t.point(v[1][0],v[1][1]),t.lineEnd(),t.lineStart(),t.point(v[0][0],v[0][1],3)))}!g||n&&gl(n,p)||t.point(p[0],p[1]),n=p,c=g,e=y},lineEnd:function(){c&&t.lineEnd(),n=null},clean:function(){return s|(f&&c)<<1}}}),(function(n,r,i,o){hl(o,t,e,i,n,r)}),r?[0,-t]:[-gf,t-gf])}var Sl,El,Nl,kl,Cl=1e9,Pl=-Cl;function zl(t,n,e,r){function i(i,o){return t<=i&&i<=e&&n<=o&&o<=r}function o(i,o,u,f){var s=0,l=0;if(null==i||(s=a(i,u))!==(l=a(o,u))||c(i,o)<0^u>0)do{f.point(0===s||3===s?t:e,s>1?r:n)}while((s=(s+u+4)%4)!==l);else f.point(o[0],o[1])}function a(r,i){return xf(r[0]-t)<df?i>0?0:3:xf(r[0]-e)<df?i>0?2:1:xf(r[1]-n)<df?i>0?1:0:i>0?3:2}function u(t,n){return c(t.x,n.x)}function c(t,n){var e=a(t,1),r=a(n,1);return e!==r?e-r:0===e?n[1]-t[1]:1===e?t[0]-n[0]:2===e?t[1]-n[1]:n[0]-t[0]}return function(a){var c,f,s,l,h,d,p,g,y,v,_,b=a,m=pl(),x={point:w,lineStart:function(){x.point=M,f&&f.push(s=[]);v=!0,y=!1,p=g=NaN},lineEnd:function(){c&&(M(l,h),d&&y&&m.rejoin(),c.push(m.result()));x.point=w,y&&b.lineEnd()},polygonStart:function(){b=m,c=[],f=[],_=!0},polygonEnd:function(){var n=function(){for(var n=0,e=0,i=f.length;e<i;++e)for(var o,a,u=f[e],c=1,s=u.length,l=u[0],h=l[0],d=l[1];c<s;++c)o=h,a=d,h=(l=u[c])[0],d=l[1],a<=r?d>r&&(h-o)*(r-a)>(d-a)*(t-o)&&++n:d<=r&&(h-o)*(r-a)<(d-a)*(t-o)&&--n;return n}(),e=_&&n,i=(c=ft(c)).length;(e||i)&&(a.polygonStart(),e&&(a.lineStart(),o(null,null,1,a),a.lineEnd()),i&&vl(c,u,n,o,a),a.polygonEnd());b=a,c=f=s=null}};function w(t,n){i(t,n)&&b.point(t,n)}function M(o,a){var u=i(o,a);if(f&&s.push([o,a]),v)l=o,h=a,d=u,v=!1,u&&(b.lineStart(),b.point(o,a));else if(u&&y)b.point(o,a);else{var c=[p=Math.max(Pl,Math.min(Cl,p)),g=Math.max(Pl,Math.min(Cl,g))],m=[o=Math.max(Pl,Math.min(Cl,o)),a=Math.max(Pl,Math.min(Cl,a))];!function(t,n,e,r,i,o){var a,u=t[0],c=t[1],f=0,s=1,l=n[0]-u,h=n[1]-c;if(a=e-u,l||!(a>0)){if(a/=l,l<0){if(a<f)return;a<s&&(s=a)}else if(l>0){if(a>s)return;a>f&&(f=a)}if(a=i-u,l||!(a<0)){if(a/=l,l<0){if(a>s)return;a>f&&(f=a)}else if(l>0){if(a<f)return;a<s&&(s=a)}if(a=r-c,h||!(a>0)){if(a/=h,h<0){if(a<f)return;a<s&&(s=a)}else if(h>0){if(a>s)return;a>f&&(f=a)}if(a=o-c,h||!(a<0)){if(a/=h,h<0){if(a>s)return;a>f&&(f=a)}else if(h>0){if(a<f)return;a<s&&(s=a)}return f>0&&(t[0]=u+f*l,t[1]=c+f*h),s<1&&(n[0]=u+s*l,n[1]=c+s*h),!0}}}}}(c,m,t,n,e,r)?u&&(b.lineStart(),b.point(o,a),_=!1):(y||(b.lineStart(),b.point(c[0],c[1])),b.point(m[0],m[1]),u||b.lineEnd(),_=!1)}p=o,g=a,y=u}return x}}var $l={sphere:qf,point:qf,lineStart:function(){$l.point=Rl,$l.lineEnd=Dl},lineEnd:qf,polygonStart:qf,polygonEnd:qf};function Dl(){$l.point=$l.lineEnd=qf}function Rl(t,n){El=t*=mf,Nl=Cf(n*=mf),kl=Tf(n),$l.point=Fl}function Fl(t,n){t*=mf;var e=Cf(n*=mf),r=Tf(n),i=xf(t-El),o=Tf(i),a=r*Cf(i),u=kl*e-Nl*r*o,c=Nl*e+kl*r*o;Sl.add(Mf(zf(a*a+u*u),c)),El=t,Nl=e,kl=r}function ql(t){return Sl=new T,Lf(t,$l),+Sl}var Ul=[null,null],Il={type:"LineString",coordinates:Ul};function Ol(t,n){return Ul[0]=t,Ul[1]=n,ql(Il)}var Bl={Feature:function(t,n){return Ll(t.geometry,n)},FeatureCollection:function(t,n){for(var e=t.features,r=-1,i=e.length;++r<i;)if(Ll(e[r].geometry,n))return!0;return!1}},Yl={Sphere:function(){return!0},Point:function(t,n){return jl(t.coordinates,n)},MultiPoint:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(jl(e[r],n))return!0;return!1},LineString:function(t,n){return Hl(t.coordinates,n)},MultiLineString:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Hl(e[r],n))return!0;return!1},Polygon:function(t,n){return Xl(t.coordinates,n)},MultiPolygon:function(t,n){for(var e=t.coordinates,r=-1,i=e.length;++r<i;)if(Xl(e[r],n))return!0;return!1},GeometryCollection:function(t,n){for(var e=t.geometries,r=-1,i=e.length;++r<i;)if(Ll(e[r],n))return!0;return!1}};function Ll(t,n){return!(!t||!Yl.hasOwnProperty(t.type))&&Yl[t.type](t,n)}function jl(t,n){return 0===Ol(t,n)}function Hl(t,n){for(var e,r,i,o=0,a=t.length;o<a;o++){if(0===(r=Ol(t[o],n)))return!0;if(o>0&&(i=Ol(t[o],t[o-1]))>0&&e<=i&&r<=i&&(e+r-i)*(1-Math.pow((e-r)/i,2))<pf*i)return!0;e=r}return!1}function Xl(t,n){return!!ml(t.map(Gl),Vl(n))}function Gl(t){return(t=t.map(Vl)).pop(),t}function Vl(t){return[t[0]*mf,t[1]*mf]}function Wl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[t,n]}))}}function Zl(t,n,e){var r=lt(t,n-df,e).concat(n);return function(t){return r.map((function(n){return[n,t]}))}}function Kl(){var t,n,e,r,i,o,a,u,c,f,s,l,h=10,d=h,p=90,g=360,y=2.5;function v(){return{type:"MultiLineString",coordinates:_()}}function _(){return lt(Af(r/p)*p,e,p).map(s).concat(lt(Af(u/g)*g,a,g).map(l)).concat(lt(Af(n/h)*h,t,h).filter((function(t){return xf(t%p)>df})).map(c)).concat(lt(Af(o/d)*d,i,d).filter((function(t){return xf(t%g)>df})).map(f))}return v.lines=function(){return _().map((function(t){return{type:"LineString",coordinates:t}}))},v.outline=function(){return{type:"Polygon",coordinates:[s(r).concat(l(a).slice(1),s(e).reverse().slice(1),l(u).reverse().slice(1))]}},v.extent=function(t){return arguments.length?v.extentMajor(t).extentMinor(t):v.extentMinor()},v.extentMajor=function(t){return arguments.length?(r=+t[0][0],e=+t[1][0],u=+t[0][1],a=+t[1][1],r>e&&(t=r,r=e,e=t),u>a&&(t=u,u=a,a=t),v.precision(y)):[[r,u],[e,a]]},v.extentMinor=function(e){return arguments.length?(n=+e[0][0],t=+e[1][0],o=+e[0][1],i=+e[1][1],n>t&&(e=n,n=t,t=e),o>i&&(e=o,o=i,i=e),v.precision(y)):[[n,o],[t,i]]},v.step=function(t){return arguments.length?v.stepMajor(t).stepMinor(t):v.stepMinor()},v.stepMajor=function(t){return arguments.length?(p=+t[0],g=+t[1],v):[p,g]},v.stepMinor=function(t){return arguments.length?(h=+t[0],d=+t[1],v):[h,d]},v.precision=function(h){return arguments.length?(y=+h,c=Wl(o,i,90),f=Zl(n,t,y),s=Wl(u,a,90),l=Zl(r,e,y),v):y},v.extentMajor([[-180,-90+df],[180,90-df]]).extentMinor([[-180,-80-df],[180,80+df]])}var Ql,Jl,th,nh,eh=t=>t,rh=new T,ih=new T,oh={point:qf,lineStart:qf,lineEnd:qf,polygonStart:function(){oh.lineStart=ah,oh.lineEnd=fh},polygonEnd:function(){oh.lineStart=oh.lineEnd=oh.point=qf,rh.add(xf(ih)),ih=new T},result:function(){var t=rh/2;return rh=new T,t}};function ah(){oh.point=uh}function uh(t,n){oh.point=ch,Ql=th=t,Jl=nh=n}function ch(t,n){ih.add(nh*t-th*n),th=t,nh=n}function fh(){ch(Ql,Jl)}var sh=oh,lh=1/0,hh=lh,dh=-lh,ph=dh,gh={point:function(t,n){t<lh&&(lh=t);t>dh&&(dh=t);n<hh&&(hh=n);n>ph&&(ph=n)},lineStart:qf,lineEnd:qf,polygonStart:qf,polygonEnd:qf,result:function(){var t=[[lh,hh],[dh,ph]];return dh=ph=-(hh=lh=1/0),t}};var yh,vh,_h,bh,mh=gh,xh=0,wh=0,Mh=0,Th=0,Ah=0,Sh=0,Eh=0,Nh=0,kh=0,Ch={point:Ph,lineStart:zh,lineEnd:Rh,polygonStart:function(){Ch.lineStart=Fh,Ch.lineEnd=qh},polygonEnd:function(){Ch.point=Ph,Ch.lineStart=zh,Ch.lineEnd=Rh},result:function(){var t=kh?[Eh/kh,Nh/kh]:Sh?[Th/Sh,Ah/Sh]:Mh?[xh/Mh,wh/Mh]:[NaN,NaN];return xh=wh=Mh=Th=Ah=Sh=Eh=Nh=kh=0,t}};function Ph(t,n){xh+=t,wh+=n,++Mh}function zh(){Ch.point=$h}function $h(t,n){Ch.point=Dh,Ph(_h=t,bh=n)}function Dh(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Ph(_h=t,bh=n)}function Rh(){Ch.point=Ph}function Fh(){Ch.point=Uh}function qh(){Ih(yh,vh)}function Uh(t,n){Ch.point=Ih,Ph(yh=_h=t,vh=bh=n)}function Ih(t,n){var e=t-_h,r=n-bh,i=zf(e*e+r*r);Th+=i*(_h+t)/2,Ah+=i*(bh+n)/2,Sh+=i,Eh+=(i=bh*t-_h*n)*(_h+t),Nh+=i*(bh+n),kh+=3*i,Ph(_h=t,bh=n)}var Oh=Ch;function Bh(t){this._context=t}Bh.prototype={_radius:4.5,pointRadius:function(t){return this._radius=t,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){0===this._line&&this._context.closePath(),this._point=NaN},point:function(t,n){switch(this._point){case 0:this._context.moveTo(t,n),this._point=1;break;case 1:this._context.lineTo(t,n);break;default:this._context.moveTo(t+this._radius,n),this._context.arc(t,n,this._radius,0,_f)}},result:qf};var Yh,Lh,jh,Hh,Xh,Gh=new T,Vh={point:qf,lineStart:function(){Vh.point=Wh},lineEnd:function(){Yh&&Zh(Lh,jh),Vh.point=qf},polygonStart:function(){Yh=!0},polygonEnd:function(){Yh=null},result:function(){var t=+Gh;return Gh=new T,t}};function Wh(t,n){Vh.point=Zh,Lh=Hh=t,jh=Xh=n}function Zh(t,n){Hh-=t,Xh-=n,Gh.add(zf(Hh*Hh+Xh*Xh)),Hh=t,Xh=n}var Kh=Vh;let Qh,Jh,td,nd;class ed{constructor(t){this._append=null==t?rd:function(t){const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);if(n>15)return rd;if(n!==Qh){const t=10**n;Qh=n,Jh=function(n){let e=1;this._+=n[0];for(const r=n.length;e<r;++e)this._+=Math.round(arguments[e]*t)/t+n[e]}}return Jh}(t),this._radius=4.5,this._=""}pointRadius(t){return this._radius=+t,this}polygonStart(){this._line=0}polygonEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){0===this._line&&(this._+="Z"),this._point=NaN}point(t,n){switch(this._point){case 0:this._append`M${t},${n}`,this._point=1;break;case 1:this._append`L${t},${n}`;break;default:if(this._append`M${t},${n}`,this._radius!==td||this._append!==Jh){const t=this._radius,n=this._;this._="",this._append`m0,${t}a${t},${t} 0 1,1 0,${-2*t}a${t},${t} 0 1,1 0,${2*t}z`,td=t,Jh=this._append,nd=this._,this._=n}this._+=nd}}result(){const t=this._;return this._="",t.length?t:null}}function rd(t){let n=1;this._+=t[0];for(const e=t.length;n<e;++n)this._+=arguments[n]+t[n]}function id(t){return function(n){var e=new od;for(var r in t)e[r]=t[r];return e.stream=n,e}}function od(){}function ad(t,n,e){var r=t.clipExtent&&t.clipExtent();return t.scale(150).translate([0,0]),null!=r&&t.clipExtent(null),Lf(e,t.stream(mh)),n(mh.result()),null!=r&&t.clipExtent(r),t}function ud(t,n,e){return ad(t,(function(e){var r=n[1][0]-n[0][0],i=n[1][1]-n[0][1],o=Math.min(r/(e[1][0]-e[0][0]),i/(e[1][1]-e[0][1])),a=+n[0][0]+(r-o*(e[1][0]+e[0][0]))/2,u=+n[0][1]+(i-o*(e[1][1]+e[0][1]))/2;t.scale(150*o).translate([a,u])}),e)}function cd(t,n,e){return ud(t,[[0,0],n],e)}function fd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][0]-e[0][0]),o=(r-i*(e[1][0]+e[0][0]))/2,a=-i*e[0][1];t.scale(150*i).translate([o,a])}),e)}function sd(t,n,e){return ad(t,(function(e){var r=+n,i=r/(e[1][1]-e[0][1]),o=-i*e[0][0],a=(r-i*(e[1][1]+e[0][1]))/2;t.scale(150*i).translate([o,a])}),e)}od.prototype={constructor:od,point:function(t,n){this.stream.point(t,n)},sphere:function(){this.stream.sphere()},lineStart:function(){this.stream.lineStart()},lineEnd:function(){this.stream.lineEnd()},polygonStart:function(){this.stream.polygonStart()},polygonEnd:function(){this.stream.polygonEnd()}};var ld=16,hd=Tf(30*mf);function dd(t,n){return+n?function(t,n){function e(r,i,o,a,u,c,f,s,l,h,d,p,g,y){var v=f-r,_=s-i,b=v*v+_*_;if(b>4*n&&g--){var m=a+h,x=u+d,w=c+p,M=zf(m*m+x*x+w*w),T=Rf(w/=M),A=xf(xf(w)-1)<df||xf(o-l)<df?(o+l)/2:Mf(x,m),S=t(A,T),E=S[0],N=S[1],k=E-r,C=N-i,P=_*k-v*C;(P*P/b>n||xf((v*k+_*C)/b-.5)>.3||a*h+u*d+c*p<hd)&&(e(r,i,o,a,u,c,E,N,A,m/=M,x/=M,w,g,y),y.point(E,N),e(E,N,A,m,x,w,f,s,l,h,d,p,g,y))}}return function(n){var r,i,o,a,u,c,f,s,l,h,d,p,g={point:y,lineStart:v,lineEnd:b,polygonStart:function(){n.polygonStart(),g.lineStart=m},polygonEnd:function(){n.polygonEnd(),g.lineStart=v}};function y(e,r){e=t(e,r),n.point(e[0],e[1])}function v(){s=NaN,g.point=_,n.lineStart()}function _(r,i){var o=ps([r,i]),a=t(r,i);e(s,l,f,h,d,p,s=a[0],l=a[1],f=r,h=o[0],d=o[1],p=o[2],ld,n),n.point(s,l)}function b(){g.point=y,n.lineEnd()}function m(){v(),g.point=x,g.lineEnd=w}function x(t,n){_(r=t,n),i=s,o=l,a=h,u=d,c=p,g.point=_}function w(){e(s,l,f,h,d,p,i,o,r,a,u,c,ld,n),g.lineEnd=b,b()}return g}}(t,n):function(t){return id({point:function(n,e){n=t(n,e),this.stream.point(n[0],n[1])}})}(t)}var pd=id({point:function(t,n){this.stream.point(t*mf,n*mf)}});function gd(t,n,e,r,i,o){if(!o)return function(t,n,e,r,i){function o(o,a){return[n+t*(o*=r),e-t*(a*=i)]}return o.invert=function(o,a){return[(o-n)/t*r,(e-a)/t*i]},o}(t,n,e,r,i);var a=Tf(o),u=Cf(o),c=a*t,f=u*t,s=a/t,l=u/t,h=(u*e-a*n)/t,d=(u*n+a*e)/t;function p(t,o){return[c*(t*=r)-f*(o*=i)+n,e-f*t-c*o]}return p.invert=function(t,n){return[r*(s*t-l*n+h),i*(d-l*t-s*n)]},p}function yd(t){return vd((function(){return t}))()}function vd(t){var n,e,r,i,o,a,u,c,f,s,l=150,h=480,d=250,p=0,g=0,y=0,v=0,_=0,b=0,m=1,x=1,w=null,M=Tl,T=null,A=eh,S=.5;function E(t){return c(t[0]*mf,t[1]*mf)}function N(t){return(t=c.invert(t[0],t[1]))&&[t[0]*bf,t[1]*bf]}function k(){var t=gd(l,0,0,m,x,b).apply(null,n(p,g)),r=gd(l,h-t[0],d-t[1],m,x,b);return e=ul(y,v,_),u=ol(n,r),c=ol(e,u),a=dd(u,S),C()}function C(){return f=s=null,E}return E.stream=function(t){return f&&s===t?f:f=pd(function(t){return id({point:function(n,e){var r=t(n,e);return this.stream.point(r[0],r[1])}})}(e)(M(a(A(s=t)))))},E.preclip=function(t){return arguments.length?(M=t,w=void 0,C()):M},E.postclip=function(t){return arguments.length?(A=t,T=r=i=o=null,C()):A},E.clipAngle=function(t){return arguments.length?(M=+t?Al(w=t*mf):(w=null,Tl),C()):w*bf},E.clipExtent=function(t){return arguments.length?(A=null==t?(T=r=i=o=null,eh):zl(T=+t[0][0],r=+t[0][1],i=+t[1][0],o=+t[1][1]),C()):null==T?null:[[T,r],[i,o]]},E.scale=function(t){return arguments.length?(l=+t,k()):l},E.translate=function(t){return arguments.length?(h=+t[0],d=+t[1],k()):[h,d]},E.center=function(t){return arguments.length?(p=t[0]%360*mf,g=t[1]%360*mf,k()):[p*bf,g*bf]},E.rotate=function(t){return arguments.length?(y=t[0]%360*mf,v=t[1]%360*mf,_=t.length>2?t[2]%360*mf:0,k()):[y*bf,v*bf,_*bf]},E.angle=function(t){return arguments.length?(b=t%360*mf,k()):b*bf},E.reflectX=function(t){return arguments.length?(m=t?-1:1,k()):m<0},E.reflectY=function(t){return arguments.length?(x=t?-1:1,k()):x<0},E.precision=function(t){return arguments.length?(a=dd(u,S=t*t),C()):zf(S)},E.fitExtent=function(t,n){return ud(E,t,n)},E.fitSize=function(t,n){return cd(E,t,n)},E.fitWidth=function(t,n){return fd(E,t,n)},E.fitHeight=function(t,n){return sd(E,t,n)},function(){return n=t.apply(this,arguments),E.invert=n.invert&&N,k()}}function _d(t){var n=0,e=gf/3,r=vd(t),i=r(n,e);return i.parallels=function(t){return arguments.length?r(n=t[0]*mf,e=t[1]*mf):[n*bf,e*bf]},i}function bd(t,n){var e=Cf(t),r=(e+Cf(n))/2;if(xf(r)<df)return function(t){var n=Tf(t);function e(t,e){return[t*n,Cf(e)/n]}return e.invert=function(t,e){return[t/n,Rf(e*n)]},e}(t);var i=1+e*(2*r-e),o=zf(i)/r;function a(t,n){var e=zf(i-2*r*Cf(n))/r;return[e*Cf(t*=r),o-e*Tf(t)]}return a.invert=function(t,n){var e=o-n,a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,Rf((i-(t*t+e*e)*r*r)/(2*r))]},a}function md(){return _d(bd).scale(155.424).center([0,33.6442])}function xd(){return md().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function wd(t){return function(n,e){var r=Tf(n),i=Tf(e),o=t(r*i);return o===1/0?[2,0]:[o*i*Cf(n),o*Cf(e)]}}function Md(t){return function(n,e){var r=zf(n*n+e*e),i=t(r),o=Cf(i),a=Tf(i);return[Mf(n*o,r*a),Rf(r&&e*o/r)]}}var Td=wd((function(t){return zf(2/(1+t))}));Td.invert=Md((function(t){return 2*Rf(t/2)}));var Ad=wd((function(t){return(t=Df(t))&&t/Cf(t)}));function Sd(t,n){return[t,Nf($f((yf+n)/2))]}function Ed(t){var n,e,r,i=yd(t),o=i.center,a=i.scale,u=i.translate,c=i.clipExtent,f=null;function s(){var o=gf*a(),u=i(ll(i.rotate()).invert([0,0]));return c(null==f?[[u[0]-o,u[1]-o],[u[0]+o,u[1]+o]]:t===Sd?[[Math.max(u[0]-o,f),n],[Math.min(u[0]+o,e),r]]:[[f,Math.max(u[1]-o,n)],[e,Math.min(u[1]+o,r)]])}return i.scale=function(t){return arguments.length?(a(t),s()):a()},i.translate=function(t){return arguments.length?(u(t),s()):u()},i.center=function(t){return arguments.length?(o(t),s()):o()},i.clipExtent=function(t){return arguments.length?(null==t?f=n=e=r=null:(f=+t[0][0],n=+t[0][1],e=+t[1][0],r=+t[1][1]),s()):null==f?null:[[f,n],[e,r]]},s()}function Nd(t){return $f((yf+t)/2)}function kd(t,n){var e=Tf(t),r=t===n?Cf(t):Nf(e/Tf(n))/Nf(Nd(n)/Nd(t)),i=e*kf(Nd(t),r)/r;if(!r)return Sd;function o(t,n){i>0?n<-yf+df&&(n=-yf+df):n>yf-df&&(n=yf-df);var e=i/kf(Nd(n),r);return[e*Cf(r*t),i-e*Tf(r*t)]}return o.invert=function(t,n){var e=i-n,o=Pf(r)*zf(t*t+e*e),a=Mf(t,xf(e))*Pf(e);return e*r<0&&(a-=gf*Pf(t)*Pf(e)),[a/r,2*wf(kf(i/o,1/r))-yf]},o}function Cd(t,n){return[t,n]}function Pd(t,n){var e=Tf(t),r=t===n?Cf(t):(e-Tf(n))/(n-t),i=e/r+t;if(xf(r)<df)return Cd;function o(t,n){var e=i-n,o=r*t;return[e*Cf(o),i-e*Tf(o)]}return o.invert=function(t,n){var e=i-n,o=Mf(t,xf(e))*Pf(e);return e*r<0&&(o-=gf*Pf(t)*Pf(e)),[o/r,i-Pf(r)*zf(t*t+e*e)]},o}Ad.invert=Md((function(t){return t})),Sd.invert=function(t,n){return[t,2*wf(Sf(n))-yf]},Cd.invert=Cd;var zd=1.340264,$d=-.081106,Dd=893e-6,Rd=.003796,Fd=zf(3)/2;function qd(t,n){var e=Rf(Fd*Cf(n)),r=e*e,i=r*r*r;return[t*Tf(e)/(Fd*(zd+3*$d*r+i*(7*Dd+9*Rd*r))),e*(zd+$d*r+i*(Dd+Rd*r))]}function Ud(t,n){var e=Tf(n),r=Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Id(t,n){var e=n*n,r=e*e;return[t*(.8707-.131979*e+r*(r*(.003971*e-.001529*r)-.013791)),n*(1.007226+e*(.015085+r*(.028874*e-.044475-.005916*r)))]}function Od(t,n){return[Tf(n)*Cf(t),Cf(n)]}function Bd(t,n){var e=Tf(n),r=1+Tf(t)*e;return[e*Cf(t)/r,Cf(n)/r]}function Yd(t,n){return[Nf($f((yf+n)/2)),-t]}function Ld(t,n){return t.parent===n.parent?1:2}function jd(t,n){return t+n.x}function Hd(t,n){return Math.max(t,n.y)}function Xd(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Gd(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Wd)):void 0===n&&(n=Vd);for(var e,r,i,o,a,u=new Qd(t),c=[u];e=c.pop();)if((i=n(e.data))&&(a=(i=Array.from(i)).length))for(e.children=i,o=a-1;o>=0;--o)c.push(r=i[o]=new Qd(i[o])),r.parent=e,r.depth=e.depth+1;return u.eachBefore(Kd)}function Vd(t){return t.children}function Wd(t){return Array.isArray(t)?t[1]:null}function Zd(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Kd(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function Qd(t){this.data=t,this.depth=this.height=0,this.parent=null}function Jd(t){return null==t?null:tp(t)}function tp(t){if("function"!=typeof t)throw new Error;return t}function np(){return 0}function ep(t){return function(){return t}}qd.invert=function(t,n){for(var e,r=n,i=r*r,o=i*i*i,a=0;a<12&&(o=(i=(r-=e=(r*(zd+$d*i+o*(Dd+Rd*i))-n)/(zd+3*$d*i+o*(7*Dd+9*Rd*i)))*r)*i*i,!(xf(e)<pf));++a);return[Fd*t*(zd+3*$d*i+o*(7*Dd+9*Rd*i))/Tf(r),Rf(Cf(r)/Fd)]},Ud.invert=Md(wf),Id.invert=function(t,n){var e,r=n,i=25;do{var o=r*r,a=o*o;r-=e=(r*(1.007226+o*(.015085+a*(.028874*o-.044475-.005916*a)))-n)/(1.007226+o*(.045255+a*(.259866*o-.311325-.005916*11*a)))}while(xf(e)>df&&--i>0);return[t/(.8707+(o=r*r)*(o*(o*o*o*(.003971-.001529*o)-.013791)-.131979)),r]},Od.invert=Md(Rf),Bd.invert=Md((function(t){return 2*wf(t)})),Yd.invert=function(t,n){return[-n,2*wf(Sf(t))-yf]},Qd.prototype=Gd.prototype={constructor:Qd,count:function(){return this.eachAfter(Xd)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,a=[o],u=[],c=-1;o=a.pop();)if(u.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)a.push(e[r]);for(;o=u.pop();)t.call(n,o,++c,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],a=-1;i=o.pop();)if(t.call(n,i,++a,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Gd(this).eachBefore(Zd)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};const rp=1664525,ip=1013904223,op=4294967296;function ap(){let t=1;return()=>(t=(rp*t+ip)%op)/op}function up(t,n){for(var e,r,i=0,o=(t=function(t,n){let e,r,i=t.length;for(;i;)r=n()*i--|0,e=t[i],t[i]=t[r],t[r]=e;return t}(Array.from(t),n)).length,a=[];i<o;)e=t[i],r&&sp(r,e)?++i:(r=hp(a=cp(a,e)),i=0);return r}function cp(t,n){var e,r;if(lp(n,t))return[n];for(e=0;e<t.length;++e)if(fp(n,t[e])&&lp(dp(t[e],n),t))return[t[e],n];for(e=0;e<t.length-1;++e)for(r=e+1;r<t.length;++r)if(fp(dp(t[e],t[r]),n)&&fp(dp(t[e],n),t[r])&&fp(dp(t[r],n),t[e])&&lp(pp(t[e],t[r],n),t))return[t[e],t[r],n];throw new Error}function fp(t,n){var e=t.r-n.r,r=n.x-t.x,i=n.y-t.y;return e<0||e*e<r*r+i*i}function sp(t,n){var e=t.r-n.r+1e-9*Math.max(t.r,n.r,1),r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function lp(t,n){for(var e=0;e<n.length;++e)if(!sp(t,n[e]))return!1;return!0}function hp(t){switch(t.length){case 1:return function(t){return{x:t.x,y:t.y,r:t.r}}(t[0]);case 2:return dp(t[0],t[1]);case 3:return pp(t[0],t[1],t[2])}}function dp(t,n){var e=t.x,r=t.y,i=t.r,o=n.x,a=n.y,u=n.r,c=o-e,f=a-r,s=u-i,l=Math.sqrt(c*c+f*f);return{x:(e+o+c/l*s)/2,y:(r+a+f/l*s)/2,r:(l+i+u)/2}}function pp(t,n,e){var r=t.x,i=t.y,o=t.r,a=n.x,u=n.y,c=n.r,f=e.x,s=e.y,l=e.r,h=r-a,d=r-f,p=i-u,g=i-s,y=c-o,v=l-o,_=r*r+i*i-o*o,b=_-a*a-u*u+c*c,m=_-f*f-s*s+l*l,x=d*p-h*g,w=(p*m-g*b)/(2*x)-r,M=(g*y-p*v)/x,T=(d*b-h*m)/(2*x)-i,A=(h*v-d*y)/x,S=M*M+A*A-1,E=2*(o+w*M+T*A),N=w*w+T*T-o*o,k=-(Math.abs(S)>1e-6?(E+Math.sqrt(E*E-4*S*N))/(2*S):N/E);return{x:r+w+M*k,y:i+T+A*k,r:k}}function gp(t,n,e){var r,i,o,a,u=t.x-n.x,c=t.y-n.y,f=u*u+c*c;f?(i=n.r+e.r,i*=i,a=t.r+e.r,i>(a*=a)?(r=(f+a-i)/(2*f),o=Math.sqrt(Math.max(0,a/f-r*r)),e.x=t.x-r*u-o*c,e.y=t.y-r*c+o*u):(r=(f+i-a)/(2*f),o=Math.sqrt(Math.max(0,i/f-r*r)),e.x=n.x+r*u-o*c,e.y=n.y+r*c+o*u)):(e.x=n.x+e.r,e.y=n.y)}function yp(t,n){var e=t.r+n.r-1e-6,r=n.x-t.x,i=n.y-t.y;return e>0&&e*e>r*r+i*i}function vp(t){var n=t._,e=t.next._,r=n.r+e.r,i=(n.x*e.r+e.x*n.r)/r,o=(n.y*e.r+e.y*n.r)/r;return i*i+o*o}function _p(t){this._=t,this.next=null,this.previous=null}function bp(t,n){if(!(o=(t=function(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}(t)).length))return 0;var e,r,i,o,a,u,c,f,s,l,h;if((e=t[0]).x=0,e.y=0,!(o>1))return e.r;if(r=t[1],e.x=-r.r,r.x=e.r,r.y=0,!(o>2))return e.r+r.r;gp(r,e,i=t[2]),e=new _p(e),r=new _p(r),i=new _p(i),e.next=i.previous=r,r.next=e.previous=i,i.next=r.previous=e;t:for(c=3;c<o;++c){gp(e._,r._,i=t[c]),i=new _p(i),f=r.next,s=e.previous,l=r._.r,h=e._.r;do{if(l<=h){if(yp(f._,i._)){r=f,e.next=r,r.previous=e,--c;continue t}l+=f._.r,f=f.next}else{if(yp(s._,i._)){(e=s).next=r,r.previous=e,--c;continue t}h+=s._.r,s=s.previous}}while(f!==s.next);for(i.previous=e,i.next=r,e.next=r.previous=r=i,a=vp(e);(i=i.next)!==r;)(u=vp(i))<a&&(e=i,a=u);r=e.next}for(e=[r._],i=r;(i=i.next)!==r;)e.push(i._);for(i=up(e,n),c=0;c<o;++c)(e=t[c]).x-=i.x,e.y-=i.y;return i.r}function mp(t){return Math.sqrt(t.value)}function xp(t){return function(n){n.children||(n.r=Math.max(0,+t(n)||0))}}function wp(t,n,e){return function(r){if(i=r.children){var i,o,a,u=i.length,c=t(r)*n||0;if(c)for(o=0;o<u;++o)i[o].r+=c;if(a=bp(i,e),c)for(o=0;o<u;++o)i[o].r-=c;r.r=a+c}}}function Mp(t){return function(n){var e=n.parent;n.r*=t,e&&(n.x=e.x+t*n.x,n.y=e.y+t*n.y)}}function Tp(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Ap(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(r-n)/t.value;++u<c;)(o=a[u]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*f}var Sp={depth:-1},Ep={},Np={};function kp(t){return t.id}function Cp(t){return t.parentId}function Pp(t){let n=t.length;if(n<2)return"";for(;--n>1&&!zp(t,n););return t.slice(0,n)}function zp(t,n){if("/"===t[n]){let e=0;for(;n>0&&"\\"===t[--n];)++e;if(0==(1&e))return!0}return!1}function $p(t,n){return t.parent===n.parent?1:2}function Dp(t){var n=t.children;return n?n[0]:t.t}function Rp(t){var n=t.children;return n?n[n.length-1]:t.t}function Fp(t,n,e){var r=e/(n.i-t.i);n.c-=r,n.s+=e,t.c+=r,n.z+=e,n.m+=e}function qp(t,n,e){return t.a.parent===n.parent?t.a:e}function Up(t,n){this._=t,this.parent=null,this.children=null,this.A=null,this.a=this,this.z=0,this.m=0,this.c=0,this.s=0,this.t=null,this.i=n}function Ip(t,n,e,r,i){for(var o,a=t.children,u=-1,c=a.length,f=t.value&&(i-e)/t.value;++u<c;)(o=a[u]).x0=n,o.x1=r,o.y0=e,o.y1=e+=o.value*f}Up.prototype=Object.create(Qd.prototype);var Op=(1+Math.sqrt(5))/2;function Bp(t,n,e,r,i,o){for(var a,u,c,f,s,l,h,d,p,g,y,v=[],_=n.children,b=0,m=0,x=_.length,w=n.value;b<x;){c=i-e,f=o-r;do{s=_[m++].value}while(!s&&m<x);for(l=h=s,y=s*s*(g=Math.max(f/c,c/f)/(w*t)),p=Math.max(h/y,y/l);m<x;++m){if(s+=u=_[m].value,u<l&&(l=u),u>h&&(h=u),y=s*s*g,(d=Math.max(h/y,y/l))>p){s-=u;break}p=d}v.push(a={value:s,dice:c<f,children:_.slice(b,m)}),a.dice?Ap(a,e,r,i,w?r+=f*s/w:o):Ip(a,e,r,w?e+=c*s/w:i,o),w-=s,b=m}return v}var Yp=function t(n){function e(t,e,r,i,o){Bp(n,t,e,r,i,o)}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);var Lp=function t(n){function e(t,e,r,i,o){if((a=t._squarify)&&a.ratio===n)for(var a,u,c,f,s,l=-1,h=a.length,d=t.value;++l<h;){for(c=(u=a[l]).children,f=u.value=0,s=c.length;f<s;++f)u.value+=c[f].value;u.dice?Ap(u,e,r,i,d?r+=(o-r)*u.value/d:o):Ip(u,e,r,d?e+=(i-e)*u.value/d:i,o),d-=u.value}else t._squarify=a=Bp(n,t,e,r,i,o),a.ratio=n}return e.ratio=function(n){return t((n=+n)>1?n:1)},e}(Op);function jp(t,n,e){return(n[0]-t[0])*(e[1]-t[1])-(n[1]-t[1])*(e[0]-t[0])}function Hp(t,n){return t[0]-n[0]||t[1]-n[1]}function Xp(t){const n=t.length,e=[0,1];let r,i=2;for(r=2;r<n;++r){for(;i>1&&jp(t[e[i-2]],t[e[i-1]],t[r])<=0;)--i;e[i++]=r}return e.slice(0,i)}var Gp=Math.random,Vp=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,1===arguments.length?(e=t,t=0):e-=t,function(){return n()*e+t}}return e.source=t,e}(Gp),Wp=function t(n){function e(t,e){return arguments.length<2&&(e=t,t=0),t=Math.floor(t),e=Math.floor(e)-t,function(){return Math.floor(n()*e+t)}}return e.source=t,e}(Gp),Zp=function t(n){function e(t,e){var r,i;return t=null==t?0:+t,e=null==e?1:+e,function(){var o;if(null!=r)o=r,r=null;else do{r=2*n()-1,o=2*n()-1,i=r*r+o*o}while(!i||i>1);return t+e*o*Math.sqrt(-2*Math.log(i)/i)}}return e.source=t,e}(Gp),Kp=function t(n){var e=Zp.source(n);function r(){var t=e.apply(this,arguments);return function(){return Math.exp(t())}}return r.source=t,r}(Gp),Qp=function t(n){function e(t){return(t=+t)<=0?()=>0:function(){for(var e=0,r=t;r>1;--r)e+=n();return e+r*n()}}return e.source=t,e}(Gp),Jp=function t(n){var e=Qp.source(n);function r(t){if(0==(t=+t))return n;var r=e(t);return function(){return r()/t}}return r.source=t,r}(Gp),tg=function t(n){function e(t){return function(){return-Math.log1p(-n())/t}}return e.source=t,e}(Gp),ng=function t(n){function e(t){if((t=+t)<0)throw new RangeError("invalid alpha");return t=1/-t,function(){return Math.pow(1-n(),t)}}return e.source=t,e}(Gp),eg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return function(){return Math.floor(n()+t)}}return e.source=t,e}(Gp),rg=function t(n){function e(t){if((t=+t)<0||t>1)throw new RangeError("invalid p");return 0===t?()=>1/0:1===t?()=>1:(t=Math.log1p(-t),function(){return 1+Math.floor(Math.log1p(-n())/t)})}return e.source=t,e}(Gp),ig=function t(n){var e=Zp.source(n)();function r(t,r){if((t=+t)<0)throw new RangeError("invalid k");if(0===t)return()=>0;if(r=null==r?1:+r,1===t)return()=>-Math.log1p(-n())*r;var i=(t<1?t+1:t)-1/3,o=1/(3*Math.sqrt(i)),a=t<1?()=>Math.pow(n(),1/t):()=>1;return function(){do{do{var t=e(),u=1+o*t}while(u<=0);u*=u*u;var c=1-n()}while(c>=1-.0331*t*t*t*t&&Math.log(c)>=.5*t*t+i*(1-u+Math.log(u)));return i*u*a()*r}}return r.source=t,r}(Gp),og=function t(n){var e=ig.source(n);function r(t,n){var r=e(t),i=e(n);return function(){var t=r();return 0===t?0:t/(t+i())}}return r.source=t,r}(Gp),ag=function t(n){var e=rg.source(n),r=og.source(n);function i(t,n){return t=+t,(n=+n)>=1?()=>t:n<=0?()=>0:function(){for(var i=0,o=t,a=n;o*a>16&&o*(1-a)>16;){var u=Math.floor((o+1)*a),c=r(u,o-u+1)();c<=a?(i+=u,o-=u,a=(a-c)/(1-c)):(o=u-1,a/=c)}for(var f=a<.5,s=e(f?a:1-a),l=s(),h=0;l<=o;++h)l+=s();return i+(f?h:o-h)}}return i.source=t,i}(Gp),ug=function t(n){function e(t,e,r){var i;return 0==(t=+t)?i=t=>-Math.log(t):(t=1/t,i=n=>Math.pow(n,t)),e=null==e?0:+e,r=null==r?1:+r,function(){return e+r*i(-Math.log1p(-n()))}}return e.source=t,e}(Gp),cg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){return t+e*Math.tan(Math.PI*n())}}return e.source=t,e}(Gp),fg=function t(n){function e(t,e){return t=null==t?0:+t,e=null==e?1:+e,function(){var r=n();return t+e*Math.log(r/(1-r))}}return e.source=t,e}(Gp),sg=function t(n){var e=ig.source(n),r=ag.source(n);function i(t){return function(){for(var i=0,o=t;o>16;){var a=Math.floor(.875*o),u=e(a)();if(u>o)return i+r(a-1,o/u)();i+=a,o-=u}for(var c=-Math.log1p(-n()),f=0;c<=o;++f)c-=Math.log1p(-n());return i+f}}return i.source=t,i}(Gp);const lg=1/4294967296;function hg(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function dg(t,n){switch(arguments.length){case 0:break;case 1:"function"==typeof t?this.interpolator(t):this.range(t);break;default:this.domain(t),"function"==typeof n?this.interpolator(n):this.range(n)}return this}const pg=Symbol("implicit");function gg(){var t=new InternMap,n=[],e=[],r=pg;function i(i){let o=t.get(i);if(void 0===o){if(r!==pg)return r;t.set(i,o=n.push(i)-1)}return e[o%e.length]}return i.domain=function(e){if(!arguments.length)return n.slice();n=[],t=new InternMap;for(const r of e)t.has(r)||t.set(r,n.push(r)-1);return i},i.range=function(t){return arguments.length?(e=Array.from(t),i):e.slice()},i.unknown=function(t){return arguments.length?(r=t,i):r},i.copy=function(){return gg(n,e).unknown(r)},hg.apply(i,arguments),i}function yg(){var t,n,e=gg().unknown(void 0),r=e.domain,i=e.range,o=0,a=1,u=!1,c=0,f=0,s=.5;function l(){var e=r().length,l=a<o,h=l?a:o,d=l?o:a;t=(d-h)/Math.max(1,e-c+2*f),u&&(t=Math.floor(t)),h+=(d-h-t*(e-c))*s,n=t*(1-c),u&&(h=Math.round(h),n=Math.round(n));var p=lt(e).map((function(n){return h+t*n}));return i(l?p.reverse():p)}return delete e.unknown,e.domain=function(t){return arguments.length?(r(t),l()):r()},e.range=function(t){return arguments.length?([o,a]=t,o=+o,a=+a,l()):[o,a]},e.rangeRound=function(t){return[o,a]=t,o=+o,a=+a,u=!0,l()},e.bandwidth=function(){return n},e.step=function(){return t},e.round=function(t){return arguments.length?(u=!!t,l()):u},e.padding=function(t){return arguments.length?(c=Math.min(1,f=+t),l()):c},e.paddingInner=function(t){return arguments.length?(c=Math.min(1,t),l()):c},e.paddingOuter=function(t){return arguments.length?(f=+t,l()):f},e.align=function(t){return arguments.length?(s=Math.max(0,Math.min(1,t)),l()):s},e.copy=function(){return yg(r(),[o,a]).round(u).paddingInner(c).paddingOuter(f).align(s)},hg.apply(l(),arguments)}function vg(t){var n=t.copy;return t.padding=t.paddingOuter,delete t.paddingInner,delete t.paddingOuter,t.copy=function(){return vg(n())},t}function _g(t){return+t}var bg=[0,1];function mg(t){return t}function xg(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:function(t){return function(){return t}}(isNaN(n)?NaN:.5)}function wg(t,n,e){var r=t[0],i=t[1],o=n[0],a=n[1];return i<r?(r=xg(i,r),o=e(a,o)):(r=xg(r,i),o=e(o,a)),function(t){return o(r(t))}}function Mg(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),a=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++a<r;)i[a]=xg(t[a],t[a+1]),o[a]=e(n[a],n[a+1]);return function(n){var e=s(t,n,1,r)-1;return o[e](i[e](n))}}function Tg(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Ag(){var t,n,e,r,i,o,a=bg,u=bg,c=Gr,f=mg;function s(){var t=Math.min(a.length,u.length);return f!==mg&&(f=function(t,n){var e;return t>n&&(e=t,t=n,n=e),function(e){return Math.max(t,Math.min(n,e))}}(a[0],a[t-1])),r=t>2?Mg:wg,i=o=null,l}function l(n){return null==n||isNaN(n=+n)?e:(i||(i=r(a.map(t),u,c)))(t(f(n)))}return l.invert=function(e){return f(n((o||(o=r(u,a.map(t),Yr)))(e)))},l.domain=function(t){return arguments.length?(a=Array.from(t,_g),s()):a.slice()},l.range=function(t){return arguments.length?(u=Array.from(t),s()):u.slice()},l.rangeRound=function(t){return u=Array.from(t),c=Vr,s()},l.clamp=function(t){return arguments.length?(f=!!t||mg,s()):f!==mg},l.interpolate=function(t){return arguments.length?(c=t,s()):c},l.unknown=function(t){return arguments.length?(e=t,l):e},function(e,r){return t=e,n=r,s()}}function Sg(){return Ag()(mg,mg)}function Eg(n,e,r,i){var o,a=W(n,e,r);switch((i=Jc(null==i?",f":i)).type){case"s":var u=Math.max(Math.abs(n),Math.abs(e));return null!=i.precision||isNaN(o=lf(a,u))||(i.precision=o),t.formatPrefix(i,u);case"":case"e":case"g":case"p":case"r":null!=i.precision||isNaN(o=hf(a,Math.max(Math.abs(n),Math.abs(e))))||(i.precision=o-("e"===i.type));break;case"f":case"%":null!=i.precision||isNaN(o=sf(a))||(i.precision=o-2*("%"===i.type))}return t.format(i)}function Ng(t){var n=t.domain;return t.ticks=function(t){var e=n();return G(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return Eg(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),a=0,u=o.length-1,c=o[a],f=o[u],s=10;for(f<c&&(i=c,c=f,f=i,i=a,a=u,u=i);s-- >0;){if((i=V(c,f,e))===r)return o[a]=c,o[u]=f,n(o);if(i>0)c=Math.floor(c/i)*i,f=Math.ceil(f/i)*i;else{if(!(i<0))break;c=Math.ceil(c*i)/i,f=Math.floor(f*i)/i}r=i}return t},t}function kg(t,n){var e,r=0,i=(t=t.slice()).length-1,o=t[r],a=t[i];return a<o&&(e=r,r=i,i=e,e=o,o=a,a=e),t[r]=n.floor(o),t[i]=n.ceil(a),t}function Cg(t){return Math.log(t)}function Pg(t){return Math.exp(t)}function zg(t){return-Math.log(-t)}function $g(t){return-Math.exp(-t)}function Dg(t){return isFinite(t)?+("1e"+t):t<0?0:t}function Rg(t){return(n,e)=>-t(-n,e)}function Fg(n){const e=n(Cg,Pg),r=e.domain;let i,o,a=10;function u(){return i=function(t){return t===Math.E?Math.log:10===t&&Math.log10||2===t&&Math.log2||(t=Math.log(t),n=>Math.log(n)/t)}(a),o=function(t){return 10===t?Dg:t===Math.E?Math.exp:n=>Math.pow(t,n)}(a),r()[0]<0?(i=Rg(i),o=Rg(o),n(zg,$g)):n(Cg,Pg),e}return e.base=function(t){return arguments.length?(a=+t,u()):a},e.domain=function(t){return arguments.length?(r(t),u()):r()},e.ticks=t=>{const n=r();let e=n[0],u=n[n.length-1];const c=u<e;c&&([e,u]=[u,e]);let f,s,l=i(e),h=i(u);const d=null==t?10:+t;let p=[];if(!(a%1)&&h-l<d){if(l=Math.floor(l),h=Math.ceil(h),e>0){for(;l<=h;++l)for(f=1;f<a;++f)if(s=l<0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}}else for(;l<=h;++l)for(f=a-1;f>=1;--f)if(s=l>0?f/o(-l):f*o(l),!(s<e)){if(s>u)break;p.push(s)}2*p.length<d&&(p=G(e,u,d))}else p=G(l,h,Math.min(h-l,d)).map(o);return c?p.reverse():p},e.tickFormat=(n,r)=>{if(null==n&&(n=10),null==r&&(r=10===a?"s":","),"function"!=typeof r&&(a%1||null!=(r=Jc(r)).precision||(r.trim=!0),r=t.format(r)),n===1/0)return r;const u=Math.max(1,a*n/e.ticks().length);return t=>{let n=t/o(Math.round(i(t)));return n*a<a-.5&&(n*=a),n<=u?r(t):""}},e.nice=()=>r(kg(r(),{floor:t=>o(Math.floor(i(t))),ceil:t=>o(Math.ceil(i(t)))})),e}function qg(t){return function(n){return Math.sign(n)*Math.log1p(Math.abs(n/t))}}function Ug(t){return function(n){return Math.sign(n)*Math.expm1(Math.abs(n))*t}}function Ig(t){var n=1,e=t(qg(n),Ug(n));return e.constant=function(e){return arguments.length?t(qg(n=+e),Ug(n)):n},Ng(e)}function Og(t){return function(n){return n<0?-Math.pow(-n,t):Math.pow(n,t)}}function Bg(t){return t<0?-Math.sqrt(-t):Math.sqrt(t)}function Yg(t){return t<0?-t*t:t*t}function Lg(t){var n=t(mg,mg),e=1;return n.exponent=function(n){return arguments.length?1===(e=+n)?t(mg,mg):.5===e?t(Bg,Yg):t(Og(e),Og(1/e)):e},Ng(n)}function jg(){var t=Lg(Ag());return t.copy=function(){return Tg(t,jg()).exponent(t.exponent())},hg.apply(t,arguments),t}function Hg(t){return Math.sign(t)*t*t}const Xg=new Date,Gg=new Date;function Vg(t,n,e,r){function i(n){return t(n=0===arguments.length?new Date:new Date(+n)),n}return i.floor=n=>(t(n=new Date(+n)),n),i.ceil=e=>(t(e=new Date(e-1)),n(e,1),t(e),e),i.round=t=>{const n=i(t),e=i.ceil(t);return t-n<e-t?n:e},i.offset=(t,e)=>(n(t=new Date(+t),null==e?1:Math.floor(e)),t),i.range=(e,r,o)=>{const a=[];if(e=i.ceil(e),o=null==o?1:Math.floor(o),!(e<r&&o>0))return a;let u;do{a.push(u=new Date(+e)),n(e,o),t(e)}while(u<e&&e<r);return a},i.filter=e=>Vg((n=>{if(n>=n)for(;t(n),!e(n);)n.setTime(n-1)}),((t,r)=>{if(t>=t)if(r<0)for(;++r<=0;)for(;n(t,-1),!e(t););else for(;--r>=0;)for(;n(t,1),!e(t););})),e&&(i.count=(n,r)=>(Xg.setTime(+n),Gg.setTime(+r),t(Xg),t(Gg),Math.floor(e(Xg,Gg))),i.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?i.filter(r?n=>r(n)%t==0:n=>i.count(0,n)%t==0):i:null)),i}const Wg=Vg((()=>{}),((t,n)=>{t.setTime(+t+n)}),((t,n)=>n-t));Wg.every=t=>(t=Math.floor(t),isFinite(t)&&t>0?t>1?Vg((n=>{n.setTime(Math.floor(n/t)*t)}),((n,e)=>{n.setTime(+n+e*t)}),((n,e)=>(e-n)/t)):Wg:null);const Zg=Wg.range,Kg=1e3,Qg=6e4,Jg=36e5,ty=864e5,ny=6048e5,ey=2592e6,ry=31536e6,iy=Vg((t=>{t.setTime(t-t.getMilliseconds())}),((t,n)=>{t.setTime(+t+n*Kg)}),((t,n)=>(n-t)/Kg),(t=>t.getUTCSeconds())),oy=iy.range,ay=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getMinutes())),uy=ay.range,cy=Vg((t=>{t.setUTCSeconds(0,0)}),((t,n)=>{t.setTime(+t+n*Qg)}),((t,n)=>(n-t)/Qg),(t=>t.getUTCMinutes())),fy=cy.range,sy=Vg((t=>{t.setTime(t-t.getMilliseconds()-t.getSeconds()*Kg-t.getMinutes()*Qg)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getHours())),ly=sy.range,hy=Vg((t=>{t.setUTCMinutes(0,0,0)}),((t,n)=>{t.setTime(+t+n*Jg)}),((t,n)=>(n-t)/Jg),(t=>t.getUTCHours())),dy=hy.range,py=Vg((t=>t.setHours(0,0,0,0)),((t,n)=>t.setDate(t.getDate()+n)),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ty),(t=>t.getDate()-1)),gy=py.range,yy=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>t.getUTCDate()-1)),vy=yy.range,_y=Vg((t=>{t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+n)}),((t,n)=>(n-t)/ty),(t=>Math.floor(t/ty))),by=_y.range;function my(t){return Vg((n=>{n.setDate(n.getDate()-(n.getDay()+7-t)%7),n.setHours(0,0,0,0)}),((t,n)=>{t.setDate(t.getDate()+7*n)}),((t,n)=>(n-t-(n.getTimezoneOffset()-t.getTimezoneOffset())*Qg)/ny))}const xy=my(0),wy=my(1),My=my(2),Ty=my(3),Ay=my(4),Sy=my(5),Ey=my(6),Ny=xy.range,ky=wy.range,Cy=My.range,Py=Ty.range,zy=Ay.range,$y=Sy.range,Dy=Ey.range;function Ry(t){return Vg((n=>{n.setUTCDate(n.getUTCDate()-(n.getUTCDay()+7-t)%7),n.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCDate(t.getUTCDate()+7*n)}),((t,n)=>(n-t)/ny))}const Fy=Ry(0),qy=Ry(1),Uy=Ry(2),Iy=Ry(3),Oy=Ry(4),By=Ry(5),Yy=Ry(6),Ly=Fy.range,jy=qy.range,Hy=Uy.range,Xy=Iy.range,Gy=Oy.range,Vy=By.range,Wy=Yy.range,Zy=Vg((t=>{t.setDate(1),t.setHours(0,0,0,0)}),((t,n)=>{t.setMonth(t.getMonth()+n)}),((t,n)=>n.getMonth()-t.getMonth()+12*(n.getFullYear()-t.getFullYear())),(t=>t.getMonth())),Ky=Zy.range,Qy=Vg((t=>{t.setUTCDate(1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCMonth(t.getUTCMonth()+n)}),((t,n)=>n.getUTCMonth()-t.getUTCMonth()+12*(n.getUTCFullYear()-t.getUTCFullYear())),(t=>t.getUTCMonth())),Jy=Qy.range,tv=Vg((t=>{t.setMonth(0,1),t.setHours(0,0,0,0)}),((t,n)=>{t.setFullYear(t.getFullYear()+n)}),((t,n)=>n.getFullYear()-t.getFullYear()),(t=>t.getFullYear()));tv.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setFullYear(Math.floor(n.getFullYear()/t)*t),n.setMonth(0,1),n.setHours(0,0,0,0)}),((n,e)=>{n.setFullYear(n.getFullYear()+e*t)})):null;const nv=tv.range,ev=Vg((t=>{t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)}),((t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n)}),((t,n)=>n.getUTCFullYear()-t.getUTCFullYear()),(t=>t.getUTCFullYear()));ev.every=t=>isFinite(t=Math.floor(t))&&t>0?Vg((n=>{n.setUTCFullYear(Math.floor(n.getUTCFullYear()/t)*t),n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)}),((n,e)=>{n.setUTCFullYear(n.getUTCFullYear()+e*t)})):null;const rv=ev.range;function iv(t,n,e,i,o,a){const u=[[iy,1,Kg],[iy,5,5e3],[iy,15,15e3],[iy,30,3e4],[a,1,Qg],[a,5,3e5],[a,15,9e5],[a,30,18e5],[o,1,Jg],[o,3,108e5],[o,6,216e5],[o,12,432e5],[i,1,ty],[i,2,1728e5],[e,1,ny],[n,1,ey],[n,3,7776e6],[t,1,ry]];function c(n,e,i){const o=Math.abs(e-n)/i,a=r((([,,t])=>t)).right(u,o);if(a===u.length)return t.every(W(n/ry,e/ry,i));if(0===a)return Wg.every(Math.max(W(n,e,i),1));const[c,f]=u[o/u[a-1][2]<u[a][2]/o?a-1:a];return c.every(f)}return[function(t,n,e){const r=n<t;r&&([t,n]=[n,t]);const i=e&&"function"==typeof e.range?e:c(t,n,e),o=i?i.range(t,+n+1):[];return r?o.reverse():o},c]}const[ov,av]=iv(ev,Qy,Fy,_y,hy,cy),[uv,cv]=iv(tv,Zy,xy,py,sy,ay);function fv(t){if(0<=t.y&&t.y<100){var n=new Date(-1,t.m,t.d,t.H,t.M,t.S,t.L);return n.setFullYear(t.y),n}return new Date(t.y,t.m,t.d,t.H,t.M,t.S,t.L)}function sv(t){if(0<=t.y&&t.y<100){var n=new Date(Date.UTC(-1,t.m,t.d,t.H,t.M,t.S,t.L));return n.setUTCFullYear(t.y),n}return new Date(Date.UTC(t.y,t.m,t.d,t.H,t.M,t.S,t.L))}function lv(t,n,e){return{y:t,m:n,d:e,H:0,M:0,S:0,L:0}}function hv(t){var n=t.dateTime,e=t.date,r=t.time,i=t.periods,o=t.days,a=t.shortDays,u=t.months,c=t.shortMonths,f=mv(i),s=xv(i),l=mv(o),h=xv(o),d=mv(a),p=xv(a),g=mv(u),y=xv(u),v=mv(c),_=xv(c),b={a:function(t){return a[t.getDay()]},A:function(t){return o[t.getDay()]},b:function(t){return c[t.getMonth()]},B:function(t){return u[t.getMonth()]},c:null,d:Yv,e:Yv,f:Gv,g:i_,G:a_,H:Lv,I:jv,j:Hv,L:Xv,m:Vv,M:Wv,p:function(t){return i[+(t.getHours()>=12)]},q:function(t){return 1+~~(t.getMonth()/3)},Q:k_,s:C_,S:Zv,u:Kv,U:Qv,V:t_,w:n_,W:e_,x:null,X:null,y:r_,Y:o_,Z:u_,"%":N_},m={a:function(t){return a[t.getUTCDay()]},A:function(t){return o[t.getUTCDay()]},b:function(t){return c[t.getUTCMonth()]},B:function(t){return u[t.getUTCMonth()]},c:null,d:c_,e:c_,f:d_,g:T_,G:S_,H:f_,I:s_,j:l_,L:h_,m:p_,M:g_,p:function(t){return i[+(t.getUTCHours()>=12)]},q:function(t){return 1+~~(t.getUTCMonth()/3)},Q:k_,s:C_,S:y_,u:v_,U:__,V:m_,w:x_,W:w_,x:null,X:null,y:M_,Y:A_,Z:E_,"%":N_},x={a:function(t,n,e){var r=d.exec(n.slice(e));return r?(t.w=p.get(r[0].toLowerCase()),e+r[0].length):-1},A:function(t,n,e){var r=l.exec(n.slice(e));return r?(t.w=h.get(r[0].toLowerCase()),e+r[0].length):-1},b:function(t,n,e){var r=v.exec(n.slice(e));return r?(t.m=_.get(r[0].toLowerCase()),e+r[0].length):-1},B:function(t,n,e){var r=g.exec(n.slice(e));return r?(t.m=y.get(r[0].toLowerCase()),e+r[0].length):-1},c:function(t,e,r){return T(t,n,e,r)},d:zv,e:zv,f:Uv,g:Nv,G:Ev,H:Dv,I:Dv,j:$v,L:qv,m:Pv,M:Rv,p:function(t,n,e){var r=f.exec(n.slice(e));return r?(t.p=s.get(r[0].toLowerCase()),e+r[0].length):-1},q:Cv,Q:Ov,s:Bv,S:Fv,u:Mv,U:Tv,V:Av,w:wv,W:Sv,x:function(t,n,r){return T(t,e,n,r)},X:function(t,n,e){return T(t,r,n,e)},y:Nv,Y:Ev,Z:kv,"%":Iv};function w(t,n){return function(e){var r,i,o,a=[],u=-1,c=0,f=t.length;for(e instanceof Date||(e=new Date(+e));++u<f;)37===t.charCodeAt(u)&&(a.push(t.slice(c,u)),null!=(i=pv[r=t.charAt(++u)])?r=t.charAt(++u):i="e"===r?" ":"0",(o=n[r])&&(r=o(e,i)),a.push(r),c=u+1);return a.push(t.slice(c,u)),a.join("")}}function M(t,n){return function(e){var r,i,o=lv(1900,void 0,1);if(T(o,t,e+="",0)!=e.length)return null;if("Q"in o)return new Date(o.Q);if("s"in o)return new Date(1e3*o.s+("L"in o?o.L:0));if(n&&!("Z"in o)&&(o.Z=0),"p"in o&&(o.H=o.H%12+12*o.p),void 0===o.m&&(o.m="q"in o?o.q:0),"V"in o){if(o.V<1||o.V>53)return null;"w"in o||(o.w=1),"Z"in o?(i=(r=sv(lv(o.y,0,1))).getUTCDay(),r=i>4||0===i?qy.ceil(r):qy(r),r=yy.offset(r,7*(o.V-1)),o.y=r.getUTCFullYear(),o.m=r.getUTCMonth(),o.d=r.getUTCDate()+(o.w+6)%7):(i=(r=fv(lv(o.y,0,1))).getDay(),r=i>4||0===i?wy.ceil(r):wy(r),r=py.offset(r,7*(o.V-1)),o.y=r.getFullYear(),o.m=r.getMonth(),o.d=r.getDate()+(o.w+6)%7)}else("W"in o||"U"in o)&&("w"in o||(o.w="u"in o?o.u%7:"W"in o?1:0),i="Z"in o?sv(lv(o.y,0,1)).getUTCDay():fv(lv(o.y,0,1)).getDay(),o.m=0,o.d="W"in o?(o.w+6)%7+7*o.W-(i+5)%7:o.w+7*o.U-(i+6)%7);return"Z"in o?(o.H+=o.Z/100|0,o.M+=o.Z%100,sv(o)):fv(o)}}function T(t,n,e,r){for(var i,o,a=0,u=n.length,c=e.length;a<u;){if(r>=c)return-1;if(37===(i=n.charCodeAt(a++))){if(i=n.charAt(a++),!(o=x[i in pv?n.charAt(a++):i])||(r=o(t,e,r))<0)return-1}else if(i!=e.charCodeAt(r++))return-1}return r}return b.x=w(e,b),b.X=w(r,b),b.c=w(n,b),m.x=w(e,m),m.X=w(r,m),m.c=w(n,m),{format:function(t){var n=w(t+="",b);return n.toString=function(){return t},n},parse:function(t){var n=M(t+="",!1);return n.toString=function(){return t},n},utcFormat:function(t){var n=w(t+="",m);return n.toString=function(){return t},n},utcParse:function(t){var n=M(t+="",!0);return n.toString=function(){return t},n}}}var dv,pv={"-":"",_:" ",0:"0"},gv=/^\s*\d+/,yv=/^%/,vv=/[\\^$*+?|[\]().{}]/g;function _v(t,n,e){var r=t<0?"-":"",i=(r?-t:t)+"",o=i.length;return r+(o<e?new Array(e-o+1).join(n)+i:i)}function bv(t){return t.replace(vv,"\\$&")}function mv(t){return new RegExp("^(?:"+t.map(bv).join("|")+")","i")}function xv(t){return new Map(t.map(((t,n)=>[t.toLowerCase(),n])))}function wv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.w=+r[0],e+r[0].length):-1}function Mv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.u=+r[0],e+r[0].length):-1}function Tv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.U=+r[0],e+r[0].length):-1}function Av(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.V=+r[0],e+r[0].length):-1}function Sv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.W=+r[0],e+r[0].length):-1}function Ev(t,n,e){var r=gv.exec(n.slice(e,e+4));return r?(t.y=+r[0],e+r[0].length):-1}function Nv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.y=+r[0]+(+r[0]>68?1900:2e3),e+r[0].length):-1}function kv(t,n,e){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(n.slice(e,e+6));return r?(t.Z=r[1]?0:-(r[2]+(r[3]||"00")),e+r[0].length):-1}function Cv(t,n,e){var r=gv.exec(n.slice(e,e+1));return r?(t.q=3*r[0]-3,e+r[0].length):-1}function Pv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.m=r[0]-1,e+r[0].length):-1}function zv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.d=+r[0],e+r[0].length):-1}function $v(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.m=0,t.d=+r[0],e+r[0].length):-1}function Dv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.H=+r[0],e+r[0].length):-1}function Rv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.M=+r[0],e+r[0].length):-1}function Fv(t,n,e){var r=gv.exec(n.slice(e,e+2));return r?(t.S=+r[0],e+r[0].length):-1}function qv(t,n,e){var r=gv.exec(n.slice(e,e+3));return r?(t.L=+r[0],e+r[0].length):-1}function Uv(t,n,e){var r=gv.exec(n.slice(e,e+6));return r?(t.L=Math.floor(r[0]/1e3),e+r[0].length):-1}function Iv(t,n,e){var r=yv.exec(n.slice(e,e+1));return r?e+r[0].length:-1}function Ov(t,n,e){var r=gv.exec(n.slice(e));return r?(t.Q=+r[0],e+r[0].length):-1}function Bv(t,n,e){var r=gv.exec(n.slice(e));return r?(t.s=+r[0],e+r[0].length):-1}function Yv(t,n){return _v(t.getDate(),n,2)}function Lv(t,n){return _v(t.getHours(),n,2)}function jv(t,n){return _v(t.getHours()%12||12,n,2)}function Hv(t,n){return _v(1+py.count(tv(t),t),n,3)}function Xv(t,n){return _v(t.getMilliseconds(),n,3)}function Gv(t,n){return Xv(t,n)+"000"}function Vv(t,n){return _v(t.getMonth()+1,n,2)}function Wv(t,n){return _v(t.getMinutes(),n,2)}function Zv(t,n){return _v(t.getSeconds(),n,2)}function Kv(t){var n=t.getDay();return 0===n?7:n}function Qv(t,n){return _v(xy.count(tv(t)-1,t),n,2)}function Jv(t){var n=t.getDay();return n>=4||0===n?Ay(t):Ay.ceil(t)}function t_(t,n){return t=Jv(t),_v(Ay.count(tv(t),t)+(4===tv(t).getDay()),n,2)}function n_(t){return t.getDay()}function e_(t,n){return _v(wy.count(tv(t)-1,t),n,2)}function r_(t,n){return _v(t.getFullYear()%100,n,2)}function i_(t,n){return _v((t=Jv(t)).getFullYear()%100,n,2)}function o_(t,n){return _v(t.getFullYear()%1e4,n,4)}function a_(t,n){var e=t.getDay();return _v((t=e>=4||0===e?Ay(t):Ay.ceil(t)).getFullYear()%1e4,n,4)}function u_(t){var n=t.getTimezoneOffset();return(n>0?"-":(n*=-1,"+"))+_v(n/60|0,"0",2)+_v(n%60,"0",2)}function c_(t,n){return _v(t.getUTCDate(),n,2)}function f_(t,n){return _v(t.getUTCHours(),n,2)}function s_(t,n){return _v(t.getUTCHours()%12||12,n,2)}function l_(t,n){return _v(1+yy.count(ev(t),t),n,3)}function h_(t,n){return _v(t.getUTCMilliseconds(),n,3)}function d_(t,n){return h_(t,n)+"000"}function p_(t,n){return _v(t.getUTCMonth()+1,n,2)}function g_(t,n){return _v(t.getUTCMinutes(),n,2)}function y_(t,n){return _v(t.getUTCSeconds(),n,2)}function v_(t){var n=t.getUTCDay();return 0===n?7:n}function __(t,n){return _v(Fy.count(ev(t)-1,t),n,2)}function b_(t){var n=t.getUTCDay();return n>=4||0===n?Oy(t):Oy.ceil(t)}function m_(t,n){return t=b_(t),_v(Oy.count(ev(t),t)+(4===ev(t).getUTCDay()),n,2)}function x_(t){return t.getUTCDay()}function w_(t,n){return _v(qy.count(ev(t)-1,t),n,2)}function M_(t,n){return _v(t.getUTCFullYear()%100,n,2)}function T_(t,n){return _v((t=b_(t)).getUTCFullYear()%100,n,2)}function A_(t,n){return _v(t.getUTCFullYear()%1e4,n,4)}function S_(t,n){var e=t.getUTCDay();return _v((t=e>=4||0===e?Oy(t):Oy.ceil(t)).getUTCFullYear()%1e4,n,4)}function E_(){return"+0000"}function N_(){return"%"}function k_(t){return+t}function C_(t){return Math.floor(+t/1e3)}function P_(n){return dv=hv(n),t.timeFormat=dv.format,t.timeParse=dv.parse,t.utcFormat=dv.utcFormat,t.utcParse=dv.utcParse,dv}t.timeFormat=void 0,t.timeParse=void 0,t.utcFormat=void 0,t.utcParse=void 0,P_({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"]});var z_="%Y-%m-%dT%H:%M:%S.%LZ";var $_=Date.prototype.toISOString?function(t){return t.toISOString()}:t.utcFormat(z_),D_=$_;var R_=+new Date("2000-01-01T00:00:00.000Z")?function(t){var n=new Date(t);return isNaN(n)?null:n}:t.utcParse(z_),F_=R_;function q_(t){return new Date(t)}function U_(t){return t instanceof Date?+t:+new Date(+t)}function I_(t,n,e,r,i,o,a,u,c,f){var s=Sg(),l=s.invert,h=s.domain,d=f(".%L"),p=f(":%S"),g=f("%I:%M"),y=f("%I %p"),v=f("%a %d"),_=f("%b %d"),b=f("%B"),m=f("%Y");function x(t){return(c(t)<t?d:u(t)<t?p:a(t)<t?g:o(t)<t?y:r(t)<t?i(t)<t?v:_:e(t)<t?b:m)(t)}return s.invert=function(t){return new Date(l(t))},s.domain=function(t){return arguments.length?h(Array.from(t,U_)):h().map(q_)},s.ticks=function(n){var e=h();return t(e[0],e[e.length-1],null==n?10:n)},s.tickFormat=function(t,n){return null==n?x:f(n)},s.nice=function(t){var e=h();return t&&"function"==typeof t.range||(t=n(e[0],e[e.length-1],null==t?10:t)),t?h(kg(e,t)):s},s.copy=function(){return Tg(s,I_(t,n,e,r,i,o,a,u,c,f))},s}function O_(){var t,n,e,r,i,o=0,a=1,u=mg,c=!1;function f(n){return null==n||isNaN(n=+n)?i:u(0===e?.5:(n=(r(n)-t)*e,c?Math.max(0,Math.min(1,n)):n))}function s(t){return function(n){var e,r;return arguments.length?([e,r]=n,u=t(e,r),f):[u(0),u(1)]}}return f.domain=function(i){return arguments.length?([o,a]=i,t=r(o=+o),n=r(a=+a),e=t===n?0:1/(n-t),f):[o,a]},f.clamp=function(t){return arguments.length?(c=!!t,f):c},f.interpolator=function(t){return arguments.length?(u=t,f):u},f.range=s(Gr),f.rangeRound=s(Vr),f.unknown=function(t){return arguments.length?(i=t,f):i},function(i){return r=i,t=i(o),n=i(a),e=t===n?0:1/(n-t),f}}function B_(t,n){return n.domain(t.domain()).interpolator(t.interpolator()).clamp(t.clamp()).unknown(t.unknown())}function Y_(){var t=Lg(O_());return t.copy=function(){return B_(t,Y_()).exponent(t.exponent())},dg.apply(t,arguments)}function L_(){var t,n,e,r,i,o,a,u=0,c=.5,f=1,s=1,l=mg,h=!1;function d(t){return isNaN(t=+t)?a:(t=.5+((t=+o(t))-n)*(s*t<s*n?r:i),l(h?Math.max(0,Math.min(1,t)):t))}function p(t){return function(n){var e,r,i;return arguments.length?([e,r,i]=n,l=di(t,[e,r,i]),d):[l(0),l(.5),l(1)]}}return d.domain=function(a){return arguments.length?([u,c,f]=a,t=o(u=+u),n=o(c=+c),e=o(f=+f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d):[u,c,f]},d.clamp=function(t){return arguments.length?(h=!!t,d):h},d.interpolator=function(t){return arguments.length?(l=t,d):l},d.range=p(Gr),d.rangeRound=p(Vr),d.unknown=function(t){return arguments.length?(a=t,d):a},function(a){return o=a,t=a(u),n=a(c),e=a(f),r=t===n?0:.5/(n-t),i=n===e?0:.5/(e-n),s=n<t?-1:1,d}}function j_(){var t=Lg(L_());return t.copy=function(){return B_(t,j_()).exponent(t.exponent())},dg.apply(t,arguments)}function H_(t){for(var n=t.length/6|0,e=new Array(n),r=0;r<n;)e[r]="#"+t.slice(6*r,6*++r);return e}var X_=H_("1f77b4ff7f0e2ca02cd627289467bd8c564be377c27f7f7fbcbd2217becf"),G_=H_("7fc97fbeaed4fdc086ffff99386cb0f0027fbf5b17666666"),V_=H_("1b9e77d95f027570b3e7298a66a61ee6ab02a6761d666666"),W_=H_("a6cee31f78b4b2df8a33a02cfb9a99e31a1cfdbf6fff7f00cab2d66a3d9affff99b15928"),Z_=H_("fbb4aeb3cde3ccebc5decbe4fed9a6ffffcce5d8bdfddaecf2f2f2"),K_=H_("b3e2cdfdcdaccbd5e8f4cae4e6f5c9fff2aef1e2cccccccc"),Q_=H_("e41a1c377eb84daf4a984ea3ff7f00ffff33a65628f781bf999999"),J_=H_("66c2a5fc8d628da0cbe78ac3a6d854ffd92fe5c494b3b3b3"),tb=H_("8dd3c7ffffb3bebadafb807280b1d3fdb462b3de69fccde5d9d9d9bc80bdccebc5ffed6f"),nb=H_("4e79a7f28e2ce1575976b7b259a14fedc949af7aa1ff9da79c755fbab0ab"),eb=t=>Fr(t[t.length-1]),rb=new Array(3).concat("d8b365f5f5f55ab4ac","a6611adfc27d80cdc1018571","a6611adfc27df5f5f580cdc1018571","8c510ad8b365f6e8c3c7eae55ab4ac01665e","8c510ad8b365f6e8c3f5f5f5c7eae55ab4ac01665e","8c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e","8c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e","5430058c510abf812ddfc27df6e8c3c7eae580cdc135978f01665e003c30","5430058c510abf812ddfc27df6e8c3f5f5f5c7eae580cdc135978f01665e003c30").map(H_),ib=eb(rb),ob=new Array(3).concat("af8dc3f7f7f77fbf7b","7b3294c2a5cfa6dba0008837","7b3294c2a5cff7f7f7a6dba0008837","762a83af8dc3e7d4e8d9f0d37fbf7b1b7837","762a83af8dc3e7d4e8f7f7f7d9f0d37fbf7b1b7837","762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b7837","762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b7837","40004b762a839970abc2a5cfe7d4e8d9f0d3a6dba05aae611b783700441b","40004b762a839970abc2a5cfe7d4e8f7f7f7d9f0d3a6dba05aae611b783700441b").map(H_),ab=eb(ob),ub=new Array(3).concat("e9a3c9f7f7f7a1d76a","d01c8bf1b6dab8e1864dac26","d01c8bf1b6daf7f7f7b8e1864dac26","c51b7de9a3c9fde0efe6f5d0a1d76a4d9221","c51b7de9a3c9fde0eff7f7f7e6f5d0a1d76a4d9221","c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221","c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221","8e0152c51b7dde77aef1b6dafde0efe6f5d0b8e1867fbc414d9221276419","8e0152c51b7dde77aef1b6dafde0eff7f7f7e6f5d0b8e1867fbc414d9221276419").map(H_),cb=eb(ub),fb=new Array(3).concat("998ec3f7f7f7f1a340","5e3c99b2abd2fdb863e66101","5e3c99b2abd2f7f7f7fdb863e66101","542788998ec3d8daebfee0b6f1a340b35806","542788998ec3d8daebf7f7f7fee0b6f1a340b35806","5427888073acb2abd2d8daebfee0b6fdb863e08214b35806","5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b35806","2d004b5427888073acb2abd2d8daebfee0b6fdb863e08214b358067f3b08","2d004b5427888073acb2abd2d8daebf7f7f7fee0b6fdb863e08214b358067f3b08").map(H_),sb=eb(fb),lb=new Array(3).concat("ef8a62f7f7f767a9cf","ca0020f4a58292c5de0571b0","ca0020f4a582f7f7f792c5de0571b0","b2182bef8a62fddbc7d1e5f067a9cf2166ac","b2182bef8a62fddbc7f7f7f7d1e5f067a9cf2166ac","b2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac","b2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac","67001fb2182bd6604df4a582fddbc7d1e5f092c5de4393c32166ac053061","67001fb2182bd6604df4a582fddbc7f7f7f7d1e5f092c5de4393c32166ac053061").map(H_),hb=eb(lb),db=new Array(3).concat("ef8a62ffffff999999","ca0020f4a582bababa404040","ca0020f4a582ffffffbababa404040","b2182bef8a62fddbc7e0e0e09999994d4d4d","b2182bef8a62fddbc7ffffffe0e0e09999994d4d4d","b2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d","b2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d","67001fb2182bd6604df4a582fddbc7e0e0e0bababa8787874d4d4d1a1a1a","67001fb2182bd6604df4a582fddbc7ffffffe0e0e0bababa8787874d4d4d1a1a1a").map(H_),pb=eb(db),gb=new Array(3).concat("fc8d59ffffbf91bfdb","d7191cfdae61abd9e92c7bb6","d7191cfdae61ffffbfabd9e92c7bb6","d73027fc8d59fee090e0f3f891bfdb4575b4","d73027fc8d59fee090ffffbfe0f3f891bfdb4575b4","d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4","d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4","a50026d73027f46d43fdae61fee090e0f3f8abd9e974add14575b4313695","a50026d73027f46d43fdae61fee090ffffbfe0f3f8abd9e974add14575b4313695").map(H_),yb=eb(gb),vb=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(H_),_b=eb(vb),bb=new Array(3).concat("fc8d59ffffbf99d594","d7191cfdae61abdda42b83ba","d7191cfdae61ffffbfabdda42b83ba","d53e4ffc8d59fee08be6f59899d5943288bd","d53e4ffc8d59fee08bffffbfe6f59899d5943288bd","d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd","d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd","9e0142d53e4ff46d43fdae61fee08be6f598abdda466c2a53288bd5e4fa2","9e0142d53e4ff46d43fdae61fee08bffffbfe6f598abdda466c2a53288bd5e4fa2").map(H_),mb=eb(bb),xb=new Array(3).concat("e5f5f999d8c92ca25f","edf8fbb2e2e266c2a4238b45","edf8fbb2e2e266c2a42ca25f006d2c","edf8fbccece699d8c966c2a42ca25f006d2c","edf8fbccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45005824","f7fcfde5f5f9ccece699d8c966c2a441ae76238b45006d2c00441b").map(H_),wb=eb(xb),Mb=new Array(3).concat("e0ecf49ebcda8856a7","edf8fbb3cde38c96c688419d","edf8fbb3cde38c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68856a7810f7c","edf8fbbfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d6e016b","f7fcfde0ecf4bfd3e69ebcda8c96c68c6bb188419d810f7c4d004b").map(H_),Tb=eb(Mb),Ab=new Array(3).concat("e0f3dba8ddb543a2ca","f0f9e8bae4bc7bccc42b8cbe","f0f9e8bae4bc7bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc443a2ca0868ac","f0f9e8ccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe08589e","f7fcf0e0f3dbccebc5a8ddb57bccc44eb3d32b8cbe0868ac084081").map(H_),Sb=eb(Ab),Eb=new Array(3).concat("fee8c8fdbb84e34a33","fef0d9fdcc8afc8d59d7301f","fef0d9fdcc8afc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59e34a33b30000","fef0d9fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301f990000","fff7ecfee8c8fdd49efdbb84fc8d59ef6548d7301fb300007f0000").map(H_),Nb=eb(Eb),kb=new Array(3).concat("ece2f0a6bddb1c9099","f6eff7bdc9e167a9cf02818a","f6eff7bdc9e167a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf1c9099016c59","f6eff7d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016450","fff7fbece2f0d0d1e6a6bddb67a9cf3690c002818a016c59014636").map(H_),Cb=eb(kb),Pb=new Array(3).concat("ece7f2a6bddb2b8cbe","f1eef6bdc9e174a9cf0570b0","f1eef6bdc9e174a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf2b8cbe045a8d","f1eef6d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0034e7b","fff7fbece7f2d0d1e6a6bddb74a9cf3690c00570b0045a8d023858").map(H_),zb=eb(Pb),$b=new Array(3).concat("e7e1efc994c7dd1c77","f1eef6d7b5d8df65b0ce1256","f1eef6d7b5d8df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0dd1c77980043","f1eef6d4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125691003f","f7f4f9e7e1efd4b9dac994c7df65b0e7298ace125698004367001f").map(H_),Db=eb($b),Rb=new Array(3).concat("fde0ddfa9fb5c51b8a","feebe2fbb4b9f768a1ae017e","feebe2fbb4b9f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1c51b8a7a0177","feebe2fcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a0177","fff7f3fde0ddfcc5c0fa9fb5f768a1dd3497ae017e7a017749006a").map(H_),Fb=eb(Rb),qb=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(H_),Ub=eb(qb),Ib=new Array(3).concat("f7fcb9addd8e31a354","ffffccc2e69978c679238443","ffffccc2e69978c67931a354006837","ffffccd9f0a3addd8e78c67931a354006837","ffffccd9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443005a32","ffffe5f7fcb9d9f0a3addd8e78c67941ab5d238443006837004529").map(H_),Ob=eb(Ib),Bb=new Array(3).concat("fff7bcfec44fd95f0e","ffffd4fed98efe9929cc4c02","ffffd4fed98efe9929d95f0e993404","ffffd4fee391fec44ffe9929d95f0e993404","ffffd4fee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c028c2d04","ffffe5fff7bcfee391fec44ffe9929ec7014cc4c02993404662506").map(H_),Yb=eb(Bb),Lb=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(H_),jb=eb(Lb),Hb=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(H_),Xb=eb(Hb),Gb=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(H_),Vb=eb(Gb),Wb=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(H_),Zb=eb(Wb),Kb=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(H_),Qb=eb(Kb),Jb=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(H_),tm=eb(Jb),nm=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(H_),em=eb(nm);var rm=hi(Tr(300,.5,0),Tr(-240,.5,1)),im=hi(Tr(-100,.75,.35),Tr(80,1.5,.8)),om=hi(Tr(260,.75,.35),Tr(80,1.5,.8)),am=Tr();var um=Fe(),cm=Math.PI/3,fm=2*Math.PI/3;function sm(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}}var lm=sm(H_("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725")),hm=sm(H_("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf")),dm=sm(H_("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),pm=sm(H_("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function gm(t){return function(){return t}}const ym=Math.abs,vm=Math.atan2,_m=Math.cos,bm=Math.max,mm=Math.min,xm=Math.sin,wm=Math.sqrt,Mm=1e-12,Tm=Math.PI,Am=Tm/2,Sm=2*Tm;function Em(t){return t>=1?Am:t<=-1?-Am:Math.asin(t)}function Nm(t){let n=3;return t.digits=function(e){if(!arguments.length)return n;if(null==e)n=null;else{const t=Math.floor(e);if(!(t>=0))throw new RangeError(`invalid digits: ${e}`);n=t}return t},()=>new Ua(n)}function km(t){return t.innerRadius}function Cm(t){return t.outerRadius}function Pm(t){return t.startAngle}function zm(t){return t.endAngle}function $m(t){return t&&t.padAngle}function Dm(t,n,e,r,i,o,a){var u=t-e,c=n-r,f=(a?o:-o)/wm(u*u+c*c),s=f*c,l=-f*u,h=t+s,d=n+l,p=e+s,g=r+l,y=(h+p)/2,v=(d+g)/2,_=p-h,b=g-d,m=_*_+b*b,x=i-o,w=h*g-p*d,M=(b<0?-1:1)*wm(bm(0,x*x*m-w*w)),T=(w*b-_*M)/m,A=(-w*_-b*M)/m,S=(w*b+_*M)/m,E=(-w*_+b*M)/m,N=T-y,k=A-v,C=S-y,P=E-v;return N*N+k*k>C*C+P*P&&(T=S,A=E),{cx:T,cy:A,x01:-s,y01:-l,x11:T*(i/x-1),y11:A*(i/x-1)}}var Rm=Array.prototype.slice;function Fm(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function qm(t){this._context=t}function Um(t){return new qm(t)}function Im(t){return t[0]}function Om(t){return t[1]}function Bm(t,n){var e=gm(!0),r=null,i=Um,o=null,a=Nm(u);function u(u){var c,f,s,l=(u=Fm(u)).length,h=!1;for(null==r&&(o=i(s=a())),c=0;c<=l;++c)!(c<l&&e(f=u[c],c,u))===h&&((h=!h)?o.lineStart():o.lineEnd()),h&&o.point(+t(f,c,u),+n(f,c,u));if(s)return o=null,s+""||null}return t="function"==typeof t?t:void 0===t?Im:gm(t),n="function"==typeof n?n:void 0===n?Om:gm(n),u.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),u):t},u.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),u):n},u.defined=function(t){return arguments.length?(e="function"==typeof t?t:gm(!!t),u):e},u.curve=function(t){return arguments.length?(i=t,null!=r&&(o=i(r)),u):i},u.context=function(t){return arguments.length?(null==t?r=o=null:o=i(r=t),u):r},u}function Ym(t,n,e){var r=null,i=gm(!0),o=null,a=Um,u=null,c=Nm(f);function f(f){var s,l,h,d,p,g=(f=Fm(f)).length,y=!1,v=new Array(g),_=new Array(g);for(null==o&&(u=a(p=c())),s=0;s<=g;++s){if(!(s<g&&i(d=f[s],s,f))===y)if(y=!y)l=s,u.areaStart(),u.lineStart();else{for(u.lineEnd(),u.lineStart(),h=s-1;h>=l;--h)u.point(v[h],_[h]);u.lineEnd(),u.areaEnd()}y&&(v[s]=+t(d,s,f),_[s]=+n(d,s,f),u.point(r?+r(d,s,f):v[s],e?+e(d,s,f):_[s]))}if(p)return u=null,p+""||null}function s(){return Bm().defined(i).curve(a).context(o)}return t="function"==typeof t?t:void 0===t?Im:gm(+t),n="function"==typeof n?n:gm(void 0===n?0:+n),e="function"==typeof e?e:void 0===e?Om:gm(+e),f.x=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),r=null,f):t},f.x0=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.x1=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.y=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),e=null,f):n},f.y0=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.y1=function(t){return arguments.length?(e=null==t?null:"function"==typeof t?t:gm(+t),f):e},f.lineX0=f.lineY0=function(){return s().x(t).y(n)},f.lineY1=function(){return s().x(t).y(e)},f.lineX1=function(){return s().x(r).y(n)},f.defined=function(t){return arguments.length?(i="function"==typeof t?t:gm(!!t),f):i},f.curve=function(t){return arguments.length?(a=t,null!=o&&(u=a(o)),f):a},f.context=function(t){return arguments.length?(null==t?o=u=null:u=a(o=t),f):o},f}function Lm(t,n){return n<t?-1:n>t?1:n>=t?0:NaN}function jm(t){return t}qm.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._context.lineTo(t,n)}}};var Hm=Gm(Um);function Xm(t){this._curve=t}function Gm(t){function n(n){return new Xm(t(n))}return n._curve=t,n}function Vm(t){var n=t.curve;return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Wm(){return Vm(Bm().curve(Hm))}function Zm(){var t=Ym().curve(Hm),n=t.curve,e=t.lineX0,r=t.lineX1,i=t.lineY0,o=t.lineY1;return t.angle=t.x,delete t.x,t.startAngle=t.x0,delete t.x0,t.endAngle=t.x1,delete t.x1,t.radius=t.y,delete t.y,t.innerRadius=t.y0,delete t.y0,t.outerRadius=t.y1,delete t.y1,t.lineStartAngle=function(){return Vm(e())},delete t.lineX0,t.lineEndAngle=function(){return Vm(r())},delete t.lineX1,t.lineInnerRadius=function(){return Vm(i())},delete t.lineY0,t.lineOuterRadius=function(){return Vm(o())},delete t.lineY1,t.curve=function(t){return arguments.length?n(Gm(t)):n()._curve},t}function Km(t,n){return[(n=+n)*Math.cos(t-=Math.PI/2),n*Math.sin(t)]}Xm.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(t,n){this._curve.point(n*Math.sin(t),n*-Math.cos(t))}};class Qm{constructor(t,n){this._context=t,this._x=n}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line}point(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,n,t,n):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+n)/2,t,this._y0,t,n)}this._x0=t,this._y0=n}}class Jm{constructor(t){this._context=t}lineStart(){this._point=0}lineEnd(){}point(t,n){if(t=+t,n=+n,0===this._point)this._point=1;else{const e=Km(this._x0,this._y0),r=Km(this._x0,this._y0=(this._y0+n)/2),i=Km(t,this._y0),o=Km(t,n);this._context.moveTo(...e),this._context.bezierCurveTo(...r,...i,...o)}this._x0=t,this._y0=n}}function tx(t){return new Qm(t,!0)}function nx(t){return new Qm(t,!1)}function ex(t){return new Jm(t)}function rx(t){return t.source}function ix(t){return t.target}function ox(t){let n=rx,e=ix,r=Im,i=Om,o=null,a=null,u=Nm(c);function c(){let c;const f=Rm.call(arguments),s=n.apply(this,f),l=e.apply(this,f);if(null==o&&(a=t(c=u())),a.lineStart(),f[0]=s,a.point(+r.apply(this,f),+i.apply(this,f)),f[0]=l,a.point(+r.apply(this,f),+i.apply(this,f)),a.lineEnd(),c)return a=null,c+""||null}return c.source=function(t){return arguments.length?(n=t,c):n},c.target=function(t){return arguments.length?(e=t,c):e},c.x=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),c):r},c.y=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),c):i},c.context=function(n){return arguments.length?(null==n?o=a=null:a=t(o=n),c):o},c}const ax=wm(3);var ux={draw(t,n){const e=.59436*wm(n+mm(n/28,.75)),r=e/2,i=r*ax;t.moveTo(0,e),t.lineTo(0,-e),t.moveTo(-i,-r),t.lineTo(i,r),t.moveTo(-i,r),t.lineTo(i,-r)}},cx={draw(t,n){const e=wm(n/Tm);t.moveTo(e,0),t.arc(0,0,e,0,Sm)}},fx={draw(t,n){const e=wm(n/5)/2;t.moveTo(-3*e,-e),t.lineTo(-e,-e),t.lineTo(-e,-3*e),t.lineTo(e,-3*e),t.lineTo(e,-e),t.lineTo(3*e,-e),t.lineTo(3*e,e),t.lineTo(e,e),t.lineTo(e,3*e),t.lineTo(-e,3*e),t.lineTo(-e,e),t.lineTo(-3*e,e),t.closePath()}};const sx=wm(1/3),lx=2*sx;var hx={draw(t,n){const e=wm(n/lx),r=e*sx;t.moveTo(0,-e),t.lineTo(r,0),t.lineTo(0,e),t.lineTo(-r,0),t.closePath()}},dx={draw(t,n){const e=.62625*wm(n);t.moveTo(0,-e),t.lineTo(e,0),t.lineTo(0,e),t.lineTo(-e,0),t.closePath()}},px={draw(t,n){const e=.87559*wm(n-mm(n/7,2));t.moveTo(-e,0),t.lineTo(e,0),t.moveTo(0,e),t.lineTo(0,-e)}},gx={draw(t,n){const e=wm(n),r=-e/2;t.rect(r,r,e,e)}},yx={draw(t,n){const e=.4431*wm(n);t.moveTo(e,e),t.lineTo(e,-e),t.lineTo(-e,-e),t.lineTo(-e,e),t.closePath()}};const vx=xm(Tm/10)/xm(7*Tm/10),_x=xm(Sm/10)*vx,bx=-_m(Sm/10)*vx;var mx={draw(t,n){const e=wm(.8908130915292852*n),r=_x*e,i=bx*e;t.moveTo(0,-e),t.lineTo(r,i);for(let n=1;n<5;++n){const o=Sm*n/5,a=_m(o),u=xm(o);t.lineTo(u*e,-a*e),t.lineTo(a*r-u*i,u*r+a*i)}t.closePath()}};const xx=wm(3);var wx={draw(t,n){const e=-wm(n/(3*xx));t.moveTo(0,2*e),t.lineTo(-xx*e,-e),t.lineTo(xx*e,-e),t.closePath()}};const Mx=wm(3);var Tx={draw(t,n){const e=.6824*wm(n),r=e/2,i=e*Mx/2;t.moveTo(0,-e),t.lineTo(i,r),t.lineTo(-i,r),t.closePath()}};const Ax=-.5,Sx=wm(3)/2,Ex=1/wm(12),Nx=3*(Ex/2+1);var kx={draw(t,n){const e=wm(n/Nx),r=e/2,i=e*Ex,o=r,a=e*Ex+e,u=-o,c=a;t.moveTo(r,i),t.lineTo(o,a),t.lineTo(u,c),t.lineTo(Ax*r-Sx*i,Sx*r+Ax*i),t.lineTo(Ax*o-Sx*a,Sx*o+Ax*a),t.lineTo(Ax*u-Sx*c,Sx*u+Ax*c),t.lineTo(Ax*r+Sx*i,Ax*i-Sx*r),t.lineTo(Ax*o+Sx*a,Ax*a-Sx*o),t.lineTo(Ax*u+Sx*c,Ax*c-Sx*u),t.closePath()}},Cx={draw(t,n){const e=.6189*wm(n-mm(n/6,1.7));t.moveTo(-e,-e),t.lineTo(e,e),t.moveTo(-e,e),t.lineTo(e,-e)}};const Px=[cx,fx,hx,gx,mx,wx,kx],zx=[cx,px,Cx,Tx,ux,yx,dx];function $x(){}function Dx(t,n,e){t._context.bezierCurveTo((2*t._x0+t._x1)/3,(2*t._y0+t._y1)/3,(t._x0+2*t._x1)/3,(t._y0+2*t._y1)/3,(t._x0+4*t._x1+n)/6,(t._y0+4*t._y1+e)/6)}function Rx(t){this._context=t}function Fx(t){this._context=t}function qx(t){this._context=t}function Ux(t,n){this._basis=new Rx(t),this._beta=n}Rx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:Dx(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Fx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x2=t,this._y2=n;break;case 1:this._point=2,this._x3=t,this._y3=n;break;case 2:this._point=3,this._x4=t,this._y4=n,this._context.moveTo((this._x0+4*this._x1+t)/6,(this._y0+4*this._y1+n)/6);break;default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var e=(this._x0+4*this._x1+t)/6,r=(this._y0+4*this._y1+n)/6;this._line?this._context.lineTo(e,r):this._context.moveTo(e,r);break;case 3:this._point=4;default:Dx(this,t,n)}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n}},Ux.prototype={lineStart:function(){this._x=[],this._y=[],this._basis.lineStart()},lineEnd:function(){var t=this._x,n=this._y,e=t.length-1;if(e>0)for(var r,i=t[0],o=n[0],a=t[e]-i,u=n[e]-o,c=-1;++c<=e;)r=c/e,this._basis.point(this._beta*t[c]+(1-this._beta)*(i+r*a),this._beta*n[c]+(1-this._beta)*(o+r*u));this._x=this._y=null,this._basis.lineEnd()},point:function(t,n){this._x.push(+t),this._y.push(+n)}};var Ix=function t(n){function e(t){return 1===n?new Rx(t):new Ux(t,n)}return e.beta=function(n){return t(+n)},e}(.85);function Ox(t,n,e){t._context.bezierCurveTo(t._x1+t._k*(t._x2-t._x0),t._y1+t._k*(t._y2-t._y0),t._x2+t._k*(t._x1-n),t._y2+t._k*(t._y1-e),t._x2,t._y2)}function Bx(t,n){this._context=t,this._k=(1-n)/6}Bx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:Ox(this,this._x1,this._y1)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2,this._x1=t,this._y1=n;break;case 2:this._point=3;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Yx=function t(n){function e(t){return new Bx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Lx(t,n){this._context=t,this._k=(1-n)/6}Lx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var jx=function t(n){function e(t){return new Lx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Hx(t,n){this._context=t,this._k=(1-n)/6}Hx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Ox(this,t,n)}this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Xx=function t(n){function e(t){return new Hx(t,n)}return e.tension=function(n){return t(+n)},e}(0);function Gx(t,n,e){var r=t._x1,i=t._y1,o=t._x2,a=t._y2;if(t._l01_a>Mm){var u=2*t._l01_2a+3*t._l01_a*t._l12_a+t._l12_2a,c=3*t._l01_a*(t._l01_a+t._l12_a);r=(r*u-t._x0*t._l12_2a+t._x2*t._l01_2a)/c,i=(i*u-t._y0*t._l12_2a+t._y2*t._l01_2a)/c}if(t._l23_a>Mm){var f=2*t._l23_2a+3*t._l23_a*t._l12_a+t._l12_2a,s=3*t._l23_a*(t._l23_a+t._l12_a);o=(o*f+t._x1*t._l23_2a-n*t._l12_2a)/s,a=(a*f+t._y1*t._l23_2a-e*t._l12_2a)/s}t._context.bezierCurveTo(r,i,o,a,t._x2,t._y2)}function Vx(t,n){this._context=t,this._alpha=n}Vx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x2,this._y2);break;case 3:this.point(this._x2,this._y2)}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Wx=function t(n){function e(t){return n?new Vx(t,n):new Bx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Zx(t,n){this._context=t,this._alpha=n}Zx.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._x5=this._y0=this._y1=this._y2=this._y3=this._y4=this._y5=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x3,this._y3),this._context.closePath();break;case 2:this._context.lineTo(this._x3,this._y3),this._context.closePath();break;case 3:this.point(this._x3,this._y3),this.point(this._x4,this._y4),this.point(this._x5,this._y5)}},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1,this._x3=t,this._y3=n;break;case 1:this._point=2,this._context.moveTo(this._x4=t,this._y4=n);break;case 2:this._point=3,this._x5=t,this._y5=n;break;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Kx=function t(n){function e(t){return n?new Zx(t,n):new Lx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function Qx(t,n){this._context=t,this._alpha=n}Qx.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._x2=this._y0=this._y1=this._y2=NaN,this._l01_a=this._l12_a=this._l23_a=this._l01_2a=this._l12_2a=this._l23_2a=this._point=0},lineEnd:function(){(this._line||0!==this._line&&3===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){if(t=+t,n=+n,this._point){var e=this._x2-t,r=this._y2-n;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+r*r,this._alpha))}switch(this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3,this._line?this._context.lineTo(this._x2,this._y2):this._context.moveTo(this._x2,this._y2);break;case 3:this._point=4;default:Gx(this,t,n)}this._l01_a=this._l12_a,this._l12_a=this._l23_a,this._l01_2a=this._l12_2a,this._l12_2a=this._l23_2a,this._x0=this._x1,this._x1=this._x2,this._x2=t,this._y0=this._y1,this._y1=this._y2,this._y2=n}};var Jx=function t(n){function e(t){return n?new Qx(t,n):new Hx(t,0)}return e.alpha=function(n){return t(+n)},e}(.5);function tw(t){this._context=t}function nw(t){return t<0?-1:1}function ew(t,n,e){var r=t._x1-t._x0,i=n-t._x1,o=(t._y1-t._y0)/(r||i<0&&-0),a=(e-t._y1)/(i||r<0&&-0),u=(o*i+a*r)/(r+i);return(nw(o)+nw(a))*Math.min(Math.abs(o),Math.abs(a),.5*Math.abs(u))||0}function rw(t,n){var e=t._x1-t._x0;return e?(3*(t._y1-t._y0)/e-n)/2:n}function iw(t,n,e){var r=t._x0,i=t._y0,o=t._x1,a=t._y1,u=(o-r)/3;t._context.bezierCurveTo(r+u,i+u*n,o-u,a-u*e,o,a)}function ow(t){this._context=t}function aw(t){this._context=new uw(t)}function uw(t){this._context=t}function cw(t){this._context=t}function fw(t){var n,e,r=t.length-1,i=new Array(r),o=new Array(r),a=new Array(r);for(i[0]=0,o[0]=2,a[0]=t[0]+2*t[1],n=1;n<r-1;++n)i[n]=1,o[n]=4,a[n]=4*t[n]+2*t[n+1];for(i[r-1]=2,o[r-1]=7,a[r-1]=8*t[r-1]+t[r],n=1;n<r;++n)e=i[n]/o[n-1],o[n]-=e,a[n]-=e*a[n-1];for(i[r-1]=a[r-1]/o[r-1],n=r-2;n>=0;--n)i[n]=(a[n]-i[n+1])/o[n];for(o[r-1]=(t[r]+i[r-1])/2,n=0;n<r-1;++n)o[n]=2*t[n+1]-i[n+1];return[i,o]}function sw(t,n){this._context=t,this._t=n}function lw(t,n){if((i=t.length)>1)for(var e,r,i,o=1,a=t[n[0]],u=a.length;o<i;++o)for(r=a,a=t[n[o]],e=0;e<u;++e)a[e][1]+=a[e][0]=isNaN(r[e][1])?r[e][0]:r[e][1]}function hw(t){for(var n=t.length,e=new Array(n);--n>=0;)e[n]=n;return e}function dw(t,n){return t[n]}function pw(t){const n=[];return n.key=t,n}function gw(t){var n=t.map(yw);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function yw(t){for(var n,e=-1,r=0,i=t.length,o=-1/0;++e<i;)(n=+t[e][1])>o&&(o=n,r=e);return r}function vw(t){var n=t.map(_w);return hw(t).sort((function(t,e){return n[t]-n[e]}))}function _w(t){for(var n,e=0,r=-1,i=t.length;++r<i;)(n=+t[r][1])&&(e+=n);return e}tw.prototype={areaStart:$x,areaEnd:$x,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(t,n){t=+t,n=+n,this._point?this._context.lineTo(t,n):(this._point=1,this._context.moveTo(t,n))}},ow.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:iw(this,this._t0,rw(this,this._t0))}(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line=1-this._line},point:function(t,n){var e=NaN;if(n=+n,(t=+t)!==this._x1||n!==this._y1){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;break;case 2:this._point=3,iw(this,rw(this,e=ew(this,t,n)),e);break;default:iw(this,this._t0,e=ew(this,t,n))}this._x0=this._x1,this._x1=t,this._y0=this._y1,this._y1=n,this._t0=e}}},(aw.prototype=Object.create(ow.prototype)).point=function(t,n){ow.prototype.point.call(this,n,t)},uw.prototype={moveTo:function(t,n){this._context.moveTo(n,t)},closePath:function(){this._context.closePath()},lineTo:function(t,n){this._context.lineTo(n,t)},bezierCurveTo:function(t,n,e,r,i,o){this._context.bezierCurveTo(n,t,r,e,o,i)}},cw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var t=this._x,n=this._y,e=t.length;if(e)if(this._line?this._context.lineTo(t[0],n[0]):this._context.moveTo(t[0],n[0]),2===e)this._context.lineTo(t[1],n[1]);else for(var r=fw(t),i=fw(n),o=0,a=1;a<e;++o,++a)this._context.bezierCurveTo(r[0][o],i[0][o],r[1][o],i[1][o],t[a],n[a]);(this._line||0!==this._line&&1===e)&&this._context.closePath(),this._line=1-this._line,this._x=this._y=null},point:function(t,n){this._x.push(+t),this._y.push(+n)}},sw.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=this._y=NaN,this._point=0},lineEnd:function(){0<this._t&&this._t<1&&2===this._point&&this._context.lineTo(this._x,this._y),(this._line||0!==this._line&&1===this._point)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(t,n){switch(t=+t,n=+n,this._point){case 0:this._point=1,this._line?this._context.lineTo(t,n):this._context.moveTo(t,n);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,n),this._context.lineTo(t,n);else{var e=this._x*(1-this._t)+t*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,n)}}this._x=t,this._y=n}};var bw=t=>()=>t;function mw(t,{sourceEvent:n,target:e,transform:r,dispatch:i}){Object.defineProperties(this,{type:{value:t,enumerable:!0,configurable:!0},sourceEvent:{value:n,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:r,enumerable:!0,configurable:!0},_:{value:i}})}function xw(t,n,e){this.k=t,this.x=n,this.y=e}xw.prototype={constructor:xw,scale:function(t){return 1===t?this:new xw(this.k*t,this.x,this.y)},translate:function(t,n){return 0===t&0===n?this:new xw(this.k,this.x+this.k*t,this.y+this.k*n)},apply:function(t){return[t[0]*this.k+this.x,t[1]*this.k+this.y]},applyX:function(t){return t*this.k+this.x},applyY:function(t){return t*this.k+this.y},invert:function(t){return[(t[0]-this.x)/this.k,(t[1]-this.y)/this.k]},invertX:function(t){return(t-this.x)/this.k},invertY:function(t){return(t-this.y)/this.k},rescaleX:function(t){return t.copy().domain(t.range().map(this.invertX,this).map(t.invert,t))},rescaleY:function(t){return t.copy().domain(t.range().map(this.invertY,this).map(t.invert,t))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var ww=new xw(1,0,0);function Mw(t){for(;!t.__zoom;)if(!(t=t.parentNode))return ww;return t.__zoom}function Tw(t){t.stopImmediatePropagation()}function Aw(t){t.preventDefault(),t.stopImmediatePropagation()}function Sw(t){return!(t.ctrlKey&&"wheel"!==t.type||t.button)}function Ew(){var t=this;return t instanceof SVGElement?(t=t.ownerSVGElement||t).hasAttribute("viewBox")?[[(t=t.viewBox.baseVal).x,t.y],[t.x+t.width,t.y+t.height]]:[[0,0],[t.width.baseVal.value,t.height.baseVal.value]]:[[0,0],[t.clientWidth,t.clientHeight]]}function Nw(){return this.__zoom||ww}function kw(t){return-t.deltaY*(1===t.deltaMode?.05:t.deltaMode?1:.002)*(t.ctrlKey?10:1)}function Cw(){return navigator.maxTouchPoints||"ontouchstart"in this}function Pw(t,n,e){var r=t.invertX(n[0][0])-e[0][0],i=t.invertX(n[1][0])-e[1][0],o=t.invertY(n[0][1])-e[0][1],a=t.invertY(n[1][1])-e[1][1];return t.translate(i>r?(r+i)/2:Math.min(0,r)||Math.max(0,i),a>o?(o+a)/2:Math.min(0,o)||Math.max(0,a))}Mw.prototype=xw.prototype,t.Adder=T,t.Delaunay=Lu,t.FormatSpecifier=tf,t.InternMap=InternMap,t.InternSet=InternSet,t.Node=Qd,t.Path=Ua,t.Voronoi=qu,t.ZoomTransform=xw,t.active=function(t,n){var e,r,i=t.__transition;if(i)for(r in n=null==n?null:n+"",i)if((e=i[r]).state>qi&&e.name===n)return new po([[t]],Zo,n,+r);return null},t.arc=function(){var t=km,n=Cm,e=gm(0),r=null,i=Pm,o=zm,a=$m,u=null,c=Nm(f);function f(){var f,s,l=+t.apply(this,arguments),h=+n.apply(this,arguments),d=i.apply(this,arguments)-Am,p=o.apply(this,arguments)-Am,g=ym(p-d),y=p>d;if(u||(u=f=c()),h<l&&(s=h,h=l,l=s),h>Mm)if(g>Sm-Mm)u.moveTo(h*_m(d),h*xm(d)),u.arc(0,0,h,d,p,!y),l>Mm&&(u.moveTo(l*_m(p),l*xm(p)),u.arc(0,0,l,p,d,y));else{var v,_,b=d,m=p,x=d,w=p,M=g,T=g,A=a.apply(this,arguments)/2,S=A>Mm&&(r?+r.apply(this,arguments):wm(l*l+h*h)),E=mm(ym(h-l)/2,+e.apply(this,arguments)),N=E,k=E;if(S>Mm){var C=Em(S/l*xm(A)),P=Em(S/h*xm(A));(M-=2*C)>Mm?(x+=C*=y?1:-1,w-=C):(M=0,x=w=(d+p)/2),(T-=2*P)>Mm?(b+=P*=y?1:-1,m-=P):(T=0,b=m=(d+p)/2)}var z=h*_m(b),$=h*xm(b),D=l*_m(w),R=l*xm(w);if(E>Mm){var F,q=h*_m(m),U=h*xm(m),I=l*_m(x),O=l*xm(x);if(g<Tm)if(F=function(t,n,e,r,i,o,a,u){var c=e-t,f=r-n,s=a-i,l=u-o,h=l*c-s*f;if(!(h*h<Mm))return[t+(h=(s*(n-o)-l*(t-i))/h)*c,n+h*f]}(z,$,I,O,q,U,D,R)){var B=z-F[0],Y=$-F[1],L=q-F[0],j=U-F[1],H=1/xm(function(t){return t>1?0:t<-1?Tm:Math.acos(t)}((B*L+Y*j)/(wm(B*B+Y*Y)*wm(L*L+j*j)))/2),X=wm(F[0]*F[0]+F[1]*F[1]);N=mm(E,(l-X)/(H-1)),k=mm(E,(h-X)/(H+1))}else N=k=0}T>Mm?k>Mm?(v=Dm(I,O,z,$,h,k,y),_=Dm(q,U,D,R,h,k,y),u.moveTo(v.cx+v.x01,v.cy+v.y01),k<E?u.arc(v.cx,v.cy,k,vm(v.y01,v.x01),vm(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,k,vm(v.y01,v.x01),vm(v.y11,v.x11),!y),u.arc(0,0,h,vm(v.cy+v.y11,v.cx+v.x11),vm(_.cy+_.y11,_.cx+_.x11),!y),u.arc(_.cx,_.cy,k,vm(_.y11,_.x11),vm(_.y01,_.x01),!y))):(u.moveTo(z,$),u.arc(0,0,h,b,m,!y)):u.moveTo(z,$),l>Mm&&M>Mm?N>Mm?(v=Dm(D,R,q,U,l,-N,y),_=Dm(z,$,I,O,l,-N,y),u.lineTo(v.cx+v.x01,v.cy+v.y01),N<E?u.arc(v.cx,v.cy,N,vm(v.y01,v.x01),vm(_.y01,_.x01),!y):(u.arc(v.cx,v.cy,N,vm(v.y01,v.x01),vm(v.y11,v.x11),!y),u.arc(0,0,l,vm(v.cy+v.y11,v.cx+v.x11),vm(_.cy+_.y11,_.cx+_.x11),y),u.arc(_.cx,_.cy,N,vm(_.y11,_.x11),vm(_.y01,_.x01),!y))):u.arc(0,0,l,w,x,y):u.lineTo(D,R)}else u.moveTo(0,0);if(u.closePath(),f)return u=null,f+""||null}return f.centroid=function(){var e=(+t.apply(this,arguments)+ +n.apply(this,arguments))/2,r=(+i.apply(this,arguments)+ +o.apply(this,arguments))/2-Tm/2;return[_m(r)*e,xm(r)*e]},f.innerRadius=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),f):t},f.outerRadius=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),f):n},f.cornerRadius=function(t){return arguments.length?(e="function"==typeof t?t:gm(+t),f):e},f.padRadius=function(t){return arguments.length?(r=null==t?null:"function"==typeof t?t:gm(+t),f):r},f.startAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),f):i},f.endAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),f):o},f.padAngle=function(t){return arguments.length?(a="function"==typeof t?t:gm(+t),f):a},f.context=function(t){return arguments.length?(u=null==t?null:t,f):u},f},t.area=Ym,t.areaRadial=Zm,t.ascending=n,t.autoType=function(t){for(var n in t){var e,r,i=t[n].trim();if(i)if("true"===i)i=!0;else if("false"===i)i=!1;else if("NaN"===i)i=NaN;else if(isNaN(e=+i)){if(!(r=i.match(/^([-+]\d{2})?\d{4}(-\d{2}(-\d{2})?)?(T\d{2}:\d{2}(:\d{2}(\.\d{3})?)?(Z|[-+]\d{2}:\d{2})?)?$/)))continue;yc&&r[4]&&!r[7]&&(i=i.replace(/-/g,"/").replace(/T/," ")),i=new Date(i)}else i=e;else i=null;t[n]=i}return t},t.axisBottom=function(t){return Pt(Mt,t)},t.axisLeft=function(t){return Pt(Tt,t)},t.axisRight=function(t){return Pt(wt,t)},t.axisTop=function(t){return Pt(xt,t)},t.bin=Q,t.bisect=s,t.bisectCenter=f,t.bisectLeft=c,t.bisectRight=u,t.bisector=r,t.blob=function(t,n){return fetch(t,n).then(vc)},t.blur=function(t,n){if(!((n=+n)>=0))throw new RangeError("invalid r");let e=t.length;if(!((e=Math.floor(e))>=0))throw new RangeError("invalid length");if(!e||!n)return t;const r=y(n),i=t.slice();return r(t,i,0,e,1),r(i,t,0,e,1),r(t,i,0,e,1),t},t.blur2=l,t.blurImage=h,t.brush=function(){return wa(la)},t.brushSelection=function(t){var n=t.__brush;return n?n.dim.output(n.selection):null},t.brushX=function(){return wa(fa)},t.brushY=function(){return wa(sa)},t.buffer=function(t,n){return fetch(t,n).then(_c)},t.chord=function(){return za(!1,!1)},t.chordDirected=function(){return za(!0,!1)},t.chordTranspose=function(){return za(!1,!0)},t.cluster=function(){var t=Ld,n=1,e=1,r=!1;function i(i){var o,a=0;i.eachAfter((function(n){var e=n.children;e?(n.x=function(t){return t.reduce(jd,0)/t.length}(e),n.y=function(t){return 1+t.reduce(Hd,0)}(e)):(n.x=o?a+=t(n,o):0,n.y=0,o=n)}));var u=function(t){for(var n;n=t.children;)t=n[0];return t}(i),c=function(t){for(var n;n=t.children;)t=n[n.length-1];return t}(i),f=u.x-t(u,c)/2,s=c.x+t(c,u)/2;return i.eachAfter(r?function(t){t.x=(t.x-i.x)*n,t.y=(i.y-t.y)*e}:function(t){t.x=(t.x-f)/(s-f)*n,t.y=(1-(i.y?t.y/i.y:1))*e})}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.color=ze,t.contourDensity=function(){var t=fu,n=su,e=lu,r=960,i=500,o=20,a=2,u=3*o,c=r+2*u>>a,f=i+2*u>>a,s=Qa(20);function h(r){var i=new Float32Array(c*f),s=Math.pow(2,-a),h=-1;for(const o of r){var d=(t(o,++h,r)+u)*s,p=(n(o,h,r)+u)*s,g=+e(o,h,r);if(g&&d>=0&&d<c&&p>=0&&p<f){var y=Math.floor(d),v=Math.floor(p),_=d-y-.5,b=p-v-.5;i[y+v*c]+=(1-_)*(1-b)*g,i[y+1+v*c]+=_*(1-b)*g,i[y+1+(v+1)*c]+=_*b*g,i[y+(v+1)*c]+=(1-_)*b*g}}return l({data:i,width:c,height:f},o*s),i}function d(t){var n=h(t),e=s(n),r=Math.pow(2,2*a);return Array.isArray(e)||(e=G(Number.MIN_VALUE,J(n)/r,e)),iu().size([c,f]).thresholds(e.map((t=>t*r)))(n).map(((t,n)=>(t.value=+e[n],p(t))))}function p(t){return t.coordinates.forEach(g),t}function g(t){t.forEach(y)}function y(t){t.forEach(v)}function v(t){t[0]=t[0]*Math.pow(2,a)-u,t[1]=t[1]*Math.pow(2,a)-u}function _(){return c=r+2*(u=3*o)>>a,f=i+2*u>>a,d}return d.contours=function(t){var n=h(t),e=iu().size([c,f]),r=Math.pow(2,2*a),i=t=>{t=+t;var i=p(e.contour(n,t*r));return i.value=t,i};return Object.defineProperty(i,"max",{get:()=>J(n)/r}),i},d.x=function(n){return arguments.length?(t="function"==typeof n?n:Qa(+n),d):t},d.y=function(t){return arguments.length?(n="function"==typeof t?t:Qa(+t),d):n},d.weight=function(t){return arguments.length?(e="function"==typeof t?t:Qa(+t),d):e},d.size=function(t){if(!arguments.length)return[r,i];var n=+t[0],e=+t[1];if(!(n>=0&&e>=0))throw new Error("invalid size");return r=n,i=e,_()},d.cellSize=function(t){if(!arguments.length)return 1<<a;if(!((t=+t)>=1))throw new Error("invalid cell size");return a=Math.floor(Math.log(t)/Math.LN2),_()},d.thresholds=function(t){return arguments.length?(s="function"==typeof t?t:Array.isArray(t)?Qa(Za.call(t)):Qa(t),d):s},d.bandwidth=function(t){if(!arguments.length)return Math.sqrt(o*(o+1));if(!((t=+t)>=0))throw new Error("invalid bandwidth");return o=(Math.sqrt(4*t*t+1)-1)/2,_()},d},t.contours=iu,t.count=v,t.create=function(t){return Zn(Yt(t).call(document.documentElement))},t.creator=Yt,t.cross=function(...t){const n="function"==typeof t[t.length-1]&&function(t){return n=>t(...n)}(t.pop()),e=(t=t.map(m)).map(_),r=t.length-1,i=new Array(r+1).fill(0),o=[];if(r<0||e.some(b))return o;for(;;){o.push(i.map(((n,e)=>t[e][n])));let a=r;for(;++i[a]===e[a];){if(0===a)return n?o.map(n):o;i[a--]=0}}},t.csv=wc,t.csvFormat=rc,t.csvFormatBody=ic,t.csvFormatRow=ac,t.csvFormatRows=oc,t.csvFormatValue=uc,t.csvParse=nc,t.csvParseRows=ec,t.cubehelix=Tr,t.cumsum=function(t,n){var e=0,r=0;return Float64Array.from(t,void 0===n?t=>e+=+t||0:i=>e+=+n(i,r++,t)||0)},t.curveBasis=function(t){return new Rx(t)},t.curveBasisClosed=function(t){return new Fx(t)},t.curveBasisOpen=function(t){return new qx(t)},t.curveBumpX=tx,t.curveBumpY=nx,t.curveBundle=Ix,t.curveCardinal=Yx,t.curveCardinalClosed=jx,t.curveCardinalOpen=Xx,t.curveCatmullRom=Wx,t.curveCatmullRomClosed=Kx,t.curveCatmullRomOpen=Jx,t.curveLinear=Um,t.curveLinearClosed=function(t){return new tw(t)},t.curveMonotoneX=function(t){return new ow(t)},t.curveMonotoneY=function(t){return new aw(t)},t.curveNatural=function(t){return new cw(t)},t.curveStep=function(t){return new sw(t,.5)},t.curveStepAfter=function(t){return new sw(t,1)},t.curveStepBefore=function(t){return new sw(t,0)},t.descending=e,t.deviation=w,t.difference=function(t,...n){t=new InternSet(t);for(const e of n)for(const n of e)t.delete(n);return t},t.disjoint=function(t,n){const e=n[Symbol.iterator](),r=new InternSet;for(const n of t){if(r.has(n))return!1;let t,i;for(;({value:t,done:i}=e.next())&&!i;){if(Object.is(n,t))return!1;r.add(t)}}return!0},t.dispatch=$t,t.drag=function(){var t,n,e,r,i=se,o=le,a=he,u=de,c={},f=$t("start","drag","end"),s=0,l=0;function h(t){t.on("mousedown.drag",d).filter(u).on("touchstart.drag",y).on("touchmove.drag",v,ee).on("touchend.drag touchcancel.drag",_).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(a,u){if(!r&&i.call(this,a,u)){var c=b(this,o.call(this,a,u),a,u,"mouse");c&&(Zn(a.view).on("mousemove.drag",p,re).on("mouseup.drag",g,re),ae(a.view),ie(a),e=!1,t=a.clientX,n=a.clientY,c("start",a))}}function p(r){if(oe(r),!e){var i=r.clientX-t,o=r.clientY-n;e=i*i+o*o>l}c.mouse("drag",r)}function g(t){Zn(t.view).on("mousemove.drag mouseup.drag",null),ue(t.view,e),oe(t),c.mouse("end",t)}function y(t,n){if(i.call(this,t,n)){var e,r,a=t.changedTouches,u=o.call(this,t,n),c=a.length;for(e=0;e<c;++e)(r=b(this,u,t,n,a[e].identifier,a[e]))&&(ie(t),r("start",t,a[e]))}}function v(t){var n,e,r=t.changedTouches,i=r.length;for(n=0;n<i;++n)(e=c[r[n].identifier])&&(oe(t),e("drag",t,r[n]))}function _(t){var n,e,i=t.changedTouches,o=i.length;for(r&&clearTimeout(r),r=setTimeout((function(){r=null}),500),n=0;n<o;++n)(e=c[i[n].identifier])&&(ie(t),e("end",t,i[n]))}function b(t,n,e,r,i,o){var u,l,d,p=f.copy(),g=ne(o||e,n);if(null!=(d=a.call(t,new fe("beforestart",{sourceEvent:e,target:h,identifier:i,active:s,x:g[0],y:g[1],dx:0,dy:0,dispatch:p}),r)))return u=d.x-g[0]||0,l=d.y-g[1]||0,function e(o,a,f){var y,v=g;switch(o){case"start":c[i]=e,y=s++;break;case"end":delete c[i],--s;case"drag":g=ne(f||a,n),y=s}p.call(o,t,new fe(o,{sourceEvent:a,subject:d,target:h,identifier:i,active:y,x:g[0]+u,y:g[1]+l,dx:g[0]-v[0],dy:g[1]-v[1],dispatch:p}),r)}}return h.filter=function(t){return arguments.length?(i="function"==typeof t?t:ce(!!t),h):i},h.container=function(t){return arguments.length?(o="function"==typeof t?t:ce(t),h):o},h.subject=function(t){return arguments.length?(a="function"==typeof t?t:ce(t),h):a},h.touchable=function(t){return arguments.length?(u="function"==typeof t?t:ce(!!t),h):u},h.on=function(){var t=f.on.apply(f,arguments);return t===f?h:t},h.clickDistance=function(t){return arguments.length?(l=(t=+t)*t,h):Math.sqrt(l)},h},t.dragDisable=ae,t.dragEnable=ue,t.dsv=function(t,n,e,r){3===arguments.length&&"function"==typeof e&&(r=e,e=void 0);var i=Ju(t);return mc(n,e).then((function(t){return i.parse(t,r)}))},t.dsvFormat=Ju,t.easeBack=Lo,t.easeBackIn=Bo,t.easeBackInOut=Lo,t.easeBackOut=Yo,t.easeBounce=Io,t.easeBounceIn=function(t){return 1-Io(1-t)},t.easeBounceInOut=function(t){return((t*=2)<=1?1-Io(1-t):Io(t-1)+1)/2},t.easeBounceOut=Io,t.easeCircle=No,t.easeCircleIn=function(t){return 1-Math.sqrt(1-t*t)},t.easeCircleInOut=No,t.easeCircleOut=function(t){return Math.sqrt(1- --t*t)},t.easeCubic=bo,t.easeCubicIn=function(t){return t*t*t},t.easeCubicInOut=bo,t.easeCubicOut=function(t){return--t*t*t+1},t.easeElastic=Xo,t.easeElasticIn=Ho,t.easeElasticInOut=Go,t.easeElasticOut=Xo,t.easeExp=Eo,t.easeExpIn=function(t){return So(1-+t)},t.easeExpInOut=Eo,t.easeExpOut=function(t){return 1-So(t)},t.easeLinear=t=>+t,t.easePoly=wo,t.easePolyIn=mo,t.easePolyInOut=wo,t.easePolyOut=xo,t.easeQuad=_o,t.easeQuadIn=function(t){return t*t},t.easeQuadInOut=_o,t.easeQuadOut=function(t){return t*(2-t)},t.easeSin=Ao,t.easeSinIn=function(t){return 1==+t?1:1-Math.cos(t*To)},t.easeSinInOut=Ao,t.easeSinOut=function(t){return Math.sin(t*To)},t.every=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(!n(r,++e,t))return!1;return!0},t.extent=M,t.fcumsum=function(t,n){const e=new T;let r=-1;return Float64Array.from(t,void 0===n?t=>e.add(+t||0):i=>e.add(+n(i,++r,t)||0))},t.filter=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");const e=[];let r=-1;for(const i of t)n(i,++r,t)&&e.push(i);return e},t.flatGroup=function(t,...n){return z(P(t,...n),n)},t.flatRollup=function(t,n,...e){return z(D(t,n,...e),e)},t.forceCenter=function(t,n){var e,r=1;function i(){var i,o,a=e.length,u=0,c=0;for(i=0;i<a;++i)u+=(o=e[i]).x,c+=o.y;for(u=(u/a-t)*r,c=(c/a-n)*r,i=0;i<a;++i)(o=e[i]).x-=u,o.y-=c}return null==t&&(t=0),null==n&&(n=0),i.initialize=function(t){e=t},i.x=function(n){return arguments.length?(t=+n,i):t},i.y=function(t){return arguments.length?(n=+t,i):n},i.strength=function(t){return arguments.length?(r=+t,i):r},i},t.forceCollide=function(t){var n,e,r,i=1,o=1;function a(){for(var t,a,c,f,s,l,h,d=n.length,p=0;p<o;++p)for(a=$c(n,Ic,Oc).visitAfter(u),t=0;t<d;++t)c=n[t],l=e[c.index],h=l*l,f=c.x+c.vx,s=c.y+c.vy,a.visit(g);function g(t,n,e,o,a){var u=t.data,d=t.r,p=l+d;if(!u)return n>f+p||o<f-p||e>s+p||a<s-p;if(u.index>c.index){var g=f-u.x-u.vx,y=s-u.y-u.vy,v=g*g+y*y;v<p*p&&(0===g&&(v+=(g=Uc(r))*g),0===y&&(v+=(y=Uc(r))*y),v=(p-(v=Math.sqrt(v)))/v*i,c.vx+=(g*=v)*(p=(d*=d)/(h+d)),c.vy+=(y*=v)*p,u.vx-=g*(p=1-p),u.vy-=y*p)}}}function u(t){if(t.data)return t.r=e[t.data.index];for(var n=t.r=0;n<4;++n)t[n]&&t[n].r>t.r&&(t.r=t[n].r)}function c(){if(n){var r,i,o=n.length;for(e=new Array(o),r=0;r<o;++r)i=n[r],e[i.index]=+t(i,r,n)}}return"function"!=typeof t&&(t=qc(null==t?1:+t)),a.initialize=function(t,e){n=t,r=e,c()},a.iterations=function(t){return arguments.length?(o=+t,a):o},a.strength=function(t){return arguments.length?(i=+t,a):i},a.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),a):t},a},t.forceLink=function(t){var n,e,r,i,o,a,u=Bc,c=function(t){return 1/Math.min(i[t.source.index],i[t.target.index])},f=qc(30),s=1;function l(r){for(var i=0,u=t.length;i<s;++i)for(var c,f,l,h,d,p,g,y=0;y<u;++y)f=(c=t[y]).source,h=(l=c.target).x+l.vx-f.x-f.vx||Uc(a),d=l.y+l.vy-f.y-f.vy||Uc(a),h*=p=((p=Math.sqrt(h*h+d*d))-e[y])/p*r*n[y],d*=p,l.vx-=h*(g=o[y]),l.vy-=d*g,f.vx+=h*(g=1-g),f.vy+=d*g}function h(){if(r){var a,c,f=r.length,s=t.length,l=new Map(r.map(((t,n)=>[u(t,n,r),t])));for(a=0,i=new Array(f);a<s;++a)(c=t[a]).index=a,"object"!=typeof c.source&&(c.source=Yc(l,c.source)),"object"!=typeof c.target&&(c.target=Yc(l,c.target)),i[c.source.index]=(i[c.source.index]||0)+1,i[c.target.index]=(i[c.target.index]||0)+1;for(a=0,o=new Array(s);a<s;++a)c=t[a],o[a]=i[c.source.index]/(i[c.source.index]+i[c.target.index]);n=new Array(s),d(),e=new Array(s),p()}}function d(){if(r)for(var e=0,i=t.length;e<i;++e)n[e]=+c(t[e],e,t)}function p(){if(r)for(var n=0,i=t.length;n<i;++n)e[n]=+f(t[n],n,t)}return null==t&&(t=[]),l.initialize=function(t,n){r=t,a=n,h()},l.links=function(n){return arguments.length?(t=n,h(),l):t},l.id=function(t){return arguments.length?(u=t,l):u},l.iterations=function(t){return arguments.length?(s=+t,l):s},l.strength=function(t){return arguments.length?(c="function"==typeof t?t:qc(+t),d(),l):c},l.distance=function(t){return arguments.length?(f="function"==typeof t?t:qc(+t),p(),l):f},l},t.forceManyBody=function(){var t,n,e,r,i,o=qc(-30),a=1,u=1/0,c=.81;function f(e){var i,o=t.length,a=$c(t,Xc,Gc).visitAfter(l);for(r=e,i=0;i<o;++i)n=t[i],a.visit(h)}function s(){if(t){var n,e,r=t.length;for(i=new Array(r),n=0;n<r;++n)e=t[n],i[e.index]=+o(e,n,t)}}function l(t){var n,e,r,o,a,u=0,c=0;if(t.length){for(r=o=a=0;a<4;++a)(n=t[a])&&(e=Math.abs(n.value))&&(u+=n.value,c+=e,r+=e*n.x,o+=e*n.y);t.x=r/c,t.y=o/c}else{(n=t).x=n.data.x,n.y=n.data.y;do{u+=i[n.data.index]}while(n=n.next)}t.value=u}function h(t,o,f,s){if(!t.value)return!0;var l=t.x-n.x,h=t.y-n.y,d=s-o,p=l*l+h*h;if(d*d/c<p)return p<u&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)),n.vx+=l*t.value*r/p,n.vy+=h*t.value*r/p),!0;if(!(t.length||p>=u)){(t.data!==n||t.next)&&(0===l&&(p+=(l=Uc(e))*l),0===h&&(p+=(h=Uc(e))*h),p<a&&(p=Math.sqrt(a*p)));do{t.data!==n&&(d=i[t.data.index]*r/p,n.vx+=l*d,n.vy+=h*d)}while(t=t.next)}}return f.initialize=function(n,r){t=n,e=r,s()},f.strength=function(t){return arguments.length?(o="function"==typeof t?t:qc(+t),s(),f):o},f.distanceMin=function(t){return arguments.length?(a=t*t,f):Math.sqrt(a)},f.distanceMax=function(t){return arguments.length?(u=t*t,f):Math.sqrt(u)},f.theta=function(t){return arguments.length?(c=t*t,f):Math.sqrt(c)},f},t.forceRadial=function(t,n,e){var r,i,o,a=qc(.1);function u(t){for(var a=0,u=r.length;a<u;++a){var c=r[a],f=c.x-n||1e-6,s=c.y-e||1e-6,l=Math.sqrt(f*f+s*s),h=(o[a]-l)*i[a]*t/l;c.vx+=f*h,c.vy+=s*h}}function c(){if(r){var n,e=r.length;for(i=new Array(e),o=new Array(e),n=0;n<e;++n)o[n]=+t(r[n],n,r),i[n]=isNaN(o[n])?0:+a(r[n],n,r)}}return"function"!=typeof t&&(t=qc(+t)),null==n&&(n=0),null==e&&(e=0),u.initialize=function(t){r=t,c()},u.strength=function(t){return arguments.length?(a="function"==typeof t?t:qc(+t),c(),u):a},u.radius=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),c(),u):t},u.x=function(t){return arguments.length?(n=+t,u):n},u.y=function(t){return arguments.length?(e=+t,u):e},u},t.forceSimulation=function(t){var n,e=1,r=.001,i=1-Math.pow(r,1/300),o=0,a=.6,u=new Map,c=Ni(l),f=$t("tick","end"),s=function(){let t=1;return()=>(t=(Lc*t+jc)%Hc)/Hc}();function l(){h(),f.call("tick",n),e<r&&(c.stop(),f.call("end",n))}function h(r){var c,f,s=t.length;void 0===r&&(r=1);for(var l=0;l<r;++l)for(e+=(o-e)*i,u.forEach((function(t){t(e)})),c=0;c<s;++c)null==(f=t[c]).fx?f.x+=f.vx*=a:(f.x=f.fx,f.vx=0),null==f.fy?f.y+=f.vy*=a:(f.y=f.fy,f.vy=0);return n}function d(){for(var n,e=0,r=t.length;e<r;++e){if((n=t[e]).index=e,null!=n.fx&&(n.x=n.fx),null!=n.fy&&(n.y=n.fy),isNaN(n.x)||isNaN(n.y)){var i=10*Math.sqrt(.5+e),o=e*Vc;n.x=i*Math.cos(o),n.y=i*Math.sin(o)}(isNaN(n.vx)||isNaN(n.vy))&&(n.vx=n.vy=0)}}function p(n){return n.initialize&&n.initialize(t,s),n}return null==t&&(t=[]),d(),n={tick:h,restart:function(){return c.restart(l),n},stop:function(){return c.stop(),n},nodes:function(e){return arguments.length?(t=e,d(),u.forEach(p),n):t},alpha:function(t){return arguments.length?(e=+t,n):e},alphaMin:function(t){return arguments.length?(r=+t,n):r},alphaDecay:function(t){return arguments.length?(i=+t,n):+i},alphaTarget:function(t){return arguments.length?(o=+t,n):o},velocityDecay:function(t){return arguments.length?(a=1-t,n):1-a},randomSource:function(t){return arguments.length?(s=t,u.forEach(p),n):s},force:function(t,e){return arguments.length>1?(null==e?u.delete(t):u.set(t,p(e)),n):u.get(t)},find:function(n,e,r){var i,o,a,u,c,f=0,s=t.length;for(null==r?r=1/0:r*=r,f=0;f<s;++f)(a=(i=n-(u=t[f]).x)*i+(o=e-u.y)*o)<r&&(c=u,r=a);return c},on:function(t,e){return arguments.length>1?(f.on(t,e),n):f.on(t)}}},t.forceX=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vx+=(r[o]-i.x)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.x=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.forceY=function(t){var n,e,r,i=qc(.1);function o(t){for(var i,o=0,a=n.length;o<a;++o)(i=n[o]).vy+=(r[o]-i.y)*e[o]*t}function a(){if(n){var o,a=n.length;for(e=new Array(a),r=new Array(a),o=0;o<a;++o)e[o]=isNaN(r[o]=+t(n[o],o,n))?0:+i(n[o],o,n)}}return"function"!=typeof t&&(t=qc(null==t?0:+t)),o.initialize=function(t){n=t,a()},o.strength=function(t){return arguments.length?(i="function"==typeof t?t:qc(+t),a(),o):i},o.y=function(n){return arguments.length?(t="function"==typeof n?n:qc(+n),a(),o):t},o},t.formatDefaultLocale=ff,t.formatLocale=cf,t.formatSpecifier=Jc,t.fsum=function(t,n){const e=new T;if(void 0===n)for(let n of t)(n=+n)&&e.add(n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&e.add(i)}return+e},t.geoAlbers=xd,t.geoAlbersUsa=function(){var t,n,e,r,i,o,a=xd(),u=md().rotate([154,0]).center([-2,58.5]).parallels([55,65]),c=md().rotate([157,0]).center([-3,19.9]).parallels([8,18]),f={point:function(t,n){o=[t,n]}};function s(t){var n=t[0],a=t[1];return o=null,e.point(n,a),o||(r.point(n,a),o)||(i.point(n,a),o)}function l(){return t=n=null,s}return s.invert=function(t){var n=a.scale(),e=a.translate(),r=(t[0]-e[0])/n,i=(t[1]-e[1])/n;return(i>=.12&&i<.234&&r>=-.425&&r<-.214?u:i>=.166&&i<.234&&r>=-.214&&r<-.115?c:a).invert(t)},s.stream=function(e){return t&&n===e?t:(r=[a.stream(n=e),u.stream(e),c.stream(e)],i=r.length,t={point:function(t,n){for(var e=-1;++e<i;)r[e].point(t,n)},sphere:function(){for(var t=-1;++t<i;)r[t].sphere()},lineStart:function(){for(var t=-1;++t<i;)r[t].lineStart()},lineEnd:function(){for(var t=-1;++t<i;)r[t].lineEnd()},polygonStart:function(){for(var t=-1;++t<i;)r[t].polygonStart()},polygonEnd:function(){for(var t=-1;++t<i;)r[t].polygonEnd()}});var r,i},s.precision=function(t){return arguments.length?(a.precision(t),u.precision(t),c.precision(t),l()):a.precision()},s.scale=function(t){return arguments.length?(a.scale(t),u.scale(.35*t),c.scale(t),s.translate(a.translate())):a.scale()},s.translate=function(t){if(!arguments.length)return a.translate();var n=a.scale(),o=+t[0],s=+t[1];return e=a.translate(t).clipExtent([[o-.455*n,s-.238*n],[o+.455*n,s+.238*n]]).stream(f),r=u.translate([o-.307*n,s+.201*n]).clipExtent([[o-.425*n+df,s+.12*n+df],[o-.214*n-df,s+.234*n-df]]).stream(f),i=c.translate([o-.205*n,s+.212*n]).clipExtent([[o-.214*n+df,s+.166*n+df],[o-.115*n-df,s+.234*n-df]]).stream(f),l()},s.fitExtent=function(t,n){return ud(s,t,n)},s.fitSize=function(t,n){return cd(s,t,n)},s.fitWidth=function(t,n){return fd(s,t,n)},s.fitHeight=function(t,n){return sd(s,t,n)},s.scale(1070)},t.geoArea=function(t){return us=new T,Lf(t,cs),2*us},t.geoAzimuthalEqualArea=function(){return yd(Td).scale(124.75).clipAngle(179.999)},t.geoAzimuthalEqualAreaRaw=Td,t.geoAzimuthalEquidistant=function(){return yd(Ad).scale(79.4188).clipAngle(179.999)},t.geoAzimuthalEquidistantRaw=Ad,t.geoBounds=function(t){var n,e,r,i,o,a,u;if(Qf=Kf=-(Wf=Zf=1/0),is=[],Lf(t,Fs),e=is.length){for(is.sort(Hs),n=1,o=[r=is[0]];n<e;++n)Xs(r,(i=is[n])[0])||Xs(r,i[1])?(js(r[0],i[1])>js(r[0],r[1])&&(r[1]=i[1]),js(i[0],r[1])>js(r[0],r[1])&&(r[0]=i[0])):o.push(r=i);for(a=-1/0,n=0,r=o[e=o.length-1];n<=e;r=i,++n)i=o[n],(u=js(r[1],i[0]))>a&&(a=u,Wf=i[0],Kf=r[1])}return is=os=null,Wf===1/0||Zf===1/0?[[NaN,NaN],[NaN,NaN]]:[[Wf,Zf],[Kf,Qf]]},t.geoCentroid=function(t){ms=xs=ws=Ms=Ts=As=Ss=Es=0,Ns=new T,ks=new T,Cs=new T,Lf(t,Gs);var n=+Ns,e=+ks,r=+Cs,i=Ef(n,e,r);return i<pf&&(n=As,e=Ss,r=Es,xs<df&&(n=ws,e=Ms,r=Ts),(i=Ef(n,e,r))<pf)?[NaN,NaN]:[Mf(e,n)*bf,Rf(r/i)*bf]},t.geoCircle=function(){var t,n,e=il([0,0]),r=il(90),i=il(6),o={point:function(e,r){t.push(e=n(e,r)),e[0]*=bf,e[1]*=bf}};function a(){var a=e.apply(this,arguments),u=r.apply(this,arguments)*mf,c=i.apply(this,arguments)*mf;return t=[],n=ul(-a[0]*mf,-a[1]*mf,0).invert,hl(o,u,c,1),a={type:"Polygon",coordinates:[t]},t=n=null,a}return a.center=function(t){return arguments.length?(e="function"==typeof t?t:il([+t[0],+t[1]]),a):e},a.radius=function(t){return arguments.length?(r="function"==typeof t?t:il(+t),a):r},a.precision=function(t){return arguments.length?(i="function"==typeof t?t:il(+t),a):i},a},t.geoClipAntimeridian=Tl,t.geoClipCircle=Al,t.geoClipExtent=function(){var t,n,e,r=0,i=0,o=960,a=500;return e={stream:function(e){return t&&n===e?t:t=zl(r,i,o,a)(n=e)},extent:function(u){return arguments.length?(r=+u[0][0],i=+u[0][1],o=+u[1][0],a=+u[1][1],t=n=null,e):[[r,i],[o,a]]}}},t.geoClipRectangle=zl,t.geoConicConformal=function(){return _d(kd).scale(109.5).parallels([30,30])},t.geoConicConformalRaw=kd,t.geoConicEqualArea=md,t.geoConicEqualAreaRaw=bd,t.geoConicEquidistant=function(){return _d(Pd).scale(131.154).center([0,13.9389])},t.geoConicEquidistantRaw=Pd,t.geoContains=function(t,n){return(t&&Bl.hasOwnProperty(t.type)?Bl[t.type]:Ll)(t,n)},t.geoDistance=Ol,t.geoEqualEarth=function(){return yd(qd).scale(177.158)},t.geoEqualEarthRaw=qd,t.geoEquirectangular=function(){return yd(Cd).scale(152.63)},t.geoEquirectangularRaw=Cd,t.geoGnomonic=function(){return yd(Ud).scale(144.049).clipAngle(60)},t.geoGnomonicRaw=Ud,t.geoGraticule=Kl,t.geoGraticule10=function(){return Kl()()},t.geoIdentity=function(){var t,n,e,r,i,o,a,u=1,c=0,f=0,s=1,l=1,h=0,d=null,p=1,g=1,y=id({point:function(t,n){var e=b([t,n]);this.stream.point(e[0],e[1])}}),v=eh;function _(){return p=u*s,g=u*l,o=a=null,b}function b(e){var r=e[0]*p,i=e[1]*g;if(h){var o=i*t-r*n;r=r*t+i*n,i=o}return[r+c,i+f]}return b.invert=function(e){var r=e[0]-c,i=e[1]-f;if(h){var o=i*t+r*n;r=r*t-i*n,i=o}return[r/p,i/g]},b.stream=function(t){return o&&a===t?o:o=y(v(a=t))},b.postclip=function(t){return arguments.length?(v=t,d=e=r=i=null,_()):v},b.clipExtent=function(t){return arguments.length?(v=null==t?(d=e=r=i=null,eh):zl(d=+t[0][0],e=+t[0][1],r=+t[1][0],i=+t[1][1]),_()):null==d?null:[[d,e],[r,i]]},b.scale=function(t){return arguments.length?(u=+t,_()):u},b.translate=function(t){return arguments.length?(c=+t[0],f=+t[1],_()):[c,f]},b.angle=function(e){return arguments.length?(n=Cf(h=e%360*mf),t=Tf(h),_()):h*bf},b.reflectX=function(t){return arguments.length?(s=t?-1:1,_()):s<0},b.reflectY=function(t){return arguments.length?(l=t?-1:1,_()):l<0},b.fitExtent=function(t,n){return ud(b,t,n)},b.fitSize=function(t,n){return cd(b,t,n)},b.fitWidth=function(t,n){return fd(b,t,n)},b.fitHeight=function(t,n){return sd(b,t,n)},b},t.geoInterpolate=function(t,n){var e=t[0]*mf,r=t[1]*mf,i=n[0]*mf,o=n[1]*mf,a=Tf(r),u=Cf(r),c=Tf(o),f=Cf(o),s=a*Tf(e),l=a*Cf(e),h=c*Tf(i),d=c*Cf(i),p=2*Rf(zf(Ff(o-r)+a*c*Ff(i-e))),g=Cf(p),y=p?function(t){var n=Cf(t*=p)/g,e=Cf(p-t)/g,r=e*s+n*h,i=e*l+n*d,o=e*u+n*f;return[Mf(i,r)*bf,Mf(o,zf(r*r+i*i))*bf]}:function(){return[e*bf,r*bf]};return y.distance=p,y},t.geoLength=ql,t.geoMercator=function(){return Ed(Sd).scale(961/_f)},t.geoMercatorRaw=Sd,t.geoNaturalEarth1=function(){return yd(Id).scale(175.295)},t.geoNaturalEarth1Raw=Id,t.geoOrthographic=function(){return yd(Od).scale(249.5).clipAngle(90+df)},t.geoOrthographicRaw=Od,t.geoPath=function(t,n){let e,r,i=3,o=4.5;function a(t){return t&&("function"==typeof o&&r.pointRadius(+o.apply(this,arguments)),Lf(t,e(r))),r.result()}return a.area=function(t){return Lf(t,e(sh)),sh.result()},a.measure=function(t){return Lf(t,e(Kh)),Kh.result()},a.bounds=function(t){return Lf(t,e(mh)),mh.result()},a.centroid=function(t){return Lf(t,e(Oh)),Oh.result()},a.projection=function(n){return arguments.length?(e=null==n?(t=null,eh):(t=n).stream,a):t},a.context=function(t){return arguments.length?(r=null==t?(n=null,new ed(i)):new Bh(n=t),"function"!=typeof o&&r.pointRadius(o),a):n},a.pointRadius=function(t){return arguments.length?(o="function"==typeof t?t:(r.pointRadius(+t),+t),a):o},a.digits=function(t){if(!arguments.length)return i;if(null==t)i=null;else{const n=Math.floor(t);if(!(n>=0))throw new RangeError(`invalid digits: ${t}`);i=n}return null===n&&(r=new ed(i)),a},a.projection(t).digits(i).context(n)},t.geoProjection=yd,t.geoProjectionMutator=vd,t.geoRotation=ll,t.geoStereographic=function(){return yd(Bd).scale(250).clipAngle(142)},t.geoStereographicRaw=Bd,t.geoStream=Lf,t.geoTransform=function(t){return{stream:id(t)}},t.geoTransverseMercator=function(){var t=Ed(Yd),n=t.center,e=t.rotate;return t.center=function(t){return arguments.length?n([-t[1],t[0]]):[(t=n())[1],-t[0]]},t.rotate=function(t){return arguments.length?e([t[0],t[1],t.length>2?t[2]+90:90]):[(t=e())[0],t[1],t[2]-90]},e([0,0,90]).scale(159.155)},t.geoTransverseMercatorRaw=Yd,t.gray=function(t,n){return new ur(t,0,0,null==n?1:n)},t.greatest=ot,t.greatestIndex=function(t,e=n){if(1===e.length)return tt(t,e);let r,i=-1,o=-1;for(const n of t)++o,(i<0?0===e(n,n):e(n,r)>0)&&(r=n,i=o);return i},t.group=C,t.groupSort=function(t,e,r){return(2!==e.length?U($(t,e,r),(([t,e],[r,i])=>n(e,i)||n(t,r))):U(C(t,r),(([t,r],[i,o])=>e(r,o)||n(t,i)))).map((([t])=>t))},t.groups=P,t.hcl=dr,t.hierarchy=Gd,t.histogram=Q,t.hsl=He,t.html=Ec,t.image=function(t,n){return new Promise((function(e,r){var i=new Image;for(var o in n)i[o]=n[o];i.onerror=r,i.onload=function(){e(i)},i.src=t}))},t.index=function(t,...n){return F(t,k,R,n)},t.indexes=function(t,...n){return F(t,Array.from,R,n)},t.interpolate=Gr,t.interpolateArray=function(t,n){return(Ir(n)?Ur:Or)(t,n)},t.interpolateBasis=Er,t.interpolateBasisClosed=Nr,t.interpolateBlues=Xb,t.interpolateBrBG=ib,t.interpolateBuGn=wb,t.interpolateBuPu=Tb,t.interpolateCividis=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(-4.54-t*(35.34-t*(2381.73-t*(6402.7-t*(7024.72-2710.57*t)))))))+", "+Math.max(0,Math.min(255,Math.round(32.49+t*(170.73+t*(52.82-t*(131.46-t*(176.58-67.37*t)))))))+", "+Math.max(0,Math.min(255,Math.round(81.24+t*(442.36-t*(2482.43-t*(6167.24-t*(6614.94-2475.67*t)))))))+")"},t.interpolateCool=om,t.interpolateCubehelix=li,t.interpolateCubehelixDefault=rm,t.interpolateCubehelixLong=hi,t.interpolateDate=Br,t.interpolateDiscrete=function(t){var n=t.length;return function(e){return t[Math.max(0,Math.min(n-1,Math.floor(e*n)))]}},t.interpolateGnBu=Sb,t.interpolateGreens=Vb,t.interpolateGreys=Zb,t.interpolateHcl=ci,t.interpolateHclLong=fi,t.interpolateHsl=oi,t.interpolateHslLong=ai,t.interpolateHue=function(t,n){var e=Pr(+t,+n);return function(t){var n=e(t);return n-360*Math.floor(n/360)}},t.interpolateInferno=dm,t.interpolateLab=function(t,n){var e=$r((t=ar(t)).l,(n=ar(n)).l),r=$r(t.a,n.a),i=$r(t.b,n.b),o=$r(t.opacity,n.opacity);return function(n){return t.l=e(n),t.a=r(n),t.b=i(n),t.opacity=o(n),t+""}},t.interpolateMagma=hm,t.interpolateNumber=Yr,t.interpolateNumberArray=Ur,t.interpolateObject=Lr,t.interpolateOrRd=Nb,t.interpolateOranges=em,t.interpolatePRGn=ab,t.interpolatePiYG=cb,t.interpolatePlasma=pm,t.interpolatePuBu=zb,t.interpolatePuBuGn=Cb,t.interpolatePuOr=sb,t.interpolatePuRd=Db,t.interpolatePurples=Qb,t.interpolateRainbow=function(t){(t<0||t>1)&&(t-=Math.floor(t));var n=Math.abs(t-.5);return am.h=360*t-100,am.s=1.5-1.5*n,am.l=.8-.9*n,am+""},t.interpolateRdBu=hb,t.interpolateRdGy=pb,t.interpolateRdPu=Fb,t.interpolateRdYlBu=yb,t.interpolateRdYlGn=_b,t.interpolateReds=tm,t.interpolateRgb=Dr,t.interpolateRgbBasis=Fr,t.interpolateRgbBasisClosed=qr,t.interpolateRound=Vr,t.interpolateSinebow=function(t){var n;return t=(.5-t)*Math.PI,um.r=255*(n=Math.sin(t))*n,um.g=255*(n=Math.sin(t+cm))*n,um.b=255*(n=Math.sin(t+fm))*n,um+""},t.interpolateSpectral=mb,t.interpolateString=Xr,t.interpolateTransformCss=ti,t.interpolateTransformSvg=ni,t.interpolateTurbo=function(t){return t=Math.max(0,Math.min(1,t)),"rgb("+Math.max(0,Math.min(255,Math.round(34.61+t*(1172.33-t*(10793.56-t*(33300.12-t*(38394.49-14825.05*t)))))))+", "+Math.max(0,Math.min(255,Math.round(23.31+t*(557.33+t*(1225.33-t*(3574.96-t*(1073.77+707.56*t)))))))+", "+Math.max(0,Math.min(255,Math.round(27.2+t*(3211.1-t*(15327.97-t*(27814-t*(22569.18-6838.66*t)))))))+")"},t.interpolateViridis=lm,t.interpolateWarm=im,t.interpolateYlGn=Ob,t.interpolateYlGnBu=Ub,t.interpolateYlOrBr=Yb,t.interpolateYlOrRd=jb,t.interpolateZoom=ri,t.interrupt=Gi,t.intersection=function(t,...n){t=new InternSet(t),n=n.map(vt);t:for(const e of t)for(const r of n)if(!r.has(e)){t.delete(e);continue t}return t},t.interval=function(t,n,e){var r=new Ei,i=n;return null==n?(r.restart(t,n,e),r):(r._restart=r.restart,r.restart=function(t,n,e){n=+n,e=null==e?Ai():+e,r._restart((function o(a){a+=i,r._restart(o,i+=n,e),t(a)}),n,e)},r.restart(t,n,e),r)},t.isoFormat=D_,t.isoParse=F_,t.json=function(t,n){return fetch(t,n).then(Tc)},t.lab=ar,t.lch=function(t,n,e,r){return 1===arguments.length?hr(t):new pr(e,n,t,null==r?1:r)},t.least=function(t,e=n){let r,i=!1;if(1===e.length){let o;for(const a of t){const t=e(a);(i?n(t,o)<0:0===n(t,t))&&(r=a,o=t,i=!0)}}else for(const n of t)(i?e(n,r)<0:0===e(n,n))&&(r=n,i=!0);return r},t.leastIndex=ht,t.line=Bm,t.lineRadial=Wm,t.link=ox,t.linkHorizontal=function(){return ox(tx)},t.linkRadial=function(){const t=ox(ex);return t.angle=t.x,delete t.x,t.radius=t.y,delete t.y,t},t.linkVertical=function(){return ox(nx)},t.local=Qn,t.map=function(t,n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");if("function"!=typeof n)throw new TypeError("mapper is not a function");return Array.from(t,((e,r)=>n(e,r,t)))},t.matcher=Vt,t.max=J,t.maxIndex=tt,t.mean=function(t,n){let e=0,r=0;if(void 0===n)for(let n of t)null!=n&&(n=+n)>=n&&(++e,r+=n);else{let i=-1;for(let o of t)null!=(o=n(o,++i,t))&&(o=+o)>=o&&(++e,r+=o)}if(e)return r/e},t.median=function(t,n){return at(t,.5,n)},t.medianIndex=function(t,n){return ct(t,.5,n)},t.merge=ft,t.min=nt,t.minIndex=et,t.mode=function(t,n){const e=new InternMap;if(void 0===n)for(let n of t)null!=n&&n>=n&&e.set(n,(e.get(n)||0)+1);else{let r=-1;for(let i of t)null!=(i=n(i,++r,t))&&i>=i&&e.set(i,(e.get(i)||0)+1)}let r,i=0;for(const[t,n]of e)n>i&&(i=n,r=t);return r},t.namespace=It,t.namespaces=Ut,t.nice=Z,t.now=Ai,t.pack=function(){var t=null,n=1,e=1,r=np;function i(i){const o=ap();return i.x=n/2,i.y=e/2,t?i.eachBefore(xp(t)).eachAfter(wp(r,.5,o)).eachBefore(Mp(1)):i.eachBefore(xp(mp)).eachAfter(wp(np,1,o)).eachAfter(wp(r,i.r/Math.min(n,e),o)).eachBefore(Mp(Math.min(n,e)/(2*i.r))),i}return i.radius=function(n){return arguments.length?(t=Jd(n),i):t},i.size=function(t){return arguments.length?(n=+t[0],e=+t[1],i):[n,e]},i.padding=function(t){return arguments.length?(r="function"==typeof t?t:ep(+t),i):r},i},t.packEnclose=function(t){return up(t,ap())},t.packSiblings=function(t){return bp(t,ap()),t},t.pairs=function(t,n=st){const e=[];let r,i=!1;for(const o of t)i&&e.push(n(r,o)),r=o,i=!0;return e},t.partition=function(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&Ap(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,a=r.x1-e,u=r.y1-e;a<i&&(i=a=(i+a)/2),u<o&&(o=u=(o+u)/2),r.x0=i,r.y0=o,r.x1=a,r.y1=u}}(n,o)),r&&i.eachBefore(Tp),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i},t.path=Ia,t.pathRound=function(t=3){return new Ua(+t)},t.permute=q,t.pie=function(){var t=jm,n=Lm,e=null,r=gm(0),i=gm(Sm),o=gm(0);function a(a){var u,c,f,s,l,h=(a=Fm(a)).length,d=0,p=new Array(h),g=new Array(h),y=+r.apply(this,arguments),v=Math.min(Sm,Math.max(-Sm,i.apply(this,arguments)-y)),_=Math.min(Math.abs(v)/h,o.apply(this,arguments)),b=_*(v<0?-1:1);for(u=0;u<h;++u)(l=g[p[u]=u]=+t(a[u],u,a))>0&&(d+=l);for(null!=n?p.sort((function(t,e){return n(g[t],g[e])})):null!=e&&p.sort((function(t,n){return e(a[t],a[n])})),u=0,f=d?(v-h*b)/d:0;u<h;++u,y=s)c=p[u],s=y+((l=g[c])>0?l*f:0)+b,g[c]={data:a[c],index:u,value:l,startAngle:y,endAngle:s,padAngle:_};return g}return a.value=function(n){return arguments.length?(t="function"==typeof n?n:gm(+n),a):t},a.sortValues=function(t){return arguments.length?(n=t,e=null,a):n},a.sort=function(t){return arguments.length?(e=t,n=null,a):e},a.startAngle=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),a):r},a.endAngle=function(t){return arguments.length?(i="function"==typeof t?t:gm(+t),a):i},a.padAngle=function(t){return arguments.length?(o="function"==typeof t?t:gm(+t),a):o},a},t.piecewise=di,t.pointRadial=Km,t.pointer=ne,t.pointers=function(t,n){return t.target&&(t=te(t),void 0===n&&(n=t.currentTarget),t=t.touches||[t]),Array.from(t,(t=>ne(t,n)))},t.polygonArea=function(t){for(var n,e=-1,r=t.length,i=t[r-1],o=0;++e<r;)n=i,i=t[e],o+=n[1]*i[0]-n[0]*i[1];return o/2},t.polygonCentroid=function(t){for(var n,e,r=-1,i=t.length,o=0,a=0,u=t[i-1],c=0;++r<i;)n=u,u=t[r],c+=e=n[0]*u[1]-u[0]*n[1],o+=(n[0]+u[0])*e,a+=(n[1]+u[1])*e;return[o/(c*=3),a/c]},t.polygonContains=function(t,n){for(var e,r,i=t.length,o=t[i-1],a=n[0],u=n[1],c=o[0],f=o[1],s=!1,l=0;l<i;++l)e=(o=t[l])[0],(r=o[1])>u!=f>u&&a<(c-e)*(u-r)/(f-r)+e&&(s=!s),c=e,f=r;return s},t.polygonHull=function(t){if((e=t.length)<3)return null;var n,e,r=new Array(e),i=new Array(e);for(n=0;n<e;++n)r[n]=[+t[n][0],+t[n][1],n];for(r.sort(Hp),n=0;n<e;++n)i[n]=[r[n][0],-r[n][1]];var o=Xp(r),a=Xp(i),u=a[0]===o[0],c=a[a.length-1]===o[o.length-1],f=[];for(n=o.length-1;n>=0;--n)f.push(t[r[o[n]][2]]);for(n=+u;n<a.length-c;++n)f.push(t[r[a[n]][2]]);return f},t.polygonLength=function(t){for(var n,e,r=-1,i=t.length,o=t[i-1],a=o[0],u=o[1],c=0;++r<i;)n=a,e=u,n-=a=(o=t[r])[0],e-=u=o[1],c+=Math.hypot(n,e);return c},t.precisionFixed=sf,t.precisionPrefix=lf,t.precisionRound=hf,t.quadtree=$c,t.quantile=at,t.quantileIndex=ct,t.quantileSorted=ut,t.quantize=function(t,n){for(var e=new Array(n),r=0;r<n;++r)e[r]=t(r/(n-1));return e},t.quickselect=rt,t.radialArea=Zm,t.radialLine=Wm,t.randomBates=Jp,t.randomBernoulli=eg,t.randomBeta=og,t.randomBinomial=ag,t.randomCauchy=cg,t.randomExponential=tg,t.randomGamma=ig,t.randomGeometric=rg,t.randomInt=Wp,t.randomIrwinHall=Qp,t.randomLcg=function(t=Math.random()){let n=0|(0<=t&&t<1?t/lg:Math.abs(t));return()=>(n=1664525*n+1013904223|0,lg*(n>>>0))},t.randomLogNormal=Kp,t.randomLogistic=fg,t.randomNormal=Zp,t.randomPareto=ng,t.randomPoisson=sg,t.randomUniform=Vp,t.randomWeibull=ug,t.range=lt,t.rank=function(t,e=n){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");let r=Array.from(t);const i=new Float64Array(r.length);2!==e.length&&(r=r.map(e),e=n);const o=(t,n)=>e(r[t],r[n]);let a,u;return(t=Uint32Array.from(r,((t,n)=>n))).sort(e===n?(t,n)=>O(r[t],r[n]):I(o)),t.forEach(((t,n)=>{const e=o(t,void 0===a?t:a);e>=0?((void 0===a||e>0)&&(a=t,u=n),i[t]=u):i[t]=NaN})),i},t.reduce=function(t,n,e){if("function"!=typeof n)throw new TypeError("reducer is not a function");const r=t[Symbol.iterator]();let i,o,a=-1;if(arguments.length<3){if(({done:i,value:e}=r.next()),i)return;++a}for(;({done:i,value:o}=r.next()),!i;)e=n(e,o,++a,t);return e},t.reverse=function(t){if("function"!=typeof t[Symbol.iterator])throw new TypeError("values is not iterable");return Array.from(t).reverse()},t.rgb=Fe,t.ribbon=function(){return Wa()},t.ribbonArrow=function(){return Wa(Va)},t.rollup=$,t.rollups=D,t.scaleBand=yg,t.scaleDiverging=function t(){var n=Ng(L_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleDivergingLog=function t(){var n=Fg(L_()).domain([.1,1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleDivergingPow=j_,t.scaleDivergingSqrt=function(){return j_.apply(null,arguments).exponent(.5)},t.scaleDivergingSymlog=function t(){var n=Ig(L_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleIdentity=function t(n){var e;function r(t){return null==t||isNaN(t=+t)?e:t}return r.invert=r,r.domain=r.range=function(t){return arguments.length?(n=Array.from(t,_g),r):n.slice()},r.unknown=function(t){return arguments.length?(e=t,r):e},r.copy=function(){return t(n).unknown(e)},n=arguments.length?Array.from(n,_g):[0,1],Ng(r)},t.scaleImplicit=pg,t.scaleLinear=function t(){var n=Sg();return n.copy=function(){return Tg(n,t())},hg.apply(n,arguments),Ng(n)},t.scaleLog=function t(){const n=Fg(Ag()).domain([1,10]);return n.copy=()=>Tg(n,t()).base(n.base()),hg.apply(n,arguments),n},t.scaleOrdinal=gg,t.scalePoint=function(){return vg(yg.apply(null,arguments).paddingInner(1))},t.scalePow=jg,t.scaleQuantile=function t(){var e,r=[],i=[],o=[];function a(){var t=0,n=Math.max(1,i.length);for(o=new Array(n-1);++t<n;)o[t-1]=ut(r,t/n);return u}function u(t){return null==t||isNaN(t=+t)?e:i[s(o,t)]}return u.invertExtent=function(t){var n=i.indexOf(t);return n<0?[NaN,NaN]:[n>0?o[n-1]:r[0],n<o.length?o[n]:r[r.length-1]]},u.domain=function(t){if(!arguments.length)return r.slice();r=[];for(let n of t)null==n||isNaN(n=+n)||r.push(n);return r.sort(n),a()},u.range=function(t){return arguments.length?(i=Array.from(t),a()):i.slice()},u.unknown=function(t){return arguments.length?(e=t,u):e},u.quantiles=function(){return o.slice()},u.copy=function(){return t().domain(r).range(i).unknown(e)},hg.apply(u,arguments)},t.scaleQuantize=function t(){var n,e=0,r=1,i=1,o=[.5],a=[0,1];function u(t){return null!=t&&t<=t?a[s(o,t,0,i)]:n}function c(){var t=-1;for(o=new Array(i);++t<i;)o[t]=((t+1)*r-(t-i)*e)/(i+1);return u}return u.domain=function(t){return arguments.length?([e,r]=t,e=+e,r=+r,c()):[e,r]},u.range=function(t){return arguments.length?(i=(a=Array.from(t)).length-1,c()):a.slice()},u.invertExtent=function(t){var n=a.indexOf(t);return n<0?[NaN,NaN]:n<1?[e,o[0]]:n>=i?[o[i-1],r]:[o[n-1],o[n]]},u.unknown=function(t){return arguments.length?(n=t,u):u},u.thresholds=function(){return o.slice()},u.copy=function(){return t().domain([e,r]).range(a).unknown(n)},hg.apply(Ng(u),arguments)},t.scaleRadial=function t(){var n,e=Sg(),r=[0,1],i=!1;function o(t){var r=function(t){return Math.sign(t)*Math.sqrt(Math.abs(t))}(e(t));return isNaN(r)?n:i?Math.round(r):r}return o.invert=function(t){return e.invert(Hg(t))},o.domain=function(t){return arguments.length?(e.domain(t),o):e.domain()},o.range=function(t){return arguments.length?(e.range((r=Array.from(t,_g)).map(Hg)),o):r.slice()},o.rangeRound=function(t){return o.range(t).round(!0)},o.round=function(t){return arguments.length?(i=!!t,o):i},o.clamp=function(t){return arguments.length?(e.clamp(t),o):e.clamp()},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t(e.domain(),r).round(i).clamp(e.clamp()).unknown(n)},hg.apply(o,arguments),Ng(o)},t.scaleSequential=function t(){var n=Ng(O_()(mg));return n.copy=function(){return B_(n,t())},dg.apply(n,arguments)},t.scaleSequentialLog=function t(){var n=Fg(O_()).domain([1,10]);return n.copy=function(){return B_(n,t()).base(n.base())},dg.apply(n,arguments)},t.scaleSequentialPow=Y_,t.scaleSequentialQuantile=function t(){var e=[],r=mg;function i(t){if(null!=t&&!isNaN(t=+t))return r((s(e,t,1)-1)/(e.length-1))}return i.domain=function(t){if(!arguments.length)return e.slice();e=[];for(let n of t)null==n||isNaN(n=+n)||e.push(n);return e.sort(n),i},i.interpolator=function(t){return arguments.length?(r=t,i):r},i.range=function(){return e.map(((t,n)=>r(n/(e.length-1))))},i.quantiles=function(t){return Array.from({length:t+1},((n,r)=>at(e,r/t)))},i.copy=function(){return t(r).domain(e)},dg.apply(i,arguments)},t.scaleSequentialSqrt=function(){return Y_.apply(null,arguments).exponent(.5)},t.scaleSequentialSymlog=function t(){var n=Ig(O_());return n.copy=function(){return B_(n,t()).constant(n.constant())},dg.apply(n,arguments)},t.scaleSqrt=function(){return jg.apply(null,arguments).exponent(.5)},t.scaleSymlog=function t(){var n=Ig(Ag());return n.copy=function(){return Tg(n,t()).constant(n.constant())},hg.apply(n,arguments)},t.scaleThreshold=function t(){var n,e=[.5],r=[0,1],i=1;function o(t){return null!=t&&t<=t?r[s(e,t,0,i)]:n}return o.domain=function(t){return arguments.length?(e=Array.from(t),i=Math.min(e.length,r.length-1),o):e.slice()},o.range=function(t){return arguments.length?(r=Array.from(t),i=Math.min(e.length,r.length-1),o):r.slice()},o.invertExtent=function(t){var n=r.indexOf(t);return[e[n-1],e[n]]},o.unknown=function(t){return arguments.length?(n=t,o):n},o.copy=function(){return t().domain(e).range(r).unknown(n)},hg.apply(o,arguments)},t.scaleTime=function(){return hg.apply(I_(uv,cv,tv,Zy,xy,py,sy,ay,iy,t.timeFormat).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)},t.scaleUtc=function(){return hg.apply(I_(ov,av,ev,Qy,Fy,yy,hy,cy,iy,t.utcFormat).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)},t.scan=function(t,n){const e=ht(t,n);return e<0?void 0:e},t.schemeAccent=G_,t.schemeBlues=Hb,t.schemeBrBG=rb,t.schemeBuGn=xb,t.schemeBuPu=Mb,t.schemeCategory10=X_,t.schemeDark2=V_,t.schemeGnBu=Ab,t.schemeGreens=Gb,t.schemeGreys=Wb,t.schemeOrRd=Eb,t.schemeOranges=nm,t.schemePRGn=ob,t.schemePaired=W_,t.schemePastel1=Z_,t.schemePastel2=K_,t.schemePiYG=ub,t.schemePuBu=Pb,t.schemePuBuGn=kb,t.schemePuOr=fb,t.schemePuRd=$b,t.schemePurples=Kb,t.schemeRdBu=lb,t.schemeRdGy=db,t.schemeRdPu=Rb,t.schemeRdYlBu=gb,t.schemeRdYlGn=vb,t.schemeReds=Jb,t.schemeSet1=Q_,t.schemeSet2=J_,t.schemeSet3=tb,t.schemeSpectral=bb,t.schemeTableau10=nb,t.schemeYlGn=Ib,t.schemeYlGnBu=qb,t.schemeYlOrBr=Bb,t.schemeYlOrRd=Lb,t.select=Zn,t.selectAll=function(t){return"string"==typeof t?new Vn([document.querySelectorAll(t)],[document.documentElement]):new Vn([Ht(t)],Gn)},t.selection=Wn,t.selector=jt,t.selectorAll=Gt,t.shuffle=dt,t.shuffler=pt,t.some=function(t,n){if("function"!=typeof n)throw new TypeError("test is not a function");let e=-1;for(const r of t)if(n(r,++e,t))return!0;return!1},t.sort=U,t.stack=function(){var t=gm([]),n=hw,e=lw,r=dw;function i(i){var o,a,u=Array.from(t.apply(this,arguments),pw),c=u.length,f=-1;for(const t of i)for(o=0,++f;o<c;++o)(u[o][f]=[0,+r(t,u[o].key,f,i)]).data=t;for(o=0,a=Fm(n(u));o<c;++o)u[a[o]].index=o;return e(u,a),u}return i.keys=function(n){return arguments.length?(t="function"==typeof n?n:gm(Array.from(n)),i):t},i.value=function(t){return arguments.length?(r="function"==typeof t?t:gm(+t),i):r},i.order=function(t){return arguments.length?(n=null==t?hw:"function"==typeof t?t:gm(Array.from(t)),i):n},i.offset=function(t){return arguments.length?(e=null==t?lw:t,i):e},i},t.stackOffsetDiverging=function(t,n){if((u=t.length)>0)for(var e,r,i,o,a,u,c=0,f=t[n[0]].length;c<f;++c)for(o=a=0,e=0;e<u;++e)(i=(r=t[n[e]][c])[1]-r[0])>0?(r[0]=o,r[1]=o+=i):i<0?(r[1]=a,r[0]=a+=i):(r[0]=0,r[1]=i)},t.stackOffsetExpand=function(t,n){if((r=t.length)>0){for(var e,r,i,o=0,a=t[0].length;o<a;++o){for(i=e=0;e<r;++e)i+=t[e][o][1]||0;if(i)for(e=0;e<r;++e)t[e][o][1]/=i}lw(t,n)}},t.stackOffsetNone=lw,t.stackOffsetSilhouette=function(t,n){if((e=t.length)>0){for(var e,r=0,i=t[n[0]],o=i.length;r<o;++r){for(var a=0,u=0;a<e;++a)u+=t[a][r][1]||0;i[r][1]+=i[r][0]=-u/2}lw(t,n)}},t.stackOffsetWiggle=function(t,n){if((i=t.length)>0&&(r=(e=t[n[0]]).length)>0){for(var e,r,i,o=0,a=1;a<r;++a){for(var u=0,c=0,f=0;u<i;++u){for(var s=t[n[u]],l=s[a][1]||0,h=(l-(s[a-1][1]||0))/2,d=0;d<u;++d){var p=t[n[d]];h+=(p[a][1]||0)-(p[a-1][1]||0)}c+=l,f+=h*l}e[a-1][1]+=e[a-1][0]=o,c&&(o-=f/c)}e[a-1][1]+=e[a-1][0]=o,lw(t,n)}},t.stackOrderAppearance=gw,t.stackOrderAscending=vw,t.stackOrderDescending=function(t){return vw(t).reverse()},t.stackOrderInsideOut=function(t){var n,e,r=t.length,i=t.map(_w),o=gw(t),a=0,u=0,c=[],f=[];for(n=0;n<r;++n)e=o[n],a<u?(a+=i[e],c.push(e)):(u+=i[e],f.push(e));return f.reverse().concat(c)},t.stackOrderNone=hw,t.stackOrderReverse=function(t){return hw(t).reverse()},t.stratify=function(){var t,n=kp,e=Cp;function r(r){var i,o,a,u,c,f,s,l,h=Array.from(r),d=n,p=e,g=new Map;if(null!=t){const n=h.map(((n,e)=>function(t){t=`${t}`;let n=t.length;zp(t,n-1)&&!zp(t,n-2)&&(t=t.slice(0,-1));return"/"===t[0]?t:`/${t}`}(t(n,e,r)))),e=n.map(Pp),i=new Set(n).add("");for(const t of e)i.has(t)||(i.add(t),n.push(t),e.push(Pp(t)),h.push(Np));d=(t,e)=>n[e],p=(t,n)=>e[n]}for(a=0,i=h.length;a<i;++a)o=h[a],f=h[a]=new Qd(o),null!=(s=d(o,a,r))&&(s+="")&&(l=f.id=s,g.set(l,g.has(l)?Ep:f)),null!=(s=p(o,a,r))&&(s+="")&&(f.parent=s);for(a=0;a<i;++a)if(s=(f=h[a]).parent){if(!(c=g.get(s)))throw new Error("missing: "+s);if(c===Ep)throw new Error("ambiguous: "+s);c.children?c.children.push(f):c.children=[f],f.parent=c}else{if(u)throw new Error("multiple roots");u=f}if(!u)throw new Error("no root");if(null!=t){for(;u.data===Np&&1===u.children.length;)u=u.children[0],--i;for(let t=h.length-1;t>=0&&(f=h[t]).data===Np;--t)f.data=null}if(u.parent=Sp,u.eachBefore((function(t){t.depth=t.parent.depth+1,--i})).eachBefore(Kd),u.parent=null,i>0)throw new Error("cycle");return u}return r.id=function(t){return arguments.length?(n=Jd(t),r):n},r.parentId=function(t){return arguments.length?(e=Jd(t),r):e},r.path=function(n){return arguments.length?(t=Jd(n),r):t},r},t.style=_n,t.subset=function(t,n){return _t(n,t)},t.sum=function(t,n){let e=0;if(void 0===n)for(let n of t)(n=+n)&&(e+=n);else{let r=-1;for(let i of t)(i=+n(i,++r,t))&&(e+=i)}return e},t.superset=_t,t.svg=Nc,t.symbol=function(t,n){let e=null,r=Nm(i);function i(){let i;if(e||(e=i=r()),t.apply(this,arguments).draw(e,+n.apply(this,arguments)),i)return e=null,i+""||null}return t="function"==typeof t?t:gm(t||cx),n="function"==typeof n?n:gm(void 0===n?64:+n),i.type=function(n){return arguments.length?(t="function"==typeof n?n:gm(n),i):t},i.size=function(t){return arguments.length?(n="function"==typeof t?t:gm(+t),i):n},i.context=function(t){return arguments.length?(e=null==t?null:t,i):e},i},t.symbolAsterisk=ux,t.symbolCircle=cx,t.symbolCross=fx,t.symbolDiamond=hx,t.symbolDiamond2=dx,t.symbolPlus=px,t.symbolSquare=gx,t.symbolSquare2=yx,t.symbolStar=mx,t.symbolTimes=Cx,t.symbolTriangle=wx,t.symbolTriangle2=Tx,t.symbolWye=kx,t.symbolX=Cx,t.symbols=Px,t.symbolsFill=Px,t.symbolsStroke=zx,t.text=mc,t.thresholdFreedmanDiaconis=function(t,n,e){const r=v(t),i=at(t,.75)-at(t,.25);return r&&i?Math.ceil((e-n)/(2*i*Math.pow(r,-1/3))):1},t.thresholdScott=function(t,n,e){const r=v(t),i=w(t);return r&&i?Math.ceil((e-n)*Math.cbrt(r)/(3.49*i)):1},t.thresholdSturges=K,t.tickFormat=Eg,t.tickIncrement=V,t.tickStep=W,t.ticks=G,t.timeDay=py,t.timeDays=gy,t.timeFormatDefaultLocale=P_,t.timeFormatLocale=hv,t.timeFriday=Sy,t.timeFridays=$y,t.timeHour=sy,t.timeHours=ly,t.timeInterval=Vg,t.timeMillisecond=Wg,t.timeMilliseconds=Zg,t.timeMinute=ay,t.timeMinutes=uy,t.timeMonday=wy,t.timeMondays=ky,t.timeMonth=Zy,t.timeMonths=Ky,t.timeSaturday=Ey,t.timeSaturdays=Dy,t.timeSecond=iy,t.timeSeconds=oy,t.timeSunday=xy,t.timeSundays=Ny,t.timeThursday=Ay,t.timeThursdays=zy,t.timeTickInterval=cv,t.timeTicks=uv,t.timeTuesday=My,t.timeTuesdays=Cy,t.timeWednesday=Ty,t.timeWednesdays=Py,t.timeWeek=xy,t.timeWeeks=Ny,t.timeYear=tv,t.timeYears=nv,t.timeout=$i,t.timer=Ni,t.timerFlush=ki,t.transition=go,t.transpose=gt,t.tree=function(){var t=$p,n=1,e=1,r=null;function i(i){var c=function(t){for(var n,e,r,i,o,a=new Up(t,0),u=[a];n=u.pop();)if(r=n._.children)for(n.children=new Array(o=r.length),i=o-1;i>=0;--i)u.push(e=n.children[i]=new Up(r[i],i)),e.parent=n;return(a.parent=new Up(null,0)).children=[a],a}(i);if(c.eachAfter(o),c.parent.m=-c.z,c.eachBefore(a),r)i.eachBefore(u);else{var f=i,s=i,l=i;i.eachBefore((function(t){t.x<f.x&&(f=t),t.x>s.x&&(s=t),t.depth>l.depth&&(l=t)}));var h=f===s?1:t(f,s)/2,d=h-f.x,p=n/(s.x+h+d),g=e/(l.depth||1);i.eachBefore((function(t){t.x=(t.x+d)*p,t.y=t.depth*g}))}return i}function o(n){var e=n.children,r=n.parent.children,i=n.i?r[n.i-1]:null;if(e){!function(t){for(var n,e=0,r=0,i=t.children,o=i.length;--o>=0;)(n=i[o]).z+=e,n.m+=e,e+=n.s+(r+=n.c)}(n);var o=(e[0].z+e[e.length-1].z)/2;i?(n.z=i.z+t(n._,i._),n.m=n.z-o):n.z=o}else i&&(n.z=i.z+t(n._,i._));n.parent.A=function(n,e,r){if(e){for(var i,o=n,a=n,u=e,c=o.parent.children[0],f=o.m,s=a.m,l=u.m,h=c.m;u=Rp(u),o=Dp(o),u&&o;)c=Dp(c),(a=Rp(a)).a=n,(i=u.z+l-o.z-f+t(u._,o._))>0&&(Fp(qp(u,n,r),n,i),f+=i,s+=i),l+=u.m,f+=o.m,h+=c.m,s+=a.m;u&&!Rp(a)&&(a.t=u,a.m+=l-s),o&&!Dp(c)&&(c.t=o,c.m+=f-h,r=n)}return r}(n,i,n.parent.A||r[0])}function a(t){t._.x=t.z+t.parent.m,t.m+=t.parent.m}function u(t){t.x*=n,t.y=t.depth*e}return i.separation=function(n){return arguments.length?(t=n,i):t},i.size=function(t){return arguments.length?(r=!1,n=+t[0],e=+t[1],i):r?null:[n,e]},i.nodeSize=function(t){return arguments.length?(r=!0,n=+t[0],e=+t[1],i):r?[n,e]:null},i},t.treemap=function(){var t=Yp,n=!1,e=1,r=1,i=[0],o=np,a=np,u=np,c=np,f=np;function s(t){return t.x0=t.y0=0,t.x1=e,t.y1=r,t.eachBefore(l),i=[0],n&&t.eachBefore(Tp),t}function l(n){var e=i[n.depth],r=n.x0+e,s=n.y0+e,l=n.x1-e,h=n.y1-e;l<r&&(r=l=(r+l)/2),h<s&&(s=h=(s+h)/2),n.x0=r,n.y0=s,n.x1=l,n.y1=h,n.children&&(e=i[n.depth+1]=o(n)/2,r+=f(n)-e,s+=a(n)-e,(l-=u(n)-e)<r&&(r=l=(r+l)/2),(h-=c(n)-e)<s&&(s=h=(s+h)/2),t(n,r,s,l,h))}return s.round=function(t){return arguments.length?(n=!!t,s):n},s.size=function(t){return arguments.length?(e=+t[0],r=+t[1],s):[e,r]},s.tile=function(n){return arguments.length?(t=tp(n),s):t},s.padding=function(t){return arguments.length?s.paddingInner(t).paddingOuter(t):s.paddingInner()},s.paddingInner=function(t){return arguments.length?(o="function"==typeof t?t:ep(+t),s):o},s.paddingOuter=function(t){return arguments.length?s.paddingTop(t).paddingRight(t).paddingBottom(t).paddingLeft(t):s.paddingTop()},s.paddingTop=function(t){return arguments.length?(a="function"==typeof t?t:ep(+t),s):a},s.paddingRight=function(t){return arguments.length?(u="function"==typeof t?t:ep(+t),s):u},s.paddingBottom=function(t){return arguments.length?(c="function"==typeof t?t:ep(+t),s):c},s.paddingLeft=function(t){return arguments.length?(f="function"==typeof t?t:ep(+t),s):f},s},t.treemapBinary=function(t,n,e,r,i){var o,a,u=t.children,c=u.length,f=new Array(c+1);for(f[0]=a=o=0;o<c;++o)f[o+1]=a+=u[o].value;!function t(n,e,r,i,o,a,c){if(n>=e-1){var s=u[n];return s.x0=i,s.y0=o,s.x1=a,void(s.y1=c)}var l=f[n],h=r/2+l,d=n+1,p=e-1;for(;d<p;){var g=d+p>>>1;f[g]<h?d=g+1:p=g}h-f[d-1]<f[d]-h&&n+1<d&&--d;var y=f[d]-l,v=r-y;if(a-i>c-o){var _=r?(i*v+a*y)/r:a;t(n,d,y,i,o,_,c),t(d,e,v,_,o,a,c)}else{var b=r?(o*v+c*y)/r:c;t(n,d,y,i,o,a,b),t(d,e,v,i,b,a,c)}}(0,c,t.value,n,e,r,i)},t.treemapDice=Ap,t.treemapResquarify=Lp,t.treemapSlice=Ip,t.treemapSliceDice=function(t,n,e,r,i){(1&t.depth?Ip:Ap)(t,n,e,r,i)},t.treemapSquarify=Yp,t.tsv=Mc,t.tsvFormat=lc,t.tsvFormatBody=hc,t.tsvFormatRow=pc,t.tsvFormatRows=dc,t.tsvFormatValue=gc,t.tsvParse=fc,t.tsvParseRows=sc,t.union=function(...t){const n=new InternSet;for(const e of t)for(const t of e)n.add(t);return n},t.unixDay=_y,t.unixDays=by,t.utcDay=yy,t.utcDays=vy,t.utcFriday=By,t.utcFridays=Vy,t.utcHour=hy,t.utcHours=dy,t.utcMillisecond=Wg,t.utcMilliseconds=Zg,t.utcMinute=cy,t.utcMinutes=fy,t.utcMonday=qy,t.utcMondays=jy,t.utcMonth=Qy,t.utcMonths=Jy,t.utcSaturday=Yy,t.utcSaturdays=Wy,t.utcSecond=iy,t.utcSeconds=oy,t.utcSunday=Fy,t.utcSundays=Ly,t.utcThursday=Oy,t.utcThursdays=Gy,t.utcTickInterval=av,t.utcTicks=ov,t.utcTuesday=Uy,t.utcTuesdays=Hy,t.utcWednesday=Iy,t.utcWednesdays=Xy,t.utcWeek=Fy,t.utcWeeks=Ly,t.utcYear=ev,t.utcYears=rv,t.variance=x,t.version="7.8.5",t.window=pn,t.xml=Sc,t.zip=function(){return gt(arguments)},t.zoom=function(){var t,n,e,r=Sw,i=Ew,o=Pw,a=kw,u=Cw,c=[0,1/0],f=[[-1/0,-1/0],[1/0,1/0]],s=250,l=ri,h=$t("start","zoom","end"),d=500,p=150,g=0,y=10;function v(t){t.property("__zoom",Nw).on("wheel.zoom",T,{passive:!1}).on("mousedown.zoom",A).on("dblclick.zoom",S).filter(u).on("touchstart.zoom",E).on("touchmove.zoom",N).on("touchend.zoom touchcancel.zoom",k).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function _(t,n){return(n=Math.max(c[0],Math.min(c[1],n)))===t.k?t:new xw(n,t.x,t.y)}function b(t,n,e){var r=n[0]-e[0]*t.k,i=n[1]-e[1]*t.k;return r===t.x&&i===t.y?t:new xw(t.k,r,i)}function m(t){return[(+t[0][0]+ +t[1][0])/2,(+t[0][1]+ +t[1][1])/2]}function x(t,n,e,r){t.on("start.zoom",(function(){w(this,arguments).event(r).start()})).on("interrupt.zoom end.zoom",(function(){w(this,arguments).event(r).end()})).tween("zoom",(function(){var t=this,o=arguments,a=w(t,o).event(r),u=i.apply(t,o),c=null==e?m(u):"function"==typeof e?e.apply(t,o):e,f=Math.max(u[1][0]-u[0][0],u[1][1]-u[0][1]),s=t.__zoom,h="function"==typeof n?n.apply(t,o):n,d=l(s.invert(c).concat(f/s.k),h.invert(c).concat(f/h.k));return function(t){if(1===t)t=h;else{var n=d(t),e=f/n[2];t=new xw(e,c[0]-n[0]*e,c[1]-n[1]*e)}a.zoom(null,t)}}))}function w(t,n,e){return!e&&t.__zooming||new M(t,n)}function M(t,n){this.that=t,this.args=n,this.active=0,this.sourceEvent=null,this.extent=i.apply(t,n),this.taps=0}function T(t,...n){if(r.apply(this,arguments)){var e=w(this,n).event(t),i=this.__zoom,u=Math.max(c[0],Math.min(c[1],i.k*Math.pow(2,a.apply(this,arguments)))),s=ne(t);if(e.wheel)e.mouse[0][0]===s[0]&&e.mouse[0][1]===s[1]||(e.mouse[1]=i.invert(e.mouse[0]=s)),clearTimeout(e.wheel);else{if(i.k===u)return;e.mouse=[s,i.invert(s)],Gi(this),e.start()}Aw(t),e.wheel=setTimeout((function(){e.wheel=null,e.end()}),p),e.zoom("mouse",o(b(_(i,u),e.mouse[0],e.mouse[1]),e.extent,f))}}function A(t,...n){if(!e&&r.apply(this,arguments)){var i=t.currentTarget,a=w(this,n,!0).event(t),u=Zn(t.view).on("mousemove.zoom",(function(t){if(Aw(t),!a.moved){var n=t.clientX-s,e=t.clientY-l;a.moved=n*n+e*e>g}a.event(t).zoom("mouse",o(b(a.that.__zoom,a.mouse[0]=ne(t,i),a.mouse[1]),a.extent,f))}),!0).on("mouseup.zoom",(function(t){u.on("mousemove.zoom mouseup.zoom",null),ue(t.view,a.moved),Aw(t),a.event(t).end()}),!0),c=ne(t,i),s=t.clientX,l=t.clientY;ae(t.view),Tw(t),a.mouse=[c,this.__zoom.invert(c)],Gi(this),a.start()}}function S(t,...n){if(r.apply(this,arguments)){var e=this.__zoom,a=ne(t.changedTouches?t.changedTouches[0]:t,this),u=e.invert(a),c=e.k*(t.shiftKey?.5:2),l=o(b(_(e,c),a,u),i.apply(this,n),f);Aw(t),s>0?Zn(this).transition().duration(s).call(x,l,a,t):Zn(this).call(v.transform,l,a,t)}}function E(e,...i){if(r.apply(this,arguments)){var o,a,u,c,f=e.touches,s=f.length,l=w(this,i,e.changedTouches.length===s).event(e);for(Tw(e),a=0;a<s;++a)c=[c=ne(u=f[a],this),this.__zoom.invert(c),u.identifier],l.touch0?l.touch1||l.touch0[2]===c[2]||(l.touch1=c,l.taps=0):(l.touch0=c,o=!0,l.taps=1+!!t);t&&(t=clearTimeout(t)),o&&(l.taps<2&&(n=c[0],t=setTimeout((function(){t=null}),d)),Gi(this),l.start())}}function N(t,...n){if(this.__zooming){var e,r,i,a,u=w(this,n).event(t),c=t.changedTouches,s=c.length;for(Aw(t),e=0;e<s;++e)i=ne(r=c[e],this),u.touch0&&u.touch0[2]===r.identifier?u.touch0[0]=i:u.touch1&&u.touch1[2]===r.identifier&&(u.touch1[0]=i);if(r=u.that.__zoom,u.touch1){var l=u.touch0[0],h=u.touch0[1],d=u.touch1[0],p=u.touch1[1],g=(g=d[0]-l[0])*g+(g=d[1]-l[1])*g,y=(y=p[0]-h[0])*y+(y=p[1]-h[1])*y;r=_(r,Math.sqrt(g/y)),i=[(l[0]+d[0])/2,(l[1]+d[1])/2],a=[(h[0]+p[0])/2,(h[1]+p[1])/2]}else{if(!u.touch0)return;i=u.touch0[0],a=u.touch0[1]}u.zoom("touch",o(b(r,i,a),u.extent,f))}}function k(t,...r){if(this.__zooming){var i,o,a=w(this,r).event(t),u=t.changedTouches,c=u.length;for(Tw(t),e&&clearTimeout(e),e=setTimeout((function(){e=null}),d),i=0;i<c;++i)o=u[i],a.touch0&&a.touch0[2]===o.identifier?delete a.touch0:a.touch1&&a.touch1[2]===o.identifier&&delete a.touch1;if(a.touch1&&!a.touch0&&(a.touch0=a.touch1,delete a.touch1),a.touch0)a.touch0[1]=this.__zoom.invert(a.touch0[0]);else if(a.end(),2===a.taps&&(o=ne(o,this),Math.hypot(n[0]-o[0],n[1]-o[1])<y)){var f=Zn(this).on("dblclick.zoom");f&&f.apply(this,arguments)}}}return v.transform=function(t,n,e,r){var i=t.selection?t.selection():t;i.property("__zoom",Nw),t!==i?x(t,n,e,r):i.interrupt().each((function(){w(this,arguments).event(r).start().zoom(null,"function"==typeof n?n.apply(this,arguments):n).end()}))},v.scaleBy=function(t,n,e,r){v.scaleTo(t,(function(){return this.__zoom.k*("function"==typeof n?n.apply(this,arguments):n)}),e,r)},v.scaleTo=function(t,n,e,r){v.transform(t,(function(){var t=i.apply(this,arguments),r=this.__zoom,a=null==e?m(t):"function"==typeof e?e.apply(this,arguments):e,u=r.invert(a),c="function"==typeof n?n.apply(this,arguments):n;return o(b(_(r,c),a,u),t,f)}),e,r)},v.translateBy=function(t,n,e,r){v.transform(t,(function(){return o(this.__zoom.translate("function"==typeof n?n.apply(this,arguments):n,"function"==typeof e?e.apply(this,arguments):e),i.apply(this,arguments),f)}),null,r)},v.translateTo=function(t,n,e,r,a){v.transform(t,(function(){var t=i.apply(this,arguments),a=this.__zoom,u=null==r?m(t):"function"==typeof r?r.apply(this,arguments):r;return o(ww.translate(u[0],u[1]).scale(a.k).translate("function"==typeof n?-n.apply(this,arguments):-n,"function"==typeof e?-e.apply(this,arguments):-e),t,f)}),r,a)},M.prototype={event:function(t){return t&&(this.sourceEvent=t),this},start:function(){return 1==++this.active&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(t,n){return this.mouse&&"mouse"!==t&&(this.mouse[1]=n.invert(this.mouse[0])),this.touch0&&"touch"!==t&&(this.touch0[1]=n.invert(this.touch0[0])),this.touch1&&"touch"!==t&&(this.touch1[1]=n.invert(this.touch1[0])),this.that.__zoom=n,this.emit("zoom"),this},end:function(){return 0==--this.active&&(delete this.that.__zooming,this.emit("end")),this},emit:function(t){var n=Zn(this.that).datum();h.call(t,this.that,new mw(t,{sourceEvent:this.sourceEvent,target:v,type:t,transform:this.that.__zoom,dispatch:h}),n)}},v.wheelDelta=function(t){return arguments.length?(a="function"==typeof t?t:bw(+t),v):a},v.filter=function(t){return arguments.length?(r="function"==typeof t?t:bw(!!t),v):r},v.touchable=function(t){return arguments.length?(u="function"==typeof t?t:bw(!!t),v):u},v.extent=function(t){return arguments.length?(i="function"==typeof t?t:bw([[+t[0][0],+t[0][1]],[+t[1][0],+t[1][1]]]),v):i},v.scaleExtent=function(t){return arguments.length?(c[0]=+t[0],c[1]=+t[1],v):[c[0],c[1]]},v.translateExtent=function(t){return arguments.length?(f[0][0]=+t[0][0],f[1][0]=+t[1][0],f[0][1]=+t[0][1],f[1][1]=+t[1][1],v):[[f[0][0],f[0][1]],[f[1][0],f[1][1]]]},v.constrain=function(t){return arguments.length?(o=t,v):o},v.duration=function(t){return arguments.length?(s=+t,v):s},v.interpolate=function(t){return arguments.length?(l=t,v):l},v.on=function(){var t=h.on.apply(h,arguments);return t===h?v:t},v.clickDistance=function(t){return arguments.length?(g=(t=+t)*t,v):Math.sqrt(g)},v.tapDistance=function(t){return arguments.length?(y=+t,v):y},v},t.zoomIdentity=ww,t.zoomTransform=Mw}));

</script>
    <style>
.d3-flame-graph rect {
  stroke: #EEEEEE;
  fill-opacity: .8;
}

.d3-flame-graph rect:hover {
  stroke: #474747;
  stroke-width: 0.5;
  cursor: pointer;
}

.d3-flame-graph-label {
  pointer-events: none;
  white-space: nowrap;
  text-overflow: ellipsis;
  overflow: hidden;
  font-size: 12px;
  font-family: Verdana;
  margin-left: 4px;
  margin-right: 4px;
  line-height: 1.5;
  padding: 0 0 0;
  font-weight: 400;
  color: black;
  text-align: left;
}

.d3-flame-graph .fade {
  opacity: 0.6 !important;
}

.d3-flame-graph .title {
  font-size: 20px;
  font-family: Verdana;
}

.d3-flame-graph-tip {
    background-color: black;
    border: none;
    border-radius: 3px;
    padding: 5px 10px 5px 10px;
    min-width: 250px;
    text-align: left;
    color: white;
    z-index: 10;
}
</style>
    <script>
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.flamegraph=n():t.flamegraph=n()}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n)},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return null==t?o:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function l(t){return function(n){return n.matches(t)}}t.d(n,{default:()=>xr});var s=Array.prototype.find;function c(){return this.firstElementChild}var h=Array.prototype.filter;function f(){return Array.from(this.children)}function p(t){return new Array(t.length)}function d(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function g(t){return function(){return t}}function v(t,n,e,r,i,o){for(var u,a=0,l=n.length,s=o.length;a<s;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new d(t,o[a]);for(;a<l;++a)(u=n[a])&&(i[a]=u)}function y(t,n,e,r,i,o,u){var a,l,s,c=new Map,h=n.length,f=o.length,p=new Array(h);for(a=0;a<h;++a)(l=n[a])&&(p[a]=s=u.call(l,l.__data__,a,n)+"",c.has(s)?i[a]=l:c.set(s,l));for(a=0;a<f;++a)s=u.call(t,o[a],a,o)+"",(l=c.get(s))?(r[a]=l,l.__data__=o[a],c.delete(s)):e[a]=new d(t,o[a]);for(a=0;a<h;++a)(l=n[a])&&c.get(p[a])===l&&(i[a]=l)}function m(t){return t.__data__}function w(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function _(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}d.prototype={constructor:d,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var b="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:b,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function M(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),x.hasOwnProperty(n)?{space:x[n],local:t}:t}function A(t){return function(){this.removeAttribute(t)}}function N(t){return function(){this.removeAttributeNS(t.space,t.local)}}function k(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function C(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function j(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function q(t){return function(){this.style.removeProperty(t)}}function O(t,n,e){return function(){this.style.setProperty(t,n,e)}}function P(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function H(t,n){return t.style.getPropertyValue(n)||j(t).getComputedStyle(t,null).getPropertyValue(n)}function L(t){return function(){delete this[t]}}function T(t,n){return function(){this[t]=n}}function D(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function B(t){return t.trim().split(/^|\s+/)}function X(t){return t.classList||new z(t)}function z(t){this._node=t,this._names=B(t.getAttribute("class")||"")}function R(t,n){for(var e=X(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function I(t,n){for(var e=X(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function $(t){return function(){R(this,t)}}function V(t){return function(){I(this,t)}}function Y(t,n){return function(){(n.apply(this,arguments)?R:I)(this,t)}}function F(){this.textContent=""}function U(t){return function(){this.textContent=t}}function Z(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function G(){this.innerHTML=""}function K(t){return function(){this.innerHTML=t}}function W(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function J(){this.nextSibling&&this.parentNode.appendChild(this)}function Q(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===b&&n.documentElement.namespaceURI===b?n.createElement(t):n.createElementNS(e,t)}}function nt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function et(t){var n=M(t);return(n.local?nt:tt)(n)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ut(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function at(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function lt(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function st(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var u=0,a=i.length;u<a;++u)if((r=i[u]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ct(t,n,e){var r=j(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ht(t,n){return function(){return ct(this,t,n)}}function ft(t,n){return function(){return ct(this,t,n.apply(this,arguments))}}z.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var pt=[null];function dt(t,n){this._groups=t,this._parents=n}function gt(){return new dt([[document.documentElement]],pt)}dt.prototype=gt.prototype={constructor:dt,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o<e;++o)for(var u,a,l=n[o],s=l.length,c=i[o]=new Array(s),h=0;h<s;++h)(u=l[h])&&(a=t.call(u,u.__data__,h,l))&&("__data__"in u&&(a.__data__=u.__data__),c[h]=a);return new dt(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return i(t.apply(this,arguments))}}(t):u(t);for(var n=this._groups,e=n.length,r=[],o=[],a=0;a<e;++a)for(var l,s=n[a],c=s.length,h=0;h<c;++h)(l=s[h])&&(r.push(t.call(l,l.__data__,h,s)),o.push(l));return new dt(r,o)},selectChild:function(t){return this.select(null==t?c:function(t){return function(){return s.call(this.children,t)}}("function"==typeof t?t:l(t)))},selectChildren:function(t){return this.selectAll(null==t?f:function(t){return function(){return h.call(this.children,t)}}("function"==typeof t?t:l(t)))},filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],l=u.length,s=r[i]=[],c=0;c<l;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&s.push(o);return new dt(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,m);var e=n?y:v,r=this._parents,i=this._groups;"function"!=typeof t&&(t=g(t));for(var o=i.length,u=new Array(o),a=new Array(o),l=new Array(o),s=0;s<o;++s){var c=r[s],h=i[s],f=h.length,p=w(t.call(c,c&&c.__data__,s,r)),d=p.length,_=a[s]=new Array(d),b=u[s]=new Array(d),x=l[s]=new Array(f);e(c,h,_,b,x,p,n);for(var M,A,N=0,k=0;N<d;++N)if(M=_[N]){for(N>=k&&(k=N+1);!(A=b[k])&&++k<d;);M._next=A||null}}return(u=new dt(u,r))._enter=a,u._exit=l,u},enter:function(){return new dt(this._enter||this._groups.map(p),this._parents)},exit:function(){return new dt(this._exit||this._groups.map(p),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),l=0;l<u;++l)for(var s,c=e[l],h=r[l],f=c.length,p=a[l]=new Array(f),d=0;d<f;++d)(s=c[d]||h[d])&&(p[d]=s);for(;l<i;++l)a[l]=e[l];return new dt(a,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=_);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],l=a.length,s=i[o]=new Array(l),c=0;c<l;++c)(u=a[c])&&(s[c]=u);s.sort(n)}return new dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,a=o.length;u<a;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},attr:function(t,n){var e=M(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?N:A:"function"==typeof n?e.local?C:S:e.local?E:k)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?q:"function"==typeof n?P:O)(t,n,null==e?"":e)):H(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?L:"function"==typeof n?D:T)(t,n)):this.node()[t]},classed:function(t,n){var e=B(t+"");if(arguments.length<2){for(var r=X(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?Y:n?$:V)(e,n))},text:function(t){return arguments.length?this.each(null==t?F:("function"==typeof t?Z:U)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?G:("function"==typeof t?W:K)(t)):this.node().innerHTML},raise:function(){return this.each(J)},lower:function(){return this.each(Q)},append:function(t){var n="function"==typeof t?t:et(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:et(t),i=null==n?rt:"function"==typeof n?n:r(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?ut:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=at(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?st:lt,r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var l,s=0,c=a.length;s<c;++s)for(r=0,l=a[s];r<u;++r)if((i=o[r]).type===l.type&&i.name===l.name)return l.value},dispatch:function(t,n){return this.each(("function"==typeof n?ft:ht)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,u=i.length;o<u;++o)(r=i[o])&&(yield r)}};const vt=gt;function yt(t){return"string"==typeof t?new dt([[document.querySelector(t)]],[document.documentElement]):new dt([[t]],pt)}function mt(t,n){if((e=(t=n?t.toExponential(n-1):t.toExponential()).indexOf("e"))<0)return null;var e,r=t.slice(0,e);return[r.length>1?r[0]+r.slice(2):r,+t.slice(e+1)]}function wt(t){return(t=mt(Math.abs(t)))?t[1]:NaN}var _t,bt=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function xt(t){if(!(n=bt.exec(t)))throw new Error("invalid format: "+t);var n;return new Mt({fill:n[1],align:n[2],sign:n[3],symbol:n[4],zero:n[5],width:n[6],comma:n[7],precision:n[8]&&n[8].slice(1),trim:n[9],type:n[10]})}function Mt(t){this.fill=void 0===t.fill?" ":t.fill+"",this.align=void 0===t.align?">":t.align+"",this.sign=void 0===t.sign?"-":t.sign+"",this.symbol=void 0===t.symbol?"":t.symbol+"",this.zero=!!t.zero,this.width=void 0===t.width?void 0:+t.width,this.comma=!!t.comma,this.precision=void 0===t.precision?void 0:+t.precision,this.trim=!!t.trim,this.type=void 0===t.type?"":t.type+""}function At(t,n){var e=mt(t,n);if(!e)return t+"";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")}xt.prototype=Mt.prototype,Mt.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(void 0===this.width?"":Math.max(1,0|this.width))+(this.comma?",":"")+(void 0===this.precision?"":"."+Math.max(0,0|this.precision))+(this.trim?"~":"")+this.type};const Nt={"%":(t,n)=>(100*t).toFixed(n),b:t=>Math.round(t).toString(2),c:t=>t+"",d:function(t){return Math.abs(t=Math.round(t))>=1e21?t.toLocaleString("en").replace(/,/g,""):t.toString(10)},e:(t,n)=>t.toExponential(n),f:(t,n)=>t.toFixed(n),g:(t,n)=>t.toPrecision(n),o:t=>Math.round(t).toString(8),p:(t,n)=>At(100*t,n),r:At,s:function(t,n){var e=mt(t,n);if(!e)return t+"";var r=e[0],i=e[1],o=i-(_t=3*Math.max(-8,Math.min(8,Math.floor(i/3))))+1,u=r.length;return o===u?r:o>u?r+new Array(o-u+1).join("0"):o>0?r.slice(0,o)+"."+r.slice(o):"0."+new Array(1-o).join("0")+mt(t,Math.max(0,n+o-1))[0]},X:t=>Math.round(t).toString(16).toUpperCase(),x:t=>Math.round(t).toString(16)};function kt(t){return t}var Et,St,Ct,jt=Array.prototype.map,qt=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function Ot(t){var n,e,r=void 0===t.grouping||void 0===t.thousands?kt:(n=jt.call(t.grouping,Number),e=t.thousands+"",function(t,r){for(var i=t.length,o=[],u=0,a=n[0],l=0;i>0&&a>0&&(l+a+1>r&&(a=Math.max(1,r-l)),o.push(t.substring(i-=a,i+a)),!((l+=a+1)>r));)a=n[u=(u+1)%n.length];return o.reverse().join(e)}),i=void 0===t.currency?"":t.currency[0]+"",o=void 0===t.currency?"":t.currency[1]+"",u=void 0===t.decimal?".":t.decimal+"",a=void 0===t.numerals?kt:function(t){return function(n){return n.replace(/[0-9]/g,(function(n){return t[+n]}))}}(jt.call(t.numerals,String)),l=void 0===t.percent?"%":t.percent+"",s=void 0===t.minus?"−":t.minus+"",c=void 0===t.nan?"NaN":t.nan+"";function h(t){var n=(t=xt(t)).fill,e=t.align,h=t.sign,f=t.symbol,p=t.zero,d=t.width,g=t.comma,v=t.precision,y=t.trim,m=t.type;"n"===m?(g=!0,m="g"):Nt[m]||(void 0===v&&(v=12),y=!0,m="g"),(p||"0"===n&&"="===e)&&(p=!0,n="0",e="=");var w="$"===f?i:"#"===f&&/[boxX]/.test(m)?"0"+m.toLowerCase():"",_="$"===f?o:/[%p]/.test(m)?l:"",b=Nt[m],x=/[defgprs%]/.test(m);function M(t){var i,o,l,f=w,M=_;if("c"===m)M=b(t)+M,t="";else{var A=(t=+t)<0||1/t<0;if(t=isNaN(t)?c:b(Math.abs(t),v),y&&(t=function(t){t:for(var n,e=t.length,r=1,i=-1;r<e;++r)switch(t[r]){case".":i=n=r;break;case"0":0===i&&(i=r),n=r;break;default:if(!+t[r])break t;i>0&&(i=0)}return i>0?t.slice(0,i)+t.slice(n+1):t}(t)),A&&0==+t&&"+"!==h&&(A=!1),f=(A?"("===h?h:s:"-"===h||"("===h?"":h)+f,M=("s"===m?qt[8+_t/3]:"")+M+(A&&"("===h?")":""),x)for(i=-1,o=t.length;++i<o;)if(48>(l=t.charCodeAt(i))||l>57){M=(46===l?u+t.slice(i+1):t.slice(i))+M,t=t.slice(0,i);break}}g&&!p&&(t=r(t,1/0));var N=f.length+t.length+M.length,k=N<d?new Array(d-N+1).join(n):"";switch(g&&p&&(t=r(k+t,k.length?d-M.length:1/0),k=""),e){case"<":t=f+t+M+k;break;case"=":t=f+k+t+M;break;case"^":t=k.slice(0,N=k.length>>1)+f+t+M+k.slice(N);break;default:t=k+f+t+M}return a(t)}return v=void 0===v?6:/[gprs]/.test(m)?Math.max(1,Math.min(21,v)):Math.max(0,Math.min(20,v)),M.toString=function(){return t+""},M}return{format:h,formatPrefix:function(t,n){var e=h(((t=xt(t)).type="f",t)),r=3*Math.max(-8,Math.min(8,Math.floor(wt(n)/3))),i=Math.pow(10,-r),o=qt[8+r/3];return function(t){return e(i*t)+o}}}}function Pt(t,n){return null==t||null==n?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function Ht(t){t.x0=Math.round(t.x0),t.y0=Math.round(t.y0),t.x1=Math.round(t.x1),t.y1=Math.round(t.y1)}function Lt(){var t=1,n=1,e=0,r=!1;function i(i){var o=i.height+1;return i.x0=i.y0=e,i.x1=t,i.y1=n/o,i.eachBefore(function(t,n){return function(r){r.children&&function(t,n,e,r,i){for(var o,u=t.children,a=-1,l=u.length,s=t.value&&(r-n)/t.value;++a<l;)(o=u[a]).y0=e,o.y1=i,o.x0=n,o.x1=n+=o.value*s}(r,r.x0,t*(r.depth+1)/n,r.x1,t*(r.depth+2)/n);var i=r.x0,o=r.y0,u=r.x1-e,a=r.y1-e;u<i&&(i=u=(i+u)/2),a<o&&(o=a=(o+a)/2),r.x0=i,r.y0=o,r.x1=u,r.y1=a}}(n,o)),r&&i.eachBefore(Ht),i}return i.round=function(t){return arguments.length?(r=!!t,i):r},i.size=function(e){return arguments.length?(t=+e[0],n=+e[1],i):[t,n]},i.padding=function(t){return arguments.length?(e=+t,i):e},i}function Tt(t){var n=0,e=t.children,r=e&&e.length;if(r)for(;--r>=0;)n+=e[r].value;else n=1;t.value=n}function Dt(t,n){t instanceof Map?(t=[void 0,t],void 0===n&&(n=Xt)):void 0===n&&(n=Bt);for(var e,r,i,o,u,a=new It(t),l=[a];e=l.pop();)if((i=n(e.data))&&(u=(i=Array.from(i)).length))for(e.children=i,o=u-1;o>=0;--o)l.push(r=i[o]=new It(i[o])),r.parent=e,r.depth=e.depth+1;return a.eachBefore(Rt)}function Bt(t){return t.children}function Xt(t){return Array.isArray(t)?t[1]:null}function zt(t){void 0!==t.data.value&&(t.value=t.data.value),t.data=t.data.data}function Rt(t){var n=0;do{t.height=n}while((t=t.parent)&&t.height<++n)}function It(t){this.data=t,this.depth=this.height=0,this.parent=null}Et=Ot({thousands:",",grouping:[3],currency:["$",""]}),St=Et.format,Ct=Et.formatPrefix,It.prototype=Dt.prototype={constructor:It,count:function(){return this.eachAfter(Tt)},each:function(t,n){let e=-1;for(const r of this)t.call(n,r,++e,this);return this},eachAfter:function(t,n){for(var e,r,i,o=this,u=[o],a=[],l=-1;o=u.pop();)if(a.push(o),e=o.children)for(r=0,i=e.length;r<i;++r)u.push(e[r]);for(;o=a.pop();)t.call(n,o,++l,this);return this},eachBefore:function(t,n){for(var e,r,i=this,o=[i],u=-1;i=o.pop();)if(t.call(n,i,++u,this),e=i.children)for(r=e.length-1;r>=0;--r)o.push(e[r]);return this},find:function(t,n){let e=-1;for(const r of this)if(t.call(n,r,++e,this))return r},sum:function(t){return this.eachAfter((function(n){for(var e=+t(n.data)||0,r=n.children,i=r&&r.length;--i>=0;)e+=r[i].value;n.value=e}))},sort:function(t){return this.eachBefore((function(n){n.children&&n.children.sort(t)}))},path:function(t){for(var n=this,e=function(t,n){if(t===n)return t;var e=t.ancestors(),r=n.ancestors(),i=null;t=e.pop(),n=r.pop();for(;t===n;)i=t,t=e.pop(),n=r.pop();return i}(n,t),r=[n];n!==e;)n=n.parent,r.push(n);for(var i=r.length;t!==e;)r.splice(i,0,t),t=t.parent;return r},ancestors:function(){for(var t=this,n=[t];t=t.parent;)n.push(t);return n},descendants:function(){return Array.from(this)},leaves:function(){var t=[];return this.eachBefore((function(n){n.children||t.push(n)})),t},links:function(){var t=this,n=[];return t.each((function(e){e!==t&&n.push({source:e.parent,target:e})})),n},copy:function(){return Dt(this).eachBefore(zt)},[Symbol.iterator]:function*(){var t,n,e,r,i=this,o=[i];do{for(t=o.reverse(),o=[];i=t.pop();)if(yield i,n=i.children)for(e=0,r=n.length;e<r;++e)o.push(n[e])}while(o.length)}};var $t=Math.sqrt(50),Vt=Math.sqrt(10),Yt=Math.sqrt(2);function Ft(t,n,e){var r=(n-t)/Math.max(0,e),i=Math.floor(Math.log(r)/Math.LN10),o=r/Math.pow(10,i);return i>=0?(o>=$t?10:o>=Vt?5:o>=Yt?2:1)*Math.pow(10,i):-Math.pow(10,-i)/(o>=$t?10:o>=Vt?5:o>=Yt?2:1)}function Ut(t){let n=t,e=t,r=t;function i(t,n,i=0,o=t.length){if(i<o){if(0!==e(n,n))return o;do{const e=i+o>>>1;r(t[e],n)<0?i=e+1:o=e}while(i<o)}return i}return 2!==t.length&&(n=(n,e)=>t(n)-e,e=Pt,r=(n,e)=>Pt(t(n),e)),{left:i,center:function(t,e,r=0,o=t.length){const u=i(t,e,r,o-1);return u>r&&n(t[u-1],e)>-n(t[u],e)?u-1:u},right:function(t,n,i=0,o=t.length){if(i<o){if(0!==e(n,n))return o;do{const e=i+o>>>1;r(t[e],n)<=0?i=e+1:o=e}while(i<o)}return i}}}const Zt=Ut(Pt),Gt=Zt.right,Kt=(Zt.left,Ut((function(t){return null===t?NaN:+t})).center,Gt);function Wt(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function Jt(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function Qt(){}var tn=.7,nn=1/tn,en="\\s*([+-]?\\d+)\\s*",rn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",on="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",un=/^#([0-9a-f]{3,8})$/,an=new RegExp("^rgb\\("+[en,en,en]+"\\)$"),ln=new RegExp("^rgb\\("+[on,on,on]+"\\)$"),sn=new RegExp("^rgba\\("+[en,en,en,rn]+"\\)$"),cn=new RegExp("^rgba\\("+[on,on,on,rn]+"\\)$"),hn=new RegExp("^hsl\\("+[rn,on,on]+"\\)$"),fn=new RegExp("^hsla\\("+[rn,on,on,rn]+"\\)$"),pn={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};function dn(){return this.rgb().formatHex()}function gn(){return this.rgb().formatRgb()}function vn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=un.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?yn(n):3===e?new bn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?mn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?mn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=an.exec(t))?new bn(n[1],n[2],n[3],1):(n=ln.exec(t))?new bn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=sn.exec(t))?mn(n[1],n[2],n[3],n[4]):(n=cn.exec(t))?mn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=hn.exec(t))?Nn(n[1],n[2]/100,n[3]/100,1):(n=fn.exec(t))?Nn(n[1],n[2]/100,n[3]/100,n[4]):pn.hasOwnProperty(t)?yn(pn[t]):"transparent"===t?new bn(NaN,NaN,NaN,0):null}function yn(t){return new bn(t>>16&255,t>>8&255,255&t,1)}function mn(t,n,e,r){return r<=0&&(t=n=e=NaN),new bn(t,n,e,r)}function wn(t){return t instanceof Qt||(t=vn(t)),t?new bn((t=t.rgb()).r,t.g,t.b,t.opacity):new bn}function _n(t,n,e,r){return 1===arguments.length?wn(t):new bn(t,n,e,null==r?1:r)}function bn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function xn(){return"#"+An(this.r)+An(this.g)+An(this.b)}function Mn(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function An(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function Nn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new En(t,n,e,r)}function kn(t){if(t instanceof En)return new En(t.h,t.s,t.l,t.opacity);if(t instanceof Qt||(t=vn(t)),!t)return new En;if(t instanceof En)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,l=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=l<.5?o+i:2-o-i,u*=60):a=l>0&&l<1?0:u,new En(u,a,l,t.opacity)}function En(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Sn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function Cn(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}Wt(Qt,vn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:dn,formatHex:dn,formatHsl:function(){return kn(this).formatHsl()},formatRgb:gn,toString:gn}),Wt(bn,_n,Jt(Qt,{brighter:function(t){return t=null==t?nn:Math.pow(nn,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?tn:Math.pow(tn,t),new bn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:xn,formatHex:xn,formatRgb:Mn,toString:Mn})),Wt(En,(function(t,n,e,r){return 1===arguments.length?kn(t):new En(t,n,e,null==r?1:r)}),Jt(Qt,{brighter:function(t){return t=null==t?nn:Math.pow(nn,t),new En(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?tn:Math.pow(tn,t),new En(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new bn(Sn(t>=240?t-240:t+120,i,r),Sn(t,i,r),Sn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const jn=t=>()=>t;function qn(t,n){return function(e){return t+e*n}}function On(t){return 1==(t=+t)?Pn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):jn(isNaN(n)?e:n)}}function Pn(t,n){var e=n-t;return e?qn(t,e):jn(isNaN(t)?n:t)}const Hn=function t(n){var e=On(n);function r(t,n){var r=e((t=_n(t)).r,(n=_n(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Pn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function Ln(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=_n(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}Ln((function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return Cn((e-r/n)*n,u,i,o,a)}})),Ln((function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return Cn((e-r/n)*n,i,o,u,a)}}));function Tn(t,n){var e,r=n?n.length:0,i=t?Math.min(r,t.length):0,o=new Array(i),u=new Array(r);for(e=0;e<i;++e)o[e]=Vn(t[e],n[e]);for(;e<r;++e)u[e]=n[e];return function(t){for(e=0;e<i;++e)u[e]=o[e](t);return u}}function Dn(t,n){var e=new Date;return t=+t,n=+n,function(r){return e.setTime(t*(1-r)+n*r),e}}function Bn(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}function Xn(t,n){var e,r={},i={};for(e in null!==t&&"object"==typeof t||(t={}),null!==n&&"object"==typeof n||(n={}),n)e in t?r[e]=Vn(t[e],n[e]):i[e]=n[e];return function(t){for(e in r)i[e]=r[e](t);return i}}var zn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,Rn=new RegExp(zn.source,"g");function In(t,n){var e,r,i,o=zn.lastIndex=Rn.lastIndex=0,u=-1,a=[],l=[];for(t+="",n+="";(e=zn.exec(t))&&(r=Rn.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,l.push({i:u,x:Bn(e,r)})),o=Rn.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?l[0]?function(t){return function(n){return t(n)+""}}(l[0].x):function(t){return function(){return t}}(n):(n=l.length,function(t){for(var e,r=0;r<n;++r)a[(e=l[r]).i]=e.x(t);return a.join("")})}function $n(t,n){n||(n=[]);var e,r=t?Math.min(n.length,t.length):0,i=n.slice();return function(o){for(e=0;e<r;++e)i[e]=t[e]*(1-o)+n[e]*o;return i}}function Vn(t,n){var e,r,i=typeof n;return null==n||"boolean"===i?jn(n):("number"===i?Bn:"string"===i?(e=vn(n))?(n=e,Hn):In:n instanceof vn?Hn:n instanceof Date?Dn:(r=n,!ArrayBuffer.isView(r)||r instanceof DataView?Array.isArray(n)?Tn:"function"!=typeof n.valueOf&&"function"!=typeof n.toString||isNaN(n)?Xn:Bn:$n))(t,n)}function Yn(t,n){return t=+t,n=+n,function(e){return Math.round(t*(1-e)+n*e)}}function Fn(t){return+t}var Un=[0,1];function Zn(t){return t}function Gn(t,n){return(n-=t=+t)?function(e){return(e-t)/n}:(e=isNaN(n)?NaN:.5,function(){return e});var e}function Kn(t,n,e){var r=t[0],i=t[1],o=n[0],u=n[1];return i<r?(r=Gn(i,r),o=e(u,o)):(r=Gn(r,i),o=e(o,u)),function(t){return o(r(t))}}function Wn(t,n,e){var r=Math.min(t.length,n.length)-1,i=new Array(r),o=new Array(r),u=-1;for(t[r]<t[0]&&(t=t.slice().reverse(),n=n.slice().reverse());++u<r;)i[u]=Gn(t[u],t[u+1]),o[u]=e(n[u],n[u+1]);return function(n){var e=Kt(t,n,1,r)-1;return o[e](i[e](n))}}function Jn(t,n){return n.domain(t.domain()).range(t.range()).interpolate(t.interpolate()).clamp(t.clamp()).unknown(t.unknown())}function Qn(){var t,n,e,r,i,o,u=Un,a=Un,l=Vn,s=Zn;function c(){var t,n,e,l=Math.min(u.length,a.length);return s!==Zn&&(t=u[0],n=u[l-1],t>n&&(e=t,t=n,n=e),s=function(e){return Math.max(t,Math.min(n,e))}),r=l>2?Wn:Kn,i=o=null,h}function h(n){return null==n||isNaN(n=+n)?e:(i||(i=r(u.map(t),a,l)))(t(s(n)))}return h.invert=function(e){return s(n((o||(o=r(a,u.map(t),Bn)))(e)))},h.domain=function(t){return arguments.length?(u=Array.from(t,Fn),c()):u.slice()},h.range=function(t){return arguments.length?(a=Array.from(t),c()):a.slice()},h.rangeRound=function(t){return a=Array.from(t),l=Yn,c()},h.clamp=function(t){return arguments.length?(s=!!t||Zn,c()):s!==Zn},h.interpolate=function(t){return arguments.length?(l=t,c()):l},h.unknown=function(t){return arguments.length?(e=t,h):e},function(e,r){return t=e,n=r,c()}}function te(){return Qn()(Zn,Zn)}function ne(t,n){switch(arguments.length){case 0:break;case 1:this.range(t);break;default:this.range(n).domain(t)}return this}function ee(t,n,e,r){var i,o=function(t,n,e){var r=Math.abs(n-t)/Math.max(0,e),i=Math.pow(10,Math.floor(Math.log(r)/Math.LN10)),o=r/i;return o>=$t?i*=10:o>=Vt?i*=5:o>=Yt&&(i*=2),n<t?-i:i}(t,n,e);switch((r=xt(null==r?",f":r)).type){case"s":var u=Math.max(Math.abs(t),Math.abs(n));return null!=r.precision||isNaN(i=function(t,n){return Math.max(0,3*Math.max(-8,Math.min(8,Math.floor(wt(n)/3)))-wt(Math.abs(t)))}(o,u))||(r.precision=i),Ct(r,u);case"":case"e":case"g":case"p":case"r":null!=r.precision||isNaN(i=function(t,n){return t=Math.abs(t),n=Math.abs(n)-t,Math.max(0,wt(n)-wt(t))+1}(o,Math.max(Math.abs(t),Math.abs(n))))||(r.precision=i-("e"===r.type));break;case"f":case"%":null!=r.precision||isNaN(i=function(t){return Math.max(0,-wt(Math.abs(t)))}(o))||(r.precision=i-2*("%"===r.type))}return St(r)}function re(t){var n=t.domain;return t.ticks=function(t){var e=n();return function(t,n,e){var r,i,o,u,a=-1;if(e=+e,(t=+t)==(n=+n)&&e>0)return[t];if((r=n<t)&&(i=t,t=n,n=i),0===(u=Ft(t,n,e))||!isFinite(u))return[];if(u>0){let e=Math.round(t/u),r=Math.round(n/u);for(e*u<t&&++e,r*u>n&&--r,o=new Array(i=r-e+1);++a<i;)o[a]=(e+a)*u}else{u=-u;let e=Math.round(t*u),r=Math.round(n*u);for(e/u<t&&++e,r/u>n&&--r,o=new Array(i=r-e+1);++a<i;)o[a]=(e+a)/u}return r&&o.reverse(),o}(e[0],e[e.length-1],null==t?10:t)},t.tickFormat=function(t,e){var r=n();return ee(r[0],r[r.length-1],null==t?10:t,e)},t.nice=function(e){null==e&&(e=10);var r,i,o=n(),u=0,a=o.length-1,l=o[u],s=o[a],c=10;for(s<l&&(i=l,l=s,s=i,i=u,u=a,a=i);c-- >0;){if((i=Ft(l,s,e))===r)return o[u]=l,o[a]=s,n(o);if(i>0)l=Math.floor(l/i)*i,s=Math.ceil(s/i)*i;else{if(!(i<0))break;l=Math.ceil(l*i)/i,s=Math.floor(s*i)/i}r=i}return t},t}function ie(){var t=te();return t.copy=function(){return Jn(t,ie())},ne.apply(t,arguments),re(t)}function oe(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}var ue={value:()=>{}};function ae(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new le(r)}function le(t){this._=t}function se(t,n){return t.trim().split(/^|\s+/).map((function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function ce(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function he(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=ue,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}le.prototype=ae.prototype={constructor:le,on:function(t,n){var e,r=this._,i=se(t+"",r),o=-1,u=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=he(r[e],t.name,n);else if(null==n)for(e in r)r[e]=he(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=ce(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new le(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};const fe=ae;var pe,de,ge=0,ve=0,ye=0,me=0,we=0,_e=0,be="object"==typeof performance&&performance.now?performance:Date,xe="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Me(){return we||(xe(Ae),we=be.now()+_e)}function Ae(){we=0}function Ne(){this._call=this._time=this._next=null}function ke(t,n,e){var r=new Ne;return r.restart(t,n,e),r}function Ee(){we=(me=be.now())+_e,ge=ve=0;try{!function(){Me(),++ge;for(var t,n=pe;n;)(t=we-n._time)>=0&&n._call.call(void 0,t),n=n._next;--ge}()}finally{ge=0,function(){var t,n,e=pe,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:pe=n);de=t,Ce(r)}(),we=0}}function Se(){var t=be.now(),n=t-me;n>1e3&&(_e-=n,me=t)}function Ce(t){ge||(ve&&(ve=clearTimeout(ve)),t-we>24?(t<1/0&&(ve=setTimeout(Ee,t-be.now()-_e)),ye&&(ye=clearInterval(ye))):(ye||(me=be.now(),ye=setInterval(Se,1e3)),ge=1,xe(Ee)))}function je(t,n,e){var r=new Ne;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Ne.prototype=ke.prototype={constructor:Ne,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Me():+e)+(null==n?0:+n),this._next||de===this||(de?de._next=this:pe=this,de=this),this._call=t,this._time=e,Ce()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ce())}};var qe=fe("start","end","cancel","interrupt"),Oe=[];function Pe(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(o){var s,c,h,f;if(1!==e.state)return l();for(s in i)if((f=i[s]).name===e.name){if(3===f.state)return je(u);4===f.state?(f.state=6,f.timer.stop(),f.on.call("interrupt",t,t.__data__,f.index,f.group),delete i[s]):+s<n&&(f.state=6,f.timer.stop(),f.on.call("cancel",t,t.__data__,f.index,f.group),delete i[s])}if(je((function(){3===e.state&&(e.state=4,e.timer.restart(a,e.delay,e.time),a(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(h=e.tween.length),s=0,c=-1;s<h;++s)(f=e.tween[s].value.call(t,t.__data__,e.index,e.group))&&(r[++c]=f);r.length=c+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(l),e.state=5,1),o=-1,u=r.length;++o<u;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),l())}function l(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=ke(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:qe,tween:Oe,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function He(t,n){var e=Te(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function Le(t,n){var e=Te(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Te(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}var De,Be=180/Math.PI,Xe={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function ze(t,n,e,r,i,o){var u,a,l;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(l=t*e+n*r)&&(e-=t*l,r-=n*l),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,l/=a),t*r<n*e&&(t=-t,n=-n,l=-l,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Be,skewX:Math.atan(l)*Be,scaleX:u,scaleY:a}}function Re(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],l=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var l=u.push("translate(",null,n,null,e);a.push({i:l-4,x:Bn(t,i)},{i:l-2,x:Bn(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,l),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Bn(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,l),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Bn(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,l),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Bn(t,e)},{i:a-2,x:Bn(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,l),o=u=null,function(t){for(var n,e=-1,r=l.length;++e<r;)a[(n=l[e]).i]=n.x(t);return a.join("")}}}var Ie=Re((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Xe:ze(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),$e=Re((function(t){return null==t?Xe:(De||(De=document.createElementNS("http://www.w3.org/2000/svg","g")),De.setAttribute("transform",t),(t=De.transform.baseVal.consolidate())?ze((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Xe)}),", ",")",")");function Ve(t,n){var e,r;return function(){var i=Le(this,t),o=i.tween;if(o!==e)for(var u=0,a=(r=e=o).length;u<a;++u)if(r[u].name===n){(r=r.slice()).splice(u,1);break}i.tween=r}}function Ye(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Le(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},l=0,s=i.length;l<s;++l)if(i[l].name===n){i[l]=a;break}l===s&&i.push(a)}o.tween=i}}function Fe(t,n,e){var r=t._id;return t.each((function(){var t=Le(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Te(t,r).value[n]}}function Ue(t,n){var e;return("number"==typeof n?Bn:n instanceof vn?Hn:(e=vn(n))?(n=e,Hn):In)(t,n)}function Ze(t){return function(){this.removeAttribute(t)}}function Ge(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Ke(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}}function We(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}function Je(t,n,e){var r,i,o;return function(){var u,a,l=e(this);if(null!=l)return(u=this.getAttribute(t))===(a=l+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,l));this.removeAttribute(t)}}function Qe(t,n,e){var r,i,o;return function(){var u,a,l=e(this);if(null!=l)return(u=this.getAttributeNS(t.space,t.local))===(a=l+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,l));this.removeAttributeNS(t.space,t.local)}}function tr(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function nr(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function er(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&nr(t,i)),e}return i._value=n,i}function rr(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&tr(t,i)),e}return i._value=n,i}function ir(t,n){return function(){He(this,t).delay=+n.apply(this,arguments)}}function or(t,n){return n=+n,function(){He(this,t).delay=n}}function ur(t,n){return function(){Le(this,t).duration=+n.apply(this,arguments)}}function ar(t,n){return n=+n,function(){Le(this,t).duration=n}}function lr(t,n){if("function"!=typeof n)throw new Error;return function(){Le(this,t).ease=n}}function sr(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?He:Le;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var cr=vt.prototype.constructor;function hr(t){return function(){this.style.removeProperty(t)}}function fr(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pr(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&fr(t,o,e)),r}return o._value=n,o}function dr(t){return function(n){this.textContent=t.call(this,n)}}function gr(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&dr(r)),n}return r._value=t,r}var vr=0;function yr(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function mr(){return++vr}var wr=vt.prototype;yr.prototype=function(t){return vt().transition(t)}.prototype={constructor:yr,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=r(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var l,s,c=i[a],h=c.length,f=u[a]=new Array(h),p=0;p<h;++p)(l=c[p])&&(s=t.call(l,l.__data__,p,c))&&("__data__"in l&&(s.__data__=l.__data__),f[p]=s,Pe(f[p],n,e,p,f,Te(l,e)));return new yr(u,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],l=0;l<i;++l)for(var s,c=r[l],h=c.length,f=0;f<h;++f)if(s=c[f]){for(var p,d=t.call(s,s.__data__,f,c),g=Te(s,e),v=0,y=d.length;v<y;++v)(p=d[v])&&Pe(p,n,e,v,d,g);o.push(d),a.push(s)}return new yr(o,a,n,e)},selectChild:wr.selectChild,selectChildren:wr.selectChildren,filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],l=u.length,s=r[i]=[],c=0;c<l;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&s.push(o);return new yr(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var l,s=n[a],c=e[a],h=s.length,f=u[a]=new Array(h),p=0;p<h;++p)(l=s[p]||c[p])&&(f[p]=l);for(;a<r;++a)u[a]=n[a];return new yr(u,this._parents,this._name,this._id)},selection:function(){return new cr(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=mr(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],l=a.length,s=0;s<l;++s)if(u=a[s]){var c=Te(u,n);Pe(u,t,e,s,a,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new yr(r,this._parents,t,e)},call:wr.call,nodes:wr.nodes,node:wr.node,size:wr.size,empty:wr.empty,each:wr.each,on:function(t,n){var e=this._id;return arguments.length<2?Te(this.node(),e).on.on(t):this.each(sr(e,t,n))},attr:function(t,n){var e=M(t),r="transform"===e?$e:Ue;return this.attrTween(t,"function"==typeof n?(e.local?Qe:Je)(e,r,Fe(this,"attr."+t,n)):null==n?(e.local?Ge:Ze)(e):(e.local?We:Ke)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=M(t);return this.tween(e,(r.local?er:rr)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?Ie:Ue;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=H(this,t),u=(this.style.removeProperty(t),H(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,hr(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var u=H(this,t),a=e(this),l=a+"";return null==a&&(this.style.removeProperty(t),l=a=H(this,t)),u===l?null:u===r&&l===i?o:(i=l,o=n(r=u,a))}}(t,r,Fe(this,"style."+t,n))).each(function(t,n){var e,r,i,o,u="style."+n,a="end."+u;return function(){var l=Le(this,t),s=l.on,c=null==l.value[u]?o||(o=hr(n)):void 0;s===e&&i===c||(r=(e=s).copy()).on(a,i=c),l.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var u=H(this,t);return u===o?null:u===r?i:i=n(r=u,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,pr(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(Fe(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,gr(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Te(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?Ve:Ye)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ir:or)(n,t)):Te(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ur:ar)(n,t)):Te(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(lr(n,t)):Te(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Le(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,u){var a={value:u},l={value:function(){0==--i&&o()}};e.each((function(){var e=Le(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(l)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:wr[Symbol.iterator]};var _r={time:null,delay:0,duration:250,ease:oe};function br(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function xr(){let t=960,n=null,e=18,r=null,i=null,o="",u=750,a=oe,l=!1,s=!1,c=null,h=null,f=0,p=null,d=null,g=!1,v=!1,y=!1,m=null,w=!1,_=null,b=function(t){return t.data.n||t.data.name},x=function(t){return"v"in t?t.v:t.value},M=function(t){return t.c||t.children},A=function(t){return t.data.l||t.data.libtype},N=function(t){return"d"in t.data?t.data.d:t.data.delta},k=function(t,n,e){d=()=>{p&&(p.textContent="search: "+n+" of "+e+" total samples ( "+St(".3f")(n/e*100,3)+"%)")},d()};const E=k;let S=(t,n,e=!1)=>{if(!n)return!1;let r=b(t);e&&(n=n.toLowerCase(),r=r.toLowerCase());const i=new RegExp(n);return void 0!==r&&r&&r.match(i)};const C=S;let j=function(t){p&&(t?p.textContent=t:"function"==typeof d?d():p.textContent="")};const q=j;let O=function(t){return b(t)+" ("+St(".3f")(100*(t.x1-t.x0),3)+"%, "+x(t)+" samples)"},P=function(t){return t.highlight?"#E600E6":function(t,n){let e=_||"warm";_||void 0===n||""===n||(e="red",void 0!==t&&t&&t.match(/::/)&&(e="yellow"),"kernel"===n?e="orange":"jit"===n?e="green":"inlined"===n&&(e="aqua"));const r=function(t){let n=0;if(t){const e=t.split("`");e.length>1&&(t=e[e.length-1]),n=function(t){let n=0,e=0,r=1;if(t){for(let i=0;i<t.length&&!(i>6);i++)n+=r*(t.charCodeAt(i)%10),e+=9*r,r*=.7;e>0&&(n/=e)}return n}(t=t.split("(")[0])}return n}(t);return function(t,n){let e,r,i;return"red"===t?(e=200+Math.round(55*n),r=50+Math.round(80*n),i=r):"orange"===t?(e=190+Math.round(65*n),r=90+Math.round(65*n),i=0):"yellow"===t?(e=175+Math.round(55*n),r=e,i=50+Math.round(20*n)):"green"===t?(e=50+Math.round(60*n),r=200+Math.round(55*n),i=e):"pastelgreen"===t?(e=163+Math.round(75*n),r=195+Math.round(49*n),i=72+Math.round(149*n)):"blue"===t?(e=91+Math.round(126*n),r=156+Math.round(76*n),i=221+Math.round(26*n)):"aqua"===t?(e=50+Math.round(60*n),r=165+Math.round(55*n),i=r):"cold"===t?(e=0+Math.round(55*(1-n)),r=0+Math.round(230*(1-n)),i=200+Math.round(55*n)):(e=200+Math.round(55*n),r=0+Math.round(230*(1-n)),i=0+Math.round(55*(1-n))),"rgb("+e+","+r+","+i+")"}(e,r)}(b(t),A(t))};const H=P;function L(t){t.data.fade=!1,t.data.hide=!1,t.children&&t.children.forEach(L)}function T(t){t.parent&&(t.parent.data.fade=!0,T(t.parent))}function D(t){if(i&&i.hide(),function(t){let n,e,r,i=t,o=i.parent;for(;o;){for(n=o.children,e=n.length;e--;)r=n[e],r!==i&&(r.data.hide=!0);i=o,o=i.parent}}(t),L(t),T(t),I(),y){const n=yt(this).select("svg")._groups[0][0].parentNode.offsetTop,r=(window.innerHeight-n)/e,i=(t.height-r+10)*e;window.scrollTo({top:n+i,left:0,behavior:"smooth"})}"function"==typeof c&&c(t)}function B(t,n){if(t.id===n)return t;{const e=M(t);if(e)for(let t=0;t<e.length;t++){const r=B(e[t],n);if(r)return r}}}function X(t){t.highlight=!1,M(t)&&M(t).forEach((function(t){X(t)}))}function z(t,n){return"function"==typeof l?l(t,n):l?Pt(b(t),b(n)):void 0}const R=Lt();function I(){r.each((function(r){const o=ie().range([0,t]),c=ie().range([0,e]);V(r),l&&r.sort(z),R(r);const p=t/(r.x1-r.x0);function d(t){return(t.x1-t.x0)*p}const g=function(n){let e=n.descendants();if(f>0){const r=t/(n.x1-n.x0);e=e.filter((function(t){return(t.x1-t.x0)*r>f}))}return e}(r),y=yt(this).select("svg");y.attr("width",t);let w=y.selectAll("g").data(g,(function(t){return t.id}));if(!n||v){const t=Math.max.apply(null,g.map((function(t){return t.depth})));n=(t+3)*e,n<m&&(n=m),y.attr("height",n)}w.transition().duration(u).ease(a).attr("transform",(function(t){return"translate("+o(t.x0)+","+(s?c(t.depth):n-c(t.depth)-e)+")"})),w.select("rect").transition().duration(u).ease(a).attr("width",d);const _=w.enter().append("svg:g").attr("transform",(function(t){return"translate("+o(t.x0)+","+(s?c(t.depth):n-c(t.depth)-e)+")"}));_.append("svg:rect").transition().delay(u/2).attr("width",d),i||_.append("svg:title"),_.append("foreignObject").append("xhtml:div"),w=y.selectAll("g").data(g,(function(t){return t.id})),w.attr("width",d).attr("height",(function(t){return e})).attr("name",(function(t){return b(t)})).attr("class",(function(t){return t.data.fade?"frame fade":"frame"})),w.select("rect").attr("height",(function(t){return e})).attr("fill",(function(t){return P(t)})),i||w.select("title").text(O),w.select("foreignObject").attr("width",d).attr("height",(function(t){return e})).select("div").attr("class","d3-flame-graph-label").style("display",(function(t){return d(t)<35?"none":"block"})).transition().delay(u).text(b),w.on("click",((t,n)=>{D(n)})),w.exit().remove(),w.on("mouseover",(function(t,n){i&&i.show(n,this),j(O(n)),"function"==typeof h&&h(n)})).on("mouseout",(function(){i&&i.hide(),j(null)}))}))}function $(t,n){n.forEach((function(n){const e=t.find((function(t){return t.name===n.name}));e?(e.value+=n.value,n.children&&(e.children||(e.children=[]),$(e.children,n.children))):t.push(n)}))}function V(t){let n,e,r,i,o,u,a,l;const s=[],c=[],h=[],f=!g;let p=t.data;for(p.hide?(t.value=0,e=t.children,e&&h.push(e)):(t.value=p.fade?0:x(p),s.push(t));n=s.pop();)if(e=n.children,e&&(o=e.length)){for(i=0;o--;)a=e[o],p=a.data,p.hide?(a.value=0,r=a.children,r&&h.push(r)):(p.fade?a.value=0:(l=x(p),a.value=l,i+=l),s.push(a));f&&n.value&&(n.value-=i),c.push(e)}for(o=c.length;o--;){for(e=c[o],i=0,u=e.length;u--;)i+=e[u].value;e[0].parent.value+=i}for(;h.length;)for(e=h.pop(),u=e.length;u--;)a=e[u],a.value=0,r=a.children,r&&h.push(r)}function Y(){r.datum((t=>{if("Node"!==t.constructor.name){const n=Dt(t,M);return function(t){let n=0;!function(t,n){n(t);let e=t.children;if(e){const t=[e];let r,i,o;for(;t.length;)for(e=t.pop(),r=e.length;r--;)i=e[r],n(i),o=i.children,o&&t.push(o)}}(t,(function(t){t.id=n++}))}(n),V(n),n.originalValue=n.value,w&&n.eachAfter((t=>{let n=N(t);const e=t.children;let r=e&&e.length;for(;--r>=0;)n+=e[r].delta;t.delta=n})),n}}))}function F(e){if(!arguments.length)return F;r=e,Y(),r.each((function(e){if(0===yt(this).select("svg").size()){const e=yt(this).append("svg:svg").attr("width",t).attr("class","partition d3-flame-graph");n&&(n<m&&(n=m),e.attr("height",n)),e.append("svg:text").attr("class","title").attr("text-anchor","middle").attr("y","25").attr("x",t/2).attr("fill","#808080").text(o),i&&e.call(i)}})),I()}return F.height=function(t){return arguments.length?(n=t,F):n},F.minHeight=function(t){return arguments.length?(m=t,F):m},F.width=function(n){return arguments.length?(t=n,F):t},F.cellHeight=function(t){return arguments.length?(e=t,F):e},F.tooltip=function(t){return arguments.length?("function"==typeof t&&(i=t),F):i},F.title=function(t){return arguments.length?(o=t,F):o},F.transitionDuration=function(t){return arguments.length?(u=t,F):u},F.transitionEase=function(t){return arguments.length?(a=t,F):a},F.sort=function(t){return arguments.length?(l=t,F):l},F.inverted=function(t){return arguments.length?(s=t,F):s},F.computeDelta=function(t){return arguments.length?(w=t,F):w},F.setLabelHandler=function(t){return arguments.length?(O=t,F):O},F.label=F.setLabelHandler,F.search=function(t){const n=[];let e=0,i=0;r.each((function(r){const o=function(t,n){const e=[];let r=0;return function t(i,o){let u=!1;S(i,n)?(i.highlight=!0,u=!0,o||(r+=x(i)),e.push(i)):i.highlight=!1,M(i)&&M(i).forEach((function(n){t(n,o||u)}))}(t,!1),[e,r]}(r,t);n.push(...o[0]),e+=o[1],i+=r.originalValue})),k(n,e,i),I()},F.findById=function(t){if(null==t)return null;let n=null;return r.each((function(e){null===n&&(n=B(e,t))})),n},F.clear=function(){j(null),r.each((function(t){X(t),I()}))},F.zoomTo=function(t){D(t)},F.resetZoom=function(){r.each((function(t){D(t)}))},F.onClick=function(t){return arguments.length?(c=t,F):c},F.onHover=function(t){return arguments.length?(h=t,F):h},F.merge=function(t){return r?(this.resetZoom(),d=null,j(null),r.datum((n=>($([n.data],[t]),n.data))),Y(),I(),F):F},F.update=function(t){return r?(t&&(r.datum(t),Y()),I(),F):F},F.destroy=function(){return r?(i&&(i.hide(),"function"==typeof i.destroy&&i.destroy()),r.selectAll("svg").remove(),F):F},F.setColorMapper=function(t){return arguments.length?(P=n=>{const e=H(n);return t(n,e)},F):(P=H,F)},F.color=F.setColorMapper,F.setColorHue=function(t){return arguments.length?(_=t,F):(_=null,F)},F.minFrameSize=function(t){return arguments.length?(f=t,F):f},F.setDetailsElement=function(t){return arguments.length?(p=t,F):p},F.details=F.setDetailsElement,F.selfValue=function(t){return arguments.length?(g=t,F):g},F.resetHeightOnZoom=function(t){return arguments.length?(v=t,F):v},F.scrollOnZoom=function(t){return arguments.length?(y=t,F):y},F.getName=function(t){return arguments.length?(b=t,F):b},F.getValue=function(t){return arguments.length?(x=t,F):x},F.getChildren=function(t){return arguments.length?(M=t,F):M},F.getLibtype=function(t){return arguments.length?(A=t,F):A},F.getDelta=function(t){return arguments.length?(N=t,F):N},F.setSearchHandler=function(t){return arguments.length?(k=t,F):(k=E,F)},F.setDetailsHandler=function(t){return arguments.length?(j=t,F):(j=q,F)},F.setSearchMatch=function(t){return arguments.length?(S=t,F):(S=C,F)},F}return vt.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},vt.prototype.transition=function(t){var n,e;t instanceof yr?(n=t._id,t=t._name):(n=mr(),(e=_r).time=Me(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],l=a.length,s=0;s<l;++s)(u=a[s])&&Pe(u,t,n,s,a,e||br(u,n));return new yr(r,this._parents,t,n)},n=n.default})()}));
</script>
    <script>
!function(t,n){"object"==typeof exports&&"object"==typeof module?module.exports=n():"function"==typeof define&&define.amd?define([],n):"object"==typeof exports?exports.flamegraph=n():(t.flamegraph=t.flamegraph||{},t.flamegraph.tooltip=n())}(self,(function(){return(()=>{"use strict";var t={d:(n,e)=>{for(var r in e)t.o(e,r)&&!t.o(n,r)&&Object.defineProperty(n,r,{enumerable:!0,get:e[r]})},o:(t,n)=>Object.prototype.hasOwnProperty.call(t,n),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},n={};function e(){}function r(t){return null==t?e:function(){return this.querySelector(t)}}function i(t){return null==t?[]:Array.isArray(t)?t:Array.from(t)}function o(){return[]}function u(t){return null==t?o:function(){return this.querySelectorAll(t)}}function a(t){return function(){return this.matches(t)}}function s(t){return function(n){return n.matches(t)}}t.r(n),t.d(n,{defaultFlamegraphTooltip:()=>Ae});var l=Array.prototype.find;function c(){return this.firstElementChild}var f=Array.prototype.filter;function h(){return Array.from(this.children)}function p(t){return new Array(t.length)}function d(t,n){this.ownerDocument=t.ownerDocument,this.namespaceURI=t.namespaceURI,this._next=null,this._parent=t,this.__data__=n}function y(t){return function(){return t}}function v(t,n,e,r,i,o){for(var u,a=0,s=n.length,l=o.length;a<l;++a)(u=n[a])?(u.__data__=o[a],r[a]=u):e[a]=new d(t,o[a]);for(;a<s;++a)(u=n[a])&&(i[a]=u)}function g(t,n,e,r,i,o,u){var a,s,l,c=new Map,f=n.length,h=o.length,p=new Array(f);for(a=0;a<f;++a)(s=n[a])&&(p[a]=l=u.call(s,s.__data__,a,n)+"",c.has(l)?i[a]=s:c.set(l,s));for(a=0;a<h;++a)l=u.call(t,o[a],a,o)+"",(s=c.get(l))?(r[a]=s,s.__data__=o[a],c.delete(l)):e[a]=new d(t,o[a]);for(a=0;a<f;++a)(s=n[a])&&c.get(p[a])===s&&(i[a]=s)}function _(t){return t.__data__}function m(t){return"object"==typeof t&&"length"in t?t:Array.from(t)}function w(t,n){return t<n?-1:t>n?1:t>=n?0:NaN}d.prototype={constructor:d,appendChild:function(t){return this._parent.insertBefore(t,this._next)},insertBefore:function(t,n){return this._parent.insertBefore(t,n)},querySelector:function(t){return this._parent.querySelector(t)},querySelectorAll:function(t){return this._parent.querySelectorAll(t)}};var b="http://www.w3.org/1999/xhtml";const x={svg:"http://www.w3.org/2000/svg",xhtml:b,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function A(t){var n=t+="",e=n.indexOf(":");return e>=0&&"xmlns"!==(n=t.slice(0,e))&&(t=t.slice(e+1)),x.hasOwnProperty(n)?{space:x[n],local:t}:t}function N(t){return function(){this.removeAttribute(t)}}function k(t){return function(){this.removeAttributeNS(t.space,t.local)}}function M(t,n){return function(){this.setAttribute(t,n)}}function E(t,n){return function(){this.setAttributeNS(t.space,t.local,n)}}function S(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttribute(t):this.setAttribute(t,e)}}function C(t,n){return function(){var e=n.apply(this,arguments);null==e?this.removeAttributeNS(t.space,t.local):this.setAttributeNS(t.space,t.local,e)}}function P(t){return t.ownerDocument&&t.ownerDocument.defaultView||t.document&&t||t.defaultView}function O(t){return function(){this.style.removeProperty(t)}}function q(t,n,e){return function(){this.style.setProperty(t,n,e)}}function j(t,n,e){return function(){var r=n.apply(this,arguments);null==r?this.style.removeProperty(t):this.style.setProperty(t,r,e)}}function T(t,n){return t.style.getPropertyValue(n)||P(t).getComputedStyle(t,null).getPropertyValue(n)}function X(t){return function(){delete this[t]}}function R(t,n){return function(){this[t]=n}}function I(t,n){return function(){var e=n.apply(this,arguments);null==e?delete this[t]:this[t]=e}}function L(t){return t.trim().split(/^|\s+/)}function D(t){return t.classList||new H(t)}function H(t){this._node=t,this._names=L(t.getAttribute("class")||"")}function Y(t,n){for(var e=D(t),r=-1,i=n.length;++r<i;)e.add(n[r])}function B(t,n){for(var e=D(t),r=-1,i=n.length;++r<i;)e.remove(n[r])}function $(t){return function(){Y(this,t)}}function V(t){return function(){B(this,t)}}function z(t,n){return function(){(n.apply(this,arguments)?Y:B)(this,t)}}function U(){this.textContent=""}function F(t){return function(){this.textContent=t}}function K(t){return function(){var n=t.apply(this,arguments);this.textContent=null==n?"":n}}function W(){this.innerHTML=""}function G(t){return function(){this.innerHTML=t}}function J(t){return function(){var n=t.apply(this,arguments);this.innerHTML=null==n?"":n}}function Q(){this.nextSibling&&this.parentNode.appendChild(this)}function Z(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function tt(t){return function(){var n=this.ownerDocument,e=this.namespaceURI;return e===b&&n.documentElement.namespaceURI===b?n.createElement(t):n.createElementNS(e,t)}}function nt(t){return function(){return this.ownerDocument.createElementNS(t.space,t.local)}}function et(t){var n=A(t);return(n.local?nt:tt)(n)}function rt(){return null}function it(){var t=this.parentNode;t&&t.removeChild(this)}function ot(){var t=this.cloneNode(!1),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function ut(){var t=this.cloneNode(!0),n=this.parentNode;return n?n.insertBefore(t,this.nextSibling):t}function at(t){return t.trim().split(/^|\s+/).map((function(t){var n="",e=t.indexOf(".");return e>=0&&(n=t.slice(e+1),t=t.slice(0,e)),{type:t,name:n}}))}function st(t){return function(){var n=this.__on;if(n){for(var e,r=0,i=-1,o=n.length;r<o;++r)e=n[r],t.type&&e.type!==t.type||e.name!==t.name?n[++i]=e:this.removeEventListener(e.type,e.listener,e.options);++i?n.length=i:delete this.__on}}}function lt(t,n,e){return function(){var r,i=this.__on,o=function(t){return function(n){t.call(this,n,this.__data__)}}(n);if(i)for(var u=0,a=i.length;u<a;++u)if((r=i[u]).type===t.type&&r.name===t.name)return this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),void(r.value=n);this.addEventListener(t.type,o,e),r={type:t.type,name:t.name,value:n,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ct(t,n,e){var r=P(t),i=r.CustomEvent;"function"==typeof i?i=new i(n,e):(i=r.document.createEvent("Event"),e?(i.initEvent(n,e.bubbles,e.cancelable),i.detail=e.detail):i.initEvent(n,!1,!1)),t.dispatchEvent(i)}function ft(t,n){return function(){return ct(this,t,n)}}function ht(t,n){return function(){return ct(this,t,n.apply(this,arguments))}}H.prototype={add:function(t){this._names.indexOf(t)<0&&(this._names.push(t),this._node.setAttribute("class",this._names.join(" ")))},remove:function(t){var n=this._names.indexOf(t);n>=0&&(this._names.splice(n,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(t){return this._names.indexOf(t)>=0}};var pt=[null];function dt(t,n){this._groups=t,this._parents=n}function yt(){return new dt([[document.documentElement]],pt)}dt.prototype=yt.prototype={constructor:dt,select:function(t){"function"!=typeof t&&(t=r(t));for(var n=this._groups,e=n.length,i=new Array(e),o=0;o<e;++o)for(var u,a,s=n[o],l=s.length,c=i[o]=new Array(l),f=0;f<l;++f)(u=s[f])&&(a=t.call(u,u.__data__,f,s))&&("__data__"in u&&(a.__data__=u.__data__),c[f]=a);return new dt(i,this._parents)},selectAll:function(t){t="function"==typeof t?function(t){return function(){return i(t.apply(this,arguments))}}(t):u(t);for(var n=this._groups,e=n.length,r=[],o=[],a=0;a<e;++a)for(var s,l=n[a],c=l.length,f=0;f<c;++f)(s=l[f])&&(r.push(t.call(s,s.__data__,f,l)),o.push(s));return new dt(r,o)},selectChild:function(t){return this.select(null==t?c:function(t){return function(){return l.call(this.children,t)}}("function"==typeof t?t:s(t)))},selectChildren:function(t){return this.selectAll(null==t?h:function(t){return function(){return f.call(this.children,t)}}("function"==typeof t?t:s(t)))},filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&l.push(o);return new dt(r,this._parents)},data:function(t,n){if(!arguments.length)return Array.from(this,_);var e=n?g:v,r=this._parents,i=this._groups;"function"!=typeof t&&(t=y(t));for(var o=i.length,u=new Array(o),a=new Array(o),s=new Array(o),l=0;l<o;++l){var c=r[l],f=i[l],h=f.length,p=m(t.call(c,c&&c.__data__,l,r)),d=p.length,w=a[l]=new Array(d),b=u[l]=new Array(d),x=s[l]=new Array(h);e(c,f,w,b,x,p,n);for(var A,N,k=0,M=0;k<d;++k)if(A=w[k]){for(k>=M&&(M=k+1);!(N=b[M])&&++M<d;);A._next=N||null}}return(u=new dt(u,r))._enter=a,u._exit=s,u},enter:function(){return new dt(this._enter||this._groups.map(p),this._parents)},exit:function(){return new dt(this._exit||this._groups.map(p),this._parents)},join:function(t,n,e){var r=this.enter(),i=this,o=this.exit();return"function"==typeof t?(r=t(r))&&(r=r.selection()):r=r.append(t+""),null!=n&&(i=n(i))&&(i=i.selection()),null==e?o.remove():e(o),r&&i?r.merge(i).order():i},merge:function(t){for(var n=t.selection?t.selection():t,e=this._groups,r=n._groups,i=e.length,o=r.length,u=Math.min(i,o),a=new Array(i),s=0;s<u;++s)for(var l,c=e[s],f=r[s],h=c.length,p=a[s]=new Array(h),d=0;d<h;++d)(l=c[d]||f[d])&&(p[d]=l);for(;s<i;++s)a[s]=e[s];return new dt(a,this._parents)},selection:function(){return this},order:function(){for(var t=this._groups,n=-1,e=t.length;++n<e;)for(var r,i=t[n],o=i.length-1,u=i[o];--o>=0;)(r=i[o])&&(u&&4^r.compareDocumentPosition(u)&&u.parentNode.insertBefore(r,u),u=r);return this},sort:function(t){function n(n,e){return n&&e?t(n.__data__,e.__data__):!n-!e}t||(t=w);for(var e=this._groups,r=e.length,i=new Array(r),o=0;o<r;++o){for(var u,a=e[o],s=a.length,l=i[o]=new Array(s),c=0;c<s;++c)(u=a[c])&&(l[c]=u);l.sort(n)}return new dt(i,this._parents).order()},call:function(){var t=arguments[0];return arguments[0]=this,t.apply(null,arguments),this},nodes:function(){return Array.from(this)},node:function(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r=t[n],i=0,o=r.length;i<o;++i){var u=r[i];if(u)return u}return null},size:function(){let t=0;for(const n of this)++t;return t},empty:function(){return!this.node()},each:function(t){for(var n=this._groups,e=0,r=n.length;e<r;++e)for(var i,o=n[e],u=0,a=o.length;u<a;++u)(i=o[u])&&t.call(i,i.__data__,u,o);return this},attr:function(t,n){var e=A(t);if(arguments.length<2){var r=this.node();return e.local?r.getAttributeNS(e.space,e.local):r.getAttribute(e)}return this.each((null==n?e.local?k:N:"function"==typeof n?e.local?C:S:e.local?E:M)(e,n))},style:function(t,n,e){return arguments.length>1?this.each((null==n?O:"function"==typeof n?j:q)(t,n,null==e?"":e)):T(this.node(),t)},property:function(t,n){return arguments.length>1?this.each((null==n?X:"function"==typeof n?I:R)(t,n)):this.node()[t]},classed:function(t,n){var e=L(t+"");if(arguments.length<2){for(var r=D(this.node()),i=-1,o=e.length;++i<o;)if(!r.contains(e[i]))return!1;return!0}return this.each(("function"==typeof n?z:n?$:V)(e,n))},text:function(t){return arguments.length?this.each(null==t?U:("function"==typeof t?K:F)(t)):this.node().textContent},html:function(t){return arguments.length?this.each(null==t?W:("function"==typeof t?J:G)(t)):this.node().innerHTML},raise:function(){return this.each(Q)},lower:function(){return this.each(Z)},append:function(t){var n="function"==typeof t?t:et(t);return this.select((function(){return this.appendChild(n.apply(this,arguments))}))},insert:function(t,n){var e="function"==typeof t?t:et(t),i=null==n?rt:"function"==typeof n?n:r(n);return this.select((function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)}))},remove:function(){return this.each(it)},clone:function(t){return this.select(t?ut:ot)},datum:function(t){return arguments.length?this.property("__data__",t):this.node().__data__},on:function(t,n,e){var r,i,o=at(t+""),u=o.length;if(!(arguments.length<2)){for(a=n?lt:st,r=0;r<u;++r)this.each(a(o[r],n,e));return this}var a=this.node().__on;if(a)for(var s,l=0,c=a.length;l<c;++l)for(r=0,s=a[l];r<u;++r)if((i=o[r]).type===s.type&&i.name===s.name)return s.value},dispatch:function(t,n){return this.each(("function"==typeof n?ht:ft)(t,n))},[Symbol.iterator]:function*(){for(var t=this._groups,n=0,e=t.length;n<e;++n)for(var r,i=t[n],o=0,u=i.length;o<u;++o)(r=i[o])&&(yield r)}};const vt=yt;var gt={value:()=>{}};function _t(){for(var t,n=0,e=arguments.length,r={};n<e;++n){if(!(t=arguments[n]+"")||t in r||/[\s.]/.test(t))throw new Error("illegal type: "+t);r[t]=[]}return new mt(r)}function mt(t){this._=t}function wt(t,n){return t.trim().split(/^|\s+/).map((function(t){var e="",r=t.indexOf(".");if(r>=0&&(e=t.slice(r+1),t=t.slice(0,r)),t&&!n.hasOwnProperty(t))throw new Error("unknown type: "+t);return{type:t,name:e}}))}function bt(t,n){for(var e,r=0,i=t.length;r<i;++r)if((e=t[r]).name===n)return e.value}function xt(t,n,e){for(var r=0,i=t.length;r<i;++r)if(t[r].name===n){t[r]=gt,t=t.slice(0,r).concat(t.slice(r+1));break}return null!=e&&t.push({name:n,value:e}),t}mt.prototype=_t.prototype={constructor:mt,on:function(t,n){var e,r=this._,i=wt(t+"",r),o=-1,u=i.length;if(!(arguments.length<2)){if(null!=n&&"function"!=typeof n)throw new Error("invalid callback: "+n);for(;++o<u;)if(e=(t=i[o]).type)r[e]=xt(r[e],t.name,n);else if(null==n)for(e in r)r[e]=xt(r[e],t.name,null);return this}for(;++o<u;)if((e=(t=i[o]).type)&&(e=bt(r[e],t.name)))return e},copy:function(){var t={},n=this._;for(var e in n)t[e]=n[e].slice();return new mt(t)},call:function(t,n){if((e=arguments.length-2)>0)for(var e,r,i=new Array(e),o=0;o<e;++o)i[o]=arguments[o+2];if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(o=0,e=(r=this._[t]).length;o<e;++o)r[o].value.apply(n,i)},apply:function(t,n,e){if(!this._.hasOwnProperty(t))throw new Error("unknown type: "+t);for(var r=this._[t],i=0,o=r.length;i<o;++i)r[i].value.apply(n,e)}};const At=_t;var Nt,kt,Mt=0,Et=0,St=0,Ct=0,Pt=0,Ot=0,qt="object"==typeof performance&&performance.now?performance:Date,jt="object"==typeof window&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(t){setTimeout(t,17)};function Tt(){return Pt||(jt(Xt),Pt=qt.now()+Ot)}function Xt(){Pt=0}function Rt(){this._call=this._time=this._next=null}function It(t,n,e){var r=new Rt;return r.restart(t,n,e),r}function Lt(){Pt=(Ct=qt.now())+Ot,Mt=Et=0;try{!function(){Tt(),++Mt;for(var t,n=Nt;n;)(t=Pt-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Mt}()}finally{Mt=0,function(){var t,n,e=Nt,r=1/0;for(;e;)e._call?(r>e._time&&(r=e._time),t=e,e=e._next):(n=e._next,e._next=null,e=t?t._next=n:Nt=n);kt=t,Ht(r)}(),Pt=0}}function Dt(){var t=qt.now(),n=t-Ct;n>1e3&&(Ot-=n,Ct=t)}function Ht(t){Mt||(Et&&(Et=clearTimeout(Et)),t-Pt>24?(t<1/0&&(Et=setTimeout(Lt,t-qt.now()-Ot)),St&&(St=clearInterval(St))):(St||(Ct=qt.now(),St=setInterval(Dt,1e3)),Mt=1,jt(Lt)))}function Yt(t,n,e){var r=new Rt;return n=null==n?0:+n,r.restart((e=>{r.stop(),t(e+n)}),n,e),r}Rt.prototype=It.prototype={constructor:Rt,restart:function(t,n,e){if("function"!=typeof t)throw new TypeError("callback is not a function");e=(null==e?Tt():+e)+(null==n?0:+n),this._next||kt===this||(kt?kt._next=this:Nt=this,kt=this),this._call=t,this._time=e,Ht()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ht())}};var Bt=At("start","end","cancel","interrupt"),$t=[];function Vt(t,n,e,r,i,o){var u=t.__transition;if(u){if(e in u)return}else t.__transition={};!function(t,n,e){var r,i=t.__transition;function o(t){e.state=1,e.timer.restart(u,e.delay,e.time),e.delay<=t&&u(t-e.delay)}function u(o){var l,c,f,h;if(1!==e.state)return s();for(l in i)if((h=i[l]).name===e.name){if(3===h.state)return Yt(u);4===h.state?(h.state=6,h.timer.stop(),h.on.call("interrupt",t,t.__data__,h.index,h.group),delete i[l]):+l<n&&(h.state=6,h.timer.stop(),h.on.call("cancel",t,t.__data__,h.index,h.group),delete i[l])}if(Yt((function(){3===e.state&&(e.state=4,e.timer.restart(a,e.delay,e.time),a(o))})),e.state=2,e.on.call("start",t,t.__data__,e.index,e.group),2===e.state){for(e.state=3,r=new Array(f=e.tween.length),l=0,c=-1;l<f;++l)(h=e.tween[l].value.call(t,t.__data__,e.index,e.group))&&(r[++c]=h);r.length=c+1}}function a(n){for(var i=n<e.duration?e.ease.call(null,n/e.duration):(e.timer.restart(s),e.state=5,1),o=-1,u=r.length;++o<u;)r[o].call(t,i);5===e.state&&(e.on.call("end",t,t.__data__,e.index,e.group),s())}function s(){for(var r in e.state=6,e.timer.stop(),delete i[n],i)return;delete t.__transition}i[n]=e,e.timer=It(o,0,e.time)}(t,e,{name:n,index:r,group:i,on:Bt,tween:$t,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:0})}function zt(t,n){var e=Ft(t,n);if(e.state>0)throw new Error("too late; already scheduled");return e}function Ut(t,n){var e=Ft(t,n);if(e.state>3)throw new Error("too late; already running");return e}function Ft(t,n){var e=t.__transition;if(!e||!(e=e[n]))throw new Error("transition not found");return e}function Kt(t,n){return t=+t,n=+n,function(e){return t*(1-e)+n*e}}var Wt,Gt=180/Math.PI,Jt={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function Qt(t,n,e,r,i,o){var u,a,s;return(u=Math.sqrt(t*t+n*n))&&(t/=u,n/=u),(s=t*e+n*r)&&(e-=t*s,r-=n*s),(a=Math.sqrt(e*e+r*r))&&(e/=a,r/=a,s/=a),t*r<n*e&&(t=-t,n=-n,s=-s,u=-u),{translateX:i,translateY:o,rotate:Math.atan2(n,t)*Gt,skewX:Math.atan(s)*Gt,scaleX:u,scaleY:a}}function Zt(t,n,e,r){function i(t){return t.length?t.pop()+" ":""}return function(o,u){var a=[],s=[];return o=t(o),u=t(u),function(t,r,i,o,u,a){if(t!==i||r!==o){var s=u.push("translate(",null,n,null,e);a.push({i:s-4,x:Kt(t,i)},{i:s-2,x:Kt(r,o)})}else(i||o)&&u.push("translate("+i+n+o+e)}(o.translateX,o.translateY,u.translateX,u.translateY,a,s),function(t,n,e,o){t!==n?(t-n>180?n+=360:n-t>180&&(t+=360),o.push({i:e.push(i(e)+"rotate(",null,r)-2,x:Kt(t,n)})):n&&e.push(i(e)+"rotate("+n+r)}(o.rotate,u.rotate,a,s),function(t,n,e,o){t!==n?o.push({i:e.push(i(e)+"skewX(",null,r)-2,x:Kt(t,n)}):n&&e.push(i(e)+"skewX("+n+r)}(o.skewX,u.skewX,a,s),function(t,n,e,r,o,u){if(t!==e||n!==r){var a=o.push(i(o)+"scale(",null,",",null,")");u.push({i:a-4,x:Kt(t,e)},{i:a-2,x:Kt(n,r)})}else 1===e&&1===r||o.push(i(o)+"scale("+e+","+r+")")}(o.scaleX,o.scaleY,u.scaleX,u.scaleY,a,s),o=u=null,function(t){for(var n,e=-1,r=s.length;++e<r;)a[(n=s[e]).i]=n.x(t);return a.join("")}}}var tn=Zt((function(t){const n=new("function"==typeof DOMMatrix?DOMMatrix:WebKitCSSMatrix)(t+"");return n.isIdentity?Jt:Qt(n.a,n.b,n.c,n.d,n.e,n.f)}),"px, ","px)","deg)"),nn=Zt((function(t){return null==t?Jt:(Wt||(Wt=document.createElementNS("http://www.w3.org/2000/svg","g")),Wt.setAttribute("transform",t),(t=Wt.transform.baseVal.consolidate())?Qt((t=t.matrix).a,t.b,t.c,t.d,t.e,t.f):Jt)}),", ",")",")");function en(t,n){var e,r;return function(){var i=Ut(this,t),o=i.tween;if(o!==e)for(var u=0,a=(r=e=o).length;u<a;++u)if(r[u].name===n){(r=r.slice()).splice(u,1);break}i.tween=r}}function rn(t,n,e){var r,i;if("function"!=typeof e)throw new Error;return function(){var o=Ut(this,t),u=o.tween;if(u!==r){i=(r=u).slice();for(var a={name:n,value:e},s=0,l=i.length;s<l;++s)if(i[s].name===n){i[s]=a;break}s===l&&i.push(a)}o.tween=i}}function on(t,n,e){var r=t._id;return t.each((function(){var t=Ut(this,r);(t.value||(t.value={}))[n]=e.apply(this,arguments)})),function(t){return Ft(t,r).value[n]}}function un(t,n,e){t.prototype=n.prototype=e,e.constructor=t}function an(t,n){var e=Object.create(t.prototype);for(var r in n)e[r]=n[r];return e}function sn(){}var ln=.7,cn=1/ln,fn="\\s*([+-]?\\d+)\\s*",hn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)\\s*",pn="\\s*([+-]?\\d*\\.?\\d+(?:[eE][+-]?\\d+)?)%\\s*",dn=/^#([0-9a-f]{3,8})$/,yn=new RegExp("^rgb\\("+[fn,fn,fn]+"\\)$"),vn=new RegExp("^rgb\\("+[pn,pn,pn]+"\\)$"),gn=new RegExp("^rgba\\("+[fn,fn,fn,hn]+"\\)$"),_n=new RegExp("^rgba\\("+[pn,pn,pn,hn]+"\\)$"),mn=new RegExp("^hsl\\("+[hn,pn,pn]+"\\)$"),wn=new RegExp("^hsla\\("+[hn,pn,pn,hn]+"\\)$"),bn={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};function xn(){return this.rgb().formatHex()}function An(){return this.rgb().formatRgb()}function Nn(t){var n,e;return t=(t+"").trim().toLowerCase(),(n=dn.exec(t))?(e=n[1].length,n=parseInt(n[1],16),6===e?kn(n):3===e?new Cn(n>>8&15|n>>4&240,n>>4&15|240&n,(15&n)<<4|15&n,1):8===e?Mn(n>>24&255,n>>16&255,n>>8&255,(255&n)/255):4===e?Mn(n>>12&15|n>>8&240,n>>8&15|n>>4&240,n>>4&15|240&n,((15&n)<<4|15&n)/255):null):(n=yn.exec(t))?new Cn(n[1],n[2],n[3],1):(n=vn.exec(t))?new Cn(255*n[1]/100,255*n[2]/100,255*n[3]/100,1):(n=gn.exec(t))?Mn(n[1],n[2],n[3],n[4]):(n=_n.exec(t))?Mn(255*n[1]/100,255*n[2]/100,255*n[3]/100,n[4]):(n=mn.exec(t))?jn(n[1],n[2]/100,n[3]/100,1):(n=wn.exec(t))?jn(n[1],n[2]/100,n[3]/100,n[4]):bn.hasOwnProperty(t)?kn(bn[t]):"transparent"===t?new Cn(NaN,NaN,NaN,0):null}function kn(t){return new Cn(t>>16&255,t>>8&255,255&t,1)}function Mn(t,n,e,r){return r<=0&&(t=n=e=NaN),new Cn(t,n,e,r)}function En(t){return t instanceof sn||(t=Nn(t)),t?new Cn((t=t.rgb()).r,t.g,t.b,t.opacity):new Cn}function Sn(t,n,e,r){return 1===arguments.length?En(t):new Cn(t,n,e,null==r?1:r)}function Cn(t,n,e,r){this.r=+t,this.g=+n,this.b=+e,this.opacity=+r}function Pn(){return"#"+qn(this.r)+qn(this.g)+qn(this.b)}function On(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"rgb(":"rgba(")+Math.max(0,Math.min(255,Math.round(this.r)||0))+", "+Math.max(0,Math.min(255,Math.round(this.g)||0))+", "+Math.max(0,Math.min(255,Math.round(this.b)||0))+(1===t?")":", "+t+")")}function qn(t){return((t=Math.max(0,Math.min(255,Math.round(t)||0)))<16?"0":"")+t.toString(16)}function jn(t,n,e,r){return r<=0?t=n=e=NaN:e<=0||e>=1?t=n=NaN:n<=0&&(t=NaN),new Xn(t,n,e,r)}function Tn(t){if(t instanceof Xn)return new Xn(t.h,t.s,t.l,t.opacity);if(t instanceof sn||(t=Nn(t)),!t)return new Xn;if(t instanceof Xn)return t;var n=(t=t.rgb()).r/255,e=t.g/255,r=t.b/255,i=Math.min(n,e,r),o=Math.max(n,e,r),u=NaN,a=o-i,s=(o+i)/2;return a?(u=n===o?(e-r)/a+6*(e<r):e===o?(r-n)/a+2:(n-e)/a+4,a/=s<.5?o+i:2-o-i,u*=60):a=s>0&&s<1?0:u,new Xn(u,a,s,t.opacity)}function Xn(t,n,e,r){this.h=+t,this.s=+n,this.l=+e,this.opacity=+r}function Rn(t,n,e){return 255*(t<60?n+(e-n)*t/60:t<180?e:t<240?n+(e-n)*(240-t)/60:n)}function In(t,n,e,r,i){var o=t*t,u=o*t;return((1-3*t+3*o-u)*n+(4-6*o+3*u)*e+(1+3*t+3*o-3*u)*r+u*i)/6}un(sn,Nn,{copy:function(t){return Object.assign(new this.constructor,this,t)},displayable:function(){return this.rgb().displayable()},hex:xn,formatHex:xn,formatHsl:function(){return Tn(this).formatHsl()},formatRgb:An,toString:An}),un(Cn,Sn,an(sn,{brighter:function(t){return t=null==t?cn:Math.pow(cn,t),new Cn(this.r*t,this.g*t,this.b*t,this.opacity)},darker:function(t){return t=null==t?ln:Math.pow(ln,t),new Cn(this.r*t,this.g*t,this.b*t,this.opacity)},rgb:function(){return this},displayable:function(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Pn,formatHex:Pn,formatRgb:On,toString:On})),un(Xn,(function(t,n,e,r){return 1===arguments.length?Tn(t):new Xn(t,n,e,null==r?1:r)}),an(sn,{brighter:function(t){return t=null==t?cn:Math.pow(cn,t),new Xn(this.h,this.s,this.l*t,this.opacity)},darker:function(t){return t=null==t?ln:Math.pow(ln,t),new Xn(this.h,this.s,this.l*t,this.opacity)},rgb:function(){var t=this.h%360+360*(this.h<0),n=isNaN(t)||isNaN(this.s)?0:this.s,e=this.l,r=e+(e<.5?e:1-e)*n,i=2*e-r;return new Cn(Rn(t>=240?t-240:t+120,i,r),Rn(t,i,r),Rn(t<120?t+240:t-120,i,r),this.opacity)},displayable:function(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl:function(){var t=this.opacity;return(1===(t=isNaN(t)?1:Math.max(0,Math.min(1,t)))?"hsl(":"hsla(")+(this.h||0)+", "+100*(this.s||0)+"%, "+100*(this.l||0)+"%"+(1===t?")":", "+t+")")}}));const Ln=t=>()=>t;function Dn(t,n){return function(e){return t+e*n}}function Hn(t){return 1==(t=+t)?Yn:function(n,e){return e-n?function(t,n,e){return t=Math.pow(t,e),n=Math.pow(n,e)-t,e=1/e,function(r){return Math.pow(t+r*n,e)}}(n,e,t):Ln(isNaN(n)?e:n)}}function Yn(t,n){var e=n-t;return e?Dn(t,e):Ln(isNaN(t)?n:t)}const Bn=function t(n){var e=Hn(n);function r(t,n){var r=e((t=Sn(t)).r,(n=Sn(n)).r),i=e(t.g,n.g),o=e(t.b,n.b),u=Yn(t.opacity,n.opacity);return function(n){return t.r=r(n),t.g=i(n),t.b=o(n),t.opacity=u(n),t+""}}return r.gamma=t,r}(1);function $n(t){return function(n){var e,r,i=n.length,o=new Array(i),u=new Array(i),a=new Array(i);for(e=0;e<i;++e)r=Sn(n[e]),o[e]=r.r||0,u[e]=r.g||0,a[e]=r.b||0;return o=t(o),u=t(u),a=t(a),r.opacity=1,function(t){return r.r=o(t),r.g=u(t),r.b=a(t),r+""}}}$n((function(t){var n=t.length-1;return function(e){var r=e<=0?e=0:e>=1?(e=1,n-1):Math.floor(e*n),i=t[r],o=t[r+1],u=r>0?t[r-1]:2*i-o,a=r<n-1?t[r+2]:2*o-i;return In((e-r/n)*n,u,i,o,a)}})),$n((function(t){var n=t.length;return function(e){var r=Math.floor(((e%=1)<0?++e:e)*n),i=t[(r+n-1)%n],o=t[r%n],u=t[(r+1)%n],a=t[(r+2)%n];return In((e-r/n)*n,i,o,u,a)}}));var Vn=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,zn=new RegExp(Vn.source,"g");function Un(t,n){var e,r,i,o=Vn.lastIndex=zn.lastIndex=0,u=-1,a=[],s=[];for(t+="",n+="";(e=Vn.exec(t))&&(r=zn.exec(n));)(i=r.index)>o&&(i=n.slice(o,i),a[u]?a[u]+=i:a[++u]=i),(e=e[0])===(r=r[0])?a[u]?a[u]+=r:a[++u]=r:(a[++u]=null,s.push({i:u,x:Kt(e,r)})),o=zn.lastIndex;return o<n.length&&(i=n.slice(o),a[u]?a[u]+=i:a[++u]=i),a.length<2?s[0]?function(t){return function(n){return t(n)+""}}(s[0].x):function(t){return function(){return t}}(n):(n=s.length,function(t){for(var e,r=0;r<n;++r)a[(e=s[r]).i]=e.x(t);return a.join("")})}function Fn(t,n){var e;return("number"==typeof n?Kt:n instanceof Nn?Bn:(e=Nn(n))?(n=e,Bn):Un)(t,n)}function Kn(t){return function(){this.removeAttribute(t)}}function Wn(t){return function(){this.removeAttributeNS(t.space,t.local)}}function Gn(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttribute(t);return u===o?null:u===r?i:i=n(r=u,e)}}function Jn(t,n,e){var r,i,o=e+"";return function(){var u=this.getAttributeNS(t.space,t.local);return u===o?null:u===r?i:i=n(r=u,e)}}function Qn(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttribute(t))===(a=s+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttribute(t)}}function Zn(t,n,e){var r,i,o;return function(){var u,a,s=e(this);if(null!=s)return(u=this.getAttributeNS(t.space,t.local))===(a=s+"")?null:u===r&&a===i?o:(i=a,o=n(r=u,s));this.removeAttributeNS(t.space,t.local)}}function te(t,n){return function(e){this.setAttribute(t,n.call(this,e))}}function ne(t,n){return function(e){this.setAttributeNS(t.space,t.local,n.call(this,e))}}function ee(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&ne(t,i)),e}return i._value=n,i}function re(t,n){var e,r;function i(){var i=n.apply(this,arguments);return i!==r&&(e=(r=i)&&te(t,i)),e}return i._value=n,i}function ie(t,n){return function(){zt(this,t).delay=+n.apply(this,arguments)}}function oe(t,n){return n=+n,function(){zt(this,t).delay=n}}function ue(t,n){return function(){Ut(this,t).duration=+n.apply(this,arguments)}}function ae(t,n){return n=+n,function(){Ut(this,t).duration=n}}function se(t,n){if("function"!=typeof n)throw new Error;return function(){Ut(this,t).ease=n}}function le(t,n,e){var r,i,o=function(t){return(t+"").trim().split(/^|\s+/).every((function(t){var n=t.indexOf(".");return n>=0&&(t=t.slice(0,n)),!t||"start"===t}))}(n)?zt:Ut;return function(){var u=o(this,t),a=u.on;a!==r&&(i=(r=a).copy()).on(n,e),u.on=i}}var ce=vt.prototype.constructor;function fe(t){return function(){this.style.removeProperty(t)}}function he(t,n,e){return function(r){this.style.setProperty(t,n.call(this,r),e)}}function pe(t,n,e){var r,i;function o(){var o=n.apply(this,arguments);return o!==i&&(r=(i=o)&&he(t,o,e)),r}return o._value=n,o}function de(t){return function(n){this.textContent=t.call(this,n)}}function ye(t){var n,e;function r(){var r=t.apply(this,arguments);return r!==e&&(n=(e=r)&&de(r)),n}return r._value=t,r}var ve=0;function ge(t,n,e,r){this._groups=t,this._parents=n,this._name=e,this._id=r}function _e(){return++ve}var me=vt.prototype;ge.prototype=function(t){return vt().transition(t)}.prototype={constructor:ge,select:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=r(t));for(var i=this._groups,o=i.length,u=new Array(o),a=0;a<o;++a)for(var s,l,c=i[a],f=c.length,h=u[a]=new Array(f),p=0;p<f;++p)(s=c[p])&&(l=t.call(s,s.__data__,p,c))&&("__data__"in s&&(l.__data__=s.__data__),h[p]=l,Vt(h[p],n,e,p,h,Ft(s,e)));return new ge(u,this._parents,n,e)},selectAll:function(t){var n=this._name,e=this._id;"function"!=typeof t&&(t=u(t));for(var r=this._groups,i=r.length,o=[],a=[],s=0;s<i;++s)for(var l,c=r[s],f=c.length,h=0;h<f;++h)if(l=c[h]){for(var p,d=t.call(l,l.__data__,h,c),y=Ft(l,e),v=0,g=d.length;v<g;++v)(p=d[v])&&Vt(p,n,e,v,d,y);o.push(d),a.push(l)}return new ge(o,a,n,e)},selectChild:me.selectChild,selectChildren:me.selectChildren,filter:function(t){"function"!=typeof t&&(t=a(t));for(var n=this._groups,e=n.length,r=new Array(e),i=0;i<e;++i)for(var o,u=n[i],s=u.length,l=r[i]=[],c=0;c<s;++c)(o=u[c])&&t.call(o,o.__data__,c,u)&&l.push(o);return new ge(r,this._parents,this._name,this._id)},merge:function(t){if(t._id!==this._id)throw new Error;for(var n=this._groups,e=t._groups,r=n.length,i=e.length,o=Math.min(r,i),u=new Array(r),a=0;a<o;++a)for(var s,l=n[a],c=e[a],f=l.length,h=u[a]=new Array(f),p=0;p<f;++p)(s=l[p]||c[p])&&(h[p]=s);for(;a<r;++a)u[a]=n[a];return new ge(u,this._parents,this._name,this._id)},selection:function(){return new ce(this._groups,this._parents)},transition:function(){for(var t=this._name,n=this._id,e=_e(),r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)if(u=a[l]){var c=Ft(u,n);Vt(u,t,e,l,a,{time:c.time+c.delay+c.duration,delay:0,duration:c.duration,ease:c.ease})}return new ge(r,this._parents,t,e)},call:me.call,nodes:me.nodes,node:me.node,size:me.size,empty:me.empty,each:me.each,on:function(t,n){var e=this._id;return arguments.length<2?Ft(this.node(),e).on.on(t):this.each(le(e,t,n))},attr:function(t,n){var e=A(t),r="transform"===e?nn:Fn;return this.attrTween(t,"function"==typeof n?(e.local?Zn:Qn)(e,r,on(this,"attr."+t,n)):null==n?(e.local?Wn:Kn)(e):(e.local?Jn:Gn)(e,r,n))},attrTween:function(t,n){var e="attr."+t;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(null==n)return this.tween(e,null);if("function"!=typeof n)throw new Error;var r=A(t);return this.tween(e,(r.local?ee:re)(r,n))},style:function(t,n,e){var r="transform"==(t+="")?tn:Fn;return null==n?this.styleTween(t,function(t,n){var e,r,i;return function(){var o=T(this,t),u=(this.style.removeProperty(t),T(this,t));return o===u?null:o===e&&u===r?i:i=n(e=o,r=u)}}(t,r)).on("end.style."+t,fe(t)):"function"==typeof n?this.styleTween(t,function(t,n,e){var r,i,o;return function(){var u=T(this,t),a=e(this),s=a+"";return null==a&&(this.style.removeProperty(t),s=a=T(this,t)),u===s?null:u===r&&s===i?o:(i=s,o=n(r=u,a))}}(t,r,on(this,"style."+t,n))).each(function(t,n){var e,r,i,o,u="style."+n,a="end."+u;return function(){var s=Ut(this,t),l=s.on,c=null==s.value[u]?o||(o=fe(n)):void 0;l===e&&i===c||(r=(e=l).copy()).on(a,i=c),s.on=r}}(this._id,t)):this.styleTween(t,function(t,n,e){var r,i,o=e+"";return function(){var u=T(this,t);return u===o?null:u===r?i:i=n(r=u,e)}}(t,r,n),e).on("end.style."+t,null)},styleTween:function(t,n,e){var r="style."+(t+="");if(arguments.length<2)return(r=this.tween(r))&&r._value;if(null==n)return this.tween(r,null);if("function"!=typeof n)throw new Error;return this.tween(r,pe(t,n,null==e?"":e))},text:function(t){return this.tween("text","function"==typeof t?function(t){return function(){var n=t(this);this.textContent=null==n?"":n}}(on(this,"text",t)):function(t){return function(){this.textContent=t}}(null==t?"":t+""))},textTween:function(t){var n="text";if(arguments.length<1)return(n=this.tween(n))&&n._value;if(null==t)return this.tween(n,null);if("function"!=typeof t)throw new Error;return this.tween(n,ye(t))},remove:function(){return this.on("end.remove",function(t){return function(){var n=this.parentNode;for(var e in this.__transition)if(+e!==t)return;n&&n.removeChild(this)}}(this._id))},tween:function(t,n){var e=this._id;if(t+="",arguments.length<2){for(var r,i=Ft(this.node(),e).tween,o=0,u=i.length;o<u;++o)if((r=i[o]).name===t)return r.value;return null}return this.each((null==n?en:rn)(e,t,n))},delay:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ie:oe)(n,t)):Ft(this.node(),n).delay},duration:function(t){var n=this._id;return arguments.length?this.each(("function"==typeof t?ue:ae)(n,t)):Ft(this.node(),n).duration},ease:function(t){var n=this._id;return arguments.length?this.each(se(n,t)):Ft(this.node(),n).ease},easeVarying:function(t){if("function"!=typeof t)throw new Error;return this.each(function(t,n){return function(){var e=n.apply(this,arguments);if("function"!=typeof e)throw new Error;Ut(this,t).ease=e}}(this._id,t))},end:function(){var t,n,e=this,r=e._id,i=e.size();return new Promise((function(o,u){var a={value:u},s={value:function(){0==--i&&o()}};e.each((function(){var e=Ut(this,r),i=e.on;i!==t&&((n=(t=i).copy())._.cancel.push(a),n._.interrupt.push(a),n._.end.push(s)),e.on=n})),0===i&&o()}))},[Symbol.iterator]:me[Symbol.iterator]};var we={time:null,delay:0,duration:250,ease:function(t){return((t*=2)<=1?t*t*t:(t-=2)*t*t+2)/2}};function be(t,n){for(var e;!(e=t.__transition)||!(e=e[n]);)if(!(t=t.parentNode))throw new Error(`transition ${n} not found`);return e}function xe(t){return t.data.name}function Ae(){var t=function(t){return"string"==typeof t?new dt([[document.querySelector(t)]],[document.documentElement]):new dt([[t]],pt)}("body"),n=null,e=xe,r=xe,i=!1;function o(){n=t.append("div").style("display","none").style("position","absolute").style("opacity",0).style("pointer-events","none").attr("class","d3-flame-graph-tip")}return o.show=function(t){return n.style("display","block").style("left",event.pageX+5+"px").style("top",event.pageY+5+"px").transition().duration(200).style("opacity",1).style("pointer-events","all"),i?n.html(e(t)):n.text(r(t)),o},o.hide=function(){return n.style("display","none").transition().duration(200).style("opacity",0).style("pointer-events","none"),o},o.text=function(t){return arguments.length?(r=t,i=!1,o):r},o.html=function(t){return arguments.length?(e=t,i=!0,o):e},o.destroy=function(){n.remove()},o}return vt.prototype.interrupt=function(t){return this.each((function(){!function(t,n){var e,r,i,o=t.__transition,u=!0;if(o){for(i in n=null==n?null:n+"",o)(e=o[i]).name===n?(r=e.state>2&&e.state<5,e.state=6,e.timer.stop(),e.on.call(r?"interrupt":"cancel",t,t.__data__,e.index,e.group),delete o[i]):u=!1;u&&delete t.__transition}}(this,t)}))},vt.prototype.transition=function(t){var n,e;t instanceof ge?(n=t._id,t=t._name):(n=_e(),(e=we).time=Tt(),t=null==t?null:t+"");for(var r=this._groups,i=r.length,o=0;o<i;++o)for(var u,a=r[o],s=a.length,l=0;l<s;++l)(u=a[l])&&Vt(u,t,n,l,a,e||be(u,n));return new ge(r,this._parents,t,n)},n})()}));
</script>
    <style>
/* ==========================================================================
   Python Profiler - Shared CSS Foundation
   Design system shared between Flamegraph and Heatmap viewers
   ========================================================================== */

/* --------------------------------------------------------------------------
   CSS Variables & Theme System
   -------------------------------------------------------------------------- */

:root {
  /* Typography */
  --font-sans: "Source Sans Pro", "Lucida Grande", "Lucida Sans Unicode",
               "Geneva", "Verdana", sans-serif;
  --font-mono: 'SF Mono', 'Monaco', 'Consolas', 'Liberation Mono', monospace;

  /* Python brand colors (theme-independent) */
  --python-blue: #3776ab;
  --python-blue-light: #4584bb;
  --python-blue-lighter: #5592cc;
  --python-gold: #ffd43b;
  --python-gold-dark: #ffcd02;
  --python-gold-light: #ffdc5c;

  /* Heat palette - defined per theme below */

  /* Layout */
  --sidebar-width: 280px;
  --sidebar-collapsed: 44px;
  --topbar-height: 56px;
  --statusbar-height: 32px;

  /* Border radius */
  --radius-sm: 4px;
  --radius-md: 8px;
  --radius-lg: 12px;

  /* Transitions */
  --transition-fast: 0.15s ease;
  --transition-normal: 0.25s ease;
  --transition-slow: 0.3s ease;
}

/* Light theme (default) */
:root, [data-theme="light"] {
  --bg-primary: #ffffff;
  --bg-secondary: #f8f9fa;
  --bg-tertiary: #e9ecef;
  --border: #e9ecef;
  --border-subtle: #f0f2f5;

  --text-primary: #2e3338;
  --text-secondary: #5a6c7d;
  --text-muted: #6f767e;

  --accent: #3776ab;
  --accent-hover: #2d5aa0;
  --accent-glow: rgba(55, 118, 171, 0.15);

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.08);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.1);
  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.15);

  --header-gradient: linear-gradient(135deg, #3776ab 0%, #4584bb 100%);

  /* Light mode heat palette - blue to yellow to orange to red (cold to hot) */
  --heat-1: #7ba3d1;
  --heat-2: #a8d0ef;
  --heat-3: #d6e9f8;
  --heat-4: #ffe6a8;
  --heat-5: #ffd43b;
  --heat-6: #ffb84d;
  --heat-7: #ff9966;
  --heat-8: #ff6347;

  /* Code view specific */
  --code-bg: #ffffff;
  --code-bg-line: #f8f9fa;
  --code-border: #e9ecef;
  --code-text: #2e3338;
  --code-text-muted: #8b949e;
  --code-accent: #3776ab;

  /* Navigation colors */
  --nav-caller: #2563eb;
  --nav-caller-hover: #1d4ed8;
  --nav-callee: #dc2626;
  --nav-callee-hover: #b91c1c;

  /* Specialization status colors */
  --spec-high: #4caf50;
  --spec-high-text: #2e7d32;
  --spec-high-bg: rgba(76, 175, 80, 0.15);
  --spec-medium: #ff9800;
  --spec-medium-text: #e65100;
  --spec-medium-bg: rgba(255, 152, 0, 0.15);
  --spec-low: #9e9e9e;
  --spec-low-text: #616161;
  --spec-low-bg: rgba(158, 158, 158, 0.15);

  /* Heatmap span highlighting colors */
  --span-hot-base: 255, 100, 50;
  --span-cold-base: 150, 150, 150;

  /* Summary card colors - optimized for 4.5:1 contrast on light bg */
  --card-blue: 44, 102, 149;
  --card-green: 26, 116, 49;
  --card-yellow: 134, 100, 4;
  --card-purple: 102, 57, 166;
  --card-red: 180, 40, 50;
  --card-orange: 166, 90, 0;
}

/* Dark theme */
[data-theme="dark"] {
  --bg-primary: #0d1117;
  --bg-secondary: #161b22;
  --bg-tertiary: #21262d;
  --border: #30363d;
  --border-subtle: #21262d;

  --text-primary: #e6edf3;
  --text-secondary: #8b949e;
  --text-muted: #757e8a;

  --accent: #58a6ff;
  --accent-hover: #79b8ff;
  --accent-glow: rgba(88, 166, 255, 0.15);

  --shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.3);
  --shadow-md: 0 4px 12px rgba(0, 0, 0, 0.4);
  --shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.5);

  --header-gradient: linear-gradient(135deg, #21262d 0%, #30363d 100%);

  /* Dark mode heat palette - cool to warm gradient for visualization */
  --heat-1: rgba(90, 123, 167, 1);
  --heat-2: rgba(106, 148, 168, 1);
  --heat-3: rgba(122, 172, 172, 1);
  --heat-4: rgba(142, 196, 152, 1);
  --heat-5: rgba(168, 216, 136, 1);
  --heat-6: rgba(200, 222, 122, 1);
  --heat-7: rgba(244, 212, 93, 1);
  --heat-8: rgba(255, 122, 69, 1);

  /* Code view specific - dark mode */
  --code-bg: #0d1117;
  --code-bg-line: #161b22;
  --code-border: #30363d;
  --code-text: #e6edf3;
  --code-text-muted: #6e7681;
  --code-accent: #58a6ff;

  /* Navigation colors - dark theme friendly */
  --nav-caller: #58a6ff;
  --nav-caller-hover: #4184e4;
  --nav-callee: #f87171;
  --nav-callee-hover: #e53e3e;

  /* Specialization status colors - dark theme */
  --spec-high: #81c784;
  --spec-high-text: #81c784;
  --spec-high-bg: rgba(129, 199, 132, 0.2);
  --spec-medium: #ffb74d;
  --spec-medium-text: #ffb74d;
  --spec-medium-bg: rgba(255, 183, 77, 0.2);
  --spec-low: #bdbdbd;
  --spec-low-text: #9e9e9e;
  --spec-low-bg: rgba(189, 189, 189, 0.15);

  /* Heatmap span highlighting colors - dark theme */
  --span-hot-base: 255, 107, 53;
  --span-cold-base: 189, 189, 189;

  /* Summary card colors - optimized for 4.5:1 contrast on dark bg */
  --card-blue: 88, 166, 255;
  --card-green: 63, 185, 80;
  --card-yellow: 210, 153, 34;
  --card-purple: 163, 113, 247;
  --card-red: 248, 113, 113;
  --card-orange: 251, 146, 60;
}

/* --------------------------------------------------------------------------
   Base Styles
   -------------------------------------------------------------------------- */

*, *::before, *::after {
  box-sizing: border-box;
}

html, body {
  margin: 0;
  padding: 0;
}

body {
  font-family: var(--font-sans);
  font-size: 14px;
  line-height: 1.6;
  color: var(--text-primary);
  background: var(--bg-primary);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  transition: background var(--transition-normal), color var(--transition-normal);
}

/* --------------------------------------------------------------------------
   Layout Structure
   -------------------------------------------------------------------------- */

.app-layout {
  display: flex;
  flex-direction: column;
}

/* --------------------------------------------------------------------------
   Top Bar
   -------------------------------------------------------------------------- */

.top-bar {
  height: var(--topbar-height);
  background: var(--header-gradient);
  display: flex;
  align-items: center;
  padding: 0 16px;
  gap: 16px;
  flex-shrink: 0;
  box-shadow: 0 2px 10px rgba(55, 118, 171, 0.25);
  border-bottom: 2px solid var(--python-gold);
}

/* Brand / Logo */
.brand {
  display: flex;
  align-items: center;
  gap: 12px;
  color: white;
  text-decoration: none;
  flex-shrink: 0;
}

.brand-logo {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 48px;
  height: 40px;
  flex-shrink: 0;
}

/* Style the inlined SVG/img inside brand-logo */
.brand-logo svg,
.brand-logo img {
  width: 48px;
  height: 40px;
  display: block;
  object-fit: contain;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
}

.brand-info {
  display: flex;
  flex-direction: column;
  line-height: 1.15;
}

.brand-text {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: 16px;
  letter-spacing: -0.3px;
  text-shadow: 0 1px 2px rgba(0, 0, 0, 0.15);
  color: inherit;
  text-decoration: none;
}

.brand-subtitle {
  font-weight: 500;
  font-size: 10px;
  opacity: 0.9;
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.brand-divider {
  width: 1px;
  height: 16px;
  background: rgba(255, 255, 255, 0.3);
}

/* Toolbar */
.toolbar {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-left: auto;
}

.toolbar-btn {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 32px;
  height: 32px;
  padding: 0;
  font-size: 15px;
  color: white;
  background: rgba(255, 255, 255, 0.12);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 6px;
  cursor: pointer;
  text-decoration: none;
  transition: all var(--transition-fast);
}

.toolbar-btn:hover {
  background: rgba(255, 255, 255, 0.22);
  border-color: rgba(255, 255, 255, 0.35);
}

.toolbar-btn:active {
  transform: scale(0.95);
}

/* --------------------------------------------------------------------------
   Status Bar
   -------------------------------------------------------------------------- */

.status-bar {
  height: var(--statusbar-height);
  background: var(--bg-secondary);
  border-top: 1px solid var(--border);
  display: flex;
  align-items: center;
  padding: 0 16px;
  gap: 16px;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-secondary);
  flex-shrink: 0;
}

.status-item {
  display: flex;
  align-items: center;
  gap: 5px;
}

.status-item::before {
  content: '';
  width: 4px;
  height: 4px;
  background: var(--python-gold);
  border-radius: 50%;
}

.status-item:first-child::before {
  display: none;
}

.status-label {
  color: var(--text-muted);
}

.status-value {
  color: var(--text-primary);
  font-weight: 500;
}

.status-value.accent {
  color: var(--accent);
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   Animations
   -------------------------------------------------------------------------- */

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

@keyframes slideUp {
  from {
    opacity: 0;
    transform: translateY(12px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes shimmer {
  0% { left: -100%; }
  100% { left: 100%; }
}

/* --------------------------------------------------------------------------
   Focus States (Accessibility)
   -------------------------------------------------------------------------- */

button:focus-visible,
select:focus-visible,
input:focus-visible,
.toggle-switch:focus-visible,
a.toolbar-btn:focus-visible {
  outline: 2px solid var(--python-gold);
  outline-offset: 2px;
}

/* --------------------------------------------------------------------------
   Shared Responsive
   -------------------------------------------------------------------------- */

@media (max-width: 900px) {
  .brand-subtitle {
    display: none;
  }
}

@media (max-width: 600px) {
  .toolbar-btn:not(.theme-toggle) {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   Toggle Switch
   -------------------------------------------------------------------------- */

.toggle-switch {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  cursor: pointer;
  user-select: none;
  font-family: var(--font-sans);
  transition: opacity var(--transition-fast);
  flex-shrink: 0;
}

.toggle-switch:hover {
  opacity: 0.85;
}

.toggle-switch .toggle-label {
  font-size: 11px;
  font-weight: 500;
  color: var(--text-muted);
  transition: color var(--transition-fast);
  white-space: nowrap;
  display: inline-flex;
  flex-direction: column;
}

.toggle-switch .toggle-label.active {
  color: var(--text-primary);
  font-weight: 600;
}

/* Reserve space for bold text to prevent layout shift on toggle */
.toggle-switch .toggle-label::after {
  content: attr(data-text);
  font-weight: 600;
  height: 0;
  visibility: hidden;
}

.toggle-switch.disabled {
  opacity: 0.4;
  pointer-events: none;
  cursor: not-allowed;
}

.toggle-track {
  position: relative;
  width: 36px;
  height: 20px;
  background: var(--bg-tertiary);
  border: 2px solid var(--border);
  border-radius: 12px;
  transition: all var(--transition-fast);
  box-shadow: inset var(--shadow-sm);
}

.toggle-track:hover {
  border-color: var(--text-muted);
}

.toggle-track.on {
  background: var(--accent);
  border-color: var(--accent);
  box-shadow: 0 0 8px var(--accent-glow);
}

.toggle-track::after {
  content: '';
  position: absolute;
  top: 1px;
  left: 1px;
  width: 14px;
  height: 14px;
  background: white;
  border-radius: 50%;
  box-shadow: var(--shadow-sm);
  transition: all var(--transition-fast);
}

.toggle-track.on::after {
  transform: translateX(16px);
  box-shadow: var(--shadow-md);
}


/* ==========================================================================
   Flamegraph Viewer - Component-Specific CSS

   DEPENDENCY: Requires _shared_assets/base.css to be loaded first
   This file extends the shared foundation with flamegraph-specific styles.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Differential Flamegraph
   -------------------------------------------------------------------------- */

:root {
  /* Regression colors */
  --diff-regression-deep: #d32f2f;
  --diff-regression-medium: #e57373;
  --diff-regression-light: #ef9a9a;
  --diff-regression-verylight: #ffcdd2;

  /* Improvement colors */
  --diff-improvement-deep: #1976d2;
  --diff-improvement-medium: #42a5f5;
  --diff-improvement-light: #64b5f6;
  --diff-improvement-verylight: #90caf9;

  /* Other differential colors */
  --diff-neutral: #bdbdbd;
  --diff-new: #9575cd;
  --diff-elided: #b39ddb;
}

/* Dark mode differential colors - adjusted for contrast against dark backgrounds */
[data-theme="dark"] {
  --diff-regression-deep: #ef5350;
  --diff-regression-medium: #e57373;
  --diff-regression-light: #ef9a9a;
  --diff-regression-verylight: #ffcdd2;

  --diff-improvement-deep: #42a5f5;
  --diff-improvement-medium: #64b5f6;
  --diff-improvement-light: #90caf9;
  --diff-improvement-verylight: #bbdefb;

  --diff-neutral: #757575;
  --diff-new: #b39ddb;
  --diff-elided: #ce93d8;
}

/* --------------------------------------------------------------------------
   Layout Overrides (Flamegraph-specific)
   -------------------------------------------------------------------------- */

html, body {
  height: 100%;
  overflow: hidden;
}

.app-layout {
  height: 100vh;
}

.main-content {
  display: flex;
  flex: 1;
  min-height: 0;
}

/* --------------------------------------------------------------------------
   Search Input (Flamegraph-specific)
   -------------------------------------------------------------------------- */

.search-wrapper {
  flex: 1;
  max-width: 360px;
  position: relative;
}

.search-input {
  width: 100%;
  padding: 8px 36px 8px 14px;
  font-family: var(--font-sans);
  font-size: 13px;
  color: #2e3338;
  background: rgba(255, 255, 255, 0.95);
  border: 2px solid rgba(255, 255, 255, 0.3);
  border-radius: 20px;
  outline: none;
  transition: all var(--transition-fast);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.1);
}

.search-input::placeholder {
  color: #6c757d;
}

.search-input:focus {
  border-color: rgba(255, 255, 255, 0.8);
  background: white;
  box-shadow: 0 4px 16px rgba(0, 0, 0, 0.15);
}

/* Dark theme search input */
[data-theme="dark"] .search-input {
  color: #e6edf3;
  background: rgba(33, 38, 45, 0.95);
  border: 2px solid rgba(88, 166, 255, 0.3);
  box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3);
}

[data-theme="dark"] .search-input::placeholder {
  color: #8b949e;
}

[data-theme="dark"] .search-input:focus {
  border-color: rgba(88, 166, 255, 0.6);
  background: rgba(33, 38, 45, 1);
  box-shadow: 0 4px 16px rgba(88, 166, 255, 0.2);
}

.search-input.has-matches {
  border-color: rgba(40, 167, 69, 0.8);
  box-shadow: 0 4px 16px rgba(40, 167, 69, 0.2);
}

.search-input.no-matches {
  border-color: rgba(220, 53, 69, 0.8);
  box-shadow: 0 4px 16px rgba(220, 53, 69, 0.2);
}

.search-clear {
  position: absolute;
  right: 10px;
  top: 50%;
  transform: translateY(-50%);
  width: 20px;
  height: 20px;
  padding: 0;
  display: none;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  line-height: 1;
  color: #6c757d;
  background: transparent;
  border: none;
  border-radius: 50%;
  cursor: pointer;
  transition: color var(--transition-fast);
}

.search-clear:hover {
  color: #2e3338;
}

[data-theme="dark"] .search-clear {
  color: #8b949e;
}

[data-theme="dark"] .search-clear:hover {
  color: #e6edf3;
}

.search-wrapper.has-value .search-clear {
  display: flex;
}

/* --------------------------------------------------------------------------
   Sidebar
   -------------------------------------------------------------------------- */

.sidebar {
  width: var(--sidebar-width);
  background: var(--bg-secondary);
  border-right: 1px solid var(--border);
  display: flex;
  flex-direction: column;
  flex-shrink: 0;
  overflow: hidden;
  position: relative;
}

.sidebar.collapsed {
  width: var(--sidebar-collapsed) !important;
  transition: width var(--transition-normal);
}

.sidebar-toggle {
  position: absolute;
  top: 12px;
  right: 10px;
  width: 26px;
  height: 26px;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--text-muted);
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 6px;
  cursor: pointer;
  transition: all var(--transition-fast);
  z-index: 10;
}

.sidebar-toggle svg {
  transition: transform var(--transition-fast);
}

.sidebar-toggle:hover {
  color: var(--accent);
  border-color: var(--accent);
  background: var(--accent-glow);
}

.sidebar.collapsed .sidebar-toggle {
  right: 9px;
}

.sidebar.collapsed .sidebar-toggle svg {
  transform: rotate(180deg);
}

.sidebar-content {
  flex: 1;
  overflow-y: auto;
  padding: 44px 14px 14px;
}

.sidebar.collapsed .sidebar-content {
  display: none;
}

.sidebar-resize-handle {
  position: absolute;
  top: 0;
  right: 0;
  width: 6px;
  height: 100%;
  cursor: col-resize;
  background: transparent;
  transition: background var(--transition-fast);
  z-index: 11;
}

.sidebar-resize-handle:hover,
.sidebar-resize-handle.resizing {
  background: var(--python-gold);
}

.sidebar-resize-handle::before {
  content: '';
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 2px;
  height: 40px;
  background: var(--border);
  border-radius: 1px;
  opacity: 0;
  transition: opacity var(--transition-fast);
}

.sidebar-resize-handle:hover::before {
  opacity: 1;
}

.sidebar.collapsed .sidebar-resize-handle {
  display: none;
}

body.resizing-sidebar {
  cursor: col-resize;
  user-select: none;
}

/* Sidebar Logo */
.sidebar-logo {
  display: flex;
  justify-content: center;
  margin-bottom: 16px;
}

.sidebar-logo-img {
  width: 220px;
  height: 180px;
  display: flex;
  align-items: center;
  justify-content: center;
}

.sidebar-logo-img svg,
.sidebar-logo-img img {
  width: 100%;
  height: 100%;
  object-fit: contain;
}

/* Sidebar sections */
.sidebar-section {
  margin-bottom: 20px;
}

.sidebar-section:last-child {
  margin-bottom: 0;
}

.section-title {
  font-size: 10px;
  font-weight: 700;
  text-transform: uppercase;
  letter-spacing: 0.8px;
  color: var(--accent);
  margin: 0;
  flex: 1;
}

/* View Mode Section */
.view-mode-section {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.view-mode-section .section-content {
  display: flex;
  flex-direction: column;
  gap: 10px;
  align-items: center;
}

/* Collapsible sections */
.collapsible .section-header {
  display: flex;
  align-items: center;
  width: 100%;
  padding: 0 0 8px 0;
  margin-bottom: 10px;
  background: none;
  border: none;
  border-bottom: 2px solid var(--python-gold);
  cursor: pointer;
  transition: all var(--transition-fast);
}

.collapsible .section-header:hover {
  opacity: 0.8;
}

.section-chevron {
  color: var(--text-muted);
  transition: transform var(--transition-fast);
}

.collapsible.collapsed .section-chevron {
  transform: rotate(-90deg);
}

.section-content {
  transition: max-height var(--transition-slow) ease-out, opacity var(--transition-normal) ease-out, padding var(--transition-normal) ease-out;
  max-height: 1000px;
  opacity: 1;
}

.collapsible.collapsed .section-content {
  max-height: 0;
  opacity: 0;
  padding-top: 0;
  pointer-events: none;
  transition: max-height var(--transition-slow) ease-in, opacity var(--transition-normal) ease-in, padding var(--transition-normal) ease-in;
}

/* --------------------------------------------------------------------------
   Profile Summary Cards
   -------------------------------------------------------------------------- */

.summary-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
}

.summary-card {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 10px;
  background: var(--bg-primary);
  border: 2px solid var(--border);
  border-radius: 8px;
  transition: all var(--transition-fast);
  animation: slideUp 0.4s ease-out backwards;
  animation-delay: calc(var(--i, 0) * 0.08s);
  overflow: hidden;
  position: relative;
}

.summary-card:nth-child(1) { --i: 0; --card-color: var(--card-blue); }
.summary-card:nth-child(2) { --i: 1; --card-color: var(--card-green); }
.summary-card:nth-child(3) { --i: 2; --card-color: var(--card-yellow); }
.summary-card:nth-child(4) { --i: 3; --card-color: var(--card-purple); }

.summary-card:hover {
  border-color: rgba(var(--card-color), 0.6);
  background: linear-gradient(135deg, rgba(var(--card-color), 0.08) 0%, var(--bg-primary) 100%);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(var(--card-color), 0.15);
}

.summary-icon {
  font-size: 14px;
  width: 28px;
  height: 28px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(135deg, rgba(var(--card-color), 0.15) 0%, rgba(var(--card-color), 0.05) 100%);
  border: 1px solid rgba(var(--card-color), 0.2);
  border-radius: 6px;
  flex-shrink: 0;
  transition: all var(--transition-fast);
}

.summary-card:hover .summary-icon {
  transform: scale(1.05);
  background: linear-gradient(135deg, rgba(var(--card-color), 0.25) 0%, rgba(var(--card-color), 0.1) 100%);
}

.summary-data {
  min-width: 0;
  flex: 1;
  overflow: hidden;
}

.summary-value {
  font-family: var(--font-mono);
  font-size: 13px;
  font-weight: 800;
  color: rgb(var(--card-color));
  line-height: 1.2;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.summary-label {
  font-size: 8px;
  font-weight: 600;
  color: var(--text-muted);
  text-transform: uppercase;
  letter-spacing: 0.2px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

/* --------------------------------------------------------------------------
   Progress Bars
   -------------------------------------------------------------------------- */

.bar-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 5px;
}

.bar-label {
  font-size: 9px;
  font-weight: 600;
  color: var(--text-secondary);
  text-transform: uppercase;
  letter-spacing: 0.2px;
}

.bar-value {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 700;
  color: var(--accent);
}

.bar {
  height: 6px;
  background: var(--bg-tertiary);
  border-radius: 3px;
  overflow: hidden;
}

.bar-fill {
  height: 100%;
  background: linear-gradient(90deg, #28a745 0%, #20c997 50%, #17a2b8 100%);
  border-radius: 3px;
  transition: width 0.6s ease-out;
  position: relative;
  overflow: hidden;
}

.bar-fill::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.4) 50%,
    transparent 100%
  );
  animation: shimmer 2s ease-in-out infinite;
}

/* --------------------------------------------------------------------------
   Efficiency Section Container
   -------------------------------------------------------------------------- */

.efficiency-section {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

/* --------------------------------------------------------------------------
   Thread Stats Progress Bars (in Sidebar)
   -------------------------------------------------------------------------- */

.thread-stats-section {
  display: block;
}

.stats-container {
  display: flex;
  flex-direction: column;
  gap: 10px;
}

.stat-item {
  animation: fadeIn 0.4s ease-out backwards;
  animation-delay: calc(var(--i, 0) * 0.05s);
}

.stat-item:nth-child(1) { --i: 0; }
.stat-item:nth-child(2) { --i: 1; }
.stat-item:nth-child(3) { --i: 2; }
.stat-item:nth-child(4) { --i: 3; }
.stat-item:nth-child(5) { --i: 4; }

/* Color variants for bar-fill */
.bar-fill--green {
  background: linear-gradient(90deg, #28a745 0%, #20c997 100%);
}

.bar-fill--yellow {
  background: linear-gradient(90deg, #ffc107 0%, #ffdb4d 100%);
}

.bar-fill--purple {
  background: linear-gradient(90deg, #6f42c1 0%, #9b6dd6 100%);
}

.bar-fill--red {
  background: linear-gradient(90deg, #dc3545 0%, #ff6b7a 100%);
}

/* --------------------------------------------------------------------------
   Hotspot Cards
   -------------------------------------------------------------------------- */

.hotspot {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  padding: 10px;
  margin-bottom: 8px;
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 8px;
  cursor: pointer;
  transition: all var(--transition-fast);
  opacity: 0;
  transform: translateY(8px);
  box-shadow: var(--shadow-sm);
}

.hotspot.visible {
  opacity: 1;
  transform: translateY(0);
}

.hotspot:hover {
  border-color: var(--accent);
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
}

.hotspot.active {
  border-color: var(--python-gold);
  background: var(--accent-glow);
  box-shadow: 0 0 0 3px var(--accent-glow);
}

.hotspot:last-child {
  margin-bottom: 0;
}

.hotspot-rank {
  width: 26px;
  height: 26px;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-weight: 700;
  font-size: 12px;
  flex-shrink: 0;
  background: linear-gradient(135deg, var(--python-blue) 0%, var(--python-blue-light) 100%);
  color: white;
  box-shadow: 0 2px 4px rgba(55, 118, 171, 0.3);
}

.hotspot-rank--1 { background: linear-gradient(135deg, #d4af37, #f4d03f); color: #5a4a00; }
.hotspot-rank--2 { background: linear-gradient(135deg, #a8a8a8, #c0c0c0); color: #4a4a4a; }
.hotspot-rank--3 { background: linear-gradient(135deg, #cd7f32, #e6a55a); color: #5a3d00; }

.hotspot-info {
  flex: 1;
  min-width: 0;
}

.hotspot-func {
  font-family: var(--font-mono);
  font-size: 11px;
  font-weight: 600;
  color: var(--text-primary);
  line-height: 1.3;
  word-break: break-word;
  margin-bottom: 2px;
}

.hotspot-file {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--text-muted);
  margin-bottom: 3px;
  word-break: break-all;
}

.hotspot-stats {
  font-family: var(--font-mono);
  font-size: 10px;
  color: var(--text-secondary);
}

.hotspot-percent {
  color: var(--accent);
  font-weight: 600;
}

/* --------------------------------------------------------------------------
   Legend
   -------------------------------------------------------------------------- */


.legend {
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.legend-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 5px 8px;
  background: var(--bg-primary);
  border-radius: 4px;
  border: 1px solid var(--border-subtle);
  font-size: 11px;
}

.legend-color {
  width: 20px;
  height: 10px;
  border-radius: 2px;
  flex-shrink: 0;
  border: 1px solid rgba(0, 0, 0, 0.08);
}

.legend-label {
  color: var(--text-primary);
  font-weight: 500;
  flex: 1;
}

.legend-range {
  font-family: var(--font-mono);
  font-size: 9px;
  color: var(--text-muted);
}

/* --------------------------------------------------------------------------
   Thread Filter
   -------------------------------------------------------------------------- */

.filter-section {
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.filter-label {
  display: block;
  font-size: 10px;
  font-weight: 600;
  color: var(--text-muted);
  margin-bottom: 6px;
}

.filter-select {
  width: 100%;
  padding: 7px 28px 7px 10px;
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-primary);
  background: var(--bg-primary);
  border: 2px solid var(--accent);
  border-radius: 6px;
  cursor: pointer;
  outline: none;
  appearance: none;
  background-image: url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%233776ab' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6 9 12 15 18 9'%3e%3c/polyline%3e%3c/svg%3e");
  background-repeat: no-repeat;
  background-position: right 6px center;
  background-size: 14px;
  transition: all var(--transition-fast);
}

.filter-select:hover {
  border-color: var(--accent-hover);
  box-shadow: 0 2px 6px var(--accent-glow);
}

.filter-select:focus {
  border-color: var(--accent);
  box-shadow: 0 0 0 3px var(--accent-glow);
}

/* --------------------------------------------------------------------------
   Chart Area
   -------------------------------------------------------------------------- */

.chart-area {
  flex: 1;
  min-width: 0;
  overflow: hidden;
  background: var(--bg-primary);
  position: relative;
}

#chart {
  width: 100%;
  height: 100%;
  padding: 16px;
  overflow: auto;
}

/* D3 Flamegraph overrides */
.d3-flame-graph rect {
  stroke: rgba(55, 118, 171, 0.3);
  stroke-width: 1px;
  cursor: pointer;
  transition: filter 0.1s ease;
}

.d3-flame-graph rect:hover {
  stroke: var(--python-blue);
  stroke-width: 2px;
  filter: brightness(1.08);
}

.d3-flame-graph text {
  font-family: var(--font-sans);
  font-size: 12px;
  font-weight: 500;
  fill: var(--text-primary);
  pointer-events: none;
}

/* Search highlight */
.d3-flame-graph rect.search-match {
  stroke: #ff6b35 !important;
  stroke-width: 2px !important;
  stroke-dasharray: 4 2;
}

.d3-flame-graph rect.search-dim {
  opacity: 0.25;
}

/* --------------------------------------------------------------------------
   Tooltip
   -------------------------------------------------------------------------- */

.python-tooltip {
  position: absolute;
  z-index: 1000;
  pointer-events: none;
  background: var(--bg-primary);
  border: 1px solid var(--border);
  border-radius: 8px;
  padding: 14px;
  max-width: 480px;
  box-shadow: var(--shadow-lg);
  font-family: var(--font-sans);
  font-size: 13px;
  color: var(--text-primary);
  word-wrap: break-word;
  overflow-wrap: break-word;
  line-height: 1.5;
}

.tooltip-header {
  margin-bottom: 10px;
}

.tooltip-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--accent);
  line-height: 1.3;
  word-break: break-word;
  margin-bottom: 4px;
}

.tooltip-location {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-secondary);
  background: var(--bg-tertiary);
  padding: 4px 8px;
  border-radius: 4px;
  word-break: break-all;
}

.tooltip-stats {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 4px 14px;
  font-size: 12px;
}

.tooltip-stat-label {
  color: var(--text-secondary);
  font-weight: 500;
}

.tooltip-stat-value {
  color: var(--text-primary);
  font-weight: 600;
}

.tooltip-stat-value.accent {
  color: var(--accent);
}

.tooltip-diff {
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.tooltip-diff-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--accent);
  margin-bottom: 8px;
}

.tooltip-diff-row {
  display: grid;
  grid-template-columns: auto 1fr;
  gap: 4px 14px;
  font-size: 12px;
  margin-bottom: 4px;
}

.tooltip-diff-row.regression .tooltip-stat-value {
  color: var(--diff-regression-deep);
  font-weight: 700;
}

.tooltip-diff-row.improvement .tooltip-stat-value {
  color: var(--diff-improvement-deep);
  font-weight: 700;
}

.tooltip-diff-row.neutral .tooltip-stat-value {
  color: var(--text-secondary);
}

.tooltip-source {
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--border);
}

.tooltip-source-title {
  font-size: 11px;
  font-weight: 600;
  color: var(--accent);
  margin-bottom: 6px;
}

.tooltip-source-code {
  font-family: var(--font-mono);
  font-size: 10px;
  line-height: 1.5;
  background: var(--bg-tertiary);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 8px;
  max-height: 140px;
  overflow-y: auto;
  white-space: pre-wrap;
  word-break: break-all;
}

.tooltip-source-line {
  color: var(--text-secondary);
  padding: 1px 0;
}

.tooltip-source-line.current {
  color: var(--accent);
  font-weight: 600;
}

.tooltip-hint {
  margin-top: 10px;
  padding-top: 8px;
  border-top: 1px solid var(--border);
  font-size: 11px;
  color: var(--text-muted);
  text-align: center;
}

/* --------------------------------------------------------------------------
   Tooltip Bytecode/Opcode Section
   -------------------------------------------------------------------------- */

.tooltip-opcodes {
  margin-top: 16px;
  padding-top: 12px;
  border-top: 1px solid var(--border);
}

.tooltip-opcodes-title {
  color: var(--accent);
  font-size: 13px;
  margin-bottom: 8px;
  font-weight: 600;
}

.tooltip-opcodes-list {
  background: var(--bg-tertiary);
  border: 1px solid var(--border);
  border-radius: 6px;
  padding: 10px;
}

.tooltip-opcode-row {
  display: grid;
  grid-template-columns: 1fr 60px 60px;
  gap: 8px;
  align-items: center;
  padding: 3px 0;
}

.tooltip-opcode-name {
  font-family: var(--font-mono);
  font-size: 11px;
  color: var(--text-primary);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.tooltip-opcode-name.specialized {
  color: var(--spec-high-text);
}

.tooltip-opcode-base-hint {
  color: var(--text-muted);
  font-size: 11px;
  margin-left: 4px;
}

.tooltip-opcode-badge {
  background: var(--spec-high);
  color: white;
  font-size: 9px;
  padding: 1px 4px;
  border-radius: 3px;
  margin-left: 4px;
}

.tooltip-opcode-count {
  text-align: right;
  font-size: 11px;
  color: var(--text-secondary);
}

.tooltip-opcode-bar {
  background: var(--bg-secondary);
  border-radius: 2px;
  height: 8px;
  overflow: hidden;
}

.tooltip-opcode-bar-fill {
  background: linear-gradient(90deg, var(--python-blue), var(--python-blue-light));
  height: 100%;
}

/* --------------------------------------------------------------------------
   Responsive (Flamegraph-specific)
   -------------------------------------------------------------------------- */

@media (max-width: 900px) {
  .sidebar {
    position: fixed;
    left: 0;
    top: var(--topbar-height);
    bottom: var(--statusbar-height);
    z-index: 100;
    box-shadow: var(--shadow-lg);
  }

  .sidebar.collapsed {
    width: var(--sidebar-collapsed);
  }

  .search-wrapper {
    max-width: 220px;
  }
}

@media (max-width: 600px) {
  .search-wrapper {
    max-width: 160px;
  }

  .brand-info {
    display: none;
  }
}

/* --------------------------------------------------------------------------
   Flamegraph Root Node Styling
   -------------------------------------------------------------------------- */

/* Style the root node - no border, themed text */
.d3-flame-graph g:first-of-type rect {
  stroke: none;
}

.d3-flame-graph g:first-of-type .d3-flame-graph-label {
  color: var(--text-muted);
}

/* --------------------------------------------------------------------------
   Flamegraph-Specific Toggle Override
   -------------------------------------------------------------------------- */

#toggle-invert .toggle-track.on,
#toggle-elided .toggle-track.on,
#toggle-path-display .toggle-track.on {
  background: #8e44ad;
  border-color: #8e44ad;
  box-shadow: 0 0 8px rgba(142, 68, 173, 0.3);
}

.toggle-switch:focus-visible {
  border-radius: 4px;
}

</style>
  </head>
  <body>
    <div class="app-layout">
      <!-- Top Bar -->
      <header class="top-bar">
        <div class="brand">
          <div class="brand-logo" id="navbar-logo"></div>
          <span class="brand-text">Tachyon</span>
          <span class="brand-divider"></span>
          <span class="brand-subtitle">Flamegraph Report</span>
        </div>
        <div class="search-wrapper">
          <input
            type="text"
            id="search-input"
            class="search-input"
            placeholder="Search functions..."
          />
          <button
            class="search-clear"
            id="search-clear"
            onclick="clearSearch()"
            title="Clear search"
          >&times;</button>
        </div>
        <div class="toolbar">
          <button
            class="toolbar-btn"
            onclick="resetZoom()"
            title="Reset zoom"
          >
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M8.707 1.5a1 1 0 0 0-1.414 0L.646 8.146a.5.5 0 0 0 .708.708L2 8.207V13.5A1.5 1.5 0 0 0 3.5 15h9a1.5 1.5 0 0 0 1.5-1.5V8.207l.646.647a.5.5 0 0 0 .708-.708L13 5.793V2.5a.5.5 0 0 0-.5-.5h-1a.5.5 0 0 0-.5.5v1.293zM13 7.207V13.5a.5.5 0 0 1-.5.5h-9a.5.5 0 0 1-.5-.5V7.207l5-5z"/>
            </svg>
          </button>
          <button
            class="toolbar-btn"
            onclick="exportSVG()"
            title="Export SVG"
          >
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M.5 9.9a.5.5 0 0 1 .5.5v2.5a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-2.5a.5.5 0 0 1 1 0v2.5a2 2 0 0 1-2 2H2a2 2 0 0 1-2-2v-2.5a.5.5 0 0 1 .5-.5"/><path d="M7.646 11.854a.5.5 0 0 0 .708 0l3-3a.5.5 0 0 0-.708-.708L8.5 10.293V1.5a.5.5 0 0 0-1 0v8.793L5.354 8.146a.5.5 0 1 0-.708.708z"/>
            </svg>
          </button>
          <a
            class="toolbar-btn"
            href="https://docs.python.org/3.15/library/profiling.sampling.html"
            target="_blank"
            title="Documentation"
          >
            <svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M1 2.828c.885-.37 2.154-.769 3.388-.893 1.33-.134 2.458.063 3.112.752v9.746c-.935-.53-2.12-.603-3.213-.493-1.18.12-2.37.461-3.287.811zm7.5-.141c.654-.689 1.782-.886 3.112-.752 1.234.124 2.503.523 3.388.893v9.923c-.918-.35-2.107-.692-3.287-.81-1.094-.111-2.278-.039-3.213.492zM8 1.783C7.015.936 5.587.81 4.287.94c-1.514.153-3.042.672-3.994 1.105A.5.5 0 0 0 0 2.5v11a.5.5 0 0 0 .707.455c.882-.4 2.303-.881 3.68-1.02 1.409-.142 2.59.087 3.223.877a.5.5 0 0 0 .78 0c.633-.79 1.814-1.019 3.222-.877 1.378.139 2.8.62 3.681 1.02A.5.5 0 0 0 16 13.5v-11a.5.5 0 0 0-.293-.455c-.952-.433-2.48-.952-3.994-1.105C10.413.809 8.985.936 8 1.783"/>
            </svg>
          </a>
          <button
            class="toolbar-btn theme-toggle"
            onclick="toggleTheme()"
            title="Toggle theme"
            id="theme-btn"
          >
            <svg class="icon-moon" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16">
              <path d="M6 .278a.77.77 0 0 1 .08.858 7.2 7.2 0 0 0-.878 3.46c0 4.021 3.278 7.277 7.318 7.277q.792-.001 1.533-.16a.79.79 0 0 1 .81.316.73.73 0 0 1-.031.893A8.35 8.35 0 0 1 8.344 16C3.734 16 0 12.286 0 7.71 0 4.266 2.114 1.312 5.124.06A.75.75 0 0 1 6 .278M4.858 1.311A7.27 7.27 0 0 0 1.025 7.71c0 4.02 3.279 7.276 7.319 7.276a7.32 7.32 0 0 0 5.205-2.162q-.506.063-1.029.063c-4.61 0-8.343-3.714-8.343-8.29 0-1.167.242-2.278.681-3.286"/>
            </svg>
            <svg class="icon-sun" xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" viewBox="0 0 16 16" style="display:none">
              <path d="M8 11a3 3 0 1 1 0-6 3 3 0 0 1 0 6m0 1a4 4 0 1 0 0-8 4 4 0 0 0 0 8M8 0a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 0m0 13a.5.5 0 0 1 .5.5v2a.5.5 0 0 1-1 0v-2A.5.5 0 0 1 8 13m8-5a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2a.5.5 0 0 1 .5.5M3 8a.5.5 0 0 1-.5.5h-2a.5.5 0 0 1 0-1h2A.5.5 0 0 1 3 8m10.657-5.657a.5.5 0 0 1 0 .707l-1.414 1.415a.5.5 0 1 1-.707-.708l1.414-1.414a.5.5 0 0 1 .707 0m-9.193 9.193a.5.5 0 0 1 0 .707L3.05 13.657a.5.5 0 0 1-.707-.707l1.414-1.414a.5.5 0 0 1 .707 0m9.193 2.121a.5.5 0 0 1-.707 0l-1.414-1.414a.5.5 0 0 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .707M4.464 4.465a.5.5 0 0 1-.707 0L2.343 3.05a.5.5 0 1 1 .707-.707l1.414 1.414a.5.5 0 0 1 0 .708"/>
            </svg>
          </button>
        </div>
      </header>

      <!-- Main Content -->
      <div class="main-content">
        <!-- Sidebar -->
        <aside class="sidebar" id="sidebar">
          <button
            class="sidebar-toggle"
            onclick="toggleSidebar()"
            title="Toggle sidebar"
            aria-label="Toggle sidebar"
          >
            <svg width="16" height="16" viewBox="0 0 16 16" fill="none">
              <path d="M10 12L6 8L10 4" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"/>
            </svg>
          </button>
          <div class="sidebar-resize-handle" id="sidebar-resize-handle"></div>

          <div class="sidebar-content">
            <!-- Logo Section -->
            <div class="sidebar-logo">
              <div class="sidebar-logo-img"><img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAqkAAAJYCAYAAABB6H97AAAGF2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4KPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNS41LjAiPgogPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4KICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIgogICAgeG1sbnM6cGhvdG9zaG9wPSJodHRwOi8vbnMuYWRvYmUuY29tL3Bob3Rvc2hvcC8xLjAvIgogICAgeG1sbnM6ZGM9Imh0dHA6Ly9wdXJsLm9yZy9kYy9lbGVtZW50cy8xLjEvIgogICAgeG1sbnM6ZXhpZj0iaHR0cDovL25zLmFkb2JlLmNvbS9leGlmLzEuMC8iCiAgICB4bWxuczp0aWZmPSJodHRwOi8vbnMuYWRvYmUuY29tL3RpZmYvMS4wLyIKICAgIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIgogICAgeG1sbnM6c3RFdnQ9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZUV2ZW50IyIKICAgeG1wOkNyZWF0ZURhdGU9IjIwMjYtMDQtMjBUMjI6NTk6MzgrMDE6MDAiCiAgIHhtcDpNb2RpZnlEYXRlPSIyMDI2LTA0LTI0VDE1OjA2OjA2KzAxOjAwIgogICB4bXA6TWV0YWRhdGFEYXRlPSIyMDI2LTA0LTI0VDE1OjA2OjA2KzAxOjAwIgogICBwaG90b3Nob3A6RGF0ZUNyZWF0ZWQ9IjIwMjYtMDQtMjBUMjI6NTk6MzgrMDE6MDAiCiAgIHBob3Rvc2hvcDpDb2xvck1vZGU9IjMiCiAgIHBob3Rvc2hvcDpJQ0NQcm9maWxlPSJzUkdCIElFQzYxOTY2LTIu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" alt="Tachyon logo"/></div>
            </div>

            <!-- View Mode Section -->
            <section class="sidebar-section view-mode-section collapsible" id="view-mode-section">
              <button class="section-header" onclick="toggleSection('view-mode-section')">
                <h3 class="section-title">View Mode</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
                <!-- Elided Stacks Toggle (only shown for diff flamegraphs with elided paths) -->
                <div class="toggle-switch" id="toggle-elided" tabindex="0" style="display: none;">
                  <span class="toggle-label active" data-text="Differential">Differential</span>
                  <div class="toggle-track"></div>
                  <span class="toggle-label" data-text="Elided" title="Code paths that existed in baseline but are missing from current profile">Elided</span>
                </div>

                <div class="toggle-switch" id="toggle-path-display" title="Toggle between module names and full file paths" tabindex="0">
                  <span class="toggle-label" data-text="File Paths">File Paths</span>
                  <div class="toggle-track on"></div>
                  <span class="toggle-label active" data-text="Module Names">Module Names</span>
                </div>

                <div class="toggle-switch" id="toggle-invert" title="Toggle between standard and inverted flamegraph view" tabindex="0">
                  <span class="toggle-label active" data-text="Flamegraph">Flamegraph</span>
                  <div class="toggle-track"></div>
                  <span class="toggle-label" data-text="Inverted Flamegraph">Inverted Flamegraph</span>
                </div>
              </div>
            </section>

            <!-- Profile Summary Section -->
            <section class="sidebar-section collapsible" id="summary-section">
              <button class="section-header" onclick="toggleSection('summary-section')">
                <h3 class="section-title">Profile Summary</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
                <div class="summary-grid">
                  <div class="summary-card" id="summary-samples">
                    <div class="summary-icon">📊</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-total-samples">--</div>
                      <div class="summary-label">Total Samples</div>
                    </div>
                  </div>
                  <div class="summary-card" id="summary-duration">
                    <div class="summary-icon">⏱</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-duration">--</div>
                      <div class="summary-label">Duration</div>
                    </div>
                  </div>
                  <div class="summary-card" id="summary-rate">
                    <div class="summary-icon">⚡</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-sample-rate">--</div>
                      <div class="summary-label">Samples/sec</div>
                    </div>
                  </div>
                  <div class="summary-card" id="summary-functions">
                    <div class="summary-icon">λ</div>
                    <div class="summary-data">
                      <div class="summary-value" id="stat-functions">--</div>
                      <div class="summary-label">Functions</div>
                    </div>
                  </div>
                </div>
                <!-- Efficiency Bar -->
                <div class="efficiency-section" id="efficiency-section" style="display: none;">
                  <div class="bar-header">
                    <span class="bar-label">Sampling Efficiency</span>
                    <span class="bar-value" id="stat-efficiency">--</span>
                  </div>
                  <div class="bar">
                    <div class="bar-fill" id="efficiency-fill"></div>
                  </div>
                  <div class="bar-header">
                    <span class="bar-label">Missed samples</span>
                    <span class="bar-value" id="stat-missed-samples">--</span>
                  </div>
                  <div class="bar">
                    <div class="bar-fill" id="missed-samples-fill"></div>
                  </div>

                </div>
              </div>
            </section>

            <!-- Hotspots Section -->
            <section class="sidebar-section collapsible" id="hotspots-section">
              <button class="section-header" onclick="toggleSection('hotspots-section')">
                <h3 class="section-title">Hotspots</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
              <div class="hotspot" id="hotspot-1">
                <div class="hotspot-rank hotspot-rank--1">1</div>
                <div class="hotspot-info">
                  <div class="hotspot-func" id="hotspot-func-1">--</div>
                  <div class="hotspot-file" id="hotspot-file-1">--</div>
                  <div class="hotspot-stats">
                    <span class="hotspot-percent" id="hotspot-percent-1">--</span>
                    <span id="hotspot-samples-1"></span>
                  </div>
                </div>
              </div>
              <div class="hotspot" id="hotspot-2">
                <div class="hotspot-rank hotspot-rank--2">2</div>
                <div class="hotspot-info">
                  <div class="hotspot-func" id="hotspot-func-2">--</div>
                  <div class="hotspot-file" id="hotspot-file-2">--</div>
                  <div class="hotspot-stats">
                    <span class="hotspot-percent" id="hotspot-percent-2">--</span>
                    <span id="hotspot-samples-2"></span>
                  </div>
                </div>
              </div>
              <div class="hotspot" id="hotspot-3">
                <div class="hotspot-rank hotspot-rank--3">3</div>
                <div class="hotspot-info">
                  <div class="hotspot-func" id="hotspot-func-3">--</div>
                  <div class="hotspot-file" id="hotspot-file-3">--</div>
                  <div class="hotspot-stats">
                    <span class="hotspot-percent" id="hotspot-percent-3">--</span>
                    <span id="hotspot-samples-3"></span>
                  </div>
                </div>
              </div>
              </div>
            </section>

            <!-- Thread Stats Section (GIL/GC) -->
            <section class="sidebar-section thread-stats-section collapsible" id="thread-stats-bar" style="display: none;">
              <button class="section-header" onclick="toggleSection('thread-stats-bar')">
                <h3 class="section-title">Runtime Stats</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
                <div class="stats-container">
                  <div class="stat-item" id="gil-held-stat">
                    <div class="bar-header">
                      <span class="bar-label">GIL Held</span>
                      <span class="bar-value" id="gil-held-pct">--</span>
                    </div>
                    <div class="bar">
                      <div class="bar-fill bar-fill--green" id="gil-held-fill"></div>
                    </div>
                  </div>
                  <div class="stat-item" id="gil-released-stat">
                    <div class="bar-header">
                      <span class="bar-label">GIL Released</span>
                      <span class="bar-value" id="gil-released-pct">--</span>
                    </div>
                    <div class="bar">
                      <div class="bar-fill bar-fill--red" id="gil-released-fill"></div>
                    </div>
                  </div>
                  <div class="stat-item" id="gil-waiting-stat">
                    <div class="bar-header">
                      <span class="bar-label">Waiting GIL</span>
                      <span class="bar-value" id="gil-waiting-pct">--</span>
                    </div>
                    <div class="bar">
                      <div class="bar-fill bar-fill--yellow" id="gil-waiting-fill"></div>
                    </div>
                  </div>
                  <div class="stat-item" id="gc-stat">
                    <div class="bar-header">
                      <span class="bar-label">GC</span>
                      <span class="bar-value" id="gc-pct">--</span>
                    </div>
                    <div class="bar">
                      <div class="bar-fill bar-fill--purple" id="gc-fill"></div>
                    </div>
                  </div>
                  <div class="stat-item" id="exc-stat">
                    <div class="bar-header">
                      <span class="bar-label">Exception</span>
                      <span class="bar-value" id="exc-pct">--</span>
                    </div>
                    <div class="bar">
                      <div class="bar-fill bar-fill--red" id="exc-fill"></div>
                    </div>
                  </div>
                </div>
              </div>
            </section>

            <!-- Thread Filter Section -->
            <section class="sidebar-section filter-section" id="thread-section" style="display: none;">
              <label class="filter-label" for="thread-filter">Thread Filter</label>
              <select
                id="thread-filter"
                class="filter-select"
                onchange="filterByThread()"
              >
                <option value="all">All Threads</option>
              </select>
            </section>

            <!-- Heat Map Legend (shown for normal flamegraphs) -->
            <section class="sidebar-section legend-section collapsible" id="heatmap-legend-section">
              <button class="section-header" onclick="toggleSection('heatmap-legend-section')">
                <h3 class="section-title">Heat Map</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
              <div class="legend">
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-8)"></div>
                  <span class="legend-label">Hottest</span>
                  <span class="legend-range">&ge;60%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-7)"></div>
                  <span class="legend-label">Very Hot</span>
                  <span class="legend-range">35-60%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-6)"></div>
                  <span class="legend-label">Hot</span>
                  <span class="legend-range">18-35%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-5)"></div>
                  <span class="legend-label">Warm</span>
                  <span class="legend-range">12-18%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-4)"></div>
                  <span class="legend-label">Medium</span>
                  <span class="legend-range">6-12%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-3)"></div>
                  <span class="legend-label">Cool</span>
                  <span class="legend-range">3-6%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-2)"></div>
                  <span class="legend-label">Cold</span>
                  <span class="legend-range">1-3%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--heat-1)"></div>
                  <span class="legend-label">Coldest</span>
                  <span class="legend-range">&lt;1%</span>
                </div>
              </div>
              </div>
            </section>

            <!-- Differential Legend (shown for differential flamegraphs) -->
            <section class="sidebar-section legend-section collapsible" id="diff-legend-section" style="display: none;">
              <button class="section-header" onclick="toggleSection('diff-legend-section')">
                <h3 class="section-title">Differential Colors</h3>
                <svg class="section-chevron" width="12" height="12" viewBox="0 0 12 12" fill="none">
                  <path d="M3 4.5L6 7.5L9 4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
                </svg>
              </button>
              <div class="section-content">
              <div class="legend">
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-regression-deep)"></div>
                  <span class="legend-label">Deep Regression</span>
                  <span class="legend-range">&ge;100%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-regression-medium)"></div>
                  <span class="legend-label">Medium Regression</span>
                  <span class="legend-range">50-100%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-regression-light)"></div>
                  <span class="legend-label">Light Regression</span>
                  <span class="legend-range">30-50%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-regression-verylight)"></div>
                  <span class="legend-label">Minor Regression</span>
                  <span class="legend-range">15-30%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-neutral)"></div>
                  <span class="legend-label">Neutral</span>
                  <span class="legend-range">-15% to 15%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-improvement-verylight)"></div>
                  <span class="legend-label">Minor Improvement</span>
                  <span class="legend-range">-30% to -15%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-improvement-light)"></div>
                  <span class="legend-label">Light Improvement</span>
                  <span class="legend-range">-50% to -30%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-improvement-medium)"></div>
                  <span class="legend-label">Strong Improvement</span>
                  <span class="legend-range">&lt;-50%</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-new)"></div>
                  <span class="legend-label">New</span>
                  <span class="legend-range">No counterpart in baseline</span>
                </div>
                <div class="legend-item">
                  <div class="legend-color" style="background: var(--diff-elided)"></div>
                  <span class="legend-label">Removed</span>
                  <span class="legend-range">No counterpart in current</span>
                </div>
              </div>
              </div>
            </section>
          </div>
        </aside>

        <!-- Chart Area -->
        <main class="chart-area">
          <div id="chart"></div>
        </main>
      </div>

      <!-- Status Bar -->
      <footer class="status-bar">
        <span class="status-item" id="status-brand">
          <span class="status-value">Tachyon Profiler</span>
        </span>
        <span class="status-item" id="status-tagline">
          <span class="status-label">Python Sampling Profiler</span>
        </span>
        <span class="status-item" id="status-location" style="display: none;">
          <span class="status-label">File:</span>
          <span class="status-value" id="status-file">--</span>
        </span>
        <span class="status-item" id="status-func-item" style="display: none;">
          <span class="status-label">Func:</span>
          <span class="status-value" id="status-func">--</span>
        </span>
        <span class="status-item" id="status-time-item" style="display: none;">
          <span class="status-label">Time:</span>
          <span class="status-value" id="status-time">--</span>
        </span>
        <span class="status-item" id="status-percent-item" style="display: none;">
          <span class="status-value accent" id="status-percent">--</span>
        </span>
      </footer>
    </div>

    <script>
// Tachyon Profiler - Shared JavaScript
// Common utilities shared between flamegraph and heatmap views

// ============================================================================
// Theme Support
// ============================================================================

// Storage key for theme preference
const THEME_STORAGE_KEY = 'tachyon-theme';

// Get the preferred theme from localStorage or system preference
function getPreferredTheme() {
  const saved = localStorage.getItem(THEME_STORAGE_KEY);
  if (saved) return saved;
  return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';
}

// Apply theme and update UI
function applyTheme(theme) {
  document.documentElement.setAttribute('data-theme', theme);
  const btn = document.getElementById('theme-btn');
  if (btn) {
    const moonIcon = btn.querySelector('.icon-moon');
    const sunIcon = btn.querySelector('.icon-sun');
    if (moonIcon) moonIcon.style.display = theme === 'dark' ? 'none' : '';
    if (sunIcon) sunIcon.style.display = theme === 'dark' ? '' : 'none';
  }
}

// Toggle theme and save preference. Returns the new theme.
function toggleAndSaveTheme() {
  const current = document.documentElement.getAttribute('data-theme') || 'light';
  const next = current === 'light' ? 'dark' : 'light';
  applyTheme(next);
  localStorage.setItem(THEME_STORAGE_KEY, next);
  return next;
}

// ============================================================================
// Toggle Switch UI
// ============================================================================

function updateToggleUI(toggleId, isOn) {
  const toggle = document.getElementById(toggleId);
  if (toggle) {
    const track = toggle.querySelector('.toggle-track');
    const labels = toggle.querySelectorAll('.toggle-label');
    if (isOn) {
      track.classList.add('on');
      labels[0].classList.remove('active');
      labels[1].classList.add('active');
    } else {
      track.classList.remove('on');
      labels[0].classList.add('active');
      labels[1].classList.remove('active');
    }
  }
}

const EMBEDDED_DATA = {"name": 224, "value": 1892, "children": [{"name": 4, "value": 1892, "children": [{"name": 7, "value": 1892, "children": [{"name": 11, "value": 1892, "children": [{"name": 54, "value": 1874, "children": [{"name": 83, "value": 1872, "children": [{"name": 87, "value": 1872, "children": [{"name": 198, "value": 735, "children": [{"name": 218, "value": 283, "children": [], "filename": 22, "lineno": 76, "funcname": 212, "threads": [98230], "source": [219, 214, 220, 221, 217], "opcodes": {"44": 146, "113": 16, "94": 32, "112": 51, "78": 17, "173": 18, "190": 1, "146": 1, "176": 1}, "self": 283, "thread_values": {"98230": [283, 283]}, "module": 225, "label": 226}, {"name": 204, "value": 250, "children": [], "filename": 22, "lineno": 70, "funcname": 203, "threads": [98230], "source": [205, 206, 207], "opcodes": {"3": 74, "50": 62, "12": 100, "86": 3, "176": 7, "82": 4}, "self": 250, "thread_values": {"98230": [250, 250]}, "module": 225, "label": 227}, {"name": 213, "value": 185, "children": [], "filename": 22, "lineno": 77, "funcname": 212, "threads": [98230], "source": [214, 215, 216, 217], "opcodes": {"44": 84, "94": 42, "112": 8, "172": 16, "167": 12, "113": 11, "78": 6, "176": 4, "103": 2}, "self": 185, "thread_values": {"98230": [185, 185]}, "module": 225, "label": 228}, {"name": 208, "value": 9, "children": [], "filename": 22, "lineno": 69, "funcname": 203, "threads": [98230], "source": [209, 205, 210, 211], "opcodes": {"173": 7, "146": 2}, "self": 9, "thread_values": {"98230": [9, 9]}, "module": 225, "label": 229}, {"name": 222, "value": 8, "children": [], "filename": 22, "lineno": 78, "funcname": 212, "threads": [98230], "source": [215, 221, 223], "opcodes": {"148": 7, "190": 1}, "self": 8, "thread_values": {"98230": [8, 8]}, "module": 225, "label": 230}], "filename": 22, "lineno": 97, "funcname": 197, "threads": [98230], "source": [199, 200, 201, 202], "opcodes": {"52": 735}, "self": 0, "thread_values": {"98230": [735, 0]}, "module": 225, "label": 231}, {"name": 134, "value": 471, "children": [{"name": 149, "value": 434, "children": [{"name": 177, "value": 222, "children": [{"name": 185, "value": 220, "children": [{"name": 191, "value": 220, "children": [], "filename": 183, "lineno": 361, "funcname": 190, "threads": [98230], "source": [192, 193, 194, 195, 196], "opcodes": {"52": 1, "160": 218, "209": 1}, "self": 220, "thread_values": {"98230": [220, 220]}, "module": 232, "label": 233}], "filename": 183, "lineno": 345, "funcname": 184, "threads": [98230], "source": [186, 187, 188, 189], "opcodes": {"55": 2, "153": 218}, "self": 0, "thread_values": {"98230": [220, 0]}, "module": 232, "label": 234}], "filename": 154, "lineno": 351, "funcname": 176, "threads": [98230], "source": [178, 179, 180, 181, 182], "opcodes": {"52": 2, "162": 220}, "self": 2, "thread_values": {"98230": [222, 2]}, "module": 235, "label": 236}, {"name": 156, "value": 199, "children": [{"name": 164, "value": 199, "children": [{"name": 171, "value": 199, "children": [], "filename": 162, "lineno": 263, "funcname": 170, "threads": [98230], "source": [172, 173, 174, 175], "opcodes": {"52": 1, "160": 198}, "self": 199, "thread_values": {"98230": [199, 199]}, "module": 237, "label": 238}], "filename": 162, "lineno": 202, "funcname": 163, "threads": [98230], "source": [165, 166, 167, 168, 169], "opcodes": {"55": 1, "153": 198}, "self": 0, "thread_values": {"98230": [199, 0]}, "module": 237, "label": 239}], "filename": 154, "lineno": 234, "funcname": 155, "threads": [98230], "source": [157, 158, 159, 160, 161], "opcodes": {"52": 1, "161": 198}, "self": 0, "thread_values": {"98230": [199, 0]}, "module": 235, "label": 240}], "filename": 22, "lineno": 60, "funcname": 148, "threads": [98230], "source": [150, 151, 152, 153], "opcodes": {"52": 434}, "self": 13, "thread_values": {"98230": [434, 13]}, "module": 225, "label": 241}, {"name": 145, "value": 24, "children": [], "filename": 22, "lineno": 47, "funcname": 139, "threads": [98230], "source": [142, 146, 147], "opcodes": {"148": 23, "158": 1}, "self": 24, "thread_values": {"98230": [24, 24]}, "module": 225, "label": 242}, {"name": 140, "value": 13, "children": [], "filename": 22, "lineno": 46, "funcname": 139, "threads": [98230], "source": [141, 142, 143, 144], "opcodes": {"52": 1, "148": 11, "158": 1}, "self": 13, "thread_values": {"98230": [13, 13]}, "module": 225, "label": 243}], "filename": 22, "lineno": 91, "funcname": 133, "threads": [98230], "source": [135, 136, 137, 138], "opcodes": {"52": 471}, "self": 0, "thread_values": {"98230": [471, 0]}, "module": 225, "label": 244}, {"name": 93, "value": 259, "children": [{"name": 130, "value": 130, "children": [], "filename": 22, "lineno": 37, "funcname": 114, "threads": [98230], "source": [126, 131, 132, 129], "opcodes": {"137": 69, "133": 22, "87": 6, "129": 11, "200": 8, "59": 3, "176": 1, "117": 8, "86": 2}, "self": 130, "thread_values": {"98230": [130, 130]}, "module": 225, "label": 245}, {"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 106, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 105, "children": [{"name": 100, "value": 103, "children": [{"name": 100, "value": 99, "children": [{"name": 100, "value": 87, "children": [{"name": 100, "value": 69, "children": [{"name": 100, "value": 52, "children": [{"name": 100, "value": 30, "children": [{"name": 100, "value": 11, "children": [{"name": 100, "value": 4, "children": [{"name": 100, "value": 2, "children": [{"name": 104, "value": 1, "children": [], "filename": 22, "lineno": 15, "funcname": 99, "threads": [98230], "source": [105, 106, 107, 102, 108], "opcodes": {"100": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 225, "label": 246}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 2}, "self": 1, "thread_values": {"98230": [2, 1]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 2, "35": 2}, "self": 2, "thread_values": {"98230": [4, 2]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 9, "35": 2}, "self": 7, "thread_values": {"98230": [11, 7]}, "module": 225, "label": 247}, {"name": 109, "value": 3, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 3}, "self": 3, "thread_values": {"98230": [3, 3]}, "module": 225, "label": 248}, {"name": 112, "value": 1, "children": [], "filename": 22, "lineno": 16, "funcname": 99, "threads": [98230], "source": [106, 101, 113, 108], "opcodes": {"35": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 225, "label": 249}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 28, "35": 2}, "self": 15, "thread_values": {"98230": [30, 15]}, "module": 225, "label": 247}, {"name": 109, "value": 2, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 2}, "self": 2, "thread_values": {"98230": [2, 2]}, "module": 225, "label": 248}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 51, "35": 1}, "self": 20, "thread_values": {"98230": [52, 20]}, "module": 225, "label": 247}, {"name": 104, "value": 1, "children": [], "filename": 22, "lineno": 15, "funcname": 99, "threads": [98230], "source": [105, 106, 107, 102, 108], "opcodes": {"100": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 225, "label": 246}, {"name": 109, "value": 1, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 225, "label": 248}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 66, "35": 2, "94": 1}, "self": 15, "thread_values": {"98230": [69, 15]}, "module": 225, "label": 247}, {"name": 109, "value": 1, "children": [], "filename": 22, "lineno": 13, "funcname": 99, "threads": [98230], "source": [110, 111, 106, 101], "opcodes": {"194": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 225, "label": 248}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 84, "35": 3}, "self": 17, "thread_values": {"98230": [87, 17]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 99}, "self": 12, "thread_values": {"98230": [99, 12]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 102, "35": 1}, "self": 4, "thread_values": {"98230": [103, 4]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}, "self": 2, "thread_values": {"98230": [105, 2]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}, "self": 0, "thread_values": {"98230": [105, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 105}, "self": 0, "thread_values": {"98230": [105, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 1, "thread_values": {"98230": [106, 1]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}], "filename": 22, "lineno": 17, "funcname": 99, "threads": [98230], "source": [101, 102, 103], "opcodes": {"161": 106}, "self": 0, "thread_values": {"98230": [106, 0]}, "module": 225, "label": 247}, {"name": 124, "value": 19, "children": [], "filename": 22, "lineno": 36, "funcname": 114, "threads": [98230], "source": [125, 126, 127, 128, 129], "opcodes": {"173": 13, "16": 3, "112": 1, "30": 1, "146": 1}, "self": 19, "thread_values": {"98230": [19, 19]}, "module": 225, "label": 250}, {"name": 115, "value": 2, "children": [], "filename": 22, "lineno": 30, "funcname": 114, "threads": [98230], "source": [116, 117, 118, 119, 120], "opcodes": {"112": 1, "160": 1}, "self": 2, "thread_values": {"98230": [2, 2]}, "module": 225, "label": 251}, {"name": 121, "value": 2, "children": [], "filename": 22, "lineno": 31, "funcname": 114, "threads": [98230], "source": [117, 122, 123, 120], "opcodes": {"160": 2}, "self": 2, "thread_values": {"98230": [2, 2]}, "module": 225, "label": 252}], "filename": 22, "lineno": 84, "funcname": 92, "threads": [98230], "source": [94, 95, 96, 97, 98], "opcodes": {"52": 259}, "self": 0, "thread_values": {"98230": [259, 0]}, "module": 225, "label": 253}, {"name": 218, "value": 189, "children": [], "filename": 22, "lineno": 76, "funcname": 212, "threads": [98230], "source": [219, 214, 220, 221, 217], "opcodes": {"44": 88, "173": 13, "112": 39, "78": 25, "113": 20, "94": 1, "176": 3}, "self": 189, "thread_values": {"98230": [189, 189]}, "module": 225, "label": 226}, {"name": 213, "value": 125, "children": [], "filename": 22, "lineno": 77, "funcname": 212, "threads": [98230], "source": [214, 215, 216, 217], "opcodes": {"167": 33, "113": 16, "112": 7, "44": 42, "172": 12, "78": 2, "103": 3, "176": 5, "94": 5}, "self": 125, "thread_values": {"98230": [125, 125]}, "module": 225, "label": 228}, {"name": 130, "value": 60, "children": [], "filename": 22, "lineno": 37, "funcname": 114, "threads": [98230], "source": [126, 131, 132, 129], "opcodes": {"137": 36, "117": 2, "59": 2, "86": 4, "129": 7, "133": 7, "200": 1, "87": 1}, "self": 60, "thread_values": {"98230": [60, 60]}, "module": 225, "label": 245}, {"name": 145, "value": 14, "children": [], "filename": 22, "lineno": 47, "funcname": 139, "threads": [98230], "source": [142, 146, 147], "opcodes": {"148": 14}, "self": 14, "thread_values": {"98230": [14, 14]}, "module": 225, "label": 242}, {"name": 140, "value": 9, "children": [], "filename": 22, "lineno": 46, "funcname": 139, "threads": [98230], "source": [141, 142, 143, 144], "opcodes": {"148": 7, "158": 2}, "self": 9, "thread_values": {"98230": [9, 9]}, "module": 225, "label": 243}, {"name": 124, "value": 6, "children": [], "filename": 22, "lineno": 36, "funcname": 114, "threads": [98230], "source": [125, 126, 127, 128, 129], "opcodes": {"112": 3, "146": 1, "173": 2}, "self": 6, "thread_values": {"98230": [6, 6]}, "module": 225, "label": 250}, {"name": 222, "value": 3, "children": [], "filename": 22, "lineno": 78, "funcname": 212, "threads": [98230], "source": [215, 221, 223], "opcodes": {"148": 3}, "self": 3, "thread_values": {"98230": [3, 3]}, "module": 225, "label": 230}, {"name": 115, "value": 1, "children": [], "filename": 22, "lineno": 30, "funcname": 114, "threads": [98230], "source": [116, 117, 118, 119, 120], "opcodes": {"160": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 225, "label": 251}], "filename": 22, "lineno": 105, "funcname": 86, "threads": [98230], "source": [88, 89, 90, 91], "opcodes": {"52": 1872}, "self": 0, "thread_values": {"98230": [1872, 0]}, "module": 225, "label": 254}], "filename": 22, "lineno": 118, "funcname": 6, "threads": [98230], "source": [84, 85], "opcodes": {"52": 1872}, "self": 0, "thread_values": {"98230": [1872, 0]}, "module": 225, "label": 255}, {"name": 23, "value": 2, "children": [{"name": 31, "value": 2, "children": [{"name": 33, "value": 2, "children": [{"name": 35, "value": 2, "children": [{"name": 38, "value": 2, "children": [{"name": 40, "value": 2, "children": [{"name": 58, "value": 2, "children": [{"name": 65, "value": 2, "children": [{"name": 72, "value": 2, "children": [{"name": 31, "value": 1, "children": [{"name": 33, "value": 1, "children": [{"name": 35, "value": 1, "children": [{"name": 53, "value": 1, "children": [{"name": 40, "value": 1, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 29, "label": 40}], "filename": 36, "lineno": 1033, "funcname": 52, "threads": [98230], "opcodes": {"162": 1}, "self": 0, "thread_values": {"98230": [1, 0]}, "module": 36, "label": 53}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 1}, "self": 0, "thread_values": {"98230": [1, 0]}, "module": 29, "label": 35}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 1}, "self": 0, "thread_values": {"98230": [1, 0]}, "module": 29, "label": 33}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 1}, "self": 0, "thread_values": {"98230": [1, 0]}, "module": 29, "label": 31}, {"name": 78, "value": 1, "children": [{"name": 80, "value": 1, "children": [{"name": 82, "value": 1, "children": [], "filename": 29, "lineno": 446, "funcname": 81, "threads": [98230], "opcodes": {"143": 1}, "self": 1, "thread_values": {"98230": [1, 1]}, "module": 29, "label": 82}], "filename": 29, "lineno": 420, "funcname": 79, "threads": [98230], "opcodes": {"161": 1}, "self": 0, "thread_values": {"98230": [1, 0]}, "module": 29, "label": 80}], "filename": 29, "lineno": 1273, "funcname": 30, "threads": [98230], "opcodes": {"161": 1}, "self": 0, "thread_values": {"98230": [1, 0]}, "module": 29, "label": 78}], "filename": 41, "lineno": 108, "funcname": 71, "threads": [98230], "source": [73, 74, 75, 76, 77], "opcodes": {"73": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 256, "label": 257}], "filename": 41, "lineno": 137, "funcname": 64, "threads": [98230], "source": [66, 67, 68, 69, 70], "opcodes": {"52": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 256, "label": 258}], "filename": 41, "lineno": 269, "funcname": 6, "threads": [98230], "source": [59, 60, 61, 62, 63], "opcodes": {"161": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 256, "label": 259}], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 29, "label": 40}], "filename": 36, "lineno": 747, "funcname": 37, "threads": [98230], "opcodes": {"162": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 36, "label": 38}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 29, "label": 35}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 29, "label": 33}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 29, "label": 31}], "filename": 22, "lineno": 5, "funcname": 6, "threads": [98230], "source": [24, 25, 26, 27, 28], "opcodes": {"73": 2}, "self": 0, "thread_values": {"98230": [2, 0]}, "module": 225, "label": 260}], "filename": 5, "lineno": 193, "funcname": 16, "threads": [98230], "source": [55, 56, 21, 57], "opcodes": {"52": 1874}, "self": 0, "thread_values": {"98230": [1874, 0]}, "module": 261, "label": 262}, {"name": 17, "value": 18, "children": [{"name": 23, "value": 12, "children": [{"name": 31, "value": 12, "children": [{"name": 33, "value": 12, "children": [{"name": 35, "value": 12, "children": [{"name": 38, "value": 12, "children": [{"name": 40, "value": 12, "children": [{"name": 42, "value": 12, "children": [{"name": 31, "value": 12, "children": [{"name": 33, "value": 12, "children": [{"name": 47, "value": 12, "children": [{"name": 53, "value": 7, "children": [{"name": 40, "value": 7, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 7}, "self": 7, "thread_values": {"98230": [7, 7]}, "module": 29, "label": 40}], "filename": 36, "lineno": 1033, "funcname": 52, "threads": [98230], "opcodes": {"162": 7}, "self": 0, "thread_values": {"98230": [7, 0]}, "module": 36, "label": 53}, {"name": 49, "value": 5, "children": [{"name": 51, "value": 4, "children": [{"name": 40, "value": 4, "children": [], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 4}, "self": 4, "thread_values": {"98230": [4, 4]}, "module": 29, "label": 40}], "filename": 36, "lineno": 1025, "funcname": 50, "threads": [98230], "opcodes": {"162": 4}, "self": 0, "thread_values": {"98230": [4, 0]}, "module": 36, "label": 51}], "filename": 29, "lineno": 786, "funcname": 48, "threads": [98230], "opcodes": {"161": 5}, "self": 1, "thread_values": {"98230": [5, 1]}, "module": 29, "label": 49}], "filename": 29, "lineno": 843, "funcname": 34, "threads": [98230], "opcodes": {"161": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 47}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 33}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 31}], "filename": 41, "lineno": 190, "funcname": 6, "threads": [98230], "source": [43, 44, 45, 46], "opcodes": {"73": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 256, "label": 263}], "filename": 29, "lineno": 491, "funcname": 39, "threads": [98230], "opcodes": {"4": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 40}], "filename": 36, "lineno": 747, "funcname": 37, "threads": [98230], "opcodes": {"162": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 36, "label": 38}], "filename": 29, "lineno": 857, "funcname": 34, "threads": [98230], "opcodes": {"161": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 35}], "filename": 29, "lineno": 1247, "funcname": 32, "threads": [98230], "opcodes": {"161": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 33}], "filename": 29, "lineno": 1276, "funcname": 30, "threads": [98230], "opcodes": {"161": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 29, "label": 31}], "filename": 22, "lineno": 5, "funcname": 6, "threads": [98230], "source": [24, 25, 26, 27, 28], "opcodes": {"73": 12}, "self": 0, "thread_values": {"98230": [12, 0]}, "module": 225, "label": 260}], "filename": 5, "lineno": 192, "funcname": 16, "threads": [98230], "source": [18, 19, 20, 21], "opcodes": {"55": 18}, "self": 6, "thread_values": {"98230": [18, 6]}, "module": 261, "label": 264}], "filename": 5, "lineno": 234, "funcname": 10, "threads": [98230], "source": [12, 13, 14, 15], "opcodes": {"52": 1892}, "self": 0, "thread_values": {"98230": [1892, 0]}, "module": 261, "label": 265}], "filename": 5, "lineno": 251, "funcname": 6, "threads": [98230], "source": [8, 9], "opcodes": {"52": 1892}, "self": 0, "thread_values": {"98230": [1892, 0]}, "module": 261, "label": 266}], "filename": 0, "lineno": 87, "funcname": 3, "threads": [98230], "opcodes": {"52": 1892}, "self": 0, "thread_values": {"98230": [1892, 0]}, "module": 0, "label": 4}], "filename": 0, "lineno": 196, "funcname": 1, "threads": [98230], "opcodes": {"52": 1892}, "stats": {"sample_interval_usec": 100, "duration_sec": 0.20179993600049784, "sample_rate": 10000.003171433224, "error_rate": 6.2438057482656095, "missed_samples": 0.0, "mode": 0, "thread_stats": {"has_gil_pct": 97.19873150105708, "on_cpu_pct": 0.0, "gil_requested_pct": 0.0, "has_exception_pct": 0.052854122621564484, "gc_pct": 0.0, "free_threaded": false, "has_gil": 1839, "on_cpu": 0, "gil_requested": 0, "unknown": 1892, "has_exception": 1, "total": 1892}, "per_thread_stats": {"98230": {"has_gil_pct": 97.19873150105708, "on_cpu_pct": 0.0, "gil_requested_pct": 0.0, "has_exception_pct": 0.052854122621564484, "gc_pct": 0.0, "has_gil": 1839, "on_cpu": 0, "gil_requested": 0, "unknown": 1892, "has_exception": 1, "total": 1892, "gc_samples": 0}}}, "strings": ["<frozen runpy>", "_run_module_as_main", "_run_module_as_main (<frozen runpy>:196)", "_run_code", "_run_code (<frozen runpy>:87)", "/home/pablogsal/github/python/main/Lib/profiling/sampling/_sync_coordinator.py", "<module>", "<module> (.../sampling/_sync_coordinator.py:251)", "  250: if __name__ == \"__main__\":", "\u2192 251:     main()", "main", "main (.../sampling/_sync_coordinator.py:234)", "  232:             script_path = target_args[0]", "  233:             script_args = target_args[1:]", "\u2192 234:             _execute_script(script_path, script_args, cwd)", "  236:     except CoordinatorError as e:", "_execute_script", "_execute_script (.../sampling/_sync_coordinator.py:192)", "  190:         sys.modules['__main__'] = sys.modules['__mp_main__'] = main_module", "\u2192 192:         code = compile(source_code, script_path, 'exec', module='__main__')", "  193:         exec(code, main_module.__dict__)", "  194:     except SyntaxError as e:", "/tmp/tachyon_demo.py", "<module> (/tmp/tachyon_demo.py:5)", "  3: for profiling visualization examples.", "  4: \"\"\"", "\u2192 5: import hashlib", "  6: import json", "  7: import random", "<frozen importlib._bootstrap>", "_find_and_load", "_find_and_load (<frozen importlib._bootstrap>:1276)", "_find_and_load_unlocked", "_find_and_load_unlocked (<frozen importlib._bootstrap>:1247)", "_load_unlocked", "_load_unlocked (<frozen importlib._bootstrap>:857)", "<frozen importlib._bootstrap_external>", "_LoaderBasics.exec_module", "_LoaderBasics.exec_module (<frozen importlib._bootstrap_external>:747)", "_call_with_frames_removed", "_call_with_frames_removed (<frozen importlib._bootstrap>:491)", "/home/pablogsal/github/python/main/Lib/hashlib.py", "<module> (/home/pablogsal/github/python/main/Lib/hashlib.py:190)", "  189: try:", "\u2192 190:     import _hashlib", "  191:     new = __hash_new", "  192:     __get_hash = __get_openssl_constructor", "_load_unlocked (<frozen importlib._bootstrap>:843)", "module_from_spec", "module_from_spec (<frozen importlib._bootstrap>:786)", "ExtensionFileLoader.create_module", "ExtensionFileLoader.create_module (<frozen importlib._bootstrap_external>:1025)", "ExtensionFileLoader.exec_module", "ExtensionFileLoader.exec_module (<frozen importlib._bootstrap_external>:1033)", "_execute_script (.../sampling/_sync_coordinator.py:193)", "  192:         code = compile(source_code, script_path, 'exec', module='__main__')", "\u2192 193:         exec(code, main_module.__dict__)", "  195:         raise TargetError(f\"Syntax error in script {script_path}: {e}\") from e", "<module> (/home/pablogsal/github/python/main/Lib/hashlib.py:269)", "  267:     # version not supporting that algorithm.", "  268:     try:", "\u2192 269:         globals()[__func_name] = __get_hash(__func_name)", "  270:     except ValueError as __exc:", "  271:         import logging as __logging", "__get_openssl_constructor", "__get_openssl_constructor (/home/pablogsal/github/python/main/Lib/hashlib.py:137)", "  135:     if name in __block_openssl_constructor:", "  136:         # Prefer our builtin blake2 implementation.", "\u2192 137:         return __get_builtin_constructor(name)", "  138:     try:", "  139:         # Fetch the OpenSSL hash function if it exists,", "__get_builtin_constructor", "__get_builtin_constructor (/home/pablogsal/github/python/main/Lib/hashlib.py:108)", "  106:             cache['SHA512'] = cache['sha512'] = _sha2.sha512", "  107:         elif name in {'blake2b', 'blake2s'}:", "\u2192 108:             import _blake2", "  109:             cache['blake2b'] = _blake2.blake2b", "  110:             cache['blake2s'] = _blake2.blake2s", "_find_and_load (<frozen importlib._bootstrap>:1273)", "_ModuleLockManager.__enter__", "_ModuleLockManager.__enter__ (<frozen importlib._bootstrap>:420)", "_get_module_lock", "_get_module_lock (<frozen importlib._bootstrap>:446)", "<module> (/tmp/tachyon_demo.py:118)", "  117: if __name__ == \"__main__\":", "\u2192 118:     run_profiling_demo()", "run_profiling_demo", "run_profiling_demo (/tmp/tachyon_demo.py:105)", "  103:     print(\"Starting Tachyon profiling demo...\")", "\u2192 105:     compute_section()", "  106:     io_section()", "  107:     string_section()", "compute_section", "compute_section (/tmp/tachyon_demo.py:84)", "  82: def compute_section():", "  83:     \"\"\"Pure computation workload.\"\"\"", "\u2192 84:     fibonacci_recursive(28)", "  85:     fibonacci_cached(100)", "  86:     matrix_multiply(80)", "fibonacci_recursive", "fibonacci_recursive (/tmp/tachyon_demo.py:17)", "  15:     if n <= 1:", "  16:         return n", "\u2192 17:     return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)", "fibonacci_recursive (/tmp/tachyon_demo.py:15)", "  13: def fibonacci_recursive(n):", "  14:     \"\"\"Classic recursive fibonacci - shows deep call stacks.\"\"\"", "\u2192 15:     if n <= 1:", "  17:     return fibonacci_recursive(n - 1) + fibonacci_recursive(n - 2)", "fibonacci_recursive (/tmp/tachyon_demo.py:13)", "  12: # Computational patterns", "\u2192 13: def fibonacci_recursive(n):", "fibonacci_recursive (/tmp/tachyon_demo.py:16)", "\u2192 16:         return n", "matrix_multiply", "matrix_multiply (/tmp/tachyon_demo.py:30)", "  28: def matrix_multiply(size=100):", "  29:     \"\"\"Matrix multiplication - CPU intensive numerical work.\"\"\"", "\u2192 30:     a = [[random.random() for _ in range(size)] for _ in range(size)]", "  31:     b = [[random.random() for _ in range(size)] for _ in range(size)]", "  32:     result = [[0.0] * size for _ in range(size)]", "matrix_multiply (/tmp/tachyon_demo.py:31)", "  30:     a = [[random.random() for _ in range(size)] for _ in range(size)]", "\u2192 31:     b = [[random.random() for _ in range(size)] for _ in range(size)]", "matrix_multiply (/tmp/tachyon_demo.py:36)", "  34:     for i in range(size):", "  35:         for j in range(size):", "\u2192 36:             for k in range(size):", "  37:                 result[i][j] += a[i][k] * b[k][j]", "  38:     return result", "matrix_multiply (/tmp/tachyon_demo.py:37)", "  36:             for k in range(size):", "\u2192 37:                 result[i][j] += a[i][k] * b[k][j]", "io_section", "io_section (/tmp/tachyon_demo.py:91)", "  89: def io_section():", "  90:     \"\"\"I/O-like workload (CPU-bound simulation).\"\"\"", "\u2192 91:     hash_data(800)", "  92:     json_processing(400)", "hash_data", "hash_data (/tmp/tachyon_demo.py:46)", "  44:     data = b\"Python profiling demonstration data \" * 100", "  45:     for _ in range(iterations):", "\u2192 46:         hashlib.sha256(data).hexdigest()", "  47:         hashlib.md5(data).hexdigest()", "hash_data (/tmp/tachyon_demo.py:47)", "  46:         hashlib.sha256(data).hexdigest()", "\u2192 47:         hashlib.md5(data).hexdigest()", "json_processing", "json_processing (/tmp/tachyon_demo.py:60)", "  58:     }", "  59:     for _ in range(iterations):", "\u2192 60:         encoded = json.dumps(data)", "  61:         json.loads(encoded)", "/home/pablogsal/github/python/main/Lib/json/__init__.py", "dumps", "dumps (.../json/__init__.py:234)", "  232:         cls is None and indent is None and separators is None and", "  233:         default is None and not sort_keys and not kw):", "\u2192 234:         return _default_encoder.encode(obj)", "  235:     if cls is None:", "  236:         cls = JSONEncoder", "/home/pablogsal/github/python/main/Lib/json/encoder.py", "JSONEncoder.encode", "JSONEncoder.encode (.../json/encoder.py:202)", "  200:         # exceptions aren't as detailed.  The list call should be roughly", "  201:         # equivalent to the PySequence_Fast that ''.join() would do.", "\u2192 202:         chunks = self.iterencode(o, _one_shot=True)", "  203:         if not isinstance(chunks, (list, tuple)):", "  204:             chunks = list(chunks)", "JSONEncoder.iterencode", "JSONEncoder.iterencode (.../json/encoder.py:263)", "  261:                 self.key_separator, self.item_separator, self.sort_keys,", "  262:                 self.skipkeys, _one_shot)", "\u2192 263:         return _iterencode(o, 0)", "  265: def _make_iterencode(markers, _default, _encoder, _indent, _floatstr,", "loads", "loads (.../json/__init__.py:351)", "  349:             parse_int is None and parse_float is None and", "  350:             parse_constant is None and object_pairs_hook is None and not kw):", "\u2192 351:         return _default_decoder.decode(s)", "  352:     if cls is None:", "  353:         cls = JSONDecoder", "/home/pablogsal/github/python/main/Lib/json/decoder.py", "JSONDecoder.decode", "JSONDecoder.decode (.../json/decoder.py:345)", "  344:         \"\"\"", "\u2192 345:         obj, end = self.raw_decode(s, idx=_w(s, 0).end())", "  346:         end = _w(s, end).end()", "  347:         if end != len(s):", "JSONDecoder.raw_decode", "JSONDecoder.raw_decode (.../json/decoder.py:361)", "  359:         \"\"\"", "  360:         try:", "\u2192 361:             obj, end = self.scan_once(s, idx)", "  362:         except StopIteration as err:", "  363:             raise JSONDecodeError(\"Expecting value\", s, err.value) from None", "string_section", "string_section (/tmp/tachyon_demo.py:97)", "  95: def string_section():", "  96:     \"\"\"String manipulation workload.\"\"\"", "\u2192 97:     string_concatenation(3000)", "  98:     list_comprehension(1500)", "string_concatenation", "string_concatenation (/tmp/tachyon_demo.py:70)", "  68:         result = \"\"", "  69:         for i in range(100):", "\u2192 70:             result += f\"item_{i}_\"", "string_concatenation (/tmp/tachyon_demo.py:69)", "  67:     for _ in range(iterations):", "\u2192 69:         for i in range(100):", "  70:             result += f\"item_{i}_\"", "list_comprehension", "list_comprehension (/tmp/tachyon_demo.py:77)", "  75:     for _ in range(iterations):", "  76:         data = [x**2 for x in range(1000)]", "\u2192 77:         filtered = [x for x in data if x % 7 == 0]", "  78:         total = sum(filtered)", "list_comprehension (/tmp/tachyon_demo.py:76)", "  74:     \"\"\"List operations - shows bytecode efficiency.\"\"\"", "\u2192 76:         data = [x**2 for x in range(1000)]", "  77:         filtered = [x for x in data if x % 7 == 0]", "list_comprehension (/tmp/tachyon_demo.py:78)", "\u2192 78:         total = sum(filtered)", "Program Root: _run_module_as_main (<frozen runpy>:196)", "tachyon_demo", "list_comprehension (tachyon_demo:76)", "string_concatenation (tachyon_demo:70)", "list_comprehension (tachyon_demo:77)", "string_concatenation (tachyon_demo:69)", "list_comprehension (tachyon_demo:78)", "string_section (tachyon_demo:97)", "json.decoder", "JSONDecoder.raw_decode (json.decoder:361)", "JSONDecoder.decode (json.decoder:345)", "json", "loads (json:351)", "json.encoder", "JSONEncoder.iterencode (json.encoder:263)", "JSONEncoder.encode (json.encoder:202)", "dumps (json:234)", "json_processing (tachyon_demo:60)", "hash_data (tachyon_demo:47)", "hash_data (tachyon_demo:46)", "io_section (tachyon_demo:91)", "matrix_multiply (tachyon_demo:37)", "fibonacci_recursive (tachyon_demo:15)", "fibonacci_recursive (tachyon_demo:17)", "fibonacci_recursive (tachyon_demo:13)", "fibonacci_recursive (tachyon_demo:16)", "matrix_multiply (tachyon_demo:36)", "matrix_multiply (tachyon_demo:30)", "matrix_multiply (tachyon_demo:31)", "compute_section (tachyon_demo:84)", "run_profiling_demo (tachyon_demo:105)", "<module> (tachyon_demo:118)", "hashlib", "__get_builtin_constructor (hashlib:108)", "__get_openssl_constructor (hashlib:137)", "<module> (hashlib:269)", "<module> (tachyon_demo:5)", "profiling.sampling._sync_coordinator", "_execute_script (profiling.sampling._sync_coordinator:193)", "<module> (hashlib:190)", "_execute_script (profiling.sampling._sync_coordinator:192)", "main (profiling.sampling._sync_coordinator:234)", "<module> (profiling.sampling._sync_coordinator:251)"], "opcode_mapping": {"names": {"0": "CACHE", "1": "BINARY_SLICE", "2": "BUILD_TEMPLATE", "3": "BINARY_OP_INPLACE_ADD_UNICODE", "4": "CALL_FUNCTION_EX", "5": "CHECK_EG_MATCH", "6": "CHECK_EXC_MATCH", "7": "CLEANUP_THROW", "8": "DELETE_SUBSCR", "9": "END_FOR", "10": "END_SEND", "11": "EXIT_INIT_CHECK", "12": "FORMAT_SIMPLE", "13": "FORMAT_WITH_SPEC", "14": "GET_AITER", "15": "GET_ANEXT", "16": "GET_ITER", "17": "RESERVED", "18": "GET_LEN", "19": "GET_YIELD_FROM_ITER", "20": "INTERPRETER_EXIT", "21": "LOAD_BUILD_CLASS", "22": "LOAD_LOCALS", "23": "MAKE_FUNCTION", "24": "MATCH_KEYS", "25": "MATCH_MAPPING", "26": "MATCH_SEQUENCE", "27": "NOP", "28": "NOT_TAKEN", "29": "POP_EXCEPT", "30": "POP_ITER", "31": "POP_TOP", "32": "PUSH_EXC_INFO", "33": "PUSH_NULL", "34": "RETURN_GENERATOR", "35": "RETURN_VALUE", "36": "SETUP_ANNOTATIONS", "37": "STORE_SLICE", "38": "STORE_SUBSCR", "39": "TO_BOOL", "40": "UNARY_INVERT", "41": "UNARY_NEGATIVE", "42": "UNARY_NOT", "43": "WITH_EXCEPT_START", "44": "BINARY_OP", "45": "BUILD_INTERPOLATION", "46": "BUILD_LIST", "47": "BUILD_MAP", "48": "BUILD_SET", "49": "BUILD_SLICE", "50": "BUILD_STRING", "51": "BUILD_TUPLE", "52": "CALL", "53": "CALL_INTRINSIC_1", "54": "CALL_INTRINSIC_2", "55": "CALL_KW", "56": "COMPARE_OP", "57": "CONTAINS_OP", "58": "CONVERT_VALUE", "59": "COPY", "60": "COPY_FREE_VARS", "61": "DELETE_ATTR", "62": "DELETE_DEREF", "63": "DELETE_FAST", "64": "DELETE_GLOBAL", "65": "DELETE_NAME", "66": "DICT_MERGE", "67": "DICT_UPDATE", "68": "END_ASYNC_FOR", "69": "EXTENDED_ARG", "70": "FOR_ITER", "71": "GET_AWAITABLE", "72": "IMPORT_FROM", "73": "IMPORT_NAME", "74": "IS_OP", "75": "JUMP_BACKWARD", "76": "JUMP_BACKWARD_NO_INTERRUPT", "77": "JUMP_FORWARD", "78": "LIST_APPEND", "79": "LIST_EXTEND", "80": "LOAD_ATTR", "81": "LOAD_COMMON_CONSTANT", "82": "LOAD_CONST", "83": "LOAD_DEREF", "84": "LOAD_FAST", "85": "LOAD_FAST_AND_CLEAR", "86": "LOAD_FAST_BORROW", "87": "LOAD_FAST_BORROW_LOAD_FAST_BORROW", "88": "LOAD_FAST_CHECK", "89": "LOAD_FAST_LOAD_FAST", "90": "LOAD_FROM_DICT_OR_DEREF", "91": "LOAD_FROM_DICT_OR_GLOBALS", "92": "LOAD_GLOBAL", "93": "LOAD_NAME", "94": "LOAD_SMALL_INT", "95": "LOAD_SPECIAL", "96": "LOAD_SUPER_ATTR", "97": "MAKE_CELL", "98": "MAP_ADD", "99": "MATCH_CLASS", "100": "POP_JUMP_IF_FALSE", "101": "POP_JUMP_IF_NONE", "102": "POP_JUMP_IF_NOT_NONE", "103": "POP_JUMP_IF_TRUE", "104": "RAISE_VARARGS", "105": "RERAISE", "106": "SEND", "107": "SET_ADD", "108": "SET_FUNCTION_ATTRIBUTE", "109": "SET_UPDATE", "110": "STORE_ATTR", "111": "STORE_DEREF", "112": "STORE_FAST", "113": "STORE_FAST_LOAD_FAST", "114": "STORE_FAST_STORE_FAST", "115": "STORE_GLOBAL", "116": "STORE_NAME", "117": "SWAP", "118": "UNPACK_EX", "119": "UNPACK_SEQUENCE", "120": "YIELD_VALUE", "121": "<121>", "122": "<122>", "123": "<123>", "124": "<124>", "125": "<125>", "126": "<126>", "127": "<127>", "128": "RESUME", "129": "BINARY_OP_ADD_FLOAT", "130": "BINARY_OP_ADD_INT", "131": "BINARY_OP_ADD_UNICODE", "132": "BINARY_OP_EXTEND", "133": "BINARY_OP_MULTIPLY_FLOAT", "134": "BINARY_OP_MULTIPLY_INT", "135": "BINARY_OP_SUBSCR_DICT", "136": "BINARY_OP_SUBSCR_GETITEM", "137": "BINARY_OP_SUBSCR_LIST_INT", "138": "BINARY_OP_SUBSCR_LIST_SLICE", "139": "BINARY_OP_SUBSCR_STR_INT", "140": "BINARY_OP_SUBSCR_TUPLE_INT", "141": "BINARY_OP_SUBTRACT_FLOAT", "142": "BINARY_OP_SUBTRACT_INT", "143": "CALL_ALLOC_AND_ENTER_INIT", "144": "CALL_BOUND_METHOD_EXACT_ARGS", "145": "CALL_BOUND_METHOD_GENERAL", "146": "CALL_BUILTIN_CLASS", "147": "CALL_BUILTIN_FAST", "148": "CALL_BUILTIN_FAST_WITH_KEYWORDS", "149": "CALL_BUILTIN_O", "150": "CALL_ISINSTANCE", "151": "CALL_KW_BOUND_METHOD", "152": "CALL_KW_NON_PY", "153": "CALL_KW_PY", "154": "CALL_LEN", "155": "CALL_LIST_APPEND", "156": "CALL_METHOD_DESCRIPTOR_FAST", "157": "CALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS", "158": "CALL_METHOD_DESCRIPTOR_NOARGS", "159": "CALL_METHOD_DESCRIPTOR_O", "160": "CALL_NON_PY_GENERAL", "161": "CALL_PY_EXACT_ARGS", "162": "CALL_PY_GENERAL", "163": "CALL_STR_1", "164": "CALL_TUPLE_1", "165": "CALL_TYPE_1", "166": "COMPARE_OP_FLOAT", "167": "COMPARE_OP_INT", "168": "COMPARE_OP_STR", "169": "CONTAINS_OP_DICT", "170": "CONTAINS_OP_SET", "171": "FOR_ITER_GEN", "172": "FOR_ITER_LIST", "173": "FOR_ITER_RANGE", "174": "FOR_ITER_TUPLE", "175": "JUMP_BACKWARD_JIT", "176": "JUMP_BACKWARD_NO_JIT", "177": "LOAD_ATTR_CLASS", "178": "LOAD_ATTR_CLASS_WITH_METACLASS_CHECK", "179": "LOAD_ATTR_GETATTRIBUTE_OVERRIDDEN", "180": "LOAD_ATTR_INSTANCE_VALUE", "181": "LOAD_ATTR_METHOD_LAZY_DICT", "182": "LOAD_ATTR_METHOD_NO_DICT", "183": "LOAD_ATTR_METHOD_WITH_VALUES", "184": "LOAD_ATTR_MODULE", "185": "LOAD_ATTR_NONDESCRIPTOR_NO_DICT", "186": "LOAD_ATTR_NONDESCRIPTOR_WITH_VALUES", "187": "LOAD_ATTR_PROPERTY", "188": "LOAD_ATTR_SLOT", "189": "LOAD_ATTR_WITH_HINT", "190": "LOAD_GLOBAL_BUILTIN", "191": "LOAD_GLOBAL_MODULE", "192": "LOAD_SUPER_ATTR_ATTR", "193": "LOAD_SUPER_ATTR_METHOD", "194": "RESUME_CHECK", "195": "SEND_GEN", "196": "STORE_ATTR_INSTANCE_VALUE", "197": "STORE_ATTR_SLOT", "198": "STORE_ATTR_WITH_HINT", "199": "STORE_SUBSCR_DICT", "200": "STORE_SUBSCR_LIST_INT", "201": "TO_BOOL_ALWAYS_TRUE", "202": "TO_BOOL_BOOL", "203": "TO_BOOL_INT", "204": "TO_BOOL_LIST", "205": "TO_BOOL_NONE", "206": "TO_BOOL_STR", "207": "UNPACK_SEQUENCE_LIST", "208": "UNPACK_SEQUENCE_TUPLE", "209": "UNPACK_SEQUENCE_TWO_TUPLE", "210": "<210>", "211": "<211>", "212": "<212>", "213": "<213>", "214": "<214>", "215": "<215>", "216": "<216>", "217": "<217>", "218": "<218>", "219": "<219>", "220": "<220>", "221": "<221>", "222": "<222>", "223": "<223>", "224": "<224>", "225": "<225>", "226": "<226>", "227": "<227>", "228": "<228>", "229": "<229>", "230": "<230>", "231": "<231>", "232": "<232>", "233": "INSTRUMENTED_END_FOR", "234": "INSTRUMENTED_POP_ITER", "235": "INSTRUMENTED_END_SEND", "236": "INSTRUMENTED_FOR_ITER", "237": "INSTRUMENTED_INSTRUCTION", "238": "INSTRUMENTED_JUMP_FORWARD", "239": "INSTRUMENTED_NOT_TAKEN", "240": "INSTRUMENTED_POP_JUMP_IF_TRUE", "241": "INSTRUMENTED_POP_JUMP_IF_FALSE", "242": "INSTRUMENTED_POP_JUMP_IF_NONE", "243": "INSTRUMENTED_POP_JUMP_IF_NOT_NONE", "244": "INSTRUMENTED_RESUME", "245": "INSTRUMENTED_RETURN_VALUE", "246": "INSTRUMENTED_YIELD_VALUE", "247": "INSTRUMENTED_END_ASYNC_FOR", "248": "INSTRUMENTED_LOAD_SUPER_ATTR", "249": "INSTRUMENTED_CALL", "250": "INSTRUMENTED_CALL_KW", "251": "INSTRUMENTED_CALL_FUNCTION_EX", "252": "INSTRUMENTED_JUMP_BACKWARD", "253": "INSTRUMENTED_LINE", "254": "ENTER_EXECUTOR", "255": "TRACE_RECORD", "256": "ANNOTATIONS_PLACEHOLDER", "257": "JUMP", "258": "JUMP_IF_FALSE", "259": "JUMP_IF_TRUE", "260": "JUMP_NO_INTERRUPT", "261": "LOAD_CLOSURE", "262": "POP_BLOCK", "263": "SETUP_CLEANUP", "264": "SETUP_FINALLY", "265": "SETUP_WITH", "266": "STORE_FAST_MAYBE_NULL"}, "deopt": {"194": 128, "201": 39, "202": 39, "203": 39, "204": 39, "205": 39, "206": 39, "134": 44, "130": 44, "142": 44, "133": 44, "129": 44, "141": 44, "131": 44, "137": 44, "138": 44, "140": 44, "139": 44, "135": 44, "136": 44, "132": 44, "3": 44, "199": 38, "200": 38, "195": 106, "209": 119, "208": 119, "207": 119, "196": 110, "197": 110, "198": 110, "191": 92, "190": 92, "192": 96, "193": 96, "180": 80, "184": 80, "189": 80, "188": 80, "177": 80, "178": 80, "187": 80, "179": 80, "183": 80, "182": 80, "181": 80, "186": 80, "185": 80, "166": 56, "167": 56, "168": 56, "170": 57, "169": 57, "176": 75, "175": 75, "172": 70, "174": 70, "173": 70, "171": 70, "144": 52, "161": 52, "165": 52, "163": 52, "164": 52, "146": 52, "149": 52, "147": 52, "148": 52, "154": 52, "150": 52, "155": 52, "159": 52, "157": 52, "158": 52, "156": 52, "143": 52, "162": 52, "145": 52, "160": 52, "151": 55, "153": 55, "152": 55}}, "self": 0, "thread_values": {"98230": [1892, 0]}, "module": 0, "label": 224};

// Global string table for resolving string indices
let stringTable = [];
let normalData = null;
let invertedData = null;
let currentThreadFilter = 'all';
let isInverted = false;
let useModuleNames = true;
let zoomedNodeValue = null;

// Heat colors are now defined in CSS variables (--heat-1 through --heat-8)
// and automatically switch with theme changes - no JS color arrays needed!

// Opcode mappings - loaded from embedded data (generated by Python)
let OPCODE_NAMES = {};
let DEOPT_MAP = {};

// Initialize opcode mappings from embedded data
function initOpcodeMapping(data) {
    if (data && data.opcode_mapping) {
        OPCODE_NAMES = data.opcode_mapping.names || {};
        DEOPT_MAP = data.opcode_mapping.deopt || {};
    }
}

// Get opcode info from opcode number
function getOpcodeInfo(opcode) {
    const opname = OPCODE_NAMES[opcode] || `<${opcode}>`;
    const baseOpcode = DEOPT_MAP[opcode];
    const isSpecialized = baseOpcode !== undefined;
    const baseOpname = isSpecialized ? (OPCODE_NAMES[baseOpcode] || `<${baseOpcode}>`) : opname;

    return {
        opname: opname,
        baseOpname: baseOpname,
        isSpecialized: isSpecialized
    };
}

// ============================================================================
// String Resolution
// ============================================================================

function resolveString(index, table = stringTable) {
  if (index === null || index === undefined) {
    return null;
  }
  if (typeof index === 'number' && index >= 0 && index < table.length) {
    return table[index];
  }
  return String(index);
}

function resolveStringIndices(node, table) {
  if (!node) return node;

  const resolved = { ...node };

  if (typeof resolved.name === 'number') {
    resolved.name = resolveString(resolved.name, table);
  }
  if (typeof resolved.filename === 'number') {
    resolved.filename = resolveString(resolved.filename, table);
  }
  if (typeof resolved.funcname === 'number') {
    resolved.funcname = resolveString(resolved.funcname, table);
  }
  if (typeof resolved.module === 'number') {
    resolved.module = resolveString(resolved.module, table);
  }
  if (typeof resolved.label === 'number') {
    resolved.label = resolveString(resolved.label, table);
  }

  if (Array.isArray(resolved.source)) {
    resolved.source = resolved.source.map(index =>
      typeof index === 'number' ? resolveString(index, table) : index
    );
  }

  if (Array.isArray(resolved.children)) {
    resolved.children = resolved.children.map(child => resolveStringIndices(child, table));
  }

  return resolved;
}

// Escape HTML special characters
function escapeHtml(str) {
  return str.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
}

// Get display path based on user preference (module or full path)
function getDisplayName(moduleName, filename) {
  if (useModuleNames) {
    return moduleName || filename;
  }
  return filename;
}

function samplesToMilliseconds(samples, data) {
  return (samples * data.stats.sample_interval_usec / 1000).toFixed(2);
}

function selectFlamegraphData(selectedThreadId = null) {
  let baseData = isShowingElided ? elidedFlamegraphData : normalData;

  if (selectedThreadId !== null) {
    baseData = filterDataByThread(baseData, selectedThreadId);
  }

  if (!isInverted) {
    return baseData;
  }

  // Thread-filtered trees have different values, so invert them after filtering
  // instead of using the cached all-thread tree.
  if (selectedThreadId !== null) {
    return generateInvertedFlamegraph(baseData);
  }

  if (isShowingElided) {
    if (!invertedElidedData) {
      invertedElidedData = generateInvertedFlamegraph(baseData);
    }
    return invertedElidedData;
  }

  if (!invertedData) {
    invertedData = generateInvertedFlamegraph(baseData);
  }
  return invertedData;
}

function updateFlamegraphView() {
  const selectedThreadId = currentThreadFilter !== 'all' ? parseInt(currentThreadFilter, 10) : null;
  const selectedData = selectFlamegraphData(selectedThreadId);
  const tooltip = createPythonTooltip(selectedData);
  const chart = createFlamegraph(tooltip, selectedData.value, selectedData);
  renderFlamegraph(chart, selectedData);
  populateThreadStats(selectedData, selectedThreadId);
}

// ============================================================================
// Theme & UI Controls
// ============================================================================

function toggleTheme() {
  toggleAndSaveTheme();

  // Re-render flamegraph with new theme colors
  if (window.flamegraphData && normalData) {
    updateFlamegraphView();
  }
}

function toggleSidebar() {
  const sidebar = document.getElementById('sidebar');
  if (sidebar) {
    const isCollapsing = !sidebar.classList.contains('collapsed');

    if (isCollapsing) {
      // Save current width before collapsing
      const currentWidth = sidebar.offsetWidth;
      sidebar.dataset.expandedWidth = currentWidth;
      localStorage.setItem('flamegraph-sidebar-width', currentWidth);
    } else {
      // Restore width when expanding
      const savedWidth = sidebar.dataset.expandedWidth || localStorage.getItem('flamegraph-sidebar-width');
      if (savedWidth) {
        sidebar.style.width = savedWidth + 'px';
      }
    }

    sidebar.classList.toggle('collapsed');
    localStorage.setItem('flamegraph-sidebar', sidebar.classList.contains('collapsed') ? 'collapsed' : 'expanded');

    // Resize chart after sidebar animation
    setTimeout(() => {
      resizeChart();
    }, 300);
  }
}

function resizeChart() {
  if (window.flamegraphChart && window.flamegraphData) {
    const chartArea = document.querySelector('.chart-area');
    if (chartArea) {
      window.flamegraphChart.width(chartArea.clientWidth - 32);
      d3.select("#chart").datum(window.flamegraphData).call(window.flamegraphChart);
    }
  }
}

function toggleSection(sectionId) {
  const section = document.getElementById(sectionId);
  if (section) {
    section.classList.toggle('collapsed');
    // Save state
    const collapsedSections = JSON.parse(localStorage.getItem('flamegraph-collapsed-sections') || '{}');
    collapsedSections[sectionId] = section.classList.contains('collapsed');
    localStorage.setItem('flamegraph-collapsed-sections', JSON.stringify(collapsedSections));
  }
}

// Restore theme from localStorage, or use browser preference
function restoreUIState() {
  applyTheme(getPreferredTheme());

  // Restore sidebar state
  const savedSidebar = localStorage.getItem('flamegraph-sidebar');
  if (savedSidebar === 'collapsed') {
    const sidebar = document.getElementById('sidebar');
    if (sidebar) sidebar.classList.add('collapsed');
  }

  // Restore sidebar width
  const savedWidth = localStorage.getItem('flamegraph-sidebar-width');
  if (savedWidth) {
    const sidebar = document.getElementById('sidebar');
    if (sidebar) {
      sidebar.style.width = savedWidth + 'px';
    }
  }

  // Restore collapsed sections
  const collapsedSections = JSON.parse(localStorage.getItem('flamegraph-collapsed-sections') || '{}');
  for (const [sectionId, isCollapsed] of Object.entries(collapsedSections)) {
    if (isCollapsed) {
      const section = document.getElementById(sectionId);
      if (section) section.classList.add('collapsed');
    }
  }
}

// ============================================================================
// Logo/Favicon Setup
// ============================================================================

function setupLogos() {
    const logo = document.querySelector('.sidebar-logo-img img');
    if (!logo) return;

    const navbarLogoContainer = document.getElementById('navbar-logo');
    if (navbarLogoContainer) {
        const navbarLogo = logo.cloneNode(true);
        navbarLogoContainer.appendChild(navbarLogo);
    }

    const favicon = document.createElement('link');
    favicon.rel = 'icon';
    favicon.type = 'image/png';
    favicon.href = logo.src;
    document.head.appendChild(favicon);
}

// ============================================================================
// Status Bar
// ============================================================================

function updateStatusBar(nodeData, rootValue, data) {
  const funcname = resolveString(nodeData.funcname) || resolveString(nodeData.name) || "--";
  const filename = resolveString(nodeData.filename) || "";
  const moduleName = resolveString(nodeData.module) || "";
  const lineno = nodeData.lineno;
  const timeMs = samplesToMilliseconds(nodeData.value, data);
  const percent = rootValue > 0 ? ((nodeData.value / rootValue) * 100).toFixed(1) : "0.0";

  const brandEl = document.getElementById('status-brand');
  const taglineEl = document.getElementById('status-tagline');
  if (brandEl) brandEl.style.display = 'none';
  if (taglineEl) taglineEl.style.display = 'none';

  const locationEl = document.getElementById('status-location');
  const funcItem = document.getElementById('status-func-item');
  const timeItem = document.getElementById('status-time-item');
  const percentItem = document.getElementById('status-percent-item');

  if (locationEl) locationEl.style.display = filename && filename !== "~" ? 'flex' : 'none';
  if (funcItem) funcItem.style.display = 'flex';
  if (timeItem) timeItem.style.display = 'flex';
  if (percentItem) percentItem.style.display = 'flex';

  const fileEl = document.getElementById('status-file');
  if (fileEl && filename && filename !== "~") {
    const displayName = getDisplayName(moduleName, filename);
    fileEl.textContent = lineno ? `${displayName}:${lineno}` : displayName;
  }

  const funcEl = document.getElementById('status-func');
  if (funcEl) funcEl.textContent = funcname.length > 40 ? funcname.substring(0, 37) + '...' : funcname;

  const timeEl = document.getElementById('status-time');
  if (timeEl) timeEl.textContent = `${timeMs} ms`;

  const percentEl = document.getElementById('status-percent');
  if (percentEl) percentEl.textContent = `${percent}%`;
}

function clearStatusBar() {
  const ids = ['status-location', 'status-func-item', 'status-time-item', 'status-percent-item'];
  ids.forEach(id => {
    const el = document.getElementById(id);
    if (el) el.style.display = 'none';
  });

  const brandEl = document.getElementById('status-brand');
  const taglineEl = document.getElementById('status-tagline');
  if (brandEl) brandEl.style.display = 'flex';
  if (taglineEl) taglineEl.style.display = 'flex';
}

// ============================================================================
// Tooltip
// ============================================================================

function createPythonTooltip(data) {
  const pythonTooltip = flamegraph.tooltip.defaultFlamegraphTooltip();

  pythonTooltip.show = function (d, element) {
    if (!this._tooltip) {
      this._tooltip = d3.select("body")
        .append("div")
        .attr("class", "python-tooltip")
        .style("opacity", 0);
    }

    const timeMs = samplesToMilliseconds(d.data.value, data);
    const selfSamples = d.data.self || 0;
    const selfMs = samplesToMilliseconds(selfSamples, data);
    const percentage = ((d.data.value / data.value) * 100).toFixed(2);
    const relativePercentage = Math.min(100, ((d.data.value / (zoomedNodeValue ?? data.value)) * 100)).toFixed(2);
    const calls = d.data.calls || 0;
    const childCount = d.children ? d.children.length : 0;
    const source = d.data.source;

    const funcname = resolveString(d.data.funcname) || resolveString(d.data.name);
    const filename = resolveString(d.data.filename) || "";
    const moduleName = resolveString(d.data.module) || "";
    const displayName = escapeHtml(useModuleNames ? (moduleName || filename) : filename);
    const isSpecialFrame = filename === "~";

    // Build source section
    let sourceSection = "";
    if (source && Array.isArray(source) && source.length > 0) {
      const sourceLines = source
        .map((line) => {
          const isCurrent = line.startsWith("→");
          const escaped = escapeHtml(line);
          return `<div class="tooltip-source-line${isCurrent ? ' current' : ''}">${escaped}</div>`;
        })
        .join("");

      sourceSection = `
        <div class="tooltip-source">
          <div class="tooltip-source-title">Source Code:</div>
          <div class="tooltip-source-code">${sourceLines}</div>
        </div>`;
    }

    // Create bytecode/opcode section if available
    let opcodeSection = "";
    const opcodes = d.data.opcodes;
    if (opcodes && typeof opcodes === 'object' && Object.keys(opcodes).length > 0) {
      // Sort opcodes by sample count (descending)
      const sortedOpcodes = Object.entries(opcodes)
        .sort((a, b) => b[1] - a[1])
        .slice(0, 8); // Limit to top 8

      const totalOpcodeSamples = sortedOpcodes.reduce((sum, [, count]) => sum + count, 0);
      const maxCount = sortedOpcodes[0][1] || 1;

      const opcodeLines = sortedOpcodes.map(([opcode, count]) => {
        const opcodeInfo = getOpcodeInfo(parseInt(opcode, 10));
        const pct = ((count / totalOpcodeSamples) * 100).toFixed(1);
        const barWidth = (count / maxCount) * 100;
        const specializedBadge = opcodeInfo.isSpecialized
          ? '<span class="tooltip-opcode-badge">SPECIALIZED</span>'
          : '';
        const baseOpHint = opcodeInfo.isSpecialized
          ? `<span class="tooltip-opcode-base-hint">(${opcodeInfo.baseOpname})</span>`
          : '';
        const nameClass = opcodeInfo.isSpecialized
          ? 'tooltip-opcode-name specialized'
          : 'tooltip-opcode-name';

        return `
          <div class="tooltip-opcode-row">
            <div class="${nameClass}">
              ${opcodeInfo.opname}${baseOpHint}${specializedBadge}
            </div>
            <div class="tooltip-opcode-count">${count.toLocaleString()} (${pct}%)</div>
            <div class="tooltip-opcode-bar">
              <div class="tooltip-opcode-bar-fill" style="width: ${barWidth}%;"></div>
            </div>
          </div>`;
      }).join('');

      opcodeSection = `
        <div class="tooltip-opcodes">
          <div class="tooltip-opcodes-title">Bytecode Instructions:</div>
          <div class="tooltip-opcodes-list">
            ${opcodeLines}
          </div>
        </div>`;
    }

    const fileLocationHTML = isSpecialFrame ? "" : `
      <div class="tooltip-location">${displayName}${d.data.lineno ? ":" + d.data.lineno : ""}</div>`;

    // Differential stats section
    let diffSection = "";
    if (d.data.diff !== undefined && d.data.baseline !== undefined) {
      const baselineSelf = samplesToMilliseconds(d.data.baseline, data);
      const currentSelf = samplesToMilliseconds(d.data.self_time || 0, data);
      const diffMs = samplesToMilliseconds(d.data.diff, data);
      const diffPct = d.data.diff_pct;
      const sign = d.data.diff >= 0 ? "+" : "";
      const diffClass = d.data.diff > 0 ? "regression" : (d.data.diff < 0 ? "improvement" : "neutral");

      diffSection = `
        <div class="tooltip-diff">
          <div class="tooltip-diff-title">Self-Time Comparison:</div>
          <div class="tooltip-diff-row">
            <span class="tooltip-stat-label">Baseline Self:</span>
            <span class="tooltip-stat-value">${baselineSelf} ms</span>
          </div>
          <div class="tooltip-diff-row">
            <span class="tooltip-stat-label">Current Self:</span>
            <span class="tooltip-stat-value">${currentSelf} ms</span>
          </div>
          <div class="tooltip-diff-row ${diffClass}">
            <span class="tooltip-stat-label">Difference:</span>
            <span class="tooltip-stat-value">${sign}${diffMs} ms (${sign}${diffPct.toFixed(1)}%)</span>
          </div>
        </div>`;
    }

    const tooltipHTML = `
      <div class="tooltip-header">
        <div class="tooltip-title">${funcname}</div>
        ${fileLocationHTML}
      </div>
      <div class="tooltip-stats">
        <span class="tooltip-stat-label">Total Time:</span>
        <span class="tooltip-stat-value">${timeMs} ms</span>

        ${selfSamples > 0 ? `
          <span class="tooltip-stat-label">Self Time:</span>
          <span class="tooltip-stat-value">${selfMs} ms</span>
        ` : ''}

        <span class="tooltip-stat-label">Percentage:</span>
        <span class="tooltip-stat-value accent">${percentage}%</span>

        ${relativePercentage != percentage && relativePercentage != "100.00" ? `
          <span class="tooltip-stat-label">Relative Percentage:</span>
          <span class="tooltip-stat-value accent">${relativePercentage}%</span>
        ` : ''}

        ${calls > 0 ? `
          <span class="tooltip-stat-label">Function Calls:</span>
          <span class="tooltip-stat-value">${calls.toLocaleString()}</span>
        ` : ''}

        ${childCount > 0 ? `
          <span class="tooltip-stat-label">Child Functions:</span>
          <span class="tooltip-stat-value">${childCount}</span>
        ` : ''}
      </div>
      ${diffSection}
      ${sourceSection}
      ${opcodeSection}
      <div class="tooltip-hint">
        ${childCount > 0 ? "Click to zoom into this function" : "Leaf function - no children"}
      </div>
    `;

    // Position tooltip
    const event = d3.event || window.event;
    const mouseX = event.pageX || event.clientX;
    const mouseY = event.pageY || event.clientY;
    const padding = 12;

    this._tooltip.html(tooltipHTML);

    // Measure tooltip
    const node = this._tooltip.style("display", "block").style("opacity", 0).node();
    const tooltipWidth = node.offsetWidth || 320;
    const tooltipHeight = node.offsetHeight || 200;

    // Calculate position
    let left = mouseX + padding;
    let top = mouseY + padding;

    if (left + tooltipWidth > window.innerWidth) {
      left = mouseX - tooltipWidth - padding;
      if (left < 0) left = padding;
    }

    if (top + tooltipHeight > window.innerHeight) {
      top = mouseY - tooltipHeight - padding;
      if (top < 0) top = padding;
    }

    this._tooltip
      .style("left", left + "px")
      .style("top", top + "px")
      .transition()
      .duration(150)
      .style("opacity", 1);

    // Update status bar
    updateStatusBar(d.data, data.value, data);
  };

  pythonTooltip.hide = function () {
    if (this._tooltip) {
      this._tooltip.transition().duration(150).style("opacity", 0);
    }
    clearStatusBar();
  };

  return pythonTooltip;
}

// ============================================================================
// Flamegraph Creation
// ============================================================================

function ensureLibraryLoaded() {
  if (typeof flamegraph === "undefined") {
    console.error("d3-flame-graph library not loaded");
    document.getElementById("chart").innerHTML =
      '<div style="padding: 40px; text-align: center; color: var(--text-muted);">Error: d3-flame-graph library failed to load</div>';
    throw new Error("d3-flame-graph library failed to load");
  }
}

const HEAT_THRESHOLDS = [
  [0.6, 8],
  [0.35, 7],
  [0.18, 6],
  [0.12, 5],
  [0.06, 4],
  [0.03, 3],
  [0.01, 2],
];

function getHeatLevel(percentage) {
  for (const [threshold, level] of HEAT_THRESHOLDS) {
    if (percentage >= threshold) return level;
  }
  return 1;
}

function getHeatColors() {
  const style = getComputedStyle(document.documentElement);
  const colors = {};
  for (let i = 1; i <= 8; i++) {
    colors[i] = style.getPropertyValue(`--heat-${i}`).trim();
  }
  return colors;
}

function getDiffColors() {
  const style = getComputedStyle(document.documentElement);
  return {
    elided: style.getPropertyValue('--diff-elided').trim(),
    new: style.getPropertyValue('--diff-new').trim(),
    neutral: style.getPropertyValue('--diff-neutral').trim(),
    regressionDeep: style.getPropertyValue('--diff-regression-deep').trim(),
    regressionMedium: style.getPropertyValue('--diff-regression-medium').trim(),
    regressionLight: style.getPropertyValue('--diff-regression-light').trim(),
    regressionVerylight: style.getPropertyValue('--diff-regression-verylight').trim(),
    improvementDeep: style.getPropertyValue('--diff-improvement-deep').trim(),
    improvementMedium: style.getPropertyValue('--diff-improvement-medium').trim(),
    improvementLight: style.getPropertyValue('--diff-improvement-light').trim(),
    improvementVerylight: style.getPropertyValue('--diff-improvement-verylight').trim(),
  };
}

function getDiffColorForNode(node, diffColors) {
  if (isShowingElided) {
    return diffColors.elided;
  }

  const diff_pct = node.data.diff_pct || 0;
  const diff_samples = node.data.diff || 0;
  const self_time = node.data.self_time || 0;

  if (diff_pct === 100 && self_time > 0 && Math.abs(diff_samples - self_time) < 0.1) {
    return diffColors.new;
  }

  // Neutral zone: small percentage change
  if (Math.abs(diff_pct) < 15) {
    return diffColors.neutral;
  }

  // Regression (red scale)
  if (diff_pct > 0) {
    if (diff_pct >= 100) return diffColors.regressionDeep;
    if (diff_pct > 50) return diffColors.regressionMedium;
    if (diff_pct > 30) return diffColors.regressionLight;
    return diffColors.regressionVerylight;
  }

  // Improvement (blue scale)
  if (diff_pct <= -100) return diffColors.improvementDeep;
  if (diff_pct < -50) return diffColors.improvementMedium;
  if (diff_pct < -30) return diffColors.improvementLight;
  return diffColors.improvementVerylight;
}

function createFlamegraph(tooltip, rootValue, data) {
  const chartArea = document.querySelector('.chart-area');
  const width = chartArea ? chartArea.clientWidth - 32 : window.innerWidth - 320;
  const heatColors = getHeatColors();

  const isDifferential = data && data.stats && data.stats.is_differential;
  const diffColors = isDifferential ? getDiffColors() : null;

  let chart = flamegraph()
    .width(width)
    .cellHeight(20)
    .transitionDuration(300)
    .minFrameSize(1)
    .tooltip(tooltip)
    .inverted(true)
    .getName(d => resolveString(useModuleNames ? d.data.label : d.data.name) || resolveString(d.data.name) || '')
    .setColorMapper(function (d) {
      if (d.depth === 0) return 'transparent';

      if (isDifferential) {
        return getDiffColorForNode(d, diffColors);
      }

      const percentage = d.data.value / rootValue;
      const level = getHeatLevel(percentage);
      return heatColors[level];
    })
    .onClick(function (d) {
      zoomedNodeValue = d.data.value;
    });

  return chart;
}

function renderFlamegraph(chart, data) {
  d3.select("#chart").datum(data).call(chart);
  window.flamegraphChart = chart;
  window.flamegraphData = data;
  zoomedNodeValue = null;
  populateStats(data);
}

// ============================================================================
// Search
// ============================================================================

function updateSearchHighlight(searchTerm, searchInput) {
  d3.selectAll("#chart rect")
    .classed("search-match", false)
    .classed("search-dim", false);

  // Clear active state from all hotspots
  document.querySelectorAll('.hotspot').forEach(h => h.classList.remove('active'));

  if (searchTerm && searchTerm.length > 0) {
    let matchCount = 0;

    d3.selectAll("#chart rect").each(function (d) {
      if (d && d.data) {
        const name = resolveString(d.data.name) || "";
        const funcname = resolveString(d.data.funcname) || "";
        const filename = resolveString(d.data.filename) || "";
        const moduleName = resolveString(d.data.module) || "";
        const displayName = getDisplayName(moduleName, filename);
        const lineno = d.data.lineno;
        const term = searchTerm.toLowerCase();

        // Check if search term looks like path:line pattern
        const fileLineMatch = term.match(/^(.+):(\d+)$/);
        let matches = false;

        if (fileLineMatch) {
          const searchFile = fileLineMatch[1];
          const searchLine = parseInt(fileLineMatch[2], 10);
          matches = displayName.toLowerCase().includes(searchFile) && lineno === searchLine;
        } else {
          // Regular substring search
          matches =
            name.toLowerCase().includes(term) ||
            funcname.toLowerCase().includes(term) ||
            displayName.toLowerCase().includes(term);
        }

        if (matches) {
          matchCount++;
          d3.select(this).classed("search-match", true);
        } else {
          d3.select(this).classed("search-dim", true);
        }
      }
    });

    if (searchInput) {
      searchInput.classList.remove("has-matches", "no-matches");
      searchInput.classList.add(matchCount > 0 ? "has-matches" : "no-matches");
    }

    // Mark matching hotspot as active
    document.querySelectorAll('.hotspot').forEach(h => {
      if (h.dataset.searchterm && h.dataset.searchterm.toLowerCase() === searchTerm.toLowerCase()) {
        h.classList.add('active');
      }
    });
  } else if (searchInput) {
    searchInput.classList.remove("has-matches", "no-matches");
  }
}

function searchForHotspot(funcname) {
  const searchInput = document.getElementById('search-input');
  const searchWrapper = document.querySelector('.search-wrapper');
  if (searchInput) {
    // Toggle: if already searching for this term, clear it
    if (searchInput.value.trim() === funcname) {
      clearSearch();
    } else {
      searchInput.value = funcname;
      if (searchWrapper) {
        searchWrapper.classList.add('has-value');
      }
      performSearch();
    }
  }
}

function initSearchHandlers() {
  const searchInput = document.getElementById("search-input");
  const searchWrapper = document.querySelector(".search-wrapper");
  if (!searchInput) return;

  let searchTimeout;
  function performSearch() {
    const term = searchInput.value.trim();
    updateSearchHighlight(term, searchInput);
    // Toggle has-value class for clear button visibility
    if (searchWrapper) {
      searchWrapper.classList.toggle("has-value", term.length > 0);
    }
  }

  searchInput.addEventListener("input", function () {
    clearTimeout(searchTimeout);
    searchTimeout = setTimeout(performSearch, 150);
  });

  window.performSearch = performSearch;
}

function clearSearch() {
  const searchInput = document.getElementById("search-input");
  const searchWrapper = document.querySelector(".search-wrapper");
  if (searchInput) {
    searchInput.value = "";
    searchInput.classList.remove("has-matches", "no-matches");
    if (searchWrapper) {
      searchWrapper.classList.remove("has-value");
    }
    // Clear highlights
    d3.selectAll("#chart rect")
      .classed("search-match", false)
      .classed("search-dim", false);
    // Clear active hotspot
    document.querySelectorAll('.hotspot').forEach(h => h.classList.remove('active'));
  }
}

// ============================================================================
// Resize Handler
// ============================================================================

function handleResize() {
  let resizeTimeout;
  window.addEventListener("resize", function () {
    clearTimeout(resizeTimeout);
    resizeTimeout = setTimeout(resizeChart, 100);
  });
}

function initSidebarResize() {
  const sidebar = document.getElementById('sidebar');
  const resizeHandle = document.getElementById('sidebar-resize-handle');
  if (!sidebar || !resizeHandle) return;

  let isResizing = false;
  let startX = 0;
  let startWidth = 0;
  const minWidth = 200;
  const maxWidth = 600;

  resizeHandle.addEventListener('mousedown', function(e) {
    isResizing = true;
    startX = e.clientX;
    startWidth = sidebar.offsetWidth;
    resizeHandle.classList.add('resizing');
    document.body.classList.add('resizing-sidebar');
    e.preventDefault();
  });

  document.addEventListener('mousemove', function(e) {
    if (!isResizing) return;

    const deltaX = e.clientX - startX;
    const newWidth = Math.min(Math.max(startWidth + deltaX, minWidth), maxWidth);
    sidebar.style.width = newWidth + 'px';
    e.preventDefault();
  });

  document.addEventListener('mouseup', function() {
    if (isResizing) {
      isResizing = false;
      resizeHandle.classList.remove('resizing');
      document.body.classList.remove('resizing-sidebar');

      // Save the new width
      const width = sidebar.offsetWidth;
      localStorage.setItem('flamegraph-sidebar-width', width);

      // Resize chart after sidebar resize
      setTimeout(() => {
        resizeChart();
      }, 10);
    }
  });
}

// ============================================================================
// Thread Stats
// ============================================================================

// Mode constants (must match constants.py)
const PROFILING_MODE_WALL = 0;
const PROFILING_MODE_CPU = 1;
const PROFILING_MODE_GIL = 2;
const PROFILING_MODE_ALL = 3;

function populateThreadStats(data, selectedThreadId = null) {
  const stats = data?.stats;
  if (!stats || !stats.thread_stats) {
    return;
  }

  const mode = stats.mode !== undefined ? stats.mode : PROFILING_MODE_WALL;
  let threadStats;

  if (selectedThreadId !== null && stats.per_thread_stats && stats.per_thread_stats[selectedThreadId]) {
    threadStats = stats.per_thread_stats[selectedThreadId];
  } else {
    threadStats = stats.thread_stats;
  }

  if (!threadStats || typeof threadStats.total !== 'number' || threadStats.total <= 0) {
    return;
  }

  const section = document.getElementById('thread-stats-bar');
  if (!section) {
    return;
  }

  section.style.display = 'block';

  const gilHeldStat = document.getElementById('gil-held-stat');
  const gilReleasedStat = document.getElementById('gil-released-stat');
  const gilWaitingStat = document.getElementById('gil-waiting-stat');

  if (mode === PROFILING_MODE_GIL) {
    // In GIL mode, hide GIL-related stats
    if (gilHeldStat) gilHeldStat.style.display = 'none';
    if (gilReleasedStat) gilReleasedStat.style.display = 'none';
    if (gilWaitingStat) gilWaitingStat.style.display = 'none';
  } else {
    // Show all stats
    if (gilHeldStat) gilHeldStat.style.display = 'block';
    if (gilReleasedStat) gilReleasedStat.style.display = 'block';
    if (gilWaitingStat) gilWaitingStat.style.display = 'block';

    const gilHeldPct = threadStats.has_gil_pct || 0;
    const gilHeldPctElem = document.getElementById('gil-held-pct');
    if (gilHeldPctElem) gilHeldPctElem.textContent = `${gilHeldPct.toFixed(1)}%`;
    const gilHeldFill = document.getElementById('gil-held-fill');
    if (gilHeldFill) gilHeldFill.style.width = `${gilHeldPct}%`;

    // GIL Released = not holding GIL and not waiting for it
    const gilReleasedPct = Math.max(0, 100 - (threadStats.has_gil_pct || 0) - (threadStats.gil_requested_pct || 0));
    const gilReleasedPctElem = document.getElementById('gil-released-pct');
    if (gilReleasedPctElem) gilReleasedPctElem.textContent = `${gilReleasedPct.toFixed(1)}%`;
    const gilReleasedFill = document.getElementById('gil-released-fill');
    if (gilReleasedFill) gilReleasedFill.style.width = `${gilReleasedPct}%`;

    const gilWaitingPct = threadStats.gil_requested_pct || 0;
    const gilWaitingPctElem = document.getElementById('gil-waiting-pct');
    if (gilWaitingPctElem) gilWaitingPctElem.textContent = `${gilWaitingPct.toFixed(1)}%`;
    const gilWaitingFill = document.getElementById('gil-waiting-fill');
    if (gilWaitingFill) gilWaitingFill.style.width = `${gilWaitingPct}%`;
  }

  const gcPct = threadStats.gc_pct || 0;
  const gcPctElem = document.getElementById('gc-pct');
  if (gcPctElem) gcPctElem.textContent = `${gcPct.toFixed(1)}%`;
  const gcFill = document.getElementById('gc-fill');
  if (gcFill) gcFill.style.width = `${gcPct}%`;

  // Exception stats
  const excPct = threadStats.has_exception_pct || 0;
  const excPctElem = document.getElementById('exc-pct');
  if (excPctElem) excPctElem.textContent = `${excPct.toFixed(1)}%`;
  const excFill = document.getElementById('exc-fill');
  if (excFill) excFill.style.width = `${excPct}%`;
}

// ============================================================================
// Profile Summary Stats
// ============================================================================

function formatNumber(num) {
  if (num >= 1000000) return (num / 1000000).toFixed(1) + 'M';
  if (num >= 1000) return (num / 1000).toFixed(1) + 'K';
  return num.toLocaleString();
}

function formatDuration(seconds) {
  if (seconds >= 3600) {
    const h = Math.floor(seconds / 3600);
    const m = Math.floor((seconds % 3600) / 60);
    return `${h}h ${m}m`;
  }
  if (seconds >= 60) {
    const m = Math.floor(seconds / 60);
    const s = Math.floor(seconds % 60);
    return `${m}m ${s}s`;
  }
  return seconds.toFixed(2) + 's';
}

function populateProfileSummary(data) {
  const stats = data.stats || {};
  const totalSamples = currentThreadFilter !== 'all'
    ? (data.value ?? 0)
    : (stats.total_samples ?? data.value ?? 0);
  const duration = stats.duration_sec || 0;
  const sampleRate = stats.sample_rate || (duration > 0 ? totalSamples / duration : 0);
  const errorRate = stats.error_rate;
  const missedSamples = stats.missed_samples;

  const samplesEl = document.getElementById('stat-total-samples');
  if (samplesEl) samplesEl.textContent = formatNumber(totalSamples);

  const durationEl = document.getElementById('stat-duration');
  if (durationEl) durationEl.textContent = duration > 0 ? formatDuration(duration) : '--';

  const rateEl = document.getElementById('stat-sample-rate');
  if (rateEl) rateEl.textContent = sampleRate > 0 ? formatNumber(Math.round(sampleRate)) : '--';

  // Count unique functions
  // Use normal (non-inverted) tree structure, but respect thread filtering
  const uniqueFunctions = new Set();
  function collectUniqueFunctions(node) {
    if (!node) return;
    const filename = resolveString(node.filename) || 'unknown';
    const funcname = resolveString(node.funcname) || resolveString(node.name) || 'unknown';
    const lineno = node.lineno || 0;
    const key = `${filename}|${lineno}|${funcname}`;
    uniqueFunctions.add(key);
    if (node.children) node.children.forEach(collectUniqueFunctions);
  }
  // In inverted mode, use normalData (with thread filter if active)
  // In normal mode, use the passed data (already has thread filter applied if any)
  let functionCountSource;
  if (!normalData) {
    functionCountSource = data;
  } else if (isInverted) {
    if (currentThreadFilter !== 'all') {
      functionCountSource = filterDataByThread(normalData, parseInt(currentThreadFilter));
    } else {
      functionCountSource = normalData;
    }
  } else {
    functionCountSource = data;
  }
  collectUniqueFunctions(functionCountSource);

  const functionsEl = document.getElementById('stat-functions');
  if (functionsEl) functionsEl.textContent = formatNumber(uniqueFunctions.size);

  // Efficiency bar
  if (errorRate !== undefined && errorRate !== null) {
    const efficiency = Math.max(0, Math.min(100, (100 - errorRate)));

    const efficiencySection = document.getElementById('efficiency-section');
    if (efficiencySection) efficiencySection.style.display = 'block';

    const efficiencyValue = document.getElementById('stat-efficiency');
    if (efficiencyValue) efficiencyValue.textContent = efficiency.toFixed(1) + '%';

    const efficiencyFill = document.getElementById('efficiency-fill');
    if (efficiencyFill) efficiencyFill.style.width = efficiency + '%';
  }
  // MissedSamples bar
  if (missedSamples !== undefined && missedSamples !== null) {
    const sampleEfficiency = Math.max(0, missedSamples);

    const efficiencySection = document.getElementById('efficiency-section');
    if (efficiencySection) efficiencySection.style.display = 'block';

    const sampleEfficiencyValue = document.getElementById('stat-missed-samples');
    if (sampleEfficiencyValue) sampleEfficiencyValue.textContent = sampleEfficiency.toFixed(1) + '%';

    const sampleEfficiencyFill = document.getElementById('missed-samples-fill');
    if (sampleEfficiencyFill) sampleEfficiencyFill.style.width = sampleEfficiency + '%';
  }
}

// ============================================================================
// Elided Stacks (Differential)
// ============================================================================

let elidedFlamegraphData = null;
let invertedElidedData = null;
let isShowingElided = false;

function setupElidedToggle(data) {
  const stats = data.stats || {};
  const elidedCount = stats.elided_count || 0;
  const elidedFlamegraph = stats.elided_flamegraph;

  if (!elidedCount || !elidedFlamegraph) {
    return;
  }

  elidedFlamegraphData = resolveStringIndices(elidedFlamegraph, elidedFlamegraph.strings);

  const toggleElided = document.getElementById('toggle-elided');
  if (toggleElided) {
    toggleElided.style.display = 'flex';

    toggleElided.onclick = function() {
      isShowingElided = !isShowingElided;
      updateToggleUI('toggle-elided', isShowingElided);
      updateFlamegraphView();
    };
  }
}

// ============================================================================
// Hotspot Stats
// ============================================================================

function populateStats(data) {
  // Populate profile summary
  populateProfileSummary(data);

  // Populate thread statistics if available
  populateThreadStats(data);

  // Setup elided stacks toggle if this is a differential flamegraph
  setupElidedToggle(data);

  // For hotspots: use normal (non-inverted) tree structure, but respect thread filtering.
  // In inverted view, the tree structure changes but the hottest functions remain the same.
  // However, if a thread filter is active, we need to show that thread's hotspots.
  let hotspotSource;
  if (!normalData) {
    hotspotSource = data;
  } else if (isInverted) {
    // In inverted mode, use normalData (with thread filter if active)
    if (currentThreadFilter !== 'all') {
      hotspotSource = filterDataByThread(normalData, parseInt(currentThreadFilter));
    } else {
      hotspotSource = normalData;
    }
  } else {
    // In normal mode, use the passed data (already has thread filter applied if any)
    hotspotSource = data;
  }
  const totalSamples = hotspotSource.value || 0;

  const functionMap = new Map();

  function collectFunctions(node) {
    if (!node) return;

    let filename = resolveString(node.filename);
    let funcname = resolveString(node.funcname);
    let moduleName = resolveString(node.module);

    if (!filename || !funcname) {
      const nameStr = resolveString(node.name);
      if (nameStr?.includes('(')) {
        const match = nameStr.match(/^(.+?)\s*\((.+?):(\d+)\)$/);
        if (match) {
          funcname = funcname || match[1];
          filename = filename || match[2];
        }
      }
    }

    filename = filename || 'unknown';
    funcname = funcname || 'unknown';
    moduleName = moduleName || 'unknown';

    if (filename !== 'unknown' && funcname !== 'unknown' && node.value > 0) {
      const directSamples = node.self || 0;

      const funcKey = `${filename}:${node.lineno || '?'}:${funcname}`;

      if (functionMap.has(funcKey)) {
        const existing = functionMap.get(funcKey);
        existing.directSamples += directSamples;
        existing.directPercent = (existing.directSamples / totalSamples) * 100;
        if (directSamples > existing.maxSingleSamples) {
          existing.filename = filename;
          existing.module = moduleName;
          existing.lineno = node.lineno || '?';
          existing.maxSingleSamples = directSamples;
        }
      } else {
        functionMap.set(funcKey, {
          filename: filename,
          module: moduleName,
          lineno: node.lineno || '?',
          funcname: funcname,
          directSamples,
          directPercent: (directSamples / totalSamples) * 100,
          maxSingleSamples: directSamples
        });
      }
    }

    if (node.children) {
      node.children.forEach(child => collectFunctions(child));
    }
  }

  collectFunctions(hotspotSource);

  const hotSpots = Array.from(functionMap.values())
    .filter(f => f.directPercent > 0.5)
    .sort((a, b) => b.directPercent - a.directPercent)
    .slice(0, 3);

  // Populate and animate hotspot cards
  for (let i = 0; i < 3; i++) {
    const num = i + 1;
    const card = document.getElementById(`hotspot-${num}`);
    const funcEl = document.getElementById(`hotspot-func-${num}`);
    const fileEl = document.getElementById(`hotspot-file-${num}`);
    const percentEl = document.getElementById(`hotspot-percent-${num}`);
    const samplesEl = document.getElementById(`hotspot-samples-${num}`);

    if (i < hotSpots.length && hotSpots[i]) {
      const h = hotSpots[i];
      const filename = h.filename || 'unknown';
      const lineno = h.lineno ?? '?';
      const moduleName = h.module || 'unknown';
      const isSpecialFrame = filename === '~' && (lineno === 0 || lineno === '?');

      let funcDisplay = h.funcname || 'unknown';
      if (funcDisplay.length > 28) funcDisplay = funcDisplay.substring(0, 25) + '...';

      if (funcEl) funcEl.textContent = funcDisplay;
      if (fileEl) {
        if (isSpecialFrame) {
          fileEl.textContent = '--';
        } else {
          const displayName = getDisplayName(moduleName, filename);
          fileEl.textContent = `${displayName}:${lineno}`;
        }
      }
      if (percentEl) percentEl.textContent = `${h.directPercent.toFixed(1)}%`;
      if (samplesEl) samplesEl.textContent = ` (${h.directSamples.toLocaleString()})`;
    } else {
      if (funcEl) funcEl.textContent = '--';
      if (fileEl) fileEl.textContent = '--';
      if (percentEl) percentEl.textContent = '--';
      if (samplesEl) samplesEl.textContent = '';
    }

    // Add click handler and animate entrance
    if (card) {
      if (i < hotSpots.length && hotSpots[i]) {
        const h = hotSpots[i];
        const moduleName = h.module || 'unknown';
        const filename = h.filename || 'unknown';
        const displayName = getDisplayName(moduleName, filename);
        const hasValidLocation = displayName !== 'unknown' && h.lineno !== '?';
        const searchTerm = hasValidLocation ? `${displayName}:${h.lineno}` : h.funcname;
        card.dataset.searchterm = searchTerm;
        card.onclick = () => searchForHotspot(searchTerm);
        card.style.cursor = 'pointer';
      } else {
        card.onclick = null;
        delete card.dataset.searchterm;
        card.style.cursor = 'default';
      }

      setTimeout(() => {
        card.classList.add('visible');
      }, 100 + i * 80);
    }
  }
}

// ============================================================================
// Thread Filter
// ============================================================================

function initThreadFilter(data) {
  const threadFilter = document.getElementById('thread-filter');
  const threadSection = document.getElementById('thread-section');

  if (!threadFilter || !data.threads || data.stats?.is_differential) return;

  threadFilter.innerHTML = '<option value="all">All Threads</option>';

  const threads = data.threads || [];
  threads.forEach(threadId => {
    const option = document.createElement('option');
    option.value = threadId;
    option.textContent = `Thread ${threadId}`;
    threadFilter.appendChild(option);
  });

  if (threads.length > 1 && threadSection) {
    threadSection.style.display = 'block';
  }
}

function filterByThread() {
  const threadFilter = document.getElementById('thread-filter');
  if (!threadFilter || !normalData) return;

  const selectedThread = threadFilter.value;
  currentThreadFilter = selectedThread;

  updateFlamegraphView();
}

function filterDataByThread(data, threadId) {
  function filterNode(node) {
    const threadValues = node.thread_values?.[threadId];
    if (!threadValues) {
      return null;
    }

    const {
      thread_values: _threadValues,
      thread_opcodes: threadOpcodes,
      ...sharedNode
    } = node;
    const filteredNode = {
      ...sharedNode,
      value: threadValues[0],
      self: threadValues[1],
      opcodes: threadOpcodes?.[threadId] ?? {},
      children: []
    };

    if (node.children && Array.isArray(node.children)) {
      filteredNode.children = node.children
        .map(child => filterNode(child))
        .filter(child => child !== null);
    }

    return filteredNode;
  }

  return filterNode(data);
}

// ============================================================================
// Control Functions
// ============================================================================

function resetZoom() {
  if (window.flamegraphChart) {
    zoomedNodeValue = null;
    window.flamegraphChart.resetZoom();
  }
}

function exportSVG() {
  const svgElement = document.querySelector("#chart svg");
  if (!svgElement) {
    console.warn("Cannot export: No flamegraph SVG found");
    return;
  }
  const serializer = new XMLSerializer();
  const svgString = serializer.serializeToString(svgElement);
  const blob = new Blob([svgString], { type: "image/svg+xml" });
  const url = URL.createObjectURL(blob);
  const a = document.createElement("a");
  a.href = url;
  a.download = "python-performance-flamegraph.svg";
  a.click();
  URL.revokeObjectURL(url);
}

// ============================================================================
// Inverted Flamegraph
// ============================================================================

// Example: "file.py|10|foo" or "~|0|<GC>" for special frames
function getInvertNodeKey(node) {
  return `${node.filename || '~'}|${node.lineno || 0}|${node.funcname || node.name}`;
}

function accumulateInvertedNode(parent, stackFrame, leaf, isDifferential) {
  const key = getInvertNodeKey(stackFrame);

  if (!parent.children[key]) {
    const newNode = {
      name: stackFrame.name,
      label: stackFrame.label,
      value: 0,
      self: 0,
      children: {},
      filename: stackFrame.filename,
      module: stackFrame.module,
      lineno: stackFrame.lineno,
      funcname: stackFrame.funcname,
      source: stackFrame.source,
      opcodes: null,
      threads: new Set()
    };

    if (isDifferential) {
      newNode.baseline = 0;
      newNode.baseline_total = 0;
      newNode.self_time = 0;
      newNode.diff = 0;
      newNode.diff_pct = 0;
    }

    parent.children[key] = newNode;
  }

  const node = parent.children[key];
  node.value += leaf.value;
  node.self += stackFrame.self || 0;
  if (leaf.threads) {
    leaf.threads.forEach(t => node.threads.add(t));
  }
  if (stackFrame.opcodes) {
    if (!node.opcodes) {
      node.opcodes = { ...stackFrame.opcodes };
    } else {
      for (const [op, count] of Object.entries(stackFrame.opcodes)) {
        node.opcodes[op] = (node.opcodes[op] || 0) + count;
      }
    }
  }

  if (isDifferential) {
    node.baseline += stackFrame.baseline || 0;
    node.baseline_total += stackFrame.baseline_total || 0;
    node.self_time += stackFrame.self_time || 0;
    node.diff += stackFrame.diff || 0;

    if (node.baseline > 0) {
      node.diff_pct = (node.diff / node.baseline) * 100.0;
    } else if (node.self_time > 0) {
      node.diff_pct = 100.0;
    }
  }

  return node;
}

function processLeaf(invertedRoot, path, leafNode, isDifferential) {
  if (!path || path.length === 0) {
    return;
  }

  let invertedParent = accumulateInvertedNode(invertedRoot, leafNode, leafNode, isDifferential);

  // Walk backwards through the call stack
  for (let i = path.length - 2; i >= 0; i--) {
    invertedParent = accumulateInvertedNode(invertedParent, path[i], leafNode, isDifferential);
  }
}

function traverseInvert(path, currentNode, invertedRoot, isDifferential) {
  const selfValue = currentNode.self || 0;

  if (selfValue > 0) {
    processLeaf(invertedRoot, path, { ...currentNode, value: selfValue }, isDifferential);
  }

  const children = currentNode.children || [];
  children.forEach(child => traverseInvert(path.concat([child]), child, invertedRoot, isDifferential));
}

function convertInvertDictToArray(node) {
  if (node.threads instanceof Set) {
    node.threads = Array.from(node.threads).sort((a, b) => a - b);
  }

  const children = node.children;
  if (children && typeof children === 'object' && !Array.isArray(children)) {
    node.children = Object.values(children);
    node.children.sort((a, b) => b.value - a.value || a.name.localeCompare(b.name));
    node.children.forEach(convertInvertDictToArray);
  }
  return node;
}

function generateInvertedFlamegraph(data) {
  const isDifferential = data && data.stats && data.stats.is_differential;

  const invertedRoot = {
    name: data.name,
    label: data.label,
    value: data.value,
    children: {},
    stats: data.stats,
    threads: data.threads
  };

  const children = data.children || [];
  if (children.length === 0) {
    // Single-frame tree: the root is its own leaf
    processLeaf(invertedRoot, [data], data, isDifferential);
  } else {
    children.forEach(child => traverseInvert([child], child, invertedRoot, isDifferential));
  }

  convertInvertDictToArray(invertedRoot);
  return invertedRoot;
}

function toggleInvert() {
  isInverted = !isInverted;
  updateToggleUI('toggle-invert', isInverted);
  updateFlamegraphView();
}

function togglePathDisplay() {
  useModuleNames = !useModuleNames;
  updateToggleUI('toggle-path-display', useModuleNames);
  updateFlamegraphView();
}

// ============================================================================
// Initialization
// ============================================================================

function initFlamegraph() {
  ensureLibraryLoaded();
  restoreUIState();
  setupLogos();

  if (EMBEDDED_DATA.strings) {
    stringTable = EMBEDDED_DATA.strings;
    normalData = resolveStringIndices(EMBEDDED_DATA, EMBEDDED_DATA.strings);
  } else {
    normalData = EMBEDDED_DATA;
  }

  // Initialize opcode mapping from embedded data
  initOpcodeMapping(EMBEDDED_DATA);

  // Inverted data will be built on first toggle
  invertedData = null;

  initThreadFilter(normalData);

  // Toggle legend based on differential mode
  const isDifferential = normalData && normalData.stats && normalData.stats.is_differential;
  const heatmapLegend = document.getElementById('heatmap-legend-section');
  const diffLegend = document.getElementById('diff-legend-section');
  if (isDifferential) {
    if (heatmapLegend) heatmapLegend.style.display = 'none';
    if (diffLegend) diffLegend.style.display = 'block';
  } else {
    if (heatmapLegend) heatmapLegend.style.display = 'block';
    if (diffLegend) diffLegend.style.display = 'none';
  }

  const tooltip = createPythonTooltip(normalData);
  const chart = createFlamegraph(tooltip, normalData.value, normalData);
  renderFlamegraph(chart, normalData);
  initSearchHandlers();
  initSidebarResize();
  handleResize();

  const toggleInvertBtn = document.getElementById('toggle-invert');
  if (toggleInvertBtn) {
    toggleInvertBtn.addEventListener('click', toggleInvert);
  }

  const togglePathDisplayBtn = document.getElementById('toggle-path-display');
  if (togglePathDisplayBtn) {
    togglePathDisplayBtn.addEventListener('click', togglePathDisplay);
  }
}

// Keyboard shortcut: Enter/Space activates toggle switches
document.addEventListener('keydown', function(e) {
    if (e.target.tagName === 'INPUT' || e.target.tagName === 'TEXTAREA') {
        return;
    }
    if ((e.key === 'Enter' || e.key === ' ') && e.target.classList.contains('toggle-switch')) {
        e.preventDefault();
        e.target.click();
    }
});

if (document.readyState === "loading") {
  document.addEventListener("DOMContentLoaded", initFlamegraph);
} else {
  initFlamegraph();
}

</script>
  </body>
</html>
