katucharts.js 0.2.1 → 0.2.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +25 -25
- package/dist/katucharts.es.js +206 -204
- package/dist/katucharts.umd.js +4 -4
- package/package.json +1 -1
package/dist/katucharts.umd.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
(function(St,Te){typeof exports=="object"&&typeof module<"u"?Te(exports):typeof define=="function"&&define.amd?define(["exports"],Te):(St=typeof globalThis<"u"?globalThis:St||self,Te(St.KatuCharts={}))})(this,function(St){"use strict";var YA=Object.defineProperty;var XA=(St,Te,ii)=>Te in St?YA(St,Te,{enumerable:!0,configurable:!0,writable:!0,value:ii}):St[Te]=ii;var xt=(St,Te,ii)=>XA(St,typeof Te!="symbol"?Te+"":Te,ii);function Te(n,t,e){n.prototype=t.prototype=e,e.constructor=n}function ii(n,t){var e=Object.create(n.prototype);for(var i in t)e[i]=t[i];return e}function ir(){}var rr=.7,to=1/rr,Ci="\\s*([+-]?\\d+)\\s*",or="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Xp=/^#([0-9a-f]{3,8})$/,Up=new RegExp(`^rgb\\(${Ci},${Ci},${Ci}\\)$`),qp=new RegExp(`^rgb\\(${xn},${xn},${xn}\\)$`),jp=new RegExp(`^rgba\\(${Ci},${Ci},${Ci},${or}\\)$`),Zp=new RegExp(`^rgba\\(${xn},${xn},${xn},${or}\\)$`),Kp=new RegExp(`^hsl\\(${or},${xn},${xn}\\)$`),Jp=new RegExp(`^hsla\\(${or},${xn},${xn},${or}\\)$`),bl={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};Te(ir,oe,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:vl,formatHex:vl,formatHex8:Qp,formatHsl:tg,formatRgb:wl,toString:wl});function vl(){return this.rgb().formatHex()}function Qp(){return this.rgb().formatHex8()}function tg(){return _l(this).formatHsl()}function wl(){return this.rgb().formatRgb()}function oe(n){var t,e;return n=(n+"").trim().toLowerCase(),(t=Xp.exec(n))?(e=t[1].length,t=parseInt(t[1],16),e===6?kl(t):e===3?new Be(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):e===8?eo(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):e===4?eo(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Up.exec(n))?new Be(t[1],t[2],t[3],1):(t=qp.exec(n))?new Be(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=jp.exec(n))?eo(t[1],t[2],t[3],t[4]):(t=Zp.exec(n))?eo(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Kp.exec(n))?Sl(t[1],t[2]/100,t[3]/100,1):(t=Jp.exec(n))?Sl(t[1],t[2]/100,t[3]/100,t[4]):bl.hasOwnProperty(n)?kl(bl[n]):n==="transparent"?new Be(NaN,NaN,NaN,0):null}function kl(n){return new Be(n>>16&255,n>>8&255,n&255,1)}function eo(n,t,e,i){return i<=0&&(n=t=e=NaN),new Be(n,t,e,i)}function eg(n){return n instanceof ir||(n=oe(n)),n?(n=n.rgb(),new Be(n.r,n.g,n.b,n.opacity)):new Be}function Ye(n,t,e,i){return arguments.length===1?eg(n):new Be(n,t,e,i??1)}function Be(n,t,e,i){this.r=+n,this.g=+t,this.b=+e,this.opacity=+i}Te(Be,Ye,ii(ir,{brighter(n){return n=n==null?to:Math.pow(to,n),new Be(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?rr:Math.pow(rr,n),new Be(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new Be(ri(this.r),ri(this.g),ri(this.b),no(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:Ml,formatHex:Ml,formatHex8:ng,formatRgb:Al,toString:Al}));function Ml(){return`#${oi(this.r)}${oi(this.g)}${oi(this.b)}`}function ng(){return`#${oi(this.r)}${oi(this.g)}${oi(this.b)}${oi((isNaN(this.opacity)?1:this.opacity)*255)}`}function Al(){const n=no(this.opacity);return`${n===1?"rgb(":"rgba("}${ri(this.r)}, ${ri(this.g)}, ${ri(this.b)}${n===1?")":`, ${n})`}`}function no(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function ri(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function oi(n){return n=ri(n),(n<16?"0":"")+n.toString(16)}function Sl(n,t,e,i){return i<=0?n=t=e=NaN:e<=0||e>=1?n=t=NaN:t<=0&&(n=NaN),new dn(n,t,e,i)}function _l(n){if(n instanceof dn)return new dn(n.h,n.s,n.l,n.opacity);if(n instanceof ir||(n=oe(n)),!n)return new dn;if(n instanceof dn)return n;n=n.rgb();var t=n.r/255,e=n.g/255,i=n.b/255,r=Math.min(t,e,i),o=Math.max(t,e,i),s=NaN,a=o-r,l=(o+r)/2;return a?(t===o?s=(e-i)/a+(e<i)*6:e===o?s=(i-t)/a+2:s=(t-e)/a+4,a/=l<.5?o+r:2-o-r,s*=60):a=l>0&&l<1?0:s,new dn(s,a,l,n.opacity)}function si(n,t,e,i){return arguments.length===1?_l(n):new dn(n,t,e,i??1)}function dn(n,t,e,i){this.h=+n,this.s=+t,this.l=+e,this.opacity=+i}Te(dn,si,ii(ir,{brighter(n){return n=n==null?to:Math.pow(to,n),new dn(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?rr:Math.pow(rr,n),new dn(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,e=this.l,i=e+(e<.5?e:1-e)*t,r=2*e-i;return new Be(Ds(n>=240?n-240:n+120,r,i),Ds(n,r,i),Ds(n<120?n+240:n-120,r,i),this.opacity)},clamp(){return new dn(Cl(this.h),io(this.s),io(this.l),no(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const n=no(this.opacity);return`${n===1?"hsl(":"hsla("}${Cl(this.h)}, ${io(this.s)*100}%, ${io(this.l)*100}%${n===1?")":`, ${n})`}`}}));function Cl(n){return n=(n||0)%360,n<0?n+360:n}function io(n){return Math.max(0,Math.min(1,n||0))}function Ds(n,t,e){return(n<60?t+(e-t)*n/60:n<180?e:n<240?t+(e-t)*(240-n)/60:t)*255}const ro=new Map,ig=256;function zs(n){const t=n||"rgba(0,0,0,0)",e=ro.get(t);if(e)return e;const i="rgba(0,0,0,0)",r=oe(n||i),o=Ye(r||i),s={r:Math.round(o.r),g:Math.round(o.g),b:Math.round(o.b),a:o.opacity,get(a){return a==="rgba"?this.toString():this.toString()},brighten(a){const l=si(Ye(this.r,this.g,this.b,this.a));l.l+=a*.1,l.l=Math.max(0,Math.min(1,l.l));const c=Ye(l);return zs(c.formatRgb())},setOpacity(a){return zs(`rgba(${this.r},${this.g},${this.b},${a})`)},toString(){return this.a<1?`rgba(${this.r},${this.g},${this.b},${this.a})`:Ye(this.r,this.g,this.b).formatHex()}};return ro.size>=ig&&ro.clear(),ro.set(t,s),s}const oo={default:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"],tableau10:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"],d3classic:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],brewer:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],google:["#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395"],ocean:["#003f5c","#2f4b7c","#665191","#a05195","#d45087","#f95d6a","#ff7c43","#ffa600","#58508d","#bc5090"],sunset:["#f94144","#f3722c","#f8961e","#f9844a","#f9c74f","#90be6d","#43aa8b","#4d908e","#577590","#277da1"],earth:["#8c510a","#bf812d","#dfc27d","#c7eae5","#80cdc1","#35978f","#01665e","#543005","#003c30","#f6e8c3"],forest:["#2d6a4f","#40916c","#52b788","#74c69d","#95d5b2","#1b4332","#081c15","#b7e4c7","#d8f3dc","#344e41"],berry:["#7b2cbf","#9d4edd","#c77dff","#e0aaff","#5a189a","#3c096c","#240046","#10002b","#e2afff","#deaaff"],corporate:["#2c3e50","#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#e67e22","#34495e","#16a085"],minimal:["#264653","#2a9d8f","#e9c46a","#f4a261","#e76f51","#606c38","#283618","#dda15e","#bc6c25","#fefae0"],nordic:["#5e81ac","#81a1c1","#88c0d0","#8fbcbb","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead","#4c566a"],darkMode:["#2ecc71","#3498db","#e74c3c","#f1c40f","#9b59b6","#1abc9c","#e67e22","#ecf0f1","#e91e63","#00bcd4"],neon:["#ff006e","#fb5607","#ffbe0b","#8338ec","#3a86ff","#06d6a0","#118ab2","#ef476f","#ffd166","#073b4c"],pastel:["#a8e6cf","#dcedc1","#ffd3b6","#ffaaa5","#ff8b94","#b5ead7","#c7ceea","#e2f0cb","#fceaea","#d4a5a5"],soft:["#6c9bd2","#e6a756","#d46a6a","#7cc5a8","#b28fce","#e8937f","#6bb8a0","#d4b56a","#8e9cc2","#c2847a"],classic:["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"],tupi:["#b43417","#1b1a15","#a85429","#ce9a3a","#33503a","#8c2810","#6b6a45","#d97b3f","#5b5240","#7a3b2e"],monochrome:["#1f2933","#3e4c59","#52606d","#7b8794","#9aa5b1","#616e7c","#cbd2d9","#323f4b","#7b8794","#b8c0c9"]};function Pl(n){return oo[n]||oo.default}const rg=oo.default,og={textStrong:"#1f2933",textSoft:"#52606d",axis:"#6b7280",line:"#c8ccd2",grid:"#e6e8eb",tooltipBg:"rgba(255,255,255,0.96)",tooltipBorder:"#d8dce0",legend:"#52606d"},sg={textStrong:"#f3f4f6",textSoft:"#b8bfc7",axis:"#9aa3ad",line:"#3a414a",grid:"rgba(255,255,255,0.08)",tooltipBg:"#20262e",tooltipBorder:"#39414b",legend:"#c2c9d1"};function El(n,t,e){const i={gridLineColor:e.grid,lineColor:e.line,tickColor:e.line,labels:{style:{color:e.axis}},title:{style:{color:e.axis}}};return{colors:n,chart:{backgroundColor:t},title:{style:{color:e.textStrong}},subtitle:{style:{color:e.textSoft}},xAxis:i,yAxis:i,tooltip:{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,style:{color:e.textStrong}},legend:{itemStyle:{color:e.legend},itemHoverStyle:{color:e.textStrong}}}}const Bs={tupi:{light:["#b43417","#1b1a15","#a85429","#ce9a3a","#33503a","#8c2810","#6b6a45","#d97b3f","#5b5240","#7a3b2e"],dark:["#e0673f","#e7dbc0","#d08a4e","#e8c45f","#6fa37a","#c84c2c","#c9b27a","#f0a06a","#a9a07e","#d98b6a"]},ocean:{light:["#0466c8","#0353a4","#3a86ff","#00b4d8","#0096c7","#48cae4","#023e8a","#5e60ce","#0077b6","#90e0ef"],dark:["#48cae4","#4895ef","#56cfe1","#64dfdf","#80ffdb","#5390d9","#7400b8","#4cc9f0","#56cfe1","#72efdd"]},sunset:{light:["#ff6b35","#f7522f","#ff9e00","#ffbf69","#e85d75","#d1495b","#ffd166","#9e2a2b","#f3722c","#bc4749"],dark:["#ff7b54","#ffb26b","#ffd56b","#ff9e7d","#ff6b6b","#feca57","#ff9ff3","#f368e0","#ffa07a","#ffd56b"]},forest:{light:["#2d6a4f","#40916c","#52b788","#74c69d","#1b4332","#95d5b2","#b7e4c7","#344e41","#588157","#a3b18a"],dark:["#74c69d","#52b788","#95d5b2","#40916c","#b7e4c7","#2d6a4f","#d8f3dc","#588157","#a3b18a","#80ed99"]},corporate:{light:["#2c3e50","#3498db","#16a085","#f39c12","#8e44ad","#e74c3c","#34495e","#27ae60","#2980b9","#d35400"],dark:["#5dade2","#48c9b0","#f5b041","#bb8fce","#ec7063","#58d68d","#85c1e9","#76d7c4","#f8c471","#aed6f1"]},vivid:{light:["#ff006e","#fb5607","#ffbe0b","#8338ec","#3a86ff","#06d6a0","#ef476f","#118ab2","#ff70a6","#9b5de5"],dark:["#ff5d8f","#ff7b00","#ffd60a","#9d4edd","#4cc9f0","#06d6a0","#ff70a6","#48cae4","#fb5607","#b5179e"]},monochrome:{light:["#1f2933","#3e4c59","#52606d","#7b8794","#9aa5b1","#616e7c","#cbd2d9","#323f4b","#46545f","#a7b0b8"],dark:["#e4e7eb","#cbd2d9","#9aa5b1","#7b8794","#616e7c","#b8c0c9","#52606d","#d3d9de","#8a949e","#3e4c59"]},nordic:{light:["#5e81ac","#81a1c1","#88c0d0","#8fbcbb","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead","#4c566a"],dark:["#88c0d0","#81a1c1","#8fbcbb","#a3be8c","#ebcb8b","#d08770","#bf616a","#b48ead","#5e81ac","#d8dee9"]},pastel:{light:["#a8e6cf","#ffd3b6","#ffaaa5","#c7ceea","#b5ead7","#ff8b94","#dcedc1","#e2afff","#ffdac1","#b5c7ed"],dark:["#a8e6cf","#ffd3b6","#ffaaa5","#c7ceea","#b5ead7","#ff8b94","#dcedc1","#e2afff","#ffdac1","#b5c7ed"]}},Tl={tupi:{light:"#ecdfc4",dark:"#1c1814"},ocean:{light:"#ffffff",dark:"#0b1622"},sunset:{light:"#ffffff",dark:"#1f1410"},forest:{light:"#ffffff",dark:"#0f1f17"},corporate:{light:"#ffffff",dark:"#1a1f26"},vivid:{light:"#ffffff",dark:"#14101c"},monochrome:{light:"#ffffff",dark:"#1a1f24"},nordic:{light:"#eceff4",dark:"#2e3440"},pastel:{light:"#ffffff",dark:"#232026"}},so=(()=>{const n={};for(const t of Object.keys(Bs))n[t]=El(Bs[t].light,Tl[t].light,og),n[`${t}-dark`]=El(Bs[t].dark,Tl[t].dark,sg);return n.light=n.monochrome,n.dark=n["monochrome-dark"],n})(),ag=Object.keys(so);function $l(n){return so[n]}const wt="12px",me="#000000",Ll="#1a1a1a",cg="#ffffff",lg=3;function Os(n){const t=n/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function Il(n,t,e){return .2126*Os(n)+.7152*Os(t)+.0722*Os(e)}function Fl(n,t){return(Math.max(n,t)+.05)/(Math.min(n,t)+.05)}const hg=Il(26,26,26);function Cn(n,t){var s;if(t)return t;const e=n?(s=oe(n))==null?void 0:s.rgb():null;if(!e||isNaN(e.r)||e.opacity===0)return me;const i=Il(e.r,e.g,e.b),r=Fl(i,hg);return r>=lg?Ll:Fl(i,1)>=r?cg:Ll}function Rl(){if(typeof document>"u")return 16;const n=parseFloat(getComputedStyle(document.documentElement).fontSize);return n>0?n:16}function ye(n){if(!n)return 12;const t=n.trim();if(/^(clamp|min|max)\s*\(/i.test(t)){const r=t.slice(t.indexOf("(")+1,t.lastIndexOf(")")).match(/-?\d*\.?\d+\s*(px|rem|em)/gi)||[];let o=0;for(const s of r){const a=ye(s.trim());a>o&&(o=a)}return o>0?o:12}if(t.endsWith("px"))return parseFloat(t)||12;if(t.endsWith("rem")||t.endsWith("em"))return(parseFloat(t)||1)*Rl();const e=parseFloat(t);return isNaN(e)?12:e}let ao=null;function ug(){return ao||(typeof document>"u"?null:(ao=document.createElement("canvas").getContext("2d"),ao))}function Je(n,t,e="normal",i="sans-serif"){const r=ug();return r?(r.font=`${e} ${t}px ${i}`,r.measureText(n).width):n.length*t*.62}const Ns={chart:{type:"line",backgroundColor:"#ffffff",borderWidth:0,borderRadius:0,borderColor:"#335cad",spacing:[10,10,15,10],style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:"12px"},animation:!0,zoomType:void 0,panning:!1,inverted:!1,polar:!1,reflow:!0},title:{text:void 0,align:"center",margin:15,style:{color:"#333333",fontSize:"18px",fontWeight:"bold"},widthAdjust:-44},subtitle:{text:void 0,align:"center",style:{color:"#666666",fontSize:"12px"},widthAdjust:-44},xAxis:{type:"linear",title:{text:null,style:{fontSize:wt}},labels:{enabled:!0,style:{fontSize:wt},autoRotation:[-45],autoRotationLimit:80,padding:5},tickLength:10,tickWidth:1,tickColor:"#999999",gridLineWidth:1,gridLineColor:"#e6e6e6",lineWidth:1,lineColor:"#999999",offset:0,opposite:!1,reversed:!1,visible:!0,startOnTick:!1,endOnTick:!1,showFirstLabel:!0,showLastLabel:!0,allowDecimals:!0,maxPadding:.01,minPadding:.01,crosshair:!1},yAxis:{type:"linear",title:{text:null,style:{fontSize:wt}},labels:{enabled:!0,style:{fontSize:wt},padding:5},tickLength:10,tickWidth:1,gridLineWidth:1,gridLineColor:"#e6e6e6",lineWidth:1,lineColor:"#999999",offset:0,opposite:!1,reversed:!1,visible:!0,startOnTick:!0,endOnTick:!0,showFirstLabel:!0,showLastLabel:!0,allowDecimals:!0,maxPadding:.05,minPadding:.05,crosshair:!1},colorAxis:void 0,series:[],tooltip:{enabled:!0,shared:!1,split:!1,useHTML:!1,followPointer:!1,headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.y}</b><br/>',footerFormat:"",backgroundColor:"rgba(247,247,247,0.85)",borderColor:void 0,borderWidth:1,borderRadius:3,padding:8,shadow:!0,animation:!0,hideDelay:500,snap:10,outside:!1,style:{color:"#333333",fontSize:"12px"}},legend:{enabled:!0,layout:"horizontal",align:"center",verticalAlign:"bottom",floating:!1,x:0,y:0,margin:15,padding:8,itemMarginTop:0,itemMarginBottom:0,itemDistance:20,itemStyle:{cursor:"pointer",fontSize:wt,fontWeight:"normal"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#cccccc"},symbolWidth:12,symbolHeight:12,symbolRadius:2,symbolPadding:5,squareSymbol:!0,borderWidth:0,borderRadius:0,borderColor:"#999999",reversed:!1},plotOptions:{series:{lineWidth:2,marker:{enabled:null,radius:4,symbol:"circle",lineWidth:0,states:{hover:{enabled:!0,radius:6,lineWidth:1}}},states:{hover:{enabled:!0,lineWidthPlus:1},inactive:{opacity:.2}},animation:{duration:1e3},enableMouseTracking:!0,stickyTracking:!0,allowPointSelect:!1,turboThreshold:1e3,dataLabels:{enabled:!1},showInLegend:!0,threshold:0,connectNulls:!1,clip:!0},bubble:{lineWidth:1},scatter:{marker:{symbol:null}},pie:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.percentage:.1f}%</b><br/>'},dataLabels:{enabled:!0},showInLegend:!1},candlestick:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},ohlc:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},heikinashi:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},hollowcandlestick:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},arearange:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'}},donut:{showInLegend:!1},sankey:{dataLabels:{enabled:!0},showInLegend:!1},dependencywheel:{dataLabels:{enabled:!0},showInLegend:!1},networkgraph:{dataLabels:{enabled:!0}},treemap:{dataLabels:{enabled:!0}},gauge:{dataLabels:{enabled:!0}},solidgauge:{dataLabels:{enabled:!0}},timeline:{dataLabels:{enabled:!0}},gantt:{dataLabels:{enabled:!0}},barchartrace:{dataLabels:{enabled:!0}},venn:{dataLabels:{enabled:!0}}},credits:{enabled:!0,text:"Powered by: KatuCharts",href:"https://charts.katudv.com",position:{align:"right",verticalAlign:"bottom",x:-10,y:-5},style:{cursor:"pointer",fontSize:"9px"}},exporting:{enabled:!0,filename:"chart",type:"image/png",scale:2,printMaxWidth:780,buttons:{contextButton:{enabled:!0,symbol:"gear",symbolFill:"#666666",symbolStroke:"#666666",symbolStrokeWidth:3,x:-10,y:10,menuItems:["downloadPNG","downloadJPEG","downloadSVG","downloadPDF","separator","viewFullScreen","printChart"]}}},loading:{hideDuration:100,showDuration:100,labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},navigator:{enabled:!1},rangeSelector:{enabled:!1},drilldown:{animation:!0,series:[]},responsive:{rules:[{condition:{maxWidth:500},chartOptions:{chart:{spacing:[5,5,10,5]},title:{style:{fontSize:"14px"},margin:8},subtitle:{style:{fontSize:"10px"}},legend:{itemStyle:{fontSize:"10px"},itemDistance:10,margin:8,symbolWidth:12,symbolHeight:8},yAxis:{title:{text:null},labels:{style:{fontSize:"9px"}}},xAxis:{labels:{style:{fontSize:"9px"},autoRotation:[-45,-90]}},plotOptions:{pie:{size:"65%",dataLabels:{distance:10,style:{fontSize:"9px"},connectorPadding:3}}}}},{condition:{maxWidth:260},chartOptions:{subtitle:{text:null},legend:{enabled:!1},credits:{enabled:!1},plotOptions:{pie:{size:"55%",dataLabels:{distance:5,style:{fontSize:"8px"},connectorWidth:0}}}}}]},accessibility:{enabled:!0},colors:rg},Pi=new Set(["pie","donut","sunburst","treemap","treegraph","wordcloud","sankey","dependencywheel","networkgraph","gauge","solidgauge","polar","radar","funnel","pyramid","timeline","map","mappoint","flowmap","barchartrace","venn","clusteredheatmap","phylotree","circos","circosHeatmap","circosComparative","circosSpiral"]),fg=new Set(["pie","donut","funnel","pyramid","sankey","dependencywheel","networkgraph","treemap","sunburst","gauge","solidgauge","timeline","gantt","map","mappoint","flowmap","heatmap","polar","radar","barchartrace","venn","clusteredheatmap","phylotree","circos"]),dg=new Set(["line","spline","column","bar","scatter","bubble","area","areaspline","boxplot","waterfall","volume"]),pg=new Set(["pie","venn","forestplot","pcoa"]),gg=new Set(["scatter","bubble"]),mg=new Set(["column","bar","area","areaspline","waterfall"]);function Dl(n){return n.length>0&&n.every(t=>Pi.has(t._internalType))}const zl=20;function Bl(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)&&Object.getPrototypeOf(n)===Object.prototype}function le(n,...t){return Ol(n,t,0)}function Ol(n,t,e){if(e>zl)return n;const i={...n};for(const r of t)if(r)for(const o of Object.keys(r)){if(o==="__proto__"||o==="constructor"||o==="prototype")continue;const s=r[o],a=i[o];s!==void 0&&(s===null?i[o]=null:Bl(s)&&Bl(a)?i[o]=Ol(a,[s],e+1):Array.isArray(s)?i[o]=[...s]:i[o]=s)}return i}function co(n){return Ws(n,new WeakSet,0)}function Ws(n,t,e){if(n===null||typeof n!="object"||e>zl||t.has(n))return n;if(t.add(n),Array.isArray(n))return n.map(r=>Ws(r,t,e+1));if(n instanceof Date)return new Date(n.getTime());const i={};for(const r of Object.keys(n))i[r]=Ws(n[r],t,e+1);return i}function Nl(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&n.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in n&&n.BYTES_PER_ELEMENT===1}function Hs(n,t=""){if(typeof n!="number"){const e=t&&`"${t}" `;throw new TypeError(`${e}expected number, got ${typeof n}`)}if(!Number.isSafeInteger(n)||n<0){const e=t&&`"${t}" `;throw new RangeError(`${e}expected integer >= 0, got ${n}`)}}function ai(n,t,e=""){const i=Nl(n),r=n==null?void 0:n.length,o=t!==void 0;if(!i||o&&r!==t){const s=e&&`"${e}" `,a=o?` of length ${t}`:"",l=i?`length=${r}`:`type=${typeof n}`,c=s+"expected Uint8Array"+a+", got "+l;throw i?new RangeError(c):new TypeError(c)}return n}function Wl(n,t=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(t&&n.finished)throw new Error("Hash#digest() has already been called")}function yg(n,t){ai(n,void 0,"digestInto() output");const e=t.outputLen;if(n.length<e)throw new RangeError('"digestInto() output" expected to be of length >='+e)}function Vs(...n){for(let t=0;t<n.length;t++)n[t].fill(0)}function Gs(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}const Hl=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",xg=Array.from({length:256},(n,t)=>t.toString(16).padStart(2,"0"));function Ys(n){if(ai(n),Hl)return n.toHex();let t="";for(let e=0;e<n.length;e++)t+=xg[n[e]];return t}const Pn={_0:48,_9:57,A:65,F:70,a:97,f:102};function Vl(n){if(n>=Pn._0&&n<=Pn._9)return n-Pn._0;if(n>=Pn.A&&n<=Pn.F)return n-(Pn.A-10);if(n>=Pn.a&&n<=Pn.f)return n-(Pn.a-10)}function Xs(n){if(typeof n!="string")throw new TypeError("hex string expected, got "+typeof n);if(Hl)try{return Uint8Array.fromHex(n)}catch(r){throw r instanceof SyntaxError?new RangeError(r.message):r}const t=n.length,e=t/2;if(t%2)throw new RangeError("hex string expected, got unpadded hex of length "+t);const i=new Uint8Array(e);for(let r=0,o=0;r<e;r++,o+=2){const s=Vl(n.charCodeAt(o)),a=Vl(n.charCodeAt(o+1));if(s===void 0||a===void 0){const l=n[o]+n[o+1];throw new RangeError('hex string expected, got non-hex character "'+l+'" at index '+o)}i[r]=s*16+a}return i}function bg(...n){let t=0;for(let i=0;i<n.length;i++){const r=n[i];ai(r),t+=r.length}const e=new Uint8Array(t);for(let i=0,r=0;i<n.length;i++){const o=n[i];e.set(o,r),r+=o.length}return e}function vg(n,t={}){const e=(r,o)=>n(o).update(r).digest(),i=n(void 0);return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.canXOF=i.canXOF,e.create=r=>n(r),Object.assign(e,t),Object.freeze(e)}function wg(n=32){Hs(n,"bytesLength");const t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof(t==null?void 0:t.getRandomValues)!="function")throw new Error("crypto.getRandomValues must be defined");if(n>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${n}`);return t.getRandomValues(new Uint8Array(n))}const kg=n=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,n])});class Mg{constructor(t,e,i,r){xt(this,"blockLen");xt(this,"outputLen");xt(this,"canXOF",!1);xt(this,"padOffset");xt(this,"isLE");xt(this,"buffer");xt(this,"view");xt(this,"finished",!1);xt(this,"length",0);xt(this,"pos",0);xt(this,"destroyed",!1);this.blockLen=t,this.outputLen=e,this.padOffset=i,this.isLE=r,this.buffer=new Uint8Array(t),this.view=Gs(this.buffer)}update(t){Wl(this),ai(t);const{view:e,buffer:i,blockLen:r}=this,o=t.length;for(let s=0;s<o;){const a=Math.min(r-this.pos,o-s);if(a===r){const l=Gs(t);for(;r<=o-s;s+=r)this.process(l,s);continue}i.set(t.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Wl(this),yg(t,this),this.finished=!0;const{buffer:e,view:i,blockLen:r,isLE:o}=this;let{pos:s}=this;e[s++]=128,Vs(this.buffer.subarray(s)),this.padOffset>r-s&&(this.process(i,0),s=0);for(let f=s;f<r;f++)e[f]=0;i.setBigUint64(r-8,BigInt(this.length*8),o),this.process(i,0);const a=Gs(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const c=l/4,h=this.get();if(c>h.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<c;f++)a.setUint32(4*f,h[f],o)}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const i=t.slice(0,e);return this.destroy(),i}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:i,length:r,finished:o,destroyed:s,pos:a}=this;return t.destroyed=s,t.finished=o,t.length=r,t.pos=a,r%e&&t.buffer.set(i),t}clone(){return this._cloneInto()}}const xe=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),lo=BigInt(2**32-1),Gl=BigInt(32);function Ag(n,t=!1){return t?{h:Number(n&lo),l:Number(n>>Gl&lo)}:{h:Number(n>>Gl&lo)|0,l:Number(n&lo)|0}}function Sg(n,t=!1){const e=n.length;let i=new Uint32Array(e),r=new Uint32Array(e);for(let o=0;o<e;o++){const{h:s,l:a}=Ag(n[o],t);[i[o],r[o]]=[s,a]}return[i,r]}const Yl=(n,t,e)=>n>>>e,Xl=(n,t,e)=>n<<32-e|t>>>e,Ei=(n,t,e)=>n>>>e|t<<32-e,Ti=(n,t,e)=>n<<32-e|t>>>e,ho=(n,t,e)=>n<<64-e|t>>>e-32,uo=(n,t,e)=>n>>>e-32|t<<64-e;function En(n,t,e,i){const r=(t>>>0)+(i>>>0);return{h:n+e+(r/2**32|0)|0,l:r|0}}const _g=(n,t,e)=>(n>>>0)+(t>>>0)+(e>>>0),Cg=(n,t,e,i)=>t+e+i+(n/2**32|0)|0,Pg=(n,t,e,i)=>(n>>>0)+(t>>>0)+(e>>>0)+(i>>>0),Eg=(n,t,e,i,r)=>t+e+i+r+(n/2**32|0)|0,Tg=(n,t,e,i,r)=>(n>>>0)+(t>>>0)+(e>>>0)+(i>>>0)+(r>>>0),$g=(n,t,e,i,r,o)=>t+e+i+r+o+(n/2**32|0)|0,Ul=Sg(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(n=>BigInt(n))),Lg=Ul[0],Ig=Ul[1],Yn=new Uint32Array(80),Xn=new Uint32Array(80);class Fg extends Mg{constructor(t){super(128,t,16,!1)}get(){const{Ah:t,Al:e,Bh:i,Bl:r,Ch:o,Cl:s,Dh:a,Dl:l,Eh:c,El:h,Fh:f,Fl:u,Gh:d,Gl:p,Hh:y,Hl:g}=this;return[t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g]}set(t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g){this.Ah=t|0,this.Al=e|0,this.Bh=i|0,this.Bl=r|0,this.Ch=o|0,this.Cl=s|0,this.Dh=a|0,this.Dl=l|0,this.Eh=c|0,this.El=h|0,this.Fh=f|0,this.Fl=u|0,this.Gh=d|0,this.Gl=p|0,this.Hh=y|0,this.Hl=g|0}process(t,e){for(let v=0;v<16;v++,e+=4)Yn[v]=t.getUint32(e),Xn[v]=t.getUint32(e+=4);for(let v=16;v<80;v++){const b=Yn[v-15]|0,k=Xn[v-15]|0,M=Ei(b,k,1)^Ei(b,k,8)^Yl(b,k,7),C=Ti(b,k,1)^Ti(b,k,8)^Xl(b,k,7),L=Yn[v-2]|0,_=Xn[v-2]|0,$=Ei(L,_,19)^ho(L,_,61)^Yl(L,_,6),I=Ti(L,_,19)^uo(L,_,61)^Xl(L,_,6),E=Pg(C,I,Xn[v-7],Xn[v-16]),P=Eg(E,M,$,Yn[v-7],Yn[v-16]);Yn[v]=P|0,Xn[v]=E|0}let{Ah:i,Al:r,Bh:o,Bl:s,Ch:a,Cl:l,Dh:c,Dl:h,Eh:f,El:u,Fh:d,Fl:p,Gh:y,Gl:g,Hh:m,Hl:x}=this;for(let v=0;v<80;v++){const b=Ei(f,u,14)^Ei(f,u,18)^ho(f,u,41),k=Ti(f,u,14)^Ti(f,u,18)^uo(f,u,41),M=f&d^~f&y,C=u&p^~u&g,L=Tg(x,k,C,Ig[v],Xn[v]),_=$g(L,m,b,M,Lg[v],Yn[v]),$=L|0,I=Ei(i,r,28)^ho(i,r,34)^ho(i,r,39),E=Ti(i,r,28)^uo(i,r,34)^uo(i,r,39),P=i&o^i&a^o&a,S=r&s^r&l^s&l;m=y|0,x=g|0,y=d|0,g=p|0,d=f|0,p=u|0,{h:f,l:u}=En(c|0,h|0,_|0,$|0),c=a|0,h=l|0,a=o|0,l=s|0,o=i|0,s=r|0;const w=_g($,E,S);i=Cg(w,_,I,P),r=w|0}({h:i,l:r}=En(this.Ah|0,this.Al|0,i|0,r|0)),{h:o,l:s}=En(this.Bh|0,this.Bl|0,o|0,s|0),{h:a,l}=En(this.Ch|0,this.Cl|0,a|0,l|0),{h:c,l:h}=En(this.Dh|0,this.Dl|0,c|0,h|0),{h:f,l:u}=En(this.Eh|0,this.El|0,f|0,u|0),{h:d,l:p}=En(this.Fh|0,this.Fl|0,d|0,p|0),{h:y,l:g}=En(this.Gh|0,this.Gl|0,y|0,g|0),{h:m,l:x}=En(this.Hh|0,this.Hl|0,m|0,x|0),this.set(i,r,o,s,a,l,c,h,f,u,d,p,y,g,m,x)}roundClean(){Vs(Yn,Xn)}destroy(){this.destroyed=!0,Vs(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Rg extends Fg{constructor(){super(64);xt(this,"Ah",xe[0]|0);xt(this,"Al",xe[1]|0);xt(this,"Bh",xe[2]|0);xt(this,"Bl",xe[3]|0);xt(this,"Ch",xe[4]|0);xt(this,"Cl",xe[5]|0);xt(this,"Dh",xe[6]|0);xt(this,"Dl",xe[7]|0);xt(this,"Eh",xe[8]|0);xt(this,"El",xe[9]|0);xt(this,"Fh",xe[10]|0);xt(this,"Fl",xe[11]|0);xt(this,"Gh",xe[12]|0);xt(this,"Gl",xe[13]|0);xt(this,"Hh",xe[14]|0);xt(this,"Hl",xe[15]|0)}}const Dg=vg(()=>new Rg,kg(3));/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const $e=(n,t,e)=>ai(n,t,e),ql=Hs,jl=Ys,Zl=(...n)=>bg(...n),zg=n=>Xs(n),Bg=Nl,Og=n=>wg(n),fo=BigInt(0),Us=BigInt(1);function po(n,t=""){if(typeof n!="boolean"){const e=t&&`"${t}" `;throw new TypeError(e+"expected boolean, got type="+typeof n)}return n}function Ng(n){if(typeof n=="bigint"){if(!go(n))throw new RangeError("positive bigint expected, got "+n)}else ql(n);return n}function qs(n,t=""){if(typeof n!="number"){const e=t&&`"${t}" `;throw new TypeError(e+"expected number, got type="+typeof n)}if(!Number.isSafeInteger(n)){const e=t&&`"${t}" `;throw new RangeError(e+"expected safe integer, got "+n)}}function Kl(n){if(typeof n!="string")throw new TypeError("hex string expected, got "+typeof n);return n===""?fo:BigInt("0x"+n)}function Wg(n){return Kl(Ys(n))}function sr(n){return Kl(Ys(js(ai(n)).reverse()))}function Jl(n,t){if(Hs(t),t===0)throw new RangeError("zero length");n=Ng(n);const e=n.toString(16);if(e.length>t*2)throw new RangeError("number too large");return Xs(e.padStart(t*2,"0"))}function Hg(n,t){return Jl(n,t).reverse()}function Vg(n,t){if(n=$e(n),t=$e(t),n.length!==t.length)return!1;let e=0;for(let i=0;i<n.length;i++)e|=n[i]^t[i];return e===0}function js(n){return Uint8Array.from($e(n))}const go=n=>typeof n=="bigint"&&fo<=n;function Gg(n,t,e){return go(n)&&go(t)&&go(e)&&t<=n&&n<e}function Ql(n,t,e,i){if(!Gg(t,e,i))throw new RangeError("expected valid "+n+": "+e+" <= n < "+i+", got "+t)}function Yg(n){if(n<fo)throw new Error("expected non-negative bigint, got "+n);let t;for(t=0;n>fo;n>>=Us,t+=1);return t}const Xg=n=>(Us<<BigInt(n))-Us;function Zs(n,t={},e={}){if(Object.prototype.toString.call(n)!=="[object Object]")throw new TypeError("expected valid options object");function i(o,s,a){if(!a&&s!=="function"&&!Object.hasOwn(n,o))throw new TypeError(`param "${o}" is invalid: expected own property`);const l=n[o];if(a&&l===void 0)return;const c=typeof l;if(c!==s||l===null)throw new TypeError(`param "${o}" is invalid: expected ${s}, got ${c}`)}const r=(o,s)=>Object.entries(o).forEach(([a,l])=>i(a,l,s));r(t,!1),r(e,!0)}const th=()=>{throw new Error("not implemented")};/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const be=BigInt(0),de=BigInt(1),ci=BigInt(2),eh=BigInt(3),nh=BigInt(4),ih=BigInt(5),Ug=BigInt(7),rh=BigInt(8),qg=BigInt(9),oh=BigInt(16);function se(n,t){if(t<=be)throw new Error("mod: expected positive modulus, got "+t);const e=n%t;return e>=be?e:t+e}function bn(n,t,e){if(t<be)throw new Error("pow2: expected non-negative exponent, got "+t);let i=n;for(;t-- >be;)i*=i,i%=e;return i}function sh(n,t){if(n===be)throw new Error("invert: expected non-zero number");if(t<=be)throw new Error("invert: expected positive modulus, got "+t);let e=se(n,t),i=t,r=be,o=de;for(;e!==be;){const a=i/e,l=i-e*a,c=r-o*a;i=e,e=l,r=o,o=c}if(i!==de)throw new Error("invert: does not exist");return se(r,t)}function Ks(n,t,e){const i=n;if(!i.eql(i.sqr(t),e))throw new Error("Cannot find square root")}function ah(n,t){const e=n,i=(e.ORDER+de)/nh,r=e.pow(t,i);return Ks(e,r,t),r}function jg(n,t){const e=n,i=(e.ORDER-ih)/rh,r=e.mul(t,ci),o=e.pow(r,i),s=e.mul(t,o),a=e.mul(e.mul(s,ci),o),l=e.mul(s,e.sub(a,e.ONE));return Ks(e,l,t),l}function Zg(n){const t=Js(n),e=ch(n),i=e(t,t.neg(t.ONE)),r=e(t,i),o=e(t,t.neg(i)),s=(n+Ug)/oh;return(a,l)=>{const c=a;let h=c.pow(l,s),f=c.mul(h,i);const u=c.mul(h,r),d=c.mul(h,o),p=c.eql(c.sqr(f),l),y=c.eql(c.sqr(u),l);h=c.cmov(h,f,p),f=c.cmov(d,u,y);const g=c.eql(c.sqr(f),l),m=c.cmov(h,f,g);return Ks(c,m,l),m}}function ch(n){if(n<eh)throw new Error("sqrt is not defined for small field");let t=n-de,e=0;for(;t%ci===be;)t/=ci,e++;let i=ci;const r=Js(n);for(;hh(r,i)===1;)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return ah;let o=r.pow(i,t);const s=(t+de)/ci;return function(l,c){const h=l;if(h.is0(c))return c;if(hh(h,c)!==1)throw new Error("Cannot find square root");let f=e,u=h.mul(h.ONE,o),d=h.pow(c,t),p=h.pow(c,s);for(;!h.eql(d,h.ONE);){if(h.is0(d))return h.ZERO;let y=1,g=h.sqr(d);for(;!h.eql(g,h.ONE);)if(y++,g=h.sqr(g),y===f)throw new Error("Cannot find square root");const m=de<<BigInt(f-y-1),x=h.pow(u,m);f=y,u=h.sqr(x),d=h.mul(d,u),p=h.mul(p,x)}return p}}function Kg(n){return n%nh===eh?ah:n%rh===ih?jg:n%oh===qg?Zg(n):ch(n)}const li=(n,t)=>(se(n,t)&de)===de,Jg=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Qg(n){const t={ORDER:"bigint",BYTES:"number",BITS:"number"},e=Jg.reduce((i,r)=>(i[r]="function",i),t);if(Zs(n,e),qs(n.BYTES,"BYTES"),qs(n.BITS,"BITS"),n.BYTES<1||n.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(n.ORDER<=de)throw new Error("invalid field: expected ORDER > 1, got "+n.ORDER);return n}function t0(n,t,e){const i=n;if(e<be)throw new Error("invalid exponent, negatives unsupported");if(e===be)return i.ONE;if(e===de)return t;let r=i.ONE,o=t;for(;e>be;)e&de&&(r=i.mul(r,o)),o=i.sqr(o),e>>=de;return r}function lh(n,t,e=!1){const i=n,r=new Array(t.length).fill(e?i.ZERO:void 0),o=t.reduce((a,l,c)=>i.is0(l)?a:(r[c]=a,i.mul(a,l)),i.ONE),s=i.inv(o);return t.reduceRight((a,l,c)=>i.is0(l)?a:(r[c]=i.mul(a,r[c]),i.mul(a,l)),s),r}function hh(n,t){const e=n,i=(e.ORDER-de)/ci,r=e.pow(t,i),o=e.eql(r,e.ONE),s=e.eql(r,e.ZERO),a=e.eql(r,e.neg(e.ONE));if(!o&&!s&&!a)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function e0(n,t){if(t!==void 0&&ql(t),n<=be)throw new Error("invalid n length: expected positive n, got "+n);if(t!==void 0&&t<1)throw new Error("invalid n length: expected positive bit length, got "+t);const e=Yg(n);if(t!==void 0&&t<e)throw new Error(`invalid n length: expected bit length (${e}) >= n.length (${t})`);const i=t!==void 0?t:e,r=Math.ceil(i/8);return{nBitLength:i,nByteLength:r}}const uh=new WeakMap;class fh{constructor(t,e={}){xt(this,"ORDER");xt(this,"BITS");xt(this,"BYTES");xt(this,"isLE");xt(this,"ZERO",be);xt(this,"ONE",de);xt(this,"_lengths");xt(this,"_mod");if(t<=de)throw new Error("invalid field: expected ORDER > 1, got "+t);let i;this.isLE=!1,e!=null&&typeof e=="object"&&(typeof e.BITS=="number"&&(i=e.BITS),typeof e.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:e.sqrt,enumerable:!0}),typeof e.isLE=="boolean"&&(this.isLE=e.isLE),e.allowedLengths&&(this._lengths=Object.freeze(e.allowedLengths.slice())),typeof e.modFromBytes=="boolean"&&(this._mod=e.modFromBytes));const{nBitLength:r,nByteLength:o}=e0(t,i);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=r,this.BYTES=o,Object.freeze(this)}create(t){return se(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof t);return be<=t&&t<this.ORDER}is0(t){return t===be}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&de)===de}neg(t){return se(-t,this.ORDER)}eql(t,e){return t===e}sqr(t){return se(t*t,this.ORDER)}add(t,e){return se(t+e,this.ORDER)}sub(t,e){return se(t-e,this.ORDER)}mul(t,e){return se(t*e,this.ORDER)}pow(t,e){return t0(this,t,e)}div(t,e){return se(t*sh(e,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,e){return t+e}subN(t,e){return t-e}mulN(t,e){return t*e}inv(t){return sh(t,this.ORDER)}sqrt(t){let e=uh.get(this);return e||uh.set(this,e=Kg(this.ORDER)),e(this,t)}toBytes(t){return this.isLE?Hg(t,this.BYTES):Jl(t,this.BYTES)}fromBytes(t,e=!1){$e(t);const{_lengths:i,BYTES:r,isLE:o,ORDER:s,_mod:a}=this;if(i){if(t.length<1||!i.includes(t.length)||t.length>r)throw new Error("Field.fromBytes: expected "+i+" bytes, got "+t.length);const c=new Uint8Array(r);c.set(t,o?0:c.length-t.length),t=c}if(t.length!==r)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);let l=o?sr(t):Wg(t);if(a&&(l=se(l,s)),!e&&!this.isValid(l))throw new Error("invalid field element: outside of range 0..ORDER");return l}invertBatch(t){return lh(this,t)}cmov(t,e,i){return po(i,"condition"),i?e:t}}Object.freeze(fh.prototype);function Js(n,t={}){return new fh(n,t)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const mo=BigInt(0),Qs=BigInt(1);function dh(n,t){const e=t.negate();return n?e:t}function ta(n,t){const e=lh(n.Fp,t.map(i=>i.Z));return t.map((i,r)=>n.fromAffine(i.toAffine(e[r])))}function ph(n,t){if(!Number.isSafeInteger(n)||n<=0||n>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+n)}function ea(n,t){ph(n,t);const e=Math.ceil(t/n)+1,i=2**(n-1),r=2**n,o=Xg(n),s=BigInt(n);return{windows:e,windowSize:i,mask:o,maxNumber:r,shiftBy:s}}function gh(n,t,e){const{windowSize:i,mask:r,maxNumber:o,shiftBy:s}=e;let a=Number(n&r),l=n>>s;a>i&&(a-=o,l+=Qs);const c=t*i,h=c+Math.abs(a)-1,f=a===0,u=a<0,d=t%2!==0;return{nextN:l,offset:h,isZero:f,isNeg:u,isNegF:d,offsetF:c}}const na=new WeakMap,mh=new WeakMap;function ia(n){return mh.get(n)||1}function yh(n){if(n!==mo)throw new Error("invalid wNAF")}class n0{constructor(t,e){xt(this,"BASE");xt(this,"ZERO");xt(this,"Fn");xt(this,"bits");this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=e}_unsafeLadder(t,e,i=this.ZERO){let r=t;for(;e>mo;)e&Qs&&(i=i.add(r)),r=r.double(),e>>=Qs;return i}precomputeWindow(t,e){const{windows:i,windowSize:r}=ea(e,this.bits),o=[];let s=t,a=s;for(let l=0;l<i;l++){a=s,o.push(a);for(let c=1;c<r;c++)a=a.add(s),o.push(a);s=a.double()}return o}wNAF(t,e,i){if(!this.Fn.isValid(i))throw new Error("invalid scalar");let r=this.ZERO,o=this.BASE;const s=ea(t,this.bits);for(let a=0;a<s.windows;a++){const{nextN:l,offset:c,isZero:h,isNeg:f,isNegF:u,offsetF:d}=gh(i,a,s);i=l,h?o=o.add(dh(u,e[d])):r=r.add(dh(f,e[c]))}return yh(i),{p:r,f:o}}wNAFUnsafe(t,e,i,r=this.ZERO){const o=ea(t,this.bits);for(let s=0;s<o.windows&&i!==mo;s++){const{nextN:a,offset:l,isZero:c,isNeg:h}=gh(i,s,o);if(i=a,!c){const f=e[l];r=r.add(h?f.negate():f)}}return yh(i),r}getPrecomputes(t,e,i){let r=na.get(e);return r||(r=this.precomputeWindow(e,t),t!==1&&(typeof i=="function"&&(r=i(r)),na.set(e,r))),r}cached(t,e,i){const r=ia(t);return this.wNAF(r,this.getPrecomputes(r,t,i),e)}unsafe(t,e,i,r){const o=ia(t);return o===1?this._unsafeLadder(t,e,r):this.wNAFUnsafe(o,this.getPrecomputes(o,t,i),e,r)}createCache(t,e){ph(e,this.bits),mh.set(t,e),na.delete(t)}hasCache(t){return ia(t)!==1}}function xh(n,t,e){if(t){if(t.ORDER!==n)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Qg(t),t}else return Js(n,{isLE:e})}function i0(n,t,e={},i){if(i===void 0&&(i=n==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${n} CURVE object`);for(const l of["p","n","h"]){const c=t[l];if(!(typeof c=="bigint"&&c>mo))throw new Error(`CURVE.${l} must be positive bigint`)}const r=xh(t.p,e.Fp,i),o=xh(t.n,e.Fn,i),a=["Gx","Gy","a","d"];for(const l of a)if(!r.isValid(t[l]))throw new Error(`CURVE.${l} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:r,Fn:o}}function r0(n,t){return function(i){const r=n(i);return{secretKey:r,publicKey:t(r)}}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Un=BigInt(0),he=BigInt(1),ra=BigInt(2),o0=BigInt(8);function s0(n,t,e,i){const r=n.sqr(e),o=n.sqr(i),s=n.add(n.mul(t.a,r),o),a=n.add(n.ONE,n.mul(t.d,n.mul(r,o)));return n.eql(s,a)}function a0(n,t={}){const e=t,i=i0("edwards",n,e,e.FpFnLE),{Fp:r,Fn:o}=i;let s=i.CURVE;const{h:a}=s;Zs(e,{},{uvRatio:"function"});const l=ra<<BigInt(o.BYTES*8)-he,c=g=>r.create(g),h=e.uvRatio===void 0?(g,m)=>{try{return{isValid:!0,value:r.sqrt(r.div(g,m))}}catch{return{isValid:!1,value:Un}}}:e.uvRatio;if(!s0(r,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function f(g,m,x=!1){const v=x?he:Un;return Ql("coordinate "+g,m,v,l),m}function u(g){if(!(g instanceof d))throw new Error("EdwardsPoint expected")}const y=class y{constructor(m,x,v,b){xt(this,"X");xt(this,"Y");xt(this,"Z");xt(this,"T");this.X=f("x",m),this.Y=f("y",x),this.Z=f("z",v,!0),this.T=f("t",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(m){if(m instanceof y)throw new Error("extended point not allowed");const{x,y:v}=m||{};return f("x",x),f("y",v),new y(x,v,he,c(x*v))}static fromBytes(m,x=!1){const v=r.BYTES,{a:b,d:k}=s;m=js($e(m,v,"point")),po(x,"zip215");const M=js(m),C=m[v-1];M[v-1]=C&-129;const L=sr(M),_=x?l:r.ORDER;Ql("point.y",L,Un,_);const $=c(L*L),I=c($-he),E=c(k*$-b);let{isValid:P,value:S}=h(I,E);if(!P)throw new Error("bad point: invalid y coordinate");const w=(S&he)===he,A=(C&128)!==0;if(!x&&S===Un&&A)throw new Error("bad point: x=0 and x_0=1");return A!==w&&(S=c(-S)),y.fromAffine({x:S,y:L})}static fromHex(m,x=!1){return y.fromBytes(zg(m),x)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(m=8,x=!0){return p.createCache(this,m),x||this.multiply(ra),this}assertValidity(){const m=this,{a:x,d:v}=s;if(m.is0())throw new Error("bad point: ZERO");const{X:b,Y:k,Z:M,T:C}=m,L=c(b*b),_=c(k*k),$=c(M*M),I=c($*$),E=c(L*x),P=c($*c(E+_)),S=c(I+c(v*c(L*_)));if(P!==S)throw new Error("bad point: equation left != right (1)");const w=c(b*k),A=c(M*C);if(w!==A)throw new Error("bad point: equation left != right (2)")}equals(m){u(m);const{X:x,Y:v,Z:b}=this,{X:k,Y:M,Z:C}=m,L=c(x*C),_=c(k*b),$=c(v*C),I=c(M*b);return L===_&&$===I}is0(){return this.equals(y.ZERO)}negate(){return new y(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:m}=s,{X:x,Y:v,Z:b}=this,k=c(x*x),M=c(v*v),C=c(ra*c(b*b)),L=c(m*k),_=x+v,$=c(c(_*_)-k-M),I=L+M,E=I-C,P=L-M,S=c($*E),w=c(I*P),A=c($*P),T=c(E*I);return new y(S,w,T,A)}add(m){u(m);const{a:x,d:v}=s,{X:b,Y:k,Z:M,T:C}=this,{X:L,Y:_,Z:$,T:I}=m,E=c(b*L),P=c(k*_),S=c(C*v*I),w=c(M*$),A=c((b+k)*(L+_)-E-P),T=w-S,R=w+S,F=c(P-x*E),D=c(A*T),z=c(R*F),B=c(A*F),H=c(T*R);return new y(D,z,H,B)}subtract(m){return u(m),this.add(m.negate())}multiply(m){if(!o.isValidNot0(m))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:x,f:v}=p.cached(this,m,b=>ta(y,b));return ta(y,[x,v])[0]}multiplyUnsafe(m){if(!o.isValid(m))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return m===Un?y.ZERO:this.is0()||m===he?this:p.unsafe(this,m,x=>ta(y,x))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return p.unsafe(this,s.n).is0()}toAffine(m){const x=this;let v=m;const{X:b,Y:k,Z:M}=x,C=x.is0();v==null&&(v=C?o0:r.inv(M));const L=c(b*v),_=c(k*v),$=r.mul(M,v);if(C)return{x:Un,y:he};if($!==he)throw new Error("invZ was invalid");return{x:L,y:_}}clearCofactor(){return a===he?this:this.multiplyUnsafe(a)}toBytes(){const{x:m,y:x}=this.toAffine(),v=r.toBytes(x);return v[v.length-1]|=m&he?128:0,v}toHex(){return jl(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}};xt(y,"BASE",new y(s.Gx,s.Gy,he,c(s.Gx*s.Gy))),xt(y,"ZERO",new y(Un,he,he,Un)),xt(y,"Fp",r),xt(y,"Fn",o);let d=y;const p=new n0(d,o.BITS);return o.BITS>=8&&d.BASE.precompute(8),Object.freeze(d.prototype),Object.freeze(d),d}class ar{constructor(t){xt(this,"ep");this.ep=t}static fromBytes(t){th()}static fromHex(t){th()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return jl(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,e){return this.ep.precompute(t,e),this}}xt(ar,"BASE"),xt(ar,"ZERO"),xt(ar,"Fp"),xt(ar,"Fn");function c0(n,t,e={}){if(typeof t!="function")throw new Error('"hash" function param is required');const i=t,r=e;Zs(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});const{prehash:o}=r,{BASE:s,Fp:a,Fn:l}=n,c=i.outputLen,h=2*a.BYTES;if(c!==void 0&&(qs(c,"hash.outputLen"),c!==h))throw new Error(`hash.outputLen must be ${h}, got ${c}`);const f=r.randomBytes===void 0?Og:r.randomBytes,u=r.adjustScalarBytes===void 0?E=>E:r.adjustScalarBytes,d=r.domain===void 0?(E,P,S)=>{if(po(S,"phflag"),P.length||S)throw new Error("Contexts/pre-hash are not supported");return E}:r.domain;function p(E){return l.create(sr(E))}function y(E){const P=C.secretKey;$e(E,C.secretKey,"secretKey");const S=$e(i(E),2*P,"hashedSecretKey"),w=u(S.slice(0,P)),A=S.slice(P,2*P),T=p(w);return{head:w,prefix:A,scalar:T}}function g(E){const{head:P,prefix:S,scalar:w}=y(E),A=s.multiply(w),T=A.toBytes();return{head:P,prefix:S,scalar:w,point:A,pointBytes:T}}function m(E){return g(E).pointBytes}function x(E=Uint8Array.of(),...P){const S=Zl(...P);return p(i(d(S,$e(E,void 0,"context"),!!o)))}function v(E,P,S={}){E=$e(E,void 0,"message"),o&&(E=o(E));const{prefix:w,scalar:A,pointBytes:T}=g(P),R=x(S.context,w,E),F=s.multiply(R).toBytes(),D=x(S.context,F,T,E),z=l.create(R+D*A);if(!l.isValid(z))throw new Error("sign failed: invalid s");const B=Zl(F,l.toBytes(z));return $e(B,C.signature,"result")}const b={zip215:r.zip215};function k(E,P,S,w=b){const{context:A}=w,T=w.zip215===void 0?!!b.zip215:w.zip215,R=C.signature;E=$e(E,R,"signature"),P=$e(P,void 0,"message"),S=$e(S,C.publicKey,"publicKey"),T!==void 0&&po(T,"zip215"),o&&(P=o(P));const F=R/2,D=E.subarray(0,F),z=sr(E.subarray(F,R));let B,H,J;try{B=n.fromBytes(S,T),H=n.fromBytes(D,T),J=s.multiplyUnsafe(z)}catch{return!1}if(!T&&B.isSmallOrder())return!1;const X=x(A,D,S,P);return H.add(B.multiplyUnsafe(X)).subtract(J).clearCofactor().is0()}const M=a.BYTES,C={secretKey:M,publicKey:M,signature:2*M,seed:M};function L(E){return E=E===void 0?f(C.seed):E,$e(E,C.seed,"seed")}function _(E){return Bg(E)&&E.length===C.secretKey}function $(E,P){try{return!!n.fromBytes(E,P===void 0?b.zip215:P)}catch{return!1}}const I={getExtendedPublicKey:g,randomSecretKey:L,isValidSecretKey:_,isValidPublicKey:$,toMontgomery(E){const{y:P}=n.fromBytes(E),S=C.publicKey,w=S===32;if(!w&&S!==57)throw new Error("only defined for 25519 and 448");const A=w?a.div(he+P,he-P):a.div(P-he,P+he);return a.toBytes(A)},toMontgomerySecret(E){const P=C.secretKey;$e(E,P);const S=i(E.subarray(0,P));return u(S).subarray(0,P)}};return Object.freeze(C),Object.freeze(I),Object.freeze({keygen:r0(L,m),getPublicKey:m,sign:v,verify:k,utils:I,Point:n,lengths:C})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const l0=BigInt(0),cr=BigInt(1),bh=BigInt(2),h0=BigInt(5),u0=BigInt(8),lr=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),vh={p:lr,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:u0,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function f0(n){const t=BigInt(10),e=BigInt(20),i=BigInt(40),r=BigInt(80),o=lr,a=n*n%o*n%o,l=bn(a,bh,o)*a%o,c=bn(l,cr,o)*n%o,h=bn(c,h0,o)*c%o,f=bn(h,t,o)*h%o,u=bn(f,e,o)*f%o,d=bn(u,i,o)*u%o,p=bn(d,r,o)*d%o,y=bn(p,r,o)*d%o,g=bn(y,t,o)*h%o;return{pow_p_5_8:bn(g,bh,o)*n%o,b2:a}}function d0(n){return n[0]&=248,n[31]&=127,n[31]|=64,n}const oa=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function wh(n,t){const e=lr,i=se(t*t*t,e),r=se(i*i*t,e),o=f0(n*r).pow_p_5_8;let s=se(n*i*o,e);const a=se(t*s*s,e),l=s,c=se(s*oa,e),h=a===n,f=a===se(-n,e),u=a===se(-n*oa,e);return h&&(s=l),(f||u)&&(s=c),li(s,e)&&(s=se(-s,e)),{isValid:h||f,value:s}}const hi=a0(vh,{uvRatio:wh}),ui=hi.Fp,p0=hi.Fn;function g0(n){return c0(hi,Dg,Object.assign({adjustScalarBytes:d0,zip215:!0},n))}const m0=g0({}),kh=oa,y0=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Mh=n=>wh(cr,n),x0=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),b0=n=>ui.create(sr(n)&x0),Ne=class Ne extends ar{constructor(t){super(t)}static fromAffine(t){return new Ne(hi.fromAffine(t))}assertSame(t){if(!(t instanceof Ne))throw new Error("RistrettoPoint expected")}init(t){return new Ne(t)}static fromBytes(t){ai(t,32);const{a:e,d:i}=vh,r=lr,o=b=>ui.create(b),s=b0(t);if(!Vg(ui.toBytes(s),t)||li(s,r))throw new Error("invalid ristretto255 encoding 1");const a=o(s*s),l=o(cr+e*a),c=o(cr-e*a),h=o(l*l),f=o(c*c),u=o(e*i*h-f),{isValid:d,value:p}=Mh(o(u*f)),y=o(p*c),g=o(p*y*u);let m=o((s+s)*y);li(m,r)&&(m=o(-m));const x=o(l*g),v=o(m*x);if(!d||li(v,r)||x===l0)throw new Error("invalid ristretto255 encoding 2");return new Ne(new hi(m,x,cr,v))}static fromHex(t){return Ne.fromBytes(Xs(t))}toBytes(){let{X:t,Y:e,Z:i,T:r}=this.ep;const o=lr,s=g=>ui.create(g),a=s(s(i+e)*s(i-e)),l=s(t*e),c=s(l*l),{value:h}=Mh(s(a*c)),f=s(h*a),u=s(h*l),d=s(f*u*r);let p;if(li(r*d,o)){let g=s(e*kh),m=s(t*kh);t=g,e=m,p=s(f*y0)}else p=u;li(t*d,o)&&(e=s(-e));let y=s((i-e)*p);return li(y,o)&&(y=s(-y)),ui.toBytes(y)}equals(t){this.assertSame(t);const{X:e,Y:i}=this.ep,{X:r,Y:o}=t.ep,s=c=>ui.create(c),a=s(e*o)===s(i*r),l=s(i*o)===s(e*r);return a||l}is0(){return this.equals(Ne.ZERO)}};xt(Ne,"BASE",new Ne(hi.BASE)),xt(Ne,"ZERO",new Ne(hi.ZERO)),xt(Ne,"Fp",ui),xt(Ne,"Fn",p0);let $i=Ne;Object.freeze($i.BASE),Object.freeze($i.ZERO),Object.freeze($i.prototype),Object.freeze($i);const Ah="katucharts_license",v0=7*24*60*60*1e3,w0=60*60*1e3,k0=8e3,UA="3ab57dfcba56a3c6b1949906ef075ff6536f2a40b328a77733e4d8d837cb6abe";class M0{constructor(){this.licenseKey=null,this.payload=null,this.offlineValid=!1,this.verifyUrl=null,this.mode="lenient",this.gracePeriodMs=v0,this.recheckIntervalMs=w0,this.cache=null,this.pending=!1,this.timer=null,this.listeners=new Set,this.lastEmitted=null}configure(t){t.verifyUrl!==void 0&&(this.verifyUrl=t.verifyUrl||null),t.mode&&(this.mode=t.mode),t.gracePeriodMs!==void 0&&(this.gracePeriodMs=t.gracePeriodMs),t.recheckIntervalMs!==void 0&&(this.recheckIntervalMs=t.recheckIntervalMs),this.offlineValid&&this.verifyUrl&&this.startOnlineChecks(),this.emit()}setKey(t){this.licenseKey=t,this.payload=null,this.offlineValid=!1,this.cache=null;const e=this.validate(t);return e&&(this.payload=e,this.offlineValid=!0,this.cache=this.loadCache(e.kid)),this.offlineValid&&this.verifyUrl&&this.startOnlineChecks(),this.emit(),this.isLicensed()}isLicensed(){var t;return this.offlineValid?this.verifyUrl?((t=this.cache)==null?void 0:t.lastResult)==="invalid"?!1:this.cache&&this.cache.lastValidAt>0&&sa()-this.cache.lastValidAt<this.gracePeriodMs||this.pending?!0:this.mode!=="strict":!0:!1}getPayload(){return this.payload}onChange(t){return this.listeners.add(t),()=>this.listeners.delete(t)}startOnlineChecks(){var t,e;this.verifyOnline(),this.timer==null&&typeof setInterval<"u"&&this.recheckIntervalMs>0&&(this.timer=setInterval(()=>void this.verifyOnline(),this.recheckIntervalMs),(e=(t=this.timer)==null?void 0:t.unref)==null||e.call(t))}async verifyOnline(){if(!this.verifyUrl||!this.licenseKey||!this.payload||typeof fetch>"u")return;this.pending=!0;const t=this.payload.kid??"",e=typeof window<"u"?window.location.hostname:"";let i="unreachable";try{const r=typeof AbortController<"u"?new AbortController:null,o=r?setTimeout(()=>r.abort(),k0):null,s=await fetch(this.verifyUrl,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({key:this.licenseKey,domain:e,kid:t}),signal:r==null?void 0:r.signal});o&&clearTimeout(o),s.ok?i=(await s.json()).valid?"valid":"invalid":s.status>=400&&s.status<500&&(i="invalid")}catch{i="unreachable"}this.pending=!1,this.applyResult(t,i)}applyResult(t,e){const i=this.cache,r={kid:t,lastResult:e,lastValidAt:e==="valid"?sa():(i==null?void 0:i.lastValidAt)??0,updatedAt:sa()};this.cache=r,this.saveCache(r),this.emit()}emit(){const t=this.isLicensed();t!==this.lastEmitted&&(this.lastEmitted=t,this.listeners.forEach(e=>{try{e(t)}catch{}}))}loadCache(t){if(!t||typeof localStorage>"u")return null;try{const e=localStorage.getItem(Ah);if(!e)return null;const i=JSON.parse(e);return i.kid===t?i:null}catch{return null}}saveCache(t){if(!(typeof localStorage>"u"))try{localStorage.setItem(Ah,JSON.stringify(t))}catch{}}validate(t){try{const e=t.indexOf(".");if(e===-1)return null;const i=t.substring(0,e),r=t.substring(e+1),o="3ab57dfcba56a3c6b1949906ef075ff6536f2a40b328a77733e4d8d837cb6abe",s=new TextEncoder().encode(i);if(!m0.verify(Sh(r),s,Sh(o)))return null;const a=atob(i),l=JSON.parse(a);return!l.customer||!this.checkExpiry(l.expiry)||!this.checkDomain(l.domains)?null:l}catch{return null}}checkExpiry(t){if(!t)return!0;try{return new Date(t).getTime()>=Date.now()}catch{return!1}}checkDomain(t){if(!t||t.length===0||typeof window>"u")return!0;const e=window.location.hostname;return t.some(i=>{if(i.startsWith("*.")){const r=i.substring(1);return e.endsWith(r)||e===i.substring(2)}return e===i})}}function sa(){return Date.now()}function Sh(n){if(n.length%2!==0)throw new Error("invalid hex length");const t=new Uint8Array(n.length/2);for(let e=0;e<t.length;e++)t[e]=parseInt(n.slice(e*2,e*2+2),16);return t}const Qe=new M0;class A0{constructor(){this.indicators=new Map}register(t){this.indicators.set(t.name.toLowerCase(),t)}get(t){return this.indicators.get(t.toLowerCase())}getAll(){return new Map(this.indicators)}}const _h=globalThis,S0=_h.__katuIndicatorRegistry||(_h.__katuIndicatorRegistry=new A0),aa={sma:"sma",ema:"ema",wma:"wma",rsi:"rsi",macd:"macd",stochastic:"stochastic",stoch:"stochastic",bb:"bollingerbands",bollinger:"bollingerbands",bollingerbands:"bollingerbands",atr:"atr",vwap:"vwap",obv:"obv",vbp:"vbp",ichimoku:"ichimoku",ikh:"ichimoku",cci:"cci",roc:"roc",momentum:"momentum",mom:"momentum",dema:"dema",tema:"tema",adx:"adx",psar:"psar"},_0=new Set(Object.keys(aa));function ca(n){return!!n&&_0.has(n.toLowerCase())}const Ch="#7798BF",la="#f15c80",C0="#90ed7d";function P0(n){return n.map((t,e)=>{const i=t.close??t.y??0;return{x:t.x??e,open:t.open??i,high:t.high??i,low:t.low??i,close:i,volume:t.volume??t.z}})}function E0(n,t){const e=n.linkedTo;if(typeof e=="string"){const i=t.find(r=>r.id===e);if(i)return i}return typeof e=="number"&&t[e]?t[e]:t.find(i=>i!==n&&!ca(i._internalType))??null}const T0={sma:"SMA",ema:"EMA",wma:"WMA",rsi:"RSI",macd:"MACD",stochastic:"Stochastic",bollingerbands:"Bollinger Bands",atr:"ATR",vwap:"VWAP",obv:"OBV",ichimoku:"Ichimoku",cci:"CCI",roc:"ROC",momentum:"Momentum",dema:"DEMA",tema:"TEMA",adx:"ADX",psar:"PSAR"};function $0(n,t){const e=T0[n]||n.toUpperCase(),i=t.period;return i?`${e} (${i})`:e}function tn(n,t,e,i){return{...n,type:t,_internalType:t,_processedData:e,data:e,params:void 0,linkedTo:void 0,...i}}function L0(n,t){return n.map((e,i)=>{var r;return{x:e.x,low:((r=t[i])==null?void 0:r.y)??null,high:e.y??null}})}function I0(n,t,e,i){const r=[],o=n.color||Ch,s=n.lineWidth??1.5,a=n.name||$0(t,i);if(e.bands){if(r.push(tn(n,"arearange",L0(e.bands.upper,e.bands.lower),{name:`${a} band`,color:n.color||Ch,fillOpacity:n.fillOpacity??.15,lineWidth:0,showInLegend:!1,enableMouseTracking:!1})),t==="ichimoku")r.push(tn(n,"line",e.values,{name:`${a} Tenkan`,color:o,lineWidth:s,marker:{enabled:!1}})),e.signal&&r.push(tn(n,"line",e.signal,{name:`${a} Kijun`,color:la,lineWidth:s,marker:{enabled:!1}}));else{const l=e.bands.middle??e.values;r.push(tn(n,"line",l,{name:a,color:o,lineWidth:s,marker:{enabled:!1}}))}return r}return e.histogram?(r.push(tn(n,"column",e.histogram,{name:`${a} Histogram`,color:C0,showInLegend:!1,enableMouseTracking:!1})),r.push(tn(n,"line",e.values,{name:a,color:o,lineWidth:s,marker:{enabled:!1}})),e.signal&&r.push(tn(n,"line",e.signal,{name:`${a} Signal`,color:la,lineWidth:s,marker:{enabled:!1}})),r):e.signal?(r.push(tn(n,"line",e.values,{name:`${a} %K`,color:o,lineWidth:s,marker:{enabled:!1}})),r.push(tn(n,"line",e.signal,{name:`${a} %D`,color:la,lineWidth:s,marker:{enabled:!1}})),r):t==="vbp"?(r.push(tn(n,"vbp",e.values,{name:a,showInLegend:n.showInLegend??!1})),r):t==="psar"?(r.push(tn(n,"scatter",e.values,{name:a,color:o,marker:{enabled:!0,radius:2,symbol:"circle"}})),r):(r.push(tn(n,"line",e.values,{name:a,color:o,lineWidth:s,marker:{enabled:!1}})),r)}function F0(n){if(!n.some(e=>ca(e._internalType)))return n;const t=[];for(const e of n){const i=(e._internalType||"").toLowerCase();if(!ca(i)){t.push(e);continue}const r=S0.get(aa[i]),o=E0(e,n);if(!r||!o){t.push({...e,type:"line",_internalType:"line",_processedData:[],data:[]});continue}const s=e.params||{},a=r.calculate(P0(o._processedData||[]),s);t.push(...I0(e,aa[i],a,s))}return t.map((e,i)=>({...e,index:i}))}let yo={};function ha(n){yo=le(yo,n)}function Ph(){return yo}const Qn=class Qn{parse(t){var o;(o=t.chart)!=null&&o.palette&&!t.colors&&(t={...t,colors:Pl(t.chart.palette)});const e=t.theme?$l(t.theme):void 0,i=this.mergeWithDefaults(t,e),r=this.normalize(i);return this.toInternal(r)}mergeWithDefaults(t,e){return le(le({},Ns),yo,e??{},t)}normalize(t){var c,h,f;const e={...t};e.xAxis&&!Array.isArray(e.xAxis)&&(e.xAxis=[e.xAxis]),e.yAxis&&!Array.isArray(e.yAxis)&&(e.yAxis=[e.yAxis]),e.colorAxis&&!Array.isArray(e.colorAxis)&&(e.colorAxis=[e.colorAxis]),(!e.xAxis||Array.isArray(e.xAxis)&&e.xAxis.length===0)&&(e.xAxis=[le({},Ns.xAxis)]),(!e.yAxis||Array.isArray(e.yAxis)&&e.yAxis.length===0)&&(e.yAxis=[le({},Ns.yAxis)]);for(const u of[e.xAxis,e.yAxis])if(Array.isArray(u))for(const d of u)d.categories&&d.categories.length>0&&(d.type="category");e.series&&!Array.isArray(e.series)&&(e.series=[e.series]);const i=((c=e.chart)==null?void 0:c.type)||"line",r=i==="bar"||Array.isArray(e.series)&&e.series.some(u=>u.type==="bar");if(e.chart&&(r?(e.chart.inverted=!0,e.chart._invertedFromBar=!0):e.chart._invertedFromBar&&(e.chart.inverted=!1,delete e.chart._invertedFromBar)),(i==="manhattan"||Array.isArray(e.series)&&e.series.some(u=>u.type==="manhattan"))&&Array.isArray(e.xAxis)&&(!Array.isArray(e.series)||e.series.some(d=>(d.type==="manhattan"||!d.type&&i==="manhattan")&&d.showChromosomeLabels!==!1)))for(const d of e.xAxis)d.labels={...d.labels,enabled:!1},d.tickLength=0;const s=!!((h=e.chart)!=null&&h.polar),a=(f=e.chart)==null?void 0:f.type;s&&Array.isArray(e.series)&&(e.series=e.series.map(u=>{const d=u.type||a||"line",p=!u.type||u.type==="line"||u.type==="spline",y=!u.type&&(a==="line"||a==="spline"),g={...u,type:p?"radar":u.type};return u.type==="line"||u.type==="spline"||y?g._polarSubType="line":(d==="column"||d==="bar")&&(g._polarSubType="column"),g}));const l=Array.isArray(e.colorAxis)?e.colorAxis[0]:e.colorAxis;return Array.isArray(e.series)&&(e.series=e.series.map(u=>{const d=this.normalizeSeries(u,s&&(!u.type||u.type==="line"||u.type==="spline")?"radar":i,e.plotOptions);return(d.type==="heatmap"||d.type==="treemap")&&l&&!d.colorAxis&&(d.colorAxis=l),(d.type==="map"||d.type==="mappoint"||d.type==="flowmap")&&this.applyMapTopLevelOptions(d,e,l),d})),this.applyAutoHeight(e),e}applyAutoHeight(t){var i;const e=t.chart;if(e){if(e._autoScrollMinHeight!=null){const r=e.scrollablePlotArea;if(r&&typeof r=="object"&&r.minHeight===e._autoScrollMinHeight){const o={...r};delete o.minHeight,e.scrollablePlotArea=Object.keys(o).length?o:void 0}delete e._autoScrollMinHeight}if(e.height==null&&e.inverted){const r=Array.isArray(t.xAxis)?t.xAxis:t.xAxis?[t.xAxis]:[];let o=0;for(const s of r){const a=((i=s==null?void 0:s.categories)==null?void 0:i.length)??0;a>o&&(o=a)}if(o>12){const s=Math.min(o*16+130,6e3),a=e.scrollablePlotArea&&typeof e.scrollablePlotArea=="object"?e.scrollablePlotArea:{};e.scrollablePlotArea={...a,minHeight:s},e._autoScrollMinHeight=s;return}}}}applyMapTopLevelOptions(t,e,i){var r,o;i&&(!t.colorAxis||typeof t.colorAxis!="object")&&(t.colorAxis=i),t.mapNavigation==null&&e.mapNavigation!=null&&(t.mapNavigation=e.mapNavigation),t.projection==null&&((r=e.mapView)==null?void 0:r.projection)!=null&&(t.projection=e.mapView.projection),t.mapData==null&&((o=e.chart)==null?void 0:o.map)!=null&&(t.mapData=e.chart.map)}static mergeDataLabels(t){let e;for(const i of t)i!==void 0&&(e=Qn.mergeTwoDataLabels(e,i));return e}static mergeTwoDataLabels(t,e){if(t===void 0)return e;if(e===void 0)return t;const i=Array.isArray(t)?t:[t],r=Array.isArray(e)?e:[e],o=Math.max(i.length,r.length),s=[];for(let a=0;a<o;a++){const l=i[a]??i[0]??{},c=r[a]??r[0]??{};s.push(le({},l,c))}return s.length===1&&!Array.isArray(t)&&!Array.isArray(e)?s[0]:s}normalizeSeries(t,e,i){let r={...t};if(r.type?delete r._typeFromChart:(r.type=e,r._typeFromChart=!0),i){const o=i.series||{},s=i[r.type]||{},a=r._polarSubType,l=a?i[a]||{}:{},c=Qn.mergeDataLabels([o,l,s,r].map(h=>h.dataLabels));r=le({},o,l,s,r),c!==void 0&&(r.dataLabels=c)}if(Array.isArray(r.data)){const o=r.turboThreshold??1e3;if(r.data.length>o){const s=r.data[0];if(s!==null&&typeof s=="object"&&!Array.isArray(s)&&console.warn(`KatuCharts: series data length (${r.data.length}) exceeds turboThreshold (${o}). Use array format (numbers or [x,y] pairs) for better performance.`),typeof s=="number"||Array.isArray(s)&&typeof s[0]=="number")return r.data=this.normalizeDataBulk(r.data,r),r}r.data=r.data.map((s,a)=>this.normalizeDataPoint(s,a,r))}else r.data!=null&&(r.data=[]);return r}defaultArrayKeys(t,e){return t?Qn.OHLC_TYPES.has(t)?e>=5?["x","open","high","low","close"]:["open","high","low","close"]:Qn.RANGE_TYPES.has(t)?e>=3?["x","low","high"]:["low","high"]:null:null}normalizeDataPoint(t,e,i){if(t===null)return{x:(i.pointStart??0)+e*(i.pointInterval??1),y:null};if(typeof t=="number")return{x:(i.pointStart??0)+e*(i.pointInterval??1),y:t};if(Array.isArray(t)&&t.length===5&&i.type==="boxplot"){const r=t;return{x:(i.pointStart??0)+e*(i.pointInterval??1),low:r[0],q1:r[1],median:r[2],q3:r[3],high:r[4]}}if(Array.isArray(t)&&i.type==="flowmap")return{from:t[0],to:t[1],weight:t[2]};if(Array.isArray(t)){if(i.keys&&i.keys.length>0){const o={};for(let s=0;s<i.keys.length&&s<t.length;s++)o[i.keys[s]]=t[s];return o.x===void 0&&(!Pi.has(i.type)||!o.name)&&(o.x=(i.pointStart??0)+e*(i.pointInterval??1)),o}const r=this.defaultArrayKeys(i.type,t.length);if(r){const o={};for(let s=0;s<r.length&&s<t.length;s++)o[r[s]]=t[s];return o.x===void 0&&(o.x=(i.pointStart??0)+e*(i.pointInterval??1)),o.close!==void 0&&o.y===void 0&&(o.y=o.close),o}if(typeof t[0]=="string"){const o={name:t[0],y:t[1]};return Pi.has(i.type)||(o.x=(i.pointStart??0)+e*(i.pointInterval??1)),o}return t.length>=3?{x:t[0],y:t[1],z:t[2]}:{x:t[0],y:t[1]}}if(typeof t=="object"){const r={...t},o=i.type==="map"||i.type==="mappoint"||i.type==="flowmap",s=!Pi.has(i.type);return!o&&r.x===void 0&&(s||!r.name)&&(r.x=(i.pointStart??0)+e*(i.pointInterval??1)),r}return{y:null}}normalizeDataBulk(t,e){const i=t.length,r=new Array(i),o=e.pointStart??0,s=e.pointInterval??1,a=t[0];if(typeof a=="number")for(let l=0;l<i;l++)r[l]={x:o+l*s,y:t[l]};else{const l=Array.isArray(a)?this.defaultArrayKeys(e.type,a.length):null;if(l)for(let c=0;c<i;c++){const h=t[c],f={};for(let u=0;u<l.length&&u<h.length;u++)f[l[u]]=h[u];f.x===void 0&&(f.x=o+c*s),f.close!==void 0&&f.y===void 0&&(f.y=f.close),r[c]=f}else for(let c=0;c<i;c++){const h=t[c];h.length>=3?r[c]={x:h[0],y:h[1],z:h[2]}:r[c]={x:h[0],y:h[1]}}}return r}enforceCredits(t){return Qe.isLicensed()?t:{...t,enabled:!0,text:!t.text||!t.text.trim()?"Powered by: KatuCharts":t.text}}toInternal(t){var l,c,h;const e=!!((l=t.chart)!=null&&l.inverted),i=(c=t.chart)==null?void 0:c.backgroundColor,r=t.xAxis.map((f,u)=>({...f,index:u,isX:!0,_inverted:e,_backgroundColor:i})),o=t.yAxis.map((f,u)=>({...f,index:u,isX:!1,_inverted:e,_backgroundColor:i})),s=(t.series||[]).map((f,u)=>{var m;const d=typeof f.xAxis=="number"?f.xAxis:0,p=typeof f.yAxis=="number"?f.yAxis:0,y=f.type||((m=t.chart)==null?void 0:m.type)||"line",g=y==="pie"||y==="donut"||y==="sankey";return{...f,index:u,_internalType:y,_xAxisIndex:d,_yAxisIndex:p,_xAxis:r[d]||r[0],_yAxis:o[p]||o[0],_processedData:f.data||[],...g&&f.showInLegend===void 0?{showInLegend:!1}:{}}}),a=F0(s);return{chart:{width:null,height:null,backgroundColor:"#ffffff",animation:!0,reflow:!0,...t.chart},title:t.title||{},subtitle:t.subtitle||{},xAxis:r,yAxis:o,colorAxis:t.colorAxis||[],series:a,tooltip:t.tooltip||{},legend:{...t.legend||{},_backgroundColor:(h=t.chart)==null?void 0:h.backgroundColor},plotOptions:t.plotOptions||{},credits:this.enforceCredits(t.credits||{}),exporting:t.exporting||{},loading:t.loading||{},navigator:t.navigator||{},rangeSelector:t.rangeSelector||{},drilldown:t.drilldown||{},responsive:t.responsive||{},accessibility:t.accessibility||{},colors:t.colors||[],time:t.time||{}}}};Qn.OHLC_TYPES=new Set(["candlestick","ohlc","heikinashi","hollowcandlestick"]),Qn.RANGE_TYPES=new Set(["arearange","areasplinerange","columnrange"]);let qn=Qn;var ua="http://www.w3.org/1999/xhtml";const Eh={svg:"http://www.w3.org/2000/svg",xhtml:ua,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function xo(n){var t=n+="",e=t.indexOf(":");return e>=0&&(t=n.slice(0,e))!=="xmlns"&&(n=n.slice(e+1)),Eh.hasOwnProperty(t)?{space:Eh[t],local:n}:n}function R0(n){return function(){var t=this.ownerDocument,e=this.namespaceURI;return e===ua&&t.documentElement.namespaceURI===ua?t.createElement(n):t.createElementNS(e,n)}}function D0(n){return function(){return this.ownerDocument.createElementNS(n.space,n.local)}}function Th(n){var t=xo(n);return(t.local?D0:R0)(t)}function z0(){}function fa(n){return n==null?z0:function(){return this.querySelector(n)}}function B0(n){typeof n!="function"&&(n=fa(n));for(var t=this._groups,e=t.length,i=new Array(e),r=0;r<e;++r)for(var o=t[r],s=o.length,a=i[r]=new Array(s),l,c,h=0;h<s;++h)(l=o[h])&&(c=n.call(l,l.__data__,h,o))&&("__data__"in l&&(c.__data__=l.__data__),a[h]=c);return new Xe(i,this._parents)}function O0(n){return n==null?[]:Array.isArray(n)?n:Array.from(n)}function N0(){return[]}function $h(n){return n==null?N0:function(){return this.querySelectorAll(n)}}function W0(n){return function(){return O0(n.apply(this,arguments))}}function H0(n){typeof n=="function"?n=W0(n):n=$h(n);for(var t=this._groups,e=t.length,i=[],r=[],o=0;o<e;++o)for(var s=t[o],a=s.length,l,c=0;c<a;++c)(l=s[c])&&(i.push(n.call(l,l.__data__,c,s)),r.push(l));return new Xe(i,r)}function Lh(n){return function(){return this.matches(n)}}function Ih(n){return function(t){return t.matches(n)}}var V0=Array.prototype.find;function G0(n){return function(){return V0.call(this.children,n)}}function Y0(){return this.firstElementChild}function X0(n){return this.select(n==null?Y0:G0(typeof n=="function"?n:Ih(n)))}var U0=Array.prototype.filter;function q0(){return Array.from(this.children)}function j0(n){return function(){return U0.call(this.children,n)}}function Z0(n){return this.selectAll(n==null?q0:j0(typeof n=="function"?n:Ih(n)))}function K0(n){typeof n!="function"&&(n=Lh(n));for(var t=this._groups,e=t.length,i=new Array(e),r=0;r<e;++r)for(var o=t[r],s=o.length,a=i[r]=[],l,c=0;c<s;++c)(l=o[c])&&n.call(l,l.__data__,c,o)&&a.push(l);return new Xe(i,this._parents)}function Fh(n){return new Array(n.length)}function J0(){return new Xe(this._enter||this._groups.map(Fh),this._parents)}function bo(n,t){this.ownerDocument=n.ownerDocument,this.namespaceURI=n.namespaceURI,this._next=null,this._parent=n,this.__data__=t}bo.prototype={constructor:bo,appendChild:function(n){return this._parent.insertBefore(n,this._next)},insertBefore:function(n,t){return this._parent.insertBefore(n,t)},querySelector:function(n){return this._parent.querySelector(n)},querySelectorAll:function(n){return this._parent.querySelectorAll(n)}};function Q0(n){return function(){return n}}function tm(n,t,e,i,r,o){for(var s=0,a,l=t.length,c=o.length;s<c;++s)(a=t[s])?(a.__data__=o[s],i[s]=a):e[s]=new bo(n,o[s]);for(;s<l;++s)(a=t[s])&&(r[s]=a)}function em(n,t,e,i,r,o,s){var a,l,c=new Map,h=t.length,f=o.length,u=new Array(h),d;for(a=0;a<h;++a)(l=t[a])&&(u[a]=d=s.call(l,l.__data__,a,t)+"",c.has(d)?r[a]=l:c.set(d,l));for(a=0;a<f;++a)d=s.call(n,o[a],a,o)+"",(l=c.get(d))?(i[a]=l,l.__data__=o[a],c.delete(d)):e[a]=new bo(n,o[a]);for(a=0;a<h;++a)(l=t[a])&&c.get(u[a])===l&&(r[a]=l)}function nm(n){return n.__data__}function im(n,t){if(!arguments.length)return Array.from(this,nm);var e=t?em:tm,i=this._parents,r=this._groups;typeof n!="function"&&(n=Q0(n));for(var o=r.length,s=new Array(o),a=new Array(o),l=new Array(o),c=0;c<o;++c){var h=i[c],f=r[c],u=f.length,d=rm(n.call(h,h&&h.__data__,c,i)),p=d.length,y=a[c]=new Array(p),g=s[c]=new Array(p),m=l[c]=new Array(u);e(h,f,y,g,m,d,t);for(var x=0,v=0,b,k;x<p;++x)if(b=y[x]){for(x>=v&&(v=x+1);!(k=g[v])&&++v<p;);b._next=k||null}}return s=new Xe(s,i),s._enter=a,s._exit=l,s}function rm(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function om(){return new Xe(this._exit||this._groups.map(Fh),this._parents)}function sm(n,t,e){var i=this.enter(),r=this,o=this.exit();return typeof n=="function"?(i=n(i),i&&(i=i.selection())):i=i.append(n+""),t!=null&&(r=t(r),r&&(r=r.selection())),e==null?o.remove():e(o),i&&r?i.merge(r).order():r}function am(n){for(var t=n.selection?n.selection():n,e=this._groups,i=t._groups,r=e.length,o=i.length,s=Math.min(r,o),a=new Array(r),l=0;l<s;++l)for(var c=e[l],h=i[l],f=c.length,u=a[l]=new Array(f),d,p=0;p<f;++p)(d=c[p]||h[p])&&(u[p]=d);for(;l<r;++l)a[l]=e[l];return new Xe(a,this._parents)}function cm(){for(var n=this._groups,t=-1,e=n.length;++t<e;)for(var i=n[t],r=i.length-1,o=i[r],s;--r>=0;)(s=i[r])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function lm(n){n||(n=hm);function t(f,u){return f&&u?n(f.__data__,u.__data__):!f-!u}for(var e=this._groups,i=e.length,r=new Array(i),o=0;o<i;++o){for(var s=e[o],a=s.length,l=r[o]=new Array(a),c,h=0;h<a;++h)(c=s[h])&&(l[h]=c);l.sort(t)}return new Xe(r,this._parents).order()}function hm(n,t){return n<t?-1:n>t?1:n>=t?0:NaN}function um(){var n=arguments[0];return arguments[0]=this,n.apply(null,arguments),this}function fm(){return Array.from(this)}function dm(){for(var n=this._groups,t=0,e=n.length;t<e;++t)for(var i=n[t],r=0,o=i.length;r<o;++r){var s=i[r];if(s)return s}return null}function pm(){let n=0;for(const t of this)++n;return n}function gm(){return!this.node()}function mm(n){for(var t=this._groups,e=0,i=t.length;e<i;++e)for(var r=t[e],o=0,s=r.length,a;o<s;++o)(a=r[o])&&n.call(a,a.__data__,o,r);return this}function ym(n){return function(){this.removeAttribute(n)}}function xm(n){return function(){this.removeAttributeNS(n.space,n.local)}}function bm(n,t){return function(){this.setAttribute(n,t)}}function vm(n,t){return function(){this.setAttributeNS(n.space,n.local,t)}}function wm(n,t){return function(){var e=t.apply(this,arguments);e==null?this.removeAttribute(n):this.setAttribute(n,e)}}function km(n,t){return function(){var e=t.apply(this,arguments);e==null?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}}function Mm(n,t){var e=xo(n);if(arguments.length<2){var i=this.node();return e.local?i.getAttributeNS(e.space,e.local):i.getAttribute(e)}return this.each((t==null?e.local?xm:ym:typeof t=="function"?e.local?km:wm:e.local?vm:bm)(e,t))}function Rh(n){return n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView}function Am(n){return function(){this.style.removeProperty(n)}}function Sm(n,t,e){return function(){this.style.setProperty(n,t,e)}}function _m(n,t,e){return function(){var i=t.apply(this,arguments);i==null?this.style.removeProperty(n):this.style.setProperty(n,i,e)}}function Cm(n,t,e){return arguments.length>1?this.each((t==null?Am:typeof t=="function"?_m:Sm)(n,t,e??"")):Li(this.node(),n)}function Li(n,t){return n.style.getPropertyValue(t)||Rh(n).getComputedStyle(n,null).getPropertyValue(t)}function Pm(n){return function(){delete this[n]}}function Em(n,t){return function(){this[n]=t}}function Tm(n,t){return function(){var e=t.apply(this,arguments);e==null?delete this[n]:this[n]=e}}function $m(n,t){return arguments.length>1?this.each((t==null?Pm:typeof t=="function"?Tm:Em)(n,t)):this.node()[n]}function Dh(n){return n.trim().split(/^|\s+/)}function da(n){return n.classList||new zh(n)}function zh(n){this._node=n,this._names=Dh(n.getAttribute("class")||"")}zh.prototype={add:function(n){var t=this._names.indexOf(n);t<0&&(this._names.push(n),this._node.setAttribute("class",this._names.join(" ")))},remove:function(n){var t=this._names.indexOf(n);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(n){return this._names.indexOf(n)>=0}};function Bh(n,t){for(var e=da(n),i=-1,r=t.length;++i<r;)e.add(t[i])}function Oh(n,t){for(var e=da(n),i=-1,r=t.length;++i<r;)e.remove(t[i])}function Lm(n){return function(){Bh(this,n)}}function Im(n){return function(){Oh(this,n)}}function Fm(n,t){return function(){(t.apply(this,arguments)?Bh:Oh)(this,n)}}function Rm(n,t){var e=Dh(n+"");if(arguments.length<2){for(var i=da(this.node()),r=-1,o=e.length;++r<o;)if(!i.contains(e[r]))return!1;return!0}return this.each((typeof t=="function"?Fm:t?Lm:Im)(e,t))}function Dm(){this.textContent=""}function zm(n){return function(){this.textContent=n}}function Bm(n){return function(){var t=n.apply(this,arguments);this.textContent=t??""}}function Om(n){return arguments.length?this.each(n==null?Dm:(typeof n=="function"?Bm:zm)(n)):this.node().textContent}function Nm(){this.innerHTML=""}function Wm(n){return function(){this.innerHTML=n}}function Hm(n){return function(){var t=n.apply(this,arguments);this.innerHTML=t??""}}function Vm(n){return arguments.length?this.each(n==null?Nm:(typeof n=="function"?Hm:Wm)(n)):this.node().innerHTML}function Gm(){this.nextSibling&&this.parentNode.appendChild(this)}function Ym(){return this.each(Gm)}function Xm(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Um(){return this.each(Xm)}function qm(n){var t=typeof n=="function"?n:Th(n);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function jm(){return null}function Zm(n,t){var e=typeof n=="function"?n:Th(n),i=t==null?jm:typeof t=="function"?t:fa(t);return this.select(function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)})}function Km(){var n=this.parentNode;n&&n.removeChild(this)}function Jm(){return this.each(Km)}function Qm(){var n=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(n,this.nextSibling):n}function ty(){var n=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(n,this.nextSibling):n}function ey(n){return this.select(n?ty:Qm)}function ny(n){return arguments.length?this.property("__data__",n):this.node().__data__}function iy(n){return function(t){n.call(this,t,this.__data__)}}function ry(n){return n.trim().split(/^|\s+/).map(function(t){var e="",i=t.indexOf(".");return i>=0&&(e=t.slice(i+1),t=t.slice(0,i)),{type:t,name:e}})}function oy(n){return function(){var t=this.__on;if(t){for(var e=0,i=-1,r=t.length,o;e<r;++e)o=t[e],(!n.type||o.type===n.type)&&o.name===n.name?this.removeEventListener(o.type,o.listener,o.options):t[++i]=o;++i?t.length=i:delete this.__on}}}function sy(n,t,e){return function(){var i=this.__on,r,o=iy(t);if(i){for(var s=0,a=i.length;s<a;++s)if((r=i[s]).type===n.type&&r.name===n.name){this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),r.value=t;return}}this.addEventListener(n.type,o,e),r={type:n.type,name:n.name,value:t,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ay(n,t,e){var i=ry(n+""),r,o=i.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,c=a.length,h;l<c;++l)for(r=0,h=a[l];r<o;++r)if((s=i[r]).type===h.type&&s.name===h.name)return h.value}return}for(a=t?sy:oy,r=0;r<o;++r)this.each(a(i[r],t,e));return this}function Nh(n,t,e){var i=Rh(n),r=i.CustomEvent;typeof r=="function"?r=new r(t,e):(r=i.document.createEvent("Event"),e?(r.initEvent(t,e.bubbles,e.cancelable),r.detail=e.detail):r.initEvent(t,!1,!1)),n.dispatchEvent(r)}function cy(n,t){return function(){return Nh(this,n,t)}}function ly(n,t){return function(){return Nh(this,n,t.apply(this,arguments))}}function hy(n,t){return this.each((typeof t=="function"?ly:cy)(n,t))}function*uy(){for(var n=this._groups,t=0,e=n.length;t<e;++t)for(var i=n[t],r=0,o=i.length,s;r<o;++r)(s=i[r])&&(yield s)}var Wh=[null];function Xe(n,t){this._groups=n,this._parents=t}function hr(){return new Xe([[document.documentElement]],Wh)}function fy(){return this}Xe.prototype=hr.prototype={constructor:Xe,select:B0,selectAll:H0,selectChild:X0,selectChildren:Z0,filter:K0,data:im,enter:J0,exit:om,join:sm,merge:am,selection:fy,order:cm,sort:lm,call:um,nodes:fm,node:dm,size:pm,empty:gm,each:mm,attr:Mm,style:Cm,property:$m,classed:Rm,text:Om,html:Vm,raise:Ym,lower:Um,append:qm,insert:Zm,remove:Jm,clone:ey,datum:ny,on:ay,dispatch:hy,[Symbol.iterator]:uy};function rt(n){return typeof n=="string"?new Xe([[document.querySelector(n)]],[document.documentElement]):new Xe([[n]],Wh)}function dy(n){let t;for(;t=n.sourceEvent;)n=t;return n}function pn(n,t){if(n=dy(n),t===void 0&&(t=n.currentTarget),t){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var i=e.createSVGPoint();return i.x=n.clientX,i.y=n.clientY,i=i.matrixTransform(t.getScreenCTM().inverse()),[i.x,i.y]}if(t.getBoundingClientRect){var r=t.getBoundingClientRect();return[n.clientX-r.left-t.clientLeft,n.clientY-r.top-t.clientTop]}}return[n.pageX,n.pageY]}class py{constructor(t){this.el=t}attr(t){for(const[e,i]of Object.entries(t))e!=="zIndex"&&this.el.attr(e,i);return this}css(t){for(const[e,i]of Object.entries(t)){const r=e.replace(/[A-Z]/g,o=>"-"+o.toLowerCase());this.el.style(r,i),e==="color"&&this.el.attr("fill",i)}return this}add(){return this}getBBox(){const t=this.el.node();if(!t||typeof t.getBBox!="function")return{x:0,y:0,width:0,height:0};try{return t.getBBox()}catch{return{x:0,y:0,width:0,height:0}}}destroy(){this.el.remove()}}const er=class er{constructor(t,e,i){this.svg=rt(t).append("svg").attr("class","katucharts-root").attr("xmlns","http://www.w3.org/2000/svg").attr("width",e).attr("height",i).style("overflow","hidden").style("outline","none").style("display","block").style("max-width","100%"),this.defs=this.svg.append("defs")}setSize(t,e){this.svg.attr("width",t).attr("height",e)}createGroup(t,e){const r=(e||this.svg).append("g");return t&&r.attr("class",t),r}text(t,e,i){const r=this.svg.append("text").attr("x",e).attr("y",i).style("pointer-events","none").text(t);return new py(r)}createClipPath(t,e,i,r){const o=`katucharts-clip-${++er.clipPathCounter}`;return this.defs.append("clipPath").attr("id",o).append("rect").attr("x",t).attr("y",e).attr("width",i).attr("height",r),o}updateClipPath(t,e,i,r,o){this.defs.select(`#${t} rect`).attr("x",e).attr("y",i).attr("width",r).attr("height",o)}createLinearGradient(t,e,i,r,o,s){const a=t||`katucharts-grad-${++er.gradientCounter}`,l=this.defs.append("linearGradient").attr("id",a).attr("x1",e).attr("y1",i).attr("x2",r).attr("y2",o);for(const c of s)l.append("stop").attr("offset",c.offset).attr("stop-color",c.color).attr("stop-opacity",c.opacity??1);return a}getSVGNode(){return this.svg.node()}destroy(){this.svg.remove()}getSerializedSVG(){const t=this.svg.node();return t?new XMLSerializer().serializeToString(t):""}};er.clipPathCounter=0,er.gradientCounter=0;let vo=er;class Hh{constructor(){this.listeners=new Map}on(t,e){return this.listeners.has(t)||this.listeners.set(t,[]),this.listeners.get(t).push({callback:e,once:!1}),this}once(t,e){return this.listeners.has(t)||this.listeners.set(t,[]),this.listeners.get(t).push({callback:e,once:!0}),this}off(t,e){if(!e)return this.listeners.delete(t),this;const i=this.listeners.get(t);return i&&this.listeners.set(t,i.filter(r=>r.callback!==e)),this}emit(t,...e){const i=this.listeners.get(t);if(!i)return this;const r=[];for(const o of i)o.callback(...e),o.once&&r.push(o);return r.length&&this.listeners.set(t,i.filter(o=>!r.includes(o))),this}removeAllListeners(){this.listeners.clear()}static mapEvent(t,e){return`${t}:${e.toLowerCase()}`}}class gy{constructor(t,e){this.config=t,this.events=e}getConfig(){return this.config}updateConfig(t){this.config=le(this.config,t),this.events.emit("state:configChanged",this.config)}getSeries(){return this.config.series}getSeriesById(t){return this.config.series.find(e=>e.id===t)}getSeriesByIndex(t){return this.config.series[t]}addSeries(t){this.config.series=[...this.config.series,t],this.events.emit("state:seriesAdded",t)}removeSeries(t){const e=this.config.series[t];return e&&(this.config.series=this.config.series.filter((i,r)=>r!==t),this.events.emit("state:seriesRemoved",e,t)),e}updateSeries(t,e){const i=this.config.series[t];i&&(this.config.series[t]=le(i,e),this.events.emit("state:seriesUpdated",this.config.series[t],t))}getXAxes(){return this.config.xAxis}getYAxes(){return this.config.yAxis}updateAxis(t,e,i){const r=t?this.config.xAxis:this.config.yAxis;r[e]&&(r[e]=le(r[e],i),this.events.emit("state:axisUpdated",{isX:t,index:e,config:r[e]}))}}class my{constructor(){this.types=new Map}registerType(t,e){this.types.set(t,e)}getType(t){return this.types.get(t)}hasType(t){return this.types.has(t)}getRegisteredTypes(){return Array.from(this.types.keys())}}const Vh=globalThis,Tt=Vh.__katuChartRegistry||(Vh.__katuChartRegistry=new my);class yy{constructor(){this.modules=new Map}register(t){this.modules.set(t.name,t)}get(t){return this.modules.get(t)}getAll(){return Array.from(this.modules.values())}}const Gh=new yy;class xy{compute(t,e,i){var F,D,z,B,H,J,X,j,W,U,G,N,Y,O,ct;const r=this.getSpacing(t);let o=r.top,s=r.bottom;const a=r.left,l=r.right,c=((F=t.title)==null?void 0:F.widthAdjust)??-44,h=e+c,f=(z=(D=t.title)==null?void 0:D.style)!=null&&z.fontSize?t.title.style:{...(B=t.title)==null?void 0:B.style,fontSize:"18px"},u=(H=t.title)!=null&&H.text?this.estimateWrappedTextHeight(t.title.text,f,h):0,d=((J=t.title)==null?void 0:J.margin)??8,p=(X=t.subtitle)!=null&&X.text?this.estimateWrappedTextHeight(t.subtitle.text,t.subtitle.style,h):0;u>0&&(o=r.top+u+(p>0?3:d)),p>0&&(o+=p+d);const y=t.series.some(it=>it._internalType==="heatmap"),g=((j=t.legend)==null?void 0:j.align)||"center",m=!y&&((W=t.legend)==null?void 0:W.enabled)!==!1&&((U=t.legend)==null?void 0:U.layout)==="vertical"&&(g==="left"||g==="right"),x=y||m?0:this.estimateLegendHeight(t,e),v=((G=t.legend)==null?void 0:G.verticalAlign)||"bottom";!m&&v==="bottom"?s=Math.max(s,r.bottom)+x:!m&&v==="top"&&(o+=x);const b=m?this.estimateLegendWidth(t):0,k=m&&g==="left"?b:0,M=m&&g==="right"?b:0;if((N=t.navigator)!=null&&N.enabled){const it=t.navigator;s+=(it.height??40)+(it.margin??20)}const C=this.isNonCartesian(t),_=!!t.chart.inverted?{...t,xAxis:t.yAxis,yAxis:t.xAxis}:t,$=C?0:this.estimateAxisWidth(_,!0,i,e),I=C?0:this.estimateAxisWidth(_,!1,i,e),E=C?0:this.estimateAxisHeight(_);let P=0;y&&((Y=t.colorAxis)==null?void 0:Y.length)>0&&((O=t.legend)==null?void 0:O.layout)==="vertical"&&(P=55);const S=a+$+k,w=o,A=Math.max(0,e-a-l-$-I-P-k-M),T=((ct=t.chart)==null?void 0:ct.marginBottom)!==void 0,R=Math.max(0,i-o-s-(T?0:E));return{plotArea:{x:S,y:w,width:A,height:R},titleArea:{x:r.left,y:r.top,width:e-r.left-r.right,height:u+d},subtitleArea:{x:r.left,y:r.top+u+d,width:e-r.left-r.right,height:p},legendArea:m?{x:g==="right"?e-l-M:a,y:w,width:b,height:R}:{x:0,y:v==="top"?o-x:i-s,width:e,height:x}}}isNonCartesian(t){return t.series.length>0&&t.series.every(e=>Pi.has(e._internalType))}getSpacing(t){var s;const e=t.chart;if(e.margin!==void 0){const a=e.margin;if(typeof a=="number")return{top:a,right:a,bottom:a,left:a};if(Array.isArray(a))return{top:a[0]??10,right:a[1]??10,bottom:a[2]??15,left:a[3]??10}}const i=e.spacing||[10,10,15,10],o=((s=t.exporting)==null?void 0:s.enabled)!==!1?40:i[1]??10;return{top:e.marginTop??e.spacingTop??i[0],right:e.marginRight??e.spacingRight??o,bottom:e.marginBottom??e.spacingBottom??i[2],left:e.marginLeft??e.spacingLeft??i[3]}}estimateTextHeight(t){return ye(t==null?void 0:t.fontSize)*1.4}estimateWrappedTextHeight(t,e,i){const r=ye(e==null?void 0:e.fontSize),o=r*1.4;if(!i||i<=0)return o;const s=r*.55,a=Math.floor(i/s);if(a<=0)return o;const l=Math.ceil(t.length/a);return o*Math.max(l,1)}computeAutoFontSize(t,e){return e||"12px"}estimateLegendHeight(t,e){var r,o;const i=this.estimateSeriesLegendHeight(t,e);if((r=t.legend)!=null&&r.enabled&&((o=t.legend.bubbleLegend)!=null&&o.enabled)){const s=t.series.find(a=>a._internalType==="bubble");if(s){const a=t.legend.margin??8,c=(t.legend.bubbleLegend.maxSize??(typeof s.maxSize=="number"?s.maxSize:30))*2+16+a;return(t.legend.layout||"horizontal")==="horizontal"&&t.legend.bubbleLegend.layout==="separate"?i+c:Math.max(i,c)}}return i}estimateLegendWidth(t){var u;const e=t.legend;if(!e)return 0;const i=t.series.filter(d=>d.showInLegend!==!1),r=e.itemStyle||{},o=ye(r.fontSize||wt),s=e.symbolWidth??12,a=e.symbolPadding??5,l=e.padding??8;let c=0;i.forEach((d,p)=>{const y=Je(d.name||`Series ${p+1}`,o);y>c&&(c=y)});let h=s+a+c;if((u=e.bubbleLegend)!=null&&u.enabled){const d=t.series.find(p=>p._internalType==="bubble");if(d){const p=e.bubbleLegend.maxSize??(typeof d.maxSize=="number"?d.maxSize:30),y=e.bubbleLegend.connectorDistance??16;h=Math.max(h,p*2+y+30)}}const f=e.margin??12;return h+l*2+f}estimateSeriesLegendHeight(t,e){var p;if(!((p=t.legend)!=null&&p.enabled))return 0;const i=t.series.filter(y=>y.showInLegend!==!1),r=i.length;if(r===0)return 0;const o=t.legend.margin??8,s=t.legend.layout||"horizontal",l=(t.legend.itemStyle||{}).fontSize||wt,c=this.computeAutoFontSize(r,l),h=t.legend.lineHeight??16,f=t.legend.itemMarginBottom??2,u=t.legend.itemMarginTop??0,d=h+f+u;if(s==="horizontal"){const y=t.legend.padding??4,g=t.legend.symbolWidth??10,m=t.legend.symbolPadding??5,x=t.legend.itemDistance??20,v=this.getSpacing(t),b=t.legend.width||e-v.left-v.right-y*2,k=ye(c),M=i.map((P,S)=>P.name||`Series ${S+1}`);let C=0;for(let P=0;P<M.length;P++){const S=t.legend.itemWidth||Je(M[P],k),w=g+m+S;C+=w+(P<M.length-1?x:0)}if(r>8&&C>b){let P=0;for(const F of M){const D=Je(F,k);D>P&&(P=D)}let S,w;if(t.legend.itemWidth)S=t.legend.itemWidth,w=Math.max(2,Math.floor(b/S));else{const F=g+m+P+8;w=Math.max(1,Math.floor(b/F)),S=b/w}const T=Math.ceil(r/w)*d+y*2,R=t.legend.maxHeight;return(R?Math.min(T,R):T)+o}let _=y,$=1;for(let P=0;P<r;P++){const S=t.legend.itemWidth||Je(M[P],k),w=g+m+S;P>0&&_+w>b&&($++,_=y),_+=w+x}const I=$*d+y*2,E=t.legend.maxHeight;return(E?Math.min(I,E):I)+o}return r*d+(t.legend.padding??8)*2+o}estimateAxisWidth(t,e,i,r){var a,l;const o=t.yAxis.filter(c=>e?!c.opposite:c.opposite);if(o.length===0)return 0;let s=0;for(const c of o){if(c.visible===!1)continue;const h=((a=c.labels)==null?void 0:a.enabled)!==!1,f=(l=c.title)==null?void 0:l.text,u=h?this.estimateLabelWidth(c,i,r):0;s+=u+(f?30:0)+(c.offset||0)}return s||30}estimateLabelWidth(t,e,i){var s,a,l,c;if(t.categories&&t.categories.length>0){const h=ye(((a=(s=t.labels)==null?void 0:s.style)==null?void 0:a.fontSize)||wt);let f=h;if(e&&t.categories.length>1){const m=e*.8/t.categories.length*.7;h>m&&(f=Math.min(h,Math.max(5,Math.round(m*1.1))))}const u=((c=(l=t.labels)==null?void 0:l.style)==null?void 0:c.fontWeight)||"normal";let d=0;for(const y of t.categories){const g=Je(y,f,u);g>d&&(d=g)}const p=i?Math.max(120,i*.3):460;return Math.max(25,Math.min(d*1.3+16,p))}const r=t.min??null,o=t.max??null;if(r!=null&&o!=null){const f=String(Math.round(Math.max(Math.abs(r),Math.abs(o)))).length+(r<0?1:0);return Math.max(20,f*7+10)}return 25}estimateAxisHeight(t){var r,o,s,a,l,c,h;const e=t.xAxis.filter(f=>!f.opposite);if(e.length===0)return 0;let i=0;for(const f of e){if(f.visible===!1)continue;const u=((r=f.labels)==null?void 0:r.enabled)!==!1,d=(o=f.title)==null?void 0:o.text,p=!!((s=f.labels)!=null&&s.rotation);let y=30;if(u){if(p&&f.categories&&f.categories.length>0){let m=0;for(const k of f.categories)k.length>m&&(m=k.length);const x=ye(((l=(a=f.labels)==null?void 0:a.style)==null?void 0:l.fontSize)||wt),v=Math.abs(f.labels.rotation)*(Math.PI/180),b=Math.min(m*x*.62*Math.sin(v),150);y=Math.max(30,b)}else if(p)y=45;else if(f.categories&&f.categories.length>0){let m=0;for(const b of f.categories)b.length>m&&(m=b.length);const x=ye(((h=(c=f.labels)==null?void 0:c.style)==null?void 0:h.fontSize)||wt);if(f.categories.length>6||m>8){const b=Math.min(m*x*.4*Math.sin(Math.PI/4),120);y=Math.max(30,b)}}}else y=0;const g=u?f.tickLength||10:5;i+=y+(d?25:0)+g}return i||40}}function wo(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function by(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function pa(n){let t,e,i;n.length!==2?(t=wo,e=(a,l)=>wo(n(a),l),i=(a,l)=>n(a)-l):(t=n===wo||n===by?n:vy,e=n,i=n);function r(a,l,c=0,h=a.length){if(c<h){if(t(l,l)!==0)return h;do{const f=c+h>>>1;e(a[f],l)<0?c=f+1:h=f}while(c<h)}return c}function o(a,l,c=0,h=a.length){if(c<h){if(t(l,l)!==0)return h;do{const f=c+h>>>1;e(a[f],l)<=0?c=f+1:h=f}while(c<h)}return c}function s(a,l,c=0,h=a.length){const f=r(a,l,c,h-1);return f>c&&i(a[f-1],l)>-i(a[f],l)?f-1:f}return{left:r,center:s,right:o}}function vy(){return 0}function wy(n){return n===null?NaN:+n}const ky=pa(wo).right;pa(wy).center;class fi{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const e=this._partials;let i=0;for(let r=0;r<this._n&&r<32;r++){const o=e[r],s=t+o,a=Math.abs(t)<Math.abs(o)?t-(s-o):o-(s-t);a&&(e[i++]=a),t=s}return e[i]=t,this._n=i+1,this}valueOf(){const t=this._partials;let e=this._n,i,r,o,s=0;if(e>0){for(s=t[--e];e>0&&(i=s,r=t[--e],s=i+r,o=r-(s-i),!o););e>0&&(o<0&&t[e-1]<0||o>0&&t[e-1]>0)&&(r=o*2,i=s+r,r==i-s&&(s=i))}return s}}class Yh extends Map{constructor(t,e=Sy){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),t!=null)for(const[i,r]of t)this.set(i,r)}get(t){return super.get(Xh(this,t))}has(t){return super.has(Xh(this,t))}set(t,e){return super.set(My(this,t),e)}delete(t){return super.delete(Ay(this,t))}}function Xh({_intern:n,_key:t},e){const i=t(e);return n.has(i)?n.get(i):e}function My({_intern:n,_key:t},e){const i=t(e);return n.has(i)?n.get(i):(n.set(i,e),e)}function Ay({_intern:n,_key:t},e){const i=t(e);return n.has(i)&&(e=n.get(i),n.delete(i)),e}function Sy(n){return n!==null&&typeof n=="object"?n.valueOf():n}const _y=Math.sqrt(50),Cy=Math.sqrt(10),Py=Math.sqrt(2);function ko(n,t,e){const i=(t-n)/Math.max(0,e),r=Math.floor(Math.log10(i)),o=i/Math.pow(10,r),s=o>=_y?10:o>=Cy?5:o>=Py?2:1;let a,l,c;return r<0?(c=Math.pow(10,-r)/s,a=Math.round(n*c),l=Math.round(t*c),a/c<n&&++a,l/c>t&&--l,c=-c):(c=Math.pow(10,r)*s,a=Math.round(n/c),l=Math.round(t/c),a*c<n&&++a,l*c>t&&--l),l<a&&.5<=e&&e<2?ko(n,t,e*2):[a,l,c]}function ga(n,t,e){if(t=+t,n=+n,e=+e,!(e>0))return[];if(n===t)return[n];const i=t<n,[r,o,s]=i?ko(t,n,e):ko(n,t,e);if(!(o>=r))return[];const a=o-r+1,l=new Array(a);if(i)if(s<0)for(let c=0;c<a;++c)l[c]=(o-c)/-s;else for(let c=0;c<a;++c)l[c]=(o-c)*s;else if(s<0)for(let c=0;c<a;++c)l[c]=(r+c)/-s;else for(let c=0;c<a;++c)l[c]=(r+c)*s;return l}function ma(n,t,e){return t=+t,n=+n,e=+e,ko(n,t,e)[2]}function ya(n,t,e){t=+t,n=+n,e=+e;const i=t<n,r=i?ma(t,n,e):ma(n,t,e);return(i?-1:1)*(r<0?1/-r:r)}function*Ey(n){for(const t of n)yield*t}function Uh(n){return Array.from(Ey(n))}function di(n,t,e){n=+n,t=+t,e=(r=arguments.length)<2?(t=n,n=0,1):r<3?1:+e;for(var i=-1,r=Math.max(0,Math.ceil((t-n)/e))|0,o=new Array(r);++i<r;)o[i]=n+i*e;return o}function pi(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}function Ty(n,t){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}const qh=Symbol("implicit");function jh(){var n=new Yh,t=[],e=[],i=qh;function r(o){let s=n.get(o);if(s===void 0){if(i!==qh)return i;n.set(o,s=t.push(o)-1)}return e[s%e.length]}return r.domain=function(o){if(!arguments.length)return t.slice();t=[],n=new Yh;for(const s of o)n.has(s)||n.set(s,t.push(s)-1);return r},r.range=function(o){return arguments.length?(e=Array.from(o),r):e.slice()},r.unknown=function(o){return arguments.length?(i=o,r):i},r.copy=function(){return jh(t,e).unknown(i)},pi.apply(r,arguments),r}function Zh(){var n=jh().unknown(void 0),t=n.domain,e=n.range,i=0,r=1,o,s,a=!1,l=0,c=0,h=.5;delete n.unknown;function f(){var u=t().length,d=r<i,p=d?r:i,y=d?i:r;o=(y-p)/Math.max(1,u-l+c*2),a&&(o=Math.floor(o)),p+=(y-p-o*(u-l))*h,s=o*(1-l),a&&(p=Math.round(p),s=Math.round(s));var g=di(u).map(function(m){return p+o*m});return e(d?g.reverse():g)}return n.domain=function(u){return arguments.length?(t(u),f()):t()},n.range=function(u){return arguments.length?([i,r]=u,i=+i,r=+r,f()):[i,r]},n.rangeRound=function(u){return[i,r]=u,i=+i,r=+r,a=!0,f()},n.bandwidth=function(){return s},n.step=function(){return o},n.round=function(u){return arguments.length?(a=!!u,f()):a},n.padding=function(u){return arguments.length?(l=Math.min(1,c=+u),f()):l},n.paddingInner=function(u){return arguments.length?(l=Math.min(1,u),f()):l},n.paddingOuter=function(u){return arguments.length?(c=+u,f()):c},n.align=function(u){return arguments.length?(h=Math.max(0,Math.min(1,u)),f()):h},n.copy=function(){return Zh(t(),[i,r]).round(a).paddingInner(l).paddingOuter(c).align(h)},pi.apply(f(),arguments)}function $y(n,t,e,i,r){var o=n*n,s=o*n;return((1-3*n+3*o-s)*t+(4-6*o+3*s)*e+(1+3*n+3*o-3*s)*i+s*r)/6}function Ly(n){var t=n.length-1;return function(e){var i=e<=0?e=0:e>=1?(e=1,t-1):Math.floor(e*t),r=n[i],o=n[i+1],s=i>0?n[i-1]:2*r-o,a=i<t-1?n[i+2]:2*o-r;return $y((e-i/t)*t,s,r,o,a)}}const xa=n=>()=>n;function Iy(n,t){return function(e){return n+e*t}}function Fy(n,t,e){return n=Math.pow(n,e),t=Math.pow(t,e)-n,e=1/e,function(i){return Math.pow(n+i*t,e)}}function Ry(n){return(n=+n)==1?Kh:function(t,e){return e-t?Fy(t,e,n):xa(isNaN(t)?e:t)}}function Kh(n,t){var e=t-n;return e?Iy(n,e):xa(isNaN(n)?t:n)}const gi=function n(t){var e=Ry(t);function i(r,o){var s=e((r=Ye(r)).r,(o=Ye(o)).r),a=e(r.g,o.g),l=e(r.b,o.b),c=Kh(r.opacity,o.opacity);return function(h){return r.r=s(h),r.g=a(h),r.b=l(h),r.opacity=c(h),r+""}}return i.gamma=n,i}(1);function Dy(n){return function(t){var e=t.length,i=new Array(e),r=new Array(e),o=new Array(e),s,a;for(s=0;s<e;++s)a=Ye(t[s]),i[s]=a.r||0,r[s]=a.g||0,o[s]=a.b||0;return i=n(i),r=n(r),o=n(o),a.opacity=1,function(l){return a.r=i(l),a.g=r(l),a.b=o(l),a+""}}}var zy=Dy(Ly);function By(n,t){t||(t=[]);var e=n?Math.min(t.length,n.length):0,i=t.slice(),r;return function(o){for(r=0;r<e;++r)i[r]=n[r]*(1-o)+t[r]*o;return i}}function Oy(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Ny(n,t){var e=t?t.length:0,i=n?Math.min(e,n.length):0,r=new Array(i),o=new Array(e),s;for(s=0;s<i;++s)r[s]=ae(n[s],t[s]);for(;s<e;++s)o[s]=t[s];return function(a){for(s=0;s<i;++s)o[s]=r[s](a);return o}}function Wy(n,t){var e=new Date;return n=+n,t=+t,function(i){return e.setTime(n*(1-i)+t*i),e}}function gn(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function Hy(n,t){var e={},i={},r;(n===null||typeof n!="object")&&(n={}),(t===null||typeof t!="object")&&(t={});for(r in t)r in n?e[r]=ae(n[r],t[r]):i[r]=t[r];return function(o){for(r in e)i[r]=e[r](o);return i}}var ba=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,va=new RegExp(ba.source,"g");function Vy(n){return function(){return n}}function Gy(n){return function(t){return n(t)+""}}function Jh(n,t){var e=ba.lastIndex=va.lastIndex=0,i,r,o,s=-1,a=[],l=[];for(n=n+"",t=t+"";(i=ba.exec(n))&&(r=va.exec(t));)(o=r.index)>e&&(o=t.slice(e,o),a[s]?a[s]+=o:a[++s]=o),(i=i[0])===(r=r[0])?a[s]?a[s]+=r:a[++s]=r:(a[++s]=null,l.push({i:s,x:gn(i,r)})),e=va.lastIndex;return e<t.length&&(o=t.slice(e),a[s]?a[s]+=o:a[++s]=o),a.length<2?l[0]?Gy(l[0].x):Vy(t):(t=l.length,function(c){for(var h=0,f;h<t;++h)a[(f=l[h]).i]=f.x(c);return a.join("")})}function ae(n,t){var e=typeof t,i;return t==null||e==="boolean"?xa(t):(e==="number"?gn:e==="string"?(i=oe(t))?(t=i,gi):Jh:t instanceof oe?gi:t instanceof Date?Wy:Oy(t)?By:Array.isArray(t)?Ny:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?Hy:gn)(n,t)}function Qh(n,t){return n=+n,t=+t,function(e){return Math.round(n*(1-e)+t*e)}}var tu=180/Math.PI,wa={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function eu(n,t,e,i,r,o){var s,a,l;return(s=Math.sqrt(n*n+t*t))&&(n/=s,t/=s),(l=n*e+t*i)&&(e-=n*l,i-=t*l),(a=Math.sqrt(e*e+i*i))&&(e/=a,i/=a,l/=a),n*i<t*e&&(n=-n,t=-t,l=-l,s=-s),{translateX:r,translateY:o,rotate:Math.atan2(t,n)*tu,skewX:Math.atan(l)*tu,scaleX:s,scaleY:a}}var Mo;function Yy(n){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(n+"");return t.isIdentity?wa:eu(t.a,t.b,t.c,t.d,t.e,t.f)}function Xy(n){return n==null||(Mo||(Mo=document.createElementNS("http://www.w3.org/2000/svg","g")),Mo.setAttribute("transform",n),!(n=Mo.transform.baseVal.consolidate()))?wa:(n=n.matrix,eu(n.a,n.b,n.c,n.d,n.e,n.f))}function nu(n,t,e,i){function r(c){return c.length?c.pop()+" ":""}function o(c,h,f,u,d,p){if(c!==f||h!==u){var y=d.push("translate(",null,t,null,e);p.push({i:y-4,x:gn(c,f)},{i:y-2,x:gn(h,u)})}else(f||u)&&d.push("translate("+f+t+u+e)}function s(c,h,f,u){c!==h?(c-h>180?h+=360:h-c>180&&(c+=360),u.push({i:f.push(r(f)+"rotate(",null,i)-2,x:gn(c,h)})):h&&f.push(r(f)+"rotate("+h+i)}function a(c,h,f,u){c!==h?u.push({i:f.push(r(f)+"skewX(",null,i)-2,x:gn(c,h)}):h&&f.push(r(f)+"skewX("+h+i)}function l(c,h,f,u,d,p){if(c!==f||h!==u){var y=d.push(r(d)+"scale(",null,",",null,")");p.push({i:y-4,x:gn(c,f)},{i:y-2,x:gn(h,u)})}else(f!==1||u!==1)&&d.push(r(d)+"scale("+f+","+u+")")}return function(c,h){var f=[],u=[];return c=n(c),h=n(h),o(c.translateX,c.translateY,h.translateX,h.translateY,f,u),s(c.rotate,h.rotate,f,u),a(c.skewX,h.skewX,f,u),l(c.scaleX,c.scaleY,h.scaleX,h.scaleY,f,u),c=h=null,function(d){for(var p=-1,y=u.length,g;++p<y;)f[(g=u[p]).i]=g.x(d);return f.join("")}}}var Uy=nu(Yy,"px, ","px)","deg)"),qy=nu(Xy,", ",")",")"),jy=1e-12;function iu(n){return((n=Math.exp(n))+1/n)/2}function Zy(n){return((n=Math.exp(n))-1/n)/2}function Ky(n){return((n=Math.exp(2*n))-1)/(n+1)}const Jy=function n(t,e,i){function r(o,s){var a=o[0],l=o[1],c=o[2],h=s[0],f=s[1],u=s[2],d=h-a,p=f-l,y=d*d+p*p,g,m;if(y<jy)m=Math.log(u/c)/t,g=function(C){return[a+C*d,l+C*p,c*Math.exp(t*C*m)]};else{var x=Math.sqrt(y),v=(u*u-c*c+i*y)/(2*c*e*x),b=(u*u-c*c-i*y)/(2*u*e*x),k=Math.log(Math.sqrt(v*v+1)-v),M=Math.log(Math.sqrt(b*b+1)-b);m=(M-k)/t,g=function(C){var L=C*m,_=iu(k),$=c/(e*x)*(_*Ky(t*L+k)-Zy(k));return[a+$*d,l+$*p,c*_/iu(t*L+k)]}}return g.duration=m*1e3*t/Math.SQRT2,g}return r.rho=function(o){var s=Math.max(.001,+o),a=s*s,l=a*a;return n(s,a,l)},r}(Math.SQRT2,2,4);function Qy(n){return function(){return n}}function tx(n){return+n}var ru=[0,1];function en(n){return n}function ka(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:Qy(isNaN(t)?NaN:.5)}function ex(n,t){var e;return n>t&&(e=n,n=t,t=e),function(i){return Math.max(n,Math.min(t,i))}}function nx(n,t,e){var i=n[0],r=n[1],o=t[0],s=t[1];return r<i?(i=ka(r,i),o=e(s,o)):(i=ka(i,r),o=e(o,s)),function(a){return o(i(a))}}function ix(n,t,e){var i=Math.min(n.length,t.length)-1,r=new Array(i),o=new Array(i),s=-1;for(n[i]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++s<i;)r[s]=ka(n[s],n[s+1]),o[s]=e(t[s],t[s+1]);return function(a){var l=ky(n,a,1,i)-1;return o[l](r[l](a))}}function Ao(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Ma(){var n=ru,t=ru,e=ae,i,r,o,s=en,a,l,c;function h(){var u=Math.min(n.length,t.length);return s!==en&&(s=ex(n[0],n[u-1])),a=u>2?ix:nx,l=c=null,f}function f(u){return u==null||isNaN(u=+u)?o:(l||(l=a(n.map(i),t,e)))(i(s(u)))}return f.invert=function(u){return s(r((c||(c=a(t,n.map(i),gn)))(u)))},f.domain=function(u){return arguments.length?(n=Array.from(u,tx),h()):n.slice()},f.range=function(u){return arguments.length?(t=Array.from(u),h()):t.slice()},f.rangeRound=function(u){return t=Array.from(u),e=Qh,h()},f.clamp=function(u){return arguments.length?(s=u?!0:en,h()):s!==en},f.interpolate=function(u){return arguments.length?(e=u,h()):e},f.unknown=function(u){return arguments.length?(o=u,f):o},function(u,d){return i=u,r=d,h()}}function ou(){return Ma()(en,en)}function rx(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function So(n,t){if(!isFinite(n)||n===0)return null;var e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),i=n.slice(0,e);return[i.length>1?i[0]+i.slice(2):i,+n.slice(e+1)]}function Ii(n){return n=So(Math.abs(n)),n?n[1]:NaN}function ox(n,t){return function(e,i){for(var r=e.length,o=[],s=0,a=n[0],l=0;r>0&&a>0&&(l+a+1>i&&(a=Math.max(1,i-l)),o.push(e.substring(r-=a,r+a)),!((l+=a+1)>i));)a=n[s=(s+1)%n.length];return o.reverse().join(t)}}function sx(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var ax=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ur(n){if(!(t=ax.exec(n)))throw new Error("invalid format: "+n);var t;return new Aa({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}ur.prototype=Aa.prototype;function Aa(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}Aa.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function cx(n){t:for(var t=n.length,e=1,i=-1,r;e<t;++e)switch(n[e]){case".":i=r=e;break;case"0":i===0&&(i=e),r=e;break;default:if(!+n[e])break t;i>0&&(i=0);break}return i>0?n.slice(0,i)+n.slice(r+1):n}var _o;function lx(n,t){var e=So(n,t);if(!e)return _o=void 0,n.toPrecision(t);var i=e[0],r=e[1],o=r-(_o=Math.max(-8,Math.min(8,Math.floor(r/3)))*3)+1,s=i.length;return o===s?i:o>s?i+new Array(o-s+1).join("0"):o>0?i.slice(0,o)+"."+i.slice(o):"0."+new Array(1-o).join("0")+So(n,Math.max(0,t+o-1))[0]}function su(n,t){var e=So(n,t);if(!e)return n+"";var i=e[0],r=e[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}const au={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:rx,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>su(n*100,t),r:su,s:lx,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function cu(n){return n}var lu=Array.prototype.map,hu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function hx(n){var t=n.grouping===void 0||n.thousands===void 0?cu:ox(lu.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",i=n.currency===void 0?"":n.currency[1]+"",r=n.decimal===void 0?".":n.decimal+"",o=n.numerals===void 0?cu:sx(lu.call(n.numerals,String)),s=n.percent===void 0?"%":n.percent+"",a=n.minus===void 0?"−":n.minus+"",l=n.nan===void 0?"NaN":n.nan+"";function c(f,u){f=ur(f);var d=f.fill,p=f.align,y=f.sign,g=f.symbol,m=f.zero,x=f.width,v=f.comma,b=f.precision,k=f.trim,M=f.type;M==="n"?(v=!0,M="g"):au[M]||(b===void 0&&(b=12),k=!0,M="g"),(m||d==="0"&&p==="=")&&(m=!0,d="0",p="=");var C=(u&&u.prefix!==void 0?u.prefix:"")+(g==="$"?e:g==="#"&&/[boxX]/.test(M)?"0"+M.toLowerCase():""),L=(g==="$"?i:/[%p]/.test(M)?s:"")+(u&&u.suffix!==void 0?u.suffix:""),_=au[M],$=/[defgprs%]/.test(M);b=b===void 0?6:/[gprs]/.test(M)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function I(E){var P=C,S=L,w,A,T;if(M==="c")S=_(E)+S,E="";else{E=+E;var R=E<0||1/E<0;if(E=isNaN(E)?l:_(Math.abs(E),b),k&&(E=cx(E)),R&&+E==0&&y!=="+"&&(R=!1),P=(R?y==="("?y:a:y==="-"||y==="("?"":y)+P,S=(M==="s"&&!isNaN(E)&&_o!==void 0?hu[8+_o/3]:"")+S+(R&&y==="("?")":""),$){for(w=-1,A=E.length;++w<A;)if(T=E.charCodeAt(w),48>T||T>57){S=(T===46?r+E.slice(w+1):E.slice(w))+S,E=E.slice(0,w);break}}}v&&!m&&(E=t(E,1/0));var F=P.length+E.length+S.length,D=F<x?new Array(x-F+1).join(d):"";switch(v&&m&&(E=t(D+E,D.length?x-S.length:1/0),D=""),p){case"<":E=P+E+S+D;break;case"=":E=P+D+E+S;break;case"^":E=D.slice(0,F=D.length>>1)+P+E+S+D.slice(F);break;default:E=D+P+E+S;break}return o(E)}return I.toString=function(){return f+""},I}function h(f,u){var d=Math.max(-8,Math.min(8,Math.floor(Ii(u)/3)))*3,p=Math.pow(10,-d),y=c((f=ur(f),f.type="f",f),{suffix:hu[8+d/3]});return function(g){return y(p*g)}}return{format:c,formatPrefix:h}}var Co,fr,uu;ux({thousands:",",grouping:[3],currency:["$",""]});function ux(n){return Co=hx(n),fr=Co.format,uu=Co.formatPrefix,Co}function fx(n){return Math.max(0,-Ii(Math.abs(n)))}function dx(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ii(t)/3)))*3-Ii(Math.abs(n)))}function px(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,Ii(t)-Ii(n))+1}function gx(n,t,e,i){var r=ya(n,t,e),o;switch(i=ur(i??",f"),i.type){case"s":{var s=Math.max(Math.abs(n),Math.abs(t));return i.precision==null&&!isNaN(o=dx(r,s))&&(i.precision=o),uu(i,s)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(o=px(r,Math.max(Math.abs(n),Math.abs(t))))&&(i.precision=o-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(o=fx(r))&&(i.precision=o-(i.type==="%")*2);break}}return fr(i)}function Sa(n){var t=n.domain;return n.ticks=function(e){var i=t();return ga(i[0],i[i.length-1],e??10)},n.tickFormat=function(e,i){var r=t();return gx(r[0],r[r.length-1],e??10,i)},n.nice=function(e){e==null&&(e=10);var i=t(),r=0,o=i.length-1,s=i[r],a=i[o],l,c,h=10;for(a<s&&(c=s,s=a,a=c,c=r,r=o,o=c);h-- >0;){if(c=ma(s,a,e),c===l)return i[r]=s,i[o]=a,t(i);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;l=c}return n},n}function ve(){var n=ou();return n.copy=function(){return Ao(n,ve())},pi.apply(n,arguments),Sa(n)}function fu(n,t){n=n.slice();var e=0,i=n.length-1,r=n[e],o=n[i],s;return o<r&&(s=e,e=i,i=s,s=r,r=o,o=s),n[e]=t.floor(r),n[i]=t.ceil(o),n}function du(n){return Math.log(n)}function pu(n){return Math.exp(n)}function mx(n){return-Math.log(-n)}function yx(n){return-Math.exp(-n)}function xx(n){return isFinite(n)?+("1e"+n):n<0?0:n}function bx(n){return n===10?xx:n===Math.E?Math.exp:t=>Math.pow(n,t)}function vx(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),t=>Math.log(t)/n)}function gu(n){return(t,e)=>-n(-t,e)}function wx(n){const t=n(du,pu),e=t.domain;let i=10,r,o;function s(){return r=vx(i),o=bx(i),e()[0]<0?(r=gu(r),o=gu(o),n(mx,yx)):n(du,pu),t}return t.base=function(a){return arguments.length?(i=+a,s()):i},t.domain=function(a){return arguments.length?(e(a),s()):e()},t.ticks=a=>{const l=e();let c=l[0],h=l[l.length-1];const f=h<c;f&&([c,h]=[h,c]);let u=r(c),d=r(h),p,y;const g=a==null?10:+a;let m=[];if(!(i%1)&&d-u<g){if(u=Math.floor(u),d=Math.ceil(d),c>0){for(;u<=d;++u)for(p=1;p<i;++p)if(y=u<0?p/o(-u):p*o(u),!(y<c)){if(y>h)break;m.push(y)}}else for(;u<=d;++u)for(p=i-1;p>=1;--p)if(y=u>0?p/o(-u):p*o(u),!(y<c)){if(y>h)break;m.push(y)}m.length*2<g&&(m=ga(c,h,g))}else m=ga(u,d,Math.min(d-u,g)).map(o);return f?m.reverse():m},t.tickFormat=(a,l)=>{if(a==null&&(a=10),l==null&&(l=i===10?"s":","),typeof l!="function"&&(!(i%1)&&(l=ur(l)).precision==null&&(l.trim=!0),l=fr(l)),a===1/0)return l;const c=Math.max(1,i*a/t.ticks().length);return h=>{let f=h/o(Math.round(r(h)));return f*i<i-.5&&(f*=i),f<=c?l(h):""}},t.nice=()=>e(fu(e(),{floor:a=>o(Math.floor(r(a))),ceil:a=>o(Math.ceil(r(a)))})),t}function Po(){const n=wx(Ma()).domain([1,10]);return n.copy=()=>Ao(n,Po()).base(n.base()),pi.apply(n,arguments),n}function mu(n){return function(t){return t<0?-Math.pow(-t,n):Math.pow(t,n)}}function kx(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function Mx(n){return n<0?-n*n:n*n}function Ax(n){var t=n(en,en),e=1;function i(){return e===1?n(en,en):e===.5?n(kx,Mx):n(mu(e),mu(1/e))}return t.exponent=function(r){return arguments.length?(e=+r,i()):e},Sa(t)}function yu(){var n=Ax(Ma());return n.copy=function(){return Ao(n,yu()).exponent(n.exponent())},pi.apply(n,arguments),n}function Sx(){return yu.apply(null,arguments).exponent(.5)}const _a=new Date,Ca=new Date;function ce(n,t,e,i){function r(o){return n(o=arguments.length===0?new Date:new Date(+o)),o}return r.floor=o=>(n(o=new Date(+o)),o),r.ceil=o=>(n(o=new Date(o-1)),t(o,1),n(o),o),r.round=o=>{const s=r(o),a=r.ceil(o);return o-s<a-o?s:a},r.offset=(o,s)=>(t(o=new Date(+o),s==null?1:Math.floor(s)),o),r.range=(o,s,a)=>{const l=[];if(o=r.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return l;let c;do l.push(c=new Date(+o)),t(o,a),n(o);while(c<o&&o<s);return l},r.filter=o=>ce(s=>{if(s>=s)for(;n(s),!o(s);)s.setTime(s-1)},(s,a)=>{if(s>=s)if(a<0)for(;++a<=0;)for(;t(s,-1),!o(s););else for(;--a>=0;)for(;t(s,1),!o(s););}),e&&(r.count=(o,s)=>(_a.setTime(+o),Ca.setTime(+s),n(_a),n(Ca),Math.floor(e(_a,Ca))),r.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?r.filter(i?s=>i(s)%o===0:s=>r.count(0,s)%o===0):r)),r}const Eo=ce(()=>{},(n,t)=>{n.setTime(+n+t)},(n,t)=>t-n);Eo.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?ce(t=>{t.setTime(Math.floor(t/n)*n)},(t,e)=>{t.setTime(+t+e*n)},(t,e)=>(e-t)/n):Eo),Eo.range;const Tn=1e3,nn=Tn*60,$n=nn*60,Ln=$n*24,Pa=Ln*7,xu=Ln*30,Ea=Ln*365,mi=ce(n=>{n.setTime(n-n.getMilliseconds())},(n,t)=>{n.setTime(+n+t*Tn)},(n,t)=>(t-n)/Tn,n=>n.getUTCSeconds());mi.range;const Ta=ce(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Tn)},(n,t)=>{n.setTime(+n+t*nn)},(n,t)=>(t-n)/nn,n=>n.getMinutes());Ta.range;const $a=ce(n=>{n.setUTCSeconds(0,0)},(n,t)=>{n.setTime(+n+t*nn)},(n,t)=>(t-n)/nn,n=>n.getUTCMinutes());$a.range;const La=ce(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*Tn-n.getMinutes()*nn)},(n,t)=>{n.setTime(+n+t*$n)},(n,t)=>(t-n)/$n,n=>n.getHours());La.range;const Ia=ce(n=>{n.setUTCMinutes(0,0,0)},(n,t)=>{n.setTime(+n+t*$n)},(n,t)=>(t-n)/$n,n=>n.getUTCHours());Ia.range;const dr=ce(n=>n.setHours(0,0,0,0),(n,t)=>n.setDate(n.getDate()+t),(n,t)=>(t-n-(t.getTimezoneOffset()-n.getTimezoneOffset())*nn)/Ln,n=>n.getDate()-1);dr.range;const To=ce(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/Ln,n=>n.getUTCDate()-1);To.range;const bu=ce(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/Ln,n=>Math.floor(n/Ln));bu.range;function yi(n){return ce(t=>{t.setDate(t.getDate()-(t.getDay()+7-n)%7),t.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+e*7)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*nn)/Pa)}const $o=yi(0),Lo=yi(1),_x=yi(2),Cx=yi(3),Fi=yi(4),Px=yi(5),Ex=yi(6);$o.range,Lo.range,_x.range,Cx.range,Fi.range,Px.range,Ex.range;function xi(n){return ce(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-n)%7),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e*7)},(t,e)=>(e-t)/Pa)}const Io=xi(0),Fo=xi(1),Tx=xi(2),$x=xi(3),Ri=xi(4),Lx=xi(5),Ix=xi(6);Io.range,Fo.range,Tx.range,$x.range,Ri.range,Lx.range,Ix.range;const Fa=ce(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,t)=>{n.setMonth(n.getMonth()+t)},(n,t)=>t.getMonth()-n.getMonth()+(t.getFullYear()-n.getFullYear())*12,n=>n.getMonth());Fa.range;const Ra=ce(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCMonth(n.getUTCMonth()+t)},(n,t)=>t.getUTCMonth()-n.getUTCMonth()+(t.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());Ra.range;const In=ce(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,t)=>{n.setFullYear(n.getFullYear()+t)},(n,t)=>t.getFullYear()-n.getFullYear(),n=>n.getFullYear());In.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:ce(t=>{t.setFullYear(Math.floor(t.getFullYear()/n)*n),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e*n)}),In.range;const Fn=ce(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCFullYear(n.getUTCFullYear()+t)},(n,t)=>t.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());Fn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:ce(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/n)*n),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e*n)}),Fn.range;function vu(n,t,e,i,r,o){const s=[[mi,1,Tn],[mi,5,5*Tn],[mi,15,15*Tn],[mi,30,30*Tn],[o,1,nn],[o,5,5*nn],[o,15,15*nn],[o,30,30*nn],[r,1,$n],[r,3,3*$n],[r,6,6*$n],[r,12,12*$n],[i,1,Ln],[i,2,2*Ln],[e,1,Pa],[t,1,xu],[t,3,3*xu],[n,1,Ea]];function a(c,h,f){const u=h<c;u&&([c,h]=[h,c]);const d=f&&typeof f.range=="function"?f:l(c,h,f),p=d?d.range(c,+h+1):[];return u?p.reverse():p}function l(c,h,f){const u=Math.abs(h-c)/f,d=pa(([,,g])=>g).right(s,u);if(d===s.length)return n.every(ya(c/Ea,h/Ea,f));if(d===0)return Eo.every(Math.max(ya(c,h,f),1));const[p,y]=s[u/s[d-1][2]<s[d][2]/u?d-1:d];return p.every(y)}return[a,l]}const[Fx,Rx]=vu(Fn,Ra,Io,bu,Ia,$a),[Dx,zx]=vu(In,Fa,$o,dr,La,Ta);function Da(n){if(0<=n.y&&n.y<100){var t=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return t.setFullYear(n.y),t}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function za(n){if(0<=n.y&&n.y<100){var t=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return t.setUTCFullYear(n.y),t}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function pr(n,t,e){return{y:n,m:t,d:e,H:0,M:0,S:0,L:0}}function Bx(n){var t=n.dateTime,e=n.date,i=n.time,r=n.periods,o=n.days,s=n.shortDays,a=n.months,l=n.shortMonths,c=gr(r),h=mr(r),f=gr(o),u=mr(o),d=gr(s),p=mr(s),y=gr(a),g=mr(a),m=gr(l),x=mr(l),v={a:T,A:R,b:F,B:D,c:null,d:_u,e:_u,f:a1,g:y1,G:b1,H:r1,I:o1,j:s1,L:Cu,m:c1,M:l1,p:z,q:B,Q:Iu,s:Fu,S:h1,u:u1,U:f1,V:d1,w:p1,W:g1,x:null,X:null,y:m1,Y:x1,Z:v1,"%":Lu},b={a:H,A:J,b:X,B:j,c:null,d:Eu,e:Eu,f:A1,g:F1,G:D1,H:w1,I:k1,j:M1,L:Tu,m:S1,M:_1,p:W,q:U,Q:Iu,s:Fu,S:C1,u:P1,U:E1,V:T1,w:$1,W:L1,x:null,X:null,y:I1,Y:R1,Z:z1,"%":Lu},k={a:$,A:I,b:E,B:P,c:S,d:Au,e:Au,f:t1,g:Mu,G:ku,H:Su,I:Su,j:Zx,L:Qx,m:jx,M:Kx,p:_,q:qx,Q:n1,s:i1,S:Jx,u:Vx,U:Gx,V:Yx,w:Hx,W:Xx,x:w,X:A,y:Mu,Y:ku,Z:Ux,"%":e1};v.x=M(e,v),v.X=M(i,v),v.c=M(t,v),b.x=M(e,b),b.X=M(i,b),b.c=M(t,b);function M(G,N){return function(Y){var O=[],ct=-1,it=0,ft=G.length,dt,at,ot;for(Y instanceof Date||(Y=new Date(+Y));++ct<ft;)G.charCodeAt(ct)===37&&(O.push(G.slice(it,ct)),(at=wu[dt=G.charAt(++ct)])!=null?dt=G.charAt(++ct):at=dt==="e"?" ":"0",(ot=N[dt])&&(dt=ot(Y,at)),O.push(dt),it=ct+1);return O.push(G.slice(it,ct)),O.join("")}}function C(G,N){return function(Y){var O=pr(1900,void 0,1),ct=L(O,G,Y+="",0),it,ft;if(ct!=Y.length)return null;if("Q"in O)return new Date(O.Q);if("s"in O)return new Date(O.s*1e3+("L"in O?O.L:0));if(N&&!("Z"in O)&&(O.Z=0),"p"in O&&(O.H=O.H%12+O.p*12),O.m===void 0&&(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?(it=za(pr(O.y,0,1)),ft=it.getUTCDay(),it=ft>4||ft===0?Fo.ceil(it):Fo(it),it=To.offset(it,(O.V-1)*7),O.y=it.getUTCFullYear(),O.m=it.getUTCMonth(),O.d=it.getUTCDate()+(O.w+6)%7):(it=Da(pr(O.y,0,1)),ft=it.getDay(),it=ft>4||ft===0?Lo.ceil(it):Lo(it),it=dr.offset(it,(O.V-1)*7),O.y=it.getFullYear(),O.m=it.getMonth(),O.d=it.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),ft="Z"in O?za(pr(O.y,0,1)).getUTCDay():Da(pr(O.y,0,1)).getDay(),O.m=0,O.d="W"in O?(O.w+6)%7+O.W*7-(ft+5)%7:O.w+O.U*7-(ft+6)%7);return"Z"in O?(O.H+=O.Z/100|0,O.M+=O.Z%100,za(O)):Da(O)}}function L(G,N,Y,O){for(var ct=0,it=N.length,ft=Y.length,dt,at;ct<it;){if(O>=ft)return-1;if(dt=N.charCodeAt(ct++),dt===37){if(dt=N.charAt(ct++),at=k[dt in wu?N.charAt(ct++):dt],!at||(O=at(G,Y,O))<0)return-1}else if(dt!=Y.charCodeAt(O++))return-1}return O}function _(G,N,Y){var O=c.exec(N.slice(Y));return O?(G.p=h.get(O[0].toLowerCase()),Y+O[0].length):-1}function $(G,N,Y){var O=d.exec(N.slice(Y));return O?(G.w=p.get(O[0].toLowerCase()),Y+O[0].length):-1}function I(G,N,Y){var O=f.exec(N.slice(Y));return O?(G.w=u.get(O[0].toLowerCase()),Y+O[0].length):-1}function E(G,N,Y){var O=m.exec(N.slice(Y));return O?(G.m=x.get(O[0].toLowerCase()),Y+O[0].length):-1}function P(G,N,Y){var O=y.exec(N.slice(Y));return O?(G.m=g.get(O[0].toLowerCase()),Y+O[0].length):-1}function S(G,N,Y){return L(G,t,N,Y)}function w(G,N,Y){return L(G,e,N,Y)}function A(G,N,Y){return L(G,i,N,Y)}function T(G){return s[G.getDay()]}function R(G){return o[G.getDay()]}function F(G){return l[G.getMonth()]}function D(G){return a[G.getMonth()]}function z(G){return r[+(G.getHours()>=12)]}function B(G){return 1+~~(G.getMonth()/3)}function H(G){return s[G.getUTCDay()]}function J(G){return o[G.getUTCDay()]}function X(G){return l[G.getUTCMonth()]}function j(G){return a[G.getUTCMonth()]}function W(G){return r[+(G.getUTCHours()>=12)]}function U(G){return 1+~~(G.getUTCMonth()/3)}return{format:function(G){var N=M(G+="",v);return N.toString=function(){return G},N},parse:function(G){var N=C(G+="",!1);return N.toString=function(){return G},N},utcFormat:function(G){var N=M(G+="",b);return N.toString=function(){return G},N},utcParse:function(G){var N=C(G+="",!0);return N.toString=function(){return G},N}}}var wu={"-":"",_:" ",0:"0"},ue=/^\s*\d+/,Ox=/^%/,Nx=/[\\^$*+?|[\]().{}]/g;function Yt(n,t,e){var i=n<0?"-":"",r=(i?-n:n)+"",o=r.length;return i+(o<e?new Array(e-o+1).join(t)+r:r)}function Wx(n){return n.replace(Nx,"\\$&")}function gr(n){return new RegExp("^(?:"+n.map(Wx).join("|")+")","i")}function mr(n){return new Map(n.map((t,e)=>[t.toLowerCase(),e]))}function Hx(n,t,e){var i=ue.exec(t.slice(e,e+1));return i?(n.w=+i[0],e+i[0].length):-1}function Vx(n,t,e){var i=ue.exec(t.slice(e,e+1));return i?(n.u=+i[0],e+i[0].length):-1}function Gx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.U=+i[0],e+i[0].length):-1}function Yx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.V=+i[0],e+i[0].length):-1}function Xx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.W=+i[0],e+i[0].length):-1}function ku(n,t,e){var i=ue.exec(t.slice(e,e+4));return i?(n.y=+i[0],e+i[0].length):-1}function Mu(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.y=+i[0]+(+i[0]>68?1900:2e3),e+i[0].length):-1}function Ux(n,t,e){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(e,e+6));return i?(n.Z=i[1]?0:-(i[2]+(i[3]||"00")),e+i[0].length):-1}function qx(n,t,e){var i=ue.exec(t.slice(e,e+1));return i?(n.q=i[0]*3-3,e+i[0].length):-1}function jx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.m=i[0]-1,e+i[0].length):-1}function Au(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.d=+i[0],e+i[0].length):-1}function Zx(n,t,e){var i=ue.exec(t.slice(e,e+3));return i?(n.m=0,n.d=+i[0],e+i[0].length):-1}function Su(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.H=+i[0],e+i[0].length):-1}function Kx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.M=+i[0],e+i[0].length):-1}function Jx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.S=+i[0],e+i[0].length):-1}function Qx(n,t,e){var i=ue.exec(t.slice(e,e+3));return i?(n.L=+i[0],e+i[0].length):-1}function t1(n,t,e){var i=ue.exec(t.slice(e,e+6));return i?(n.L=Math.floor(i[0]/1e3),e+i[0].length):-1}function e1(n,t,e){var i=Ox.exec(t.slice(e,e+1));return i?e+i[0].length:-1}function n1(n,t,e){var i=ue.exec(t.slice(e));return i?(n.Q=+i[0],e+i[0].length):-1}function i1(n,t,e){var i=ue.exec(t.slice(e));return i?(n.s=+i[0],e+i[0].length):-1}function _u(n,t){return Yt(n.getDate(),t,2)}function r1(n,t){return Yt(n.getHours(),t,2)}function o1(n,t){return Yt(n.getHours()%12||12,t,2)}function s1(n,t){return Yt(1+dr.count(In(n),n),t,3)}function Cu(n,t){return Yt(n.getMilliseconds(),t,3)}function a1(n,t){return Cu(n,t)+"000"}function c1(n,t){return Yt(n.getMonth()+1,t,2)}function l1(n,t){return Yt(n.getMinutes(),t,2)}function h1(n,t){return Yt(n.getSeconds(),t,2)}function u1(n){var t=n.getDay();return t===0?7:t}function f1(n,t){return Yt($o.count(In(n)-1,n),t,2)}function Pu(n){var t=n.getDay();return t>=4||t===0?Fi(n):Fi.ceil(n)}function d1(n,t){return n=Pu(n),Yt(Fi.count(In(n),n)+(In(n).getDay()===4),t,2)}function p1(n){return n.getDay()}function g1(n,t){return Yt(Lo.count(In(n)-1,n),t,2)}function m1(n,t){return Yt(n.getFullYear()%100,t,2)}function y1(n,t){return n=Pu(n),Yt(n.getFullYear()%100,t,2)}function x1(n,t){return Yt(n.getFullYear()%1e4,t,4)}function b1(n,t){var e=n.getDay();return n=e>=4||e===0?Fi(n):Fi.ceil(n),Yt(n.getFullYear()%1e4,t,4)}function v1(n){var t=n.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Yt(t/60|0,"0",2)+Yt(t%60,"0",2)}function Eu(n,t){return Yt(n.getUTCDate(),t,2)}function w1(n,t){return Yt(n.getUTCHours(),t,2)}function k1(n,t){return Yt(n.getUTCHours()%12||12,t,2)}function M1(n,t){return Yt(1+To.count(Fn(n),n),t,3)}function Tu(n,t){return Yt(n.getUTCMilliseconds(),t,3)}function A1(n,t){return Tu(n,t)+"000"}function S1(n,t){return Yt(n.getUTCMonth()+1,t,2)}function _1(n,t){return Yt(n.getUTCMinutes(),t,2)}function C1(n,t){return Yt(n.getUTCSeconds(),t,2)}function P1(n){var t=n.getUTCDay();return t===0?7:t}function E1(n,t){return Yt(Io.count(Fn(n)-1,n),t,2)}function $u(n){var t=n.getUTCDay();return t>=4||t===0?Ri(n):Ri.ceil(n)}function T1(n,t){return n=$u(n),Yt(Ri.count(Fn(n),n)+(Fn(n).getUTCDay()===4),t,2)}function $1(n){return n.getUTCDay()}function L1(n,t){return Yt(Fo.count(Fn(n)-1,n),t,2)}function I1(n,t){return Yt(n.getUTCFullYear()%100,t,2)}function F1(n,t){return n=$u(n),Yt(n.getUTCFullYear()%100,t,2)}function R1(n,t){return Yt(n.getUTCFullYear()%1e4,t,4)}function D1(n,t){var e=n.getUTCDay();return n=e>=4||e===0?Ri(n):Ri.ceil(n),Yt(n.getUTCFullYear()%1e4,t,4)}function z1(){return"+0000"}function Lu(){return"%"}function Iu(n){return+n}function Fu(n){return Math.floor(+n/1e3)}var Di,Ro,Do;B1({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function B1(n){return Di=Bx(n),Ro=Di.format,Di.parse,Do=Di.utcFormat,Di.utcParse,Di}function O1(n){return new Date(n)}function N1(n){return n instanceof Date?+n:+new Date(+n)}function Ba(n,t,e,i,r,o,s,a,l,c){var h=ou(),f=h.invert,u=h.domain,d=c(".%L"),p=c(":%S"),y=c("%I:%M"),g=c("%I %p"),m=c("%a %d"),x=c("%b %d"),v=c("%B"),b=c("%Y");function k(M){return(l(M)<M?d:a(M)<M?p:s(M)<M?y:o(M)<M?g:i(M)<M?r(M)<M?m:x:e(M)<M?v:b)(M)}return h.invert=function(M){return new Date(f(M))},h.domain=function(M){return arguments.length?u(Array.from(M,N1)):u().map(O1)},h.ticks=function(M){var C=u();return n(C[0],C[C.length-1],M??10)},h.tickFormat=function(M,C){return C==null?k:c(C)},h.nice=function(M){var C=u();return(!M||typeof M.range!="function")&&(M=t(C[0],C[C.length-1],M??10)),M?u(fu(C,M)):h},h.copy=function(){return Ao(h,Ba(n,t,e,i,r,o,s,a,l,c))},h}function W1(){return pi.apply(Ba(Dx,zx,In,Fa,$o,dr,La,Ta,mi,Ro).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function H1(){return pi.apply(Ba(Fx,Rx,Fn,Ra,Io,To,Ia,$a,mi,Do).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function V1(){var n=0,t=1,e,i,r,o,s=en,a=!1,l;function c(f){return f==null||isNaN(f=+f)?l:s(r===0?.5:(f=(o(f)-e)*r,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([n,t]=f,e=o(n=+n),i=o(t=+t),r=e===i?0:1/(i-e),c):[n,t]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(s=f,c):s};function h(f){return function(u){var d,p;return arguments.length?([d,p]=u,s=f(d,p),c):[s(0),s(1)]}}return c.range=h(ae),c.rangeRound=h(Qh),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return o=f,e=f(n),i=f(t),r=e===i?0:1/(i-e),c}}function G1(n,t){return t.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function Ru(){var n=Sa(V1()(en));return n.copy=function(){return G1(n,Ru())},Ty.apply(n,arguments)}function Y1(n){return n}var zo=1,Bo=2,Oa=3,yr=4,Du=1e-6;function X1(n){return"translate("+n+",0)"}function U1(n){return"translate(0,"+n+")"}function q1(n){return t=>+n(t)}function j1(n,t){return t=Math.max(0,n.bandwidth()-t*2)/2,n.round()&&(t=Math.round(t)),e=>+n(e)+t}function Z1(){return!this.__axis}function Oo(n,t){var e=[],i=null,r=null,o=6,s=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,c=n===zo||n===yr?-1:1,h=n===yr||n===Bo?"x":"y",f=n===zo||n===Oa?X1:U1;function u(d){var p=i??(t.ticks?t.ticks.apply(t,e):t.domain()),y=r??(t.tickFormat?t.tickFormat.apply(t,e):Y1),g=Math.max(o,0)+a,m=t.range(),x=+m[0]+l,v=+m[m.length-1]+l,b=(t.bandwidth?j1:q1)(t.copy(),l),k=d.selection?d.selection():d,M=k.selectAll(".domain").data([null]),C=k.selectAll(".tick").data(p,t).order(),L=C.exit(),_=C.enter().append("g").attr("class","tick"),$=C.select("line"),I=C.select("text");M=M.merge(M.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),C=C.merge(_),$=$.merge(_.append("line").attr("stroke","currentColor").attr(h+"2",c*o)),I=I.merge(_.append("text").attr("fill","currentColor").attr(h,c*g).attr("dy",n===zo?"0em":n===Oa?"0.71em":"0.32em")),d!==k&&(M=M.transition(d),C=C.transition(d),$=$.transition(d),I=I.transition(d),L=L.transition(d).attr("opacity",Du).attr("transform",function(E){return isFinite(E=b(E))?f(E+l):this.getAttribute("transform")}),_.attr("opacity",Du).attr("transform",function(E){var P=this.parentNode.__axis;return f((P&&isFinite(P=P(E))?P:b(E))+l)})),L.remove(),M.attr("d",n===yr||n===Bo?s?"M"+c*s+","+x+"H"+l+"V"+v+"H"+c*s:"M"+l+","+x+"V"+v:s?"M"+x+","+c*s+"V"+l+"H"+v+"V"+c*s:"M"+x+","+l+"H"+v),C.attr("opacity",1).attr("transform",function(E){return f(b(E)+l)}),$.attr(h+"2",c*o),I.attr(h,c*g).text(y),k.filter(Z1).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",n===Bo?"start":n===yr?"end":"middle"),k.each(function(){this.__axis=b})}return u.scale=function(d){return arguments.length?(t=d,u):t},u.ticks=function(){return e=Array.from(arguments),u},u.tickArguments=function(d){return arguments.length?(e=d==null?[]:Array.from(d),u):e.slice()},u.tickValues=function(d){return arguments.length?(i=d==null?null:Array.from(d),u):i&&i.slice()},u.tickFormat=function(d){return arguments.length?(r=d,u):r},u.tickSize=function(d){return arguments.length?(o=s=+d,u):o},u.tickSizeInner=function(d){return arguments.length?(o=+d,u):o},u.tickSizeOuter=function(d){return arguments.length?(s=+d,u):s},u.tickPadding=function(d){return arguments.length?(a=+d,u):a},u.offset=function(d){return arguments.length?(l=+d,u):l},u}function Na(n){return Oo(zo,n)}function zu(n){return Oo(Bo,n)}function Bu(n){return Oo(Oa,n)}function Ou(n){return Oo(yr,n)}var K1={value:()=>{}};function zi(){for(var n=0,t=arguments.length,e={},i;n<t;++n){if(!(i=arguments[n]+"")||i in e||/[\s.]/.test(i))throw new Error("illegal type: "+i);e[i]=[]}return new No(e)}function No(n){this._=n}function J1(n,t){return n.trim().split(/^|\s+/).map(function(e){var i="",r=e.indexOf(".");if(r>=0&&(i=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:i}})}No.prototype=zi.prototype={constructor:No,on:function(n,t){var e=this._,i=J1(n+"",e),r,o=-1,s=i.length;if(arguments.length<2){for(;++o<s;)if((r=(n=i[o]).type)&&(r=Q1(e[r],n.name)))return r;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++o<s;)if(r=(n=i[o]).type)e[r]=Nu(e[r],n.name,t);else if(t==null)for(r in e)e[r]=Nu(e[r],n.name,null);return this},copy:function(){var n={},t=this._;for(var e in t)n[e]=t[e].slice();return new No(n)},call:function(n,t){if((r=arguments.length-2)>0)for(var e=new Array(r),i=0,r,o;i<r;++i)e[i]=arguments[i+2];if(!this._.hasOwnProperty(n))throw new Error("unknown type: "+n);for(o=this._[n],i=0,r=o.length;i<r;++i)o[i].value.apply(t,e)},apply:function(n,t,e){if(!this._.hasOwnProperty(n))throw new Error("unknown type: "+n);for(var i=this._[n],r=0,o=i.length;r<o;++r)i[r].value.apply(t,e)}};function Q1(n,t){for(var e=0,i=n.length,r;e<i;++e)if((r=n[e]).name===t)return r.value}function Nu(n,t,e){for(var i=0,r=n.length;i<r;++i)if(n[i].name===t){n[i]=K1,n=n.slice(0,i).concat(n.slice(i+1));break}return e!=null&&n.push({name:t,value:e}),n}var Bi=0,xr=0,br=0,Wu=1e3,Wo,vr,Ho=0,bi=0,Vo=0,wr=typeof performance=="object"&&performance.now?performance:Date,Hu=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(n){setTimeout(n,17)};function Wa(){return bi||(Hu(tb),bi=wr.now()+Vo)}function tb(){bi=0}function Go(){this._call=this._time=this._next=null}Go.prototype=Yo.prototype={constructor:Go,restart:function(n,t,e){if(typeof n!="function")throw new TypeError("callback is not a function");e=(e==null?Wa():+e)+(t==null?0:+t),!this._next&&vr!==this&&(vr?vr._next=this:Wo=this,vr=this),this._call=n,this._time=e,Ha()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ha())}};function Yo(n,t,e){var i=new Go;return i.restart(n,t,e),i}function eb(){Wa(),++Bi;for(var n=Wo,t;n;)(t=bi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Bi}function Vu(){bi=(Ho=wr.now())+Vo,Bi=xr=0;try{eb()}finally{Bi=0,ib(),bi=0}}function nb(){var n=wr.now(),t=n-Ho;t>Wu&&(Vo-=t,Ho=n)}function ib(){for(var n,t=Wo,e,i=1/0;t;)t._call?(i>t._time&&(i=t._time),n=t,t=t._next):(e=t._next,t._next=null,t=n?n._next=e:Wo=e);vr=n,Ha(i)}function Ha(n){if(!Bi){xr&&(xr=clearTimeout(xr));var t=n-bi;t>24?(n<1/0&&(xr=setTimeout(Vu,n-wr.now()-Vo)),br&&(br=clearInterval(br))):(br||(Ho=wr.now(),br=setInterval(nb,Wu)),Bi=1,Hu(Vu))}}function Gu(n,t,e){var i=new Go;return t=t==null?0:+t,i.restart(r=>{i.stop(),n(r+t)},t,e),i}var rb=zi("start","end","cancel","interrupt"),ob=[],Yu=0,Xu=1,Va=2,Xo=3,Uu=4,Ga=5,Uo=6;function qo(n,t,e,i,r,o){var s=n.__transition;if(!s)n.__transition={};else if(e in s)return;sb(n,e,{name:t,index:i,group:r,on:rb,tween:ob,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Yu})}function Ya(n,t){var e=mn(n,t);if(e.state>Yu)throw new Error("too late; already scheduled");return e}function vn(n,t){var e=mn(n,t);if(e.state>Xo)throw new Error("too late; already running");return e}function mn(n,t){var e=n.__transition;if(!e||!(e=e[t]))throw new Error("transition not found");return e}function sb(n,t,e){var i=n.__transition,r;i[t]=e,e.timer=Yo(o,0,e.time);function o(c){e.state=Xu,e.timer.restart(s,e.delay,e.time),e.delay<=c&&s(c-e.delay)}function s(c){var h,f,u,d;if(e.state!==Xu)return l();for(h in i)if(d=i[h],d.name===e.name){if(d.state===Xo)return Gu(s);d.state===Uu?(d.state=Uo,d.timer.stop(),d.on.call("interrupt",n,n.__data__,d.index,d.group),delete i[h]):+h<t&&(d.state=Uo,d.timer.stop(),d.on.call("cancel",n,n.__data__,d.index,d.group),delete i[h])}if(Gu(function(){e.state===Xo&&(e.state=Uu,e.timer.restart(a,e.delay,e.time),a(c))}),e.state=Va,e.on.call("start",n,n.__data__,e.index,e.group),e.state===Va){for(e.state=Xo,r=new Array(u=e.tween.length),h=0,f=-1;h<u;++h)(d=e.tween[h].value.call(n,n.__data__,e.index,e.group))&&(r[++f]=d);r.length=f+1}}function a(c){for(var h=c<e.duration?e.ease.call(null,c/e.duration):(e.timer.restart(l),e.state=Ga,1),f=-1,u=r.length;++f<u;)r[f].call(n,h);e.state===Ga&&(e.on.call("end",n,n.__data__,e.index,e.group),l())}function l(){e.state=Uo,e.timer.stop(),delete i[t];for(var c in i)return;delete n.__transition}}function Oi(n,t){var e=n.__transition,i,r,o=!0,s;if(e){t=t==null?null:t+"";for(s in e){if((i=e[s]).name!==t){o=!1;continue}r=i.state>Va&&i.state<Ga,i.state=Uo,i.timer.stop(),i.on.call(r?"interrupt":"cancel",n,n.__data__,i.index,i.group),delete e[s]}o&&delete n.__transition}}function ab(n){return this.each(function(){Oi(this,n)})}function cb(n,t){var e,i;return function(){var r=vn(this,n),o=r.tween;if(o!==e){i=e=o;for(var s=0,a=i.length;s<a;++s)if(i[s].name===t){i=i.slice(),i.splice(s,1);break}}r.tween=i}}function lb(n,t,e){var i,r;if(typeof e!="function")throw new Error;return function(){var o=vn(this,n),s=o.tween;if(s!==i){r=(i=s).slice();for(var a={name:t,value:e},l=0,c=r.length;l<c;++l)if(r[l].name===t){r[l]=a;break}l===c&&r.push(a)}o.tween=r}}function hb(n,t){var e=this._id;if(n+="",arguments.length<2){for(var i=mn(this.node(),e).tween,r=0,o=i.length,s;r<o;++r)if((s=i[r]).name===n)return s.value;return null}return this.each((t==null?cb:lb)(e,n,t))}function Xa(n,t,e){var i=n._id;return n.each(function(){var r=vn(this,i);(r.value||(r.value={}))[t]=e.apply(this,arguments)}),function(r){return mn(r,i).value[t]}}function qu(n,t){var e;return(typeof t=="number"?gn:t instanceof oe?gi:(e=oe(t))?(t=e,gi):Jh)(n,t)}function ub(n){return function(){this.removeAttribute(n)}}function fb(n){return function(){this.removeAttributeNS(n.space,n.local)}}function db(n,t,e){var i,r=e+"",o;return function(){var s=this.getAttribute(n);return s===r?null:s===i?o:o=t(i=s,e)}}function pb(n,t,e){var i,r=e+"",o;return function(){var s=this.getAttributeNS(n.space,n.local);return s===r?null:s===i?o:o=t(i=s,e)}}function gb(n,t,e){var i,r,o;return function(){var s,a=e(this),l;return a==null?void this.removeAttribute(n):(s=this.getAttribute(n),l=a+"",s===l?null:s===i&&l===r?o:(r=l,o=t(i=s,a)))}}function mb(n,t,e){var i,r,o;return function(){var s,a=e(this),l;return a==null?void this.removeAttributeNS(n.space,n.local):(s=this.getAttributeNS(n.space,n.local),l=a+"",s===l?null:s===i&&l===r?o:(r=l,o=t(i=s,a)))}}function yb(n,t){var e=xo(n),i=e==="transform"?qy:qu;return this.attrTween(n,typeof t=="function"?(e.local?mb:gb)(e,i,Xa(this,"attr."+n,t)):t==null?(e.local?fb:ub)(e):(e.local?pb:db)(e,i,t))}function xb(n,t){return function(e){this.setAttribute(n,t.call(this,e))}}function bb(n,t){return function(e){this.setAttributeNS(n.space,n.local,t.call(this,e))}}function vb(n,t){var e,i;function r(){var o=t.apply(this,arguments);return o!==i&&(e=(i=o)&&bb(n,o)),e}return r._value=t,r}function wb(n,t){var e,i;function r(){var o=t.apply(this,arguments);return o!==i&&(e=(i=o)&&xb(n,o)),e}return r._value=t,r}function kb(n,t){var e="attr."+n;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;var i=xo(n);return this.tween(e,(i.local?vb:wb)(i,t))}function Mb(n,t){return function(){Ya(this,n).delay=+t.apply(this,arguments)}}function Ab(n,t){return t=+t,function(){Ya(this,n).delay=t}}function Sb(n){var t=this._id;return arguments.length?this.each((typeof n=="function"?Mb:Ab)(t,n)):mn(this.node(),t).delay}function _b(n,t){return function(){vn(this,n).duration=+t.apply(this,arguments)}}function Cb(n,t){return t=+t,function(){vn(this,n).duration=t}}function Pb(n){var t=this._id;return arguments.length?this.each((typeof n=="function"?_b:Cb)(t,n)):mn(this.node(),t).duration}function Eb(n,t){if(typeof t!="function")throw new Error;return function(){vn(this,n).ease=t}}function Tb(n){var t=this._id;return arguments.length?this.each(Eb(t,n)):mn(this.node(),t).ease}function $b(n,t){return function(){var e=t.apply(this,arguments);if(typeof e!="function")throw new Error;vn(this,n).ease=e}}function Lb(n){if(typeof n!="function")throw new Error;return this.each($b(this._id,n))}function Ib(n){typeof n!="function"&&(n=Lh(n));for(var t=this._groups,e=t.length,i=new Array(e),r=0;r<e;++r)for(var o=t[r],s=o.length,a=i[r]=[],l,c=0;c<s;++c)(l=o[c])&&n.call(l,l.__data__,c,o)&&a.push(l);return new Rn(i,this._parents,this._name,this._id)}function Fb(n){if(n._id!==this._id)throw new Error;for(var t=this._groups,e=n._groups,i=t.length,r=e.length,o=Math.min(i,r),s=new Array(i),a=0;a<o;++a)for(var l=t[a],c=e[a],h=l.length,f=s[a]=new Array(h),u,d=0;d<h;++d)(u=l[d]||c[d])&&(f[d]=u);for(;a<i;++a)s[a]=t[a];return new Rn(s,this._parents,this._name,this._id)}function Rb(n){return(n+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||t==="start"})}function Db(n,t,e){var i,r,o=Rb(t)?Ya:vn;return function(){var s=o(this,n),a=s.on;a!==i&&(r=(i=a).copy()).on(t,e),s.on=r}}function zb(n,t){var e=this._id;return arguments.length<2?mn(this.node(),e).on.on(n):this.each(Db(e,n,t))}function Bb(n){return function(){var t=this.parentNode;for(var e in this.__transition)if(+e!==n)return;t&&t.removeChild(this)}}function Ob(){return this.on("end.remove",Bb(this._id))}function Nb(n){var t=this._name,e=this._id;typeof n!="function"&&(n=fa(n));for(var i=this._groups,r=i.length,o=new Array(r),s=0;s<r;++s)for(var a=i[s],l=a.length,c=o[s]=new Array(l),h,f,u=0;u<l;++u)(h=a[u])&&(f=n.call(h,h.__data__,u,a))&&("__data__"in h&&(f.__data__=h.__data__),c[u]=f,qo(c[u],t,e,u,c,mn(h,e)));return new Rn(o,this._parents,t,e)}function Wb(n){var t=this._name,e=this._id;typeof n!="function"&&(n=$h(n));for(var i=this._groups,r=i.length,o=[],s=[],a=0;a<r;++a)for(var l=i[a],c=l.length,h,f=0;f<c;++f)if(h=l[f]){for(var u=n.call(h,h.__data__,f,l),d,p=mn(h,e),y=0,g=u.length;y<g;++y)(d=u[y])&&qo(d,t,e,y,u,p);o.push(u),s.push(h)}return new Rn(o,s,t,e)}var Hb=hr.prototype.constructor;function Vb(){return new Hb(this._groups,this._parents)}function Gb(n,t){var e,i,r;return function(){var o=Li(this,n),s=(this.style.removeProperty(n),Li(this,n));return o===s?null:o===e&&s===i?r:r=t(e=o,i=s)}}function ju(n){return function(){this.style.removeProperty(n)}}function Yb(n,t,e){var i,r=e+"",o;return function(){var s=Li(this,n);return s===r?null:s===i?o:o=t(i=s,e)}}function Xb(n,t,e){var i,r,o;return function(){var s=Li(this,n),a=e(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(n),Li(this,n))),s===l?null:s===i&&l===r?o:(r=l,o=t(i=s,a))}}function Ub(n,t){var e,i,r,o="style."+t,s="end."+o,a;return function(){var l=vn(this,n),c=l.on,h=l.value[o]==null?a||(a=ju(t)):void 0;(c!==e||r!==h)&&(i=(e=c).copy()).on(s,r=h),l.on=i}}function qb(n,t,e){var i=(n+="")=="transform"?Uy:qu;return t==null?this.styleTween(n,Gb(n,i)).on("end.style."+n,ju(n)):typeof t=="function"?this.styleTween(n,Xb(n,i,Xa(this,"style."+n,t))).each(Ub(this._id,n)):this.styleTween(n,Yb(n,i,t),e).on("end.style."+n,null)}function jb(n,t,e){return function(i){this.style.setProperty(n,t.call(this,i),e)}}function Zb(n,t,e){var i,r;function o(){var s=t.apply(this,arguments);return s!==r&&(i=(r=s)&&jb(n,s,e)),i}return o._value=t,o}function Kb(n,t,e){var i="style."+(n+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(t==null)return this.tween(i,null);if(typeof t!="function")throw new Error;return this.tween(i,Zb(n,t,e??""))}function Jb(n){return function(){this.textContent=n}}function Qb(n){return function(){var t=n(this);this.textContent=t??""}}function tv(n){return this.tween("text",typeof n=="function"?Qb(Xa(this,"text",n)):Jb(n==null?"":n+""))}function ev(n){return function(t){this.textContent=n.call(this,t)}}function nv(n){var t,e;function i(){var r=n.apply(this,arguments);return r!==e&&(t=(e=r)&&ev(r)),t}return i._value=n,i}function iv(n){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(n==null)return this.tween(t,null);if(typeof n!="function")throw new Error;return this.tween(t,nv(n))}function rv(){for(var n=this._name,t=this._id,e=Zu(),i=this._groups,r=i.length,o=0;o<r;++o)for(var s=i[o],a=s.length,l,c=0;c<a;++c)if(l=s[c]){var h=mn(l,t);qo(l,n,e,c,s,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new Rn(i,this._parents,n,e)}function ov(){var n,t,e=this,i=e._id,r=e.size();return new Promise(function(o,s){var a={value:s},l={value:function(){--r===0&&o()}};e.each(function(){var c=vn(this,i),h=c.on;h!==n&&(t=(n=h).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),c.on=t}),r===0&&o()})}var sv=0;function Rn(n,t,e,i){this._groups=n,this._parents=t,this._name=e,this._id=i}function Zu(){return++sv}var Dn=hr.prototype;Rn.prototype={constructor:Rn,select:Nb,selectAll:Wb,selectChild:Dn.selectChild,selectChildren:Dn.selectChildren,filter:Ib,merge:Fb,selection:Vb,transition:rv,call:Dn.call,nodes:Dn.nodes,node:Dn.node,size:Dn.size,empty:Dn.empty,each:Dn.each,on:zb,attr:yb,attrTween:kb,style:qb,styleTween:Kb,text:tv,textTween:iv,remove:Ob,tween:hb,delay:Sb,duration:Pb,ease:Tb,easeVarying:Lb,end:ov,[Symbol.iterator]:Dn[Symbol.iterator]};const kr=n=>+n;function Ku(n){return--n*n*n+1}function av(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)/2}var cv={time:null,delay:0,duration:250,ease:av};function lv(n,t){for(var e;!(e=n.__transition)||!(e=e[t]);)if(!(n=n.parentNode))throw new Error(`transition ${t} not found`);return e}function hv(n){var t,e;n instanceof Rn?(t=n._id,n=n._name):(t=Zu(),(e=cv).time=Wa(),n=n==null?null:n+"");for(var i=this._groups,r=i.length,o=0;o<r;++o)for(var s=i[o],a=s.length,l,c=0;c<a;++c)(l=s[c])&&qo(l,n,t,c,s,e||lv(l,t));return new Rn(i,this._parents,n,t)}hr.prototype.interrupt=ab,hr.prototype.transition=hv;let Ua=!0;function uv(n){Ua=n}function qa(){return Ua}const fv=Object.entries({"%A":"%A","%a":"%a","%d":"%d","%e":"%-d","%b":"%b","%B":"%B","%m":"%m","%y":"%y","%Y":"%Y","%H":"%H","%I":"%I","%k":"%-H","%l":"%-I","%M":"%M","%p":"%p","%P":"%p","%S":"%S","%L":"%L"}).map(([n,t])=>[new RegExp(n.replace("%","\\%"),"g"),t]),Ju=new Map;function ja(n,t){let e=Ju.get(n);if(!e){e=n;for(const[r,o]of fv)e=e.replace(r,o);Ju.set(n,e)}return(Ua?Do(e):Ro(e))(new Date(t))}function jo(n,t=-1,e=".",i=","){if(!Number.isFinite(n))return"0";if(t===-1){const l=n.toString(),c=l.indexOf(".");t=c===-1?0:l.length-c-1}const r=n.toFixed(t),[o,s]=r.split("."),a=o.replace(/\B(?=(\d{3})+(?!\d))/g,i);return s?`${a}${e}${s}`:a}const dv=[[1e12,"T"],[1e9,"G"],[1e6,"M"],[1e3,"k"]];function Za(n){const t=Math.abs(n);if(t<1e3)return t===Math.floor(t)?jo(n,0,".",","):n.toPrecision(4).replace(/\.?0+$/,"");for(const[e,i]of dv)if(t>=e){const r=n/e;return(r===Math.floor(r)?String(r):r.toPrecision(4).replace(/\.?0+$/,""))+i}return String(n)}const pv=/\{([^}]+)\}/g;function Zt(n,t,e=!1){return n.replace(pv,(i,r)=>{const o=r.indexOf(":");let s=r,a=null;o!==-1&&(s=r.slice(0,o),a=r.slice(o+1));const l=s.trim().split(".");let c=t;for(const f of l){if(c==null)return"";c=c[f]}if(c==null)return"";let h;if(a){const f=typeof c=="number"?c:parseFloat(String(c));if(isNaN(f))h=String(c);else try{h=fr(a)(f)}catch{h=String(c)}}else h=String(c);return e?jn(h):h})}const gv=/[&<>"']/g,mv={"&":"&","<":"<",">":">",'"':""","'":"'"};function jn(n){return String(n).replace(gv,t=>mv[t])}const yv=/^[=+\-@\t\r]/,xv=/^-?\d+(?:[.,]\d+)?$/;function Zo(n,t=","){let e=n==null?"":String(n);return yv.test(e)&&!xv.test(e)&&(e="'"+e),(e.includes(t)||e.includes('"')||e.includes(`
|
|
2
|
-
`)||e.includes("\r"))&&(e='"'+e.replace(/"/g,'""')+'"'),e}const bv=/^(#[0-9a-f]{3,8}|(rgb|rgba|hsl|hsla)\([\d.,%\s/]+\)|[a-z]+)$/i;function Qu(n,t="#333"){const e=String(n).trim();return bv.test(e)?e:t}const vv=/<\/?[^>]+(>|$)/g,wv=/<br\s*\/?>/gi;function fe(n){return n.replace(wv," ").replace(vv,"").trim()}function Ka(n,t){switch(n.type||"linear"){case"logarithmic":return new Mv(n,t);case"datetime":return new Av(n,t);case"category":return new tf(n,t);default:return new kv(n,t)}}class Ko{constructor(t,e){this.config=t,this.plotArea=e}autoText(){return Cn(this.config._backgroundColor)}getRange(){const t=this.config._inverted;if(this.config.isX){if(t){const s=this.plotArea.height;return this.config.reversed?[s,0]:[0,s]}const o=this.plotArea.width;return this.config.reversed?[o,0]:[0,o]}if(t){const o=this.plotArea.width;return this.config.reversed?[o,0]:[0,o]}const e=this.getPaneBand(),i=e.top,r=e.top+e.height;return this.config.reversed?[i,r]:[r,i]}getPaneBand(){const t=this.plotArea.height,e=o=>{if(o==null)return null;if(typeof o=="number")return o;if(typeof o=="string"&&o.trim().endsWith("%"))return parseFloat(o)/100*t;const s=parseFloat(o);return Number.isFinite(s)?s:null},i=e(this.config.top)??0,r=e(this.config.height)??t-i;return{top:i,height:r}}createD3Axis(t){const e=this.config.isX,i=this.config.opposite,r=this.config._inverted;return e?r?i?zu(t):Ou(t):i?Na(t):Bu(t):r?i?Na(t):Bu(t):i?zu(t):Ou(t)}applyAxisStyles(t,e){var s,a,l,c,h,f,u,d,p;const i=this.config,r=i.tickLength??10,o=i.tickPosition||"outside";if(t.selectAll(".tick line").attr("stroke",i.tickColor||"#ccd6eb").attr("stroke-width",i.tickWidth??1),(r!==10||o==="inside")&&t.selectAll(".tick line").each(function(){const y=rt(this);if(i.isX){const g=i.opposite?-1:1;o==="inside"?y.attr("y1",0).attr("y2",-g*r):y.attr("y1",0).attr("y2",g*r)}else{const g=i.opposite?1:-1;o==="inside"?y.attr("x1",0).attr("x2",-g*r):y.attr("x1",0).attr("x2",g*r)}}),t.selectAll(".domain").attr("stroke",i.lineColor||"#ccd6eb").attr("stroke-width",i.lineWidth??1),((s=i.labels)==null?void 0:s.enabled)===!1)t.selectAll(".tick text").remove();else{const y=((a=i.labels)==null?void 0:a.style)||{};if(t.selectAll(".tick text").attr("fill",y.color||this.autoText()).style("font-size",y.fontSize||wt),((l=i.labels)==null?void 0:l.x)!==void 0||((c=i.labels)==null?void 0:c.y)!==void 0){const g=((h=i.labels)==null?void 0:h.x)??0,m=((f=i.labels)==null?void 0:f.y)??0;t.selectAll(".tick text").attr("dx",g).attr("dy",parseFloat(t.select(".tick text").attr("dy")||"0")+m)}if((u=i.labels)!=null&&u.step&&i.labels.step>1&&t.selectAll(".tick text").each(function(g,m){m%i.labels.step!==0&&rt(this).remove()}),i.showFirstLabel===!1){const g=t.selectAll(".tick text").nodes();g.length>0&&rt(g[0]).remove()}if(i.showLastLabel===!1){const g=t.selectAll(".tick text").nodes();g.length>0&&rt(g[g.length-1]).remove()}if((d=i.labels)!=null&&d.rotation)t.selectAll(".tick text").attr("transform",`rotate(${i.labels.rotation})`).style("text-anchor",i.labels.rotation<0?"end":"start");else if((i.isX?!i._inverted:i._inverted)&&((p=i.labels)!=null&&p.autoRotation))this.applyAutoRotation(t,i.labels.autoRotation,e);else if((i.isX?i._inverted:!i._inverted)&&!i.opposite&&Array.isArray(i.categories)&&i.categories.length>0){const g=i.tickLength??10;this.truncateSideLabels(t,e.x-g-4)}}i.visible===!1&&t.style("display","none")}truncateSideLabels(t,e){if(!(e>12))return;const i="…";t.selectAll(".tick text").each(function(){const r=this,o=r.textContent||"";if(!o)return;const s=r.getComputedTextLength();if(s<=e)return;let a=Math.max(1,Math.min(o.length,Math.ceil(o.length*e/s)));for(r.textContent=o.slice(0,a).replace(/\s+$/,"")+i;a>1&&r.getComputedTextLength()>e;)a--,r.textContent=o.slice(0,a).replace(/\s+$/,"")+i;const l=rt(r);l.select("title").remove(),l.append("title").text(o)})}applyAutoRotation(t,e,i){const r=t.selectAll(".tick text").nodes();if(r.length<2||!this.hasLabelOverlap(r))return;this.applyAutoStep(t,r);const o=r.filter(s=>s.style.display!=="none");if(this.hasLabelOverlap(o))for(const s of e.length>0?e:[-45]){r.forEach(a=>{a.style.display=""}),t.selectAll(".tick text").attr("transform",`rotate(${s})`).style("text-anchor",s<0?"end":"start");break}}hasLabelOverlap(t,e=!1){for(let i=1;i<t.length;i++)try{const r=t[i-1].getBoundingClientRect(),o=t[i].getBoundingClientRect(),s=e?-4:2;if(r.right+s>o.left&&r.left<o.right)if(e){if(r.bottom+s>o.top&&r.top<o.bottom)return!0}else return!0}catch{return!1}return!1}applyAutoStep(t,e){const i=e.length;for(let r=2;r<=i;r++){e.forEach((s,a)=>{rt(s).style("display",a%r===0?"":"none")});const o=e.filter((s,a)=>a%r===0);if(!this.hasLabelOverlap(o))return}}renderGridLines(t,e,i,r){const o=this.config.gridLineWidth;if(!o||o<=0)return;const s=r||(e.ticks?e.ticks():e.domain()),a=t.append("g").attr("class","katucharts-grid");this.config.alternateGridColor&&this.renderAlternateGridColor(a,s,e,i);const l=this.config.isX?!this.config._inverted:!!this.config._inverted;for(const c of s){const h=e(c);l?a.append("line").attr("x1",h).attr("x2",h).attr("y1",0).attr("y2",i.height).attr("stroke",this.config.gridLineColor||"#e6e6e6").attr("stroke-width",o).attr("stroke-dasharray",this.getDashArray(this.config.gridLineDashStyle)):a.append("line").attr("x1",0).attr("x2",i.width).attr("y1",h).attr("y2",h).attr("stroke",this.config.gridLineColor||"#e6e6e6").attr("stroke-width",o).attr("stroke-dasharray",this.getDashArray(this.config.gridLineDashStyle))}this.renderMinorGridLines(a,s,e,i)}renderAlternateGridColor(t,e,i,r){const o=this.config.alternateGridColor,s=this.config.isX?!this.config._inverted:!!this.config._inverted;for(let a=0;a<e.length-1;a+=2){const l=i(e[a]),c=i(e[a+1]);s?t.insert("rect",":first-child").attr("x",Math.min(l,c)).attr("y",0).attr("width",Math.abs(c-l)).attr("height",r.height).attr("fill",o):t.insert("rect",":first-child").attr("x",0).attr("y",Math.min(l,c)).attr("width",r.width).attr("height",Math.abs(c-l)).attr("fill",o)}}renderMinorGridLines(t,e,i,r){const o=this.config.minorTickInterval,s=this.config.minorGridLineWidth??1,a=this.config.minorGridLineColor||"#f2f2f2";if(!o||o==="auto"||s<=0||typeof o!="number"||e.length<2)return;const l=i.domain?i.domain():[0,1],c=typeof l[0]=="number"?l[0]:0,h=typeof l[l.length-1]=="number"?l[l.length-1]:1,f=new Set(e.map(d=>Number(d))),u=this.config.isX?!this.config._inverted:!!this.config._inverted;for(let d=c;d<=h;d+=o){if(f.has(d))continue;const p=i(d);u?t.append("line").attr("x1",p).attr("x2",p).attr("y1",0).attr("y2",r.height).attr("stroke",a).attr("stroke-width",s).attr("class","katucharts-minor-grid"):t.append("line").attr("x1",0).attr("x2",r.width).attr("y1",p).attr("y2",p).attr("stroke",a).attr("stroke-width",s).attr("class","katucharts-minor-grid")}}renderPlotBands(t,e,i){var r,o,s,a;if((r=this.config.plotBands)!=null&&r.length)for(const l of this.config.plotBands){const c=e(l.from??0),h=e(l.to??0);let f,u,d,p;(this.config.isX?!this.config._inverted:!!this.config._inverted)?(f=Math.min(c,h),u=0,d=Math.abs(h-c),p=i.height):(f=0,u=Math.min(c,h),d=i.width,p=Math.abs(h-c));const g=t.append("rect").attr("x",f).attr("y",u).attr("width",d).attr("height",p).attr("fill",l.color||"rgba(0,0,0,0.05)").attr("class",`katucharts-plot-band${l.className?" "+l.className:""}`);if(l.borderColor&&g.attr("stroke",l.borderColor).attr("stroke-width",l.borderWidth??0),l.borderRadius&&g.attr("rx",l.borderRadius),l.zIndex!==void 0&&g.style("z-index",l.zIndex),l.events&&(l.events.click&&g.on("click",m=>l.events.click.call(l,m)),l.events.mouseover&&g.on("mouseover",m=>l.events.mouseover.call(l,m)),l.events.mouseout&&g.on("mouseout",m=>l.events.mouseout.call(l,m)),l.events.mousemove&&g.on("mousemove",m=>l.events.mousemove.call(l,m)),g.style("cursor","pointer")),(o=l.label)!=null&&o.text){const m=l.label,x=m.align||"center",v=m.verticalAlign||"top";let b=x==="left"?f+4:x==="right"?f+d-4:f+d/2,k=v==="top"?u+12:v==="bottom"?u+p-4:u+p/2;b+=m.x??0,k+=m.y??0;const M=x==="left"?"start":x==="right"?"end":"middle";t.append("text").attr("x",b).attr("y",k).attr("text-anchor",M).attr("font-size",((s=m.style)==null?void 0:s.fontSize)||wt).attr("fill",((a=m.style)==null?void 0:a.color)||this.autoText()).attr("transform",m.rotation?`rotate(${m.rotation},${b},${k})`:"").style("pointer-events","none").attr("class","katucharts-plot-band-label").text(m.text||"")}}}renderPlotLines(t,e,i){var r,o,s,a;if((r=this.config.plotLines)!=null&&r.length)for(const l of this.config.plotLines){const c=e(l.value??0),h=this.config.isX?!this.config._inverted:!!this.config._inverted;let f;if(h?f=t.append("line").attr("x1",c).attr("x2",c).attr("y1",0).attr("y2",i.height).attr("stroke",l.color||"#999").attr("stroke-width",l.width||1).attr("stroke-dasharray",this.getDashArray(l.dashStyle)).attr("class",`katucharts-plot-line${l.className?" "+l.className:""}`):f=t.append("line").attr("x1",0).attr("x2",i.width).attr("y1",c).attr("y2",c).attr("stroke",l.color||"#999").attr("stroke-width",l.width||1).attr("stroke-dasharray",this.getDashArray(l.dashStyle)).attr("class",`katucharts-plot-line${l.className?" "+l.className:""}`),l.zIndex!==void 0&&f.style("z-index",l.zIndex),l.events&&(f.style("pointer-events","stroke"),l.events.click&&f.on("click",u=>l.events.click.call(l,u)),l.events.mouseover&&f.on("mouseover",u=>l.events.mouseover.call(l,u)),l.events.mouseout&&f.on("mouseout",u=>l.events.mouseout.call(l,u)),l.events.mousemove&&f.on("mousemove",u=>l.events.mousemove.call(l,u)),f.style("cursor","pointer")),(o=l.label)!=null&&o.text){const u=l.label,d=u.align||(this.config.isX?"left":"right"),p=u.verticalAlign||(this.config.isX?"top":"middle");let y,g;this.config.isX?(y=c+(u.x??4),g=p==="top"?u.y??12:p==="bottom"?i.height+(u.y??-4):i.height/2+(u.y??0)):(y=d==="left"?u.x??4:d==="right"?i.width+(u.x??-4):i.width/2+(u.x??0),g=c+(u.y??-6));const m=d==="left"?"start":d==="right"?"end":"middle";t.append("text").attr("x",y).attr("y",g).attr("text-anchor",m).attr("font-size",((s=u.style)==null?void 0:s.fontSize)||wt).attr("fill",((a=u.style)==null?void 0:a.color)||this.autoText()).attr("transform",u.rotation?`rotate(${u.rotation},${y},${g})`:"").style("pointer-events","none").attr("class","katucharts-plot-line-label").text(u.text||"")}}}applyAxisBreaks(t){var a;if(!((a=this.config.breaks)!=null&&a.length))return;const e=t.copy(),i=e.domain(),r=e.range(),o=Math.abs(i[1]-i[0]);let s=0;for(const l of this.config.breaks){const c=l.from??0,h=l.to??0;s+=Math.abs(h-c)}if(o>0&&s>0){const l=(o-s)/o,c=[r[0],r[0]+(r[1]-r[0])*l];t.range(c)}}renderTitle(t,e){var l,c,h,f,u,d,p;if(!((l=this.config.title)!=null&&l.text))return;const i=this.config.title,r=i.offset??0,o=i.margin??0,s=i.rotation;if(this.config.isX?!this.config._inverted:!!this.config._inverted){const y=((c=this.config.labels)==null?void 0:c.enabled)!==!1;let g=(y?45:33)+o+r;if(y&&t.selectAll(".tick text").nodes().length>0)try{const b=t.node().getBBox();g=Math.max(g,b.height+10+o+r)}catch{}const m=t.append("text").attr("class","katucharts-axis-title").attr("x",e.width/2).attr("y",g).attr("text-anchor","middle").attr("font-size",((h=i.style)==null?void 0:h.fontSize)||wt).attr("fill",((f=i.style)==null?void 0:f.color)||this.autoText()).text(i.text);s!==void 0&&m.attr("transform",`rotate(${s}, ${e.width/2}, ${g})`)}else{const y=((u=this.config.labels)==null?void 0:u.enabled)!==!1;let g=(this.config.opposite?e.width+45:-45)+r;if(y)try{const k=t.node().getBBox();this.config.opposite?g=Math.max(g,k.x+k.width+10+o+r):g=Math.min(g,k.x-10-o-r)}catch{}const m=this.getPaneBand(),x=m.top+m.height/2,v=s??-90;t.append("text").attr("class","katucharts-axis-title").attr("x",g).attr("y",x).attr("text-anchor","middle").attr("transform",`rotate(${v}, ${g}, ${x})`).attr("font-size",((d=i.style)==null?void 0:d.fontSize)||wt).attr("fill",((p=i.style)==null?void 0:p.color)||this.autoText()).text(i.text)}}animateAxis(t,e,i){var l;this.plotArea=e;const r=this.scale;if(!r)return;r.range(this.getRange()),this.applyAxisBreaks(r);const o=this.createD3Axis(r);if(this.config.tickPositions)o.tickValues(this.config.tickPositions);else if(this.config.tickInterval){const c=r.domain(),h=[];for(let f=c[0];f<=c[1];f+=this.config.tickInterval)h.push(f);o.tickValues(h)}else if(r.domain&&typeof r.ticks=="function"){const c=this.config._inverted,h=this.config.isX?c?e.height:e.width:c?e.width:e.height;this.config.isX;const f=this.config.tickPixelInterval??72,u=Math.min(20,Math.max(2,Math.round(h/f))),d=r.domain();if(this.computeNiceTicks){const p=this.computeNiceTicks(d[0],d[1],u);o.tickValues(p)}else if(this.computeLogTicks){const p=this.computeLogTicks(d,e);o.tickValues(p)}}if((l=this.config.labels)!=null&&l.formatter){const c=this.config.labels.formatter;o.tickFormat(h=>c.call({value:h,axis:this}))}else this.linearTickFormat?o.tickFormat(c=>this.linearTickFormat(c,o)):o.tickFormat(c=>Za(c));const s=`katucharts-axis-${this.config.isX?"x":"y"}`,a=t.select(`.${s}`);a.empty()||(a.transition().duration(i).call(o),this.animateGridLines(t,r,e,i))}animateGridLines(t,e,i,r){const o=this.config.gridLineWidth;!o||o<=0||(t.selectAll(".katucharts-grid").remove(),this.renderGridLines(t,e,i))}getDashArray(t){return{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t||"Solid"]||"none"}destroy(){}}class kv extends Ko{constructor(t,e){super(t,e),this.scale=ve().range(this.getRange()).domain([0,1])}updateDomain(t){let{min:e,max:i}=t;const r=this.config.min!==void 0&&this.config.min!==null,o=this.config.max!==void 0&&this.config.max!==null;r&&(e=this.config.min),o&&(i=this.config.max),this.config.softMin!==void 0&&e>this.config.softMin&&(e=this.config.softMin),this.config.softMax!==void 0&&i<this.config.softMax&&(i=this.config.softMax),this.config.floor!==void 0&&(e=Math.max(e,this.config.floor)),this.config.ceiling!==void 0&&(i=Math.min(i,this.config.ceiling));const s=this.config.isX?this.config.maxPadding||.01:this.config.maxPadding||.05,a=i-e||1,l=e,c=(this.config.minPadding??s)+(t.extraMinPadding??0),h=s+(t.extraMaxPadding??0);r||(e-=a*c),o||(i+=a*h);const f=(t.extraMinPadding??0)>0;if(l>=0&&e<0&&!f&&(e=0),this.config.floor!==void 0&&(e=Math.max(e,this.config.floor)),this.config.ceiling!==void 0&&(i=Math.min(i,this.config.ceiling)),this.config.minRange!==void 0&&i-e<this.config.minRange){const p=(e+i)/2;e=p-this.config.minRange/2,i=p+this.config.minRange/2}if(this.config.maxRange!==void 0&&i-e>this.config.maxRange&&(i=e+this.config.maxRange),this.scale.domain([e,i]).range(this.getRange()),!(r&&o)&&(this.config.startOnTick||this.config.endOnTick||!this.config.isX&&this.config.startOnTick!==!1&&this.config.endOnTick!==!1)&&(this.scale.nice(),r||o)){const[p,y]=this.scale.domain();this.scale.domain([r?this.config.min:p,o?this.config.max:y])}}render(t,e){var o;this.plotArea=e,this.scale.range(this.getRange()),this.applyAxisBreaks(this.scale);const i=this.createD3Axis(this.scale);if(this.config.tickPositions)i.tickValues(this.config.tickPositions);else if(this.config.tickInterval){const s=this.scale.domain(),a=[];for(let l=s[0];l<=s[1];l+=this.config.tickInterval)a.push(l);i.tickValues(a)}else if(this.config.tickAmount)i.ticks(this.config.tickAmount);else{const s=this.config._inverted,a=this.config.isX?s?e.height:e.width:s?e.width:e.height;this.config.isX;const l=this.config.tickPixelInterval??72,c=Math.min(20,Math.max(2,Math.round(a/l))),h=this.scale.domain(),f=this.computeNiceTicks(h[0],h[1],c),u=this.config.max!==void 0&&this.config.max!==null,d=this.config.min!==void 0&&this.config.min!==null,p=!this.config.isX&&this.config.endOnTick!==!1;if(f.length>0&&p&&!u){const y=f.length>1?f[1]-f[0]:f[0]||1;let g=f[f.length-1];g<h[1]&&(f.push(g+y),g=f[f.length-1]);let m=f[0];m>h[0]&&(f.unshift(m-y),m=f[0]);const x=u?h[1]:Math.max(h[1],g),v=d?h[0]:Math.min(h[0],m);this.scale.domain([v,x])}i.tickValues(f)}if((o=this.config.labels)!=null&&o.formatter){const s=this.config.labels.formatter;i.tickFormat(a=>s.call({value:a,axis:this}))}else i.tickFormat(s=>this.linearTickFormat(s,i));const r=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",this.getTransform(e));this.renderGridLines(t,this.scale,e),this.renderPlotBands(t,this.scale,e),this.renderPlotLines(t,this.scale,e),r.call(i),this.applyAxisStyles(r,e),this.renderTitle(r,e),this.renderStackLabels(t,this.scale,e)}renderStackLabels(t,e,i){var r;!((r=this.config.stackLabels)!=null&&r.enabled)||this.config.isX}computeNiceTicks(t,e,i){const r=e-t;if(r<=0)return[t];const o=r/i,s=Math.pow(10,Math.floor(Math.log10(o))),a=o/s;let l;a<=Math.SQRT2?l=s:a<=Math.sqrt(2*2.5)?l=2*s:a<=Math.sqrt(2.5*5)?l=2.5*s:a<=Math.sqrt(5*10)?l=5*s:l=10*s;const c=l.toString(),h=c.includes(".")?c.split(".")[1].length:0,f=Math.pow(10,h),u=g=>Math.round(g*f)/f,d=u(Math.ceil(t/l)*l),p=[],y=l*1e-6;for(let g=0;g<i+3;g++){const m=u(d+g*l);if(m>e+y)break;p.push(m)}return p}getPixelForValue(t){return this.scale(t)}getValueForPixel(t){return this.scale.invert(t)}linearTickFormat(t,e){var r;const i=(r=e.tickValues)==null?void 0:r.call(e);if(i&&i.length>=2){const o=Math.abs(i[1]-i[0]),s=parseFloat(o.toPrecision(6));if(s<1e3){const a=s.toString(),l=a.includes(".")?a.split(".")[1].length:0,c=jo(t,l);return l===0?c:c.replace(/(\.\d*?)0+$/,"$1").replace(/\.$/,"")}}return Za(t)}getTransform(t){const e=this.config._inverted;return this.config.isX?e?this.config.opposite?`translate(${t.width},0)`:"":this.config.opposite?"":`translate(0,${t.height})`:e?this.config.opposite?"":`translate(0,${t.height})`:this.config.opposite?`translate(${t.width},0)`:""}}class Mv extends Ko{constructor(t,e){super(t,e),this.scale=Po().range(this.getRange()).domain([1,10])}updateDomain(t){let{min:e,max:i}=t;e=Math.max(e,.001),this.config.min!==void 0&&this.config.min!==null&&(e=Math.max(this.config.min,.001)),this.config.max!==void 0&&this.config.max!==null&&(i=this.config.max);const r=Math.log10(Math.max(e,1e-10)),o=Math.log10(Math.max(i,1e-10)),s=Math.abs(o-r)||1,a=this.config.isX?this.config.minPadding??.01:this.config.minPadding??.05;(this.config.min===void 0||this.config.min===null)&&(e=Math.pow(10,r-s*a)),(this.config.max===void 0||this.config.max===null)&&(i=Math.pow(10,o+s*a)),this.config.startOnTick&&(e=Math.pow(10,Math.floor(Math.log10(Math.max(e,1e-10))))),this.config.endOnTick&&(i=Math.pow(10,Math.ceil(Math.log10(Math.max(i,1e-10))))),this.scale.domain([e,i]).range(this.getRange())}computeLogTicks(){const t=this.scale.domain(),e=Math.log10(Math.max(t[0],1e-10)),i=Math.log10(Math.max(t[1],1e-10));if(this.config.tickPositions)return this.config.tickPositions;let r;if(this.config.tickInterval)r=this.config.tickInterval;else{r=1;const l=Math.abs(i-e);if(l>12){const c=this.config.isX?this.plotArea.width:this.plotArea.height,f=Math.max(2,Math.floor(c/20));r=Math.max(1,Math.ceil(l/f))}}const o=Math.floor(e),s=Math.ceil(i),a=[];for(let l=o;l<=s;l+=r){const c=Math.pow(10,l);c>=t[0]*.999&&c<=t[1]*1.001&&a.push(c)}return a.length===0?a.push(t[0],t[1]):a.length===1&&(a[0]>t[0]*1.5&&a.unshift(t[0]),a[0]<t[1]/1.5&&a.push(t[1])),a}render(t,e){var a;this.plotArea=e,this.scale.range(this.getRange());const i=this.createD3Axis(this.scale),r=this.computeLogTicks();if(i.tickValues(r),(a=this.config.labels)!=null&&a.formatter){const l=this.config.labels.formatter;i.tickFormat(c=>l.call({value:c,axis:this}))}else i.tickFormat(l=>Za(l));const o=this.config.isX?!this.config._inverted:!!this.config._inverted,s=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",o?`translate(0,${e.height})`:"");this.renderGridLines(t,this.scale,e,r),s.call(i),this.applyAxisStyles(s,e),this.renderTitle(s,e)}getPixelForValue(t){return this.scale(Math.max(t,.001))}getValueForPixel(t){return this.scale.invert(t)}}class Av extends Ko{constructor(t,e){super(t,e);const i=qa()?H1:W1;this.scale=i().range(this.getRange()).domain([new Date,new Date])}updateDomain(t){const e=this.config.min??t.min,i=this.config.max??t.max;this.scale.domain([new Date(e),new Date(i)]).range(this.getRange())}render(t,e){var s;this.plotArea=e,this.scale.range(this.getRange());const i=this.createD3Axis(this.scale);if((s=this.config.labels)!=null&&s.formatter){const a=this.config.labels.formatter;i.tickFormat(l=>a.call({value:l.getTime(),axis:this}))}else if(this.config.dateTimeLabelFormats){const a=this.config.dateTimeLabelFormats,l=qa()?Do:Ro;i.tickFormat(c=>{const h=c,f=this.pickDateFormat(h,a);return l(f)(h)})}const r=this.config.isX?!this.config._inverted:!!this.config._inverted,o=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",r?`translate(0,${e.height})`:"");this.renderGridLines(t,this.scale,e),o.call(i),this.applyAxisStyles(o,e),this.renderTitle(o,e)}pickDateFormat(t,e){const i=qa(),r=i?t.getUTCMilliseconds():t.getMilliseconds(),o=i?t.getUTCSeconds():t.getSeconds(),s=i?t.getUTCMinutes():t.getMinutes(),a=i?t.getUTCHours():t.getHours(),l=i?t.getUTCDate():t.getDate(),c=i?t.getUTCMonth():t.getMonth();return r!==0&&e.millisecond?e.millisecond:o!==0&&e.second?e.second:s!==0&&e.minute?e.minute:a!==0&&e.hour?e.hour:l!==1&&e.day?e.day:c!==0&&e.month?e.month:e.year?e.year:e.day||"%b %d"}getPixelForValue(t){return this.scale(new Date(t))}getValueForPixel(t){return this.scale.invert(t).getTime()}}class tf extends Ko{constructor(t,e){super(t,e),this.scale=Zh().range(this.getRange()).paddingInner(.3).paddingOuter(.05),t.categories&&this.scale.domain(t.categories)}updateDomain(t){Array.isArray(t)&&this.scale.domain(t).range(this.getRange())}render(t,e){this.plotArea=e;const i=this.getRange();if(isNaN(i[0])||isNaN(i[1])||i[0]===i[1])return;this.scale.range(i);const r=this.createD3Axis(this.scale),o=this.config.isX?!this.config._inverted:!!this.config._inverted,s=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",o?`translate(0,${e.height})`:"");this.renderGridLines(t,this.scale,e),s.call(r),this.applyAxisStyles(s,e),this.renderTitle(s,e),this.applyAutoStepIfNeeded(s)}applyAutoStepIfNeeded(t){var s,a,l;if(((s=this.config.labels)==null?void 0:s.enabled)===!1)return;const e=this.scale.bandwidth();if(e<=0)return;const i=ye(((l=(a=this.config.labels)==null?void 0:a.style)==null?void 0:l.fontSize)||wt);if(i<=e)return;const o=Math.min(i,Math.max(5,Math.round(e*1.1)));t.selectAll(".tick text").style("font-size",`${o}px`)}getPixelForValue(t){const e=this.scale.domain();let i;if(typeof t=="number"){const r=Math.round(t);if(r>=0&&r<e.length){i=e[r];const o=(this.scale(i)??0)+this.scale.bandwidth()/2,s=(t-r)*this.scale.bandwidth();return o+s}i=String(t)}else i=String(t);return(this.scale(i)??0)+this.scale.bandwidth()/2}getBandwidth(){return this.scale.bandwidth()}getValueForPixel(t){const e=this.scale.domain(),i=this.scale.step(),r=Math.floor(t/i);return e[Math.min(r,e.length-1)]}}class Jo{static render(t,e,i,r,o,s){if(!i.enabled)return;const a=t.append("g").attr("class","katucharts-data-labels");i.zIndex!==void 0&&a.style("z-index",i.zIndex),e.forEach((l,c)=>{var p,y,g,m,x,v;if(l.y===null||l.y===void 0)return;if(i.filter){const b=i.filter.property,k=i.filter.operator||">",M=i.filter.value??0,C=b?l[b]:l.y;if(!Jo.matchesFilter(C,k,M))return}let h;i.formatter?h=i.formatter.call({point:{...l,index:c},series:{name:s},x:l.x,y:l.y,percentage:l.percentage}):i.format?h=fe(Zt(i.format,{point:l,series:{name:s},x:l.x,y:l.y})):h=String(l.y);const f=r.getPixelForValue(l.x??c)+(i.x??0),u=o.getPixelForValue(l.y)+(i.y??-8),d=a.append("text").attr("x",f).attr("y",u).attr("text-anchor",i.align||"center").attr("dominant-baseline","auto").attr("font-size",((p=i.style)==null?void 0:p.fontSize)||wt).attr("fill",i.color||((y=i.style)==null?void 0:y.color)||me).attr("font-weight",((g=i.style)==null?void 0:g.fontWeight)||"normal").text(h);if(i.className&&d.attr("class",i.className),i.rotation&&d.attr("transform",`rotate(${i.rotation},${f},${u})`),i.shadow&&d.attr("filter","drop-shadow(1px 1px 2px rgba(0,0,0,0.3))"),(m=i.textPath)!=null&&m.enabled){const b=i.textPath.attributes||{};d.selectAll("*").remove();const k=d.append("textPath");for(const[M,C]of Object.entries(b))k.attr(M,C);k.text(h)}if(i.backgroundColor){const b=(v=(x=d.node())==null?void 0:x.getBBox)==null?void 0:v.call(x);if(b){const k=i.padding??2,M=a.insert("rect","text").attr("x",b.x-k).attr("y",b.y-k).attr("width",b.width+k*2).attr("height",b.height+k*2).attr("fill",i.backgroundColor).attr("rx",i.borderRadius??0).attr("stroke",i.borderColor||"none").attr("stroke-width",i.borderWidth??0);i.shadow&&M.attr("filter","drop-shadow(1px 1px 2px rgba(0,0,0,0.3))")}}}),i.defer&&(a.style("opacity","0"),a.transition().delay(1e3).duration(200).style("opacity","1"))}static matchesFilter(t,e,i){const r=Number(t);if(isNaN(r))return!1;switch(e){case">":return r>i;case"<":return r<i;case">=":return r>=i;case"<=":return r<=i;case"==":return r===i;case"!=":return r!==i;default:return!0}}}function Sv(n){if(typeof n=="string"){const t=document.getElementById(n);if(!t)throw new Error(`KatuCharts: container element "${n}" not found`);return t}return n}function ef(n,t=.5){const e=getComputedStyle(n),i=parseFloat(e.paddingLeft)||0,r=parseFloat(e.paddingRight)||0,o=parseFloat(e.paddingTop)||0,s=parseFloat(e.paddingBottom)||0,a=n.getBoundingClientRect(),l=a.width-i-r||n.clientWidth-i-r||600,c=a.height-o-s||n.clientHeight-o-s,h=c>0?c:Math.round(l*t);return{width:l,height:h}}function Ja(n,t){const e=document.createElement("div");return n&&(e.className=n),t&&t.appendChild(e),e}function nf(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function Qa(n,t){let e=0,i=null;return function(...r){const o=Date.now(),s=t-(o-e);s<=0?(i&&(clearTimeout(i),i=null),e=o,n.apply(this,r)):i||(i=setTimeout(()=>{e=Date.now(),i=null,n.apply(this,r)},s))}}function _v(n,t){let e=null;return function(...i){e&&clearTimeout(e),e=setTimeout(()=>{n.apply(this,i)},t)}}const Yr=class Yr{constructor(t,e,i,r){if(this.element=null,this.splitElements=[],this.hideTimeout=null,this.categories=null,this.isDatetime=!1,this.sharedPoints=[],this.sharedProvider=null,this.lastMouseEvent=null,this.boundHandlers=[],this.config=t,this.container=t.outside?document.body:e,this.plotArea=i,t.enabled!==!1){if(r.on("point:mouseover",o=>this.show(o)),r.on("point:mouseout",o=>{var s,a,l;if(this.config.shared&&(o!=null&&o.series)){const c=((a=(s=o.series)==null?void 0:s.config)==null?void 0:a.name)??((l=o.series)==null?void 0:l.name)??"";this.sharedPoints=this.sharedPoints.filter(h=>h.series.name!==c)}this.scheduleHide()}),t.followPointer){const o=Qa(s=>{this.lastMouseEvent=s,this.element&&this.element.style.display!=="none"&&this.positionAtMouse(s)},16);e.addEventListener("mousemove",o),this.boundHandlers.push({el:e,type:"mousemove",fn:o})}if(t.stickOnContact){const o=Qa(s=>{if(this.element&&this.element.style.display!=="none"){const a=this.element.getBoundingClientRect();s.clientX>=a.left&&s.clientX<=a.right&&s.clientY>=a.top&&s.clientY<=a.bottom&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null)}},16);e.addEventListener("mousemove",o),this.boundHandlers.push({el:e,type:"mousemove",fn:o})}if(t.followTouchMove!==!1){const o=Qa(s=>{if(this.element&&this.element.style.display!=="none"&&s.touches.length===1){const a=s.touches[0],l=e.getBoundingClientRect(),c=this.config.distance??16;let h=a.clientX-l.left+c,f=a.clientY-l.top-10;const u=this.element.offsetWidth||120;h+u>l.width&&(h=a.clientX-l.left-u-c),f<0&&(f=5),this.element.style.left=`${h}px`,this.element.style.top=`${f}px`}},16);e.addEventListener("touchmove",o,{passive:!0}),this.boundHandlers.push({el:e,type:"touchmove",fn:o})}}}show(t){var r,o,s,a,l,c,h;if(this.config.enabled===!1)return;this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null);const i={point:t.index!==void 0?{...t.point,index:t.index}:t.point,plotX:t.plotX,plotY:t.plotY,series:{name:((o=(r=t.series)==null?void 0:r.config)==null?void 0:o.name)??((s=t.series)==null?void 0:s.name)??"",color:((l=(a=t.series)==null?void 0:a.getColor)==null?void 0:l.call(a))??((c=t.series)==null?void 0:c.color)??"#333",config:(h=t.series)==null?void 0:h.config}};if(this.config.shared){const f=i.point.x??i.plotX;if(this.sharedProvider){const u=this.sharedProvider(f);this.sharedPoints=u.length>0?u:[i]}else{this.sharedPoints.length>0&&(this.sharedPoints[0].point.x??this.sharedPoints[0].plotX)!==f&&(this.sharedPoints=[]);const d=this.sharedPoints.findIndex(p=>p.series.name===i.series.name);d>=0?this.sharedPoints[d]=i:this.sharedPoints.push(i)}}if(this.config.split){this.showSplit(i);return}if(this.element||(this.element=this.createElement()),this.config.stickOnContact&&(this.element.style.pointerEvents="auto"),this.config.borderColor===void 0){const f=i.point.color||i.series.color||"#333";this.element.style.borderColor=f}this.config.shared&&this.sharedPoints.length>0?this.element.innerHTML=this.formatSharedContent(this.sharedPoints):this.element.innerHTML=this.formatContent(i),this.config.followPointer&&this.lastMouseEvent?this.positionAtMouse(this.lastMouseEvent):this.position(i),this.element.style.display="block",this.config.animation!==!1?this.element.style.opacity="1":(this.element.style.transition="none",this.element.style.opacity="1")}hide(){this.element&&(this.element.style.opacity="0",this.element.style.display="none"),this.hideSplitElements(),this.sharedPoints=[]}scheduleHide(){const t=this.config.hideDelay??500;this.hideTimeout=setTimeout(()=>this.hide(),t)}showSplit(t){this.hideSplitElements();const e=this.formatContent(t);if(!e)return;const i=this.createSplitElement(t.series.color||"#333");i.innerHTML=e;const r=this.config.distance??16,o=this.plotArea,s=o.x+t.plotX+r,a=o.y+t.plotY;i.style.left=`${s}px`,i.style.top=`${a}px`,i.style.display="block",i.style.opacity="1",this.splitElements.push(i)}hideSplitElements(){for(const t of this.splitElements)nf(t);this.splitElements=[]}createSplitElement(t){var s,a;const e=Ja("katucharts-tooltip-split",this.container),i=this.config.backgroundColor||"rgba(247,247,247,0.85)",r=this.config.borderRadius??3,o=this.config.padding??8;return Object.assign(e.style,{position:"absolute",pointerEvents:"none",zIndex:String(this.config.zIndex??10),backgroundColor:i,border:`${this.config.borderWidth??1}px solid ${t}`,borderRadius:`${r}px`,padding:`${o}px`,fontSize:((s=this.config.style)==null?void 0:s.fontSize)||"12px",color:((a=this.config.style)==null?void 0:a.color)||"#333333",boxShadow:this.config.shadow!==!1?"2px 2px 6px rgba(0,0,0,0.15)":"none",transition:this.config.animation!==!1?"opacity 0.15s":"none",whiteSpace:"nowrap",display:"none"}),e}createElement(){var a,l;const t=Ja(`katucharts-tooltip${this.config.className?" "+this.config.className:""}`,this.container),e=this.config.backgroundColor||"rgba(247,247,247,0.85)",i=this.config.borderRadius??3,r=this.config.padding??8,o=this.config.shape||"callout";let s=`${i}px`;return o==="circle"&&(s="50%"),Object.assign(t.style,{position:this.config.outside?"fixed":"absolute",pointerEvents:this.config.stickOnContact?"auto":"none",zIndex:String(this.config.zIndex??10),backgroundColor:e,border:`${this.config.borderWidth??1}px solid ${this.config.borderColor||"#ccc"}`,borderRadius:s,padding:`${r}px`,fontSize:((a=this.config.style)==null?void 0:a.fontSize)||"12px",color:((l=this.config.style)==null?void 0:l.color)||"#333333",boxShadow:this.config.shadow!==!1?"2px 2px 6px rgba(0,0,0,0.15)":"none",transition:this.config.animation!==!1?"opacity 0.15s":"none",whiteSpace:"nowrap",display:"none"}),t}formatValue(t){if(t==null)return"";let e;this.config.valueDecimals!==void 0?e=t.toFixed(this.config.valueDecimals):e=String(t);const i=this.config.valuePrefix||"",r=this.config.valueSuffix||"";return`${i}${e}${r}`}resolveKey(t){let e=t.point.name??t.point.x??"";return this.categories&&typeof t.point.x=="number"&&this.categories[t.point.x]&&(e=this.categories[t.point.x]),e}getPointCategory(t){return t.category!==void 0?t.category:this.categories&&typeof t.x=="number"&&this.categories[t.x]!==void 0?this.categories[t.x]:t.name}buildFormatterPoint(t,e={}){const i=this.resolveKey(t),r=this.getPointCategory(t.point);return{...t.point,...e,key:i,category:r,color:t.point.color||t.series.color||"#333",series:{name:t.series.name||"",color:t.series.color||"#333"}}}buildFormatterContext(t,e={}){const i=this.resolveKey(t);return{point:this.buildFormatterPoint(t),series:t.series,x:t.point.x,y:t.point.y,percentage:t.point.percentage,total:t.point.total,key:i,color:t.point.color||t.series.color,...e}}formatContent(t){var k;const e=(k=t.series.config)==null?void 0:k.tooltip;if(t.point.y===null||t.point.y===void 0){const M=(e==null?void 0:e.nullFormatter)??this.config.nullFormatter,C=(e==null?void 0:e.nullFormat)??this.config.nullFormat;if(M)return M.call({point:t.point,series:t.series});if(C)return C}if(this.config.formatter){const M=this.config.formatter.call(this.buildFormatterContext(t));return M===!1?"":M}const i=this.resolveKey(t),r=t.point.name??(this.categories&&typeof t.point.x=="number"?this.categories[t.point.x]:void 0)??i,o=(e==null?void 0:e.valueDecimals)??this.config.valueDecimals,s=(e==null?void 0:e.valuePrefix)??this.config.valuePrefix??"",a=(e==null?void 0:e.valueSuffix)??this.config.valueSuffix??"",l=this.formatValueWith(t.point.y,o,s,a);let c=r;const h=(e==null?void 0:e.xDateFormat)??this.config.xDateFormat??(this.isDatetime?Yr.DEFAULT_DATE_FORMAT:void 0);h&&typeof t.point.x=="number"&&t.point.name===void 0&&(c=ja(h,t.point.x));const f={point:this.buildFormatterPoint(t,{name:r,key:c,y:l||t.point.y}),series:{...t.series,name:t.series.name||""}},u=(e==null?void 0:e.pointFormatter)??this.config.pointFormatter;if(u){const M=u.call(this.buildFormatterContext(t)),C=(e==null?void 0:e.headerFormat)??this.config.headerFormat??"",L=(e==null?void 0:e.footerFormat)??this.config.footerFormat??"";return Zt(C,f,!0)+M+Zt(L,f,!0)}if(this.config.format)return Zt(this.config.format,f,!0);const d=(e==null?void 0:e.headerFormat)??this.config.headerFormat??"",p=(e==null?void 0:e.pointFormat)??this.config.pointFormat??"",y=(e==null?void 0:e.footerFormat)??this.config.footerFormat??"",g=Zt(d,f,!0),m=Zt(p,f,!0),x=Zt(y,f,!0);let v="";const b=!!((e==null?void 0:e.pointFormat)??this.config.pointFormat);if(t.point.total!==void 0&&!y&&!b){const M=t.point.total,C=Math.round(M*1e6)/1e6;v=`<span style="font-size:10px">Total: <b>${this.formatValue(C)}</b></span><br/>`}return g+m+x+v}formatValueWith(t,e,i,r){if(t==null)return"";let o;return e!==void 0?o=t.toFixed(e):o=String(t),`${i||""}${o}${r||""}`}formatSharedContent(t){var r,o,s,a;if(this.config.formatter){const l=t[0],c=l?this.resolveKey(l):"",h=this.config.formatter.call({point:l?this.buildFormatterPoint(l):void 0,series:l==null?void 0:l.series,x:l==null?void 0:l.point.x,y:l==null?void 0:l.point.y,key:c,color:(l==null?void 0:l.point.color)||(l==null?void 0:l.series.color),points:t.map(f=>({point:this.buildFormatterPoint(f),series:f.series,x:f.point.x,y:f.point.y,percentage:f.point.percentage,total:f.point.total,key:this.resolveKey(f),color:f.point.color||f.series.color}))});return h===!1?"":h}const e=[],i=this.formatXKey((r=t[0])==null?void 0:r.point,(s=(o=t[0])==null?void 0:o.series.config)==null?void 0:s.tooltip);i!==""&&e.push(`<span style="font-size:10px">${jn(String(i))}</span><br/>`);for(const l of t){const c=(a=l.series.config)==null?void 0:a.tooltip,h=c==null?void 0:c.pointFormat;if(h){const p={point:this.buildFormatterPoint(l),series:{...l.series,name:l.series.name||""}};e.push(Zt(h,p,!0));continue}const f=Qu(l.point.color||l.series.color||"#333"),u=jn(l.series.name||""),d=this.formatValue(l.point.y);e.push(`<span style="color:${f}">●</span> ${u}: <b>${d}</b><br/>`)}return e.join("")}position(t){var h,f;if(!this.element)return;if(this.config.positioner){const u=this.config.positioner(this.element.offsetWidth,this.element.offsetHeight,t);this.element.style.left=`${u.x}px`,this.element.style.top=`${u.y}px`;return}const e=this.config.distance??16,i=this.plotArea;let r=i.x+t.plotX+e,o=i.y+t.plotY-10;const s=this.element.offsetWidth||120,a=this.element.offsetHeight||50,l=this.config.outside?window.innerWidth:this.container.offsetWidth||((h=this.container.parentElement)==null?void 0:h.offsetWidth)||800,c=this.config.outside?window.innerHeight:this.container.offsetHeight||((f=this.container.parentElement)==null?void 0:f.offsetHeight)||600;r+s>l&&(r=i.x+t.plotX-s-e),o+a>c&&(o=c-a-5),o<0&&(o=5),r<0&&(r=5),this.element.style.left=`${r}px`,this.element.style.top=`${o}px`}positionAtMouse(t){if(!this.element)return;const e=this.config.distance??16;if(this.config.outside){let l=t.clientX+e,c=t.clientY-10;const h=this.element.offsetWidth||120,f=this.element.offsetHeight||50;l+h>window.innerWidth&&(l=t.clientX-h-e),c+f>window.innerHeight&&(c=window.innerHeight-f-5),c<0&&(c=5),l<0&&(l=5),this.element.style.left=`${l}px`,this.element.style.top=`${c}px`;return}const i=this.container.getBoundingClientRect();let r=t.clientX-i.left+e,o=t.clientY-i.top-10;const s=this.element.offsetWidth||120,a=this.element.offsetHeight||50;r+s>i.width&&(r=t.clientX-i.left-s-e),o+a>i.height&&(o=i.height-a-5),o<0&&(o=5),r<0&&(r=5),this.element.style.left=`${r}px`,this.element.style.top=`${o}px`}updatePlotArea(t){this.plotArea=t}setCategories(t){this.categories=t}setDatetimeAxis(t){this.isDatetime=t}setSharedPointsProvider(t){this.sharedProvider=t}formatXKey(t,e){if(!t)return"";if(this.categories&&typeof t.x=="number"&&this.categories[t.x]!==void 0)return this.categories[t.x];if(t.name!==void 0&&t.name!==null)return t.name;const i=t.x;if(typeof i=="number"){const r=(e==null?void 0:e.xDateFormat)??this.config.xDateFormat??(this.isDatetime?Yr.DEFAULT_DATE_FORMAT:void 0);if(r)return ja(r,i)}return i??""}destroy(){this.hideTimeout&&clearTimeout(this.hideTimeout);for(const{el:t,type:e,fn:i}of this.boundHandlers)t.removeEventListener(e,i);this.boundHandlers=[],nf(this.element),this.element=null,this.hideSplitElements()}};Yr.DEFAULT_DATE_FORMAT="%A, %b %e, %Y";let Qo=Yr;class ts{constructor(t,e,i){this.series=[],this.scrollOffset=0,this.contentHeight=0,this.visibleHeight=0,this.config=t,this.events=i,t.enabled!==!1&&(this.group=e.append("g").attr("class",`katucharts-legend${t.className?" "+t.className:""}`))}autoText(){return Cn(this.config._backgroundColor)}resolveLabel(t){var r;const e=t.getColor();let i;if(this.config.labelFormatter)i=this.config.labelFormatter.call({name:t.config.name||"",color:e,percentage:t.percentage,total:t.total,index:t.config.index,legendIndex:t.config.legendIndex,options:t.config});else if(this.config.labelFormat){const o={name:t.config.name||"",color:e,index:t.config.index,legendIndex:t.config.legendIndex};i=fe(Zt(this.config.labelFormat,o))}else i=t.config.name||`Series ${t.config.index+1}`;if(this.config.valueSuffix&&(i+=` ${this.config.valueSuffix}`),this.config.valueDecimals!==void 0&&this.config.valueDecimals>=0){const o=t.data.length>0?(r=t.data[t.data.length-1])==null?void 0:r.y:void 0;typeof o=="number"&&(i+=`: ${o.toFixed(this.config.valueDecimals)}`)}return i}computeAutoFontSize(t,e){return e||wt}estimateTextWidth(t,e){const i=ye(e);return t.length*i*.62}static computeGridLayout(t,e,i,r){if(r.itemWidth)return{columns:Math.max(2,Math.floor(i/r.itemWidth)),itemWidth:r.itemWidth};const o=ye(r.fontSize);let s=0;for(const c of e){const h=c.length*o*.62;h>s&&(s=h)}const a=r.symbolWidth+r.symbolPadding+s+8;return{columns:Math.max(1,Math.floor(i/a)),itemWidth:a}}render(t,e){var it,ft,dt,at;if(this.config.enabled===!1||!this.group)return;this.series=t,this.group.selectAll("*").remove();let i=t.filter(ot=>ot.config.showInLegend!==!1);if(i.length===0)return;this.config.reversed&&(i=[...i].reverse());const r=this.config.layout||"horizontal",o=this.config.padding??8,s=this.config.symbolWidth??12,a=this.config.symbolHeight??12,l=this.config.symbolPadding??5,c=this.config.symbolRadius??2,h=this.config.squareSymbol!==!1,f=this.config.itemDistance??20,u=this.config.itemStyle||{},d=this.config.itemMarginTop??0,p=this.config.itemMarginBottom??4,y=this.config.lineHeight??16,g=this.config.maxHeight,m=this.config.width,x=u.fontSize||wt,v=this.computeAutoFontSize(i.length,x);let b=o,k=o,M=0;if((it=this.config.title)!=null&&it.text){const ot=this.config.title.style||{};this.group.append("text").attr("class","katucharts-legend-title").attr("x",o).attr("y",o+10).attr("font-size",ot.fontSize||wt).attr("font-weight",ot.fontWeight||"bold").attr("fill",ot.color||"#333").text(this.config.title.text),k+=20}const C=k,L=m||e.width-o*2,_=y+p+d,$=[];for(const ot of i){const q=ot.getMultiLegendItems(),st=["line","spline","area","areaspline","radar","polar"].includes(ot.config._internalType);if(q)for(const kt of q)$.push({label:kt.label,color:kt.color,series:ot,isLine:st});else $.push({label:this.resolveLabel(ot),color:ot.getColor(),series:ot,isLine:st})}const I=$.map(ot=>ot.label);let E=0;if(r==="horizontal")for(let ot=0;ot<I.length;ot++){const q=s+l+this.estimateTextWidth(I[ot],v);E+=q+(ot<I.length-1?f:0)}const P=r==="horizontal"&&$.length>8&&E>L;let S=0,w=0;const A=6;let T=0,R=0;if(P){const ot=ts.computeGridLayout($.length,I,L,{symbolWidth:s,symbolPadding:l,fontSize:v,itemDistance:f,padding:o,itemWidth:this.config.itemWidth});S=ot.columns,w=ot.itemWidth,R=Math.ceil($.length/S)}const F=[];$.forEach((ot,q)=>{var ie;const st=ot.series,kt=ot.color,Et=ot.isLine,Mt=ot.label;let Ct,Gt;if(P){const Lt=q%S,Jt=Math.floor(q/S),Ce=S*w,je=Math.max(0,(L-Ce)/2);Ct=o+je+Lt*w,Gt=C+Jt*_+d}else if(r==="horizontal"){const Lt=this.config.itemWidth||this.estimateTextWidth(Mt,v),Jt=s+l+Lt;q>0&&b+Jt>L&&(b=o,k+=_),Ct=b,Gt=k+d,M=Math.max(M,b+Jt),b+=Jt+f}else{const Lt=this.config.itemWidth||this.estimateTextWidth(Mt,v),Jt=s+l+Lt;Ct=b,Gt=k+d,M=Math.max(M,b+Jt),b=o,k+=_}const Ht=this.group.append("g").attr("class","katucharts-legend-item").attr("transform",`translate(${Ct},${Gt})`).style("cursor","pointer"),Nt=st.getLegendSymbolShape();if(Et)Ht.append("line").attr("x1",0).attr("x2",s).attr("y1",6).attr("y2",6).attr("stroke",kt).attr("stroke-width",2),Ht.append("circle").attr("cx",s/2).attr("cy",6).attr("r",3).attr("fill",kt);else if(Nt){const Lt=s/2,Jt=a/2,Ce=Math.min(s,a)/2;Nt==="circle"?Ht.append("circle").attr("cx",Lt).attr("cy",Jt).attr("r",Ce).attr("fill",kt):Nt==="square"?Ht.append("rect").attr("x",0).attr("y",0).attr("width",s).attr("height",a).attr("fill",kt):Nt==="diamond"?Ht.append("path").attr("d",`M ${Lt} 0 L ${s} ${Jt} L ${Lt} ${a} L 0 ${Jt} Z`).attr("fill",kt):Nt==="triangle"?Ht.append("path").attr("d",`M ${Lt} 0 L ${s} ${a} L 0 ${a} Z`).attr("fill",kt):Nt==="triangle-down"?Ht.append("path").attr("d",`M 0 0 L ${s} 0 L ${Lt} ${a} Z`).attr("fill",kt):Nt==="cross"?Ht.append("path").attr("d",`M 0 ${Jt} L ${s} ${Jt} M ${Lt} 0 L ${Lt} ${a}`).attr("stroke",kt).attr("stroke-width",2):Ht.append("circle").attr("cx",Lt).attr("cy",Jt).attr("r",Ce).attr("fill",kt)}else h?Ht.append("rect").attr("x",0).attr("y",0).attr("width",s).attr("height",a).attr("rx",c).attr("fill",kt):Ht.append("circle").attr("cx",s/2).attr("cy",a/2).attr("r",Math.min(s,a)/2).attr("fill",kt);const Kt=Ht.append("text").attr("x",s+l).attr("y",10).attr("fill",st.visible?u.color||this.autoText():((ie=this.config.itemHiddenStyle)==null?void 0:ie.color)||"#cccccc").attr("font-size",v).attr("font-weight",u.fontWeight||"normal").text(Mt);this.config.rtl&&(Kt.attr("text-anchor","end").attr("x",-l),Ht.select("rect, circle, line").attr("transform",`translate(${-(s+l)}, 0)`)),Ht.on("click",()=>{var Ce,je,pe;const Lt=this.config.events;if(Lt!=null&&Lt.itemClick&&Lt.itemClick.call(st,new Event("legendItemClick"))===!1)return;st.toggleVisible(),Kt.attr("fill",st.visible?u.color||this.autoText():((Ce=this.config.itemHiddenStyle)==null?void 0:Ce.color)||"#cccccc"),((pe=(je=st.config.events)==null?void 0:je.legendItemClick)==null?void 0:pe.call(st,new Event("legendItemClick")))!==!1&&this.events.emit("legend:itemClick",st,q)}),Ht.on("mouseover",()=>{var Lt;Kt.attr("fill",((Lt=this.config.itemHoverStyle)==null?void 0:Lt.color)||this.autoText()),this.events.emit("legend:itemHover",st)}),Ht.on("mouseout",()=>{var Lt;Kt.attr("fill",st.visible?u.color||this.autoText():((Lt=this.config.itemHiddenStyle)==null?void 0:Lt.color)||"#cccccc"),this.events.emit("legend:itemLeave")}),F.push(Ht)});let D=0,z=0,B=0,H=0;const J=(ft=this.config.bubbleLegend)!=null&&ft.enabled?t.map(ot=>ot.getBubbleLegendInfo()).find(ot=>!!ot):void 0;if(J)if(r==="horizontal"&&((dt=this.config.bubbleLegend)==null?void 0:dt.layout)==="separate"){H=$.length?k+_:C;const q=this.renderBubbleLegend(J,0,H);D=q.width,z=q.height;const st=$.length?Math.max(0,M-o):0,kt=Math.max(st,D);B=o+Math.max(0,(kt-D)/2),this.group.select(".katucharts-bubble-legend").attr("transform",`translate(${B},0)`);const Et=Math.max(0,(kt-st)/2);if(Et>0)for(const Mt of F){const Ct=/translate\(\s*([-\d.]+)\s*,\s*([-\d.]+)\s*\)/.exec(Mt.attr("transform")||"");Ct&&Mt.attr("transform",`translate(${parseFloat(Ct[1])+Et},${Ct[2]})`)}}else{r==="horizontal"?(B=$.length?M+f:o,H=C):(B=o,H=$.length?k+6:C);const q=this.renderBubbleLegend(J,B,H);D=q.width,z=q.height}const X=(ot,q=!1)=>{const st=ot*A,kt=st+A;F.forEach((Et,Mt)=>{const Ct=Math.floor(Mt/S);if(Ct>=st&&Ct<kt){const Ht=Mt%S,Nt=S*w,Kt=Math.max(0,(L-Nt)/2),ie=o+Kt+Ht*w,Lt=C+(Ct-st)*_+(this.config.itemMarginTop??0);Et.style("display","block"),q?Et.style("opacity","0").attr("transform",`translate(${ie},${Lt})`).transition().duration(250).style("opacity","1"):Et.attr("transform",`translate(${ie},${Lt})`).style("opacity","1")}else q?Et.transition().duration(150).style("opacity","0").on("end",function(){Et.style("display","none")}):Et.style("display","none")})};let j,W;if(P){const ot=Math.min(R,A);if(j=L+o*2,W=C+ot*_+o,R>A){X(0);const q=Math.ceil(R/A),st=L-20,kt=C+Math.min(R,A)*_/2,Et=this.group.append("g").attr("class","katucharts-legend-nav"),Mt=22,Ct=Et.append("g").attr("transform",`translate(${st},${kt-Mt-2})`).style("cursor","pointer").style("opacity","0.3");Ct.append("rect").attr("x",0).attr("y",0).attr("width",Mt).attr("height",Mt).attr("rx",4).attr("fill","#f0f0f0").attr("stroke","#ccc").attr("stroke-width",1),Ct.append("path").attr("d",`M${Mt/2-5},${Mt/2+2} L${Mt/2},${Mt/2-4} L${Mt/2+5},${Mt/2+2}`).attr("fill","none").attr("stroke","#555").attr("stroke-width",2).attr("stroke-linecap","round"),Ct.on("mouseover",function(){Ct.select("rect").attr("fill","#e0e0e0")}),Ct.on("mouseout",function(){Ct.select("rect").attr("fill","#f0f0f0")});const Gt=Et.append("g").attr("transform",`translate(${st},${kt+2})`).style("cursor","pointer");Gt.append("rect").attr("x",0).attr("y",0).attr("width",Mt).attr("height",Mt).attr("rx",4).attr("fill","#f0f0f0").attr("stroke","#ccc").attr("stroke-width",1),Gt.append("path").attr("d",`M${Mt/2-5},${Mt/2-2} L${Mt/2},${Mt/2+4} L${Mt/2+5},${Mt/2-2}`).attr("fill","none").attr("stroke","#555").attr("stroke-width",2).attr("stroke-linecap","round"),Gt.on("mouseover",function(){Gt.select("rect").attr("fill","#e0e0e0")}),Gt.on("mouseout",function(){Gt.select("rect").attr("fill","#f0f0f0")}),Ct.on("click",()=>{T>0&&(T--,X(T,!0),Ct.style("opacity",T===0?"0.3":"1"),Gt.style("opacity",T>=q-1?"0.3":"1"))}),Gt.on("click",()=>{T<q-1&&(T++,X(T,!0),Ct.style("opacity",T===0?"0.3":"1"),Gt.style("opacity",T>=q-1?"0.3":"1"))})}}else r==="horizontal"?(j=M+o,W=k+y+o):(j=m||M+o||150,W=k+y+o);if(J&&(j=Math.max(j,B+D+o),W=Math.max(W,H+z+o)),this.contentHeight=W,this.config.backgroundColor||this.config.borderWidth||this.config.shadow){const ot=this.group.insert("rect",":first-child").attr("class","katucharts-legend-bg").attr("x",0).attr("y",0).attr("width",j).attr("height",g?Math.min(W,g):W).attr("rx",this.config.borderRadius??0).attr("fill",this.config.backgroundColor||"none").attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0);this.config.shadow&&ot.attr("filter","drop-shadow(2px 2px 4px rgba(0,0,0,0.15))")}if(g&&W>g){this.visibleHeight=g;const ot=`katucharts-legend-clip-${Math.random().toString(36).slice(2,8)}`;this.group.append("defs").append("clipPath").attr("id",ot).append("rect").attr("width",j).attr("height",g),this.group.attr("clip-path",`url(#${ot})`),((at=this.config.navigation)==null?void 0:at.enabled)!==!1&&this.renderNavigationArrows(j,g)}const U=this.config.maxWidth?Math.min(j,this.config.maxWidth):j,G=this.config.align||"center",N=r==="vertical"&&(G==="left"||G==="right");let Y;N?Y=e.x+2:G==="center"?Y=e.x+(e.width-U)/2:G==="right"?Y=e.x+e.width-U:Y=e.x;let O=e.y+(this.config.y||0);(N||this.config.verticalAlign==="middle")&&(O=e.y+Math.max(0,(e.height-W)/2)+(this.config.y||0));const ct=Y+(this.config.x||0);this.group.attr("transform",`translate(${ct},${O})`),this.config.floating&&this.group.style("pointer-events","all")}renderNavigationArrows(t,e){const i=this.config.navigation||{},r=i.activeColor||"#003399",o=i.inactiveColor||"#cccccc",s=i.arrowSize??12,a=this.group.append("g").attr("class","katucharts-legend-nav-up").attr("transform",`translate(${t/2},2)`).style("cursor","pointer");a.append("path").attr("d",`M${-s/2},${s/2} L0,${-s/2} L${s/2},${s/2}`).attr("fill",this.scrollOffset>0?r:o).attr("stroke","none"),a.on("click",()=>{this.scrollOffset>0&&(this.scrollOffset=Math.max(0,this.scrollOffset-40),this.applyScroll())});const l=this.group.append("g").attr("class","katucharts-legend-nav-down").attr("transform",`translate(${t/2},${e-2})`).style("cursor","pointer");l.append("path").attr("d",`M${-s/2},${-s/2} L0,${s/2} L${s/2},${-s/2}`).attr("fill",this.contentHeight>e+this.scrollOffset?r:o).attr("stroke","none"),l.on("click",()=>{const c=this.contentHeight-this.visibleHeight;this.scrollOffset<c&&(this.scrollOffset=Math.min(c,this.scrollOffset+40),this.applyScroll())})}applyScroll(){const t=this.scrollOffset;this.group.selectAll(".katucharts-legend-item").each(function(){const e=this,r=(e.getAttribute("transform")||"").match(/translate\(([^,]+),([^)]+)\)/);if(r){const o=parseFloat(e.getAttribute("data-orig-y")||r[2]);e.hasAttribute("data-orig-y")||e.setAttribute("data-orig-y",r[2]),e.setAttribute("transform",`translate(${r[1]},${o-t})`)}})}renderBubbleLegend(t,e,i){var b,k,M,C,L,_;const r=this.config.bubbleLegend||{};if(r.layout==="separate")return this.renderBubbleLegendSeparate(t,e,i);const o=[...t.ranges].sort(($,I)=>I.radius-$.radius),s=o[0].radius;if(!(s>0))return{width:0,height:0};const a=((k=(b=r.labels)==null?void 0:b.style)==null?void 0:k.fontSize)||wt,l=r.borderColor||t.color,c=r.borderWidth??1.5,h=r.color||"rgba(0,0,0,0)",f=r.connectorColor||l,u=r.connectorWidth??1,d=r.connectorDistance??16,p=((C=(M=r.labels)==null?void 0:M.style)==null?void 0:C.color)||me,y=this.group.append("g").attr("class","katucharts-bubble-legend"),g=e+s,m=i+2*s,x=e+2*s+d;let v=0;for(const $ of o){const I=m-2*$.radius;y.append("circle").attr("cx",g).attr("cy",m-$.radius).attr("r",$.radius).attr("fill",h).attr("stroke",l).attr("stroke-width",c),y.append("line").attr("x1",g).attr("y1",I).attr("x2",x).attr("y2",I).attr("stroke",f).attr("stroke-width",u).attr("stroke-dasharray","2,2");let E;(L=r.labels)!=null&&L.formatter?E=r.labels.formatter.call({value:$.value}):(_=r.labels)!=null&&_.format?E=fe(Zt(r.labels.format,{value:$.value})):E=String($.value),y.append("text").attr("x",x+4).attr("y",I).attr("dominant-baseline","middle").attr("font-size",a).attr("fill",p).text(E),v=Math.max(v,this.estimateTextWidth(E,a))}return{width:2*s+d+v+8,height:2*s}}renderBubbleLegendSeparate(t,e,i){var M,C,L,_;const r=this.config.bubbleLegend||{},o=[...t.ranges].sort(($,I)=>$.radius-I.radius),s=o[o.length-1].radius;if(!(s>0))return{width:0,height:0};const a=((C=(M=r.labels)==null?void 0:M.style)==null?void 0:C.fontSize)||wt,l=parseFloat(a)||12,c=r.borderColor||t.color,h=r.borderWidth??1.5,f=r.color||"rgba(0,0,0,0)",u=((_=(L=r.labels)==null?void 0:L.style)==null?void 0:_.color)||me,d=r.connectorDistance??8,p=$=>{var I,E;return(I=r.labels)!=null&&I.formatter?r.labels.formatter.call({value:$}):(E=r.labels)!=null&&E.format?fe(Zt(r.labels.format,{value:$})):String($)},y=this.group.append("g").attr("class","katucharts-bubble-legend"),g=($,I,E)=>y.append("circle").attr("cx",$).attr("cy",I).attr("r",E).attr("fill",f).attr("stroke",c).attr("stroke-width",h);if(this.config.layout==="horizontal"){const $=l+6,I=i+$+2*s;let E=e;for(const P of o){const S=E+P.radius,w=I-2*P.radius;g(S,I-P.radius,P.radius);const A=p(P.value);y.append("text").attr("x",S).attr("y",w-4).attr("text-anchor","middle").attr("font-size",a).attr("fill",u).text(A);const T=Math.max(2*P.radius,this.estimateTextWidth(A,a));E+=T+d+6}return{width:Math.max(0,E-e-(d+6)),height:$+2*s}}const m=e+s,x=e+2*s+d;let v=i,b=0;const k=10;for(const $ of o){const I=v+$.radius;g(m,I,$.radius);const E=p($.value);y.append("text").attr("x",x).attr("y",I).attr("dominant-baseline","middle").attr("font-size",a).attr("fill",u).text(E),b=Math.max(b,this.estimateTextWidth(E,a)),v+=2*$.radius+k}return{width:2*s+d+b+8,height:Math.max(0,v-i-k)}}destroy(){this.group&&this.group.remove()}}class rf{constructor(t,e,i,r,o){var h,f;if(this.xLine=null,this.yLine=null,this.xLabel=null,this.yLabel=null,this.plotArea=r,t){const u=typeof t=="object"?t:{},d=this.getDashArray(u.dashStyle);this.xLine=i.append("line").attr("class",`katucharts-crosshair-x${u.className?" "+u.className:""}`).attr("y1",0).attr("y2",r.height).attr("stroke",u.color||"#ccc").attr("stroke-width",u.width||1).attr("stroke-dasharray",d).style("display","none"),u.zIndex!==void 0&&this.xLine.style("z-index",u.zIndex),(h=u.label)!=null&&h.enabled&&(this.xLabel=this.createLabel(i,u.label,"x"))}if(e){const u=typeof e=="object"?e:{},d=this.getDashArray(u.dashStyle);this.yLine=i.append("line").attr("class",`katucharts-crosshair-y${u.className?" "+u.className:""}`).attr("x1",0).attr("x2",r.width).attr("stroke",u.color||"#ccc").attr("stroke-width",u.width||1).attr("stroke-dasharray",d).style("display","none"),u.zIndex!==void 0&&this.yLine.style("z-index",u.zIndex),(f=u.label)!=null&&f.enabled&&(this.yLabel=this.createLabel(i,u.label,"y"))}const s=typeof t=="object"?t:{},a=typeof e=="object"?e:{},l=s.snap!==!1,c=a.snap!==!1;o.on("point:mouseover",u=>{var d,p,y,g;if(this.xLine){const m=l?u.plotX:((d=u.event)==null?void 0:d.offsetX)??u.plotX;this.xLine.attr("x1",m).attr("x2",m).style("display",null),this.xLabel&&this.updateLabel(this.xLabel,s.label,((p=u.point)==null?void 0:p.x)??u.plotX,m,r.height+2,"x")}if(this.yLine){const m=c?u.plotY:((y=u.event)==null?void 0:y.offsetY)??u.plotY;this.yLine.attr("y1",m).attr("y2",m).style("display",null),this.yLabel&&this.updateLabel(this.yLabel,a.label,((g=u.point)==null?void 0:g.y)??u.plotY,-2,m,"y")}}),o.on("point:mouseout",()=>{this.xLine&&this.xLine.style("display","none"),this.yLine&&this.yLine.style("display","none"),this.xLabel&&this.xLabel.style("display","none"),this.yLabel&&this.yLabel.style("display","none")})}getDashArray(t){return t&&{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t]||"none"}createLabel(t,e,i){var o,s;const r=t.append("g").attr("class",`katucharts-crosshair-label-${i}`).style("display","none");return r.append("rect").attr("rx",e.borderRadius??3).attr("fill",e.backgroundColor||"rgba(0,0,0,0.75)").attr("stroke",e.borderColor||"none").attr("stroke-width",e.borderWidth??0),r.append("text").attr("fill",((o=e.style)==null?void 0:o.color)||"#fff").attr("font-size",((s=e.style)==null?void 0:s.fontSize)||"10px").attr("text-anchor","middle").attr("dominant-baseline","central"),r}updateLabel(t,e,i,r,o,s){var f;t.style("display",null);let a;e.formatter?a=e.formatter.call({value:i}):e.format?a=e.format.replace("{value}",String(i)):a=typeof i=="number"?i.toFixed(2):String(i);const l=e.padding??4,c=t.select("text");c.text(a).attr("x",r).attr("y",o);const h=(f=c.node())==null?void 0:f.getBBox();h&&t.select("rect").attr("x",h.x-l).attr("y",h.y-l).attr("width",h.width+l*2).attr("height",h.height+l*2)}destroy(){this.xLine&&this.xLine.remove(),this.yLine&&this.yLine.remove(),this.xLabel&&this.xLabel.remove(),this.yLabel&&this.yLabel.remove()}}const of="Powered by: KatuCharts",Cv="https://charts.katudv.com",sf="#707070",Pv="#b0b0b0";function Ev(n){return Cn(n)==="#ffffff"?Pv:sf}class Tv{constructor(t,e,i,r){this.element=null,this.observer=null,this.intervalId=null,this.unsubscribe=null,this.svg=e,this.chartWidth=i,this.chartHeight=r,this.config=t,this.apply(),this.unsubscribe=Qe.onChange(()=>this.apply())}apply(){const t=Qe.isLicensed();if(this.config.enabled===!1&&t){this.stopProtection(),this.element&&(this.element.remove(),this.element=null);return}this.render(this.config),t?this.stopProtection():this.startProtection()}updatePosition(t,e){this.chartWidth=t,this.chartHeight=e,!(this.config.enabled===!1&&Qe.isLicensed())&&this.render(this.config)}render(t){var u,d;this.element&&(this.element.remove(),this.element=null);const i=!Qe.isLicensed()&&(!(t!=null&&t.text)||!t.text.trim())?of:(t==null?void 0:t.text)||of,r=(t==null?void 0:t.href)??Cv,o=(t==null?void 0:t.position)||{},s=o.align||"right",a=o.verticalAlign||"bottom";let l,c;s==="left"?(l=o.x??10,c="start"):s==="center"?(l=this.chartWidth/2+(o.x??0),c="middle"):(l=this.chartWidth+(o.x??-10),c="end");let h;a==="top"?h=o.y??15:a==="middle"?h=this.chartHeight/2+(o.y??0):h=this.chartHeight+(o.y??-5);const f=(u=t==null?void 0:t.style)==null?void 0:u.color;if(this.element=this.svg.append("text").attr("class","katucharts-credits").attr("x",l).attr("y",h).attr("text-anchor",c).attr("fill",f||sf).attr("font-size",((d=t==null?void 0:t.style)==null?void 0:d.fontSize)||"9px").style("cursor",r?"pointer":"default").text(i),t!=null&&t.style){const p=t.style;p.fontFamily&&this.element.attr("font-family",p.fontFamily),p.fontWeight&&this.element.attr("font-weight",p.fontWeight),p.textDecoration&&this.element.style("text-decoration",p.textDecoration)}if(!f){const p=this.resolveBehindColor()||this.resolvePageBackground();this.element.attr("fill",Ev(p))}r&&this.element.on("click",()=>{/^https?:\/\//i.test(r)&&window.open(r,"_blank","noopener,noreferrer")})}refresh(){this.config.enabled===!1&&Qe.isLicensed()||this.render(this.config)}resolveBehindColor(){var t;try{const e=(t=this.element)==null?void 0:t.node(),i=this.svg.node();if(!e||!i)return null;const r=e.getBoundingClientRect();if(!r.width||!r.height)return null;const o=r.left+r.width/2,s=r.top+r.height/2;let a=null;return i.querySelectorAll("rect, path, circle, polygon, ellipse").forEach(l=>{const c=l.getAttribute("class")||"";if(/katucharts-(credits|export|border)/.test(c))return;const h=this.elementFill(l);if(!h)return;const f=l.getBoundingClientRect();o>=f.left&&o<=f.right&&s>=f.top&&s<=f.bottom&&(a=h)}),a}catch{return null}}resolvePageBackground(){try{let t=this.svg.node();for(;t;){if(typeof getComputedStyle=="function"){const e=getComputedStyle(t).backgroundColor,i=e?oe(e):null;if(i&&i.opacity>0)return e}t=t.parentElement}}catch{}return"#ffffff"}elementFill(t){var o;const e=t.tagName.toLowerCase();if(e==="text"||e==="tspan")return null;let i=t.getAttribute("fill");if(!i||i==="none"){const s=(o=t.style)==null?void 0:o.fill;i=s&&s!=="none"?s:null}if(!i||i==="none"||i.indexOf("url(")===0)return null;const r=oe(i);return!r||r.opacity===0?null:i}startProtection(){if(Qe.isLicensed()||this.observer||this.intervalId!=null||typeof MutationObserver>"u")return;const t=this.svg.node();t&&(this.observer=new MutationObserver(()=>{t.querySelector(".katucharts-credits")||this.render()}),this.observer.observe(t,{childList:!0}),typeof window<"u"&&(this.intervalId=window.setInterval(()=>{t.querySelector(".katucharts-credits")||this.render()},3e3)))}stopProtection(){var t;(t=this.observer)==null||t.disconnect(),this.observer=null,this.intervalId!=null&&(clearInterval(this.intervalId),this.intervalId=null)}destroy(){var t;(t=this.unsubscribe)==null||t.call(this),this.unsubscribe=null,this.stopProtection(),this.element&&this.element.remove(),this.element=null}}const Ni=["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5"],$v={downloadPNG:Ni,downloadJPEG:Ni,downloadSVG:Ni,downloadPDF:Ni,downloadCSV:Ni,downloadXLS:Ni,viewDataTable:["M3 3h18v18H3z","M12 3v18","M3 9h18","M3 15h18"],viewFullScreen:["M8 3H5a2 2 0 0 0-2 2v3","M21 8V5a2 2 0 0 0-2-2h-3","M3 16v3a2 2 0 0 0 2 2h3","M16 21h3a2 2 0 0 0 2-2v-3"],printChart:["M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2","M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6","M6 14h12v8H6z"]},Lv={downloadPNG:"PNG",downloadJPEG:"JPG",downloadSVG:"SVG",downloadPDF:"PDF",downloadCSV:"CSV",downloadXLS:"XLS"},Iv={downloadPNG:"Download PNG",downloadJPEG:"Download JPEG",downloadSVG:"Download SVG",downloadPDF:"Download PDF",downloadCSV:"Download CSV",downloadXLS:"Download XLS",viewDataTable:"Data table",viewFullScreen:"Fullscreen",printChart:"Print"};class af{constructor(t,e,i,r,o,s){var b;this.group=null,this.gearGroup=null,this.radialContainer=null,this.isOpen=!1,this.outsideClickHandler=null,this.scrollHandler=null,this.btnCenterX=0,this.btnCenterY=0,this.config=t,this.container=i,this.chartWidth=r,this.chartHeight=o,this.onExport=s;const a=(b=t.buttons)==null?void 0:b.contextButton;if((a==null?void 0:a.enabled)===!1)return;const l=(a==null?void 0:a.theme)||{},c=l.width??28,h=l.height??22,f=r+((a==null?void 0:a.x)??-10)-c,u=(a==null?void 0:a.y)??10,d=(a==null?void 0:a.symbolStroke)??"#666666",p=(a==null?void 0:a.symbolStrokeWidth)??3,y=(a==null?void 0:a.symbolFill)??d,g=l.fill??"transparent",m=l.stroke??"none",x=l.r??3;l["states.hover.fill"],this.btnCenterX=f+c/2,this.btnCenterY=u+h/2,this.group=e.append("g").attr("class","katucharts-export-button-group").attr("transform",`translate(${f},${u})`).style("cursor","pointer"),this.group.append("rect").attr("class","katucharts-export-btn-bg").attr("width",c).attr("height",h).attr("rx",x).attr("fill",g).attr("stroke",m),l.padding!==void 0&&this.group.select(".katucharts-export-btn-bg").attr("x",-l.padding).attr("y",-l.padding).attr("width",c+l.padding*2).attr("height",h+l.padding*2);const v=a==null?void 0:a.symbol;if(this.gearGroup=this.group.append("g").attr("class","katucharts-gear-icon").style("transform-origin",`${c/2}px ${h/2}px`).style("transition","transform 0.4s cubic-bezier(0.4, 0, 0.2, 1)"),v==="circle")this.gearGroup.append("circle").attr("cx",c/2).attr("cy",h/2).attr("r",Math.min(c,h)/3).attr("fill",y).attr("stroke",d).attr("stroke-width",p);else if(v==="menu"){const k=Math.round(c*.21),M=Math.round(c*.79);for(let C=0;C<3;C++)this.gearGroup.append("line").attr("x1",k).attr("x2",M).attr("y1",Math.round(h*.27)+C*Math.round(h*.23)).attr("y2",Math.round(h*.27)+C*Math.round(h*.23)).attr("stroke",d).attr("stroke-width",p).attr("stroke-linecap","round")}else{const k=Math.min(c,h),M=c/2,C=h/2,L=8,_=k*.44,$=k*.3,I=k*.12,E=Math.PI/(L*1.6);let P="";for(let F=0;F<L;F++){const D=F/L*Math.PI*2-Math.PI/2,z=[[$,D-E*1.2],[_+I,D-E],[_+I,D+E],[$,D+E*1.2]];for(const[B,H]of z){const J=M+Math.cos(H)*B,X=C+Math.sin(H)*B;P+=(P===""?"M":"L")+J.toFixed(2)+","+X.toFixed(2)}}P+="Z";const S=e.select("defs").empty()?e.append("defs"):e.select("defs"),w=S.append("linearGradient").attr("id","katu-gear-glass").attr("x1","0").attr("y1","0").attr("x2","1").attr("y2","1");w.append("stop").attr("offset","0%").attr("stop-color","#aaa").attr("stop-opacity","0.7"),w.append("stop").attr("offset","45%").attr("stop-color","#999").attr("stop-opacity","0.45"),w.append("stop").attr("offset","100%").attr("stop-color","#888").attr("stop-opacity","0.35");const A=S.append("radialGradient").attr("id","katu-gear-highlight").attr("cx","0.35").attr("cy","0.3").attr("r","0.65");A.append("stop").attr("offset","0%").attr("stop-color","#fff").attr("stop-opacity","0.6"),A.append("stop").attr("offset","50%").attr("stop-color","#fff").attr("stop-opacity","0.1"),A.append("stop").attr("offset","100%").attr("stop-color","#fff").attr("stop-opacity","0"),this.gearGroup.append("path").attr("d",P).attr("fill","url(#katu-gear-glass)").attr("stroke","rgba(255,255,255,0.5)").attr("stroke-width",p*.4).attr("stroke-linejoin","round").style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.15))"),this.gearGroup.append("path").attr("d",P).attr("fill","url(#katu-gear-highlight)").attr("stroke","none").style("pointer-events","none"),this.gearGroup.append("circle").attr("cx",M).attr("cy",C).attr("r",k*.15).attr("fill","rgba(255,255,255,0.6)").attr("stroke","rgba(255,255,255,0.4)").attr("stroke-width","0.5");const T=S.append("radialGradient").attr("id","katu-gear-hover-bg").attr("cx","0.4").attr("cy","0.35").attr("r","0.65");T.append("stop").attr("offset","0%").attr("stop-color","#fff").attr("stop-opacity","0.35"),T.append("stop").attr("offset","50%").attr("stop-color","#eef2ff").attr("stop-opacity","0.15"),T.append("stop").attr("offset","100%").attr("stop-color","#dde6ff").attr("stop-opacity","0.08");const R=k*.85;this.group.insert("circle",".katucharts-gear-icon").attr("class","katucharts-gear-hover-bg").attr("cx",c/2).attr("cy",h/2).attr("r",R).attr("fill","url(#katu-gear-hover-bg)").attr("stroke","rgba(255,255,255,0.6)").attr("stroke-width","1.5").style("filter","drop-shadow(0 0 10px rgba(200,225,255,0.5)) drop-shadow(0 2px 6px rgba(0,0,0,0.08))").style("opacity","0").style("transition","opacity 0.25s ease"),this.group.insert("circle",".katucharts-gear-icon").attr("class","katucharts-gear-hover-highlight").attr("cx",c/2).attr("cy",h/2).attr("r",R).attr("fill","none").attr("stroke","rgba(255,255,255,0.8)").attr("stroke-width","1.5").style("filter","drop-shadow(0 0 4px rgba(255,255,255,0.4))").style("opacity","0").style("transition","opacity 0.25s ease")}this.group.on("mouseenter",()=>{this.group.select(".katucharts-gear-hover-bg").style("opacity","1"),this.group.select(".katucharts-gear-hover-highlight").style("opacity","1")}).on("mouseleave",()=>{this.group.select(".katucharts-gear-hover-bg").style("opacity","0"),this.group.select(".katucharts-gear-hover-highlight").style("opacity","0")}).on("click",k=>{k.stopPropagation(),this.toggle()})}toggle(){this.isOpen?this.closeMenu():this.openMenu()}repositionCenter(t,e){this.btnCenterX=t,this.btnCenterY=e}openMenu(){var I;this.isOpen=!0,this.gearGroup&&this.gearGroup.style("transform","rotate(90deg)");const t=(I=this.config.buttons)==null?void 0:I.contextButton,i=((t==null?void 0:t.menuItems)??["downloadPNG","downloadJPEG","downloadSVG","downloadPDF","separator","viewFullScreen","printChart"]).filter(E=>E!=="separator").map(E=>({key:E,label:Iv[E]||E,icon:$v[E]||[]}));this.radialContainer=document.createElement("div"),Object.assign(this.radialContainer.style,{position:"fixed",top:"0",left:"0",width:"100vw",height:"100vh",pointerEvents:"none",zIndex:"1000"});const r=64,o=document.createElement("canvas");o.width=r,o.height=r;const s=o.getContext("2d"),a=s.createImageData(r,r),l=a.data;let c=0;const h=[];for(let E=0;E<l.length;E+=4){const P=E/4%r,S=Math.floor(E/4/r),w=P/r-.5,A=S/r-.5,T=Math.sqrt(w*w+A*A),R=Math.max(0,Math.min(1,(.48-T)/.15)),F=R*R*(3-2*R),D=w*F*r,z=A*F*r;c=Math.max(c,Math.abs(D),Math.abs(z)),h.push(D,z)}c*=.5;let f=0;for(let E=0;E<l.length;E+=4)l[E]=(h[f++]/c+.5)*255,l[E+1]=(h[f++]/c+.5)*255,l[E+2]=0,l[E+3]=255;s.putImageData(a,0,0);const u=o.toDataURL(),d="http://www.w3.org/2000/svg",p=document.createElementNS(d,"svg");p.setAttribute("width","0"),p.setAttribute("height","0"),p.style.position="absolute";const y=document.createElementNS(d,"defs"),g=document.createElementNS(d,"filter");g.setAttribute("id","katu-glass-lens"),g.setAttribute("filterUnits","userSpaceOnUse"),g.setAttribute("color-interpolation-filters","sRGB"),g.setAttribute("x","0"),g.setAttribute("y","0"),g.setAttribute("width","44"),g.setAttribute("height","44");const m=document.createElementNS(d,"feImage");m.setAttributeNS("http://www.w3.org/1999/xlink","href",u),m.setAttribute("width","44"),m.setAttribute("height","44"),m.setAttribute("result","lens_map");const x=document.createElementNS(d,"feDisplacementMap");x.setAttribute("in","SourceGraphic"),x.setAttribute("in2","lens_map"),x.setAttribute("scale",String(Math.round(c/1))),x.setAttribute("xChannelSelector","R"),x.setAttribute("yChannelSelector","G"),g.appendChild(m),g.appendChild(x),y.appendChild(g),p.appendChild(y),this.radialContainer.appendChild(p),document.body.appendChild(this.radialContainer);const v=this.container.getBoundingClientRect(),b=v.left+this.btnCenterX,k=v.top+this.btnCenterY,M=76,C=i.length,L=100*(Math.PI/180),_=280*(Math.PI/180),$=this.config.menuItemDefinitions||{};i.forEach((E,P)=>{const S=C>1?L+(_-L)*(P/(C-1)):Math.PI,w=b+Math.cos(S)*M,A=k+Math.sin(S)*M,T=w-b,R=A-k,F=document.createElement("div");F.className="katucharts-radial-btn",Object.assign(F.style,{position:"absolute",left:`${b}px`,top:`${k}px`,width:"44px",height:"44px",marginLeft:"-22px",marginTop:"-22px",borderRadius:"50%",background:"linear-gradient(160deg, rgba(255,255,255,0.92) 0%, rgba(240,240,255,0.82) 40%, rgba(255,255,255,0.75) 100%)",backdropFilter:"url(#katu-glass-lens) blur(0.5px) contrast(1.15) brightness(1.05) saturate(1.2)",WebkitBackdropFilter:"url(#katu-glass-lens) blur(0.5px) contrast(1.15) brightness(1.05) saturate(1.2)",border:"1.5px solid rgba(255, 255, 255, 0.4)",borderTopColor:"rgba(255, 255, 255, 0.8)",borderLeftColor:"rgba(255, 255, 255, 0.55)",borderBottomColor:"rgba(0, 0, 0, 0.04)",borderRightColor:"rgba(0, 0, 0, 0.02)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",pointerEvents:"auto",transform:"translate(0px, 0px) scale(0.3)",opacity:"0",willChange:"transform, opacity",transition:`transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) ${P*40}ms, opacity 0.2s ease ${P*40}ms, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease`,boxShadow:"0 4px 8px rgba(0,0,0,0.2), inset 0 -6px 12px rgba(0,0,0,0.1), inset 0 2px 4px rgba(255,255,255,0.4)"}),F.dataset.dx=String(T),F.dataset.dy=String(R);const D=document.createElement("div");Object.assign(D.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",borderRadius:"50%",background:"radial-gradient(ellipse 70% 50% at 35% 25%, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0) 70%), radial-gradient(ellipse 60% 40% at 70% 80%, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0) 70%)",boxShadow:"inset 1.5px 1.5px 3px rgba(255,255,255,0.5), inset -0.5px -0.5px 2px rgba(0,0,0,0.06)",pointerEvents:"none",overflow:"hidden"}),F.appendChild(D);const z=document.createElementNS("http://www.w3.org/2000/svg","svg");z.setAttribute("viewBox","0 0 24 24"),z.setAttribute("width","30"),z.setAttribute("height","30"),z.style.overflow="visible",z.style.position="relative",z.style.zIndex="1";const B=[],H=[];for(const N of E.icon){const Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d",N),Y.setAttribute("fill","none"),Y.setAttribute("stroke","#333333"),Y.setAttribute("stroke-width","2"),Y.setAttribute("stroke-linecap","round"),Y.setAttribute("stroke-linejoin","round"),z.appendChild(Y),B.push(Y)}const J=Lv[E.key];if(J){const N=document.createElementNS("http://www.w3.org/2000/svg","text");N.setAttribute("x","12"),N.setAttribute("y","16.5"),N.setAttribute("text-anchor","middle"),N.setAttribute("font-size","5.5"),N.setAttribute("font-family",'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'),N.setAttribute("font-weight","700"),N.setAttribute("fill","#333333"),N.setAttribute("stroke","none"),N.textContent=J,z.appendChild(N),H.push(N)}F.appendChild(z);const X=document.createElement("div");X.textContent=E.label;const j=S*(180/Math.PI),W={position:"absolute",backgroundColor:"rgba(30, 30, 30, 0.45)",backdropFilter:"blur(20px) saturate(1.4)",WebkitBackdropFilter:"blur(20px) saturate(1.4)",color:"#ffffff",padding:"4px 10px",borderRadius:"8px",border:"1px solid rgba(255, 255, 255, 0.12)",fontSize:"11px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontWeight:"500",letterSpacing:"0.2px",boxShadow:"0 2px 12px rgba(0,0,0,0.12), inset 0 0.5px 0 rgba(255,255,255,0.1)",whiteSpace:"nowrap",pointerEvents:"none",opacity:"0",transition:"opacity 0.15s ease, transform 0.15s ease"};j>60&&j<120?(W.top="calc(100% + 6px)",W.left="50%",W.transform="translateX(-50%) scale(0.8)"):j>=120&&j<=240?(W.right="calc(100% + 6px)",W.top="50%",W.transform="translateY(-50%) scale(0.8)"):j>240&&j<300?(W.bottom="calc(100% + 6px)",W.left="50%",W.transform="translateX(-50%) scale(0.8)"):(W.left="calc(100% + 6px)",W.top="50%",W.transform="translateY(-50%) scale(0.8)"),Object.assign(X.style,W),F.appendChild(X);const U=W.transform.replace("scale(0.8)","scale(1)"),G=W.transform;F.addEventListener("mouseenter",()=>{F.style.background="linear-gradient(160deg, rgba(210,230,255,0.9) 0%, rgba(200,225,255,0.8) 40%, rgba(195,220,255,0.72) 100%)",F.style.borderColor="rgba(210, 230, 255, 0.85)",F.style.boxShadow="0 0 20px rgba(200,225,255,0.7), 0 0 8px rgba(200,225,255,0.5), 0 4px 12px rgba(0,0,0,0.06), 0 0 0 1px rgba(210,230,255,0.35), inset 0 2px 4px rgba(255,255,255,0.6), inset 0 -1px 2px rgba(0,0,0,0.02)",B.forEach(N=>N.setAttribute("stroke","#1a4a8a")),H.forEach(N=>N.setAttribute("fill","#1a4a8a")),X.style.opacity="1",X.style.transform=U}),F.addEventListener("mouseleave",()=>{F.style.background="linear-gradient(160deg, rgba(255,255,255,0.72) 0%, rgba(240,240,255,0.45) 40%, rgba(255,255,255,0.35) 100%)",F.style.borderColor="rgba(255, 255, 255, 0.4)",F.style.boxShadow="0 4px 8px rgba(0,0,0,0.2), inset 0 -6px 12px rgba(0,0,0,0.1), inset 0 2px 4px rgba(255,255,255,0.4)",B.forEach(N=>N.setAttribute("stroke","#333333")),H.forEach(N=>N.setAttribute("fill","#333333")),X.style.opacity="0",X.style.transform=G}),F.addEventListener("click",N=>{N.stopPropagation(),this.closeMenu();const Y=$[E.key];Y!=null&&Y.onclick?Y.onclick():this.onExport(E.key)}),this.radialContainer.appendChild(F),requestAnimationFrame(()=>{requestAnimationFrame(()=>{F.style.transform=`translate(${T}px, ${R}px) scale(1)`,F.style.opacity="1"})})}),this.outsideClickHandler=E=>{this.radialContainer&&!this.radialContainer.contains(E.target)&&this.closeMenu()},setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler)},0),this.scrollHandler=()=>this.closeMenu(),window.addEventListener("scroll",this.scrollHandler,{once:!0,capture:!0})}closeMenu(){if(this.isOpen=!1,this.gearGroup&&this.gearGroup.style("transform","rotate(0deg)"),this.radialContainer){this.btnCenterX,this.btnCenterY,this.radialContainer.querySelectorAll(".katucharts-radial-btn").forEach((i,r)=>{i.style.transition=`transform 0.25s cubic-bezier(0.4, 0, 1, 1) ${r*20}ms, opacity 0.2s ease ${r*20}ms`,i.style.transform="translate(0px, 0px) scale(0.3)",i.style.opacity="0"});const e=this.radialContainer;setTimeout(()=>{e.remove()},400),this.radialContainer=null}this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null),this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler,!0),this.scrollHandler=null)}updatePosition(t,e){var c;if(this.chartWidth=t,this.chartHeight=e,!this.group)return;const i=(c=this.config.buttons)==null?void 0:c.contextButton,r=(i==null?void 0:i.theme)||{},o=r.width??28,s=r.height??22,a=t+((i==null?void 0:i.x)??-10)-o,l=(i==null?void 0:i.y)??10;this.group.attr("transform",`translate(${a},${l})`),this.btnCenterX=a+o/2,this.btnCenterY=l+s/2,this.isOpen&&this.closeMenu()}destroy(){this.closeMenu(),this.group&&(this.group.remove(),this.group=null)}}class cf{constructor(t){this.activeIndices=new Set,this.rules=t.rules||[]}evaluate(t,e){const i=new Set;for(let o=0;o<this.rules.length;o++)this.matchesCondition(this.rules[o].condition,t,e)&&i.add(o);const r=!this.setsEqual(i,this.activeIndices);return this.activeIndices=i,{changed:r,matchingIndices:Array.from(i)}}getRules(){return this.rules}getCurrentActiveIndices(){return Array.from(this.activeIndices)}reset(){this.activeIndices.clear()}setsEqual(t,e){if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0}matchesCondition(t,e,i){return t.callback?t.callback():!(t.maxWidth!==void 0&&e>t.maxWidth||t.minWidth!==void 0&&e<t.minWidth||t.maxHeight!==void 0&&i>t.maxHeight||t.minHeight!==void 0&&i<t.minHeight)}}function es(n){return`${n._internalType}__${n.stack??"_default"}`}function Wi(n,t){for(const e of n){const i=e.x??0;t.set(i,(t.get(i)||0)+(e.y??0))}return t}function lf(n,t){return t==="left"?n.layout.titleArea.x:t==="right"?n.layout.titleArea.x+n.layout.titleArea.width:n.chartWidth/2}function hf(n){return n==="left"?"start":n==="right"?"end":"middle"}function uf(n,t,e,i){const r=n.node();if(!r||t<=0)return;try{if(r.getComputedTextLength()<=t)return}catch{return}const s=n.text().split(/\s+/);if(s.length<=1)return;const a=i*1.3;n.text(null);let l=[],c=n.append("tspan").attr("x",e).attr("dy",0);for(const h of s){l.push(h),c.text(l.join(" "));try{c.node().getComputedTextLength()>t&&l.length>1&&(l.pop(),c.text(l.join(" ")),l=[h],c=n.append("tspan").attr("x",e).attr("dy",a).text(h))}catch{break}}}function Fv(n){var s,a,l,c,h,f,u,d,p,y;const{titleGroup:t,container:e,options:i,layout:r,chartWidth:o}=n;if(t.selectAll("*").remove(),e.querySelectorAll(".katucharts-title-html, .katucharts-subtitle-html").forEach(g=>g.remove()),(s=i.title)!=null&&s.text){const g=i.title,m=((a=g.style)==null?void 0:a.fontSize)||"18px";if(g.useHTML){const x=document.createElement("div");x.className="katucharts-title-html",x.innerHTML=g.text,x.style.cssText=`position:absolute;top:${r.titleArea.y+5}px;left:0;width:100%;text-align:${g.align||"center"};color:${((l=g.style)==null?void 0:l.color)||"#333333"};font-size:${m};font-weight:${((c=g.style)==null?void 0:c.fontWeight)||"bold"};pointer-events:none;box-sizing:border-box;padding:0 22px;`,e.appendChild(x)}else{const x=lf(n,g.align),v=o+(g.widthAdjust??-44),b=t.append("text").attr("class","katucharts-chart-title").attr("x",x).attr("y",r.titleArea.y+20).attr("text-anchor",hf(g.align)).attr("fill",((h=g.style)==null?void 0:h.color)||"#333333").attr("font-size",m).attr("font-weight",((f=g.style)==null?void 0:f.fontWeight)||"bold").text(g.text);uf(b,v,x,ye(m))}}if((u=i.subtitle)!=null&&u.text){const g=i.subtitle,m=((d=g.style)==null?void 0:d.fontSize)||"12px";if(g.useHTML){const x=document.createElement("div");x.className="katucharts-subtitle-html",x.innerHTML=g.text,x.style.cssText=`position:absolute;top:${r.subtitleArea.y+5}px;left:0;width:100%;text-align:${g.align||"center"};color:${((p=g.style)==null?void 0:p.color)||"#666666"};font-size:${m};pointer-events:none;box-sizing:border-box;padding:0 22px;`,e.appendChild(x)}else{const x=lf(n,g.align),v=o+(g.widthAdjust??-44),b=t.append("text").attr("class","katucharts-chart-subtitle").attr("x",x).attr("y",r.subtitleArea.y+15).attr("text-anchor",hf(g.align)).attr("fill",((y=g.style)==null?void 0:y.color)||"#666666").attr("font-size",m).text(g.text);uf(b,v,x,ye(m))}}}function Rv(n){const{container:t,renderer:e,options:i,plotGroup:r,layout:o,chartWidth:s,chartHeight:a,scrollableInner:l,scrollableOuterWidth:c,scrollableOuterHeight:h,useVerticalScroll:f,useHorizontalScroll:u,exportButton:d,previousOverlay:p}=n;if(!l)return null;const y=e.getSVGNode();if(!y)return null;const g=N=>{const Y=N==null?void 0:N.querySelector(".katucharts-export-button-group");Y&&y.appendChild(Y)};p&&p.parentElement&&(g(p),p.parentElement.removeChild(p)),t.querySelectorAll(":scope > svg[data-katu-fixed-overlay]").forEach(N=>{var Y;g(N),(Y=N.parentElement)==null||Y.removeChild(N)});const x="http://www.w3.org/2000/svg",v=l.offsetWidth-l.clientWidth,b=l.offsetHeight-l.clientHeight,k=c-v,M=h-b,C=document.createElementNS(x,"svg");C.setAttribute("data-katu-fixed-overlay","1"),C.setAttribute("width",k.toString()),C.setAttribute("height",M.toString()),C.style.position="absolute",C.style.top="0",C.style.left="0",C.style.pointerEvents="none",C.style.overflow="visible";const L=i.chart.backgroundColor||"#ffffff",$=(r.attr("transform")||"").match(/translate\(([^,]+),\s*([^)]+)\)/),I=$?parseFloat($[1]):0,E=$?parseFloat($[2]):0,P=!!i.chart.inverted,S=P?".katucharts-axis-y":".katucharts-axis-x",w=P?".katucharts-axis-x":".katucharts-axis-y",A=document.createElementNS(x,"defs"),T=`katucharts-fixed-grad-${Math.random().toString(36).slice(2,8)}`,R=(N,Y,O,ct,it,ft)=>{const dt=document.createElementNS(x,"linearGradient");dt.setAttribute("id",N),dt.setAttribute("x1",Y),dt.setAttribute("y1",O),dt.setAttribute("x2",ct),dt.setAttribute("y2",it),ft.forEach(([at,ot])=>{const q=document.createElementNS(x,"stop");q.setAttribute("offset",at),q.setAttribute("stop-color",L),q.setAttribute("stop-opacity",ot),dt.appendChild(q)}),A.appendChild(dt)},F=o.titleArea,D=o.subtitleArea,z=Math.max(((F==null?void 0:F.y)??0)+((F==null?void 0:F.height)??0),((D==null?void 0:D.y)??0)+((D==null?void 0:D.height)??0)),H=Math.max(0,Math.min(z+30,E)),J=H>0?Math.max(0,Math.min(100,z/H*100)):100;if(R(`${T}-top`,"0%","0%","0%","100%",[["0%","1"],[`${J}%`,"1"],["100%","0"]]),R(`${T}-bottom`,"0%","0%","0%","100%",[["0%","0"],["30%","1"],["100%","1"]]),R(`${T}-left`,"0%","0%","100%","0%",[["0%","1"],["70%","1"],["100%","0"]]),C.appendChild(A),f&&H>0){const N=document.createElementNS(x,"rect");N.setAttribute("x","0"),N.setAttribute("y","0"),N.setAttribute("width",k.toString()),N.setAttribute("height",H.toString()),N.setAttribute("fill",`url(#${T}-top)`),C.appendChild(N)}if(y.querySelectorAll(".katucharts-title-group").forEach(N=>{N.style.visibility="hidden";const Y=N.cloneNode(!0);Y.style.visibility="visible";const O=(s-k)/2;O!==0&&Y.setAttribute("transform",`translate(${-O}, 0)`),C.appendChild(Y)}),f){const N=E+o.plotArea.height,Y=a-N+10,O=document.createElementNS(x,"rect");O.setAttribute("x","0"),O.setAttribute("y",(M-Y).toString()),O.setAttribute("width",k.toString()),O.setAttribute("height",Y.toString()),O.setAttribute("fill",`url(#${T}-bottom)`),C.appendChild(O),y.querySelectorAll(S).forEach(it=>{it.style.visibility="hidden";const ft=document.createElementNS(x,"g"),dt=M-(a-N);ft.setAttribute("transform",`translate(${I}, ${dt})`);const at=it.cloneNode(!0);at.removeAttribute("transform"),at.style.visibility="visible",ft.appendChild(at),C.appendChild(ft)})}if(u){const N=I+5,Y=document.createElementNS(x,"rect");Y.setAttribute("x","0"),Y.setAttribute("y","0"),Y.setAttribute("width",N.toString()),Y.setAttribute("height",M.toString()),Y.setAttribute("fill",`url(#${T}-left)`),C.appendChild(Y),y.querySelectorAll(w).forEach(ct=>{ct.style.visibility="hidden";const it=document.createElementNS(x,"g");it.setAttribute("transform",`translate(${I}, ${E})`);const ft=ct.cloneNode(!0);ft.removeAttribute("transform"),ft.style.visibility="visible",it.appendChild(ft),C.appendChild(it)})}y.querySelectorAll(".katucharts-legend").forEach(N=>{const O=(N.getAttribute("transform")||"").match(/translate\(([^,]+),\s*([^)]+)\)/),ct=O?parseFloat(O[1]):0,it=O?parseFloat(O[2]):0,ft=(s-k)/2,dt=f?a-M:0,at=ct-ft,ot=it-dt;N.style.visibility="hidden";const q=N.cloneNode(!0);q.style.visibility="visible",q.setAttribute("transform",`translate(${at}, ${ot})`),C.appendChild(q)});const W=y.querySelector(".katucharts-export-button-group");if(W&&d){const Y=(W.getAttribute("transform")||"").match(/translate\(([^,]+),\s*([^)]+)\)/),O=Y?parseFloat(Y[1]):0,ct=Y?parseFloat(Y[2]):0,it=O-(s-k);W.setAttribute("transform",`translate(${it},${ct})`),W.style.pointerEvents="auto",C.appendChild(W),d.repositionCenter(it+28/2,ct+22/2)}y.querySelectorAll(".katucharts-color-axis").forEach(N=>{N.style.visibility="hidden";const Y=N.cloneNode(!0);Y.style.visibility="visible";const O=document.createElementNS(x,"g"),ct=k/2-o.plotArea.width/2;O.setAttribute("transform",`translate(${ct},${E})`),O.appendChild(Y),C.appendChild(O)});const G=y.querySelector(".katucharts-credits");if(G){const N=parseFloat(G.getAttribute("x")||"0"),Y=parseFloat(G.getAttribute("y")||"0");G.style.visibility="hidden";const O=G.cloneNode(!0);O.style.visibility="visible",O.setAttribute("x",String(k-(s-N))),O.setAttribute("y",String(M-(a-Y))),C.appendChild(O)}return t.appendChild(C),C}const We=class We{static inlineStyles(t){const e=t.cloneNode(!0),i=e.querySelectorAll("*"),r=t.querySelectorAll("*");for(let a=0;a<i.length&&a<r.length;a++){const l=i[a],c=r[a];try{const h=window.getComputedStyle(c);for(const f of We.INLINE_PROPS){const u=h.getPropertyValue(f);u&&u!==""&&u!=="none"&&u!=="normal"&&u!=="0"&&l.style.setProperty(f,u)}}catch{}}const o=e.querySelector(".katucharts-export-button-group");return o&&o.remove(),Qe.isLicensed()||We.stampWatermark(e),new XMLSerializer().serializeToString(e)}static stampWatermark(t){t.querySelectorAll(".katucharts-credits, .katucharts-export-watermark").forEach(s=>s.remove());const e=(t.getAttribute("viewBox")||"").split(/[\s,]+/).map(Number),i=parseFloat(t.getAttribute("width")||"")||e[2]||600,r=parseFloat(t.getAttribute("height")||"")||e[3]||400,o=document.createElementNS("http://www.w3.org/2000/svg","text");o.setAttribute("class","katucharts-export-watermark"),o.setAttribute("x",String(i-8)),o.setAttribute("y",String(r-8)),o.setAttribute("text-anchor","end"),o.setAttribute("font-family","Arial, Helvetica, sans-serif"),o.setAttribute("font-size","11px"),o.setAttribute("font-weight","normal"),o.setAttribute("fill","#8a8a8a"),o.style.setProperty("fill","#8a8a8a"),o.textContent="Powered by: KatuCharts",t.appendChild(o)}static svgToCanvas(t,e,i){return new Promise((r,o)=>{const s=new Image;s.onload=()=>{const a=document.createElement("canvas");a.width=s.width*e,a.height=s.height*e;const l=a.getContext("2d");if(!l){o(new Error("Canvas context unavailable"));return}l.scale(e,e),i&&(l.fillStyle=i,l.fillRect(0,0,s.width,s.height)),l.drawImage(s,0,0),r(a)},s.onerror=()=>o(new Error("Failed to load SVG into image")),s.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(t)))})}static exportSVG(t,e="chart"){const i=new Blob([t],{type:"image/svg+xml;charset=utf-8"});We.downloadBlob(i,`${e}.svg`)}static async exportPNG(t,e="chart",i=2){const r=await We.svgToCanvas(t,i);return new Promise((o,s)=>{r.toBlob(a=>{a?(We.downloadBlob(a,`${e}.png`),o()):s(new Error("Failed to generate PNG"))},"image/png")})}static async exportJPEG(t,e="chart",i=2,r=.95){const o=await We.svgToCanvas(t,i,"#ffffff");return new Promise((s,a)=>{o.toBlob(l=>{l?(We.downloadBlob(l,`${e}.jpeg`),s()):a(new Error("Failed to generate JPEG"))},"image/jpeg",r)})}static async exportPDF(t,e="chart",i=2){let r;try{const f=await Promise.resolve().then(()=>NA);r=f.jsPDF??f.default}catch{console.warn("KatuCharts: jspdf is not installed. Install it with `npm install jspdf` to enable PDF export.");return}if(typeof r!="function"){console.warn("KatuCharts: jspdf is not installed. Install it with `npm install jspdf` to enable PDF export.");return}const o=await We.svgToCanvas(t,i,"#ffffff"),s=o.toDataURL("image/jpeg",.95),a=o.width/i,l=o.height/i,c=a>l?"landscape":"portrait",h=new r({orientation:c,unit:"px",format:[a,l]});h.addImage(s,"JPEG",0,0,a,l),h.save(`${e}.pdf`)}static print(t,e){var l;const i=document.createElement("iframe");Object.assign(i.style,{position:"fixed",left:"-9999px",top:"-9999px",width:"0",height:"0",border:"none"}),document.body.appendChild(i);const r=i.contentDocument||((l=i.contentWindow)==null?void 0:l.document);if(!r){i.remove();return}const o=e??780;r.open(),r.write(`<!DOCTYPE html><html><head><style>
|
|
1
|
+
(function(St,Te){typeof exports=="object"&&typeof module<"u"?Te(exports):typeof define=="function"&&define.amd?define(["exports"],Te):(St=typeof globalThis<"u"?globalThis:St||self,Te(St.KatuCharts={}))})(this,function(St){"use strict";var YA=Object.defineProperty;var XA=(St,Te,ii)=>Te in St?YA(St,Te,{enumerable:!0,configurable:!0,writable:!0,value:ii}):St[Te]=ii;var xt=(St,Te,ii)=>XA(St,typeof Te!="symbol"?Te+"":Te,ii);function Te(n,t,e){n.prototype=t.prototype=e,e.constructor=n}function ii(n,t){var e=Object.create(n.prototype);for(var i in t)e[i]=t[i];return e}function ir(){}var rr=.7,to=1/rr,Ci="\\s*([+-]?\\d+)\\s*",or="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)\\s*",xn="\\s*([+-]?(?:\\d*\\.)?\\d+(?:[eE][+-]?\\d+)?)%\\s*",Xp=/^#([0-9a-f]{3,8})$/,Up=new RegExp(`^rgb\\(${Ci},${Ci},${Ci}\\)$`),qp=new RegExp(`^rgb\\(${xn},${xn},${xn}\\)$`),jp=new RegExp(`^rgba\\(${Ci},${Ci},${Ci},${or}\\)$`),Zp=new RegExp(`^rgba\\(${xn},${xn},${xn},${or}\\)$`),Kp=new RegExp(`^hsl\\(${or},${xn},${xn}\\)$`),Jp=new RegExp(`^hsla\\(${or},${xn},${xn},${or}\\)$`),bl={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};Te(ir,oe,{copy(n){return Object.assign(new this.constructor,this,n)},displayable(){return this.rgb().displayable()},hex:vl,formatHex:vl,formatHex8:Qp,formatHsl:tg,formatRgb:wl,toString:wl});function vl(){return this.rgb().formatHex()}function Qp(){return this.rgb().formatHex8()}function tg(){return _l(this).formatHsl()}function wl(){return this.rgb().formatRgb()}function oe(n){var t,e;return n=(n+"").trim().toLowerCase(),(t=Xp.exec(n))?(e=t[1].length,t=parseInt(t[1],16),e===6?kl(t):e===3?new Be(t>>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):e===8?eo(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):e===4?eo(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Up.exec(n))?new Be(t[1],t[2],t[3],1):(t=qp.exec(n))?new Be(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=jp.exec(n))?eo(t[1],t[2],t[3],t[4]):(t=Zp.exec(n))?eo(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Kp.exec(n))?Sl(t[1],t[2]/100,t[3]/100,1):(t=Jp.exec(n))?Sl(t[1],t[2]/100,t[3]/100,t[4]):bl.hasOwnProperty(n)?kl(bl[n]):n==="transparent"?new Be(NaN,NaN,NaN,0):null}function kl(n){return new Be(n>>16&255,n>>8&255,n&255,1)}function eo(n,t,e,i){return i<=0&&(n=t=e=NaN),new Be(n,t,e,i)}function eg(n){return n instanceof ir||(n=oe(n)),n?(n=n.rgb(),new Be(n.r,n.g,n.b,n.opacity)):new Be}function Ye(n,t,e,i){return arguments.length===1?eg(n):new Be(n,t,e,i??1)}function Be(n,t,e,i){this.r=+n,this.g=+t,this.b=+e,this.opacity=+i}Te(Be,Ye,ii(ir,{brighter(n){return n=n==null?to:Math.pow(to,n),new Be(this.r*n,this.g*n,this.b*n,this.opacity)},darker(n){return n=n==null?rr:Math.pow(rr,n),new Be(this.r*n,this.g*n,this.b*n,this.opacity)},rgb(){return this},clamp(){return new Be(ri(this.r),ri(this.g),ri(this.b),no(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:Ml,formatHex:Ml,formatHex8:ng,formatRgb:Al,toString:Al}));function Ml(){return`#${oi(this.r)}${oi(this.g)}${oi(this.b)}`}function ng(){return`#${oi(this.r)}${oi(this.g)}${oi(this.b)}${oi((isNaN(this.opacity)?1:this.opacity)*255)}`}function Al(){const n=no(this.opacity);return`${n===1?"rgb(":"rgba("}${ri(this.r)}, ${ri(this.g)}, ${ri(this.b)}${n===1?")":`, ${n})`}`}function no(n){return isNaN(n)?1:Math.max(0,Math.min(1,n))}function ri(n){return Math.max(0,Math.min(255,Math.round(n)||0))}function oi(n){return n=ri(n),(n<16?"0":"")+n.toString(16)}function Sl(n,t,e,i){return i<=0?n=t=e=NaN:e<=0||e>=1?n=t=NaN:t<=0&&(n=NaN),new dn(n,t,e,i)}function _l(n){if(n instanceof dn)return new dn(n.h,n.s,n.l,n.opacity);if(n instanceof ir||(n=oe(n)),!n)return new dn;if(n instanceof dn)return n;n=n.rgb();var t=n.r/255,e=n.g/255,i=n.b/255,r=Math.min(t,e,i),o=Math.max(t,e,i),s=NaN,a=o-r,l=(o+r)/2;return a?(t===o?s=(e-i)/a+(e<i)*6:e===o?s=(i-t)/a+2:s=(t-e)/a+4,a/=l<.5?o+r:2-o-r,s*=60):a=l>0&&l<1?0:s,new dn(s,a,l,n.opacity)}function si(n,t,e,i){return arguments.length===1?_l(n):new dn(n,t,e,i??1)}function dn(n,t,e,i){this.h=+n,this.s=+t,this.l=+e,this.opacity=+i}Te(dn,si,ii(ir,{brighter(n){return n=n==null?to:Math.pow(to,n),new dn(this.h,this.s,this.l*n,this.opacity)},darker(n){return n=n==null?rr:Math.pow(rr,n),new dn(this.h,this.s,this.l*n,this.opacity)},rgb(){var n=this.h%360+(this.h<0)*360,t=isNaN(n)||isNaN(this.s)?0:this.s,e=this.l,i=e+(e<.5?e:1-e)*t,r=2*e-i;return new Be(Ds(n>=240?n-240:n+120,r,i),Ds(n,r,i),Ds(n<120?n+240:n-120,r,i),this.opacity)},clamp(){return new dn(Cl(this.h),io(this.s),io(this.l),no(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){const n=no(this.opacity);return`${n===1?"hsl(":"hsla("}${Cl(this.h)}, ${io(this.s)*100}%, ${io(this.l)*100}%${n===1?")":`, ${n})`}`}}));function Cl(n){return n=(n||0)%360,n<0?n+360:n}function io(n){return Math.max(0,Math.min(1,n||0))}function Ds(n,t,e){return(n<60?t+(e-t)*n/60:n<180?e:n<240?t+(e-t)*(240-n)/60:t)*255}const ro=new Map,ig=256;function zs(n){const t=n||"rgba(0,0,0,0)",e=ro.get(t);if(e)return e;const i="rgba(0,0,0,0)",r=oe(n||i),o=Ye(r||i),s={r:Math.round(o.r),g:Math.round(o.g),b:Math.round(o.b),a:o.opacity,get(a){return a==="rgba"?this.toString():this.toString()},brighten(a){const l=si(Ye(this.r,this.g,this.b,this.a));l.l+=a*.1,l.l=Math.max(0,Math.min(1,l.l));const c=Ye(l);return zs(c.formatRgb())},setOpacity(a){return zs(`rgba(${this.r},${this.g},${this.b},${a})`)},toString(){return this.a<1?`rgba(${this.r},${this.g},${this.b},${this.a})`:Ye(this.r,this.g,this.b).formatHex()}};return ro.size>=ig&&ro.clear(),ro.set(t,s),s}const oo={default:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"],tableau10:["#4e79a7","#f28e2b","#e15759","#76b7b2","#59a14f","#edc948","#b07aa1","#ff9da7","#9c755f","#bab0ac"],d3classic:["#1f77b4","#ff7f0e","#2ca02c","#d62728","#9467bd","#8c564b","#e377c2","#7f7f7f","#bcbd22","#17becf"],brewer:["#66c2a5","#fc8d62","#8da0cb","#e78ac3","#a6d854","#ffd92f","#e5c494","#b3b3b3"],google:["#3366cc","#dc3912","#ff9900","#109618","#990099","#0099c6","#dd4477","#66aa00","#b82e2e","#316395"],ocean:["#003f5c","#2f4b7c","#665191","#a05195","#d45087","#f95d6a","#ff7c43","#ffa600","#58508d","#bc5090"],sunset:["#f94144","#f3722c","#f8961e","#f9844a","#f9c74f","#90be6d","#43aa8b","#4d908e","#577590","#277da1"],earth:["#8c510a","#bf812d","#dfc27d","#c7eae5","#80cdc1","#35978f","#01665e","#543005","#003c30","#f6e8c3"],forest:["#2d6a4f","#40916c","#52b788","#74c69d","#95d5b2","#1b4332","#081c15","#b7e4c7","#d8f3dc","#344e41"],berry:["#7b2cbf","#9d4edd","#c77dff","#e0aaff","#5a189a","#3c096c","#240046","#10002b","#e2afff","#deaaff"],corporate:["#2c3e50","#e74c3c","#3498db","#2ecc71","#f39c12","#9b59b6","#1abc9c","#e67e22","#34495e","#16a085"],minimal:["#264653","#2a9d8f","#e9c46a","#f4a261","#e76f51","#606c38","#283618","#dda15e","#bc6c25","#fefae0"],nordic:["#5e81ac","#81a1c1","#88c0d0","#8fbcbb","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead","#4c566a"],darkMode:["#2ecc71","#3498db","#e74c3c","#f1c40f","#9b59b6","#1abc9c","#e67e22","#ecf0f1","#e91e63","#00bcd4"],neon:["#ff006e","#fb5607","#ffbe0b","#8338ec","#3a86ff","#06d6a0","#118ab2","#ef476f","#ffd166","#073b4c"],pastel:["#a8e6cf","#dcedc1","#ffd3b6","#ffaaa5","#ff8b94","#b5ead7","#c7ceea","#e2f0cb","#fceaea","#d4a5a5"],soft:["#6c9bd2","#e6a756","#d46a6a","#7cc5a8","#b28fce","#e8937f","#6bb8a0","#d4b56a","#8e9cc2","#c2847a"],classic:["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1"],tupi:["#b43417","#1b1a15","#a85429","#ce9a3a","#33503a","#8c2810","#6b6a45","#d97b3f","#5b5240","#7a3b2e"],monochrome:["#1f2933","#3e4c59","#52606d","#7b8794","#9aa5b1","#616e7c","#cbd2d9","#323f4b","#7b8794","#b8c0c9"]};function Pl(n){return oo[n]||oo.default}const rg=oo.default,og={textStrong:"#1f2933",textSoft:"#52606d",axis:"#6b7280",line:"#c8ccd2",grid:"#e6e8eb",tooltipBg:"rgba(255,255,255,0.96)",tooltipBorder:"#d8dce0",legend:"#52606d"},sg={textStrong:"#f3f4f6",textSoft:"#b8bfc7",axis:"#9aa3ad",line:"#3a414a",grid:"rgba(255,255,255,0.08)",tooltipBg:"#20262e",tooltipBorder:"#39414b",legend:"#c2c9d1"};function El(n,t,e){const i={gridLineColor:e.grid,lineColor:e.line,tickColor:e.line,labels:{style:{color:e.axis}},title:{style:{color:e.axis}}};return{colors:n,chart:{backgroundColor:t},title:{style:{color:e.textStrong}},subtitle:{style:{color:e.textSoft}},xAxis:i,yAxis:i,tooltip:{backgroundColor:e.tooltipBg,borderColor:e.tooltipBorder,style:{color:e.textStrong}},legend:{itemStyle:{color:e.legend},itemHoverStyle:{color:e.textStrong}}}}const Bs={tupi:{light:["#b43417","#1b1a15","#a85429","#ce9a3a","#33503a","#8c2810","#6b6a45","#d97b3f","#5b5240","#7a3b2e"],dark:["#e0673f","#e7dbc0","#d08a4e","#e8c45f","#6fa37a","#c84c2c","#c9b27a","#f0a06a","#a9a07e","#d98b6a"]},ocean:{light:["#0466c8","#0353a4","#3a86ff","#00b4d8","#0096c7","#48cae4","#023e8a","#5e60ce","#0077b6","#90e0ef"],dark:["#48cae4","#4895ef","#56cfe1","#64dfdf","#80ffdb","#5390d9","#7400b8","#4cc9f0","#56cfe1","#72efdd"]},sunset:{light:["#ff6b35","#f7522f","#ff9e00","#ffbf69","#e85d75","#d1495b","#ffd166","#9e2a2b","#f3722c","#bc4749"],dark:["#ff7b54","#ffb26b","#ffd56b","#ff9e7d","#ff6b6b","#feca57","#ff9ff3","#f368e0","#ffa07a","#ffd56b"]},forest:{light:["#2d6a4f","#40916c","#52b788","#74c69d","#1b4332","#95d5b2","#b7e4c7","#344e41","#588157","#a3b18a"],dark:["#74c69d","#52b788","#95d5b2","#40916c","#b7e4c7","#2d6a4f","#d8f3dc","#588157","#a3b18a","#80ed99"]},corporate:{light:["#2c3e50","#3498db","#16a085","#f39c12","#8e44ad","#e74c3c","#34495e","#27ae60","#2980b9","#d35400"],dark:["#5dade2","#48c9b0","#f5b041","#bb8fce","#ec7063","#58d68d","#85c1e9","#76d7c4","#f8c471","#aed6f1"]},vivid:{light:["#ff006e","#fb5607","#ffbe0b","#8338ec","#3a86ff","#06d6a0","#ef476f","#118ab2","#ff70a6","#9b5de5"],dark:["#ff5d8f","#ff7b00","#ffd60a","#9d4edd","#4cc9f0","#06d6a0","#ff70a6","#48cae4","#fb5607","#b5179e"]},monochrome:{light:["#1f2933","#3e4c59","#52606d","#7b8794","#9aa5b1","#616e7c","#cbd2d9","#323f4b","#46545f","#a7b0b8"],dark:["#e4e7eb","#cbd2d9","#9aa5b1","#7b8794","#616e7c","#b8c0c9","#52606d","#d3d9de","#8a949e","#3e4c59"]},nordic:{light:["#5e81ac","#81a1c1","#88c0d0","#8fbcbb","#bf616a","#d08770","#ebcb8b","#a3be8c","#b48ead","#4c566a"],dark:["#88c0d0","#81a1c1","#8fbcbb","#a3be8c","#ebcb8b","#d08770","#bf616a","#b48ead","#5e81ac","#d8dee9"]},pastel:{light:["#a8e6cf","#ffd3b6","#ffaaa5","#c7ceea","#b5ead7","#ff8b94","#dcedc1","#e2afff","#ffdac1","#b5c7ed"],dark:["#a8e6cf","#ffd3b6","#ffaaa5","#c7ceea","#b5ead7","#ff8b94","#dcedc1","#e2afff","#ffdac1","#b5c7ed"]}},Tl={tupi:{light:"#ecdfc4",dark:"#1c1814"},ocean:{light:"#ffffff",dark:"#0b1622"},sunset:{light:"#ffffff",dark:"#1f1410"},forest:{light:"#ffffff",dark:"#0f1f17"},corporate:{light:"#ffffff",dark:"#1a1f26"},vivid:{light:"#ffffff",dark:"#14101c"},monochrome:{light:"#ffffff",dark:"#1a1f24"},nordic:{light:"#eceff4",dark:"#2e3440"},pastel:{light:"#ffffff",dark:"#232026"}},so=(()=>{const n={};for(const t of Object.keys(Bs))n[t]=El(Bs[t].light,Tl[t].light,og),n[`${t}-dark`]=El(Bs[t].dark,Tl[t].dark,sg);return n.light=n.monochrome,n.dark=n["monochrome-dark"],n})(),ag=Object.keys(so);function $l(n){return so[n]}const wt="12px",ye="#000000",Ll="#1a1a1a",cg="#ffffff",lg=3;function Os(n){const t=n/255;return t<=.03928?t/12.92:((t+.055)/1.055)**2.4}function Il(n,t,e){return .2126*Os(n)+.7152*Os(t)+.0722*Os(e)}function Fl(n,t){return(Math.max(n,t)+.05)/(Math.min(n,t)+.05)}const hg=Il(26,26,26);function Pn(n,t){var s;if(t)return t;const e=n?(s=oe(n))==null?void 0:s.rgb():null;if(!e||isNaN(e.r)||e.opacity===0)return ye;const i=Il(e.r,e.g,e.b),r=Fl(i,hg);return r>=lg?Ll:Fl(i,1)>=r?cg:Ll}function Rl(){if(typeof document>"u")return 16;const n=parseFloat(getComputedStyle(document.documentElement).fontSize);return n>0?n:16}function xe(n){if(!n)return 12;const t=n.trim();if(/^(clamp|min|max)\s*\(/i.test(t)){const r=t.slice(t.indexOf("(")+1,t.lastIndexOf(")")).match(/-?\d*\.?\d+\s*(px|rem|em)/gi)||[];let o=0;for(const s of r){const a=xe(s.trim());a>o&&(o=a)}return o>0?o:12}if(t.endsWith("px"))return parseFloat(t)||12;if(t.endsWith("rem")||t.endsWith("em"))return(parseFloat(t)||1)*Rl();const e=parseFloat(t);return isNaN(e)?12:e}let ao=null;function ug(){return ao||(typeof document>"u"?null:(ao=document.createElement("canvas").getContext("2d"),ao))}function Je(n,t,e="normal",i="sans-serif"){const r=ug();return r?(r.font=`${e} ${t}px ${i}`,r.measureText(n).width):n.length*t*.62}const Ns={chart:{type:"line",backgroundColor:"#ffffff",borderWidth:0,borderRadius:0,borderColor:"#335cad",spacing:[10,10,15,10],style:{fontFamily:'"Lucida Grande", "Lucida Sans Unicode", Verdana, Arial, Helvetica, sans-serif',fontSize:"12px"},animation:!0,zoomType:void 0,panning:!1,inverted:!1,polar:!1,reflow:!0},title:{text:void 0,align:"center",margin:15,style:{color:"#333333",fontSize:"18px",fontWeight:"bold"},widthAdjust:-44},subtitle:{text:void 0,align:"center",style:{color:"#666666",fontSize:"12px"},widthAdjust:-44},xAxis:{type:"linear",title:{text:null,style:{fontSize:wt}},labels:{enabled:!0,style:{fontSize:wt},autoRotation:[-45],autoRotationLimit:80,padding:5},tickLength:10,tickWidth:1,tickColor:"#999999",gridLineWidth:1,gridLineColor:"#e6e6e6",lineWidth:1,lineColor:"#999999",offset:0,opposite:!1,reversed:!1,visible:!0,startOnTick:!1,endOnTick:!1,showFirstLabel:!0,showLastLabel:!0,allowDecimals:!0,maxPadding:.01,minPadding:.01,crosshair:!1},yAxis:{type:"linear",title:{text:null,style:{fontSize:wt}},labels:{enabled:!0,style:{fontSize:wt},padding:5},tickLength:10,tickWidth:1,gridLineWidth:1,gridLineColor:"#e6e6e6",lineWidth:1,lineColor:"#999999",offset:0,opposite:!1,reversed:!1,visible:!0,startOnTick:!0,endOnTick:!0,showFirstLabel:!0,showLastLabel:!0,allowDecimals:!0,maxPadding:.05,minPadding:.05,crosshair:!1},colorAxis:void 0,series:[],tooltip:{enabled:!0,shared:!1,split:!1,useHTML:!1,followPointer:!1,headerFormat:'<span style="font-size: 10px">{point.key}</span><br/>',pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.y}</b><br/>',footerFormat:"",backgroundColor:"rgba(247,247,247,0.85)",borderColor:void 0,borderWidth:1,borderRadius:3,padding:8,shadow:!0,animation:!0,hideDelay:500,snap:10,outside:!1,style:{color:"#333333",fontSize:"12px"}},legend:{enabled:!0,layout:"horizontal",align:"center",verticalAlign:"bottom",floating:!1,x:0,y:0,margin:15,padding:8,itemMarginTop:0,itemMarginBottom:0,itemDistance:20,itemStyle:{cursor:"pointer",fontSize:wt,fontWeight:"normal"},itemHoverStyle:{color:"#000000"},itemHiddenStyle:{color:"#cccccc"},symbolWidth:12,symbolHeight:12,symbolRadius:2,symbolPadding:5,squareSymbol:!0,borderWidth:0,borderRadius:0,borderColor:"#999999",reversed:!1},plotOptions:{series:{lineWidth:2,marker:{enabled:null,radius:4,symbol:"circle",lineWidth:0,states:{hover:{enabled:!0,radius:6,lineWidth:1}}},states:{hover:{enabled:!0,lineWidthPlus:1},inactive:{opacity:.2}},animation:{duration:1e3},enableMouseTracking:!0,stickyTracking:!0,allowPointSelect:!1,turboThreshold:1e3,dataLabels:{enabled:!1},showInLegend:!0,threshold:0,connectNulls:!1,clip:!0},bubble:{lineWidth:1},scatter:{marker:{symbol:null}},pie:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.percentage:.1f}%</b><br/>'},dataLabels:{enabled:!0},showInLegend:!1},candlestick:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},ohlc:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},heikinashi:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},hollowcandlestick:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> <b>{series.name}</b><br/>Open: <b>{point.open}</b><br/>High: <b>{point.high}</b><br/>Low: <b>{point.low}</b><br/>Close: <b>{point.close}</b><br/>'}},arearange:{tooltip:{pointFormat:'<span style="color:{point.color}">●</span> {series.name}: <b>{point.low}</b> - <b>{point.high}</b><br/>'}},donut:{showInLegend:!1},sankey:{dataLabels:{enabled:!0},showInLegend:!1},dependencywheel:{dataLabels:{enabled:!0},showInLegend:!1},networkgraph:{dataLabels:{enabled:!0}},treemap:{dataLabels:{enabled:!0}},gauge:{dataLabels:{enabled:!0}},solidgauge:{dataLabels:{enabled:!0}},timeline:{dataLabels:{enabled:!0}},gantt:{dataLabels:{enabled:!0}},barchartrace:{dataLabels:{enabled:!0}},venn:{dataLabels:{enabled:!0}}},credits:{enabled:!0,text:"Powered by: KatuCharts",href:"https://charts.katudv.com",position:{align:"right",verticalAlign:"bottom",x:-10,y:-5},style:{cursor:"pointer",fontSize:"9px"}},exporting:{enabled:!0,filename:"chart",type:"image/png",scale:2,printMaxWidth:780,buttons:{contextButton:{enabled:!0,symbol:"gear",symbolFill:"#666666",symbolStroke:"#666666",symbolStrokeWidth:3,x:-10,y:10,menuItems:["downloadPNG","downloadJPEG","downloadSVG","downloadPDF","separator","viewFullScreen","printChart"]}}},loading:{hideDuration:100,showDuration:100,labelStyle:{fontWeight:"bold",position:"relative",top:"45%"},style:{position:"absolute",backgroundColor:"#ffffff",opacity:.5,textAlign:"center"}},navigator:{enabled:!1},rangeSelector:{enabled:!1},drilldown:{animation:!0,series:[]},responsive:{rules:[{condition:{maxWidth:500},chartOptions:{chart:{spacing:[5,5,10,5]},title:{style:{fontSize:"14px"},margin:8},subtitle:{style:{fontSize:"10px"}},legend:{itemStyle:{fontSize:"10px"},itemDistance:10,margin:8,symbolWidth:12,symbolHeight:8},yAxis:{title:{text:null},labels:{style:{fontSize:"9px"}}},xAxis:{labels:{style:{fontSize:"9px"},autoRotation:[-45,-90]}},plotOptions:{pie:{size:"65%",dataLabels:{distance:10,style:{fontSize:"9px"},connectorPadding:3}}}}},{condition:{maxWidth:260},chartOptions:{subtitle:{text:null},legend:{enabled:!1},credits:{enabled:!1},plotOptions:{pie:{size:"55%",dataLabels:{distance:5,style:{fontSize:"8px"},connectorWidth:0}}}}}]},accessibility:{enabled:!0},colors:rg},Pi=new Set(["pie","donut","sunburst","treemap","treegraph","wordcloud","sankey","dependencywheel","networkgraph","gauge","solidgauge","polar","radar","funnel","pyramid","timeline","map","mappoint","flowmap","barchartrace","venn","clusteredheatmap","phylotree","circos","circosHeatmap","circosComparative","circosSpiral"]),fg=new Set(["pie","donut","funnel","pyramid","sankey","dependencywheel","networkgraph","treemap","sunburst","gauge","solidgauge","timeline","gantt","map","mappoint","flowmap","heatmap","polar","radar","barchartrace","venn","clusteredheatmap","phylotree","circos"]),dg=new Set(["line","spline","column","bar","scatter","bubble","area","areaspline","boxplot","waterfall","volume"]),pg=new Set(["pie","venn","forestplot","pcoa"]),gg=new Set(["scatter","bubble"]),mg=new Set(["column","bar","area","areaspline","waterfall"]);function Dl(n){return n.length>0&&n.every(t=>Pi.has(t._internalType))}const zl=20;function Bl(n){return typeof n=="object"&&n!==null&&!Array.isArray(n)&&Object.getPrototypeOf(n)===Object.prototype}function le(n,...t){return Ol(n,t,0)}function Ol(n,t,e){if(e>zl)return n;const i={...n};for(const r of t)if(r)for(const o of Object.keys(r)){if(o==="__proto__"||o==="constructor"||o==="prototype")continue;const s=r[o],a=i[o];s!==void 0&&(s===null?i[o]=null:Bl(s)&&Bl(a)?i[o]=Ol(a,[s],e+1):Array.isArray(s)?i[o]=[...s]:i[o]=s)}return i}function co(n){return Ws(n,new WeakSet,0)}function Ws(n,t,e){if(n===null||typeof n!="object"||e>zl||t.has(n))return n;if(t.add(n),Array.isArray(n))return n.map(r=>Ws(r,t,e+1));if(n instanceof Date)return new Date(n.getTime());const i={};for(const r of Object.keys(n))i[r]=Ws(n[r],t,e+1);return i}function Nl(n){return n instanceof Uint8Array||ArrayBuffer.isView(n)&&n.constructor.name==="Uint8Array"&&"BYTES_PER_ELEMENT"in n&&n.BYTES_PER_ELEMENT===1}function Hs(n,t=""){if(typeof n!="number"){const e=t&&`"${t}" `;throw new TypeError(`${e}expected number, got ${typeof n}`)}if(!Number.isSafeInteger(n)||n<0){const e=t&&`"${t}" `;throw new RangeError(`${e}expected integer >= 0, got ${n}`)}}function ai(n,t,e=""){const i=Nl(n),r=n==null?void 0:n.length,o=t!==void 0;if(!i||o&&r!==t){const s=e&&`"${e}" `,a=o?` of length ${t}`:"",l=i?`length=${r}`:`type=${typeof n}`,c=s+"expected Uint8Array"+a+", got "+l;throw i?new RangeError(c):new TypeError(c)}return n}function Wl(n,t=!0){if(n.destroyed)throw new Error("Hash instance has been destroyed");if(t&&n.finished)throw new Error("Hash#digest() has already been called")}function yg(n,t){ai(n,void 0,"digestInto() output");const e=t.outputLen;if(n.length<e)throw new RangeError('"digestInto() output" expected to be of length >='+e)}function Vs(...n){for(let t=0;t<n.length;t++)n[t].fill(0)}function Gs(n){return new DataView(n.buffer,n.byteOffset,n.byteLength)}const Hl=typeof Uint8Array.from([]).toHex=="function"&&typeof Uint8Array.fromHex=="function",xg=Array.from({length:256},(n,t)=>t.toString(16).padStart(2,"0"));function Ys(n){if(ai(n),Hl)return n.toHex();let t="";for(let e=0;e<n.length;e++)t+=xg[n[e]];return t}const En={_0:48,_9:57,A:65,F:70,a:97,f:102};function Vl(n){if(n>=En._0&&n<=En._9)return n-En._0;if(n>=En.A&&n<=En.F)return n-(En.A-10);if(n>=En.a&&n<=En.f)return n-(En.a-10)}function Xs(n){if(typeof n!="string")throw new TypeError("hex string expected, got "+typeof n);if(Hl)try{return Uint8Array.fromHex(n)}catch(r){throw r instanceof SyntaxError?new RangeError(r.message):r}const t=n.length,e=t/2;if(t%2)throw new RangeError("hex string expected, got unpadded hex of length "+t);const i=new Uint8Array(e);for(let r=0,o=0;r<e;r++,o+=2){const s=Vl(n.charCodeAt(o)),a=Vl(n.charCodeAt(o+1));if(s===void 0||a===void 0){const l=n[o]+n[o+1];throw new RangeError('hex string expected, got non-hex character "'+l+'" at index '+o)}i[r]=s*16+a}return i}function bg(...n){let t=0;for(let i=0;i<n.length;i++){const r=n[i];ai(r),t+=r.length}const e=new Uint8Array(t);for(let i=0,r=0;i<n.length;i++){const o=n[i];e.set(o,r),r+=o.length}return e}function vg(n,t={}){const e=(r,o)=>n(o).update(r).digest(),i=n(void 0);return e.outputLen=i.outputLen,e.blockLen=i.blockLen,e.canXOF=i.canXOF,e.create=r=>n(r),Object.assign(e,t),Object.freeze(e)}function wg(n=32){Hs(n,"bytesLength");const t=typeof globalThis=="object"?globalThis.crypto:null;if(typeof(t==null?void 0:t.getRandomValues)!="function")throw new Error("crypto.getRandomValues must be defined");if(n>65536)throw new RangeError(`"bytesLength" expected <= 65536, got ${n}`);return t.getRandomValues(new Uint8Array(n))}const kg=n=>({oid:Uint8Array.from([6,9,96,134,72,1,101,3,4,2,n])});class Mg{constructor(t,e,i,r){xt(this,"blockLen");xt(this,"outputLen");xt(this,"canXOF",!1);xt(this,"padOffset");xt(this,"isLE");xt(this,"buffer");xt(this,"view");xt(this,"finished",!1);xt(this,"length",0);xt(this,"pos",0);xt(this,"destroyed",!1);this.blockLen=t,this.outputLen=e,this.padOffset=i,this.isLE=r,this.buffer=new Uint8Array(t),this.view=Gs(this.buffer)}update(t){Wl(this),ai(t);const{view:e,buffer:i,blockLen:r}=this,o=t.length;for(let s=0;s<o;){const a=Math.min(r-this.pos,o-s);if(a===r){const l=Gs(t);for(;r<=o-s;s+=r)this.process(l,s);continue}i.set(t.subarray(s,s+a),this.pos),this.pos+=a,s+=a,this.pos===r&&(this.process(e,0),this.pos=0)}return this.length+=t.length,this.roundClean(),this}digestInto(t){Wl(this),yg(t,this),this.finished=!0;const{buffer:e,view:i,blockLen:r,isLE:o}=this;let{pos:s}=this;e[s++]=128,Vs(this.buffer.subarray(s)),this.padOffset>r-s&&(this.process(i,0),s=0);for(let f=s;f<r;f++)e[f]=0;i.setBigUint64(r-8,BigInt(this.length*8),o),this.process(i,0);const a=Gs(t),l=this.outputLen;if(l%4)throw new Error("_sha2: outputLen must be aligned to 32bit");const c=l/4,h=this.get();if(c>h.length)throw new Error("_sha2: outputLen bigger than state");for(let f=0;f<c;f++)a.setUint32(4*f,h[f],o)}digest(){const{buffer:t,outputLen:e}=this;this.digestInto(t);const i=t.slice(0,e);return this.destroy(),i}_cloneInto(t){t||(t=new this.constructor),t.set(...this.get());const{blockLen:e,buffer:i,length:r,finished:o,destroyed:s,pos:a}=this;return t.destroyed=s,t.finished=o,t.length=r,t.pos=a,r%e&&t.buffer.set(i),t}clone(){return this._cloneInto()}}const be=Uint32Array.from([1779033703,4089235720,3144134277,2227873595,1013904242,4271175723,2773480762,1595750129,1359893119,2917565137,2600822924,725511199,528734635,4215389547,1541459225,327033209]),lo=BigInt(2**32-1),Gl=BigInt(32);function Ag(n,t=!1){return t?{h:Number(n&lo),l:Number(n>>Gl&lo)}:{h:Number(n>>Gl&lo)|0,l:Number(n&lo)|0}}function Sg(n,t=!1){const e=n.length;let i=new Uint32Array(e),r=new Uint32Array(e);for(let o=0;o<e;o++){const{h:s,l:a}=Ag(n[o],t);[i[o],r[o]]=[s,a]}return[i,r]}const Yl=(n,t,e)=>n>>>e,Xl=(n,t,e)=>n<<32-e|t>>>e,Ei=(n,t,e)=>n>>>e|t<<32-e,Ti=(n,t,e)=>n<<32-e|t>>>e,ho=(n,t,e)=>n<<64-e|t>>>e-32,uo=(n,t,e)=>n>>>e-32|t<<64-e;function Tn(n,t,e,i){const r=(t>>>0)+(i>>>0);return{h:n+e+(r/2**32|0)|0,l:r|0}}const _g=(n,t,e)=>(n>>>0)+(t>>>0)+(e>>>0),Cg=(n,t,e,i)=>t+e+i+(n/2**32|0)|0,Pg=(n,t,e,i)=>(n>>>0)+(t>>>0)+(e>>>0)+(i>>>0),Eg=(n,t,e,i,r)=>t+e+i+r+(n/2**32|0)|0,Tg=(n,t,e,i,r)=>(n>>>0)+(t>>>0)+(e>>>0)+(i>>>0)+(r>>>0),$g=(n,t,e,i,r,o)=>t+e+i+r+o+(n/2**32|0)|0,Ul=Sg(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map(n=>BigInt(n))),Lg=Ul[0],Ig=Ul[1],Yn=new Uint32Array(80),Xn=new Uint32Array(80);class Fg extends Mg{constructor(t){super(128,t,16,!1)}get(){const{Ah:t,Al:e,Bh:i,Bl:r,Ch:o,Cl:s,Dh:a,Dl:l,Eh:c,El:h,Fh:f,Fl:u,Gh:d,Gl:p,Hh:y,Hl:g}=this;return[t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g]}set(t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g){this.Ah=t|0,this.Al=e|0,this.Bh=i|0,this.Bl=r|0,this.Ch=o|0,this.Cl=s|0,this.Dh=a|0,this.Dl=l|0,this.Eh=c|0,this.El=h|0,this.Fh=f|0,this.Fl=u|0,this.Gh=d|0,this.Gl=p|0,this.Hh=y|0,this.Hl=g|0}process(t,e){for(let v=0;v<16;v++,e+=4)Yn[v]=t.getUint32(e),Xn[v]=t.getUint32(e+=4);for(let v=16;v<80;v++){const b=Yn[v-15]|0,k=Xn[v-15]|0,M=Ei(b,k,1)^Ei(b,k,8)^Yl(b,k,7),C=Ti(b,k,1)^Ti(b,k,8)^Xl(b,k,7),L=Yn[v-2]|0,_=Xn[v-2]|0,$=Ei(L,_,19)^ho(L,_,61)^Yl(L,_,6),I=Ti(L,_,19)^uo(L,_,61)^Xl(L,_,6),E=Pg(C,I,Xn[v-7],Xn[v-16]),P=Eg(E,M,$,Yn[v-7],Yn[v-16]);Yn[v]=P|0,Xn[v]=E|0}let{Ah:i,Al:r,Bh:o,Bl:s,Ch:a,Cl:l,Dh:c,Dl:h,Eh:f,El:u,Fh:d,Fl:p,Gh:y,Gl:g,Hh:m,Hl:x}=this;for(let v=0;v<80;v++){const b=Ei(f,u,14)^Ei(f,u,18)^ho(f,u,41),k=Ti(f,u,14)^Ti(f,u,18)^uo(f,u,41),M=f&d^~f&y,C=u&p^~u&g,L=Tg(x,k,C,Ig[v],Xn[v]),_=$g(L,m,b,M,Lg[v],Yn[v]),$=L|0,I=Ei(i,r,28)^ho(i,r,34)^ho(i,r,39),E=Ti(i,r,28)^uo(i,r,34)^uo(i,r,39),P=i&o^i&a^o&a,S=r&s^r&l^s&l;m=y|0,x=g|0,y=d|0,g=p|0,d=f|0,p=u|0,{h:f,l:u}=Tn(c|0,h|0,_|0,$|0),c=a|0,h=l|0,a=o|0,l=s|0,o=i|0,s=r|0;const w=_g($,E,S);i=Cg(w,_,I,P),r=w|0}({h:i,l:r}=Tn(this.Ah|0,this.Al|0,i|0,r|0)),{h:o,l:s}=Tn(this.Bh|0,this.Bl|0,o|0,s|0),{h:a,l}=Tn(this.Ch|0,this.Cl|0,a|0,l|0),{h:c,l:h}=Tn(this.Dh|0,this.Dl|0,c|0,h|0),{h:f,l:u}=Tn(this.Eh|0,this.El|0,f|0,u|0),{h:d,l:p}=Tn(this.Fh|0,this.Fl|0,d|0,p|0),{h:y,l:g}=Tn(this.Gh|0,this.Gl|0,y|0,g|0),{h:m,l:x}=Tn(this.Hh|0,this.Hl|0,m|0,x|0),this.set(i,r,o,s,a,l,c,h,f,u,d,p,y,g,m,x)}roundClean(){Vs(Yn,Xn)}destroy(){this.destroyed=!0,Vs(this.buffer),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class Rg extends Fg{constructor(){super(64);xt(this,"Ah",be[0]|0);xt(this,"Al",be[1]|0);xt(this,"Bh",be[2]|0);xt(this,"Bl",be[3]|0);xt(this,"Ch",be[4]|0);xt(this,"Cl",be[5]|0);xt(this,"Dh",be[6]|0);xt(this,"Dl",be[7]|0);xt(this,"Eh",be[8]|0);xt(this,"El",be[9]|0);xt(this,"Fh",be[10]|0);xt(this,"Fl",be[11]|0);xt(this,"Gh",be[12]|0);xt(this,"Gl",be[13]|0);xt(this,"Hh",be[14]|0);xt(this,"Hl",be[15]|0)}}const Dg=vg(()=>new Rg,kg(3));/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const $e=(n,t,e)=>ai(n,t,e),ql=Hs,jl=Ys,Zl=(...n)=>bg(...n),zg=n=>Xs(n),Bg=Nl,Og=n=>wg(n),fo=BigInt(0),Us=BigInt(1);function po(n,t=""){if(typeof n!="boolean"){const e=t&&`"${t}" `;throw new TypeError(e+"expected boolean, got type="+typeof n)}return n}function Ng(n){if(typeof n=="bigint"){if(!go(n))throw new RangeError("positive bigint expected, got "+n)}else ql(n);return n}function qs(n,t=""){if(typeof n!="number"){const e=t&&`"${t}" `;throw new TypeError(e+"expected number, got type="+typeof n)}if(!Number.isSafeInteger(n)){const e=t&&`"${t}" `;throw new RangeError(e+"expected safe integer, got "+n)}}function Kl(n){if(typeof n!="string")throw new TypeError("hex string expected, got "+typeof n);return n===""?fo:BigInt("0x"+n)}function Wg(n){return Kl(Ys(n))}function sr(n){return Kl(Ys(js(ai(n)).reverse()))}function Jl(n,t){if(Hs(t),t===0)throw new RangeError("zero length");n=Ng(n);const e=n.toString(16);if(e.length>t*2)throw new RangeError("number too large");return Xs(e.padStart(t*2,"0"))}function Hg(n,t){return Jl(n,t).reverse()}function Vg(n,t){if(n=$e(n),t=$e(t),n.length!==t.length)return!1;let e=0;for(let i=0;i<n.length;i++)e|=n[i]^t[i];return e===0}function js(n){return Uint8Array.from($e(n))}const go=n=>typeof n=="bigint"&&fo<=n;function Gg(n,t,e){return go(n)&&go(t)&&go(e)&&t<=n&&n<e}function Ql(n,t,e,i){if(!Gg(t,e,i))throw new RangeError("expected valid "+n+": "+e+" <= n < "+i+", got "+t)}function Yg(n){if(n<fo)throw new Error("expected non-negative bigint, got "+n);let t;for(t=0;n>fo;n>>=Us,t+=1);return t}const Xg=n=>(Us<<BigInt(n))-Us;function Zs(n,t={},e={}){if(Object.prototype.toString.call(n)!=="[object Object]")throw new TypeError("expected valid options object");function i(o,s,a){if(!a&&s!=="function"&&!Object.hasOwn(n,o))throw new TypeError(`param "${o}" is invalid: expected own property`);const l=n[o];if(a&&l===void 0)return;const c=typeof l;if(c!==s||l===null)throw new TypeError(`param "${o}" is invalid: expected ${s}, got ${c}`)}const r=(o,s)=>Object.entries(o).forEach(([a,l])=>i(a,l,s));r(t,!1),r(e,!0)}const th=()=>{throw new Error("not implemented")};/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const ve=BigInt(0),ge=BigInt(1),ci=BigInt(2),eh=BigInt(3),nh=BigInt(4),ih=BigInt(5),Ug=BigInt(7),rh=BigInt(8),qg=BigInt(9),oh=BigInt(16);function se(n,t){if(t<=ve)throw new Error("mod: expected positive modulus, got "+t);const e=n%t;return e>=ve?e:t+e}function bn(n,t,e){if(t<ve)throw new Error("pow2: expected non-negative exponent, got "+t);let i=n;for(;t-- >ve;)i*=i,i%=e;return i}function sh(n,t){if(n===ve)throw new Error("invert: expected non-zero number");if(t<=ve)throw new Error("invert: expected positive modulus, got "+t);let e=se(n,t),i=t,r=ve,o=ge;for(;e!==ve;){const a=i/e,l=i-e*a,c=r-o*a;i=e,e=l,r=o,o=c}if(i!==ge)throw new Error("invert: does not exist");return se(r,t)}function Ks(n,t,e){const i=n;if(!i.eql(i.sqr(t),e))throw new Error("Cannot find square root")}function ah(n,t){const e=n,i=(e.ORDER+ge)/nh,r=e.pow(t,i);return Ks(e,r,t),r}function jg(n,t){const e=n,i=(e.ORDER-ih)/rh,r=e.mul(t,ci),o=e.pow(r,i),s=e.mul(t,o),a=e.mul(e.mul(s,ci),o),l=e.mul(s,e.sub(a,e.ONE));return Ks(e,l,t),l}function Zg(n){const t=Js(n),e=ch(n),i=e(t,t.neg(t.ONE)),r=e(t,i),o=e(t,t.neg(i)),s=(n+Ug)/oh;return(a,l)=>{const c=a;let h=c.pow(l,s),f=c.mul(h,i);const u=c.mul(h,r),d=c.mul(h,o),p=c.eql(c.sqr(f),l),y=c.eql(c.sqr(u),l);h=c.cmov(h,f,p),f=c.cmov(d,u,y);const g=c.eql(c.sqr(f),l),m=c.cmov(h,f,g);return Ks(c,m,l),m}}function ch(n){if(n<eh)throw new Error("sqrt is not defined for small field");let t=n-ge,e=0;for(;t%ci===ve;)t/=ci,e++;let i=ci;const r=Js(n);for(;hh(r,i)===1;)if(i++>1e3)throw new Error("Cannot find square root: probably non-prime P");if(e===1)return ah;let o=r.pow(i,t);const s=(t+ge)/ci;return function(l,c){const h=l;if(h.is0(c))return c;if(hh(h,c)!==1)throw new Error("Cannot find square root");let f=e,u=h.mul(h.ONE,o),d=h.pow(c,t),p=h.pow(c,s);for(;!h.eql(d,h.ONE);){if(h.is0(d))return h.ZERO;let y=1,g=h.sqr(d);for(;!h.eql(g,h.ONE);)if(y++,g=h.sqr(g),y===f)throw new Error("Cannot find square root");const m=ge<<BigInt(f-y-1),x=h.pow(u,m);f=y,u=h.sqr(x),d=h.mul(d,u),p=h.mul(p,x)}return p}}function Kg(n){return n%nh===eh?ah:n%rh===ih?jg:n%oh===qg?Zg(n):ch(n)}const li=(n,t)=>(se(n,t)&ge)===ge,Jg=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function Qg(n){const t={ORDER:"bigint",BYTES:"number",BITS:"number"},e=Jg.reduce((i,r)=>(i[r]="function",i),t);if(Zs(n,e),qs(n.BYTES,"BYTES"),qs(n.BITS,"BITS"),n.BYTES<1||n.BITS<1)throw new Error("invalid field: expected BYTES/BITS > 0");if(n.ORDER<=ge)throw new Error("invalid field: expected ORDER > 1, got "+n.ORDER);return n}function t0(n,t,e){const i=n;if(e<ve)throw new Error("invalid exponent, negatives unsupported");if(e===ve)return i.ONE;if(e===ge)return t;let r=i.ONE,o=t;for(;e>ve;)e&ge&&(r=i.mul(r,o)),o=i.sqr(o),e>>=ge;return r}function lh(n,t,e=!1){const i=n,r=new Array(t.length).fill(e?i.ZERO:void 0),o=t.reduce((a,l,c)=>i.is0(l)?a:(r[c]=a,i.mul(a,l)),i.ONE),s=i.inv(o);return t.reduceRight((a,l,c)=>i.is0(l)?a:(r[c]=i.mul(a,r[c]),i.mul(a,l)),s),r}function hh(n,t){const e=n,i=(e.ORDER-ge)/ci,r=e.pow(t,i),o=e.eql(r,e.ONE),s=e.eql(r,e.ZERO),a=e.eql(r,e.neg(e.ONE));if(!o&&!s&&!a)throw new Error("invalid Legendre symbol result");return o?1:s?0:-1}function e0(n,t){if(t!==void 0&&ql(t),n<=ve)throw new Error("invalid n length: expected positive n, got "+n);if(t!==void 0&&t<1)throw new Error("invalid n length: expected positive bit length, got "+t);const e=Yg(n);if(t!==void 0&&t<e)throw new Error(`invalid n length: expected bit length (${e}) >= n.length (${t})`);const i=t!==void 0?t:e,r=Math.ceil(i/8);return{nBitLength:i,nByteLength:r}}const uh=new WeakMap;class fh{constructor(t,e={}){xt(this,"ORDER");xt(this,"BITS");xt(this,"BYTES");xt(this,"isLE");xt(this,"ZERO",ve);xt(this,"ONE",ge);xt(this,"_lengths");xt(this,"_mod");if(t<=ge)throw new Error("invalid field: expected ORDER > 1, got "+t);let i;this.isLE=!1,e!=null&&typeof e=="object"&&(typeof e.BITS=="number"&&(i=e.BITS),typeof e.sqrt=="function"&&Object.defineProperty(this,"sqrt",{value:e.sqrt,enumerable:!0}),typeof e.isLE=="boolean"&&(this.isLE=e.isLE),e.allowedLengths&&(this._lengths=Object.freeze(e.allowedLengths.slice())),typeof e.modFromBytes=="boolean"&&(this._mod=e.modFromBytes));const{nBitLength:r,nByteLength:o}=e0(t,i);if(o>2048)throw new Error("invalid field: expected ORDER of <= 2048 bytes");this.ORDER=t,this.BITS=r,this.BYTES=o,Object.freeze(this)}create(t){return se(t,this.ORDER)}isValid(t){if(typeof t!="bigint")throw new TypeError("invalid field element: expected bigint, got "+typeof t);return ve<=t&&t<this.ORDER}is0(t){return t===ve}isValidNot0(t){return!this.is0(t)&&this.isValid(t)}isOdd(t){return(t&ge)===ge}neg(t){return se(-t,this.ORDER)}eql(t,e){return t===e}sqr(t){return se(t*t,this.ORDER)}add(t,e){return se(t+e,this.ORDER)}sub(t,e){return se(t-e,this.ORDER)}mul(t,e){return se(t*e,this.ORDER)}pow(t,e){return t0(this,t,e)}div(t,e){return se(t*sh(e,this.ORDER),this.ORDER)}sqrN(t){return t*t}addN(t,e){return t+e}subN(t,e){return t-e}mulN(t,e){return t*e}inv(t){return sh(t,this.ORDER)}sqrt(t){let e=uh.get(this);return e||uh.set(this,e=Kg(this.ORDER)),e(this,t)}toBytes(t){return this.isLE?Hg(t,this.BYTES):Jl(t,this.BYTES)}fromBytes(t,e=!1){$e(t);const{_lengths:i,BYTES:r,isLE:o,ORDER:s,_mod:a}=this;if(i){if(t.length<1||!i.includes(t.length)||t.length>r)throw new Error("Field.fromBytes: expected "+i+" bytes, got "+t.length);const c=new Uint8Array(r);c.set(t,o?0:c.length-t.length),t=c}if(t.length!==r)throw new Error("Field.fromBytes: expected "+r+" bytes, got "+t.length);let l=o?sr(t):Wg(t);if(a&&(l=se(l,s)),!e&&!this.isValid(l))throw new Error("invalid field element: outside of range 0..ORDER");return l}invertBatch(t){return lh(this,t)}cmov(t,e,i){return po(i,"condition"),i?e:t}}Object.freeze(fh.prototype);function Js(n,t={}){return new fh(n,t)}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const mo=BigInt(0),Qs=BigInt(1);function dh(n,t){const e=t.negate();return n?e:t}function ta(n,t){const e=lh(n.Fp,t.map(i=>i.Z));return t.map((i,r)=>n.fromAffine(i.toAffine(e[r])))}function ph(n,t){if(!Number.isSafeInteger(n)||n<=0||n>t)throw new Error("invalid window size, expected [1.."+t+"], got W="+n)}function ea(n,t){ph(n,t);const e=Math.ceil(t/n)+1,i=2**(n-1),r=2**n,o=Xg(n),s=BigInt(n);return{windows:e,windowSize:i,mask:o,maxNumber:r,shiftBy:s}}function gh(n,t,e){const{windowSize:i,mask:r,maxNumber:o,shiftBy:s}=e;let a=Number(n&r),l=n>>s;a>i&&(a-=o,l+=Qs);const c=t*i,h=c+Math.abs(a)-1,f=a===0,u=a<0,d=t%2!==0;return{nextN:l,offset:h,isZero:f,isNeg:u,isNegF:d,offsetF:c}}const na=new WeakMap,mh=new WeakMap;function ia(n){return mh.get(n)||1}function yh(n){if(n!==mo)throw new Error("invalid wNAF")}class n0{constructor(t,e){xt(this,"BASE");xt(this,"ZERO");xt(this,"Fn");xt(this,"bits");this.BASE=t.BASE,this.ZERO=t.ZERO,this.Fn=t.Fn,this.bits=e}_unsafeLadder(t,e,i=this.ZERO){let r=t;for(;e>mo;)e&Qs&&(i=i.add(r)),r=r.double(),e>>=Qs;return i}precomputeWindow(t,e){const{windows:i,windowSize:r}=ea(e,this.bits),o=[];let s=t,a=s;for(let l=0;l<i;l++){a=s,o.push(a);for(let c=1;c<r;c++)a=a.add(s),o.push(a);s=a.double()}return o}wNAF(t,e,i){if(!this.Fn.isValid(i))throw new Error("invalid scalar");let r=this.ZERO,o=this.BASE;const s=ea(t,this.bits);for(let a=0;a<s.windows;a++){const{nextN:l,offset:c,isZero:h,isNeg:f,isNegF:u,offsetF:d}=gh(i,a,s);i=l,h?o=o.add(dh(u,e[d])):r=r.add(dh(f,e[c]))}return yh(i),{p:r,f:o}}wNAFUnsafe(t,e,i,r=this.ZERO){const o=ea(t,this.bits);for(let s=0;s<o.windows&&i!==mo;s++){const{nextN:a,offset:l,isZero:c,isNeg:h}=gh(i,s,o);if(i=a,!c){const f=e[l];r=r.add(h?f.negate():f)}}return yh(i),r}getPrecomputes(t,e,i){let r=na.get(e);return r||(r=this.precomputeWindow(e,t),t!==1&&(typeof i=="function"&&(r=i(r)),na.set(e,r))),r}cached(t,e,i){const r=ia(t);return this.wNAF(r,this.getPrecomputes(r,t,i),e)}unsafe(t,e,i,r){const o=ia(t);return o===1?this._unsafeLadder(t,e,r):this.wNAFUnsafe(o,this.getPrecomputes(o,t,i),e,r)}createCache(t,e){ph(e,this.bits),mh.set(t,e),na.delete(t)}hasCache(t){return ia(t)!==1}}function xh(n,t,e){if(t){if(t.ORDER!==n)throw new Error("Field.ORDER must match order: Fp == p, Fn == n");return Qg(t),t}else return Js(n,{isLE:e})}function i0(n,t,e={},i){if(i===void 0&&(i=n==="edwards"),!t||typeof t!="object")throw new Error(`expected valid ${n} CURVE object`);for(const l of["p","n","h"]){const c=t[l];if(!(typeof c=="bigint"&&c>mo))throw new Error(`CURVE.${l} must be positive bigint`)}const r=xh(t.p,e.Fp,i),o=xh(t.n,e.Fn,i),a=["Gx","Gy","a","d"];for(const l of a)if(!r.isValid(t[l]))throw new Error(`CURVE.${l} must be valid field element of CURVE.Fp`);return t=Object.freeze(Object.assign({},t)),{CURVE:t,Fp:r,Fn:o}}function r0(n,t){return function(i){const r=n(i);return{secretKey:r,publicKey:t(r)}}}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const Un=BigInt(0),he=BigInt(1),ra=BigInt(2),o0=BigInt(8);function s0(n,t,e,i){const r=n.sqr(e),o=n.sqr(i),s=n.add(n.mul(t.a,r),o),a=n.add(n.ONE,n.mul(t.d,n.mul(r,o)));return n.eql(s,a)}function a0(n,t={}){const e=t,i=i0("edwards",n,e,e.FpFnLE),{Fp:r,Fn:o}=i;let s=i.CURVE;const{h:a}=s;Zs(e,{},{uvRatio:"function"});const l=ra<<BigInt(o.BYTES*8)-he,c=g=>r.create(g),h=e.uvRatio===void 0?(g,m)=>{try{return{isValid:!0,value:r.sqrt(r.div(g,m))}}catch{return{isValid:!1,value:Un}}}:e.uvRatio;if(!s0(r,s,s.Gx,s.Gy))throw new Error("bad curve params: generator point");function f(g,m,x=!1){const v=x?he:Un;return Ql("coordinate "+g,m,v,l),m}function u(g){if(!(g instanceof d))throw new Error("EdwardsPoint expected")}const y=class y{constructor(m,x,v,b){xt(this,"X");xt(this,"Y");xt(this,"Z");xt(this,"T");this.X=f("x",m),this.Y=f("y",x),this.Z=f("z",v,!0),this.T=f("t",b),Object.freeze(this)}static CURVE(){return s}static fromAffine(m){if(m instanceof y)throw new Error("extended point not allowed");const{x,y:v}=m||{};return f("x",x),f("y",v),new y(x,v,he,c(x*v))}static fromBytes(m,x=!1){const v=r.BYTES,{a:b,d:k}=s;m=js($e(m,v,"point")),po(x,"zip215");const M=js(m),C=m[v-1];M[v-1]=C&-129;const L=sr(M),_=x?l:r.ORDER;Ql("point.y",L,Un,_);const $=c(L*L),I=c($-he),E=c(k*$-b);let{isValid:P,value:S}=h(I,E);if(!P)throw new Error("bad point: invalid y coordinate");const w=(S&he)===he,A=(C&128)!==0;if(!x&&S===Un&&A)throw new Error("bad point: x=0 and x_0=1");return A!==w&&(S=c(-S)),y.fromAffine({x:S,y:L})}static fromHex(m,x=!1){return y.fromBytes(zg(m),x)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}precompute(m=8,x=!0){return p.createCache(this,m),x||this.multiply(ra),this}assertValidity(){const m=this,{a:x,d:v}=s;if(m.is0())throw new Error("bad point: ZERO");const{X:b,Y:k,Z:M,T:C}=m,L=c(b*b),_=c(k*k),$=c(M*M),I=c($*$),E=c(L*x),P=c($*c(E+_)),S=c(I+c(v*c(L*_)));if(P!==S)throw new Error("bad point: equation left != right (1)");const w=c(b*k),A=c(M*C);if(w!==A)throw new Error("bad point: equation left != right (2)")}equals(m){u(m);const{X:x,Y:v,Z:b}=this,{X:k,Y:M,Z:C}=m,L=c(x*C),_=c(k*b),$=c(v*C),I=c(M*b);return L===_&&$===I}is0(){return this.equals(y.ZERO)}negate(){return new y(c(-this.X),this.Y,this.Z,c(-this.T))}double(){const{a:m}=s,{X:x,Y:v,Z:b}=this,k=c(x*x),M=c(v*v),C=c(ra*c(b*b)),L=c(m*k),_=x+v,$=c(c(_*_)-k-M),I=L+M,E=I-C,P=L-M,S=c($*E),w=c(I*P),A=c($*P),T=c(E*I);return new y(S,w,T,A)}add(m){u(m);const{a:x,d:v}=s,{X:b,Y:k,Z:M,T:C}=this,{X:L,Y:_,Z:$,T:I}=m,E=c(b*L),P=c(k*_),S=c(C*v*I),w=c(M*$),A=c((b+k)*(L+_)-E-P),T=w-S,R=w+S,F=c(P-x*E),D=c(A*T),z=c(R*F),B=c(A*F),H=c(T*R);return new y(D,z,H,B)}subtract(m){return u(m),this.add(m.negate())}multiply(m){if(!o.isValidNot0(m))throw new RangeError("invalid scalar: expected 1 <= sc < curve.n");const{p:x,f:v}=p.cached(this,m,b=>ta(y,b));return ta(y,[x,v])[0]}multiplyUnsafe(m){if(!o.isValid(m))throw new RangeError("invalid scalar: expected 0 <= sc < curve.n");return m===Un?y.ZERO:this.is0()||m===he?this:p.unsafe(this,m,x=>ta(y,x))}isSmallOrder(){return this.clearCofactor().is0()}isTorsionFree(){return p.unsafe(this,s.n).is0()}toAffine(m){const x=this;let v=m;const{X:b,Y:k,Z:M}=x,C=x.is0();v==null&&(v=C?o0:r.inv(M));const L=c(b*v),_=c(k*v),$=r.mul(M,v);if(C)return{x:Un,y:he};if($!==he)throw new Error("invZ was invalid");return{x:L,y:_}}clearCofactor(){return a===he?this:this.multiplyUnsafe(a)}toBytes(){const{x:m,y:x}=this.toAffine(),v=r.toBytes(x);return v[v.length-1]|=m&he?128:0,v}toHex(){return jl(this.toBytes())}toString(){return`<Point ${this.is0()?"ZERO":this.toHex()}>`}};xt(y,"BASE",new y(s.Gx,s.Gy,he,c(s.Gx*s.Gy))),xt(y,"ZERO",new y(Un,he,he,Un)),xt(y,"Fp",r),xt(y,"Fn",o);let d=y;const p=new n0(d,o.BITS);return o.BITS>=8&&d.BASE.precompute(8),Object.freeze(d.prototype),Object.freeze(d),d}class ar{constructor(t){xt(this,"ep");this.ep=t}static fromBytes(t){th()}static fromHex(t){th()}get x(){return this.toAffine().x}get y(){return this.toAffine().y}clearCofactor(){return this}assertValidity(){this.ep.assertValidity()}toAffine(t){return this.ep.toAffine(t)}toHex(){return jl(this.toBytes())}toString(){return this.toHex()}isTorsionFree(){return!0}isSmallOrder(){return!1}add(t){return this.assertSame(t),this.init(this.ep.add(t.ep))}subtract(t){return this.assertSame(t),this.init(this.ep.subtract(t.ep))}multiply(t){return this.init(this.ep.multiply(t))}multiplyUnsafe(t){return this.init(this.ep.multiplyUnsafe(t))}double(){return this.init(this.ep.double())}negate(){return this.init(this.ep.negate())}precompute(t,e){return this.ep.precompute(t,e),this}}xt(ar,"BASE"),xt(ar,"ZERO"),xt(ar,"Fp"),xt(ar,"Fn");function c0(n,t,e={}){if(typeof t!="function")throw new Error('"hash" function param is required');const i=t,r=e;Zs(r,{},{adjustScalarBytes:"function",randomBytes:"function",domain:"function",prehash:"function",zip215:"boolean",mapToCurve:"function"});const{prehash:o}=r,{BASE:s,Fp:a,Fn:l}=n,c=i.outputLen,h=2*a.BYTES;if(c!==void 0&&(qs(c,"hash.outputLen"),c!==h))throw new Error(`hash.outputLen must be ${h}, got ${c}`);const f=r.randomBytes===void 0?Og:r.randomBytes,u=r.adjustScalarBytes===void 0?E=>E:r.adjustScalarBytes,d=r.domain===void 0?(E,P,S)=>{if(po(S,"phflag"),P.length||S)throw new Error("Contexts/pre-hash are not supported");return E}:r.domain;function p(E){return l.create(sr(E))}function y(E){const P=C.secretKey;$e(E,C.secretKey,"secretKey");const S=$e(i(E),2*P,"hashedSecretKey"),w=u(S.slice(0,P)),A=S.slice(P,2*P),T=p(w);return{head:w,prefix:A,scalar:T}}function g(E){const{head:P,prefix:S,scalar:w}=y(E),A=s.multiply(w),T=A.toBytes();return{head:P,prefix:S,scalar:w,point:A,pointBytes:T}}function m(E){return g(E).pointBytes}function x(E=Uint8Array.of(),...P){const S=Zl(...P);return p(i(d(S,$e(E,void 0,"context"),!!o)))}function v(E,P,S={}){E=$e(E,void 0,"message"),o&&(E=o(E));const{prefix:w,scalar:A,pointBytes:T}=g(P),R=x(S.context,w,E),F=s.multiply(R).toBytes(),D=x(S.context,F,T,E),z=l.create(R+D*A);if(!l.isValid(z))throw new Error("sign failed: invalid s");const B=Zl(F,l.toBytes(z));return $e(B,C.signature,"result")}const b={zip215:r.zip215};function k(E,P,S,w=b){const{context:A}=w,T=w.zip215===void 0?!!b.zip215:w.zip215,R=C.signature;E=$e(E,R,"signature"),P=$e(P,void 0,"message"),S=$e(S,C.publicKey,"publicKey"),T!==void 0&&po(T,"zip215"),o&&(P=o(P));const F=R/2,D=E.subarray(0,F),z=sr(E.subarray(F,R));let B,H,J;try{B=n.fromBytes(S,T),H=n.fromBytes(D,T),J=s.multiplyUnsafe(z)}catch{return!1}if(!T&&B.isSmallOrder())return!1;const X=x(A,D,S,P);return H.add(B.multiplyUnsafe(X)).subtract(J).clearCofactor().is0()}const M=a.BYTES,C={secretKey:M,publicKey:M,signature:2*M,seed:M};function L(E){return E=E===void 0?f(C.seed):E,$e(E,C.seed,"seed")}function _(E){return Bg(E)&&E.length===C.secretKey}function $(E,P){try{return!!n.fromBytes(E,P===void 0?b.zip215:P)}catch{return!1}}const I={getExtendedPublicKey:g,randomSecretKey:L,isValidSecretKey:_,isValidPublicKey:$,toMontgomery(E){const{y:P}=n.fromBytes(E),S=C.publicKey,w=S===32;if(!w&&S!==57)throw new Error("only defined for 25519 and 448");const A=w?a.div(he+P,he-P):a.div(P-he,P+he);return a.toBytes(A)},toMontgomerySecret(E){const P=C.secretKey;$e(E,P);const S=i(E.subarray(0,P));return u(S).subarray(0,P)}};return Object.freeze(C),Object.freeze(I),Object.freeze({keygen:r0(L,m),getPublicKey:m,sign:v,verify:k,utils:I,Point:n,lengths:C})}/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */const l0=BigInt(0),cr=BigInt(1),bh=BigInt(2),h0=BigInt(5),u0=BigInt(8),lr=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffed"),vh={p:lr,n:BigInt("0x1000000000000000000000000000000014def9dea2f79cd65812631a5cf5d3ed"),h:u0,a:BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffec"),d:BigInt("0x52036cee2b6ffe738cc740797779e89800700a4d4141d8ab75eb4dca135978a3"),Gx:BigInt("0x216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a"),Gy:BigInt("0x6666666666666666666666666666666666666666666666666666666666666658")};function f0(n){const t=BigInt(10),e=BigInt(20),i=BigInt(40),r=BigInt(80),o=lr,a=n*n%o*n%o,l=bn(a,bh,o)*a%o,c=bn(l,cr,o)*n%o,h=bn(c,h0,o)*c%o,f=bn(h,t,o)*h%o,u=bn(f,e,o)*f%o,d=bn(u,i,o)*u%o,p=bn(d,r,o)*d%o,y=bn(p,r,o)*d%o,g=bn(y,t,o)*h%o;return{pow_p_5_8:bn(g,bh,o)*n%o,b2:a}}function d0(n){return n[0]&=248,n[31]&=127,n[31]|=64,n}const oa=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752");function wh(n,t){const e=lr,i=se(t*t*t,e),r=se(i*i*t,e),o=f0(n*r).pow_p_5_8;let s=se(n*i*o,e);const a=se(t*s*s,e),l=s,c=se(s*oa,e),h=a===n,f=a===se(-n,e),u=a===se(-n*oa,e);return h&&(s=l),(f||u)&&(s=c),li(s,e)&&(s=se(-s,e)),{isValid:h||f,value:s}}const hi=a0(vh,{uvRatio:wh}),ui=hi.Fp,p0=hi.Fn;function g0(n){return c0(hi,Dg,Object.assign({adjustScalarBytes:d0,zip215:!0},n))}const m0=g0({}),kh=oa,y0=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),Mh=n=>wh(cr,n),x0=BigInt("0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff"),b0=n=>ui.create(sr(n)&x0),Ne=class Ne extends ar{constructor(t){super(t)}static fromAffine(t){return new Ne(hi.fromAffine(t))}assertSame(t){if(!(t instanceof Ne))throw new Error("RistrettoPoint expected")}init(t){return new Ne(t)}static fromBytes(t){ai(t,32);const{a:e,d:i}=vh,r=lr,o=b=>ui.create(b),s=b0(t);if(!Vg(ui.toBytes(s),t)||li(s,r))throw new Error("invalid ristretto255 encoding 1");const a=o(s*s),l=o(cr+e*a),c=o(cr-e*a),h=o(l*l),f=o(c*c),u=o(e*i*h-f),{isValid:d,value:p}=Mh(o(u*f)),y=o(p*c),g=o(p*y*u);let m=o((s+s)*y);li(m,r)&&(m=o(-m));const x=o(l*g),v=o(m*x);if(!d||li(v,r)||x===l0)throw new Error("invalid ristretto255 encoding 2");return new Ne(new hi(m,x,cr,v))}static fromHex(t){return Ne.fromBytes(Xs(t))}toBytes(){let{X:t,Y:e,Z:i,T:r}=this.ep;const o=lr,s=g=>ui.create(g),a=s(s(i+e)*s(i-e)),l=s(t*e),c=s(l*l),{value:h}=Mh(s(a*c)),f=s(h*a),u=s(h*l),d=s(f*u*r);let p;if(li(r*d,o)){let g=s(e*kh),m=s(t*kh);t=g,e=m,p=s(f*y0)}else p=u;li(t*d,o)&&(e=s(-e));let y=s((i-e)*p);return li(y,o)&&(y=s(-y)),ui.toBytes(y)}equals(t){this.assertSame(t);const{X:e,Y:i}=this.ep,{X:r,Y:o}=t.ep,s=c=>ui.create(c),a=s(e*o)===s(i*r),l=s(i*o)===s(e*r);return a||l}is0(){return this.equals(Ne.ZERO)}};xt(Ne,"BASE",new Ne(hi.BASE)),xt(Ne,"ZERO",new Ne(hi.ZERO)),xt(Ne,"Fp",ui),xt(Ne,"Fn",p0);let $i=Ne;Object.freeze($i.BASE),Object.freeze($i.ZERO),Object.freeze($i.prototype),Object.freeze($i);const Ah="katucharts_license",v0=7*24*60*60*1e3,w0=60*60*1e3,k0=8e3,UA="3ab57dfcba56a3c6b1949906ef075ff6536f2a40b328a77733e4d8d837cb6abe";class M0{constructor(){this.licenseKey=null,this.payload=null,this.offlineValid=!1,this.verifyUrl=null,this.mode="lenient",this.gracePeriodMs=v0,this.recheckIntervalMs=w0,this.cache=null,this.pending=!1,this.timer=null,this.listeners=new Set,this.lastEmitted=null}configure(t){t.verifyUrl!==void 0&&(this.verifyUrl=t.verifyUrl||null),t.mode&&(this.mode=t.mode),t.gracePeriodMs!==void 0&&(this.gracePeriodMs=t.gracePeriodMs),t.recheckIntervalMs!==void 0&&(this.recheckIntervalMs=t.recheckIntervalMs),this.offlineValid&&this.verifyUrl&&this.startOnlineChecks(),this.emit()}setKey(t){this.licenseKey=t,this.payload=null,this.offlineValid=!1,this.cache=null;const e=this.validate(t);return e&&(this.payload=e,this.offlineValid=!0,this.cache=this.loadCache(e.kid)),this.offlineValid&&this.verifyUrl&&this.startOnlineChecks(),this.emit(),this.isLicensed()}isLicensed(){var t;return this.offlineValid?this.verifyUrl?((t=this.cache)==null?void 0:t.lastResult)==="invalid"?!1:this.cache&&this.cache.lastValidAt>0&&sa()-this.cache.lastValidAt<this.gracePeriodMs||this.pending?!0:this.mode!=="strict":!0:!1}getPayload(){return this.payload}onChange(t){return this.listeners.add(t),()=>this.listeners.delete(t)}startOnlineChecks(){var t,e;this.verifyOnline(),this.timer==null&&typeof setInterval<"u"&&this.recheckIntervalMs>0&&(this.timer=setInterval(()=>void this.verifyOnline(),this.recheckIntervalMs),(e=(t=this.timer)==null?void 0:t.unref)==null||e.call(t))}async verifyOnline(){if(!this.verifyUrl||!this.licenseKey||!this.payload||typeof fetch>"u")return;this.pending=!0;const t=this.payload.kid??"",e=typeof window<"u"?window.location.hostname:"";let i="unreachable";try{const r=typeof AbortController<"u"?new AbortController:null,o=r?setTimeout(()=>r.abort(),k0):null,s=await fetch(this.verifyUrl,{method:"POST",headers:{"content-type":"application/json"},body:JSON.stringify({key:this.licenseKey,domain:e,kid:t}),signal:r==null?void 0:r.signal});o&&clearTimeout(o),s.ok?i=(await s.json()).valid?"valid":"invalid":s.status>=400&&s.status<500&&(i="invalid")}catch{i="unreachable"}this.pending=!1,this.applyResult(t,i)}applyResult(t,e){const i=this.cache,r={kid:t,lastResult:e,lastValidAt:e==="valid"?sa():(i==null?void 0:i.lastValidAt)??0,updatedAt:sa()};this.cache=r,this.saveCache(r),this.emit()}emit(){const t=this.isLicensed();t!==this.lastEmitted&&(this.lastEmitted=t,this.listeners.forEach(e=>{try{e(t)}catch{}}))}loadCache(t){if(!t||typeof localStorage>"u")return null;try{const e=localStorage.getItem(Ah);if(!e)return null;const i=JSON.parse(e);return i.kid===t?i:null}catch{return null}}saveCache(t){if(!(typeof localStorage>"u"))try{localStorage.setItem(Ah,JSON.stringify(t))}catch{}}validate(t){try{const e=t.indexOf(".");if(e===-1)return null;const i=t.substring(0,e),r=t.substring(e+1),o="3ab57dfcba56a3c6b1949906ef075ff6536f2a40b328a77733e4d8d837cb6abe",s=new TextEncoder().encode(i);if(!m0.verify(Sh(r),s,Sh(o)))return null;const a=atob(i),l=JSON.parse(a);return!l.customer||!this.checkExpiry(l.expiry)||!this.checkDomain(l.domains)?null:l}catch{return null}}checkExpiry(t){if(!t)return!0;try{return new Date(t).getTime()>=Date.now()}catch{return!1}}checkDomain(t){if(!t||t.length===0||typeof window>"u")return!0;const e=window.location.hostname;return t.some(i=>{if(i.startsWith("*.")){const r=i.substring(1);return e.endsWith(r)||e===i.substring(2)}return e===i})}}function sa(){return Date.now()}function Sh(n){if(n.length%2!==0)throw new Error("invalid hex length");const t=new Uint8Array(n.length/2);for(let e=0;e<t.length;e++)t[e]=parseInt(n.slice(e*2,e*2+2),16);return t}const Qe=new M0;class A0{constructor(){this.indicators=new Map}register(t){this.indicators.set(t.name.toLowerCase(),t)}get(t){return this.indicators.get(t.toLowerCase())}getAll(){return new Map(this.indicators)}}const _h=globalThis,S0=_h.__katuIndicatorRegistry||(_h.__katuIndicatorRegistry=new A0),aa={sma:"sma",ema:"ema",wma:"wma",rsi:"rsi",macd:"macd",stochastic:"stochastic",stoch:"stochastic",bb:"bollingerbands",bollinger:"bollingerbands",bollingerbands:"bollingerbands",atr:"atr",vwap:"vwap",obv:"obv",vbp:"vbp",ichimoku:"ichimoku",ikh:"ichimoku",cci:"cci",roc:"roc",momentum:"momentum",mom:"momentum",dema:"dema",tema:"tema",adx:"adx",psar:"psar"},_0=new Set(Object.keys(aa));function ca(n){return!!n&&_0.has(n.toLowerCase())}const Ch="#7798BF",la="#f15c80",C0="#90ed7d";function P0(n){return n.map((t,e)=>{const i=t.close??t.y??0;return{x:t.x??e,open:t.open??i,high:t.high??i,low:t.low??i,close:i,volume:t.volume??t.z}})}function E0(n,t){const e=n.linkedTo;if(typeof e=="string"){const i=t.find(r=>r.id===e);if(i)return i}return typeof e=="number"&&t[e]?t[e]:t.find(i=>i!==n&&!ca(i._internalType))??null}const T0={sma:"SMA",ema:"EMA",wma:"WMA",rsi:"RSI",macd:"MACD",stochastic:"Stochastic",bollingerbands:"Bollinger Bands",atr:"ATR",vwap:"VWAP",obv:"OBV",ichimoku:"Ichimoku",cci:"CCI",roc:"ROC",momentum:"Momentum",dema:"DEMA",tema:"TEMA",adx:"ADX",psar:"PSAR"};function $0(n,t){const e=T0[n]||n.toUpperCase(),i=t.period;return i?`${e} (${i})`:e}function tn(n,t,e,i){return{...n,type:t,_internalType:t,_processedData:e,data:e,params:void 0,linkedTo:void 0,...i}}function L0(n,t){return n.map((e,i)=>{var r;return{x:e.x,low:((r=t[i])==null?void 0:r.y)??null,high:e.y??null}})}function I0(n,t,e,i){const r=[],o=n.color||Ch,s=n.lineWidth??1.5,a=n.name||$0(t,i);if(e.bands){if(r.push(tn(n,"arearange",L0(e.bands.upper,e.bands.lower),{name:`${a} band`,color:n.color||Ch,fillOpacity:n.fillOpacity??.15,lineWidth:0,showInLegend:!1,enableMouseTracking:!1})),t==="ichimoku")r.push(tn(n,"line",e.values,{name:`${a} Tenkan`,color:o,lineWidth:s,marker:{enabled:!1}})),e.signal&&r.push(tn(n,"line",e.signal,{name:`${a} Kijun`,color:la,lineWidth:s,marker:{enabled:!1}}));else{const l=e.bands.middle??e.values;r.push(tn(n,"line",l,{name:a,color:o,lineWidth:s,marker:{enabled:!1}}))}return r}return e.histogram?(r.push(tn(n,"column",e.histogram,{name:`${a} Histogram`,color:C0,showInLegend:!1,enableMouseTracking:!1})),r.push(tn(n,"line",e.values,{name:a,color:o,lineWidth:s,marker:{enabled:!1}})),e.signal&&r.push(tn(n,"line",e.signal,{name:`${a} Signal`,color:la,lineWidth:s,marker:{enabled:!1}})),r):e.signal?(r.push(tn(n,"line",e.values,{name:`${a} %K`,color:o,lineWidth:s,marker:{enabled:!1}})),r.push(tn(n,"line",e.signal,{name:`${a} %D`,color:la,lineWidth:s,marker:{enabled:!1}})),r):t==="vbp"?(r.push(tn(n,"vbp",e.values,{name:a,showInLegend:n.showInLegend??!1})),r):t==="psar"?(r.push(tn(n,"scatter",e.values,{name:a,color:o,marker:{enabled:!0,radius:2,symbol:"circle"}})),r):(r.push(tn(n,"line",e.values,{name:a,color:o,lineWidth:s,marker:{enabled:!1}})),r)}function F0(n){if(!n.some(e=>ca(e._internalType)))return n;const t=[];for(const e of n){const i=(e._internalType||"").toLowerCase();if(!ca(i)){t.push(e);continue}const r=S0.get(aa[i]),o=E0(e,n);if(!r||!o){t.push({...e,type:"line",_internalType:"line",_processedData:[],data:[]});continue}const s=e.params||{},a=r.calculate(P0(o._processedData||[]),s);t.push(...I0(e,aa[i],a,s))}return t.map((e,i)=>({...e,index:i}))}let yo={};function ha(n){yo=le(yo,n)}function Ph(){return yo}const Qn=class Qn{parse(t){var o;(o=t.chart)!=null&&o.palette&&!t.colors&&(t={...t,colors:Pl(t.chart.palette)});const e=t.theme?$l(t.theme):void 0,i=this.mergeWithDefaults(t,e),r=this.normalize(i);return this.toInternal(r)}mergeWithDefaults(t,e){return le(le({},Ns),yo,e??{},t)}normalize(t){var c,h,f;const e={...t};e.xAxis&&!Array.isArray(e.xAxis)&&(e.xAxis=[e.xAxis]),e.yAxis&&!Array.isArray(e.yAxis)&&(e.yAxis=[e.yAxis]),e.colorAxis&&!Array.isArray(e.colorAxis)&&(e.colorAxis=[e.colorAxis]),(!e.xAxis||Array.isArray(e.xAxis)&&e.xAxis.length===0)&&(e.xAxis=[le({},Ns.xAxis)]),(!e.yAxis||Array.isArray(e.yAxis)&&e.yAxis.length===0)&&(e.yAxis=[le({},Ns.yAxis)]);for(const u of[e.xAxis,e.yAxis])if(Array.isArray(u))for(const d of u)d.categories&&d.categories.length>0&&(d.type="category");e.series&&!Array.isArray(e.series)&&(e.series=[e.series]);const i=((c=e.chart)==null?void 0:c.type)||"line",r=i==="bar"||Array.isArray(e.series)&&e.series.some(u=>u.type==="bar");if(e.chart&&(r?(e.chart.inverted=!0,e.chart._invertedFromBar=!0):e.chart._invertedFromBar&&(e.chart.inverted=!1,delete e.chart._invertedFromBar)),(i==="manhattan"||Array.isArray(e.series)&&e.series.some(u=>u.type==="manhattan"))&&Array.isArray(e.xAxis)&&(!Array.isArray(e.series)||e.series.some(d=>(d.type==="manhattan"||!d.type&&i==="manhattan")&&d.showChromosomeLabels!==!1)))for(const d of e.xAxis)d.labels={...d.labels,enabled:!1},d.tickLength=0;const s=!!((h=e.chart)!=null&&h.polar),a=(f=e.chart)==null?void 0:f.type;s&&Array.isArray(e.series)&&(e.series=e.series.map(u=>{const d=u.type||a||"line",p=!u.type||u.type==="line"||u.type==="spline",y=!u.type&&(a==="line"||a==="spline"),g={...u,type:p?"radar":u.type};return u.type==="line"||u.type==="spline"||y?g._polarSubType="line":(d==="column"||d==="bar")&&(g._polarSubType="column"),g}));const l=Array.isArray(e.colorAxis)?e.colorAxis[0]:e.colorAxis;return Array.isArray(e.series)&&(e.series=e.series.map(u=>{const d=this.normalizeSeries(u,s&&(!u.type||u.type==="line"||u.type==="spline")?"radar":i,e.plotOptions);return(d.type==="heatmap"||d.type==="treemap")&&l&&!d.colorAxis&&(d.colorAxis=l),(d.type==="map"||d.type==="mappoint"||d.type==="flowmap")&&this.applyMapTopLevelOptions(d,e,l),d})),this.applyAutoHeight(e),e}applyAutoHeight(t){var i;const e=t.chart;if(e){if(e._autoScrollMinHeight!=null){const r=e.scrollablePlotArea;if(r&&typeof r=="object"&&r.minHeight===e._autoScrollMinHeight){const o={...r};delete o.minHeight,e.scrollablePlotArea=Object.keys(o).length?o:void 0}delete e._autoScrollMinHeight}if(e.height==null&&e.inverted){const r=Array.isArray(t.xAxis)?t.xAxis:t.xAxis?[t.xAxis]:[];let o=0;for(const s of r){const a=((i=s==null?void 0:s.categories)==null?void 0:i.length)??0;a>o&&(o=a)}if(o>12){const s=Math.min(o*16+130,6e3),a=e.scrollablePlotArea&&typeof e.scrollablePlotArea=="object"?e.scrollablePlotArea:{};e.scrollablePlotArea={...a,minHeight:s},e._autoScrollMinHeight=s;return}}}}applyMapTopLevelOptions(t,e,i){var r,o;i&&(!t.colorAxis||typeof t.colorAxis!="object")&&(t.colorAxis=i),t.mapNavigation==null&&e.mapNavigation!=null&&(t.mapNavigation=e.mapNavigation),t.projection==null&&((r=e.mapView)==null?void 0:r.projection)!=null&&(t.projection=e.mapView.projection),t.mapData==null&&((o=e.chart)==null?void 0:o.map)!=null&&(t.mapData=e.chart.map)}static mergeDataLabels(t){let e;for(const i of t)i!==void 0&&(e=Qn.mergeTwoDataLabels(e,i));return e}static mergeTwoDataLabels(t,e){if(t===void 0)return e;if(e===void 0)return t;const i=Array.isArray(t)?t:[t],r=Array.isArray(e)?e:[e],o=Math.max(i.length,r.length),s=[];for(let a=0;a<o;a++){const l=i[a]??i[0]??{},c=r[a]??r[0]??{};s.push(le({},l,c))}return s.length===1&&!Array.isArray(t)&&!Array.isArray(e)?s[0]:s}normalizeSeries(t,e,i){let r={...t};if(r.type?delete r._typeFromChart:(r.type=e,r._typeFromChart=!0),i){const o=i.series||{},s=i[r.type]||{},a=r._polarSubType,l=a?i[a]||{}:{},c=Qn.mergeDataLabels([o,l,s,r].map(h=>h.dataLabels));r=le({},o,l,s,r),c!==void 0&&(r.dataLabels=c)}if(Array.isArray(r.data)){const o=r.turboThreshold??1e3;if(r.data.length>o){const s=r.data[0];if(s!==null&&typeof s=="object"&&!Array.isArray(s)&&console.warn(`KatuCharts: series data length (${r.data.length}) exceeds turboThreshold (${o}). Use array format (numbers or [x,y] pairs) for better performance.`),typeof s=="number"||Array.isArray(s)&&typeof s[0]=="number")return r.data=this.normalizeDataBulk(r.data,r),r}r.data=r.data.map((s,a)=>this.normalizeDataPoint(s,a,r))}else r.data!=null&&(r.data=[]);return r}defaultArrayKeys(t,e){return t?Qn.OHLC_TYPES.has(t)?e>=5?["x","open","high","low","close"]:["open","high","low","close"]:Qn.RANGE_TYPES.has(t)?e>=3?["x","low","high"]:["low","high"]:null:null}normalizeDataPoint(t,e,i){if(t===null)return{x:(i.pointStart??0)+e*(i.pointInterval??1),y:null};if(typeof t=="number")return{x:(i.pointStart??0)+e*(i.pointInterval??1),y:t};if(Array.isArray(t)&&t.length===5&&i.type==="boxplot"){const r=t;return{x:(i.pointStart??0)+e*(i.pointInterval??1),low:r[0],q1:r[1],median:r[2],q3:r[3],high:r[4]}}if(Array.isArray(t)&&i.type==="flowmap")return{from:t[0],to:t[1],weight:t[2]};if(Array.isArray(t)){if(i.keys&&i.keys.length>0){const o={};for(let s=0;s<i.keys.length&&s<t.length;s++)o[i.keys[s]]=t[s];return o.x===void 0&&(!Pi.has(i.type)||!o.name)&&(o.x=(i.pointStart??0)+e*(i.pointInterval??1)),o}const r=this.defaultArrayKeys(i.type,t.length);if(r){const o={};for(let s=0;s<r.length&&s<t.length;s++)o[r[s]]=t[s];return o.x===void 0&&(o.x=(i.pointStart??0)+e*(i.pointInterval??1)),o.close!==void 0&&o.y===void 0&&(o.y=o.close),o}if(typeof t[0]=="string"){const o={name:t[0],y:t[1]};return Pi.has(i.type)||(o.x=(i.pointStart??0)+e*(i.pointInterval??1)),o}return t.length>=3?{x:t[0],y:t[1],z:t[2]}:{x:t[0],y:t[1]}}if(typeof t=="object"){const r={...t},o=i.type==="map"||i.type==="mappoint"||i.type==="flowmap",s=!Pi.has(i.type);return!o&&r.x===void 0&&(s||!r.name)&&(r.x=(i.pointStart??0)+e*(i.pointInterval??1)),r}return{y:null}}normalizeDataBulk(t,e){const i=t.length,r=new Array(i),o=e.pointStart??0,s=e.pointInterval??1,a=t[0];if(typeof a=="number")for(let l=0;l<i;l++)r[l]={x:o+l*s,y:t[l]};else{const l=Array.isArray(a)?this.defaultArrayKeys(e.type,a.length):null;if(l)for(let c=0;c<i;c++){const h=t[c],f={};for(let u=0;u<l.length&&u<h.length;u++)f[l[u]]=h[u];f.x===void 0&&(f.x=o+c*s),f.close!==void 0&&f.y===void 0&&(f.y=f.close),r[c]=f}else for(let c=0;c<i;c++){const h=t[c];h.length>=3?r[c]={x:h[0],y:h[1],z:h[2]}:r[c]={x:h[0],y:h[1]}}}return r}enforceCredits(t){return Qe.isLicensed()?t:{...t,enabled:!0,text:!t.text||!t.text.trim()?"Powered by: KatuCharts":t.text}}toInternal(t){var l,c,h;const e=!!((l=t.chart)!=null&&l.inverted),i=(c=t.chart)==null?void 0:c.backgroundColor,r=t.xAxis.map((f,u)=>({...f,index:u,isX:!0,_inverted:e,_backgroundColor:i})),o=t.yAxis.map((f,u)=>({...f,index:u,isX:!1,_inverted:e,_backgroundColor:i})),s=(t.series||[]).map((f,u)=>{var m;const d=typeof f.xAxis=="number"?f.xAxis:0,p=typeof f.yAxis=="number"?f.yAxis:0,y=f.type||((m=t.chart)==null?void 0:m.type)||"line",g=y==="pie"||y==="donut"||y==="sankey";return{...f,index:u,_internalType:y,_xAxisIndex:d,_yAxisIndex:p,_xAxis:r[d]||r[0],_yAxis:o[p]||o[0],_processedData:f.data||[],...g&&f.showInLegend===void 0?{showInLegend:!1}:{}}}),a=F0(s);return{chart:{width:null,height:null,backgroundColor:"#ffffff",animation:!0,reflow:!0,...t.chart},title:t.title||{},subtitle:t.subtitle||{},xAxis:r,yAxis:o,colorAxis:t.colorAxis||[],series:a,tooltip:t.tooltip||{},legend:{...t.legend||{},_backgroundColor:(h=t.chart)==null?void 0:h.backgroundColor},plotOptions:t.plotOptions||{},credits:this.enforceCredits(t.credits||{}),exporting:t.exporting||{},loading:t.loading||{},navigator:t.navigator||{},rangeSelector:t.rangeSelector||{},drilldown:t.drilldown||{},responsive:t.responsive||{},accessibility:t.accessibility||{},colors:t.colors||[],time:t.time||{}}}};Qn.OHLC_TYPES=new Set(["candlestick","ohlc","heikinashi","hollowcandlestick"]),Qn.RANGE_TYPES=new Set(["arearange","areasplinerange","columnrange"]);let qn=Qn;var ua="http://www.w3.org/1999/xhtml";const Eh={svg:"http://www.w3.org/2000/svg",xhtml:ua,xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/"};function xo(n){var t=n+="",e=t.indexOf(":");return e>=0&&(t=n.slice(0,e))!=="xmlns"&&(n=n.slice(e+1)),Eh.hasOwnProperty(t)?{space:Eh[t],local:n}:n}function R0(n){return function(){var t=this.ownerDocument,e=this.namespaceURI;return e===ua&&t.documentElement.namespaceURI===ua?t.createElement(n):t.createElementNS(e,n)}}function D0(n){return function(){return this.ownerDocument.createElementNS(n.space,n.local)}}function Th(n){var t=xo(n);return(t.local?D0:R0)(t)}function z0(){}function fa(n){return n==null?z0:function(){return this.querySelector(n)}}function B0(n){typeof n!="function"&&(n=fa(n));for(var t=this._groups,e=t.length,i=new Array(e),r=0;r<e;++r)for(var o=t[r],s=o.length,a=i[r]=new Array(s),l,c,h=0;h<s;++h)(l=o[h])&&(c=n.call(l,l.__data__,h,o))&&("__data__"in l&&(c.__data__=l.__data__),a[h]=c);return new Xe(i,this._parents)}function O0(n){return n==null?[]:Array.isArray(n)?n:Array.from(n)}function N0(){return[]}function $h(n){return n==null?N0:function(){return this.querySelectorAll(n)}}function W0(n){return function(){return O0(n.apply(this,arguments))}}function H0(n){typeof n=="function"?n=W0(n):n=$h(n);for(var t=this._groups,e=t.length,i=[],r=[],o=0;o<e;++o)for(var s=t[o],a=s.length,l,c=0;c<a;++c)(l=s[c])&&(i.push(n.call(l,l.__data__,c,s)),r.push(l));return new Xe(i,r)}function Lh(n){return function(){return this.matches(n)}}function Ih(n){return function(t){return t.matches(n)}}var V0=Array.prototype.find;function G0(n){return function(){return V0.call(this.children,n)}}function Y0(){return this.firstElementChild}function X0(n){return this.select(n==null?Y0:G0(typeof n=="function"?n:Ih(n)))}var U0=Array.prototype.filter;function q0(){return Array.from(this.children)}function j0(n){return function(){return U0.call(this.children,n)}}function Z0(n){return this.selectAll(n==null?q0:j0(typeof n=="function"?n:Ih(n)))}function K0(n){typeof n!="function"&&(n=Lh(n));for(var t=this._groups,e=t.length,i=new Array(e),r=0;r<e;++r)for(var o=t[r],s=o.length,a=i[r]=[],l,c=0;c<s;++c)(l=o[c])&&n.call(l,l.__data__,c,o)&&a.push(l);return new Xe(i,this._parents)}function Fh(n){return new Array(n.length)}function J0(){return new Xe(this._enter||this._groups.map(Fh),this._parents)}function bo(n,t){this.ownerDocument=n.ownerDocument,this.namespaceURI=n.namespaceURI,this._next=null,this._parent=n,this.__data__=t}bo.prototype={constructor:bo,appendChild:function(n){return this._parent.insertBefore(n,this._next)},insertBefore:function(n,t){return this._parent.insertBefore(n,t)},querySelector:function(n){return this._parent.querySelector(n)},querySelectorAll:function(n){return this._parent.querySelectorAll(n)}};function Q0(n){return function(){return n}}function tm(n,t,e,i,r,o){for(var s=0,a,l=t.length,c=o.length;s<c;++s)(a=t[s])?(a.__data__=o[s],i[s]=a):e[s]=new bo(n,o[s]);for(;s<l;++s)(a=t[s])&&(r[s]=a)}function em(n,t,e,i,r,o,s){var a,l,c=new Map,h=t.length,f=o.length,u=new Array(h),d;for(a=0;a<h;++a)(l=t[a])&&(u[a]=d=s.call(l,l.__data__,a,t)+"",c.has(d)?r[a]=l:c.set(d,l));for(a=0;a<f;++a)d=s.call(n,o[a],a,o)+"",(l=c.get(d))?(i[a]=l,l.__data__=o[a],c.delete(d)):e[a]=new bo(n,o[a]);for(a=0;a<h;++a)(l=t[a])&&c.get(u[a])===l&&(r[a]=l)}function nm(n){return n.__data__}function im(n,t){if(!arguments.length)return Array.from(this,nm);var e=t?em:tm,i=this._parents,r=this._groups;typeof n!="function"&&(n=Q0(n));for(var o=r.length,s=new Array(o),a=new Array(o),l=new Array(o),c=0;c<o;++c){var h=i[c],f=r[c],u=f.length,d=rm(n.call(h,h&&h.__data__,c,i)),p=d.length,y=a[c]=new Array(p),g=s[c]=new Array(p),m=l[c]=new Array(u);e(h,f,y,g,m,d,t);for(var x=0,v=0,b,k;x<p;++x)if(b=y[x]){for(x>=v&&(v=x+1);!(k=g[v])&&++v<p;);b._next=k||null}}return s=new Xe(s,i),s._enter=a,s._exit=l,s}function rm(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function om(){return new Xe(this._exit||this._groups.map(Fh),this._parents)}function sm(n,t,e){var i=this.enter(),r=this,o=this.exit();return typeof n=="function"?(i=n(i),i&&(i=i.selection())):i=i.append(n+""),t!=null&&(r=t(r),r&&(r=r.selection())),e==null?o.remove():e(o),i&&r?i.merge(r).order():r}function am(n){for(var t=n.selection?n.selection():n,e=this._groups,i=t._groups,r=e.length,o=i.length,s=Math.min(r,o),a=new Array(r),l=0;l<s;++l)for(var c=e[l],h=i[l],f=c.length,u=a[l]=new Array(f),d,p=0;p<f;++p)(d=c[p]||h[p])&&(u[p]=d);for(;l<r;++l)a[l]=e[l];return new Xe(a,this._parents)}function cm(){for(var n=this._groups,t=-1,e=n.length;++t<e;)for(var i=n[t],r=i.length-1,o=i[r],s;--r>=0;)(s=i[r])&&(o&&s.compareDocumentPosition(o)^4&&o.parentNode.insertBefore(s,o),o=s);return this}function lm(n){n||(n=hm);function t(f,u){return f&&u?n(f.__data__,u.__data__):!f-!u}for(var e=this._groups,i=e.length,r=new Array(i),o=0;o<i;++o){for(var s=e[o],a=s.length,l=r[o]=new Array(a),c,h=0;h<a;++h)(c=s[h])&&(l[h]=c);l.sort(t)}return new Xe(r,this._parents).order()}function hm(n,t){return n<t?-1:n>t?1:n>=t?0:NaN}function um(){var n=arguments[0];return arguments[0]=this,n.apply(null,arguments),this}function fm(){return Array.from(this)}function dm(){for(var n=this._groups,t=0,e=n.length;t<e;++t)for(var i=n[t],r=0,o=i.length;r<o;++r){var s=i[r];if(s)return s}return null}function pm(){let n=0;for(const t of this)++n;return n}function gm(){return!this.node()}function mm(n){for(var t=this._groups,e=0,i=t.length;e<i;++e)for(var r=t[e],o=0,s=r.length,a;o<s;++o)(a=r[o])&&n.call(a,a.__data__,o,r);return this}function ym(n){return function(){this.removeAttribute(n)}}function xm(n){return function(){this.removeAttributeNS(n.space,n.local)}}function bm(n,t){return function(){this.setAttribute(n,t)}}function vm(n,t){return function(){this.setAttributeNS(n.space,n.local,t)}}function wm(n,t){return function(){var e=t.apply(this,arguments);e==null?this.removeAttribute(n):this.setAttribute(n,e)}}function km(n,t){return function(){var e=t.apply(this,arguments);e==null?this.removeAttributeNS(n.space,n.local):this.setAttributeNS(n.space,n.local,e)}}function Mm(n,t){var e=xo(n);if(arguments.length<2){var i=this.node();return e.local?i.getAttributeNS(e.space,e.local):i.getAttribute(e)}return this.each((t==null?e.local?xm:ym:typeof t=="function"?e.local?km:wm:e.local?vm:bm)(e,t))}function Rh(n){return n.ownerDocument&&n.ownerDocument.defaultView||n.document&&n||n.defaultView}function Am(n){return function(){this.style.removeProperty(n)}}function Sm(n,t,e){return function(){this.style.setProperty(n,t,e)}}function _m(n,t,e){return function(){var i=t.apply(this,arguments);i==null?this.style.removeProperty(n):this.style.setProperty(n,i,e)}}function Cm(n,t,e){return arguments.length>1?this.each((t==null?Am:typeof t=="function"?_m:Sm)(n,t,e??"")):Li(this.node(),n)}function Li(n,t){return n.style.getPropertyValue(t)||Rh(n).getComputedStyle(n,null).getPropertyValue(t)}function Pm(n){return function(){delete this[n]}}function Em(n,t){return function(){this[n]=t}}function Tm(n,t){return function(){var e=t.apply(this,arguments);e==null?delete this[n]:this[n]=e}}function $m(n,t){return arguments.length>1?this.each((t==null?Pm:typeof t=="function"?Tm:Em)(n,t)):this.node()[n]}function Dh(n){return n.trim().split(/^|\s+/)}function da(n){return n.classList||new zh(n)}function zh(n){this._node=n,this._names=Dh(n.getAttribute("class")||"")}zh.prototype={add:function(n){var t=this._names.indexOf(n);t<0&&(this._names.push(n),this._node.setAttribute("class",this._names.join(" ")))},remove:function(n){var t=this._names.indexOf(n);t>=0&&(this._names.splice(t,1),this._node.setAttribute("class",this._names.join(" ")))},contains:function(n){return this._names.indexOf(n)>=0}};function Bh(n,t){for(var e=da(n),i=-1,r=t.length;++i<r;)e.add(t[i])}function Oh(n,t){for(var e=da(n),i=-1,r=t.length;++i<r;)e.remove(t[i])}function Lm(n){return function(){Bh(this,n)}}function Im(n){return function(){Oh(this,n)}}function Fm(n,t){return function(){(t.apply(this,arguments)?Bh:Oh)(this,n)}}function Rm(n,t){var e=Dh(n+"");if(arguments.length<2){for(var i=da(this.node()),r=-1,o=e.length;++r<o;)if(!i.contains(e[r]))return!1;return!0}return this.each((typeof t=="function"?Fm:t?Lm:Im)(e,t))}function Dm(){this.textContent=""}function zm(n){return function(){this.textContent=n}}function Bm(n){return function(){var t=n.apply(this,arguments);this.textContent=t??""}}function Om(n){return arguments.length?this.each(n==null?Dm:(typeof n=="function"?Bm:zm)(n)):this.node().textContent}function Nm(){this.innerHTML=""}function Wm(n){return function(){this.innerHTML=n}}function Hm(n){return function(){var t=n.apply(this,arguments);this.innerHTML=t??""}}function Vm(n){return arguments.length?this.each(n==null?Nm:(typeof n=="function"?Hm:Wm)(n)):this.node().innerHTML}function Gm(){this.nextSibling&&this.parentNode.appendChild(this)}function Ym(){return this.each(Gm)}function Xm(){this.previousSibling&&this.parentNode.insertBefore(this,this.parentNode.firstChild)}function Um(){return this.each(Xm)}function qm(n){var t=typeof n=="function"?n:Th(n);return this.select(function(){return this.appendChild(t.apply(this,arguments))})}function jm(){return null}function Zm(n,t){var e=typeof n=="function"?n:Th(n),i=t==null?jm:typeof t=="function"?t:fa(t);return this.select(function(){return this.insertBefore(e.apply(this,arguments),i.apply(this,arguments)||null)})}function Km(){var n=this.parentNode;n&&n.removeChild(this)}function Jm(){return this.each(Km)}function Qm(){var n=this.cloneNode(!1),t=this.parentNode;return t?t.insertBefore(n,this.nextSibling):n}function ty(){var n=this.cloneNode(!0),t=this.parentNode;return t?t.insertBefore(n,this.nextSibling):n}function ey(n){return this.select(n?ty:Qm)}function ny(n){return arguments.length?this.property("__data__",n):this.node().__data__}function iy(n){return function(t){n.call(this,t,this.__data__)}}function ry(n){return n.trim().split(/^|\s+/).map(function(t){var e="",i=t.indexOf(".");return i>=0&&(e=t.slice(i+1),t=t.slice(0,i)),{type:t,name:e}})}function oy(n){return function(){var t=this.__on;if(t){for(var e=0,i=-1,r=t.length,o;e<r;++e)o=t[e],(!n.type||o.type===n.type)&&o.name===n.name?this.removeEventListener(o.type,o.listener,o.options):t[++i]=o;++i?t.length=i:delete this.__on}}}function sy(n,t,e){return function(){var i=this.__on,r,o=iy(t);if(i){for(var s=0,a=i.length;s<a;++s)if((r=i[s]).type===n.type&&r.name===n.name){this.removeEventListener(r.type,r.listener,r.options),this.addEventListener(r.type,r.listener=o,r.options=e),r.value=t;return}}this.addEventListener(n.type,o,e),r={type:n.type,name:n.name,value:t,listener:o,options:e},i?i.push(r):this.__on=[r]}}function ay(n,t,e){var i=ry(n+""),r,o=i.length,s;if(arguments.length<2){var a=this.node().__on;if(a){for(var l=0,c=a.length,h;l<c;++l)for(r=0,h=a[l];r<o;++r)if((s=i[r]).type===h.type&&s.name===h.name)return h.value}return}for(a=t?sy:oy,r=0;r<o;++r)this.each(a(i[r],t,e));return this}function Nh(n,t,e){var i=Rh(n),r=i.CustomEvent;typeof r=="function"?r=new r(t,e):(r=i.document.createEvent("Event"),e?(r.initEvent(t,e.bubbles,e.cancelable),r.detail=e.detail):r.initEvent(t,!1,!1)),n.dispatchEvent(r)}function cy(n,t){return function(){return Nh(this,n,t)}}function ly(n,t){return function(){return Nh(this,n,t.apply(this,arguments))}}function hy(n,t){return this.each((typeof t=="function"?ly:cy)(n,t))}function*uy(){for(var n=this._groups,t=0,e=n.length;t<e;++t)for(var i=n[t],r=0,o=i.length,s;r<o;++r)(s=i[r])&&(yield s)}var Wh=[null];function Xe(n,t){this._groups=n,this._parents=t}function hr(){return new Xe([[document.documentElement]],Wh)}function fy(){return this}Xe.prototype=hr.prototype={constructor:Xe,select:B0,selectAll:H0,selectChild:X0,selectChildren:Z0,filter:K0,data:im,enter:J0,exit:om,join:sm,merge:am,selection:fy,order:cm,sort:lm,call:um,nodes:fm,node:dm,size:pm,empty:gm,each:mm,attr:Mm,style:Cm,property:$m,classed:Rm,text:Om,html:Vm,raise:Ym,lower:Um,append:qm,insert:Zm,remove:Jm,clone:ey,datum:ny,on:ay,dispatch:hy,[Symbol.iterator]:uy};function rt(n){return typeof n=="string"?new Xe([[document.querySelector(n)]],[document.documentElement]):new Xe([[n]],Wh)}function dy(n){let t;for(;t=n.sourceEvent;)n=t;return n}function pn(n,t){if(n=dy(n),t===void 0&&(t=n.currentTarget),t){var e=t.ownerSVGElement||t;if(e.createSVGPoint){var i=e.createSVGPoint();return i.x=n.clientX,i.y=n.clientY,i=i.matrixTransform(t.getScreenCTM().inverse()),[i.x,i.y]}if(t.getBoundingClientRect){var r=t.getBoundingClientRect();return[n.clientX-r.left-t.clientLeft,n.clientY-r.top-t.clientTop]}}return[n.pageX,n.pageY]}class py{constructor(t){this.el=t}attr(t){for(const[e,i]of Object.entries(t))e!=="zIndex"&&this.el.attr(e,i);return this}css(t){for(const[e,i]of Object.entries(t)){const r=e.replace(/[A-Z]/g,o=>"-"+o.toLowerCase());this.el.style(r,i),e==="color"&&this.el.attr("fill",i)}return this}add(){return this}getBBox(){const t=this.el.node();if(!t||typeof t.getBBox!="function")return{x:0,y:0,width:0,height:0};try{return t.getBBox()}catch{return{x:0,y:0,width:0,height:0}}}destroy(){this.el.remove()}}const er=class er{constructor(t,e,i){this.svg=rt(t).append("svg").attr("class","katucharts-root").attr("xmlns","http://www.w3.org/2000/svg").attr("width",e).attr("height",i).style("overflow","hidden").style("outline","none").style("display","block").style("max-width","100%"),this.defs=this.svg.append("defs")}setSize(t,e){this.svg.attr("width",t).attr("height",e)}createGroup(t,e){const r=(e||this.svg).append("g");return t&&r.attr("class",t),r}text(t,e,i){const r=this.svg.append("text").attr("x",e).attr("y",i).style("pointer-events","none").text(t);return new py(r)}createClipPath(t,e,i,r){const o=`katucharts-clip-${++er.clipPathCounter}`;return this.defs.append("clipPath").attr("id",o).append("rect").attr("x",t).attr("y",e).attr("width",i).attr("height",r),o}updateClipPath(t,e,i,r,o){this.defs.select(`#${t} rect`).attr("x",e).attr("y",i).attr("width",r).attr("height",o)}createLinearGradient(t,e,i,r,o,s){const a=t||`katucharts-grad-${++er.gradientCounter}`,l=this.defs.append("linearGradient").attr("id",a).attr("x1",e).attr("y1",i).attr("x2",r).attr("y2",o);for(const c of s)l.append("stop").attr("offset",c.offset).attr("stop-color",c.color).attr("stop-opacity",c.opacity??1);return a}getSVGNode(){return this.svg.node()}destroy(){this.svg.remove()}getSerializedSVG(){const t=this.svg.node();return t?new XMLSerializer().serializeToString(t):""}};er.clipPathCounter=0,er.gradientCounter=0;let vo=er;class Hh{constructor(){this.listeners=new Map}on(t,e){return this.listeners.has(t)||this.listeners.set(t,[]),this.listeners.get(t).push({callback:e,once:!1}),this}once(t,e){return this.listeners.has(t)||this.listeners.set(t,[]),this.listeners.get(t).push({callback:e,once:!0}),this}off(t,e){if(!e)return this.listeners.delete(t),this;const i=this.listeners.get(t);return i&&this.listeners.set(t,i.filter(r=>r.callback!==e)),this}emit(t,...e){const i=this.listeners.get(t);if(!i)return this;const r=[];for(const o of i)o.callback(...e),o.once&&r.push(o);return r.length&&this.listeners.set(t,i.filter(o=>!r.includes(o))),this}removeAllListeners(){this.listeners.clear()}static mapEvent(t,e){return`${t}:${e.toLowerCase()}`}}class gy{constructor(t,e){this.config=t,this.events=e}getConfig(){return this.config}updateConfig(t){this.config=le(this.config,t),this.events.emit("state:configChanged",this.config)}getSeries(){return this.config.series}getSeriesById(t){return this.config.series.find(e=>e.id===t)}getSeriesByIndex(t){return this.config.series[t]}addSeries(t){this.config.series=[...this.config.series,t],this.events.emit("state:seriesAdded",t)}removeSeries(t){const e=this.config.series[t];return e&&(this.config.series=this.config.series.filter((i,r)=>r!==t),this.events.emit("state:seriesRemoved",e,t)),e}updateSeries(t,e){const i=this.config.series[t];i&&(this.config.series[t]=le(i,e),this.events.emit("state:seriesUpdated",this.config.series[t],t))}getXAxes(){return this.config.xAxis}getYAxes(){return this.config.yAxis}updateAxis(t,e,i){const r=t?this.config.xAxis:this.config.yAxis;r[e]&&(r[e]=le(r[e],i),this.events.emit("state:axisUpdated",{isX:t,index:e,config:r[e]}))}}class my{constructor(){this.types=new Map}registerType(t,e){this.types.set(t,e)}getType(t){return this.types.get(t)}hasType(t){return this.types.has(t)}getRegisteredTypes(){return Array.from(this.types.keys())}}const Vh=globalThis,Tt=Vh.__katuChartRegistry||(Vh.__katuChartRegistry=new my);class yy{constructor(){this.modules=new Map}register(t){this.modules.set(t.name,t)}get(t){return this.modules.get(t)}getAll(){return Array.from(this.modules.values())}}const Gh=new yy;class xy{compute(t,e,i){var F,D,z,B,H,J,X,j,W,U,G,N,Y,O,ct;const r=this.getSpacing(t);let o=r.top,s=r.bottom;const a=r.left,l=r.right,c=((F=t.title)==null?void 0:F.widthAdjust)??-44,h=e+c,f=(z=(D=t.title)==null?void 0:D.style)!=null&&z.fontSize?t.title.style:{...(B=t.title)==null?void 0:B.style,fontSize:"18px"},u=(H=t.title)!=null&&H.text?this.estimateWrappedTextHeight(t.title.text,f,h):0,d=((J=t.title)==null?void 0:J.margin)??8,p=(X=t.subtitle)!=null&&X.text?this.estimateWrappedTextHeight(t.subtitle.text,t.subtitle.style,h):0;u>0&&(o=r.top+u+(p>0?3:d)),p>0&&(o+=p+d);const y=t.series.some(it=>it._internalType==="heatmap"),g=((j=t.legend)==null?void 0:j.align)||"center",m=!y&&((W=t.legend)==null?void 0:W.enabled)!==!1&&((U=t.legend)==null?void 0:U.layout)==="vertical"&&(g==="left"||g==="right"),x=y||m?0:this.estimateLegendHeight(t,e),v=((G=t.legend)==null?void 0:G.verticalAlign)||"bottom";!m&&v==="bottom"?s=Math.max(s,r.bottom)+x:!m&&v==="top"&&(o+=x);const b=m?this.estimateLegendWidth(t):0,k=m&&g==="left"?b:0,M=m&&g==="right"?b:0;if((N=t.navigator)!=null&&N.enabled){const it=t.navigator;s+=(it.height??40)+(it.margin??20)}const C=this.isNonCartesian(t),_=!!t.chart.inverted?{...t,xAxis:t.yAxis,yAxis:t.xAxis}:t,$=C?0:this.estimateAxisWidth(_,!0,i,e),I=C?0:this.estimateAxisWidth(_,!1,i,e),E=C?0:this.estimateAxisHeight(_);let P=0;y&&((Y=t.colorAxis)==null?void 0:Y.length)>0&&((O=t.legend)==null?void 0:O.layout)==="vertical"&&(P=55);const S=a+$+k,w=o,A=Math.max(0,e-a-l-$-I-P-k-M),T=((ct=t.chart)==null?void 0:ct.marginBottom)!==void 0,R=Math.max(0,i-o-s-(T?0:E));return{plotArea:{x:S,y:w,width:A,height:R},titleArea:{x:r.left,y:r.top,width:e-r.left-r.right,height:u+d},subtitleArea:{x:r.left,y:r.top+u+d,width:e-r.left-r.right,height:p},legendArea:m?{x:g==="right"?e-l-M:a,y:w,width:b,height:R}:{x:0,y:v==="top"?o-x:i-s,width:e,height:x}}}isNonCartesian(t){return t.series.length>0&&t.series.every(e=>Pi.has(e._internalType))}getSpacing(t){var s;const e=t.chart;if(e.margin!==void 0){const a=e.margin;if(typeof a=="number")return{top:a,right:a,bottom:a,left:a};if(Array.isArray(a))return{top:a[0]??10,right:a[1]??10,bottom:a[2]??15,left:a[3]??10}}const i=e.spacing||[10,10,15,10],o=((s=t.exporting)==null?void 0:s.enabled)!==!1&&!this.isNonCartesian(t)?40:i[1]??10;return{top:e.marginTop??e.spacingTop??i[0],right:e.marginRight??e.spacingRight??o,bottom:e.marginBottom??e.spacingBottom??i[2],left:e.marginLeft??e.spacingLeft??i[3]}}estimateTextHeight(t){return xe(t==null?void 0:t.fontSize)*1.4}estimateWrappedTextHeight(t,e,i){const r=xe(e==null?void 0:e.fontSize),o=r*1.4;if(!i||i<=0)return o;const s=r*.55,a=Math.floor(i/s);if(a<=0)return o;const l=Math.ceil(t.length/a);return o*Math.max(l,1)}computeAutoFontSize(t,e){return e||"12px"}estimateLegendHeight(t,e){var r,o;const i=this.estimateSeriesLegendHeight(t,e);if((r=t.legend)!=null&&r.enabled&&((o=t.legend.bubbleLegend)!=null&&o.enabled)){const s=t.series.find(a=>a._internalType==="bubble");if(s){const a=t.legend.margin??8,c=(t.legend.bubbleLegend.maxSize??(typeof s.maxSize=="number"?s.maxSize:30))*2+16+a;return(t.legend.layout||"horizontal")==="horizontal"&&t.legend.bubbleLegend.layout==="separate"?i+c:Math.max(i,c)}}return i}estimateLegendWidth(t){var u;const e=t.legend;if(!e)return 0;const i=t.series.filter(d=>d.showInLegend!==!1),r=e.itemStyle||{},o=xe(r.fontSize||wt),s=e.symbolWidth??12,a=e.symbolPadding??5,l=e.padding??8;let c=0;i.forEach((d,p)=>{const y=Je(d.name||`Series ${p+1}`,o);y>c&&(c=y)});let h=s+a+c;if((u=e.bubbleLegend)!=null&&u.enabled){const d=t.series.find(p=>p._internalType==="bubble");if(d){const p=e.bubbleLegend.maxSize??(typeof d.maxSize=="number"?d.maxSize:30),y=e.bubbleLegend.connectorDistance??16;h=Math.max(h,p*2+y+30)}}const f=e.margin??12;return h+l*2+f}estimateSeriesLegendHeight(t,e){var p;if(!((p=t.legend)!=null&&p.enabled))return 0;const i=t.series.filter(y=>y.showInLegend!==!1),r=i.length;if(r===0)return 0;const o=t.legend.margin??8,s=t.legend.layout||"horizontal",l=(t.legend.itemStyle||{}).fontSize||wt,c=this.computeAutoFontSize(r,l),h=t.legend.lineHeight??16,f=t.legend.itemMarginBottom??2,u=t.legend.itemMarginTop??0,d=h+f+u;if(s==="horizontal"){const y=t.legend.padding??4,g=t.legend.symbolWidth??10,m=t.legend.symbolPadding??5,x=t.legend.itemDistance??20,v=this.getSpacing(t),b=t.legend.width||e-v.left-v.right-y*2,k=xe(c),M=i.map((P,S)=>P.name||`Series ${S+1}`);let C=0;for(let P=0;P<M.length;P++){const S=t.legend.itemWidth||Je(M[P],k),w=g+m+S;C+=w+(P<M.length-1?x:0)}if(r>8&&C>b){let P=0;for(const F of M){const D=Je(F,k);D>P&&(P=D)}let S,w;if(t.legend.itemWidth)S=t.legend.itemWidth,w=Math.max(2,Math.floor(b/S));else{const F=g+m+P+8;w=Math.max(1,Math.floor(b/F)),S=b/w}const T=Math.ceil(r/w)*d+y*2,R=t.legend.maxHeight;return(R?Math.min(T,R):T)+o}let _=y,$=1;for(let P=0;P<r;P++){const S=t.legend.itemWidth||Je(M[P],k),w=g+m+S;P>0&&_+w>b&&($++,_=y),_+=w+x}const I=$*d+y*2,E=t.legend.maxHeight;return(E?Math.min(I,E):I)+o}return r*d+(t.legend.padding??8)*2+o}estimateAxisWidth(t,e,i,r){var a,l;const o=t.yAxis.filter(c=>e?!c.opposite:c.opposite);if(o.length===0)return 0;let s=0;for(const c of o){if(c.visible===!1)continue;const h=((a=c.labels)==null?void 0:a.enabled)!==!1,f=(l=c.title)==null?void 0:l.text,u=h?this.estimateLabelWidth(c,i,r):0;s+=u+(f?30:0)+(c.offset||0)}return s||30}estimateLabelWidth(t,e,i){var s,a,l,c;if(t.categories&&t.categories.length>0){const h=xe(((a=(s=t.labels)==null?void 0:s.style)==null?void 0:a.fontSize)||wt);let f=h;if(e&&t.categories.length>1){const m=e*.8/t.categories.length*.7;h>m&&(f=Math.min(h,Math.max(5,Math.round(m*1.1))))}const u=((c=(l=t.labels)==null?void 0:l.style)==null?void 0:c.fontWeight)||"normal";let d=0;for(const y of t.categories){const g=Je(y,f,u);g>d&&(d=g)}const p=i?Math.max(120,i*.3):460;return Math.max(25,Math.min(d*1.3+16,p))}const r=t.min??null,o=t.max??null;if(r!=null&&o!=null){const f=String(Math.round(Math.max(Math.abs(r),Math.abs(o)))).length+(r<0?1:0);return Math.max(20,f*7+10)}return 25}estimateAxisHeight(t){var r,o,s,a,l,c,h;const e=t.xAxis.filter(f=>!f.opposite);if(e.length===0)return 0;let i=0;for(const f of e){if(f.visible===!1)continue;const u=((r=f.labels)==null?void 0:r.enabled)!==!1,d=(o=f.title)==null?void 0:o.text,p=!!((s=f.labels)!=null&&s.rotation);let y=30;if(u){if(p&&f.categories&&f.categories.length>0){let m=0;for(const k of f.categories)k.length>m&&(m=k.length);const x=xe(((l=(a=f.labels)==null?void 0:a.style)==null?void 0:l.fontSize)||wt),v=Math.abs(f.labels.rotation)*(Math.PI/180),b=Math.min(m*x*.62*Math.sin(v),150);y=Math.max(30,b)}else if(p)y=45;else if(f.categories&&f.categories.length>0){let m=0;for(const b of f.categories)b.length>m&&(m=b.length);const x=xe(((h=(c=f.labels)==null?void 0:c.style)==null?void 0:h.fontSize)||wt);if(f.categories.length>6||m>8){const b=Math.min(m*x*.4*Math.sin(Math.PI/4),120);y=Math.max(30,b)}}}else y=0;const g=u?f.tickLength||10:5;i+=y+(d?25:0)+g}return i||40}}function wo(n,t){return n==null||t==null?NaN:n<t?-1:n>t?1:n>=t?0:NaN}function by(n,t){return n==null||t==null?NaN:t<n?-1:t>n?1:t>=n?0:NaN}function pa(n){let t,e,i;n.length!==2?(t=wo,e=(a,l)=>wo(n(a),l),i=(a,l)=>n(a)-l):(t=n===wo||n===by?n:vy,e=n,i=n);function r(a,l,c=0,h=a.length){if(c<h){if(t(l,l)!==0)return h;do{const f=c+h>>>1;e(a[f],l)<0?c=f+1:h=f}while(c<h)}return c}function o(a,l,c=0,h=a.length){if(c<h){if(t(l,l)!==0)return h;do{const f=c+h>>>1;e(a[f],l)<=0?c=f+1:h=f}while(c<h)}return c}function s(a,l,c=0,h=a.length){const f=r(a,l,c,h-1);return f>c&&i(a[f-1],l)>-i(a[f],l)?f-1:f}return{left:r,center:s,right:o}}function vy(){return 0}function wy(n){return n===null?NaN:+n}const ky=pa(wo).right;pa(wy).center;class fi{constructor(){this._partials=new Float64Array(32),this._n=0}add(t){const e=this._partials;let i=0;for(let r=0;r<this._n&&r<32;r++){const o=e[r],s=t+o,a=Math.abs(t)<Math.abs(o)?t-(s-o):o-(s-t);a&&(e[i++]=a),t=s}return e[i]=t,this._n=i+1,this}valueOf(){const t=this._partials;let e=this._n,i,r,o,s=0;if(e>0){for(s=t[--e];e>0&&(i=s,r=t[--e],s=i+r,o=r-(s-i),!o););e>0&&(o<0&&t[e-1]<0||o>0&&t[e-1]>0)&&(r=o*2,i=s+r,r==i-s&&(s=i))}return s}}class Yh extends Map{constructor(t,e=Sy){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:e}}),t!=null)for(const[i,r]of t)this.set(i,r)}get(t){return super.get(Xh(this,t))}has(t){return super.has(Xh(this,t))}set(t,e){return super.set(My(this,t),e)}delete(t){return super.delete(Ay(this,t))}}function Xh({_intern:n,_key:t},e){const i=t(e);return n.has(i)?n.get(i):e}function My({_intern:n,_key:t},e){const i=t(e);return n.has(i)?n.get(i):(n.set(i,e),e)}function Ay({_intern:n,_key:t},e){const i=t(e);return n.has(i)&&(e=n.get(i),n.delete(i)),e}function Sy(n){return n!==null&&typeof n=="object"?n.valueOf():n}const _y=Math.sqrt(50),Cy=Math.sqrt(10),Py=Math.sqrt(2);function ko(n,t,e){const i=(t-n)/Math.max(0,e),r=Math.floor(Math.log10(i)),o=i/Math.pow(10,r),s=o>=_y?10:o>=Cy?5:o>=Py?2:1;let a,l,c;return r<0?(c=Math.pow(10,-r)/s,a=Math.round(n*c),l=Math.round(t*c),a/c<n&&++a,l/c>t&&--l,c=-c):(c=Math.pow(10,r)*s,a=Math.round(n/c),l=Math.round(t/c),a*c<n&&++a,l*c>t&&--l),l<a&&.5<=e&&e<2?ko(n,t,e*2):[a,l,c]}function ga(n,t,e){if(t=+t,n=+n,e=+e,!(e>0))return[];if(n===t)return[n];const i=t<n,[r,o,s]=i?ko(t,n,e):ko(n,t,e);if(!(o>=r))return[];const a=o-r+1,l=new Array(a);if(i)if(s<0)for(let c=0;c<a;++c)l[c]=(o-c)/-s;else for(let c=0;c<a;++c)l[c]=(o-c)*s;else if(s<0)for(let c=0;c<a;++c)l[c]=(r+c)/-s;else for(let c=0;c<a;++c)l[c]=(r+c)*s;return l}function ma(n,t,e){return t=+t,n=+n,e=+e,ko(n,t,e)[2]}function ya(n,t,e){t=+t,n=+n,e=+e;const i=t<n,r=i?ma(t,n,e):ma(n,t,e);return(i?-1:1)*(r<0?1/-r:r)}function*Ey(n){for(const t of n)yield*t}function Uh(n){return Array.from(Ey(n))}function di(n,t,e){n=+n,t=+t,e=(r=arguments.length)<2?(t=n,n=0,1):r<3?1:+e;for(var i=-1,r=Math.max(0,Math.ceil((t-n)/e))|0,o=new Array(r);++i<r;)o[i]=n+i*e;return o}function pi(n,t){switch(arguments.length){case 0:break;case 1:this.range(n);break;default:this.range(t).domain(n);break}return this}function Ty(n,t){switch(arguments.length){case 0:break;case 1:{typeof n=="function"?this.interpolator(n):this.range(n);break}default:{this.domain(n),typeof t=="function"?this.interpolator(t):this.range(t);break}}return this}const qh=Symbol("implicit");function jh(){var n=new Yh,t=[],e=[],i=qh;function r(o){let s=n.get(o);if(s===void 0){if(i!==qh)return i;n.set(o,s=t.push(o)-1)}return e[s%e.length]}return r.domain=function(o){if(!arguments.length)return t.slice();t=[],n=new Yh;for(const s of o)n.has(s)||n.set(s,t.push(s)-1);return r},r.range=function(o){return arguments.length?(e=Array.from(o),r):e.slice()},r.unknown=function(o){return arguments.length?(i=o,r):i},r.copy=function(){return jh(t,e).unknown(i)},pi.apply(r,arguments),r}function Zh(){var n=jh().unknown(void 0),t=n.domain,e=n.range,i=0,r=1,o,s,a=!1,l=0,c=0,h=.5;delete n.unknown;function f(){var u=t().length,d=r<i,p=d?r:i,y=d?i:r;o=(y-p)/Math.max(1,u-l+c*2),a&&(o=Math.floor(o)),p+=(y-p-o*(u-l))*h,s=o*(1-l),a&&(p=Math.round(p),s=Math.round(s));var g=di(u).map(function(m){return p+o*m});return e(d?g.reverse():g)}return n.domain=function(u){return arguments.length?(t(u),f()):t()},n.range=function(u){return arguments.length?([i,r]=u,i=+i,r=+r,f()):[i,r]},n.rangeRound=function(u){return[i,r]=u,i=+i,r=+r,a=!0,f()},n.bandwidth=function(){return s},n.step=function(){return o},n.round=function(u){return arguments.length?(a=!!u,f()):a},n.padding=function(u){return arguments.length?(l=Math.min(1,c=+u),f()):l},n.paddingInner=function(u){return arguments.length?(l=Math.min(1,u),f()):l},n.paddingOuter=function(u){return arguments.length?(c=+u,f()):c},n.align=function(u){return arguments.length?(h=Math.max(0,Math.min(1,u)),f()):h},n.copy=function(){return Zh(t(),[i,r]).round(a).paddingInner(l).paddingOuter(c).align(h)},pi.apply(f(),arguments)}function $y(n,t,e,i,r){var o=n*n,s=o*n;return((1-3*n+3*o-s)*t+(4-6*o+3*s)*e+(1+3*n+3*o-3*s)*i+s*r)/6}function Ly(n){var t=n.length-1;return function(e){var i=e<=0?e=0:e>=1?(e=1,t-1):Math.floor(e*t),r=n[i],o=n[i+1],s=i>0?n[i-1]:2*r-o,a=i<t-1?n[i+2]:2*o-r;return $y((e-i/t)*t,s,r,o,a)}}const xa=n=>()=>n;function Iy(n,t){return function(e){return n+e*t}}function Fy(n,t,e){return n=Math.pow(n,e),t=Math.pow(t,e)-n,e=1/e,function(i){return Math.pow(n+i*t,e)}}function Ry(n){return(n=+n)==1?Kh:function(t,e){return e-t?Fy(t,e,n):xa(isNaN(t)?e:t)}}function Kh(n,t){var e=t-n;return e?Iy(n,e):xa(isNaN(n)?t:n)}const gi=function n(t){var e=Ry(t);function i(r,o){var s=e((r=Ye(r)).r,(o=Ye(o)).r),a=e(r.g,o.g),l=e(r.b,o.b),c=Kh(r.opacity,o.opacity);return function(h){return r.r=s(h),r.g=a(h),r.b=l(h),r.opacity=c(h),r+""}}return i.gamma=n,i}(1);function Dy(n){return function(t){var e=t.length,i=new Array(e),r=new Array(e),o=new Array(e),s,a;for(s=0;s<e;++s)a=Ye(t[s]),i[s]=a.r||0,r[s]=a.g||0,o[s]=a.b||0;return i=n(i),r=n(r),o=n(o),a.opacity=1,function(l){return a.r=i(l),a.g=r(l),a.b=o(l),a+""}}}var zy=Dy(Ly);function By(n,t){t||(t=[]);var e=n?Math.min(t.length,n.length):0,i=t.slice(),r;return function(o){for(r=0;r<e;++r)i[r]=n[r]*(1-o)+t[r]*o;return i}}function Oy(n){return ArrayBuffer.isView(n)&&!(n instanceof DataView)}function Ny(n,t){var e=t?t.length:0,i=n?Math.min(e,n.length):0,r=new Array(i),o=new Array(e),s;for(s=0;s<i;++s)r[s]=ae(n[s],t[s]);for(;s<e;++s)o[s]=t[s];return function(a){for(s=0;s<i;++s)o[s]=r[s](a);return o}}function Wy(n,t){var e=new Date;return n=+n,t=+t,function(i){return e.setTime(n*(1-i)+t*i),e}}function gn(n,t){return n=+n,t=+t,function(e){return n*(1-e)+t*e}}function Hy(n,t){var e={},i={},r;(n===null||typeof n!="object")&&(n={}),(t===null||typeof t!="object")&&(t={});for(r in t)r in n?e[r]=ae(n[r],t[r]):i[r]=t[r];return function(o){for(r in e)i[r]=e[r](o);return i}}var ba=/[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g,va=new RegExp(ba.source,"g");function Vy(n){return function(){return n}}function Gy(n){return function(t){return n(t)+""}}function Jh(n,t){var e=ba.lastIndex=va.lastIndex=0,i,r,o,s=-1,a=[],l=[];for(n=n+"",t=t+"";(i=ba.exec(n))&&(r=va.exec(t));)(o=r.index)>e&&(o=t.slice(e,o),a[s]?a[s]+=o:a[++s]=o),(i=i[0])===(r=r[0])?a[s]?a[s]+=r:a[++s]=r:(a[++s]=null,l.push({i:s,x:gn(i,r)})),e=va.lastIndex;return e<t.length&&(o=t.slice(e),a[s]?a[s]+=o:a[++s]=o),a.length<2?l[0]?Gy(l[0].x):Vy(t):(t=l.length,function(c){for(var h=0,f;h<t;++h)a[(f=l[h]).i]=f.x(c);return a.join("")})}function ae(n,t){var e=typeof t,i;return t==null||e==="boolean"?xa(t):(e==="number"?gn:e==="string"?(i=oe(t))?(t=i,gi):Jh:t instanceof oe?gi:t instanceof Date?Wy:Oy(t)?By:Array.isArray(t)?Ny:typeof t.valueOf!="function"&&typeof t.toString!="function"||isNaN(t)?Hy:gn)(n,t)}function Qh(n,t){return n=+n,t=+t,function(e){return Math.round(n*(1-e)+t*e)}}var tu=180/Math.PI,wa={translateX:0,translateY:0,rotate:0,skewX:0,scaleX:1,scaleY:1};function eu(n,t,e,i,r,o){var s,a,l;return(s=Math.sqrt(n*n+t*t))&&(n/=s,t/=s),(l=n*e+t*i)&&(e-=n*l,i-=t*l),(a=Math.sqrt(e*e+i*i))&&(e/=a,i/=a,l/=a),n*i<t*e&&(n=-n,t=-t,l=-l,s=-s),{translateX:r,translateY:o,rotate:Math.atan2(t,n)*tu,skewX:Math.atan(l)*tu,scaleX:s,scaleY:a}}var Mo;function Yy(n){const t=new(typeof DOMMatrix=="function"?DOMMatrix:WebKitCSSMatrix)(n+"");return t.isIdentity?wa:eu(t.a,t.b,t.c,t.d,t.e,t.f)}function Xy(n){return n==null||(Mo||(Mo=document.createElementNS("http://www.w3.org/2000/svg","g")),Mo.setAttribute("transform",n),!(n=Mo.transform.baseVal.consolidate()))?wa:(n=n.matrix,eu(n.a,n.b,n.c,n.d,n.e,n.f))}function nu(n,t,e,i){function r(c){return c.length?c.pop()+" ":""}function o(c,h,f,u,d,p){if(c!==f||h!==u){var y=d.push("translate(",null,t,null,e);p.push({i:y-4,x:gn(c,f)},{i:y-2,x:gn(h,u)})}else(f||u)&&d.push("translate("+f+t+u+e)}function s(c,h,f,u){c!==h?(c-h>180?h+=360:h-c>180&&(c+=360),u.push({i:f.push(r(f)+"rotate(",null,i)-2,x:gn(c,h)})):h&&f.push(r(f)+"rotate("+h+i)}function a(c,h,f,u){c!==h?u.push({i:f.push(r(f)+"skewX(",null,i)-2,x:gn(c,h)}):h&&f.push(r(f)+"skewX("+h+i)}function l(c,h,f,u,d,p){if(c!==f||h!==u){var y=d.push(r(d)+"scale(",null,",",null,")");p.push({i:y-4,x:gn(c,f)},{i:y-2,x:gn(h,u)})}else(f!==1||u!==1)&&d.push(r(d)+"scale("+f+","+u+")")}return function(c,h){var f=[],u=[];return c=n(c),h=n(h),o(c.translateX,c.translateY,h.translateX,h.translateY,f,u),s(c.rotate,h.rotate,f,u),a(c.skewX,h.skewX,f,u),l(c.scaleX,c.scaleY,h.scaleX,h.scaleY,f,u),c=h=null,function(d){for(var p=-1,y=u.length,g;++p<y;)f[(g=u[p]).i]=g.x(d);return f.join("")}}}var Uy=nu(Yy,"px, ","px)","deg)"),qy=nu(Xy,", ",")",")"),jy=1e-12;function iu(n){return((n=Math.exp(n))+1/n)/2}function Zy(n){return((n=Math.exp(n))-1/n)/2}function Ky(n){return((n=Math.exp(2*n))-1)/(n+1)}const Jy=function n(t,e,i){function r(o,s){var a=o[0],l=o[1],c=o[2],h=s[0],f=s[1],u=s[2],d=h-a,p=f-l,y=d*d+p*p,g,m;if(y<jy)m=Math.log(u/c)/t,g=function(C){return[a+C*d,l+C*p,c*Math.exp(t*C*m)]};else{var x=Math.sqrt(y),v=(u*u-c*c+i*y)/(2*c*e*x),b=(u*u-c*c-i*y)/(2*u*e*x),k=Math.log(Math.sqrt(v*v+1)-v),M=Math.log(Math.sqrt(b*b+1)-b);m=(M-k)/t,g=function(C){var L=C*m,_=iu(k),$=c/(e*x)*(_*Ky(t*L+k)-Zy(k));return[a+$*d,l+$*p,c*_/iu(t*L+k)]}}return g.duration=m*1e3*t/Math.SQRT2,g}return r.rho=function(o){var s=Math.max(.001,+o),a=s*s,l=a*a;return n(s,a,l)},r}(Math.SQRT2,2,4);function Qy(n){return function(){return n}}function tx(n){return+n}var ru=[0,1];function en(n){return n}function ka(n,t){return(t-=n=+n)?function(e){return(e-n)/t}:Qy(isNaN(t)?NaN:.5)}function ex(n,t){var e;return n>t&&(e=n,n=t,t=e),function(i){return Math.max(n,Math.min(t,i))}}function nx(n,t,e){var i=n[0],r=n[1],o=t[0],s=t[1];return r<i?(i=ka(r,i),o=e(s,o)):(i=ka(i,r),o=e(o,s)),function(a){return o(i(a))}}function ix(n,t,e){var i=Math.min(n.length,t.length)-1,r=new Array(i),o=new Array(i),s=-1;for(n[i]<n[0]&&(n=n.slice().reverse(),t=t.slice().reverse());++s<i;)r[s]=ka(n[s],n[s+1]),o[s]=e(t[s],t[s+1]);return function(a){var l=ky(n,a,1,i)-1;return o[l](r[l](a))}}function Ao(n,t){return t.domain(n.domain()).range(n.range()).interpolate(n.interpolate()).clamp(n.clamp()).unknown(n.unknown())}function Ma(){var n=ru,t=ru,e=ae,i,r,o,s=en,a,l,c;function h(){var u=Math.min(n.length,t.length);return s!==en&&(s=ex(n[0],n[u-1])),a=u>2?ix:nx,l=c=null,f}function f(u){return u==null||isNaN(u=+u)?o:(l||(l=a(n.map(i),t,e)))(i(s(u)))}return f.invert=function(u){return s(r((c||(c=a(t,n.map(i),gn)))(u)))},f.domain=function(u){return arguments.length?(n=Array.from(u,tx),h()):n.slice()},f.range=function(u){return arguments.length?(t=Array.from(u),h()):t.slice()},f.rangeRound=function(u){return t=Array.from(u),e=Qh,h()},f.clamp=function(u){return arguments.length?(s=u?!0:en,h()):s!==en},f.interpolate=function(u){return arguments.length?(e=u,h()):e},f.unknown=function(u){return arguments.length?(o=u,f):o},function(u,d){return i=u,r=d,h()}}function ou(){return Ma()(en,en)}function rx(n){return Math.abs(n=Math.round(n))>=1e21?n.toLocaleString("en").replace(/,/g,""):n.toString(10)}function So(n,t){if(!isFinite(n)||n===0)return null;var e=(n=t?n.toExponential(t-1):n.toExponential()).indexOf("e"),i=n.slice(0,e);return[i.length>1?i[0]+i.slice(2):i,+n.slice(e+1)]}function Ii(n){return n=So(Math.abs(n)),n?n[1]:NaN}function ox(n,t){return function(e,i){for(var r=e.length,o=[],s=0,a=n[0],l=0;r>0&&a>0&&(l+a+1>i&&(a=Math.max(1,i-l)),o.push(e.substring(r-=a,r+a)),!((l+=a+1)>i));)a=n[s=(s+1)%n.length];return o.reverse().join(t)}}function sx(n){return function(t){return t.replace(/[0-9]/g,function(e){return n[+e]})}}var ax=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function ur(n){if(!(t=ax.exec(n)))throw new Error("invalid format: "+n);var t;return new Aa({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}ur.prototype=Aa.prototype;function Aa(n){this.fill=n.fill===void 0?" ":n.fill+"",this.align=n.align===void 0?">":n.align+"",this.sign=n.sign===void 0?"-":n.sign+"",this.symbol=n.symbol===void 0?"":n.symbol+"",this.zero=!!n.zero,this.width=n.width===void 0?void 0:+n.width,this.comma=!!n.comma,this.precision=n.precision===void 0?void 0:+n.precision,this.trim=!!n.trim,this.type=n.type===void 0?"":n.type+""}Aa.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?"0":"")+(this.width===void 0?"":Math.max(1,this.width|0))+(this.comma?",":"")+(this.precision===void 0?"":"."+Math.max(0,this.precision|0))+(this.trim?"~":"")+this.type};function cx(n){t:for(var t=n.length,e=1,i=-1,r;e<t;++e)switch(n[e]){case".":i=r=e;break;case"0":i===0&&(i=e),r=e;break;default:if(!+n[e])break t;i>0&&(i=0);break}return i>0?n.slice(0,i)+n.slice(r+1):n}var _o;function lx(n,t){var e=So(n,t);if(!e)return _o=void 0,n.toPrecision(t);var i=e[0],r=e[1],o=r-(_o=Math.max(-8,Math.min(8,Math.floor(r/3)))*3)+1,s=i.length;return o===s?i:o>s?i+new Array(o-s+1).join("0"):o>0?i.slice(0,o)+"."+i.slice(o):"0."+new Array(1-o).join("0")+So(n,Math.max(0,t+o-1))[0]}function su(n,t){var e=So(n,t);if(!e)return n+"";var i=e[0],r=e[1];return r<0?"0."+new Array(-r).join("0")+i:i.length>r+1?i.slice(0,r+1)+"."+i.slice(r+1):i+new Array(r-i.length+2).join("0")}const au={"%":(n,t)=>(n*100).toFixed(t),b:n=>Math.round(n).toString(2),c:n=>n+"",d:rx,e:(n,t)=>n.toExponential(t),f:(n,t)=>n.toFixed(t),g:(n,t)=>n.toPrecision(t),o:n=>Math.round(n).toString(8),p:(n,t)=>su(n*100,t),r:su,s:lx,X:n=>Math.round(n).toString(16).toUpperCase(),x:n=>Math.round(n).toString(16)};function cu(n){return n}var lu=Array.prototype.map,hu=["y","z","a","f","p","n","µ","m","","k","M","G","T","P","E","Z","Y"];function hx(n){var t=n.grouping===void 0||n.thousands===void 0?cu:ox(lu.call(n.grouping,Number),n.thousands+""),e=n.currency===void 0?"":n.currency[0]+"",i=n.currency===void 0?"":n.currency[1]+"",r=n.decimal===void 0?".":n.decimal+"",o=n.numerals===void 0?cu:sx(lu.call(n.numerals,String)),s=n.percent===void 0?"%":n.percent+"",a=n.minus===void 0?"−":n.minus+"",l=n.nan===void 0?"NaN":n.nan+"";function c(f,u){f=ur(f);var d=f.fill,p=f.align,y=f.sign,g=f.symbol,m=f.zero,x=f.width,v=f.comma,b=f.precision,k=f.trim,M=f.type;M==="n"?(v=!0,M="g"):au[M]||(b===void 0&&(b=12),k=!0,M="g"),(m||d==="0"&&p==="=")&&(m=!0,d="0",p="=");var C=(u&&u.prefix!==void 0?u.prefix:"")+(g==="$"?e:g==="#"&&/[boxX]/.test(M)?"0"+M.toLowerCase():""),L=(g==="$"?i:/[%p]/.test(M)?s:"")+(u&&u.suffix!==void 0?u.suffix:""),_=au[M],$=/[defgprs%]/.test(M);b=b===void 0?6:/[gprs]/.test(M)?Math.max(1,Math.min(21,b)):Math.max(0,Math.min(20,b));function I(E){var P=C,S=L,w,A,T;if(M==="c")S=_(E)+S,E="";else{E=+E;var R=E<0||1/E<0;if(E=isNaN(E)?l:_(Math.abs(E),b),k&&(E=cx(E)),R&&+E==0&&y!=="+"&&(R=!1),P=(R?y==="("?y:a:y==="-"||y==="("?"":y)+P,S=(M==="s"&&!isNaN(E)&&_o!==void 0?hu[8+_o/3]:"")+S+(R&&y==="("?")":""),$){for(w=-1,A=E.length;++w<A;)if(T=E.charCodeAt(w),48>T||T>57){S=(T===46?r+E.slice(w+1):E.slice(w))+S,E=E.slice(0,w);break}}}v&&!m&&(E=t(E,1/0));var F=P.length+E.length+S.length,D=F<x?new Array(x-F+1).join(d):"";switch(v&&m&&(E=t(D+E,D.length?x-S.length:1/0),D=""),p){case"<":E=P+E+S+D;break;case"=":E=P+D+E+S;break;case"^":E=D.slice(0,F=D.length>>1)+P+E+S+D.slice(F);break;default:E=D+P+E+S;break}return o(E)}return I.toString=function(){return f+""},I}function h(f,u){var d=Math.max(-8,Math.min(8,Math.floor(Ii(u)/3)))*3,p=Math.pow(10,-d),y=c((f=ur(f),f.type="f",f),{suffix:hu[8+d/3]});return function(g){return y(p*g)}}return{format:c,formatPrefix:h}}var Co,fr,uu;ux({thousands:",",grouping:[3],currency:["$",""]});function ux(n){return Co=hx(n),fr=Co.format,uu=Co.formatPrefix,Co}function fx(n){return Math.max(0,-Ii(Math.abs(n)))}function dx(n,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(Ii(t)/3)))*3-Ii(Math.abs(n)))}function px(n,t){return n=Math.abs(n),t=Math.abs(t)-n,Math.max(0,Ii(t)-Ii(n))+1}function gx(n,t,e,i){var r=ya(n,t,e),o;switch(i=ur(i??",f"),i.type){case"s":{var s=Math.max(Math.abs(n),Math.abs(t));return i.precision==null&&!isNaN(o=dx(r,s))&&(i.precision=o),uu(i,s)}case"":case"e":case"g":case"p":case"r":{i.precision==null&&!isNaN(o=px(r,Math.max(Math.abs(n),Math.abs(t))))&&(i.precision=o-(i.type==="e"));break}case"f":case"%":{i.precision==null&&!isNaN(o=fx(r))&&(i.precision=o-(i.type==="%")*2);break}}return fr(i)}function Sa(n){var t=n.domain;return n.ticks=function(e){var i=t();return ga(i[0],i[i.length-1],e??10)},n.tickFormat=function(e,i){var r=t();return gx(r[0],r[r.length-1],e??10,i)},n.nice=function(e){e==null&&(e=10);var i=t(),r=0,o=i.length-1,s=i[r],a=i[o],l,c,h=10;for(a<s&&(c=s,s=a,a=c,c=r,r=o,o=c);h-- >0;){if(c=ma(s,a,e),c===l)return i[r]=s,i[o]=a,t(i);if(c>0)s=Math.floor(s/c)*c,a=Math.ceil(a/c)*c;else if(c<0)s=Math.ceil(s*c)/c,a=Math.floor(a*c)/c;else break;l=c}return n},n}function we(){var n=ou();return n.copy=function(){return Ao(n,we())},pi.apply(n,arguments),Sa(n)}function fu(n,t){n=n.slice();var e=0,i=n.length-1,r=n[e],o=n[i],s;return o<r&&(s=e,e=i,i=s,s=r,r=o,o=s),n[e]=t.floor(r),n[i]=t.ceil(o),n}function du(n){return Math.log(n)}function pu(n){return Math.exp(n)}function mx(n){return-Math.log(-n)}function yx(n){return-Math.exp(-n)}function xx(n){return isFinite(n)?+("1e"+n):n<0?0:n}function bx(n){return n===10?xx:n===Math.E?Math.exp:t=>Math.pow(n,t)}function vx(n){return n===Math.E?Math.log:n===10&&Math.log10||n===2&&Math.log2||(n=Math.log(n),t=>Math.log(t)/n)}function gu(n){return(t,e)=>-n(-t,e)}function wx(n){const t=n(du,pu),e=t.domain;let i=10,r,o;function s(){return r=vx(i),o=bx(i),e()[0]<0?(r=gu(r),o=gu(o),n(mx,yx)):n(du,pu),t}return t.base=function(a){return arguments.length?(i=+a,s()):i},t.domain=function(a){return arguments.length?(e(a),s()):e()},t.ticks=a=>{const l=e();let c=l[0],h=l[l.length-1];const f=h<c;f&&([c,h]=[h,c]);let u=r(c),d=r(h),p,y;const g=a==null?10:+a;let m=[];if(!(i%1)&&d-u<g){if(u=Math.floor(u),d=Math.ceil(d),c>0){for(;u<=d;++u)for(p=1;p<i;++p)if(y=u<0?p/o(-u):p*o(u),!(y<c)){if(y>h)break;m.push(y)}}else for(;u<=d;++u)for(p=i-1;p>=1;--p)if(y=u>0?p/o(-u):p*o(u),!(y<c)){if(y>h)break;m.push(y)}m.length*2<g&&(m=ga(c,h,g))}else m=ga(u,d,Math.min(d-u,g)).map(o);return f?m.reverse():m},t.tickFormat=(a,l)=>{if(a==null&&(a=10),l==null&&(l=i===10?"s":","),typeof l!="function"&&(!(i%1)&&(l=ur(l)).precision==null&&(l.trim=!0),l=fr(l)),a===1/0)return l;const c=Math.max(1,i*a/t.ticks().length);return h=>{let f=h/o(Math.round(r(h)));return f*i<i-.5&&(f*=i),f<=c?l(h):""}},t.nice=()=>e(fu(e(),{floor:a=>o(Math.floor(r(a))),ceil:a=>o(Math.ceil(r(a)))})),t}function Po(){const n=wx(Ma()).domain([1,10]);return n.copy=()=>Ao(n,Po()).base(n.base()),pi.apply(n,arguments),n}function mu(n){return function(t){return t<0?-Math.pow(-t,n):Math.pow(t,n)}}function kx(n){return n<0?-Math.sqrt(-n):Math.sqrt(n)}function Mx(n){return n<0?-n*n:n*n}function Ax(n){var t=n(en,en),e=1;function i(){return e===1?n(en,en):e===.5?n(kx,Mx):n(mu(e),mu(1/e))}return t.exponent=function(r){return arguments.length?(e=+r,i()):e},Sa(t)}function yu(){var n=Ax(Ma());return n.copy=function(){return Ao(n,yu()).exponent(n.exponent())},pi.apply(n,arguments),n}function Sx(){return yu.apply(null,arguments).exponent(.5)}const _a=new Date,Ca=new Date;function ce(n,t,e,i){function r(o){return n(o=arguments.length===0?new Date:new Date(+o)),o}return r.floor=o=>(n(o=new Date(+o)),o),r.ceil=o=>(n(o=new Date(o-1)),t(o,1),n(o),o),r.round=o=>{const s=r(o),a=r.ceil(o);return o-s<a-o?s:a},r.offset=(o,s)=>(t(o=new Date(+o),s==null?1:Math.floor(s)),o),r.range=(o,s,a)=>{const l=[];if(o=r.ceil(o),a=a==null?1:Math.floor(a),!(o<s)||!(a>0))return l;let c;do l.push(c=new Date(+o)),t(o,a),n(o);while(c<o&&o<s);return l},r.filter=o=>ce(s=>{if(s>=s)for(;n(s),!o(s);)s.setTime(s-1)},(s,a)=>{if(s>=s)if(a<0)for(;++a<=0;)for(;t(s,-1),!o(s););else for(;--a>=0;)for(;t(s,1),!o(s););}),e&&(r.count=(o,s)=>(_a.setTime(+o),Ca.setTime(+s),n(_a),n(Ca),Math.floor(e(_a,Ca))),r.every=o=>(o=Math.floor(o),!isFinite(o)||!(o>0)?null:o>1?r.filter(i?s=>i(s)%o===0:s=>r.count(0,s)%o===0):r)),r}const Eo=ce(()=>{},(n,t)=>{n.setTime(+n+t)},(n,t)=>t-n);Eo.every=n=>(n=Math.floor(n),!isFinite(n)||!(n>0)?null:n>1?ce(t=>{t.setTime(Math.floor(t/n)*n)},(t,e)=>{t.setTime(+t+e*n)},(t,e)=>(e-t)/n):Eo),Eo.range;const $n=1e3,nn=$n*60,Ln=nn*60,In=Ln*24,Pa=In*7,xu=In*30,Ea=In*365,mi=ce(n=>{n.setTime(n-n.getMilliseconds())},(n,t)=>{n.setTime(+n+t*$n)},(n,t)=>(t-n)/$n,n=>n.getUTCSeconds());mi.range;const Ta=ce(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*$n)},(n,t)=>{n.setTime(+n+t*nn)},(n,t)=>(t-n)/nn,n=>n.getMinutes());Ta.range;const $a=ce(n=>{n.setUTCSeconds(0,0)},(n,t)=>{n.setTime(+n+t*nn)},(n,t)=>(t-n)/nn,n=>n.getUTCMinutes());$a.range;const La=ce(n=>{n.setTime(n-n.getMilliseconds()-n.getSeconds()*$n-n.getMinutes()*nn)},(n,t)=>{n.setTime(+n+t*Ln)},(n,t)=>(t-n)/Ln,n=>n.getHours());La.range;const Ia=ce(n=>{n.setUTCMinutes(0,0,0)},(n,t)=>{n.setTime(+n+t*Ln)},(n,t)=>(t-n)/Ln,n=>n.getUTCHours());Ia.range;const dr=ce(n=>n.setHours(0,0,0,0),(n,t)=>n.setDate(n.getDate()+t),(n,t)=>(t-n-(t.getTimezoneOffset()-n.getTimezoneOffset())*nn)/In,n=>n.getDate()-1);dr.range;const To=ce(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/In,n=>n.getUTCDate()-1);To.range;const bu=ce(n=>{n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCDate(n.getUTCDate()+t)},(n,t)=>(t-n)/In,n=>Math.floor(n/In));bu.range;function yi(n){return ce(t=>{t.setDate(t.getDate()-(t.getDay()+7-n)%7),t.setHours(0,0,0,0)},(t,e)=>{t.setDate(t.getDate()+e*7)},(t,e)=>(e-t-(e.getTimezoneOffset()-t.getTimezoneOffset())*nn)/Pa)}const $o=yi(0),Lo=yi(1),_x=yi(2),Cx=yi(3),Fi=yi(4),Px=yi(5),Ex=yi(6);$o.range,Lo.range,_x.range,Cx.range,Fi.range,Px.range,Ex.range;function xi(n){return ce(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-n)%7),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCDate(t.getUTCDate()+e*7)},(t,e)=>(e-t)/Pa)}const Io=xi(0),Fo=xi(1),Tx=xi(2),$x=xi(3),Ri=xi(4),Lx=xi(5),Ix=xi(6);Io.range,Fo.range,Tx.range,$x.range,Ri.range,Lx.range,Ix.range;const Fa=ce(n=>{n.setDate(1),n.setHours(0,0,0,0)},(n,t)=>{n.setMonth(n.getMonth()+t)},(n,t)=>t.getMonth()-n.getMonth()+(t.getFullYear()-n.getFullYear())*12,n=>n.getMonth());Fa.range;const Ra=ce(n=>{n.setUTCDate(1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCMonth(n.getUTCMonth()+t)},(n,t)=>t.getUTCMonth()-n.getUTCMonth()+(t.getUTCFullYear()-n.getUTCFullYear())*12,n=>n.getUTCMonth());Ra.range;const Fn=ce(n=>{n.setMonth(0,1),n.setHours(0,0,0,0)},(n,t)=>{n.setFullYear(n.getFullYear()+t)},(n,t)=>t.getFullYear()-n.getFullYear(),n=>n.getFullYear());Fn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:ce(t=>{t.setFullYear(Math.floor(t.getFullYear()/n)*n),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,e)=>{t.setFullYear(t.getFullYear()+e*n)}),Fn.range;const Rn=ce(n=>{n.setUTCMonth(0,1),n.setUTCHours(0,0,0,0)},(n,t)=>{n.setUTCFullYear(n.getUTCFullYear()+t)},(n,t)=>t.getUTCFullYear()-n.getUTCFullYear(),n=>n.getUTCFullYear());Rn.every=n=>!isFinite(n=Math.floor(n))||!(n>0)?null:ce(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/n)*n),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,e)=>{t.setUTCFullYear(t.getUTCFullYear()+e*n)}),Rn.range;function vu(n,t,e,i,r,o){const s=[[mi,1,$n],[mi,5,5*$n],[mi,15,15*$n],[mi,30,30*$n],[o,1,nn],[o,5,5*nn],[o,15,15*nn],[o,30,30*nn],[r,1,Ln],[r,3,3*Ln],[r,6,6*Ln],[r,12,12*Ln],[i,1,In],[i,2,2*In],[e,1,Pa],[t,1,xu],[t,3,3*xu],[n,1,Ea]];function a(c,h,f){const u=h<c;u&&([c,h]=[h,c]);const d=f&&typeof f.range=="function"?f:l(c,h,f),p=d?d.range(c,+h+1):[];return u?p.reverse():p}function l(c,h,f){const u=Math.abs(h-c)/f,d=pa(([,,g])=>g).right(s,u);if(d===s.length)return n.every(ya(c/Ea,h/Ea,f));if(d===0)return Eo.every(Math.max(ya(c,h,f),1));const[p,y]=s[u/s[d-1][2]<s[d][2]/u?d-1:d];return p.every(y)}return[a,l]}const[Fx,Rx]=vu(Rn,Ra,Io,bu,Ia,$a),[Dx,zx]=vu(Fn,Fa,$o,dr,La,Ta);function Da(n){if(0<=n.y&&n.y<100){var t=new Date(-1,n.m,n.d,n.H,n.M,n.S,n.L);return t.setFullYear(n.y),t}return new Date(n.y,n.m,n.d,n.H,n.M,n.S,n.L)}function za(n){if(0<=n.y&&n.y<100){var t=new Date(Date.UTC(-1,n.m,n.d,n.H,n.M,n.S,n.L));return t.setUTCFullYear(n.y),t}return new Date(Date.UTC(n.y,n.m,n.d,n.H,n.M,n.S,n.L))}function pr(n,t,e){return{y:n,m:t,d:e,H:0,M:0,S:0,L:0}}function Bx(n){var t=n.dateTime,e=n.date,i=n.time,r=n.periods,o=n.days,s=n.shortDays,a=n.months,l=n.shortMonths,c=gr(r),h=mr(r),f=gr(o),u=mr(o),d=gr(s),p=mr(s),y=gr(a),g=mr(a),m=gr(l),x=mr(l),v={a:T,A:R,b:F,B:D,c:null,d:_u,e:_u,f:a1,g:y1,G:b1,H:r1,I:o1,j:s1,L:Cu,m:c1,M:l1,p:z,q:B,Q:Iu,s:Fu,S:h1,u:u1,U:f1,V:d1,w:p1,W:g1,x:null,X:null,y:m1,Y:x1,Z:v1,"%":Lu},b={a:H,A:J,b:X,B:j,c:null,d:Eu,e:Eu,f:A1,g:F1,G:D1,H:w1,I:k1,j:M1,L:Tu,m:S1,M:_1,p:W,q:U,Q:Iu,s:Fu,S:C1,u:P1,U:E1,V:T1,w:$1,W:L1,x:null,X:null,y:I1,Y:R1,Z:z1,"%":Lu},k={a:$,A:I,b:E,B:P,c:S,d:Au,e:Au,f:t1,g:Mu,G:ku,H:Su,I:Su,j:Zx,L:Qx,m:jx,M:Kx,p:_,q:qx,Q:n1,s:i1,S:Jx,u:Vx,U:Gx,V:Yx,w:Hx,W:Xx,x:w,X:A,y:Mu,Y:ku,Z:Ux,"%":e1};v.x=M(e,v),v.X=M(i,v),v.c=M(t,v),b.x=M(e,b),b.X=M(i,b),b.c=M(t,b);function M(G,N){return function(Y){var O=[],ct=-1,it=0,ft=G.length,dt,at,ot;for(Y instanceof Date||(Y=new Date(+Y));++ct<ft;)G.charCodeAt(ct)===37&&(O.push(G.slice(it,ct)),(at=wu[dt=G.charAt(++ct)])!=null?dt=G.charAt(++ct):at=dt==="e"?" ":"0",(ot=N[dt])&&(dt=ot(Y,at)),O.push(dt),it=ct+1);return O.push(G.slice(it,ct)),O.join("")}}function C(G,N){return function(Y){var O=pr(1900,void 0,1),ct=L(O,G,Y+="",0),it,ft;if(ct!=Y.length)return null;if("Q"in O)return new Date(O.Q);if("s"in O)return new Date(O.s*1e3+("L"in O?O.L:0));if(N&&!("Z"in O)&&(O.Z=0),"p"in O&&(O.H=O.H%12+O.p*12),O.m===void 0&&(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?(it=za(pr(O.y,0,1)),ft=it.getUTCDay(),it=ft>4||ft===0?Fo.ceil(it):Fo(it),it=To.offset(it,(O.V-1)*7),O.y=it.getUTCFullYear(),O.m=it.getUTCMonth(),O.d=it.getUTCDate()+(O.w+6)%7):(it=Da(pr(O.y,0,1)),ft=it.getDay(),it=ft>4||ft===0?Lo.ceil(it):Lo(it),it=dr.offset(it,(O.V-1)*7),O.y=it.getFullYear(),O.m=it.getMonth(),O.d=it.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),ft="Z"in O?za(pr(O.y,0,1)).getUTCDay():Da(pr(O.y,0,1)).getDay(),O.m=0,O.d="W"in O?(O.w+6)%7+O.W*7-(ft+5)%7:O.w+O.U*7-(ft+6)%7);return"Z"in O?(O.H+=O.Z/100|0,O.M+=O.Z%100,za(O)):Da(O)}}function L(G,N,Y,O){for(var ct=0,it=N.length,ft=Y.length,dt,at;ct<it;){if(O>=ft)return-1;if(dt=N.charCodeAt(ct++),dt===37){if(dt=N.charAt(ct++),at=k[dt in wu?N.charAt(ct++):dt],!at||(O=at(G,Y,O))<0)return-1}else if(dt!=Y.charCodeAt(O++))return-1}return O}function _(G,N,Y){var O=c.exec(N.slice(Y));return O?(G.p=h.get(O[0].toLowerCase()),Y+O[0].length):-1}function $(G,N,Y){var O=d.exec(N.slice(Y));return O?(G.w=p.get(O[0].toLowerCase()),Y+O[0].length):-1}function I(G,N,Y){var O=f.exec(N.slice(Y));return O?(G.w=u.get(O[0].toLowerCase()),Y+O[0].length):-1}function E(G,N,Y){var O=m.exec(N.slice(Y));return O?(G.m=x.get(O[0].toLowerCase()),Y+O[0].length):-1}function P(G,N,Y){var O=y.exec(N.slice(Y));return O?(G.m=g.get(O[0].toLowerCase()),Y+O[0].length):-1}function S(G,N,Y){return L(G,t,N,Y)}function w(G,N,Y){return L(G,e,N,Y)}function A(G,N,Y){return L(G,i,N,Y)}function T(G){return s[G.getDay()]}function R(G){return o[G.getDay()]}function F(G){return l[G.getMonth()]}function D(G){return a[G.getMonth()]}function z(G){return r[+(G.getHours()>=12)]}function B(G){return 1+~~(G.getMonth()/3)}function H(G){return s[G.getUTCDay()]}function J(G){return o[G.getUTCDay()]}function X(G){return l[G.getUTCMonth()]}function j(G){return a[G.getUTCMonth()]}function W(G){return r[+(G.getUTCHours()>=12)]}function U(G){return 1+~~(G.getUTCMonth()/3)}return{format:function(G){var N=M(G+="",v);return N.toString=function(){return G},N},parse:function(G){var N=C(G+="",!1);return N.toString=function(){return G},N},utcFormat:function(G){var N=M(G+="",b);return N.toString=function(){return G},N},utcParse:function(G){var N=C(G+="",!0);return N.toString=function(){return G},N}}}var wu={"-":"",_:" ",0:"0"},ue=/^\s*\d+/,Ox=/^%/,Nx=/[\\^$*+?|[\]().{}]/g;function Yt(n,t,e){var i=n<0?"-":"",r=(i?-n:n)+"",o=r.length;return i+(o<e?new Array(e-o+1).join(t)+r:r)}function Wx(n){return n.replace(Nx,"\\$&")}function gr(n){return new RegExp("^(?:"+n.map(Wx).join("|")+")","i")}function mr(n){return new Map(n.map((t,e)=>[t.toLowerCase(),e]))}function Hx(n,t,e){var i=ue.exec(t.slice(e,e+1));return i?(n.w=+i[0],e+i[0].length):-1}function Vx(n,t,e){var i=ue.exec(t.slice(e,e+1));return i?(n.u=+i[0],e+i[0].length):-1}function Gx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.U=+i[0],e+i[0].length):-1}function Yx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.V=+i[0],e+i[0].length):-1}function Xx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.W=+i[0],e+i[0].length):-1}function ku(n,t,e){var i=ue.exec(t.slice(e,e+4));return i?(n.y=+i[0],e+i[0].length):-1}function Mu(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.y=+i[0]+(+i[0]>68?1900:2e3),e+i[0].length):-1}function Ux(n,t,e){var i=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(e,e+6));return i?(n.Z=i[1]?0:-(i[2]+(i[3]||"00")),e+i[0].length):-1}function qx(n,t,e){var i=ue.exec(t.slice(e,e+1));return i?(n.q=i[0]*3-3,e+i[0].length):-1}function jx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.m=i[0]-1,e+i[0].length):-1}function Au(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.d=+i[0],e+i[0].length):-1}function Zx(n,t,e){var i=ue.exec(t.slice(e,e+3));return i?(n.m=0,n.d=+i[0],e+i[0].length):-1}function Su(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.H=+i[0],e+i[0].length):-1}function Kx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.M=+i[0],e+i[0].length):-1}function Jx(n,t,e){var i=ue.exec(t.slice(e,e+2));return i?(n.S=+i[0],e+i[0].length):-1}function Qx(n,t,e){var i=ue.exec(t.slice(e,e+3));return i?(n.L=+i[0],e+i[0].length):-1}function t1(n,t,e){var i=ue.exec(t.slice(e,e+6));return i?(n.L=Math.floor(i[0]/1e3),e+i[0].length):-1}function e1(n,t,e){var i=Ox.exec(t.slice(e,e+1));return i?e+i[0].length:-1}function n1(n,t,e){var i=ue.exec(t.slice(e));return i?(n.Q=+i[0],e+i[0].length):-1}function i1(n,t,e){var i=ue.exec(t.slice(e));return i?(n.s=+i[0],e+i[0].length):-1}function _u(n,t){return Yt(n.getDate(),t,2)}function r1(n,t){return Yt(n.getHours(),t,2)}function o1(n,t){return Yt(n.getHours()%12||12,t,2)}function s1(n,t){return Yt(1+dr.count(Fn(n),n),t,3)}function Cu(n,t){return Yt(n.getMilliseconds(),t,3)}function a1(n,t){return Cu(n,t)+"000"}function c1(n,t){return Yt(n.getMonth()+1,t,2)}function l1(n,t){return Yt(n.getMinutes(),t,2)}function h1(n,t){return Yt(n.getSeconds(),t,2)}function u1(n){var t=n.getDay();return t===0?7:t}function f1(n,t){return Yt($o.count(Fn(n)-1,n),t,2)}function Pu(n){var t=n.getDay();return t>=4||t===0?Fi(n):Fi.ceil(n)}function d1(n,t){return n=Pu(n),Yt(Fi.count(Fn(n),n)+(Fn(n).getDay()===4),t,2)}function p1(n){return n.getDay()}function g1(n,t){return Yt(Lo.count(Fn(n)-1,n),t,2)}function m1(n,t){return Yt(n.getFullYear()%100,t,2)}function y1(n,t){return n=Pu(n),Yt(n.getFullYear()%100,t,2)}function x1(n,t){return Yt(n.getFullYear()%1e4,t,4)}function b1(n,t){var e=n.getDay();return n=e>=4||e===0?Fi(n):Fi.ceil(n),Yt(n.getFullYear()%1e4,t,4)}function v1(n){var t=n.getTimezoneOffset();return(t>0?"-":(t*=-1,"+"))+Yt(t/60|0,"0",2)+Yt(t%60,"0",2)}function Eu(n,t){return Yt(n.getUTCDate(),t,2)}function w1(n,t){return Yt(n.getUTCHours(),t,2)}function k1(n,t){return Yt(n.getUTCHours()%12||12,t,2)}function M1(n,t){return Yt(1+To.count(Rn(n),n),t,3)}function Tu(n,t){return Yt(n.getUTCMilliseconds(),t,3)}function A1(n,t){return Tu(n,t)+"000"}function S1(n,t){return Yt(n.getUTCMonth()+1,t,2)}function _1(n,t){return Yt(n.getUTCMinutes(),t,2)}function C1(n,t){return Yt(n.getUTCSeconds(),t,2)}function P1(n){var t=n.getUTCDay();return t===0?7:t}function E1(n,t){return Yt(Io.count(Rn(n)-1,n),t,2)}function $u(n){var t=n.getUTCDay();return t>=4||t===0?Ri(n):Ri.ceil(n)}function T1(n,t){return n=$u(n),Yt(Ri.count(Rn(n),n)+(Rn(n).getUTCDay()===4),t,2)}function $1(n){return n.getUTCDay()}function L1(n,t){return Yt(Fo.count(Rn(n)-1,n),t,2)}function I1(n,t){return Yt(n.getUTCFullYear()%100,t,2)}function F1(n,t){return n=$u(n),Yt(n.getUTCFullYear()%100,t,2)}function R1(n,t){return Yt(n.getUTCFullYear()%1e4,t,4)}function D1(n,t){var e=n.getUTCDay();return n=e>=4||e===0?Ri(n):Ri.ceil(n),Yt(n.getUTCFullYear()%1e4,t,4)}function z1(){return"+0000"}function Lu(){return"%"}function Iu(n){return+n}function Fu(n){return Math.floor(+n/1e3)}var Di,Ro,Do;B1({dateTime:"%x, %X",date:"%-m/%-d/%Y",time:"%-I:%M:%S %p",periods:["AM","PM"],days:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],shortDays:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],months:["January","February","March","April","May","June","July","August","September","October","November","December"],shortMonths:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"]});function B1(n){return Di=Bx(n),Ro=Di.format,Di.parse,Do=Di.utcFormat,Di.utcParse,Di}function O1(n){return new Date(n)}function N1(n){return n instanceof Date?+n:+new Date(+n)}function Ba(n,t,e,i,r,o,s,a,l,c){var h=ou(),f=h.invert,u=h.domain,d=c(".%L"),p=c(":%S"),y=c("%I:%M"),g=c("%I %p"),m=c("%a %d"),x=c("%b %d"),v=c("%B"),b=c("%Y");function k(M){return(l(M)<M?d:a(M)<M?p:s(M)<M?y:o(M)<M?g:i(M)<M?r(M)<M?m:x:e(M)<M?v:b)(M)}return h.invert=function(M){return new Date(f(M))},h.domain=function(M){return arguments.length?u(Array.from(M,N1)):u().map(O1)},h.ticks=function(M){var C=u();return n(C[0],C[C.length-1],M??10)},h.tickFormat=function(M,C){return C==null?k:c(C)},h.nice=function(M){var C=u();return(!M||typeof M.range!="function")&&(M=t(C[0],C[C.length-1],M??10)),M?u(fu(C,M)):h},h.copy=function(){return Ao(h,Ba(n,t,e,i,r,o,s,a,l,c))},h}function W1(){return pi.apply(Ba(Dx,zx,Fn,Fa,$o,dr,La,Ta,mi,Ro).domain([new Date(2e3,0,1),new Date(2e3,0,2)]),arguments)}function H1(){return pi.apply(Ba(Fx,Rx,Rn,Ra,Io,To,Ia,$a,mi,Do).domain([Date.UTC(2e3,0,1),Date.UTC(2e3,0,2)]),arguments)}function V1(){var n=0,t=1,e,i,r,o,s=en,a=!1,l;function c(f){return f==null||isNaN(f=+f)?l:s(r===0?.5:(f=(o(f)-e)*r,a?Math.max(0,Math.min(1,f)):f))}c.domain=function(f){return arguments.length?([n,t]=f,e=o(n=+n),i=o(t=+t),r=e===i?0:1/(i-e),c):[n,t]},c.clamp=function(f){return arguments.length?(a=!!f,c):a},c.interpolator=function(f){return arguments.length?(s=f,c):s};function h(f){return function(u){var d,p;return arguments.length?([d,p]=u,s=f(d,p),c):[s(0),s(1)]}}return c.range=h(ae),c.rangeRound=h(Qh),c.unknown=function(f){return arguments.length?(l=f,c):l},function(f){return o=f,e=f(n),i=f(t),r=e===i?0:1/(i-e),c}}function G1(n,t){return t.domain(n.domain()).interpolator(n.interpolator()).clamp(n.clamp()).unknown(n.unknown())}function Ru(){var n=Sa(V1()(en));return n.copy=function(){return G1(n,Ru())},Ty.apply(n,arguments)}function Y1(n){return n}var zo=1,Bo=2,Oa=3,yr=4,Du=1e-6;function X1(n){return"translate("+n+",0)"}function U1(n){return"translate(0,"+n+")"}function q1(n){return t=>+n(t)}function j1(n,t){return t=Math.max(0,n.bandwidth()-t*2)/2,n.round()&&(t=Math.round(t)),e=>+n(e)+t}function Z1(){return!this.__axis}function Oo(n,t){var e=[],i=null,r=null,o=6,s=6,a=3,l=typeof window<"u"&&window.devicePixelRatio>1?0:.5,c=n===zo||n===yr?-1:1,h=n===yr||n===Bo?"x":"y",f=n===zo||n===Oa?X1:U1;function u(d){var p=i??(t.ticks?t.ticks.apply(t,e):t.domain()),y=r??(t.tickFormat?t.tickFormat.apply(t,e):Y1),g=Math.max(o,0)+a,m=t.range(),x=+m[0]+l,v=+m[m.length-1]+l,b=(t.bandwidth?j1:q1)(t.copy(),l),k=d.selection?d.selection():d,M=k.selectAll(".domain").data([null]),C=k.selectAll(".tick").data(p,t).order(),L=C.exit(),_=C.enter().append("g").attr("class","tick"),$=C.select("line"),I=C.select("text");M=M.merge(M.enter().insert("path",".tick").attr("class","domain").attr("stroke","currentColor")),C=C.merge(_),$=$.merge(_.append("line").attr("stroke","currentColor").attr(h+"2",c*o)),I=I.merge(_.append("text").attr("fill","currentColor").attr(h,c*g).attr("dy",n===zo?"0em":n===Oa?"0.71em":"0.32em")),d!==k&&(M=M.transition(d),C=C.transition(d),$=$.transition(d),I=I.transition(d),L=L.transition(d).attr("opacity",Du).attr("transform",function(E){return isFinite(E=b(E))?f(E+l):this.getAttribute("transform")}),_.attr("opacity",Du).attr("transform",function(E){var P=this.parentNode.__axis;return f((P&&isFinite(P=P(E))?P:b(E))+l)})),L.remove(),M.attr("d",n===yr||n===Bo?s?"M"+c*s+","+x+"H"+l+"V"+v+"H"+c*s:"M"+l+","+x+"V"+v:s?"M"+x+","+c*s+"V"+l+"H"+v+"V"+c*s:"M"+x+","+l+"H"+v),C.attr("opacity",1).attr("transform",function(E){return f(b(E)+l)}),$.attr(h+"2",c*o),I.attr(h,c*g).text(y),k.filter(Z1).attr("fill","none").attr("font-size",10).attr("font-family","sans-serif").attr("text-anchor",n===Bo?"start":n===yr?"end":"middle"),k.each(function(){this.__axis=b})}return u.scale=function(d){return arguments.length?(t=d,u):t},u.ticks=function(){return e=Array.from(arguments),u},u.tickArguments=function(d){return arguments.length?(e=d==null?[]:Array.from(d),u):e.slice()},u.tickValues=function(d){return arguments.length?(i=d==null?null:Array.from(d),u):i&&i.slice()},u.tickFormat=function(d){return arguments.length?(r=d,u):r},u.tickSize=function(d){return arguments.length?(o=s=+d,u):o},u.tickSizeInner=function(d){return arguments.length?(o=+d,u):o},u.tickSizeOuter=function(d){return arguments.length?(s=+d,u):s},u.tickPadding=function(d){return arguments.length?(a=+d,u):a},u.offset=function(d){return arguments.length?(l=+d,u):l},u}function Na(n){return Oo(zo,n)}function zu(n){return Oo(Bo,n)}function Bu(n){return Oo(Oa,n)}function Ou(n){return Oo(yr,n)}var K1={value:()=>{}};function zi(){for(var n=0,t=arguments.length,e={},i;n<t;++n){if(!(i=arguments[n]+"")||i in e||/[\s.]/.test(i))throw new Error("illegal type: "+i);e[i]=[]}return new No(e)}function No(n){this._=n}function J1(n,t){return n.trim().split(/^|\s+/).map(function(e){var i="",r=e.indexOf(".");if(r>=0&&(i=e.slice(r+1),e=e.slice(0,r)),e&&!t.hasOwnProperty(e))throw new Error("unknown type: "+e);return{type:e,name:i}})}No.prototype=zi.prototype={constructor:No,on:function(n,t){var e=this._,i=J1(n+"",e),r,o=-1,s=i.length;if(arguments.length<2){for(;++o<s;)if((r=(n=i[o]).type)&&(r=Q1(e[r],n.name)))return r;return}if(t!=null&&typeof t!="function")throw new Error("invalid callback: "+t);for(;++o<s;)if(r=(n=i[o]).type)e[r]=Nu(e[r],n.name,t);else if(t==null)for(r in e)e[r]=Nu(e[r],n.name,null);return this},copy:function(){var n={},t=this._;for(var e in t)n[e]=t[e].slice();return new No(n)},call:function(n,t){if((r=arguments.length-2)>0)for(var e=new Array(r),i=0,r,o;i<r;++i)e[i]=arguments[i+2];if(!this._.hasOwnProperty(n))throw new Error("unknown type: "+n);for(o=this._[n],i=0,r=o.length;i<r;++i)o[i].value.apply(t,e)},apply:function(n,t,e){if(!this._.hasOwnProperty(n))throw new Error("unknown type: "+n);for(var i=this._[n],r=0,o=i.length;r<o;++r)i[r].value.apply(t,e)}};function Q1(n,t){for(var e=0,i=n.length,r;e<i;++e)if((r=n[e]).name===t)return r.value}function Nu(n,t,e){for(var i=0,r=n.length;i<r;++i)if(n[i].name===t){n[i]=K1,n=n.slice(0,i).concat(n.slice(i+1));break}return e!=null&&n.push({name:t,value:e}),n}var Bi=0,xr=0,br=0,Wu=1e3,Wo,vr,Ho=0,bi=0,Vo=0,wr=typeof performance=="object"&&performance.now?performance:Date,Hu=typeof window=="object"&&window.requestAnimationFrame?window.requestAnimationFrame.bind(window):function(n){setTimeout(n,17)};function Wa(){return bi||(Hu(tb),bi=wr.now()+Vo)}function tb(){bi=0}function Go(){this._call=this._time=this._next=null}Go.prototype=Yo.prototype={constructor:Go,restart:function(n,t,e){if(typeof n!="function")throw new TypeError("callback is not a function");e=(e==null?Wa():+e)+(t==null?0:+t),!this._next&&vr!==this&&(vr?vr._next=this:Wo=this,vr=this),this._call=n,this._time=e,Ha()},stop:function(){this._call&&(this._call=null,this._time=1/0,Ha())}};function Yo(n,t,e){var i=new Go;return i.restart(n,t,e),i}function eb(){Wa(),++Bi;for(var n=Wo,t;n;)(t=bi-n._time)>=0&&n._call.call(void 0,t),n=n._next;--Bi}function Vu(){bi=(Ho=wr.now())+Vo,Bi=xr=0;try{eb()}finally{Bi=0,ib(),bi=0}}function nb(){var n=wr.now(),t=n-Ho;t>Wu&&(Vo-=t,Ho=n)}function ib(){for(var n,t=Wo,e,i=1/0;t;)t._call?(i>t._time&&(i=t._time),n=t,t=t._next):(e=t._next,t._next=null,t=n?n._next=e:Wo=e);vr=n,Ha(i)}function Ha(n){if(!Bi){xr&&(xr=clearTimeout(xr));var t=n-bi;t>24?(n<1/0&&(xr=setTimeout(Vu,n-wr.now()-Vo)),br&&(br=clearInterval(br))):(br||(Ho=wr.now(),br=setInterval(nb,Wu)),Bi=1,Hu(Vu))}}function Gu(n,t,e){var i=new Go;return t=t==null?0:+t,i.restart(r=>{i.stop(),n(r+t)},t,e),i}var rb=zi("start","end","cancel","interrupt"),ob=[],Yu=0,Xu=1,Va=2,Xo=3,Uu=4,Ga=5,Uo=6;function qo(n,t,e,i,r,o){var s=n.__transition;if(!s)n.__transition={};else if(e in s)return;sb(n,e,{name:t,index:i,group:r,on:rb,tween:ob,time:o.time,delay:o.delay,duration:o.duration,ease:o.ease,timer:null,state:Yu})}function Ya(n,t){var e=mn(n,t);if(e.state>Yu)throw new Error("too late; already scheduled");return e}function vn(n,t){var e=mn(n,t);if(e.state>Xo)throw new Error("too late; already running");return e}function mn(n,t){var e=n.__transition;if(!e||!(e=e[t]))throw new Error("transition not found");return e}function sb(n,t,e){var i=n.__transition,r;i[t]=e,e.timer=Yo(o,0,e.time);function o(c){e.state=Xu,e.timer.restart(s,e.delay,e.time),e.delay<=c&&s(c-e.delay)}function s(c){var h,f,u,d;if(e.state!==Xu)return l();for(h in i)if(d=i[h],d.name===e.name){if(d.state===Xo)return Gu(s);d.state===Uu?(d.state=Uo,d.timer.stop(),d.on.call("interrupt",n,n.__data__,d.index,d.group),delete i[h]):+h<t&&(d.state=Uo,d.timer.stop(),d.on.call("cancel",n,n.__data__,d.index,d.group),delete i[h])}if(Gu(function(){e.state===Xo&&(e.state=Uu,e.timer.restart(a,e.delay,e.time),a(c))}),e.state=Va,e.on.call("start",n,n.__data__,e.index,e.group),e.state===Va){for(e.state=Xo,r=new Array(u=e.tween.length),h=0,f=-1;h<u;++h)(d=e.tween[h].value.call(n,n.__data__,e.index,e.group))&&(r[++f]=d);r.length=f+1}}function a(c){for(var h=c<e.duration?e.ease.call(null,c/e.duration):(e.timer.restart(l),e.state=Ga,1),f=-1,u=r.length;++f<u;)r[f].call(n,h);e.state===Ga&&(e.on.call("end",n,n.__data__,e.index,e.group),l())}function l(){e.state=Uo,e.timer.stop(),delete i[t];for(var c in i)return;delete n.__transition}}function Oi(n,t){var e=n.__transition,i,r,o=!0,s;if(e){t=t==null?null:t+"";for(s in e){if((i=e[s]).name!==t){o=!1;continue}r=i.state>Va&&i.state<Ga,i.state=Uo,i.timer.stop(),i.on.call(r?"interrupt":"cancel",n,n.__data__,i.index,i.group),delete e[s]}o&&delete n.__transition}}function ab(n){return this.each(function(){Oi(this,n)})}function cb(n,t){var e,i;return function(){var r=vn(this,n),o=r.tween;if(o!==e){i=e=o;for(var s=0,a=i.length;s<a;++s)if(i[s].name===t){i=i.slice(),i.splice(s,1);break}}r.tween=i}}function lb(n,t,e){var i,r;if(typeof e!="function")throw new Error;return function(){var o=vn(this,n),s=o.tween;if(s!==i){r=(i=s).slice();for(var a={name:t,value:e},l=0,c=r.length;l<c;++l)if(r[l].name===t){r[l]=a;break}l===c&&r.push(a)}o.tween=r}}function hb(n,t){var e=this._id;if(n+="",arguments.length<2){for(var i=mn(this.node(),e).tween,r=0,o=i.length,s;r<o;++r)if((s=i[r]).name===n)return s.value;return null}return this.each((t==null?cb:lb)(e,n,t))}function Xa(n,t,e){var i=n._id;return n.each(function(){var r=vn(this,i);(r.value||(r.value={}))[t]=e.apply(this,arguments)}),function(r){return mn(r,i).value[t]}}function qu(n,t){var e;return(typeof t=="number"?gn:t instanceof oe?gi:(e=oe(t))?(t=e,gi):Jh)(n,t)}function ub(n){return function(){this.removeAttribute(n)}}function fb(n){return function(){this.removeAttributeNS(n.space,n.local)}}function db(n,t,e){var i,r=e+"",o;return function(){var s=this.getAttribute(n);return s===r?null:s===i?o:o=t(i=s,e)}}function pb(n,t,e){var i,r=e+"",o;return function(){var s=this.getAttributeNS(n.space,n.local);return s===r?null:s===i?o:o=t(i=s,e)}}function gb(n,t,e){var i,r,o;return function(){var s,a=e(this),l;return a==null?void this.removeAttribute(n):(s=this.getAttribute(n),l=a+"",s===l?null:s===i&&l===r?o:(r=l,o=t(i=s,a)))}}function mb(n,t,e){var i,r,o;return function(){var s,a=e(this),l;return a==null?void this.removeAttributeNS(n.space,n.local):(s=this.getAttributeNS(n.space,n.local),l=a+"",s===l?null:s===i&&l===r?o:(r=l,o=t(i=s,a)))}}function yb(n,t){var e=xo(n),i=e==="transform"?qy:qu;return this.attrTween(n,typeof t=="function"?(e.local?mb:gb)(e,i,Xa(this,"attr."+n,t)):t==null?(e.local?fb:ub)(e):(e.local?pb:db)(e,i,t))}function xb(n,t){return function(e){this.setAttribute(n,t.call(this,e))}}function bb(n,t){return function(e){this.setAttributeNS(n.space,n.local,t.call(this,e))}}function vb(n,t){var e,i;function r(){var o=t.apply(this,arguments);return o!==i&&(e=(i=o)&&bb(n,o)),e}return r._value=t,r}function wb(n,t){var e,i;function r(){var o=t.apply(this,arguments);return o!==i&&(e=(i=o)&&xb(n,o)),e}return r._value=t,r}function kb(n,t){var e="attr."+n;if(arguments.length<2)return(e=this.tween(e))&&e._value;if(t==null)return this.tween(e,null);if(typeof t!="function")throw new Error;var i=xo(n);return this.tween(e,(i.local?vb:wb)(i,t))}function Mb(n,t){return function(){Ya(this,n).delay=+t.apply(this,arguments)}}function Ab(n,t){return t=+t,function(){Ya(this,n).delay=t}}function Sb(n){var t=this._id;return arguments.length?this.each((typeof n=="function"?Mb:Ab)(t,n)):mn(this.node(),t).delay}function _b(n,t){return function(){vn(this,n).duration=+t.apply(this,arguments)}}function Cb(n,t){return t=+t,function(){vn(this,n).duration=t}}function Pb(n){var t=this._id;return arguments.length?this.each((typeof n=="function"?_b:Cb)(t,n)):mn(this.node(),t).duration}function Eb(n,t){if(typeof t!="function")throw new Error;return function(){vn(this,n).ease=t}}function Tb(n){var t=this._id;return arguments.length?this.each(Eb(t,n)):mn(this.node(),t).ease}function $b(n,t){return function(){var e=t.apply(this,arguments);if(typeof e!="function")throw new Error;vn(this,n).ease=e}}function Lb(n){if(typeof n!="function")throw new Error;return this.each($b(this._id,n))}function Ib(n){typeof n!="function"&&(n=Lh(n));for(var t=this._groups,e=t.length,i=new Array(e),r=0;r<e;++r)for(var o=t[r],s=o.length,a=i[r]=[],l,c=0;c<s;++c)(l=o[c])&&n.call(l,l.__data__,c,o)&&a.push(l);return new Dn(i,this._parents,this._name,this._id)}function Fb(n){if(n._id!==this._id)throw new Error;for(var t=this._groups,e=n._groups,i=t.length,r=e.length,o=Math.min(i,r),s=new Array(i),a=0;a<o;++a)for(var l=t[a],c=e[a],h=l.length,f=s[a]=new Array(h),u,d=0;d<h;++d)(u=l[d]||c[d])&&(f[d]=u);for(;a<i;++a)s[a]=t[a];return new Dn(s,this._parents,this._name,this._id)}function Rb(n){return(n+"").trim().split(/^|\s+/).every(function(t){var e=t.indexOf(".");return e>=0&&(t=t.slice(0,e)),!t||t==="start"})}function Db(n,t,e){var i,r,o=Rb(t)?Ya:vn;return function(){var s=o(this,n),a=s.on;a!==i&&(r=(i=a).copy()).on(t,e),s.on=r}}function zb(n,t){var e=this._id;return arguments.length<2?mn(this.node(),e).on.on(n):this.each(Db(e,n,t))}function Bb(n){return function(){var t=this.parentNode;for(var e in this.__transition)if(+e!==n)return;t&&t.removeChild(this)}}function Ob(){return this.on("end.remove",Bb(this._id))}function Nb(n){var t=this._name,e=this._id;typeof n!="function"&&(n=fa(n));for(var i=this._groups,r=i.length,o=new Array(r),s=0;s<r;++s)for(var a=i[s],l=a.length,c=o[s]=new Array(l),h,f,u=0;u<l;++u)(h=a[u])&&(f=n.call(h,h.__data__,u,a))&&("__data__"in h&&(f.__data__=h.__data__),c[u]=f,qo(c[u],t,e,u,c,mn(h,e)));return new Dn(o,this._parents,t,e)}function Wb(n){var t=this._name,e=this._id;typeof n!="function"&&(n=$h(n));for(var i=this._groups,r=i.length,o=[],s=[],a=0;a<r;++a)for(var l=i[a],c=l.length,h,f=0;f<c;++f)if(h=l[f]){for(var u=n.call(h,h.__data__,f,l),d,p=mn(h,e),y=0,g=u.length;y<g;++y)(d=u[y])&&qo(d,t,e,y,u,p);o.push(u),s.push(h)}return new Dn(o,s,t,e)}var Hb=hr.prototype.constructor;function Vb(){return new Hb(this._groups,this._parents)}function Gb(n,t){var e,i,r;return function(){var o=Li(this,n),s=(this.style.removeProperty(n),Li(this,n));return o===s?null:o===e&&s===i?r:r=t(e=o,i=s)}}function ju(n){return function(){this.style.removeProperty(n)}}function Yb(n,t,e){var i,r=e+"",o;return function(){var s=Li(this,n);return s===r?null:s===i?o:o=t(i=s,e)}}function Xb(n,t,e){var i,r,o;return function(){var s=Li(this,n),a=e(this),l=a+"";return a==null&&(l=a=(this.style.removeProperty(n),Li(this,n))),s===l?null:s===i&&l===r?o:(r=l,o=t(i=s,a))}}function Ub(n,t){var e,i,r,o="style."+t,s="end."+o,a;return function(){var l=vn(this,n),c=l.on,h=l.value[o]==null?a||(a=ju(t)):void 0;(c!==e||r!==h)&&(i=(e=c).copy()).on(s,r=h),l.on=i}}function qb(n,t,e){var i=(n+="")=="transform"?Uy:qu;return t==null?this.styleTween(n,Gb(n,i)).on("end.style."+n,ju(n)):typeof t=="function"?this.styleTween(n,Xb(n,i,Xa(this,"style."+n,t))).each(Ub(this._id,n)):this.styleTween(n,Yb(n,i,t),e).on("end.style."+n,null)}function jb(n,t,e){return function(i){this.style.setProperty(n,t.call(this,i),e)}}function Zb(n,t,e){var i,r;function o(){var s=t.apply(this,arguments);return s!==r&&(i=(r=s)&&jb(n,s,e)),i}return o._value=t,o}function Kb(n,t,e){var i="style."+(n+="");if(arguments.length<2)return(i=this.tween(i))&&i._value;if(t==null)return this.tween(i,null);if(typeof t!="function")throw new Error;return this.tween(i,Zb(n,t,e??""))}function Jb(n){return function(){this.textContent=n}}function Qb(n){return function(){var t=n(this);this.textContent=t??""}}function tv(n){return this.tween("text",typeof n=="function"?Qb(Xa(this,"text",n)):Jb(n==null?"":n+""))}function ev(n){return function(t){this.textContent=n.call(this,t)}}function nv(n){var t,e;function i(){var r=n.apply(this,arguments);return r!==e&&(t=(e=r)&&ev(r)),t}return i._value=n,i}function iv(n){var t="text";if(arguments.length<1)return(t=this.tween(t))&&t._value;if(n==null)return this.tween(t,null);if(typeof n!="function")throw new Error;return this.tween(t,nv(n))}function rv(){for(var n=this._name,t=this._id,e=Zu(),i=this._groups,r=i.length,o=0;o<r;++o)for(var s=i[o],a=s.length,l,c=0;c<a;++c)if(l=s[c]){var h=mn(l,t);qo(l,n,e,c,s,{time:h.time+h.delay+h.duration,delay:0,duration:h.duration,ease:h.ease})}return new Dn(i,this._parents,n,e)}function ov(){var n,t,e=this,i=e._id,r=e.size();return new Promise(function(o,s){var a={value:s},l={value:function(){--r===0&&o()}};e.each(function(){var c=vn(this,i),h=c.on;h!==n&&(t=(n=h).copy(),t._.cancel.push(a),t._.interrupt.push(a),t._.end.push(l)),c.on=t}),r===0&&o()})}var sv=0;function Dn(n,t,e,i){this._groups=n,this._parents=t,this._name=e,this._id=i}function Zu(){return++sv}var zn=hr.prototype;Dn.prototype={constructor:Dn,select:Nb,selectAll:Wb,selectChild:zn.selectChild,selectChildren:zn.selectChildren,filter:Ib,merge:Fb,selection:Vb,transition:rv,call:zn.call,nodes:zn.nodes,node:zn.node,size:zn.size,empty:zn.empty,each:zn.each,on:zb,attr:yb,attrTween:kb,style:qb,styleTween:Kb,text:tv,textTween:iv,remove:Ob,tween:hb,delay:Sb,duration:Pb,ease:Tb,easeVarying:Lb,end:ov,[Symbol.iterator]:zn[Symbol.iterator]};const kr=n=>+n;function Ku(n){return--n*n*n+1}function av(n){return((n*=2)<=1?n*n*n:(n-=2)*n*n+2)/2}var cv={time:null,delay:0,duration:250,ease:av};function lv(n,t){for(var e;!(e=n.__transition)||!(e=e[t]);)if(!(n=n.parentNode))throw new Error(`transition ${t} not found`);return e}function hv(n){var t,e;n instanceof Dn?(t=n._id,n=n._name):(t=Zu(),(e=cv).time=Wa(),n=n==null?null:n+"");for(var i=this._groups,r=i.length,o=0;o<r;++o)for(var s=i[o],a=s.length,l,c=0;c<a;++c)(l=s[c])&&qo(l,n,t,c,s,e||lv(l,t));return new Dn(i,this._parents,n,t)}hr.prototype.interrupt=ab,hr.prototype.transition=hv;let Ua=!0;function uv(n){Ua=n}function qa(){return Ua}const fv=Object.entries({"%A":"%A","%a":"%a","%d":"%d","%e":"%-d","%b":"%b","%B":"%B","%m":"%m","%y":"%y","%Y":"%Y","%H":"%H","%I":"%I","%k":"%-H","%l":"%-I","%M":"%M","%p":"%p","%P":"%p","%S":"%S","%L":"%L"}).map(([n,t])=>[new RegExp(n.replace("%","\\%"),"g"),t]),Ju=new Map;function ja(n,t){let e=Ju.get(n);if(!e){e=n;for(const[r,o]of fv)e=e.replace(r,o);Ju.set(n,e)}return(Ua?Do(e):Ro(e))(new Date(t))}function jo(n,t=-1,e=".",i=","){if(!Number.isFinite(n))return"0";if(t===-1){const l=n.toString(),c=l.indexOf(".");t=c===-1?0:l.length-c-1}const r=n.toFixed(t),[o,s]=r.split("."),a=o.replace(/\B(?=(\d{3})+(?!\d))/g,i);return s?`${a}${e}${s}`:a}const dv=[[1e12,"T"],[1e9,"G"],[1e6,"M"],[1e3,"k"]];function Za(n){const t=Math.abs(n);if(t<1e3)return t===Math.floor(t)?jo(n,0,".",","):n.toPrecision(4).replace(/\.?0+$/,"");for(const[e,i]of dv)if(t>=e){const r=n/e;return(r===Math.floor(r)?String(r):r.toPrecision(4).replace(/\.?0+$/,""))+i}return String(n)}const pv=/\{([^}]+)\}/g;function Zt(n,t,e=!1){return n.replace(pv,(i,r)=>{const o=r.indexOf(":");let s=r,a=null;o!==-1&&(s=r.slice(0,o),a=r.slice(o+1));const l=s.trim().split(".");let c=t;for(const f of l){if(c==null)return"";c=c[f]}if(c==null)return"";let h;if(a){const f=typeof c=="number"?c:parseFloat(String(c));if(isNaN(f))h=String(c);else try{h=fr(a)(f)}catch{h=String(c)}}else h=String(c);return e?jn(h):h})}const gv=/[&<>"']/g,mv={"&":"&","<":"<",">":">",'"':""","'":"'"};function jn(n){return String(n).replace(gv,t=>mv[t])}const yv=/^[=+\-@\t\r]/,xv=/^-?\d+(?:[.,]\d+)?$/;function Zo(n,t=","){let e=n==null?"":String(n);return yv.test(e)&&!xv.test(e)&&(e="'"+e),(e.includes(t)||e.includes('"')||e.includes(`
|
|
2
|
+
`)||e.includes("\r"))&&(e='"'+e.replace(/"/g,'""')+'"'),e}const bv=/^(#[0-9a-f]{3,8}|(rgb|rgba|hsl|hsla)\([\d.,%\s/]+\)|[a-z]+)$/i;function Qu(n,t="#333"){const e=String(n).trim();return bv.test(e)?e:t}const vv=/<\/?[^>]+(>|$)/g,wv=/<br\s*\/?>/gi;function fe(n){return n.replace(wv," ").replace(vv,"").trim()}function Ka(n,t){switch(n.type||"linear"){case"logarithmic":return new Mv(n,t);case"datetime":return new Av(n,t);case"category":return new tf(n,t);default:return new kv(n,t)}}class Ko{constructor(t,e){this.config=t,this.plotArea=e}autoText(){return Pn(this.config._backgroundColor)}getRange(){const t=this.config._inverted;if(this.config.isX){if(t){const s=this.plotArea.height;return this.config.reversed?[s,0]:[0,s]}const o=this.plotArea.width;return this.config.reversed?[o,0]:[0,o]}if(t){const o=this.plotArea.width;return this.config.reversed?[o,0]:[0,o]}const e=this.getPaneBand(),i=e.top,r=e.top+e.height;return this.config.reversed?[i,r]:[r,i]}getPaneBand(){const t=this.plotArea.height,e=o=>{if(o==null)return null;if(typeof o=="number")return o;if(typeof o=="string"&&o.trim().endsWith("%"))return parseFloat(o)/100*t;const s=parseFloat(o);return Number.isFinite(s)?s:null},i=e(this.config.top)??0,r=e(this.config.height)??t-i;return{top:i,height:r}}createD3Axis(t){const e=this.config.isX,i=this.config.opposite,r=this.config._inverted;return e?r?i?zu(t):Ou(t):i?Na(t):Bu(t):r?i?Na(t):Bu(t):i?zu(t):Ou(t)}applyAxisStyles(t,e){var s,a,l,c,h,f,u,d,p;const i=this.config,r=i.tickLength??10,o=i.tickPosition||"outside";if(t.selectAll(".tick line").attr("stroke",i.tickColor||"#ccd6eb").attr("stroke-width",i.tickWidth??1),(r!==10||o==="inside")&&t.selectAll(".tick line").each(function(){const y=rt(this);if(i.isX){const g=i.opposite?-1:1;o==="inside"?y.attr("y1",0).attr("y2",-g*r):y.attr("y1",0).attr("y2",g*r)}else{const g=i.opposite?1:-1;o==="inside"?y.attr("x1",0).attr("x2",-g*r):y.attr("x1",0).attr("x2",g*r)}}),t.selectAll(".domain").attr("stroke",i.lineColor||"#ccd6eb").attr("stroke-width",i.lineWidth??1),((s=i.labels)==null?void 0:s.enabled)===!1)t.selectAll(".tick text").remove();else{const y=((a=i.labels)==null?void 0:a.style)||{};if(t.selectAll(".tick text").attr("fill",y.color||this.autoText()).style("font-size",y.fontSize||wt),((l=i.labels)==null?void 0:l.x)!==void 0||((c=i.labels)==null?void 0:c.y)!==void 0){const g=((h=i.labels)==null?void 0:h.x)??0,m=((f=i.labels)==null?void 0:f.y)??0;t.selectAll(".tick text").attr("dx",g).attr("dy",parseFloat(t.select(".tick text").attr("dy")||"0")+m)}if((u=i.labels)!=null&&u.step&&i.labels.step>1&&t.selectAll(".tick text").each(function(g,m){m%i.labels.step!==0&&rt(this).remove()}),i.showFirstLabel===!1){const g=t.selectAll(".tick text").nodes();g.length>0&&rt(g[0]).remove()}if(i.showLastLabel===!1){const g=t.selectAll(".tick text").nodes();g.length>0&&rt(g[g.length-1]).remove()}if((d=i.labels)!=null&&d.rotation)t.selectAll(".tick text").attr("transform",`rotate(${i.labels.rotation})`).style("text-anchor",i.labels.rotation<0?"end":"start");else if((i.isX?!i._inverted:i._inverted)&&((p=i.labels)!=null&&p.autoRotation))this.applyAutoRotation(t,i.labels.autoRotation,e);else if((i.isX?i._inverted:!i._inverted)&&!i.opposite&&Array.isArray(i.categories)&&i.categories.length>0){const g=i.tickLength??10;this.truncateSideLabels(t,e.x-g-4)}}i.visible===!1&&t.style("display","none")}truncateSideLabels(t,e){if(!(e>12))return;const i="…";t.selectAll(".tick text").each(function(){const r=this,o=r.textContent||"";if(!o)return;const s=r.getComputedTextLength();if(s<=e)return;let a=Math.max(1,Math.min(o.length,Math.ceil(o.length*e/s)));for(r.textContent=o.slice(0,a).replace(/\s+$/,"")+i;a>1&&r.getComputedTextLength()>e;)a--,r.textContent=o.slice(0,a).replace(/\s+$/,"")+i;const l=rt(r);l.select("title").remove(),l.append("title").text(o)})}applyAutoRotation(t,e,i){const r=t.selectAll(".tick text").nodes();if(r.length<2||!this.hasLabelOverlap(r))return;this.applyAutoStep(t,r);const o=r.filter(s=>s.style.display!=="none");if(this.hasLabelOverlap(o))for(const s of e.length>0?e:[-45]){r.forEach(a=>{a.style.display=""}),t.selectAll(".tick text").attr("transform",`rotate(${s})`).style("text-anchor",s<0?"end":"start");break}}hasLabelOverlap(t,e=!1){for(let i=1;i<t.length;i++)try{const r=t[i-1].getBoundingClientRect(),o=t[i].getBoundingClientRect(),s=e?-4:2;if(r.right+s>o.left&&r.left<o.right)if(e){if(r.bottom+s>o.top&&r.top<o.bottom)return!0}else return!0}catch{return!1}return!1}applyAutoStep(t,e){const i=e.length;for(let r=2;r<=i;r++){e.forEach((s,a)=>{rt(s).style("display",a%r===0?"":"none")});const o=e.filter((s,a)=>a%r===0);if(!this.hasLabelOverlap(o))return}}renderGridLines(t,e,i,r){const o=this.config.gridLineWidth;if(!o||o<=0)return;const s=r||(e.ticks?e.ticks():e.domain()),a=t.append("g").attr("class","katucharts-grid");this.config.alternateGridColor&&this.renderAlternateGridColor(a,s,e,i);const l=this.config.isX?!this.config._inverted:!!this.config._inverted;for(const c of s){const h=e(c);l?a.append("line").attr("x1",h).attr("x2",h).attr("y1",0).attr("y2",i.height).attr("stroke",this.config.gridLineColor||"#e6e6e6").attr("stroke-width",o).attr("stroke-dasharray",this.getDashArray(this.config.gridLineDashStyle)):a.append("line").attr("x1",0).attr("x2",i.width).attr("y1",h).attr("y2",h).attr("stroke",this.config.gridLineColor||"#e6e6e6").attr("stroke-width",o).attr("stroke-dasharray",this.getDashArray(this.config.gridLineDashStyle))}this.renderMinorGridLines(a,s,e,i)}renderAlternateGridColor(t,e,i,r){const o=this.config.alternateGridColor,s=this.config.isX?!this.config._inverted:!!this.config._inverted;for(let a=0;a<e.length-1;a+=2){const l=i(e[a]),c=i(e[a+1]);s?t.insert("rect",":first-child").attr("x",Math.min(l,c)).attr("y",0).attr("width",Math.abs(c-l)).attr("height",r.height).attr("fill",o):t.insert("rect",":first-child").attr("x",0).attr("y",Math.min(l,c)).attr("width",r.width).attr("height",Math.abs(c-l)).attr("fill",o)}}renderMinorGridLines(t,e,i,r){const o=this.config.minorTickInterval,s=this.config.minorGridLineWidth??1,a=this.config.minorGridLineColor||"#f2f2f2";if(!o||o==="auto"||s<=0||typeof o!="number"||e.length<2)return;const l=i.domain?i.domain():[0,1],c=typeof l[0]=="number"?l[0]:0,h=typeof l[l.length-1]=="number"?l[l.length-1]:1,f=new Set(e.map(d=>Number(d))),u=this.config.isX?!this.config._inverted:!!this.config._inverted;for(let d=c;d<=h;d+=o){if(f.has(d))continue;const p=i(d);u?t.append("line").attr("x1",p).attr("x2",p).attr("y1",0).attr("y2",r.height).attr("stroke",a).attr("stroke-width",s).attr("class","katucharts-minor-grid"):t.append("line").attr("x1",0).attr("x2",r.width).attr("y1",p).attr("y2",p).attr("stroke",a).attr("stroke-width",s).attr("class","katucharts-minor-grid")}}renderPlotBands(t,e,i){var r,o,s,a;if((r=this.config.plotBands)!=null&&r.length)for(const l of this.config.plotBands){const c=e(l.from??0),h=e(l.to??0);let f,u,d,p;(this.config.isX?!this.config._inverted:!!this.config._inverted)?(f=Math.min(c,h),u=0,d=Math.abs(h-c),p=i.height):(f=0,u=Math.min(c,h),d=i.width,p=Math.abs(h-c));const g=t.append("rect").attr("x",f).attr("y",u).attr("width",d).attr("height",p).attr("fill",l.color||"rgba(0,0,0,0.05)").attr("class",`katucharts-plot-band${l.className?" "+l.className:""}`);if(l.borderColor&&g.attr("stroke",l.borderColor).attr("stroke-width",l.borderWidth??0),l.borderRadius&&g.attr("rx",l.borderRadius),l.zIndex!==void 0&&g.style("z-index",l.zIndex),l.events&&(l.events.click&&g.on("click",m=>l.events.click.call(l,m)),l.events.mouseover&&g.on("mouseover",m=>l.events.mouseover.call(l,m)),l.events.mouseout&&g.on("mouseout",m=>l.events.mouseout.call(l,m)),l.events.mousemove&&g.on("mousemove",m=>l.events.mousemove.call(l,m)),g.style("cursor","pointer")),(o=l.label)!=null&&o.text){const m=l.label,x=m.align||"center",v=m.verticalAlign||"top";let b=x==="left"?f+4:x==="right"?f+d-4:f+d/2,k=v==="top"?u+12:v==="bottom"?u+p-4:u+p/2;b+=m.x??0,k+=m.y??0;const M=x==="left"?"start":x==="right"?"end":"middle";t.append("text").attr("x",b).attr("y",k).attr("text-anchor",M).attr("font-size",((s=m.style)==null?void 0:s.fontSize)||wt).attr("fill",((a=m.style)==null?void 0:a.color)||this.autoText()).attr("transform",m.rotation?`rotate(${m.rotation},${b},${k})`:"").style("pointer-events","none").attr("class","katucharts-plot-band-label").text(m.text||"")}}}renderPlotLines(t,e,i){var r,o,s,a;if((r=this.config.plotLines)!=null&&r.length)for(const l of this.config.plotLines){const c=e(l.value??0),h=this.config.isX?!this.config._inverted:!!this.config._inverted;let f;if(h?f=t.append("line").attr("x1",c).attr("x2",c).attr("y1",0).attr("y2",i.height).attr("stroke",l.color||"#999").attr("stroke-width",l.width||1).attr("stroke-dasharray",this.getDashArray(l.dashStyle)).attr("class",`katucharts-plot-line${l.className?" "+l.className:""}`):f=t.append("line").attr("x1",0).attr("x2",i.width).attr("y1",c).attr("y2",c).attr("stroke",l.color||"#999").attr("stroke-width",l.width||1).attr("stroke-dasharray",this.getDashArray(l.dashStyle)).attr("class",`katucharts-plot-line${l.className?" "+l.className:""}`),l.zIndex!==void 0&&f.style("z-index",l.zIndex),l.events&&(f.style("pointer-events","stroke"),l.events.click&&f.on("click",u=>l.events.click.call(l,u)),l.events.mouseover&&f.on("mouseover",u=>l.events.mouseover.call(l,u)),l.events.mouseout&&f.on("mouseout",u=>l.events.mouseout.call(l,u)),l.events.mousemove&&f.on("mousemove",u=>l.events.mousemove.call(l,u)),f.style("cursor","pointer")),(o=l.label)!=null&&o.text){const u=l.label,d=u.align||(this.config.isX?"left":"right"),p=u.verticalAlign||(this.config.isX?"top":"middle");let y,g;this.config.isX?(y=c+(u.x??4),g=p==="top"?u.y??12:p==="bottom"?i.height+(u.y??-4):i.height/2+(u.y??0)):(y=d==="left"?u.x??4:d==="right"?i.width+(u.x??-4):i.width/2+(u.x??0),g=c+(u.y??-6));const m=d==="left"?"start":d==="right"?"end":"middle";t.append("text").attr("x",y).attr("y",g).attr("text-anchor",m).attr("font-size",((s=u.style)==null?void 0:s.fontSize)||wt).attr("fill",((a=u.style)==null?void 0:a.color)||this.autoText()).attr("transform",u.rotation?`rotate(${u.rotation},${y},${g})`:"").style("pointer-events","none").attr("class","katucharts-plot-line-label").text(u.text||"")}}}applyAxisBreaks(t){var a;if(!((a=this.config.breaks)!=null&&a.length))return;const e=t.copy(),i=e.domain(),r=e.range(),o=Math.abs(i[1]-i[0]);let s=0;for(const l of this.config.breaks){const c=l.from??0,h=l.to??0;s+=Math.abs(h-c)}if(o>0&&s>0){const l=(o-s)/o,c=[r[0],r[0]+(r[1]-r[0])*l];t.range(c)}}renderTitle(t,e){var l,c,h,f,u,d,p;if(!((l=this.config.title)!=null&&l.text))return;const i=this.config.title,r=i.offset??0,o=i.margin??0,s=i.rotation;if(this.config.isX?!this.config._inverted:!!this.config._inverted){const y=((c=this.config.labels)==null?void 0:c.enabled)!==!1;let g=(y?45:33)+o+r;if(y&&t.selectAll(".tick text").nodes().length>0)try{const b=t.node().getBBox();g=Math.max(g,b.height+10+o+r)}catch{}const m=t.append("text").attr("class","katucharts-axis-title").attr("x",e.width/2).attr("y",g).attr("text-anchor","middle").attr("font-size",((h=i.style)==null?void 0:h.fontSize)||wt).attr("fill",((f=i.style)==null?void 0:f.color)||this.autoText()).text(i.text);s!==void 0&&m.attr("transform",`rotate(${s}, ${e.width/2}, ${g})`)}else{const y=((u=this.config.labels)==null?void 0:u.enabled)!==!1;let g=(this.config.opposite?e.width+45:-45)+r;if(y)try{const k=t.node().getBBox();this.config.opposite?g=Math.max(g,k.x+k.width+10+o+r):g=Math.min(g,k.x-10-o-r)}catch{}const m=this.getPaneBand(),x=m.top+m.height/2,v=s??-90;t.append("text").attr("class","katucharts-axis-title").attr("x",g).attr("y",x).attr("text-anchor","middle").attr("transform",`rotate(${v}, ${g}, ${x})`).attr("font-size",((d=i.style)==null?void 0:d.fontSize)||wt).attr("fill",((p=i.style)==null?void 0:p.color)||this.autoText()).text(i.text)}}animateAxis(t,e,i){var l;this.plotArea=e;const r=this.scale;if(!r)return;r.range(this.getRange()),this.applyAxisBreaks(r);const o=this.createD3Axis(r);if(this.config.tickPositions)o.tickValues(this.config.tickPositions);else if(this.config.tickInterval){const c=r.domain(),h=[];for(let f=c[0];f<=c[1];f+=this.config.tickInterval)h.push(f);o.tickValues(h)}else if(r.domain&&typeof r.ticks=="function"){const c=this.config._inverted,h=this.config.isX?c?e.height:e.width:c?e.width:e.height;this.config.isX;const f=this.config.tickPixelInterval??72,u=Math.min(20,Math.max(2,Math.round(h/f))),d=r.domain();if(this.computeNiceTicks){const p=this.computeNiceTicks(d[0],d[1],u);o.tickValues(p)}else if(this.computeLogTicks){const p=this.computeLogTicks(d,e);o.tickValues(p)}}if((l=this.config.labels)!=null&&l.formatter){const c=this.config.labels.formatter;o.tickFormat(h=>c.call({value:h,axis:this}))}else this.linearTickFormat?o.tickFormat(c=>this.linearTickFormat(c,o)):o.tickFormat(c=>Za(c));const s=`katucharts-axis-${this.config.isX?"x":"y"}`,a=t.select(`.${s}`);a.empty()||(a.transition().duration(i).call(o),this.animateGridLines(t,r,e,i))}animateGridLines(t,e,i,r){const o=this.config.gridLineWidth;!o||o<=0||(t.selectAll(".katucharts-grid").remove(),this.renderGridLines(t,e,i))}getDashArray(t){return{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t||"Solid"]||"none"}destroy(){}}class kv extends Ko{constructor(t,e){super(t,e),this.scale=we().range(this.getRange()).domain([0,1])}updateDomain(t){let{min:e,max:i}=t;const r=this.config.min!==void 0&&this.config.min!==null,o=this.config.max!==void 0&&this.config.max!==null;r&&(e=this.config.min),o&&(i=this.config.max),this.config.softMin!==void 0&&e>this.config.softMin&&(e=this.config.softMin),this.config.softMax!==void 0&&i<this.config.softMax&&(i=this.config.softMax),this.config.floor!==void 0&&(e=Math.max(e,this.config.floor)),this.config.ceiling!==void 0&&(i=Math.min(i,this.config.ceiling));const s=this.config.isX?this.config.maxPadding||.01:this.config.maxPadding||.05,a=i-e||1,l=e,c=(this.config.minPadding??s)+(t.extraMinPadding??0),h=s+(t.extraMaxPadding??0);r||(e-=a*c),o||(i+=a*h);const f=(t.extraMinPadding??0)>0;if(l>=0&&e<0&&!f&&(e=0),this.config.floor!==void 0&&(e=Math.max(e,this.config.floor)),this.config.ceiling!==void 0&&(i=Math.min(i,this.config.ceiling)),this.config.minRange!==void 0&&i-e<this.config.minRange){const p=(e+i)/2;e=p-this.config.minRange/2,i=p+this.config.minRange/2}if(this.config.maxRange!==void 0&&i-e>this.config.maxRange&&(i=e+this.config.maxRange),this.scale.domain([e,i]).range(this.getRange()),!(r&&o)&&(this.config.startOnTick||this.config.endOnTick||!this.config.isX&&this.config.startOnTick!==!1&&this.config.endOnTick!==!1)&&(this.scale.nice(),r||o)){const[p,y]=this.scale.domain();this.scale.domain([r?this.config.min:p,o?this.config.max:y])}}render(t,e){var o;this.plotArea=e,this.scale.range(this.getRange()),this.applyAxisBreaks(this.scale);const i=this.createD3Axis(this.scale);if(this.config.tickPositions)i.tickValues(this.config.tickPositions);else if(this.config.tickInterval){const s=this.scale.domain(),a=[];for(let l=s[0];l<=s[1];l+=this.config.tickInterval)a.push(l);i.tickValues(a)}else if(this.config.tickAmount)i.ticks(this.config.tickAmount);else{const s=this.config._inverted,a=this.config.isX?s?e.height:e.width:s?e.width:e.height;this.config.isX;const l=this.config.tickPixelInterval??72,c=Math.min(20,Math.max(2,Math.round(a/l))),h=this.scale.domain(),f=this.computeNiceTicks(h[0],h[1],c),u=this.config.max!==void 0&&this.config.max!==null,d=this.config.min!==void 0&&this.config.min!==null,p=!this.config.isX&&this.config.endOnTick!==!1;if(f.length>0&&p&&!u){const y=f.length>1?f[1]-f[0]:f[0]||1;let g=f[f.length-1];g<h[1]&&(f.push(g+y),g=f[f.length-1]);let m=f[0];m>h[0]&&(f.unshift(m-y),m=f[0]);const x=u?h[1]:Math.max(h[1],g),v=d?h[0]:Math.min(h[0],m);this.scale.domain([v,x])}i.tickValues(f)}if((o=this.config.labels)!=null&&o.formatter){const s=this.config.labels.formatter;i.tickFormat(a=>s.call({value:a,axis:this}))}else i.tickFormat(s=>this.linearTickFormat(s,i));const r=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",this.getTransform(e));this.renderGridLines(t,this.scale,e),this.renderPlotBands(t,this.scale,e),this.renderPlotLines(t,this.scale,e),r.call(i),this.applyAxisStyles(r,e),this.renderTitle(r,e),this.renderStackLabels(t,this.scale,e)}renderStackLabels(t,e,i){var r;!((r=this.config.stackLabels)!=null&&r.enabled)||this.config.isX}computeNiceTicks(t,e,i){const r=e-t;if(r<=0)return[t];const o=r/i,s=Math.pow(10,Math.floor(Math.log10(o))),a=o/s;let l;a<=Math.SQRT2?l=s:a<=Math.sqrt(2*2.5)?l=2*s:a<=Math.sqrt(2.5*5)?l=2.5*s:a<=Math.sqrt(5*10)?l=5*s:l=10*s;const c=l.toString(),h=c.includes(".")?c.split(".")[1].length:0,f=Math.pow(10,h),u=g=>Math.round(g*f)/f,d=u(Math.ceil(t/l)*l),p=[],y=l*1e-6;for(let g=0;g<i+3;g++){const m=u(d+g*l);if(m>e+y)break;p.push(m)}return p}getPixelForValue(t){return this.scale(t)}getValueForPixel(t){return this.scale.invert(t)}linearTickFormat(t,e){var r;const i=(r=e.tickValues)==null?void 0:r.call(e);if(i&&i.length>=2){const o=Math.abs(i[1]-i[0]),s=parseFloat(o.toPrecision(6));if(s<1e3){const a=s.toString(),l=a.includes(".")?a.split(".")[1].length:0,c=jo(t,l);return l===0?c:c.replace(/(\.\d*?)0+$/,"$1").replace(/\.$/,"")}}return Za(t)}getTransform(t){const e=this.config._inverted;return this.config.isX?e?this.config.opposite?`translate(${t.width},0)`:"":this.config.opposite?"":`translate(0,${t.height})`:e?this.config.opposite?"":`translate(0,${t.height})`:this.config.opposite?`translate(${t.width},0)`:""}}class Mv extends Ko{constructor(t,e){super(t,e),this.scale=Po().range(this.getRange()).domain([1,10])}updateDomain(t){let{min:e,max:i}=t;e=Math.max(e,.001),this.config.min!==void 0&&this.config.min!==null&&(e=Math.max(this.config.min,.001)),this.config.max!==void 0&&this.config.max!==null&&(i=this.config.max);const r=Math.log10(Math.max(e,1e-10)),o=Math.log10(Math.max(i,1e-10)),s=Math.abs(o-r)||1,a=this.config.isX?this.config.minPadding??.01:this.config.minPadding??.05;(this.config.min===void 0||this.config.min===null)&&(e=Math.pow(10,r-s*a)),(this.config.max===void 0||this.config.max===null)&&(i=Math.pow(10,o+s*a)),this.config.startOnTick&&(e=Math.pow(10,Math.floor(Math.log10(Math.max(e,1e-10))))),this.config.endOnTick&&(i=Math.pow(10,Math.ceil(Math.log10(Math.max(i,1e-10))))),this.scale.domain([e,i]).range(this.getRange())}computeLogTicks(){const t=this.scale.domain(),e=Math.log10(Math.max(t[0],1e-10)),i=Math.log10(Math.max(t[1],1e-10));if(this.config.tickPositions)return this.config.tickPositions;let r;if(this.config.tickInterval)r=this.config.tickInterval;else{r=1;const l=Math.abs(i-e);if(l>12){const c=this.config.isX?this.plotArea.width:this.plotArea.height,f=Math.max(2,Math.floor(c/20));r=Math.max(1,Math.ceil(l/f))}}const o=Math.floor(e),s=Math.ceil(i),a=[];for(let l=o;l<=s;l+=r){const c=Math.pow(10,l);c>=t[0]*.999&&c<=t[1]*1.001&&a.push(c)}return a.length===0?a.push(t[0],t[1]):a.length===1&&(a[0]>t[0]*1.5&&a.unshift(t[0]),a[0]<t[1]/1.5&&a.push(t[1])),a}render(t,e){var a;this.plotArea=e,this.scale.range(this.getRange());const i=this.createD3Axis(this.scale),r=this.computeLogTicks();if(i.tickValues(r),(a=this.config.labels)!=null&&a.formatter){const l=this.config.labels.formatter;i.tickFormat(c=>l.call({value:c,axis:this}))}else i.tickFormat(l=>Za(l));const o=this.config.isX?!this.config._inverted:!!this.config._inverted,s=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",o?`translate(0,${e.height})`:"");this.renderGridLines(t,this.scale,e,r),s.call(i),this.applyAxisStyles(s,e),this.renderTitle(s,e)}getPixelForValue(t){return this.scale(Math.max(t,.001))}getValueForPixel(t){return this.scale.invert(t)}}class Av extends Ko{constructor(t,e){super(t,e);const i=qa()?H1:W1;this.scale=i().range(this.getRange()).domain([new Date,new Date])}updateDomain(t){const e=this.config.min??t.min,i=this.config.max??t.max;this.scale.domain([new Date(e),new Date(i)]).range(this.getRange())}render(t,e){var s;this.plotArea=e,this.scale.range(this.getRange());const i=this.createD3Axis(this.scale);if((s=this.config.labels)!=null&&s.formatter){const a=this.config.labels.formatter;i.tickFormat(l=>a.call({value:l.getTime(),axis:this}))}else if(this.config.dateTimeLabelFormats){const a=this.config.dateTimeLabelFormats,l=qa()?Do:Ro;i.tickFormat(c=>{const h=c,f=this.pickDateFormat(h,a);return l(f)(h)})}const r=this.config.isX?!this.config._inverted:!!this.config._inverted,o=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",r?`translate(0,${e.height})`:"");this.renderGridLines(t,this.scale,e),o.call(i),this.applyAxisStyles(o,e),this.renderTitle(o,e)}pickDateFormat(t,e){const i=qa(),r=i?t.getUTCMilliseconds():t.getMilliseconds(),o=i?t.getUTCSeconds():t.getSeconds(),s=i?t.getUTCMinutes():t.getMinutes(),a=i?t.getUTCHours():t.getHours(),l=i?t.getUTCDate():t.getDate(),c=i?t.getUTCMonth():t.getMonth();return r!==0&&e.millisecond?e.millisecond:o!==0&&e.second?e.second:s!==0&&e.minute?e.minute:a!==0&&e.hour?e.hour:l!==1&&e.day?e.day:c!==0&&e.month?e.month:e.year?e.year:e.day||"%b %d"}getPixelForValue(t){return this.scale(new Date(t))}getValueForPixel(t){return this.scale.invert(t).getTime()}}class tf extends Ko{constructor(t,e){super(t,e),this.scale=Zh().range(this.getRange()).paddingInner(.3).paddingOuter(.05),t.categories&&this.scale.domain(t.categories)}updateDomain(t){Array.isArray(t)&&this.scale.domain(t).range(this.getRange())}render(t,e){this.plotArea=e;const i=this.getRange();if(isNaN(i[0])||isNaN(i[1])||i[0]===i[1])return;this.scale.range(i);const r=this.createD3Axis(this.scale),o=this.config.isX?!this.config._inverted:!!this.config._inverted,s=t.append("g").attr("class",`katucharts-axis katucharts-axis-${this.config.isX?"x":"y"}`).attr("transform",o?`translate(0,${e.height})`:"");this.renderGridLines(t,this.scale,e),s.call(r),this.applyAxisStyles(s,e),this.renderTitle(s,e),this.applyAutoStepIfNeeded(s)}applyAutoStepIfNeeded(t){var s,a,l;if(((s=this.config.labels)==null?void 0:s.enabled)===!1)return;const e=this.scale.bandwidth();if(e<=0)return;const i=xe(((l=(a=this.config.labels)==null?void 0:a.style)==null?void 0:l.fontSize)||wt);if(i<=e)return;const o=Math.min(i,Math.max(5,Math.round(e*1.1)));t.selectAll(".tick text").style("font-size",`${o}px`)}getPixelForValue(t){const e=this.scale.domain();let i;if(typeof t=="number"){const r=Math.round(t);if(r>=0&&r<e.length){i=e[r];const o=(this.scale(i)??0)+this.scale.bandwidth()/2,s=(t-r)*this.scale.bandwidth();return o+s}i=String(t)}else i=String(t);return(this.scale(i)??0)+this.scale.bandwidth()/2}getBandwidth(){return this.scale.bandwidth()}getValueForPixel(t){const e=this.scale.domain(),i=this.scale.step(),r=Math.floor(t/i);return e[Math.min(r,e.length-1)]}}class Jo{static render(t,e,i,r,o,s){if(!i.enabled)return;const a=t.append("g").attr("class","katucharts-data-labels");i.zIndex!==void 0&&a.style("z-index",i.zIndex),e.forEach((l,c)=>{var p,y,g,m,x,v;if(l.y===null||l.y===void 0)return;if(i.filter){const b=i.filter.property,k=i.filter.operator||">",M=i.filter.value??0,C=b?l[b]:l.y;if(!Jo.matchesFilter(C,k,M))return}let h;i.formatter?h=i.formatter.call({point:{...l,index:c},series:{name:s},x:l.x,y:l.y,percentage:l.percentage}):i.format?h=fe(Zt(i.format,{point:l,series:{name:s},x:l.x,y:l.y})):h=String(l.y);const f=r.getPixelForValue(l.x??c)+(i.x??0),u=o.getPixelForValue(l.y)+(i.y??-8),d=a.append("text").attr("x",f).attr("y",u).attr("text-anchor",i.align||"center").attr("dominant-baseline","auto").attr("font-size",((p=i.style)==null?void 0:p.fontSize)||wt).attr("fill",i.color||((y=i.style)==null?void 0:y.color)||ye).attr("font-weight",((g=i.style)==null?void 0:g.fontWeight)||"normal").text(h);if(i.className&&d.attr("class",i.className),i.rotation&&d.attr("transform",`rotate(${i.rotation},${f},${u})`),i.shadow&&d.attr("filter","drop-shadow(1px 1px 2px rgba(0,0,0,0.3))"),(m=i.textPath)!=null&&m.enabled){const b=i.textPath.attributes||{};d.selectAll("*").remove();const k=d.append("textPath");for(const[M,C]of Object.entries(b))k.attr(M,C);k.text(h)}if(i.backgroundColor){const b=(v=(x=d.node())==null?void 0:x.getBBox)==null?void 0:v.call(x);if(b){const k=i.padding??2,M=a.insert("rect","text").attr("x",b.x-k).attr("y",b.y-k).attr("width",b.width+k*2).attr("height",b.height+k*2).attr("fill",i.backgroundColor).attr("rx",i.borderRadius??0).attr("stroke",i.borderColor||"none").attr("stroke-width",i.borderWidth??0);i.shadow&&M.attr("filter","drop-shadow(1px 1px 2px rgba(0,0,0,0.3))")}}}),i.defer&&(a.style("opacity","0"),a.transition().delay(1e3).duration(200).style("opacity","1"))}static matchesFilter(t,e,i){const r=Number(t);if(isNaN(r))return!1;switch(e){case">":return r>i;case"<":return r<i;case">=":return r>=i;case"<=":return r<=i;case"==":return r===i;case"!=":return r!==i;default:return!0}}}function Sv(n){if(typeof n=="string"){const t=document.getElementById(n);if(!t)throw new Error(`KatuCharts: container element "${n}" not found`);return t}return n}function ef(n,t=.5){const e=getComputedStyle(n),i=parseFloat(e.paddingLeft)||0,r=parseFloat(e.paddingRight)||0,o=parseFloat(e.paddingTop)||0,s=parseFloat(e.paddingBottom)||0,a=n.getBoundingClientRect(),l=a.width-i-r||n.clientWidth-i-r||600,c=a.height-o-s||n.clientHeight-o-s,h=c>0?c:Math.round(l*t);return{width:l,height:h}}function Ja(n,t){const e=document.createElement("div");return n&&(e.className=n),t&&t.appendChild(e),e}function nf(n){n&&n.parentNode&&n.parentNode.removeChild(n)}function Qa(n,t){let e=0,i=null;return function(...r){const o=Date.now(),s=t-(o-e);s<=0?(i&&(clearTimeout(i),i=null),e=o,n.apply(this,r)):i||(i=setTimeout(()=>{e=Date.now(),i=null,n.apply(this,r)},s))}}function _v(n,t){let e=null;return function(...i){e&&clearTimeout(e),e=setTimeout(()=>{n.apply(this,i)},t)}}const Yr=class Yr{constructor(t,e,i,r){if(this.element=null,this.splitElements=[],this.hideTimeout=null,this.categories=null,this.isDatetime=!1,this.sharedPoints=[],this.sharedProvider=null,this.lastMouseEvent=null,this.boundHandlers=[],this.config=t,this.container=t.outside?document.body:e,this.plotArea=i,t.enabled!==!1){if(r.on("point:mouseover",o=>this.show(o)),r.on("point:mouseout",o=>{var s,a,l;if(this.config.shared&&(o!=null&&o.series)){const c=((a=(s=o.series)==null?void 0:s.config)==null?void 0:a.name)??((l=o.series)==null?void 0:l.name)??"";this.sharedPoints=this.sharedPoints.filter(h=>h.series.name!==c)}this.scheduleHide()}),t.followPointer){const o=Qa(s=>{this.lastMouseEvent=s,this.element&&this.element.style.display!=="none"&&this.positionAtMouse(s)},16);e.addEventListener("mousemove",o),this.boundHandlers.push({el:e,type:"mousemove",fn:o})}if(t.stickOnContact){const o=Qa(s=>{if(this.element&&this.element.style.display!=="none"){const a=this.element.getBoundingClientRect();s.clientX>=a.left&&s.clientX<=a.right&&s.clientY>=a.top&&s.clientY<=a.bottom&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null)}},16);e.addEventListener("mousemove",o),this.boundHandlers.push({el:e,type:"mousemove",fn:o})}if(t.followTouchMove!==!1){const o=Qa(s=>{if(this.element&&this.element.style.display!=="none"&&s.touches.length===1){const a=s.touches[0],l=e.getBoundingClientRect(),c=this.config.distance??16;let h=a.clientX-l.left+c,f=a.clientY-l.top-10;const u=this.element.offsetWidth||120;h+u>l.width&&(h=a.clientX-l.left-u-c),f<0&&(f=5),this.element.style.left=`${h}px`,this.element.style.top=`${f}px`}},16);e.addEventListener("touchmove",o,{passive:!0}),this.boundHandlers.push({el:e,type:"touchmove",fn:o})}}}show(t){var r,o,s,a,l,c,h;if(this.config.enabled===!1)return;this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=null);const i={point:t.index!==void 0?{...t.point,index:t.index}:t.point,plotX:t.plotX,plotY:t.plotY,series:{name:((o=(r=t.series)==null?void 0:r.config)==null?void 0:o.name)??((s=t.series)==null?void 0:s.name)??"",color:((l=(a=t.series)==null?void 0:a.getColor)==null?void 0:l.call(a))??((c=t.series)==null?void 0:c.color)??"#333",config:(h=t.series)==null?void 0:h.config}};if(this.config.shared){const f=i.point.x??i.plotX;if(this.sharedProvider){const u=this.sharedProvider(f);this.sharedPoints=u.length>0?u:[i]}else{this.sharedPoints.length>0&&(this.sharedPoints[0].point.x??this.sharedPoints[0].plotX)!==f&&(this.sharedPoints=[]);const d=this.sharedPoints.findIndex(p=>p.series.name===i.series.name);d>=0?this.sharedPoints[d]=i:this.sharedPoints.push(i)}}if(this.config.split){this.showSplit(i);return}if(this.element||(this.element=this.createElement()),this.config.stickOnContact&&(this.element.style.pointerEvents="auto"),this.config.borderColor===void 0){const f=i.point.color||i.series.color||"#333";this.element.style.borderColor=f}this.config.shared&&this.sharedPoints.length>0?this.element.innerHTML=this.formatSharedContent(this.sharedPoints):this.element.innerHTML=this.formatContent(i),this.config.followPointer&&this.lastMouseEvent?this.positionAtMouse(this.lastMouseEvent):this.position(i),this.element.style.display="block",this.config.animation!==!1?this.element.style.opacity="1":(this.element.style.transition="none",this.element.style.opacity="1")}hide(){this.element&&(this.element.style.opacity="0",this.element.style.display="none"),this.hideSplitElements(),this.sharedPoints=[]}scheduleHide(){const t=this.config.hideDelay??500;this.hideTimeout=setTimeout(()=>this.hide(),t)}showSplit(t){this.hideSplitElements();const e=this.formatContent(t);if(!e)return;const i=this.createSplitElement(t.series.color||"#333");i.innerHTML=e;const r=this.config.distance??16,o=this.plotArea,s=o.x+t.plotX+r,a=o.y+t.plotY;i.style.left=`${s}px`,i.style.top=`${a}px`,i.style.display="block",i.style.opacity="1",this.splitElements.push(i)}hideSplitElements(){for(const t of this.splitElements)nf(t);this.splitElements=[]}createSplitElement(t){var s,a;const e=Ja("katucharts-tooltip-split",this.container),i=this.config.backgroundColor||"rgba(247,247,247,0.85)",r=this.config.borderRadius??3,o=this.config.padding??8;return Object.assign(e.style,{position:"absolute",pointerEvents:"none",zIndex:String(this.config.zIndex??10),backgroundColor:i,border:`${this.config.borderWidth??1}px solid ${t}`,borderRadius:`${r}px`,padding:`${o}px`,fontSize:((s=this.config.style)==null?void 0:s.fontSize)||"12px",color:((a=this.config.style)==null?void 0:a.color)||"#333333",boxShadow:this.config.shadow!==!1?"2px 2px 6px rgba(0,0,0,0.15)":"none",transition:this.config.animation!==!1?"opacity 0.15s":"none",whiteSpace:"nowrap",display:"none"}),e}createElement(){var a,l;const t=Ja(`katucharts-tooltip${this.config.className?" "+this.config.className:""}`,this.container),e=this.config.backgroundColor||"rgba(247,247,247,0.85)",i=this.config.borderRadius??3,r=this.config.padding??8,o=this.config.shape||"callout";let s=`${i}px`;return o==="circle"&&(s="50%"),Object.assign(t.style,{position:this.config.outside?"fixed":"absolute",pointerEvents:this.config.stickOnContact?"auto":"none",zIndex:String(this.config.zIndex??10),backgroundColor:e,border:`${this.config.borderWidth??1}px solid ${this.config.borderColor||"#ccc"}`,borderRadius:s,padding:`${r}px`,fontSize:((a=this.config.style)==null?void 0:a.fontSize)||"12px",color:((l=this.config.style)==null?void 0:l.color)||"#333333",boxShadow:this.config.shadow!==!1?"2px 2px 6px rgba(0,0,0,0.15)":"none",transition:this.config.animation!==!1?"opacity 0.15s":"none",whiteSpace:"nowrap",display:"none"}),t}formatValue(t){if(t==null)return"";let e;this.config.valueDecimals!==void 0?e=t.toFixed(this.config.valueDecimals):e=String(t);const i=this.config.valuePrefix||"",r=this.config.valueSuffix||"";return`${i}${e}${r}`}resolveKey(t){let e=t.point.name??t.point.x??"";return this.categories&&typeof t.point.x=="number"&&this.categories[t.point.x]&&(e=this.categories[t.point.x]),e}getPointCategory(t){return t.category!==void 0?t.category:this.categories&&typeof t.x=="number"&&this.categories[t.x]!==void 0?this.categories[t.x]:t.name}buildFormatterPoint(t,e={}){const i=this.resolveKey(t),r=this.getPointCategory(t.point);return{...t.point,...e,key:i,category:r,color:t.point.color||t.series.color||"#333",series:{name:t.series.name||"",color:t.series.color||"#333"}}}buildFormatterContext(t,e={}){const i=this.resolveKey(t);return{point:this.buildFormatterPoint(t),series:t.series,x:t.point.x,y:t.point.y,percentage:t.point.percentage,total:t.point.total,key:i,color:t.point.color||t.series.color,...e}}formatContent(t){var k;const e=(k=t.series.config)==null?void 0:k.tooltip;if(t.point.y===null||t.point.y===void 0){const M=(e==null?void 0:e.nullFormatter)??this.config.nullFormatter,C=(e==null?void 0:e.nullFormat)??this.config.nullFormat;if(M)return M.call({point:t.point,series:t.series});if(C)return C}if(this.config.formatter){const M=this.config.formatter.call(this.buildFormatterContext(t));return M===!1?"":M}const i=this.resolveKey(t),r=t.point.name??(this.categories&&typeof t.point.x=="number"?this.categories[t.point.x]:void 0)??i,o=(e==null?void 0:e.valueDecimals)??this.config.valueDecimals,s=(e==null?void 0:e.valuePrefix)??this.config.valuePrefix??"",a=(e==null?void 0:e.valueSuffix)??this.config.valueSuffix??"",l=this.formatValueWith(t.point.y,o,s,a);let c=r;const h=(e==null?void 0:e.xDateFormat)??this.config.xDateFormat??(this.isDatetime?Yr.DEFAULT_DATE_FORMAT:void 0);h&&typeof t.point.x=="number"&&t.point.name===void 0&&(c=ja(h,t.point.x));const f={point:this.buildFormatterPoint(t,{name:r,key:c,y:l||t.point.y}),series:{...t.series,name:t.series.name||""}},u=(e==null?void 0:e.pointFormatter)??this.config.pointFormatter;if(u){const M=u.call(this.buildFormatterContext(t)),C=(e==null?void 0:e.headerFormat)??this.config.headerFormat??"",L=(e==null?void 0:e.footerFormat)??this.config.footerFormat??"";return Zt(C,f,!0)+M+Zt(L,f,!0)}if(this.config.format)return Zt(this.config.format,f,!0);const d=(e==null?void 0:e.headerFormat)??this.config.headerFormat??"",p=(e==null?void 0:e.pointFormat)??this.config.pointFormat??"",y=(e==null?void 0:e.footerFormat)??this.config.footerFormat??"",g=Zt(d,f,!0),m=Zt(p,f,!0),x=Zt(y,f,!0);let v="";const b=!!((e==null?void 0:e.pointFormat)??this.config.pointFormat);if(t.point.total!==void 0&&!y&&!b){const M=t.point.total,C=Math.round(M*1e6)/1e6;v=`<span style="font-size:10px">Total: <b>${this.formatValue(C)}</b></span><br/>`}return g+m+x+v}formatValueWith(t,e,i,r){if(t==null)return"";let o;return e!==void 0?o=t.toFixed(e):o=String(t),`${i||""}${o}${r||""}`}formatSharedContent(t){var r,o,s,a;if(this.config.formatter){const l=t[0],c=l?this.resolveKey(l):"",h=this.config.formatter.call({point:l?this.buildFormatterPoint(l):void 0,series:l==null?void 0:l.series,x:l==null?void 0:l.point.x,y:l==null?void 0:l.point.y,key:c,color:(l==null?void 0:l.point.color)||(l==null?void 0:l.series.color),points:t.map(f=>({point:this.buildFormatterPoint(f),series:f.series,x:f.point.x,y:f.point.y,percentage:f.point.percentage,total:f.point.total,key:this.resolveKey(f),color:f.point.color||f.series.color}))});return h===!1?"":h}const e=[],i=this.formatXKey((r=t[0])==null?void 0:r.point,(s=(o=t[0])==null?void 0:o.series.config)==null?void 0:s.tooltip);i!==""&&e.push(`<span style="font-size:10px">${jn(String(i))}</span><br/>`);for(const l of t){const c=(a=l.series.config)==null?void 0:a.tooltip,h=c==null?void 0:c.pointFormat;if(h){const p={point:this.buildFormatterPoint(l),series:{...l.series,name:l.series.name||""}};e.push(Zt(h,p,!0));continue}const f=Qu(l.point.color||l.series.color||"#333"),u=jn(l.series.name||""),d=this.formatValue(l.point.y);e.push(`<span style="color:${f}">●</span> ${u}: <b>${d}</b><br/>`)}return e.join("")}position(t){var h,f;if(!this.element)return;if(this.config.positioner){const u=this.config.positioner(this.element.offsetWidth,this.element.offsetHeight,t);this.element.style.left=`${u.x}px`,this.element.style.top=`${u.y}px`;return}const e=this.config.distance??16,i=this.plotArea;let r=i.x+t.plotX+e,o=i.y+t.plotY-10;const s=this.element.offsetWidth||120,a=this.element.offsetHeight||50,l=this.config.outside?window.innerWidth:this.container.offsetWidth||((h=this.container.parentElement)==null?void 0:h.offsetWidth)||800,c=this.config.outside?window.innerHeight:this.container.offsetHeight||((f=this.container.parentElement)==null?void 0:f.offsetHeight)||600;r+s>l&&(r=i.x+t.plotX-s-e),o+a>c&&(o=c-a-5),o<0&&(o=5),r<0&&(r=5),this.element.style.left=`${r}px`,this.element.style.top=`${o}px`}positionAtMouse(t){if(!this.element)return;const e=this.config.distance??16;if(this.config.outside){let l=t.clientX+e,c=t.clientY-10;const h=this.element.offsetWidth||120,f=this.element.offsetHeight||50;l+h>window.innerWidth&&(l=t.clientX-h-e),c+f>window.innerHeight&&(c=window.innerHeight-f-5),c<0&&(c=5),l<0&&(l=5),this.element.style.left=`${l}px`,this.element.style.top=`${c}px`;return}const i=this.container.getBoundingClientRect();let r=t.clientX-i.left+e,o=t.clientY-i.top-10;const s=this.element.offsetWidth||120,a=this.element.offsetHeight||50;r+s>i.width&&(r=t.clientX-i.left-s-e),o+a>i.height&&(o=i.height-a-5),o<0&&(o=5),r<0&&(r=5),this.element.style.left=`${r}px`,this.element.style.top=`${o}px`}updatePlotArea(t){this.plotArea=t}setCategories(t){this.categories=t}setDatetimeAxis(t){this.isDatetime=t}setSharedPointsProvider(t){this.sharedProvider=t}formatXKey(t,e){if(!t)return"";if(this.categories&&typeof t.x=="number"&&this.categories[t.x]!==void 0)return this.categories[t.x];if(t.name!==void 0&&t.name!==null)return t.name;const i=t.x;if(typeof i=="number"){const r=(e==null?void 0:e.xDateFormat)??this.config.xDateFormat??(this.isDatetime?Yr.DEFAULT_DATE_FORMAT:void 0);if(r)return ja(r,i)}return i??""}destroy(){this.hideTimeout&&clearTimeout(this.hideTimeout);for(const{el:t,type:e,fn:i}of this.boundHandlers)t.removeEventListener(e,i);this.boundHandlers=[],nf(this.element),this.element=null,this.hideSplitElements()}};Yr.DEFAULT_DATE_FORMAT="%A, %b %e, %Y";let Qo=Yr;class ts{constructor(t,e,i){this.series=[],this.scrollOffset=0,this.contentHeight=0,this.visibleHeight=0,this.config=t,this.events=i,t.enabled!==!1&&(this.group=e.append("g").attr("class",`katucharts-legend${t.className?" "+t.className:""}`))}autoText(){return Pn(this.config._backgroundColor)}resolveLabel(t){var r;const e=t.getColor();let i;if(this.config.labelFormatter)i=this.config.labelFormatter.call({name:t.config.name||"",color:e,percentage:t.percentage,total:t.total,index:t.config.index,legendIndex:t.config.legendIndex,options:t.config});else if(this.config.labelFormat){const o={name:t.config.name||"",color:e,index:t.config.index,legendIndex:t.config.legendIndex};i=fe(Zt(this.config.labelFormat,o))}else i=t.config.name||`Series ${t.config.index+1}`;if(this.config.valueSuffix&&(i+=` ${this.config.valueSuffix}`),this.config.valueDecimals!==void 0&&this.config.valueDecimals>=0){const o=t.data.length>0?(r=t.data[t.data.length-1])==null?void 0:r.y:void 0;typeof o=="number"&&(i+=`: ${o.toFixed(this.config.valueDecimals)}`)}return i}computeAutoFontSize(t,e){return e||wt}estimateTextWidth(t,e){const i=xe(e);return t.length*i*.62}static computeGridLayout(t,e,i,r){if(r.itemWidth)return{columns:Math.max(2,Math.floor(i/r.itemWidth)),itemWidth:r.itemWidth};const o=xe(r.fontSize);let s=0;for(const c of e){const h=c.length*o*.62;h>s&&(s=h)}const a=r.symbolWidth+r.symbolPadding+s+8;return{columns:Math.max(1,Math.floor(i/a)),itemWidth:a}}render(t,e){var it,ft,dt,at;if(this.config.enabled===!1||!this.group)return;this.series=t,this.group.selectAll("*").remove();let i=t.filter(ot=>ot.config.showInLegend!==!1);if(i.length===0)return;this.config.reversed&&(i=[...i].reverse());const r=this.config.layout||"horizontal",o=this.config.padding??8,s=this.config.symbolWidth??12,a=this.config.symbolHeight??12,l=this.config.symbolPadding??5,c=this.config.symbolRadius??2,h=this.config.squareSymbol!==!1,f=this.config.itemDistance??20,u=this.config.itemStyle||{},d=this.config.itemMarginTop??0,p=this.config.itemMarginBottom??4,y=this.config.lineHeight??16,g=this.config.maxHeight,m=this.config.width,x=u.fontSize||wt,v=this.computeAutoFontSize(i.length,x);let b=o,k=o,M=0;if((it=this.config.title)!=null&&it.text){const ot=this.config.title.style||{};this.group.append("text").attr("class","katucharts-legend-title").attr("x",o).attr("y",o+10).attr("font-size",ot.fontSize||wt).attr("font-weight",ot.fontWeight||"bold").attr("fill",ot.color||"#333").text(this.config.title.text),k+=20}const C=k,L=m||e.width-o*2,_=y+p+d,$=[];for(const ot of i){const q=ot.getMultiLegendItems(),st=["line","spline","area","areaspline","radar","polar"].includes(ot.config._internalType);if(q)for(const kt of q)$.push({label:kt.label,color:kt.color,series:ot,isLine:st});else $.push({label:this.resolveLabel(ot),color:ot.getColor(),series:ot,isLine:st})}const I=$.map(ot=>ot.label);let E=0;if(r==="horizontal")for(let ot=0;ot<I.length;ot++){const q=s+l+this.estimateTextWidth(I[ot],v);E+=q+(ot<I.length-1?f:0)}const P=r==="horizontal"&&$.length>8&&E>L;let S=0,w=0;const A=6;let T=0,R=0;if(P){const ot=ts.computeGridLayout($.length,I,L,{symbolWidth:s,symbolPadding:l,fontSize:v,itemDistance:f,padding:o,itemWidth:this.config.itemWidth});S=ot.columns,w=ot.itemWidth,R=Math.ceil($.length/S)}const F=[];$.forEach((ot,q)=>{var ie;const st=ot.series,kt=ot.color,Et=ot.isLine,Mt=ot.label;let Ct,Gt;if(P){const Lt=q%S,Jt=Math.floor(q/S),de=S*w,je=Math.max(0,(L-de)/2);Ct=o+je+Lt*w,Gt=C+Jt*_+d}else if(r==="horizontal"){const Lt=this.config.itemWidth||this.estimateTextWidth(Mt,v),Jt=s+l+Lt;q>0&&b+Jt>L&&(b=o,k+=_),Ct=b,Gt=k+d,M=Math.max(M,b+Jt),b+=Jt+f}else{const Lt=this.config.itemWidth||this.estimateTextWidth(Mt,v),Jt=s+l+Lt;Ct=b,Gt=k+d,M=Math.max(M,b+Jt),b=o,k+=_}const Ht=this.group.append("g").attr("class","katucharts-legend-item").attr("transform",`translate(${Ct},${Gt})`).style("cursor","pointer"),Nt=st.getLegendSymbolShape();if(Et)Ht.append("line").attr("x1",0).attr("x2",s).attr("y1",6).attr("y2",6).attr("stroke",kt).attr("stroke-width",2),Ht.append("circle").attr("cx",s/2).attr("cy",6).attr("r",3).attr("fill",kt);else if(Nt){const Lt=s/2,Jt=a/2,de=Math.min(s,a)/2;Nt==="circle"?Ht.append("circle").attr("cx",Lt).attr("cy",Jt).attr("r",de).attr("fill",kt):Nt==="square"?Ht.append("rect").attr("x",0).attr("y",0).attr("width",s).attr("height",a).attr("fill",kt):Nt==="diamond"?Ht.append("path").attr("d",`M ${Lt} 0 L ${s} ${Jt} L ${Lt} ${a} L 0 ${Jt} Z`).attr("fill",kt):Nt==="triangle"?Ht.append("path").attr("d",`M ${Lt} 0 L ${s} ${a} L 0 ${a} Z`).attr("fill",kt):Nt==="triangle-down"?Ht.append("path").attr("d",`M 0 0 L ${s} 0 L ${Lt} ${a} Z`).attr("fill",kt):Nt==="cross"?Ht.append("path").attr("d",`M 0 ${Jt} L ${s} ${Jt} M ${Lt} 0 L ${Lt} ${a}`).attr("stroke",kt).attr("stroke-width",2):Ht.append("circle").attr("cx",Lt).attr("cy",Jt).attr("r",de).attr("fill",kt)}else h?Ht.append("rect").attr("x",0).attr("y",0).attr("width",s).attr("height",a).attr("rx",c).attr("fill",kt):Ht.append("circle").attr("cx",s/2).attr("cy",a/2).attr("r",Math.min(s,a)/2).attr("fill",kt);const Kt=Ht.append("text").attr("x",s+l).attr("y",10).attr("fill",st.visible?u.color||this.autoText():((ie=this.config.itemHiddenStyle)==null?void 0:ie.color)||"#cccccc").attr("font-size",v).attr("font-weight",u.fontWeight||"normal").text(Mt);this.config.rtl&&(Kt.attr("text-anchor","end").attr("x",-l),Ht.select("rect, circle, line").attr("transform",`translate(${-(s+l)}, 0)`)),Ht.on("click",()=>{var de,je,pe;const Lt=this.config.events;if(Lt!=null&&Lt.itemClick&&Lt.itemClick.call(st,new Event("legendItemClick"))===!1)return;st.toggleVisible(),Kt.attr("fill",st.visible?u.color||this.autoText():((de=this.config.itemHiddenStyle)==null?void 0:de.color)||"#cccccc"),((pe=(je=st.config.events)==null?void 0:je.legendItemClick)==null?void 0:pe.call(st,new Event("legendItemClick")))!==!1&&this.events.emit("legend:itemClick",st,q)}),Ht.on("mouseover",()=>{var Lt;Kt.attr("fill",((Lt=this.config.itemHoverStyle)==null?void 0:Lt.color)||this.autoText()),this.events.emit("legend:itemHover",st)}),Ht.on("mouseout",()=>{var Lt;Kt.attr("fill",st.visible?u.color||this.autoText():((Lt=this.config.itemHiddenStyle)==null?void 0:Lt.color)||"#cccccc"),this.events.emit("legend:itemLeave")}),F.push(Ht)});let D=0,z=0,B=0,H=0;const J=(ft=this.config.bubbleLegend)!=null&&ft.enabled?t.map(ot=>ot.getBubbleLegendInfo()).find(ot=>!!ot):void 0;if(J)if(r==="horizontal"&&((dt=this.config.bubbleLegend)==null?void 0:dt.layout)==="separate"){H=$.length?k+_:C;const q=this.renderBubbleLegend(J,0,H);D=q.width,z=q.height;const st=$.length?Math.max(0,M-o):0,kt=Math.max(st,D);B=o+Math.max(0,(kt-D)/2),this.group.select(".katucharts-bubble-legend").attr("transform",`translate(${B},0)`);const Et=Math.max(0,(kt-st)/2);if(Et>0)for(const Mt of F){const Ct=/translate\(\s*([-\d.]+)\s*,\s*([-\d.]+)\s*\)/.exec(Mt.attr("transform")||"");Ct&&Mt.attr("transform",`translate(${parseFloat(Ct[1])+Et},${Ct[2]})`)}}else{r==="horizontal"?(B=$.length?M+f:o,H=C):(B=o,H=$.length?k+6:C);const q=this.renderBubbleLegend(J,B,H);D=q.width,z=q.height}const X=(ot,q=!1)=>{const st=ot*A,kt=st+A;F.forEach((Et,Mt)=>{const Ct=Math.floor(Mt/S);if(Ct>=st&&Ct<kt){const Ht=Mt%S,Nt=S*w,Kt=Math.max(0,(L-Nt)/2),ie=o+Kt+Ht*w,Lt=C+(Ct-st)*_+(this.config.itemMarginTop??0);Et.style("display","block"),q?Et.style("opacity","0").attr("transform",`translate(${ie},${Lt})`).transition().duration(250).style("opacity","1"):Et.attr("transform",`translate(${ie},${Lt})`).style("opacity","1")}else q?Et.transition().duration(150).style("opacity","0").on("end",function(){Et.style("display","none")}):Et.style("display","none")})};let j,W;if(P){const ot=Math.min(R,A);if(j=L+o*2,W=C+ot*_+o,R>A){X(0);const q=Math.ceil(R/A),st=L-20,kt=C+Math.min(R,A)*_/2,Et=this.group.append("g").attr("class","katucharts-legend-nav"),Mt=22,Ct=Et.append("g").attr("transform",`translate(${st},${kt-Mt-2})`).style("cursor","pointer").style("opacity","0.3");Ct.append("rect").attr("x",0).attr("y",0).attr("width",Mt).attr("height",Mt).attr("rx",4).attr("fill","#f0f0f0").attr("stroke","#ccc").attr("stroke-width",1),Ct.append("path").attr("d",`M${Mt/2-5},${Mt/2+2} L${Mt/2},${Mt/2-4} L${Mt/2+5},${Mt/2+2}`).attr("fill","none").attr("stroke","#555").attr("stroke-width",2).attr("stroke-linecap","round"),Ct.on("mouseover",function(){Ct.select("rect").attr("fill","#e0e0e0")}),Ct.on("mouseout",function(){Ct.select("rect").attr("fill","#f0f0f0")});const Gt=Et.append("g").attr("transform",`translate(${st},${kt+2})`).style("cursor","pointer");Gt.append("rect").attr("x",0).attr("y",0).attr("width",Mt).attr("height",Mt).attr("rx",4).attr("fill","#f0f0f0").attr("stroke","#ccc").attr("stroke-width",1),Gt.append("path").attr("d",`M${Mt/2-5},${Mt/2-2} L${Mt/2},${Mt/2+4} L${Mt/2+5},${Mt/2-2}`).attr("fill","none").attr("stroke","#555").attr("stroke-width",2).attr("stroke-linecap","round"),Gt.on("mouseover",function(){Gt.select("rect").attr("fill","#e0e0e0")}),Gt.on("mouseout",function(){Gt.select("rect").attr("fill","#f0f0f0")}),Ct.on("click",()=>{T>0&&(T--,X(T,!0),Ct.style("opacity",T===0?"0.3":"1"),Gt.style("opacity",T>=q-1?"0.3":"1"))}),Gt.on("click",()=>{T<q-1&&(T++,X(T,!0),Ct.style("opacity",T===0?"0.3":"1"),Gt.style("opacity",T>=q-1?"0.3":"1"))})}}else r==="horizontal"?(j=M+o,W=k+y+o):(j=m||M+o||150,W=k+y+o);if(J&&(j=Math.max(j,B+D+o),W=Math.max(W,H+z+o)),this.contentHeight=W,this.config.backgroundColor||this.config.borderWidth||this.config.shadow){const ot=this.group.insert("rect",":first-child").attr("class","katucharts-legend-bg").attr("x",0).attr("y",0).attr("width",j).attr("height",g?Math.min(W,g):W).attr("rx",this.config.borderRadius??0).attr("fill",this.config.backgroundColor||"none").attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0);this.config.shadow&&ot.attr("filter","drop-shadow(2px 2px 4px rgba(0,0,0,0.15))")}if(g&&W>g){this.visibleHeight=g;const ot=`katucharts-legend-clip-${Math.random().toString(36).slice(2,8)}`;this.group.append("defs").append("clipPath").attr("id",ot).append("rect").attr("width",j).attr("height",g),this.group.attr("clip-path",`url(#${ot})`),((at=this.config.navigation)==null?void 0:at.enabled)!==!1&&this.renderNavigationArrows(j,g)}const U=this.config.maxWidth?Math.min(j,this.config.maxWidth):j,G=this.config.align||"center",N=r==="vertical"&&(G==="left"||G==="right");let Y;N?Y=e.x+2:G==="center"?Y=e.x+(e.width-U)/2:G==="right"?Y=e.x+e.width-U:Y=e.x;let O=e.y+(this.config.y||0);(N||this.config.verticalAlign==="middle")&&(O=e.y+Math.max(0,(e.height-W)/2)+(this.config.y||0));const ct=Y+(this.config.x||0);this.group.attr("transform",`translate(${ct},${O})`),this.config.floating&&this.group.style("pointer-events","all")}renderNavigationArrows(t,e){const i=this.config.navigation||{},r=i.activeColor||"#003399",o=i.inactiveColor||"#cccccc",s=i.arrowSize??12,a=this.group.append("g").attr("class","katucharts-legend-nav-up").attr("transform",`translate(${t/2},2)`).style("cursor","pointer");a.append("path").attr("d",`M${-s/2},${s/2} L0,${-s/2} L${s/2},${s/2}`).attr("fill",this.scrollOffset>0?r:o).attr("stroke","none"),a.on("click",()=>{this.scrollOffset>0&&(this.scrollOffset=Math.max(0,this.scrollOffset-40),this.applyScroll())});const l=this.group.append("g").attr("class","katucharts-legend-nav-down").attr("transform",`translate(${t/2},${e-2})`).style("cursor","pointer");l.append("path").attr("d",`M${-s/2},${-s/2} L0,${s/2} L${s/2},${-s/2}`).attr("fill",this.contentHeight>e+this.scrollOffset?r:o).attr("stroke","none"),l.on("click",()=>{const c=this.contentHeight-this.visibleHeight;this.scrollOffset<c&&(this.scrollOffset=Math.min(c,this.scrollOffset+40),this.applyScroll())})}applyScroll(){const t=this.scrollOffset;this.group.selectAll(".katucharts-legend-item").each(function(){const e=this,r=(e.getAttribute("transform")||"").match(/translate\(([^,]+),([^)]+)\)/);if(r){const o=parseFloat(e.getAttribute("data-orig-y")||r[2]);e.hasAttribute("data-orig-y")||e.setAttribute("data-orig-y",r[2]),e.setAttribute("transform",`translate(${r[1]},${o-t})`)}})}renderBubbleLegend(t,e,i){var b,k,M,C,L,_;const r=this.config.bubbleLegend||{};if(r.layout==="separate")return this.renderBubbleLegendSeparate(t,e,i);const o=[...t.ranges].sort(($,I)=>I.radius-$.radius),s=o[0].radius;if(!(s>0))return{width:0,height:0};const a=((k=(b=r.labels)==null?void 0:b.style)==null?void 0:k.fontSize)||wt,l=r.borderColor||t.color,c=r.borderWidth??1.5,h=r.color||"rgba(0,0,0,0)",f=r.connectorColor||l,u=r.connectorWidth??1,d=r.connectorDistance??16,p=((C=(M=r.labels)==null?void 0:M.style)==null?void 0:C.color)||ye,y=this.group.append("g").attr("class","katucharts-bubble-legend"),g=e+s,m=i+2*s,x=e+2*s+d;let v=0;for(const $ of o){const I=m-2*$.radius;y.append("circle").attr("cx",g).attr("cy",m-$.radius).attr("r",$.radius).attr("fill",h).attr("stroke",l).attr("stroke-width",c),y.append("line").attr("x1",g).attr("y1",I).attr("x2",x).attr("y2",I).attr("stroke",f).attr("stroke-width",u).attr("stroke-dasharray","2,2");let E;(L=r.labels)!=null&&L.formatter?E=r.labels.formatter.call({value:$.value}):(_=r.labels)!=null&&_.format?E=fe(Zt(r.labels.format,{value:$.value})):E=String($.value),y.append("text").attr("x",x+4).attr("y",I).attr("dominant-baseline","middle").attr("font-size",a).attr("fill",p).text(E),v=Math.max(v,this.estimateTextWidth(E,a))}return{width:2*s+d+v+8,height:2*s}}renderBubbleLegendSeparate(t,e,i){var M,C,L,_;const r=this.config.bubbleLegend||{},o=[...t.ranges].sort(($,I)=>$.radius-I.radius),s=o[o.length-1].radius;if(!(s>0))return{width:0,height:0};const a=((C=(M=r.labels)==null?void 0:M.style)==null?void 0:C.fontSize)||wt,l=parseFloat(a)||12,c=r.borderColor||t.color,h=r.borderWidth??1.5,f=r.color||"rgba(0,0,0,0)",u=((_=(L=r.labels)==null?void 0:L.style)==null?void 0:_.color)||ye,d=r.connectorDistance??8,p=$=>{var I,E;return(I=r.labels)!=null&&I.formatter?r.labels.formatter.call({value:$}):(E=r.labels)!=null&&E.format?fe(Zt(r.labels.format,{value:$})):String($)},y=this.group.append("g").attr("class","katucharts-bubble-legend"),g=($,I,E)=>y.append("circle").attr("cx",$).attr("cy",I).attr("r",E).attr("fill",f).attr("stroke",c).attr("stroke-width",h);if(this.config.layout==="horizontal"){const $=l+6,I=i+$+2*s;let E=e;for(const P of o){const S=E+P.radius,w=I-2*P.radius;g(S,I-P.radius,P.radius);const A=p(P.value);y.append("text").attr("x",S).attr("y",w-4).attr("text-anchor","middle").attr("font-size",a).attr("fill",u).text(A);const T=Math.max(2*P.radius,this.estimateTextWidth(A,a));E+=T+d+6}return{width:Math.max(0,E-e-(d+6)),height:$+2*s}}const m=e+s,x=e+2*s+d;let v=i,b=0;const k=10;for(const $ of o){const I=v+$.radius;g(m,I,$.radius);const E=p($.value);y.append("text").attr("x",x).attr("y",I).attr("dominant-baseline","middle").attr("font-size",a).attr("fill",u).text(E),b=Math.max(b,this.estimateTextWidth(E,a)),v+=2*$.radius+k}return{width:2*s+d+b+8,height:Math.max(0,v-i-k)}}destroy(){this.group&&this.group.remove()}}class rf{constructor(t,e,i,r,o){var h,f;if(this.xLine=null,this.yLine=null,this.xLabel=null,this.yLabel=null,this.plotArea=r,t){const u=typeof t=="object"?t:{},d=this.getDashArray(u.dashStyle);this.xLine=i.append("line").attr("class",`katucharts-crosshair-x${u.className?" "+u.className:""}`).attr("y1",0).attr("y2",r.height).attr("stroke",u.color||"#ccc").attr("stroke-width",u.width||1).attr("stroke-dasharray",d).style("display","none"),u.zIndex!==void 0&&this.xLine.style("z-index",u.zIndex),(h=u.label)!=null&&h.enabled&&(this.xLabel=this.createLabel(i,u.label,"x"))}if(e){const u=typeof e=="object"?e:{},d=this.getDashArray(u.dashStyle);this.yLine=i.append("line").attr("class",`katucharts-crosshair-y${u.className?" "+u.className:""}`).attr("x1",0).attr("x2",r.width).attr("stroke",u.color||"#ccc").attr("stroke-width",u.width||1).attr("stroke-dasharray",d).style("display","none"),u.zIndex!==void 0&&this.yLine.style("z-index",u.zIndex),(f=u.label)!=null&&f.enabled&&(this.yLabel=this.createLabel(i,u.label,"y"))}const s=typeof t=="object"?t:{},a=typeof e=="object"?e:{},l=s.snap!==!1,c=a.snap!==!1;o.on("point:mouseover",u=>{var d,p,y,g;if(this.xLine){const m=l?u.plotX:((d=u.event)==null?void 0:d.offsetX)??u.plotX;this.xLine.attr("x1",m).attr("x2",m).style("display",null),this.xLabel&&this.updateLabel(this.xLabel,s.label,((p=u.point)==null?void 0:p.x)??u.plotX,m,r.height+2,"x")}if(this.yLine){const m=c?u.plotY:((y=u.event)==null?void 0:y.offsetY)??u.plotY;this.yLine.attr("y1",m).attr("y2",m).style("display",null),this.yLabel&&this.updateLabel(this.yLabel,a.label,((g=u.point)==null?void 0:g.y)??u.plotY,-2,m,"y")}}),o.on("point:mouseout",()=>{this.xLine&&this.xLine.style("display","none"),this.yLine&&this.yLine.style("display","none"),this.xLabel&&this.xLabel.style("display","none"),this.yLabel&&this.yLabel.style("display","none")})}getDashArray(t){return t&&{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t]||"none"}createLabel(t,e,i){var o,s;const r=t.append("g").attr("class",`katucharts-crosshair-label-${i}`).style("display","none");return r.append("rect").attr("rx",e.borderRadius??3).attr("fill",e.backgroundColor||"rgba(0,0,0,0.75)").attr("stroke",e.borderColor||"none").attr("stroke-width",e.borderWidth??0),r.append("text").attr("fill",((o=e.style)==null?void 0:o.color)||"#fff").attr("font-size",((s=e.style)==null?void 0:s.fontSize)||"10px").attr("text-anchor","middle").attr("dominant-baseline","central"),r}updateLabel(t,e,i,r,o,s){var f;t.style("display",null);let a;e.formatter?a=e.formatter.call({value:i}):e.format?a=e.format.replace("{value}",String(i)):a=typeof i=="number"?i.toFixed(2):String(i);const l=e.padding??4,c=t.select("text");c.text(a).attr("x",r).attr("y",o);const h=(f=c.node())==null?void 0:f.getBBox();h&&t.select("rect").attr("x",h.x-l).attr("y",h.y-l).attr("width",h.width+l*2).attr("height",h.height+l*2)}destroy(){this.xLine&&this.xLine.remove(),this.yLine&&this.yLine.remove(),this.xLabel&&this.xLabel.remove(),this.yLabel&&this.yLabel.remove()}}const of="Powered by: KatuCharts",Cv="https://charts.katudv.com",sf="#707070",Pv="#b0b0b0";function Ev(n){return Pn(n)==="#ffffff"?Pv:sf}class Tv{constructor(t,e,i,r){this.element=null,this.observer=null,this.intervalId=null,this.unsubscribe=null,this.svg=e,this.chartWidth=i,this.chartHeight=r,this.config=t,this.apply(),this.unsubscribe=Qe.onChange(()=>this.apply())}apply(){const t=Qe.isLicensed();if(this.config.enabled===!1&&t){this.stopProtection(),this.element&&(this.element.remove(),this.element=null);return}this.render(this.config),t?this.stopProtection():this.startProtection()}updatePosition(t,e){this.chartWidth=t,this.chartHeight=e,!(this.config.enabled===!1&&Qe.isLicensed())&&this.render(this.config)}render(t){var u,d;this.element&&(this.element.remove(),this.element=null);const i=!Qe.isLicensed()&&(!(t!=null&&t.text)||!t.text.trim())?of:(t==null?void 0:t.text)||of,r=(t==null?void 0:t.href)??Cv,o=(t==null?void 0:t.position)||{},s=o.align||"right",a=o.verticalAlign||"bottom";let l,c;s==="left"?(l=o.x??10,c="start"):s==="center"?(l=this.chartWidth/2+(o.x??0),c="middle"):(l=this.chartWidth+(o.x??-10),c="end");let h;a==="top"?h=o.y??15:a==="middle"?h=this.chartHeight/2+(o.y??0):h=this.chartHeight+(o.y??-5);const f=(u=t==null?void 0:t.style)==null?void 0:u.color;if(this.element=this.svg.append("text").attr("class","katucharts-credits").attr("x",l).attr("y",h).attr("text-anchor",c).attr("fill",f||sf).attr("font-size",((d=t==null?void 0:t.style)==null?void 0:d.fontSize)||"9px").style("cursor",r?"pointer":"default").text(i),t!=null&&t.style){const p=t.style;p.fontFamily&&this.element.attr("font-family",p.fontFamily),p.fontWeight&&this.element.attr("font-weight",p.fontWeight),p.textDecoration&&this.element.style("text-decoration",p.textDecoration)}if(!f){const p=this.resolveBehindColor()||this.resolvePageBackground();this.element.attr("fill",Ev(p))}r&&this.element.on("click",()=>{/^https?:\/\//i.test(r)&&window.open(r,"_blank","noopener,noreferrer")})}refresh(){this.config.enabled===!1&&Qe.isLicensed()||this.render(this.config)}resolveBehindColor(){var t;try{const e=(t=this.element)==null?void 0:t.node(),i=this.svg.node();if(!e||!i)return null;const r=e.getBoundingClientRect();if(!r.width||!r.height)return null;const o=r.left+r.width/2,s=r.top+r.height/2;let a=null;return i.querySelectorAll("rect, path, circle, polygon, ellipse").forEach(l=>{const c=l.getAttribute("class")||"";if(/katucharts-(credits|export|border)/.test(c))return;const h=this.elementFill(l);if(!h)return;const f=l.getBoundingClientRect();o>=f.left&&o<=f.right&&s>=f.top&&s<=f.bottom&&(a=h)}),a}catch{return null}}resolvePageBackground(){try{let t=this.svg.node();for(;t;){if(typeof getComputedStyle=="function"){const e=getComputedStyle(t).backgroundColor,i=e?oe(e):null;if(i&&i.opacity>0)return e}t=t.parentElement}}catch{}return"#ffffff"}elementFill(t){var o;const e=t.tagName.toLowerCase();if(e==="text"||e==="tspan")return null;let i=t.getAttribute("fill");if(!i||i==="none"){const s=(o=t.style)==null?void 0:o.fill;i=s&&s!=="none"?s:null}if(!i||i==="none"||i.indexOf("url(")===0)return null;const r=oe(i);return!r||r.opacity===0?null:i}startProtection(){if(Qe.isLicensed()||this.observer||this.intervalId!=null||typeof MutationObserver>"u")return;const t=this.svg.node();t&&(this.observer=new MutationObserver(()=>{t.querySelector(".katucharts-credits")||this.render()}),this.observer.observe(t,{childList:!0}),typeof window<"u"&&(this.intervalId=window.setInterval(()=>{t.querySelector(".katucharts-credits")||this.render()},3e3)))}stopProtection(){var t;(t=this.observer)==null||t.disconnect(),this.observer=null,this.intervalId!=null&&(clearInterval(this.intervalId),this.intervalId=null)}destroy(){var t;(t=this.unsubscribe)==null||t.call(this),this.unsubscribe=null,this.stopProtection(),this.element&&this.element.remove(),this.element=null}}const Ni=["M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z","M14 2v5a1 1 0 0 0 1 1h5"],$v={downloadPNG:Ni,downloadJPEG:Ni,downloadSVG:Ni,downloadPDF:Ni,downloadCSV:Ni,downloadXLS:Ni,viewDataTable:["M3 3h18v18H3z","M12 3v18","M3 9h18","M3 15h18"],viewFullScreen:["M8 3H5a2 2 0 0 0-2 2v3","M21 8V5a2 2 0 0 0-2-2h-3","M3 16v3a2 2 0 0 0 2 2h3","M16 21h3a2 2 0 0 0 2-2v-3"],printChart:["M6 18H4a2 2 0 0 1-2-2v-5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v5a2 2 0 0 1-2 2h-2","M6 9V3a1 1 0 0 1 1-1h10a1 1 0 0 1 1 1v6","M6 14h12v8H6z"]},Lv={downloadPNG:"PNG",downloadJPEG:"JPG",downloadSVG:"SVG",downloadPDF:"PDF",downloadCSV:"CSV",downloadXLS:"XLS"},Iv={downloadPNG:"Download PNG",downloadJPEG:"Download JPEG",downloadSVG:"Download SVG",downloadPDF:"Download PDF",downloadCSV:"Download CSV",downloadXLS:"Download XLS",viewDataTable:"Data table",viewFullScreen:"Fullscreen",printChart:"Print"};class af{constructor(t,e,i,r,o,s){var b;this.group=null,this.gearGroup=null,this.radialContainer=null,this.isOpen=!1,this.outsideClickHandler=null,this.scrollHandler=null,this.btnCenterX=0,this.btnCenterY=0,this.config=t,this.container=i,this.chartWidth=r,this.chartHeight=o,this.onExport=s;const a=(b=t.buttons)==null?void 0:b.contextButton;if((a==null?void 0:a.enabled)===!1)return;const l=(a==null?void 0:a.theme)||{},c=l.width??28,h=l.height??22,f=r+((a==null?void 0:a.x)??-10)-c,u=(a==null?void 0:a.y)??10,d=(a==null?void 0:a.symbolStroke)??"#666666",p=(a==null?void 0:a.symbolStrokeWidth)??3,y=(a==null?void 0:a.symbolFill)??d,g=l.fill??"transparent",m=l.stroke??"none",x=l.r??3;l["states.hover.fill"],this.btnCenterX=f+c/2,this.btnCenterY=u+h/2,this.group=e.append("g").attr("class","katucharts-export-button-group").attr("transform",`translate(${f},${u})`).style("cursor","pointer"),this.group.append("rect").attr("class","katucharts-export-btn-bg").attr("width",c).attr("height",h).attr("rx",x).attr("fill",g).attr("stroke",m),l.padding!==void 0&&this.group.select(".katucharts-export-btn-bg").attr("x",-l.padding).attr("y",-l.padding).attr("width",c+l.padding*2).attr("height",h+l.padding*2);const v=a==null?void 0:a.symbol;if(this.gearGroup=this.group.append("g").attr("class","katucharts-gear-icon").style("transform-origin",`${c/2}px ${h/2}px`).style("transition","transform 0.4s cubic-bezier(0.4, 0, 0.2, 1)"),v==="circle")this.gearGroup.append("circle").attr("cx",c/2).attr("cy",h/2).attr("r",Math.min(c,h)/3).attr("fill",y).attr("stroke",d).attr("stroke-width",p);else if(v==="menu"){const k=Math.round(c*.21),M=Math.round(c*.79);for(let C=0;C<3;C++)this.gearGroup.append("line").attr("x1",k).attr("x2",M).attr("y1",Math.round(h*.27)+C*Math.round(h*.23)).attr("y2",Math.round(h*.27)+C*Math.round(h*.23)).attr("stroke",d).attr("stroke-width",p).attr("stroke-linecap","round")}else{const k=Math.min(c,h),M=c/2,C=h/2,L=8,_=k*.44,$=k*.3,I=k*.12,E=Math.PI/(L*1.6);let P="";for(let F=0;F<L;F++){const D=F/L*Math.PI*2-Math.PI/2,z=[[$,D-E*1.2],[_+I,D-E],[_+I,D+E],[$,D+E*1.2]];for(const[B,H]of z){const J=M+Math.cos(H)*B,X=C+Math.sin(H)*B;P+=(P===""?"M":"L")+J.toFixed(2)+","+X.toFixed(2)}}P+="Z";const S=e.select("defs").empty()?e.append("defs"):e.select("defs"),w=S.append("linearGradient").attr("id","katu-gear-glass").attr("x1","0").attr("y1","0").attr("x2","1").attr("y2","1");w.append("stop").attr("offset","0%").attr("stop-color","#aaa").attr("stop-opacity","0.7"),w.append("stop").attr("offset","45%").attr("stop-color","#999").attr("stop-opacity","0.45"),w.append("stop").attr("offset","100%").attr("stop-color","#888").attr("stop-opacity","0.35");const A=S.append("radialGradient").attr("id","katu-gear-highlight").attr("cx","0.35").attr("cy","0.3").attr("r","0.65");A.append("stop").attr("offset","0%").attr("stop-color","#fff").attr("stop-opacity","0.6"),A.append("stop").attr("offset","50%").attr("stop-color","#fff").attr("stop-opacity","0.1"),A.append("stop").attr("offset","100%").attr("stop-color","#fff").attr("stop-opacity","0"),this.gearGroup.append("path").attr("d",P).attr("fill","url(#katu-gear-glass)").attr("stroke","rgba(255,255,255,0.5)").attr("stroke-width",p*.4).attr("stroke-linejoin","round").style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.15))"),this.gearGroup.append("path").attr("d",P).attr("fill","url(#katu-gear-highlight)").attr("stroke","none").style("pointer-events","none"),this.gearGroup.append("circle").attr("cx",M).attr("cy",C).attr("r",k*.15).attr("fill","rgba(255,255,255,0.6)").attr("stroke","rgba(255,255,255,0.4)").attr("stroke-width","0.5");const T=S.append("radialGradient").attr("id","katu-gear-hover-bg").attr("cx","0.4").attr("cy","0.35").attr("r","0.65");T.append("stop").attr("offset","0%").attr("stop-color","#fff").attr("stop-opacity","0.35"),T.append("stop").attr("offset","50%").attr("stop-color","#eef2ff").attr("stop-opacity","0.15"),T.append("stop").attr("offset","100%").attr("stop-color","#dde6ff").attr("stop-opacity","0.08");const R=k*.85;this.group.insert("circle",".katucharts-gear-icon").attr("class","katucharts-gear-hover-bg").attr("cx",c/2).attr("cy",h/2).attr("r",R).attr("fill","url(#katu-gear-hover-bg)").attr("stroke","rgba(255,255,255,0.6)").attr("stroke-width","1.5").style("filter","drop-shadow(0 0 10px rgba(200,225,255,0.5)) drop-shadow(0 2px 6px rgba(0,0,0,0.08))").style("opacity","0").style("transition","opacity 0.25s ease"),this.group.insert("circle",".katucharts-gear-icon").attr("class","katucharts-gear-hover-highlight").attr("cx",c/2).attr("cy",h/2).attr("r",R).attr("fill","none").attr("stroke","rgba(255,255,255,0.8)").attr("stroke-width","1.5").style("filter","drop-shadow(0 0 4px rgba(255,255,255,0.4))").style("opacity","0").style("transition","opacity 0.25s ease")}this.group.on("mouseenter",()=>{this.group.select(".katucharts-gear-hover-bg").style("opacity","1"),this.group.select(".katucharts-gear-hover-highlight").style("opacity","1")}).on("mouseleave",()=>{this.group.select(".katucharts-gear-hover-bg").style("opacity","0"),this.group.select(".katucharts-gear-hover-highlight").style("opacity","0")}).on("click",k=>{k.stopPropagation(),this.toggle()})}toggle(){this.isOpen?this.closeMenu():this.openMenu()}repositionCenter(t,e){this.btnCenterX=t,this.btnCenterY=e}openMenu(){var I;this.isOpen=!0,this.gearGroup&&this.gearGroup.style("transform","rotate(90deg)");const t=(I=this.config.buttons)==null?void 0:I.contextButton,i=((t==null?void 0:t.menuItems)??["downloadPNG","downloadJPEG","downloadSVG","downloadPDF","separator","viewFullScreen","printChart"]).filter(E=>E!=="separator").map(E=>({key:E,label:Iv[E]||E,icon:$v[E]||[]}));this.radialContainer=document.createElement("div"),Object.assign(this.radialContainer.style,{position:"fixed",top:"0",left:"0",width:"100vw",height:"100vh",pointerEvents:"none",zIndex:"1000"});const r=64,o=document.createElement("canvas");o.width=r,o.height=r;const s=o.getContext("2d"),a=s.createImageData(r,r),l=a.data;let c=0;const h=[];for(let E=0;E<l.length;E+=4){const P=E/4%r,S=Math.floor(E/4/r),w=P/r-.5,A=S/r-.5,T=Math.sqrt(w*w+A*A),R=Math.max(0,Math.min(1,(.48-T)/.15)),F=R*R*(3-2*R),D=w*F*r,z=A*F*r;c=Math.max(c,Math.abs(D),Math.abs(z)),h.push(D,z)}c*=.5;let f=0;for(let E=0;E<l.length;E+=4)l[E]=(h[f++]/c+.5)*255,l[E+1]=(h[f++]/c+.5)*255,l[E+2]=0,l[E+3]=255;s.putImageData(a,0,0);const u=o.toDataURL(),d="http://www.w3.org/2000/svg",p=document.createElementNS(d,"svg");p.setAttribute("width","0"),p.setAttribute("height","0"),p.style.position="absolute";const y=document.createElementNS(d,"defs"),g=document.createElementNS(d,"filter");g.setAttribute("id","katu-glass-lens"),g.setAttribute("filterUnits","userSpaceOnUse"),g.setAttribute("color-interpolation-filters","sRGB"),g.setAttribute("x","0"),g.setAttribute("y","0"),g.setAttribute("width","44"),g.setAttribute("height","44");const m=document.createElementNS(d,"feImage");m.setAttributeNS("http://www.w3.org/1999/xlink","href",u),m.setAttribute("width","44"),m.setAttribute("height","44"),m.setAttribute("result","lens_map");const x=document.createElementNS(d,"feDisplacementMap");x.setAttribute("in","SourceGraphic"),x.setAttribute("in2","lens_map"),x.setAttribute("scale",String(Math.round(c/1))),x.setAttribute("xChannelSelector","R"),x.setAttribute("yChannelSelector","G"),g.appendChild(m),g.appendChild(x),y.appendChild(g),p.appendChild(y),this.radialContainer.appendChild(p),document.body.appendChild(this.radialContainer);const v=this.container.getBoundingClientRect(),b=v.left+this.btnCenterX,k=v.top+this.btnCenterY,M=76,C=i.length,L=100*(Math.PI/180),_=280*(Math.PI/180),$=this.config.menuItemDefinitions||{};i.forEach((E,P)=>{const S=C>1?L+(_-L)*(P/(C-1)):Math.PI,w=b+Math.cos(S)*M,A=k+Math.sin(S)*M,T=w-b,R=A-k,F=document.createElement("div");F.className="katucharts-radial-btn",Object.assign(F.style,{position:"absolute",left:`${b}px`,top:`${k}px`,width:"44px",height:"44px",marginLeft:"-22px",marginTop:"-22px",borderRadius:"50%",background:"linear-gradient(160deg, rgba(255,255,255,0.92) 0%, rgba(240,240,255,0.82) 40%, rgba(255,255,255,0.75) 100%)",backdropFilter:"url(#katu-glass-lens) blur(0.5px) contrast(1.15) brightness(1.05) saturate(1.2)",WebkitBackdropFilter:"url(#katu-glass-lens) blur(0.5px) contrast(1.15) brightness(1.05) saturate(1.2)",border:"1.5px solid rgba(255, 255, 255, 0.4)",borderTopColor:"rgba(255, 255, 255, 0.8)",borderLeftColor:"rgba(255, 255, 255, 0.55)",borderBottomColor:"rgba(0, 0, 0, 0.04)",borderRightColor:"rgba(0, 0, 0, 0.02)",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",pointerEvents:"auto",transform:"translate(0px, 0px) scale(0.3)",opacity:"0",willChange:"transform, opacity",transition:`transform 0.35s cubic-bezier(0.34, 1.56, 0.64, 1) ${P*40}ms, opacity 0.2s ease ${P*40}ms, background 0.2s ease, border-color 0.2s ease, box-shadow 0.2s ease`,boxShadow:"0 4px 8px rgba(0,0,0,0.2), inset 0 -6px 12px rgba(0,0,0,0.1), inset 0 2px 4px rgba(255,255,255,0.4)"}),F.dataset.dx=String(T),F.dataset.dy=String(R);const D=document.createElement("div");Object.assign(D.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",borderRadius:"50%",background:"radial-gradient(ellipse 70% 50% at 35% 25%, rgba(255,255,255,0.55) 0%, rgba(255,255,255,0) 70%), radial-gradient(ellipse 60% 40% at 70% 80%, rgba(255,255,255,0.12) 0%, rgba(255,255,255,0) 70%)",boxShadow:"inset 1.5px 1.5px 3px rgba(255,255,255,0.5), inset -0.5px -0.5px 2px rgba(0,0,0,0.06)",pointerEvents:"none",overflow:"hidden"}),F.appendChild(D);const z=document.createElementNS("http://www.w3.org/2000/svg","svg");z.setAttribute("viewBox","0 0 24 24"),z.setAttribute("width","30"),z.setAttribute("height","30"),z.style.overflow="visible",z.style.position="relative",z.style.zIndex="1";const B=[],H=[];for(const N of E.icon){const Y=document.createElementNS("http://www.w3.org/2000/svg","path");Y.setAttribute("d",N),Y.setAttribute("fill","none"),Y.setAttribute("stroke","#333333"),Y.setAttribute("stroke-width","2"),Y.setAttribute("stroke-linecap","round"),Y.setAttribute("stroke-linejoin","round"),z.appendChild(Y),B.push(Y)}const J=Lv[E.key];if(J){const N=document.createElementNS("http://www.w3.org/2000/svg","text");N.setAttribute("x","12"),N.setAttribute("y","16.5"),N.setAttribute("text-anchor","middle"),N.setAttribute("font-size","5.5"),N.setAttribute("font-family",'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'),N.setAttribute("font-weight","700"),N.setAttribute("fill","#333333"),N.setAttribute("stroke","none"),N.textContent=J,z.appendChild(N),H.push(N)}F.appendChild(z);const X=document.createElement("div");X.textContent=E.label;const j=S*(180/Math.PI),W={position:"absolute",backgroundColor:"rgba(30, 30, 30, 0.45)",backdropFilter:"blur(20px) saturate(1.4)",WebkitBackdropFilter:"blur(20px) saturate(1.4)",color:"#ffffff",padding:"4px 10px",borderRadius:"8px",border:"1px solid rgba(255, 255, 255, 0.12)",fontSize:"11px",fontFamily:'-apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif',fontWeight:"500",letterSpacing:"0.2px",boxShadow:"0 2px 12px rgba(0,0,0,0.12), inset 0 0.5px 0 rgba(255,255,255,0.1)",whiteSpace:"nowrap",pointerEvents:"none",opacity:"0",transition:"opacity 0.15s ease, transform 0.15s ease"};j>60&&j<120?(W.top="calc(100% + 6px)",W.left="50%",W.transform="translateX(-50%) scale(0.8)"):j>=120&&j<=240?(W.right="calc(100% + 6px)",W.top="50%",W.transform="translateY(-50%) scale(0.8)"):j>240&&j<300?(W.bottom="calc(100% + 6px)",W.left="50%",W.transform="translateX(-50%) scale(0.8)"):(W.left="calc(100% + 6px)",W.top="50%",W.transform="translateY(-50%) scale(0.8)"),Object.assign(X.style,W),F.appendChild(X);const U=W.transform.replace("scale(0.8)","scale(1)"),G=W.transform;F.addEventListener("mouseenter",()=>{F.style.background="linear-gradient(160deg, rgba(210,230,255,0.9) 0%, rgba(200,225,255,0.8) 40%, rgba(195,220,255,0.72) 100%)",F.style.borderColor="rgba(210, 230, 255, 0.85)",F.style.boxShadow="0 0 20px rgba(200,225,255,0.7), 0 0 8px rgba(200,225,255,0.5), 0 4px 12px rgba(0,0,0,0.06), 0 0 0 1px rgba(210,230,255,0.35), inset 0 2px 4px rgba(255,255,255,0.6), inset 0 -1px 2px rgba(0,0,0,0.02)",B.forEach(N=>N.setAttribute("stroke","#1a4a8a")),H.forEach(N=>N.setAttribute("fill","#1a4a8a")),X.style.opacity="1",X.style.transform=U}),F.addEventListener("mouseleave",()=>{F.style.background="linear-gradient(160deg, rgba(255,255,255,0.72) 0%, rgba(240,240,255,0.45) 40%, rgba(255,255,255,0.35) 100%)",F.style.borderColor="rgba(255, 255, 255, 0.4)",F.style.boxShadow="0 4px 8px rgba(0,0,0,0.2), inset 0 -6px 12px rgba(0,0,0,0.1), inset 0 2px 4px rgba(255,255,255,0.4)",B.forEach(N=>N.setAttribute("stroke","#333333")),H.forEach(N=>N.setAttribute("fill","#333333")),X.style.opacity="0",X.style.transform=G}),F.addEventListener("click",N=>{N.stopPropagation(),this.closeMenu();const Y=$[E.key];Y!=null&&Y.onclick?Y.onclick():this.onExport(E.key)}),this.radialContainer.appendChild(F),requestAnimationFrame(()=>{requestAnimationFrame(()=>{F.style.transform=`translate(${T}px, ${R}px) scale(1)`,F.style.opacity="1"})})}),this.outsideClickHandler=E=>{this.radialContainer&&!this.radialContainer.contains(E.target)&&this.closeMenu()},setTimeout(()=>{document.addEventListener("click",this.outsideClickHandler)},0),this.scrollHandler=()=>this.closeMenu(),window.addEventListener("scroll",this.scrollHandler,{once:!0,capture:!0})}closeMenu(){if(this.isOpen=!1,this.gearGroup&&this.gearGroup.style("transform","rotate(0deg)"),this.radialContainer){this.btnCenterX,this.btnCenterY,this.radialContainer.querySelectorAll(".katucharts-radial-btn").forEach((i,r)=>{i.style.transition=`transform 0.25s cubic-bezier(0.4, 0, 1, 1) ${r*20}ms, opacity 0.2s ease ${r*20}ms`,i.style.transform="translate(0px, 0px) scale(0.3)",i.style.opacity="0"});const e=this.radialContainer;setTimeout(()=>{e.remove()},400),this.radialContainer=null}this.outsideClickHandler&&(document.removeEventListener("click",this.outsideClickHandler),this.outsideClickHandler=null),this.scrollHandler&&(window.removeEventListener("scroll",this.scrollHandler,!0),this.scrollHandler=null)}updatePosition(t,e){var c;if(this.chartWidth=t,this.chartHeight=e,!this.group)return;const i=(c=this.config.buttons)==null?void 0:c.contextButton,r=(i==null?void 0:i.theme)||{},o=r.width??28,s=r.height??22,a=t+((i==null?void 0:i.x)??-10)-o,l=(i==null?void 0:i.y)??10;this.group.attr("transform",`translate(${a},${l})`),this.btnCenterX=a+o/2,this.btnCenterY=l+s/2,this.isOpen&&this.closeMenu()}destroy(){this.closeMenu(),this.group&&(this.group.remove(),this.group=null)}}class cf{constructor(t){this.activeIndices=new Set,this.rules=t.rules||[]}evaluate(t,e){const i=new Set;for(let o=0;o<this.rules.length;o++)this.matchesCondition(this.rules[o].condition,t,e)&&i.add(o);const r=!this.setsEqual(i,this.activeIndices);return this.activeIndices=i,{changed:r,matchingIndices:Array.from(i)}}getRules(){return this.rules}getCurrentActiveIndices(){return Array.from(this.activeIndices)}reset(){this.activeIndices.clear()}setsEqual(t,e){if(t.size!==e.size)return!1;for(const i of t)if(!e.has(i))return!1;return!0}matchesCondition(t,e,i){return t.callback?t.callback():!(t.maxWidth!==void 0&&e>t.maxWidth||t.minWidth!==void 0&&e<t.minWidth||t.maxHeight!==void 0&&i>t.maxHeight||t.minHeight!==void 0&&i<t.minHeight)}}function es(n){return`${n._internalType}__${n.stack??"_default"}`}function Wi(n,t){for(const e of n){const i=e.x??0;t.set(i,(t.get(i)||0)+(e.y??0))}return t}function lf(n,t){return t==="left"?n.layout.titleArea.x:t==="right"?n.layout.titleArea.x+n.layout.titleArea.width:n.chartWidth/2}function hf(n){return n==="left"?"start":n==="right"?"end":"middle"}function uf(n,t,e,i){const r=n.node();if(!r||t<=0)return;try{if(r.getComputedTextLength()<=t)return}catch{return}const s=n.text().split(/\s+/);if(s.length<=1)return;const a=i*1.3;n.text(null);let l=[],c=n.append("tspan").attr("x",e).attr("dy",0);for(const h of s){l.push(h),c.text(l.join(" "));try{c.node().getComputedTextLength()>t&&l.length>1&&(l.pop(),c.text(l.join(" ")),l=[h],c=n.append("tspan").attr("x",e).attr("dy",a).text(h))}catch{break}}}function Fv(n){var s,a,l,c,h,f,u,d,p,y;const{titleGroup:t,container:e,options:i,layout:r,chartWidth:o}=n;if(t.selectAll("*").remove(),e.querySelectorAll(".katucharts-title-html, .katucharts-subtitle-html").forEach(g=>g.remove()),(s=i.title)!=null&&s.text){const g=i.title,m=((a=g.style)==null?void 0:a.fontSize)||"18px";if(g.useHTML){const x=document.createElement("div");x.className="katucharts-title-html",x.innerHTML=g.text,x.style.cssText=`position:absolute;top:${r.titleArea.y+5}px;left:0;width:100%;text-align:${g.align||"center"};color:${((l=g.style)==null?void 0:l.color)||"#333333"};font-size:${m};font-weight:${((c=g.style)==null?void 0:c.fontWeight)||"bold"};pointer-events:none;box-sizing:border-box;padding:0 22px;`,e.appendChild(x)}else{const x=lf(n,g.align),v=o+(g.widthAdjust??-44),b=t.append("text").attr("class","katucharts-chart-title").attr("x",x).attr("y",r.titleArea.y+20).attr("text-anchor",hf(g.align)).attr("fill",((h=g.style)==null?void 0:h.color)||"#333333").attr("font-size",m).attr("font-weight",((f=g.style)==null?void 0:f.fontWeight)||"bold").text(g.text);uf(b,v,x,xe(m))}}if((u=i.subtitle)!=null&&u.text){const g=i.subtitle,m=((d=g.style)==null?void 0:d.fontSize)||"12px";if(g.useHTML){const x=document.createElement("div");x.className="katucharts-subtitle-html",x.innerHTML=g.text,x.style.cssText=`position:absolute;top:${r.subtitleArea.y+5}px;left:0;width:100%;text-align:${g.align||"center"};color:${((p=g.style)==null?void 0:p.color)||"#666666"};font-size:${m};pointer-events:none;box-sizing:border-box;padding:0 22px;`,e.appendChild(x)}else{const x=lf(n,g.align),v=o+(g.widthAdjust??-44),b=t.append("text").attr("class","katucharts-chart-subtitle").attr("x",x).attr("y",r.subtitleArea.y+15).attr("text-anchor",hf(g.align)).attr("fill",((y=g.style)==null?void 0:y.color)||"#666666").attr("font-size",m).text(g.text);uf(b,v,x,xe(m))}}}function Rv(n){const{container:t,renderer:e,options:i,plotGroup:r,layout:o,chartWidth:s,chartHeight:a,scrollableInner:l,scrollableOuterWidth:c,scrollableOuterHeight:h,useVerticalScroll:f,useHorizontalScroll:u,exportButton:d,previousOverlay:p}=n;if(!l)return null;const y=e.getSVGNode();if(!y)return null;const g=N=>{const Y=N==null?void 0:N.querySelector(".katucharts-export-button-group");Y&&y.appendChild(Y)};p&&p.parentElement&&(g(p),p.parentElement.removeChild(p)),t.querySelectorAll(":scope > svg[data-katu-fixed-overlay]").forEach(N=>{var Y;g(N),(Y=N.parentElement)==null||Y.removeChild(N)});const x="http://www.w3.org/2000/svg",v=l.offsetWidth-l.clientWidth,b=l.offsetHeight-l.clientHeight,k=c-v,M=h-b,C=document.createElementNS(x,"svg");C.setAttribute("data-katu-fixed-overlay","1"),C.setAttribute("width",k.toString()),C.setAttribute("height",M.toString()),C.style.position="absolute",C.style.top="0",C.style.left="0",C.style.pointerEvents="none",C.style.overflow="visible";const L=i.chart.backgroundColor||"#ffffff",$=(r.attr("transform")||"").match(/translate\(([^,]+),\s*([^)]+)\)/),I=$?parseFloat($[1]):0,E=$?parseFloat($[2]):0,P=!!i.chart.inverted,S=P?".katucharts-axis-y":".katucharts-axis-x",w=P?".katucharts-axis-x":".katucharts-axis-y",A=document.createElementNS(x,"defs"),T=`katucharts-fixed-grad-${Math.random().toString(36).slice(2,8)}`,R=(N,Y,O,ct,it,ft)=>{const dt=document.createElementNS(x,"linearGradient");dt.setAttribute("id",N),dt.setAttribute("x1",Y),dt.setAttribute("y1",O),dt.setAttribute("x2",ct),dt.setAttribute("y2",it),ft.forEach(([at,ot])=>{const q=document.createElementNS(x,"stop");q.setAttribute("offset",at),q.setAttribute("stop-color",L),q.setAttribute("stop-opacity",ot),dt.appendChild(q)}),A.appendChild(dt)},F=o.titleArea,D=o.subtitleArea,z=Math.max(((F==null?void 0:F.y)??0)+((F==null?void 0:F.height)??0),((D==null?void 0:D.y)??0)+((D==null?void 0:D.height)??0)),H=Math.max(0,Math.min(z+30,E)),J=H>0?Math.max(0,Math.min(100,z/H*100)):100;if(R(`${T}-top`,"0%","0%","0%","100%",[["0%","1"],[`${J}%`,"1"],["100%","0"]]),R(`${T}-bottom`,"0%","0%","0%","100%",[["0%","0"],["30%","1"],["100%","1"]]),R(`${T}-left`,"0%","0%","100%","0%",[["0%","1"],["70%","1"],["100%","0"]]),C.appendChild(A),f&&H>0){const N=document.createElementNS(x,"rect");N.setAttribute("x","0"),N.setAttribute("y","0"),N.setAttribute("width",k.toString()),N.setAttribute("height",H.toString()),N.setAttribute("fill",`url(#${T}-top)`),C.appendChild(N)}if(y.querySelectorAll(".katucharts-title-group").forEach(N=>{N.style.visibility="hidden";const Y=N.cloneNode(!0);Y.style.visibility="visible";const O=(s-k)/2;O!==0&&Y.setAttribute("transform",`translate(${-O}, 0)`),C.appendChild(Y)}),f){const N=E+o.plotArea.height,Y=a-N+10,O=document.createElementNS(x,"rect");O.setAttribute("x","0"),O.setAttribute("y",(M-Y).toString()),O.setAttribute("width",k.toString()),O.setAttribute("height",Y.toString()),O.setAttribute("fill",`url(#${T}-bottom)`),C.appendChild(O),y.querySelectorAll(S).forEach(it=>{it.style.visibility="hidden";const ft=document.createElementNS(x,"g"),dt=M-(a-N);ft.setAttribute("transform",`translate(${I}, ${dt})`);const at=it.cloneNode(!0);at.removeAttribute("transform"),at.style.visibility="visible",ft.appendChild(at),C.appendChild(ft)})}if(u){const N=I+5,Y=document.createElementNS(x,"rect");Y.setAttribute("x","0"),Y.setAttribute("y","0"),Y.setAttribute("width",N.toString()),Y.setAttribute("height",M.toString()),Y.setAttribute("fill",`url(#${T}-left)`),C.appendChild(Y),y.querySelectorAll(w).forEach(ct=>{ct.style.visibility="hidden";const it=document.createElementNS(x,"g");it.setAttribute("transform",`translate(${I}, ${E})`);const ft=ct.cloneNode(!0);ft.removeAttribute("transform"),ft.style.visibility="visible",it.appendChild(ft),C.appendChild(it)})}y.querySelectorAll(".katucharts-legend").forEach(N=>{const O=(N.getAttribute("transform")||"").match(/translate\(([^,]+),\s*([^)]+)\)/),ct=O?parseFloat(O[1]):0,it=O?parseFloat(O[2]):0,ft=(s-k)/2,dt=f?a-M:0,at=ct-ft,ot=it-dt;N.style.visibility="hidden";const q=N.cloneNode(!0);q.style.visibility="visible",q.setAttribute("transform",`translate(${at}, ${ot})`),C.appendChild(q)});const W=y.querySelector(".katucharts-export-button-group");if(W&&d){const Y=(W.getAttribute("transform")||"").match(/translate\(([^,]+),\s*([^)]+)\)/),O=Y?parseFloat(Y[1]):0,ct=Y?parseFloat(Y[2]):0,it=O-(s-k);W.setAttribute("transform",`translate(${it},${ct})`),W.style.pointerEvents="auto",C.appendChild(W),d.repositionCenter(it+28/2,ct+22/2)}y.querySelectorAll(".katucharts-color-axis").forEach(N=>{N.style.visibility="hidden";const Y=N.cloneNode(!0);Y.style.visibility="visible";const O=document.createElementNS(x,"g"),ct=k/2-o.plotArea.width/2;O.setAttribute("transform",`translate(${ct},${E})`),O.appendChild(Y),C.appendChild(O)});const G=y.querySelector(".katucharts-credits");if(G){const N=parseFloat(G.getAttribute("x")||"0"),Y=parseFloat(G.getAttribute("y")||"0");G.style.visibility="hidden";const O=G.cloneNode(!0);O.style.visibility="visible",O.setAttribute("x",String(k-(s-N))),O.setAttribute("y",String(M-(a-Y))),C.appendChild(O)}return t.appendChild(C),C}const We=class We{static inlineStyles(t){const e=t.cloneNode(!0),i=e.querySelectorAll("*"),r=t.querySelectorAll("*");for(let a=0;a<i.length&&a<r.length;a++){const l=i[a],c=r[a];try{const h=window.getComputedStyle(c);for(const f of We.INLINE_PROPS){const u=h.getPropertyValue(f);u&&u!==""&&u!=="none"&&u!=="normal"&&u!=="0"&&l.style.setProperty(f,u)}}catch{}}const o=e.querySelector(".katucharts-export-button-group");return o&&o.remove(),Qe.isLicensed()||We.stampWatermark(e),new XMLSerializer().serializeToString(e)}static stampWatermark(t){t.querySelectorAll(".katucharts-credits, .katucharts-export-watermark").forEach(s=>s.remove());const e=(t.getAttribute("viewBox")||"").split(/[\s,]+/).map(Number),i=parseFloat(t.getAttribute("width")||"")||e[2]||600,r=parseFloat(t.getAttribute("height")||"")||e[3]||400,o=document.createElementNS("http://www.w3.org/2000/svg","text");o.setAttribute("class","katucharts-export-watermark"),o.setAttribute("x",String(i-8)),o.setAttribute("y",String(r-8)),o.setAttribute("text-anchor","end"),o.setAttribute("font-family","Arial, Helvetica, sans-serif"),o.setAttribute("font-size","11px"),o.setAttribute("font-weight","normal"),o.setAttribute("fill","#8a8a8a"),o.style.setProperty("fill","#8a8a8a"),o.textContent="Powered by: KatuCharts",t.appendChild(o)}static svgToCanvas(t,e,i){return new Promise((r,o)=>{const s=new Image;s.onload=()=>{const a=document.createElement("canvas");a.width=s.width*e,a.height=s.height*e;const l=a.getContext("2d");if(!l){o(new Error("Canvas context unavailable"));return}l.scale(e,e),i&&(l.fillStyle=i,l.fillRect(0,0,s.width,s.height)),l.drawImage(s,0,0),r(a)},s.onerror=()=>o(new Error("Failed to load SVG into image")),s.src="data:image/svg+xml;base64,"+btoa(unescape(encodeURIComponent(t)))})}static exportSVG(t,e="chart"){const i=new Blob([t],{type:"image/svg+xml;charset=utf-8"});We.downloadBlob(i,`${e}.svg`)}static async exportPNG(t,e="chart",i=2){const r=await We.svgToCanvas(t,i);return new Promise((o,s)=>{r.toBlob(a=>{a?(We.downloadBlob(a,`${e}.png`),o()):s(new Error("Failed to generate PNG"))},"image/png")})}static async exportJPEG(t,e="chart",i=2,r=.95){const o=await We.svgToCanvas(t,i,"#ffffff");return new Promise((s,a)=>{o.toBlob(l=>{l?(We.downloadBlob(l,`${e}.jpeg`),s()):a(new Error("Failed to generate JPEG"))},"image/jpeg",r)})}static async exportPDF(t,e="chart",i=2){let r;try{const f=await Promise.resolve().then(()=>NA);r=f.jsPDF??f.default}catch{console.warn("KatuCharts: jspdf is not installed. Install it with `npm install jspdf` to enable PDF export.");return}if(typeof r!="function"){console.warn("KatuCharts: jspdf is not installed. Install it with `npm install jspdf` to enable PDF export.");return}const o=await We.svgToCanvas(t,i,"#ffffff"),s=o.toDataURL("image/jpeg",.95),a=o.width/i,l=o.height/i,c=a>l?"landscape":"portrait",h=new r({orientation:c,unit:"px",format:[a,l]});h.addImage(s,"JPEG",0,0,a,l),h.save(`${e}.pdf`)}static print(t,e){var l;const i=document.createElement("iframe");Object.assign(i.style,{position:"fixed",left:"-9999px",top:"-9999px",width:"0",height:"0",border:"none"}),document.body.appendChild(i);const r=i.contentDocument||((l=i.contentWindow)==null?void 0:l.document);if(!r){i.remove();return}const o=e??780;r.open(),r.write(`<!DOCTYPE html><html><head><style>
|
|
3
3
|
body { margin: 0; padding: 20px; display: flex; justify-content: center; }
|
|
4
4
|
svg { max-width: ${o}px; height: auto; }
|
|
5
5
|
</style></head><body>${t}</body></html>`),r.close();const s=()=>{try{i.remove()}catch{}},a=i.contentWindow;if(!a){s();return}a.onafterprint=s,setTimeout(()=>{a.focus(),a.print(),setTimeout(s,3e3)},250)}static exportCSV(t,e="chart",i){const r=(i==null?void 0:i.itemDelimiter)??",",o=(i==null?void 0:i.lineDelimiter)??`
|
|
6
6
|
`,s=(i==null?void 0:i.decimalPoint)??".",a=["Category"];t.forEach(d=>{if(i!=null&&i.columnHeaderFormatter){const p=i.columnHeaderFormatter(d,"y",1);a.push(p===!1?d.name||"Series":p)}else a.push(d.name||"Series")});const l=new Set;for(const d of t)for(const p of d.data)l.add(p.name??p.x??"");const c=d=>{if(d==null)return"";const p=String(d);return s!=="."&&typeof d=="number"?p.replace(".",s):p},h=[];for(const d of l){const p=[String(d)];for(const y of t){const g=y.data.find(m=>(m.name??m.x)===d);p.push((g==null?void 0:g.y)!==void 0&&g.y!==null?c(g.y):"")}h.push(p)}const f=[a.map(d=>Zo(d,r)).join(r),...h.map(d=>d.map(p=>Zo(p,r)).join(r))].join(o),u=new Blob([f],{type:"text/csv;charset=utf-8"});We.downloadBlob(u,`${e}.csv`)}static getCSV(t,e){const i=(e==null?void 0:e.itemDelimiter)??",",r=(e==null?void 0:e.lineDelimiter)??`
|
|
7
|
-
`,o=(e==null?void 0:e.decimalPoint)??".",s=["Category"];t.forEach(h=>{if(e!=null&&e.columnHeaderFormatter){const f=e.columnHeaderFormatter(h,"y",1);s.push(f===!1?h.name||"Series":f)}else s.push(h.name||"Series")});const a=new Set;for(const h of t)for(const f of h.data)a.add(f.name??f.x??"");const l=h=>{if(h==null)return"";const f=String(h);return o!=="."&&typeof h=="number"?f.replace(".",o):f},c=[];for(const h of a){const f=[String(h)];for(const u of t){const d=u.data.find(p=>(p.name??p.x)===h);f.push((d==null?void 0:d.y)!==void 0&&d.y!==null?l(d.y):"")}c.push(f)}return[s.map(h=>Zo(h,i)).join(i),...c.map(h=>h.map(f=>Zo(f,i)).join(i))].join(r)}static getDataRows(t){const e=["Category"];t.forEach(o=>e.push(o.name||"Series"));const i=new Set;for(const o of t)for(const s of o.data)i.add(s.name??s.x??"");const r=[e];for(const o of i){const s=[o!=null?String(o):""];for(const a of t){const l=a.data.find(c=>(c.name??c.x)===o);s.push((l==null?void 0:l.y)??null)}r.push(s)}return r}static getTable(t,e){const i=We.getDataRows(t);if(i.length===0)return"<table></table>";const r=i[0],o=i.slice(1);let s='<table class="katucharts-data-table">';e&&typeof e=="string"&&(s+=`<caption>${jn(e)}</caption>`),s+="<thead><tr>";for(const a of r)s+=`<th>${jn(a??"")}</th>`;s+="</tr></thead><tbody>";for(const a of o){s+="<tr>";for(const l of a)s+=`<td>${jn(l??"")}</td>`;s+="</tr>"}return s+="</tbody></table>",s}static viewDataTable(t,e,i){let r=e.querySelector(".katucharts-data-table-container");if(r)return r.remove(),null;r=document.createElement("div"),r.className="katucharts-data-table-container",Object.assign(r.style,{position:"relative",maxHeight:"300px",overflow:"auto",border:"1px solid #ccc",marginTop:"10px",fontSize:"11px"});const o=We.getTable(t,i);r.innerHTML=o;const s=r.querySelector("table");return s&&(Object.assign(s.style,{width:"100%",borderCollapse:"collapse"}),s.querySelectorAll("th, td").forEach(a=>{Object.assign(a.style,{padding:"4px 8px",borderBottom:"1px solid #e6e6e6",textAlign:"left"})}),s.querySelectorAll("th").forEach(a=>{Object.assign(a.style,{backgroundColor:"#f7f7f7",fontWeight:"bold"})})),e.appendChild(r),r}static downloadBlob(t,e){const i=URL.createObjectURL(t),r=document.createElement("a");r.href=i,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(i)}};We.INLINE_PROPS=["fill","stroke","stroke-width","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-opacity","fill-opacity","opacity","font-family","font-size","font-weight","font-style","text-anchor","dominant-baseline","text-decoration","visibility","display"];let ne=We;class Dv{constructor(t){this.host=t}getSVG(){return this.host.getRenderer().getSerializedSVG()}getInlinedSVG(){const t=this.host.getRenderer(),e=t.getSVGNode();return e?ne.inlineStyles(e):t.getSerializedSVG()}handleExportAction(t){const e=this.host.getOptions(),i=this.getInlinedSVG(),r=e.exporting.filename??"chart",o=e.exporting.scale??2;switch(t){case"downloadPNG":ne.exportPNG(i,r,o).catch(s=>console.warn("KatuCharts: PNG export failed.",s));break;case"downloadJPEG":ne.exportJPEG(i,r,o).catch(s=>console.warn("KatuCharts: JPEG export failed.",s));break;case"downloadSVG":ne.exportSVG(i,r);break;case"downloadPDF":ne.exportPDF(i,r,o).catch(s=>console.warn("KatuCharts: PDF export failed.",s));break;case"downloadCSV":ne.exportCSV(this.getSeriesDataForExport(),r,e.exporting.csv);break;case"downloadXLS":this.exportXLS(r);break;case"viewDataTable":ne.viewDataTable(this.getSeriesDataForExport(),this.host.getContainer(),e.exporting.tableCaption);break;case"viewFullScreen":this.toggleFullScreen();break;case"printChart":this.host.fireEvent("beforePrint"),ne.print(i,e.exporting.printMaxWidth),this.host.fireEvent("afterPrint");break}}toggleFullScreen(){var m;const t=this.host.getContainer();if(!t)return;const e=t.ownerDocument,i=e.defaultView||window;if(e.fullscreenElement===t||e.webkitFullscreenElement===t){e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen();return}const o=t.style,s={width:o.width,height:o.height,maxWidth:o.maxWidth,maxHeight:o.maxHeight,background:o.background},a=this.host.getOptions().chart.backgroundColor||"#fff";o.background=a,o.width="100vw",o.height="100vh",o.maxWidth="none",o.maxHeight="none",this.host.disconnectResizeObserver();const l=this.host.getViewportSize(),c=()=>{o.width=s.width,o.height=s.height,o.maxWidth=s.maxWidth,o.maxHeight=s.maxHeight,o.background=s.background},h=()=>{this.host.fitToViewport(l.width,l.height)};let f=null;const u=()=>{const x=i.innerWidth,v=i.innerHeight;!x||!v||this.host.fitToViewport(x,v)},d=()=>{e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen()},p=()=>{i.removeEventListener("resize",u),e.removeEventListener("fullscreenchange",y),e.removeEventListener("webkitfullscreenchange",y)},y=()=>{e.fullscreenElement===t||e.webkitFullscreenElement===t?(f=e.createElement("button"),f.textContent="✕",Object.assign(f.style,{position:"absolute",top:"10px",left:"50%",transform:"translateX(-50%)",zIndex:"10000",width:"32px",height:"32px",border:"none",borderRadius:"50%",background:"rgba(0,0,0,0.4)",color:"#fff",fontSize:"18px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:"1",padding:"0"}),f.addEventListener("mouseenter",()=>{f&&(f.style.background="rgba(0,0,0,0.7)")}),f.addEventListener("mouseleave",()=>{f&&(f.style.background="rgba(0,0,0,0.4)")}),f.addEventListener("click",d),t.appendChild(f),u(),requestAnimationFrame(u),i.addEventListener("resize",u)):(p(),f&&(f.remove(),f=null),c(),h(),requestAnimationFrame(()=>{this.host.observeResizeObserver(),this.host.fireEvent("exitFullScreen")}))};e.addEventListener("fullscreenchange",y),e.addEventListener("webkitfullscreenchange",y);const g=()=>{p(),c(),this.host.getRenderer().svg.style("width",null).style("height",null),h(),this.host.observeResizeObserver()};try{const x=t.requestFullscreen?t.requestFullscreen():(m=t.webkitRequestFullscreen)==null?void 0:m.call(t);x&&typeof x.catch=="function"&&x.catch(g),this.host.fireEvent("enterFullScreen")}catch{g()}}getSeriesDataForExport(){return this.host.getSeriesInstances().map(t=>({name:t.config.name||`Series ${t.config.index+1}`,data:t.data.map(e=>({x:e.x,y:e.y,name:e.name}))}))}exportXLS(t){const e=ne.getDataRows(this.getSeriesDataForExport());let i='<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:spreadsheet" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"/></head><body><table>';for(const o of e){i+="<tr>";for(const s of o)i+=`<td>${s??""}</td>`;i+="</tr>"}i+="</table></body></html>";const r=new Blob([i],{type:"application/vnd.ms-excel"});ne.downloadBlob(r,`${t}.xls`)}getCSV(){return ne.getCSV(this.getSeriesDataForExport(),this.host.getOptions().exporting.csv)}getTable(){return ne.getTable(this.getSeriesDataForExport(),this.host.getOptions().exporting.tableCaption)}getDataRows(){return ne.getDataRows(this.getSeriesDataForExport())}exportChart(t){const e={...this.host.getOptions().exporting,...t},i=this.getInlinedSVG(),r=e.filename??"chart",o=e.scale??2;switch(e.type){case"image/jpeg":ne.exportJPEG(i,r,o);break;case"image/svg+xml":ne.exportSVG(i,r);break;case"application/pdf":ne.exportPDF(i,r,o);break;case"image/png":default:ne.exportPNG(i,r,o);break}}print(){this.host.fireEvent("beforePrint");const t=this.getInlinedSVG();ne.print(t,this.host.getOptions().exporting.printMaxWidth),this.host.fireEvent("afterPrint")}optionsToExternal(){const t=this.host.getOptions();return{chart:t.chart,title:t.title,subtitle:t.subtitle,xAxis:t.xAxis,yAxis:t.yAxis,colorAxis:t.colorAxis,series:t.series,tooltip:t.tooltip,legend:t.legend,plotOptions:t.plotOptions,credits:t.credits,colors:t.colors}}}class zv{constructor(t){this.host=t}updateTooltipCategories(){const t=this.host.getTooltip();if(!t)return;const e=this.host.getXAxes()[0];e&&(e.config.type==="category"||e.config.categories)&&t.setCategories(e.config.categories||[]),t.setDatetimeAxis(!!e&&e.config.type==="datetime")}updateAxesDomains(){const t=Pi,e=this.host.getOptions(),i=this.host.getLayout(),r=this.host.getSeriesInstances(),o=this.host.getXAxes(),s=this.host.getYAxes();for(let a=0;a<o.length;a++){const l=o[a];if(l.config.type==="category"||l.config.categories&&l.config.categories.length>0){const u=r.filter((p,y)=>p.visible&&e.series[y]._xAxisIndex===a&&!t.has(p.config._internalType)),d=(l.config.categories&&l.config.categories.length>0?l.config.categories:null)||(u.length>0?u[0].getCategories():void 0);d&&d.length>0&&l.updateDomain(d);continue}const c=r.filter((u,d)=>u.visible&&e.series[d]._xAxisIndex===a&&!t.has(u.config._internalType));if(c.length===0)continue;let h=1/0,f=-1/0;for(const u of c){const d=u.getDataExtents();h=Math.min(h,d.xMin),f=Math.max(f,d.xMax)}if(isFinite(h)&&isFinite(f)){const u=e.series.filter((p,y)=>{var g;return((g=r[y])==null?void 0:g.visible)&&p._xAxisIndex===a&&!t.has(p._internalType)}),d=this.computeBubbleRadiusPadding(u,i.plotArea.width);l.updateDomain({min:h,max:f,extraMinPadding:d,extraMaxPadding:d})}}for(let a=0;a<s.length;a++){const l=s[a],c=e.series.filter((g,m)=>{var x;return((x=r[m])==null?void 0:x.visible)&&g._yAxisIndex===a&&!t.has(g._internalType)}),h=r.filter((g,m)=>g.visible&&e.series[m]._yAxisIndex===a&&!t.has(g.config._internalType));if(h.length===0)continue;let f=1/0,u=-1/0;const d=new Map;for(let g=0;g<h.length;g++){const m=h[g],x=c[g];if(x!=null&&x.stacking){const v=es(x);d.has(v)||d.set(v,new Map),Wi(m.data,d.get(v))}else{const v=m.getDataExtents();f=Math.min(f,v.yMin),u=Math.max(u,v.yMax)}}const p=c.some(g=>(g==null?void 0:g.stacking)==="percent");p&&(f=0,u=100,l.config.min=0,l.config.max=100);for(const g of d.values())if(!p)for(const m of g.values())f=Math.min(f,0),u=Math.max(u,m);if(c.some(g=>mg.has(g._internalType))&&l.config.min===void 0&&(f=Math.min(f,0),u=Math.max(u,0)),isFinite(f)&&isFinite(u)){const g=this.computeBubbleRadiusPadding(c,i.plotArea.height);l.updateDomain({min:f,max:u,extraMinPadding:g,extraMaxPadding:g})}}}computeBubbleRadiusPadding(t,e){const i=t.filter(s=>s&&s._internalType==="bubble");if(i.length===0||e<=0)return 0;const r=this.host.getLayout().plotArea;let o=0;for(const s of i){const a=s.maxSize;let l;typeof a=="number"?l=a:typeof a=="string"&&a.endsWith("%")?l=Math.min(r.width,r.height)*parseFloat(a)/100/2:l=30,o=Math.max(o,l)}return o/Math.max(e-2*o,1)}renderAxes(){const t=this.host.getAxisGroup(),e=this.host.getLayout();if(t.selectAll("*").remove(),!Dl(this.host.getOptions().series)){for(const i of this.host.getXAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!0)||i.render(t,e.plotArea);for(const i of this.host.getYAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!1)||i.render(t,e.plotArea);this.setupAxisLabelHover()}}setupAxisLabelHover(){const t=this.host.getXAxes()[0];if(!t)return;const i=this.host.getAxisGroup().select(".katucharts-axis-x");if(i.empty())return;const r=i.selectAll(".tick"),o=this.host.getOptions(),s=this.host.getSeriesInstances(),a=this.host.getYAxes(),l=this.host.getEvents();r.each(function(){const c=rt(this),h=c.select("text");if(h.empty())return;const f=h.node().getBBox();c.insert("rect","text").attr("x",f.x-4).attr("y",f.y-2).attr("width",f.width+8).attr("height",f.height+4).attr("fill","transparent").attr("class","katucharts-tick-hitarea")}),r.style("cursor","pointer").on("mouseover",function(c){var y;const h=this.__data__,f=typeof h=="string"?((y=t.config.categories)==null?void 0:y.indexOf(h))??-1:typeof h=="number"?h:-1;if(f<0)return;const u=!!o.chart.inverted,d=t.getPixelForValue(h),p=[];for(const g of s){if(!g.visible)continue;const m=g.data.find(x=>(x.x??0)===f);if(m&&m.y!==null&&m.y!==void 0){const v=a[0].getPixelForValue(m.y??0);p.push({point:m,series:g,plotX:u?v:d,plotY:u?d:v})}}if(p.length>0){const g=p[0];l.emit("point:mouseover",{point:{...g.point,matchingPoints:p},index:f,series:g.series,event:c,plotX:g.plotX,plotY:g.plotY})}for(const g of s){if(!g.visible)continue;const m=g.group;if(!m)continue;m.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").each(function(v){const b=rt(this);((v==null?void 0:v.x)??-1)===f?b.attr("filter","brightness(1.15)"):b.transition().duration(100).attr("opacity",.3)})}}).on("mouseout",function(){for(const c of s){if(!c.visible)continue;const h=c.group;h&&h.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").interrupt().attr("opacity",null).attr("filter",null)}l.emit("point:mouseout",{point:{},index:-1,series:null,event:null})})}hasSeriesForAxis(t,e){const i=this.host.getOptions();return this.host.getSeriesInstances().some((r,o)=>{const s=i.series[o],a=e?s._xAxisIndex:s._yAxisIndex;return r.visible&&a===t.config.index})}}class ff{constructor(t,e,i){if(this.stack=[],this.breadcrumbsEl=null,this.container=null,this.config=t,this.events=e,this.container=i||null,this.drilldownMap=new Map,t.series)for(const r of t.series)r.id&&this.drilldownMap.set(r.id,r);this.pointClickHandler=r=>{const o=r.point.drilldown;o&&this.drilldownMap.has(o)&&this.drillDown(o,r)},e.on("point:click",this.pointClickHandler)}addSeriesAsDrilldown(t,e){e.id&&this.drilldownMap.set(e.id,e);const i=t.drilldown||e.id;i&&this.drillDown(i,{point:t,series:{}})}drillDown(t,e){var r,o;const i=this.drilldownMap.get(t);i&&(this.stack.push({seriesOptions:(r=e.series)!=null&&r.config?[e.series.config]:[],title:(o=e.point)==null?void 0:o.name}),this.events.emit("drilldown:drilldown",{point:e.point,seriesOptions:i}),this.updateBreadcrumbs())}drillUp(){const t=this.stack.pop();t&&(this.events.emit("drilldown:drillup",t),this.updateBreadcrumbs())}drillUpToLevel(t){for(;this.stack.length>t;)this.drillUp()}hasLevels(){return this.stack.length>0}getCurrentLevel(){return this.stack.length}get breadcrumbsConfig(){const t=this.config.breadcrumbs;return t&&typeof t=="object"?t:{}}isBreadcrumbsEnabled(){const t=this.config.breadcrumbs;return!(t===!1||t&&typeof t=="object"&&t.enabled===!1)}updateBreadcrumbs(){var u,d,p,y,g,m,x,v;if(!this.container||!this.isBreadcrumbsEnabled())return;const t=this.breadcrumbsConfig,e=t.floating!==!1;if(!this.breadcrumbsEl){this.breadcrumbsEl=document.createElement("div"),this.breadcrumbsEl.className="katucharts-breadcrumbs";const b=t.position||{};e&&getComputedStyle(this.container).position==="static"&&(this.container.style.position="relative"),Object.assign(this.breadcrumbsEl.style,{position:e?"absolute":"relative",display:"flex",alignItems:"center",gap:"6px",padding:"3px 10px",borderRadius:"999px",fontSize:((u=t.style)==null?void 0:u.fontSize)||"12px",fontWeight:((d=t.style)==null?void 0:d.fontWeight)||"500",lineHeight:"1.4",color:((p=t.style)==null?void 0:p.color)||"#1b1a15",background:((y=t.style)==null?void 0:y.background)||"rgba(255,255,255,0.86)",boxShadow:((g=t.style)==null?void 0:g.boxShadow)||"0 1px 3px rgba(27,26,21,0.18)",zIndex:"10",top:e?`${b.y??8}px`:"",left:e?`${b.x??8}px`:"",userSelect:"none"}),this.container.appendChild(this.breadcrumbsEl)}if(this.breadcrumbsEl.innerHTML="",this.stack.length===0){this.breadcrumbsEl.style.display="none";return}this.breadcrumbsEl.style.display="flex";const i=((m=t.style)==null?void 0:m.linkColor)||"#003399",r=((x=t.separator)==null?void 0:x.text)??"/",o=((v=t.separator)==null?void 0:v.style)||{},s=t.showFullPath!==!1,a=t.showBackButton!==!1,l=t.rootText??"Main",c=b=>{const k=document.createElement("span");k.textContent="◀",k.setAttribute("role","button"),k.setAttribute("aria-label","Drill up"),Object.assign(k.style,{cursor:"pointer",color:i,fontSize:"0.8em",lineHeight:"1",transition:"opacity 120ms ease"}),k.addEventListener("mouseenter",()=>{k.style.opacity="0.55"}),k.addEventListener("mouseleave",()=>{k.style.opacity="1"}),k.addEventListener("click",b),this.breadcrumbsEl.appendChild(k)},h=(b,k,M)=>{const C=document.createElement("span");C.textContent=b,M&&(Object.assign(C.style,{cursor:"pointer",color:i,transition:"opacity 120ms ease"}),C.addEventListener("mouseenter",()=>{C.style.textDecoration="underline"}),C.addEventListener("mouseleave",()=>{C.style.textDecoration="none"}),C.addEventListener("click",()=>{var L;(L=t.events)!=null&&L.click&&t.events.click.call(this,{level:k}),this.drillUpToLevel(k)})),this.breadcrumbsEl.appendChild(C)},f=()=>{const b=document.createElement("span");b.textContent=r,b.style.opacity="0.55",o.color&&(b.style.color=o.color),this.breadcrumbsEl.appendChild(b)};if(s){a&&c(()=>this.drillUp()),h(l,0,!0);for(let b=0;b<this.stack.length;b++){f();const k=b===this.stack.length-1,M=this.getCrumbLabel(b);h(M,b+1,!k)}}else{c(()=>this.drillUp());const b=document.createElement("span");b.textContent="Back",b.style.cursor="pointer",b.style.color=i,b.addEventListener("click",()=>this.drillUp()),this.breadcrumbsEl.appendChild(b)}}getCrumbLabel(t){const e=this.stack[t],i=this.breadcrumbsConfig;return i.formatter?i.formatter.call({level:t,levelOptions:e}):e.title||`Level ${t+1}`}destroy(){this.events.off("point:click",this.pointClickHandler),this.breadcrumbsEl&&(this.breadcrumbsEl.remove(),this.breadcrumbsEl=null)}}const Bv={passive:!1},Mr={capture:!0,passive:!1};function tc(n){n.stopImmediatePropagation()}function Hi(n){n.preventDefault(),n.stopImmediatePropagation()}function ec(n){var t=n.document.documentElement,e=rt(n).on("dragstart.drag",Hi,Mr);"onselectstart"in t?e.on("selectstart.drag",Hi,Mr):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function nc(n,t){var e=n.document.documentElement,i=rt(n).on("dragstart.drag",null);t&&(i.on("click.drag",Hi,Mr),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in e?i.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}const ns=n=>()=>n;function ic(n,{sourceEvent:t,subject:e,target:i,identifier:r,active:o,x:s,y:a,dx:l,dy:c,dispatch:h}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:h}})}ic.prototype.on=function(){var n=this._.on.apply(this._,arguments);return n===this._?this:n};function Ov(n){return!n.ctrlKey&&!n.button}function Nv(){return this.parentNode}function Wv(n,t){return t??{x:n.x,y:n.y}}function Hv(){return navigator.maxTouchPoints||"ontouchstart"in this}function df(){var n=Ov,t=Nv,e=Wv,i=Hv,r={},o=zi("start","drag","end"),s=0,a,l,c,h,f=0;function u(b){b.on("mousedown.drag",d).filter(i).on("touchstart.drag",g).on("touchmove.drag",m,Bv).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(b,k){if(!(h||!n.call(this,b,k))){var M=v(this,t.call(this,b,k),b,k,"mouse");M&&(rt(b.view).on("mousemove.drag",p,Mr).on("mouseup.drag",y,Mr),ec(b.view),tc(b),c=!1,a=b.clientX,l=b.clientY,M("start",b))}}function p(b){if(Hi(b),!c){var k=b.clientX-a,M=b.clientY-l;c=k*k+M*M>f}r.mouse("drag",b)}function y(b){rt(b.view).on("mousemove.drag mouseup.drag",null),nc(b.view,c),Hi(b),r.mouse("end",b)}function g(b,k){if(n.call(this,b,k)){var M=b.changedTouches,C=t.call(this,b,k),L=M.length,_,$;for(_=0;_<L;++_)($=v(this,C,b,k,M[_].identifier,M[_]))&&(tc(b),$("start",b,M[_]))}}function m(b){var k=b.changedTouches,M=k.length,C,L;for(C=0;C<M;++C)(L=r[k[C].identifier])&&(Hi(b),L("drag",b,k[C]))}function x(b){var k=b.changedTouches,M=k.length,C,L;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),C=0;C<M;++C)(L=r[k[C].identifier])&&(tc(b),L("end",b,k[C]))}function v(b,k,M,C,L,_){var $=o.copy(),I=pn(_||M,k),E,P,S;if((S=e.call(b,new ic("beforestart",{sourceEvent:M,target:u,identifier:L,active:s,x:I[0],y:I[1],dx:0,dy:0,dispatch:$}),C))!=null)return E=S.x-I[0]||0,P=S.y-I[1]||0,function w(A,T,R){var F=I,D;switch(A){case"start":r[L]=w,D=s++;break;case"end":delete r[L],--s;case"drag":I=pn(R||T,k),D=s;break}$.call(A,b,new ic(A,{sourceEvent:T,subject:S,target:u,identifier:L,active:D,x:I[0]+E,y:I[1]+P,dx:I[0]-F[0],dy:I[1]-F[1],dispatch:$}),C)}}return u.filter=function(b){return arguments.length?(n=typeof b=="function"?b:ns(!!b),u):n},u.container=function(b){return arguments.length?(t=typeof b=="function"?b:ns(b),u):t},u.subject=function(b){return arguments.length?(e=typeof b=="function"?b:ns(b),u):e},u.touchable=function(b){return arguments.length?(i=typeof b=="function"?b:ns(!!b),u):i},u.on=function(){var b=o.on.apply(o,arguments);return b===o?u:b},u.clickDistance=function(b){return arguments.length?(f=(b=+b)*b,u):Math.sqrt(f)},u}const is=n=>()=>n;function Vv(n,{sourceEvent:t,target:e,transform:i,dispatch:r}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:r}})}function zn(n,t,e){this.k=n,this.x=t,this.y=e}zn.prototype={constructor:zn,scale:function(n){return n===1?this:new zn(this.k*n,this.x,this.y)},translate:function(n,t){return n===0&t===0?this:new zn(this.k,this.x+this.k*n,this.y+this.k*t)},apply:function(n){return[n[0]*this.k+this.x,n[1]*this.k+this.y]},applyX:function(n){return n*this.k+this.x},applyY:function(n){return n*this.k+this.y},invert:function(n){return[(n[0]-this.x)/this.k,(n[1]-this.y)/this.k]},invertX:function(n){return(n-this.x)/this.k},invertY:function(n){return(n-this.y)/this.k},rescaleX:function(n){return n.copy().domain(n.range().map(this.invertX,this).map(n.invert,n))},rescaleY:function(n){return n.copy().domain(n.range().map(this.invertY,this).map(n.invert,n))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var rs=new zn(1,0,0);zn.prototype;function rc(n){n.stopImmediatePropagation()}function Ar(n){n.preventDefault(),n.stopImmediatePropagation()}function Gv(n){return(!n.ctrlKey||n.type==="wheel")&&!n.button}function Yv(){var n=this;return n instanceof SVGElement?(n=n.ownerSVGElement||n,n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]):[[0,0],[n.clientWidth,n.clientHeight]]}function pf(){return this.__zoom||rs}function Xv(n){return-n.deltaY*(n.deltaMode===1?.05:n.deltaMode?1:.002)*(n.ctrlKey?10:1)}function Uv(){return navigator.maxTouchPoints||"ontouchstart"in this}function qv(n,t,e){var i=n.invertX(t[0][0])-e[0][0],r=n.invertX(t[1][0])-e[1][0],o=n.invertY(t[0][1])-e[0][1],s=n.invertY(t[1][1])-e[1][1];return n.translate(r>i?(i+r)/2:Math.min(0,i)||Math.max(0,r),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function gf(){var n=Gv,t=Yv,e=qv,i=Xv,r=Uv,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Jy,c=zi("start","zoom","end"),h,f,u,d=500,p=150,y=0,g=10;function m(S){S.property("__zoom",pf).on("wheel.zoom",L,{passive:!1}).on("mousedown.zoom",_).on("dblclick.zoom",$).filter(r).on("touchstart.zoom",I).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(S,w,A,T){var R=S.selection?S.selection():S;R.property("__zoom",pf),S!==R?k(S,w,A,T):R.interrupt().each(function(){M(this,arguments).event(T).start().zoom(null,typeof w=="function"?w.apply(this,arguments):w).end()})},m.scaleBy=function(S,w,A,T){m.scaleTo(S,function(){var R=this.__zoom.k,F=typeof w=="function"?w.apply(this,arguments):w;return R*F},A,T)},m.scaleTo=function(S,w,A,T){m.transform(S,function(){var R=t.apply(this,arguments),F=this.__zoom,D=A==null?b(R):typeof A=="function"?A.apply(this,arguments):A,z=F.invert(D),B=typeof w=="function"?w.apply(this,arguments):w;return e(v(x(F,B),D,z),R,s)},A,T)},m.translateBy=function(S,w,A,T){m.transform(S,function(){return e(this.__zoom.translate(typeof w=="function"?w.apply(this,arguments):w,typeof A=="function"?A.apply(this,arguments):A),t.apply(this,arguments),s)},null,T)},m.translateTo=function(S,w,A,T,R){m.transform(S,function(){var F=t.apply(this,arguments),D=this.__zoom,z=T==null?b(F):typeof T=="function"?T.apply(this,arguments):T;return e(rs.translate(z[0],z[1]).scale(D.k).translate(typeof w=="function"?-w.apply(this,arguments):-w,typeof A=="function"?-A.apply(this,arguments):-A),F,s)},T,R)};function x(S,w){return w=Math.max(o[0],Math.min(o[1],w)),w===S.k?S:new zn(w,S.x,S.y)}function v(S,w,A){var T=w[0]-A[0]*S.k,R=w[1]-A[1]*S.k;return T===S.x&&R===S.y?S:new zn(S.k,T,R)}function b(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function k(S,w,A,T){S.on("start.zoom",function(){M(this,arguments).event(T).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(T).end()}).tween("zoom",function(){var R=this,F=arguments,D=M(R,F).event(T),z=t.apply(R,F),B=A==null?b(z):typeof A=="function"?A.apply(R,F):A,H=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),J=R.__zoom,X=typeof w=="function"?w.apply(R,F):w,j=l(J.invert(B).concat(H/J.k),X.invert(B).concat(H/X.k));return function(W){if(W===1)W=X;else{var U=j(W),G=H/U[2];W=new zn(G,B[0]-U[0]*G,B[1]-U[1]*G)}D.zoom(null,W)}})}function M(S,w,A){return!A&&S.__zooming||new C(S,w)}function C(S,w){this.that=S,this.args=w,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,w),this.taps=0}C.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,w){return this.mouse&&S!=="mouse"&&(this.mouse[1]=w.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=w.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=w.invert(this.touch1[0])),this.that.__zoom=w,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var w=rt(this.that).datum();c.call(S,this.that,new Vv(S,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:c}),w)}};function L(S,...w){if(!n.apply(this,arguments))return;var A=M(this,w).event(S),T=this.__zoom,R=Math.max(o[0],Math.min(o[1],T.k*Math.pow(2,i.apply(this,arguments)))),F=pn(S);if(A.wheel)(A.mouse[0][0]!==F[0]||A.mouse[0][1]!==F[1])&&(A.mouse[1]=T.invert(A.mouse[0]=F)),clearTimeout(A.wheel);else{if(T.k===R)return;A.mouse=[F,T.invert(F)],Oi(this),A.start()}Ar(S),A.wheel=setTimeout(D,p),A.zoom("mouse",e(v(x(T,R),A.mouse[0],A.mouse[1]),A.extent,s));function D(){A.wheel=null,A.end()}}function _(S,...w){if(u||!n.apply(this,arguments))return;var A=S.currentTarget,T=M(this,w,!0).event(S),R=rt(S.view).on("mousemove.zoom",B,!0).on("mouseup.zoom",H,!0),F=pn(S,A),D=S.clientX,z=S.clientY;ec(S.view),rc(S),T.mouse=[F,this.__zoom.invert(F)],Oi(this),T.start();function B(J){if(Ar(J),!T.moved){var X=J.clientX-D,j=J.clientY-z;T.moved=X*X+j*j>y}T.event(J).zoom("mouse",e(v(T.that.__zoom,T.mouse[0]=pn(J,A),T.mouse[1]),T.extent,s))}function H(J){R.on("mousemove.zoom mouseup.zoom",null),nc(J.view,T.moved),Ar(J),T.event(J).end()}}function $(S,...w){if(n.apply(this,arguments)){var A=this.__zoom,T=pn(S.changedTouches?S.changedTouches[0]:S,this),R=A.invert(T),F=A.k*(S.shiftKey?.5:2),D=e(v(x(A,F),T,R),t.apply(this,w),s);Ar(S),a>0?rt(this).transition().duration(a).call(k,D,T,S):rt(this).call(m.transform,D,T,S)}}function I(S,...w){if(n.apply(this,arguments)){var A=S.touches,T=A.length,R=M(this,w,S.changedTouches.length===T).event(S),F,D,z,B;for(rc(S),D=0;D<T;++D)z=A[D],B=pn(z,this),B=[B,this.__zoom.invert(B),z.identifier],R.touch0?!R.touch1&&R.touch0[2]!==B[2]&&(R.touch1=B,R.taps=0):(R.touch0=B,F=!0,R.taps=1+!!h);h&&(h=clearTimeout(h)),F&&(R.taps<2&&(f=B[0],h=setTimeout(function(){h=null},d)),Oi(this),R.start())}}function E(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,R=T.length,F,D,z,B;for(Ar(S),F=0;F<R;++F)D=T[F],z=pn(D,this),A.touch0&&A.touch0[2]===D.identifier?A.touch0[0]=z:A.touch1&&A.touch1[2]===D.identifier&&(A.touch1[0]=z);if(D=A.that.__zoom,A.touch1){var H=A.touch0[0],J=A.touch0[1],X=A.touch1[0],j=A.touch1[1],W=(W=X[0]-H[0])*W+(W=X[1]-H[1])*W,U=(U=j[0]-J[0])*U+(U=j[1]-J[1])*U;D=x(D,Math.sqrt(W/U)),z=[(H[0]+X[0])/2,(H[1]+X[1])/2],B=[(J[0]+j[0])/2,(J[1]+j[1])/2]}else if(A.touch0)z=A.touch0[0],B=A.touch0[1];else return;A.zoom("touch",e(v(D,z,B),A.extent,s))}}function P(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,R=T.length,F,D;for(rc(S),u&&clearTimeout(u),u=setTimeout(function(){u=null},d),F=0;F<R;++F)D=T[F],A.touch0&&A.touch0[2]===D.identifier?delete A.touch0:A.touch1&&A.touch1[2]===D.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(),A.taps===2&&(D=pn(D,this),Math.hypot(f[0]-D[0],f[1]-D[1])<g)){var z=rt(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return m.wheelDelta=function(S){return arguments.length?(i=typeof S=="function"?S:is(+S),m):i},m.filter=function(S){return arguments.length?(n=typeof S=="function"?S:is(!!S),m):n},m.touchable=function(S){return arguments.length?(r=typeof S=="function"?S:is(!!S),m):r},m.extent=function(S){return arguments.length?(t=typeof S=="function"?S:is([[+S[0][0],+S[0][1]],[+S[1][0],+S[1][1]]]),m):t},m.scaleExtent=function(S){return arguments.length?(o[0]=+S[0],o[1]=+S[1],m):[o[0],o[1]]},m.translateExtent=function(S){return arguments.length?(s[0][0]=+S[0][0],s[1][0]=+S[1][0],s[0][1]=+S[0][1],s[1][1]=+S[1][1],m):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},m.constrain=function(S){return arguments.length?(e=S,m):e},m.duration=function(S){return arguments.length?(a=+S,m):a},m.interpolate=function(S){return arguments.length?(l=S,m):l},m.on=function(){var S=c.on.apply(c,arguments);return S===c?m:S},m.clickDistance=function(S){return arguments.length?(y=(S=+S)*S,m):Math.sqrt(y)},m.tapDistance=function(S){return arguments.length?(g=+S,m):g},m}class mf{constructor(t,e,i,r,o){this.resetButton=null,this.selectionRect=null,this.selectionStart=null,this.resetClickHandler=null;const s=typeof t=="string"?{type:t}:t;this.zoomKey=s.key,this.panKey=s.panKey;const a=s.panning;typeof a=="object"?(this.panningEnabled=a.enabled!==!1,this.panningType=a.type||s.type):(this.panningEnabled=a===!0,this.panningType=s.type);const l=this.isMouseWheelEnabled(s.mouseWheel),c=this.getMouseWheelSensitivity(s.mouseWheel);this.zoomBehavior=gf().scaleExtent([1,20]).extent([[0,0],[i.width,i.height]]).translateExtent([[0,0],[i.width,i.height]]).on("zoom",f=>{const u=f.transform;o.emit("zoom:changed",{type:s.type,transform:u})});const h=!!s.selectionHandler;this.zoomBehavior.filter(f=>f.type==="wheel"?l:f.type==="mousedown"||f.type==="touchstart"?h?!1:this.zoomKey?this.isKeyPressed(f,this.zoomKey):!0:!0),e.call(this.zoomBehavior),c!==1&&l&&e.on("wheel.zoom",f=>{f.preventDefault();const u=e.node().__zoom||rs,d=f.deltaY>0?1/(1+.1*c):1+.1*c,p=Math.max(1,Math.min(20,u.k*d));e.transition().duration(100).call(this.zoomBehavior.scaleTo,p)}),s.selectionHandler&&this.setupSelectionZoom(e,i,s,o),this.panningEnabled&&this.panKey&&this.setupPanning(e,i,o),this.resetButton=this.createResetButton(s.resetButton),this.resetClickHandler=()=>{e.transition().duration(300).call(this.zoomBehavior.transform,rs),this.resetButton.style.display="none"},this.resetButton.addEventListener("click",this.resetClickHandler),r.appendChild(this.resetButton),o.on("zoom:changed",()=>{this.resetButton&&(this.resetButton.style.display="block")})}setupSelectionZoom(t,e,i,r){t.on("mousedown.selection",o=>{if(this.zoomKey&&!this.isKeyPressed(o,this.zoomKey)||this.panKey&&this.isKeyPressed(o,this.panKey))return;const s=t.node().getBoundingClientRect();this.selectionStart={x:o.clientX-s.left,y:o.clientY-s.top};const a=i.selectionMarkerFill||"rgba(51,92,173,0.25)";this.selectionRect=t.append("rect").attr("class","katucharts-selection").attr("fill",a).attr("stroke","#4572a7").attr("stroke-width",1).attr("x",this.selectionStart.x).attr("y",0).attr("width",0).attr("height",e.height)}),t.on("mousemove.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=Math.min(this.selectionStart.x,a),c=Math.abs(a-this.selectionStart.x);if(this.selectionRect.attr("x",l).attr("width",c),i.type==="xy"||i.type==="y"){const h=o.clientY-s.top,f=Math.min(this.selectionStart.y,h),u=Math.abs(h-this.selectionStart.y);this.selectionRect.attr("y",f).attr("height",u)}}),t.on("mouseup.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=o.clientY-s.top;if(this.selectionRect.remove(),this.selectionRect=null,Math.abs(a-this.selectionStart.x)<5){this.selectionStart=null;return}let c=!1;const h={xAxis:[{min:Math.min(this.selectionStart.x,a),max:Math.max(this.selectionStart.x,a)}],yAxis:[{min:Math.min(this.selectionStart.y,l),max:Math.max(this.selectionStart.y,l)}],originalEvent:o,preventDefault:()=>{c=!0}};i.selectionHandler&&i.selectionHandler(h),c||r.emit("chart:selection",h),this.selectionStart=null})}setupPanning(t,e,i){let r=null,o={x:0,y:0};t.on("mousedown.pan",s=>{!this.panKey||!this.isKeyPressed(s,this.panKey)||(s.preventDefault(),r={x:s.clientX-o.x,y:s.clientY-o.y},t.style("cursor","grabbing"))}),t.on("mousemove.pan",s=>{if(!r)return;let a=s.clientX-r.x,l=s.clientY-r.y;this.panningType==="x"&&(l=0),this.panningType==="y"&&(a=0),o={x:a,y:l},i.emit("zoom:panned",{dx:a,dy:l,type:this.panningType})}),t.on("mouseup.pan",()=>{r&&(r=null,t.style("cursor",""))})}isKeyPressed(t,e){switch(e){case"ctrl":return t.ctrlKey;case"alt":return t.altKey;case"shift":return t.shiftKey;case"meta":return t.metaKey;default:return!0}}isMouseWheelEnabled(t){return!(t===!1||typeof t=="object"&&t.enabled===!1)}getMouseWheelSensitivity(t){return typeof t=="object"&&t.sensitivity!==void 0?t.sensitivity:1}createResetButton(t){const e=document.createElement("button");e.textContent="Reset zoom";const i=(t==null?void 0:t.theme)||{},r=(t==null?void 0:t.position)||{},o=r.y??5,s=r.x!==void 0?`${r.x}px`:"5px";return Object.assign(e.style,{position:"absolute",top:`${o}px`,right:s,padding:i.padding||"3px 8px",fontSize:i.fontSize||"11px",border:i.border||"1px solid #ccc",borderRadius:i.borderRadius||"3px",backgroundColor:i.backgroundColor||"#f9f9f9",color:i.color||"#333",cursor:"pointer",display:"none",zIndex:"5"}),e}setResetHandler(t){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetClickHandler=t,this.resetButton.addEventListener("click",this.resetClickHandler))}setResetButtonVisible(t){this.resetButton&&(this.resetButton.style.display=t?"block":"none")}destroy(){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetButton.remove())}}class yf{constructor(t){this.lastSeriesCount=0,this.lastPointCounts=[],this.config=t}apply(t,e,i){var s,a;if(this.config.enabled===!1)return;const r=this.config.landmarkVerbosity||"all";t.attr("role","img"),i&&t.attr("aria-label",this.config.description||`Chart: ${i}`);const o="katucharts-desc-"+Math.random().toString(36).slice(2,8);t.append("desc").attr("id",o).text(this.config.description||this.generateDescription(e,i)),t.attr("aria-describedby",o),t.attr("tabindex","0"),t.style("outline","none"),this.renderScreenReaderSections(t,e,i),this.applyLandmarks(t,e,r),((s=this.config.keyboardNavigation)==null?void 0:s.enabled)!==!1&&this.setupKeyboardNav(t,e),(a=this.config.announceNewData)!=null&&a.enabled&&this.setupAnnounceNewData(e)}setupAnnounceNewData(t){var o;const e=((o=this.config.announceNewData)==null?void 0:o.minAnnounceInterval)??5e3;let i=0;this.lastSeriesCount=t.length,this.lastPointCounts=t.map(s=>s.data.length),setInterval(()=>{const s=Date.now();if(s-i<e)return;let a=!1,l="";if(t.length!==this.lastSeriesCount)a=!0,l=`Chart updated. Now showing ${t.length} data series.`;else for(let c=0;c<t.length;c++){const h=t[c].data.length,f=this.lastPointCounts[c]??0;if(h!==f){a=!0;const u=h-f;l=`${t[c].config.name||"Series"} updated with ${Math.abs(u)} ${u>0?"new":"fewer"} point${Math.abs(u)!==1?"s":""}. Total: ${h}.`;break}}a&&(this.announce(l),i=s,this.lastSeriesCount=t.length,this.lastPointCounts=t.map(c=>c.data.length))},Math.max(1e3,e/2))}renderScreenReaderSections(t,e,i){var s;const r=this.config.screenReaderSection,o=(s=t.node())==null?void 0:s.parentElement;if(o){if(r!=null&&r.beforeChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.beforeChartFormat,e,i));o.insertBefore(a,t.node())}if(r!=null&&r.afterChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.afterChartFormat,e,i));o.appendChild(a)}}}createScreenReaderDiv(t){const e=document.createElement("div");return e.className="katucharts-screen-reader-region",e.setAttribute("role","region"),e.setAttribute("aria-label","Chart information"),e.innerHTML=t,Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),e}formatSectionTemplate(t,e,i){return t.replace("{chartTitle}",jn(i||"Chart")).replace("{numSeries}",String(e.length)).replace("{seriesList}",e.map(r=>jn(r.config.name||"Series")).join(", "))}applyLandmarks(t,e,i){if(i==="disabled")return;if(i==="one"){t.attr("role","region");return}t.selectAll(".katucharts-legend").attr("role","region").attr("aria-label","Chart legend");const r=this.config.series,o=(r==null?void 0:r.describeSingleSeries)??!1;e.length===1&&!o||e.forEach((s,a)=>{const l=s.group;if(l){const c=s.config.name||`Series ${a+1}`,h=r==null?void 0:r.descriptionFormat,f=h?h.replace("{name}",c).replace("{index}",String(a)):`${c}, ${s.data.length} data points`;l.attr("role","region").attr("aria-label",f)}})}generateDescription(t,e){const i=[];e&&i.push(`${e}.`),i.push(`Chart with ${t.length} data series.`);for(const r of t){const o=r.config.name||`Series ${r.config.index+1}`,s=r.data.length;i.push(`${o}: ${s} data points.`)}return i.join(" ")}setupKeyboardNav(t,e){let i=0,r=0;t.on("keydown",o=>{const s=e[i];if(s)switch(o.key){case"ArrowRight":o.preventDefault(),r=Math.min(r+1,s.data.length-1),this.announcePoint(s,r);break;case"ArrowLeft":o.preventDefault(),r=Math.max(r-1,0),this.announcePoint(s,r);break;case"ArrowUp":o.preventDefault(),i=Math.max(i-1,0),r=0,this.announceSeries(e[i]);break;case"ArrowDown":o.preventDefault(),i=Math.min(i+1,e.length-1),r=0,this.announceSeries(e[i]);break;case"Enter":case" ":o.preventDefault(),this.announcePoint(s,r);break}})}announcePoint(t,e){var o,s;const i=t.data[e];if(!i)return;let r;(o=this.config.point)!=null&&o.descriptionFormatter?r=this.config.point.descriptionFormatter(i):(s=this.config.point)!=null&&s.valueDescriptionFormat?r=this.config.point.valueDescriptionFormat.replace("{index}",String(e+1)).replace("{value}",String(i.y??"")).replace("{xDescription}",i.name||String(i.x??"")).replace("{point.name}",i.name||"").replace("{point.y}",String(i.y??"")).replace("{point.x}",String(i.x??"")).replace("{series.name}",t.config.name||"Series"):r=`${t.config.name||"Series"}, point ${e+1}: ${i.name?i.name+", ":""}value ${i.y}`,this.announce(r)}announceSeries(t){const e=`${t.config.name||"Series"}, ${t.data.length} points`;this.announce(e)}announce(t){let e=document.getElementById("katucharts-announcer");e||(e=document.createElement("div"),e.id="katucharts-announcer",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),document.body.appendChild(e)),e.textContent=t}}class jv{constructor(t){this.host=t,this.drilldown=null,this.zoom=null,this.a11yModule=null,this.origXDomains=[],this.origYDomains=[],this.isBoxZoomed=!1}setup(){this.setupSeriesDimming(),this.setupDrilldown(),this.setupZoom(),this.setupAccessibility()}destroy(){var t,e;(t=this.drilldown)==null||t.destroy(),(e=this.zoom)==null||e.destroy()}setupSeriesDimming(){var s,a,l,c;const t=this.host.getEvents(),e=((c=(l=(a=(s=this.host.getOptions().plotOptions)==null?void 0:s.series)==null?void 0:a.states)==null?void 0:l.inactive)==null?void 0:c.opacity)??.2;let i=null;const r=h=>{var f,u,d,p,y,g,m,x,v,b;i&&(clearTimeout(i),i=null);for(const k of this.host.getSeriesInstances())(u=(f=k.group)==null?void 0:f.interrupt)==null||u.call(f,"seriesDim"),k!==h&&k.visible?(x=(m=(g=(y=(p=(d=k.group)==null?void 0:d.transition)==null?void 0:p.call(d,"seriesDim"))==null?void 0:y.duration)==null?void 0:g.call(y,200))==null?void 0:m.attr)==null||x.call(m,"opacity",e):(b=(v=k.group)==null?void 0:v.attr)==null||b.call(v,"opacity",k.config.opacity??1)},o=()=>{i&&clearTimeout(i),i=setTimeout(()=>{var h,f,u,d,p,y,g,m;for(const x of this.host.getSeriesInstances())(f=(h=x.group)==null?void 0:h.interrupt)==null||f.call(h,"seriesDim"),(m=(g=(y=(p=(d=(u=x.group)==null?void 0:u.transition)==null?void 0:d.call(u,"seriesDim"))==null?void 0:p.duration)==null?void 0:y.call(p,200))==null?void 0:g.attr)==null||m.call(g,"opacity",x.config.opacity??1);i=null},50)};t.on("series:mouseenter",r),t.on("series:mouseleave",o),t.on("legend:itemHover",r),t.on("legend:itemLeave",o)}setupDrilldown(){var c;const e=this.host.getOptions().drilldown;if(!((c=e==null?void 0:e.series)!=null&&c.length))return;const i=this.host.getEvents(),r=this.host.getSeriesGroup();this.drilldown=new ff(e,i,this.host.getContainer());const o=[],s=new qn,a=e.animation,l=typeof a=="object"?a.duration??400:a!==!1?400:0;i.on("drilldown:drilldown",h=>{o.push([...this.host.getOptions().series]),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.performDrillSwap(h,s),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.performDrillSwap(h,s),this.host.fireEvent("drilldown",h)}),i.on("drilldown:drillup",()=>{const h=o.pop();h&&this.host.setSeries(h),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.host.rebuild(),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.host.rebuild(),this.host.fireEvent("drillup")})}performDrillSwap(t,e){const i=this.host.getOptions(),r=t.seriesOptions,o=e.parse({chart:i.chart,xAxis:i.xAxis,yAxis:i.yAxis,series:[r]});this.host.setSeries(o.series),this.host.rebuild()}setupZoom(){const t=this.host.getOptions(),e=t.chart.zooming||t.chart.zoomType;if(!e)return;const i=typeof e=="string"?e:e.type||"x",r={type:i,key:typeof e=="object"?e.key:void 0,mouseWheel:typeof e=="object"?e.mouseWheel:void 0,resetButton:typeof e=="object"?e.resetButton:void 0,panning:typeof e=="object"?e.panning:void 0,panKey:typeof e=="object"?e.panKey:void 0,pinchType:typeof e=="object"?e.pinchType:void 0,selectionMarkerFill:t.chart.selectionMarkerFill,selectionHandler:s=>this.applyBoxZoom(s,i)},o=this.host.getEvents();this.zoom=new mf(r,this.host.getPlotGroup(),this.host.getLayout().plotArea,this.host.getContainer(),o),this.zoom.setResetHandler(()=>this.resetBoxZoom()),o.on("zoom:changed",s=>{const a=s.transform,l=s.type,c=this.host.getLayout().plotArea;if(l==="x"||l==="xy")for(const h of this.host.getXAxes()){const f=h.scale.domain(),u=f[1]-f[0],d=f[0]-a.x/c.width*(u/a.k),p=d+u/a.k;h.updateDomain({min:d,max:p})}if(l==="y"||l==="xy")for(const h of this.host.getYAxes()){const f=h.scale.domain(),u=f[1]-f[0],d=f[1]+a.y/c.height*(u/a.k),p=d-u/a.k;h.updateDomain({min:p,max:d})}this.host.renderAfterZoom()})}applyBoxZoom(t,e){var r;const i=!this.isBoxZoomed;return(e==="x"||e==="xy")&&this.host.getXAxes().forEach((s,a)=>{i&&(this.origXDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.xAxis[0].min),c=s.getValueForPixel(t.xAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),(e==="y"||e==="xy")&&this.host.getYAxes().forEach((s,a)=>{i&&(this.origYDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.yAxis[0].min),c=s.getValueForPixel(t.yAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),this.isBoxZoomed=!0,(r=this.zoom)==null||r.setResetButtonVisible(!0),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"),!0}resetBoxZoom(){var t;this.isBoxZoomed&&(this.host.getXAxes().forEach((e,i)=>{const r=this.origXDomains[i];r&&e.updateDomain({min:r[0],max:r[1]})}),this.host.getYAxes().forEach((e,i)=>{const r=this.origYDomains[i];r&&e.updateDomain({min:r[0],max:r[1]})}),this.isBoxZoomed=!1,this.origXDomains=[],this.origYDomains=[],(t=this.zoom)==null||t.setResetButtonVisible(!1),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"))}setupAccessibility(){var i;const t=this.host.getOptions(),e=t.accessibility;!e||e.enabled===!1||(this.a11yModule=new yf(e),this.a11yModule.apply(this.host.getRenderer().svg,this.host.getSeriesInstances(),((i=t.title)==null?void 0:i.text)??void 0))}}const oc=n=>()=>n;function Zv(n,{sourceEvent:t,target:e,selection:i,mode:r,dispatch:o}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:i,enumerable:!0,configurable:!0},mode:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Kv(n){n.stopImmediatePropagation()}function sc(n){n.preventDefault(),n.stopImmediatePropagation()}var xf={name:"drag"},ac={name:"space"},Vi={name:"handle"},Gi={name:"center"};const{abs:bf,max:we,min:ke}=Math;function vf(n){return[+n[0],+n[1]]}function wf(n){return[vf(n[0]),vf(n[1])]}var os={name:"x",handles:["w","e"].map(lc),input:function(n,t){return n==null?null:[[+n[0],t[0][1]],[+n[1],t[1][1]]]},output:function(n){return n&&[n[0][0],n[1][0]]}},cc={},Bn={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"},kf={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Mf={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Jv={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Qv={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function lc(n){return{type:n}}function t2(n){return!n.ctrlKey&&!n.button}function e2(){var n=this.ownerSVGElement||this;return n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]}function n2(){return navigator.maxTouchPoints||"ontouchstart"in this}function hc(n){for(;!n.__brush;)if(!(n=n.parentNode))return;return n.__brush}function i2(n){return n[0][0]===n[1][0]||n[0][1]===n[1][1]}function r2(){return o2(os)}function o2(n){var t=e2,e=t2,i=n2,r=!0,o=zi("start","brush","end"),s=6,a;function l(g){var m=g.property("__brush",y).selectAll(".overlay").data([lc("overlay")]);m.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",Bn.overlay).merge(m).each(function(){var v=hc(this).extent;rt(this).attr("x",v[0][0]).attr("y",v[0][1]).attr("width",v[1][0]-v[0][0]).attr("height",v[1][1]-v[0][1])}),g.selectAll(".selection").data([lc("selection")]).enter().append("rect").attr("class","selection").attr("cursor",Bn.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var x=g.selectAll(".handle").data(n.handles,function(v){return v.type});x.exit().remove(),x.enter().append("rect").attr("class",function(v){return"handle handle--"+v.type}).attr("cursor",function(v){return Bn[v.type]}),g.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",u).filter(i).on("touchstart.brush",u).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}l.move=function(g,m,x){g.tween?g.on("start.brush",function(v){h(this,arguments).beforestart().start(v)}).on("interrupt.brush end.brush",function(v){h(this,arguments).end(v)}).tween("brush",function(){var v=this,b=v.__brush,k=h(v,arguments),M=b.selection,C=n.input(typeof m=="function"?m.apply(this,arguments):m,b.extent),L=ae(M,C);function _($){b.selection=$===1&&C===null?null:L($),c.call(v),k.brush()}return M!==null&&C!==null?_:_(1)}):g.each(function(){var v=this,b=arguments,k=v.__brush,M=n.input(typeof m=="function"?m.apply(v,b):m,k.extent),C=h(v,b).beforestart();Oi(v),k.selection=M===null?null:M,c.call(v),C.start(x).brush(x).end(x)})},l.clear=function(g,m){l.move(g,null,m)};function c(){var g=rt(this),m=hc(this).selection;m?(g.selectAll(".selection").style("display",null).attr("x",m[0][0]).attr("y",m[0][1]).attr("width",m[1][0]-m[0][0]).attr("height",m[1][1]-m[0][1]),g.selectAll(".handle").style("display",null).attr("x",function(x){return x.type[x.type.length-1]==="e"?m[1][0]-s/2:m[0][0]-s/2}).attr("y",function(x){return x.type[0]==="s"?m[1][1]-s/2:m[0][1]-s/2}).attr("width",function(x){return x.type==="n"||x.type==="s"?m[1][0]-m[0][0]+s:s}).attr("height",function(x){return x.type==="e"||x.type==="w"?m[1][1]-m[0][1]+s:s})):g.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function h(g,m,x){var v=g.__brush.emitter;return v&&(!x||!v.clean)?v:new f(g,m,x)}function f(g,m,x){this.that=g,this.args=m,this.state=g.__brush,this.active=0,this.clean=x}f.prototype={beforestart:function(){return++this.active===1&&(this.state.emitter=this,this.starting=!0),this},start:function(g,m){return this.starting?(this.starting=!1,this.emit("start",g,m)):this.emit("brush",g),this},brush:function(g,m){return this.emit("brush",g,m),this},end:function(g,m){return--this.active===0&&(delete this.state.emitter,this.emit("end",g,m)),this},emit:function(g,m,x){var v=rt(this.that).datum();o.call(g,this.that,new Zv(g,{sourceEvent:m,target:l,selection:n.output(this.state.selection),mode:x,dispatch:o}),v)}};function u(g){if(a&&!g.touches||!e.apply(this,arguments))return;var m=this,x=g.target.__data__.type,v=(r&&g.metaKey?x="overlay":x)==="selection"?xf:r&&g.altKey?Gi:Vi,b=n===cc?null:Jv[x],k=n===os?null:Qv[x],M=hc(m),C=M.extent,L=M.selection,_=C[0][0],$,I,E=C[0][1],P,S,w=C[1][0],A,T,R=C[1][1],F,D,z=0,B=0,H,J=b&&k&&r&&g.shiftKey,X,j,W=Array.from(g.touches||[g],at=>{const ot=at.identifier;return at=pn(at,m),at.point0=at.slice(),at.identifier=ot,at});Oi(m);var U=h(m,arguments,!0).beforestart();if(x==="overlay"){L&&(H=!0);const at=[W[0],W[1]||W[0]];M.selection=L=[[$=n===cc?_:ke(at[0][0],at[1][0]),P=n===os?E:ke(at[0][1],at[1][1])],[A=n===cc?w:we(at[0][0],at[1][0]),F=n===os?R:we(at[0][1],at[1][1])]],W.length>1&&ct(g)}else $=L[0][0],P=L[0][1],A=L[1][0],F=L[1][1];I=$,S=P,T=A,D=F;var G=rt(m).attr("pointer-events","none"),N=G.selectAll(".overlay").attr("cursor",Bn[x]);if(g.touches)U.moved=O,U.ended=it;else{var Y=rt(g.view).on("mousemove.brush",O,!0).on("mouseup.brush",it,!0);r&&Y.on("keydown.brush",ft,!0).on("keyup.brush",dt,!0),ec(g.view)}c.call(m),U.start(g,v.name);function O(at){for(const ot of at.changedTouches||[at])for(const q of W)q.identifier===ot.identifier&&(q.cur=pn(ot,m));if(J&&!X&&!j&&W.length===1){const ot=W[0];bf(ot.cur[0]-ot[0])>bf(ot.cur[1]-ot[1])?j=!0:X=!0}for(const ot of W)ot.cur&&(ot[0]=ot.cur[0],ot[1]=ot.cur[1]);H=!0,sc(at),ct(at)}function ct(at){const ot=W[0],q=ot.point0;var st;switch(z=ot[0]-q[0],B=ot[1]-q[1],v){case ac:case xf:{b&&(z=we(_-$,ke(w-A,z)),I=$+z,T=A+z),k&&(B=we(E-P,ke(R-F,B)),S=P+B,D=F+B);break}case Vi:{W[1]?(b&&(I=we(_,ke(w,W[0][0])),T=we(_,ke(w,W[1][0])),b=1),k&&(S=we(E,ke(R,W[0][1])),D=we(E,ke(R,W[1][1])),k=1)):(b<0?(z=we(_-$,ke(w-$,z)),I=$+z,T=A):b>0&&(z=we(_-A,ke(w-A,z)),I=$,T=A+z),k<0?(B=we(E-P,ke(R-P,B)),S=P+B,D=F):k>0&&(B=we(E-F,ke(R-F,B)),S=P,D=F+B));break}case Gi:{b&&(I=we(_,ke(w,$-z*b)),T=we(_,ke(w,A+z*b))),k&&(S=we(E,ke(R,P-B*k)),D=we(E,ke(R,F+B*k)));break}}T<I&&(b*=-1,st=$,$=A,A=st,st=I,I=T,T=st,x in kf&&N.attr("cursor",Bn[x=kf[x]])),D<S&&(k*=-1,st=P,P=F,F=st,st=S,S=D,D=st,x in Mf&&N.attr("cursor",Bn[x=Mf[x]])),M.selection&&(L=M.selection),X&&(I=L[0][0],T=L[1][0]),j&&(S=L[0][1],D=L[1][1]),(L[0][0]!==I||L[0][1]!==S||L[1][0]!==T||L[1][1]!==D)&&(M.selection=[[I,S],[T,D]],c.call(m),U.brush(at,v.name))}function it(at){if(Kv(at),at.touches){if(at.touches.length)return;a&&clearTimeout(a),a=setTimeout(function(){a=null},500)}else nc(at.view,H),Y.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);G.attr("pointer-events","all"),N.attr("cursor",Bn.overlay),M.selection&&(L=M.selection),i2(L)&&(M.selection=null,c.call(m)),U.end(at,v.name)}function ft(at){switch(at.keyCode){case 16:{J=b&&k;break}case 18:{v===Vi&&(b&&(A=T-z*b,$=I+z*b),k&&(F=D-B*k,P=S+B*k),v=Gi,ct(at));break}case 32:{(v===Vi||v===Gi)&&(b<0?A=T-z:b>0&&($=I-z),k<0?F=D-B:k>0&&(P=S-B),v=ac,N.attr("cursor",Bn.selection),ct(at));break}default:return}sc(at)}function dt(at){switch(at.keyCode){case 16:{J&&(X=j=J=!1,ct(at));break}case 18:{v===Gi&&(b<0?A=T:b>0&&($=I),k<0?F=D:k>0&&(P=S),v=Vi,ct(at));break}case 32:{v===ac&&(at.altKey?(b&&(A=T-z*b,$=I+z*b),k&&(F=D-B*k,P=S+B*k),v=Gi):(b<0?A=T:b>0&&($=I),k<0?F=D:k>0&&(P=S),v=Vi),N.attr("cursor",Bn[x]),ct(at));break}default:return}sc(at)}}function d(g){h(this,arguments).moved(g)}function p(g){h(this,arguments).ended(g)}function y(){var g=this.__brush||{selection:null};return g.extent=wf(t.apply(this,arguments)),g.dim=n,g}return l.extent=function(g){return arguments.length?(t=typeof g=="function"?g:oc(wf(g)),l):t},l.filter=function(g){return arguments.length?(e=typeof g=="function"?g:oc(!!g),l):e},l.touchable=function(g){return arguments.length?(i=typeof g=="function"?g:oc(!!g),l):i},l.handleSize=function(g){return arguments.length?(s=+g,l):s},l.keyModifiers=function(g){return arguments.length?(r=!!g,l):r},l.on=function(){var g=o.on.apply(o,arguments);return g===o?l:g},l}function Rt(n){return function(){return n}}const Af=Math.abs,Me=Math.atan2,vi=Math.cos,s2=Math.max,uc=Math.min,wn=Math.sin,Le=Math.sqrt,Ae=1e-12,Yi=Math.PI,ss=Yi/2,Sr=2*Yi;function a2(n){return n>1?0:n<-1?Yi:Math.acos(n)}function Sf(n){return n>=1?ss:n<=-1?-ss:Math.asin(n)}const fc=Math.PI,dc=2*fc,wi=1e-6,c2=dc-wi;function _f(n){this._+=n[0];for(let t=1,e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function l2(n){let t=Math.floor(n);if(!(t>=0))throw new Error(`invalid digits: ${n}`);if(t>15)return _f;const e=10**t;return function(i){this._+=i[0];for(let r=1,o=i.length;r<o;++r)this._+=Math.round(arguments[r]*e)/e+i[r]}}let h2=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?_f:l2(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,i,r){this._append`Q${+t},${+e},${this._x1=+i},${this._y1=+r}`}bezierCurveTo(t,e,i,r,o,s){this._append`C${+t},${+e},${+i},${+r},${this._x1=+o},${this._y1=+s}`}arcTo(t,e,i,r,o){if(t=+t,e=+e,i=+i,r=+r,o=+o,o<0)throw new Error(`negative radius: ${o}`);let s=this._x1,a=this._y1,l=i-t,c=r-e,h=s-t,f=a-e,u=h*h+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=e}`;else if(u>wi)if(!(Math.abs(f*l-c*h)>wi)||!o)this._append`L${this._x1=t},${this._y1=e}`;else{let d=i-s,p=r-a,y=l*l+c*c,g=d*d+p*p,m=Math.sqrt(y),x=Math.sqrt(u),v=o*Math.tan((fc-Math.acos((y+u-g)/(2*m*x)))/2),b=v/x,k=v/m;Math.abs(b-1)>wi&&this._append`L${t+b*h},${e+b*f}`,this._append`A${o},${o},0,0,${+(f*d>h*p)},${this._x1=t+k*l},${this._y1=e+k*c}`}}arc(t,e,i,r,o,s){if(t=+t,e=+e,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let a=i*Math.cos(r),l=i*Math.sin(r),c=t+a,h=e+l,f=1^s,u=s?r-o:o-r;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>wi||Math.abs(this._y1-h)>wi)&&this._append`L${c},${h}`,i&&(u<0&&(u=u%dc+dc),u>c2?this._append`A${i},${i},0,1,${f},${t-a},${e-l}A${i},${i},0,1,${f},${this._x1=c},${this._y1=h}`:u>wi&&this._append`A${i},${i},0,${+(u>=fc)},${f},${this._x1=t+i*Math.cos(o)},${this._y1=e+i*Math.sin(o)}`)}rect(t,e,i,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}};function _r(n){let t=3;return n.digits=function(e){if(!arguments.length)return t;if(e==null)t=null;else{const i=Math.floor(e);if(!(i>=0))throw new RangeError(`invalid digits: ${e}`);t=i}return n},()=>new h2(t)}function u2(n){return n.innerRadius}function f2(n){return n.outerRadius}function d2(n){return n.startAngle}function p2(n){return n.endAngle}function g2(n){return n&&n.padAngle}function m2(n,t,e,i,r,o,s,a){var l=e-n,c=i-t,h=s-r,f=a-o,u=f*l-h*c;if(!(u*u<Ae))return u=(h*(t-o)-f*(n-r))/u,[n+u*l,t+u*c]}function as(n,t,e,i,r,o,s){var a=n-e,l=t-i,c=(s?o:-o)/Le(a*a+l*l),h=c*l,f=-c*a,u=n+h,d=t+f,p=e+h,y=i+f,g=(u+p)/2,m=(d+y)/2,x=p-u,v=y-d,b=x*x+v*v,k=r-o,M=u*y-p*d,C=(v<0?-1:1)*Le(s2(0,k*k*b-M*M)),L=(M*v-x*C)/b,_=(-M*x-v*C)/b,$=(M*v+x*C)/b,I=(-M*x+v*C)/b,E=L-g,P=_-m,S=$-g,w=I-m;return E*E+P*P>S*S+w*w&&(L=$,_=I),{cx:L,cy:_,x01:-h,y01:-f,x11:L*(r/k-1),y11:_*(r/k-1)}}function Se(){var n=u2,t=f2,e=Rt(0),i=null,r=d2,o=p2,s=g2,a=null,l=_r(c);function c(){var h,f,u=+n.apply(this,arguments),d=+t.apply(this,arguments),p=r.apply(this,arguments)-ss,y=o.apply(this,arguments)-ss,g=Af(y-p),m=y>p;if(a||(a=h=l()),d<u&&(f=d,d=u,u=f),!(d>Ae))a.moveTo(0,0);else if(g>Sr-Ae)a.moveTo(d*vi(p),d*wn(p)),a.arc(0,0,d,p,y,!m),u>Ae&&(a.moveTo(u*vi(y),u*wn(y)),a.arc(0,0,u,y,p,m));else{var x=p,v=y,b=p,k=y,M=g,C=g,L=s.apply(this,arguments)/2,_=L>Ae&&(i?+i.apply(this,arguments):Le(u*u+d*d)),$=uc(Af(d-u)/2,+e.apply(this,arguments)),I=$,E=$,P,S;if(_>Ae){var w=Sf(_/u*wn(L)),A=Sf(_/d*wn(L));(M-=w*2)>Ae?(w*=m?1:-1,b+=w,k-=w):(M=0,b=k=(p+y)/2),(C-=A*2)>Ae?(A*=m?1:-1,x+=A,v-=A):(C=0,x=v=(p+y)/2)}var T=d*vi(x),R=d*wn(x),F=u*vi(k),D=u*wn(k);if($>Ae){var z=d*vi(v),B=d*wn(v),H=u*vi(b),J=u*wn(b),X;if(g<Yi)if(X=m2(T,R,H,J,z,B,F,D)){var j=T-X[0],W=R-X[1],U=z-X[0],G=B-X[1],N=1/wn(a2((j*U+W*G)/(Le(j*j+W*W)*Le(U*U+G*G)))/2),Y=Le(X[0]*X[0]+X[1]*X[1]);I=uc($,(u-Y)/(N-1)),E=uc($,(d-Y)/(N+1))}else I=E=0}C>Ae?E>Ae?(P=as(H,J,T,R,d,E,m),S=as(z,B,F,D,d,E,m),a.moveTo(P.cx+P.x01,P.cy+P.y01),E<$?a.arc(P.cx,P.cy,E,Me(P.y01,P.x01),Me(S.y01,S.x01),!m):(a.arc(P.cx,P.cy,E,Me(P.y01,P.x01),Me(P.y11,P.x11),!m),a.arc(0,0,d,Me(P.cy+P.y11,P.cx+P.x11),Me(S.cy+S.y11,S.cx+S.x11),!m),a.arc(S.cx,S.cy,E,Me(S.y11,S.x11),Me(S.y01,S.x01),!m))):(a.moveTo(T,R),a.arc(0,0,d,x,v,!m)):a.moveTo(T,R),!(u>Ae)||!(M>Ae)?a.lineTo(F,D):I>Ae?(P=as(F,D,z,B,u,-I,m),S=as(T,R,H,J,u,-I,m),a.lineTo(P.cx+P.x01,P.cy+P.y01),I<$?a.arc(P.cx,P.cy,I,Me(P.y01,P.x01),Me(S.y01,S.x01),!m):(a.arc(P.cx,P.cy,I,Me(P.y01,P.x01),Me(P.y11,P.x11),!m),a.arc(0,0,u,Me(P.cy+P.y11,P.cx+P.x11),Me(S.cy+S.y11,S.cx+S.x11),m),a.arc(S.cx,S.cy,I,Me(S.y11,S.x11),Me(S.y01,S.x01),!m))):a.arc(0,0,u,k,b,m)}if(a.closePath(),h)return a=null,h+""||null}return c.centroid=function(){var h=(+n.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+r.apply(this,arguments)+ +o.apply(this,arguments))/2-Yi/2;return[vi(f)*h,wn(f)*h]},c.innerRadius=function(h){return arguments.length?(n=typeof h=="function"?h:Rt(+h),c):n},c.outerRadius=function(h){return arguments.length?(t=typeof h=="function"?h:Rt(+h),c):t},c.cornerRadius=function(h){return arguments.length?(e=typeof h=="function"?h:Rt(+h),c):e},c.padRadius=function(h){return arguments.length?(i=h==null?null:typeof h=="function"?h:Rt(+h),c):i},c.startAngle=function(h){return arguments.length?(r=typeof h=="function"?h:Rt(+h),c):r},c.endAngle=function(h){return arguments.length?(o=typeof h=="function"?h:Rt(+h),c):o},c.padAngle=function(h){return arguments.length?(s=typeof h=="function"?h:Rt(+h),c):s},c.context=function(h){return arguments.length?(a=h??null,c):a},c}var y2=Array.prototype.slice;function pc(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function Cf(n){this._context=n}Cf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:this._context.lineTo(n,t);break}}};function Xi(n){return new Cf(n)}function gc(n){return n[0]}function mc(n){return n[1]}function ki(n,t){var e=Rt(!0),i=null,r=Xi,o=null,s=_r(a);n=typeof n=="function"?n:n===void 0?gc:Rt(n),t=typeof t=="function"?t:t===void 0?mc:Rt(t);function a(l){var c,h=(l=pc(l)).length,f,u=!1,d;for(i==null&&(o=r(d=s())),c=0;c<=h;++c)!(c<h&&e(f=l[c],c,l))===u&&((u=!u)?o.lineStart():o.lineEnd()),u&&o.point(+n(f,c,l),+t(f,c,l));if(d)return o=null,d+""||null}return a.x=function(l){return arguments.length?(n=typeof l=="function"?l:Rt(+l),a):n},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:Rt(+l),a):t},a.defined=function(l){return arguments.length?(e=typeof l=="function"?l:Rt(!!l),a):e},a.curve=function(l){return arguments.length?(r=l,i!=null&&(o=r(i)),a):r},a.context=function(l){return arguments.length?(l==null?i=o=null:o=r(i=l),a):i},a}function Ui(n,t,e){var i=null,r=Rt(!0),o=null,s=Xi,a=null,l=_r(c);n=typeof n=="function"?n:n===void 0?gc:Rt(+n),t=typeof t=="function"?t:Rt(t===void 0?0:+t),e=typeof e=="function"?e:e===void 0?mc:Rt(+e);function c(f){var u,d,p,y=(f=pc(f)).length,g,m=!1,x,v=new Array(y),b=new Array(y);for(o==null&&(a=s(x=l())),u=0;u<=y;++u){if(!(u<y&&r(g=f[u],u,f))===m)if(m=!m)d=u,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),p=u-1;p>=d;--p)a.point(v[p],b[p]);a.lineEnd(),a.areaEnd()}m&&(v[u]=+n(g,u,f),b[u]=+t(g,u,f),a.point(i?+i(g,u,f):v[u],e?+e(g,u,f):b[u]))}if(x)return a=null,x+""||null}function h(){return ki().defined(r).curve(s).context(o)}return c.x=function(f){return arguments.length?(n=typeof f=="function"?f:Rt(+f),i=null,c):n},c.x0=function(f){return arguments.length?(n=typeof f=="function"?f:Rt(+f),c):n},c.x1=function(f){return arguments.length?(i=f==null?null:typeof f=="function"?f:Rt(+f),c):i},c.y=function(f){return arguments.length?(t=typeof f=="function"?f:Rt(+f),e=null,c):t},c.y0=function(f){return arguments.length?(t=typeof f=="function"?f:Rt(+f),c):t},c.y1=function(f){return arguments.length?(e=f==null?null:typeof f=="function"?f:Rt(+f),c):e},c.lineX0=c.lineY0=function(){return h().x(n).y(t)},c.lineY1=function(){return h().x(n).y(e)},c.lineX1=function(){return h().x(i).y(t)},c.defined=function(f){return arguments.length?(r=typeof f=="function"?f:Rt(!!f),c):r},c.curve=function(f){return arguments.length?(s=f,o!=null&&(a=s(o)),c):s},c.context=function(f){return arguments.length?(f==null?o=a=null:a=s(o=f),c):o},c}function x2(n,t){return t<n?-1:t>n?1:t>=n?0:NaN}function b2(n){return n}function v2(){var n=b2,t=x2,e=null,i=Rt(0),r=Rt(Sr),o=Rt(0);function s(a){var l,c=(a=pc(a)).length,h,f,u=0,d=new Array(c),p=new Array(c),y=+i.apply(this,arguments),g=Math.min(Sr,Math.max(-Sr,r.apply(this,arguments)-y)),m,x=Math.min(Math.abs(g)/c,o.apply(this,arguments)),v=x*(g<0?-1:1),b;for(l=0;l<c;++l)(b=p[d[l]=l]=+n(a[l],l,a))>0&&(u+=b);for(t!=null?d.sort(function(k,M){return t(p[k],p[M])}):e!=null&&d.sort(function(k,M){return e(a[k],a[M])}),l=0,f=u?(g-c*v)/u:0;l<c;++l,y=m)h=d[l],b=p[h],m=y+(b>0?b*f:0)+v,p[h]={data:a[h],index:l,value:b,startAngle:y,endAngle:m,padAngle:x};return p}return s.value=function(a){return arguments.length?(n=typeof a=="function"?a:Rt(+a),s):n},s.sortValues=function(a){return arguments.length?(t=a,e=null,s):t},s.sort=function(a){return arguments.length?(e=a,t=null,s):e},s.startAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Rt(+a),s):i},s.endAngle=function(a){return arguments.length?(r=typeof a=="function"?a:Rt(+a),s):r},s.padAngle=function(a){return arguments.length?(o=typeof a=="function"?a:Rt(+a),s):o},s}var Pf=yc(Xi);function Ef(n){this._curve=n}Ef.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(n,t){this._curve.point(t*Math.sin(n),t*-Math.cos(n))}};function yc(n){function t(e){return new Ef(n(e))}return t._curve=n,t}function Cr(n){var t=n.curve;return n.angle=n.x,delete n.x,n.radius=n.y,delete n.y,n.curve=function(e){return arguments.length?t(yc(e)):t()._curve},n}function w2(){return Cr(ki().curve(Pf))}function k2(){var n=Ui().curve(Pf),t=n.curve,e=n.lineX0,i=n.lineX1,r=n.lineY0,o=n.lineY1;return n.angle=n.x,delete n.x,n.startAngle=n.x0,delete n.x0,n.endAngle=n.x1,delete n.x1,n.radius=n.y,delete n.y,n.innerRadius=n.y0,delete n.y0,n.outerRadius=n.y1,delete n.y1,n.lineStartAngle=function(){return Cr(e())},delete n.lineX0,n.lineEndAngle=function(){return Cr(i())},delete n.lineX1,n.lineInnerRadius=function(){return Cr(r())},delete n.lineY0,n.lineOuterRadius=function(){return Cr(o())},delete n.lineY1,n.curve=function(s){return arguments.length?t(yc(s)):t()._curve},n}class Tf{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e);break}}this._x0=t,this._y0=e}}function M2(n){return new Tf(n,!0)}function A2(n){return new Tf(n,!1)}function S2(n){return n.source}function _2(n){return n.target}function $f(n){let t=S2,e=_2,i=gc,r=mc,o=null,s=null,a=_r(l);function l(){let c;const h=y2.call(arguments),f=t.apply(this,h),u=e.apply(this,h);if(o==null&&(s=n(c=a())),s.lineStart(),h[0]=f,s.point(+i.apply(this,h),+r.apply(this,h)),h[0]=u,s.point(+i.apply(this,h),+r.apply(this,h)),s.lineEnd(),c)return s=null,c+""||null}return l.source=function(c){return arguments.length?(t=c,l):t},l.target=function(c){return arguments.length?(e=c,l):e},l.x=function(c){return arguments.length?(i=typeof c=="function"?c:Rt(+c),l):i},l.y=function(c){return arguments.length?(r=typeof c=="function"?c:Rt(+c),l):r},l.context=function(c){return arguments.length?(c==null?o=s=null:s=n(o=c),l):o},l}function C2(){return $f(M2)}function P2(){return $f(A2)}const Zn={draw(n,t){const e=Le(t/Yi);n.moveTo(e,0),n.arc(0,0,e,0,Sr)}},xc={draw(n,t){const e=Le(t/5)/2;n.moveTo(-3*e,-e),n.lineTo(-e,-e),n.lineTo(-e,-3*e),n.lineTo(e,-3*e),n.lineTo(e,-e),n.lineTo(3*e,-e),n.lineTo(3*e,e),n.lineTo(e,e),n.lineTo(e,3*e),n.lineTo(-e,3*e),n.lineTo(-e,e),n.lineTo(-3*e,e),n.closePath()}},Lf=Le(1/3),E2=Lf*2,bc={draw(n,t){const e=Le(t/E2),i=e*Lf;n.moveTo(0,-e),n.lineTo(i,0),n.lineTo(0,e),n.lineTo(-i,0),n.closePath()}},vc={draw(n,t){const e=Le(t),i=-e/2;n.rect(i,i,e,e)}},wc=Le(3),kc={draw(n,t){const e=-Le(t/(wc*3));n.moveTo(0,e*2),n.lineTo(-wc*e,-e),n.lineTo(wc*e,-e),n.closePath()}},T2=Le(3),Mc={draw(n,t){const e=Le(t)*.6824,i=e/2,r=e*T2/2;n.moveTo(0,-e),n.lineTo(r,i),n.lineTo(-r,i),n.closePath()}};function rn(n,t){let e=null,i=_r(r);n=typeof n=="function"?n:Rt(n||Zn),t=typeof t=="function"?t:Rt(t===void 0?64:+t);function r(){let o;if(e||(e=o=i()),n.apply(this,arguments).draw(e,+t.apply(this,arguments)),o)return e=null,o+""||null}return r.type=function(o){return arguments.length?(n=typeof o=="function"?o:Rt(o),r):n},r.size=function(o){return arguments.length?(t=typeof o=="function"?o:Rt(+o),r):t},r.context=function(o){return arguments.length?(e=o??null,r):e},r}function If(){}function Ff(n,t,e){n._context.bezierCurveTo(n._x1+n._k*(n._x2-n._x0),n._y1+n._k*(n._y2-n._y0),n._x2+n._k*(n._x1-t),n._y2+n._k*(n._y1-e),n._x2,n._y2)}function Ac(n,t){this._context=n,this._k=(1-t)/6}Ac.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:Ff(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2,this._x1=n,this._y1=t;break;case 2:this._point=3;default:Ff(this,n,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}},function n(t){function e(i){return new Ac(i,t)}return e.tension=function(i){return n(+i)},e}(0);function $2(n,t,e){var i=n._x1,r=n._y1,o=n._x2,s=n._y2;if(n._l01_a>Ae){var a=2*n._l01_2a+3*n._l01_a*n._l12_a+n._l12_2a,l=3*n._l01_a*(n._l01_a+n._l12_a);i=(i*a-n._x0*n._l12_2a+n._x2*n._l01_2a)/l,r=(r*a-n._y0*n._l12_2a+n._y2*n._l01_2a)/l}if(n._l23_a>Ae){var c=2*n._l23_2a+3*n._l23_a*n._l12_a+n._l12_2a,h=3*n._l23_a*(n._l23_a+n._l12_a);o=(o*c+n._x1*n._l23_2a-t*n._l12_2a)/h,s=(s*c+n._y1*n._l23_2a-e*n._l12_2a)/h}n._context.bezierCurveTo(i,r,o,s,n._x2,n._y2)}function Rf(n,t){this._context=n,this._alpha=t}Rf.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);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){if(n=+n,t=+t,this._point){var e=this._x2-n,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;break;case 2:this._point=3;default:$2(this,n,t);break}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=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const Df=function n(t){function e(i){return t?new Rf(i,t):new Ac(i,0)}return e.alpha=function(i){return n(+i)},e}(.5);function zf(n){this._context=n}zf.prototype={areaStart:If,areaEnd:If,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(n,t){n=+n,t=+t,this._point?this._context.lineTo(n,t):(this._point=1,this._context.moveTo(n,t))}};function L2(n){return new zf(n)}function cs(n,t){this._context=n,this._t=t}cs.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&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(n,t);else{var e=this._x*(1-this._t)+n*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,t)}break}}this._x=n,this._y=t}};function Bf(n){return new cs(n,.5)}function Of(n){return new cs(n,0)}function Nf(n){return new cs(n,1)}class Wf{constructor(t,e,i,r,o,s){var m;if(this.width=0,this.height=0,this.brush=null,this.brushGroup=null,this.programmatic=!1,this.config=t,this.events=o,!t.enabled){this.group=e.append("g").style("display","none");return}this.height=t.height||40,t.margin;const a=r-this.height-10;this.width=i.width,this.group=e.append("g").attr("class","katucharts-navigator").attr("transform",`translate(${i.x},${a})`);const l=t.maskFill??"rgba(102,133,194,0.3)",c=t.maskInside??!0,h=((m=t.series)==null?void 0:m.color)??"#6699cc",f=t.handles||{},u=f.backgroundColor??"#f2f2f2",d=f.borderColor??"#999999",p=f.enabled!==!1;this.group.append("rect").attr("width",this.width).attr("height",this.height).attr("fill","#f2f2f2").attr("stroke",t.outlineColor||"#cccccc").attr("stroke-width",t.outlineWidth||1),this.renderSeriesLine(s,h);const y=r2().extent([[0,0],[this.width,this.height]]).on("end",x=>{if(this.programmatic||!x.selection)return;const[v,b]=x.selection;o.emit("navigator:brushed",{x0:v/this.width,x1:b/this.width})});this.brush=y;const g=this.group.append("g").attr("class","katucharts-navigator-brush").call(y);this.brushGroup=g,g.selectAll(".selection").attr("fill",c?l:"none").attr("stroke","none"),p?g.selectAll(".handle").attr("fill",u).attr("stroke",d).attr("stroke-width",f.lineWidth??1):g.selectAll(".handle").style("display","none"),t.adaptToUpdatedData!==!1&&o.on("series:dataUpdated",x=>{this.updateSeriesLine(x,h)})}renderSeriesLine(t,e){if(t.length===0)return;const i=[Math.min(...t.map(l=>l.x)),Math.max(...t.map(l=>l.x))],r=[Math.min(...t.map(l=>l.y)),Math.max(...t.map(l=>l.y))],o=ve().domain(i).range([0,this.width]),s=ve().domain(r).range([this.height-2,2]),a=ki().x(l=>o(l.x)).y(l=>s(l.y));this.group.selectAll(".katucharts-navigator-line").remove(),this.group.append("path").datum(t).attr("class","katucharts-navigator-line").attr("d",a).attr("fill","none").attr("stroke",e).attr("stroke-width",1)}updateSeriesLine(t,e){this.renderSeriesLine(t,e)}setSelection(t,e){if(!(!this.brush||!this.brushGroup)){if(this.programmatic=!0,t<=5e-4&&e>=.9995)this.brush.move(this.brushGroup,null);else{const i=Math.max(0,Math.min(1,t))*this.width,r=Math.max(0,Math.min(1,e))*this.width;this.brush.move(this.brushGroup,[Math.min(i,r),Math.max(i,r)])}this.programmatic=!1}}destroy(){this.group.remove()}}class Hf{constructor(t,e,i){if(this.container=null,this.config=t,this.events=i,!t.enabled)return;this.container=Ja("katucharts-range-selector",e),Object.assign(this.container.style,{display:"flex",gap:`${t.buttonSpacing??4}px`,padding:"5px",alignItems:"center",flexWrap:"wrap",fontSize:"12px"}),t.floating&&(this.container.style.position="absolute",this.container.style.zIndex="10"),t.x!==void 0&&(this.container.style.left=`${t.x}px`),t.y!==void 0&&(this.container.style.top=`${t.y}px`);const r=t.buttonPosition||{};r.align==="right"?this.container.style.justifyContent="flex-end":r.align==="center"&&(this.container.style.justifyContent="center");const o=t.buttons||[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],s=t.buttonTheme||{},a=t.allButtonsEnabled??!1;if(o.forEach((l,c)=>{const h=document.createElement("button");h.textContent=l.text||l.type||"",h.title=l.title||"";const f=c===(t.selected??0),u=s["states.select.fill"]||s.fill||"#e0e0e0",d=s.fill||"#fff";Object.assign(h.style,{padding:s.padding||"3px 8px",border:`1px solid ${s.stroke||"#ccc"}`,borderRadius:`${s.r??3}px`,backgroundColor:f?u:d,cursor:"pointer",fontSize:s["style.fontSize"]||"11px",fontWeight:s["style.fontWeight"]||"normal",color:s["style.color"]||"#333"}),!a&&!f&&(h.style.opacity="0.8"),h.addEventListener("click",()=>{var p;(p=l.events)!=null&&p.click&&l.events.click.call(l,new Event("click")),this.container.querySelectorAll("button").forEach(y=>{y.style.backgroundColor=d,y.style.opacity=a?"1":"0.8"}),h.style.backgroundColor=u,h.style.opacity="1",i.emit("rangeSelector:selected",{type:l.type,count:l.count,index:c})}),this.container.appendChild(h)}),t.inputEnabled!==!1){const l=t.inputPosition||{},c=document.createElement("div");c.style.display="flex",c.style.alignItems="center",c.style.gap="4px",c.style.marginLeft=l.x!==void 0?`${l.x}px`:"10px";const h=t.inputStyle||{},f=t.inputBoxBorderColor||"#ccc",u=t.inputBoxHeight??22,d=t.inputBoxWidth??90,p=document.createElement("input");p.type="date",Object.assign(p.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const y=document.createElement("input");y.type="date",Object.assign(y.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const g=()=>{p.value&&y.value&&i.emit("rangeSelector:dateRange",{from:new Date(p.value).getTime(),to:new Date(y.value).getTime()})};p.addEventListener("change",g),y.addEventListener("change",g);const m=t.labelStyle||{},x=document.createElement("span");x.textContent=" to ",x.style.fontSize=m.fontSize||"11px",x.style.color=m.color||"#666",c.appendChild(p),c.appendChild(x),c.appendChild(y),this.container.appendChild(c)}}destroy(){this.container&&this.container.remove()}}const I2=[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],F2={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6,year:31536e6};class R2{constructor(t){this.host=t,this.navigator=null,this.rangeSelector=null,this.xMin=0,this.xMax=0}setup(){var a,l;const t=this.host.getOptions(),e=(a=t.navigator)==null?void 0:a.enabled,i=(l=t.rangeSelector)==null?void 0:l.enabled;if(!e&&!i)return;const r=this.getBaseSeriesData();r.length>0&&(this.xMin=r[0].x,this.xMax=r[r.length-1].x);const o=this.host.getEvents(),s=t.rangeSelector;if(i&&(this.rangeSelector=new Hf(s,this.host.getContainer(),o),this.placeRangeSelectorOnTop(),o.on("rangeSelector:selected",c=>this.applyButton(c)),o.on("rangeSelector:dateRange",c=>this.applyXRange(c.from,c.to))),e&&(this.navigator=new Wf(t.navigator,this.host.getSvg(),this.host.getLayout().plotArea,this.host.getChartHeight(),o,r),o.on("navigator:brushed",c=>{const h=this.xMax-this.xMin;this.applyXRange(this.xMin+c.x0*h,this.xMin+c.x1*h)})),i){const c=s.selected;if(c!=null){const h=(s.buttons||I2)[c];h&&this.applyButton(h)}}o.on("chart:afterZoom",()=>{const c=this.host.getXAxes()[0];if(c){const[h,f]=c.scale.domain();this.syncNavigator(+h,+f)}})}getBaseSeriesData(){const t=this.host.getSeriesInstances();return t.length===0?[]:t[0].data.map(i=>({x:i.x??0,y:i.close??i.y??0})).filter(i=>i.y!==null&&i.y!==void 0&&Number.isFinite(i.x))}placeRangeSelectorOnTop(){const t=this.host.getContainer(),e=t.querySelector(".katucharts-range-selector");e&&t.firstChild&&e!==t.firstChild&&t.insertBefore(e,t.firstChild)}applyButton(t){const e=t.type,i=t.count??1;if(e==="all"){this.applyXRange(this.xMin,this.xMax);return}if(e==="ytd"){const o=new Date(this.xMax),s=Date.UTC(o.getUTCFullYear(),0,1);this.applyXRange(Math.max(this.xMin,s),this.xMax);return}const r=F2[e];r&&this.applyXRange(Math.max(this.xMin,this.xMax-i*r),this.xMax)}applyXRange(t,e){if(!(!Number.isFinite(t)||!Number.isFinite(e)||e<=t)){for(const i of this.host.getXAxes())i.updateDomain({min:t,max:e});this.host.rerender(),this.syncNavigator(t,e)}}syncNavigator(t,e){if(!this.navigator)return;const i=this.xMax-this.xMin;i<=0||this.navigator.setSelection((t-this.xMin)/i,(e-this.xMin)/i)}destroy(){var t,e;(t=this.navigator)==null||t.destroy(),(e=this.rangeSelector)==null||e.destroy()}}class Vf{constructor(t,e){var h,f;this.xAxes=[],this.yAxes=[],this.seriesInstances=[],this.tooltip=null,this.legend=null,this.crosshair=null,this.credits=null,this.exportButton=null,this.responsiveEngine=null,this.stock=null,this.clipPathId="",this.resizeObserver=null,this.isResponsiveUpdate=!1,this.scrollableInner=null,this.scrollableOuterWidth=0,this.scrollableOuterHeight=0,this.useVerticalScroll=!1,this.useHorizontalScroll=!1,this.fixedAxisOverlay=null,this.container=Sv(t),this.container.style.position="relative";const i=new qn;this.options=i.parse(e),this.originalUserOptions=co(e),uv(((h=this.options.time)==null?void 0:h.useUTC)!==!1),this.events=new Hh,this.state=new gy(this.options,this.events),this.layoutEngine=new xy;const r=ef(this.container,this.getDefaultHeightAspectRatio()),o=this.options.chart.width||r.width||600,s=this.resolveHeight(this.options.chart.height,r.height),a=this.options.chart.scrollablePlotArea,l=(a==null?void 0:a.minHeight)&&a.minHeight>s,c=(a==null?void 0:a.minWidth)&&a.minWidth>o;this.chartWidth=c?a.minWidth:o,this.chartHeight=l?a.minHeight:s,this.scrollableOuterWidth=o,this.scrollableOuterHeight=s,this.useVerticalScroll=!!l,this.useHorizontalScroll=!!c,(l||c)&&(this.container.style.position="relative",this.container.querySelectorAll(":scope > [data-katu-scrollable-inner]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.container.querySelectorAll(":scope > svg[data-katu-fixed-overlay]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.scrollableInner=document.createElement("div"),this.scrollableInner.setAttribute("data-katu-scrollable-inner","1"),this.scrollableInner.style.overflowX=c?"auto":"hidden",this.scrollableInner.style.overflowY=l?"auto":"hidden",this.scrollableInner.style.width=o+"px",this.scrollableInner.style.height=s+"px",this.container.appendChild(this.scrollableInner)),this.setupResponsive(),this.applyInitialResponsiveRules(),this.renderer=new vo(this.scrollableInner||this.container,this.chartWidth,this.chartHeight),this.scrollableInner&&this.renderer.svg.style("max-width","none"),this.exporter=new Dv({getRenderer:()=>this.renderer,getOptions:()=>this.options,getContainer:()=>this.container,getSeriesInstances:()=>this.seriesInstances,setSize:(u,d)=>this.setSize(u,d),fireEvent:(u,...d)=>this.fireEvent(u,...d),getDefaultHeightAspectRatio:()=>this.getDefaultHeightAspectRatio(),disconnectResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.disconnect()},observeResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.observe(this.container)},getViewportSize:()=>this.getViewportSize(),fitToViewport:(u,d)=>this.fitToViewport(u,d)}),this.axes=new zv({getOptions:()=>this.options,getLayout:()=>this.layout,getSeriesInstances:()=>this.seriesInstances,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getAxisGroup:()=>this.axisGroup,getEvents:()=>this.events,getTooltip:()=>this.tooltip}),this.interactions=new jv({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getRenderer:()=>this.renderer,getSeriesGroup:()=>this.seriesGroup,getPlotGroup:()=>this.plotGroup,getLayout:()=>this.layout,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getSeriesInstances:()=>this.seriesInstances,setSeries:u=>{this.options.series=u},rebuild:()=>{var u;this.seriesInstances.forEach(d=>d.destroy()),this.seriesInstances=[],this.buildAxes(),this.buildSeries(),this.renderAll(),(u=this.credits)==null||u.refresh()},renderAfterZoom:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()},fireEvent:(u,...d)=>this.fireEvent(u,...d)}),this.applyChartStyles(),this.computeLayout(),this.createStructuralGroups(),this.buildAxes(),this.buildSeries(),this.renderAll(),(f=this.credits)==null||f.refresh(),(l||c)&&this.createFixedAxisOverlay(),this.options.chart.reflow&&this.setupReflow(),this.interactions.setup(),this.stock=new R2({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getSvg:()=>this.renderer.svg,getLayout:()=>this.layout,getChartHeight:()=>this.chartHeight,getXAxes:()=>this.xAxes,getSeriesInstances:()=>this.seriesInstances,rerender:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()}}),this.stock.setup(),this.fireEvent("load")}createFixedAxisOverlay(){const t=Rv({container:this.container,renderer:this.renderer,options:this.options,plotGroup:this.plotGroup,layout:this.layout,chartWidth:this.chartWidth,chartHeight:this.chartHeight,scrollableInner:this.scrollableInner,scrollableOuterWidth:this.scrollableOuterWidth,scrollableOuterHeight:this.scrollableOuterHeight,useVerticalScroll:this.useVerticalScroll,useHorizontalScroll:this.useHorizontalScroll,exportButton:this.exportButton,previousOverlay:this.fixedAxisOverlay});t&&(this.fixedAxisOverlay=t)}getDefaultHeightAspectRatio(){var i;const t=((i=this.options)==null?void 0:i.series)||[],e=new Set(t.map(r=>{var o,s;return(r==null?void 0:r.type)||((s=(o=this.options)==null?void 0:o.chart)==null?void 0:s.type)}));return e.has("dependencywheel")||e.has("networkgraph")?1:e.has("treemap")||e.has("sankey")?.3:e.has("pie")||e.has("donut")||e.has("radar")?.6:.5}resolveHeight(t,e){if(typeof t=="number")return t;if(typeof t=="string"){if(t.endsWith("%"))return parseFloat(t)/100*e;const i=parseFloat(t);if(!isNaN(i)&&i>0)return i}return e||400}applyChartStyles(){const t=this.options.chart.backgroundColor;t&&this.renderer.svg.append("rect").attr("class","katucharts-background").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill",t).attr("rx",this.options.chart.borderRadius??0),this.options.chart.borderWidth&&this.renderer.svg.append("rect").attr("class","katucharts-border").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill","none").attr("stroke",this.options.chart.borderColor||"#335cad").attr("stroke-width",this.options.chart.borderWidth).attr("rx",this.options.chart.borderRadius??0)}computeLayout(){this.layout=this.layoutEngine.compute(this.options,this.chartWidth,this.chartHeight)}createStructuralGroups(){var a,l,c,h;this.titleGroup=this.renderer.createGroup("katucharts-title-group"),this.renderTitles(),this.plotGroup=this.renderer.createGroup("katucharts-plot-group"),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`);const t=this.options.chart.plotBackgroundColor;t&&this.plotGroup.append("rect").attr("class","katucharts-plot-background").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill",t);const e=this.options.chart.plotBorderWidth;e&&this.plotGroup.append("rect").attr("class","katucharts-plot-border").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill","none").attr("stroke",this.options.chart.plotBorderColor||"#cccccc").attr("stroke-width",e),this.options.chart.plotShadow&&((a=this.plotGroup.node())==null||a.setAttribute("filter","drop-shadow(3px 3px 6px rgba(0,0,0,0.15))")),this.clipPathId=this.renderer.createClipPath(0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.axisGroup=this.renderer.createGroup("katucharts-axis-group",this.plotGroup),this.seriesGroup=this.renderer.createGroup("katucharts-series-group",this.plotGroup),this.stackLabelsGroup=this.renderer.createGroup("katucharts-stack-labels-group",this.plotGroup);const i=this.options.series.some(f=>f.clip===!1||pg.has(f._internalType)),r=this.options.series.some(f=>gg.has(f._internalType));!Dl(this.options.series)&&!i&&(r&&(this.clipPathId=this.renderer.createClipPath(-12,-12,this.layout.plotArea.width+2*12,this.layout.plotArea.height+2*12)),this.seriesGroup.attr("clip-path",`url(#${this.clipPathId})`)),this.tooltip=new Qo(this.options.tooltip,this.container,this.layout.plotArea,this.events),(l=this.options.tooltip)!=null&&l.shared&&this.tooltip.setSharedPointsProvider(f=>this.collectSharedPointsAt(f)),this.legend=new ts({...this.options.legend,_backgroundColor:this.options.chart.backgroundColor},this.renderer.svg,this.events),this.credits=new Tv(this.options.credits,this.renderer.svg,this.chartWidth,this.chartHeight),this.options.exporting.enabled!==!1&&(this.exportButton=new af(this.options.exporting,this.renderer.svg,this.container,this.chartWidth,this.chartHeight,f=>this.handleExportAction(f)));const o=(c=this.options.xAxis[0])==null?void 0:c.crosshair,s=(h=this.options.yAxis[0])==null?void 0:h.crosshair;(o||s)&&(this.crosshair=new rf(o,s,this.plotGroup,this.layout.plotArea,this.events))}renderTitles(){Fv({titleGroup:this.titleGroup,container:this.container,options:this.options,layout:this.layout,chartWidth:this.chartWidth})}buildAxes(){this.xAxes=this.options.xAxis.map(t=>Ka(t,this.layout.plotArea)),this.yAxes=this.options.yAxis.map(t=>Ka(t,this.layout.plotArea))}buildSeries(){const t=this.options;this.seriesInstances=t.series.map((e,i)=>{const r=e._internalType,o=Tt.getType(r);if(!o){console.warn(`KatuCharts: unknown series type "${r}", falling back to line`);const s=Tt.getType("line");if(!s)throw new Error("KatuCharts: line series type not registered");return new s(e)}return new o(e)})}collectSharedPointsAt(t){var r;const e=[],i=typeof t=="number"?t:NaN;for(let o=0;o<this.seriesInstances.length;o++){const s=this.seriesInstances[o],a=this.options.series[o];if(!s.visible||a.enableMouseTracking===!1)continue;const l=s.data;if(!l||l.length===0)continue;let c=null,h=1/0;for(const p of l){if(p.x===void 0||p.x===null)continue;const y=Math.abs(p.x-i);y<h&&(h=y,c=p)}if(!c)continue;const f=c.close??c.y??c.high;if(f==null)continue;const u=this.xAxes[a._xAxisIndex]||this.xAxes[0],d=this.yAxes[a._yAxisIndex]||this.yAxes[0];e.push({point:c,plotX:u.getPixelForValue(c.x),plotY:d.getPixelForValue(f),series:{name:a.name??"",color:((r=s.getColor)==null?void 0:r.call(s))??a.color??"#333",config:a}})}return e}renderAll(){this.updateAxesDomains(),this.updateTooltipCategories(),this.renderAxes(),this.renderSeriesInstances(),this.renderStackLabels(),this.raiseplotLineLabels(),this.renderLegend(),this.fireEvent("render")}formatStackLabel(t,e){return e.formatter?e.formatter.call({total:t}):e.format?fe(Zt(e.format,{total:t})):this.options.chart.numberFormatter?this.options.chart.numberFormatter(t):jo(t,0,".",",")}renderStackLabels(){if(this.stackLabelsGroup){this.stackLabelsGroup.selectAll("*").remove();for(let t=0;t<this.yAxes.length;t++){const i=this.yAxes[t].config.stackLabels;if(!(i!=null&&i.enabled))continue;const r=this.seriesInstances.map((a,l)=>({series:a,cfg:this.options.series[l]})).filter(({series:a,cfg:l})=>a.visible&&l._yAxisIndex===t&&(l._internalType==="column"||l._internalType==="bar")&&l.stacking&&l.stacking!=="percent");if(r.length===0)continue;const o=new Map;for(const{series:a,cfg:l}of r){const c=es(l);o.has(c)||o.set(c,{totals:new Map,series:[],type:l._internalType,xAxis:this.xAxes[l._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[l._yAxisIndex]||this.yAxes[0]});const h=o.get(c);h.series.push(a),Wi(a.data,h.totals)}const s=this.stackLabelsGroup.append("g").attr("class",`katucharts-stack-labels katucharts-stack-labels-axis-${t}`);for(const[a,l]of o){const c=s.append("g").attr("class","katucharts-stack-labels-stack").attr("data-stack-key",a);for(const[h,f]of l.totals.entries()){if(!isFinite(f)||f===0)continue;const u=this.formatStackLabel(f,i),d=l.type==="bar",p=f<0,y=l.xAxis.getPixelForValue(h),g=l.yAxis.getPixelForValue(f),m=d?p?"end":"start":"middle",x=d?"central":p?"hanging":"auto",v=d?g+(p?-6:6):y,b=d?y:g+(p?6:-6),k=v+(i.x??0),M=b+(i.y??0),C=c.append("text").attr("class","katucharts-stack-label").attr("x",k).attr("y",M).attr("text-anchor",i.align==="left"?"start":i.align==="right"?"end":m).text(u);i.verticalAlign==="middle"||d?C.attr("dominant-baseline",x):i.verticalAlign==="bottom"&&C.attr("dominant-baseline","hanging");const L=i.style||{};C.style("fill",L.color??"#000000").style("font-size",L.fontSize??"11px").style("font-weight",L.fontWeight??"bold"),L.textOutline&&C.style("text-shadow",L.textOutline),i.rotation&&C.attr("transform",`rotate(${i.rotation},${k},${M})`)}}}}}raiseplotLineLabels(){const t=this.plotGroup.node();t&&this.axisGroup.selectAll(".katucharts-plot-line-label").each(function(){t.appendChild(this)})}updateTooltipCategories(){this.axes.updateTooltipCategories()}updateAxesDomains(){this.axes.updateAxesDomains()}renderAxes(){this.axes.renderAxes()}renderSeriesInstances(){var h;this.seriesGroup.selectAll("*").remove();const t=new Map,e=new Map;for(const f of this.options.series){const u=f._internalType;t.set(u,(t.get(u)||0)+1),e.set(u,0)}const i=this.options.chart.animation!==!1,r=es,o=new Map,s=new Map,a=new Map,l=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(u.stacking){const d=r(u);o.set(d,(o.get(d)||0)+1),a.has(d)||a.set(d,new Map);const p=a.get(d),y=this.seriesInstances[f];y.processData(),Wi(y.data,p)}}const c=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(!u.stacking)continue;const d=r(u);c.has(d)||c.set(d,new Map);const p=c.get(d);l.set(f,new Map(p)),Wi(this.seriesInstances[f].data,p)}for(let f=0;f<this.seriesInstances.length;f++){const u=this.seriesInstances[f],d=this.options.series[f],p=this.xAxes[d._xAxisIndex]||this.xAxes[0],y=this.yAxes[d._yAxisIndex]||this.yAxes[0],g=d._internalType,m=e.get(g)||0;e.set(g,m+1);let x;d.stacking&&(x=l.get(f)||new Map);const v={plotArea:this.layout.plotArea,xAxis:p,yAxis:y,colorIndex:f,colors:this.options.colors,events:this.events,chartGroup:this.seriesGroup,plotGroup:this.plotGroup,totalSeriesOfType:d.stacking?o.get(r(d))||1:t.get(g)||1,indexInType:d.stacking?s.get(r(d))||0:m,animate:i&&d.animation!==!1,stackOffsets:x,stackTotals:d.stacking?a.get(r(d)):void 0,allSeries:this.seriesInstances,inverted:!!this.options.chart.inverted,legendConfig:this.options.legend,pane:this.options.pane,backgroundColor:this.options.chart.backgroundColor};if(u.processData(),u.init(v),u.render(),d.stacking){const b=r(d);s.set(b,(s.get(b)||0)+1)}u.setOnVisibilityChange(b=>this.animatedRedraw(b)),(h=d.dataLabels)!=null&&h.enabled&&!fg.has(d._internalType)&&!dg.has(d._internalType)&&Jo.render(u.group,u.data,d.dataLabels,p,y,d.name||"")}}renderLegend(){this.legend&&this.legend.render(this.seriesInstances,this.layout.legendArea)}setupReflow(){if(typeof ResizeObserver>"u")return;const t=_v(()=>this.reflow(),100);this.resizeObserver=new ResizeObserver(t),this.resizeObserver.observe(this.container)}fireEvent(t,...e){var r;this.events.emit(`chart:${t}`,this,...e);const i=(r=this.options.chart.events)==null?void 0:r[t];typeof i=="function"&&i.call(this,...e)}get plotLeft(){return this.layout.plotArea.x}get plotTop(){return this.layout.plotArea.y}get plotWidth(){return this.layout.plotArea.width}get plotHeight(){return this.layout.plotArea.height}get plotRenderer(){const t=this.seriesGroup,e=this.xAxes,i=this.yAxes,r=this.layout.plotArea;return{rect(o,s,a,l){return t.insert("rect",":first-child").attr("x",o).attr("y",s).attr("width",a).attr("height",l)},circle(o,s,a){return t.insert("circle",":first-child").attr("cx",o).attr("cy",s).attr("r",a)},ellipse(o,s,a,l){return t.insert("ellipse",":first-child").attr("cx",o).attr("cy",s).attr("rx",a).attr("ry",l)},path(o){return t.insert("path",":first-child").attr("d",o)},line(o,s,a,l){return t.insert("line",":first-child").attr("x1",o).attr("y1",s).attr("x2",a).attr("y2",l)},text(o,s,a){return t.append("text").attr("x",s).attr("y",a).text(o)},group(o){const s=t.insert("g",":first-child");return o&&s.attr("class",o),s.style("pointer-events","none"),s},get plotArea(){return{x:0,y:0,width:r.width,height:r.height}},get localPlotArea(){return{x:0,y:0,width:r.width,height:r.height}},xAxis:{toPixels(o,s=0){var a;return((a=e[s])==null?void 0:a.getPixelForValue(o))??0}},yAxis:{toPixels(o,s=0){var a;return((a=i[s])==null?void 0:a.getPixelForValue(o))??0}}}}setupResponsive(){var t,e;(e=(t=this.options.responsive)==null?void 0:t.rules)!=null&&e.length&&(this.responsiveEngine=new cf(this.options.responsive))}applyInitialResponsiveRules(){if(!this.responsiveEngine)return;const t=this.responsiveEngine.evaluate(this.chartWidth,this.chartHeight);if(t.changed&&t.matchingIndices.length>0){const e=this.responsiveEngine.getRules();let i=co(this.originalUserOptions);for(const o of t.matchingIndices)i=le(i,e[o].chartOptions);const r=new qn;this.options=r.parse(i),this.state.updateConfig(this.options)}}addSeries(t,e=!0){this.originalUserOptions.series||(this.originalUserOptions.series=[]),this.originalUserOptions.series.push(t);const o={...new qn().parse({series:[t]}).series[0],index:this.options.series.length};this.state.addSeries(o),this.options=this.state.getConfig();const s=Tt.getType(o._internalType)||Tt.getType("line");if(!s)throw new Error("KatuCharts: no series type registered");const a=new s(o);return this.seriesInstances.push(a),e&&this.redraw(),a}get(t){const e=this.seriesInstances.find(r=>r.config.id===t);if(e)return e;const i=this.xAxes.find(r=>r.config.id===t);return i||this.yAxes.find(r=>r.config.id===t)}canReuseSeriesInstances(t){return this.seriesInstances.length!==t.series.length?!1:this.seriesInstances.every((e,i)=>{var r;return e.config._internalType===((r=t.series[i])==null?void 0:r._internalType)})}syncSeriesInstances(t){for(let e=0;e<this.seriesInstances.length;e++){const i=this.seriesInstances[e],r={...t.series[e],visible:i.visible};this.options.series[e]=r,i.config=r,i.visible=r.visible!==!1,i.processData()}}update(t,e=!0){var a;this.isResponsiveUpdate||(this.originalUserOptions=le(co(this.originalUserOptions),t));const i=new qn,r=le(this.optionsToExternal(),t);(a=t.chart)!=null&&a.type&&Array.isArray(r.series)&&r.series.forEach((l,c)=>{var f,u;const h=Array.isArray(t.series)?(f=t.series[c])==null?void 0:f.type:void 0;(u=this.options.series[c])!=null&&u._typeFromChart&&!h&&delete l.type});const o=i.parse(r),s=this.canReuseSeriesInstances(o);if(this.state.updateConfig(o),this.options=this.state.getConfig(),e)if(!s)this.redraw();else{this.buildAxes(),this.syncSeriesInstances(o);try{this.animatedRedraw(300)}catch{this.redraw()}}}animatedRedraw(t=500){this.updateAxesDomains(),this.updateTooltipCategories();for(const c of this.xAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);for(const c of this.yAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);const e=new Map,i=new Map,r=new Map,o=new Map,s=new Map,a=es,l=new Map;for(const c of this.seriesInstances){if(!c.visible)continue;const h=c.config._internalType;if(e.set(h,(e.get(h)||0)+1),c.config.stacking){const f=a(c.config);r.set(f,(r.get(f)||0)+1),s.has(f)||s.set(f,new Map),l.has(f)||l.set(f,new Map),Wi(c.data,l.get(f))}}for(let c=0;c<this.seriesInstances.length;c++){const h=this.seriesInstances[c];if(!h.visible)continue;const f=this.options.series[c],u=f._internalType,d=i.get(u)||0;i.set(u,d+1);let p,y,g,m;if(f.stacking){const x=a(f);p=r.get(x)||1,y=o.get(x)||0,o.set(x,y+1),g=new Map(s.get(x)),m=l.get(x)}else p=e.get(u)||1,y=d;h.updateContext({xAxis:this.xAxes[f._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[f._yAxisIndex]||this.yAxes[0],totalSeriesOfType:p,indexInType:y,stackOffsets:g,stackTotals:m}),h.animateUpdate(t),f.stacking&&Wi(h.data,s.get(a(f)))}this.renderStackLabels(),this.renderTitles(),this.renderLegend(),this.fireEvent("render")}redraw(){this.computeLayout(),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`),this.renderer.updateClipPath(this.clipPathId,0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.buildAxes(),this.seriesInstances.forEach(t=>t.destroy()),this.seriesInstances=[],this.buildSeries(),this.renderAll(),this.tooltip&&this.tooltip.updatePlotArea(this.layout.plotArea),this.renderTitles(),this.fireEvent("redraw")}reflow(){if(this.options.chart.width)return;const t=ef(this.container,this.getDefaultHeightAspectRatio());let e=t.width,i=this.resolveHeight(this.options.chart.height,t.height);const r=this.options.chart.scrollablePlotArea;if(r!=null&&r.minWidth&&r.minWidth>e&&(e=r.minWidth),r!=null&&r.minHeight&&r.minHeight>i&&(i=r.minHeight),!(e===this.chartWidth&&i===this.chartHeight)){if(this.responsiveEngine){const o=this.responsiveEngine.evaluate(e,i);if(o.changed){const s=this.responsiveEngine.getRules();let a=co(this.originalUserOptions);for(const l of o.matchingIndices)a=le(a,s[l].chartOptions);this.isResponsiveUpdate=!0,this.update(a,!1),this.isResponsiveUpdate=!1}}this.setSize(e,i)}}setSize(t,e){var i,r;this.chartWidth=t,this.chartHeight=e,this.renderer.setSize(t,e),this.renderer.svg.select(".katucharts-background").attr("width",t).attr("height",e),this.renderer.svg.select(".katucharts-border").attr("width",t).attr("height",e),(i=this.exportButton)==null||i.updatePosition(t,e),(r=this.credits)==null||r.updatePosition(t,e),this.redraw()}getViewportSize(){return this.scrollableInner?{width:this.scrollableOuterWidth,height:this.scrollableOuterHeight}:{width:this.chartWidth,height:this.chartHeight}}fitToViewport(t,e){if(!this.scrollableInner){this.setSize(t,e);return}const i=this.options.chart.scrollablePlotArea;this.scrollableOuterWidth=t,this.scrollableOuterHeight=e,this.scrollableInner.style.width=t+"px",this.scrollableInner.style.height=e+"px";const r=Math.max((i==null?void 0:i.minWidth)||0,t),o=Math.max((i==null?void 0:i.minHeight)||0,e);this.setSize(r,o),this.createFixedAxisOverlay()}setTitle(t,e){t&&(this.options.title=le(this.options.title,t),this.originalUserOptions.title=le(this.originalUserOptions.title||{},t)),e&&(this.options.subtitle=le(this.options.subtitle,e),this.originalUserOptions.subtitle=le(this.originalUserOptions.subtitle||{},e)),this.renderTitles()}addAxis(t,e=!0,i=!0){const r=e?this.options.xAxis:this.options.yAxis,o={...t,index:r.length,isX:e};r.push(o);const s=Ka(o,this.layout.plotArea);return(e?this.xAxes:this.yAxes).push(s),i&&this.redraw(),s}showLoading(t){let e=this.container.querySelector(".katucharts-loading");e||(e=document.createElement("div"),e.className="katucharts-loading",Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",backgroundColor:"rgba(255,255,255,0.75)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",fontWeight:"bold",color:"#666",zIndex:"20"}),this.container.appendChild(e)),e.textContent=t||"Loading...",e.style.display="flex"}hideLoading(){const t=this.container.querySelector(".katucharts-loading");t&&(t.style.display="none")}destroy(){var i,r,o,s,a,l,c;this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.seriesInstances.forEach(h=>h.destroy()),(i=this.tooltip)==null||i.destroy(),(r=this.legend)==null||r.destroy(),(o=this.crosshair)==null||o.destroy(),(s=this.credits)==null||s.destroy(),(a=this.exportButton)==null||a.destroy(),this.interactions.destroy(),(l=this.stock)==null||l.destroy(),(c=this.responsiveEngine)==null||c.reset(),this.events.removeAllListeners(),this.renderer.destroy();const t=this.container.querySelector(".katucharts-loading");t&&t.remove();const e=this.container.querySelector(".katucharts-tooltip");e&&e.remove(),this.container.querySelectorAll(".katucharts-title-html, .katucharts-subtitle-html").forEach(h=>h.remove())}getSVG(){return this.exporter.getSVG()}getSeriesInstances(){return this.seriesInstances}get series(){return this.seriesInstances}getXAxes(){return this.xAxes}getYAxes(){return this.yAxes}handleExportAction(t){this.exporter.handleExportAction(t)}getCSV(){return this.exporter.getCSV()}getTable(){return this.exporter.getTable()}getDataRows(){return this.exporter.getDataRows()}exportChart(t,e){this.exporter.exportChart(t)}print(){this.exporter.print()}optionsToExternal(){return this.exporter.optionsToExternal()}}const bt=600,Wt=8,Gf=0,Kn=bt+100,K=300,ls=250,pt=Ku,Z=Ku,D2=500;function _e(n,t,e,i){return i>D2?t:t+n*e}const z2={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",ShortDashDotDot:"6,2,2,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};function on(n){return!n||n==="Solid"?"none":z2[n]||"none"}function Yf(n,t){const e=n.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(e){const r=Math.min(255,parseInt(e[1],16)+Math.round(255*t)),o=Math.min(255,parseInt(e[2],16)+Math.round(255*t)),s=Math.min(255,parseInt(e[3],16)+Math.round(255*t));return`rgb(${r},${o},${s})`}const i=n.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(i){const r=Math.min(255,parseInt(i[1])+Math.round(255*t)),o=Math.min(255,parseInt(i[2])+Math.round(255*t)),s=Math.min(255,parseInt(i[3])+Math.round(255*t));return`rgb(${r},${o},${s})`}return n}class Ut{constructor(t){this.selectedPoints=new Set,this._cachedExtents=null,this.config=t,this.visible=t.visible!==!1,this.data=t._processedData||[]}init(t){this.context=t,this.group=t.chartGroup.append("g").attr("class",`katucharts-series katucharts-series-${this.config._internalType}`).attr("data-series-index",this.config.index),this.config.opacity!==void 0&&this.config.opacity!==1&&this.group.attr("opacity",this.config.opacity),this.config.zIndex!==void 0&&this.group.style("z-index",String(this.config.zIndex)),this.config.className&&this.group.classed(this.config.className,!0),this.config.shadow&&this.applyShadowFilter(),this.visible||this.group.style("display","none"),this.config.allowPointSelect&&this.data.forEach((e,i)=>{e.selected&&this.selectedPoints.add(i)}),this.group.on("mouseenter",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOver)==null||i.call(this,new Event("mouseOver")),this.context.events.emit("series:mouseenter",this)}).on("mouseleave",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOut)==null||i.call(this,new Event("mouseOut")),this.context.events.emit("series:mouseleave",this)})}setOnVisibilityChange(t){this._onVisibilityChange=t}processData(){this.data=this.config._processedData||[],this._cachedExtents=null}getColor(){return this.config.color||this.context.colors[this.context.colorIndex%this.context.colors.length]}autoLabelColor(t){return Cn(this.context.backgroundColor,t)}labelHalo(){const t=this.labelHaloColor();return`0 0 3px ${t}, 0 0 3px ${t}`}labelHaloColor(){return Cn(this.context.backgroundColor)==="#ffffff"?"rgba(0,0,0,0.85)":"#ffffff"}autoBorderColor(){const t=this.context.backgroundColor;return!t||t==="transparent"||t==="none"?"#ffffff":t}getMultiLegendItems(){return null}getLegendSymbolShape(){return null}getBubbleLegendInfo(){return null}animateUpdate(t){this.group.selectAll("*").remove(),this.render()}updateContext(t){Object.assign(this.context,t)}redraw(){this.group.selectAll("*").remove(),this.render()}setVisible(t,e=!0){var i,r,o,s;this.visible=t,t?(r=(i=this.config.events)==null?void 0:i.show)==null||r.call(this,new Event("show")):(s=(o=this.config.events)==null?void 0:o.hide)==null||s.call(this,new Event("hide")),e&&this._onVisibilityChange?(t?this.group.style("display","").attr("opacity",0).transition().duration(300).attr("opacity",this.config.opacity??1):this.group.transition().duration(300).attr("opacity",0).on("end",()=>{this.group.style("display","none")}),this._onVisibilityChange(500)):this.group.style("display",t?"":"none"),this.context.events.emit("series:visibilityChanged",this,t)}toggleVisible(){this.setVisible(!this.visible)}getDataExtents(){if(this._cachedExtents)return this._cachedExtents;let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data)o.x!==void 0&&o.x!==null&&(o.x<t&&(t=o.x),o.x>e&&(e=o.x)),o.y!==void 0&&o.y!==null&&(o.y<i&&(i=o.y),o.y>r&&(r=o.y));return this._cachedExtents={xMin:t,xMax:e,yMin:i,yMax:r},this._cachedExtents}getCategories(){return this.data.filter(t=>t.name!==void 0).map(t=>t.name)}destroy(){var t;(t=this.group)==null||t.remove()}setData(t,e=!0,i=!0){this.data=t,this.config._processedData=t,this._cachedExtents=null,e&&(i?this.animateUpdate(500):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoint(t,e=!0,i=!1,r=!0){if(this.data.push(t),this.config._processedData=this.data,i&&this.data.length>1)this.data.shift(),this.config._processedData=this.data,this._cachedExtents=null;else if(this._cachedExtents){const o=this._cachedExtents;t.x!==void 0&&t.x!==null&&(t.x<o.xMin&&(o.xMin=t.x),t.x>o.xMax&&(o.xMax=t.x)),t.y!==void 0&&t.y!==null&&(t.y<o.yMin&&(o.yMin=t.y),t.y>o.yMax&&(o.yMax=t.y))}e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoints(t,e=!0,i=!1,r=!0){for(const o of t)this.data.push(o);i&&this.data.length>t.length&&this.data.splice(0,t.length),this.config._processedData=this.data,this._cachedExtents=null,e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}removePoint(t,e=!0,i=!0){t>=0&&t<this.data.length&&(this.data.splice(t,1),this.config._processedData=this.data,this._cachedExtents=null,e&&(i?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this)))}updateSeries(t,e=!0){Object.assign(this.config,t),t.data&&(this.config._processedData=t.data,this.data=this.config._processedData,this._cachedExtents=null),e&&this.redraw()}applyBatch(t){for(const e of t.entries)switch(e.type){case"setData":this.data=e.payload,this.config._processedData=this.data;break;case"addPoint":this.data.push(e.payload.point),e.payload.shift&&this.data.length>1&&this.data.shift();break;case"addPoints":for(const i of e.payload.points)this.data.push(i);e.payload.shift&&this.data.splice(0,e.payload.points.length);break;case"removePoint":e.payload.index>=0&&e.payload.index<this.data.length&&this.data.splice(e.payload.index,1);break}this.config._processedData=this.data,this._cachedExtents=null,this.redraw(),this.context.events.emit("series:dataChanged",this)}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}getSelectedPoints(){return Array.from(this.selectedPoints).map(t=>({index:t,point:this.data[t]})).filter(t=>t.point!==void 0)}applyClipPath(){const{plotArea:t}=this.context;this.clipId=`katucharts-clip-${this.config.index}-${Date.now()}`;const e=this.group.select(function(){return this.ownerSVGElement});if(!e.empty()){let i=e.select("defs");i.empty()&&(i=e.append("defs")),i.append("clipPath").attr("id",this.clipId).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height),this.group.attr("clip-path",`url(#${this.clipId})`)}}applyShadowFilter(){const t=this.config.shadow;if(!t)return;const e=`katucharts-shadow-${this.config.index}-${Date.now()}`,i=this.group.select(function(){return this.ownerSVGElement});if(!i.empty()){let r=i.select("defs");r.empty()&&(r=i.append("defs"));const o=typeof t=="object"?t:{},s=o.offsetX??1,a=o.offsetY??1,l=o.width??3,c=o.opacity??.15;r.append("filter").attr("id",e).append("feDropShadow").attr("dx",s).attr("dy",a).attr("stdDeviation",l).attr("flood-opacity",c),this.group.style("filter",`url(#${e})`)}}applyInactiveState(){var r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=this.config.states)==null?void 0:r.inactive)==null?void 0:o.opacity)??.2,i=((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??ls;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(i).ease(Z).attr("opacity",e)}clearInactiveState(){var i,r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=(i=this.config.states)==null?void 0:i.normal)==null?void 0:r.animation)==null?void 0:o.duration)??((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??ls;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(e).ease(Z).attr("opacity",c.config.opacity??1)}emitAfterAnimate(t){var o;const e=!!((o=this.config.events)!=null&&o.afterAnimate),i=typeof this.config.animation=="object"?this.config.animation:null,r=!!(i!=null&&i.complete);(e||r)&&setTimeout(()=>{var s,a,l;(a=(s=this.config.events)==null?void 0:s.afterAnimate)==null||a.call(this,new Event("afterAnimate")),(l=i==null?void 0:i.complete)==null||l.call(i)},t)}renderDataLabels(t,e,i){const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;this.group.selectAll(".katucharts-data-labels").remove();const o=this.group.append("g").attr("class","katucharts-data-labels");this.getColor(),t.forEach((s,a)=>{var y,g;if(s.y===null||s.y===void 0)return;const l=s.dataLabels,c={...r,...l};let h;if(c.formatter?h=c.formatter.call({point:{...s,index:a},series:this,x:s.x??a,y:s.y,percentage:s._percentage}):c.format?h=fe(Zt(c.format,{point:s,series:{name:this.config.name??""},x:s.x,y:s.y,percentage:s._percentage??s.percentage})):h=String(s.y),c.filter){const m=s[c.filter.property??"y"]??0,x=c.filter.operator??">",v=c.filter.value??0;if(!(x===">"?m>v:x==="<"?m<v:x===">="?m>=v:x==="<="?m<=v:x==="=="?m===v:!0))return}const f=e(s,a)+(c.x??0),u=i(s,a)+(c.y??-10),d=o.append("text").attr("x",f).attr("y",u).attr("text-anchor",c.align==="left"?"start":c.align==="right"?"end":"middle").attr("dominant-baseline",c.verticalAlign==="top"?"text-before-edge":c.verticalAlign==="bottom"?"text-after-edge":"central").text(h),p=c.style||{};if(d.style("font-size",p.fontSize??wt).style("font-weight",p.fontWeight??"bold").style("fill",c.color||p.color||this.autoLabelColor()),p.textOutline&&d.style("text-shadow",p.textOutline),c.rotation&&d.attr("transform",`rotate(${c.rotation},${f},${u})`),c.backgroundColor||c.borderWidth){const m=(g=(y=d.node()).getBBox)==null?void 0:g.call(y);if(m){const x=c.padding??5,v=c.borderRadius??0;o.insert("rect",":last-child").attr("x",m.x-x).attr("y",m.y-x).attr("width",m.width+x*2).attr("height",m.height+x*2).attr("rx",v).attr("fill",c.backgroundColor||"none").attr("stroke",c.borderColor||"none").attr("stroke-width",c.borderWidth??0)}}this.context.animate&&c.defer!==!1&&d.attr("opacity",0).transition().delay(Kn+a*Wt).duration(400).ease(pt).attr("opacity",1)})}handlePointSelect(t,e,i,r){var s,a,l,c;if(!this.config.allowPointSelect)return;const o=this.selectedPoints.has(i);if(o){if(((a=(s=e.events)==null?void 0:s.unselect)==null?void 0:a.call(e,r))===!1)return;this.selectedPoints.delete(i),e.selected=!1,this.clearSelectStyle(t)}else{if(((c=(l=e.events)==null?void 0:l.select)==null?void 0:c.call(e,r))===!1)return;this.selectedPoints.add(i),e.selected=!0,this.applySelectStyle(t)}this.context.events.emit("point:select",{point:e,index:i,series:this,selected:!o})}applySelectStyle(t){var i;const e=(i=this.config.states)==null?void 0:i.select;e!=null&&e.color&&t.attr("fill",e.color),e!=null&&e.borderColor&&t.attr("stroke",e.borderColor),(e==null?void 0:e.borderWidth)!==void 0&&t.attr("stroke-width",e.borderWidth)}clearSelectStyle(t){t.attr("fill",null).attr("stroke",null).attr("stroke-width",null)}attachPointEvents(t,e,i){var s;if(this.config.enableMouseTracking===!1)return;const r=e.events||{},o=((s=this.config.point)==null?void 0:s.events)||{};t.on("mouseover",a=>{var l,c;this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:a,plotX:this.context.xAxis.getPixelForValue(e.x??i),plotY:this.context.yAxis.getPixelForValue(e.y??0)}),(l=r.mouseOver)==null||l.call(e,a),(c=o.mouseOver)==null||c.call(e,a)}).on("mouseout",a=>{var l,c;this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:a}),(l=r.mouseOut)==null||l.call(e,a),(c=o.mouseOut)==null||c.call(e,a)}).on("click",a=>{var l,c,h,f;this.context.events.emit("point:click",{point:e,index:i,series:this,event:a}),(l=r.click)==null||l.call(e,a),(c=o.click)==null||c.call(e,a),(f=(h=this.config.events)==null?void 0:h.click)==null||f.call(this,a),this.handlePointSelect(t,e,i,a)}),t.style("cursor",this.config.cursor||"pointer")}applyJitter(t,e,i){return i?t+(Math.random()-.5)*i*e:t}}function Sc(n,t){const e=n.length;if(t>=e||t<3)return n;const i=new Array(t);i[0]=n[0],i[t-1]=n[e-1];const r=(e-2)/(t-2);let o=0;for(let s=1;s<t-1;s++){const a=Math.floor((s-1)*r)+1,l=Math.min(Math.floor(s*r)+1,e-1),c=Math.floor(s*r)+1,h=Math.min(Math.floor((s+1)*r)+1,e-1);let f=0,u=0;const d=h-c;for(let x=c;x<h;x++)f+=n[x].x??x,u+=n[x].y??0;d>0&&(f/=d,u/=d);const p=n[o].x??o,y=n[o].y??0;let g=-1,m=a;for(let x=a;x<l;x++){const v=n[x].x??x,b=n[x].y??0,k=Math.abs((p-f)*(b-y)-(p-v)*(u-y));k>g&&(g=k,m=x)}i[s]=n[m],o=m}return i}function B2(n,t){const e=n.length;if(t>=e||t<2)return n;const i=Math.ceil(t/2),r=e/i,o=[];o.push(n[0]);for(let s=0;s<i;s++){const a=Math.floor(s*r),l=Math.min(Math.floor((s+1)*r),e);let c=a,h=a,f=n[a].y??0,u=f;for(let d=a+1;d<l;d++){const p=n[d].y??0;p<f&&(f=p,c=d),p>u&&(u=p,h=d)}c<h?(o.push(n[c]),c!==h&&o.push(n[h])):(o.push(n[h]),c!==h&&o.push(n[c]))}return o[o.length-1]!==n[e-1]&&o.push(n[e-1]),o}const Xf=new WeakMap;function O2(n,t){let e=Xf.get(n);return e||(e=[],Xf.set(n,e),rt(n).on("mousemove.hover-shared",i=>{const r=n.querySelector(".katucharts-plot-group");if(!r)return;const o=r.getScreenCTM();if(!o)return;const s=n.createSVGPoint();s.x=i.clientX,s.y=i.clientY;const a=s.matrixTransform(o.inverse()),l=a.x,c=a.y;if(l<0||l>t.width||c<0||c>t.height){for(const d of e)d.currentIdx>=0&&d.hideHover(i);return}let h=null,f=-1,u=1/0;for(const d of e){const p=d.findCandidate(l,c);p&&p.dist<u&&(u=p.dist,f=p.idx,h=d)}for(const d of e)d!==h&&d.currentIdx>=0&&d.hideHover(i);h&&f!==h.currentIdx&&h.showHover(f,i)}),rt(n).on("mouseleave.hover-shared",i=>{for(const r of e)r.currentIdx>=0&&r.hideHover(i)}),rt(n).on("click.hover-shared",i=>{for(const r of e)if(r.currentIdx>=0){r.handleClick(i);break}})),e}class N2{constructor(t){var a;this.config=t,this.currentIdx=-1;const{group:e,data:i,xAxis:r,plotArea:o}=t;this.validData=i.filter(l=>l.y!==null&&l.y!==void 0),this.xPositions=new Float64Array(this.validData.length);for(let l=0;l<this.validData.length;l++)this.xPositions[l]=r.getPixelForValue(this.validData[l].x??l);this.hoverGroup=e.append("g").attr("class","katucharts-hover-targets"),this.halo=this.hoverGroup.append("circle").attr("r",0).attr("opacity",0).attr("class","katucharts-halo"),this.hoverMarker=this.hoverGroup.append("circle").attr("r",t.markerRadius).attr("opacity",0).attr("class","katucharts-hover-marker").attr("stroke","#fff").attr("stroke-width",1);const s=(a=e.node())==null?void 0:a.ownerSVGElement;s&&O2(s,o).push(this)}findCandidate(t,e){const{yAxis:i}=this.config,r=this.xPositions;if(r.length===0)return null;let o=0,s=r.length-1;for(;o<s;){const h=o+s>>1;r[h]<t?o=h+1:s=h}let a=-1,l=1/0;const c=2;for(let h=Math.max(0,o-c);h<=Math.min(r.length-1,o+c);h++){const f=r[h],u=i.getPixelForValue(this.validData[h].y??0),d=Math.sqrt((f-t)**2+(u-e)**2);d<l&&(l=d,a=h)}return a<0||Math.abs(r[a]-t)>50?null:{idx:a,dist:l}}handleClick(t){var o,s,a,l,c,h,f;if(this.currentIdx<0)return;const{series:e,events:i}=this.config,r=this.validData[this.currentIdx];i.emit("point:click",{point:r,index:this.currentIdx,series:e,event:t}),(s=(o=r.events)==null?void 0:o.click)==null||s.call(r,t),(c=(l=(a=e.config.point)==null?void 0:a.events)==null?void 0:l.click)==null||c.call(r,t),(f=(h=e.config.events)==null?void 0:h.click)==null||f.call(e,t)}showHover(t,e){var x,v,b,k,M;if(t<0||t>=this.validData.length)return;const{series:i,events:r,yAxis:o,haloSize:s,haloOpacity:a,hoverRadius:l,hoverLineWidth:c,pathSelection:h,lineWidthPlus:f,baseLineWidth:u,getColor:d}=this.config,p=this.validData[t],y=this.xPositions[t],g=o.getPixelForValue(p.y??0),m=d(p);this.currentIdx>=0&&this.currentIdx!==t&&r.emit("point:mouseout",{point:this.validData[this.currentIdx],index:this.currentIdx,series:i,event:e}),this.currentIdx=t,this.halo.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(K).ease(Z).attr("r",s).attr("opacity",a),this.hoverMarker.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(K).ease(Z).attr("r",l).attr("opacity",1).attr("stroke-width",c),f&&h&&h.transition("hover").duration(K).ease(Z).attr("stroke-width",u+f),r.emit("point:mouseover",{point:p,index:t,series:i,event:e,plotX:y,plotY:g}),(v=(x=p.events)==null?void 0:x.mouseOver)==null||v.call(p,e),(M=(k=(b=i.config.point)==null?void 0:b.events)==null?void 0:k.mouseOver)==null||M.call(p,e)}hideHover(t){var s,a,l,c,h;const{series:e,events:i,pathSelection:r,baseLineWidth:o}=this.config;if(this.currentIdx>=0){const f=this.validData[this.currentIdx];i.emit("point:mouseout",{point:f,index:this.currentIdx,series:e,event:t}),(a=(s=f.events)==null?void 0:s.mouseOut)==null||a.call(f,t),(h=(c=(l=e.config.point)==null?void 0:l.events)==null?void 0:c.mouseOut)==null||h.call(f,t)}this.halo.transition().duration(K).ease(Z).attr("r",0).attr("opacity",0),this.hoverMarker.transition().duration(K).ease(Z).attr("r",this.config.markerRadius).attr("opacity",0),r&&r.transition("hover").duration(K).ease(Z).attr("stroke-width",o),this.currentIdx=-1}findNearest(t){const e=this.xPositions;if(e.length===0)return-1;let i=0,r=e.length-1;for(;i<r;){const o=i+r>>1;e[o]<t?i=o+1:r=o}return i>0&&Math.abs(e[i-1]-t)<Math.abs(e[i]-t)&&(i=i-1),Math.abs(e[i]-t)>30?-1:i}}const W2={circle:Zn,square:vc,diamond:bc,triangle:kc,"triangle-down":Mc,cross:xc};class Uf extends Ut{constructor(t){super(t),this.pathSelection=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeColor&&this.config.threshold!==null?this.renderNegativeColor(e,t):this.renderMainLine(e,t,i),this.renderMarkers(e,t,!!i),this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(bt+Kn)}renderMainLine(t,e,i){const r=this.buildLineGenerator();this.pathSelection=this.group.append("path").datum(t).attr("d",r).attr("fill","none").attr("stroke",e).attr("stroke-width",this.config.lineWidth??2).attr("stroke-dasharray",on(this.config.dashStyle)).attr("stroke-linecap",this.config.linecap||"round").attr("class","katucharts-line"),i&&this.animateLineEntry(this.pathSelection)}renderNegativeColor(t,e){const i=this.config.threshold??0,r=this.config.negativeColor,o=this.config.lineWidth??2,s=this.config.linecap||"round",a=on(this.config.dashStyle),l=[];let c=[],h=null;for(const f of t){if(f.y===null||f.y===void 0){c.length>0&&(l.push({points:c,negative:h}),c=[],h=null);continue}const u=f.y<i;h!==null&&u!==h&&c.length>0&&(l.push({points:[...c],negative:h}),c=[c[c.length-1]]),h=u,c.push(f)}c.length>0&&l.push({points:c,negative:h});for(const f of l){const u=this.buildLineGenerator();this.group.append("path").datum(f.points).attr("d",u).attr("fill","none").attr("stroke",f.negative?r:e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",a).attr("class","katucharts-line katucharts-negative-segment")}}renderZones(t,e){var u,d;const i=this.config.zones,r=this.config.zoneAxis||"y",o=this.config.lineWidth??2,s=this.config.linecap||"round";(u=this.pathSelection)==null||u.remove(),this.pathSelection=null;const a=[...i].sort((p,y)=>(p.value??1/0)-(y.value??1/0)),l=p=>r==="x"?p.x??0:p.y??0,c=t.filter(p=>p.y!==null&&p.y!==void 0),h=a.map(()=>[]),f=[];for(const p of c){const y=l(p);let g=!1;for(let m=0;m<a.length;m++)if(y<(a[m].value??1/0)){h[m].push(p),g=!0;break}g||f.push(p)}for(let p=0;p<a.length;p++)h[p].length!==0&&(p>0&&h[p-1].length>0&&h[p].unshift(h[p-1][h[p-1].length-1]),p<a.length-1&&((d=h[p+1])==null?void 0:d.length)>0?h[p].push(h[p+1][0]):f.length>0&&h[p].push(f[0]));for(let p=0;p<a.length;p++){const y=h[p];if(y.length<2)continue;const g=a[p],m=this.buildLineGenerator();this.group.append("path").datum(y).attr("d",m).attr("fill","none").attr("stroke",g.color||e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(g.dashStyle||this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}if(f.length>0){const p=h[h.length-1];if((p==null?void 0:p.length)>0&&f.unshift(p[p.length-1]),f.length>1){const y=this.buildLineGenerator();this.group.append("path").datum(f).attr("d",y).attr("fill","none").attr("stroke",e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}}}animateUpdate(t){const e=this.getFilteredData(),i=this.buildLineGenerator(),r=this.getColor();this.pathSelection&&!this.pathSelection.empty()?this.pathSelection.datum(e).transition().duration(t).attr("d",i):(this.group.selectAll(".katucharts-line").remove(),this.renderMainLine(e,r,!1)),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,r,!1),this.renderHoverTargets(e,r),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0))}buildLineGenerator(){const{xAxis:t,yAxis:e}=this.context,i=this.config.connectNulls,r=!!this.context.inverted,o=(l,c)=>typeof l=="number"?c:(l==null?void 0:l.x)??c,s=l=>typeof l=="number"?l:l==null?void 0:l.y,a=ki().x((l,c)=>r?e.getPixelForValue(s(l)??0):t.getPixelForValue(o(l,c))).y((l,c)=>r?t.getPixelForValue(o(l,c)):e.getPixelForValue(s(l)??0)).curve(this.getCurve());return i||a.defined(l=>{const c=s(l);return c!=null}),a}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Sc(t,Math.floor(r)))}return t}getCurve(){const t=this.config.step;return t==="left"?Nf:t==="center"?Bf:t==="right"?Of:Xi}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??bt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>{t.attr("stroke-dasharray",l==="none"?null:l)})}}renderMarkers(t,e,i){const r=this.config.marker,o=(r==null?void 0:r.enabledThreshold)??2;if(!((r==null?void 0:r.enabled)===!0||(r==null?void 0:r.enabled)!==!1&&t.length<=o*this.context.plotArea.width/12))return;const{xAxis:a,yAxis:l}=this.context,c=(r==null?void 0:r.radius)??4,h=(r==null?void 0:r.symbol)||"circle",f=this.group.append("g").attr("class","katucharts-markers"),u=t.filter(d=>d.y!==null&&d.y!==void 0);if(h==="circle"){const d=f.selectAll("circle").data(u).join("circle").attr("cx",p=>a.getPixelForValue(p.x??0)).attr("cy",p=>l.getPixelForValue(p.y??0)).attr("fill",(p,y)=>this.getMarkerFill(p,y,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?d.attr("r",0).transition().delay((p,y)=>_e(y,Kn,Wt,u.length)).duration(bt).ease(pt).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c}):d.attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c})}else{const d=W2[h]||Zn,p=Math.PI*c*c;rn().type(d).size(p);const y=f.selectAll("path").data(u).join("path").attr("transform",g=>`translate(${a.getPixelForValue(g.x??0)},${l.getPixelForValue(g.y??0)})`).attr("fill",(g,m)=>this.getMarkerFill(g,m,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const g=rn().type(d).size(0);y.attr("d",g).transition().delay((m,x)=>_e(x,Kn,Wt,u.length)).duration(bt).ease(pt).attr("d",m=>{var v;const x=((v=m.marker)==null?void 0:v.radius)??c;return rn().type(d).size(Math.PI*x*x)()})}else y.attr("d",g=>{var x;const m=((x=g.marker)==null?void 0:x.radius)??c;return rn().type(d).size(Math.PI*m*m)()})}}getMarkerFill(t,e,i,r){var o;return t.color?t.color:(o=t.marker)!=null&&o.fillColor?t.marker.fillColor:i!=null&&i.fillColor?i.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:r}renderHoverTargets(t,e){var f,u,d,p,y,g,m,x;if(this.config.enableMouseTracking===!1)return;const i=((f=this.config.marker)==null?void 0:f.radius)??4,r=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover,o=(r==null?void 0:r.radiusPlus)??2,s=(r==null?void 0:r.radius)??i+o,a=(r==null?void 0:r.lineWidthPlus)??1,l=(r==null?void 0:r.lineWidth)??(((p=this.config.marker)==null?void 0:p.lineWidth)??1)+a,c=((g=(y=this.config.states)==null?void 0:y.hover)==null?void 0:g.lineWidthPlus)??1,h=(x=(m=this.config.states)==null?void 0:m.hover)==null?void 0:x.halo;new N2({series:this,group:this.group,data:t,xAxis:this.context.xAxis,yAxis:this.context.yAxis,plotArea:this.context.plotArea,events:this.context.events,haloSize:(h==null?void 0:h.size)??10,haloOpacity:(h==null?void 0:h.opacity)??.25,markerRadius:i,hoverRadius:s,hoverLineWidth:l,cursor:this.config.cursor||"pointer",pathSelection:this.pathSelection,lineWidthPlus:c,baseLineWidth:this.config.lineWidth??2,getColor:v=>v.color||e})}}class H2 extends Uf{constructor(t){super(t)}getCurve(){return Df.alpha(.5)}}const V2={circle:Zn,square:vc,diamond:bc,triangle:kc,"triangle-down":Mc,cross:xc};class qf extends Ut{constructor(t){super(t),this.isSpline=!1,this.areaPath=null,this.linePath=null,this.negAreaPath=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeFillColor||this.config.negativeColor?this.renderWithNegativeColor(e,t,!!i):this.renderMainArea(e,t,!!i),this.renderMarkers(e,t,!!i),this.config.trackByArea?this.renderAreaHoverTargets(e,t):this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(bt+Kn)}renderMainArea(t,e,i){const{areaGen:r,lineGen:o}=this.buildGenerators(),s=this.config.lineColor||e;if(this.areaPath=this.group.append("path").datum(t).attr("d",r).attr("fill",this.config.fillColor||e).attr("class","katucharts-area"),this.linePath=this.group.append("path").datum(t).attr("d",o).attr("fill","none").attr("stroke",s).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const l=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;this.areaPath.attr("fill-opacity",0).transition().duration(l).ease(pt).attr("fill-opacity",this.config.fillOpacity??.75),this.animateLineEntry(this.linePath)}else this.areaPath.attr("fill-opacity",this.config.fillOpacity??.75)}renderWithNegativeColor(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.threshold??0,a=o.getPixelForValue(s),l=this.getCurve(),c=this.config.fillOpacity??.75,h=this.config.negativeFillColor||this.config.negativeColor||e,f=this.config.fillColor||e,u=this.config.lineColor||e,d=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)>=s),p=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)<s);if(d.length>0){const g=Ui().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.areaPath=this.group.append("path").datum(d).attr("d",g).attr("fill",f).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-positive")}if(p.length>0){const g=Ui().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.negAreaPath=this.group.append("path").datum(p).attr("d",g).attr("fill",h).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-negative")}const y=ki().defined(g=>g.y!==null&&g.y!==void 0).x(g=>r.getPixelForValue(g.x??0)).y(g=>o.getPixelForValue(g.y??0)).curve(l);if(this.linePath=this.group.append("path").datum(t).attr("d",y).attr("fill","none").attr("stroke",u).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const m=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;this.areaPath&&this.areaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.negAreaPath&&this.negAreaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.animateLineEntry(this.linePath)}}renderZones(t,e){const{xAxis:i,yAxis:r}=this.context,o=this.config.zones,s=this.config.zoneAxis||"y",a=this.config.fillOpacity??.75,l=this.config.lineWidth??2,c=this.getCurve(),h=r.getPixelForValue(this.config.threshold??0),f=[...o].sort((g,m)=>(g.value??1/0)-(m.value??1/0)),u=g=>s==="x"?g.x??0:g.y??0,d=t.filter(g=>g.y!==null&&g.y!==void 0);let p=-1/0;const y=(g,m,x,v)=>{if(g.length<2)return;const b=Ui().x(M=>i.getPixelForValue(M.x??0)).y0(h).y1(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",b).attr("fill",x||m).attr("fill-opacity",a).attr("class","katucharts-area katucharts-zone");const k=ki().x(M=>i.getPixelForValue(M.x??0)).y(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",k).attr("fill","none").attr("stroke",m).attr("stroke-width",l).attr("stroke-dasharray",on(v||this.config.dashStyle)).attr("class","katucharts-area-line katucharts-zone")};for(const g of f){const m=g.value??1/0,x=g.color||e,v=g.fillColor||x,b=[];for(let k=0;k<d.length;k++){const M=u(d[k]);if(M>=p&&M<m)b.length===0&&k>0&&b.push(d[k-1]),b.push(d[k]);else if(M>=m&&b.length>0){b.push(d[k]);break}}y(b,x,v,g.dashStyle),p=m}if(p!==1/0){const g=[];for(let m=0;m<d.length;m++)u(d[m])>=p&&(g.length===0&&m>0&&g.push(d[m-1]),g.push(d[m]));y(g,e,this.config.fillColor)}}getCurve(){if(this.isSpline)return Df.alpha(.5);const t=this.config.step;return t==="left"?Nf:t==="center"?Bf:t==="right"?Of:Xi}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Sc(t,Math.floor(r)))}return t}buildGenerators(){const{xAxis:t,yAxis:e}=this.context,i=e.getPixelForValue(this.config.threshold??0),r=this.getCurve(),o=this.context.stackOffsets,s=this.config.stacking,a=this.config.connectNulls,l=u=>!s||!o?u.y??0:(o.get(u.x??0)||0)+(u.y??0),c=u=>!s||!o?this.config.threshold??0:o.get(u.x??0)||0,h=Ui().x(u=>t.getPixelForValue(u.x??0)).y0(u=>s?e.getPixelForValue(c(u)):i).y1(u=>e.getPixelForValue(l(u))).curve(r),f=ki().x(u=>t.getPixelForValue(u.x??0)).y(u=>e.getPixelForValue(l(u))).curve(r);return a||(h.defined(u=>u.y!==null&&u.y!==void 0),f.defined(u=>u.y!==null&&u.y!==void 0)),{areaGen:h,lineGen:f}}animateUpdate(t){const e=this.getFilteredData(),{areaGen:i,lineGen:r}=this.buildGenerators(),o=this.getColor();this.areaPath&&!this.areaPath.empty()&&this.areaPath.datum(e).transition().duration(t).attr("d",i),this.linePath&&!this.linePath.empty()&&this.linePath.datum(e).transition().duration(t).attr("d",r),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,o,!1),this.config.trackByArea?this.renderAreaHoverTargets(e,o):this.renderHoverTargets(e,o),this.renderDataLabels(e.filter(s=>s.y!==null&&s.y!==void 0),(s,a)=>this.context.xAxis.getPixelForValue(s.x??a),s=>this.context.yAxis.getPixelForValue(s.y??0))}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??bt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>t.attr("stroke-dasharray",l==="none"?null:l))}}renderMarkers(t,e,i){const r=this.config.marker;if((r==null?void 0:r.enabled)!==!0)return;const{xAxis:o,yAxis:s}=this.context,a=(r==null?void 0:r.radius)??4,l=(r==null?void 0:r.symbol)||"circle",c=this.group.append("g").attr("class","katucharts-markers"),h=t.filter(f=>f.y!==null&&f.y!==void 0);if(l==="circle"){const f=c.selectAll("circle").data(h).join("circle").attr("cx",u=>o.getPixelForValue(u.x??0)).attr("cy",u=>s.getPixelForValue(u.y??0)).attr("fill",u=>u.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?f.attr("r",0).transition().delay((u,d)=>_e(d,Kn,Wt,h.length)).duration(bt).ease(pt).attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a}):f.attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a})}else{const f=V2[l]||Zn,u=c.selectAll("path").data(h).join("path").attr("transform",d=>`translate(${o.getPixelForValue(d.x??0)},${s.getPixelForValue(d.y??0)})`).attr("fill",d=>d.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const d=rn().type(f).size(0);u.attr("d",d).transition().delay((p,y)=>_e(y,Kn,Wt,h.length)).duration(bt).ease(pt).attr("d",p=>{var g;const y=((g=p.marker)==null?void 0:g.radius)??a;return rn().type(f).size(Math.PI*y*y)()})}else u.attr("d",d=>{var y;const p=((y=d.marker)==null?void 0:y.radius)??a;return rn().type(f).size(Math.PI*p*p)()})}}renderAreaHoverTargets(t,e){if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=r.getPixelForValue(this.config.threshold??0),s=this.getCurve(),a=Ui().x(h=>i.getPixelForValue(h.x??0)).y0(o).y1(h=>r.getPixelForValue(h.y??0)).curve(s),l=t.filter(h=>h.y!==null&&h.y!==void 0);this.group.append("path").datum(l).attr("d",a).attr("fill","transparent").attr("class","katucharts-hover-targets").style("cursor",this.config.cursor||"pointer").on("mousemove",h=>{const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((y,g)=>{const m=i.getPixelForValue(y.x??0),x=Math.abs(m-f);x<d&&(d=x,u=g)});const p=l[u];this.context.events.emit("point:mouseover",{point:p,index:u,series:this,event:h,plotX:i.getPixelForValue(p.x??0),plotY:r.getPixelForValue(p.y??0)})}).on("mouseout",h=>{this.context.events.emit("point:mouseout",{point:l[0],index:0,series:this,event:h})}).on("click",h=>{var y,g,m,x;const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((v,b)=>{const k=i.getPixelForValue(v.x??0),M=Math.abs(k-f);M<d&&(d=M,u=b)});const p=l[u];this.context.events.emit("point:click",{point:p,index:u,series:this,event:h}),(g=(y=p.events)==null?void 0:y.click)==null||g.call(p,h),(x=(m=this.config.events)==null?void 0:m.click)==null||x.call(this,h)})}renderHoverTargets(t,e){var f,u,d,p,y;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=this.group.append("g").attr("class","katucharts-hover-targets"),s=((d=(u=(f=this.config.marker)==null?void 0:f.states)==null?void 0:u.hover)==null?void 0:d.radius)??6,a=t.filter(g=>g.y!==null&&g.y!==void 0),l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.halo,c=(l==null?void 0:l.size)??10,h=(l==null?void 0:l.opacity)??.25;a.forEach((g,m)=>{const x=i.getPixelForValue(g.x??0),v=r.getPixelForValue(g.y??0),b=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("opacity",0).attr("class","katucharts-halo"),k=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("stroke",this.autoBorderColor()).attr("stroke-width",1).attr("class","katucharts-hover-marker");o.append("circle").attr("cx",x).attr("cy",v).attr("r",15).attr("fill","transparent").style("cursor",this.config.cursor||"pointer").on("mouseover",C=>{var L,_,$,I,E;b.transition().duration(K).ease(Z).attr("r",c).attr("opacity",h),k.transition().duration(K).ease(Z).attr("r",s),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:C,plotX:x,plotY:v}),(_=(L=g.events)==null?void 0:L.mouseOver)==null||_.call(g,C),(E=(I=($=this.config.point)==null?void 0:$.events)==null?void 0:I.mouseOver)==null||E.call(g,C)}).on("mouseout",C=>{var L,_,$,I,E;b.transition().duration(K).ease(Z).attr("r",0).attr("opacity",0),k.transition().duration(K).ease(Z).attr("r",0),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:C}),(_=(L=g.events)==null?void 0:L.mouseOut)==null||_.call(g,C),(E=(I=($=this.config.point)==null?void 0:$.events)==null?void 0:I.mouseOut)==null||E.call(g,C)}).on("click",C=>{var L,_,$,I,E,P,S;this.context.events.emit("point:click",{point:g,index:m,series:this,event:C}),(_=(L=g.events)==null?void 0:L.click)==null||_.call(g,C),(E=(I=($=this.config.point)==null?void 0:$.events)==null?void 0:I.click)==null||E.call(g,C),(S=(P=this.config.events)==null?void 0:P.click)==null||S.call(this,C),this.handlePointSelect(k,g,m,C)})})}}class G2 extends qf{constructor(){super(...arguments),this.isSpline=!0}}function _c(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}function Y2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+a},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-l}`+(l?`A${l},${l},0,0,1,${n+e-l},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+a}`+(a?`A${a},${a},0,0,1,${n+a},${t}`:`L${n},${t}`)+"Z"}function X2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+l},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-a}`+(a?`A${a},${a},0,0,1,${n+e-a},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+l}`+(l?`A${l},${l},0,0,1,${n+l},${t}`:`L${n},${t}`)+"Z"}class jf extends Ut{constructor(t){super(t),this.isHorizontal=!1}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt}render(){this.group.selectAll(".katucharts-data-labels").remove();const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=u?this.context.stackTotals:void 0,p=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0,C=b.y??0;if(u&&d){const L=d.get(k)||1;return(M+C)/L*100}return M+C},y=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0;if(u&&d){const C=d.get(k)||1;return M/C*100}return M};if(h){const b=this.context.stackTotals;for(const k of o){const M=k.x??0;if(b&&(k.total=b.get(M)||0,k.stackTotal=b.get(M)||0),u&&b){const C=b.get(M)||1;k.percentage=(k.y??0)/C*100}}}const g=this.config.minPointLength??0,m=this.config.crisp!==!1,x=_c(this.config.borderRadius);if(h){const b=this.group.selectAll(".katucharts-column").data(o).join("path").attr("class","katucharts-column").attr("stroke",k=>k.borderColor||this.config.borderColor||"none").attr("stroke-width",k=>k.borderWidth??this.config.borderWidth??0);this.renderStackedBars(b,o,a,l,p,y,r,g,m,!!s,x),this.attachHoverEffects(b,o),this.renderColumnDataLabels(o,a,l,c,p,y),s&&this.emitAfterAnimate(bt+o.length*Wt);return}const v=this.group.selectAll(".katucharts-column").data(o).join("rect").attr("class","katucharts-column").attr("rx",x).attr("stroke",b=>b.borderColor||this.config.borderColor||"none").attr("stroke-width",b=>b.borderWidth??this.config.borderWidth??0);this.isHorizontal?this.renderHorizontalBars(v,o,a,l,c,r,g,m,!!s):this.renderVerticalBars(v,o,a,l,c,r,g,m,!!s),this.attachHoverEffects(v,o),this.renderColumnDataLabels(o,a,l,c,h?p:void 0,h?y:void 0),s&&this.emitAfterAnimate(bt+o.length*Wt)}renderVerticalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("x",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("width",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("y",o).attr("height",0).transition().duration(p).ease(pt).delay((y,g)=>_e(g,0,Wt,e.length)).attr("y",y=>this.getBarY(y,f,o,a)).attr("height",y=>this.getBarHeight(y,f,o,a))}else t.attr("y",p=>this.getBarY(p,f,o,a)).attr("height",p=>this.getBarHeight(p,f,o,a))}renderHorizontalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("y",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("height",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("x",o).attr("width",0).transition().duration(p).ease(pt).delay((y,g)=>_e(g,0,Wt,e.length)).attr("x",y=>{const g=f.getPixelForValue(y.y??0);return Math.min(o,g)}).attr("width",y=>{const g=Math.abs(f.getPixelForValue(y.y??0)-o);return Math.max(g,a)})}else t.attr("x",p=>Math.min(o,f.getPixelForValue(p.y??0))).attr("width",p=>Math.max(Math.abs(f.getPixelForValue(p.y??0)-o),a))}renderStackedBars(t,e,i,r,o,s,a,l,c,h,f){const u=this.context.totalSeriesOfType||1,d=this.context.indexInType||0,p=d===u-1,y=d===0,g=f??0;if(t.attr("fill",(m,x)=>this.getPointColor(m,x,a)),h){const m=this.getEntryDuration();t.each((x,v,b)=>{const k=rt(b[v]),M=this.computeStackedStartParams(x,e,i,r,s,c),C=this.computeStackedRectParams(x,e,i,r,o,s,c,l);x._rectParams=C,k.attr("d",this.rectParamsToPath(M,g,p,y)).transition().duration(m).ease(pt).delay(_e(v,0,Wt,e.length)).attrTween("d",()=>{const L=ae(M.x,C.x),_=ae(M.y,C.y),$=ae(M.w,C.w),I=ae(M.h,C.h);return E=>this.rectParamsToPath({x:L(E),y:_(E),w:$(E),h:I(E)},g,p,y)})})}else t.each((m,x,v)=>{const b=this.computeStackedRectParams(m,e,i,r,o,s,c,l);m._rectParams=b,rt(v[x]).attr("d",this.rectParamsToPath(b,g,p,y))})}getBarY(t,e,i,r){const o=e.getPixelForValue(t.y??0),s=Math.min(o,i),a=Math.abs(o-i);return a<r&&(t.y??0)>=(this.config.threshold??0)?s-(r-a):s}getBarHeight(t,e,i,r){return Math.max(Math.abs(e.getPixelForValue(t.y??0)-i),r)}crispCoord(t,e){return e?Math.round(t):t}computeStackedRectParams(t,e,i,r,o,s,a,l){const{xAxis:c,yAxis:h}=this.context;if(this.isHorizontal){const f=this.crispCoord(c.getPixelForValue(t.x??e.indexOf(t))+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:d,y:f,w:p,h:u}}else{const f=this.crispCoord(c.getPixelForValue(t.x??0)+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:f,y:d,w:u,h:p}}}computeStackedStartParams(t,e,i,r,o,s){const{xAxis:a,yAxis:l}=this.context;if(this.isHorizontal){const c=this.crispCoord(a.getPixelForValue(t.x??e.indexOf(t))+r,s),h=s?Math.round(i):i;return{x:l.getPixelForValue(o(t)),y:c,w:.1,h}}else{const c=this.crispCoord(a.getPixelForValue(t.x??0)+r,s),h=s?Math.round(i):i,f=l.getPixelForValue(o(t));return{x:c,y:f,w:h,h:.1}}}rectParamsToPath(t,e,i,r){return this.isHorizontal?X2(t.x,t.y,t.w,t.h,e,i,r):Y2(t.x,t.y,t.w,t.h,e,i,r)}animateUpdate(t){if(this.config.stacking){this.updateStackedBars(t);return}const{xAxis:i,yAxis:r,plotArea:o}=this.context,s=this.getColor(),a=this.data,{barWidth:l,barOffset:c,baseline:h}=this.computeBarGeometry(),f=this.config.minPointLength??0,u=this.config.crisp!==!1,d=this.config.threshold??0,p=this.config.negativeColor,y=this.group.selectAll(".katucharts-column").data(a),g=y.enter().append("rect").attr("class","katucharts-column").attr("rx",_c(this.config.borderRadius)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)).attr("display",x=>x.y==null?"none":null).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0);this.isHorizontal||g.attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",h).attr("height",0);const m=g.merge(y);m.attr("display",x=>x.y==null?"none":null),this.isHorizontal?m.transition().duration(t).attr("y",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("height",u?Math.round(l):l).attr("x",x=>Math.min(h,r.getPixelForValue(x.y??0))).attr("width",x=>Math.max(Math.abs(r.getPixelForValue(x.y??0)-h),f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)):m.transition().duration(t).attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",x=>this.getBarY(x,r,h,f)).attr("height",x=>this.getBarHeight(x,r,h,f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)),y.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),a),this.renderColumnDataLabels(a,l,c,h)}updateStackedBars(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=this.config.crisp!==!1,p=_c(this.config.borderRadius),y=this.config.minPointLength??0,g=u?this.context.stackTotals:void 0,m=_=>{const $=_.x??0,I=(f==null?void 0:f.get($))||0,E=_.y??0;if(u&&g){const P=g.get($)||1;return(I+E)/P*100}return I+E},x=_=>{const $=_.x??0,I=(f==null?void 0:f.get($))||0;if(u&&g){const E=g.get($)||1;return I/E*100}return I};if(h){const _=this.context.stackTotals;for(const $ of s){const I=$.x??0;if(_&&($.total=_.get(I)||0,$.stackTotal=_.get(I)||0),u&&_){const E=_.get(I)||1;$.percentage=($.y??0)/E*100}}}const v=this.context.totalSeriesOfType||1,b=this.context.indexInType||0,k=b===v-1,M=b===0,C=p,L=this.group.selectAll(".katucharts-column").data(s);L.each((_,$,I)=>{const E=rt(I[$]),P=this.computeStackedRectParams(_,s,a,l,m,x,d,y),S=_._rectParams||P;_._rectParams=P,E.transition().duration(t).attrTween("d",()=>{const w=ae(S.x,P.x),A=ae(S.y,P.y),T=ae(S.w,P.w),R=ae(S.h,P.h);return F=>this.rectParamsToPath({x:w(F),y:A(F),w:T(F),h:R(F)},C,k,M)}).attr("fill",this.getPointColor(_,$,o))}),L.enter().append("path").attr("class","katucharts-column").attr("stroke",_=>_.borderColor||this.config.borderColor||"none").attr("stroke-width",_=>_.borderWidth??this.config.borderWidth??0).attr("fill",(_,$)=>this.getPointColor(_,$,o)).each((_,$,I)=>{const E=this.computeStackedRectParams(_,s,a,l,m,x,d,y);_._rectParams=E,rt(I[$]).attr("d",this.rectParamsToPath(E,C,k,M))}),L.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),s),this.renderColumnDataLabels(s,a,l,c,m,x)}computeBarGeometry(){var y,g;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=!!this.config.stacking,o=r?1:this.config.grouping!==!1&&this.context.totalSeriesOfType||1,s=r?0:this.config.grouping!==!1&&this.context.indexInType||0,a=this.config.groupPadding??.2,l=this.config.pointPadding??.1;let c;if(t instanceof tf)c=t.getBandwidth();else if(this.isHorizontal)c=i.height/Math.max(this.data.length,1);else if(this.config.pointRange!==void 0&&this.config.pointRange>0)c=Math.abs(t.getPixelForValue(this.config.pointRange)-t.getPixelForValue(0));else{const m=this.data;c=m.length>1?Math.abs(t.getPixelForValue(((y=m[1])==null?void 0:y.x)??1)-t.getPixelForValue(((g=m[0])==null?void 0:g.x)??0))*(1-a*2):i.width/Math.max(m.length,1)*(1-a*2)}const h=r?0:a,f=r?0:l;let u;this.config.pointWidth!==void 0?u=this.config.pointWidth:u=c*(1-h*2)/o*(1-f*2),this.config.maxPointWidth!==void 0&&(u=Math.min(u,this.config.maxPointWidth));let d;this.config.centerInCategory?d=-u/2:d=-c*(1-h*2)/2+(u+u*f*2)*s+u*f;const p=e.getPixelForValue(this.config.threshold??0);return{barWidth:u,barOffset:d,baseline:p,groupWidth:c}}getPointColor(t,e,i,r,o){if(t.color)return t.color;if(this.config.colorByPoint){const s=this.config.colors||this.context.colors;return s[e%s.length]}return r&&(t.y??0)<(o??0)?r:i}renderColumnDataLabels(t,e,i,r,o,s){const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const{xAxis:l,yAxis:c}=this.context,h=a.inside??!1;this.renderDataLabels(t,f=>{if(this.isHorizontal){const u=c.getPixelForValue(f.y??0);return h?(u+r)/2:u-5}return l.getPixelForValue(f.x??0)+i+e/2},f=>{if(this.isHorizontal)return l.getPixelForValue(f.x??0)+i+e/2;const u=o?c.getPixelForValue(o(f)):c.getPixelForValue(f.y??0);return h?(u+r)/2:u})}attachHoverEffects(t,e){var h,f,u,d,p,y,g,m;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=!!this.config.stacking,s=((f=(h=this.config.states)==null?void 0:h.hover)==null?void 0:f.brightness)??(o?.2:.1),a=(d=(u=this.config.states)==null?void 0:u.hover)==null?void 0:d.color,l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.borderColor,c=(m=(g=this.config.states)==null?void 0:g.hover)==null?void 0:m.borderWidth;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(x,v)=>{var E,P,S,w,A,T,R;const b=x.currentTarget,k=b.getAttribute("fill")||"";b.setAttribute("data-orig-fill",k);const C=rt(b).interrupt("hover").transition("hover").duration(K).ease(Z);if(a?C.style("fill",a):C.style("fill",Yf(k,s)),l&&C.style("stroke",l),c!==void 0&&C.style("stroke-width",String(c)),b.style.filter="drop-shadow(0 1px 3px rgba(0,0,0,0.2))",o){const F=this.context.allSeries;if(F)for(const D of F)D.visible&&((E=D.config)!=null&&E.stacking)&&((P=D.group)==null||P.selectAll(".katucharts-column").filter(function(){return this!==b}).interrupt("stackDim").transition("stackDim").duration(ls).ease(Z).attr("opacity",.3));b.setAttribute("data-orig-stroke",b.getAttribute("stroke")||""),b.setAttribute("data-orig-stroke-width",b.getAttribute("stroke-width")||""),C.style("stroke","#ffffff").style("stroke-width","2")}const L=e.indexOf(v),_=i.getPixelForValue(v.x??0),$=r.getPixelForValue(v.y??0),I=this.context.inverted;this.context.events.emit("point:mouseover",{point:v,index:L,series:this,event:x,plotX:I?$:_,plotY:I?_:$}),(w=(S=v.events)==null?void 0:S.mouseOver)==null||w.call(v,x),(R=(T=(A=this.config.point)==null?void 0:A.events)==null?void 0:T.mouseOver)==null||R.call(v,x)}).on("mouseout",(x,v)=>{var _,$,I,E,P,S,w;const b=x.currentTarget,k=b.getAttribute("data-orig-fill")||"",C=rt(b).interrupt("hover").transition("hover").duration(K).ease(Z);if(C.style("fill",k),b.style.filter="",o){const A=this.context.allSeries;if(A)for(const T of A)T.visible&&((_=T.config)!=null&&_.stacking)&&(($=T.group)==null||$.selectAll(".katucharts-column").interrupt("stackDim").transition("stackDim").duration(ls).ease(Z).attr("opacity",1));C.style("stroke",b.getAttribute("data-orig-stroke")||"").style("stroke-width",b.getAttribute("data-orig-stroke-width")||"")}else C.style("stroke","").style("stroke-width","");C.on("end",()=>{b.matches(":hover")||(b.style.fill="")});const L=e.indexOf(v);this.context.events.emit("point:mouseout",{point:v,index:L,series:this,event:x}),(E=(I=v.events)==null?void 0:I.mouseOut)==null||E.call(v,x),(w=(S=(P=this.config.point)==null?void 0:P.events)==null?void 0:S.mouseOut)==null||w.call(v,x)}).on("click",(x,v)=>{var C,L,_,$,I,E,P;const b=e.indexOf(v);this.context.events.emit("point:click",{point:v,index:b,series:this,event:x}),(L=(C=v.events)==null?void 0:C.click)==null||L.call(v,x),(I=($=(_=this.config.point)==null?void 0:_.events)==null?void 0:$.click)==null||I.call(v,x),(P=(E=this.config.events)==null?void 0:E.click)==null||P.call(this,x);const k=x.currentTarget,M=rt(k);this.handlePointSelect(M,v,b,x)})}}class U2 extends jf{constructor(){super(...arguments),this.isHorizontal=!0}}const Zf={circle:Zn,square:vc,diamond:bc,triangle:kc,"triangle-down":Mc,cross:xc},Kf=["circle","diamond","square","triangle","triangle-down"];class q2 extends Ut{constructor(t){t.clip=!1,super(t),this.cachedPositions=[]}resolveMarkerSymbol(){var r;if((r=this.config.marker)!=null&&r.symbol)return this.config.marker.symbol;const e=(this.context.allSeries||[]).filter(o=>o.config._internalType==="scatter");if(e.length<=1)return"circle";const i=e.indexOf(this);return Kf[i%Kf.length]}getLegendSymbolShape(){return this.resolveMarkerSymbol()}render(){var f,u,d,p;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(y=>y.y!==null&&y.y!==void 0),s=((f=this.config.marker)==null?void 0:f.radius)??4,a=((p=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover)==null?void 0:p.radius)??s+3,l=this.context.animate,c=this.resolveMarkerSymbol(),h=this.config.jitter;this.cachedPositions=o.map(y=>({cx:this.applyJitter(t.getPixelForValue(y.x??0),i.width,h==null?void 0:h.x),cy:this.applyJitter(e.getPixelForValue(y.y??0),i.height,h==null?void 0:h.y)})),c==="circle"?this.renderCircles(o,r,s,a,!!l):this.renderSymbols(o,r,s,a,c,!!l),this.renderDataLabels(o,(y,g)=>this.cachedPositions[g].cx,(y,g)=>this.cachedPositions[g].cy),l&&this.emitAfterAnimate(bt+o.length*Wt)}animateUpdate(t){var f;const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=((f=this.config.marker)==null?void 0:f.radius)??4,l=this.config.jitter;this.cachedPositions=s.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)}));const c=this.resolveMarkerSymbol();if(c==="circle"){const u=this.group.selectAll(".katucharts-scatter-point").data(s);u.exit().transition().duration(t).attr("r",0).remove(),u.enter().append("circle").attr("class","katucharts-scatter-point").attr("r",0).attr("fill",p=>this.getPointFill(p,o)).attr("stroke",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineColor)??((g=this.config.marker)==null?void 0:g.lineColor)??o}).attr("stroke-width",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineWidth)??((g=this.config.marker)==null?void 0:g.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(u).transition().duration(t).attr("cx",(p,y)=>this.cachedPositions[y].cx).attr("cy",(p,y)=>this.cachedPositions[y].cy).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??a})}else{const u=Zf[c]||Zn,d=this.group.selectAll(".katucharts-scatter-point").data(s);d.exit().transition().duration(t).attr("opacity",0).remove(),d.enter().append("path").attr("class","katucharts-scatter-point").attr("fill",y=>this.getPointFill(y,o)).attr("stroke",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??o}).attr("stroke-width",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineWidth)??((m=this.config.marker)==null?void 0:m.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(d).transition().duration(t).attr("transform",(y,g)=>`translate(${this.cachedPositions[g].cx},${this.cachedPositions[g].cy})`).attr("d",y=>{var m;const g=((m=y.marker)==null?void 0:m.radius)??a;return rn().type(u).size(Math.PI*g*g)()})}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(s,(u,d)=>this.cachedPositions[d].cx,(u,d)=>this.cachedPositions[d].cy)}getPointFill(t,e){var i,r;return t.color?t.color:(i=t.marker)!=null&&i.fillColor?t.marker.fillColor:(r=this.config.marker)!=null&&r.fillColor?this.config.marker.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:e}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt}renderCircles(t,e,i,r,o){const s=this.group.selectAll(".katucharts-scatter-point").data(t).join("circle").attr("class","katucharts-scatter-point").attr("cx",(a,l)=>this.cachedPositions[l].cx).attr("cy",(a,l)=>this.cachedPositions[l].cy).attr("fill",a=>this.getPointFill(a,e)).attr("stroke",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineColor)??((c=this.config.marker)==null?void 0:c.lineColor)??e}).attr("stroke-width",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineWidth)??((c=this.config.marker)==null?void 0:c.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");o?s.attr("r",0).transition().duration(this.getEntryDuration()).ease(pt).delay((a,l)=>_e(l,0,Wt,t.length)).attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}):s.attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}),this.attachScatterEvents(s,t,i,r,e,"circle")}renderSymbols(t,e,i,r,o,s){const a=Zf[o]||Zn,l=this.group.selectAll(".katucharts-scatter-point").data(t).join("path").attr("class","katucharts-scatter-point").attr("transform",(h,f)=>`translate(${this.cachedPositions[f].cx},${this.cachedPositions[f].cy})`).attr("fill",h=>this.getPointFill(h,e)).attr("stroke",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineColor)??((u=this.config.marker)==null?void 0:u.lineColor)??e}).attr("stroke-width",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineWidth)??((u=this.config.marker)==null?void 0:u.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer"),c=h=>{var u;const f=((u=h.marker)==null?void 0:u.radius)??i;return rn().type(a).size(Math.PI*f*f)()};if(s){const h=rn().type(a).size(0);l.attr("d",h).transition().duration(this.getEntryDuration()).ease(pt).delay((f,u)=>_e(u,0,Wt,t.length)).attr("d",c)}else l.attr("d",c);this.attachScatterEvents(l,t,i,r,e,"symbol",a)}attachScatterEvents(t,e,i,r,o,s,a){var y,g,m,x,v;if(this.config.enableMouseTracking===!1)return;const l=(y=this.config.states)==null?void 0:y.hover,c=(g=l==null?void 0:l.marker)==null?void 0:g.fillColor,h=(v=(x=(m=this.config.marker)==null?void 0:m.states)==null?void 0:x.hover)==null?void 0:v.lineWidth,f=l==null?void 0:l.halo,u=(f==null?void 0:f.size)??10,d=(f==null?void 0:f.opacity)??.25,p=e.map((b,k)=>{var M;return this.group.insert("circle",".katucharts-scatter-point").attr("cx",this.cachedPositions[k].cx).attr("cy",this.cachedPositions[k].cy).attr("r",0).attr("fill",b.color||((M=this.config.marker)==null?void 0:M.fillColor)||o).attr("opacity",0).attr("class","katucharts-halo")});t.on("mouseover",(b,k)=>{var E,P,S,w,A,T,R,F,D,z,B,H,J,X;const M=b.currentTarget,C=e.indexOf(k);C>=0&&p[C]&&p[C].transition("halo").duration(K).ease(Z).attr("r",u).attr("opacity",d);const L=((E=k.marker)==null?void 0:E.radius)??i,_=((w=(S=(P=k.marker)==null?void 0:P.states)==null?void 0:S.hover)==null?void 0:w.radius)??((R=(T=(A=this.config.marker)==null?void 0:A.states)==null?void 0:T.hover)==null?void 0:R.radius)??L+3,I=rt(M).interrupt("hover").transition("hover").duration(K).ease(Z);if(s==="circle")I.attr("r",_);else if(a){const j=Math.PI*_*_;I.attr("d",rn().type(a).size(j)())}M.style.filter="drop-shadow(0 1px 4px rgba(0,0,0,0.3))",c&&I.style("fill",c),h!==void 0&&I.style("stroke-width",String(h)),this.context.events.emit("point:mouseover",{point:k,index:C,series:this,event:b,plotX:((F=this.cachedPositions[C])==null?void 0:F.cx)??0,plotY:((D=this.cachedPositions[C])==null?void 0:D.cy)??0}),(B=(z=k.events)==null?void 0:z.mouseOver)==null||B.call(k,b),(X=(J=(H=this.config.point)==null?void 0:H.events)==null?void 0:J.mouseOver)==null||X.call(k,b)}).on("mouseout",(b,k)=>{var I,E,P,S,w,A;const M=b.currentTarget,C=e.indexOf(k);C>=0&&p[C]&&p[C].transition("halo").duration(K).ease(Z).attr("r",0).attr("opacity",0);const L=((I=k.marker)==null?void 0:I.radius)??i,$=rt(M).interrupt("hover").transition("hover").duration(K).ease(Z);if(s==="circle")$.attr("r",L);else if(a){const T=Math.PI*L*L;$.attr("d",rn().type(a).size(T)())}M.style.filter="",$.style("fill",null).style("stroke-width",null),this.context.events.emit("point:mouseout",{point:k,index:C,series:this,event:b}),(P=(E=k.events)==null?void 0:E.mouseOut)==null||P.call(k,b),(A=(w=(S=this.config.point)==null?void 0:S.events)==null?void 0:w.mouseOut)==null||A.call(k,b)}).on("click",(b,k)=>{var C,L,_,$,I,E,P;const M=e.indexOf(k);this.context.events.emit("point:click",{point:k,index:M,series:this,event:b}),(L=(C=k.events)==null?void 0:C.click)==null||L.call(k,b),(I=($=(_=this.config.point)==null?void 0:_.events)==null?void 0:$.click)==null||I.call(k,b),(P=(E=this.config.events)==null?void 0:E.click)==null||P.call(this,b),this.handlePointSelect(rt(b.currentTarget),k,M,b)})}}class j2 extends Ut{constructor(t){t.clip=!1,super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(f=>f.y!==null&&f.y!==void 0),s=this.context.animate,a=this.config.jitter,l=this.filterByZThreshold(o);this.buildSizeScale(l);const c=l.map(f=>({cx:this.applyJitter(t.getPixelForValue(f.x??0),i.width,a==null?void 0:a.x),cy:this.applyJitter(e.getPixelForValue(f.y??0),i.height,a==null?void 0:a.y)})),h=this.group.selectAll(".katucharts-bubble").data(l).join("circle").attr("class","katucharts-bubble").attr("cx",(f,u)=>c[u].cx).attr("cy",(f,u)=>c[u].cy).attr("fill",(f,u)=>this.getBubbleFill(f,u,r)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(f,u)=>this.config.lineColor||this.getBubbleFill(f,u,r)).attr("stroke-width",this.config.lineWidth??1).style("cursor",this.config.cursor||"pointer");if(s){const u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;h.attr("r",0).transition().duration(u).ease(pt).delay((d,p)=>_e(p,0,Wt,l.length)).attr("r",d=>this.sizeScale(this.getZValue(d)))}else h.attr("r",f=>this.sizeScale(this.getZValue(f)));this.attachBubbleEvents(h,l,c,r),this.renderDataLabels(l,(f,u)=>c[u].cx,(f,u)=>c[u].cy),s&&this.emitAfterAnimate(bt+l.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=this.filterByZThreshold(s),l=this.config.jitter;this.buildSizeScale(a);const c=a.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)})),h=this.group.selectAll(".katucharts-bubble").data(a);h.exit().transition().duration(t).attr("r",0).remove(),h.enter().append("circle").attr("class","katucharts-bubble").attr("r",0).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(u,d)=>this.config.lineColor||this.getBubbleFill(u,d,o)).attr("stroke-width",this.config.lineWidth??1).merge(h).transition().duration(t).attr("cx",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0}).attr("cy",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0}).attr("r",u=>this.sizeScale(this.getZValue(u))).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)),this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(a,(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0},(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0})}filterByZThreshold(t){const e=this.config.displayNegative!==!1,i=this.config.zThreshold??0;return e?t:t.filter(r=>(r.z??0)>=i)}getZValue(t){const e=t.z??1;return this.config.sizeByAbsoluteValue?Math.abs(e):e}buildSizeScale(t){const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e,0),r=this.config.zMax??Math.max(...e,1),o=this.parseSize(this.config.minSize,8),s=this.parseSize(this.config.maxSize,30);(this.config.sizeBy||"area")==="width"?this.sizeScale=ve().domain([i,r]).range([o,s]).clamp(!0):this.sizeScale=Sx().domain([i,r]).range([o,s]).clamp(!0)}parseSize(t,e){if(t===void 0)return e;if(typeof t=="number")return t;if(typeof t=="string"&&t.endsWith("%")){const i=parseFloat(t)/100;return Math.min(this.context.plotArea.width,this.context.plotArea.height)*i/2}return parseFloat(t)||e}getBubbleFill(t,e,i){if(t.color)return t.color;if(this.config.negativeColor&&(t.z??0)<(this.config.zThreshold??0))return this.config.negativeColor;if(this.config.colorByPoint){const r=this.config.colors||this.context.colors;return r[e%r.length]}return i}attachBubbleEvents(t,e,i,r){var s,a;if(this.config.enableMouseTracking===!1)return;(a=(s=this.config.states)==null?void 0:s.hover)==null||a.brightness;const o=this.config.fillOpacity??.5;t.on("mouseover",(l,c)=>{var d,p,y,g,m,x,v;const h=l.currentTarget,f=this.sizeScale(this.getZValue(c));rt(h).interrupt("hover").transition("hover").duration(K).ease(Z).attr("r",f+4).attr("fill-opacity",Math.min(o+.3,1)),h.style.filter="drop-shadow(0 2px 6px rgba(0,0,0,0.3))";const u=e.indexOf(c);this.context.events.emit("point:mouseover",{point:c,index:u,series:this,event:l,plotX:((d=i[u])==null?void 0:d.cx)??0,plotY:((p=i[u])==null?void 0:p.cy)??0}),(g=(y=c.events)==null?void 0:y.mouseOver)==null||g.call(c,l),(v=(x=(m=this.config.point)==null?void 0:m.events)==null?void 0:x.mouseOver)==null||v.call(c,l)}).on("mouseout",(l,c)=>{var u,d,p,y,g;const h=l.currentTarget;rt(h).interrupt("hover").transition("hover").duration(K).ease(Z).attr("r",this.sizeScale(this.getZValue(c))).attr("fill-opacity",o),h.style.filter="";const f=e.indexOf(c);this.context.events.emit("point:mouseout",{point:c,index:f,series:this,event:l}),(d=(u=c.events)==null?void 0:u.mouseOut)==null||d.call(c,l),(g=(y=(p=this.config.point)==null?void 0:p.events)==null?void 0:y.mouseOut)==null||g.call(c,l)}).on("click",(l,c)=>{var f,u,d,p,y,g,m;const h=e.indexOf(c);this.context.events.emit("point:click",{point:c,index:h,series:this,event:l}),(u=(f=c.events)==null?void 0:f.click)==null||u.call(c,l),(y=(p=(d=this.config.point)==null?void 0:d.events)==null?void 0:p.click)==null||y.call(c,l),(m=(g=this.config.events)==null?void 0:g.click)==null||m.call(this,l),this.handlePointSelect(rt(l.currentTarget),c,h,l)})}getBubbleLegendInfo(){const t=this.filterByZThreshold(this.data.filter(l=>l.y!==null&&l.y!==void 0));if(t.length===0)return null;this.buildSizeScale(t);const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e),r=this.config.zMax??Math.max(...e);if(!isFinite(i)||!isFinite(r)||r<=0)return null;const o=[r,(i+r)/2,i],s=new Set,a=o.map(l=>Math.round(l)).filter(l=>l>0&&!s.has(l)&&(s.add(l),!0)).map(l=>({value:l,radius:this.sizeScale(l)}));return a.length===0?null:{sizeBy:this.config.sizeBy||"area",color:this.getColor(),ranges:a}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const l of this.data)l.x!==void 0&&l.x!==null&&(t=Math.min(t,l.x),e=Math.max(e,l.x)),l.y!==void 0&&l.y!==null&&(i=Math.min(i,l.y),r=Math.max(r,l.y));const o=e-t||1,s=r-i||1,a=.08;return t-=o*a,e+=o*a,i-=s*a,r+=s*a,{xMin:t,xMax:e,yMin:i,yMax:r}}}class Jf extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1}dataLabelConfigs(){const t=this.config.dataLabels;return t?(Array.isArray(t)?t:[t]).filter(i=>i&&i.enabled!==!1):[]}init(t){const e=this.dataLabelConfigs().length>0;if(e&&(this.config.clip=!1),super.init(t),e){const i=this.group.select(function(){return this.ownerSVGElement});i.empty()||i.style("overflow","visible")}}render(){var G,N,Y,O,ct,it,ft,dt,at,ot;const{plotArea:t,colors:e}=this.context,i=this.config.ignoreHiddenPoint!==!1,r=this.data.filter(q=>q.y!==null&&q.y!==void 0&&(q.y??0)>0),o=i?r.filter(q=>q.visible!==!1):r,s=this.context.animate,a=this.dataLabelConfigs().filter(q=>(q.distance??30)>=0),l=a.length>0,c=l?Math.max(...a.map(q=>(q.distance??30)+10)):0,h=this.config.center||["50%","50%"],f=this.resolvePercent(h[0],t.width),u=this.resolvePercent(h[1],t.height),d=t.width-c*2,p=t.height-c,y=Math.min(d,p),g=Math.min(t.width,t.height),m=this.config.size!==void 0&&this.config.size!==null,x=m?this.resolvePercent(this.config.size,g):y,v=this.config.minSize?this.resolvePercent(this.config.minSize,g):0,k=Math.max(l?Math.min(x,y):m?x:g,v)/2,M=this.resolvePercent(this.config.innerSize||0,k*2)/2,C=this.config.depth??0,L=(this.config.startAngle??0)*Math.PI/180,_=this.config.endAngle!==void 0?this.config.endAngle*Math.PI/180:L+2*Math.PI,$=o.reduce((q,st)=>q+(st.y??0),0),I=this.config.fillColor;if($===0&&I){const q=this.group.append("g").attr("transform",`translate(${f},${u})`),st=Se().innerRadius(M).outerRadius(k).startAngle(L).endAngle(_);q.append("path").attr("d",st({})).attr("fill",I);return}const E=v2().value(q=>q.y??0).sort(null).startAngle(L).endAngle(_),P=this.resolveBorderRadius(this.config.borderRadius),S=Se().innerRadius(M).outerRadius(k).cornerRadius(P),w=this.config.slicedOffset??10,A=Se().innerRadius(M).outerRadius(k+w*.4).cornerRadius(P),T=E(o),R=_-L;for(const q of T)q.data.percentage=(q.endAngle-q.startAngle)/R*100,q.data.total=$;const F=this.group.append("g").attr("transform",`translate(${f},${u})`);C>0&&this.render3DEffect(F,T,M,k,C);const D=this.config.allowPointSelect===!0;(N=(G=this.config.states)==null?void 0:G.hover)==null||N.brightness;const z=(O=(Y=this.config.states)==null?void 0:Y.select)==null?void 0:O.color,B=(it=(ct=this.config.states)==null?void 0:ct.select)==null?void 0:it.borderColor,H=(dt=(ft=this.config.states)==null?void 0:ft.select)==null?void 0:dt.borderWidth,J=((ot=(at=this.config.states)==null?void 0:at.inactive)==null?void 0:ot.opacity)??.4,X=(q,st)=>q.data.color?q.data.color:this.config.colors?this.config.colors[st%this.config.colors.length]:e[st%e.length],j=q=>{const st=(q.startAngle+q.endAngle)/2,kt=w*Math.sin(st),Et=-w*Math.cos(st);return`translate(${kt},${Et})`},W=this,U=F.selectAll(".katucharts-pie-slice").data(T).join("path").attr("class","katucharts-pie-slice").attr("fill",(q,st)=>X(q,st)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");U.each(function(q,st){const kt=rt(this);(q.data.sliced||W.selectedIndices.has(st))&&kt.attr("transform",j(q))}),s?U.each(function(q,st){const kt=rt(this),Et={startAngle:q.startAngle,endAngle:q.startAngle},Mt=ae(Et,q);kt.transition().duration(bt).ease(pt).delay(Gf+st*Wt).attrTween("d",()=>Ct=>S(Mt(Ct)))}):U.attr("d",S),this.config.enableMouseTracking!==!1&&U.on("mouseover",function(q,st){var Gt,Ht,Nt,Kt,ie;const kt=rt(this),Et=T.indexOf(st);W.selectedIndices.has(Et)||kt.transition("arc").duration(K).ease(Z).attr("d",A(st)),kt.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),U.interrupt("highlight"),U.attr("opacity",W.config.opacity??1),U.filter(Lt=>Lt!==st).transition("highlight").duration(K).ease(Z).attr("opacity",J);const Ct=S.centroid(st);W.context.events.emit("point:mouseover",{point:st.data,index:Et,series:W,event:q,plotX:f+Ct[0],plotY:u+Ct[1]}),(Ht=(Gt=st.data.events)==null?void 0:Gt.mouseOver)==null||Ht.call(st.data,q),(ie=(Kt=(Nt=W.config.point)==null?void 0:Nt.events)==null?void 0:Kt.mouseOver)==null||ie.call(st.data,q)}).on("mouseout",function(q,st){var Ct,Gt,Ht,Nt,Kt;const kt=rt(this),Et=T.indexOf(st);W.selectedIndices.has(Et)||kt.transition("arc").duration(K).ease(Z).attr("d",S(st)),kt.style("filter",""),U.interrupt("highlight"),U.transition("highlight").duration(K).ease(Z).attr("opacity",W.config.opacity??1),W.context.events.emit("point:mouseout",{point:st.data,index:Et,series:W,event:q}),(Gt=(Ct=st.data.events)==null?void 0:Ct.mouseOut)==null||Gt.call(st.data,q),(Kt=(Nt=(Ht=W.config.point)==null?void 0:Ht.events)==null?void 0:Nt.mouseOut)==null||Kt.call(st.data,q)}).on("click",function(q,st){var Et,Mt,Ct,Gt,Ht,Nt,Kt,ie,Lt,Jt,Ce,je,pe,Hn;const kt=T.indexOf(st);D&&(W.selectedIndices.has(kt)?(W.selectedIndices.delete(kt),rt(this).transition("slice").duration(K).ease(Z).attr("transform",""),(Mt=(Et=st.data.events)==null?void 0:Et.unselect)==null||Mt.call(st.data,q),(Ht=(Gt=(Ct=W.config.point)==null?void 0:Ct.events)==null?void 0:Gt.unselect)==null||Ht.call(st.data,q)):(W.selectedIndices.add(kt),rt(this).transition("slice").duration(K).ease(Z).attr("transform",j(st)),(Kt=(Nt=st.data.events)==null?void 0:Nt.select)==null||Kt.call(st.data,q),(Jt=(Lt=(ie=W.config.point)==null?void 0:ie.events)==null?void 0:Lt.select)==null||Jt.call(st.data,q)),(z||B||H!==void 0)&&U.each(function(He,Ve){const hn=rt(this);W.selectedIndices.has(Ve)?(z&&hn.attr("fill",z),B&&hn.attr("stroke",B),H!==void 0&&hn.attr("stroke-width",H)):(hn.attr("fill",X(He,Ve)),hn.attr("stroke",W.config.borderColor||W.autoBorderColor()),hn.attr("stroke-width",W.config.borderWidth??1))})),W.context.events.emit("point:click",{point:st.data,index:kt,series:W,event:q}),(je=(Ce=st.data.events)==null?void 0:Ce.click)==null||je.call(st.data,q),(Hn=(pe=W.config.events)==null?void 0:pe.click)==null||Hn.call(W,q)});for(const q of this.dataLabelConfigs())this.renderPieLabels(F,T,S,k,_-L,q);s&&this.emitAfterAnimate(bt+T.length*Wt)}renderPieLabels(t,e,i,r,o,s){var L,_;if(!s||s.enabled===!1)return;const a=this.context.plotArea.width,l=this.context.plotArea.height,c=a/2,h=l/2,f=s.distance??30,u=s.connectorWidth??1,d=s.connectorColor||"#999",p=s.connectorPadding??5;s.softConnector;const y=((L=s.style)==null?void 0:L.fontSize)||wt,g=s.color||((_=s.style)==null?void 0:_.color)||me,m=s.alignTo,x=f<0,v=ye(y),b=v*1.4,k=[],{colors:M}=this.context;if(e.forEach(($,I)=>{const E=$.data.percentage,P=i.centroid($),S=($.startAngle+$.endAngle)/2,w=$.data.color||(this.config.colors?this.config.colors[I%this.config.colors.length]:M[I%M.length]),A=r+f;let T=A*Math.sin(S),R=-A*Math.cos(S);(m==="plotEdges"||m==="connectors")&&(T=S<Math.PI?c-5:-(c-5));let F,D;const z={...$.data,color:w};s.formatter?F=s.formatter.call({point:z,series:{name:this.config.name},x:$.data.x,y:$.data.y,percentage:E}):s.format?F=Zt(s.format,{point:z,series:{name:this.config.name}}):F=$.data.name||String($.data.y);const B=/(?:^|[\s;"'])color\s*:\s*([^;"'>]+)/i.exec(F);B&&(D=Qu(B[1],w)),F=fe(F),k.push({lx:T,ly:R,text:F,midAngle:S,centroid:P,percentage:E,data:$.data,visible:!0,color:w,inlineColor:D})}),!x&&!s.allowOverlap){const $=k.filter(P=>P.midAngle<Math.PI),I=k.filter(P=>P.midAngle>=Math.PI);this.distribute($,b,h,c,y),this.distribute(I,b,h,c,y);const E=r+f;for(const P of k){if(!P.visible)continue;const S=Math.max(-E,Math.min(E,P.ly)),w=Math.sqrt(Math.max(0,E*E-S*S)),A=P.midAngle<Math.PI;P.lx=A?Math.max(w,r*.3):-Math.max(w,r*.3)}}else if(x&&!s.allowOverlap){const $=[],I=k.filter(E=>E.visible).sort((E,P)=>P.percentage-E.percentage);for(const E of I){const P=Je(E.text,v),S=v*1.1,w=E.centroid[0],A=E.centroid[1],T={l:w-P/2,r:w+P/2,t:A-S/2,b:A+S/2};if($.some(F=>T.l<F.r&&T.r>F.l&&T.t<F.b&&T.b>F.t)){E.visible=!1;continue}$.push(T)}}const C=t.append("g").attr("class","katucharts-pie-labels");k.forEach($=>{if(!$.visible)return;const{lx:I,ly:E,text:P,midAngle:S,centroid:w,color:A,inlineColor:T}=$,R=S<Math.PI,F=A||d;if(u>0&&f>=0){const B=r+p,H=B*Math.sin(S),J=-B*Math.cos(S),X=s.connectorShape||"fixedOffset";if(X==="straight")C.append("line").attr("class","katucharts-pie-connector").attr("x1",w[0]).attr("y1",w[1]).attr("x2",I).attr("y2",E).attr("stroke",F).attr("stroke-width",u);else if(X==="crookedLine"){const j=s.crookDistance??"70%",W=typeof j=="string"?parseFloat(j)/100:j/f,U=r+f*W,G=U*Math.sin(S),N=-U*Math.cos(S);C.append("path").attr("class","katucharts-pie-connector").attr("d",`M${w[0]},${w[1]}L${G},${N}L${I},${E}`).attr("fill","none").attr("stroke",F).attr("stroke-width",u)}else if(typeof X=="function"){const j=X({connectorPosition:{from:w,to:[I,E]},labelDistance:f,labelPosition:[I,E]});C.append("path").attr("class","katucharts-pie-connector").attr("d",j).attr("fill","none").attr("stroke",F).attr("stroke-width",u)}else{const j=r+f*.5,W=j*Math.sin(S),U=-j*Math.cos(S);C.append("path").attr("class","katucharts-pie-connector").attr("d",`M${H},${J}L${W},${U}L${I},${E}`).attr("fill","none").attr("stroke",F).attr("stroke-width",u)}}const D=C.append("text").attr("x",(x?w[0]:I)+(s.x??0)).attr("y",(x?w[1]:E)+(s.y??0)).attr("text-anchor",x?"middle":R?"start":"end").attr("dominant-baseline","middle").attr("font-size",y).attr("fill",T||g).style("pointer-events","none").text(P),z=s.style||{};z.fontWeight&&D.attr("font-weight",z.fontWeight),z.fontFamily&&D.attr("font-family",z.fontFamily),z.textOutline&&D.style("text-shadow",z.textOutline)})}distribute(t,e,i,r,o){const s=t.filter(u=>u.visible);if(s.length<=1)return;const a=-(i-5),c=i-5-a,h=s.map(u=>({target:u.ly-a,size:e,rank:u.percentage,pos:0,removed:!1,label:u})),f=e*3;this.distributeBoxes(h,c,f);for(const u of h)u.removed?u.label.visible=!1:u.label.ly=a+u.pos+e/2}distributeBoxes(t,e,i){const r=t.filter(s=>!s.removed);if(r.length===0)return;let o=r.reduce((s,a)=>s+a.size,0);if(o>e){const s=[...r].sort((l,c)=>l.rank-c.rank);let a=0;for(;o>e&&a<s.length;)s[a].removed=!0,o-=s[a].size,a++}for(let s=0;s<=t.length;s++){const a=r.filter(c=>!c.removed);if(a.length<=1)break;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}let l=null;for(const c of a)Math.abs(c.pos-c.target)<=i||(!l||c.rank<l.rank)&&(l=c);if(!l)break;l.removed=!0}}render3DEffect(t,e,i,r,o){const{colors:s}=this.context,a=t.insert("g",":first-child").attr("class","katucharts-pie-3d");for(const l of e){const c=e.indexOf(l),h=l.data.color||(this.config.colors?this.config.colors[c%this.config.colors.length]:s[c%s.length]),f=l.startAngle-Math.PI/2,u=l.endAngle-Math.PI/2;if(f>0&&u>0||f<0&&u<0&&f<-Math.PI&&u<-Math.PI)continue;const d=Se().innerRadius(i).outerRadius(r).startAngle(l.startAngle).endAngle(l.endAngle);a.append("path").attr("d",d({})).attr("fill",h).attr("opacity",.7).attr("transform",`translate(0,${o})`)}}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class Qf extends Ut{constructor(t){super(t)}render(){var p,y;const{plotArea:t,colors:e}=this.context,i=this.data.filter(g=>g.y!==null&&g.y!==void 0),r=this.context.animate,o=t.height*.8,s=o/i.length,a=Math.max(...i.map(g=>g.y??0),1),l=t.width/2,c=t.width*.7,h=c*.15,f=(t.height-o)/2,u=((y=(p=this.config.states)==null?void 0:p.inactive)==null?void 0:y.opacity)??.4,d=[];i.forEach((g,m)=>{var $,I,E;const x=(g.y??0)/a,v=m<i.length-1?(i[m+1].y??0)/a:x*.5,b=h+(c-h)*x,k=h+(c-h)*v,M=f+m*s,C=[`M ${l-b/2} ${M}`,`L ${l+b/2} ${M}`,`L ${l+k/2} ${M+s}`,`L ${l-k/2} ${M+s}`,"Z"].join(" "),L=g.color||e[m%e.length],_=this.group.append("path").attr("d",C).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("class","katucharts-funnel-segment").style("cursor",this.config.cursor||"pointer");if(d.push(_),r?_.attr("fill",L).attr("opacity",0).transition().duration(bt).ease(pt).delay(_e(m,0,Wt,i.length)).attr("opacity",1):_.attr("fill",L),($=this.config.dataLabels)!=null&&$.enabled){const P=this.config.dataLabels,S=((I=P.style)==null?void 0:I.fontSize)||wt,w=P.color||((E=P.style)==null?void 0:E.color)||me;let A;P.formatter?A=P.formatter.call({point:g,series:{name:this.config.name},x:g.x,y:g.y}):P.format?A=fe(Zt(P.format,{point:g,series:{name:this.config.name}})):A=g.name||String(g.y),this.group.append("text").attr("class","katucharts-funnel-label").attr("x",l+(P.x??0)).attr("y",M+s/2+(P.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",S).attr("fill",w).style("pointer-events","none").text(A)}this.config.enableMouseTracking!==!1&&_.on("mouseover",P=>{var S,w;_.transition("move").duration(K).ease(Z).attr("transform","translate(0, -3)").style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.attr("opacity",1)),d.forEach((A,T)=>{T!==m&&A.transition("highlight").duration(K).ease(Z).attr("opacity",u)}),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:P,plotX:l,plotY:M+s/2}),(w=(S=g.events)==null?void 0:S.mouseOver)==null||w.call(g,P)}).on("mouseout",P=>{var S,w;_.transition("move").duration(K).ease(Z).attr("transform","").style("filter",""),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.transition("highlight").duration(K).ease(Z).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:P}),(w=(S=g.events)==null?void 0:S.mouseOut)==null||w.call(g,P)}).on("click",P=>{var S,w,A,T;this.context.events.emit("point:click",{point:g,index:m,series:this,event:P}),(w=(S=g.events)==null?void 0:S.click)==null||w.call(g,P),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,P)})})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class Z2 extends Qf{constructor(t){super(t),this.data=[...t._processedData||[]].reverse()}}function Ue(n){for(var t=n.length/6|0,e=new Array(t),i=0;i<t;)e[i]="#"+n.slice(i*6,++i*6);return e}const On=n=>zy(n[n.length-1]);var K2=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Ue);const J2=On(K2);var Q2=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Ue);const tw=On(Q2);var ew=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Ue);const td=On(ew);var nw=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Ue);const ed=On(nw);var iw=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Ue);const rw=On(iw);var ow=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Ue);const sw=On(ow);var aw=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Ue);const cw=On(aw);var lw=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Ue);const hw=On(lw);var uw=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Ue);const fw=On(uw);function hs(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}const dw=hs(Ue("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));hs(Ue("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));var pw=hs(Ue("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),gw=hs(Ue("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function mw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class yw extends Ut{constructor(t){super(t),t.showInLegend=!1}render(){var S,w;const{plotArea:t}=this.context,e=this.context.animate,i=this.data,r=this.config.colorAxis||{},o=i.map(A=>A.value??A.z??A.y??0).filter(A=>A!=null),s=r.min??(o.length>0?Math.min(...o):0),a=r.max??(o.length>0?Math.max(...o):1),l=this.config.nullColor??"#e4e4e4",c=((w=(S=this.config.states)==null?void 0:S.inactive)==null?void 0:w.opacity)??.4,h=this.buildColorScale(r,s,a),f=this.config.interpolation===!0,u=this.config.colsize??1,d=this.config.rowsize??1,p=this.config.pointPadding??0,y=this.getUniqueValues("x"),g=this.getUniqueValues("yCategory"),m=y.length>0&&g.length>0,x=m?t.width/y.length:t.width/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.x??0))+u)/u)),v=m?t.height/g.length:t.height/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.y??0))+d)/d)),b=A=>{if(A.color)return A.color;const T=A.value??A.z??A.y;return T==null?l:h(T)},k=A=>m?(typeof A.x=="number"?A.x:0)*x:(A.x??0)/u*x,M=A=>m?(typeof A.yCategory=="number"?A.yCategory:typeof A.y=="number"?A.y:0)*v:(A.y??0)/d*v,C=p*x,L=p*v,_=x*u-(this.config.borderWidth??1),$=v*d-(this.config.borderWidth??1),I=Math.max(1,(m?x-1:_)-C*2),E=Math.max(1,(m?v-1:$)-L*2);if(f){this.renderInterpolated(i,t,h,l,k,M,x,v,b),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a);return}const P=this.group.selectAll(".katucharts-heatmap-cell").data(i).join("rect").attr("class","katucharts-heatmap-cell").attr("x",A=>k(A)+C).attr("y",A=>M(A)+L).attr("width",I).attr("height",E).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("rx",mw(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");e?P.attr("fill","#fff").transition().duration(600).delay((A,T)=>T*8).attr("fill",A=>b(A)):P.attr("fill",A=>b(A)),this.config.enableMouseTracking!==!1&&P.on("mouseover",(A,T)=>{var H,J,X,j;const R=rt(A.currentTarget),F=b(T),D=((J=(H=oe(F))==null?void 0:H.brighter(.4))==null?void 0:J.toString())||F;R.interrupt("hover").transition("hover").duration(K).ease(Z).attr("fill",D).attr("stroke","#333").attr("stroke-width",2),R.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.3))"),P.interrupt("highlight"),P.attr("opacity",1),P.filter(W=>W!==T).transition("highlight").duration(K).ease(Z).attr("opacity",c);const z=i.indexOf(T),B=T.value??T.z??T.y;this.context.events.emit("point:mouseover",{point:{...T,value:B},index:z,series:this,event:A,plotX:k(T)+x/2,plotY:M(T)+v/2}),(j=(X=T.events)==null?void 0:X.mouseOver)==null||j.call(T,A)}).on("mouseout",(A,T)=>{var D,z;const R=rt(A.currentTarget);R.interrupt("hover").transition("hover").duration(K).ease(Z).attr("fill",b(T)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1),R.style("filter",""),P.interrupt("highlight"),P.transition("highlight").duration(K).ease(Z).attr("opacity",1);const F=i.indexOf(T);this.context.events.emit("point:mouseout",{point:T,index:F,series:this,event:A}),(z=(D=T.events)==null?void 0:D.mouseOut)==null||z.call(T,A)}).on("click",(A,T)=>{var F,D,z,B;const R=i.indexOf(T);this.context.events.emit("point:click",{point:T,index:R,series:this,event:A}),(D=(F=T.events)==null?void 0:F.click)==null||D.call(T,A),(B=(z=this.config.events)==null?void 0:z.click)==null||B.call(this,A)}),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a)}renderInterpolated(t,e,i,r,o,s,a,l,c){const h=new Set,f=new Set;for(const L of t)h.add(L.x??0),f.add(L.yCategory??L.y??0);const u=Array.from(h).sort((L,_)=>L-_),d=Array.from(f).sort((L,_)=>L-_),p=u.length,y=d.length;if(p===0||y===0)return;const g=new Map;for(const L of t){const _=L.value??L.z??L.y,$=u.indexOf(L.x??0),I=d.indexOf(L.yCategory??L.y??0);_!=null&&g.set(`${$},${I}`,_)}const m=Math.round(e.width),x=Math.round(e.height),v=document.createElement("canvas");v.width=m,v.height=x;const b=v.getContext("2d");if(!b)return;const k=b.createImageData(m,x),M=k.data;for(let L=0;L<x;L++)for(let _=0;_<m;_++){const $=_/m*p-.5,I=L/x*y-.5,E=Math.floor($),P=Math.floor(I),S=$-E,w=I-P,A=(W,U)=>g.get(`${Math.max(0,Math.min(p-1,W))},${Math.max(0,Math.min(y-1,U))}`)??null,T=A(E,P),R=A(E+1,P),F=A(E,P+1),D=A(E+1,P+1),z=[T,R,F,D].filter(W=>W!==null);if(z.length===0){const W=Ye(r),U=(L*m+_)*4;M[U]=W.r,M[U+1]=W.g,M[U+2]=W.b,M[U+3]=255;continue}const B=W=>W??z[0],H=B(T)*(1-S)*(1-w)+B(R)*S*(1-w)+B(F)*(1-S)*w+B(D)*S*w,J=i(H),X=Ye(J),j=(L*m+_)*4;M[j]=X.r,M[j+1]=X.g,M[j+2]=X.b,M[j+3]=255}b.putImageData(k,0,0);const C=v.toDataURL();this.group.append("image").attr("class","katucharts-heatmap-interpolated").attr("width",e.width).attr("height",e.height).attr("href",C).style("image-rendering","auto")}buildColorScale(t,e,i){const r=t.reversed===!0,o=r?i:e,s=r?e:i;if(t.dataClasses&&t.dataClasses.length>0){const u=t.dataClasses;return d=>{var p;for(const y of u){const g=y.from??-1/0,m=y.to??1/0;if(d>=g&&d<m)return y.color||"#cccccc"}return((p=u[u.length-1])==null?void 0:p.color)||"#cccccc"}}const a=t.type==="logarithmic",l=a?Math.max(o,1e-10):o,c=()=>a?Po().domain([l,s]).clamp(!0):ve().domain([o,s]).clamp(!0);if(t.stops&&t.stops.length>=2){const u=t.stops,d=c();return p=>{const y=d(a?Math.max(p,1e-10):p);let g=0;for(;g<u.length-1&&!(y<=u[g+1][0]);g++);const[m,x]=u[g],[v,b]=u[Math.min(g+1,u.length-1)],k=v!==m?(y-m)/(v-m):0;return gi(x,b)(k)}}if(t.minColor&&t.maxColor){const u=gi(t.minColor,t.maxColor),d=c();return p=>u(d(a?Math.max(p,1e-10):p))}const h=r?[i,e]:[e,i],f=Ru(td).domain(h);return u=>f(u)}renderColorAxis(t,e,i){var b,k;const r=this.config.colorAxis||{};if(((b=r.labels)==null?void 0:b.enabled)===!1)return;const{plotArea:o}=this.context,a=(this.context.legendConfig||{}).layout==="vertical",l=this.context.plotGroup||this.group;l.selectAll(".katucharts-color-axis").remove();const c=l.append("g").attr("class","katucharts-color-axis"),h=((k=r.labels)==null?void 0:k.style)||{},f=h.fontSize||wt,u=h.color||this.autoLabelColor(),d=i-e,p=d/6,y=Math.pow(10,Math.floor(Math.log10(p))),g=[1,2,2.5,5,10].find(M=>M*y>=p)*y,m=Math.ceil(e/g)*g,x=[];for(let M=m;M<=i+g*.01;M+=g)x.push(Math.round(M*1e6)/1e6);(x.length===0||x[0]>e)&&x.unshift(e),x[x.length-1]<i&&x.push(i);const v=g>=1?0:g>=.1?1:2;if(r.dataClasses&&r.dataClasses.length>0){const M=r.dataClasses,C=Math.min(o.width*.6,300),L=12,_=(o.width-C)/2,$=o.height+60,I=C/M.length;for(let E=0;E<M.length;E++){const P=M[E];c.append("rect").attr("x",_+E*I).attr("y",$).attr("width",I).attr("height",L).attr("fill",P.color||"#ccc").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",E===0?2:0).attr("ry",E===0?2:0),P.name&&c.append("text").attr("x",_+E*I+I/2).attr("y",$+L+30).attr("font-size",f).attr("fill",u).attr("text-anchor","middle").text(P.name)}return}if(a){const C=Math.min(o.height*.7,200),L=o.width+20,_=(o.height-C)/2,$=c.append("defs"),I=x.length-1,E=C/I;for(let P=0;P<I;P++){const S=I-1-P,w=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,A=$.append("linearGradient").attr("id",w).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");A.append("stop").attr("offset","0%").attr("stop-color",t(x[S+1])),A.append("stop").attr("offset","100%").attr("stop-color",t(x[S])),c.append("rect").attr("x",L).attr("y",_+P*E).attr("width",12).attr("height",E+.5).attr("fill",`url(#${w})`).attr("stroke","none")}c.append("rect").attr("x",L).attr("y",_).attr("width",12).attr("height",C).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let P=0;P<x.length;P++){const S=_+C-(x[P]-e)/d*C;c.append("line").attr("x1",L+12).attr("y1",S).attr("x2",L+12+4).attr("y2",S).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",L+12+7).attr("y",S+4).attr("font-size",f).attr("fill",u).attr("text-anchor","start").text(x[P].toFixed(v))}}else{const C=Math.min(o.width*.6,300),L=(o.width-C)/2,_=o.height+60,$=c.append("defs"),I=x.length-1,E=C/I;for(let P=0;P<I;P++){const S=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,w=$.append("linearGradient").attr("id",S).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");w.append("stop").attr("offset","0%").attr("stop-color",t(x[P])),w.append("stop").attr("offset","100%").attr("stop-color",t(x[P+1])),c.append("rect").attr("x",L+P*E).attr("y",_).attr("width",E+.5).attr("height",12).attr("fill",`url(#${S})`).attr("stroke","none")}c.append("rect").attr("x",L).attr("y",_).attr("width",C).attr("height",12).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let P=0;P<x.length;P++){const S=L+(x[P]-e)/d*C;c.append("line").attr("x1",S).attr("y1",_+12+8).attr("x2",S).attr("y2",_+12+16).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",S).attr("y",_+12+30).attr("font-size",f).attr("fill",u).attr("text-anchor",P===0?"start":P===x.length-1?"end":"middle").text(x[P].toFixed(v))}}}renderHeatmapLabels(t,e,i,r,o,s){var f,u;const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const l=a.minCellHeight??20;if(o<l)return;const c=((f=a.style)==null?void 0:f.fontSize)||wt,h=a.color||((u=a.style)==null?void 0:u.color)||void 0;this.group.selectAll(".katucharts-heatmap-label").data(t).join("text").attr("class","katucharts-heatmap-label").attr("x",d=>e(d)+r/2+(a.x??0)).attr("y",d=>i(d)+o/2+(a.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",c).attr("fill",d=>Cn(s(d),h)).style("pointer-events","none").text(d=>{const p=d.value??d.z??d.y;return p==null?a.nullFormatter?a.nullFormatter.call({point:d,series:{name:this.config.name}}):a.nullFormat?a.nullFormat:"":a.formatter?a.formatter.call({point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y}):a.format?fe(Zt(a.format,{point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y,value:p})):String(p)})}getUniqueValues(t){const e=new Set;for(const i of this.data){const r=i[t];r!==void 0&&e.add(r)}return Array.from(e).sort((i,r)=>i-r)}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function xw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class bw extends Ut{constructor(t){super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{boxWidth:a,boxOffset:l}=this.computeBoxGeometry(),c=this.config.medianColor||null,h=this.config.medianWidth??2,f=on(this.config.medianDashStyle),u=this.config.stemWidth??1,d=on(this.config.stemDashStyle),p=this.config.whiskerWidth??2,y=on(this.config.whiskerDashStyle),g=this.parseWhiskerLength(this.config.whiskerLength,a),m=on(this.config.boxDashStyle),x=this.config.lineWidth??1,b=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;for(let k=0;k<o.length;k++){const M=o[k],C=t.getPixelForValue(M.x??k)+l+a/2,L=M.low??0,_=M.q1??M.low??0,$=M.median??M.y??0,I=M.q3??M.high??0,E=M.high??0,P=e.getPixelForValue((L+E)/2),S=M.color||this.getPointColor(k,r),w=this.config.fillColor??"transparent",A=this.config.stemColor||S,T=this.config.whiskerColor||S,R=this.group.append("g").attr("class","katucharts-boxplot-point").style("cursor",this.config.cursor||"pointer"),F=R.append("line").attr("x1",C).attr("x2",C).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),D=R.append("line").attr("x1",C).attr("x2",C).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),z=R.append("rect").attr("x",C-a/2).attr("width",a).attr("fill",w).attr("stroke",S).attr("stroke-width",x).attr("stroke-dasharray",m).attr("rx",xw(this.config.borderRadius)),B=R.append("line").attr("x1",C-a/2).attr("x2",C+a/2).attr("stroke",c||this.config.lineColor||S).attr("stroke-width",h).attr("stroke-dasharray",f),H=R.append("line").attr("x1",C-g/2).attr("x2",C+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y),J=R.append("line").attr("x1",C-g/2).attr("x2",C+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y);if(s){const X=_e(k,0,Wt,o.length),j=b;F.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(_)),D.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",P).attr("height",0).transition().duration(j).ease(pt).delay(X).attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),H.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),J.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E))}else F.attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(_)),D.attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),H.attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),J.attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E));this.attachBoxPointEvents(R,M,k,C,e.getPixelForValue($),x)}this.renderDataLabels(o,(k,M)=>t.getPixelForValue(k.x??M)+l+a/2,k=>e.getPixelForValue(k.high??k.y??0)),s&&this.emitAfterAnimate(b+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.data,{boxWidth:o,boxOffset:s}=this.computeBoxGeometry(),l=this.group.selectAll(".katucharts-boxplot-point").nodes();if(l.length!==r.length){this.group.selectAll("*").remove(),this.render();return}for(let c=0;c<Math.min(l.length,r.length);c++){const h=r[c],f=l[c],u=e.getPixelForValue(h.x??c)+s+o/2,d=h.low??0,p=h.q1??h.low??0,y=h.median??h.y??0,g=h.q3??h.high??0,m=h.high??0,x=f.querySelectorAll("line"),v=f.querySelector("rect");if(x[0]&&this.group.select(()=>x[0]).transition().duration(t).attr("x1",u).attr("x2",u).attr("y1",i.getPixelForValue(d)).attr("y2",i.getPixelForValue(p)),x[1]&&this.group.select(()=>x[1]).transition().duration(t).attr("x1",u).attr("x2",u).attr("y1",i.getPixelForValue(g)).attr("y2",i.getPixelForValue(m)),v&&this.group.select(()=>v).transition().duration(t).attr("x",u-o/2).attr("y",i.getPixelForValue(g)).attr("height",Math.abs(i.getPixelForValue(p)-i.getPixelForValue(g))),x[2]&&this.group.select(()=>x[2]).transition().duration(t).attr("x1",u-o/2).attr("x2",u+o/2).attr("y1",i.getPixelForValue(y)).attr("y2",i.getPixelForValue(y)),x[3]){const b=this.parseWhiskerLength(this.config.whiskerLength,o);this.group.select(()=>x[3]).transition().duration(t).attr("x1",u-b/2).attr("x2",u+b/2).attr("y1",i.getPixelForValue(d)).attr("y2",i.getPixelForValue(d))}if(x[4]){const b=this.parseWhiskerLength(this.config.whiskerLength,o);this.group.select(()=>x[4]).transition().duration(t).attr("x1",u-b/2).attr("x2",u+b/2).attr("y1",i.getPixelForValue(m)).attr("y2",i.getPixelForValue(m))}}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(r,(c,h)=>e.getPixelForValue(c.x??h)+s+o/2,c=>i.getPixelForValue(c.high??c.y??0))}computeBoxGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=Math.min(200*r,e.width/Math.max(i.length,1));let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:(c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth)),c=Math.min(c,90));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{boxWidth:c,boxOffset:f}}getPointColor(t,e){if(this.config.colorByPoint){const i=this.config.colors||this.context.colors;return i[t%i.length]}return e}parseWhiskerLength(t,e){return t===void 0?e*.5:typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?e*(parseFloat(t)/100):parseFloat(t)||e*.5}attachBoxPointEvents(t,e,i,r,o,s){if(this.config.enableMouseTracking===!1)return;const a=()=>this.group.selectAll(".katucharts-boxplot-point");t.on("mouseover",l=>{var h,f,u,d,p;t.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),t.select("rect").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",s+1),a().filter(function(){return this!==t.node()}).interrupt("hover").transition("hover").duration(K).ease(Z).style("opacity",.4),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:l,plotX:r,plotY:o}),(f=(h=e.events)==null?void 0:h.mouseOver)==null||f.call(e,l),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(e,l)}).on("mouseout",l=>{var c,h,f,u,d;t.style("filter",""),t.select("rect").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",s),a().interrupt("hover").transition("hover").duration(K).ease(Z).style("opacity",null),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.mouseOut)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(e,l)}).on("click",l=>{var c,h,f,u,d,p,y;this.context.events.emit("point:click",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.click)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.click)==null||d.call(e,l),(y=(p=this.config.events)==null?void 0:p.click)==null||y.call(this,l)})}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(let o=0;o<this.data.length;o++){const s=this.data[o],a=s.x??o;t=Math.min(t,a),e=Math.max(e,a),i=Math.min(i,s.low??s.y??0),r=Math.max(r,s.high??s.y??0)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function nd(){Tt.registerType("line",Uf),Tt.registerType("spline",H2),Tt.registerType("area",qf),Tt.registerType("areaspline",G2),Tt.registerType("column",jf),Tt.registerType("bar",U2),Tt.registerType("scatter",q2),Tt.registerType("bubble",j2),Tt.registerType("pie",Jf),Tt.registerType("donut",Jf),Tt.registerType("heatmap",yw),Tt.registerType("boxplot",bw)}function id(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class vw extends Ut{constructor(t){super(t),this.processed=[]}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l}=this.computeBarGeometry();this.processed=this.processWaterfallData(o);const c=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed).join("rect").attr("class","katucharts-waterfall-bar").attr("x",d=>t.getPixelForValue(d.x??0)+l).attr("width",a).attr("rx",id(this.config.borderRadius)).attr("fill",(d,p)=>this.getBarColor(d,p,r)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),h=e.getPixelForValue(0),u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;s?c.attr("y",h).attr("height",0).transition().duration(u).ease(pt).delay((d,p)=>_e(p,0,Wt,this.processed.length)).attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)):c.attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)),this.attachBarEvents(c),this.renderConnectors(a,l,!!s),this.renderDataLabels(this.processed,d=>t.getPixelForValue(d.x??0)+l+a/2,d=>e.getPixelForValue(d._end)),s&&this.emitAfterAnimate(u+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.getColor(),{barWidth:o,barOffset:s}=this.computeBarGeometry();this.processed=this.processWaterfallData(this.data);const a=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed);a.exit().transition().duration(t).attr("opacity",0).remove(),a.enter().append("rect").attr("class","katucharts-waterfall-bar").attr("rx",id(this.config.borderRadius)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).attr("y",i.getPixelForValue(0)).attr("height",0).merge(a).transition().duration(t).attr("x",c=>e.getPixelForValue(c.x??0)+s).attr("width",o).attr("fill",(c,h)=>this.getBarColor(c,h,r)).attr("y",c=>Math.min(i.getPixelForValue(c._start),i.getPixelForValue(c._end))).attr("height",c=>Math.max(Math.abs(i.getPixelForValue(c._start)-i.getPixelForValue(c._end)),this.config.minPointLength??0)),this.group.selectAll(".katucharts-waterfall-connector").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderConnectors(o,s,!1),this.attachBarEvents(this.group.selectAll(".katucharts-waterfall-bar")),this.renderDataLabels(this.processed,c=>e.getPixelForValue(c.x??0)+s+o/2,c=>i.getPixelForValue(c._end))}processWaterfallData(t){let e=0,i=0;return t.map((r,o)=>{const s=!!r.isSum,a=!!r.isIntermediateSum,l=s||a,c=r.y??0;let h,f;return s?(h=0,f=e):a?(h=i,f=e,i=e):(h=e,f=e+c,e+=c),{...r,_start:h,_end:f,_isTotal:l,_isIntermediate:a}})}getBarColor(t,e,i){if(t.color)return t.color;if(this.config.colorByPoint){const o=this.config.colors||this.context.colors;return o[e%o.length]}return t._isIntermediate?this.config.intermediateSumColor||this.config.sumColor||"#434348":t._isTotal?this.config.sumColor||"#434348":(t.y??0)>=0?this.config.upColor||i:this.config.negativeColor||"#f15c80"}computeBarGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=e.width/Math.max(i.length,1);let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{barWidth:c,barOffset:f}}renderConnectors(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.lineColor||"#999",a=this.config.lineWidth??1,l=on(this.config.dashStyle||"Dot"),c=this.group.selectAll(".katucharts-waterfall-connector").data(this.processed.slice(0,-1)).join("line").attr("class","katucharts-waterfall-connector").attr("x1",h=>r.getPixelForValue(h.x??0)+e+t).attr("x2",(h,f)=>r.getPixelForValue(this.processed[f+1].x??0)+e).attr("y1",h=>o.getPixelForValue(h._end)).attr("y2",h=>o.getPixelForValue(h._end)).attr("stroke",s).attr("stroke-width",a).attr("stroke-dasharray",l);i&&c.attr("opacity",0).transition().duration(bt).ease(pt).delay((h,f)=>bt+f*Wt).attr("opacity",1)}attachBarEvents(t){if(this.config.enableMouseTracking===!1)return;const{xAxis:e,yAxis:i}=this.context,r=this.processed;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(o,s)=>{var h,f,u,d,p;const a=o.currentTarget,l=a.getAttribute("fill")||"";a.setAttribute("data-orig-fill",l),a.style.filter="drop-shadow(0 2px 4px rgba(0,0,0,0.25))",rt(a).interrupt("hover").transition("hover").duration(K).ease(Z).style("fill",Yf(l,.15));const c=r.indexOf(s);this.context.events.emit("point:mouseover",{point:s,index:c,series:this,event:o,plotX:e.getPixelForValue(s.x??0),plotY:i.getPixelForValue(s._end)}),(f=(h=s.events)==null?void 0:h.mouseOver)==null||f.call(s,o),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(s,o)}).on("mouseout",(o,s)=>{var c,h,f,u,d;const a=o.currentTarget;a.style.filter="",rt(a).interrupt("hover").transition("hover").duration(K).ease(Z).style("fill",null);const l=r.indexOf(s);this.context.events.emit("point:mouseout",{point:s,index:l,series:this,event:o}),(h=(c=s.events)==null?void 0:c.mouseOut)==null||h.call(s,o),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(s,o)}).on("click",(o,s)=>{var l,c,h,f,u,d,p;const a=r.indexOf(s);this.context.events.emit("point:click",{point:s,index:a,series:this,event:o}),(c=(l=s.events)==null?void 0:l.click)==null||c.call(s,o),(u=(f=(h=this.config.point)==null?void 0:h.events)==null?void 0:f.click)==null||u.call(s,o),(p=(d=this.config.events)==null?void 0:d.click)==null||p.call(this,o),this.handlePointSelect(rt(o.currentTarget),s,a,o)})}getDataExtents(){let t=1/0,e=-1/0,i=0,r=0,o=0;for(let s=0;s<this.data.length;s++){const a=this.data[s],l=a.x??s;t=Math.min(t,l),e=Math.max(e,l);const c=a.isSum||a.isIntermediateSum,h=a.y??0;c||(o+=h),i=Math.min(i,c?0:Math.min(o-h,o),0),r=Math.max(r,o)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function ww(n,t){return n.parent===t.parent?1:2}function kw(n){return n.reduce(Mw,0)/n.length}function Mw(n,t){return n+t.x}function Aw(n){return 1+n.reduce(Sw,0)}function Sw(n,t){return Math.max(n,t.y)}function _w(n){for(var t;t=n.children;)n=t[0];return n}function Cw(n){for(var t;t=n.children;)n=t[t.length-1];return n}function Pw(){var n=ww,t=1,e=1,i=!1;function r(o){var s,a=0;o.eachAfter(function(u){var d=u.children;d?(u.x=kw(d),u.y=Aw(d)):(u.x=s?a+=n(u,s):0,u.y=0,s=u)});var l=_w(o),c=Cw(o),h=l.x-n(l,c)/2,f=c.x+n(c,l)/2;return o.eachAfter(i?function(u){u.x=(u.x-o.x)*t,u.y=(o.y-u.y)*e}:function(u){u.x=(u.x-h)/(f-h)*t,u.y=(1-(o.y?u.y/o.y:1))*e})}return r.separation=function(o){return arguments.length?(n=o,r):n},r.size=function(o){return arguments.length?(i=!1,t=+o[0],e=+o[1],r):i?null:[t,e]},r.nodeSize=function(o){return arguments.length?(i=!0,t=+o[0],e=+o[1],r):i?[t,e]:null},r}function Ew(n){var t=0,e=n.children,i=e&&e.length;if(!i)t=1;else for(;--i>=0;)t+=e[i].value;n.value=t}function Tw(){return this.eachAfter(Ew)}function $w(n,t){let e=-1;for(const i of this)n.call(t,i,++e,this);return this}function Lw(n,t){for(var e=this,i=[e],r,o,s=-1;e=i.pop();)if(n.call(t,e,++s,this),r=e.children)for(o=r.length-1;o>=0;--o)i.push(r[o]);return this}function Iw(n,t){for(var e=this,i=[e],r=[],o,s,a,l=-1;e=i.pop();)if(r.push(e),o=e.children)for(s=0,a=o.length;s<a;++s)i.push(o[s]);for(;e=r.pop();)n.call(t,e,++l,this);return this}function Fw(n,t){let e=-1;for(const i of this)if(n.call(t,i,++e,this))return i}function Rw(n){return this.eachAfter(function(t){for(var e=+n(t.data)||0,i=t.children,r=i&&i.length;--r>=0;)e+=i[r].value;t.value=e})}function Dw(n){return this.eachBefore(function(t){t.children&&t.children.sort(n)})}function zw(n){for(var t=this,e=Bw(t,n),i=[t];t!==e;)t=t.parent,i.push(t);for(var r=i.length;n!==e;)i.splice(r,0,n),n=n.parent;return i}function Bw(n,t){if(n===t)return n;var e=n.ancestors(),i=t.ancestors(),r=null;for(n=e.pop(),t=i.pop();n===t;)r=n,n=e.pop(),t=i.pop();return r}function Ow(){for(var n=this,t=[n];n=n.parent;)t.push(n);return t}function Nw(){return Array.from(this)}function Ww(){var n=[];return this.eachBefore(function(t){t.children||n.push(t)}),n}function Hw(){var n=this,t=[];return n.each(function(e){e!==n&&t.push({source:e.parent,target:e})}),t}function*Vw(){var n=this,t,e=[n],i,r,o;do for(t=e.reverse(),e=[];n=t.pop();)if(yield n,i=n.children)for(r=0,o=i.length;r<o;++r)e.push(i[r]);while(e.length)}function qi(n,t){n instanceof Map?(n=[void 0,n],t===void 0&&(t=Xw)):t===void 0&&(t=Yw);for(var e=new ji(n),i,r=[e],o,s,a,l;i=r.pop();)if((s=t(i.data))&&(l=(s=Array.from(s)).length))for(i.children=s,a=l-1;a>=0;--a)r.push(o=s[a]=new ji(s[a])),o.parent=i,o.depth=i.depth+1;return e.eachBefore(rd)}function Gw(){return qi(this).eachBefore(Uw)}function Yw(n){return n.children}function Xw(n){return Array.isArray(n)?n[1]:null}function Uw(n){n.data.value!==void 0&&(n.value=n.data.value),n.data=n.data.data}function rd(n){var t=0;do n.height=t;while((n=n.parent)&&n.height<++t)}function ji(n){this.data=n,this.depth=this.height=0,this.parent=null}ji.prototype=qi.prototype={constructor:ji,count:Tw,each:$w,eachAfter:Iw,eachBefore:Lw,find:Fw,sum:Rw,sort:Dw,path:zw,ancestors:Ow,descendants:Nw,leaves:Ww,links:Hw,copy:Gw,[Symbol.iterator]:Vw};function Cc(n){return n==null?null:od(n)}function od(n){if(typeof n!="function")throw new Error;return n}function Pr(){return 0}function Er(n){return function(){return n}}function sd(n){n.x0=Math.round(n.x0),n.y0=Math.round(n.y0),n.x1=Math.round(n.x1),n.y1=Math.round(n.y1)}function us(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(i-t)/n.value;++a<l;)s=o[a],s.y0=e,s.y1=r,s.x0=t,s.x1=t+=s.value*c}function ad(){var n=1,t=1,e=0,i=!1;function r(s){var a=s.height+1;return s.x0=s.y0=e,s.x1=n,s.y1=t/a,s.eachBefore(o(t,a)),i&&s.eachBefore(sd),s}function o(s,a){return function(l){l.children&&us(l,l.x0,s*(l.depth+1)/a,l.x1,s*(l.depth+2)/a);var c=l.x0,h=l.y0,f=l.x1-e,u=l.y1-e;f<c&&(c=f=(c+f)/2),u<h&&(h=u=(h+u)/2),l.x0=c,l.y0=h,l.x1=f,l.y1=u}}return r.round=function(s){return arguments.length?(i=!!s,r):i},r.size=function(s){return arguments.length?(n=+s[0],t=+s[1],r):[n,t]},r.padding=function(s){return arguments.length?(e=+s,r):e},r}var qw={depth:-1},cd={},Pc={};function jw(n){return n.id}function Zw(n){return n.parentId}function Ec(){var n=jw,t=Zw,e;function i(r){var o=Array.from(r),s=n,a=t,l,c,h,f,u,d,p,y,g=new Map;if(e!=null){const m=o.map((b,k)=>Kw(e(b,k,r))),x=m.map(ld),v=new Set(m).add("");for(const b of x)v.has(b)||(v.add(b),m.push(b),x.push(ld(b)),o.push(Pc));s=(b,k)=>m[k],a=(b,k)=>x[k]}for(h=0,l=o.length;h<l;++h)c=o[h],d=o[h]=new ji(c),(p=s(c,h,r))!=null&&(p+="")&&(y=d.id=p,g.set(y,g.has(y)?cd:d)),(p=a(c,h,r))!=null&&(p+="")&&(d.parent=p);for(h=0;h<l;++h)if(d=o[h],p=d.parent){if(u=g.get(p),!u)throw new Error("missing: "+p);if(u===cd)throw new Error("ambiguous: "+p);u.children?u.children.push(d):u.children=[d],d.parent=u}else{if(f)throw new Error("multiple roots");f=d}if(!f)throw new Error("no root");if(e!=null){for(;f.data===Pc&&f.children.length===1;)f=f.children[0],--l;for(let m=o.length-1;m>=0&&(d=o[m],d.data===Pc);--m)d.data=null}if(f.parent=qw,f.eachBefore(function(m){m.depth=m.parent.depth+1,--l}).eachBefore(rd),f.parent=null,l>0)throw new Error("cycle");return f}return i.id=function(r){return arguments.length?(n=Cc(r),i):n},i.parentId=function(r){return arguments.length?(t=Cc(r),i):t},i.path=function(r){return arguments.length?(e=Cc(r),i):e},i}function Kw(n){n=`${n}`;let t=n.length;return Tc(n,t-1)&&!Tc(n,t-2)&&(n=n.slice(0,-1)),n[0]==="/"?n:`/${n}`}function ld(n){let t=n.length;if(t<2)return"";for(;--t>1&&!Tc(n,t););return n.slice(0,t)}function Tc(n,t){if(n[t]==="/"){let e=0;for(;t>0&&n[--t]==="\\";)++e;if(!(e&1))return!0}return!1}function Jw(n,t){return n.parent===t.parent?1:2}function $c(n){var t=n.children;return t?t[0]:n.t}function Lc(n){var t=n.children;return t?t[t.length-1]:n.t}function Qw(n,t,e){var i=e/(t.i-n.i);t.c-=i,t.s+=e,n.c+=i,t.z+=e,t.m+=e}function tk(n){for(var t=0,e=0,i=n.children,r=i.length,o;--r>=0;)o=i[r],o.z+=t,o.m+=t,t+=o.s+(e+=o.c)}function ek(n,t,e){return n.a.parent===t.parent?n.a:e}function fs(n,t){this._=n,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=t}fs.prototype=Object.create(ji.prototype);function nk(n){for(var t=new fs(n,0),e,i=[t],r,o,s,a;e=i.pop();)if(o=e._.children)for(e.children=new Array(a=o.length),s=a-1;s>=0;--s)i.push(r=e.children[s]=new fs(o[s],s)),r.parent=e;return(t.parent=new fs(null,0)).children=[t],t}function ik(){var n=Jw,t=1,e=1,i=null;function r(c){var h=nk(c);if(h.eachAfter(o),h.parent.m=-h.z,h.eachBefore(s),i)c.eachBefore(l);else{var f=c,u=c,d=c;c.eachBefore(function(x){x.x<f.x&&(f=x),x.x>u.x&&(u=x),x.depth>d.depth&&(d=x)});var p=f===u?1:n(f,u)/2,y=p-f.x,g=t/(u.x+p+y),m=e/(d.depth||1);c.eachBefore(function(x){x.x=(x.x+y)*g,x.y=x.depth*m})}return c}function o(c){var h=c.children,f=c.parent.children,u=c.i?f[c.i-1]:null;if(h){tk(c);var d=(h[0].z+h[h.length-1].z)/2;u?(c.z=u.z+n(c._,u._),c.m=c.z-d):c.z=d}else u&&(c.z=u.z+n(c._,u._));c.parent.A=a(c,u,c.parent.A||f[0])}function s(c){c._.x=c.z+c.parent.m,c.m+=c.parent.m}function a(c,h,f){if(h){for(var u=c,d=c,p=h,y=u.parent.children[0],g=u.m,m=d.m,x=p.m,v=y.m,b;p=Lc(p),u=$c(u),p&&u;)y=$c(y),d=Lc(d),d.a=c,b=p.z+x-u.z-g+n(p._,u._),b>0&&(Qw(ek(p,c,f),c,b),g+=b,m+=b),x+=p.m,g+=u.m,v+=y.m,m+=d.m;p&&!Lc(d)&&(d.t=p,d.m+=x-m),u&&!$c(y)&&(y.t=u,y.m+=g-v,f=c)}return f}function l(c){c.x*=t,c.y=c.depth*e}return r.separation=function(c){return arguments.length?(n=c,r):n},r.size=function(c){return arguments.length?(i=!1,t=+c[0],e=+c[1],r):i?null:[t,e]},r.nodeSize=function(c){return arguments.length?(i=!0,t=+c[0],e=+c[1],r):i?[t,e]:null},r}function Tr(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(r-e)/n.value;++a<l;)s=o[a],s.x0=t,s.x1=i,s.y0=e,s.y1=e+=s.value*c}var rk=(1+Math.sqrt(5))/2;function ok(n,t,e,i,r,o){for(var s=[],a=t.children,l,c,h=0,f=0,u=a.length,d,p,y=t.value,g,m,x,v,b,k,M;h<u;){d=r-e,p=o-i;do g=a[f++].value;while(!g&&f<u);for(m=x=g,k=Math.max(p/d,d/p)/(y*n),M=g*g*k,b=Math.max(x/M,M/m);f<u;++f){if(g+=c=a[f].value,c<m&&(m=c),c>x&&(x=c),M=g*g*k,v=Math.max(x/M,M/m),v>b){g-=c;break}b=v}s.push(l={value:g,dice:d<p,children:a.slice(h,f)}),l.dice?us(l,e,i,r,y?i+=p*g/y:o):Tr(l,e,i,y?e+=d*g/y:r,o),y-=g,h=f}return s}const ds=function n(t){function e(i,r,o,s,a){ok(t,i,r,o,s,a)}return e.ratio=function(i){return n((i=+i)>1?i:1)},e}(rk);function sk(){var n=ds,t=!1,e=1,i=1,r=[0],o=Pr,s=Pr,a=Pr,l=Pr,c=Pr;function h(u){return u.x0=u.y0=0,u.x1=e,u.y1=i,u.eachBefore(f),r=[0],t&&u.eachBefore(sd),u}function f(u){var d=r[u.depth],p=u.x0+d,y=u.y0+d,g=u.x1-d,m=u.y1-d;g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),u.x0=p,u.y0=y,u.x1=g,u.y1=m,u.children&&(d=r[u.depth+1]=o(u)/2,p+=c(u)-d,y+=s(u)-d,g-=a(u)-d,m-=l(u)-d,g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),n(u,p,y,g,m))}return h.round=function(u){return arguments.length?(t=!!u,h):t},h.size=function(u){return arguments.length?(e=+u[0],i=+u[1],h):[e,i]},h.tile=function(u){return arguments.length?(n=od(u),h):n},h.padding=function(u){return arguments.length?h.paddingInner(u).paddingOuter(u):h.paddingInner()},h.paddingInner=function(u){return arguments.length?(o=typeof u=="function"?u:Er(+u),h):o},h.paddingOuter=function(u){return arguments.length?h.paddingTop(u).paddingRight(u).paddingBottom(u).paddingLeft(u):h.paddingTop()},h.paddingTop=function(u){return arguments.length?(s=typeof u=="function"?u:Er(+u),h):s},h.paddingRight=function(u){return arguments.length?(a=typeof u=="function"?u:Er(+u),h):a},h.paddingBottom=function(u){return arguments.length?(l=typeof u=="function"?u:Er(+u),h):l},h.paddingLeft=function(u){return arguments.length?(c=typeof u=="function"?u:Er(+u),h):c},h}function ak(n,t,e,i,r){var o=n.children,s,a=o.length,l,c=new Array(a+1);for(c[0]=l=s=0;s<a;++s)c[s+1]=l+=o[s].value;h(0,a,n.value,t,e,i,r);function h(f,u,d,p,y,g,m){if(f>=u-1){var x=o[f];x.x0=p,x.y0=y,x.x1=g,x.y1=m;return}for(var v=c[f],b=d/2+v,k=f+1,M=u-1;k<M;){var C=k+M>>>1;c[C]<b?k=C+1:M=C}b-c[k-1]<c[k]-b&&f+1<k&&--k;var L=c[k]-v,_=d-L;if(g-p>m-y){var $=d?(p*_+g*L)/d:g;h(f,k,L,p,y,$,m),h(k,u,_,$,y,g,m)}else{var I=d?(y*_+m*L)/d:m;h(f,k,L,p,y,g,I),h(k,u,_,p,I,g,m)}}}function $r(n,t,e,i,r){(n.depth&1?Tr:us)(n,t,e,i,r)}function ck(n,t,e){return n?n.split(/<br\s*\/?>/i).map(r=>{const o=[],s=/<b(?:\s+style="([^"]*)")?\s*>([\s\S]*?)<\/b>/gi;let a=0,l;for(;(l=s.exec(r))!==null;){if(l.index>a){const d=fe(r.slice(a,l.index));d&&o.push({text:d,fontSize:t,fontWeight:e})}const c=l[1]||"",h=c.match(/font-size\s*:\s*([^;"]+)/i),f=c.match(/font-weight\s*:\s*([^;"]+)/i),u=fe(l[2]);u&&o.push({text:u,fontSize:h?h[1].trim():t,fontWeight:f?f[1].trim():"bold"}),a=l.index+l[0].length}if(a<r.length){const c=fe(r.slice(a));c&&o.push({text:c,fontSize:t,fontWeight:e})}return o}):[]}function lk(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class hk extends Ut{constructor(t){super(t),this.currentRoot=null}render(){var $,I,E;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.config.levels||[],s=this.config.colorByPoint!==!1,a=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,l=this.config.interactByLeaf??!a,c=this.config.alternateStartingDirection===!0,h=((I=($=this.config.states)==null?void 0:$.inactive)==null?void 0:I.opacity)??.4,f=this.buildHierarchy(r),u=a&&this.currentRoot?this.currentRoot:f,d={squarify:ds,squarified:ds,binary:ak,dice:us,slice:Tr,sliceDice:$r,sliceAndDice:$r,strip:Tr,stripes:Tr},p=this.config.layoutAlgorithm||"squarified",y=d[p]||ds,g=this.config.layoutStartingDirection||"vertical",m=this.config.opacity??1,x=c||p==="sliceAndDice"||p==="sliceDice"?$r:y,v=(P,S)=>{var T,R;const w=((T=P.data)==null?void 0:T.sortIndex)??0,A=((R=S.data)==null?void 0:R.sortIndex)??0;return w!==A?w-A:(S.value||0)-(P.value||0)};u.sort(v),sk().size([t.width,t.height]).tile(x).padding(1)(u);const b=a&&!l&&u.children||u.leaves(),k=P=>o.find(S=>S.level===P),C=(((E=this.config.colorAxis)==null?void 0:E.dataClasses)||[]).map(P=>P.color),L=(P,S)=>{var A,T,R,F,D;if(P.data.color)return P.data.color;const w=k(P.depth);if(w!=null&&w.color){const z=w.colorVariation;if((z==null?void 0:z.key)==="brightness"&&((A=P.parent)!=null&&A.children)){const B=P.parent.children,H=B.indexOf(P),J=B.length,X=J>1?-.5+H/(J-1)*(z.to??.5):0,j=si(((T=oe(w.color))==null?void 0:T.toString())||w.color);return j.l=Math.max(.1,Math.min(.95,j.l+X*.3)),j.toString()}return w.color}if(C.length>0)return C[S%C.length];if(s){const z=e[S%e.length],B=P.parent?k(P.parent.depth):void 0;if(((R=B==null?void 0:B.colorVariation)==null?void 0:R.key)==="brightness"){const H=((F=P.parent)==null?void 0:F.children)||[],J=H.indexOf(P),X=H.length,j=B.colorVariation.to??.5,W=X>1?J/(X-1)*j:j*.5,U=si(((D=oe(z))==null?void 0:D.toString())||z);return U.l=Math.max(.1,Math.min(.95,U.l+W*.3)),U.toString()}return z}return this.getColor()},_=this.group.selectAll(".katucharts-treemap-cell").data(b).join("rect").attr("class","katucharts-treemap-cell").attr("x",P=>P.x0).attr("y",P=>P.y0).attr("width",P=>Math.max(0,P.x1-P.x0)).attr("height",P=>Math.max(0,P.y1-P.y0)).attr("fill",(P,S)=>{const w=L(P,S);return P._color=w,w}).attr("stroke",P=>{const S=k(P.depth);return(S==null?void 0:S.borderColor)||this.config.borderColor||this.autoBorderColor()}).attr("stroke-width",P=>{const S=k(P.depth);return(S==null?void 0:S.borderWidth)??this.config.borderWidth??1}).attr("rx",lk(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");i?_.attr("opacity",0).transition().duration(bt).ease(pt).delay((P,S)=>_e(S,0,Wt,b.length)).attr("opacity",m):m!==1&&_.attr("opacity",m),this.config.enableMouseTracking!==!1&&_.on("mouseover",(P,S)=>{var D,z,B,H,J,X;const w=rt(P.currentTarget),A=w.attr("fill"),T=((z=(D=this.config.states)==null?void 0:D.hover)==null?void 0:z.brightness)??.3,R=((H=(B=oe(A))==null?void 0:B.brighter(T))==null?void 0:H.toString())||A;w.transition("fill").duration(K).ease(Z).attr("fill",R),w.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),_.interrupt("highlight"),_.attr("opacity",1),_.filter(j=>j!==S).transition("highlight").duration(K).ease(Z).attr("opacity",h);const F=b.indexOf(S);this.context.events.emit("point:mouseover",{point:S.data,index:F,series:this,event:P,plotX:(S.x0+S.x1)/2,plotY:(S.y0+S.y1)/2}),(X=(J=S.data.events)==null?void 0:J.mouseOver)==null||X.call(S.data,P)}).on("mouseout",(P,S)=>{var R,F;const w=rt(P.currentTarget),A=b.indexOf(S),T=L(S,A);w.transition("fill").duration(K).ease(Z).attr("fill",T),w.style("filter",""),_.interrupt("highlight"),_.transition("highlight").duration(K).ease(Z).attr("opacity",1),this.context.events.emit("point:mouseout",{point:S.data,index:A,series:this,event:P}),(F=(R=S.data.events)==null?void 0:R.mouseOut)==null||F.call(S.data,P)}).on("click",(P,S)=>{var A,T,R,F;const w=b.indexOf(S);if(a&&S.children){this.currentRoot=S,this.group.selectAll("*").remove(),this.render();return}this.context.events.emit("point:click",{point:S.data,index:w,series:this,event:P}),(T=(A=S.data.events)==null?void 0:A.click)==null||T.call(S.data,P),(F=(R=this.config.events)==null?void 0:R.click)==null||F.call(this,P)}),a&&this.currentRoot&&this.currentRoot!==f&&this.renderBreadcrumbs(t,f),this.renderLabels(b,k)}buildHierarchy(t){if(t.some(i=>i.children&&i.children.length>0)){const i=r=>r.map(o=>{const s={...o,value:o.y??o.value??(o.children?0:1)};return s.children&&(s.children=i(s.children)),s});return qi({children:i(t)}).sum(r=>r.children?0:r.value||0)}return qi({children:t.map(i=>({...i,value:i.y??i.value??1}))}).sum(i=>i.value||0)}renderBreadcrumbs(t,e){const i=this.config.breadcrumbs||{},r=i.position||{},o=r.x??0,s=r.y??-20,a=i.separator??" / ",l=i.style||{},c=l.fontSize||"11px",h=l.color||me,f=[];let u=this.currentRoot;for(;u;)f.unshift(u),u=u.parent;const d=this.group.append("g").attr("class","katucharts-treemap-breadcrumbs").attr("transform",`translate(${o},${s})`);let p=0;f.forEach((y,g)=>{var k,M,C;const m=((k=y.data)==null?void 0:k.name)||(g===0?"Root":`Level ${g}`),x=g===f.length-1,v=d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",x?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",x?"default":"pointer").style("text-decoration",x?"none":"underline").text(m);x||v.on("click",()=>{this.currentRoot=y===e?null:y,this.group.selectAll("*").remove(),this.render()});const b=((C=(M=v.node())==null?void 0:M.getComputedTextLength)==null?void 0:C.call(M))||m.length*7;p+=b,x||(d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",h).attr("dominant-baseline","middle").style("pointer-events","none").text(a),p+=a.length*5)})}renderLabels(t,e){var u,d,p;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((u=i.style)==null?void 0:u.fontSize)||wt,s=i.color||((d=i.style)==null?void 0:d.color)||void 0,a=((p=i.style)==null?void 0:p.fontWeight)||"normal",l=i.align||"left",c=i.verticalAlign||"top",h=i.x??4,f=i.y??4;this.group.selectAll(".katucharts-treemap-label").remove(),t.forEach((y,g)=>{const m=e(y.depth),x=m==null?void 0:m.dataLabels;if((x==null?void 0:x.enabled)===!1)return;const v=y.x1-y.x0,b=y.y1-y.y0;if(v<30||b<16)return;let k="";if(i.formatter)k=i.formatter.call({point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value});else{const P=i.format||i.pointFormat;P?k=Zt(P,{point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value}):k=y.data.name||""}const M=ck(k,o,a);let C;l==="right"?C=y.x1-h:l==="center"?C=(y.x0+y.x1)/2:C=y.x0+h;const L=l==="right"?"end":l==="center"?"middle":"start";let _;c==="bottom"?_=y.y1-f:c==="middle"?_=(y.y0+y.y1)/2:_=y.y0+f;const $=this.group.append("text").attr("class","katucharts-treemap-label").attr("x",C).attr("text-anchor",L).attr("fill",Cn(y._color,s)).style("pointer-events","none");let I=_;M.forEach((P,S)=>{if(P.length===0)return;const w=P.map(T=>ye(T.fontSize)),A=Math.max(...w)*1.15;I+=A,P.forEach((T,R)=>{const F=$.append("tspan").attr("font-size",T.fontSize).attr("font-weight",T.fontWeight).text(T.text);R===0&&F.attr("x",C).attr("y",I)})}),this.context.animate&&$.attr("opacity",0).transition().duration(bt).ease(pt).delay(Kn+g*Wt).attr("opacity",1);const E=$.node();if(E)try{const P=E.getBBox();(P.height+f>b||P.width+h>v)&&P.height>b-f&&$.remove()}catch{}})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class uk extends Ut{constructor(t){super(t),this.currentRoot=null,t.showInLegend=!1}render(){var H,J,X,j,W;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config.levels||[],o=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,s=this.config.slicedOffset??0,a=((J=(H=this.config.states)==null?void 0:H.inactive)==null?void 0:J.opacity)??.4,l=this.config.center||["50%","50%"],c=this.resolvePercent(l[0],t.width),h=this.resolvePercent(l[1],t.height),f=this.config.size,u=Math.min(t.width,t.height),d=f?this.resolvePercent(f,u)/2-5:u/2-5,p=this.config.startAngle??0,y=this.config.endAngle??360,g=p*Math.PI/180,x=y*Math.PI/180-g,v=(X=this.group.node())==null?void 0:X.parentElement;v&&rt(v).attr("clip-path",null);const b=this.buildHierarchy(g,x),k=this.config.rootId;let M=b;o&&this.currentRoot?M=this.currentRoot:k&&b.each(U=>{var G;((G=U.data)==null?void 0:G.id)===k&&(M=U)});const C=this.getMaxDepth(M),L=this.config.levelIsConstant!==!1,_=this.computeRingWidths(d,C,r);this.applyCustomRadii(M,_,L),this.assignColors(M,e,r);const $=this.config.borderRadius!==void 0?this.resolveBorderRadius(this.config.borderRadius):0,I=Se().startAngle(U=>U.x0).endAngle(U=>U.x1).innerRadius(U=>U._y0).outerRadius(U=>U._y1).padAngle(.005).cornerRadius($),E=this.group.append("g").attr("transform",`translate(${c},${h})`),P=M.descendants(),S=P[0],w=P.filter(U=>U.depth>0),A=S._y1||S.y1,T=S.data.color||this.getColor()||"#ffffff",R=si(T),F=R&&!isNaN(R.h)?si(R.h,R.s*.4,.88).toString():T,D=E.append("circle").attr("r",A).attr("fill",F).attr("stroke","none").style("cursor",o?"pointer":"default");if(o&&this.currentRoot&&this.currentRoot!==b&&(E.select("circle").on("click",()=>{var U;this.currentRoot=((U=this.currentRoot)==null?void 0:U.parent)||null,this.group.selectAll("*").remove(),this.render()}),this.renderBreadcrumbs(b)),this.config.enableMouseTracking!==!1){const U=this,G="#f0f0f0";D.on("mouseover",function(N){rt(this).transition("fill").duration(K).ease(Z).attr("fill",G),rt(this).style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.15))"),U.context.events.emit("point:mouseover",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:U,event:N,plotX:c,plotY:h})}).on("mouseout",function(N){rt(this).transition("fill").duration(K).ease(Z).attr("fill",F),rt(this).style("filter",""),U.context.events.emit("point:mouseout",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:U,event:N})})}if(A>15){const U=this.config.name||((j=S.data)==null?void 0:j.name)||"";if(U){const G=((W=this.config.dataLabels)==null?void 0:W.style)||{},N=Cn(F,G.color),Y=G.textOutline,O=E.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",A>35?"13px":"10px").attr("font-weight","bold").attr("fill",N).style("pointer-events","none").text(U);if(Y){const ct=Y.split(/\s+/);O.style("paint-order","stroke fill").attr("stroke",ct.length>=2?ct.slice(1).join(" "):"white").attr("stroke-width",parseFloat(Y)||0).attr("stroke-linejoin","round")}}}const z=E.selectAll(".katucharts-sunburst-arc").data(w).join("path").attr("class","katucharts-sunburst-arc").attr("fill",U=>U._color).attr("stroke",U=>{const G=r.find(N=>N.level===U.depth);return(G==null?void 0:G.borderColor)||U._color}).attr("stroke-width",U=>{const G=r.find(N=>N.level===U.depth);return G!=null&&G.borderColor?(G==null?void 0:G.borderWidth)??1:.5}).attr("shape-rendering","geometricPrecision").style("cursor","pointer");s>0&&z.each(function(U){if(U.data.sliced){const G=(U.x0+U.x1)/2,N=s*Math.sin(G),Y=-s*Math.cos(G);rt(this).attr("transform",`translate(${N},${Y})`)}}),i?z.each(function(U,G){const N=rt(this),Y={x0:U.x0,x1:U.x0,_y0:U._y0,_y1:U._y1},O={x0:U.x0,x1:U.x1,_y0:U._y0,_y1:U._y1},ct=ae(Y,O);N.transition().duration(bt).ease(pt).delay(Gf+G*Wt).attrTween("d",()=>it=>I(ct(it)))}):z.attr("d",I);const B=new Set;for(const U of w)U.depth>1&&B.add(U._y0);for(const U of B)E.append("circle").attr("r",U).attr("fill","none").attr("stroke",this.autoBorderColor()).attr("stroke-width",2).style("pointer-events","none");if(this.renderLabels(E,w,r),this.config.enableMouseTracking!==!1){const U=this;z.on("mouseover",function(G,N){var ft,dt,at,ot;const Y=rt(this),O=((dt=(ft=oe(N._color))==null?void 0:ft.brighter(.3))==null?void 0:dt.toString())||N._color;Y.transition("fill").duration(K).ease(Z).attr("fill",O),Y.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.2))"),z.interrupt("highlight"),z.attr("opacity",1),z.filter(q=>q!==N&&!U.isAncestorOf(q,N)).transition("highlight").duration(K).ease(Z).attr("opacity",a);const ct=w.indexOf(N),it=I.centroid(N);U.context.events.emit("point:mouseover",{point:{...N.data,value:N.value,y:N.value??N.data.value},index:ct,series:U,event:G,plotX:c+it[0],plotY:h+it[1]}),(ot=(at=N.data.events)==null?void 0:at.mouseOver)==null||ot.call(N.data,G)}).on("mouseout",function(G,N){var ct,it;const Y=rt(this);Y.transition("fill").duration(K).ease(Z).attr("fill",N._color),Y.style("filter",""),z.interrupt("highlight"),z.transition("highlight").duration(K).ease(Z).attr("opacity",1);const O=w.indexOf(N);U.context.events.emit("point:mouseout",{point:{...N.data,value:N.value,y:N.value??N.data.value},index:O,series:U,event:G}),(it=(ct=N.data.events)==null?void 0:ct.mouseOut)==null||it.call(N.data,G)}).on("click",function(G,N){var O,ct,it,ft;const Y=w.indexOf(N);if(o&&N.children&&N.children.length>0){U.currentRoot=N,ad().size([x,1])(U.currentRoot),g!==0&&U.currentRoot.each(dt=>{dt.x0+=g,dt.x1+=g}),U.group.selectAll("*").remove(),U.render();return}U.context.events.emit("point:click",{point:N.data,index:Y,series:U,event:G}),(ct=(O=N.data.events)==null?void 0:O.click)==null||ct.call(N.data,G),(ft=(it=U.config.events)==null?void 0:it.click)==null||ft.call(U,G)})}}isAncestorOf(t,e){let i=e;for(;i;){if(i===t)return!0;i=i.parent}return!1}buildHierarchy(t=0,e=2*Math.PI){const i=this.data,r=i.length>0&&(i[0].id!==void 0||i[0].parent!==void 0);let o;if(r){const s=i.map(l=>({...l,id:l.id||l.name||String(i.indexOf(l)),parentId:l.parent||null,value:l.y??l.value??void 0}));s.some(l=>!l.parentId||l.parentId==="")?s.forEach(l=>{(!l.parentId||l.parentId==="")&&(l.parentId=null)}):(s.unshift({id:"__root__",parentId:null,name:"Root",value:void 0}),s.forEach(l=>{l.id!=="__root__"&&(!l.parentId||l.parentId==="")&&(l.parentId="__root__")})),o=Ec().id(l=>l.id).parentId(l=>l.parentId)(s),o.sum(l=>l.children?0:l.value??0)}else o=qi({children:this.prepareNestedData(i)}).sum(s=>s.children?0:s.value||0);return ad().size([e,1])(o),t!==0&&o.each(s=>{s.x0+=t,s.x1+=t}),o}prepareNestedData(t){return t.map(e=>{const i={...e,value:e.y??e.value??1};return i.children&&(i.children=this.prepareNestedData(i.children)),i})}getMaxDepth(t){let e=0;return t.each(i=>{i.depth>e&&(e=i.depth)}),e}computeRingWidths(t,e,i){const r=[],o=this.config.levelSize;for(let c=0;c<=e;c++){const h=i.find(f=>f.level===c);h!=null&&h.levelSize?r.push({value:h.levelSize.value,unit:h.levelSize.unit}):o!=null&&o.unit&&(o!=null&&o.value)?r.push({value:o.value,unit:o.unit}):r.push({value:1,unit:"weight"})}let s=t;const a=new Array(e+1).fill(0);for(let c=0;c<=e;c++)r[c].unit==="pixels"&&(a[c]=r[c].value,s-=a[c]);for(let c=0;c<=e;c++)r[c].unit==="percentage"&&(a[c]=r[c].value/100*t,s-=a[c]);let l=0;for(let c=0;c<=e;c++)r[c].unit==="weight"&&(l+=r[c].value);if(l>0&&s>0)for(let c=0;c<=e;c++)r[c].unit==="weight"&&(a[c]=r[c].value/l*s);return a}applyCustomRadii(t,e,i=!0){const r=[0];for(let s=0;s<e.length;s++)r.push(r[s]+e[s]);const o=i?0:t.depth;t.each(s=>{const a=s.depth-o;s._y0=r[a]||0,s._y1=r[a+1]||r[r.length-1]})}assignColors(t,e,i){var l;let r=0;t._color=t.data.color||"transparent";const s=((l=i.find(c=>c.colorByPoint))==null?void 0:l.level)??1,a=c=>{if(c.depth===0)c._color=c.data.color||"transparent";else if(c.data.color)c._color=c.data.color;else if(c.depth===s)c._color=e[r++%e.length];else if(c.depth>s&&c.parent){const h=i.find(d=>d.level===c.depth),f=h==null?void 0:h.colorVariation,u=oe(c.parent._color);if(u&&(f==null?void 0:f.key)==="brightness"){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?p/(y-1)*f.to:f.to*.5,m=si(u.toString());m.l=Math.max(.1,Math.min(.95,m.l+g*.3)),c._color=m.toString()}else if(u){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?-.3+p/(y-1)*.6:0;c._color=u.brighter(g).toString()}else c._color=c.parent._color}else c.depth<s&&c.parent&&(c._color=c.parent._color!=="transparent"?c.parent._color:e[r++%e.length]);if(c.children)for(const h of c.children)a(h)};a(t)}renderLabels(t,e,i){var g;const o=this.config.dataLabels,s=(o==null?void 0:o.rotationMode)||"auto",a=(o==null?void 0:o.style)||{},l=a.fontSize||wt,c=a.textOutline,h=o==null?void 0:o.filter,f=m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.textOutline)||c},d=((g=i.find(m=>m.colorByPoint))==null?void 0:g.level)??1,p=m=>{let x=m;for(;x.depth>d&&x.parent;)x=x.parent;return x._color},y=m=>{var b,k;const x=i.find(M=>M.level===m.depth),v=((k=(b=x==null?void 0:x.dataLabels)==null?void 0:b.style)==null?void 0:k.color)||a.color;return Cn(p(m),v)};t.selectAll(".katucharts-sunburst-label").data(e).join("text").attr("class","katucharts-sunburst-label").attr("transform",m=>{var I;const x=i.find(E=>E.level===m.depth),v=((I=x==null?void 0:x.dataLabels)==null?void 0:I.rotationMode)||s,b=(m.x0+m.x1)/2,k=(m._y0+m._y1)/2,M=b*180/Math.PI-90,C=b<Math.PI/2||b>Math.PI*3/2,L=b>Math.PI;if(v==="parallel")return`rotate(${M}) translate(${k},0) rotate(${C?90:-90})`;if(v==="perpendicular")return`rotate(${M}) translate(${k},0)${L?" rotate(180)":""}`;const _=m._y1*(m.x1-m.x0),$=m._y1-m._y0;return _>$*2?`rotate(${M}) translate(${k},0) rotate(${C?90:-90})`:`rotate(${M}) translate(${k},0)${L?" rotate(180)":""}`}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.fontSize)||l}).attr("font-weight","bold").attr("fill",m=>y(m)).style("paint-order","stroke fill").attr("stroke",m=>{const x=f(m);if(!x)return"none";const v=x.split(/\s+/);return v.length>=2?v.slice(1).join(" "):"white"}).attr("stroke-width",m=>{const x=f(m);return x&&parseFloat(x)||0}).attr("stroke-linejoin","round").style("pointer-events","none").each(function(m){var B,H,J,X,j;const x=rt(this);x.selectAll("tspan").remove();const v=i.find(W=>W.level===m.depth);if(((B=v==null?void 0:v.dataLabels)==null?void 0:B.enabled)===!1)return;const b=((H=v==null?void 0:v.dataLabels)==null?void 0:H.filter)||h,k=m._y1*(m.x1-m.x0),M=m._y0*(m.x1-m.x0),C=m._y1-m._y0;if(b){const W=b.property==="outerArcLength"?k:b.property==="innerArcLength"?M:0;if(b.operator===">"&&W<=b.value||b.operator==="<"&&W>=b.value)return}else if(k<16)return;const L=m.data.name||"",_=((J=v==null?void 0:v.dataLabels)==null?void 0:J.rotationMode)||s,$=_==="parallel"||_==="auto"&&k>C*2,I=$?(k+M)/2:C,E=$?C:(k+M)/2,P=parseFloat(((j=(X=v==null?void 0:v.dataLabels)==null?void 0:X.style)==null?void 0:j.fontSize)||l)||11,S=P*.6,w=Math.max(3,Math.floor(I/S)),A=Math.max(1,Math.floor(E/(P*1.2)));if(L.length<=w){x.text(L);return}const T=L.split(/[\s_-]+/),R=[];let F="";for(const W of T){const U=F?F+" "+W:W;if(U.length<=w?F=U:(F&&R.push(F),F=W.length>w?W.substring(0,w-1)+"…":W),R.length>=A)break}if(F&&R.length<A&&R.push(F),R.length===0)return;if(R.length>A&&(R.length=A),R.length===A&&F&&!R[R.length-1].endsWith("…")&&T.slice(R.join(" ").split(/[\s]+/).length).length>0){const U=R[R.length-1];U.length+2>w&&(R[R.length-1]=U.substring(0,w-1)+"…")}const z=-(R.length*P*1.2-P*1.2)/2;R.forEach((W,U)=>{x.append("tspan").attr("x",0).attr("dy",U===0?`${z}px`:`${P*1.2}px`).text(W)})})}renderBreadcrumbs(t){const e=this.config.breadcrumbs||{},r=(e.style||{}).fontSize||"11px",o=e.separator??" / ",s=[];let a=this.currentRoot;for(;a;)s.unshift(a),a=a.parent;const l=this.group.append("g").attr("class","katucharts-sunburst-breadcrumbs").attr("transform","translate(0,-15)");let c=0;s.forEach((h,f)=>{var g,m,x;const u=((g=h.data)==null?void 0:g.name)||(f===0?"Root":`Level ${f}`),d=f===s.length-1,p=l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill",d?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",d?"default":"pointer").style("text-decoration",d?"none":"underline").text(u);d||p.on("click",()=>{this.currentRoot=h===t?null:h,this.group.selectAll("*").remove(),this.render()});const y=((x=(m=p.node())==null?void 0:m.getComputedTextLength)==null?void 0:x.call(m))||u.length*7;c+=y,d||(l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill","#666").attr("dominant-baseline","middle").style("pointer-events","none").text(o),c+=o.length*5)})}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class fk extends Ut{constructor(t){super(t)}render(){var G,N,Y;const{plotArea:t}=this.context,e=this.context.animate,i=t.width/2,r=this.config.pane||{},o=r.startAngle??-90,s=r.endAngle??90,a=o*Math.PI/180,l=s*Math.PI/180,c=Math.abs(s-o)<=180,h=c?t.height*.62:t.height/2,f=c?Math.min(t.width/2,h)-20:Math.min(t.width,t.height)/2-20,u=((G=this.config._yAxis??this.config.yAxis)==null?void 0:G.min)??this.config.min??0,d=((N=this.config._yAxis??this.config.yAxis)==null?void 0:N.max)??this.config.max??100,p=((Y=this.data[0])==null?void 0:Y.y)??0,y=this.config.wrap!==!1,g=this.config.overshoot??0;let m=p;if(y){const O=d-u;O>0&&(m=u+((p-u)%O+O)%O)}const x=g*Math.PI/180;let b=ve().domain([u,d]).range([a,l]).clamp(!y&&g<=0)(m);if(!y&&g>0){const O=a-x,ct=l+x;b=Math.max(O,Math.min(ct,b))}const k=this.group.append("g").attr("transform",`translate(${i},${h})`);this.renderPaneBackground(k,f,a,l,r);const M=f*.15,C=Se().innerRadius(f-M).outerRadius(f).startAngle(a).endAngle(l).cornerRadius(M/2);k.append("path").attr("d",C({})).attr("fill","#ddd"),this.renderPlotBands(k,f,a,l,u,d,M),this.renderTickMarks(k,f,a,l,u,d,M);const L=this.config.dial||{},_=this.config.pivot||{},$=L.backgroundColor||"#333",I=L.borderColor||"none",E=L.borderWidth??0,P=L.baseWidth??8,S=L.topWidth??1,w=this.resolvePercent(L.radius??"80%",f),A=this.resolvePercent(L.rearLength??"15%",f),T=b-Math.PI/2,R=w*Math.cos(T),F=w*Math.sin(T),D=-A*Math.cos(T),z=-A*Math.sin(T),B=T+Math.PI/2,H=P/2,J=S/2,X=[`M${D+H*Math.cos(B)},${z+H*Math.sin(B)}`,`L${R+J*Math.cos(B)},${F+J*Math.sin(B)}`,`L${R-J*Math.cos(B)},${F-J*Math.sin(B)}`,`L${D-H*Math.cos(B)},${z-H*Math.sin(B)}`,"Z"].join(" "),j=k.append("path").attr("fill",$).attr("stroke",I).attr("stroke-width",E).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))").style("cursor","pointer");if(e){const O=this.buildNeedlePath(a,w,A,P,S);j.attr("d",O).transition().duration(bt).ease(pt).attrTween("d",()=>{const ct=ae(a,b);return it=>this.buildNeedlePath(ct(it),w,A,P,S)})}else j.attr("d",X);if(this.config.enableMouseTracking!==!1){const O=E;j.on("mouseover",ct=>{var it,ft,dt;j.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",O+2),j.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.4))"),this.context.events.emit("point:mouseover",{point:this.data[0],index:0,series:this,event:ct,plotX:i,plotY:h}),(dt=(ft=(it=this.data[0])==null?void 0:it.events)==null?void 0:ft.mouseOver)==null||dt.call(this.data[0],ct)}).on("mouseout",ct=>{var it,ft,dt;j.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",O),j.style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))"),this.context.events.emit("point:mouseout",{point:this.data[0],index:0,series:this,event:ct}),(dt=(ft=(it=this.data[0])==null?void 0:it.events)==null?void 0:ft.mouseOut)==null||dt.call(this.data[0],ct)}).on("click",ct=>{var it,ft,dt,at,ot;this.context.events.emit("point:click",{point:this.data[0],index:0,series:this,event:ct}),(dt=(ft=(it=this.data[0])==null?void 0:it.events)==null?void 0:ft.click)==null||dt.call(this.data[0],ct),(ot=(at=this.config.events)==null?void 0:at.click)==null||ot.call(this,ct)})}const W=_.radius??10,U=_.borderWidth??2;k.append("circle").attr("r",W).attr("fill",_.backgroundColor||"#666").attr("stroke",_.borderColor||"#fff").attr("stroke-width",U).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.2))"),this.renderValueLabel(k,f,p),e&&this.emitAfterAnimate(bt+100)}buildNeedlePath(t,e,i,r,o){const s=t-Math.PI/2,a=e*Math.cos(s),l=e*Math.sin(s),c=-i*Math.cos(s),h=-i*Math.sin(s),f=s+Math.PI/2,u=r/2,d=o/2;return[`M${c+u*Math.cos(f)},${h+u*Math.sin(f)}`,`L${a+d*Math.cos(f)},${l+d*Math.sin(f)}`,`L${a-d*Math.cos(f)},${l-d*Math.sin(f)}`,`L${c-u*Math.cos(f)},${h-u*Math.sin(f)}`,"Z"].join(" ")}renderPaneBackground(t,e,i,r,o){const s=o.background?Array.isArray(o.background)?o.background:[o.background]:[];for(const a of s){const l=this.resolvePercent(a.outerRadius??"100%",e),c=this.resolvePercent(a.innerRadius??"0%",e),h=Se().innerRadius(c).outerRadius(l).startAngle(i).endAngle(r);t.append("path").attr("d",h({})).attr("fill",a.backgroundColor||"#f2f2f2").attr("stroke",a.borderColor||"#cccccc").attr("stroke-width",a.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var f;const l=((f=this.config._yAxis??this.config.yAxis)==null?void 0:f.plotBands)||[];if(l.length===0)return;const c=a??e*.15,h=ve().domain([o,s]).range([i,r]);for(const u of l){if(u.from===void 0||u.to===void 0)continue;const d=Se().innerRadius(e-c).outerRadius(e).startAngle(h(u.from)).endAngle(h(u.to)).cornerRadius(0);t.append("path").attr("d",d({})).attr("fill",u.color||"#e0e0e0").attr("stroke",u.borderColor||"none").attr("stroke-width",u.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s,a){var v,b;const l=(this.config._yAxis??this.config.yAxis)||{},c=l.tickPositions||this.generateTicks(o,s,5),h=l.tickLength??15,f=l.tickWidth??2,u=((v=l.labels)==null?void 0:v.enabled)!==!1,d=((b=l.labels)==null?void 0:b.style)||{},p=d.fontSize||wt,y=d.color||this.autoLabelColor(),g=a??e*.15,m=ve().domain([o,s]).range([i,r]),x=l.minorTickInterval?Math.round((s-o)/l.minorTickInterval):0;if(x>0&&l.minorTickInterval)for(let k=0;k<=x;k++){const M=o+k*l.minorTickInterval;if(M>s)break;const C=m(M)-Math.PI/2,L=e-g+2,_=L-6;t.append("line").attr("x1",_*Math.cos(C)).attr("y1",_*Math.sin(C)).attr("x2",L*Math.cos(C)).attr("y2",L*Math.sin(C)).attr("stroke","#999").attr("stroke-width",1)}for(const k of c){const M=m(k)-Math.PI/2,C=e-g+2,L=C-h;if(t.append("line").attr("x1",L*Math.cos(M)).attr("y1",L*Math.sin(M)).attr("x2",C*Math.cos(M)).attr("y2",C*Math.sin(M)).attr("stroke","#333").attr("stroke-width",f),u){const _=L-10;t.append("text").attr("x",_*Math.cos(M)).attr("y",_*Math.sin(M)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",p).attr("font-weight","600").attr("fill",y).style("pointer-events","none").text(String(k))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e,i){var c,h,f,u;const r=this.config.dataLabels||{};if(!(r.enabled!==!1))return;const s=((c=r.style)==null?void 0:c.fontSize)||wt,a=r.color||((h=r.style)==null?void 0:h.color)||this.autoLabelColor();let l;r.formatter?l=r.formatter.call({point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:i}):r.format?l=fe(Zt(r.format,{point:this.data[0],series:{name:this.config.name},x:(u=this.data[0])==null?void 0:u.x,y:i})):l=i.toString(),t.append("text").attr("y",e*.25+(r.y??0)).attr("x",r.x??0).attr("text-anchor","middle").attr("font-size",s).attr("font-weight","bold").attr("fill",a).text(l)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class dk extends Ut{constructor(t){super(t)}render(){var k,M,C,L;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=Math.min(t.width,t.height)/2-10,o=t.width/2,s=t.height/2,a=((k=this.config._yAxis??this.config.yAxis)==null?void 0:k.min)??this.config.min??0,l=((M=this.config._yAxis??this.config.yAxis)==null?void 0:M.max)??this.config.max??100,c=this.data.length>1,h=this.config.pane||{},f=(h.startAngle??-135)*Math.PI/180,u=(h.endAngle??135)*Math.PI/180,d=this.config.overshoot??0,p=d*Math.PI/180,y=this.group.append("g").attr("transform",`translate(${o},${s})`),g=this.config.innerRadius??.6,m=this.config.radius??1,x=this.config.rounded??5,v=this.config.linecap||"round",b=((C=this.config._yAxis??this.config.yAxis)==null?void 0:C.stops)||[];if(c){const _=r/(this.data.length+.5),$=_*.1;this.renderPaneBackground(y,r,0,f,u,h),this.data.forEach((I,E)=>{const P=I.radius?this.resolveRadiusValue(I.radius,r):r-E*_,S=I.innerRadius?this.resolveRadiusValue(I.innerRadius,r):P-_+$,w=I.color||e[E%e.length],A=this.config.color;this.config.color=w,this.renderSingleArc(y,I,E,S,P,r,f,u,a,l,d,p,x,v,b,o,s,i),this.config.color=A})}else{const _=this.resolveRadiusValue(g,r),$=this.resolveRadiusValue(m,r);this.renderPaneBackground(y,$,_,f,u,h),this.renderPlotBands(y,$,_,f,u,a,l),this.renderSingleArc(y,this.data[0],0,_,$,r,f,u,a,l,d,p,x,v,b,o,s,i)}this.renderTickMarks(y,r,f,u,a,l),c||this.renderValueLabel(y,((L=this.data[0])==null?void 0:L.y)??0),i&&this.emitAfterAnimate(bt+100)}renderSingleArc(t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g,m,x){const v=(e==null?void 0:e.y)??0,b=Math.max(0,Math.min(1,(v-c)/(h-c)));let k=a+(l-a)*b;if(f>0&&v>h){const P=(v-h)/(h-c);k=l+Math.min(u,(l-a)*P)}const M=p==="round",C=Se().innerRadius(r).outerRadius(o).startAngle(a).endAngle(l).cornerRadius(M?(o-r)/2:d);t.append("path").attr("d",C({})).attr("fill","#e0e0e0");const L=M?(o-r)/2:d,_=Se().innerRadius(r).outerRadius(o).cornerRadius(L),$=Se().innerRadius(r).outerRadius(o+5).cornerRadius(L),I=this.resolveArcColor(b,y,e),E=t.append("path").attr("fill",I).style("cursor","pointer");if(x){const P=ae(a,k),S=this;E.transition().duration(bt).ease(pt).attrTween("d",()=>w=>{const A=P(w),T=_.startAngle(a).endAngle(A)({});if(y.length>0){const R=(A-a)/(l-a);E.attr("fill",S.getStopColor(Math.min(1,R),y))}return T})}else E.attr("d",_.startAngle(a).endAngle(k)({}));this.config.enableMouseTracking!==!1&&E.on("mouseover",P=>{var S,w;E.interrupt("hover").transition("hover").duration(K).ease(Z).attr("d",$.startAngle(a).endAngle(k)({})),E.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:P,plotX:g,plotY:m}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOver)==null||w.call(e,P)}).on("mouseout",P=>{var S,w;E.interrupt("hover").transition("hover").duration(K).ease(Z).attr("d",_.startAngle(a).endAngle(k)({})),E.style("filter",""),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:P}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOut)==null||w.call(e,P)}).on("click",P=>{var S,w,A,T;this.context.events.emit("point:click",{point:e,index:i,series:this,event:P}),(w=(S=e==null?void 0:e.events)==null?void 0:S.click)==null||w.call(e,P),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,P)})}resolveArcColor(t,e,i){return i!=null&&i.color?i.color:e.length>=2?this.getStopColor(t,e):this.getColor()}getStopColor(t,e){if(t<=e[0][0])return e[0][1];if(t>=e[e.length-1][0])return e[e.length-1][1];for(let i=0;i<e.length-1;i++)if(t>=e[i][0]&&t<=e[i+1][0]){const r=(t-e[i][0])/(e[i+1][0]-e[i][0]),o=e[i][1],s=e[i+1][1];return ae(o,s)(r)}return e[e.length-1][1]}resolveRadiusValue(t,e){return typeof t=="string"&&t.endsWith("%")?e*parseFloat(t)/100:typeof t=="number"?t<=1?e*t:t:e*.6}renderPaneBackground(t,e,i,r,o,s){const a=s.background?Array.isArray(s.background)?s.background:[s.background]:[];for(const l of a){const c=this.resolvePercent(l.outerRadius??"100%",e),h=this.resolvePercent(l.innerRadius??"0%",e),f=Se().innerRadius(h).outerRadius(c).startAngle(r).endAngle(o);t.append("path").attr("d",f({})).attr("fill",l.backgroundColor||"#f2f2f2").attr("stroke",l.borderColor||"#cccccc").attr("stroke-width",l.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var h;const l=((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.plotBands)||[];if(l.length===0)return;const c=ve().domain([s,a]).range([r,o]);for(const f of l){if(f.from===void 0||f.to===void 0)continue;const u=Se().innerRadius(i).outerRadius(e).startAngle(c(f.from)).endAngle(c(f.to));t.append("path").attr("d",u({})).attr("fill",f.color||"#e0e0e0").attr("stroke",f.borderColor||"none").attr("stroke-width",f.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s){var p,y;const a=(this.config._yAxis??this.config.yAxis)||{},l=a.tickPositions||this.generateTicks(o,s,5),c=((p=a.labels)==null?void 0:p.enabled)!==!1,h=((y=a.labels)==null?void 0:y.style)||{},f=h.fontSize||wt,u=h.color||this.autoLabelColor(),d=ve().domain([o,s]).range([i,r]);for(const g of l){const m=d(g)-Math.PI/2;if(c){const x=e+14;t.append("text").attr("x",x*Math.cos(m)).attr("y",x*Math.sin(m)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",f).attr("fill",u).style("pointer-events","none").text(String(g))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e){var l,c,h,f;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((l=i.style)==null?void 0:l.fontSize)||wt,s=i.color||((c=i.style)==null?void 0:c.color)||this.autoLabelColor();let a;i.formatter?a=i.formatter.call({point:this.data[0],series:{name:this.config.name},x:(h=this.data[0])==null?void 0:h.x,y:e}):i.format?a=fe(Zt(i.format,{point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:e})):a=e.toString(),t.append("text").attr("y",10+(i.y??0)).attr("x",i.x??0).attr("text-anchor","middle").attr("font-size",o).attr("font-weight","bold").attr("fill",s).text(a)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const pk=fr("~s");function gk(n){return n===0?"0":n>=1e3?pk(n).replace("G","B"):String(n)}function mk(n){return!Number.isFinite(n)||Math.abs(n)<1e3?String(n):Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}function hd(n){if(n<=0)return{ticks:[1],niceMax:1,gridMax:1};const t=n/2,e=Math.pow(10,Math.floor(Math.log10(t))),i=t/e;let r;i<1.5?r=1*e:i<3?r=2*e:i<7?r=5*e:r=10*e;const o=Math.max(r,Math.floor(n/r)*r),s=n*1.15;return{ticks:o>0?[Math.round(o*1e6)/1e6]:[],niceMax:o,gridMax:s}}function ud(n,t,e){const i=e==null?void 0:e.size;let r;typeof i=="string"&&i.trim().endsWith("%")?r=parseFloat(i)/100:typeof i=="number"?r=i>1?i/100:i:r=.85;const o=Math.min(n,t)*r/2;return Math.max(20,o-30)}class fd extends Ut{constructor(t){super(t)}render(){const t=this.resolvePolarSubType();t==="column"?this.renderColumnPolar():this.renderLineAreaPolar(t)}resolvePolarSubType(){const t=this.config.polarType||this.config._polarSubType||"area";return t==="column"||t==="bar"?"column":t==="line"?"line":"area"}renderLineAreaPolar(t){var E,P,S,w,A,T,R,F,D,z;const{plotArea:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=ud(e.width,e.height,s),l=e.width/2,c=e.height/2,h=Math.max(...r.map(B=>B.y??0),1),{ticks:f,gridMax:u}=hd(h),d=ve().domain([0,u]).range([0,a]),p=((E=this.config.marker)==null?void 0:E.radius)??4,y=((P=this.config.marker)==null?void 0:P.enabled)!==!1,g=this.config.pointPlacement,m=g==="on"?0:g==="between"?Math.PI/r.length:typeof g=="number"?g*Math.PI/180:0,x=2*Math.PI/r.length,v=this.config.connectEnds!==!1;(w=(S=this.config.states)==null?void 0:S.inactive)==null||w.opacity;const b=this.group.append("g").attr("transform",`translate(${l},${c})`);let k=0,M=1/0;for(let B=0;B<r.length;B++){const H=r[B].y??0;H<M&&(M=H,k=B)}const C=k*x-Math.PI/2;this.renderGrid(b,a,r.length,d,f,C);const L=v?L2:Xi,_=w2().angle((B,H)=>H*x+m).radius(B=>d(B.y??0)).defined(B=>B.y!==null&&B.y!==void 0).curve(L),$=r.map(B=>({...B,y:0})),I=b.append("path").datum(r).attr("fill","none").attr("stroke",o).attr("stroke-width",this.config.lineWidth??2);if(t==="area"){const B=k2().angle((J,X)=>X*x+m).innerRadius(0).outerRadius(J=>d(J.y??0)).defined(J=>J.y!==null&&J.y!==void 0).curve(L),H=b.append("path").datum(r).attr("fill",this.config.fillColor||o).attr("fill-opacity",this.config.fillOpacity??.3);i?H.attr("d",B($)||"").transition().duration(bt).ease(pt).attr("d",B(r)||""):H.attr("d",B)}if(i?I.attr("d",_($)||"").transition().duration(bt).ease(pt).attr("d",_(r)||""):I.attr("d",_),y){const H=Math.max(...r.map(X=>X.y??0),1)*.02,J=b.selectAll(".katucharts-polar-point").data(r).join("circle").attr("class","katucharts-polar-point").attr("cx",(X,j)=>d(X.y??0)*Math.cos(j*x-Math.PI/2+m)).attr("cy",(X,j)=>d(X.y??0)*Math.sin(j*x-Math.PI/2+m)).attr("fill",((A=this.config.marker)==null?void 0:A.fillColor)||o).attr("stroke",((T=this.config.marker)==null?void 0:T.lineColor)||this.autoBorderColor()).attr("stroke-width",((R=this.config.marker)==null?void 0:R.lineWidth)??1).style("display",X=>(X.y??0)<H?"none":null).style("cursor",this.config.cursor||"pointer");if(i?J.attr("r",0).attr("opacity",0).transition().duration(bt).ease(pt).delay((X,j)=>j*Wt).attr("r",p).attr("opacity",1):J.attr("r",p),this.renderPolarDataLabels(b,r,d,x,m),this.config.enableMouseTracking!==!1){const X=((z=(D=(F=this.config.marker)==null?void 0:F.states)==null?void 0:D.hover)==null?void 0:z.radius)??p+3;J.on("mouseover",(j,W)=>{var O,ct;const U=rt(j.currentTarget);U.transition("hover").duration(K).ease(Z).attr("r",X),U.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))");const G=r.indexOf(W),N=d(W.y??0)*Math.cos(G*x-Math.PI/2+m),Y=d(W.y??0)*Math.sin(G*x-Math.PI/2+m);this.context.events.emit("point:mouseover",{point:W,index:G,series:this,event:j,plotX:l+N,plotY:c+Y}),(ct=(O=W.events)==null?void 0:O.mouseOver)==null||ct.call(W,j)}).on("mouseout",(j,W)=>{var N,Y;const U=rt(j.currentTarget);U.transition("hover").duration(K).ease(Z).attr("r",p),U.style("filter","");const G=r.indexOf(W);this.context.events.emit("point:mouseout",{point:W,index:G,series:this,event:j}),(Y=(N=W.events)==null?void 0:N.mouseOut)==null||Y.call(W,j)}).on("click",(j,W)=>{var G,N,Y,O;const U=r.indexOf(W);this.context.events.emit("point:click",{point:W,index:U,series:this,event:j}),(N=(G=W.events)==null?void 0:G.click)==null||N.call(W,j),(O=(Y=this.config.events)==null?void 0:Y.click)==null||O.call(this,j)})}}}renderColumnPolar(){var E,P;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=ud(t.width,t.height,s),l=t.width/2,c=t.height/2,h=Math.max(...r.map(S=>S.y??0),1),{ticks:f,gridMax:u}=hd(h),d=ve().domain([0,u]).range([0,a]),p=2*Math.PI/r.length,y=this.config.pointPlacement,g=y==="on"?0:y==="between"?Math.PI/r.length:typeof y=="number"?y*Math.PI/180:0,m=.02,x=((P=(E=this.config.states)==null?void 0:E.inactive)==null?void 0:P.opacity)??.4,v=this.config.colorByPoint===!0,b=this.config.stacking,k=this.group.append("g").attr("transform",`translate(${l},${c})`);let M=0,C=1/0;for(let S=0;S<r.length;S++){const w=r[S].y??0;w<C&&(C=w,M=S)}const L=M*p-Math.PI/2;this.renderGrid(k,a,r.length,d,f,L);const _=Se().cornerRadius(2),$=k.selectAll(".katucharts-polar-bar").data(r).join("path").attr("class","katucharts-polar-bar").attr("fill",(S,w)=>S.color||(v?e[w%e.length]:o)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),I=this.context.stackOffsets;i?$.each(function(S,w){const A=rt(this),T=w*p-Math.PI/2+g+m,R=(w+1)*p-Math.PI/2+g-m,F=b&&I?d(I.get(w)??0):0,D=F+d(S.y??0);A.attr("d",_({innerRadius:F,outerRadius:F,startAngle:T+Math.PI/2,endAngle:R+Math.PI/2})||"").transition().duration(bt).ease(pt).delay(w*Wt).attrTween("d",()=>z=>_({innerRadius:F,outerRadius:F+(D-F)*z,startAngle:T+Math.PI/2,endAngle:R+Math.PI/2})||""),b&&I&&I.set(w,(I.get(w)??0)+(S.y??0))}):$.attr("d",(S,w)=>{const A=w*p-Math.PI/2+g+m,T=(w+1)*p-Math.PI/2+g-m,R=b&&I?d(I.get(w)??0):0,F=R+d(S.y??0);return b&&I&&I.set(w,(I.get(w)??0)+(S.y??0)),_({innerRadius:R,outerRadius:F,startAngle:A+Math.PI/2,endAngle:T+Math.PI/2})||""}),this.config.enableMouseTracking!==!1&&$.on("mouseover",(S,w)=>{var D,z;rt(S.currentTarget).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),$.interrupt("highlight"),$.attr("opacity",1),$.filter(B=>B!==w).transition("highlight").duration(K).ease(Z).attr("opacity",x);const T=r.indexOf(w),R=T*p+p/2-Math.PI/2+g,F=d(w.y??0)/2;this.context.events.emit("point:mouseover",{point:w,index:T,series:this,event:S,plotX:l+F*Math.cos(R),plotY:c+F*Math.sin(R)}),(z=(D=w.events)==null?void 0:D.mouseOver)==null||z.call(w,S)}).on("mouseout",(S,w)=>{var R,F;rt(S.currentTarget).style("filter",""),$.interrupt("highlight"),$.transition("highlight").duration(K).ease(Z).attr("opacity",1);const T=r.indexOf(w);this.context.events.emit("point:mouseout",{point:w,index:T,series:this,event:S}),(F=(R=w.events)==null?void 0:R.mouseOut)==null||F.call(w,S)}).on("click",(S,w)=>{var T,R,F,D;const A=r.indexOf(w);this.context.events.emit("point:click",{point:w,index:A,series:this,event:S}),(R=(T=w.events)==null?void 0:T.click)==null||R.call(w,S),(D=(F=this.config.events)==null?void 0:F.click)==null||D.call(this,S)})}renderPolarDataLabels(t,e,i,r,o){var k,M,C;const s=this.config.dataLabels||{};if(s.enabled!==!0)return;const a=((k=s.style)==null?void 0:k.fontSize)||wt,l=((M=s.style)==null?void 0:M.color)||this.autoLabelColor(),c=((C=s.style)==null?void 0:C.fontWeight)||"normal",h=[],f=16,u=6,d=Math.max(...e.map(L=>L.y??0),1),p=d*.02,y=d*.5,g=e.map((L,_)=>({d:L,i:_,v:L.y??0})).filter(L=>L.d.y!=null&&L.d.y!==0&&L.v>=p),m=g.filter(L=>L.v>=y),x=g.filter(L=>L.v<y);x.sort((L,_)=>L.v-_.v);const v=x.length>0?x[0]:null,b=v?[...m,v]:m;b.sort((L,_)=>L.i-_.i);for(const{d:L,i:_}of b){const $=_*r-Math.PI/2+o,I=i(L.y??0),E=I*Math.cos($),P=I*Math.sin($),S=(($+Math.PI/2)*180/Math.PI+360)%360;let w;S>20&&S<160?w="start":S>200&&S<340?w="end":w="middle";let A;S<45||S>315?A="text-after-edge":S>135&&S<225?A="text-before-edge":A="middle";const T=Math.cos($),R=Math.sin($),F=E+T*u,D=P+R*u;let z=!1;for(const B of h)if((B.x-F)**2+(B.y-D)**2<f*f){z=!0;break}z||(h.push({x:F,y:D}),t.append("text").attr("class","katucharts-polar-datalabel").attr("x",F).attr("y",D).attr("text-anchor",w).attr("dominant-baseline",A).attr("fill",l).attr("font-size",a).attr("font-weight",c).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(mk(L.y)))}}renderGrid(t,e,i,r,o,s=-Math.PI/2){var h,f,u,d;const l=(this.config.gridLineInterpolation||((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.gridLineInterpolation)||"circle")==="polygon",c=2*Math.PI/i;if(l){const p=[];for(let y=0;y<i;y++){const g=y*c-Math.PI/2;p.push(`${e*Math.cos(g)},${e*Math.sin(g)}`)}t.append("polygon").attr("points",p.join(" ")).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8)}else t.append("circle").attr("r",e).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8);for(const p of o){const y=r(p);if(l){const x=[];for(let v=0;v<i;v++){const b=v*c-Math.PI/2,k=y*Math.cos(b),M=y*Math.sin(b);x.push(`${k},${M}`)}t.append("polygon").attr("points",x.join(" ")).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5)}else t.append("circle").attr("r",y).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5);const g=y*Math.cos(s)+5*Math.cos(s+Math.PI/2),m=y*Math.sin(s)+5*Math.sin(s+Math.PI/2);t.append("text").attr("x",g).attr("y",m).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",wt).attr("fill",this.autoLabelColor()).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(gk(p))}for(let p=0;p<i;p++){const y=p*c-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",e*Math.cos(y)).attr("y2",e*Math.sin(y)).attr("stroke","#ccc").attr("stroke-width",.5);const g=(u=(f=this.context.xAxis)==null?void 0:f.config)==null?void 0:u.categories,m=g&&g[p]||((d=this.data[p])==null?void 0:d.name)||`${p}`,x=e+28;t.append("text").attr("x",x*Math.cos(y)).attr("y",x*Math.sin(y)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",wt).attr("fill",this.autoLabelColor()).text(m)}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class yk extends Ut{constructor(t){super(t)}render(){var m,x,v,b;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.data,s=Math.min(40,t.height/Math.max(o.length,1)),a=(t.height-o.length*s)/2,l=((m=this.config.marker)==null?void 0:m.radius)??6,c=(x=this.config.marker)==null?void 0:x.lineColor,h=r.colorByPoint!==!1,f=r.connectorColor??"#ccc",u=r.connectorWidth??r.lineWidth??4,d=this.config.dataLabels||{},p=((v=d.style)==null?void 0:v.fontSize)||wt,y=d.color||((b=d.style)==null?void 0:b.color)||me,g=[];o.forEach((k,M)=>{const C=a+M*s,L=k.color||(h?e[M%e.length]:r.color||e[0]),_=this.group.append("circle").attr("cx",20).attr("cy",C+s/2).attr("fill",L).style("cursor","pointer");if(c&&_.attr("stroke",c),i?_.attr("r",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("r",l):_.attr("r",l),M<o.length-1){const T=this.group.append("line").attr("x1",20).attr("x2",20).attr("y1",C+s/2+l).attr("y2",C+s+s/2-l).attr("stroke",f).attr("stroke-width",u);i&&T.attr("opacity",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("opacity",1)}const $=k.label||k.name||`Event ${M+1}`,I=this.group.append("text").attr("x",36).attr("y",C+s/2).attr("dy","0.35em").attr("font-size",p).attr("fill",y).style("cursor","pointer").text($);i&&I.attr("opacity",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("opacity",1);let E=null;const P=k.description;P&&(E=this.group.append("text").attr("x",36).attr("y",C+s/2+14).attr("dy","0.35em").attr("font-size","10px").attr("fill","#777").style("pointer-events","none").text(P),i&&E.attr("opacity",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("opacity",1)),g.push({circle:_,text:I,desc:E});const S=T=>{_.transition("size").duration(K).ease(Z).attr("r",l+3),_.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),I.attr("font-weight","bold"),g.forEach(R=>{R.circle.interrupt("highlight"),R.text.interrupt("highlight"),R.circle.attr("opacity",1),R.text.attr("opacity",1),R.desc&&(R.desc.interrupt("highlight"),R.desc.attr("opacity",1))}),g.forEach((R,F)=>{F!==M&&(R.circle.transition("highlight").duration(K).ease(Z).attr("opacity",.4),R.text.transition("highlight").duration(K).ease(Z).attr("opacity",.4),R.desc&&R.desc.transition("highlight").duration(K).ease(Z).attr("opacity",.4))}),this.context.events.emit("point:mouseover",{point:k,index:M,series:this,event:T,plotX:20,plotY:C+s/2})},w=T=>{_.transition("size").duration(K).ease(Z).attr("r",l),_.style("filter",""),I.attr("font-weight","normal"),g.forEach(R=>{R.circle.interrupt("highlight"),R.text.interrupt("highlight"),R.circle.transition("highlight").duration(K).ease(Z).attr("opacity",1),R.text.transition("highlight").duration(K).ease(Z).attr("opacity",1),R.desc&&(R.desc.interrupt("highlight"),R.desc.transition("highlight").duration(K).ease(Z).attr("opacity",1))}),this.context.events.emit("point:mouseout",{point:k,index:M,series:this,event:T})},A=T=>{this.context.events.emit("point:click",{point:k,index:M,series:this,event:T})};_.on("mouseover",S).on("mouseout",w).on("click",A),I.on("mouseover",S).on("mouseout",w).on("click",A)})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class xk extends Ut{constructor(t){super(t)}render(){const{xAxis:t,plotArea:e,colors:i}=this.context,r=this.data,o=Math.min(25,e.height/Math.max(r.length,1)*.7),s=e.height/Math.max(r.length,1);r.forEach((a,l)=>{const c=a.start??a.x??0,h=a.end??c+1,f=t.getPixelForValue(c),u=t.getPixelForValue(h),d=l*s+(s-o)/2,p=a.color||i[l%i.length],y=this.group.append("rect").attr("class","katucharts-gantt-bar").attr("x",f).attr("y",d).attr("width",Math.max(1,u-f)).attr("height",o).attr("rx",3).attr("fill",p).attr("stroke","none");this.group.append("text").attr("x",f+4).attr("y",d+o/2).attr("dy","0.35em").attr("font-size","10px").attr("fill","#fff").text(a.name||""),y.style("cursor","pointer"),this.group.selectAll(".katucharts-gantt-bar"),y.on("mouseover",g=>{y.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),y.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke","#333").attr("stroke-width",1.5),this.context.events.emit("point:mouseover",{point:a,index:l,series:this,event:g,plotX:(f+u)/2,plotY:d+o/2})}).on("mouseout",g=>{y.style("filter",""),y.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke","none").attr("stroke-width",0),this.context.events.emit("point:mouseout",{point:a,index:l,series:this,event:g})}).on("click",g=>{this.context.events.emit("point:click",{point:a,index:l,series:this,event:g})})})}getDataExtents(){let t=1/0,e=-1/0;for(const i of this.data){const r=i.start??i.x??0,o=i.end??r+1;t=Math.min(t,r),e=Math.max(e,o)}return{xMin:t,xMax:e,yMin:0,yMax:0}}}var At=1e-6,dd=1e-12,Bt=Math.PI,Qt=Bt/2,pd=Bt/4,qe=Bt*2,Ie=180/Bt,te=Bt/180,Xt=Math.abs,Zi=Math.atan,Nn=Math.atan2,Dt=Math.cos,ps=Math.ceil,gd=Math.exp,gs=Math.log,Ic=Math.pow,Pt=Math.sin,sn=Math.sign||function(n){return n>0?1:n<0?-1:0},Oe=Math.sqrt,Fc=Math.tan;function md(n){return n>1?0:n<-1?Bt:Math.acos(n)}function an(n){return n>1?Qt:n<-1?-Qt:Math.asin(n)}function cn(){}function ms(n,t){n&&xd.hasOwnProperty(n.type)&&xd[n.type](n,t)}var yd={Feature:function(n,t){ms(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,i=-1,r=e.length;++i<r;)ms(e[i].geometry,t)}},xd={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)n=e[i],t.point(n[0],n[1],n[2])},LineString:function(n,t){Rc(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)Rc(e[i],t,0)},Polygon:function(n,t){bd(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)bd(e[i],t)},GeometryCollection:function(n,t){for(var e=n.geometries,i=-1,r=e.length;++i<r;)ms(e[i],t)}};function Rc(n,t,e){var i=-1,r=n.length-e,o;for(t.lineStart();++i<r;)o=n[i],t.point(o[0],o[1],o[2]);t.lineEnd()}function bd(n,t){var e=-1,i=n.length;for(t.polygonStart();++e<i;)Rc(n[e],t,1);t.polygonEnd()}function Ki(n,t){n&&yd.hasOwnProperty(n.type)?yd[n.type](n,t):ms(n,t)}function Dc(n){return[Nn(n[1],n[0]),an(n[2])]}function Ji(n){var t=n[0],e=n[1],i=Dt(e);return[i*Dt(t),i*Pt(t),Pt(e)]}function ys(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function xs(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function zc(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function bs(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Bc(n){var t=Oe(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function Oc(n,t){function e(i,r){return i=n(i,r),t(i[0],i[1])}return n.invert&&t.invert&&(e.invert=function(i,r){return i=t.invert(i,r),i&&n.invert(i[0],i[1])}),e}function Nc(n,t){return Xt(n)>Bt&&(n-=Math.round(n/qe)*qe),[n,t]}Nc.invert=Nc;function vd(n,t,e){return(n%=qe)?t||e?Oc(kd(n),Md(t,e)):kd(n):t||e?Md(t,e):Nc}function wd(n){return function(t,e){return t+=n,Xt(t)>Bt&&(t-=Math.round(t/qe)*qe),[t,e]}}function kd(n){var t=wd(n);return t.invert=wd(-n),t}function Md(n,t){var e=Dt(n),i=Pt(n),r=Dt(t),o=Pt(t);function s(a,l){var c=Dt(l),h=Dt(a)*c,f=Pt(a)*c,u=Pt(l),d=u*e+h*i;return[Nn(f*r-d*o,h*e-u*i),an(d*r+f*o)]}return s.invert=function(a,l){var c=Dt(l),h=Dt(a)*c,f=Pt(a)*c,u=Pt(l),d=u*r-f*o;return[Nn(f*r+u*o,h*e+d*i),an(d*e-h*i)]},s}function bk(n){n=vd(n[0]*te,n[1]*te,n.length>2?n[2]*te:0);function t(e){return e=n(e[0]*te,e[1]*te),e[0]*=Ie,e[1]*=Ie,e}return t.invert=function(e){return e=n.invert(e[0]*te,e[1]*te),e[0]*=Ie,e[1]*=Ie,e},t}function vk(n,t,e,i,r,o){if(e){var s=Dt(t),a=Pt(t),l=i*e;r==null?(r=t+i*qe,o=t-l/2):(r=Ad(s,r),o=Ad(s,o),(i>0?r<o:r>o)&&(r+=i*qe));for(var c,h=r;i>0?h>o:h<o;h-=l)c=Dc([s,-a*Dt(h),-a*Pt(h)]),n.point(c[0],c[1])}}function Ad(n,t){t=Ji(t),t[0]-=n,Bc(t);var e=md(-t[1]);return((-t[2]<0?-e:e)+qe-At)%qe}function Sd(){var n=[],t;return{point:function(e,i,r){t.push([e,i,r])},lineStart:function(){n.push(t=[])},lineEnd:cn,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function vs(n,t){return Xt(n[0]-t[0])<At&&Xt(n[1]-t[1])<At}function ws(n,t,e,i){this.x=n,this.z=t,this.o=e,this.e=i,this.v=!1,this.n=this.p=null}function _d(n,t,e,i,r){var o=[],s=[],a,l;if(n.forEach(function(p){if(!((y=p.length-1)<=0)){var y,g=p[0],m=p[y],x;if(vs(g,m)){if(!g[2]&&!m[2]){for(r.lineStart(),a=0;a<y;++a)r.point((g=p[a])[0],g[1]);r.lineEnd();return}m[0]+=2*At}o.push(x=new ws(g,p,null,!0)),s.push(x.o=new ws(g,null,x,!1)),o.push(x=new ws(m,p,null,!1)),s.push(x.o=new ws(m,null,x,!0))}}),!!o.length){for(s.sort(t),Cd(o),Cd(s),a=0,l=s.length;a<l;++a)s[a].e=e=!e;for(var c=o[0],h,f;;){for(var u=c,d=!0;u.v;)if((u=u.n)===c)return;h=u.z,r.lineStart();do{if(u.v=u.o.v=!0,u.e){if(d)for(a=0,l=h.length;a<l;++a)r.point((f=h[a])[0],f[1]);else i(u.x,u.n.x,1,r);u=u.n}else{if(d)for(h=u.p.z,a=h.length-1;a>=0;--a)r.point((f=h[a])[0],f[1]);else i(u.x,u.p.x,-1,r);u=u.p}u=u.o,h=u.z,d=!d}while(!u.v);r.lineEnd()}}}function Cd(n){if(t=n.length){for(var t,e=0,i=n[0],r;++e<t;)i.n=r=n[e],r.p=i,i=r;i.n=r=n[0],r.p=i}}function Wc(n){return Xt(n[0])<=Bt?n[0]:sn(n[0])*((Xt(n[0])+Bt)%qe-Bt)}function wk(n,t){var e=Wc(t),i=t[1],r=Pt(i),o=[Pt(e),-Dt(e),0],s=0,a=0,l=new fi;r===1?i=Qt+At:r===-1&&(i=-Qt-At);for(var c=0,h=n.length;c<h;++c)if(u=(f=n[c]).length)for(var f,u,d=f[u-1],p=Wc(d),y=d[1]/2+pd,g=Pt(y),m=Dt(y),x=0;x<u;++x,p=b,g=M,m=C,d=v){var v=f[x],b=Wc(v),k=v[1]/2+pd,M=Pt(k),C=Dt(k),L=b-p,_=L>=0?1:-1,$=_*L,I=$>Bt,E=g*M;if(l.add(Nn(E*_*Pt($),m*C+E*Dt($))),s+=I?L+_*qe:L,I^p>=e^b>=e){var P=xs(Ji(d),Ji(v));Bc(P);var S=xs(o,P);Bc(S);var w=(I^L>=0?-1:1)*an(S[2]);(i>w||i===w&&(P[0]||P[1]))&&(a+=I^L>=0?1:-1)}}return(s<-At||s<At&&l<-dd)^a&1}function Pd(n,t,e,i){return function(r){var o=t(r),s=Sd(),a=t(s),l=!1,c,h,f,u={point:d,lineStart:y,lineEnd:g,polygonStart:function(){u.point=m,u.lineStart=x,u.lineEnd=v,h=[],c=[]},polygonEnd:function(){u.point=d,u.lineStart=y,u.lineEnd=g,h=Uh(h);var b=wk(c,i);h.length?(l||(r.polygonStart(),l=!0),_d(h,Mk,b,e,r)):b&&(l||(r.polygonStart(),l=!0),r.lineStart(),e(null,null,1,r),r.lineEnd()),l&&(r.polygonEnd(),l=!1),h=c=null},sphere:function(){r.polygonStart(),r.lineStart(),e(null,null,1,r),r.lineEnd(),r.polygonEnd()}};function d(b,k){n(b,k)&&r.point(b,k)}function p(b,k){o.point(b,k)}function y(){u.point=p,o.lineStart()}function g(){u.point=d,o.lineEnd()}function m(b,k){f.push([b,k]),a.point(b,k)}function x(){a.lineStart(),f=[]}function v(){m(f[0][0],f[0][1]),a.lineEnd();var b=a.clean(),k=s.result(),M,C=k.length,L,_,$;if(f.pop(),c.push(f),f=null,!!C){if(b&1){if(_=k[0],(L=_.length-1)>0){for(l||(r.polygonStart(),l=!0),r.lineStart(),M=0;M<L;++M)r.point(($=_[M])[0],$[1]);r.lineEnd()}return}C>1&&b&2&&k.push(k.pop().concat(k.shift())),h.push(k.filter(kk))}}return u}}function kk(n){return n.length>1}function Mk(n,t){return((n=n.x)[0]<0?n[1]-Qt-At:Qt-n[1])-((t=t.x)[0]<0?t[1]-Qt-At:Qt-t[1])}const Ed=Pd(function(){return!0},Ak,_k,[-Bt,-Qt]);function Ak(n){var t=NaN,e=NaN,i=NaN,r;return{lineStart:function(){n.lineStart(),r=1},point:function(o,s){var a=o>0?Bt:-Bt,l=Xt(o-t);Xt(l-Bt)<At?(n.point(t,e=(e+s)/2>0?Qt:-Qt),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),n.point(o,e),r=0):i!==a&&l>=Bt&&(Xt(t-i)<At&&(t-=i*At),Xt(o-a)<At&&(o-=a*At),e=Sk(t,e,o,s),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),r=0),n.point(t=o,e=s),i=a},lineEnd:function(){n.lineEnd(),t=e=NaN},clean:function(){return 2-r}}}function Sk(n,t,e,i){var r,o,s=Pt(n-e);return Xt(s)>At?Zi((Pt(t)*(o=Dt(i))*Pt(e)-Pt(i)*(r=Dt(t))*Pt(n))/(r*o*s)):(t+i)/2}function _k(n,t,e,i){var r;if(n==null)r=e*Qt,i.point(-Bt,r),i.point(0,r),i.point(Bt,r),i.point(Bt,0),i.point(Bt,-r),i.point(0,-r),i.point(-Bt,-r),i.point(-Bt,0),i.point(-Bt,r);else if(Xt(n[0]-t[0])>At){var o=n[0]<t[0]?Bt:-Bt;r=e*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(t[0],t[1])}function Ck(n){var t=Dt(n),e=2*te,i=t>0,r=Xt(t)>At;function o(h,f,u,d){vk(d,n,e,u,h,f)}function s(h,f){return Dt(h)*Dt(f)>t}function a(h){var f,u,d,p,y;return{lineStart:function(){p=d=!1,y=1},point:function(g,m){var x=[g,m],v,b=s(g,m),k=i?b?0:c(g,m):b?c(g+(g<0?Bt:-Bt),m):0;if(!f&&(p=d=b)&&h.lineStart(),b!==d&&(v=l(f,x),(!v||vs(f,v)||vs(x,v))&&(x[2]=1)),b!==d)y=0,b?(h.lineStart(),v=l(x,f),h.point(v[0],v[1])):(v=l(f,x),h.point(v[0],v[1],2),h.lineEnd()),f=v;else if(r&&f&&i^b){var M;!(k&u)&&(M=l(x,f,!0))&&(y=0,i?(h.lineStart(),h.point(M[0][0],M[0][1]),h.point(M[1][0],M[1][1]),h.lineEnd()):(h.point(M[1][0],M[1][1]),h.lineEnd(),h.lineStart(),h.point(M[0][0],M[0][1],3)))}b&&(!f||!vs(f,x))&&h.point(x[0],x[1]),f=x,d=b,u=k},lineEnd:function(){d&&h.lineEnd(),f=null},clean:function(){return y|(p&&d)<<1}}}function l(h,f,u){var d=Ji(h),p=Ji(f),y=[1,0,0],g=xs(d,p),m=ys(g,g),x=g[0],v=m-x*x;if(!v)return!u&&h;var b=t*m/v,k=-t*x/v,M=xs(y,g),C=bs(y,b),L=bs(g,k);zc(C,L);var _=M,$=ys(C,_),I=ys(_,_),E=$*$-I*(ys(C,C)-1);if(!(E<0)){var P=Oe(E),S=bs(_,(-$-P)/I);if(zc(S,C),S=Dc(S),!u)return S;var w=h[0],A=f[0],T=h[1],R=f[1],F;A<w&&(F=w,w=A,A=F);var D=A-w,z=Xt(D-Bt)<At,B=z||D<At;if(!z&&R<T&&(F=T,T=R,R=F),B?z?T+R>0^S[1]<(Xt(S[0]-w)<At?T:R):T<=S[1]&&S[1]<=R:D>Bt^(w<=S[0]&&S[0]<=A)){var H=bs(_,(-$+P)/I);return zc(H,C),[S,Dc(H)]}}}function c(h,f){var u=i?n:Bt-n,d=0;return h<-u?d|=1:h>u&&(d|=2),f<-u?d|=4:f>u&&(d|=8),d}return Pd(s,a,o,i?[0,-n]:[-Bt,n-Bt])}function Pk(n,t,e,i,r,o){var s=n[0],a=n[1],l=t[0],c=t[1],h=0,f=1,u=l-s,d=c-a,p;if(p=e-s,!(!u&&p>0)){if(p/=u,u<0){if(p<h)return;p<f&&(f=p)}else if(u>0){if(p>f)return;p>h&&(h=p)}if(p=r-s,!(!u&&p<0)){if(p/=u,u<0){if(p>f)return;p>h&&(h=p)}else if(u>0){if(p<h)return;p<f&&(f=p)}if(p=i-a,!(!d&&p>0)){if(p/=d,d<0){if(p<h)return;p<f&&(f=p)}else if(d>0){if(p>f)return;p>h&&(h=p)}if(p=o-a,!(!d&&p<0)){if(p/=d,d<0){if(p>f)return;p>h&&(h=p)}else if(d>0){if(p<h)return;p<f&&(f=p)}return h>0&&(n[0]=s+h*u,n[1]=a+h*d),f<1&&(t[0]=s+f*u,t[1]=a+f*d),!0}}}}}var Lr=1e9,ks=-Lr;function Ek(n,t,e,i){function r(c,h){return n<=c&&c<=e&&t<=h&&h<=i}function o(c,h,f,u){var d=0,p=0;if(c==null||(d=s(c,f))!==(p=s(h,f))||l(c,h)<0^f>0)do u.point(d===0||d===3?n:e,d>1?i:t);while((d=(d+f+4)%4)!==p);else u.point(h[0],h[1])}function s(c,h){return Xt(c[0]-n)<At?h>0?0:3:Xt(c[0]-e)<At?h>0?2:1:Xt(c[1]-t)<At?h>0?1:0:h>0?3:2}function a(c,h){return l(c.x,h.x)}function l(c,h){var f=s(c,1),u=s(h,1);return f!==u?f-u:f===0?h[1]-c[1]:f===1?c[0]-h[0]:f===2?c[1]-h[1]:h[0]-c[0]}return function(c){var h=c,f=Sd(),u,d,p,y,g,m,x,v,b,k,M,C={point:L,lineStart:E,lineEnd:P,polygonStart:$,polygonEnd:I};function L(w,A){r(w,A)&&h.point(w,A)}function _(){for(var w=0,A=0,T=d.length;A<T;++A)for(var R=d[A],F=1,D=R.length,z=R[0],B,H,J=z[0],X=z[1];F<D;++F)B=J,H=X,z=R[F],J=z[0],X=z[1],H<=i?X>i&&(J-B)*(i-H)>(X-H)*(n-B)&&++w:X<=i&&(J-B)*(i-H)<(X-H)*(n-B)&&--w;return w}function $(){h=f,u=[],d=[],M=!0}function I(){var w=_(),A=M&&w,T=(u=Uh(u)).length;(A||T)&&(c.polygonStart(),A&&(c.lineStart(),o(null,null,1,c),c.lineEnd()),T&&_d(u,a,w,o,c),c.polygonEnd()),h=c,u=d=p=null}function E(){C.point=S,d&&d.push(p=[]),k=!0,b=!1,x=v=NaN}function P(){u&&(S(y,g),m&&b&&f.rejoin(),u.push(f.result())),C.point=L,b&&h.lineEnd()}function S(w,A){var T=r(w,A);if(d&&p.push([w,A]),k)y=w,g=A,m=T,k=!1,T&&(h.lineStart(),h.point(w,A));else if(T&&b)h.point(w,A);else{var R=[x=Math.max(ks,Math.min(Lr,x)),v=Math.max(ks,Math.min(Lr,v))],F=[w=Math.max(ks,Math.min(Lr,w)),A=Math.max(ks,Math.min(Lr,A))];Pk(R,F,n,t,e,i)?(b||(h.lineStart(),h.point(R[0],R[1])),h.point(F[0],F[1]),T||h.lineEnd(),M=!1):T&&(h.lineStart(),h.point(w,A),M=!1)}x=w,v=A,b=T}return C}}function Td(n,t,e){var i=di(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[r,o]})}}function $d(n,t,e){var i=di(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[o,r]})}}function Tk(){var n,t,e,i,r,o,s,a,l=10,c=l,h=90,f=360,u,d,p,y,g=2.5;function m(){return{type:"MultiLineString",coordinates:x()}}function x(){return di(ps(i/h)*h,e,h).map(p).concat(di(ps(a/f)*f,s,f).map(y)).concat(di(ps(t/l)*l,n,l).filter(function(v){return Xt(v%h)>At}).map(u)).concat(di(ps(o/c)*c,r,c).filter(function(v){return Xt(v%f)>At}).map(d))}return m.lines=function(){return x().map(function(v){return{type:"LineString",coordinates:v}})},m.outline=function(){return{type:"Polygon",coordinates:[p(i).concat(y(s).slice(1),p(e).reverse().slice(1),y(a).reverse().slice(1))]}},m.extent=function(v){return arguments.length?m.extentMajor(v).extentMinor(v):m.extentMinor()},m.extentMajor=function(v){return arguments.length?(i=+v[0][0],e=+v[1][0],a=+v[0][1],s=+v[1][1],i>e&&(v=i,i=e,e=v),a>s&&(v=a,a=s,s=v),m.precision(g)):[[i,a],[e,s]]},m.extentMinor=function(v){return arguments.length?(t=+v[0][0],n=+v[1][0],o=+v[0][1],r=+v[1][1],t>n&&(v=t,t=n,n=v),o>r&&(v=o,o=r,r=v),m.precision(g)):[[t,o],[n,r]]},m.step=function(v){return arguments.length?m.stepMajor(v).stepMinor(v):m.stepMinor()},m.stepMajor=function(v){return arguments.length?(h=+v[0],f=+v[1],m):[h,f]},m.stepMinor=function(v){return arguments.length?(l=+v[0],c=+v[1],m):[l,c]},m.precision=function(v){return arguments.length?(g=+v,u=Td(o,r,90),d=$d(t,n,g),p=Td(a,s,90),y=$d(i,e,g),m):g},m.extentMajor([[-180,-90+At],[180,90-At]]).extentMinor([[-180,-80-At],[180,80+At]])}const Hc=n=>n;var Vc=new fi,Gc=new fi,Ld,Id,Yc,Xc,Wn={point:cn,lineStart:cn,lineEnd:cn,polygonStart:function(){Wn.lineStart=$k,Wn.lineEnd=Ik},polygonEnd:function(){Wn.lineStart=Wn.lineEnd=Wn.point=cn,Vc.add(Xt(Gc)),Gc=new fi},result:function(){var n=Vc/2;return Vc=new fi,n}};function $k(){Wn.point=Lk}function Lk(n,t){Wn.point=Fd,Ld=Yc=n,Id=Xc=t}function Fd(n,t){Gc.add(Xc*n-Yc*t),Yc=n,Xc=t}function Ik(){Fd(Ld,Id)}var Qi=1/0,Ms=Qi,Ir=-Qi,As=Ir,Ss={point:Fk,lineStart:cn,lineEnd:cn,polygonStart:cn,polygonEnd:cn,result:function(){var n=[[Qi,Ms],[Ir,As]];return Ir=As=-(Ms=Qi=1/0),n}};function Fk(n,t){n<Qi&&(Qi=n),n>Ir&&(Ir=n),t<Ms&&(Ms=t),t>As&&(As=t)}var Uc=0,qc=0,Fr=0,_s=0,Cs=0,tr=0,jc=0,Zc=0,Rr=0,Rd,Dd,kn,Mn,ln={point:Mi,lineStart:zd,lineEnd:Bd,polygonStart:function(){ln.lineStart=zk,ln.lineEnd=Bk},polygonEnd:function(){ln.point=Mi,ln.lineStart=zd,ln.lineEnd=Bd},result:function(){var n=Rr?[jc/Rr,Zc/Rr]:tr?[_s/tr,Cs/tr]:Fr?[Uc/Fr,qc/Fr]:[NaN,NaN];return Uc=qc=Fr=_s=Cs=tr=jc=Zc=Rr=0,n}};function Mi(n,t){Uc+=n,qc+=t,++Fr}function zd(){ln.point=Rk}function Rk(n,t){ln.point=Dk,Mi(kn=n,Mn=t)}function Dk(n,t){var e=n-kn,i=t-Mn,r=Oe(e*e+i*i);_s+=r*(kn+n)/2,Cs+=r*(Mn+t)/2,tr+=r,Mi(kn=n,Mn=t)}function Bd(){ln.point=Mi}function zk(){ln.point=Ok}function Bk(){Od(Rd,Dd)}function Ok(n,t){ln.point=Od,Mi(Rd=kn=n,Dd=Mn=t)}function Od(n,t){var e=n-kn,i=t-Mn,r=Oe(e*e+i*i);_s+=r*(kn+n)/2,Cs+=r*(Mn+t)/2,tr+=r,r=Mn*n-kn*t,jc+=r*(kn+n),Zc+=r*(Mn+t),Rr+=r*3,Mi(kn=n,Mn=t)}function Nd(n){this._context=n}Nd.prototype={_radius:4.5,pointRadius:function(n){return this._radius=n,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(n,t){switch(this._point){case 0:{this._context.moveTo(n,t),this._point=1;break}case 1:{this._context.lineTo(n,t);break}default:{this._context.moveTo(n+this._radius,t),this._context.arc(n,t,this._radius,0,qe);break}}},result:cn};var Kc=new fi,Jc,Wd,Hd,Dr,zr,Br={point:cn,lineStart:function(){Br.point=Nk},lineEnd:function(){Jc&&Vd(Wd,Hd),Br.point=cn},polygonStart:function(){Jc=!0},polygonEnd:function(){Jc=null},result:function(){var n=+Kc;return Kc=new fi,n}};function Nk(n,t){Br.point=Vd,Wd=Dr=n,Hd=zr=t}function Vd(n,t){Dr-=n,zr-=t,Kc.add(Oe(Dr*Dr+zr*zr)),Dr=n,zr=t}let Gd,Ps,Yd,Xd;class Ud{constructor(t){this._append=t==null?qd:Wk(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(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,e){switch(this._point){case 0:{this._append`M${t},${e}`,this._point=1;break}case 1:{this._append`L${t},${e}`;break}default:{if(this._append`M${t},${e}`,this._radius!==Yd||this._append!==Ps){const i=this._radius,r=this._;this._="",this._append`m0,${i}a${i},${i} 0 1,1 0,${-2*i}a${i},${i} 0 1,1 0,${2*i}z`,Yd=i,Ps=this._append,Xd=this._,this._=r}this._+=Xd;break}}}result(){const t=this._;return this._="",t.length?t:null}}function qd(n){let t=1;this._+=n[0];for(const e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function Wk(n){const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);if(t>15)return qd;if(t!==Gd){const e=10**t;Gd=t,Ps=function(r){let o=1;this._+=r[0];for(const s=r.length;o<s;++o)this._+=Math.round(arguments[o]*e)/e+r[o]}}return Ps}function Hk(n,t){let e=3,i=4.5,r,o;function s(a){return a&&(typeof i=="function"&&o.pointRadius(+i.apply(this,arguments)),Ki(a,r(o))),o.result()}return s.area=function(a){return Ki(a,r(Wn)),Wn.result()},s.measure=function(a){return Ki(a,r(Br)),Br.result()},s.bounds=function(a){return Ki(a,r(Ss)),Ss.result()},s.centroid=function(a){return Ki(a,r(ln)),ln.result()},s.projection=function(a){return arguments.length?(r=a==null?(n=null,Hc):(n=a).stream,s):n},s.context=function(a){return arguments.length?(o=a==null?(t=null,new Ud(e)):new Nd(t=a),typeof i!="function"&&o.pointRadius(i),s):t},s.pointRadius=function(a){return arguments.length?(i=typeof a=="function"?a:(o.pointRadius(+a),+a),s):i},s.digits=function(a){if(!arguments.length)return e;if(a==null)e=null;else{const l=Math.floor(a);if(!(l>=0))throw new RangeError(`invalid digits: ${a}`);e=l}return t===null&&(o=new Ud(e)),s},s.projection(n).digits(e).context(t)}function Qc(n){return function(t){var e=new tl;for(var i in n)e[i]=n[i];return e.stream=t,e}}function tl(){}tl.prototype={constructor:tl,point:function(n,t){this.stream.point(n,t)},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()}};function el(n,t,e){var i=n.clipExtent&&n.clipExtent();return n.scale(150).translate([0,0]),i!=null&&n.clipExtent(null),Ki(e,n.stream(Ss)),t(Ss.result()),i!=null&&n.clipExtent(i),n}function nl(n,t,e){return el(n,function(i){var r=t[1][0]-t[0][0],o=t[1][1]-t[0][1],s=Math.min(r/(i[1][0]-i[0][0]),o/(i[1][1]-i[0][1])),a=+t[0][0]+(r-s*(i[1][0]+i[0][0]))/2,l=+t[0][1]+(o-s*(i[1][1]+i[0][1]))/2;n.scale(150*s).translate([a,l])},e)}function jd(n,t,e){return nl(n,[[0,0],t],e)}function Zd(n,t,e){return el(n,function(i){var r=+t,o=r/(i[1][0]-i[0][0]),s=(r-o*(i[1][0]+i[0][0]))/2,a=-o*i[0][1];n.scale(150*o).translate([s,a])},e)}function Kd(n,t,e){return el(n,function(i){var r=+t,o=r/(i[1][1]-i[0][1]),s=-o*i[0][0],a=(r-o*(i[1][1]+i[0][1]))/2;n.scale(150*o).translate([s,a])},e)}var Jd=16,Vk=Dt(30*te);function Qd(n,t){return+t?Yk(n,t):Gk(n)}function Gk(n){return Qc({point:function(t,e){t=n(t,e),this.stream.point(t[0],t[1])}})}function Yk(n,t){function e(i,r,o,s,a,l,c,h,f,u,d,p,y,g){var m=c-i,x=h-r,v=m*m+x*x;if(v>4*t&&y--){var b=s+u,k=a+d,M=l+p,C=Oe(b*b+k*k+M*M),L=an(M/=C),_=Xt(Xt(M)-1)<At||Xt(o-f)<At?(o+f)/2:Nn(k,b),$=n(_,L),I=$[0],E=$[1],P=I-i,S=E-r,w=x*P-m*S;(w*w/v>t||Xt((m*P+x*S)/v-.5)>.3||s*u+a*d+l*p<Vk)&&(e(i,r,o,s,a,l,I,E,_,b/=C,k/=C,M,y,g),g.point(I,E),e(I,E,_,b,k,M,c,h,f,u,d,p,y,g))}}return function(i){var r,o,s,a,l,c,h,f,u,d,p,y,g={point:m,lineStart:x,lineEnd:b,polygonStart:function(){i.polygonStart(),g.lineStart=k},polygonEnd:function(){i.polygonEnd(),g.lineStart=x}};function m(L,_){L=n(L,_),i.point(L[0],L[1])}function x(){f=NaN,g.point=v,i.lineStart()}function v(L,_){var $=Ji([L,_]),I=n(L,_);e(f,u,h,d,p,y,f=I[0],u=I[1],h=L,d=$[0],p=$[1],y=$[2],Jd,i),i.point(f,u)}function b(){g.point=m,i.lineEnd()}function k(){x(),g.point=M,g.lineEnd=C}function M(L,_){v(r=L,_),o=f,s=u,a=d,l=p,c=y,g.point=v}function C(){e(f,u,h,d,p,y,o,s,r,a,l,c,Jd,i),g.lineEnd=b,b()}return g}}var Xk=Qc({point:function(n,t){this.stream.point(n*te,t*te)}});function Uk(n){return Qc({point:function(t,e){var i=n(t,e);return this.stream.point(i[0],i[1])}})}function qk(n,t,e,i,r){function o(s,a){return s*=i,a*=r,[t+n*s,e-n*a]}return o.invert=function(s,a){return[(s-t)/n*i,(e-a)/n*r]},o}function tp(n,t,e,i,r,o){if(!o)return qk(n,t,e,i,r);var s=Dt(o),a=Pt(o),l=s*n,c=a*n,h=s/n,f=a/n,u=(a*e-s*t)/n,d=(a*t+s*e)/n;function p(y,g){return y*=i,g*=r,[l*y-c*g+t,e-c*y-l*g]}return p.invert=function(y,g){return[i*(h*y-f*g+u),r*(d-f*y-h*g)]},p}function An(n){return ep(function(){return n})()}function ep(n){var t,e=150,i=480,r=250,o=0,s=0,a=0,l=0,c=0,h,f=0,u=1,d=1,p=null,y=Ed,g=null,m,x,v,b=Hc,k=.5,M,C,L,_,$;function I(w){return L(w[0]*te,w[1]*te)}function E(w){return w=L.invert(w[0],w[1]),w&&[w[0]*Ie,w[1]*Ie]}I.stream=function(w){return _&&$===w?_:_=Xk(Uk(h)(y(M(b($=w)))))},I.preclip=function(w){return arguments.length?(y=w,p=void 0,S()):y},I.postclip=function(w){return arguments.length?(b=w,g=m=x=v=null,S()):b},I.clipAngle=function(w){return arguments.length?(y=+w?Ck(p=w*te):(p=null,Ed),S()):p*Ie},I.clipExtent=function(w){return arguments.length?(b=w==null?(g=m=x=v=null,Hc):Ek(g=+w[0][0],m=+w[0][1],x=+w[1][0],v=+w[1][1]),S()):g==null?null:[[g,m],[x,v]]},I.scale=function(w){return arguments.length?(e=+w,P()):e},I.translate=function(w){return arguments.length?(i=+w[0],r=+w[1],P()):[i,r]},I.center=function(w){return arguments.length?(o=w[0]%360*te,s=w[1]%360*te,P()):[o*Ie,s*Ie]},I.rotate=function(w){return arguments.length?(a=w[0]%360*te,l=w[1]%360*te,c=w.length>2?w[2]%360*te:0,P()):[a*Ie,l*Ie,c*Ie]},I.angle=function(w){return arguments.length?(f=w%360*te,P()):f*Ie},I.reflectX=function(w){return arguments.length?(u=w?-1:1,P()):u<0},I.reflectY=function(w){return arguments.length?(d=w?-1:1,P()):d<0},I.precision=function(w){return arguments.length?(M=Qd(C,k=w*w),S()):Oe(k)},I.fitExtent=function(w,A){return nl(I,w,A)},I.fitSize=function(w,A){return jd(I,w,A)},I.fitWidth=function(w,A){return Zd(I,w,A)},I.fitHeight=function(w,A){return Kd(I,w,A)};function P(){var w=tp(e,0,0,u,d,f).apply(null,t(o,s)),A=tp(e,i-w[0],r-w[1],u,d,f);return h=vd(a,l,c),C=Oc(t,A),L=Oc(h,C),M=Qd(C,k),S()}function S(){return _=$=null,I}return function(){return t=n.apply(this,arguments),I.invert=t.invert&&E,P()}}function il(n){var t=0,e=Bt/3,i=ep(n),r=i(t,e);return r.parallels=function(o){return arguments.length?i(t=o[0]*te,e=o[1]*te):[t*Ie,e*Ie]},r}function jk(n){var t=Dt(n);function e(i,r){return[i*t,Pt(r)/t]}return e.invert=function(i,r){return[i/t,an(r*t)]},e}function Zk(n,t){var e=Pt(n),i=(e+Pt(t))/2;if(Xt(i)<At)return jk(n);var r=1+e*(2*i-e),o=Oe(r)/i;function s(a,l){var c=Oe(r-2*i*Pt(l))/i;return[c*Pt(a*=i),o-c*Dt(a)]}return s.invert=function(a,l){var c=o-l,h=Nn(a,Xt(c))*sn(c);return c*i<0&&(h-=Bt*sn(a)*sn(c)),[h/i,an((r-(a*a+c*c)*i*i)/(2*i))]},s}function Es(){return il(Zk).scale(155.424).center([0,33.6442])}function np(){return Es().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Kk(n){var t=n.length;return{point:function(e,i){for(var r=-1;++r<t;)n[r].point(e,i)},sphere:function(){for(var e=-1;++e<t;)n[e].sphere()},lineStart:function(){for(var e=-1;++e<t;)n[e].lineStart()},lineEnd:function(){for(var e=-1;++e<t;)n[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<t;)n[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<t;)n[e].polygonEnd()}}}function Jk(){var n,t,e=np(),i,r=Es().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o,s=Es().rotate([157,0]).center([-3,19.9]).parallels([8,18]),a,l,c={point:function(u,d){l=[u,d]}};function h(u){var d=u[0],p=u[1];return l=null,i.point(d,p),l||(o.point(d,p),l)||(a.point(d,p),l)}h.invert=function(u){var d=e.scale(),p=e.translate(),y=(u[0]-p[0])/d,g=(u[1]-p[1])/d;return(g>=.12&&g<.234&&y>=-.425&&y<-.214?r:g>=.166&&g<.234&&y>=-.214&&y<-.115?s:e).invert(u)},h.stream=function(u){return n&&t===u?n:n=Kk([e.stream(t=u),r.stream(u),s.stream(u)])},h.precision=function(u){return arguments.length?(e.precision(u),r.precision(u),s.precision(u),f()):e.precision()},h.scale=function(u){return arguments.length?(e.scale(u),r.scale(u*.35),s.scale(u),h.translate(e.translate())):e.scale()},h.translate=function(u){if(!arguments.length)return e.translate();var d=e.scale(),p=+u[0],y=+u[1];return i=e.translate(u).clipExtent([[p-.455*d,y-.238*d],[p+.455*d,y+.238*d]]).stream(c),o=r.translate([p-.307*d,y+.201*d]).clipExtent([[p-.425*d+At,y+.12*d+At],[p-.214*d-At,y+.234*d-At]]).stream(c),a=s.translate([p-.205*d,y+.212*d]).clipExtent([[p-.214*d+At,y+.166*d+At],[p-.115*d-At,y+.234*d-At]]).stream(c),f()},h.fitExtent=function(u,d){return nl(h,u,d)},h.fitSize=function(u,d){return jd(h,u,d)},h.fitWidth=function(u,d){return Zd(h,u,d)},h.fitHeight=function(u,d){return Kd(h,u,d)};function f(){return n=t=null,h}return h.scale(1070)}function ip(n){return function(t,e){var i=Dt(t),r=Dt(e),o=n(i*r);return o===1/0?[2,0]:[o*r*Pt(t),o*Pt(e)]}}function Or(n){return function(t,e){var i=Oe(t*t+e*e),r=n(i),o=Pt(r),s=Dt(r);return[Nn(t*o,i*s),an(i&&e*o/i)]}}var rp=ip(function(n){return Oe(2/(1+n))});rp.invert=Or(function(n){return 2*an(n/2)});function Qk(){return An(rp).scale(124.75).clipAngle(180-.001)}var op=ip(function(n){return(n=md(n))&&n/Pt(n)});op.invert=Or(function(n){return n});function tM(){return An(op).scale(79.4188).clipAngle(180-.001)}function Ts(n,t){return[n,gs(Fc((Qt+t)/2))]}Ts.invert=function(n,t){return[n,2*Zi(gd(t))-Qt]};function sp(){return ap(Ts).scale(961/qe)}function ap(n){var t=An(n),e=t.center,i=t.scale,r=t.translate,o=t.clipExtent,s=null,a,l,c;t.scale=function(f){return arguments.length?(i(f),h()):i()},t.translate=function(f){return arguments.length?(r(f),h()):r()},t.center=function(f){return arguments.length?(e(f),h()):e()},t.clipExtent=function(f){return arguments.length?(f==null?s=a=l=c=null:(s=+f[0][0],a=+f[0][1],l=+f[1][0],c=+f[1][1]),h()):s==null?null:[[s,a],[l,c]]};function h(){var f=Bt*i(),u=t(bk(t.rotate()).invert([0,0]));return o(s==null?[[u[0]-f,u[1]-f],[u[0]+f,u[1]+f]]:n===Ts?[[Math.max(u[0]-f,s),a],[Math.min(u[0]+f,l),c]]:[[s,Math.max(u[1]-f,a)],[l,Math.min(u[1]+f,c)]])}return h()}function $s(n){return Fc((Qt+n)/2)}function eM(n,t){var e=Dt(n),i=n===t?Pt(n):gs(e/Dt(t))/gs($s(t)/$s(n)),r=e*Ic($s(n),i)/i;if(!i)return Ts;function o(s,a){r>0?a<-Qt+At&&(a=-Qt+At):a>Qt-At&&(a=Qt-At);var l=r/Ic($s(a),i);return[l*Pt(i*s),r-l*Dt(i*s)]}return o.invert=function(s,a){var l=r-a,c=sn(i)*Oe(s*s+l*l),h=Nn(s,Xt(l))*sn(l);return l*i<0&&(h-=Bt*sn(s)*sn(l)),[h/i,2*Zi(Ic(r/c,1/i))-Qt]},o}function nM(){return il(eM).scale(109.5).parallels([30,30])}function Ls(n,t){return[n,t]}Ls.invert=Ls;function iM(){return An(Ls).scale(152.63)}function rM(n,t){var e=Dt(n),i=n===t?Pt(n):(e-Dt(t))/(t-n),r=e/i+n;if(Xt(i)<At)return Ls;function o(s,a){var l=r-a,c=i*s;return[l*Pt(c),r-l*Dt(c)]}return o.invert=function(s,a){var l=r-a,c=Nn(s,Xt(l))*sn(l);return l*i<0&&(c-=Bt*sn(s)*sn(l)),[c/i,r-sn(i)*Oe(s*s+l*l)]},o}function oM(){return il(rM).scale(131.154).center([0,13.9389])}var Nr=1.340264,Wr=-.081106,Hr=893e-6,Vr=.003796,Is=Oe(3)/2,sM=12;function cp(n,t){var e=an(Is*Pt(t)),i=e*e,r=i*i*i;return[n*Dt(e)/(Is*(Nr+3*Wr*i+r*(7*Hr+9*Vr*i))),e*(Nr+Wr*i+r*(Hr+Vr*i))]}cp.invert=function(n,t){for(var e=t,i=e*e,r=i*i*i,o=0,s,a,l;o<sM&&(a=e*(Nr+Wr*i+r*(Hr+Vr*i))-t,l=Nr+3*Wr*i+r*(7*Hr+9*Vr*i),e-=s=a/l,i=e*e,r=i*i*i,!(Xt(s)<dd));++o);return[Is*n*(Nr+3*Wr*i+r*(7*Hr+9*Vr*i))/Dt(e),an(Pt(e)/Is)]};function lp(){return An(cp).scale(177.158)}function hp(n,t){var e=Dt(t),i=Dt(n)*e;return[e*Pt(n)/i,Pt(t)/i]}hp.invert=Or(Zi);function aM(){return An(hp).scale(144.049).clipAngle(60)}function up(n,t){var e=t*t,i=e*e;return[n*(.8707-.131979*e+i*(-.013791+i*(.003971*e-.001529*i))),t*(1.007226+e*(.015085+i*(-.044475+.028874*e-.005916*i)))]}up.invert=function(n,t){var e=t,i=25,r;do{var o=e*e,s=o*o;e-=r=(e*(1.007226+o*(.015085+s*(-.044475+.028874*o-.005916*s)))-t)/(1.007226+o*(.015085*3+s*(-.044475*7+.028874*9*o-.005916*11*s)))}while(Xt(r)>At&&--i>0);return[n/(.8707+(o=e*e)*(-.131979+o*(-.013791+o*o*o*(.003971-.001529*o)))),e]};function rl(){return An(up).scale(175.295)}function fp(n,t){return[Dt(t)*Pt(n),Pt(t)]}fp.invert=Or(an);function dp(){return An(fp).scale(249.5).clipAngle(90+At)}function pp(n,t){var e=Dt(t),i=1+Dt(n)*e;return[e*Pt(n)/i,Pt(t)/i]}pp.invert=Or(function(n){return 2*Zi(n)});function cM(){return An(pp).scale(250).clipAngle(142)}function gp(n,t){return[gs(Fc((Qt+t)/2)),-n]}gp.invert=function(n,t){return[-t,2*Zi(gd(n))-Qt]};function lM(){var n=ap(gp),t=n.center,e=n.rotate;return n.center=function(i){return arguments.length?t([-i[1],i[0]]):(i=t(),[i[1],-i[0]])},n.rotate=function(i){return arguments.length?e([i[0],i[1],i.length>2?i[2]+90:90]):(i=e(),[i[0],i[1],i[2]-90])},e([0,0,90]).scale(159.155)}function hM(n){return n}function uM(n){if(n==null)return hM;var t,e,i=n.scale[0],r=n.scale[1],o=n.translate[0],s=n.translate[1];return function(a,l){l||(t=e=0);var c=2,h=a.length,f=new Array(h);for(f[0]=(t+=a[0])*i+o,f[1]=(e+=a[1])*r+s;c<h;)f[c]=a[c],++c;return f}}function fM(n,t){for(var e,i=n.length,r=i-t;r<--i;)e=n[r],n[r++]=n[i],n[i]=e}function dM(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return mp(n,e)})}:mp(n,t)}function mp(n,t){var e=t.id,i=t.bbox,r=t.properties==null?{}:t.properties,o=pM(n,t);return e==null&&i==null?{type:"Feature",properties:r,geometry:o}:i==null?{type:"Feature",id:e,properties:r,geometry:o}:{type:"Feature",id:e,bbox:i,properties:r,geometry:o}}function pM(n,t){var e=uM(n.transform),i=n.arcs;function r(h,f){f.length&&f.pop();for(var u=i[h<0?~h:h],d=0,p=u.length;d<p;++d)f.push(e(u[d],d));h<0&&fM(f,p)}function o(h){return e(h)}function s(h){for(var f=[],u=0,d=h.length;u<d;++u)r(h[u],f);return f.length<2&&f.push(f[0]),f}function a(h){for(var f=s(h);f.length<4;)f.push(f[0]);return f}function l(h){return h.map(a)}function c(h){var f=h.type,u;switch(f){case"GeometryCollection":return{type:f,geometries:h.geometries.map(c)};case"Point":u=o(h.coordinates);break;case"MultiPoint":u=h.coordinates.map(o);break;case"LineString":u=s(h.arcs);break;case"MultiLineString":u=h.arcs.map(s);break;case"Polygon":u=l(h.arcs);break;case"MultiPolygon":u=h.arcs.map(l);break;default:return null}return{type:f,coordinates:u}}return c(t)}const yp=(n,t)=>[n,1.25*Math.log(Math.tan(Math.PI/4+.4*t))];yp.invert=(n,t)=>[n,2.5*Math.atan(Math.exp(.8*t))-.625*Math.PI];const gM={naturalEarth:rl,naturalEarth1:rl,mercator:sp,orthographic:dp,albers:np,albersUsa:Jk,equirectangular:iM,equalEarth:lp,conicEqualArea:Es,conicEquidistant:oM,stereographic:cM,transverseMercator:lM,azimuthalEqualArea:Qk,azimuthalEquidistant:tM,gnomonic:aM,Orthographic:dp,WebMercator:sp,EqualEarth:lp,LambertConformalConic:nM,Miller:()=>An(yp).scale(108.318)};function mM(n,t){if(n&&n.type==="Topology"&&n.objects){const e=t||(n.objects.countries?"countries":Object.keys(n.objects)[0]),i=dM(n,n.objects[e]);return i.features||[i]}return n.features||n}function ol(n,t){var e;return String(n).toLowerCase()==="orthographic"||!!((e=t==null?void 0:t.options3d)!=null&&e.enabled)}function sl(n,t,e,i){var f,u,d;const r=mM(n,i),o={type:"FeatureCollection",features:r},s=(t==null?void 0:t.name)||t||"naturalEarth",l=(gM[s]||rl)(),c=typeof t=="object"?t:{};c.rotation&&((f=l.rotate)==null||f.call(l,c.rotation)),c.center&&((u=l.center)==null||u.call(l,c.center)),c.scale&&((d=l.scale)==null||d.call(l,c.scale)),c.parallels&&l.parallels&&l.parallels(c.parallels),c.scale||l.fitSize([e.width,e.height],o);const h=Hk().projection(l);return{projection:l,pathGen:h,features:r,projName:String(s)}}function al(n,t){const e=t.width/2,i=t.height/2,r=Math.min(t.width,t.height)/2-10;return n.translate([e,i]).scale(r).clipAngle(90),r}function cl(n){var t;return n?Array.isArray(n)&&n.length>=2&&typeof n[0]=="number"?[n[0],n[1]]:n.lon!=null&&n.lat!=null?[n.lon,n.lat]:(t=n.geometry)!=null&&t.coordinates&&Array.isArray(n.geometry.coordinates)?[n.geometry.coordinates[0],n.geometry.coordinates[1]]:typeof n.x=="number"&&typeof n.y=="number"?[n.x,n.y]:null:null}const yM={blues:ed,reds:hw,greens:rw,oranges:fw,purples:cw,greys:sw,ylOrRd:td,ylGnBu:tw,rdYlGn:J2,viridis:dw,plasma:gw,inferno:pw};class xM extends Ut{constructor(t){super(t),this.zoomBehavior=null,this.mapGroup=null,this.featurePaths=null,this.dataMap=new Map,this.globeProjection=null,this.globePathGen=null,this.autoRotateTimer=null}destroy(){this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null),super.destroy()}render(){var $;const{plotArea:t}=this.context,e=this.config,i=e.mapData;if(!i){this.group.append("text").attr("x",t.width/2).attr("y",t.height/2).attr("text-anchor","middle").attr("fill","#999").text("Map data not provided");return}const{projection:r,pathGen:o,features:s,projName:a}=sl(i,e.projection,t,e.mapDataObject);this.dataMap.clear();const l=e.joinBy||["hc-key","code"],c=Array.isArray(l)?l:[l,l],h=c[0],f=c.length>1?c[1]:c[0];for(const I of this.data){const E=I[f]||I.code||I["hc-key"]||I.name;E&&this.dataMap.set(String(E),I)}const u=e.colorAxis||{},d=this.data.map(I=>I.y??I.value??0).filter(I=>I!=null),p=u.min??(d.length?Math.min(...d):0),y=u.max??(d.length?Math.max(...d):1);if(Array.isArray(u.stops)&&u.stops.length>=2){const I=y-p||1,E=u.stops.map(w=>p+w[0]*I),P=u.stops.map(w=>w[1]),S=ve().domain(E).range(P).clamp(!0);this.colorScale=w=>S(w)}else if(u.minColor&&u.maxColor){const I=gi(u.minColor,u.maxColor),E=this.makeAxisNorm(u,p,y);this.colorScale=P=>I(E(P))}else{const I=u.colorScheme||"blues",E=yM[I]||ed,P=this.makeAxisNorm(u,p,y);this.colorScale=S=>E(P(S))}const g=e.nullColor??"#f0f0f0",m=e.allAreas!==!1,x=e.borderColor??"#cccccc",v=e.borderWidth??.5,b=`katucharts-map-clip-${Math.random().toString(36).slice(2,8)}`;this.group.append("defs").append("clipPath").attr("id",b).append("rect").attr("width",t.width).attr("height",t.height);const M=this.group.append("g").attr("clip-path",`url(#${b})`).attr("class","katucharts-map-clip");this.mapGroup=M.append("g").attr("class","katucharts-map-container katucharts-mapzoom");const C=m?s:s.filter(I=>{const E=this.getFeatureKey(I,h);return this.dataMap.has(E)}),L=this.context.animate;this.featurePaths=this.mapGroup.selectAll(".katucharts-map-feature").data(C).join("path").attr("class","katucharts-map-feature").attr("d",o).attr("stroke",x).attr("stroke-width",v).attr("stroke-linejoin","round").style("cursor","pointer"),L?this.featurePaths.attr("fill",g).attr("fill-opacity",0).transition().duration(bt).ease(pt).attr("fill-opacity",1).attr("fill",I=>this.getFeatureColor(I,h,g)):this.featurePaths.attr("fill",I=>this.getFeatureColor(I,h,g)),this.attachMapHover(h,x,v,g),this.renderMapLabels(o,C,h),u.enabled!==!1&&d.length>0&&this.renderColorAxis(p,y,u),ol(a,e)?this.setupGlobeMode(r,o,s,h,g,x,v,e):(($=e.mapNavigation)==null?void 0:$.enabled)!==!1&&this.setupMapNavigation(r,o)}makeAxisNorm(t,e,i){if(t.type==="logarithmic"&&e>0&&i>0){const o=Po().domain([e,i]).clamp(!0);return s=>o(Math.max(s,e))}const r=ve().domain([e,i]).clamp(!0);return o=>r(o)}getFeatureKey(t,e){var i,r,o;return String(((i=t.properties)==null?void 0:i[e])||((r=t.properties)==null?void 0:r["hc-key"])||((o=t.properties)==null?void 0:o.name)||t.id||"")}getFeatureColor(t,e,i){const r=this.getFeatureKey(t,e),o=this.dataMap.get(r);if(o){if(o.color)return o.color;const s=o.y??o.value;if(s!=null)return this.colorScale(s)}return i}attachMapHover(t,e,i,r){var h,f,u,d,p,y,g,m;const o=this.config,s=(f=(h=o.states)==null?void 0:h.hover)==null?void 0:f.color,a=((d=(u=o.states)==null?void 0:u.hover)==null?void 0:d.borderColor)??"#333333",l=((y=(p=o.states)==null?void 0:p.hover)==null?void 0:y.borderWidth)??1.5,c=((m=(g=o.states)==null?void 0:g.hover)==null?void 0:m.brightness)??.2;this.featurePaths.on("mouseover",(x,v)=>{var I,E,P;const b=rt(x.currentTarget),k=this.getFeatureKey(v,t),M=this.dataMap.get(k),C=b.attr("fill");if(s)b.transition("hover").duration(K).ease(Z).attr("fill",s);else{const S=((E=(I=oe(C))==null?void 0:I.brighter(c))==null?void 0:E.toString())||C;b.transition("hover").duration(K).ease(Z).attr("fill",S)}b.attr("stroke",a).attr("stroke-width",l),b.raise(),this.featurePaths.interrupt("highlight"),this.featurePaths.filter(S=>S!==v).transition("highlight").duration(K).ease(Z).attr("opacity",.7);const L=((P=v.properties)==null?void 0:P.name)||k,_=M?{name:M.name??L,y:M.y??M.value,...M}:{name:L},$=x.currentTarget.getBBox();this.context.events.emit("point:mouseover",{point:_,index:0,series:this,event:x,plotX:$.x+$.width/2,plotY:$.y+$.height/2})}).on("mouseout",(x,v)=>{var L;const b=rt(x.currentTarget),k=this.getFeatureColor(v,t,r);b.transition("hover").duration(K).ease(Z).attr("fill",k),b.attr("stroke",e).attr("stroke-width",i),this.featurePaths.interrupt("highlight"),this.featurePaths.transition("highlight").duration(K).ease(Z).attr("opacity",1);const M=this.getFeatureKey(v,t),C=this.dataMap.get(M)||{name:((L=v.properties)==null?void 0:L.name)||M};this.context.events.emit("point:mouseout",{point:C,index:0,series:this,event:x})}).on("click",(x,v)=>{var M;const b=this.getFeatureKey(v,t),k=this.dataMap.get(b)||{name:((M=v.properties)==null?void 0:M.name)||b};this.context.events.emit("point:click",{point:k,index:0,series:this,event:x})})}renderMapLabels(t,e,i){var c,h,f;const r=this.config.dataLabels||this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((c=r.style)==null?void 0:c.fontSize)||wt,s=this.autoLabelColor(r.color||((h=r.style)==null?void 0:h.color)),a=this.labelHalo(),l=((f=r.filter)==null?void 0:f.property)==="hasData";this.mapGroup.selectAll(".katucharts-map-label").data(e).join("text").attr("class","katucharts-map-label").attr("transform",u=>{const d=t.centroid(u);return isFinite(d[0])?`translate(${d[0]},${d[1]})`:"translate(-9999,-9999)"}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",o).attr("fill",s).style("pointer-events","none").style("text-shadow",a).text(u=>{var y,g,m,x,v;const d=this.getFeatureKey(u,i),p=this.dataMap.get(d);return l&&!p?"":r.formatter?r.formatter.call({point:p||{name:(y=u.properties)==null?void 0:y.name},series:{name:this.config.name},x:(g=u.properties)==null?void 0:g.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)}):r.format?fe(Zt(r.format,{point:p||{name:(m=u.properties)==null?void 0:m.name},series:{name:this.config.name},x:(x=u.properties)==null?void 0:x.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)})):(p==null?void 0:p.name)||((v=u.properties)==null?void 0:v.name)||""})}renderColorAxis(t,e,i){const{plotArea:r}=this.context,o=i.layout==="horizontal"?"bottom":"right",s=i.labels||{},a=i.title;o==="bottom"?this.renderHorizontalColorAxis(t,e,i,s,a):this.renderVerticalColorAxis(t,e,i,s,a)}renderVerticalColorAxis(t,e,i,r,o){var k,M;const{plotArea:s}=this.context,a=i.width??12,l=i.height??s.height*.5,c=s.width+15,h=(s.height-l)/2,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","100%").attr("x2","0%").attr("y2","0%");for(let C=0;C<=f;C++){const L=C/f,_=t+L*(e-t);y.append("stop").attr("offset",`${L*100}%`).attr("stop-color",this.colorScale(_))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((k=r.style)==null?void 0:k.fontSize)||wt,m=this.autoLabelColor((M=r.style)==null?void 0:M.color),x=r.formatter,v=C=>x?x.call({value:C}):String(Math.round(C));u.append("text").attr("x",c+a+4).attr("y",h+l).attr("font-size",g).attr("fill",m).attr("dominant-baseline","auto").text(v(t)),u.append("text").attr("x",c+a+4).attr("y",h).attr("font-size",g).attr("fill",m).attr("dominant-baseline","hanging").text(v(e));const b=(t+e)/2;u.append("text").attr("x",c+a+4).attr("y",h+l/2).attr("font-size",g).attr("fill",m).attr("dominant-baseline","middle").text(v(b)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-8).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}renderHorizontalColorAxis(t,e,i,r,o){var b,k;const{plotArea:s}=this.context,a=i.width??s.width*.5,l=i.height??12,c=(s.width-a)/2,h=s.height+25,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");for(let M=0;M<=f;M++){const C=M/f,L=t+C*(e-t);y.append("stop").attr("offset",`${C*100}%`).attr("stop-color",this.colorScale(L))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((b=r.style)==null?void 0:b.fontSize)||wt,m=this.autoLabelColor((k=r.style)==null?void 0:k.color),x=r.formatter,v=M=>x?x.call({value:M}):String(Math.round(M));u.append("text").attr("x",c).attr("y",h+l+12).attr("text-anchor","start").attr("font-size",g).attr("fill",m).text(v(t)),u.append("text").attr("x",c+a).attr("y",h+l+12).attr("text-anchor","end").attr("font-size",g).attr("fill",m).text(v(e)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-6).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}setupMapNavigation(t,e){const{plotArea:i}=this.context,r=this.config.mapNavigation||{},o=r.enableButtons!==!1,s=r.enableMouseWheelZoom!==!1,a=r.enableDoubleClickZoom!==!1,l=r.enableDrag!==!1,c=r.maxZoom??16,h=i.width/2,f=i.height/2;this.zoomBehavior=gf().scaleExtent([1,c]).on("zoom",p=>{this.context.chartGroup.selectAll(".katucharts-mapzoom").attr("transform",p.transform)});const u=this.group.select(".katucharts-map-clip"),d=u.empty()?this.group:u;d.insert("rect",":first-child").attr("width",i.width).attr("height",i.height).attr("fill","none").style("pointer-events","all"),(s||a||l)&&(d.call(this.zoomBehavior),s||d.on("wheel.zoom",null),a||d.on("dblclick.zoom",null),l||(d.on("mousedown.zoom",null),d.on("touchstart.zoom",null))),o&&this.renderNavButtons(d,h,f)}renderNavButtons(t,e,i){var C,L;const{plotArea:r}=this.context,o=this.config.mapNavigation||{},s=o.buttonOptions||{},a=s.theme||{},l=o.buttons||{},c=24,h=4,f=10,u=c*2+h,d=s.align||"left",p=s.verticalAlign||"top",y=(d==="right"?r.width-c-f:f)+(s.x??0),g=(p==="bottom"?r.height-u-f:f)+(s.y??0),m=a.fill||"#ffffff",x=a.stroke||"#e0e0e0",v=a.style&&a.style.color||s.symbolStroke||"#3f3f46",b=this.group.append("g").attr("class","katucharts-map-nav"),k=[e,i],M=(_,$,I)=>{const E=b.append("g").style("cursor","pointer").on("click",I);return E.append("rect").attr("x",y).attr("y",_).attr("width",c).attr("height",c).attr("fill",m).attr("stroke",x).attr("stroke-width",1).attr("rx",4),E.append("text").attr("x",y+c/2).attr("y",_+c/2+1).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size","17px").attr("fill",v).style("user-select","none").text($),E.on("mouseover",function(){rt(this).select("rect").attr("fill","#f5f5f5")}).on("mouseout",function(){rt(this).select("rect").attr("fill",m)}),E};M(g,((C=l.zoomIn)==null?void 0:C.text)||"+",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1.5,k)}),M(g+c+h,((L=l.zoomOut)==null?void 0:L.text)||"−",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1/1.5,k)})}setupGlobeMode(t,e,i,r,o,s,a,l){const{plotArea:c}=this.context,h=c.width/2,f=c.height/2;this.globeProjection=t,this.globePathGen=e;const u=al(t,c),d=l.options3d||{},p=d.oceanColor??"#d4f1f9",y=d.atmosphereColor??"rgba(100,180,255,0.15)",g=d.graticule!==!1,m=d.graticuleColor??"#ccc",x=d.graticuleOpacity??.4,v=d.autoRotate!==!1,b=d.rotateSpeed??.3,k=d.shadow!==!1,M=this.mapGroup.append("defs"),C=`katucharts-globe-glow-${Math.random().toString(36).slice(2,8)}`,L=M.append("radialGradient").attr("id",C);if(L.append("stop").attr("offset","70%").attr("stop-color",y),L.append("stop").attr("offset","100%").attr("stop-color","rgba(100,180,255,0)"),this.mapGroup.insert("circle",":first-child").attr("cx",h).attr("cy",f).attr("r",u+15).attr("fill",`url(#${C})`).attr("class","katucharts-globe-atmosphere"),k&&this.mapGroup.insert("ellipse",":first-child").attr("cx",h+8).attr("cy",f+u+18).attr("rx",u*.6).attr("ry",8).attr("fill","rgba(0,0,0,0.12)").attr("class","katucharts-globe-shadow"),this.mapGroup.insert("circle",".katucharts-map-feature").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",p).attr("stroke","#999").attr("stroke-width",.5).attr("class","katucharts-globe-ocean"),g){const w=Tk().step([15,15]);this.mapGroup.insert("path",".katucharts-map-feature").datum(w()).attr("d",e).attr("fill","none").attr("stroke",m).attr("stroke-width",.3).attr("stroke-opacity",x).attr("class","katucharts-globe-graticule")}this.featurePaths.attr("d",e);const _=`katucharts-globe-spec-${Math.random().toString(36).slice(2,8)}`,$=M.append("radialGradient").attr("id",_).attr("cx","35%").attr("cy","25%");$.append("stop").attr("offset","0%").attr("stop-color","rgba(255,255,255,0.35)"),$.append("stop").attr("offset","50%").attr("stop-color","rgba(255,255,255,0.05)"),$.append("stop").attr("offset","100%").attr("stop-color","rgba(255,255,255,0)"),this.mapGroup.append("circle").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",`url(#${_})`).style("pointer-events","none").attr("class","katucharts-globe-specular");const I=this;let E=null,P=v;const S=df().on("start",w=>{const A=t.rotate();E=[A[0],A[1],w.x],I.autoRotateTimer&&(P=!0,I.autoRotateTimer.stop(),I.autoRotateTimer=null)}).on("drag",w=>{if(!E)return;const A=.4,T=(w.x-E[2])*A,R=E[0]+T,F=Math.max(-90,Math.min(90,E[1]-(w.y-w.subject.y)*A));t.rotate([R,F]),I.redrawGlobe()}).on("end",()=>{E=null,P&&v&&I.startAutoRotate(t,b)});this.group.call(S),this.group.style("cursor","grab"),this.group.on("wheel",w=>{w.preventDefault();const A=t.scale(),T=w.deltaY>0?.95:1.05,R=Math.max(u*.5,Math.min(u*8,A*T));t.scale(R),I.redrawGlobe()}),v&&this.startAutoRotate(t,b)}startAutoRotate(t,e){const i=this;this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null);let r=0;this.autoRotateTimer=Yo(o=>{const s=r?Math.min(o-r,64):16;r=o;const a=t.rotate();t.rotate([a[0]+e*(s/16),a[1]]),i.redrawGlobe()})}redrawGlobe(){if(!this.globePathGen||!this.featurePaths||!this.globeProjection)return;const t=this.globeProjection,[e,i]=t.translate(),r=t.scale();this.featurePaths.attr("d",this.globePathGen),this.mapGroup.selectAll(".katucharts-globe-graticule").attr("d",this.globePathGen),this.mapGroup.select(".katucharts-globe-ocean").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-atmosphere").attr("cx",e).attr("cy",i).attr("r",r+15),this.mapGroup.select(".katucharts-globe-specular").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-shadow").attr("cx",e+8).attr("cy",i+r+18).attr("rx",r*.6),this.mapGroup.selectAll(".katucharts-map-label").attr("transform",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?`translate(${s[0]},${s[1]})`:"translate(-9999,-9999)"}).attr("display",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?null:"none"})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class bM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}render(){var v,b,k;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=sl(i,t.projection,e,t.mapDataObject);ol(o,t)&&al(r,e);const s=this.group.append("g").attr("class","katucharts-mapzoom katucharts-mappoint-layer"),a=t.marker||{},l=a.enabled!==!1,c=a.radius??5,h=a.lineColor??"#ffffff",f=a.lineWidth??1,u=t.color||this.getColor(),d=this.context.animate,p=t.dataLabels,y=!!(p!=null&&p.enabled),g=this.autoLabelColor((p==null?void 0:p.color)||((v=p==null?void 0:p.style)==null?void 0:v.color)),m=((b=p==null?void 0:p.style)==null?void 0:b.fontSize)||wt,x=((k=p==null?void 0:p.style)==null?void 0:k.fontWeight)||"600";this.data.forEach((M,C)=>{var w;M.name==null&&M.id!=null&&(M.name=M.id);const L=cl(M);if(!L)return;const _=r(L);if(!_||!isFinite(_[0])||!isFinite(_[1]))return;const[$,I]=_,E=M.color||u,P=((w=M.marker)==null?void 0:w.radius)??c,S=s.append("g").attr("class","katucharts-mappoint");if(l){const A=S.append("circle").attr("class","katucharts-mappoint-marker").attr("cx",$).attr("cy",I).attr("fill",E).attr("stroke",h).attr("stroke-width",f).style("cursor",t.cursor||"pointer").attr("r",d?0:P);d&&A.transition().duration(bt).delay(C*12).ease(pt).attr("r",P),A.on("mouseover",T=>{var R,F;rt(T.currentTarget).transition("hover").duration(K).ease(Z).attr("r",P*1.4),this.context.events.emit("point:mouseover",{point:M,index:C,series:this,event:T,plotX:$,plotY:I}),(F=(R=M.events)==null?void 0:R.mouseOver)==null||F.call(M,T)}).on("mouseout",T=>{var R,F;rt(T.currentTarget).transition("hover").duration(K).ease(Z).attr("r",P),this.context.events.emit("point:mouseout",{point:M,index:C,series:this,event:T}),(F=(R=M.events)==null?void 0:R.mouseOut)==null||F.call(M,T)}).on("click",T=>{var R,F,D,z,B,H,J;this.context.events.emit("point:click",{point:M,index:C,series:this,event:T}),(F=(R=M.events)==null?void 0:R.click)==null||F.call(M,T),(B=(z=(D=t.point)==null?void 0:D.events)==null?void 0:z.click)==null||B.call(M,T),(J=(H=t.events)==null?void 0:H.click)==null||J.call(this,T)})}if(y){const A=this.formatLabel(M,C);A&&s.append("text").attr("class","katucharts-mappoint-label").attr("x",$).attr("y",I-P-3).attr("text-anchor","middle").attr("dominant-baseline","auto").attr("font-size",m).attr("font-weight",x).attr("fill",g).style("pointer-events","none").style("text-shadow",this.labelHalo()).text(A)}})}formatLabel(t,e){const i=this.config.dataLabels,r={point:t,series:{name:this.config.name},x:t.id??t.name,y:t.y??t.value};return i!=null&&i.formatter?i.formatter.call(r):i!=null&&i.format?fe(Zt(i.format,r)):t.id||t.name||""}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class vM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}buildIdMap(){const t=new Map;for(const e of this.context.allSeries||[])if(e!==this)for(const i of e.data){const r=cl(i),o=i.id??i.name;o!=null&&r&&t.set(String(o),r)}return t}resolveEndpoint(t,e){return t==null?null:Array.isArray(t)&&typeof t[0]=="number"?[t[0],t[1]]:typeof t=="object"?cl(t):e.get(String(t))||null}render(){var g;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=sl(i,t.projection,e,t.mapDataObject);ol(o,t)&&al(r,e);const s=this.buildIdMap(),a=this.group.append("g").attr("class","katucharts-mapzoom katucharts-flowmap-layer"),l=t.color||this.getColor(),c=t.fillOpacity??.5,h=t.curveFactor??.3,f=((g=t.markerEnd)==null?void 0:g.enabled)!==!1,u=this.context.animate,d=this.data.map(m=>m.weight??m.y??m.value??1),p=Math.max(...d,1),y=t.width!=null?t.width<=1?t.width*40:t.width:16;this.data.forEach((m,x)=>{const v=m,b=this.resolveEndpoint(v.from,s),k=this.resolveEndpoint(v.to,s);if(!b||!k)return;v.name==null&&typeof v.from=="string"&&typeof v.to=="string"&&(v.name=`${v.from} → ${v.to}`);const M=r(b),C=r(k);if(!M||!C||!isFinite(M[0])||!isFinite(C[0]))return;const L=v.weight??v.y??v.value??1,_=Math.max(2,y*(L/p)),$=v.color||l,{d:I,mid:E,tip:P,tipAngle:S}=this.buildFlowPath(M,C,_,h),w=a.append("path").attr("class","katucharts-flowmap-link").attr("d",I).attr("fill",$).attr("fill-opacity",u?0:c).attr("stroke","none").style("cursor",t.cursor||"pointer");if(u&&w.transition().duration(bt).delay(x*30).ease(pt).attr("fill-opacity",c),f){const A=_*1.1+3,T=a.append("path").attr("class","katucharts-flowmap-arrow").attr("d",this.arrowHead(P,S,A)).attr("fill",$).attr("fill-opacity",u?0:c).style("pointer-events","none");u&&T.transition().duration(bt).delay(x*30).ease(pt).attr("fill-opacity",c)}w.on("mouseover",A=>{var T,R;rt(A.currentTarget).transition("hover").duration(K).ease(Z).attr("fill-opacity",Math.min(1,c+.3)),this.context.events.emit("point:mouseover",{point:m,index:x,series:this,event:A,plotX:E[0],plotY:E[1]}),(R=(T=v.events)==null?void 0:T.mouseOver)==null||R.call(m,A)}).on("mouseout",A=>{var T,R;rt(A.currentTarget).transition("hover").duration(K).ease(Z).attr("fill-opacity",c),this.context.events.emit("point:mouseout",{point:m,index:x,series:this,event:A}),(R=(T=v.events)==null?void 0:T.mouseOut)==null||R.call(m,A)}).on("click",A=>{var T,R,F,D,z,B,H;this.context.events.emit("point:click",{point:m,index:x,series:this,event:A}),(R=(T=v.events)==null?void 0:T.click)==null||R.call(m,A),(z=(D=(F=t.point)==null?void 0:F.events)==null?void 0:D.click)==null||z.call(m,A),(H=(B=t.events)==null?void 0:B.click)==null||H.call(this,A)})})}buildFlowPath(t,e,i,r){const o=e[0]-t[0],s=e[1]-t[1],a=Math.hypot(o,s)||1,l=-s/a,c=o/a,h=[(t[0]+e[0])/2+l*r*a,(t[1]+e[1])/2+c*r*a],f=24,u=Math.max(.6,i*.12),d=i/2,p=[],y=[];let g=t;for(let k=0;k<=f;k++){const M=k/f,C=1-M,L=C*C*t[0]+2*C*M*h[0]+M*M*e[0],_=C*C*t[1]+2*C*M*h[1]+M*M*e[1],$=L-g[0],I=_-g[1],E=Math.hypot($,I)||1,P=-I/E,S=$/E,w=u+(d-u)*M;p.push([L+P*w,_+S*w]),y.push([L-P*w,_-S*w]),g=[L,_]}const m=.25*t[0]+.5*h[0]+.25*e[0],x=.25*t[1]+.5*h[1]+.25*e[1],v=Math.atan2(e[1]-h[1],e[0]-h[0]);return{d:"M"+p.map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"L"+y.reverse().map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"Z",mid:[m,x],tip:e,tipAngle:v}}arrowHead(t,e,i){const r=e,o=r+Math.PI,s=.5,a=[t[0]+Math.cos(r)*i*.6,t[1]+Math.sin(r)*i*.6],l=[t[0]+Math.cos(o+s)*i,t[1]+Math.sin(o+s)*i],c=[t[0]+Math.cos(o-s)*i,t[1]+Math.sin(o-s)*i];return`M${a[0].toFixed(2)},${a[1].toFixed(2)}L${l[0].toFixed(2)},${l[1].toFixed(2)}L${c[0].toFixed(2)},${c[1].toFixed(2)}Z`}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const xp=["#5b9bd5","#ed7d31","#70ad47","#9e5fa0","#ffc000","#44546a"],wM=/^(.+?)\s+(\([^()]+\))\s*$/,bp=1.15;function vp(n,t,e){for(;n.firstChild;)n.removeChild(n.firstChild);let i;if(t.includes(`
|
|
7
|
+
`,o=(e==null?void 0:e.decimalPoint)??".",s=["Category"];t.forEach(h=>{if(e!=null&&e.columnHeaderFormatter){const f=e.columnHeaderFormatter(h,"y",1);s.push(f===!1?h.name||"Series":f)}else s.push(h.name||"Series")});const a=new Set;for(const h of t)for(const f of h.data)a.add(f.name??f.x??"");const l=h=>{if(h==null)return"";const f=String(h);return o!=="."&&typeof h=="number"?f.replace(".",o):f},c=[];for(const h of a){const f=[String(h)];for(const u of t){const d=u.data.find(p=>(p.name??p.x)===h);f.push((d==null?void 0:d.y)!==void 0&&d.y!==null?l(d.y):"")}c.push(f)}return[s.map(h=>Zo(h,i)).join(i),...c.map(h=>h.map(f=>Zo(f,i)).join(i))].join(r)}static getDataRows(t){const e=["Category"];t.forEach(o=>e.push(o.name||"Series"));const i=new Set;for(const o of t)for(const s of o.data)i.add(s.name??s.x??"");const r=[e];for(const o of i){const s=[o!=null?String(o):""];for(const a of t){const l=a.data.find(c=>(c.name??c.x)===o);s.push((l==null?void 0:l.y)??null)}r.push(s)}return r}static getTable(t,e){const i=We.getDataRows(t);if(i.length===0)return"<table></table>";const r=i[0],o=i.slice(1);let s='<table class="katucharts-data-table">';e&&typeof e=="string"&&(s+=`<caption>${jn(e)}</caption>`),s+="<thead><tr>";for(const a of r)s+=`<th>${jn(a??"")}</th>`;s+="</tr></thead><tbody>";for(const a of o){s+="<tr>";for(const l of a)s+=`<td>${jn(l??"")}</td>`;s+="</tr>"}return s+="</tbody></table>",s}static viewDataTable(t,e,i){let r=e.querySelector(".katucharts-data-table-container");if(r)return r.remove(),null;r=document.createElement("div"),r.className="katucharts-data-table-container",Object.assign(r.style,{position:"relative",maxHeight:"300px",overflow:"auto",border:"1px solid #ccc",marginTop:"10px",fontSize:"11px"});const o=We.getTable(t,i);r.innerHTML=o;const s=r.querySelector("table");return s&&(Object.assign(s.style,{width:"100%",borderCollapse:"collapse"}),s.querySelectorAll("th, td").forEach(a=>{Object.assign(a.style,{padding:"4px 8px",borderBottom:"1px solid #e6e6e6",textAlign:"left"})}),s.querySelectorAll("th").forEach(a=>{Object.assign(a.style,{backgroundColor:"#f7f7f7",fontWeight:"bold"})})),e.appendChild(r),r}static downloadBlob(t,e){const i=URL.createObjectURL(t),r=document.createElement("a");r.href=i,r.download=e,document.body.appendChild(r),r.click(),document.body.removeChild(r),URL.revokeObjectURL(i)}};We.INLINE_PROPS=["fill","stroke","stroke-width","stroke-dasharray","stroke-linecap","stroke-linejoin","stroke-opacity","fill-opacity","opacity","font-family","font-size","font-weight","font-style","text-anchor","dominant-baseline","text-decoration","visibility","display"];let ne=We;class Dv{constructor(t){this.host=t}getSVG(){return this.host.getRenderer().getSerializedSVG()}getInlinedSVG(){const t=this.host.getRenderer(),e=t.getSVGNode();return e?ne.inlineStyles(e):t.getSerializedSVG()}handleExportAction(t){const e=this.host.getOptions(),i=this.getInlinedSVG(),r=e.exporting.filename??"chart",o=e.exporting.scale??2;switch(t){case"downloadPNG":ne.exportPNG(i,r,o).catch(s=>console.warn("KatuCharts: PNG export failed.",s));break;case"downloadJPEG":ne.exportJPEG(i,r,o).catch(s=>console.warn("KatuCharts: JPEG export failed.",s));break;case"downloadSVG":ne.exportSVG(i,r);break;case"downloadPDF":ne.exportPDF(i,r,o).catch(s=>console.warn("KatuCharts: PDF export failed.",s));break;case"downloadCSV":ne.exportCSV(this.getSeriesDataForExport(),r,e.exporting.csv);break;case"downloadXLS":this.exportXLS(r);break;case"viewDataTable":ne.viewDataTable(this.getSeriesDataForExport(),this.host.getContainer(),e.exporting.tableCaption);break;case"viewFullScreen":this.toggleFullScreen();break;case"printChart":this.host.fireEvent("beforePrint"),ne.print(i,e.exporting.printMaxWidth),this.host.fireEvent("afterPrint");break}}toggleFullScreen(){var m;const t=this.host.getContainer();if(!t)return;const e=t.ownerDocument,i=e.defaultView||window;if(e.fullscreenElement===t||e.webkitFullscreenElement===t){e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen();return}const o=t.style,s={width:o.width,height:o.height,maxWidth:o.maxWidth,maxHeight:o.maxHeight,background:o.background},a=this.host.getOptions().chart.backgroundColor||"#fff";o.background=a,o.width="100vw",o.height="100vh",o.maxWidth="none",o.maxHeight="none",this.host.disconnectResizeObserver();const l=this.host.getViewportSize(),c=()=>{o.width=s.width,o.height=s.height,o.maxWidth=s.maxWidth,o.maxHeight=s.maxHeight,o.background=s.background},h=()=>{this.host.fitToViewport(l.width,l.height)};let f=null;const u=()=>{const x=i.innerWidth,v=i.innerHeight;!x||!v||this.host.fitToViewport(x,v)},d=()=>{e.exitFullscreen?e.exitFullscreen():e.webkitExitFullscreen&&e.webkitExitFullscreen()},p=()=>{i.removeEventListener("resize",u),e.removeEventListener("fullscreenchange",y),e.removeEventListener("webkitfullscreenchange",y)},y=()=>{e.fullscreenElement===t||e.webkitFullscreenElement===t?(f=e.createElement("button"),f.textContent="✕",Object.assign(f.style,{position:"absolute",top:"10px",left:"50%",transform:"translateX(-50%)",zIndex:"10000",width:"32px",height:"32px",border:"none",borderRadius:"50%",background:"rgba(0,0,0,0.4)",color:"#fff",fontSize:"18px",cursor:"pointer",display:"flex",alignItems:"center",justifyContent:"center",lineHeight:"1",padding:"0"}),f.addEventListener("mouseenter",()=>{f&&(f.style.background="rgba(0,0,0,0.7)")}),f.addEventListener("mouseleave",()=>{f&&(f.style.background="rgba(0,0,0,0.4)")}),f.addEventListener("click",d),t.appendChild(f),u(),requestAnimationFrame(u),i.addEventListener("resize",u)):(p(),f&&(f.remove(),f=null),c(),h(),requestAnimationFrame(()=>{this.host.observeResizeObserver(),this.host.fireEvent("exitFullScreen")}))};e.addEventListener("fullscreenchange",y),e.addEventListener("webkitfullscreenchange",y);const g=()=>{p(),c(),this.host.getRenderer().svg.style("width",null).style("height",null),h(),this.host.observeResizeObserver()};try{const x=t.requestFullscreen?t.requestFullscreen():(m=t.webkitRequestFullscreen)==null?void 0:m.call(t);x&&typeof x.catch=="function"&&x.catch(g),this.host.fireEvent("enterFullScreen")}catch{g()}}getSeriesDataForExport(){return this.host.getSeriesInstances().map(t=>({name:t.config.name||`Series ${t.config.index+1}`,data:t.data.map(e=>({x:e.x,y:e.y,name:e.name}))}))}exportXLS(t){const e=ne.getDataRows(this.getSeriesDataForExport());let i='<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:x="urn:schemas-microsoft-com:office:spreadsheet" xmlns="http://www.w3.org/TR/REC-html40"><head><meta charset="utf-8"/></head><body><table>';for(const o of e){i+="<tr>";for(const s of o)i+=`<td>${s??""}</td>`;i+="</tr>"}i+="</table></body></html>";const r=new Blob([i],{type:"application/vnd.ms-excel"});ne.downloadBlob(r,`${t}.xls`)}getCSV(){return ne.getCSV(this.getSeriesDataForExport(),this.host.getOptions().exporting.csv)}getTable(){return ne.getTable(this.getSeriesDataForExport(),this.host.getOptions().exporting.tableCaption)}getDataRows(){return ne.getDataRows(this.getSeriesDataForExport())}exportChart(t){const e={...this.host.getOptions().exporting,...t},i=this.getInlinedSVG(),r=e.filename??"chart",o=e.scale??2;switch(e.type){case"image/jpeg":ne.exportJPEG(i,r,o);break;case"image/svg+xml":ne.exportSVG(i,r);break;case"application/pdf":ne.exportPDF(i,r,o);break;case"image/png":default:ne.exportPNG(i,r,o);break}}print(){this.host.fireEvent("beforePrint");const t=this.getInlinedSVG();ne.print(t,this.host.getOptions().exporting.printMaxWidth),this.host.fireEvent("afterPrint")}optionsToExternal(){const t=this.host.getOptions();return{chart:t.chart,title:t.title,subtitle:t.subtitle,xAxis:t.xAxis,yAxis:t.yAxis,colorAxis:t.colorAxis,series:t.series,tooltip:t.tooltip,legend:t.legend,plotOptions:t.plotOptions,credits:t.credits,colors:t.colors}}}class zv{constructor(t){this.host=t}updateTooltipCategories(){const t=this.host.getTooltip();if(!t)return;const e=this.host.getXAxes()[0];e&&(e.config.type==="category"||e.config.categories)&&t.setCategories(e.config.categories||[]),t.setDatetimeAxis(!!e&&e.config.type==="datetime")}updateAxesDomains(){const t=Pi,e=this.host.getOptions(),i=this.host.getLayout(),r=this.host.getSeriesInstances(),o=this.host.getXAxes(),s=this.host.getYAxes();for(let a=0;a<o.length;a++){const l=o[a];if(l.config.type==="category"||l.config.categories&&l.config.categories.length>0){const u=r.filter((p,y)=>p.visible&&e.series[y]._xAxisIndex===a&&!t.has(p.config._internalType)),d=(l.config.categories&&l.config.categories.length>0?l.config.categories:null)||(u.length>0?u[0].getCategories():void 0);d&&d.length>0&&l.updateDomain(d);continue}const c=r.filter((u,d)=>u.visible&&e.series[d]._xAxisIndex===a&&!t.has(u.config._internalType));if(c.length===0)continue;let h=1/0,f=-1/0;for(const u of c){const d=u.getDataExtents();h=Math.min(h,d.xMin),f=Math.max(f,d.xMax)}if(isFinite(h)&&isFinite(f)){const u=e.series.filter((p,y)=>{var g;return((g=r[y])==null?void 0:g.visible)&&p._xAxisIndex===a&&!t.has(p._internalType)}),d=this.computeBubbleRadiusPadding(u,i.plotArea.width);l.updateDomain({min:h,max:f,extraMinPadding:d,extraMaxPadding:d})}}for(let a=0;a<s.length;a++){const l=s[a],c=e.series.filter((g,m)=>{var x;return((x=r[m])==null?void 0:x.visible)&&g._yAxisIndex===a&&!t.has(g._internalType)}),h=r.filter((g,m)=>g.visible&&e.series[m]._yAxisIndex===a&&!t.has(g.config._internalType));if(h.length===0)continue;let f=1/0,u=-1/0;const d=new Map;for(let g=0;g<h.length;g++){const m=h[g],x=c[g];if(x!=null&&x.stacking){const v=es(x);d.has(v)||d.set(v,new Map),Wi(m.data,d.get(v))}else{const v=m.getDataExtents();f=Math.min(f,v.yMin),u=Math.max(u,v.yMax)}}const p=c.some(g=>(g==null?void 0:g.stacking)==="percent");p&&(f=0,u=100,l.config.min=0,l.config.max=100);for(const g of d.values())if(!p)for(const m of g.values())f=Math.min(f,0),u=Math.max(u,m);if(c.some(g=>mg.has(g._internalType))&&l.config.min===void 0&&(f=Math.min(f,0),u=Math.max(u,0)),isFinite(f)&&isFinite(u)){const g=this.computeBubbleRadiusPadding(c,i.plotArea.height);l.updateDomain({min:f,max:u,extraMinPadding:g,extraMaxPadding:g})}}}computeBubbleRadiusPadding(t,e){const i=t.filter(s=>s&&s._internalType==="bubble");if(i.length===0||e<=0)return 0;const r=this.host.getLayout().plotArea;let o=0;for(const s of i){const a=s.maxSize;let l;typeof a=="number"?l=a:typeof a=="string"&&a.endsWith("%")?l=Math.min(r.width,r.height)*parseFloat(a)/100/2:l=30,o=Math.max(o,l)}return o/Math.max(e-2*o,1)}renderAxes(){const t=this.host.getAxisGroup(),e=this.host.getLayout();if(t.selectAll("*").remove(),!Dl(this.host.getOptions().series)){for(const i of this.host.getXAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!0)||i.render(t,e.plotArea);for(const i of this.host.getYAxes())i.config.showEmpty===!1&&!this.hasSeriesForAxis(i,!1)||i.render(t,e.plotArea);this.setupAxisLabelHover()}}setupAxisLabelHover(){const t=this.host.getXAxes()[0];if(!t)return;const i=this.host.getAxisGroup().select(".katucharts-axis-x");if(i.empty())return;const r=i.selectAll(".tick"),o=this.host.getOptions(),s=this.host.getSeriesInstances(),a=this.host.getYAxes(),l=this.host.getEvents();r.each(function(){const c=rt(this),h=c.select("text");if(h.empty())return;const f=h.node().getBBox();c.insert("rect","text").attr("x",f.x-4).attr("y",f.y-2).attr("width",f.width+8).attr("height",f.height+4).attr("fill","transparent").attr("class","katucharts-tick-hitarea")}),r.style("cursor","pointer").on("mouseover",function(c){var y;const h=this.__data__,f=typeof h=="string"?((y=t.config.categories)==null?void 0:y.indexOf(h))??-1:typeof h=="number"?h:-1;if(f<0)return;const u=!!o.chart.inverted,d=t.getPixelForValue(h),p=[];for(const g of s){if(!g.visible)continue;const m=g.data.find(x=>(x.x??0)===f);if(m&&m.y!==null&&m.y!==void 0){const v=a[0].getPixelForValue(m.y??0);p.push({point:m,series:g,plotX:u?v:d,plotY:u?d:v})}}if(p.length>0){const g=p[0];l.emit("point:mouseover",{point:{...g.point,matchingPoints:p},index:f,series:g.series,event:c,plotX:g.plotX,plotY:g.plotY})}for(const g of s){if(!g.visible)continue;const m=g.group;if(!m)continue;m.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").each(function(v){const b=rt(this);((v==null?void 0:v.x)??-1)===f?b.attr("filter","brightness(1.15)"):b.transition().duration(100).attr("opacity",.3)})}}).on("mouseout",function(){for(const c of s){if(!c.visible)continue;const h=c.group;h&&h.selectAll(".katucharts-column, .katucharts-bar, .katucharts-marker, .katucharts-bubble, .katucharts-scatter-point").interrupt().attr("opacity",null).attr("filter",null)}l.emit("point:mouseout",{point:{},index:-1,series:null,event:null})})}hasSeriesForAxis(t,e){const i=this.host.getOptions();return this.host.getSeriesInstances().some((r,o)=>{const s=i.series[o],a=e?s._xAxisIndex:s._yAxisIndex;return r.visible&&a===t.config.index})}}class ff{constructor(t,e,i){if(this.stack=[],this.breadcrumbsEl=null,this.container=null,this.config=t,this.events=e,this.container=i||null,this.drilldownMap=new Map,t.series)for(const r of t.series)r.id&&this.drilldownMap.set(r.id,r);this.pointClickHandler=r=>{const o=r.point.drilldown;o&&this.drilldownMap.has(o)&&this.drillDown(o,r)},e.on("point:click",this.pointClickHandler)}addSeriesAsDrilldown(t,e){e.id&&this.drilldownMap.set(e.id,e);const i=t.drilldown||e.id;i&&this.drillDown(i,{point:t,series:{}})}drillDown(t,e){var r,o;const i=this.drilldownMap.get(t);i&&(this.stack.push({seriesOptions:(r=e.series)!=null&&r.config?[e.series.config]:[],title:(o=e.point)==null?void 0:o.name}),this.events.emit("drilldown:drilldown",{point:e.point,seriesOptions:i}),this.updateBreadcrumbs())}drillUp(){const t=this.stack.pop();t&&(this.events.emit("drilldown:drillup",t),this.updateBreadcrumbs())}drillUpToLevel(t){for(;this.stack.length>t;)this.drillUp()}hasLevels(){return this.stack.length>0}getCurrentLevel(){return this.stack.length}get breadcrumbsConfig(){const t=this.config.breadcrumbs;return t&&typeof t=="object"?t:{}}isBreadcrumbsEnabled(){const t=this.config.breadcrumbs;return!(t===!1||t&&typeof t=="object"&&t.enabled===!1)}updateBreadcrumbs(){var u,d,p,y,g,m,x,v;if(!this.container||!this.isBreadcrumbsEnabled())return;const t=this.breadcrumbsConfig,e=t.floating!==!1;if(!this.breadcrumbsEl){this.breadcrumbsEl=document.createElement("div"),this.breadcrumbsEl.className="katucharts-breadcrumbs";const b=t.position||{};e&&getComputedStyle(this.container).position==="static"&&(this.container.style.position="relative"),Object.assign(this.breadcrumbsEl.style,{position:e?"absolute":"relative",display:"flex",alignItems:"center",gap:"6px",padding:"3px 10px",borderRadius:"999px",fontSize:((u=t.style)==null?void 0:u.fontSize)||"12px",fontWeight:((d=t.style)==null?void 0:d.fontWeight)||"500",lineHeight:"1.4",color:((p=t.style)==null?void 0:p.color)||"#1b1a15",background:((y=t.style)==null?void 0:y.background)||"rgba(255,255,255,0.86)",boxShadow:((g=t.style)==null?void 0:g.boxShadow)||"0 1px 3px rgba(27,26,21,0.18)",zIndex:"10",top:e?`${b.y??8}px`:"",left:e?`${b.x??8}px`:"",userSelect:"none"}),this.container.appendChild(this.breadcrumbsEl)}if(this.breadcrumbsEl.innerHTML="",this.stack.length===0){this.breadcrumbsEl.style.display="none";return}this.breadcrumbsEl.style.display="flex";const i=((m=t.style)==null?void 0:m.linkColor)||"#003399",r=((x=t.separator)==null?void 0:x.text)??"/",o=((v=t.separator)==null?void 0:v.style)||{},s=t.showFullPath!==!1,a=t.showBackButton!==!1,l=t.rootText??"Main",c=b=>{const k=document.createElement("span");k.textContent="◀",k.setAttribute("role","button"),k.setAttribute("aria-label","Drill up"),Object.assign(k.style,{cursor:"pointer",color:i,fontSize:"0.8em",lineHeight:"1",transition:"opacity 120ms ease"}),k.addEventListener("mouseenter",()=>{k.style.opacity="0.55"}),k.addEventListener("mouseleave",()=>{k.style.opacity="1"}),k.addEventListener("click",b),this.breadcrumbsEl.appendChild(k)},h=(b,k,M)=>{const C=document.createElement("span");C.textContent=b,M&&(Object.assign(C.style,{cursor:"pointer",color:i,transition:"opacity 120ms ease"}),C.addEventListener("mouseenter",()=>{C.style.textDecoration="underline"}),C.addEventListener("mouseleave",()=>{C.style.textDecoration="none"}),C.addEventListener("click",()=>{var L;(L=t.events)!=null&&L.click&&t.events.click.call(this,{level:k}),this.drillUpToLevel(k)})),this.breadcrumbsEl.appendChild(C)},f=()=>{const b=document.createElement("span");b.textContent=r,b.style.opacity="0.55",o.color&&(b.style.color=o.color),this.breadcrumbsEl.appendChild(b)};if(s){a&&c(()=>this.drillUp()),h(l,0,!0);for(let b=0;b<this.stack.length;b++){f();const k=b===this.stack.length-1,M=this.getCrumbLabel(b);h(M,b+1,!k)}}else{c(()=>this.drillUp());const b=document.createElement("span");b.textContent="Back",b.style.cursor="pointer",b.style.color=i,b.addEventListener("click",()=>this.drillUp()),this.breadcrumbsEl.appendChild(b)}}getCrumbLabel(t){const e=this.stack[t],i=this.breadcrumbsConfig;return i.formatter?i.formatter.call({level:t,levelOptions:e}):e.title||`Level ${t+1}`}destroy(){this.events.off("point:click",this.pointClickHandler),this.breadcrumbsEl&&(this.breadcrumbsEl.remove(),this.breadcrumbsEl=null)}}const Bv={passive:!1},Mr={capture:!0,passive:!1};function tc(n){n.stopImmediatePropagation()}function Hi(n){n.preventDefault(),n.stopImmediatePropagation()}function ec(n){var t=n.document.documentElement,e=rt(n).on("dragstart.drag",Hi,Mr);"onselectstart"in t?e.on("selectstart.drag",Hi,Mr):(t.__noselect=t.style.MozUserSelect,t.style.MozUserSelect="none")}function nc(n,t){var e=n.document.documentElement,i=rt(n).on("dragstart.drag",null);t&&(i.on("click.drag",Hi,Mr),setTimeout(function(){i.on("click.drag",null)},0)),"onselectstart"in e?i.on("selectstart.drag",null):(e.style.MozUserSelect=e.__noselect,delete e.__noselect)}const ns=n=>()=>n;function ic(n,{sourceEvent:t,subject:e,target:i,identifier:r,active:o,x:s,y:a,dx:l,dy:c,dispatch:h}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},subject:{value:e,enumerable:!0,configurable:!0},target:{value:i,enumerable:!0,configurable:!0},identifier:{value:r,enumerable:!0,configurable:!0},active:{value:o,enumerable:!0,configurable:!0},x:{value:s,enumerable:!0,configurable:!0},y:{value:a,enumerable:!0,configurable:!0},dx:{value:l,enumerable:!0,configurable:!0},dy:{value:c,enumerable:!0,configurable:!0},_:{value:h}})}ic.prototype.on=function(){var n=this._.on.apply(this._,arguments);return n===this._?this:n};function Ov(n){return!n.ctrlKey&&!n.button}function Nv(){return this.parentNode}function Wv(n,t){return t??{x:n.x,y:n.y}}function Hv(){return navigator.maxTouchPoints||"ontouchstart"in this}function df(){var n=Ov,t=Nv,e=Wv,i=Hv,r={},o=zi("start","drag","end"),s=0,a,l,c,h,f=0;function u(b){b.on("mousedown.drag",d).filter(i).on("touchstart.drag",g).on("touchmove.drag",m,Bv).on("touchend.drag touchcancel.drag",x).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}function d(b,k){if(!(h||!n.call(this,b,k))){var M=v(this,t.call(this,b,k),b,k,"mouse");M&&(rt(b.view).on("mousemove.drag",p,Mr).on("mouseup.drag",y,Mr),ec(b.view),tc(b),c=!1,a=b.clientX,l=b.clientY,M("start",b))}}function p(b){if(Hi(b),!c){var k=b.clientX-a,M=b.clientY-l;c=k*k+M*M>f}r.mouse("drag",b)}function y(b){rt(b.view).on("mousemove.drag mouseup.drag",null),nc(b.view,c),Hi(b),r.mouse("end",b)}function g(b,k){if(n.call(this,b,k)){var M=b.changedTouches,C=t.call(this,b,k),L=M.length,_,$;for(_=0;_<L;++_)($=v(this,C,b,k,M[_].identifier,M[_]))&&(tc(b),$("start",b,M[_]))}}function m(b){var k=b.changedTouches,M=k.length,C,L;for(C=0;C<M;++C)(L=r[k[C].identifier])&&(Hi(b),L("drag",b,k[C]))}function x(b){var k=b.changedTouches,M=k.length,C,L;for(h&&clearTimeout(h),h=setTimeout(function(){h=null},500),C=0;C<M;++C)(L=r[k[C].identifier])&&(tc(b),L("end",b,k[C]))}function v(b,k,M,C,L,_){var $=o.copy(),I=pn(_||M,k),E,P,S;if((S=e.call(b,new ic("beforestart",{sourceEvent:M,target:u,identifier:L,active:s,x:I[0],y:I[1],dx:0,dy:0,dispatch:$}),C))!=null)return E=S.x-I[0]||0,P=S.y-I[1]||0,function w(A,T,R){var F=I,D;switch(A){case"start":r[L]=w,D=s++;break;case"end":delete r[L],--s;case"drag":I=pn(R||T,k),D=s;break}$.call(A,b,new ic(A,{sourceEvent:T,subject:S,target:u,identifier:L,active:D,x:I[0]+E,y:I[1]+P,dx:I[0]-F[0],dy:I[1]-F[1],dispatch:$}),C)}}return u.filter=function(b){return arguments.length?(n=typeof b=="function"?b:ns(!!b),u):n},u.container=function(b){return arguments.length?(t=typeof b=="function"?b:ns(b),u):t},u.subject=function(b){return arguments.length?(e=typeof b=="function"?b:ns(b),u):e},u.touchable=function(b){return arguments.length?(i=typeof b=="function"?b:ns(!!b),u):i},u.on=function(){var b=o.on.apply(o,arguments);return b===o?u:b},u.clickDistance=function(b){return arguments.length?(f=(b=+b)*b,u):Math.sqrt(f)},u}const is=n=>()=>n;function Vv(n,{sourceEvent:t,target:e,transform:i,dispatch:r}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},transform:{value:i,enumerable:!0,configurable:!0},_:{value:r}})}function Bn(n,t,e){this.k=n,this.x=t,this.y=e}Bn.prototype={constructor:Bn,scale:function(n){return n===1?this:new Bn(this.k*n,this.x,this.y)},translate:function(n,t){return n===0&t===0?this:new Bn(this.k,this.x+this.k*n,this.y+this.k*t)},apply:function(n){return[n[0]*this.k+this.x,n[1]*this.k+this.y]},applyX:function(n){return n*this.k+this.x},applyY:function(n){return n*this.k+this.y},invert:function(n){return[(n[0]-this.x)/this.k,(n[1]-this.y)/this.k]},invertX:function(n){return(n-this.x)/this.k},invertY:function(n){return(n-this.y)/this.k},rescaleX:function(n){return n.copy().domain(n.range().map(this.invertX,this).map(n.invert,n))},rescaleY:function(n){return n.copy().domain(n.range().map(this.invertY,this).map(n.invert,n))},toString:function(){return"translate("+this.x+","+this.y+") scale("+this.k+")"}};var rs=new Bn(1,0,0);Bn.prototype;function rc(n){n.stopImmediatePropagation()}function Ar(n){n.preventDefault(),n.stopImmediatePropagation()}function Gv(n){return(!n.ctrlKey||n.type==="wheel")&&!n.button}function Yv(){var n=this;return n instanceof SVGElement?(n=n.ownerSVGElement||n,n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]):[[0,0],[n.clientWidth,n.clientHeight]]}function pf(){return this.__zoom||rs}function Xv(n){return-n.deltaY*(n.deltaMode===1?.05:n.deltaMode?1:.002)*(n.ctrlKey?10:1)}function Uv(){return navigator.maxTouchPoints||"ontouchstart"in this}function qv(n,t,e){var i=n.invertX(t[0][0])-e[0][0],r=n.invertX(t[1][0])-e[1][0],o=n.invertY(t[0][1])-e[0][1],s=n.invertY(t[1][1])-e[1][1];return n.translate(r>i?(i+r)/2:Math.min(0,i)||Math.max(0,r),s>o?(o+s)/2:Math.min(0,o)||Math.max(0,s))}function gf(){var n=Gv,t=Yv,e=qv,i=Xv,r=Uv,o=[0,1/0],s=[[-1/0,-1/0],[1/0,1/0]],a=250,l=Jy,c=zi("start","zoom","end"),h,f,u,d=500,p=150,y=0,g=10;function m(S){S.property("__zoom",pf).on("wheel.zoom",L,{passive:!1}).on("mousedown.zoom",_).on("dblclick.zoom",$).filter(r).on("touchstart.zoom",I).on("touchmove.zoom",E).on("touchend.zoom touchcancel.zoom",P).style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}m.transform=function(S,w,A,T){var R=S.selection?S.selection():S;R.property("__zoom",pf),S!==R?k(S,w,A,T):R.interrupt().each(function(){M(this,arguments).event(T).start().zoom(null,typeof w=="function"?w.apply(this,arguments):w).end()})},m.scaleBy=function(S,w,A,T){m.scaleTo(S,function(){var R=this.__zoom.k,F=typeof w=="function"?w.apply(this,arguments):w;return R*F},A,T)},m.scaleTo=function(S,w,A,T){m.transform(S,function(){var R=t.apply(this,arguments),F=this.__zoom,D=A==null?b(R):typeof A=="function"?A.apply(this,arguments):A,z=F.invert(D),B=typeof w=="function"?w.apply(this,arguments):w;return e(v(x(F,B),D,z),R,s)},A,T)},m.translateBy=function(S,w,A,T){m.transform(S,function(){return e(this.__zoom.translate(typeof w=="function"?w.apply(this,arguments):w,typeof A=="function"?A.apply(this,arguments):A),t.apply(this,arguments),s)},null,T)},m.translateTo=function(S,w,A,T,R){m.transform(S,function(){var F=t.apply(this,arguments),D=this.__zoom,z=T==null?b(F):typeof T=="function"?T.apply(this,arguments):T;return e(rs.translate(z[0],z[1]).scale(D.k).translate(typeof w=="function"?-w.apply(this,arguments):-w,typeof A=="function"?-A.apply(this,arguments):-A),F,s)},T,R)};function x(S,w){return w=Math.max(o[0],Math.min(o[1],w)),w===S.k?S:new Bn(w,S.x,S.y)}function v(S,w,A){var T=w[0]-A[0]*S.k,R=w[1]-A[1]*S.k;return T===S.x&&R===S.y?S:new Bn(S.k,T,R)}function b(S){return[(+S[0][0]+ +S[1][0])/2,(+S[0][1]+ +S[1][1])/2]}function k(S,w,A,T){S.on("start.zoom",function(){M(this,arguments).event(T).start()}).on("interrupt.zoom end.zoom",function(){M(this,arguments).event(T).end()}).tween("zoom",function(){var R=this,F=arguments,D=M(R,F).event(T),z=t.apply(R,F),B=A==null?b(z):typeof A=="function"?A.apply(R,F):A,H=Math.max(z[1][0]-z[0][0],z[1][1]-z[0][1]),J=R.__zoom,X=typeof w=="function"?w.apply(R,F):w,j=l(J.invert(B).concat(H/J.k),X.invert(B).concat(H/X.k));return function(W){if(W===1)W=X;else{var U=j(W),G=H/U[2];W=new Bn(G,B[0]-U[0]*G,B[1]-U[1]*G)}D.zoom(null,W)}})}function M(S,w,A){return!A&&S.__zooming||new C(S,w)}function C(S,w){this.that=S,this.args=w,this.active=0,this.sourceEvent=null,this.extent=t.apply(S,w),this.taps=0}C.prototype={event:function(S){return S&&(this.sourceEvent=S),this},start:function(){return++this.active===1&&(this.that.__zooming=this,this.emit("start")),this},zoom:function(S,w){return this.mouse&&S!=="mouse"&&(this.mouse[1]=w.invert(this.mouse[0])),this.touch0&&S!=="touch"&&(this.touch0[1]=w.invert(this.touch0[0])),this.touch1&&S!=="touch"&&(this.touch1[1]=w.invert(this.touch1[0])),this.that.__zoom=w,this.emit("zoom"),this},end:function(){return--this.active===0&&(delete this.that.__zooming,this.emit("end")),this},emit:function(S){var w=rt(this.that).datum();c.call(S,this.that,new Vv(S,{sourceEvent:this.sourceEvent,target:m,transform:this.that.__zoom,dispatch:c}),w)}};function L(S,...w){if(!n.apply(this,arguments))return;var A=M(this,w).event(S),T=this.__zoom,R=Math.max(o[0],Math.min(o[1],T.k*Math.pow(2,i.apply(this,arguments)))),F=pn(S);if(A.wheel)(A.mouse[0][0]!==F[0]||A.mouse[0][1]!==F[1])&&(A.mouse[1]=T.invert(A.mouse[0]=F)),clearTimeout(A.wheel);else{if(T.k===R)return;A.mouse=[F,T.invert(F)],Oi(this),A.start()}Ar(S),A.wheel=setTimeout(D,p),A.zoom("mouse",e(v(x(T,R),A.mouse[0],A.mouse[1]),A.extent,s));function D(){A.wheel=null,A.end()}}function _(S,...w){if(u||!n.apply(this,arguments))return;var A=S.currentTarget,T=M(this,w,!0).event(S),R=rt(S.view).on("mousemove.zoom",B,!0).on("mouseup.zoom",H,!0),F=pn(S,A),D=S.clientX,z=S.clientY;ec(S.view),rc(S),T.mouse=[F,this.__zoom.invert(F)],Oi(this),T.start();function B(J){if(Ar(J),!T.moved){var X=J.clientX-D,j=J.clientY-z;T.moved=X*X+j*j>y}T.event(J).zoom("mouse",e(v(T.that.__zoom,T.mouse[0]=pn(J,A),T.mouse[1]),T.extent,s))}function H(J){R.on("mousemove.zoom mouseup.zoom",null),nc(J.view,T.moved),Ar(J),T.event(J).end()}}function $(S,...w){if(n.apply(this,arguments)){var A=this.__zoom,T=pn(S.changedTouches?S.changedTouches[0]:S,this),R=A.invert(T),F=A.k*(S.shiftKey?.5:2),D=e(v(x(A,F),T,R),t.apply(this,w),s);Ar(S),a>0?rt(this).transition().duration(a).call(k,D,T,S):rt(this).call(m.transform,D,T,S)}}function I(S,...w){if(n.apply(this,arguments)){var A=S.touches,T=A.length,R=M(this,w,S.changedTouches.length===T).event(S),F,D,z,B;for(rc(S),D=0;D<T;++D)z=A[D],B=pn(z,this),B=[B,this.__zoom.invert(B),z.identifier],R.touch0?!R.touch1&&R.touch0[2]!==B[2]&&(R.touch1=B,R.taps=0):(R.touch0=B,F=!0,R.taps=1+!!h);h&&(h=clearTimeout(h)),F&&(R.taps<2&&(f=B[0],h=setTimeout(function(){h=null},d)),Oi(this),R.start())}}function E(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,R=T.length,F,D,z,B;for(Ar(S),F=0;F<R;++F)D=T[F],z=pn(D,this),A.touch0&&A.touch0[2]===D.identifier?A.touch0[0]=z:A.touch1&&A.touch1[2]===D.identifier&&(A.touch1[0]=z);if(D=A.that.__zoom,A.touch1){var H=A.touch0[0],J=A.touch0[1],X=A.touch1[0],j=A.touch1[1],W=(W=X[0]-H[0])*W+(W=X[1]-H[1])*W,U=(U=j[0]-J[0])*U+(U=j[1]-J[1])*U;D=x(D,Math.sqrt(W/U)),z=[(H[0]+X[0])/2,(H[1]+X[1])/2],B=[(J[0]+j[0])/2,(J[1]+j[1])/2]}else if(A.touch0)z=A.touch0[0],B=A.touch0[1];else return;A.zoom("touch",e(v(D,z,B),A.extent,s))}}function P(S,...w){if(this.__zooming){var A=M(this,w).event(S),T=S.changedTouches,R=T.length,F,D;for(rc(S),u&&clearTimeout(u),u=setTimeout(function(){u=null},d),F=0;F<R;++F)D=T[F],A.touch0&&A.touch0[2]===D.identifier?delete A.touch0:A.touch1&&A.touch1[2]===D.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(),A.taps===2&&(D=pn(D,this),Math.hypot(f[0]-D[0],f[1]-D[1])<g)){var z=rt(this).on("dblclick.zoom");z&&z.apply(this,arguments)}}}return m.wheelDelta=function(S){return arguments.length?(i=typeof S=="function"?S:is(+S),m):i},m.filter=function(S){return arguments.length?(n=typeof S=="function"?S:is(!!S),m):n},m.touchable=function(S){return arguments.length?(r=typeof S=="function"?S:is(!!S),m):r},m.extent=function(S){return arguments.length?(t=typeof S=="function"?S:is([[+S[0][0],+S[0][1]],[+S[1][0],+S[1][1]]]),m):t},m.scaleExtent=function(S){return arguments.length?(o[0]=+S[0],o[1]=+S[1],m):[o[0],o[1]]},m.translateExtent=function(S){return arguments.length?(s[0][0]=+S[0][0],s[1][0]=+S[1][0],s[0][1]=+S[0][1],s[1][1]=+S[1][1],m):[[s[0][0],s[0][1]],[s[1][0],s[1][1]]]},m.constrain=function(S){return arguments.length?(e=S,m):e},m.duration=function(S){return arguments.length?(a=+S,m):a},m.interpolate=function(S){return arguments.length?(l=S,m):l},m.on=function(){var S=c.on.apply(c,arguments);return S===c?m:S},m.clickDistance=function(S){return arguments.length?(y=(S=+S)*S,m):Math.sqrt(y)},m.tapDistance=function(S){return arguments.length?(g=+S,m):g},m}class mf{constructor(t,e,i,r,o){this.resetButton=null,this.selectionRect=null,this.selectionStart=null,this.resetClickHandler=null;const s=typeof t=="string"?{type:t}:t;this.zoomKey=s.key,this.panKey=s.panKey;const a=s.panning;typeof a=="object"?(this.panningEnabled=a.enabled!==!1,this.panningType=a.type||s.type):(this.panningEnabled=a===!0,this.panningType=s.type);const l=this.isMouseWheelEnabled(s.mouseWheel),c=this.getMouseWheelSensitivity(s.mouseWheel);this.zoomBehavior=gf().scaleExtent([1,20]).extent([[0,0],[i.width,i.height]]).translateExtent([[0,0],[i.width,i.height]]).on("zoom",f=>{const u=f.transform;o.emit("zoom:changed",{type:s.type,transform:u})});const h=!!s.selectionHandler;this.zoomBehavior.filter(f=>f.type==="wheel"?l:f.type==="mousedown"||f.type==="touchstart"?h?!1:this.zoomKey?this.isKeyPressed(f,this.zoomKey):!0:!0),e.call(this.zoomBehavior),c!==1&&l&&e.on("wheel.zoom",f=>{f.preventDefault();const u=e.node().__zoom||rs,d=f.deltaY>0?1/(1+.1*c):1+.1*c,p=Math.max(1,Math.min(20,u.k*d));e.transition().duration(100).call(this.zoomBehavior.scaleTo,p)}),s.selectionHandler&&this.setupSelectionZoom(e,i,s,o),this.panningEnabled&&this.panKey&&this.setupPanning(e,i,o),this.resetButton=this.createResetButton(s.resetButton),this.resetClickHandler=()=>{e.transition().duration(300).call(this.zoomBehavior.transform,rs),this.resetButton.style.display="none"},this.resetButton.addEventListener("click",this.resetClickHandler),r.appendChild(this.resetButton),o.on("zoom:changed",()=>{this.resetButton&&(this.resetButton.style.display="block")})}setupSelectionZoom(t,e,i,r){t.on("mousedown.selection",o=>{if(this.zoomKey&&!this.isKeyPressed(o,this.zoomKey)||this.panKey&&this.isKeyPressed(o,this.panKey))return;const s=t.node().getBoundingClientRect();this.selectionStart={x:o.clientX-s.left,y:o.clientY-s.top};const a=i.selectionMarkerFill||"rgba(51,92,173,0.25)";this.selectionRect=t.append("rect").attr("class","katucharts-selection").attr("fill",a).attr("stroke","#4572a7").attr("stroke-width",1).attr("x",this.selectionStart.x).attr("y",0).attr("width",0).attr("height",e.height)}),t.on("mousemove.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=Math.min(this.selectionStart.x,a),c=Math.abs(a-this.selectionStart.x);if(this.selectionRect.attr("x",l).attr("width",c),i.type==="xy"||i.type==="y"){const h=o.clientY-s.top,f=Math.min(this.selectionStart.y,h),u=Math.abs(h-this.selectionStart.y);this.selectionRect.attr("y",f).attr("height",u)}}),t.on("mouseup.selection",o=>{if(!this.selectionStart||!this.selectionRect)return;const s=t.node().getBoundingClientRect(),a=o.clientX-s.left,l=o.clientY-s.top;if(this.selectionRect.remove(),this.selectionRect=null,Math.abs(a-this.selectionStart.x)<5){this.selectionStart=null;return}let c=!1;const h={xAxis:[{min:Math.min(this.selectionStart.x,a),max:Math.max(this.selectionStart.x,a)}],yAxis:[{min:Math.min(this.selectionStart.y,l),max:Math.max(this.selectionStart.y,l)}],originalEvent:o,preventDefault:()=>{c=!0}};i.selectionHandler&&i.selectionHandler(h),c||r.emit("chart:selection",h),this.selectionStart=null})}setupPanning(t,e,i){let r=null,o={x:0,y:0};t.on("mousedown.pan",s=>{!this.panKey||!this.isKeyPressed(s,this.panKey)||(s.preventDefault(),r={x:s.clientX-o.x,y:s.clientY-o.y},t.style("cursor","grabbing"))}),t.on("mousemove.pan",s=>{if(!r)return;let a=s.clientX-r.x,l=s.clientY-r.y;this.panningType==="x"&&(l=0),this.panningType==="y"&&(a=0),o={x:a,y:l},i.emit("zoom:panned",{dx:a,dy:l,type:this.panningType})}),t.on("mouseup.pan",()=>{r&&(r=null,t.style("cursor",""))})}isKeyPressed(t,e){switch(e){case"ctrl":return t.ctrlKey;case"alt":return t.altKey;case"shift":return t.shiftKey;case"meta":return t.metaKey;default:return!0}}isMouseWheelEnabled(t){return!(t===!1||typeof t=="object"&&t.enabled===!1)}getMouseWheelSensitivity(t){return typeof t=="object"&&t.sensitivity!==void 0?t.sensitivity:1}createResetButton(t){const e=document.createElement("button");e.textContent="Reset zoom";const i=(t==null?void 0:t.theme)||{},r=(t==null?void 0:t.position)||{},o=r.y??5,s=r.x!==void 0?`${r.x}px`:"5px";return Object.assign(e.style,{position:"absolute",top:`${o}px`,right:s,padding:i.padding||"3px 8px",fontSize:i.fontSize||"11px",border:i.border||"1px solid #ccc",borderRadius:i.borderRadius||"3px",backgroundColor:i.backgroundColor||"#f9f9f9",color:i.color||"#333",cursor:"pointer",display:"none",zIndex:"5"}),e}setResetHandler(t){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetClickHandler=t,this.resetButton.addEventListener("click",this.resetClickHandler))}setResetButtonVisible(t){this.resetButton&&(this.resetButton.style.display=t?"block":"none")}destroy(){this.resetButton&&(this.resetClickHandler&&this.resetButton.removeEventListener("click",this.resetClickHandler),this.resetButton.remove())}}class yf{constructor(t){this.lastSeriesCount=0,this.lastPointCounts=[],this.config=t}apply(t,e,i){var s,a;if(this.config.enabled===!1)return;const r=this.config.landmarkVerbosity||"all";t.attr("role","img"),i&&t.attr("aria-label",this.config.description||`Chart: ${i}`);const o="katucharts-desc-"+Math.random().toString(36).slice(2,8);t.append("desc").attr("id",o).text(this.config.description||this.generateDescription(e,i)),t.attr("aria-describedby",o),t.attr("tabindex","0"),t.style("outline","none"),this.renderScreenReaderSections(t,e,i),this.applyLandmarks(t,e,r),((s=this.config.keyboardNavigation)==null?void 0:s.enabled)!==!1&&this.setupKeyboardNav(t,e),(a=this.config.announceNewData)!=null&&a.enabled&&this.setupAnnounceNewData(e)}setupAnnounceNewData(t){var o;const e=((o=this.config.announceNewData)==null?void 0:o.minAnnounceInterval)??5e3;let i=0;this.lastSeriesCount=t.length,this.lastPointCounts=t.map(s=>s.data.length),setInterval(()=>{const s=Date.now();if(s-i<e)return;let a=!1,l="";if(t.length!==this.lastSeriesCount)a=!0,l=`Chart updated. Now showing ${t.length} data series.`;else for(let c=0;c<t.length;c++){const h=t[c].data.length,f=this.lastPointCounts[c]??0;if(h!==f){a=!0;const u=h-f;l=`${t[c].config.name||"Series"} updated with ${Math.abs(u)} ${u>0?"new":"fewer"} point${Math.abs(u)!==1?"s":""}. Total: ${h}.`;break}}a&&(this.announce(l),i=s,this.lastSeriesCount=t.length,this.lastPointCounts=t.map(c=>c.data.length))},Math.max(1e3,e/2))}renderScreenReaderSections(t,e,i){var s;const r=this.config.screenReaderSection,o=(s=t.node())==null?void 0:s.parentElement;if(o){if(r!=null&&r.beforeChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.beforeChartFormat,e,i));o.insertBefore(a,t.node())}if(r!=null&&r.afterChartFormat){const a=this.createScreenReaderDiv(this.formatSectionTemplate(r.afterChartFormat,e,i));o.appendChild(a)}}}createScreenReaderDiv(t){const e=document.createElement("div");return e.className="katucharts-screen-reader-region",e.setAttribute("role","region"),e.setAttribute("aria-label","Chart information"),e.innerHTML=t,Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),e}formatSectionTemplate(t,e,i){return t.replace("{chartTitle}",jn(i||"Chart")).replace("{numSeries}",String(e.length)).replace("{seriesList}",e.map(r=>jn(r.config.name||"Series")).join(", "))}applyLandmarks(t,e,i){if(i==="disabled")return;if(i==="one"){t.attr("role","region");return}t.selectAll(".katucharts-legend").attr("role","region").attr("aria-label","Chart legend");const r=this.config.series,o=(r==null?void 0:r.describeSingleSeries)??!1;e.length===1&&!o||e.forEach((s,a)=>{const l=s.group;if(l){const c=s.config.name||`Series ${a+1}`,h=r==null?void 0:r.descriptionFormat,f=h?h.replace("{name}",c).replace("{index}",String(a)):`${c}, ${s.data.length} data points`;l.attr("role","region").attr("aria-label",f)}})}generateDescription(t,e){const i=[];e&&i.push(`${e}.`),i.push(`Chart with ${t.length} data series.`);for(const r of t){const o=r.config.name||`Series ${r.config.index+1}`,s=r.data.length;i.push(`${o}: ${s} data points.`)}return i.join(" ")}setupKeyboardNav(t,e){let i=0,r=0;t.on("keydown",o=>{const s=e[i];if(s)switch(o.key){case"ArrowRight":o.preventDefault(),r=Math.min(r+1,s.data.length-1),this.announcePoint(s,r);break;case"ArrowLeft":o.preventDefault(),r=Math.max(r-1,0),this.announcePoint(s,r);break;case"ArrowUp":o.preventDefault(),i=Math.max(i-1,0),r=0,this.announceSeries(e[i]);break;case"ArrowDown":o.preventDefault(),i=Math.min(i+1,e.length-1),r=0,this.announceSeries(e[i]);break;case"Enter":case" ":o.preventDefault(),this.announcePoint(s,r);break}})}announcePoint(t,e){var o,s;const i=t.data[e];if(!i)return;let r;(o=this.config.point)!=null&&o.descriptionFormatter?r=this.config.point.descriptionFormatter(i):(s=this.config.point)!=null&&s.valueDescriptionFormat?r=this.config.point.valueDescriptionFormat.replace("{index}",String(e+1)).replace("{value}",String(i.y??"")).replace("{xDescription}",i.name||String(i.x??"")).replace("{point.name}",i.name||"").replace("{point.y}",String(i.y??"")).replace("{point.x}",String(i.x??"")).replace("{series.name}",t.config.name||"Series"):r=`${t.config.name||"Series"}, point ${e+1}: ${i.name?i.name+", ":""}value ${i.y}`,this.announce(r)}announceSeries(t){const e=`${t.config.name||"Series"}, ${t.data.length} points`;this.announce(e)}announce(t){let e=document.getElementById("katucharts-announcer");e||(e=document.createElement("div"),e.id="katucharts-announcer",e.setAttribute("role","status"),e.setAttribute("aria-live","polite"),e.setAttribute("aria-atomic","true"),Object.assign(e.style,{position:"absolute",width:"1px",height:"1px",overflow:"hidden",clip:"rect(0,0,0,0)",whiteSpace:"nowrap"}),document.body.appendChild(e)),e.textContent=t}}class jv{constructor(t){this.host=t,this.drilldown=null,this.zoom=null,this.a11yModule=null,this.origXDomains=[],this.origYDomains=[],this.isBoxZoomed=!1}setup(){this.setupSeriesDimming(),this.setupDrilldown(),this.setupZoom(),this.setupAccessibility()}destroy(){var t,e;(t=this.drilldown)==null||t.destroy(),(e=this.zoom)==null||e.destroy()}setupSeriesDimming(){var s,a,l,c;const t=this.host.getEvents(),e=((c=(l=(a=(s=this.host.getOptions().plotOptions)==null?void 0:s.series)==null?void 0:a.states)==null?void 0:l.inactive)==null?void 0:c.opacity)??.2;let i=null;const r=h=>{var f,u,d,p,y,g,m,x,v,b;i&&(clearTimeout(i),i=null);for(const k of this.host.getSeriesInstances())(u=(f=k.group)==null?void 0:f.interrupt)==null||u.call(f,"seriesDim"),k!==h&&k.visible?(x=(m=(g=(y=(p=(d=k.group)==null?void 0:d.transition)==null?void 0:p.call(d,"seriesDim"))==null?void 0:y.duration)==null?void 0:g.call(y,200))==null?void 0:m.attr)==null||x.call(m,"opacity",e):(b=(v=k.group)==null?void 0:v.attr)==null||b.call(v,"opacity",k.config.opacity??1)},o=()=>{i&&clearTimeout(i),i=setTimeout(()=>{var h,f,u,d,p,y,g,m;for(const x of this.host.getSeriesInstances())(f=(h=x.group)==null?void 0:h.interrupt)==null||f.call(h,"seriesDim"),(m=(g=(y=(p=(d=(u=x.group)==null?void 0:u.transition)==null?void 0:d.call(u,"seriesDim"))==null?void 0:p.duration)==null?void 0:y.call(p,200))==null?void 0:g.attr)==null||m.call(g,"opacity",x.config.opacity??1);i=null},50)};t.on("series:mouseenter",r),t.on("series:mouseleave",o),t.on("legend:itemHover",r),t.on("legend:itemLeave",o)}setupDrilldown(){var c;const e=this.host.getOptions().drilldown;if(!((c=e==null?void 0:e.series)!=null&&c.length))return;const i=this.host.getEvents(),r=this.host.getSeriesGroup();this.drilldown=new ff(e,i,this.host.getContainer());const o=[],s=new qn,a=e.animation,l=typeof a=="object"?a.duration??400:a!==!1?400:0;i.on("drilldown:drilldown",h=>{o.push([...this.host.getOptions().series]),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.performDrillSwap(h,s),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.performDrillSwap(h,s),this.host.fireEvent("drilldown",h)}),i.on("drilldown:drillup",()=>{const h=o.pop();h&&this.host.setSeries(h),l>0?r.transition().duration(l/2).style("opacity","0").on("end",()=>{this.host.rebuild(),r.style("opacity","0").transition().duration(l/2).style("opacity","1")}):this.host.rebuild(),this.host.fireEvent("drillup")})}performDrillSwap(t,e){const i=this.host.getOptions(),r=t.seriesOptions,o=e.parse({chart:i.chart,xAxis:i.xAxis,yAxis:i.yAxis,series:[r]});this.host.setSeries(o.series),this.host.rebuild()}setupZoom(){const t=this.host.getOptions(),e=t.chart.zooming||t.chart.zoomType;if(!e)return;const i=typeof e=="string"?e:e.type||"x",r={type:i,key:typeof e=="object"?e.key:void 0,mouseWheel:typeof e=="object"?e.mouseWheel:void 0,resetButton:typeof e=="object"?e.resetButton:void 0,panning:typeof e=="object"?e.panning:void 0,panKey:typeof e=="object"?e.panKey:void 0,pinchType:typeof e=="object"?e.pinchType:void 0,selectionMarkerFill:t.chart.selectionMarkerFill,selectionHandler:s=>this.applyBoxZoom(s,i)},o=this.host.getEvents();this.zoom=new mf(r,this.host.getPlotGroup(),this.host.getLayout().plotArea,this.host.getContainer(),o),this.zoom.setResetHandler(()=>this.resetBoxZoom()),o.on("zoom:changed",s=>{const a=s.transform,l=s.type,c=this.host.getLayout().plotArea;if(l==="x"||l==="xy")for(const h of this.host.getXAxes()){const f=h.scale.domain(),u=f[1]-f[0],d=f[0]-a.x/c.width*(u/a.k),p=d+u/a.k;h.updateDomain({min:d,max:p})}if(l==="y"||l==="xy")for(const h of this.host.getYAxes()){const f=h.scale.domain(),u=f[1]-f[0],d=f[1]+a.y/c.height*(u/a.k),p=d-u/a.k;h.updateDomain({min:p,max:d})}this.host.renderAfterZoom()})}applyBoxZoom(t,e){var r;const i=!this.isBoxZoomed;return(e==="x"||e==="xy")&&this.host.getXAxes().forEach((s,a)=>{i&&(this.origXDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.xAxis[0].min),c=s.getValueForPixel(t.xAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),(e==="y"||e==="xy")&&this.host.getYAxes().forEach((s,a)=>{i&&(this.origYDomains[a]=s.scale.domain());const l=s.getValueForPixel(t.yAxis[0].min),c=s.getValueForPixel(t.yAxis[0].max);l==null||c==null||!Number.isFinite(+l)||!Number.isFinite(+c)||s.updateDomain({min:Math.min(+l,+c),max:Math.max(+l,+c)})}),this.isBoxZoomed=!0,(r=this.zoom)==null||r.setResetButtonVisible(!0),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"),!0}resetBoxZoom(){var t;this.isBoxZoomed&&(this.host.getXAxes().forEach((e,i)=>{const r=this.origXDomains[i];r&&e.updateDomain({min:r[0],max:r[1]})}),this.host.getYAxes().forEach((e,i)=>{const r=this.origYDomains[i];r&&e.updateDomain({min:r[0],max:r[1]})}),this.isBoxZoomed=!1,this.origXDomains=[],this.origYDomains=[],(t=this.zoom)==null||t.setResetButtonVisible(!1),this.host.renderAfterZoom(),this.host.getEvents().emit("chart:afterZoom"))}setupAccessibility(){var i;const t=this.host.getOptions(),e=t.accessibility;!e||e.enabled===!1||(this.a11yModule=new yf(e),this.a11yModule.apply(this.host.getRenderer().svg,this.host.getSeriesInstances(),((i=t.title)==null?void 0:i.text)??void 0))}}const oc=n=>()=>n;function Zv(n,{sourceEvent:t,target:e,selection:i,mode:r,dispatch:o}){Object.defineProperties(this,{type:{value:n,enumerable:!0,configurable:!0},sourceEvent:{value:t,enumerable:!0,configurable:!0},target:{value:e,enumerable:!0,configurable:!0},selection:{value:i,enumerable:!0,configurable:!0},mode:{value:r,enumerable:!0,configurable:!0},_:{value:o}})}function Kv(n){n.stopImmediatePropagation()}function sc(n){n.preventDefault(),n.stopImmediatePropagation()}var xf={name:"drag"},ac={name:"space"},Vi={name:"handle"},Gi={name:"center"};const{abs:bf,max:ke,min:Me}=Math;function vf(n){return[+n[0],+n[1]]}function wf(n){return[vf(n[0]),vf(n[1])]}var os={name:"x",handles:["w","e"].map(lc),input:function(n,t){return n==null?null:[[+n[0],t[0][1]],[+n[1],t[1][1]]]},output:function(n){return n&&[n[0][0],n[1][0]]}},cc={},On={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"},kf={e:"w",w:"e",nw:"ne",ne:"nw",se:"sw",sw:"se"},Mf={n:"s",s:"n",nw:"sw",ne:"se",se:"ne",sw:"nw"},Jv={overlay:1,selection:1,n:null,e:1,s:null,w:-1,nw:-1,ne:1,se:1,sw:-1},Qv={overlay:1,selection:1,n:-1,e:null,s:1,w:null,nw:-1,ne:-1,se:1,sw:1};function lc(n){return{type:n}}function t2(n){return!n.ctrlKey&&!n.button}function e2(){var n=this.ownerSVGElement||this;return n.hasAttribute("viewBox")?(n=n.viewBox.baseVal,[[n.x,n.y],[n.x+n.width,n.y+n.height]]):[[0,0],[n.width.baseVal.value,n.height.baseVal.value]]}function n2(){return navigator.maxTouchPoints||"ontouchstart"in this}function hc(n){for(;!n.__brush;)if(!(n=n.parentNode))return;return n.__brush}function i2(n){return n[0][0]===n[1][0]||n[0][1]===n[1][1]}function r2(){return o2(os)}function o2(n){var t=e2,e=t2,i=n2,r=!0,o=zi("start","brush","end"),s=6,a;function l(g){var m=g.property("__brush",y).selectAll(".overlay").data([lc("overlay")]);m.enter().append("rect").attr("class","overlay").attr("pointer-events","all").attr("cursor",On.overlay).merge(m).each(function(){var v=hc(this).extent;rt(this).attr("x",v[0][0]).attr("y",v[0][1]).attr("width",v[1][0]-v[0][0]).attr("height",v[1][1]-v[0][1])}),g.selectAll(".selection").data([lc("selection")]).enter().append("rect").attr("class","selection").attr("cursor",On.selection).attr("fill","#777").attr("fill-opacity",.3).attr("stroke","#fff").attr("shape-rendering","crispEdges");var x=g.selectAll(".handle").data(n.handles,function(v){return v.type});x.exit().remove(),x.enter().append("rect").attr("class",function(v){return"handle handle--"+v.type}).attr("cursor",function(v){return On[v.type]}),g.each(c).attr("fill","none").attr("pointer-events","all").on("mousedown.brush",u).filter(i).on("touchstart.brush",u).on("touchmove.brush",d).on("touchend.brush touchcancel.brush",p).style("touch-action","none").style("-webkit-tap-highlight-color","rgba(0,0,0,0)")}l.move=function(g,m,x){g.tween?g.on("start.brush",function(v){h(this,arguments).beforestart().start(v)}).on("interrupt.brush end.brush",function(v){h(this,arguments).end(v)}).tween("brush",function(){var v=this,b=v.__brush,k=h(v,arguments),M=b.selection,C=n.input(typeof m=="function"?m.apply(this,arguments):m,b.extent),L=ae(M,C);function _($){b.selection=$===1&&C===null?null:L($),c.call(v),k.brush()}return M!==null&&C!==null?_:_(1)}):g.each(function(){var v=this,b=arguments,k=v.__brush,M=n.input(typeof m=="function"?m.apply(v,b):m,k.extent),C=h(v,b).beforestart();Oi(v),k.selection=M===null?null:M,c.call(v),C.start(x).brush(x).end(x)})},l.clear=function(g,m){l.move(g,null,m)};function c(){var g=rt(this),m=hc(this).selection;m?(g.selectAll(".selection").style("display",null).attr("x",m[0][0]).attr("y",m[0][1]).attr("width",m[1][0]-m[0][0]).attr("height",m[1][1]-m[0][1]),g.selectAll(".handle").style("display",null).attr("x",function(x){return x.type[x.type.length-1]==="e"?m[1][0]-s/2:m[0][0]-s/2}).attr("y",function(x){return x.type[0]==="s"?m[1][1]-s/2:m[0][1]-s/2}).attr("width",function(x){return x.type==="n"||x.type==="s"?m[1][0]-m[0][0]+s:s}).attr("height",function(x){return x.type==="e"||x.type==="w"?m[1][1]-m[0][1]+s:s})):g.selectAll(".selection,.handle").style("display","none").attr("x",null).attr("y",null).attr("width",null).attr("height",null)}function h(g,m,x){var v=g.__brush.emitter;return v&&(!x||!v.clean)?v:new f(g,m,x)}function f(g,m,x){this.that=g,this.args=m,this.state=g.__brush,this.active=0,this.clean=x}f.prototype={beforestart:function(){return++this.active===1&&(this.state.emitter=this,this.starting=!0),this},start:function(g,m){return this.starting?(this.starting=!1,this.emit("start",g,m)):this.emit("brush",g),this},brush:function(g,m){return this.emit("brush",g,m),this},end:function(g,m){return--this.active===0&&(delete this.state.emitter,this.emit("end",g,m)),this},emit:function(g,m,x){var v=rt(this.that).datum();o.call(g,this.that,new Zv(g,{sourceEvent:m,target:l,selection:n.output(this.state.selection),mode:x,dispatch:o}),v)}};function u(g){if(a&&!g.touches||!e.apply(this,arguments))return;var m=this,x=g.target.__data__.type,v=(r&&g.metaKey?x="overlay":x)==="selection"?xf:r&&g.altKey?Gi:Vi,b=n===cc?null:Jv[x],k=n===os?null:Qv[x],M=hc(m),C=M.extent,L=M.selection,_=C[0][0],$,I,E=C[0][1],P,S,w=C[1][0],A,T,R=C[1][1],F,D,z=0,B=0,H,J=b&&k&&r&&g.shiftKey,X,j,W=Array.from(g.touches||[g],at=>{const ot=at.identifier;return at=pn(at,m),at.point0=at.slice(),at.identifier=ot,at});Oi(m);var U=h(m,arguments,!0).beforestart();if(x==="overlay"){L&&(H=!0);const at=[W[0],W[1]||W[0]];M.selection=L=[[$=n===cc?_:Me(at[0][0],at[1][0]),P=n===os?E:Me(at[0][1],at[1][1])],[A=n===cc?w:ke(at[0][0],at[1][0]),F=n===os?R:ke(at[0][1],at[1][1])]],W.length>1&&ct(g)}else $=L[0][0],P=L[0][1],A=L[1][0],F=L[1][1];I=$,S=P,T=A,D=F;var G=rt(m).attr("pointer-events","none"),N=G.selectAll(".overlay").attr("cursor",On[x]);if(g.touches)U.moved=O,U.ended=it;else{var Y=rt(g.view).on("mousemove.brush",O,!0).on("mouseup.brush",it,!0);r&&Y.on("keydown.brush",ft,!0).on("keyup.brush",dt,!0),ec(g.view)}c.call(m),U.start(g,v.name);function O(at){for(const ot of at.changedTouches||[at])for(const q of W)q.identifier===ot.identifier&&(q.cur=pn(ot,m));if(J&&!X&&!j&&W.length===1){const ot=W[0];bf(ot.cur[0]-ot[0])>bf(ot.cur[1]-ot[1])?j=!0:X=!0}for(const ot of W)ot.cur&&(ot[0]=ot.cur[0],ot[1]=ot.cur[1]);H=!0,sc(at),ct(at)}function ct(at){const ot=W[0],q=ot.point0;var st;switch(z=ot[0]-q[0],B=ot[1]-q[1],v){case ac:case xf:{b&&(z=ke(_-$,Me(w-A,z)),I=$+z,T=A+z),k&&(B=ke(E-P,Me(R-F,B)),S=P+B,D=F+B);break}case Vi:{W[1]?(b&&(I=ke(_,Me(w,W[0][0])),T=ke(_,Me(w,W[1][0])),b=1),k&&(S=ke(E,Me(R,W[0][1])),D=ke(E,Me(R,W[1][1])),k=1)):(b<0?(z=ke(_-$,Me(w-$,z)),I=$+z,T=A):b>0&&(z=ke(_-A,Me(w-A,z)),I=$,T=A+z),k<0?(B=ke(E-P,Me(R-P,B)),S=P+B,D=F):k>0&&(B=ke(E-F,Me(R-F,B)),S=P,D=F+B));break}case Gi:{b&&(I=ke(_,Me(w,$-z*b)),T=ke(_,Me(w,A+z*b))),k&&(S=ke(E,Me(R,P-B*k)),D=ke(E,Me(R,F+B*k)));break}}T<I&&(b*=-1,st=$,$=A,A=st,st=I,I=T,T=st,x in kf&&N.attr("cursor",On[x=kf[x]])),D<S&&(k*=-1,st=P,P=F,F=st,st=S,S=D,D=st,x in Mf&&N.attr("cursor",On[x=Mf[x]])),M.selection&&(L=M.selection),X&&(I=L[0][0],T=L[1][0]),j&&(S=L[0][1],D=L[1][1]),(L[0][0]!==I||L[0][1]!==S||L[1][0]!==T||L[1][1]!==D)&&(M.selection=[[I,S],[T,D]],c.call(m),U.brush(at,v.name))}function it(at){if(Kv(at),at.touches){if(at.touches.length)return;a&&clearTimeout(a),a=setTimeout(function(){a=null},500)}else nc(at.view,H),Y.on("keydown.brush keyup.brush mousemove.brush mouseup.brush",null);G.attr("pointer-events","all"),N.attr("cursor",On.overlay),M.selection&&(L=M.selection),i2(L)&&(M.selection=null,c.call(m)),U.end(at,v.name)}function ft(at){switch(at.keyCode){case 16:{J=b&&k;break}case 18:{v===Vi&&(b&&(A=T-z*b,$=I+z*b),k&&(F=D-B*k,P=S+B*k),v=Gi,ct(at));break}case 32:{(v===Vi||v===Gi)&&(b<0?A=T-z:b>0&&($=I-z),k<0?F=D-B:k>0&&(P=S-B),v=ac,N.attr("cursor",On.selection),ct(at));break}default:return}sc(at)}function dt(at){switch(at.keyCode){case 16:{J&&(X=j=J=!1,ct(at));break}case 18:{v===Gi&&(b<0?A=T:b>0&&($=I),k<0?F=D:k>0&&(P=S),v=Vi,ct(at));break}case 32:{v===ac&&(at.altKey?(b&&(A=T-z*b,$=I+z*b),k&&(F=D-B*k,P=S+B*k),v=Gi):(b<0?A=T:b>0&&($=I),k<0?F=D:k>0&&(P=S),v=Vi),N.attr("cursor",On[x]),ct(at));break}default:return}sc(at)}}function d(g){h(this,arguments).moved(g)}function p(g){h(this,arguments).ended(g)}function y(){var g=this.__brush||{selection:null};return g.extent=wf(t.apply(this,arguments)),g.dim=n,g}return l.extent=function(g){return arguments.length?(t=typeof g=="function"?g:oc(wf(g)),l):t},l.filter=function(g){return arguments.length?(e=typeof g=="function"?g:oc(!!g),l):e},l.touchable=function(g){return arguments.length?(i=typeof g=="function"?g:oc(!!g),l):i},l.handleSize=function(g){return arguments.length?(s=+g,l):s},l.keyModifiers=function(g){return arguments.length?(r=!!g,l):r},l.on=function(){var g=o.on.apply(o,arguments);return g===o?l:g},l}function Rt(n){return function(){return n}}const Af=Math.abs,Ae=Math.atan2,vi=Math.cos,s2=Math.max,uc=Math.min,wn=Math.sin,Le=Math.sqrt,Se=1e-12,Yi=Math.PI,ss=Yi/2,Sr=2*Yi;function a2(n){return n>1?0:n<-1?Yi:Math.acos(n)}function Sf(n){return n>=1?ss:n<=-1?-ss:Math.asin(n)}const fc=Math.PI,dc=2*fc,wi=1e-6,c2=dc-wi;function _f(n){this._+=n[0];for(let t=1,e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function l2(n){let t=Math.floor(n);if(!(t>=0))throw new Error(`invalid digits: ${n}`);if(t>15)return _f;const e=10**t;return function(i){this._+=i[0];for(let r=1,o=i.length;r<o;++r)this._+=Math.round(arguments[r]*e)/e+i[r]}}let h2=class{constructor(t){this._x0=this._y0=this._x1=this._y1=null,this._="",this._append=t==null?_f:l2(t)}moveTo(t,e){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}`}closePath(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._append`Z`)}lineTo(t,e){this._append`L${this._x1=+t},${this._y1=+e}`}quadraticCurveTo(t,e,i,r){this._append`Q${+t},${+e},${this._x1=+i},${this._y1=+r}`}bezierCurveTo(t,e,i,r,o,s){this._append`C${+t},${+e},${+i},${+r},${this._x1=+o},${this._y1=+s}`}arcTo(t,e,i,r,o){if(t=+t,e=+e,i=+i,r=+r,o=+o,o<0)throw new Error(`negative radius: ${o}`);let s=this._x1,a=this._y1,l=i-t,c=r-e,h=s-t,f=a-e,u=h*h+f*f;if(this._x1===null)this._append`M${this._x1=t},${this._y1=e}`;else if(u>wi)if(!(Math.abs(f*l-c*h)>wi)||!o)this._append`L${this._x1=t},${this._y1=e}`;else{let d=i-s,p=r-a,y=l*l+c*c,g=d*d+p*p,m=Math.sqrt(y),x=Math.sqrt(u),v=o*Math.tan((fc-Math.acos((y+u-g)/(2*m*x)))/2),b=v/x,k=v/m;Math.abs(b-1)>wi&&this._append`L${t+b*h},${e+b*f}`,this._append`A${o},${o},0,0,${+(f*d>h*p)},${this._x1=t+k*l},${this._y1=e+k*c}`}}arc(t,e,i,r,o,s){if(t=+t,e=+e,i=+i,s=!!s,i<0)throw new Error(`negative radius: ${i}`);let a=i*Math.cos(r),l=i*Math.sin(r),c=t+a,h=e+l,f=1^s,u=s?r-o:o-r;this._x1===null?this._append`M${c},${h}`:(Math.abs(this._x1-c)>wi||Math.abs(this._y1-h)>wi)&&this._append`L${c},${h}`,i&&(u<0&&(u=u%dc+dc),u>c2?this._append`A${i},${i},0,1,${f},${t-a},${e-l}A${i},${i},0,1,${f},${this._x1=c},${this._y1=h}`:u>wi&&this._append`A${i},${i},0,${+(u>=fc)},${f},${this._x1=t+i*Math.cos(o)},${this._y1=e+i*Math.sin(o)}`)}rect(t,e,i,r){this._append`M${this._x0=this._x1=+t},${this._y0=this._y1=+e}h${i=+i}v${+r}h${-i}Z`}toString(){return this._}};function _r(n){let t=3;return n.digits=function(e){if(!arguments.length)return t;if(e==null)t=null;else{const i=Math.floor(e);if(!(i>=0))throw new RangeError(`invalid digits: ${e}`);t=i}return n},()=>new h2(t)}function u2(n){return n.innerRadius}function f2(n){return n.outerRadius}function d2(n){return n.startAngle}function p2(n){return n.endAngle}function g2(n){return n&&n.padAngle}function m2(n,t,e,i,r,o,s,a){var l=e-n,c=i-t,h=s-r,f=a-o,u=f*l-h*c;if(!(u*u<Se))return u=(h*(t-o)-f*(n-r))/u,[n+u*l,t+u*c]}function as(n,t,e,i,r,o,s){var a=n-e,l=t-i,c=(s?o:-o)/Le(a*a+l*l),h=c*l,f=-c*a,u=n+h,d=t+f,p=e+h,y=i+f,g=(u+p)/2,m=(d+y)/2,x=p-u,v=y-d,b=x*x+v*v,k=r-o,M=u*y-p*d,C=(v<0?-1:1)*Le(s2(0,k*k*b-M*M)),L=(M*v-x*C)/b,_=(-M*x-v*C)/b,$=(M*v+x*C)/b,I=(-M*x+v*C)/b,E=L-g,P=_-m,S=$-g,w=I-m;return E*E+P*P>S*S+w*w&&(L=$,_=I),{cx:L,cy:_,x01:-h,y01:-f,x11:L*(r/k-1),y11:_*(r/k-1)}}function _e(){var n=u2,t=f2,e=Rt(0),i=null,r=d2,o=p2,s=g2,a=null,l=_r(c);function c(){var h,f,u=+n.apply(this,arguments),d=+t.apply(this,arguments),p=r.apply(this,arguments)-ss,y=o.apply(this,arguments)-ss,g=Af(y-p),m=y>p;if(a||(a=h=l()),d<u&&(f=d,d=u,u=f),!(d>Se))a.moveTo(0,0);else if(g>Sr-Se)a.moveTo(d*vi(p),d*wn(p)),a.arc(0,0,d,p,y,!m),u>Se&&(a.moveTo(u*vi(y),u*wn(y)),a.arc(0,0,u,y,p,m));else{var x=p,v=y,b=p,k=y,M=g,C=g,L=s.apply(this,arguments)/2,_=L>Se&&(i?+i.apply(this,arguments):Le(u*u+d*d)),$=uc(Af(d-u)/2,+e.apply(this,arguments)),I=$,E=$,P,S;if(_>Se){var w=Sf(_/u*wn(L)),A=Sf(_/d*wn(L));(M-=w*2)>Se?(w*=m?1:-1,b+=w,k-=w):(M=0,b=k=(p+y)/2),(C-=A*2)>Se?(A*=m?1:-1,x+=A,v-=A):(C=0,x=v=(p+y)/2)}var T=d*vi(x),R=d*wn(x),F=u*vi(k),D=u*wn(k);if($>Se){var z=d*vi(v),B=d*wn(v),H=u*vi(b),J=u*wn(b),X;if(g<Yi)if(X=m2(T,R,H,J,z,B,F,D)){var j=T-X[0],W=R-X[1],U=z-X[0],G=B-X[1],N=1/wn(a2((j*U+W*G)/(Le(j*j+W*W)*Le(U*U+G*G)))/2),Y=Le(X[0]*X[0]+X[1]*X[1]);I=uc($,(u-Y)/(N-1)),E=uc($,(d-Y)/(N+1))}else I=E=0}C>Se?E>Se?(P=as(H,J,T,R,d,E,m),S=as(z,B,F,D,d,E,m),a.moveTo(P.cx+P.x01,P.cy+P.y01),E<$?a.arc(P.cx,P.cy,E,Ae(P.y01,P.x01),Ae(S.y01,S.x01),!m):(a.arc(P.cx,P.cy,E,Ae(P.y01,P.x01),Ae(P.y11,P.x11),!m),a.arc(0,0,d,Ae(P.cy+P.y11,P.cx+P.x11),Ae(S.cy+S.y11,S.cx+S.x11),!m),a.arc(S.cx,S.cy,E,Ae(S.y11,S.x11),Ae(S.y01,S.x01),!m))):(a.moveTo(T,R),a.arc(0,0,d,x,v,!m)):a.moveTo(T,R),!(u>Se)||!(M>Se)?a.lineTo(F,D):I>Se?(P=as(F,D,z,B,u,-I,m),S=as(T,R,H,J,u,-I,m),a.lineTo(P.cx+P.x01,P.cy+P.y01),I<$?a.arc(P.cx,P.cy,I,Ae(P.y01,P.x01),Ae(S.y01,S.x01),!m):(a.arc(P.cx,P.cy,I,Ae(P.y01,P.x01),Ae(P.y11,P.x11),!m),a.arc(0,0,u,Ae(P.cy+P.y11,P.cx+P.x11),Ae(S.cy+S.y11,S.cx+S.x11),m),a.arc(S.cx,S.cy,I,Ae(S.y11,S.x11),Ae(S.y01,S.x01),!m))):a.arc(0,0,u,k,b,m)}if(a.closePath(),h)return a=null,h+""||null}return c.centroid=function(){var h=(+n.apply(this,arguments)+ +t.apply(this,arguments))/2,f=(+r.apply(this,arguments)+ +o.apply(this,arguments))/2-Yi/2;return[vi(f)*h,wn(f)*h]},c.innerRadius=function(h){return arguments.length?(n=typeof h=="function"?h:Rt(+h),c):n},c.outerRadius=function(h){return arguments.length?(t=typeof h=="function"?h:Rt(+h),c):t},c.cornerRadius=function(h){return arguments.length?(e=typeof h=="function"?h:Rt(+h),c):e},c.padRadius=function(h){return arguments.length?(i=h==null?null:typeof h=="function"?h:Rt(+h),c):i},c.startAngle=function(h){return arguments.length?(r=typeof h=="function"?h:Rt(+h),c):r},c.endAngle=function(h){return arguments.length?(o=typeof h=="function"?h:Rt(+h),c):o},c.padAngle=function(h){return arguments.length?(s=typeof h=="function"?h:Rt(+h),c):s},c.context=function(h){return arguments.length?(a=h??null,c):a},c}var y2=Array.prototype.slice;function pc(n){return typeof n=="object"&&"length"in n?n:Array.from(n)}function Cf(n){this._context=n}Cf.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:this._context.lineTo(n,t);break}}};function Xi(n){return new Cf(n)}function gc(n){return n[0]}function mc(n){return n[1]}function ki(n,t){var e=Rt(!0),i=null,r=Xi,o=null,s=_r(a);n=typeof n=="function"?n:n===void 0?gc:Rt(n),t=typeof t=="function"?t:t===void 0?mc:Rt(t);function a(l){var c,h=(l=pc(l)).length,f,u=!1,d;for(i==null&&(o=r(d=s())),c=0;c<=h;++c)!(c<h&&e(f=l[c],c,l))===u&&((u=!u)?o.lineStart():o.lineEnd()),u&&o.point(+n(f,c,l),+t(f,c,l));if(d)return o=null,d+""||null}return a.x=function(l){return arguments.length?(n=typeof l=="function"?l:Rt(+l),a):n},a.y=function(l){return arguments.length?(t=typeof l=="function"?l:Rt(+l),a):t},a.defined=function(l){return arguments.length?(e=typeof l=="function"?l:Rt(!!l),a):e},a.curve=function(l){return arguments.length?(r=l,i!=null&&(o=r(i)),a):r},a.context=function(l){return arguments.length?(l==null?i=o=null:o=r(i=l),a):i},a}function Ui(n,t,e){var i=null,r=Rt(!0),o=null,s=Xi,a=null,l=_r(c);n=typeof n=="function"?n:n===void 0?gc:Rt(+n),t=typeof t=="function"?t:Rt(t===void 0?0:+t),e=typeof e=="function"?e:e===void 0?mc:Rt(+e);function c(f){var u,d,p,y=(f=pc(f)).length,g,m=!1,x,v=new Array(y),b=new Array(y);for(o==null&&(a=s(x=l())),u=0;u<=y;++u){if(!(u<y&&r(g=f[u],u,f))===m)if(m=!m)d=u,a.areaStart(),a.lineStart();else{for(a.lineEnd(),a.lineStart(),p=u-1;p>=d;--p)a.point(v[p],b[p]);a.lineEnd(),a.areaEnd()}m&&(v[u]=+n(g,u,f),b[u]=+t(g,u,f),a.point(i?+i(g,u,f):v[u],e?+e(g,u,f):b[u]))}if(x)return a=null,x+""||null}function h(){return ki().defined(r).curve(s).context(o)}return c.x=function(f){return arguments.length?(n=typeof f=="function"?f:Rt(+f),i=null,c):n},c.x0=function(f){return arguments.length?(n=typeof f=="function"?f:Rt(+f),c):n},c.x1=function(f){return arguments.length?(i=f==null?null:typeof f=="function"?f:Rt(+f),c):i},c.y=function(f){return arguments.length?(t=typeof f=="function"?f:Rt(+f),e=null,c):t},c.y0=function(f){return arguments.length?(t=typeof f=="function"?f:Rt(+f),c):t},c.y1=function(f){return arguments.length?(e=f==null?null:typeof f=="function"?f:Rt(+f),c):e},c.lineX0=c.lineY0=function(){return h().x(n).y(t)},c.lineY1=function(){return h().x(n).y(e)},c.lineX1=function(){return h().x(i).y(t)},c.defined=function(f){return arguments.length?(r=typeof f=="function"?f:Rt(!!f),c):r},c.curve=function(f){return arguments.length?(s=f,o!=null&&(a=s(o)),c):s},c.context=function(f){return arguments.length?(f==null?o=a=null:a=s(o=f),c):o},c}function x2(n,t){return t<n?-1:t>n?1:t>=n?0:NaN}function b2(n){return n}function v2(){var n=b2,t=x2,e=null,i=Rt(0),r=Rt(Sr),o=Rt(0);function s(a){var l,c=(a=pc(a)).length,h,f,u=0,d=new Array(c),p=new Array(c),y=+i.apply(this,arguments),g=Math.min(Sr,Math.max(-Sr,r.apply(this,arguments)-y)),m,x=Math.min(Math.abs(g)/c,o.apply(this,arguments)),v=x*(g<0?-1:1),b;for(l=0;l<c;++l)(b=p[d[l]=l]=+n(a[l],l,a))>0&&(u+=b);for(t!=null?d.sort(function(k,M){return t(p[k],p[M])}):e!=null&&d.sort(function(k,M){return e(a[k],a[M])}),l=0,f=u?(g-c*v)/u:0;l<c;++l,y=m)h=d[l],b=p[h],m=y+(b>0?b*f:0)+v,p[h]={data:a[h],index:l,value:b,startAngle:y,endAngle:m,padAngle:x};return p}return s.value=function(a){return arguments.length?(n=typeof a=="function"?a:Rt(+a),s):n},s.sortValues=function(a){return arguments.length?(t=a,e=null,s):t},s.sort=function(a){return arguments.length?(e=a,t=null,s):e},s.startAngle=function(a){return arguments.length?(i=typeof a=="function"?a:Rt(+a),s):i},s.endAngle=function(a){return arguments.length?(r=typeof a=="function"?a:Rt(+a),s):r},s.padAngle=function(a){return arguments.length?(o=typeof a=="function"?a:Rt(+a),s):o},s}var Pf=yc(Xi);function Ef(n){this._curve=n}Ef.prototype={areaStart:function(){this._curve.areaStart()},areaEnd:function(){this._curve.areaEnd()},lineStart:function(){this._curve.lineStart()},lineEnd:function(){this._curve.lineEnd()},point:function(n,t){this._curve.point(t*Math.sin(n),t*-Math.cos(n))}};function yc(n){function t(e){return new Ef(n(e))}return t._curve=n,t}function Cr(n){var t=n.curve;return n.angle=n.x,delete n.x,n.radius=n.y,delete n.y,n.curve=function(e){return arguments.length?t(yc(e)):t()._curve},n}function w2(){return Cr(ki().curve(Pf))}function k2(){var n=Ui().curve(Pf),t=n.curve,e=n.lineX0,i=n.lineX1,r=n.lineY0,o=n.lineY1;return n.angle=n.x,delete n.x,n.startAngle=n.x0,delete n.x0,n.endAngle=n.x1,delete n.x1,n.radius=n.y,delete n.y,n.innerRadius=n.y0,delete n.y0,n.outerRadius=n.y1,delete n.y1,n.lineStartAngle=function(){return Cr(e())},delete n.lineX0,n.lineEndAngle=function(){return Cr(i())},delete n.lineX1,n.lineInnerRadius=function(){return Cr(r())},delete n.lineY0,n.lineOuterRadius=function(){return Cr(o())},delete n.lineY1,n.curve=function(s){return arguments.length?t(yc(s)):t()._curve},n}class Tf{constructor(t,e){this._context=t,this._x=e}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(t,e){switch(t=+t,e=+e,this._point){case 0:{this._point=1,this._line?this._context.lineTo(t,e):this._context.moveTo(t,e);break}case 1:this._point=2;default:{this._x?this._context.bezierCurveTo(this._x0=(this._x0+t)/2,this._y0,this._x0,e,t,e):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+e)/2,t,this._y0,t,e);break}}this._x0=t,this._y0=e}}function M2(n){return new Tf(n,!0)}function A2(n){return new Tf(n,!1)}function S2(n){return n.source}function _2(n){return n.target}function $f(n){let t=S2,e=_2,i=gc,r=mc,o=null,s=null,a=_r(l);function l(){let c;const h=y2.call(arguments),f=t.apply(this,h),u=e.apply(this,h);if(o==null&&(s=n(c=a())),s.lineStart(),h[0]=f,s.point(+i.apply(this,h),+r.apply(this,h)),h[0]=u,s.point(+i.apply(this,h),+r.apply(this,h)),s.lineEnd(),c)return s=null,c+""||null}return l.source=function(c){return arguments.length?(t=c,l):t},l.target=function(c){return arguments.length?(e=c,l):e},l.x=function(c){return arguments.length?(i=typeof c=="function"?c:Rt(+c),l):i},l.y=function(c){return arguments.length?(r=typeof c=="function"?c:Rt(+c),l):r},l.context=function(c){return arguments.length?(c==null?o=s=null:s=n(o=c),l):o},l}function C2(){return $f(M2)}function P2(){return $f(A2)}const Zn={draw(n,t){const e=Le(t/Yi);n.moveTo(e,0),n.arc(0,0,e,0,Sr)}},xc={draw(n,t){const e=Le(t/5)/2;n.moveTo(-3*e,-e),n.lineTo(-e,-e),n.lineTo(-e,-3*e),n.lineTo(e,-3*e),n.lineTo(e,-e),n.lineTo(3*e,-e),n.lineTo(3*e,e),n.lineTo(e,e),n.lineTo(e,3*e),n.lineTo(-e,3*e),n.lineTo(-e,e),n.lineTo(-3*e,e),n.closePath()}},Lf=Le(1/3),E2=Lf*2,bc={draw(n,t){const e=Le(t/E2),i=e*Lf;n.moveTo(0,-e),n.lineTo(i,0),n.lineTo(0,e),n.lineTo(-i,0),n.closePath()}},vc={draw(n,t){const e=Le(t),i=-e/2;n.rect(i,i,e,e)}},wc=Le(3),kc={draw(n,t){const e=-Le(t/(wc*3));n.moveTo(0,e*2),n.lineTo(-wc*e,-e),n.lineTo(wc*e,-e),n.closePath()}},T2=Le(3),Mc={draw(n,t){const e=Le(t)*.6824,i=e/2,r=e*T2/2;n.moveTo(0,-e),n.lineTo(r,i),n.lineTo(-r,i),n.closePath()}};function rn(n,t){let e=null,i=_r(r);n=typeof n=="function"?n:Rt(n||Zn),t=typeof t=="function"?t:Rt(t===void 0?64:+t);function r(){let o;if(e||(e=o=i()),n.apply(this,arguments).draw(e,+t.apply(this,arguments)),o)return e=null,o+""||null}return r.type=function(o){return arguments.length?(n=typeof o=="function"?o:Rt(o),r):n},r.size=function(o){return arguments.length?(t=typeof o=="function"?o:Rt(+o),r):t},r.context=function(o){return arguments.length?(e=o??null,r):e},r}function If(){}function Ff(n,t,e){n._context.bezierCurveTo(n._x1+n._k*(n._x2-n._x0),n._y1+n._k*(n._y2-n._y0),n._x2+n._k*(n._x1-t),n._y2+n._k*(n._y1-e),n._x2,n._y2)}function Ac(n,t){this._context=n,this._k=(1-t)/6}Ac.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:Ff(this,this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2,this._x1=n,this._y1=t;break;case 2:this._point=3;default:Ff(this,n,t);break}this._x0=this._x1,this._x1=this._x2,this._x2=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}},function n(t){function e(i){return new Ac(i,t)}return e.tension=function(i){return n(+i)},e}(0);function $2(n,t,e){var i=n._x1,r=n._y1,o=n._x2,s=n._y2;if(n._l01_a>Se){var a=2*n._l01_2a+3*n._l01_a*n._l12_a+n._l12_2a,l=3*n._l01_a*(n._l01_a+n._l12_a);i=(i*a-n._x0*n._l12_2a+n._x2*n._l01_2a)/l,r=(r*a-n._y0*n._l12_2a+n._y2*n._l01_2a)/l}if(n._l23_a>Se){var c=2*n._l23_2a+3*n._l23_a*n._l12_a+n._l12_2a,h=3*n._l23_a*(n._l23_a+n._l12_a);o=(o*c+n._x1*n._l23_2a-t*n._l12_2a)/h,s=(s*c+n._y1*n._l23_2a-e*n._l12_2a)/h}n._context.bezierCurveTo(i,r,o,s,n._x2,n._y2)}function Rf(n,t){this._context=n,this._alpha=t}Rf.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);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(n,t){if(n=+n,t=+t,this._point){var e=this._x2-n,i=this._y2-t;this._l23_a=Math.sqrt(this._l23_2a=Math.pow(e*e+i*i,this._alpha))}switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;break;case 2:this._point=3;default:$2(this,n,t);break}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=n,this._y0=this._y1,this._y1=this._y2,this._y2=t}};const Df=function n(t){function e(i){return t?new Rf(i,t):new Ac(i,0)}return e.alpha=function(i){return n(+i)},e}(.5);function zf(n){this._context=n}zf.prototype={areaStart:If,areaEnd:If,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(n,t){n=+n,t=+t,this._point?this._context.lineTo(n,t):(this._point=1,this._context.moveTo(n,t))}};function L2(n){return new zf(n)}function cs(n,t){this._context=n,this._t=t}cs.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&&this._point===2&&this._context.lineTo(this._x,this._y),(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line>=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(n,t){switch(n=+n,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(n,t):this._context.moveTo(n,t);break;case 1:this._point=2;default:{if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(n,t);else{var e=this._x*(1-this._t)+n*this._t;this._context.lineTo(e,this._y),this._context.lineTo(e,t)}break}}this._x=n,this._y=t}};function Bf(n){return new cs(n,.5)}function Of(n){return new cs(n,0)}function Nf(n){return new cs(n,1)}class Wf{constructor(t,e,i,r,o,s){var m;if(this.width=0,this.height=0,this.brush=null,this.brushGroup=null,this.programmatic=!1,this.config=t,this.events=o,!t.enabled){this.group=e.append("g").style("display","none");return}this.height=t.height||40,t.margin;const a=r-this.height-10;this.width=i.width,this.group=e.append("g").attr("class","katucharts-navigator").attr("transform",`translate(${i.x},${a})`);const l=t.maskFill??"rgba(102,133,194,0.3)",c=t.maskInside??!0,h=((m=t.series)==null?void 0:m.color)??"#6699cc",f=t.handles||{},u=f.backgroundColor??"#f2f2f2",d=f.borderColor??"#999999",p=f.enabled!==!1;this.group.append("rect").attr("width",this.width).attr("height",this.height).attr("fill","#f2f2f2").attr("stroke",t.outlineColor||"#cccccc").attr("stroke-width",t.outlineWidth||1),this.renderSeriesLine(s,h);const y=r2().extent([[0,0],[this.width,this.height]]).on("end",x=>{if(this.programmatic||!x.selection)return;const[v,b]=x.selection;o.emit("navigator:brushed",{x0:v/this.width,x1:b/this.width})});this.brush=y;const g=this.group.append("g").attr("class","katucharts-navigator-brush").call(y);this.brushGroup=g,g.selectAll(".selection").attr("fill",c?l:"none").attr("stroke","none"),p?g.selectAll(".handle").attr("fill",u).attr("stroke",d).attr("stroke-width",f.lineWidth??1):g.selectAll(".handle").style("display","none"),t.adaptToUpdatedData!==!1&&o.on("series:dataUpdated",x=>{this.updateSeriesLine(x,h)})}renderSeriesLine(t,e){if(t.length===0)return;const i=[Math.min(...t.map(l=>l.x)),Math.max(...t.map(l=>l.x))],r=[Math.min(...t.map(l=>l.y)),Math.max(...t.map(l=>l.y))],o=we().domain(i).range([0,this.width]),s=we().domain(r).range([this.height-2,2]),a=ki().x(l=>o(l.x)).y(l=>s(l.y));this.group.selectAll(".katucharts-navigator-line").remove(),this.group.append("path").datum(t).attr("class","katucharts-navigator-line").attr("d",a).attr("fill","none").attr("stroke",e).attr("stroke-width",1)}updateSeriesLine(t,e){this.renderSeriesLine(t,e)}setSelection(t,e){if(!(!this.brush||!this.brushGroup)){if(this.programmatic=!0,t<=5e-4&&e>=.9995)this.brush.move(this.brushGroup,null);else{const i=Math.max(0,Math.min(1,t))*this.width,r=Math.max(0,Math.min(1,e))*this.width;this.brush.move(this.brushGroup,[Math.min(i,r),Math.max(i,r)])}this.programmatic=!1}}destroy(){this.group.remove()}}class Hf{constructor(t,e,i){if(this.container=null,this.config=t,this.events=i,!t.enabled)return;this.container=Ja("katucharts-range-selector",e),Object.assign(this.container.style,{display:"flex",gap:`${t.buttonSpacing??4}px`,padding:"5px",alignItems:"center",flexWrap:"wrap",fontSize:"12px"}),t.floating&&(this.container.style.position="absolute",this.container.style.zIndex="10"),t.x!==void 0&&(this.container.style.left=`${t.x}px`),t.y!==void 0&&(this.container.style.top=`${t.y}px`);const r=t.buttonPosition||{};r.align==="right"?this.container.style.justifyContent="flex-end":r.align==="center"&&(this.container.style.justifyContent="center");const o=t.buttons||[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],s=t.buttonTheme||{},a=t.allButtonsEnabled??!1;if(o.forEach((l,c)=>{const h=document.createElement("button");h.textContent=l.text||l.type||"",h.title=l.title||"";const f=c===(t.selected??0),u=s["states.select.fill"]||s.fill||"#e0e0e0",d=s.fill||"#fff";Object.assign(h.style,{padding:s.padding||"3px 8px",border:`1px solid ${s.stroke||"#ccc"}`,borderRadius:`${s.r??3}px`,backgroundColor:f?u:d,cursor:"pointer",fontSize:s["style.fontSize"]||"11px",fontWeight:s["style.fontWeight"]||"normal",color:s["style.color"]||"#333"}),!a&&!f&&(h.style.opacity="0.8"),h.addEventListener("click",()=>{var p;(p=l.events)!=null&&p.click&&l.events.click.call(l,new Event("click")),this.container.querySelectorAll("button").forEach(y=>{y.style.backgroundColor=d,y.style.opacity=a?"1":"0.8"}),h.style.backgroundColor=u,h.style.opacity="1",i.emit("rangeSelector:selected",{type:l.type,count:l.count,index:c})}),this.container.appendChild(h)}),t.inputEnabled!==!1){const l=t.inputPosition||{},c=document.createElement("div");c.style.display="flex",c.style.alignItems="center",c.style.gap="4px",c.style.marginLeft=l.x!==void 0?`${l.x}px`:"10px";const h=t.inputStyle||{},f=t.inputBoxBorderColor||"#ccc",u=t.inputBoxHeight??22,d=t.inputBoxWidth??90,p=document.createElement("input");p.type="date",Object.assign(p.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const y=document.createElement("input");y.type="date",Object.assign(y.style,{fontSize:h.fontSize||"11px",border:`1px solid ${f}`,height:`${u}px`,width:`${d}px`,padding:"0 4px",color:h.color||"#333"});const g=()=>{p.value&&y.value&&i.emit("rangeSelector:dateRange",{from:new Date(p.value).getTime(),to:new Date(y.value).getTime()})};p.addEventListener("change",g),y.addEventListener("change",g);const m=t.labelStyle||{},x=document.createElement("span");x.textContent=" to ",x.style.fontSize=m.fontSize||"11px",x.style.color=m.color||"#666",c.appendChild(p),c.appendChild(x),c.appendChild(y),this.container.appendChild(c)}}destroy(){this.container&&this.container.remove()}}const I2=[{type:"month",count:1,text:"1m"},{type:"month",count:3,text:"3m"},{type:"month",count:6,text:"6m"},{type:"ytd",text:"YTD"},{type:"year",count:1,text:"1y"},{type:"all",text:"All"}],F2={millisecond:1,second:1e3,minute:6e4,hour:36e5,day:864e5,week:6048e5,month:2592e6,year:31536e6};class R2{constructor(t){this.host=t,this.navigator=null,this.rangeSelector=null,this.xMin=0,this.xMax=0}setup(){var a,l;const t=this.host.getOptions(),e=(a=t.navigator)==null?void 0:a.enabled,i=(l=t.rangeSelector)==null?void 0:l.enabled;if(!e&&!i)return;const r=this.getBaseSeriesData();r.length>0&&(this.xMin=r[0].x,this.xMax=r[r.length-1].x);const o=this.host.getEvents(),s=t.rangeSelector;if(i&&(this.rangeSelector=new Hf(s,this.host.getContainer(),o),this.placeRangeSelectorOnTop(),o.on("rangeSelector:selected",c=>this.applyButton(c)),o.on("rangeSelector:dateRange",c=>this.applyXRange(c.from,c.to))),e&&(this.navigator=new Wf(t.navigator,this.host.getSvg(),this.host.getLayout().plotArea,this.host.getChartHeight(),o,r),o.on("navigator:brushed",c=>{const h=this.xMax-this.xMin;this.applyXRange(this.xMin+c.x0*h,this.xMin+c.x1*h)})),i){const c=s.selected;if(c!=null){const h=(s.buttons||I2)[c];h&&this.applyButton(h)}}o.on("chart:afterZoom",()=>{const c=this.host.getXAxes()[0];if(c){const[h,f]=c.scale.domain();this.syncNavigator(+h,+f)}})}getBaseSeriesData(){const t=this.host.getSeriesInstances();return t.length===0?[]:t[0].data.map(i=>({x:i.x??0,y:i.close??i.y??0})).filter(i=>i.y!==null&&i.y!==void 0&&Number.isFinite(i.x))}placeRangeSelectorOnTop(){const t=this.host.getContainer(),e=t.querySelector(".katucharts-range-selector");e&&t.firstChild&&e!==t.firstChild&&t.insertBefore(e,t.firstChild)}applyButton(t){const e=t.type,i=t.count??1;if(e==="all"){this.applyXRange(this.xMin,this.xMax);return}if(e==="ytd"){const o=new Date(this.xMax),s=Date.UTC(o.getUTCFullYear(),0,1);this.applyXRange(Math.max(this.xMin,s),this.xMax);return}const r=F2[e];r&&this.applyXRange(Math.max(this.xMin,this.xMax-i*r),this.xMax)}applyXRange(t,e){if(!(!Number.isFinite(t)||!Number.isFinite(e)||e<=t)){for(const i of this.host.getXAxes())i.updateDomain({min:t,max:e});this.host.rerender(),this.syncNavigator(t,e)}}syncNavigator(t,e){if(!this.navigator)return;const i=this.xMax-this.xMin;i<=0||this.navigator.setSelection((t-this.xMin)/i,(e-this.xMin)/i)}destroy(){var t,e;(t=this.navigator)==null||t.destroy(),(e=this.rangeSelector)==null||e.destroy()}}class Vf{constructor(t,e){var h,f;this.xAxes=[],this.yAxes=[],this.seriesInstances=[],this.tooltip=null,this.legend=null,this.crosshair=null,this.credits=null,this.exportButton=null,this.responsiveEngine=null,this.stock=null,this.clipPathId="",this.resizeObserver=null,this.isResponsiveUpdate=!1,this.scrollableInner=null,this.scrollableOuterWidth=0,this.scrollableOuterHeight=0,this.useVerticalScroll=!1,this.useHorizontalScroll=!1,this.fixedAxisOverlay=null,this.container=Sv(t),this.container.style.position="relative";const i=new qn;this.options=i.parse(e),this.originalUserOptions=co(e),uv(((h=this.options.time)==null?void 0:h.useUTC)!==!1),this.events=new Hh,this.state=new gy(this.options,this.events),this.layoutEngine=new xy;const r=ef(this.container,this.getDefaultHeightAspectRatio()),o=this.options.chart.width||r.width||600,s=this.resolveHeight(this.options.chart.height,r.height),a=this.options.chart.scrollablePlotArea,l=(a==null?void 0:a.minHeight)&&a.minHeight>s,c=(a==null?void 0:a.minWidth)&&a.minWidth>o;this.chartWidth=c?a.minWidth:o,this.chartHeight=l?a.minHeight:s,this.scrollableOuterWidth=o,this.scrollableOuterHeight=s,this.useVerticalScroll=!!l,this.useHorizontalScroll=!!c,(l||c)&&(this.container.style.position="relative",this.container.querySelectorAll(":scope > [data-katu-scrollable-inner]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.container.querySelectorAll(":scope > svg[data-katu-fixed-overlay]").forEach(p=>{var y;return(y=p.parentElement)==null?void 0:y.removeChild(p)}),this.scrollableInner=document.createElement("div"),this.scrollableInner.setAttribute("data-katu-scrollable-inner","1"),this.scrollableInner.style.overflowX=c?"auto":"hidden",this.scrollableInner.style.overflowY=l?"auto":"hidden",this.scrollableInner.style.width=o+"px",this.scrollableInner.style.height=s+"px",this.container.appendChild(this.scrollableInner)),this.setupResponsive(),this.applyInitialResponsiveRules(),this.renderer=new vo(this.scrollableInner||this.container,this.chartWidth,this.chartHeight),this.scrollableInner&&this.renderer.svg.style("max-width","none"),this.exporter=new Dv({getRenderer:()=>this.renderer,getOptions:()=>this.options,getContainer:()=>this.container,getSeriesInstances:()=>this.seriesInstances,setSize:(u,d)=>this.setSize(u,d),fireEvent:(u,...d)=>this.fireEvent(u,...d),getDefaultHeightAspectRatio:()=>this.getDefaultHeightAspectRatio(),disconnectResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.disconnect()},observeResizeObserver:()=>{var u;return(u=this.resizeObserver)==null?void 0:u.observe(this.container)},getViewportSize:()=>this.getViewportSize(),fitToViewport:(u,d)=>this.fitToViewport(u,d)}),this.axes=new zv({getOptions:()=>this.options,getLayout:()=>this.layout,getSeriesInstances:()=>this.seriesInstances,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getAxisGroup:()=>this.axisGroup,getEvents:()=>this.events,getTooltip:()=>this.tooltip}),this.interactions=new jv({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getRenderer:()=>this.renderer,getSeriesGroup:()=>this.seriesGroup,getPlotGroup:()=>this.plotGroup,getLayout:()=>this.layout,getXAxes:()=>this.xAxes,getYAxes:()=>this.yAxes,getSeriesInstances:()=>this.seriesInstances,setSeries:u=>{this.options.series=u},rebuild:()=>{var u;this.seriesInstances.forEach(d=>d.destroy()),this.seriesInstances=[],this.buildAxes(),this.buildSeries(),this.renderAll(),(u=this.credits)==null||u.refresh()},renderAfterZoom:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()},fireEvent:(u,...d)=>this.fireEvent(u,...d)}),this.applyChartStyles(),this.computeLayout(),this.createStructuralGroups(),this.buildAxes(),this.buildSeries(),this.renderAll(),(f=this.credits)==null||f.refresh(),(l||c)&&this.createFixedAxisOverlay(),this.options.chart.reflow&&this.setupReflow(),this.interactions.setup(),this.stock=new R2({getOptions:()=>this.options,getContainer:()=>this.container,getEvents:()=>this.events,getSvg:()=>this.renderer.svg,getLayout:()=>this.layout,getChartHeight:()=>this.chartHeight,getXAxes:()=>this.xAxes,getSeriesInstances:()=>this.seriesInstances,rerender:()=>{this.renderAxes(),this.renderSeriesInstances(),this.renderLegend()}}),this.stock.setup(),this.fireEvent("load")}createFixedAxisOverlay(){const t=Rv({container:this.container,renderer:this.renderer,options:this.options,plotGroup:this.plotGroup,layout:this.layout,chartWidth:this.chartWidth,chartHeight:this.chartHeight,scrollableInner:this.scrollableInner,scrollableOuterWidth:this.scrollableOuterWidth,scrollableOuterHeight:this.scrollableOuterHeight,useVerticalScroll:this.useVerticalScroll,useHorizontalScroll:this.useHorizontalScroll,exportButton:this.exportButton,previousOverlay:this.fixedAxisOverlay});t&&(this.fixedAxisOverlay=t)}getDefaultHeightAspectRatio(){var i;const t=((i=this.options)==null?void 0:i.series)||[],e=new Set(t.map(r=>{var o,s;return(r==null?void 0:r.type)||((s=(o=this.options)==null?void 0:o.chart)==null?void 0:s.type)}));return e.has("dependencywheel")||e.has("networkgraph")?1:e.has("treemap")||e.has("sankey")?.3:e.has("pie")||e.has("donut")||e.has("radar")?.6:.5}resolveHeight(t,e){if(typeof t=="number")return t;if(typeof t=="string"){if(t.endsWith("%"))return parseFloat(t)/100*e;const i=parseFloat(t);if(!isNaN(i)&&i>0)return i}return e||400}applyChartStyles(){const t=this.options.chart.backgroundColor;t&&this.renderer.svg.append("rect").attr("class","katucharts-background").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill",t).attr("rx",this.options.chart.borderRadius??0),this.options.chart.borderWidth&&this.renderer.svg.append("rect").attr("class","katucharts-border").attr("width",this.chartWidth).attr("height",this.chartHeight).attr("fill","none").attr("stroke",this.options.chart.borderColor||"#335cad").attr("stroke-width",this.options.chart.borderWidth).attr("rx",this.options.chart.borderRadius??0)}computeLayout(){this.layout=this.layoutEngine.compute(this.options,this.chartWidth,this.chartHeight)}createStructuralGroups(){var a,l,c,h;this.titleGroup=this.renderer.createGroup("katucharts-title-group"),this.renderTitles(),this.plotGroup=this.renderer.createGroup("katucharts-plot-group"),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`);const t=this.options.chart.plotBackgroundColor;t&&this.plotGroup.append("rect").attr("class","katucharts-plot-background").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill",t);const e=this.options.chart.plotBorderWidth;e&&this.plotGroup.append("rect").attr("class","katucharts-plot-border").attr("width",this.layout.plotArea.width).attr("height",this.layout.plotArea.height).attr("fill","none").attr("stroke",this.options.chart.plotBorderColor||"#cccccc").attr("stroke-width",e),this.options.chart.plotShadow&&((a=this.plotGroup.node())==null||a.setAttribute("filter","drop-shadow(3px 3px 6px rgba(0,0,0,0.15))")),this.clipPathId=this.renderer.createClipPath(0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.axisGroup=this.renderer.createGroup("katucharts-axis-group",this.plotGroup),this.seriesGroup=this.renderer.createGroup("katucharts-series-group",this.plotGroup),this.stackLabelsGroup=this.renderer.createGroup("katucharts-stack-labels-group",this.plotGroup);const i=this.options.series.some(f=>f.clip===!1||pg.has(f._internalType)),r=this.options.series.some(f=>gg.has(f._internalType));!Dl(this.options.series)&&!i&&(r&&(this.clipPathId=this.renderer.createClipPath(-12,-12,this.layout.plotArea.width+2*12,this.layout.plotArea.height+2*12)),this.seriesGroup.attr("clip-path",`url(#${this.clipPathId})`)),this.tooltip=new Qo(this.options.tooltip,this.container,this.layout.plotArea,this.events),(l=this.options.tooltip)!=null&&l.shared&&this.tooltip.setSharedPointsProvider(f=>this.collectSharedPointsAt(f)),this.legend=new ts({...this.options.legend,_backgroundColor:this.options.chart.backgroundColor},this.renderer.svg,this.events),this.credits=new Tv(this.options.credits,this.renderer.svg,this.chartWidth,this.chartHeight),this.options.exporting.enabled!==!1&&(this.exportButton=new af(this.options.exporting,this.renderer.svg,this.container,this.chartWidth,this.chartHeight,f=>this.handleExportAction(f)));const o=(c=this.options.xAxis[0])==null?void 0:c.crosshair,s=(h=this.options.yAxis[0])==null?void 0:h.crosshair;(o||s)&&(this.crosshair=new rf(o,s,this.plotGroup,this.layout.plotArea,this.events))}renderTitles(){Fv({titleGroup:this.titleGroup,container:this.container,options:this.options,layout:this.layout,chartWidth:this.chartWidth})}buildAxes(){this.xAxes=this.options.xAxis.map(t=>Ka(t,this.layout.plotArea)),this.yAxes=this.options.yAxis.map(t=>Ka(t,this.layout.plotArea))}buildSeries(){const t=this.options;this.seriesInstances=t.series.map((e,i)=>{const r=e._internalType,o=Tt.getType(r);if(!o){console.warn(`KatuCharts: unknown series type "${r}", falling back to line`);const s=Tt.getType("line");if(!s)throw new Error("KatuCharts: line series type not registered");return new s(e)}return new o(e)})}collectSharedPointsAt(t){var r;const e=[],i=typeof t=="number"?t:NaN;for(let o=0;o<this.seriesInstances.length;o++){const s=this.seriesInstances[o],a=this.options.series[o];if(!s.visible||a.enableMouseTracking===!1)continue;const l=s.data;if(!l||l.length===0)continue;let c=null,h=1/0;for(const p of l){if(p.x===void 0||p.x===null)continue;const y=Math.abs(p.x-i);y<h&&(h=y,c=p)}if(!c)continue;const f=c.close??c.y??c.high;if(f==null)continue;const u=this.xAxes[a._xAxisIndex]||this.xAxes[0],d=this.yAxes[a._yAxisIndex]||this.yAxes[0];e.push({point:c,plotX:u.getPixelForValue(c.x),plotY:d.getPixelForValue(f),series:{name:a.name??"",color:((r=s.getColor)==null?void 0:r.call(s))??a.color??"#333",config:a}})}return e}renderAll(){this.updateAxesDomains(),this.updateTooltipCategories(),this.renderAxes(),this.renderSeriesInstances(),this.renderStackLabels(),this.raiseplotLineLabels(),this.renderLegend(),this.fireEvent("render")}formatStackLabel(t,e){return e.formatter?e.formatter.call({total:t}):e.format?fe(Zt(e.format,{total:t})):this.options.chart.numberFormatter?this.options.chart.numberFormatter(t):jo(t,0,".",",")}renderStackLabels(){if(this.stackLabelsGroup){this.stackLabelsGroup.selectAll("*").remove();for(let t=0;t<this.yAxes.length;t++){const i=this.yAxes[t].config.stackLabels;if(!(i!=null&&i.enabled))continue;const r=this.seriesInstances.map((a,l)=>({series:a,cfg:this.options.series[l]})).filter(({series:a,cfg:l})=>a.visible&&l._yAxisIndex===t&&(l._internalType==="column"||l._internalType==="bar")&&l.stacking&&l.stacking!=="percent");if(r.length===0)continue;const o=new Map;for(const{series:a,cfg:l}of r){const c=es(l);o.has(c)||o.set(c,{totals:new Map,series:[],type:l._internalType,xAxis:this.xAxes[l._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[l._yAxisIndex]||this.yAxes[0]});const h=o.get(c);h.series.push(a),Wi(a.data,h.totals)}const s=this.stackLabelsGroup.append("g").attr("class",`katucharts-stack-labels katucharts-stack-labels-axis-${t}`);for(const[a,l]of o){const c=s.append("g").attr("class","katucharts-stack-labels-stack").attr("data-stack-key",a);for(const[h,f]of l.totals.entries()){if(!isFinite(f)||f===0)continue;const u=this.formatStackLabel(f,i),d=l.type==="bar",p=f<0,y=l.xAxis.getPixelForValue(h),g=l.yAxis.getPixelForValue(f),m=d?p?"end":"start":"middle",x=d?"central":p?"hanging":"auto",v=d?g+(p?-6:6):y,b=d?y:g+(p?6:-6),k=v+(i.x??0),M=b+(i.y??0),C=c.append("text").attr("class","katucharts-stack-label").attr("x",k).attr("y",M).attr("text-anchor",i.align==="left"?"start":i.align==="right"?"end":m).text(u);i.verticalAlign==="middle"||d?C.attr("dominant-baseline",x):i.verticalAlign==="bottom"&&C.attr("dominant-baseline","hanging");const L=i.style||{};C.style("fill",L.color??"#000000").style("font-size",L.fontSize??"11px").style("font-weight",L.fontWeight??"bold"),L.textOutline&&C.style("text-shadow",L.textOutline),i.rotation&&C.attr("transform",`rotate(${i.rotation},${k},${M})`)}}}}}raiseplotLineLabels(){const t=this.plotGroup.node();t&&this.axisGroup.selectAll(".katucharts-plot-line-label").each(function(){t.appendChild(this)})}updateTooltipCategories(){this.axes.updateTooltipCategories()}updateAxesDomains(){this.axes.updateAxesDomains()}renderAxes(){this.axes.renderAxes()}renderSeriesInstances(){var h;this.seriesGroup.selectAll("*").remove();const t=new Map,e=new Map;for(const f of this.options.series){const u=f._internalType;t.set(u,(t.get(u)||0)+1),e.set(u,0)}const i=this.options.chart.animation!==!1,r=es,o=new Map,s=new Map,a=new Map,l=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(u.stacking){const d=r(u);o.set(d,(o.get(d)||0)+1),a.has(d)||a.set(d,new Map);const p=a.get(d),y=this.seriesInstances[f];y.processData(),Wi(y.data,p)}}const c=new Map;for(let f=0;f<this.options.series.length;f++){const u=this.options.series[f];if(!u.stacking)continue;const d=r(u);c.has(d)||c.set(d,new Map);const p=c.get(d);l.set(f,new Map(p)),Wi(this.seriesInstances[f].data,p)}for(let f=0;f<this.seriesInstances.length;f++){const u=this.seriesInstances[f],d=this.options.series[f],p=this.xAxes[d._xAxisIndex]||this.xAxes[0],y=this.yAxes[d._yAxisIndex]||this.yAxes[0],g=d._internalType,m=e.get(g)||0;e.set(g,m+1);let x;d.stacking&&(x=l.get(f)||new Map);const v={plotArea:this.layout.plotArea,xAxis:p,yAxis:y,colorIndex:f,colors:this.options.colors,events:this.events,chartGroup:this.seriesGroup,plotGroup:this.plotGroup,totalSeriesOfType:d.stacking?o.get(r(d))||1:t.get(g)||1,indexInType:d.stacking?s.get(r(d))||0:m,animate:i&&d.animation!==!1,stackOffsets:x,stackTotals:d.stacking?a.get(r(d)):void 0,allSeries:this.seriesInstances,inverted:!!this.options.chart.inverted,legendConfig:this.options.legend,pane:this.options.pane,backgroundColor:this.options.chart.backgroundColor};if(u.processData(),u.init(v),u.render(),d.stacking){const b=r(d);s.set(b,(s.get(b)||0)+1)}u.setOnVisibilityChange(b=>this.animatedRedraw(b)),(h=d.dataLabels)!=null&&h.enabled&&!fg.has(d._internalType)&&!dg.has(d._internalType)&&Jo.render(u.group,u.data,d.dataLabels,p,y,d.name||"")}}renderLegend(){this.legend&&this.legend.render(this.seriesInstances,this.layout.legendArea)}setupReflow(){if(typeof ResizeObserver>"u")return;const t=_v(()=>this.reflow(),100);this.resizeObserver=new ResizeObserver(t),this.resizeObserver.observe(this.container)}fireEvent(t,...e){var r;this.events.emit(`chart:${t}`,this,...e);const i=(r=this.options.chart.events)==null?void 0:r[t];typeof i=="function"&&i.call(this,...e)}get plotLeft(){return this.layout.plotArea.x}get plotTop(){return this.layout.plotArea.y}get plotWidth(){return this.layout.plotArea.width}get plotHeight(){return this.layout.plotArea.height}get plotRenderer(){const t=this.seriesGroup,e=this.xAxes,i=this.yAxes,r=this.layout.plotArea;return{rect(o,s,a,l){return t.insert("rect",":first-child").attr("x",o).attr("y",s).attr("width",a).attr("height",l)},circle(o,s,a){return t.insert("circle",":first-child").attr("cx",o).attr("cy",s).attr("r",a)},ellipse(o,s,a,l){return t.insert("ellipse",":first-child").attr("cx",o).attr("cy",s).attr("rx",a).attr("ry",l)},path(o){return t.insert("path",":first-child").attr("d",o)},line(o,s,a,l){return t.insert("line",":first-child").attr("x1",o).attr("y1",s).attr("x2",a).attr("y2",l)},text(o,s,a){return t.append("text").attr("x",s).attr("y",a).text(o)},group(o){const s=t.insert("g",":first-child");return o&&s.attr("class",o),s.style("pointer-events","none"),s},get plotArea(){return{x:0,y:0,width:r.width,height:r.height}},get localPlotArea(){return{x:0,y:0,width:r.width,height:r.height}},xAxis:{toPixels(o,s=0){var a;return((a=e[s])==null?void 0:a.getPixelForValue(o))??0}},yAxis:{toPixels(o,s=0){var a;return((a=i[s])==null?void 0:a.getPixelForValue(o))??0}}}}setupResponsive(){var t,e;(e=(t=this.options.responsive)==null?void 0:t.rules)!=null&&e.length&&(this.responsiveEngine=new cf(this.options.responsive))}applyInitialResponsiveRules(){if(!this.responsiveEngine)return;const t=this.responsiveEngine.evaluate(this.chartWidth,this.chartHeight);if(t.changed&&t.matchingIndices.length>0){const e=this.responsiveEngine.getRules();let i=co(this.originalUserOptions);for(const o of t.matchingIndices)i=le(i,e[o].chartOptions);const r=new qn;this.options=r.parse(i),this.state.updateConfig(this.options)}}addSeries(t,e=!0){this.originalUserOptions.series||(this.originalUserOptions.series=[]),this.originalUserOptions.series.push(t);const o={...new qn().parse({series:[t]}).series[0],index:this.options.series.length};this.state.addSeries(o),this.options=this.state.getConfig();const s=Tt.getType(o._internalType)||Tt.getType("line");if(!s)throw new Error("KatuCharts: no series type registered");const a=new s(o);return this.seriesInstances.push(a),e&&this.redraw(),a}get(t){const e=this.seriesInstances.find(r=>r.config.id===t);if(e)return e;const i=this.xAxes.find(r=>r.config.id===t);return i||this.yAxes.find(r=>r.config.id===t)}canReuseSeriesInstances(t){return this.seriesInstances.length!==t.series.length?!1:this.seriesInstances.every((e,i)=>{var r;return e.config._internalType===((r=t.series[i])==null?void 0:r._internalType)})}syncSeriesInstances(t){for(let e=0;e<this.seriesInstances.length;e++){const i=this.seriesInstances[e],r={...t.series[e],visible:i.visible};this.options.series[e]=r,i.config=r,i.visible=r.visible!==!1,i.processData()}}update(t,e=!0){var a;this.isResponsiveUpdate||(this.originalUserOptions=le(co(this.originalUserOptions),t));const i=new qn,r=le(this.optionsToExternal(),t);(a=t.chart)!=null&&a.type&&Array.isArray(r.series)&&r.series.forEach((l,c)=>{var f,u;const h=Array.isArray(t.series)?(f=t.series[c])==null?void 0:f.type:void 0;(u=this.options.series[c])!=null&&u._typeFromChart&&!h&&delete l.type});const o=i.parse(r),s=this.canReuseSeriesInstances(o);if(this.state.updateConfig(o),this.options=this.state.getConfig(),e)if(!s)this.redraw();else{this.buildAxes(),this.syncSeriesInstances(o);try{this.animatedRedraw(300)}catch{this.redraw()}}}animatedRedraw(t=500){this.updateAxesDomains(),this.updateTooltipCategories();for(const c of this.xAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);for(const c of this.yAxes)c.animateAxis(this.axisGroup,this.layout.plotArea,t);const e=new Map,i=new Map,r=new Map,o=new Map,s=new Map,a=es,l=new Map;for(const c of this.seriesInstances){if(!c.visible)continue;const h=c.config._internalType;if(e.set(h,(e.get(h)||0)+1),c.config.stacking){const f=a(c.config);r.set(f,(r.get(f)||0)+1),s.has(f)||s.set(f,new Map),l.has(f)||l.set(f,new Map),Wi(c.data,l.get(f))}}for(let c=0;c<this.seriesInstances.length;c++){const h=this.seriesInstances[c];if(!h.visible)continue;const f=this.options.series[c],u=f._internalType,d=i.get(u)||0;i.set(u,d+1);let p,y,g,m;if(f.stacking){const x=a(f);p=r.get(x)||1,y=o.get(x)||0,o.set(x,y+1),g=new Map(s.get(x)),m=l.get(x)}else p=e.get(u)||1,y=d;h.updateContext({xAxis:this.xAxes[f._xAxisIndex]||this.xAxes[0],yAxis:this.yAxes[f._yAxisIndex]||this.yAxes[0],totalSeriesOfType:p,indexInType:y,stackOffsets:g,stackTotals:m}),h.animateUpdate(t),f.stacking&&Wi(h.data,s.get(a(f)))}this.renderStackLabels(),this.renderTitles(),this.renderLegend(),this.fireEvent("render")}redraw(){this.computeLayout(),this.plotGroup.attr("transform",`translate(${this.layout.plotArea.x},${this.layout.plotArea.y})`),this.renderer.updateClipPath(this.clipPathId,0,0,this.layout.plotArea.width,this.layout.plotArea.height),this.buildAxes(),this.seriesInstances.forEach(t=>t.destroy()),this.seriesInstances=[],this.buildSeries(),this.renderAll(),this.tooltip&&this.tooltip.updatePlotArea(this.layout.plotArea),this.renderTitles(),this.fireEvent("redraw")}reflow(){if(this.options.chart.width)return;const t=ef(this.container,this.getDefaultHeightAspectRatio());let e=t.width,i=this.resolveHeight(this.options.chart.height,t.height);const r=this.options.chart.scrollablePlotArea;if(r!=null&&r.minWidth&&r.minWidth>e&&(e=r.minWidth),r!=null&&r.minHeight&&r.minHeight>i&&(i=r.minHeight),!(e===this.chartWidth&&i===this.chartHeight)){if(this.responsiveEngine){const o=this.responsiveEngine.evaluate(e,i);if(o.changed){const s=this.responsiveEngine.getRules();let a=co(this.originalUserOptions);for(const l of o.matchingIndices)a=le(a,s[l].chartOptions);this.isResponsiveUpdate=!0,this.update(a,!1),this.isResponsiveUpdate=!1}}this.setSize(e,i)}}setSize(t,e){var i,r;this.chartWidth=t,this.chartHeight=e,this.renderer.setSize(t,e),this.renderer.svg.select(".katucharts-background").attr("width",t).attr("height",e),this.renderer.svg.select(".katucharts-border").attr("width",t).attr("height",e),(i=this.exportButton)==null||i.updatePosition(t,e),(r=this.credits)==null||r.updatePosition(t,e),this.redraw()}getViewportSize(){return this.scrollableInner?{width:this.scrollableOuterWidth,height:this.scrollableOuterHeight}:{width:this.chartWidth,height:this.chartHeight}}fitToViewport(t,e){if(!this.scrollableInner){this.setSize(t,e);return}const i=this.options.chart.scrollablePlotArea;this.scrollableOuterWidth=t,this.scrollableOuterHeight=e,this.scrollableInner.style.width=t+"px",this.scrollableInner.style.height=e+"px";const r=Math.max((i==null?void 0:i.minWidth)||0,t),o=Math.max((i==null?void 0:i.minHeight)||0,e);this.setSize(r,o),this.createFixedAxisOverlay()}setTitle(t,e){t&&(this.options.title=le(this.options.title,t),this.originalUserOptions.title=le(this.originalUserOptions.title||{},t)),e&&(this.options.subtitle=le(this.options.subtitle,e),this.originalUserOptions.subtitle=le(this.originalUserOptions.subtitle||{},e)),this.renderTitles()}addAxis(t,e=!0,i=!0){const r=e?this.options.xAxis:this.options.yAxis,o={...t,index:r.length,isX:e};r.push(o);const s=Ka(o,this.layout.plotArea);return(e?this.xAxes:this.yAxes).push(s),i&&this.redraw(),s}showLoading(t){let e=this.container.querySelector(".katucharts-loading");e||(e=document.createElement("div"),e.className="katucharts-loading",Object.assign(e.style,{position:"absolute",top:"0",left:"0",width:"100%",height:"100%",backgroundColor:"rgba(255,255,255,0.75)",display:"flex",alignItems:"center",justifyContent:"center",fontSize:"14px",fontWeight:"bold",color:"#666",zIndex:"20"}),this.container.appendChild(e)),e.textContent=t||"Loading...",e.style.display="flex"}hideLoading(){const t=this.container.querySelector(".katucharts-loading");t&&(t.style.display="none")}destroy(){var i,r,o,s,a,l,c;this.resizeObserver&&(this.resizeObserver.disconnect(),this.resizeObserver=null),this.seriesInstances.forEach(h=>h.destroy()),(i=this.tooltip)==null||i.destroy(),(r=this.legend)==null||r.destroy(),(o=this.crosshair)==null||o.destroy(),(s=this.credits)==null||s.destroy(),(a=this.exportButton)==null||a.destroy(),this.interactions.destroy(),(l=this.stock)==null||l.destroy(),(c=this.responsiveEngine)==null||c.reset(),this.events.removeAllListeners(),this.renderer.destroy();const t=this.container.querySelector(".katucharts-loading");t&&t.remove();const e=this.container.querySelector(".katucharts-tooltip");e&&e.remove(),this.container.querySelectorAll(".katucharts-title-html, .katucharts-subtitle-html").forEach(h=>h.remove())}getSVG(){return this.exporter.getSVG()}getSeriesInstances(){return this.seriesInstances}get series(){return this.seriesInstances}getXAxes(){return this.xAxes}getYAxes(){return this.yAxes}handleExportAction(t){this.exporter.handleExportAction(t)}getCSV(){return this.exporter.getCSV()}getTable(){return this.exporter.getTable()}getDataRows(){return this.exporter.getDataRows()}exportChart(t,e){this.exporter.exportChart(t)}print(){this.exporter.print()}optionsToExternal(){return this.exporter.optionsToExternal()}}const bt=600,Wt=8,Gf=0,Kn=bt+100,K=300,ls=250,pt=Ku,Z=Ku,D2=500;function Ce(n,t,e,i){return i>D2?t:t+n*e}const z2={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",ShortDashDotDot:"6,2,2,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};function on(n){return!n||n==="Solid"?"none":z2[n]||"none"}function Yf(n,t){const e=n.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(e){const r=Math.min(255,parseInt(e[1],16)+Math.round(255*t)),o=Math.min(255,parseInt(e[2],16)+Math.round(255*t)),s=Math.min(255,parseInt(e[3],16)+Math.round(255*t));return`rgb(${r},${o},${s})`}const i=n.match(/^rgb\((\d+),\s*(\d+),\s*(\d+)\)$/);if(i){const r=Math.min(255,parseInt(i[1])+Math.round(255*t)),o=Math.min(255,parseInt(i[2])+Math.round(255*t)),s=Math.min(255,parseInt(i[3])+Math.round(255*t));return`rgb(${r},${o},${s})`}return n}class Ut{constructor(t){this.selectedPoints=new Set,this._cachedExtents=null,this.config=t,this.visible=t.visible!==!1,this.data=t._processedData||[]}init(t){this.context=t,this.group=t.chartGroup.append("g").attr("class",`katucharts-series katucharts-series-${this.config._internalType}`).attr("data-series-index",this.config.index),this.config.opacity!==void 0&&this.config.opacity!==1&&this.group.attr("opacity",this.config.opacity),this.config.zIndex!==void 0&&this.group.style("z-index",String(this.config.zIndex)),this.config.className&&this.group.classed(this.config.className,!0),this.config.shadow&&this.applyShadowFilter(),this.visible||this.group.style("display","none"),this.config.allowPointSelect&&this.data.forEach((e,i)=>{e.selected&&this.selectedPoints.add(i)}),this.group.on("mouseenter",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOver)==null||i.call(this,new Event("mouseOver")),this.context.events.emit("series:mouseenter",this)}).on("mouseleave",()=>{var e,i;(i=(e=this.config.events)==null?void 0:e.mouseOut)==null||i.call(this,new Event("mouseOut")),this.context.events.emit("series:mouseleave",this)})}setOnVisibilityChange(t){this._onVisibilityChange=t}processData(){this.data=this.config._processedData||[],this._cachedExtents=null}getColor(){return this.config.color||this.context.colors[this.context.colorIndex%this.context.colors.length]}autoLabelColor(t){return Pn(this.context.backgroundColor,t)}labelHalo(){const t=this.labelHaloColor();return`0 0 3px ${t}, 0 0 3px ${t}`}labelHaloColor(){return Pn(this.context.backgroundColor)==="#ffffff"?"rgba(0,0,0,0.85)":"#ffffff"}autoBorderColor(){const t=this.context.backgroundColor;return!t||t==="transparent"||t==="none"?"#ffffff":t}getMultiLegendItems(){return null}getLegendSymbolShape(){return null}getBubbleLegendInfo(){return null}animateUpdate(t){this.group.selectAll("*").remove(),this.render()}updateContext(t){Object.assign(this.context,t)}redraw(){this.group.selectAll("*").remove(),this.render()}setVisible(t,e=!0){var i,r,o,s;this.visible=t,t?(r=(i=this.config.events)==null?void 0:i.show)==null||r.call(this,new Event("show")):(s=(o=this.config.events)==null?void 0:o.hide)==null||s.call(this,new Event("hide")),e&&this._onVisibilityChange?(t?this.group.style("display","").attr("opacity",0).transition().duration(300).attr("opacity",this.config.opacity??1):this.group.transition().duration(300).attr("opacity",0).on("end",()=>{this.group.style("display","none")}),this._onVisibilityChange(500)):this.group.style("display",t?"":"none"),this.context.events.emit("series:visibilityChanged",this,t)}toggleVisible(){this.setVisible(!this.visible)}getDataExtents(){if(this._cachedExtents)return this._cachedExtents;let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data)o.x!==void 0&&o.x!==null&&(o.x<t&&(t=o.x),o.x>e&&(e=o.x)),o.y!==void 0&&o.y!==null&&(o.y<i&&(i=o.y),o.y>r&&(r=o.y));return this._cachedExtents={xMin:t,xMax:e,yMin:i,yMax:r},this._cachedExtents}getCategories(){return this.data.filter(t=>t.name!==void 0).map(t=>t.name)}destroy(){var t;(t=this.group)==null||t.remove()}setData(t,e=!0,i=!0){this.data=t,this.config._processedData=t,this._cachedExtents=null,e&&(i?this.animateUpdate(500):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoint(t,e=!0,i=!1,r=!0){if(this.data.push(t),this.config._processedData=this.data,i&&this.data.length>1)this.data.shift(),this.config._processedData=this.data,this._cachedExtents=null;else if(this._cachedExtents){const o=this._cachedExtents;t.x!==void 0&&t.x!==null&&(t.x<o.xMin&&(o.xMin=t.x),t.x>o.xMax&&(o.xMax=t.x)),t.y!==void 0&&t.y!==null&&(t.y<o.yMin&&(o.yMin=t.y),t.y>o.yMax&&(o.yMax=t.y))}e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}addPoints(t,e=!0,i=!1,r=!0){for(const o of t)this.data.push(o);i&&this.data.length>t.length&&this.data.splice(0,t.length),this.config._processedData=this.data,this._cachedExtents=null,e&&(r?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this))}removePoint(t,e=!0,i=!0){t>=0&&t<this.data.length&&(this.data.splice(t,1),this.config._processedData=this.data,this._cachedExtents=null,e&&(i?this.animateUpdate(300):this.redraw(),this.context.events.emit("series:dataChanged",this)))}updateSeries(t,e=!0){Object.assign(this.config,t),t.data&&(this.config._processedData=t.data,this.data=this.config._processedData,this._cachedExtents=null),e&&this.redraw()}applyBatch(t){for(const e of t.entries)switch(e.type){case"setData":this.data=e.payload,this.config._processedData=this.data;break;case"addPoint":this.data.push(e.payload.point),e.payload.shift&&this.data.length>1&&this.data.shift();break;case"addPoints":for(const i of e.payload.points)this.data.push(i);e.payload.shift&&this.data.splice(0,e.payload.points.length);break;case"removePoint":e.payload.index>=0&&e.payload.index<this.data.length&&this.data.splice(e.payload.index,1);break}this.config._processedData=this.data,this._cachedExtents=null,this.redraw(),this.context.events.emit("series:dataChanged",this)}show(){this.setVisible(!0)}hide(){this.setVisible(!1)}getSelectedPoints(){return Array.from(this.selectedPoints).map(t=>({index:t,point:this.data[t]})).filter(t=>t.point!==void 0)}applyClipPath(){const{plotArea:t}=this.context;this.clipId=`katucharts-clip-${this.config.index}-${Date.now()}`;const e=this.group.select(function(){return this.ownerSVGElement});if(!e.empty()){let i=e.select("defs");i.empty()&&(i=e.append("defs")),i.append("clipPath").attr("id",this.clipId).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height),this.group.attr("clip-path",`url(#${this.clipId})`)}}applyShadowFilter(){const t=this.config.shadow;if(!t)return;const e=`katucharts-shadow-${this.config.index}-${Date.now()}`,i=this.group.select(function(){return this.ownerSVGElement});if(!i.empty()){let r=i.select("defs");r.empty()&&(r=i.append("defs"));const o=typeof t=="object"?t:{},s=o.offsetX??1,a=o.offsetY??1,l=o.width??3,c=o.opacity??.15;r.append("filter").attr("id",e).append("feDropShadow").attr("dx",s).attr("dy",a).attr("stdDeviation",l).attr("flood-opacity",c),this.group.style("filter",`url(#${e})`)}}applyInactiveState(){var r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=this.config.states)==null?void 0:r.inactive)==null?void 0:o.opacity)??.2,i=((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??ls;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(i).ease(Z).attr("opacity",e)}clearInactiveState(){var i,r,o,s,a,l;const t=this.context.allSeries;if(!t||t.length<=1)return;const e=((o=(r=(i=this.config.states)==null?void 0:i.normal)==null?void 0:r.animation)==null?void 0:o.duration)??((l=(a=(s=this.config.states)==null?void 0:s.inactive)==null?void 0:a.animation)==null?void 0:l.duration)??ls;for(const c of t)c!==this&&c.visible&&c.group.transition("inactive").duration(e).ease(Z).attr("opacity",c.config.opacity??1)}emitAfterAnimate(t){var o;const e=!!((o=this.config.events)!=null&&o.afterAnimate),i=typeof this.config.animation=="object"?this.config.animation:null,r=!!(i!=null&&i.complete);(e||r)&&setTimeout(()=>{var s,a,l;(a=(s=this.config.events)==null?void 0:s.afterAnimate)==null||a.call(this,new Event("afterAnimate")),(l=i==null?void 0:i.complete)==null||l.call(i)},t)}renderDataLabels(t,e,i){const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;this.group.selectAll(".katucharts-data-labels").remove();const o=this.group.append("g").attr("class","katucharts-data-labels");this.getColor(),t.forEach((s,a)=>{var y,g;if(s.y===null||s.y===void 0)return;const l=s.dataLabels,c={...r,...l};let h;if(c.formatter?h=c.formatter.call({point:{...s,index:a},series:this,x:s.x??a,y:s.y,percentage:s._percentage}):c.format?h=fe(Zt(c.format,{point:s,series:{name:this.config.name??""},x:s.x,y:s.y,percentage:s._percentage??s.percentage})):h=String(s.y),c.filter){const m=s[c.filter.property??"y"]??0,x=c.filter.operator??">",v=c.filter.value??0;if(!(x===">"?m>v:x==="<"?m<v:x===">="?m>=v:x==="<="?m<=v:x==="=="?m===v:!0))return}const f=e(s,a)+(c.x??0),u=i(s,a)+(c.y??-10),d=o.append("text").attr("x",f).attr("y",u).attr("text-anchor",c.align==="left"?"start":c.align==="right"?"end":"middle").attr("dominant-baseline",c.verticalAlign==="top"?"text-before-edge":c.verticalAlign==="bottom"?"text-after-edge":"central").text(h),p=c.style||{};if(d.style("font-size",p.fontSize??wt).style("font-weight",p.fontWeight??"bold").style("fill",c.color||p.color||this.autoLabelColor()),p.textOutline&&d.style("text-shadow",p.textOutline),c.rotation&&d.attr("transform",`rotate(${c.rotation},${f},${u})`),c.backgroundColor||c.borderWidth){const m=(g=(y=d.node()).getBBox)==null?void 0:g.call(y);if(m){const x=c.padding??5,v=c.borderRadius??0;o.insert("rect",":last-child").attr("x",m.x-x).attr("y",m.y-x).attr("width",m.width+x*2).attr("height",m.height+x*2).attr("rx",v).attr("fill",c.backgroundColor||"none").attr("stroke",c.borderColor||"none").attr("stroke-width",c.borderWidth??0)}}this.context.animate&&c.defer!==!1&&d.attr("opacity",0).transition().delay(Kn+a*Wt).duration(400).ease(pt).attr("opacity",1)})}handlePointSelect(t,e,i,r){var s,a,l,c;if(!this.config.allowPointSelect)return;const o=this.selectedPoints.has(i);if(o){if(((a=(s=e.events)==null?void 0:s.unselect)==null?void 0:a.call(e,r))===!1)return;this.selectedPoints.delete(i),e.selected=!1,this.clearSelectStyle(t)}else{if(((c=(l=e.events)==null?void 0:l.select)==null?void 0:c.call(e,r))===!1)return;this.selectedPoints.add(i),e.selected=!0,this.applySelectStyle(t)}this.context.events.emit("point:select",{point:e,index:i,series:this,selected:!o})}applySelectStyle(t){var i;const e=(i=this.config.states)==null?void 0:i.select;e!=null&&e.color&&t.attr("fill",e.color),e!=null&&e.borderColor&&t.attr("stroke",e.borderColor),(e==null?void 0:e.borderWidth)!==void 0&&t.attr("stroke-width",e.borderWidth)}clearSelectStyle(t){t.attr("fill",null).attr("stroke",null).attr("stroke-width",null)}attachPointEvents(t,e,i){var s;if(this.config.enableMouseTracking===!1)return;const r=e.events||{},o=((s=this.config.point)==null?void 0:s.events)||{};t.on("mouseover",a=>{var l,c;this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:a,plotX:this.context.xAxis.getPixelForValue(e.x??i),plotY:this.context.yAxis.getPixelForValue(e.y??0)}),(l=r.mouseOver)==null||l.call(e,a),(c=o.mouseOver)==null||c.call(e,a)}).on("mouseout",a=>{var l,c;this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:a}),(l=r.mouseOut)==null||l.call(e,a),(c=o.mouseOut)==null||c.call(e,a)}).on("click",a=>{var l,c,h,f;this.context.events.emit("point:click",{point:e,index:i,series:this,event:a}),(l=r.click)==null||l.call(e,a),(c=o.click)==null||c.call(e,a),(f=(h=this.config.events)==null?void 0:h.click)==null||f.call(this,a),this.handlePointSelect(t,e,i,a)}),t.style("cursor",this.config.cursor||"pointer")}applyJitter(t,e,i){return i?t+(Math.random()-.5)*i*e:t}}function Sc(n,t){const e=n.length;if(t>=e||t<3)return n;const i=new Array(t);i[0]=n[0],i[t-1]=n[e-1];const r=(e-2)/(t-2);let o=0;for(let s=1;s<t-1;s++){const a=Math.floor((s-1)*r)+1,l=Math.min(Math.floor(s*r)+1,e-1),c=Math.floor(s*r)+1,h=Math.min(Math.floor((s+1)*r)+1,e-1);let f=0,u=0;const d=h-c;for(let x=c;x<h;x++)f+=n[x].x??x,u+=n[x].y??0;d>0&&(f/=d,u/=d);const p=n[o].x??o,y=n[o].y??0;let g=-1,m=a;for(let x=a;x<l;x++){const v=n[x].x??x,b=n[x].y??0,k=Math.abs((p-f)*(b-y)-(p-v)*(u-y));k>g&&(g=k,m=x)}i[s]=n[m],o=m}return i}function B2(n,t){const e=n.length;if(t>=e||t<2)return n;const i=Math.ceil(t/2),r=e/i,o=[];o.push(n[0]);for(let s=0;s<i;s++){const a=Math.floor(s*r),l=Math.min(Math.floor((s+1)*r),e);let c=a,h=a,f=n[a].y??0,u=f;for(let d=a+1;d<l;d++){const p=n[d].y??0;p<f&&(f=p,c=d),p>u&&(u=p,h=d)}c<h?(o.push(n[c]),c!==h&&o.push(n[h])):(o.push(n[h]),c!==h&&o.push(n[c]))}return o[o.length-1]!==n[e-1]&&o.push(n[e-1]),o}const Xf=new WeakMap;function O2(n,t){let e=Xf.get(n);return e||(e=[],Xf.set(n,e),rt(n).on("mousemove.hover-shared",i=>{const r=n.querySelector(".katucharts-plot-group");if(!r)return;const o=r.getScreenCTM();if(!o)return;const s=n.createSVGPoint();s.x=i.clientX,s.y=i.clientY;const a=s.matrixTransform(o.inverse()),l=a.x,c=a.y;if(l<0||l>t.width||c<0||c>t.height){for(const d of e)d.currentIdx>=0&&d.hideHover(i);return}let h=null,f=-1,u=1/0;for(const d of e){const p=d.findCandidate(l,c);p&&p.dist<u&&(u=p.dist,f=p.idx,h=d)}for(const d of e)d!==h&&d.currentIdx>=0&&d.hideHover(i);h&&f!==h.currentIdx&&h.showHover(f,i)}),rt(n).on("mouseleave.hover-shared",i=>{for(const r of e)r.currentIdx>=0&&r.hideHover(i)}),rt(n).on("click.hover-shared",i=>{for(const r of e)if(r.currentIdx>=0){r.handleClick(i);break}})),e}class N2{constructor(t){var a;this.config=t,this.currentIdx=-1;const{group:e,data:i,xAxis:r,plotArea:o}=t;this.validData=i.filter(l=>l.y!==null&&l.y!==void 0),this.xPositions=new Float64Array(this.validData.length);for(let l=0;l<this.validData.length;l++)this.xPositions[l]=r.getPixelForValue(this.validData[l].x??l);this.hoverGroup=e.append("g").attr("class","katucharts-hover-targets"),this.halo=this.hoverGroup.append("circle").attr("r",0).attr("opacity",0).attr("class","katucharts-halo"),this.hoverMarker=this.hoverGroup.append("circle").attr("r",t.markerRadius).attr("opacity",0).attr("class","katucharts-hover-marker").attr("stroke","#fff").attr("stroke-width",1);const s=(a=e.node())==null?void 0:a.ownerSVGElement;s&&O2(s,o).push(this)}findCandidate(t,e){const{yAxis:i}=this.config,r=this.xPositions;if(r.length===0)return null;let o=0,s=r.length-1;for(;o<s;){const h=o+s>>1;r[h]<t?o=h+1:s=h}let a=-1,l=1/0;const c=2;for(let h=Math.max(0,o-c);h<=Math.min(r.length-1,o+c);h++){const f=r[h],u=i.getPixelForValue(this.validData[h].y??0),d=Math.sqrt((f-t)**2+(u-e)**2);d<l&&(l=d,a=h)}return a<0||Math.abs(r[a]-t)>50?null:{idx:a,dist:l}}handleClick(t){var o,s,a,l,c,h,f;if(this.currentIdx<0)return;const{series:e,events:i}=this.config,r=this.validData[this.currentIdx];i.emit("point:click",{point:r,index:this.currentIdx,series:e,event:t}),(s=(o=r.events)==null?void 0:o.click)==null||s.call(r,t),(c=(l=(a=e.config.point)==null?void 0:a.events)==null?void 0:l.click)==null||c.call(r,t),(f=(h=e.config.events)==null?void 0:h.click)==null||f.call(e,t)}showHover(t,e){var x,v,b,k,M;if(t<0||t>=this.validData.length)return;const{series:i,events:r,yAxis:o,haloSize:s,haloOpacity:a,hoverRadius:l,hoverLineWidth:c,pathSelection:h,lineWidthPlus:f,baseLineWidth:u,getColor:d}=this.config,p=this.validData[t],y=this.xPositions[t],g=o.getPixelForValue(p.y??0),m=d(p);this.currentIdx>=0&&this.currentIdx!==t&&r.emit("point:mouseout",{point:this.validData[this.currentIdx],index:this.currentIdx,series:i,event:e}),this.currentIdx=t,this.halo.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(K).ease(Z).attr("r",s).attr("opacity",a),this.hoverMarker.attr("cx",y).attr("cy",g).attr("fill",m).transition().duration(K).ease(Z).attr("r",l).attr("opacity",1).attr("stroke-width",c),f&&h&&h.transition("hover").duration(K).ease(Z).attr("stroke-width",u+f),r.emit("point:mouseover",{point:p,index:t,series:i,event:e,plotX:y,plotY:g}),(v=(x=p.events)==null?void 0:x.mouseOver)==null||v.call(p,e),(M=(k=(b=i.config.point)==null?void 0:b.events)==null?void 0:k.mouseOver)==null||M.call(p,e)}hideHover(t){var s,a,l,c,h;const{series:e,events:i,pathSelection:r,baseLineWidth:o}=this.config;if(this.currentIdx>=0){const f=this.validData[this.currentIdx];i.emit("point:mouseout",{point:f,index:this.currentIdx,series:e,event:t}),(a=(s=f.events)==null?void 0:s.mouseOut)==null||a.call(f,t),(h=(c=(l=e.config.point)==null?void 0:l.events)==null?void 0:c.mouseOut)==null||h.call(f,t)}this.halo.transition().duration(K).ease(Z).attr("r",0).attr("opacity",0),this.hoverMarker.transition().duration(K).ease(Z).attr("r",this.config.markerRadius).attr("opacity",0),r&&r.transition("hover").duration(K).ease(Z).attr("stroke-width",o),this.currentIdx=-1}findNearest(t){const e=this.xPositions;if(e.length===0)return-1;let i=0,r=e.length-1;for(;i<r;){const o=i+r>>1;e[o]<t?i=o+1:r=o}return i>0&&Math.abs(e[i-1]-t)<Math.abs(e[i]-t)&&(i=i-1),Math.abs(e[i]-t)>30?-1:i}}const W2={circle:Zn,square:vc,diamond:bc,triangle:kc,"triangle-down":Mc,cross:xc};class Uf extends Ut{constructor(t){super(t),this.pathSelection=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeColor&&this.config.threshold!==null?this.renderNegativeColor(e,t):this.renderMainLine(e,t,i),this.renderMarkers(e,t,!!i),this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(bt+Kn)}renderMainLine(t,e,i){const r=this.buildLineGenerator();this.pathSelection=this.group.append("path").datum(t).attr("d",r).attr("fill","none").attr("stroke",e).attr("stroke-width",this.config.lineWidth??2).attr("stroke-dasharray",on(this.config.dashStyle)).attr("stroke-linecap",this.config.linecap||"round").attr("class","katucharts-line"),i&&this.animateLineEntry(this.pathSelection)}renderNegativeColor(t,e){const i=this.config.threshold??0,r=this.config.negativeColor,o=this.config.lineWidth??2,s=this.config.linecap||"round",a=on(this.config.dashStyle),l=[];let c=[],h=null;for(const f of t){if(f.y===null||f.y===void 0){c.length>0&&(l.push({points:c,negative:h}),c=[],h=null);continue}const u=f.y<i;h!==null&&u!==h&&c.length>0&&(l.push({points:[...c],negative:h}),c=[c[c.length-1]]),h=u,c.push(f)}c.length>0&&l.push({points:c,negative:h});for(const f of l){const u=this.buildLineGenerator();this.group.append("path").datum(f.points).attr("d",u).attr("fill","none").attr("stroke",f.negative?r:e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",a).attr("class","katucharts-line katucharts-negative-segment")}}renderZones(t,e){var u,d;const i=this.config.zones,r=this.config.zoneAxis||"y",o=this.config.lineWidth??2,s=this.config.linecap||"round";(u=this.pathSelection)==null||u.remove(),this.pathSelection=null;const a=[...i].sort((p,y)=>(p.value??1/0)-(y.value??1/0)),l=p=>r==="x"?p.x??0:p.y??0,c=t.filter(p=>p.y!==null&&p.y!==void 0),h=a.map(()=>[]),f=[];for(const p of c){const y=l(p);let g=!1;for(let m=0;m<a.length;m++)if(y<(a[m].value??1/0)){h[m].push(p),g=!0;break}g||f.push(p)}for(let p=0;p<a.length;p++)h[p].length!==0&&(p>0&&h[p-1].length>0&&h[p].unshift(h[p-1][h[p-1].length-1]),p<a.length-1&&((d=h[p+1])==null?void 0:d.length)>0?h[p].push(h[p+1][0]):f.length>0&&h[p].push(f[0]));for(let p=0;p<a.length;p++){const y=h[p];if(y.length<2)continue;const g=a[p],m=this.buildLineGenerator();this.group.append("path").datum(y).attr("d",m).attr("fill","none").attr("stroke",g.color||e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(g.dashStyle||this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}if(f.length>0){const p=h[h.length-1];if((p==null?void 0:p.length)>0&&f.unshift(p[p.length-1]),f.length>1){const y=this.buildLineGenerator();this.group.append("path").datum(f).attr("d",y).attr("fill","none").attr("stroke",e).attr("stroke-width",o).attr("stroke-linecap",s).attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-line katucharts-zone")}}}animateUpdate(t){const e=this.getFilteredData(),i=this.buildLineGenerator(),r=this.getColor();this.pathSelection&&!this.pathSelection.empty()?this.pathSelection.datum(e).transition().duration(t).attr("d",i):(this.group.selectAll(".katucharts-line").remove(),this.renderMainLine(e,r,!1)),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,r,!1),this.renderHoverTargets(e,r),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0))}buildLineGenerator(){const{xAxis:t,yAxis:e}=this.context,i=this.config.connectNulls,r=!!this.context.inverted,o=(l,c)=>typeof l=="number"?c:(l==null?void 0:l.x)??c,s=l=>typeof l=="number"?l:l==null?void 0:l.y,a=ki().x((l,c)=>r?e.getPixelForValue(s(l)??0):t.getPixelForValue(o(l,c))).y((l,c)=>r?t.getPixelForValue(o(l,c)):e.getPixelForValue(s(l)??0)).curve(this.getCurve());return i||a.defined(l=>{const c=s(l);return c!=null}),a}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Sc(t,Math.floor(r)))}return t}getCurve(){const t=this.config.step;return t==="left"?Nf:t==="center"?Bf:t==="right"?Of:Xi}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??bt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>{t.attr("stroke-dasharray",l==="none"?null:l)})}}renderMarkers(t,e,i){const r=this.config.marker,o=(r==null?void 0:r.enabledThreshold)??2;if(!((r==null?void 0:r.enabled)===!0||(r==null?void 0:r.enabled)!==!1&&t.length<=o*this.context.plotArea.width/12))return;const{xAxis:a,yAxis:l}=this.context,c=(r==null?void 0:r.radius)??4,h=(r==null?void 0:r.symbol)||"circle",f=this.group.append("g").attr("class","katucharts-markers"),u=t.filter(d=>d.y!==null&&d.y!==void 0);if(h==="circle"){const d=f.selectAll("circle").data(u).join("circle").attr("cx",p=>a.getPixelForValue(p.x??0)).attr("cy",p=>l.getPixelForValue(p.y??0)).attr("fill",(p,y)=>this.getMarkerFill(p,y,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?d.attr("r",0).transition().delay((p,y)=>Ce(y,Kn,Wt,u.length)).duration(bt).ease(pt).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c}):d.attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??c})}else{const d=W2[h]||Zn,p=Math.PI*c*c;rn().type(d).size(p);const y=f.selectAll("path").data(u).join("path").attr("transform",g=>`translate(${a.getPixelForValue(g.x??0)},${l.getPixelForValue(g.y??0)})`).attr("fill",(g,m)=>this.getMarkerFill(g,m,r,e)).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const g=rn().type(d).size(0);y.attr("d",g).transition().delay((m,x)=>Ce(x,Kn,Wt,u.length)).duration(bt).ease(pt).attr("d",m=>{var v;const x=((v=m.marker)==null?void 0:v.radius)??c;return rn().type(d).size(Math.PI*x*x)()})}else y.attr("d",g=>{var x;const m=((x=g.marker)==null?void 0:x.radius)??c;return rn().type(d).size(Math.PI*m*m)()})}}getMarkerFill(t,e,i,r){var o;return t.color?t.color:(o=t.marker)!=null&&o.fillColor?t.marker.fillColor:i!=null&&i.fillColor?i.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:r}renderHoverTargets(t,e){var f,u,d,p,y,g,m,x;if(this.config.enableMouseTracking===!1)return;const i=((f=this.config.marker)==null?void 0:f.radius)??4,r=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover,o=(r==null?void 0:r.radiusPlus)??2,s=(r==null?void 0:r.radius)??i+o,a=(r==null?void 0:r.lineWidthPlus)??1,l=(r==null?void 0:r.lineWidth)??(((p=this.config.marker)==null?void 0:p.lineWidth)??1)+a,c=((g=(y=this.config.states)==null?void 0:y.hover)==null?void 0:g.lineWidthPlus)??1,h=(x=(m=this.config.states)==null?void 0:m.hover)==null?void 0:x.halo;new N2({series:this,group:this.group,data:t,xAxis:this.context.xAxis,yAxis:this.context.yAxis,plotArea:this.context.plotArea,events:this.context.events,haloSize:(h==null?void 0:h.size)??10,haloOpacity:(h==null?void 0:h.opacity)??.25,markerRadius:i,hoverRadius:s,hoverLineWidth:l,cursor:this.config.cursor||"pointer",pathSelection:this.pathSelection,lineWidthPlus:c,baseLineWidth:this.config.lineWidth??2,getColor:v=>v.color||e})}}class H2 extends Uf{constructor(t){super(t)}getCurve(){return Df.alpha(.5)}}const V2={circle:Zn,square:vc,diamond:bc,triangle:kc,"triangle-down":Mc,cross:xc};class qf extends Ut{constructor(t){super(t),this.isSpline=!1,this.areaPath=null,this.linePath=null,this.negAreaPath=null}render(){var r;const t=this.getColor(),e=this.getFilteredData(),i=this.context.animate;(r=this.config.zones)!=null&&r.length?this.renderZones(e,t):this.config.negativeFillColor||this.config.negativeColor?this.renderWithNegativeColor(e,t,!!i):this.renderMainArea(e,t,!!i),this.renderMarkers(e,t,!!i),this.config.trackByArea?this.renderAreaHoverTargets(e,t):this.renderHoverTargets(e,t),this.renderDataLabels(e.filter(o=>o.y!==null&&o.y!==void 0),(o,s)=>this.context.xAxis.getPixelForValue(o.x??s),o=>this.context.yAxis.getPixelForValue(o.y??0)),i&&this.emitAfterAnimate(bt+Kn)}renderMainArea(t,e,i){const{areaGen:r,lineGen:o}=this.buildGenerators(),s=this.config.lineColor||e;if(this.areaPath=this.group.append("path").datum(t).attr("d",r).attr("fill",this.config.fillColor||e).attr("class","katucharts-area"),this.linePath=this.group.append("path").datum(t).attr("d",o).attr("fill","none").attr("stroke",s).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const l=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;this.areaPath.attr("fill-opacity",0).transition().duration(l).ease(pt).attr("fill-opacity",this.config.fillOpacity??.75),this.animateLineEntry(this.linePath)}else this.areaPath.attr("fill-opacity",this.config.fillOpacity??.75)}renderWithNegativeColor(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.threshold??0,a=o.getPixelForValue(s),l=this.getCurve(),c=this.config.fillOpacity??.75,h=this.config.negativeFillColor||this.config.negativeColor||e,f=this.config.fillColor||e,u=this.config.lineColor||e,d=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)>=s),p=t.filter(g=>g.y!==null&&g.y!==void 0&&(g.y??0)<s);if(d.length>0){const g=Ui().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.areaPath=this.group.append("path").datum(d).attr("d",g).attr("fill",f).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-positive")}if(p.length>0){const g=Ui().x(m=>r.getPixelForValue(m.x??0)).y0(a).y1(m=>o.getPixelForValue(m.y??0)).curve(l);this.negAreaPath=this.group.append("path").datum(p).attr("d",g).attr("fill",h).attr("fill-opacity",c).attr("class","katucharts-area katucharts-area-negative")}const y=ki().defined(g=>g.y!==null&&g.y!==void 0).x(g=>r.getPixelForValue(g.x??0)).y(g=>o.getPixelForValue(g.y??0)).curve(l);if(this.linePath=this.group.append("path").datum(t).attr("d",y).attr("fill","none").attr("stroke",u).attr("stroke-width",this.config.lineWidth??2).attr("stroke-linecap",this.config.linecap||"round").attr("stroke-dasharray",on(this.config.dashStyle)).attr("class","katucharts-area-line"),i){const m=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;this.areaPath&&this.areaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.negAreaPath&&this.negAreaPath.attr("fill-opacity",0).transition().duration(m).ease(pt).attr("fill-opacity",c),this.animateLineEntry(this.linePath)}}renderZones(t,e){const{xAxis:i,yAxis:r}=this.context,o=this.config.zones,s=this.config.zoneAxis||"y",a=this.config.fillOpacity??.75,l=this.config.lineWidth??2,c=this.getCurve(),h=r.getPixelForValue(this.config.threshold??0),f=[...o].sort((g,m)=>(g.value??1/0)-(m.value??1/0)),u=g=>s==="x"?g.x??0:g.y??0,d=t.filter(g=>g.y!==null&&g.y!==void 0);let p=-1/0;const y=(g,m,x,v)=>{if(g.length<2)return;const b=Ui().x(M=>i.getPixelForValue(M.x??0)).y0(h).y1(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",b).attr("fill",x||m).attr("fill-opacity",a).attr("class","katucharts-area katucharts-zone");const k=ki().x(M=>i.getPixelForValue(M.x??0)).y(M=>r.getPixelForValue(M.y??0)).curve(c);this.group.append("path").datum(g).attr("d",k).attr("fill","none").attr("stroke",m).attr("stroke-width",l).attr("stroke-dasharray",on(v||this.config.dashStyle)).attr("class","katucharts-area-line katucharts-zone")};for(const g of f){const m=g.value??1/0,x=g.color||e,v=g.fillColor||x,b=[];for(let k=0;k<d.length;k++){const M=u(d[k]);if(M>=p&&M<m)b.length===0&&k>0&&b.push(d[k-1]),b.push(d[k]);else if(M>=m&&b.length>0){b.push(d[k]);break}}y(b,x,v,g.dashStyle),p=m}if(p!==1/0){const g=[];for(let m=0;m<d.length;m++)u(d[m])>=p&&(g.length===0&&m>0&&g.push(d[m-1]),g.push(d[m]));y(g,e,this.config.fillColor)}}getCurve(){if(this.isSpline)return Df.alpha(.5);const t=this.config.step;return t==="left"?Nf:t==="center"?Bf:t==="right"?Of:Xi}getFilteredData(){var e;let t;if(this.config.connectNulls?t=this.data.filter(i=>i.y!==null&&i.y!==void 0):t=this.data,(e=this.context)!=null&&e.plotArea){const r=this.context.plotArea.width*4;t.length>r&&(t=Sc(t,Math.floor(r)))}return t}buildGenerators(){const{xAxis:t,yAxis:e}=this.context,i=e.getPixelForValue(this.config.threshold??0),r=this.getCurve(),o=this.context.stackOffsets,s=this.config.stacking,a=this.config.connectNulls,l=u=>!s||!o?u.y??0:(o.get(u.x??0)||0)+(u.y??0),c=u=>!s||!o?this.config.threshold??0:o.get(u.x??0)||0,h=Ui().x(u=>t.getPixelForValue(u.x??0)).y0(u=>s?e.getPixelForValue(c(u)):i).y1(u=>e.getPixelForValue(l(u))).curve(r),f=ki().x(u=>t.getPixelForValue(u.x??0)).y(u=>e.getPixelForValue(l(u))).curve(r);return a||(h.defined(u=>u.y!==null&&u.y!==void 0),f.defined(u=>u.y!==null&&u.y!==void 0)),{areaGen:h,lineGen:f}}animateUpdate(t){const e=this.getFilteredData(),{areaGen:i,lineGen:r}=this.buildGenerators(),o=this.getColor();this.areaPath&&!this.areaPath.empty()&&this.areaPath.datum(e).transition().duration(t).attr("d",i),this.linePath&&!this.linePath.empty()&&this.linePath.datum(e).transition().duration(t).attr("d",r),this.group.selectAll(".katucharts-hover-targets").remove(),this.group.selectAll(".katucharts-markers").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderMarkers(e,o,!1),this.config.trackByArea?this.renderAreaHoverTargets(e,o):this.renderHoverTargets(e,o),this.renderDataLabels(e.filter(s=>s.y!==null&&s.y!==void 0),(s,a)=>this.context.xAxis.getPixelForValue(s.x??a),s=>this.context.yAxis.getPixelForValue(s.y??0))}animateLineEntry(t){var i,r;const e=((r=(i=t.node())==null?void 0:i.getTotalLength)==null?void 0:r.call(i))||0;if(e>0){const o=typeof this.config.animation=="object"?this.config.animation:{},s=o.duration??bt,a=o.defer??0,l=t.attr("stroke-dasharray");t.attr("stroke-dasharray",`${e} ${e}`).attr("stroke-dashoffset",e).transition().delay(a).duration(s).ease(pt).attr("stroke-dashoffset",0).on("end",()=>t.attr("stroke-dasharray",l==="none"?null:l))}}renderMarkers(t,e,i){const r=this.config.marker;if((r==null?void 0:r.enabled)!==!0)return;const{xAxis:o,yAxis:s}=this.context,a=(r==null?void 0:r.radius)??4,l=(r==null?void 0:r.symbol)||"circle",c=this.group.append("g").attr("class","katucharts-markers"),h=t.filter(f=>f.y!==null&&f.y!==void 0);if(l==="circle"){const f=c.selectAll("circle").data(h).join("circle").attr("cx",u=>o.getPixelForValue(u.x??0)).attr("cy",u=>s.getPixelForValue(u.y??0)).attr("fill",u=>u.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");i?f.attr("r",0).transition().delay((u,d)=>Ce(d,Kn,Wt,h.length)).duration(bt).ease(pt).attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a}):f.attr("r",u=>{var d;return((d=u.marker)==null?void 0:d.radius)??a})}else{const f=V2[l]||Zn,u=c.selectAll("path").data(h).join("path").attr("transform",d=>`translate(${o.getPixelForValue(d.x??0)},${s.getPixelForValue(d.y??0)})`).attr("fill",d=>d.color||(r==null?void 0:r.fillColor)||e).attr("stroke",(r==null?void 0:r.lineColor)||this.autoBorderColor()).attr("stroke-width",(r==null?void 0:r.lineWidth)??1).attr("class","katucharts-marker");if(i){const d=rn().type(f).size(0);u.attr("d",d).transition().delay((p,y)=>Ce(y,Kn,Wt,h.length)).duration(bt).ease(pt).attr("d",p=>{var g;const y=((g=p.marker)==null?void 0:g.radius)??a;return rn().type(f).size(Math.PI*y*y)()})}else u.attr("d",d=>{var y;const p=((y=d.marker)==null?void 0:y.radius)??a;return rn().type(f).size(Math.PI*p*p)()})}}renderAreaHoverTargets(t,e){if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=r.getPixelForValue(this.config.threshold??0),s=this.getCurve(),a=Ui().x(h=>i.getPixelForValue(h.x??0)).y0(o).y1(h=>r.getPixelForValue(h.y??0)).curve(s),l=t.filter(h=>h.y!==null&&h.y!==void 0);this.group.append("path").datum(l).attr("d",a).attr("fill","transparent").attr("class","katucharts-hover-targets").style("cursor",this.config.cursor||"pointer").on("mousemove",h=>{const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((y,g)=>{const m=i.getPixelForValue(y.x??0),x=Math.abs(m-f);x<d&&(d=x,u=g)});const p=l[u];this.context.events.emit("point:mouseover",{point:p,index:u,series:this,event:h,plotX:i.getPixelForValue(p.x??0),plotY:r.getPixelForValue(p.y??0)})}).on("mouseout",h=>{this.context.events.emit("point:mouseout",{point:l[0],index:0,series:this,event:h})}).on("click",h=>{var y,g,m,x;const[f]=[h.offsetX-(this.context.plotArea.x||0)];let u=0,d=1/0;l.forEach((v,b)=>{const k=i.getPixelForValue(v.x??0),M=Math.abs(k-f);M<d&&(d=M,u=b)});const p=l[u];this.context.events.emit("point:click",{point:p,index:u,series:this,event:h}),(g=(y=p.events)==null?void 0:y.click)==null||g.call(p,h),(x=(m=this.config.events)==null?void 0:m.click)==null||x.call(this,h)})}renderHoverTargets(t,e){var f,u,d,p,y;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=this.group.append("g").attr("class","katucharts-hover-targets"),s=((d=(u=(f=this.config.marker)==null?void 0:f.states)==null?void 0:u.hover)==null?void 0:d.radius)??6,a=t.filter(g=>g.y!==null&&g.y!==void 0),l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.halo,c=(l==null?void 0:l.size)??10,h=(l==null?void 0:l.opacity)??.25;a.forEach((g,m)=>{const x=i.getPixelForValue(g.x??0),v=r.getPixelForValue(g.y??0),b=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("opacity",0).attr("class","katucharts-halo"),k=o.append("circle").attr("cx",x).attr("cy",v).attr("r",0).attr("fill",g.color||e).attr("stroke",this.autoBorderColor()).attr("stroke-width",1).attr("class","katucharts-hover-marker");o.append("circle").attr("cx",x).attr("cy",v).attr("r",15).attr("fill","transparent").style("cursor",this.config.cursor||"pointer").on("mouseover",C=>{var L,_,$,I,E;b.transition().duration(K).ease(Z).attr("r",c).attr("opacity",h),k.transition().duration(K).ease(Z).attr("r",s),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:C,plotX:x,plotY:v}),(_=(L=g.events)==null?void 0:L.mouseOver)==null||_.call(g,C),(E=(I=($=this.config.point)==null?void 0:$.events)==null?void 0:I.mouseOver)==null||E.call(g,C)}).on("mouseout",C=>{var L,_,$,I,E;b.transition().duration(K).ease(Z).attr("r",0).attr("opacity",0),k.transition().duration(K).ease(Z).attr("r",0),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:C}),(_=(L=g.events)==null?void 0:L.mouseOut)==null||_.call(g,C),(E=(I=($=this.config.point)==null?void 0:$.events)==null?void 0:I.mouseOut)==null||E.call(g,C)}).on("click",C=>{var L,_,$,I,E,P,S;this.context.events.emit("point:click",{point:g,index:m,series:this,event:C}),(_=(L=g.events)==null?void 0:L.click)==null||_.call(g,C),(E=(I=($=this.config.point)==null?void 0:$.events)==null?void 0:I.click)==null||E.call(g,C),(S=(P=this.config.events)==null?void 0:P.click)==null||S.call(this,C),this.handlePointSelect(k,g,m,C)})})}}class G2 extends qf{constructor(){super(...arguments),this.isSpline=!0}}function _c(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}function Y2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+a},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-l}`+(l?`A${l},${l},0,0,1,${n+e-l},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+a}`+(a?`A${a},${a},0,0,1,${n+a},${t}`:`L${n},${t}`)+"Z"}function X2(n,t,e,i,r,o,s){if(e<=0||i<=0)return`M${n},${t}H${n}V${t}Z`;const a=o?Math.min(r,e/2,i/2):0,l=s?Math.min(r,e/2,i/2):0;return`M${n+l},${t}H${n+e-a}`+(a?`A${a},${a},0,0,1,${n+e},${t+a}`:`L${n+e},${t}`)+`V${t+i-a}`+(a?`A${a},${a},0,0,1,${n+e-a},${t+i}`:`L${n+e},${t+i}`)+`H${n+l}`+(l?`A${l},${l},0,0,1,${n},${t+i-l}`:`L${n},${t+i}`)+`V${t+l}`+(l?`A${l},${l},0,0,1,${n+l},${t}`:`L${n},${t}`)+"Z"}class jf extends Ut{constructor(t){super(t),this.isHorizontal=!1}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt}render(){this.group.selectAll(".katucharts-data-labels").remove();const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=u?this.context.stackTotals:void 0,p=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0,C=b.y??0;if(u&&d){const L=d.get(k)||1;return(M+C)/L*100}return M+C},y=b=>{const k=b.x??0,M=(f==null?void 0:f.get(k))||0;if(u&&d){const C=d.get(k)||1;return M/C*100}return M};if(h){const b=this.context.stackTotals;for(const k of o){const M=k.x??0;if(b&&(k.total=b.get(M)||0,k.stackTotal=b.get(M)||0),u&&b){const C=b.get(M)||1;k.percentage=(k.y??0)/C*100}}}const g=this.config.minPointLength??0,m=this.config.crisp!==!1,x=_c(this.config.borderRadius);if(h){const b=this.group.selectAll(".katucharts-column").data(o).join("path").attr("class","katucharts-column").attr("stroke",k=>k.borderColor||this.config.borderColor||"none").attr("stroke-width",k=>k.borderWidth??this.config.borderWidth??0);this.renderStackedBars(b,o,a,l,p,y,r,g,m,!!s,x),this.attachHoverEffects(b,o),this.renderColumnDataLabels(o,a,l,c,p,y),s&&this.emitAfterAnimate(bt+o.length*Wt);return}const v=this.group.selectAll(".katucharts-column").data(o).join("rect").attr("class","katucharts-column").attr("rx",x).attr("stroke",b=>b.borderColor||this.config.borderColor||"none").attr("stroke-width",b=>b.borderWidth??this.config.borderWidth??0);this.isHorizontal?this.renderHorizontalBars(v,o,a,l,c,r,g,m,!!s):this.renderVerticalBars(v,o,a,l,c,r,g,m,!!s),this.attachHoverEffects(v,o),this.renderColumnDataLabels(o,a,l,c,h?p:void 0,h?y:void 0),s&&this.emitAfterAnimate(bt+o.length*Wt)}renderVerticalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("x",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("width",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("y",o).attr("height",0).transition().duration(p).ease(pt).delay((y,g)=>Ce(g,0,Wt,e.length)).attr("y",y=>this.getBarY(y,f,o,a)).attr("height",y=>this.getBarHeight(y,f,o,a))}else t.attr("y",p=>this.getBarY(p,f,o,a)).attr("height",p=>this.getBarHeight(p,f,o,a))}renderHorizontalBars(t,e,i,r,o,s,a,l,c){const{xAxis:h,yAxis:f}=this.context,u=this.config.threshold??0,d=this.config.negativeColor;if(t.attr("y",p=>this.crispCoord(h.getPixelForValue(p.x??0)+r,l)).attr("height",l?Math.round(i):i).attr("fill",(p,y)=>this.getPointColor(p,y,s,d,u)).attr("display",p=>p.y==null?"none":null),c){const p=this.getEntryDuration();t.attr("x",o).attr("width",0).transition().duration(p).ease(pt).delay((y,g)=>Ce(g,0,Wt,e.length)).attr("x",y=>{const g=f.getPixelForValue(y.y??0);return Math.min(o,g)}).attr("width",y=>{const g=Math.abs(f.getPixelForValue(y.y??0)-o);return Math.max(g,a)})}else t.attr("x",p=>Math.min(o,f.getPixelForValue(p.y??0))).attr("width",p=>Math.max(Math.abs(f.getPixelForValue(p.y??0)-o),a))}renderStackedBars(t,e,i,r,o,s,a,l,c,h,f){const u=this.context.totalSeriesOfType||1,d=this.context.indexInType||0,p=d===u-1,y=d===0,g=f??0;if(t.attr("fill",(m,x)=>this.getPointColor(m,x,a)),h){const m=this.getEntryDuration();t.each((x,v,b)=>{const k=rt(b[v]),M=this.computeStackedStartParams(x,e,i,r,s,c),C=this.computeStackedRectParams(x,e,i,r,o,s,c,l);x._rectParams=C,k.attr("d",this.rectParamsToPath(M,g,p,y)).transition().duration(m).ease(pt).delay(Ce(v,0,Wt,e.length)).attrTween("d",()=>{const L=ae(M.x,C.x),_=ae(M.y,C.y),$=ae(M.w,C.w),I=ae(M.h,C.h);return E=>this.rectParamsToPath({x:L(E),y:_(E),w:$(E),h:I(E)},g,p,y)})})}else t.each((m,x,v)=>{const b=this.computeStackedRectParams(m,e,i,r,o,s,c,l);m._rectParams=b,rt(v[x]).attr("d",this.rectParamsToPath(b,g,p,y))})}getBarY(t,e,i,r){const o=e.getPixelForValue(t.y??0),s=Math.min(o,i),a=Math.abs(o-i);return a<r&&(t.y??0)>=(this.config.threshold??0)?s-(r-a):s}getBarHeight(t,e,i,r){return Math.max(Math.abs(e.getPixelForValue(t.y??0)-i),r)}crispCoord(t,e){return e?Math.round(t):t}computeStackedRectParams(t,e,i,r,o,s,a,l){const{xAxis:c,yAxis:h}=this.context;if(this.isHorizontal){const f=this.crispCoord(c.getPixelForValue(t.x??e.indexOf(t))+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:d,y:f,w:p,h:u}}else{const f=this.crispCoord(c.getPixelForValue(t.x??0)+r,a),u=a?Math.round(i):i,d=Math.min(h.getPixelForValue(o(t)),h.getPixelForValue(s(t))),p=Math.max(Math.abs(h.getPixelForValue(o(t))-h.getPixelForValue(s(t))),l);return{x:f,y:d,w:u,h:p}}}computeStackedStartParams(t,e,i,r,o,s){const{xAxis:a,yAxis:l}=this.context;if(this.isHorizontal){const c=this.crispCoord(a.getPixelForValue(t.x??e.indexOf(t))+r,s),h=s?Math.round(i):i;return{x:l.getPixelForValue(o(t)),y:c,w:.1,h}}else{const c=this.crispCoord(a.getPixelForValue(t.x??0)+r,s),h=s?Math.round(i):i,f=l.getPixelForValue(o(t));return{x:c,y:f,w:h,h:.1}}}rectParamsToPath(t,e,i,r){return this.isHorizontal?X2(t.x,t.y,t.w,t.h,e,i,r):Y2(t.x,t.y,t.w,t.h,e,i,r)}animateUpdate(t){if(this.config.stacking){this.updateStackedBars(t);return}const{xAxis:i,yAxis:r,plotArea:o}=this.context,s=this.getColor(),a=this.data,{barWidth:l,barOffset:c,baseline:h}=this.computeBarGeometry(),f=this.config.minPointLength??0,u=this.config.crisp!==!1,d=this.config.threshold??0,p=this.config.negativeColor,y=this.group.selectAll(".katucharts-column").data(a),g=y.enter().append("rect").attr("class","katucharts-column").attr("rx",_c(this.config.borderRadius)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)).attr("display",x=>x.y==null?"none":null).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0);this.isHorizontal||g.attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",h).attr("height",0);const m=g.merge(y);m.attr("display",x=>x.y==null?"none":null),this.isHorizontal?m.transition().duration(t).attr("y",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("height",u?Math.round(l):l).attr("x",x=>Math.min(h,r.getPixelForValue(x.y??0))).attr("width",x=>Math.max(Math.abs(r.getPixelForValue(x.y??0)-h),f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)):m.transition().duration(t).attr("x",x=>this.crispCoord(i.getPixelForValue(x.x??0)+c,u)).attr("width",u?Math.round(l):l).attr("y",x=>this.getBarY(x,r,h,f)).attr("height",x=>this.getBarHeight(x,r,h,f)).attr("fill",(x,v)=>this.getPointColor(x,v,s,p,d)),y.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),a),this.renderColumnDataLabels(a,l,c,h)}updateStackedBars(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data,{barWidth:a,barOffset:l,baseline:c}=this.computeBarGeometry(),h=this.config.stacking,f=this.context.stackOffsets,u=h==="percent",d=this.config.crisp!==!1,p=_c(this.config.borderRadius),y=this.config.minPointLength??0,g=u?this.context.stackTotals:void 0,m=_=>{const $=_.x??0,I=(f==null?void 0:f.get($))||0,E=_.y??0;if(u&&g){const P=g.get($)||1;return(I+E)/P*100}return I+E},x=_=>{const $=_.x??0,I=(f==null?void 0:f.get($))||0;if(u&&g){const E=g.get($)||1;return I/E*100}return I};if(h){const _=this.context.stackTotals;for(const $ of s){const I=$.x??0;if(_&&($.total=_.get(I)||0,$.stackTotal=_.get(I)||0),u&&_){const E=_.get(I)||1;$.percentage=($.y??0)/E*100}}}const v=this.context.totalSeriesOfType||1,b=this.context.indexInType||0,k=b===v-1,M=b===0,C=p,L=this.group.selectAll(".katucharts-column").data(s);L.each((_,$,I)=>{const E=rt(I[$]),P=this.computeStackedRectParams(_,s,a,l,m,x,d,y),S=_._rectParams||P;_._rectParams=P,E.transition().duration(t).attrTween("d",()=>{const w=ae(S.x,P.x),A=ae(S.y,P.y),T=ae(S.w,P.w),R=ae(S.h,P.h);return F=>this.rectParamsToPath({x:w(F),y:A(F),w:T(F),h:R(F)},C,k,M)}).attr("fill",this.getPointColor(_,$,o))}),L.enter().append("path").attr("class","katucharts-column").attr("stroke",_=>_.borderColor||this.config.borderColor||"none").attr("stroke-width",_=>_.borderWidth??this.config.borderWidth??0).attr("fill",(_,$)=>this.getPointColor(_,$,o)).each((_,$,I)=>{const E=this.computeStackedRectParams(_,s,a,l,m,x,d,y);_._rectParams=E,rt(I[$]).attr("d",this.rectParamsToPath(E,C,k,M))}),L.exit().transition().duration(t).attr("opacity",0).remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.attachHoverEffects(this.group.selectAll(".katucharts-column"),s),this.renderColumnDataLabels(s,a,l,c,m,x)}computeBarGeometry(){var y,g;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=!!this.config.stacking,o=r?1:this.config.grouping!==!1&&this.context.totalSeriesOfType||1,s=r?0:this.config.grouping!==!1&&this.context.indexInType||0,a=this.config.groupPadding??.2,l=this.config.pointPadding??.1;let c;if(t instanceof tf)c=t.getBandwidth();else if(this.isHorizontal)c=i.height/Math.max(this.data.length,1);else if(this.config.pointRange!==void 0&&this.config.pointRange>0)c=Math.abs(t.getPixelForValue(this.config.pointRange)-t.getPixelForValue(0));else{const m=this.data;c=m.length>1?Math.abs(t.getPixelForValue(((y=m[1])==null?void 0:y.x)??1)-t.getPixelForValue(((g=m[0])==null?void 0:g.x)??0))*(1-a*2):i.width/Math.max(m.length,1)*(1-a*2)}const h=r?0:a,f=r?0:l;let u;this.config.pointWidth!==void 0?u=this.config.pointWidth:u=c*(1-h*2)/o*(1-f*2),this.config.maxPointWidth!==void 0&&(u=Math.min(u,this.config.maxPointWidth));let d;this.config.centerInCategory?d=-u/2:d=-c*(1-h*2)/2+(u+u*f*2)*s+u*f;const p=e.getPixelForValue(this.config.threshold??0);return{barWidth:u,barOffset:d,baseline:p,groupWidth:c}}getPointColor(t,e,i,r,o){if(t.color)return t.color;if(this.config.colorByPoint){const s=this.config.colors||this.context.colors;return s[e%s.length]}return r&&(t.y??0)<(o??0)?r:i}renderColumnDataLabels(t,e,i,r,o,s){const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const{xAxis:l,yAxis:c}=this.context,h=a.inside??!1;this.renderDataLabels(t,f=>{if(this.isHorizontal){const u=c.getPixelForValue(f.y??0);return h?(u+r)/2:u-5}return l.getPixelForValue(f.x??0)+i+e/2},f=>{if(this.isHorizontal)return l.getPixelForValue(f.x??0)+i+e/2;const u=o?c.getPixelForValue(o(f)):c.getPixelForValue(f.y??0);return h?(u+r)/2:u})}attachHoverEffects(t,e){var h,f,u,d,p,y,g,m;if(this.config.enableMouseTracking===!1)return;const{xAxis:i,yAxis:r}=this.context,o=!!this.config.stacking,s=((f=(h=this.config.states)==null?void 0:h.hover)==null?void 0:f.brightness)??(o?.2:.1),a=(d=(u=this.config.states)==null?void 0:u.hover)==null?void 0:d.color,l=(y=(p=this.config.states)==null?void 0:p.hover)==null?void 0:y.borderColor,c=(m=(g=this.config.states)==null?void 0:g.hover)==null?void 0:m.borderWidth;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(x,v)=>{var E,P,S,w,A,T,R;const b=x.currentTarget,k=b.getAttribute("fill")||"";b.setAttribute("data-orig-fill",k);const C=rt(b).interrupt("hover").transition("hover").duration(K).ease(Z);if(a?C.style("fill",a):C.style("fill",Yf(k,s)),l&&C.style("stroke",l),c!==void 0&&C.style("stroke-width",String(c)),b.style.filter="drop-shadow(0 1px 3px rgba(0,0,0,0.2))",o){const F=this.context.allSeries;if(F)for(const D of F)D.visible&&((E=D.config)!=null&&E.stacking)&&((P=D.group)==null||P.selectAll(".katucharts-column").filter(function(){return this!==b}).interrupt("stackDim").transition("stackDim").duration(ls).ease(Z).attr("opacity",.3));b.setAttribute("data-orig-stroke",b.getAttribute("stroke")||""),b.setAttribute("data-orig-stroke-width",b.getAttribute("stroke-width")||""),C.style("stroke","#ffffff").style("stroke-width","2")}const L=e.indexOf(v),_=i.getPixelForValue(v.x??0),$=r.getPixelForValue(v.y??0),I=this.context.inverted;this.context.events.emit("point:mouseover",{point:v,index:L,series:this,event:x,plotX:I?$:_,plotY:I?_:$}),(w=(S=v.events)==null?void 0:S.mouseOver)==null||w.call(v,x),(R=(T=(A=this.config.point)==null?void 0:A.events)==null?void 0:T.mouseOver)==null||R.call(v,x)}).on("mouseout",(x,v)=>{var _,$,I,E,P,S,w;const b=x.currentTarget,k=b.getAttribute("data-orig-fill")||"",C=rt(b).interrupt("hover").transition("hover").duration(K).ease(Z);if(C.style("fill",k),b.style.filter="",o){const A=this.context.allSeries;if(A)for(const T of A)T.visible&&((_=T.config)!=null&&_.stacking)&&(($=T.group)==null||$.selectAll(".katucharts-column").interrupt("stackDim").transition("stackDim").duration(ls).ease(Z).attr("opacity",1));C.style("stroke",b.getAttribute("data-orig-stroke")||"").style("stroke-width",b.getAttribute("data-orig-stroke-width")||"")}else C.style("stroke","").style("stroke-width","");C.on("end",()=>{b.matches(":hover")||(b.style.fill="")});const L=e.indexOf(v);this.context.events.emit("point:mouseout",{point:v,index:L,series:this,event:x}),(E=(I=v.events)==null?void 0:I.mouseOut)==null||E.call(v,x),(w=(S=(P=this.config.point)==null?void 0:P.events)==null?void 0:S.mouseOut)==null||w.call(v,x)}).on("click",(x,v)=>{var C,L,_,$,I,E,P;const b=e.indexOf(v);this.context.events.emit("point:click",{point:v,index:b,series:this,event:x}),(L=(C=v.events)==null?void 0:C.click)==null||L.call(v,x),(I=($=(_=this.config.point)==null?void 0:_.events)==null?void 0:$.click)==null||I.call(v,x),(P=(E=this.config.events)==null?void 0:E.click)==null||P.call(this,x);const k=x.currentTarget,M=rt(k);this.handlePointSelect(M,v,b,x)})}}class U2 extends jf{constructor(){super(...arguments),this.isHorizontal=!0}}const Zf={circle:Zn,square:vc,diamond:bc,triangle:kc,"triangle-down":Mc,cross:xc},Kf=["circle","diamond","square","triangle","triangle-down"];class q2 extends Ut{constructor(t){t.clip=!1,super(t),this.cachedPositions=[]}resolveMarkerSymbol(){var r;if((r=this.config.marker)!=null&&r.symbol)return this.config.marker.symbol;const e=(this.context.allSeries||[]).filter(o=>o.config._internalType==="scatter");if(e.length<=1)return"circle";const i=e.indexOf(this);return Kf[i%Kf.length]}getLegendSymbolShape(){return this.resolveMarkerSymbol()}render(){var f,u,d,p;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(y=>y.y!==null&&y.y!==void 0),s=((f=this.config.marker)==null?void 0:f.radius)??4,a=((p=(d=(u=this.config.marker)==null?void 0:u.states)==null?void 0:d.hover)==null?void 0:p.radius)??s+3,l=this.context.animate,c=this.resolveMarkerSymbol(),h=this.config.jitter;this.cachedPositions=o.map(y=>({cx:this.applyJitter(t.getPixelForValue(y.x??0),i.width,h==null?void 0:h.x),cy:this.applyJitter(e.getPixelForValue(y.y??0),i.height,h==null?void 0:h.y)})),c==="circle"?this.renderCircles(o,r,s,a,!!l):this.renderSymbols(o,r,s,a,c,!!l),this.renderDataLabels(o,(y,g)=>this.cachedPositions[g].cx,(y,g)=>this.cachedPositions[g].cy),l&&this.emitAfterAnimate(bt+o.length*Wt)}animateUpdate(t){var f;const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=((f=this.config.marker)==null?void 0:f.radius)??4,l=this.config.jitter;this.cachedPositions=s.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)}));const c=this.resolveMarkerSymbol();if(c==="circle"){const u=this.group.selectAll(".katucharts-scatter-point").data(s);u.exit().transition().duration(t).attr("r",0).remove(),u.enter().append("circle").attr("class","katucharts-scatter-point").attr("r",0).attr("fill",p=>this.getPointFill(p,o)).attr("stroke",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineColor)??((g=this.config.marker)==null?void 0:g.lineColor)??o}).attr("stroke-width",p=>{var y,g;return((y=p.marker)==null?void 0:y.lineWidth)??((g=this.config.marker)==null?void 0:g.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(u).transition().duration(t).attr("cx",(p,y)=>this.cachedPositions[y].cx).attr("cy",(p,y)=>this.cachedPositions[y].cy).attr("r",p=>{var y;return((y=p.marker)==null?void 0:y.radius)??a})}else{const u=Zf[c]||Zn,d=this.group.selectAll(".katucharts-scatter-point").data(s);d.exit().transition().duration(t).attr("opacity",0).remove(),d.enter().append("path").attr("class","katucharts-scatter-point").attr("fill",y=>this.getPointFill(y,o)).attr("stroke",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineColor)??((m=this.config.marker)==null?void 0:m.lineColor)??o}).attr("stroke-width",y=>{var g,m;return((g=y.marker)==null?void 0:g.lineWidth)??((m=this.config.marker)==null?void 0:m.lineWidth)??1}).attr("opacity",this.config.opacity??1).merge(d).transition().duration(t).attr("transform",(y,g)=>`translate(${this.cachedPositions[g].cx},${this.cachedPositions[g].cy})`).attr("d",y=>{var m;const g=((m=y.marker)==null?void 0:m.radius)??a;return rn().type(u).size(Math.PI*g*g)()})}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(s,(u,d)=>this.cachedPositions[d].cx,(u,d)=>this.cachedPositions[d].cy)}getPointFill(t,e){var i,r;return t.color?t.color:(i=t.marker)!=null&&i.fillColor?t.marker.fillColor:(r=this.config.marker)!=null&&r.fillColor?this.config.marker.fillColor:this.config.negativeColor&&(t.y??0)<(this.config.threshold??0)?this.config.negativeColor:e}getEntryDuration(){return(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt}renderCircles(t,e,i,r,o){const s=this.group.selectAll(".katucharts-scatter-point").data(t).join("circle").attr("class","katucharts-scatter-point").attr("cx",(a,l)=>this.cachedPositions[l].cx).attr("cy",(a,l)=>this.cachedPositions[l].cy).attr("fill",a=>this.getPointFill(a,e)).attr("stroke",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineColor)??((c=this.config.marker)==null?void 0:c.lineColor)??e}).attr("stroke-width",a=>{var l,c;return((l=a.marker)==null?void 0:l.lineWidth)??((c=this.config.marker)==null?void 0:c.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");o?s.attr("r",0).transition().duration(this.getEntryDuration()).ease(pt).delay((a,l)=>Ce(l,0,Wt,t.length)).attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}):s.attr("r",a=>{var l;return((l=a.marker)==null?void 0:l.radius)??i}),this.attachScatterEvents(s,t,i,r,e,"circle")}renderSymbols(t,e,i,r,o,s){const a=Zf[o]||Zn,l=this.group.selectAll(".katucharts-scatter-point").data(t).join("path").attr("class","katucharts-scatter-point").attr("transform",(h,f)=>`translate(${this.cachedPositions[f].cx},${this.cachedPositions[f].cy})`).attr("fill",h=>this.getPointFill(h,e)).attr("stroke",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineColor)??((u=this.config.marker)==null?void 0:u.lineColor)??e}).attr("stroke-width",h=>{var f,u;return((f=h.marker)==null?void 0:f.lineWidth)??((u=this.config.marker)==null?void 0:u.lineWidth)??1}).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer"),c=h=>{var u;const f=((u=h.marker)==null?void 0:u.radius)??i;return rn().type(a).size(Math.PI*f*f)()};if(s){const h=rn().type(a).size(0);l.attr("d",h).transition().duration(this.getEntryDuration()).ease(pt).delay((f,u)=>Ce(u,0,Wt,t.length)).attr("d",c)}else l.attr("d",c);this.attachScatterEvents(l,t,i,r,e,"symbol",a)}attachScatterEvents(t,e,i,r,o,s,a){var y,g,m,x,v;if(this.config.enableMouseTracking===!1)return;const l=(y=this.config.states)==null?void 0:y.hover,c=(g=l==null?void 0:l.marker)==null?void 0:g.fillColor,h=(v=(x=(m=this.config.marker)==null?void 0:m.states)==null?void 0:x.hover)==null?void 0:v.lineWidth,f=l==null?void 0:l.halo,u=(f==null?void 0:f.size)??10,d=(f==null?void 0:f.opacity)??.25,p=e.map((b,k)=>{var M;return this.group.insert("circle",".katucharts-scatter-point").attr("cx",this.cachedPositions[k].cx).attr("cy",this.cachedPositions[k].cy).attr("r",0).attr("fill",b.color||((M=this.config.marker)==null?void 0:M.fillColor)||o).attr("opacity",0).attr("class","katucharts-halo")});t.on("mouseover",(b,k)=>{var E,P,S,w,A,T,R,F,D,z,B,H,J,X;const M=b.currentTarget,C=e.indexOf(k);C>=0&&p[C]&&p[C].transition("halo").duration(K).ease(Z).attr("r",u).attr("opacity",d);const L=((E=k.marker)==null?void 0:E.radius)??i,_=((w=(S=(P=k.marker)==null?void 0:P.states)==null?void 0:S.hover)==null?void 0:w.radius)??((R=(T=(A=this.config.marker)==null?void 0:A.states)==null?void 0:T.hover)==null?void 0:R.radius)??L+3,I=rt(M).interrupt("hover").transition("hover").duration(K).ease(Z);if(s==="circle")I.attr("r",_);else if(a){const j=Math.PI*_*_;I.attr("d",rn().type(a).size(j)())}M.style.filter="drop-shadow(0 1px 4px rgba(0,0,0,0.3))",c&&I.style("fill",c),h!==void 0&&I.style("stroke-width",String(h)),this.context.events.emit("point:mouseover",{point:k,index:C,series:this,event:b,plotX:((F=this.cachedPositions[C])==null?void 0:F.cx)??0,plotY:((D=this.cachedPositions[C])==null?void 0:D.cy)??0}),(B=(z=k.events)==null?void 0:z.mouseOver)==null||B.call(k,b),(X=(J=(H=this.config.point)==null?void 0:H.events)==null?void 0:J.mouseOver)==null||X.call(k,b)}).on("mouseout",(b,k)=>{var I,E,P,S,w,A;const M=b.currentTarget,C=e.indexOf(k);C>=0&&p[C]&&p[C].transition("halo").duration(K).ease(Z).attr("r",0).attr("opacity",0);const L=((I=k.marker)==null?void 0:I.radius)??i,$=rt(M).interrupt("hover").transition("hover").duration(K).ease(Z);if(s==="circle")$.attr("r",L);else if(a){const T=Math.PI*L*L;$.attr("d",rn().type(a).size(T)())}M.style.filter="",$.style("fill",null).style("stroke-width",null),this.context.events.emit("point:mouseout",{point:k,index:C,series:this,event:b}),(P=(E=k.events)==null?void 0:E.mouseOut)==null||P.call(k,b),(A=(w=(S=this.config.point)==null?void 0:S.events)==null?void 0:w.mouseOut)==null||A.call(k,b)}).on("click",(b,k)=>{var C,L,_,$,I,E,P;const M=e.indexOf(k);this.context.events.emit("point:click",{point:k,index:M,series:this,event:b}),(L=(C=k.events)==null?void 0:C.click)==null||L.call(k,b),(I=($=(_=this.config.point)==null?void 0:_.events)==null?void 0:$.click)==null||I.call(k,b),(P=(E=this.config.events)==null?void 0:E.click)==null||P.call(this,b),this.handlePointSelect(rt(b.currentTarget),k,M,b)})}}class j2 extends Ut{constructor(t){t.clip=!1,super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data.filter(f=>f.y!==null&&f.y!==void 0),s=this.context.animate,a=this.config.jitter,l=this.filterByZThreshold(o);this.buildSizeScale(l);const c=l.map(f=>({cx:this.applyJitter(t.getPixelForValue(f.x??0),i.width,a==null?void 0:a.x),cy:this.applyJitter(e.getPixelForValue(f.y??0),i.height,a==null?void 0:a.y)})),h=this.group.selectAll(".katucharts-bubble").data(l).join("circle").attr("class","katucharts-bubble").attr("cx",(f,u)=>c[u].cx).attr("cy",(f,u)=>c[u].cy).attr("fill",(f,u)=>this.getBubbleFill(f,u,r)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(f,u)=>this.config.lineColor||this.getBubbleFill(f,u,r)).attr("stroke-width",this.config.lineWidth??1).style("cursor",this.config.cursor||"pointer");if(s){const u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;h.attr("r",0).transition().duration(u).ease(pt).delay((d,p)=>Ce(p,0,Wt,l.length)).attr("r",d=>this.sizeScale(this.getZValue(d)))}else h.attr("r",f=>this.sizeScale(this.getZValue(f)));this.attachBubbleEvents(h,l,c,r),this.renderDataLabels(l,(f,u)=>c[u].cx,(f,u)=>c[u].cy),s&&this.emitAfterAnimate(bt+l.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i,plotArea:r}=this.context,o=this.getColor(),s=this.data.filter(u=>u.y!==null&&u.y!==void 0),a=this.filterByZThreshold(s),l=this.config.jitter;this.buildSizeScale(a);const c=a.map(u=>({cx:this.applyJitter(e.getPixelForValue(u.x??0),r.width,l==null?void 0:l.x),cy:this.applyJitter(i.getPixelForValue(u.y??0),r.height,l==null?void 0:l.y)})),h=this.group.selectAll(".katucharts-bubble").data(a);h.exit().transition().duration(t).attr("r",0).remove(),h.enter().append("circle").attr("class","katucharts-bubble").attr("r",0).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)).attr("fill-opacity",this.config.fillOpacity??.5).attr("stroke",(u,d)=>this.config.lineColor||this.getBubbleFill(u,d,o)).attr("stroke-width",this.config.lineWidth??1).merge(h).transition().duration(t).attr("cx",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0}).attr("cy",(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0}).attr("r",u=>this.sizeScale(this.getZValue(u))).attr("fill",(u,d)=>this.getBubbleFill(u,d,o)),this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(a,(u,d)=>{var p;return((p=c[d])==null?void 0:p.cx)??0},(u,d)=>{var p;return((p=c[d])==null?void 0:p.cy)??0})}filterByZThreshold(t){const e=this.config.displayNegative!==!1,i=this.config.zThreshold??0;return e?t:t.filter(r=>(r.z??0)>=i)}getZValue(t){const e=t.z??1;return this.config.sizeByAbsoluteValue?Math.abs(e):e}buildSizeScale(t){const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e,0),r=this.config.zMax??Math.max(...e,1),o=this.parseSize(this.config.minSize,8),s=this.parseSize(this.config.maxSize,30);(this.config.sizeBy||"area")==="width"?this.sizeScale=we().domain([i,r]).range([o,s]).clamp(!0):this.sizeScale=Sx().domain([i,r]).range([o,s]).clamp(!0)}parseSize(t,e){if(t===void 0)return e;if(typeof t=="number")return t;if(typeof t=="string"&&t.endsWith("%")){const i=parseFloat(t)/100;return Math.min(this.context.plotArea.width,this.context.plotArea.height)*i/2}return parseFloat(t)||e}getBubbleFill(t,e,i){if(t.color)return t.color;if(this.config.negativeColor&&(t.z??0)<(this.config.zThreshold??0))return this.config.negativeColor;if(this.config.colorByPoint){const r=this.config.colors||this.context.colors;return r[e%r.length]}return i}attachBubbleEvents(t,e,i,r){var s,a;if(this.config.enableMouseTracking===!1)return;(a=(s=this.config.states)==null?void 0:s.hover)==null||a.brightness;const o=this.config.fillOpacity??.5;t.on("mouseover",(l,c)=>{var d,p,y,g,m,x,v;const h=l.currentTarget,f=this.sizeScale(this.getZValue(c));rt(h).interrupt("hover").transition("hover").duration(K).ease(Z).attr("r",f+4).attr("fill-opacity",Math.min(o+.3,1)),h.style.filter="drop-shadow(0 2px 6px rgba(0,0,0,0.3))";const u=e.indexOf(c);this.context.events.emit("point:mouseover",{point:c,index:u,series:this,event:l,plotX:((d=i[u])==null?void 0:d.cx)??0,plotY:((p=i[u])==null?void 0:p.cy)??0}),(g=(y=c.events)==null?void 0:y.mouseOver)==null||g.call(c,l),(v=(x=(m=this.config.point)==null?void 0:m.events)==null?void 0:x.mouseOver)==null||v.call(c,l)}).on("mouseout",(l,c)=>{var u,d,p,y,g;const h=l.currentTarget;rt(h).interrupt("hover").transition("hover").duration(K).ease(Z).attr("r",this.sizeScale(this.getZValue(c))).attr("fill-opacity",o),h.style.filter="";const f=e.indexOf(c);this.context.events.emit("point:mouseout",{point:c,index:f,series:this,event:l}),(d=(u=c.events)==null?void 0:u.mouseOut)==null||d.call(c,l),(g=(y=(p=this.config.point)==null?void 0:p.events)==null?void 0:y.mouseOut)==null||g.call(c,l)}).on("click",(l,c)=>{var f,u,d,p,y,g,m;const h=e.indexOf(c);this.context.events.emit("point:click",{point:c,index:h,series:this,event:l}),(u=(f=c.events)==null?void 0:f.click)==null||u.call(c,l),(y=(p=(d=this.config.point)==null?void 0:d.events)==null?void 0:p.click)==null||y.call(c,l),(m=(g=this.config.events)==null?void 0:g.click)==null||m.call(this,l),this.handlePointSelect(rt(l.currentTarget),c,h,l)})}getBubbleLegendInfo(){const t=this.filterByZThreshold(this.data.filter(l=>l.y!==null&&l.y!==void 0));if(t.length===0)return null;this.buildSizeScale(t);const e=t.map(l=>this.getZValue(l)),i=this.config.zMin??Math.min(...e),r=this.config.zMax??Math.max(...e);if(!isFinite(i)||!isFinite(r)||r<=0)return null;const o=[r,(i+r)/2,i],s=new Set,a=o.map(l=>Math.round(l)).filter(l=>l>0&&!s.has(l)&&(s.add(l),!0)).map(l=>({value:l,radius:this.sizeScale(l)}));return a.length===0?null:{sizeBy:this.config.sizeBy||"area",color:this.getColor(),ranges:a}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const l of this.data)l.x!==void 0&&l.x!==null&&(t=Math.min(t,l.x),e=Math.max(e,l.x)),l.y!==void 0&&l.y!==null&&(i=Math.min(i,l.y),r=Math.max(r,l.y));const o=e-t||1,s=r-i||1,a=.08;return t-=o*a,e+=o*a,i-=s*a,r+=s*a,{xMin:t,xMax:e,yMin:i,yMax:r}}}class Jf extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1}dataLabelConfigs(){const t=this.config.dataLabels;return t?(Array.isArray(t)?t:[t]).filter(i=>i&&i.enabled!==!1):[]}init(t){const e=this.dataLabelConfigs().length>0;if(e&&(this.config.clip=!1),super.init(t),e){const i=this.group.select(function(){return this.ownerSVGElement});i.empty()||i.style("overflow","visible")}}render(){var G,N,Y,O,ct,it,ft,dt,at,ot;const{plotArea:t,colors:e}=this.context,i=this.config.ignoreHiddenPoint!==!1,r=this.data.filter(q=>q.y!==null&&q.y!==void 0&&(q.y??0)>0),o=i?r.filter(q=>q.visible!==!1):r,s=this.context.animate,a=this.dataLabelConfigs().filter(q=>(q.distance??30)>=0),l=a.length>0,c=l?Math.max(...a.map(q=>(q.distance??30)+10)):0,h=this.config.center||["50%","50%"],f=this.resolvePercent(h[0],t.width),u=this.resolvePercent(h[1],t.height),d=t.width-c*2,p=t.height-c,y=Math.min(d,p),g=Math.min(t.width,t.height),m=this.config.size!==void 0&&this.config.size!==null,x=m?this.resolvePercent(this.config.size,g):y,v=this.config.minSize?this.resolvePercent(this.config.minSize,g):0,k=Math.max(l?Math.min(x,y):m?x:g,v)/2,M=this.resolvePercent(this.config.innerSize||0,k*2)/2,C=this.config.depth??0,L=(this.config.startAngle??0)*Math.PI/180,_=this.config.endAngle!==void 0?this.config.endAngle*Math.PI/180:L+2*Math.PI,$=o.reduce((q,st)=>q+(st.y??0),0),I=this.config.fillColor;if($===0&&I){const q=this.group.append("g").attr("transform",`translate(${f},${u})`),st=_e().innerRadius(M).outerRadius(k).startAngle(L).endAngle(_);q.append("path").attr("d",st({})).attr("fill",I);return}const E=v2().value(q=>q.y??0).sort(null).startAngle(L).endAngle(_),P=this.resolveBorderRadius(this.config.borderRadius),S=_e().innerRadius(M).outerRadius(k).cornerRadius(P),w=this.config.slicedOffset??10,A=_e().innerRadius(M).outerRadius(k+w*.4).cornerRadius(P),T=E(o),R=_-L;for(const q of T)q.data.percentage=(q.endAngle-q.startAngle)/R*100,q.data.total=$;const F=this.group.append("g").attr("transform",`translate(${f},${u})`);C>0&&this.render3DEffect(F,T,M,k,C);const D=this.config.allowPointSelect===!0;(N=(G=this.config.states)==null?void 0:G.hover)==null||N.brightness;const z=(O=(Y=this.config.states)==null?void 0:Y.select)==null?void 0:O.color,B=(it=(ct=this.config.states)==null?void 0:ct.select)==null?void 0:it.borderColor,H=(dt=(ft=this.config.states)==null?void 0:ft.select)==null?void 0:dt.borderWidth,J=((ot=(at=this.config.states)==null?void 0:at.inactive)==null?void 0:ot.opacity)??.4,X=(q,st)=>q.data.color?q.data.color:this.config.colors?this.config.colors[st%this.config.colors.length]:e[st%e.length],j=q=>{const st=(q.startAngle+q.endAngle)/2,kt=w*Math.sin(st),Et=-w*Math.cos(st);return`translate(${kt},${Et})`},W=this,U=F.selectAll(".katucharts-pie-slice").data(T).join("path").attr("class","katucharts-pie-slice").attr("fill",(q,st)=>X(q,st)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("opacity",this.config.opacity??1).style("cursor",this.config.cursor||"pointer");U.each(function(q,st){const kt=rt(this);(q.data.sliced||W.selectedIndices.has(st))&&kt.attr("transform",j(q))}),s?U.each(function(q,st){const kt=rt(this),Et={startAngle:q.startAngle,endAngle:q.startAngle},Mt=ae(Et,q);kt.transition().duration(bt).ease(pt).delay(Gf+st*Wt).attrTween("d",()=>Ct=>S(Mt(Ct)))}):U.attr("d",S),this.config.enableMouseTracking!==!1&&U.on("mouseover",function(q,st){var Gt,Ht,Nt,Kt,ie;const kt=rt(this),Et=T.indexOf(st);W.selectedIndices.has(Et)||kt.transition("arc").duration(K).ease(Z).attr("d",A(st)),kt.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),U.interrupt("highlight"),U.attr("opacity",W.config.opacity??1),U.filter(Lt=>Lt!==st).transition("highlight").duration(K).ease(Z).attr("opacity",J);const Ct=S.centroid(st);W.context.events.emit("point:mouseover",{point:st.data,index:Et,series:W,event:q,plotX:f+Ct[0],plotY:u+Ct[1]}),(Ht=(Gt=st.data.events)==null?void 0:Gt.mouseOver)==null||Ht.call(st.data,q),(ie=(Kt=(Nt=W.config.point)==null?void 0:Nt.events)==null?void 0:Kt.mouseOver)==null||ie.call(st.data,q)}).on("mouseout",function(q,st){var Ct,Gt,Ht,Nt,Kt;const kt=rt(this),Et=T.indexOf(st);W.selectedIndices.has(Et)||kt.transition("arc").duration(K).ease(Z).attr("d",S(st)),kt.style("filter",""),U.interrupt("highlight"),U.transition("highlight").duration(K).ease(Z).attr("opacity",W.config.opacity??1),W.context.events.emit("point:mouseout",{point:st.data,index:Et,series:W,event:q}),(Gt=(Ct=st.data.events)==null?void 0:Ct.mouseOut)==null||Gt.call(st.data,q),(Kt=(Nt=(Ht=W.config.point)==null?void 0:Ht.events)==null?void 0:Nt.mouseOut)==null||Kt.call(st.data,q)}).on("click",function(q,st){var Et,Mt,Ct,Gt,Ht,Nt,Kt,ie,Lt,Jt,de,je,pe,Sn;const kt=T.indexOf(st);D&&(W.selectedIndices.has(kt)?(W.selectedIndices.delete(kt),rt(this).transition("slice").duration(K).ease(Z).attr("transform",""),(Mt=(Et=st.data.events)==null?void 0:Et.unselect)==null||Mt.call(st.data,q),(Ht=(Gt=(Ct=W.config.point)==null?void 0:Ct.events)==null?void 0:Gt.unselect)==null||Ht.call(st.data,q)):(W.selectedIndices.add(kt),rt(this).transition("slice").duration(K).ease(Z).attr("transform",j(st)),(Kt=(Nt=st.data.events)==null?void 0:Nt.select)==null||Kt.call(st.data,q),(Jt=(Lt=(ie=W.config.point)==null?void 0:ie.events)==null?void 0:Lt.select)==null||Jt.call(st.data,q)),(z||B||H!==void 0)&&U.each(function(He,Ve){const hn=rt(this);W.selectedIndices.has(Ve)?(z&&hn.attr("fill",z),B&&hn.attr("stroke",B),H!==void 0&&hn.attr("stroke-width",H)):(hn.attr("fill",X(He,Ve)),hn.attr("stroke",W.config.borderColor||W.autoBorderColor()),hn.attr("stroke-width",W.config.borderWidth??1))})),W.context.events.emit("point:click",{point:st.data,index:kt,series:W,event:q}),(je=(de=st.data.events)==null?void 0:de.click)==null||je.call(st.data,q),(Sn=(pe=W.config.events)==null?void 0:pe.click)==null||Sn.call(W,q)});for(const q of this.dataLabelConfigs())this.renderPieLabels(F,T,S,k,_-L,q);s&&this.emitAfterAnimate(bt+T.length*Wt)}renderPieLabels(t,e,i,r,o,s){var L,_;if(!s||s.enabled===!1)return;const a=this.context.plotArea.width,l=this.context.plotArea.height,c=a/2,h=l/2,f=s.distance??30,u=s.connectorWidth??1,d=s.connectorColor||"#999",p=s.connectorPadding??5;s.softConnector;const y=((L=s.style)==null?void 0:L.fontSize)||wt,g=s.color||((_=s.style)==null?void 0:_.color)||ye,m=s.alignTo,x=f<0,v=xe(y),b=v*1.4,k=[],{colors:M}=this.context;if(e.forEach(($,I)=>{const E=$.data.percentage,P=i.centroid($),S=($.startAngle+$.endAngle)/2,w=$.data.color||(this.config.colors?this.config.colors[I%this.config.colors.length]:M[I%M.length]),A=r+f;let T=A*Math.sin(S),R=-A*Math.cos(S);(m==="plotEdges"||m==="connectors")&&(T=S<Math.PI?c-5:-(c-5));let F,D;const z={...$.data,color:w};s.formatter?F=s.formatter.call({point:z,series:{name:this.config.name},x:$.data.x,y:$.data.y,percentage:E}):s.format?F=Zt(s.format,{point:z,series:{name:this.config.name}}):F=$.data.name||String($.data.y);const B=/(?:^|[\s;"'])color\s*:\s*([^;"'>]+)/i.exec(F);B&&(D=Qu(B[1],w)),F=fe(F),k.push({lx:T,ly:R,text:F,midAngle:S,centroid:P,percentage:E,data:$.data,visible:!0,color:w,inlineColor:D})}),!x&&!s.allowOverlap){const $=k.filter(P=>P.midAngle<Math.PI),I=k.filter(P=>P.midAngle>=Math.PI);this.distribute($,b,h,c,y),this.distribute(I,b,h,c,y);const E=r+f;for(const P of k){if(!P.visible)continue;const S=Math.max(-E,Math.min(E,P.ly)),w=Math.sqrt(Math.max(0,E*E-S*S)),A=P.midAngle<Math.PI;P.lx=A?Math.max(w,r*.3):-Math.max(w,r*.3)}}else if(x&&!s.allowOverlap){const $=[],I=k.filter(E=>E.visible).sort((E,P)=>P.percentage-E.percentage);for(const E of I){const P=Je(E.text,v),S=v*1.1,w=E.centroid[0],A=E.centroid[1],T={l:w-P/2,r:w+P/2,t:A-S/2,b:A+S/2};if($.some(F=>T.l<F.r&&T.r>F.l&&T.t<F.b&&T.b>F.t)){E.visible=!1;continue}$.push(T)}}const C=t.append("g").attr("class","katucharts-pie-labels");k.forEach($=>{if(!$.visible)return;const{lx:I,ly:E,text:P,midAngle:S,centroid:w,color:A,inlineColor:T}=$,R=S<Math.PI,F=A||d;if(u>0&&f>=0){const B=r+p,H=B*Math.sin(S),J=-B*Math.cos(S),X=s.connectorShape||"fixedOffset";if(X==="straight")C.append("line").attr("class","katucharts-pie-connector").attr("x1",w[0]).attr("y1",w[1]).attr("x2",I).attr("y2",E).attr("stroke",F).attr("stroke-width",u);else if(X==="crookedLine"){const j=s.crookDistance??"70%",W=typeof j=="string"?parseFloat(j)/100:j/f,U=r+f*W,G=U*Math.sin(S),N=-U*Math.cos(S);C.append("path").attr("class","katucharts-pie-connector").attr("d",`M${w[0]},${w[1]}L${G},${N}L${I},${E}`).attr("fill","none").attr("stroke",F).attr("stroke-width",u)}else if(typeof X=="function"){const j=X({connectorPosition:{from:w,to:[I,E]},labelDistance:f,labelPosition:[I,E]});C.append("path").attr("class","katucharts-pie-connector").attr("d",j).attr("fill","none").attr("stroke",F).attr("stroke-width",u)}else{const j=r+f*.5,W=j*Math.sin(S),U=-j*Math.cos(S);C.append("path").attr("class","katucharts-pie-connector").attr("d",`M${H},${J}L${W},${U}L${I},${E}`).attr("fill","none").attr("stroke",F).attr("stroke-width",u)}}const D=C.append("text").attr("x",(x?w[0]:I)+(s.x??0)).attr("y",(x?w[1]:E)+(s.y??0)).attr("text-anchor",x?"middle":R?"start":"end").attr("dominant-baseline","middle").attr("font-size",y).attr("fill",T||g).style("pointer-events","none").text(P),z=s.style||{};z.fontWeight&&D.attr("font-weight",z.fontWeight),z.fontFamily&&D.attr("font-family",z.fontFamily),z.textOutline&&D.style("text-shadow",z.textOutline)})}distribute(t,e,i,r,o){const s=t.filter(u=>u.visible);if(s.length<=1)return;const a=-(i-5),c=i-5-a,h=s.map(u=>({target:u.ly-a,size:e,rank:u.percentage,pos:0,removed:!1,label:u})),f=e*3;this.distributeBoxes(h,c,f);for(const u of h)u.removed?u.label.visible=!1:u.label.ly=a+u.pos+e/2}distributeBoxes(t,e,i){const r=t.filter(s=>!s.removed);if(r.length===0)return;let o=r.reduce((s,a)=>s+a.size,0);if(o>e){const s=[...r].sort((l,c)=>l.rank-c.rank);let a=0;for(;o>e&&a<s.length;)s[a].removed=!0,o-=s[a].size,a++}for(let s=0;s<=t.length;s++){const a=r.filter(c=>!c.removed);if(a.length<=1)break;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}let l=null;for(const c of a)Math.abs(c.pos-c.target)<=i||(!l||c.rank<l.rank)&&(l=c);if(!l)break;l.removed=!0}}render3DEffect(t,e,i,r,o){const{colors:s}=this.context,a=t.insert("g",":first-child").attr("class","katucharts-pie-3d");for(const l of e){const c=e.indexOf(l),h=l.data.color||(this.config.colors?this.config.colors[c%this.config.colors.length]:s[c%s.length]),f=l.startAngle-Math.PI/2,u=l.endAngle-Math.PI/2;if(f>0&&u>0||f<0&&u<0&&f<-Math.PI&&u<-Math.PI)continue;const d=_e().innerRadius(i).outerRadius(r).startAngle(l.startAngle).endAngle(l.endAngle);a.append("path").attr("d",d({})).attr("fill",h).attr("opacity",.7).attr("transform",`translate(0,${o})`)}}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class Qf extends Ut{constructor(t){super(t)}render(){var p,y;const{plotArea:t,colors:e}=this.context,i=this.data.filter(g=>g.y!==null&&g.y!==void 0),r=this.context.animate,o=t.height*.8,s=o/i.length,a=Math.max(...i.map(g=>g.y??0),1),l=t.width/2,c=t.width*.7,h=c*.15,f=(t.height-o)/2,u=((y=(p=this.config.states)==null?void 0:p.inactive)==null?void 0:y.opacity)??.4,d=[];i.forEach((g,m)=>{var $,I,E;const x=(g.y??0)/a,v=m<i.length-1?(i[m+1].y??0)/a:x*.5,b=h+(c-h)*x,k=h+(c-h)*v,M=f+m*s,C=[`M ${l-b/2} ${M}`,`L ${l+b/2} ${M}`,`L ${l+k/2} ${M+s}`,`L ${l-k/2} ${M+s}`,"Z"].join(" "),L=g.color||e[m%e.length],_=this.group.append("path").attr("d",C).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("class","katucharts-funnel-segment").style("cursor",this.config.cursor||"pointer");if(d.push(_),r?_.attr("fill",L).attr("opacity",0).transition().duration(bt).ease(pt).delay(Ce(m,0,Wt,i.length)).attr("opacity",1):_.attr("fill",L),($=this.config.dataLabels)!=null&&$.enabled){const P=this.config.dataLabels,S=((I=P.style)==null?void 0:I.fontSize)||wt,w=P.color||((E=P.style)==null?void 0:E.color)||ye;let A;P.formatter?A=P.formatter.call({point:g,series:{name:this.config.name},x:g.x,y:g.y}):P.format?A=fe(Zt(P.format,{point:g,series:{name:this.config.name}})):A=g.name||String(g.y),this.group.append("text").attr("class","katucharts-funnel-label").attr("x",l+(P.x??0)).attr("y",M+s/2+(P.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",S).attr("fill",w).style("pointer-events","none").text(A)}this.config.enableMouseTracking!==!1&&_.on("mouseover",P=>{var S,w;_.transition("move").duration(K).ease(Z).attr("transform","translate(0, -3)").style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.attr("opacity",1)),d.forEach((A,T)=>{T!==m&&A.transition("highlight").duration(K).ease(Z).attr("opacity",u)}),this.context.events.emit("point:mouseover",{point:g,index:m,series:this,event:P,plotX:l,plotY:M+s/2}),(w=(S=g.events)==null?void 0:S.mouseOver)==null||w.call(g,P)}).on("mouseout",P=>{var S,w;_.transition("move").duration(K).ease(Z).attr("transform","").style("filter",""),d.forEach(A=>A.interrupt("highlight")),d.forEach(A=>A.transition("highlight").duration(K).ease(Z).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:g,index:m,series:this,event:P}),(w=(S=g.events)==null?void 0:S.mouseOut)==null||w.call(g,P)}).on("click",P=>{var S,w,A,T;this.context.events.emit("point:click",{point:g,index:m,series:this,event:P}),(w=(S=g.events)==null?void 0:S.click)==null||w.call(g,P),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,P)})})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class Z2 extends Qf{constructor(t){super(t),this.data=[...t._processedData||[]].reverse()}}function Ue(n){for(var t=n.length/6|0,e=new Array(t),i=0;i<t;)e[i]="#"+n.slice(i*6,++i*6);return e}const Nn=n=>zy(n[n.length-1]);var K2=new Array(3).concat("fc8d59ffffbf91cf60","d7191cfdae61a6d96a1a9641","d7191cfdae61ffffbfa6d96a1a9641","d73027fc8d59fee08bd9ef8b91cf601a9850","d73027fc8d59fee08bffffbfd9ef8b91cf601a9850","d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850","d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850","a50026d73027f46d43fdae61fee08bd9ef8ba6d96a66bd631a9850006837","a50026d73027f46d43fdae61fee08bffffbfd9ef8ba6d96a66bd631a9850006837").map(Ue);const J2=Nn(K2);var Q2=new Array(3).concat("edf8b17fcdbb2c7fb8","ffffcca1dab441b6c4225ea8","ffffcca1dab441b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c42c7fb8253494","ffffccc7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea80c2c84","ffffd9edf8b1c7e9b47fcdbb41b6c41d91c0225ea8253494081d58").map(Ue);const tw=Nn(Q2);var ew=new Array(3).concat("ffeda0feb24cf03b20","ffffb2fecc5cfd8d3ce31a1c","ffffb2fecc5cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cf03b20bd0026","ffffb2fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cb10026","ffffccffeda0fed976feb24cfd8d3cfc4e2ae31a1cbd0026800026").map(Ue);const td=Nn(ew);var nw=new Array(3).concat("deebf79ecae13182bd","eff3ffbdd7e76baed62171b5","eff3ffbdd7e76baed63182bd08519c","eff3ffc6dbef9ecae16baed63182bd08519c","eff3ffc6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b5084594","f7fbffdeebf7c6dbef9ecae16baed64292c62171b508519c08306b").map(Ue);const ed=Nn(nw);var iw=new Array(3).concat("e5f5e0a1d99b31a354","edf8e9bae4b374c476238b45","edf8e9bae4b374c47631a354006d2c","edf8e9c7e9c0a1d99b74c47631a354006d2c","edf8e9c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45005a32","f7fcf5e5f5e0c7e9c0a1d99b74c47641ab5d238b45006d2c00441b").map(Ue);const rw=Nn(iw);var ow=new Array(3).concat("f0f0f0bdbdbd636363","f7f7f7cccccc969696525252","f7f7f7cccccc969696636363252525","f7f7f7d9d9d9bdbdbd969696636363252525","f7f7f7d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525","fffffff0f0f0d9d9d9bdbdbd969696737373525252252525000000").map(Ue);const sw=Nn(ow);var aw=new Array(3).concat("efedf5bcbddc756bb1","f2f0f7cbc9e29e9ac86a51a3","f2f0f7cbc9e29e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8756bb154278f","f2f0f7dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a34a1486","fcfbfdefedf5dadaebbcbddc9e9ac8807dba6a51a354278f3f007d").map(Ue);const cw=Nn(aw);var lw=new Array(3).concat("fee0d2fc9272de2d26","fee5d9fcae91fb6a4acb181d","fee5d9fcae91fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4ade2d26a50f15","fee5d9fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181d99000d","fff5f0fee0d2fcbba1fc9272fb6a4aef3b2ccb181da50f1567000d").map(Ue);const hw=Nn(lw);var uw=new Array(3).concat("fee6cefdae6be6550d","feeddefdbe85fd8d3cd94701","feeddefdbe85fd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3ce6550da63603","feeddefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d948018c2d04","fff5ebfee6cefdd0a2fdae6bfd8d3cf16913d94801a636037f2704").map(Ue);const fw=Nn(uw);function hs(n){var t=n.length;return function(e){return n[Math.max(0,Math.min(t-1,Math.floor(e*t)))]}}const dw=hs(Ue("44015444025645045745055946075a46085c460a5d460b5e470d60470e6147106347116447136548146748166848176948186a481a6c481b6d481c6e481d6f481f70482071482173482374482475482576482677482878482979472a7a472c7a472d7b472e7c472f7d46307e46327e46337f463480453581453781453882443983443a83443b84433d84433e85423f854240864241864142874144874045884046883f47883f48893e49893e4a893e4c8a3d4d8a3d4e8a3c4f8a3c508b3b518b3b528b3a538b3a548c39558c39568c38588c38598c375a8c375b8d365c8d365d8d355e8d355f8d34608d34618d33628d33638d32648e32658e31668e31678e31688e30698e306a8e2f6b8e2f6c8e2e6d8e2e6e8e2e6f8e2d708e2d718e2c718e2c728e2c738e2b748e2b758e2a768e2a778e2a788e29798e297a8e297b8e287c8e287d8e277e8e277f8e27808e26818e26828e26828e25838e25848e25858e24868e24878e23888e23898e238a8d228b8d228c8d228d8d218e8d218f8d21908d21918c20928c20928c20938c1f948c1f958b1f968b1f978b1f988b1f998a1f9a8a1e9b8a1e9c891e9d891f9e891f9f881fa0881fa1881fa1871fa28720a38620a48621a58521a68522a78522a88423a98324aa8325ab8225ac8226ad8127ad8128ae8029af7f2ab07f2cb17e2db27d2eb37c2fb47c31b57b32b67a34b67935b77937b87838b9773aba763bbb753dbc743fbc7340bd7242be7144bf7046c06f48c16e4ac16d4cc26c4ec36b50c46a52c56954c56856c66758c7655ac8645cc8635ec96260ca6063cb5f65cb5e67cc5c69cd5b6ccd5a6ece5870cf5773d05675d05477d1537ad1517cd2507fd34e81d34d84d44b86d54989d5488bd6468ed64590d74393d74195d84098d83e9bd93c9dd93ba0da39a2da37a5db36a8db34aadc32addc30b0dd2fb2dd2db5de2bb8de29bade28bddf26c0df25c2df23c5e021c8e020cae11fcde11dd0e11cd2e21bd5e21ad8e219dae319dde318dfe318e2e418e5e419e7e419eae51aece51befe51cf1e51df4e61ef6e620f8e621fbe723fde725"));hs(Ue("00000401000501010601010802010902020b02020d03030f03031204041405041606051806051a07061c08071e0907200a08220b09240c09260d0a290e0b2b100b2d110c2f120d31130d34140e36150e38160f3b180f3d19103f1a10421c10441d11471e114920114b21114e22115024125325125527125829115a2a115c2c115f2d11612f116331116533106734106936106b38106c390f6e3b0f703d0f713f0f72400f74420f75440f764510774710784910784a10794c117a4e117b4f127b51127c52137c54137d56147d57157e59157e5a167e5c167f5d177f5f187f601880621980641a80651a80671b80681c816a1c816b1d816d1d816e1e81701f81721f817320817521817621817822817922827b23827c23827e24828025828125818326818426818627818827818928818b29818c29818e2a81902a81912b81932b80942c80962c80982d80992d809b2e7f9c2e7f9e2f7fa02f7fa1307ea3307ea5317ea6317da8327daa337dab337cad347cae347bb0357bb2357bb3367ab5367ab73779b83779ba3878bc3978bd3977bf3a77c03a76c23b75c43c75c53c74c73d73c83e73ca3e72cc3f71cd4071cf4070d0416fd2426fd3436ed5446dd6456cd8456cd9466bdb476adc4869de4968df4a68e04c67e24d66e34e65e44f64e55064e75263e85362e95462ea5661eb5760ec5860ed5a5fee5b5eef5d5ef05f5ef1605df2625df2645cf3655cf4675cf4695cf56b5cf66c5cf66e5cf7705cf7725cf8745cf8765cf9785df9795df97b5dfa7d5efa7f5efa815ffb835ffb8560fb8761fc8961fc8a62fc8c63fc8e64fc9065fd9266fd9467fd9668fd9869fd9a6afd9b6bfe9d6cfe9f6dfea16efea36ffea571fea772fea973feaa74feac76feae77feb078feb27afeb47bfeb67cfeb77efeb97ffebb81febd82febf84fec185fec287fec488fec68afec88cfeca8dfecc8ffecd90fecf92fed194fed395fed597fed799fed89afdda9cfddc9efddea0fde0a1fde2a3fde3a5fde5a7fde7a9fde9aafdebacfcecaefceeb0fcf0b2fcf2b4fcf4b6fcf6b8fcf7b9fcf9bbfcfbbdfcfdbf"));var pw=hs(Ue("00000401000501010601010802010a02020c02020e03021004031204031405041706041907051b08051d09061f0a07220b07240c08260d08290e092b10092d110a30120a32140b34150b37160b39180c3c190c3e1b0c411c0c431e0c451f0c48210c4a230c4c240c4f260c51280b53290b552b0b572d0b592f0a5b310a5c320a5e340a5f3609613809623909633b09643d09653e0966400a67420a68440a68450a69470b6a490b6a4a0c6b4c0c6b4d0d6c4f0d6c510e6c520e6d540f6d550f6d57106e59106e5a116e5c126e5d126e5f136e61136e62146e64156e65156e67166e69166e6a176e6c186e6d186e6f196e71196e721a6e741a6e751b6e771c6d781c6d7a1d6d7c1d6d7d1e6d7f1e6c801f6c82206c84206b85216b87216b88226a8a226a8c23698d23698f24699025689225689326679526679727669827669a28659b29649d29649f2a63a02a63a22b62a32c61a52c60a62d60a82e5fa92e5eab2f5ead305dae305cb0315bb1325ab3325ab43359b63458b73557b93556ba3655bc3754bd3853bf3952c03a51c13a50c33b4fc43c4ec63d4dc73e4cc83f4bca404acb4149cc4248ce4347cf4446d04545d24644d34743d44842d54a41d74b3fd84c3ed94d3dda4e3cdb503bdd513ade5238df5337e05536e15635e25734e35933e45a31e55c30e65d2fe75e2ee8602de9612bea632aeb6429eb6628ec6726ed6925ee6a24ef6c23ef6e21f06f20f1711ff1731df2741cf3761bf37819f47918f57b17f57d15f67e14f68013f78212f78410f8850ff8870ef8890cf98b0bf98c0af98e09fa9008fa9207fa9407fb9606fb9706fb9906fb9b06fb9d07fc9f07fca108fca309fca50afca60cfca80dfcaa0ffcac11fcae12fcb014fcb216fcb418fbb61afbb81dfbba1ffbbc21fbbe23fac026fac228fac42afac62df9c72ff9c932f9cb35f8cd37f8cf3af7d13df7d340f6d543f6d746f5d949f5db4cf4dd4ff4df53f4e156f3e35af3e55df2e661f2e865f2ea69f1ec6df1ed71f1ef75f1f179f2f27df2f482f3f586f3f68af4f88ef5f992f6fa96f8fb9af9fc9dfafda1fcffa4")),gw=hs(Ue("0d088710078813078916078a19068c1b068d1d068e20068f2206902406912605912805922a05932c05942e05952f059631059733059735049837049938049a3a049a3c049b3e049c3f049c41049d43039e44039e46039f48039f4903a04b03a14c02a14e02a25002a25102a35302a35502a45601a45801a45901a55b01a55c01a65e01a66001a66100a76300a76400a76600a76700a86900a86a00a86c00a86e00a86f00a87100a87201a87401a87501a87701a87801a87a02a87b02a87d03a87e03a88004a88104a78305a78405a78606a68707a68808a68a09a58b0aa58d0ba58e0ca48f0da4910ea3920fa39410a29511a19613a19814a099159f9a169f9c179e9d189d9e199da01a9ca11b9ba21d9aa31e9aa51f99a62098a72197a82296aa2395ab2494ac2694ad2793ae2892b02991b12a90b22b8fb32c8eb42e8db52f8cb6308bb7318ab83289ba3388bb3488bc3587bd3786be3885bf3984c03a83c13b82c23c81c33d80c43e7fc5407ec6417dc7427cc8437bc9447aca457acb4679cc4778cc4977cd4a76ce4b75cf4c74d04d73d14e72d24f71d35171d45270d5536fd5546ed6556dd7566cd8576bd9586ada5a6ada5b69db5c68dc5d67dd5e66de5f65de6164df6263e06363e16462e26561e26660e3685fe4695ee56a5de56b5de66c5ce76e5be76f5ae87059e97158e97257ea7457eb7556eb7655ec7754ed7953ed7a52ee7b51ef7c51ef7e50f07f4ff0804ef1814df1834cf2844bf3854bf3874af48849f48948f58b47f58c46f68d45f68f44f79044f79143f79342f89441f89540f9973ff9983ef99a3efa9b3dfa9c3cfa9e3bfb9f3afba139fba238fca338fca537fca636fca835fca934fdab33fdac33fdae32fdaf31fdb130fdb22ffdb42ffdb52efeb72dfeb82cfeba2cfebb2bfebd2afebe2afec029fdc229fdc328fdc527fdc627fdc827fdca26fdcb26fccd25fcce25fcd025fcd225fbd324fbd524fbd724fad824fada24f9dc24f9dd25f8df25f8e125f7e225f7e425f6e626f6e826f5e926f5eb27f4ed27f3ee27f3f027f2f227f1f426f1f525f0f724f0f921"));function mw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class yw extends Ut{constructor(t){super(t),t.showInLegend=!1}render(){var S,w;const{plotArea:t}=this.context,e=this.context.animate,i=this.data,r=this.config.colorAxis||{},o=i.map(A=>A.value??A.z??A.y??0).filter(A=>A!=null),s=r.min??(o.length>0?Math.min(...o):0),a=r.max??(o.length>0?Math.max(...o):1),l=this.config.nullColor??"#e4e4e4",c=((w=(S=this.config.states)==null?void 0:S.inactive)==null?void 0:w.opacity)??.4,h=this.buildColorScale(r,s,a),f=this.config.interpolation===!0,u=this.config.colsize??1,d=this.config.rowsize??1,p=this.config.pointPadding??0,y=this.getUniqueValues("x"),g=this.getUniqueValues("yCategory"),m=y.length>0&&g.length>0,x=m?t.width/y.length:t.width/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.x??0))+u)/u)),v=m?t.height/g.length:t.height/Math.max(1,Math.ceil((Math.max(...i.map(A=>A.y??0))+d)/d)),b=A=>{if(A.color)return A.color;const T=A.value??A.z??A.y;return T==null?l:h(T)},k=A=>m?(typeof A.x=="number"?A.x:0)*x:(A.x??0)/u*x,M=A=>m?(typeof A.yCategory=="number"?A.yCategory:typeof A.y=="number"?A.y:0)*v:(A.y??0)/d*v,C=p*x,L=p*v,_=x*u-(this.config.borderWidth??1),$=v*d-(this.config.borderWidth??1),I=Math.max(1,(m?x-1:_)-C*2),E=Math.max(1,(m?v-1:$)-L*2);if(f){this.renderInterpolated(i,t,h,l,k,M,x,v,b),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a);return}const P=this.group.selectAll(".katucharts-heatmap-cell").data(i).join("rect").attr("class","katucharts-heatmap-cell").attr("x",A=>k(A)+C).attr("y",A=>M(A)+L).attr("width",I).attr("height",E).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1).attr("rx",mw(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");e?P.attr("fill","#fff").transition().duration(600).delay((A,T)=>T*8).attr("fill",A=>b(A)):P.attr("fill",A=>b(A)),this.config.enableMouseTracking!==!1&&P.on("mouseover",(A,T)=>{var H,J,X,j;const R=rt(A.currentTarget),F=b(T),D=((J=(H=oe(F))==null?void 0:H.brighter(.4))==null?void 0:J.toString())||F;R.interrupt("hover").transition("hover").duration(K).ease(Z).attr("fill",D).attr("stroke","#333").attr("stroke-width",2),R.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.3))"),P.interrupt("highlight"),P.attr("opacity",1),P.filter(W=>W!==T).transition("highlight").duration(K).ease(Z).attr("opacity",c);const z=i.indexOf(T),B=T.value??T.z??T.y;this.context.events.emit("point:mouseover",{point:{...T,value:B},index:z,series:this,event:A,plotX:k(T)+x/2,plotY:M(T)+v/2}),(j=(X=T.events)==null?void 0:X.mouseOver)==null||j.call(T,A)}).on("mouseout",(A,T)=>{var D,z;const R=rt(A.currentTarget);R.interrupt("hover").transition("hover").duration(K).ease(Z).attr("fill",b(T)).attr("stroke",this.config.borderColor||this.autoBorderColor()).attr("stroke-width",this.config.borderWidth??1),R.style("filter",""),P.interrupt("highlight"),P.transition("highlight").duration(K).ease(Z).attr("opacity",1);const F=i.indexOf(T);this.context.events.emit("point:mouseout",{point:T,index:F,series:this,event:A}),(z=(D=T.events)==null?void 0:D.mouseOut)==null||z.call(T,A)}).on("click",(A,T)=>{var F,D,z,B;const R=i.indexOf(T);this.context.events.emit("point:click",{point:T,index:R,series:this,event:A}),(D=(F=T.events)==null?void 0:F.click)==null||D.call(T,A),(B=(z=this.config.events)==null?void 0:z.click)==null||B.call(this,A)}),this.renderHeatmapLabels(i,k,M,x,v,b),this.renderColorAxis(h,s,a)}renderInterpolated(t,e,i,r,o,s,a,l,c){const h=new Set,f=new Set;for(const L of t)h.add(L.x??0),f.add(L.yCategory??L.y??0);const u=Array.from(h).sort((L,_)=>L-_),d=Array.from(f).sort((L,_)=>L-_),p=u.length,y=d.length;if(p===0||y===0)return;const g=new Map;for(const L of t){const _=L.value??L.z??L.y,$=u.indexOf(L.x??0),I=d.indexOf(L.yCategory??L.y??0);_!=null&&g.set(`${$},${I}`,_)}const m=Math.round(e.width),x=Math.round(e.height),v=document.createElement("canvas");v.width=m,v.height=x;const b=v.getContext("2d");if(!b)return;const k=b.createImageData(m,x),M=k.data;for(let L=0;L<x;L++)for(let _=0;_<m;_++){const $=_/m*p-.5,I=L/x*y-.5,E=Math.floor($),P=Math.floor(I),S=$-E,w=I-P,A=(W,U)=>g.get(`${Math.max(0,Math.min(p-1,W))},${Math.max(0,Math.min(y-1,U))}`)??null,T=A(E,P),R=A(E+1,P),F=A(E,P+1),D=A(E+1,P+1),z=[T,R,F,D].filter(W=>W!==null);if(z.length===0){const W=Ye(r),U=(L*m+_)*4;M[U]=W.r,M[U+1]=W.g,M[U+2]=W.b,M[U+3]=255;continue}const B=W=>W??z[0],H=B(T)*(1-S)*(1-w)+B(R)*S*(1-w)+B(F)*(1-S)*w+B(D)*S*w,J=i(H),X=Ye(J),j=(L*m+_)*4;M[j]=X.r,M[j+1]=X.g,M[j+2]=X.b,M[j+3]=255}b.putImageData(k,0,0);const C=v.toDataURL();this.group.append("image").attr("class","katucharts-heatmap-interpolated").attr("width",e.width).attr("height",e.height).attr("href",C).style("image-rendering","auto")}buildColorScale(t,e,i){const r=t.reversed===!0,o=r?i:e,s=r?e:i;if(t.dataClasses&&t.dataClasses.length>0){const u=t.dataClasses;return d=>{var p;for(const y of u){const g=y.from??-1/0,m=y.to??1/0;if(d>=g&&d<m)return y.color||"#cccccc"}return((p=u[u.length-1])==null?void 0:p.color)||"#cccccc"}}const a=t.type==="logarithmic",l=a?Math.max(o,1e-10):o,c=()=>a?Po().domain([l,s]).clamp(!0):we().domain([o,s]).clamp(!0);if(t.stops&&t.stops.length>=2){const u=t.stops,d=c();return p=>{const y=d(a?Math.max(p,1e-10):p);let g=0;for(;g<u.length-1&&!(y<=u[g+1][0]);g++);const[m,x]=u[g],[v,b]=u[Math.min(g+1,u.length-1)],k=v!==m?(y-m)/(v-m):0;return gi(x,b)(k)}}if(t.minColor&&t.maxColor){const u=gi(t.minColor,t.maxColor),d=c();return p=>u(d(a?Math.max(p,1e-10):p))}const h=r?[i,e]:[e,i],f=Ru(td).domain(h);return u=>f(u)}renderColorAxis(t,e,i){var b,k;const r=this.config.colorAxis||{};if(((b=r.labels)==null?void 0:b.enabled)===!1)return;const{plotArea:o}=this.context,a=(this.context.legendConfig||{}).layout==="vertical",l=this.context.plotGroup||this.group;l.selectAll(".katucharts-color-axis").remove();const c=l.append("g").attr("class","katucharts-color-axis"),h=((k=r.labels)==null?void 0:k.style)||{},f=h.fontSize||wt,u=h.color||this.autoLabelColor(),d=i-e,p=d/6,y=Math.pow(10,Math.floor(Math.log10(p))),g=[1,2,2.5,5,10].find(M=>M*y>=p)*y,m=Math.ceil(e/g)*g,x=[];for(let M=m;M<=i+g*.01;M+=g)x.push(Math.round(M*1e6)/1e6);(x.length===0||x[0]>e)&&x.unshift(e),x[x.length-1]<i&&x.push(i);const v=g>=1?0:g>=.1?1:2;if(r.dataClasses&&r.dataClasses.length>0){const M=r.dataClasses,C=Math.min(o.width*.6,300),L=12,_=(o.width-C)/2,$=o.height+60,I=C/M.length;for(let E=0;E<M.length;E++){const P=M[E];c.append("rect").attr("x",_+E*I).attr("y",$).attr("width",I).attr("height",L).attr("fill",P.color||"#ccc").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",E===0?2:0).attr("ry",E===0?2:0),P.name&&c.append("text").attr("x",_+E*I+I/2).attr("y",$+L+30).attr("font-size",f).attr("fill",u).attr("text-anchor","middle").text(P.name)}return}if(a){const C=Math.min(o.height*.7,200),L=o.width+20,_=(o.height-C)/2,$=c.append("defs"),I=x.length-1,E=C/I;for(let P=0;P<I;P++){const S=I-1-P,w=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,A=$.append("linearGradient").attr("id",w).attr("x1","0%").attr("y1","0%").attr("x2","0%").attr("y2","100%");A.append("stop").attr("offset","0%").attr("stop-color",t(x[S+1])),A.append("stop").attr("offset","100%").attr("stop-color",t(x[S])),c.append("rect").attr("x",L).attr("y",_+P*E).attr("width",12).attr("height",E+.5).attr("fill",`url(#${w})`).attr("stroke","none")}c.append("rect").attr("x",L).attr("y",_).attr("width",12).attr("height",C).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let P=0;P<x.length;P++){const S=_+C-(x[P]-e)/d*C;c.append("line").attr("x1",L+12).attr("y1",S).attr("x2",L+12+4).attr("y2",S).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",L+12+7).attr("y",S+4).attr("font-size",f).attr("fill",u).attr("text-anchor","start").text(x[P].toFixed(v))}}else{const C=Math.min(o.width*.6,300),L=(o.width-C)/2,_=o.height+60,$=c.append("defs"),I=x.length-1,E=C/I;for(let P=0;P<I;P++){const S=`katucharts-heatmap-seg-${Math.random().toString(36).slice(2,8)}`,w=$.append("linearGradient").attr("id",S).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");w.append("stop").attr("offset","0%").attr("stop-color",t(x[P])),w.append("stop").attr("offset","100%").attr("stop-color",t(x[P+1])),c.append("rect").attr("x",L+P*E).attr("y",_).attr("width",E+.5).attr("height",12).attr("fill",`url(#${S})`).attr("stroke","none")}c.append("rect").attr("x",L).attr("y",_).attr("width",C).attr("height",12).attr("fill","none").attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);for(let P=0;P<x.length;P++){const S=L+(x[P]-e)/d*C;c.append("line").attr("x1",S).attr("y1",_+12+8).attr("x2",S).attr("y2",_+12+16).attr("stroke","#999").attr("stroke-width",.5),c.append("text").attr("x",S).attr("y",_+12+30).attr("font-size",f).attr("fill",u).attr("text-anchor",P===0?"start":P===x.length-1?"end":"middle").text(x[P].toFixed(v))}}}renderHeatmapLabels(t,e,i,r,o,s){var f,u;const a=this.config.dataLabels;if(!(a!=null&&a.enabled))return;const l=a.minCellHeight??20;if(o<l)return;const c=((f=a.style)==null?void 0:f.fontSize)||wt,h=a.color||((u=a.style)==null?void 0:u.color)||void 0;this.group.selectAll(".katucharts-heatmap-label").data(t).join("text").attr("class","katucharts-heatmap-label").attr("x",d=>e(d)+r/2+(a.x??0)).attr("y",d=>i(d)+o/2+(a.y??0)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",c).attr("fill",d=>Pn(s(d),h)).style("pointer-events","none").text(d=>{const p=d.value??d.z??d.y;return p==null?a.nullFormatter?a.nullFormatter.call({point:d,series:{name:this.config.name}}):a.nullFormat?a.nullFormat:"":a.formatter?a.formatter.call({point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y}):a.format?fe(Zt(a.format,{point:{...d,value:p},series:{name:this.config.name},x:d.x,y:d.y,value:p})):String(p)})}getUniqueValues(t){const e=new Set;for(const i of this.data){const r=i[t];r!==void 0&&e.add(r)}return Array.from(e).sort((i,r)=>i-r)}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function xw(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class bw extends Ut{constructor(t){super(t)}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{boxWidth:a,boxOffset:l}=this.computeBoxGeometry(),c=this.config.medianColor||null,h=this.config.medianWidth??2,f=on(this.config.medianDashStyle),u=this.config.stemWidth??1,d=on(this.config.stemDashStyle),p=this.config.whiskerWidth??2,y=on(this.config.whiskerDashStyle),g=this.parseWhiskerLength(this.config.whiskerLength,a),m=on(this.config.boxDashStyle),x=this.config.lineWidth??1,b=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;for(let k=0;k<o.length;k++){const M=o[k],C=t.getPixelForValue(M.x??k)+l+a/2,L=M.low??0,_=M.q1??M.low??0,$=M.median??M.y??0,I=M.q3??M.high??0,E=M.high??0,P=e.getPixelForValue((L+E)/2),S=M.color||this.getPointColor(k,r),w=this.config.fillColor??"transparent",A=this.config.stemColor||S,T=this.config.whiskerColor||S,R=this.group.append("g").attr("class","katucharts-boxplot-point").style("cursor",this.config.cursor||"pointer"),F=R.append("line").attr("x1",C).attr("x2",C).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),D=R.append("line").attr("x1",C).attr("x2",C).attr("stroke",A).attr("stroke-width",u).attr("stroke-dasharray",d),z=R.append("rect").attr("x",C-a/2).attr("width",a).attr("fill",w).attr("stroke",S).attr("stroke-width",x).attr("stroke-dasharray",m).attr("rx",xw(this.config.borderRadius)),B=R.append("line").attr("x1",C-a/2).attr("x2",C+a/2).attr("stroke",c||this.config.lineColor||S).attr("stroke-width",h).attr("stroke-dasharray",f),H=R.append("line").attr("x1",C-g/2).attr("x2",C+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y),J=R.append("line").attr("x1",C-g/2).attr("x2",C+g/2).attr("stroke",T).attr("stroke-width",p).attr("stroke-dasharray",y);if(s){const X=Ce(k,0,Wt,o.length),j=b;F.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(_)),D.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",P).attr("height",0).transition().duration(j).ease(pt).delay(X).attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),H.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),J.attr("y1",P).attr("y2",P).transition().duration(j).ease(pt).delay(X).attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E))}else F.attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(_)),D.attr("y1",e.getPixelForValue(I)).attr("y2",e.getPixelForValue(E)),z.attr("y",e.getPixelForValue(I)).attr("height",Math.abs(e.getPixelForValue(_)-e.getPixelForValue(I))),B.attr("y1",e.getPixelForValue($)).attr("y2",e.getPixelForValue($)),H.attr("y1",e.getPixelForValue(L)).attr("y2",e.getPixelForValue(L)),J.attr("y1",e.getPixelForValue(E)).attr("y2",e.getPixelForValue(E));this.attachBoxPointEvents(R,M,k,C,e.getPixelForValue($),x)}this.renderDataLabels(o,(k,M)=>t.getPixelForValue(k.x??M)+l+a/2,k=>e.getPixelForValue(k.high??k.y??0)),s&&this.emitAfterAnimate(b+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.data,{boxWidth:o,boxOffset:s}=this.computeBoxGeometry(),l=this.group.selectAll(".katucharts-boxplot-point").nodes();if(l.length!==r.length){this.group.selectAll("*").remove(),this.render();return}for(let c=0;c<Math.min(l.length,r.length);c++){const h=r[c],f=l[c],u=e.getPixelForValue(h.x??c)+s+o/2,d=h.low??0,p=h.q1??h.low??0,y=h.median??h.y??0,g=h.q3??h.high??0,m=h.high??0,x=f.querySelectorAll("line"),v=f.querySelector("rect");if(x[0]&&this.group.select(()=>x[0]).transition().duration(t).attr("x1",u).attr("x2",u).attr("y1",i.getPixelForValue(d)).attr("y2",i.getPixelForValue(p)),x[1]&&this.group.select(()=>x[1]).transition().duration(t).attr("x1",u).attr("x2",u).attr("y1",i.getPixelForValue(g)).attr("y2",i.getPixelForValue(m)),v&&this.group.select(()=>v).transition().duration(t).attr("x",u-o/2).attr("y",i.getPixelForValue(g)).attr("height",Math.abs(i.getPixelForValue(p)-i.getPixelForValue(g))),x[2]&&this.group.select(()=>x[2]).transition().duration(t).attr("x1",u-o/2).attr("x2",u+o/2).attr("y1",i.getPixelForValue(y)).attr("y2",i.getPixelForValue(y)),x[3]){const b=this.parseWhiskerLength(this.config.whiskerLength,o);this.group.select(()=>x[3]).transition().duration(t).attr("x1",u-b/2).attr("x2",u+b/2).attr("y1",i.getPixelForValue(d)).attr("y2",i.getPixelForValue(d))}if(x[4]){const b=this.parseWhiskerLength(this.config.whiskerLength,o);this.group.select(()=>x[4]).transition().duration(t).attr("x1",u-b/2).attr("x2",u+b/2).attr("y1",i.getPixelForValue(m)).attr("y2",i.getPixelForValue(m))}}this.group.selectAll(".katucharts-data-labels").remove(),this.renderDataLabels(r,(c,h)=>e.getPixelForValue(c.x??h)+s+o/2,c=>i.getPixelForValue(c.high??c.y??0))}computeBoxGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=Math.min(200*r,e.width/Math.max(i.length,1));let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:(c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth)),c=Math.min(c,90));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{boxWidth:c,boxOffset:f}}getPointColor(t,e){if(this.config.colorByPoint){const i=this.config.colors||this.context.colors;return i[t%i.length]}return e}parseWhiskerLength(t,e){return t===void 0?e*.5:typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?e*(parseFloat(t)/100):parseFloat(t)||e*.5}attachBoxPointEvents(t,e,i,r,o,s){if(this.config.enableMouseTracking===!1)return;const a=()=>this.group.selectAll(".katucharts-boxplot-point");t.on("mouseover",l=>{var h,f,u,d,p;t.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),t.select("rect").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",s+1),a().filter(function(){return this!==t.node()}).interrupt("hover").transition("hover").duration(K).ease(Z).style("opacity",.4),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:l,plotX:r,plotY:o}),(f=(h=e.events)==null?void 0:h.mouseOver)==null||f.call(e,l),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(e,l)}).on("mouseout",l=>{var c,h,f,u,d;t.style("filter",""),t.select("rect").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",s),a().interrupt("hover").transition("hover").duration(K).ease(Z).style("opacity",null),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.mouseOut)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(e,l)}).on("click",l=>{var c,h,f,u,d,p,y;this.context.events.emit("point:click",{point:e,index:i,series:this,event:l}),(h=(c=e.events)==null?void 0:c.click)==null||h.call(e,l),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.click)==null||d.call(e,l),(y=(p=this.config.events)==null?void 0:p.click)==null||y.call(this,l)})}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(let o=0;o<this.data.length;o++){const s=this.data[o],a=s.x??o;t=Math.min(t,a),e=Math.max(e,a),i=Math.min(i,s.low??s.y??0),r=Math.max(r,s.high??s.y??0)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function nd(){Tt.registerType("line",Uf),Tt.registerType("spline",H2),Tt.registerType("area",qf),Tt.registerType("areaspline",G2),Tt.registerType("column",jf),Tt.registerType("bar",U2),Tt.registerType("scatter",q2),Tt.registerType("bubble",j2),Tt.registerType("pie",Jf),Tt.registerType("donut",Jf),Tt.registerType("heatmap",yw),Tt.registerType("boxplot",bw)}function id(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class vw extends Ut{constructor(t){super(t),this.processed=[]}render(){const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.getColor(),o=this.data,s=this.context.animate,{barWidth:a,barOffset:l}=this.computeBarGeometry();this.processed=this.processWaterfallData(o);const c=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed).join("rect").attr("class","katucharts-waterfall-bar").attr("x",d=>t.getPixelForValue(d.x??0)+l).attr("width",a).attr("rx",id(this.config.borderRadius)).attr("fill",(d,p)=>this.getBarColor(d,p,r)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),h=e.getPixelForValue(0),u=(typeof this.config.animation=="object"?this.config.animation:{}).duration??bt;s?c.attr("y",h).attr("height",0).transition().duration(u).ease(pt).delay((d,p)=>Ce(p,0,Wt,this.processed.length)).attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)):c.attr("y",d=>Math.min(e.getPixelForValue(d._start),e.getPixelForValue(d._end))).attr("height",d=>Math.max(Math.abs(e.getPixelForValue(d._start)-e.getPixelForValue(d._end)),this.config.minPointLength??0)),this.attachBarEvents(c),this.renderConnectors(a,l,!!s),this.renderDataLabels(this.processed,d=>t.getPixelForValue(d.x??0)+l+a/2,d=>e.getPixelForValue(d._end)),s&&this.emitAfterAnimate(u+o.length*Wt)}animateUpdate(t){const{xAxis:e,yAxis:i}=this.context,r=this.getColor(),{barWidth:o,barOffset:s}=this.computeBarGeometry();this.processed=this.processWaterfallData(this.data);const a=this.group.selectAll(".katucharts-waterfall-bar").data(this.processed);a.exit().transition().duration(t).attr("opacity",0).remove(),a.enter().append("rect").attr("class","katucharts-waterfall-bar").attr("rx",id(this.config.borderRadius)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).attr("y",i.getPixelForValue(0)).attr("height",0).merge(a).transition().duration(t).attr("x",c=>e.getPixelForValue(c.x??0)+s).attr("width",o).attr("fill",(c,h)=>this.getBarColor(c,h,r)).attr("y",c=>Math.min(i.getPixelForValue(c._start),i.getPixelForValue(c._end))).attr("height",c=>Math.max(Math.abs(i.getPixelForValue(c._start)-i.getPixelForValue(c._end)),this.config.minPointLength??0)),this.group.selectAll(".katucharts-waterfall-connector").remove(),this.group.selectAll(".katucharts-data-labels").remove(),this.renderConnectors(o,s,!1),this.attachBarEvents(this.group.selectAll(".katucharts-waterfall-bar")),this.renderDataLabels(this.processed,c=>e.getPixelForValue(c.x??0)+s+o/2,c=>i.getPixelForValue(c._end))}processWaterfallData(t){let e=0,i=0;return t.map((r,o)=>{const s=!!r.isSum,a=!!r.isIntermediateSum,l=s||a,c=r.y??0;let h,f;return s?(h=0,f=e):a?(h=i,f=e,i=e):(h=e,f=e+c,e+=c),{...r,_start:h,_end:f,_isTotal:l,_isIntermediate:a}})}getBarColor(t,e,i){if(t.color)return t.color;if(this.config.colorByPoint){const o=this.config.colors||this.context.colors;return o[e%o.length]}return t._isIntermediate?this.config.intermediateSumColor||this.config.sumColor||"#434348":t._isTotal?this.config.sumColor||"#434348":(t.y??0)>=0?this.config.upColor||i:this.config.negativeColor||"#f15c80"}computeBarGeometry(){const{xAxis:t,plotArea:e}=this.context,i=this.data,r=this.config.grouping!==!1&&this.context.totalSeriesOfType||1,o=this.config.grouping!==!1&&this.context.indexInType||0,s=this.config.groupPadding??.2,a=this.config.pointPadding??.1;let l;this.config.pointWidth!==void 0?l=this.config.pointWidth*r*1.5:l=e.width/Math.max(i.length,1);let c;this.config.pointWidth!==void 0?c=this.config.pointWidth:c=l*(1-s*2)/r*(1-a*2),this.config.maxPointWidth!==void 0&&(c=Math.min(c,this.config.maxPointWidth));const f=-l*(1-s*2)/2+(c+c*a*2)*o+c*a;return{barWidth:c,barOffset:f}}renderConnectors(t,e,i){const{xAxis:r,yAxis:o}=this.context,s=this.config.lineColor||"#999",a=this.config.lineWidth??1,l=on(this.config.dashStyle||"Dot"),c=this.group.selectAll(".katucharts-waterfall-connector").data(this.processed.slice(0,-1)).join("line").attr("class","katucharts-waterfall-connector").attr("x1",h=>r.getPixelForValue(h.x??0)+e+t).attr("x2",(h,f)=>r.getPixelForValue(this.processed[f+1].x??0)+e).attr("y1",h=>o.getPixelForValue(h._end)).attr("y2",h=>o.getPixelForValue(h._end)).attr("stroke",s).attr("stroke-width",a).attr("stroke-dasharray",l);i&&c.attr("opacity",0).transition().duration(bt).ease(pt).delay((h,f)=>bt+f*Wt).attr("opacity",1)}attachBarEvents(t){if(this.config.enableMouseTracking===!1)return;const{xAxis:e,yAxis:i}=this.context,r=this.processed;t.style("cursor",this.config.cursor||"pointer").on("mouseover",(o,s)=>{var h,f,u,d,p;const a=o.currentTarget,l=a.getAttribute("fill")||"";a.setAttribute("data-orig-fill",l),a.style.filter="drop-shadow(0 2px 4px rgba(0,0,0,0.25))",rt(a).interrupt("hover").transition("hover").duration(K).ease(Z).style("fill",Yf(l,.15));const c=r.indexOf(s);this.context.events.emit("point:mouseover",{point:s,index:c,series:this,event:o,plotX:e.getPixelForValue(s.x??0),plotY:i.getPixelForValue(s._end)}),(f=(h=s.events)==null?void 0:h.mouseOver)==null||f.call(s,o),(p=(d=(u=this.config.point)==null?void 0:u.events)==null?void 0:d.mouseOver)==null||p.call(s,o)}).on("mouseout",(o,s)=>{var c,h,f,u,d;const a=o.currentTarget;a.style.filter="",rt(a).interrupt("hover").transition("hover").duration(K).ease(Z).style("fill",null);const l=r.indexOf(s);this.context.events.emit("point:mouseout",{point:s,index:l,series:this,event:o}),(h=(c=s.events)==null?void 0:c.mouseOut)==null||h.call(s,o),(d=(u=(f=this.config.point)==null?void 0:f.events)==null?void 0:u.mouseOut)==null||d.call(s,o)}).on("click",(o,s)=>{var l,c,h,f,u,d,p;const a=r.indexOf(s);this.context.events.emit("point:click",{point:s,index:a,series:this,event:o}),(c=(l=s.events)==null?void 0:l.click)==null||c.call(s,o),(u=(f=(h=this.config.point)==null?void 0:h.events)==null?void 0:f.click)==null||u.call(s,o),(p=(d=this.config.events)==null?void 0:d.click)==null||p.call(this,o),this.handlePointSelect(rt(o.currentTarget),s,a,o)})}getDataExtents(){let t=1/0,e=-1/0,i=0,r=0,o=0;for(let s=0;s<this.data.length;s++){const a=this.data[s],l=a.x??s;t=Math.min(t,l),e=Math.max(e,l);const c=a.isSum||a.isIntermediateSum,h=a.y??0;c||(o+=h),i=Math.min(i,c?0:Math.min(o-h,o),0),r=Math.max(r,o)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function ww(n,t){return n.parent===t.parent?1:2}function kw(n){return n.reduce(Mw,0)/n.length}function Mw(n,t){return n+t.x}function Aw(n){return 1+n.reduce(Sw,0)}function Sw(n,t){return Math.max(n,t.y)}function _w(n){for(var t;t=n.children;)n=t[0];return n}function Cw(n){for(var t;t=n.children;)n=t[t.length-1];return n}function Pw(){var n=ww,t=1,e=1,i=!1;function r(o){var s,a=0;o.eachAfter(function(u){var d=u.children;d?(u.x=kw(d),u.y=Aw(d)):(u.x=s?a+=n(u,s):0,u.y=0,s=u)});var l=_w(o),c=Cw(o),h=l.x-n(l,c)/2,f=c.x+n(c,l)/2;return o.eachAfter(i?function(u){u.x=(u.x-o.x)*t,u.y=(o.y-u.y)*e}:function(u){u.x=(u.x-h)/(f-h)*t,u.y=(1-(o.y?u.y/o.y:1))*e})}return r.separation=function(o){return arguments.length?(n=o,r):n},r.size=function(o){return arguments.length?(i=!1,t=+o[0],e=+o[1],r):i?null:[t,e]},r.nodeSize=function(o){return arguments.length?(i=!0,t=+o[0],e=+o[1],r):i?[t,e]:null},r}function Ew(n){var t=0,e=n.children,i=e&&e.length;if(!i)t=1;else for(;--i>=0;)t+=e[i].value;n.value=t}function Tw(){return this.eachAfter(Ew)}function $w(n,t){let e=-1;for(const i of this)n.call(t,i,++e,this);return this}function Lw(n,t){for(var e=this,i=[e],r,o,s=-1;e=i.pop();)if(n.call(t,e,++s,this),r=e.children)for(o=r.length-1;o>=0;--o)i.push(r[o]);return this}function Iw(n,t){for(var e=this,i=[e],r=[],o,s,a,l=-1;e=i.pop();)if(r.push(e),o=e.children)for(s=0,a=o.length;s<a;++s)i.push(o[s]);for(;e=r.pop();)n.call(t,e,++l,this);return this}function Fw(n,t){let e=-1;for(const i of this)if(n.call(t,i,++e,this))return i}function Rw(n){return this.eachAfter(function(t){for(var e=+n(t.data)||0,i=t.children,r=i&&i.length;--r>=0;)e+=i[r].value;t.value=e})}function Dw(n){return this.eachBefore(function(t){t.children&&t.children.sort(n)})}function zw(n){for(var t=this,e=Bw(t,n),i=[t];t!==e;)t=t.parent,i.push(t);for(var r=i.length;n!==e;)i.splice(r,0,n),n=n.parent;return i}function Bw(n,t){if(n===t)return n;var e=n.ancestors(),i=t.ancestors(),r=null;for(n=e.pop(),t=i.pop();n===t;)r=n,n=e.pop(),t=i.pop();return r}function Ow(){for(var n=this,t=[n];n=n.parent;)t.push(n);return t}function Nw(){return Array.from(this)}function Ww(){var n=[];return this.eachBefore(function(t){t.children||n.push(t)}),n}function Hw(){var n=this,t=[];return n.each(function(e){e!==n&&t.push({source:e.parent,target:e})}),t}function*Vw(){var n=this,t,e=[n],i,r,o;do for(t=e.reverse(),e=[];n=t.pop();)if(yield n,i=n.children)for(r=0,o=i.length;r<o;++r)e.push(i[r]);while(e.length)}function qi(n,t){n instanceof Map?(n=[void 0,n],t===void 0&&(t=Xw)):t===void 0&&(t=Yw);for(var e=new ji(n),i,r=[e],o,s,a,l;i=r.pop();)if((s=t(i.data))&&(l=(s=Array.from(s)).length))for(i.children=s,a=l-1;a>=0;--a)r.push(o=s[a]=new ji(s[a])),o.parent=i,o.depth=i.depth+1;return e.eachBefore(rd)}function Gw(){return qi(this).eachBefore(Uw)}function Yw(n){return n.children}function Xw(n){return Array.isArray(n)?n[1]:null}function Uw(n){n.data.value!==void 0&&(n.value=n.data.value),n.data=n.data.data}function rd(n){var t=0;do n.height=t;while((n=n.parent)&&n.height<++t)}function ji(n){this.data=n,this.depth=this.height=0,this.parent=null}ji.prototype=qi.prototype={constructor:ji,count:Tw,each:$w,eachAfter:Iw,eachBefore:Lw,find:Fw,sum:Rw,sort:Dw,path:zw,ancestors:Ow,descendants:Nw,leaves:Ww,links:Hw,copy:Gw,[Symbol.iterator]:Vw};function Cc(n){return n==null?null:od(n)}function od(n){if(typeof n!="function")throw new Error;return n}function Pr(){return 0}function Er(n){return function(){return n}}function sd(n){n.x0=Math.round(n.x0),n.y0=Math.round(n.y0),n.x1=Math.round(n.x1),n.y1=Math.round(n.y1)}function us(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(i-t)/n.value;++a<l;)s=o[a],s.y0=e,s.y1=r,s.x0=t,s.x1=t+=s.value*c}function ad(){var n=1,t=1,e=0,i=!1;function r(s){var a=s.height+1;return s.x0=s.y0=e,s.x1=n,s.y1=t/a,s.eachBefore(o(t,a)),i&&s.eachBefore(sd),s}function o(s,a){return function(l){l.children&&us(l,l.x0,s*(l.depth+1)/a,l.x1,s*(l.depth+2)/a);var c=l.x0,h=l.y0,f=l.x1-e,u=l.y1-e;f<c&&(c=f=(c+f)/2),u<h&&(h=u=(h+u)/2),l.x0=c,l.y0=h,l.x1=f,l.y1=u}}return r.round=function(s){return arguments.length?(i=!!s,r):i},r.size=function(s){return arguments.length?(n=+s[0],t=+s[1],r):[n,t]},r.padding=function(s){return arguments.length?(e=+s,r):e},r}var qw={depth:-1},cd={},Pc={};function jw(n){return n.id}function Zw(n){return n.parentId}function Ec(){var n=jw,t=Zw,e;function i(r){var o=Array.from(r),s=n,a=t,l,c,h,f,u,d,p,y,g=new Map;if(e!=null){const m=o.map((b,k)=>Kw(e(b,k,r))),x=m.map(ld),v=new Set(m).add("");for(const b of x)v.has(b)||(v.add(b),m.push(b),x.push(ld(b)),o.push(Pc));s=(b,k)=>m[k],a=(b,k)=>x[k]}for(h=0,l=o.length;h<l;++h)c=o[h],d=o[h]=new ji(c),(p=s(c,h,r))!=null&&(p+="")&&(y=d.id=p,g.set(y,g.has(y)?cd:d)),(p=a(c,h,r))!=null&&(p+="")&&(d.parent=p);for(h=0;h<l;++h)if(d=o[h],p=d.parent){if(u=g.get(p),!u)throw new Error("missing: "+p);if(u===cd)throw new Error("ambiguous: "+p);u.children?u.children.push(d):u.children=[d],d.parent=u}else{if(f)throw new Error("multiple roots");f=d}if(!f)throw new Error("no root");if(e!=null){for(;f.data===Pc&&f.children.length===1;)f=f.children[0],--l;for(let m=o.length-1;m>=0&&(d=o[m],d.data===Pc);--m)d.data=null}if(f.parent=qw,f.eachBefore(function(m){m.depth=m.parent.depth+1,--l}).eachBefore(rd),f.parent=null,l>0)throw new Error("cycle");return f}return i.id=function(r){return arguments.length?(n=Cc(r),i):n},i.parentId=function(r){return arguments.length?(t=Cc(r),i):t},i.path=function(r){return arguments.length?(e=Cc(r),i):e},i}function Kw(n){n=`${n}`;let t=n.length;return Tc(n,t-1)&&!Tc(n,t-2)&&(n=n.slice(0,-1)),n[0]==="/"?n:`/${n}`}function ld(n){let t=n.length;if(t<2)return"";for(;--t>1&&!Tc(n,t););return n.slice(0,t)}function Tc(n,t){if(n[t]==="/"){let e=0;for(;t>0&&n[--t]==="\\";)++e;if(!(e&1))return!0}return!1}function Jw(n,t){return n.parent===t.parent?1:2}function $c(n){var t=n.children;return t?t[0]:n.t}function Lc(n){var t=n.children;return t?t[t.length-1]:n.t}function Qw(n,t,e){var i=e/(t.i-n.i);t.c-=i,t.s+=e,n.c+=i,t.z+=e,t.m+=e}function tk(n){for(var t=0,e=0,i=n.children,r=i.length,o;--r>=0;)o=i[r],o.z+=t,o.m+=t,t+=o.s+(e+=o.c)}function ek(n,t,e){return n.a.parent===t.parent?n.a:e}function fs(n,t){this._=n,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=t}fs.prototype=Object.create(ji.prototype);function nk(n){for(var t=new fs(n,0),e,i=[t],r,o,s,a;e=i.pop();)if(o=e._.children)for(e.children=new Array(a=o.length),s=a-1;s>=0;--s)i.push(r=e.children[s]=new fs(o[s],s)),r.parent=e;return(t.parent=new fs(null,0)).children=[t],t}function ik(){var n=Jw,t=1,e=1,i=null;function r(c){var h=nk(c);if(h.eachAfter(o),h.parent.m=-h.z,h.eachBefore(s),i)c.eachBefore(l);else{var f=c,u=c,d=c;c.eachBefore(function(x){x.x<f.x&&(f=x),x.x>u.x&&(u=x),x.depth>d.depth&&(d=x)});var p=f===u?1:n(f,u)/2,y=p-f.x,g=t/(u.x+p+y),m=e/(d.depth||1);c.eachBefore(function(x){x.x=(x.x+y)*g,x.y=x.depth*m})}return c}function o(c){var h=c.children,f=c.parent.children,u=c.i?f[c.i-1]:null;if(h){tk(c);var d=(h[0].z+h[h.length-1].z)/2;u?(c.z=u.z+n(c._,u._),c.m=c.z-d):c.z=d}else u&&(c.z=u.z+n(c._,u._));c.parent.A=a(c,u,c.parent.A||f[0])}function s(c){c._.x=c.z+c.parent.m,c.m+=c.parent.m}function a(c,h,f){if(h){for(var u=c,d=c,p=h,y=u.parent.children[0],g=u.m,m=d.m,x=p.m,v=y.m,b;p=Lc(p),u=$c(u),p&&u;)y=$c(y),d=Lc(d),d.a=c,b=p.z+x-u.z-g+n(p._,u._),b>0&&(Qw(ek(p,c,f),c,b),g+=b,m+=b),x+=p.m,g+=u.m,v+=y.m,m+=d.m;p&&!Lc(d)&&(d.t=p,d.m+=x-m),u&&!$c(y)&&(y.t=u,y.m+=g-v,f=c)}return f}function l(c){c.x*=t,c.y=c.depth*e}return r.separation=function(c){return arguments.length?(n=c,r):n},r.size=function(c){return arguments.length?(i=!1,t=+c[0],e=+c[1],r):i?null:[t,e]},r.nodeSize=function(c){return arguments.length?(i=!0,t=+c[0],e=+c[1],r):i?[t,e]:null},r}function Tr(n,t,e,i,r){for(var o=n.children,s,a=-1,l=o.length,c=n.value&&(r-e)/n.value;++a<l;)s=o[a],s.x0=t,s.x1=i,s.y0=e,s.y1=e+=s.value*c}var rk=(1+Math.sqrt(5))/2;function ok(n,t,e,i,r,o){for(var s=[],a=t.children,l,c,h=0,f=0,u=a.length,d,p,y=t.value,g,m,x,v,b,k,M;h<u;){d=r-e,p=o-i;do g=a[f++].value;while(!g&&f<u);for(m=x=g,k=Math.max(p/d,d/p)/(y*n),M=g*g*k,b=Math.max(x/M,M/m);f<u;++f){if(g+=c=a[f].value,c<m&&(m=c),c>x&&(x=c),M=g*g*k,v=Math.max(x/M,M/m),v>b){g-=c;break}b=v}s.push(l={value:g,dice:d<p,children:a.slice(h,f)}),l.dice?us(l,e,i,r,y?i+=p*g/y:o):Tr(l,e,i,y?e+=d*g/y:r,o),y-=g,h=f}return s}const ds=function n(t){function e(i,r,o,s,a){ok(t,i,r,o,s,a)}return e.ratio=function(i){return n((i=+i)>1?i:1)},e}(rk);function sk(){var n=ds,t=!1,e=1,i=1,r=[0],o=Pr,s=Pr,a=Pr,l=Pr,c=Pr;function h(u){return u.x0=u.y0=0,u.x1=e,u.y1=i,u.eachBefore(f),r=[0],t&&u.eachBefore(sd),u}function f(u){var d=r[u.depth],p=u.x0+d,y=u.y0+d,g=u.x1-d,m=u.y1-d;g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),u.x0=p,u.y0=y,u.x1=g,u.y1=m,u.children&&(d=r[u.depth+1]=o(u)/2,p+=c(u)-d,y+=s(u)-d,g-=a(u)-d,m-=l(u)-d,g<p&&(p=g=(p+g)/2),m<y&&(y=m=(y+m)/2),n(u,p,y,g,m))}return h.round=function(u){return arguments.length?(t=!!u,h):t},h.size=function(u){return arguments.length?(e=+u[0],i=+u[1],h):[e,i]},h.tile=function(u){return arguments.length?(n=od(u),h):n},h.padding=function(u){return arguments.length?h.paddingInner(u).paddingOuter(u):h.paddingInner()},h.paddingInner=function(u){return arguments.length?(o=typeof u=="function"?u:Er(+u),h):o},h.paddingOuter=function(u){return arguments.length?h.paddingTop(u).paddingRight(u).paddingBottom(u).paddingLeft(u):h.paddingTop()},h.paddingTop=function(u){return arguments.length?(s=typeof u=="function"?u:Er(+u),h):s},h.paddingRight=function(u){return arguments.length?(a=typeof u=="function"?u:Er(+u),h):a},h.paddingBottom=function(u){return arguments.length?(l=typeof u=="function"?u:Er(+u),h):l},h.paddingLeft=function(u){return arguments.length?(c=typeof u=="function"?u:Er(+u),h):c},h}function ak(n,t,e,i,r){var o=n.children,s,a=o.length,l,c=new Array(a+1);for(c[0]=l=s=0;s<a;++s)c[s+1]=l+=o[s].value;h(0,a,n.value,t,e,i,r);function h(f,u,d,p,y,g,m){if(f>=u-1){var x=o[f];x.x0=p,x.y0=y,x.x1=g,x.y1=m;return}for(var v=c[f],b=d/2+v,k=f+1,M=u-1;k<M;){var C=k+M>>>1;c[C]<b?k=C+1:M=C}b-c[k-1]<c[k]-b&&f+1<k&&--k;var L=c[k]-v,_=d-L;if(g-p>m-y){var $=d?(p*_+g*L)/d:g;h(f,k,L,p,y,$,m),h(k,u,_,$,y,g,m)}else{var I=d?(y*_+m*L)/d:m;h(f,k,L,p,y,g,I),h(k,u,_,p,I,g,m)}}}function $r(n,t,e,i,r){(n.depth&1?Tr:us)(n,t,e,i,r)}function ck(n,t,e){return n?n.split(/<br\s*\/?>/i).map(r=>{const o=[],s=/<b(?:\s+style="([^"]*)")?\s*>([\s\S]*?)<\/b>/gi;let a=0,l;for(;(l=s.exec(r))!==null;){if(l.index>a){const d=fe(r.slice(a,l.index));d&&o.push({text:d,fontSize:t,fontWeight:e})}const c=l[1]||"",h=c.match(/font-size\s*:\s*([^;"]+)/i),f=c.match(/font-weight\s*:\s*([^;"]+)/i),u=fe(l[2]);u&&o.push({text:u,fontSize:h?h[1].trim():t,fontWeight:f?f[1].trim():"bold"}),a=l.index+l[0].length}if(a<r.length){const c=fe(r.slice(a));c&&o.push({text:c,fontSize:t,fontWeight:e})}return o}):[]}function lk(n){return n===void 0?4:typeof n=="number"?n:n.radius??4}class hk extends Ut{constructor(t){super(t),this.currentRoot=null}render(){var $,I,E;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.config.levels||[],s=this.config.colorByPoint!==!1,a=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,l=this.config.interactByLeaf??!a,c=this.config.alternateStartingDirection===!0,h=((I=($=this.config.states)==null?void 0:$.inactive)==null?void 0:I.opacity)??.4,f=this.buildHierarchy(r),u=a&&this.currentRoot?this.currentRoot:f,d={squarify:ds,squarified:ds,binary:ak,dice:us,slice:Tr,sliceDice:$r,sliceAndDice:$r,strip:Tr,stripes:Tr},p=this.config.layoutAlgorithm||"squarified",y=d[p]||ds,g=this.config.layoutStartingDirection||"vertical",m=this.config.opacity??1,x=c||p==="sliceAndDice"||p==="sliceDice"?$r:y,v=(P,S)=>{var T,R;const w=((T=P.data)==null?void 0:T.sortIndex)??0,A=((R=S.data)==null?void 0:R.sortIndex)??0;return w!==A?w-A:(S.value||0)-(P.value||0)};u.sort(v),sk().size([t.width,t.height]).tile(x).padding(1)(u);const b=a&&!l&&u.children||u.leaves(),k=P=>o.find(S=>S.level===P),C=(((E=this.config.colorAxis)==null?void 0:E.dataClasses)||[]).map(P=>P.color),L=(P,S)=>{var A,T,R,F,D;if(P.data.color)return P.data.color;const w=k(P.depth);if(w!=null&&w.color){const z=w.colorVariation;if((z==null?void 0:z.key)==="brightness"&&((A=P.parent)!=null&&A.children)){const B=P.parent.children,H=B.indexOf(P),J=B.length,X=J>1?-.5+H/(J-1)*(z.to??.5):0,j=si(((T=oe(w.color))==null?void 0:T.toString())||w.color);return j.l=Math.max(.1,Math.min(.95,j.l+X*.3)),j.toString()}return w.color}if(C.length>0)return C[S%C.length];if(s){const z=e[S%e.length],B=P.parent?k(P.parent.depth):void 0;if(((R=B==null?void 0:B.colorVariation)==null?void 0:R.key)==="brightness"){const H=((F=P.parent)==null?void 0:F.children)||[],J=H.indexOf(P),X=H.length,j=B.colorVariation.to??.5,W=X>1?J/(X-1)*j:j*.5,U=si(((D=oe(z))==null?void 0:D.toString())||z);return U.l=Math.max(.1,Math.min(.95,U.l+W*.3)),U.toString()}return z}return this.getColor()},_=this.group.selectAll(".katucharts-treemap-cell").data(b).join("rect").attr("class","katucharts-treemap-cell").attr("x",P=>P.x0).attr("y",P=>P.y0).attr("width",P=>Math.max(0,P.x1-P.x0)).attr("height",P=>Math.max(0,P.y1-P.y0)).attr("fill",(P,S)=>{const w=L(P,S);return P._color=w,w}).attr("stroke",P=>{const S=k(P.depth);return(S==null?void 0:S.borderColor)||this.config.borderColor||this.autoBorderColor()}).attr("stroke-width",P=>{const S=k(P.depth);return(S==null?void 0:S.borderWidth)??this.config.borderWidth??1}).attr("rx",lk(this.config.borderRadius)).style("cursor",this.config.cursor||"pointer");i?_.attr("opacity",0).transition().duration(bt).ease(pt).delay((P,S)=>Ce(S,0,Wt,b.length)).attr("opacity",m):m!==1&&_.attr("opacity",m),this.config.enableMouseTracking!==!1&&_.on("mouseover",(P,S)=>{var D,z,B,H,J,X;const w=rt(P.currentTarget),A=w.attr("fill"),T=((z=(D=this.config.states)==null?void 0:D.hover)==null?void 0:z.brightness)??.3,R=((H=(B=oe(A))==null?void 0:B.brighter(T))==null?void 0:H.toString())||A;w.transition("fill").duration(K).ease(Z).attr("fill",R),w.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.2))"),_.interrupt("highlight"),_.attr("opacity",1),_.filter(j=>j!==S).transition("highlight").duration(K).ease(Z).attr("opacity",h);const F=b.indexOf(S);this.context.events.emit("point:mouseover",{point:S.data,index:F,series:this,event:P,plotX:(S.x0+S.x1)/2,plotY:(S.y0+S.y1)/2}),(X=(J=S.data.events)==null?void 0:J.mouseOver)==null||X.call(S.data,P)}).on("mouseout",(P,S)=>{var R,F;const w=rt(P.currentTarget),A=b.indexOf(S),T=L(S,A);w.transition("fill").duration(K).ease(Z).attr("fill",T),w.style("filter",""),_.interrupt("highlight"),_.transition("highlight").duration(K).ease(Z).attr("opacity",1),this.context.events.emit("point:mouseout",{point:S.data,index:A,series:this,event:P}),(F=(R=S.data.events)==null?void 0:R.mouseOut)==null||F.call(S.data,P)}).on("click",(P,S)=>{var A,T,R,F;const w=b.indexOf(S);if(a&&S.children){this.currentRoot=S,this.group.selectAll("*").remove(),this.render();return}this.context.events.emit("point:click",{point:S.data,index:w,series:this,event:P}),(T=(A=S.data.events)==null?void 0:A.click)==null||T.call(S.data,P),(F=(R=this.config.events)==null?void 0:R.click)==null||F.call(this,P)}),a&&this.currentRoot&&this.currentRoot!==f&&this.renderBreadcrumbs(t,f),this.renderLabels(b,k)}buildHierarchy(t){if(t.some(i=>i.children&&i.children.length>0)){const i=r=>r.map(o=>{const s={...o,value:o.y??o.value??(o.children?0:1)};return s.children&&(s.children=i(s.children)),s});return qi({children:i(t)}).sum(r=>r.children?0:r.value||0)}return qi({children:t.map(i=>({...i,value:i.y??i.value??1}))}).sum(i=>i.value||0)}renderBreadcrumbs(t,e){const i=this.config.breadcrumbs||{},r=i.position||{},o=r.x??0,s=r.y??-20,a=i.separator??" / ",l=i.style||{},c=l.fontSize||"11px",h=l.color||ye,f=[];let u=this.currentRoot;for(;u;)f.unshift(u),u=u.parent;const d=this.group.append("g").attr("class","katucharts-treemap-breadcrumbs").attr("transform",`translate(${o},${s})`);let p=0;f.forEach((y,g)=>{var k,M,C;const m=((k=y.data)==null?void 0:k.name)||(g===0?"Root":`Level ${g}`),x=g===f.length-1,v=d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",x?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",x?"default":"pointer").style("text-decoration",x?"none":"underline").text(m);x||v.on("click",()=>{this.currentRoot=y===e?null:y,this.group.selectAll("*").remove(),this.render()});const b=((C=(M=v.node())==null?void 0:M.getComputedTextLength)==null?void 0:C.call(M))||m.length*7;p+=b,x||(d.append("text").attr("x",p).attr("y",0).attr("font-size",c).attr("fill",h).attr("dominant-baseline","middle").style("pointer-events","none").text(a),p+=a.length*5)})}renderLabels(t,e){var u,d,p;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((u=i.style)==null?void 0:u.fontSize)||wt,s=i.color||((d=i.style)==null?void 0:d.color)||void 0,a=((p=i.style)==null?void 0:p.fontWeight)||"normal",l=i.align||"left",c=i.verticalAlign||"top",h=i.x??4,f=i.y??4;this.group.selectAll(".katucharts-treemap-label").remove(),t.forEach((y,g)=>{const m=e(y.depth),x=m==null?void 0:m.dataLabels;if((x==null?void 0:x.enabled)===!1)return;const v=y.x1-y.x0,b=y.y1-y.y0;if(v<30||b<16)return;let k="";if(i.formatter)k=i.formatter.call({point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value});else{const P=i.format||i.pointFormat;P?k=Zt(P,{point:y.data,series:{name:this.config.name},x:y.data.x,y:y.data.y??y.data.value}):k=y.data.name||""}const M=ck(k,o,a);let C;l==="right"?C=y.x1-h:l==="center"?C=(y.x0+y.x1)/2:C=y.x0+h;const L=l==="right"?"end":l==="center"?"middle":"start";let _;c==="bottom"?_=y.y1-f:c==="middle"?_=(y.y0+y.y1)/2:_=y.y0+f;const $=this.group.append("text").attr("class","katucharts-treemap-label").attr("x",C).attr("text-anchor",L).attr("fill",Pn(y._color,s)).style("pointer-events","none");let I=_;M.forEach((P,S)=>{if(P.length===0)return;const w=P.map(T=>xe(T.fontSize)),A=Math.max(...w)*1.15;I+=A,P.forEach((T,R)=>{const F=$.append("tspan").attr("font-size",T.fontSize).attr("font-weight",T.fontWeight).text(T.text);R===0&&F.attr("x",C).attr("y",I)})}),this.context.animate&&$.attr("opacity",0).transition().duration(bt).ease(pt).delay(Kn+g*Wt).attr("opacity",1);const E=$.node();if(E)try{const P=E.getBBox();(P.height+f>b||P.width+h>v)&&P.height>b-f&&$.remove()}catch{}})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class uk extends Ut{constructor(t){super(t),this.currentRoot=null,t.showInLegend=!1}render(){var H,J,X,j,W;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config.levels||[],o=this.config.allowTraversingTree===!0||this.config.allowDrillToNode===!0,s=this.config.slicedOffset??0,a=((J=(H=this.config.states)==null?void 0:H.inactive)==null?void 0:J.opacity)??.4,l=this.config.center||["50%","50%"],c=this.resolvePercent(l[0],t.width),h=this.resolvePercent(l[1],t.height),f=this.config.size,u=Math.min(t.width,t.height),d=f?this.resolvePercent(f,u)/2-5:u/2-5,p=this.config.startAngle??0,y=this.config.endAngle??360,g=p*Math.PI/180,x=y*Math.PI/180-g,v=(X=this.group.node())==null?void 0:X.parentElement;v&&rt(v).attr("clip-path",null);const b=this.buildHierarchy(g,x),k=this.config.rootId;let M=b;o&&this.currentRoot?M=this.currentRoot:k&&b.each(U=>{var G;((G=U.data)==null?void 0:G.id)===k&&(M=U)});const C=this.getMaxDepth(M),L=this.config.levelIsConstant!==!1,_=this.computeRingWidths(d,C,r);this.applyCustomRadii(M,_,L),this.assignColors(M,e,r);const $=this.config.borderRadius!==void 0?this.resolveBorderRadius(this.config.borderRadius):0,I=_e().startAngle(U=>U.x0).endAngle(U=>U.x1).innerRadius(U=>U._y0).outerRadius(U=>U._y1).padAngle(.005).cornerRadius($),E=this.group.append("g").attr("transform",`translate(${c},${h})`),P=M.descendants(),S=P[0],w=P.filter(U=>U.depth>0),A=S._y1||S.y1,T=S.data.color||this.getColor()||"#ffffff",R=si(T),F=R&&!isNaN(R.h)?si(R.h,R.s*.4,.88).toString():T,D=E.append("circle").attr("r",A).attr("fill",F).attr("stroke","none").style("cursor",o?"pointer":"default");if(o&&this.currentRoot&&this.currentRoot!==b&&(E.select("circle").on("click",()=>{var U;this.currentRoot=((U=this.currentRoot)==null?void 0:U.parent)||null,this.group.selectAll("*").remove(),this.render()}),this.renderBreadcrumbs(b)),this.config.enableMouseTracking!==!1){const U=this,G="#f0f0f0";D.on("mouseover",function(N){rt(this).transition("fill").duration(K).ease(Z).attr("fill",G),rt(this).style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.15))"),U.context.events.emit("point:mouseover",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:U,event:N,plotX:c,plotY:h})}).on("mouseout",function(N){rt(this).transition("fill").duration(K).ease(Z).attr("fill",F),rt(this).style("filter",""),U.context.events.emit("point:mouseout",{point:{...S.data,value:S.value,y:S.value??S.data.value},index:-1,series:U,event:N})})}if(A>15){const U=this.config.name||((j=S.data)==null?void 0:j.name)||"";if(U){const G=((W=this.config.dataLabels)==null?void 0:W.style)||{},N=Pn(F,G.color),Y=G.textOutline,O=E.append("text").attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",A>35?"13px":"10px").attr("font-weight","bold").attr("fill",N).style("pointer-events","none").text(U);if(Y){const ct=Y.split(/\s+/);O.style("paint-order","stroke fill").attr("stroke",ct.length>=2?ct.slice(1).join(" "):"white").attr("stroke-width",parseFloat(Y)||0).attr("stroke-linejoin","round")}}}const z=E.selectAll(".katucharts-sunburst-arc").data(w).join("path").attr("class","katucharts-sunburst-arc").attr("fill",U=>U._color).attr("stroke",U=>{const G=r.find(N=>N.level===U.depth);return(G==null?void 0:G.borderColor)||U._color}).attr("stroke-width",U=>{const G=r.find(N=>N.level===U.depth);return G!=null&&G.borderColor?(G==null?void 0:G.borderWidth)??1:.5}).attr("shape-rendering","geometricPrecision").style("cursor","pointer");s>0&&z.each(function(U){if(U.data.sliced){const G=(U.x0+U.x1)/2,N=s*Math.sin(G),Y=-s*Math.cos(G);rt(this).attr("transform",`translate(${N},${Y})`)}}),i?z.each(function(U,G){const N=rt(this),Y={x0:U.x0,x1:U.x0,_y0:U._y0,_y1:U._y1},O={x0:U.x0,x1:U.x1,_y0:U._y0,_y1:U._y1},ct=ae(Y,O);N.transition().duration(bt).ease(pt).delay(Gf+G*Wt).attrTween("d",()=>it=>I(ct(it)))}):z.attr("d",I);const B=new Set;for(const U of w)U.depth>1&&B.add(U._y0);for(const U of B)E.append("circle").attr("r",U).attr("fill","none").attr("stroke",this.autoBorderColor()).attr("stroke-width",2).style("pointer-events","none");if(this.renderLabels(E,w,r),this.config.enableMouseTracking!==!1){const U=this;z.on("mouseover",function(G,N){var ft,dt,at,ot;const Y=rt(this),O=((dt=(ft=oe(N._color))==null?void 0:ft.brighter(.3))==null?void 0:dt.toString())||N._color;Y.transition("fill").duration(K).ease(Z).attr("fill",O),Y.style("filter","drop-shadow(0 1px 3px rgba(0,0,0,0.2))"),z.interrupt("highlight"),z.attr("opacity",1),z.filter(q=>q!==N&&!U.isAncestorOf(q,N)).transition("highlight").duration(K).ease(Z).attr("opacity",a);const ct=w.indexOf(N),it=I.centroid(N);U.context.events.emit("point:mouseover",{point:{...N.data,value:N.value,y:N.value??N.data.value},index:ct,series:U,event:G,plotX:c+it[0],plotY:h+it[1]}),(ot=(at=N.data.events)==null?void 0:at.mouseOver)==null||ot.call(N.data,G)}).on("mouseout",function(G,N){var ct,it;const Y=rt(this);Y.transition("fill").duration(K).ease(Z).attr("fill",N._color),Y.style("filter",""),z.interrupt("highlight"),z.transition("highlight").duration(K).ease(Z).attr("opacity",1);const O=w.indexOf(N);U.context.events.emit("point:mouseout",{point:{...N.data,value:N.value,y:N.value??N.data.value},index:O,series:U,event:G}),(it=(ct=N.data.events)==null?void 0:ct.mouseOut)==null||it.call(N.data,G)}).on("click",function(G,N){var O,ct,it,ft;const Y=w.indexOf(N);if(o&&N.children&&N.children.length>0){U.currentRoot=N,ad().size([x,1])(U.currentRoot),g!==0&&U.currentRoot.each(dt=>{dt.x0+=g,dt.x1+=g}),U.group.selectAll("*").remove(),U.render();return}U.context.events.emit("point:click",{point:N.data,index:Y,series:U,event:G}),(ct=(O=N.data.events)==null?void 0:O.click)==null||ct.call(N.data,G),(ft=(it=U.config.events)==null?void 0:it.click)==null||ft.call(U,G)})}}isAncestorOf(t,e){let i=e;for(;i;){if(i===t)return!0;i=i.parent}return!1}buildHierarchy(t=0,e=2*Math.PI){const i=this.data,r=i.length>0&&(i[0].id!==void 0||i[0].parent!==void 0);let o;if(r){const s=i.map(l=>({...l,id:l.id||l.name||String(i.indexOf(l)),parentId:l.parent||null,value:l.y??l.value??void 0}));s.some(l=>!l.parentId||l.parentId==="")?s.forEach(l=>{(!l.parentId||l.parentId==="")&&(l.parentId=null)}):(s.unshift({id:"__root__",parentId:null,name:"Root",value:void 0}),s.forEach(l=>{l.id!=="__root__"&&(!l.parentId||l.parentId==="")&&(l.parentId="__root__")})),o=Ec().id(l=>l.id).parentId(l=>l.parentId)(s),o.sum(l=>l.children?0:l.value??0)}else o=qi({children:this.prepareNestedData(i)}).sum(s=>s.children?0:s.value||0);return ad().size([e,1])(o),t!==0&&o.each(s=>{s.x0+=t,s.x1+=t}),o}prepareNestedData(t){return t.map(e=>{const i={...e,value:e.y??e.value??1};return i.children&&(i.children=this.prepareNestedData(i.children)),i})}getMaxDepth(t){let e=0;return t.each(i=>{i.depth>e&&(e=i.depth)}),e}computeRingWidths(t,e,i){const r=[],o=this.config.levelSize;for(let c=0;c<=e;c++){const h=i.find(f=>f.level===c);h!=null&&h.levelSize?r.push({value:h.levelSize.value,unit:h.levelSize.unit}):o!=null&&o.unit&&(o!=null&&o.value)?r.push({value:o.value,unit:o.unit}):r.push({value:1,unit:"weight"})}let s=t;const a=new Array(e+1).fill(0);for(let c=0;c<=e;c++)r[c].unit==="pixels"&&(a[c]=r[c].value,s-=a[c]);for(let c=0;c<=e;c++)r[c].unit==="percentage"&&(a[c]=r[c].value/100*t,s-=a[c]);let l=0;for(let c=0;c<=e;c++)r[c].unit==="weight"&&(l+=r[c].value);if(l>0&&s>0)for(let c=0;c<=e;c++)r[c].unit==="weight"&&(a[c]=r[c].value/l*s);return a}applyCustomRadii(t,e,i=!0){const r=[0];for(let s=0;s<e.length;s++)r.push(r[s]+e[s]);const o=i?0:t.depth;t.each(s=>{const a=s.depth-o;s._y0=r[a]||0,s._y1=r[a+1]||r[r.length-1]})}assignColors(t,e,i){var l;let r=0;t._color=t.data.color||"transparent";const s=((l=i.find(c=>c.colorByPoint))==null?void 0:l.level)??1,a=c=>{if(c.depth===0)c._color=c.data.color||"transparent";else if(c.data.color)c._color=c.data.color;else if(c.depth===s)c._color=e[r++%e.length];else if(c.depth>s&&c.parent){const h=i.find(d=>d.level===c.depth),f=h==null?void 0:h.colorVariation,u=oe(c.parent._color);if(u&&(f==null?void 0:f.key)==="brightness"){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?p/(y-1)*f.to:f.to*.5,m=si(u.toString());m.l=Math.max(.1,Math.min(.95,m.l+g*.3)),c._color=m.toString()}else if(u){const d=c.parent.children||[],p=d.indexOf(c),y=d.length,g=y>1?-.3+p/(y-1)*.6:0;c._color=u.brighter(g).toString()}else c._color=c.parent._color}else c.depth<s&&c.parent&&(c._color=c.parent._color!=="transparent"?c.parent._color:e[r++%e.length]);if(c.children)for(const h of c.children)a(h)};a(t)}renderLabels(t,e,i){var g;const o=this.config.dataLabels,s=(o==null?void 0:o.rotationMode)||"auto",a=(o==null?void 0:o.style)||{},l=a.fontSize||wt,c=a.textOutline,h=o==null?void 0:o.filter,f=m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.textOutline)||c},d=((g=i.find(m=>m.colorByPoint))==null?void 0:g.level)??1,p=m=>{let x=m;for(;x.depth>d&&x.parent;)x=x.parent;return x._color},y=m=>{var b,k;const x=i.find(M=>M.level===m.depth),v=((k=(b=x==null?void 0:x.dataLabels)==null?void 0:b.style)==null?void 0:k.color)||a.color;return Pn(p(m),v)};t.selectAll(".katucharts-sunburst-label").data(e).join("text").attr("class","katucharts-sunburst-label").attr("transform",m=>{var I;const x=i.find(E=>E.level===m.depth),v=((I=x==null?void 0:x.dataLabels)==null?void 0:I.rotationMode)||s,b=(m.x0+m.x1)/2,k=(m._y0+m._y1)/2,M=b*180/Math.PI-90,C=b<Math.PI/2||b>Math.PI*3/2,L=b>Math.PI;if(v==="parallel")return`rotate(${M}) translate(${k},0) rotate(${C?90:-90})`;if(v==="perpendicular")return`rotate(${M}) translate(${k},0)${L?" rotate(180)":""}`;const _=m._y1*(m.x1-m.x0),$=m._y1-m._y0;return _>$*2?`rotate(${M}) translate(${k},0) rotate(${C?90:-90})`:`rotate(${M}) translate(${k},0)${L?" rotate(180)":""}`}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",m=>{var v,b;const x=i.find(k=>k.level===m.depth);return((b=(v=x==null?void 0:x.dataLabels)==null?void 0:v.style)==null?void 0:b.fontSize)||l}).attr("font-weight","bold").attr("fill",m=>y(m)).style("paint-order","stroke fill").attr("stroke",m=>{const x=f(m);if(!x)return"none";const v=x.split(/\s+/);return v.length>=2?v.slice(1).join(" "):"white"}).attr("stroke-width",m=>{const x=f(m);return x&&parseFloat(x)||0}).attr("stroke-linejoin","round").style("pointer-events","none").each(function(m){var B,H,J,X,j;const x=rt(this);x.selectAll("tspan").remove();const v=i.find(W=>W.level===m.depth);if(((B=v==null?void 0:v.dataLabels)==null?void 0:B.enabled)===!1)return;const b=((H=v==null?void 0:v.dataLabels)==null?void 0:H.filter)||h,k=m._y1*(m.x1-m.x0),M=m._y0*(m.x1-m.x0),C=m._y1-m._y0;if(b){const W=b.property==="outerArcLength"?k:b.property==="innerArcLength"?M:0;if(b.operator===">"&&W<=b.value||b.operator==="<"&&W>=b.value)return}else if(k<16)return;const L=m.data.name||"",_=((J=v==null?void 0:v.dataLabels)==null?void 0:J.rotationMode)||s,$=_==="parallel"||_==="auto"&&k>C*2,I=$?(k+M)/2:C,E=$?C:(k+M)/2,P=parseFloat(((j=(X=v==null?void 0:v.dataLabels)==null?void 0:X.style)==null?void 0:j.fontSize)||l)||11,S=P*.6,w=Math.max(3,Math.floor(I/S)),A=Math.max(1,Math.floor(E/(P*1.2)));if(L.length<=w){x.text(L);return}const T=L.split(/[\s_-]+/),R=[];let F="";for(const W of T){const U=F?F+" "+W:W;if(U.length<=w?F=U:(F&&R.push(F),F=W.length>w?W.substring(0,w-1)+"…":W),R.length>=A)break}if(F&&R.length<A&&R.push(F),R.length===0)return;if(R.length>A&&(R.length=A),R.length===A&&F&&!R[R.length-1].endsWith("…")&&T.slice(R.join(" ").split(/[\s]+/).length).length>0){const U=R[R.length-1];U.length+2>w&&(R[R.length-1]=U.substring(0,w-1)+"…")}const z=-(R.length*P*1.2-P*1.2)/2;R.forEach((W,U)=>{x.append("tspan").attr("x",0).attr("dy",U===0?`${z}px`:`${P*1.2}px`).text(W)})})}renderBreadcrumbs(t){const e=this.config.breadcrumbs||{},r=(e.style||{}).fontSize||"11px",o=e.separator??" / ",s=[];let a=this.currentRoot;for(;a;)s.unshift(a),a=a.parent;const l=this.group.append("g").attr("class","katucharts-sunburst-breadcrumbs").attr("transform","translate(0,-15)");let c=0;s.forEach((h,f)=>{var g,m,x;const u=((g=h.data)==null?void 0:g.name)||(f===0?"Root":`Level ${f}`),d=f===s.length-1,p=l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill",d?"#999":"#2f7ed8").attr("dominant-baseline","middle").style("cursor",d?"default":"pointer").style("text-decoration",d?"none":"underline").text(u);d||p.on("click",()=>{this.currentRoot=h===t?null:h,this.group.selectAll("*").remove(),this.render()});const y=((x=(m=p.node())==null?void 0:m.getComputedTextLength)==null?void 0:x.call(m))||u.length*7;c+=y,d||(l.append("text").attr("x",c).attr("y",0).attr("font-size",r).attr("fill","#666").attr("dominant-baseline","middle").style("pointer-events","none").text(o),c+=o.length*5)})}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}resolveBorderRadius(t){return t===void 0?3:typeof t=="number"?t:t.radius??3}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class fk extends Ut{constructor(t){super(t)}render(){var G,N,Y;const{plotArea:t}=this.context,e=this.context.animate,i=t.width/2,r=this.config.pane||{},o=r.startAngle??-90,s=r.endAngle??90,a=o*Math.PI/180,l=s*Math.PI/180,c=Math.abs(s-o)<=180,h=c?t.height*.62:t.height/2,f=c?Math.min(t.width/2,h)-20:Math.min(t.width,t.height)/2-20,u=((G=this.config._yAxis??this.config.yAxis)==null?void 0:G.min)??this.config.min??0,d=((N=this.config._yAxis??this.config.yAxis)==null?void 0:N.max)??this.config.max??100,p=((Y=this.data[0])==null?void 0:Y.y)??0,y=this.config.wrap!==!1,g=this.config.overshoot??0;let m=p;if(y){const O=d-u;O>0&&(m=u+((p-u)%O+O)%O)}const x=g*Math.PI/180;let b=we().domain([u,d]).range([a,l]).clamp(!y&&g<=0)(m);if(!y&&g>0){const O=a-x,ct=l+x;b=Math.max(O,Math.min(ct,b))}const k=this.group.append("g").attr("transform",`translate(${i},${h})`);this.renderPaneBackground(k,f,a,l,r);const M=f*.15,C=_e().innerRadius(f-M).outerRadius(f).startAngle(a).endAngle(l).cornerRadius(M/2);k.append("path").attr("d",C({})).attr("fill","#ddd"),this.renderPlotBands(k,f,a,l,u,d,M),this.renderTickMarks(k,f,a,l,u,d,M);const L=this.config.dial||{},_=this.config.pivot||{},$=L.backgroundColor||"#333",I=L.borderColor||"none",E=L.borderWidth??0,P=L.baseWidth??8,S=L.topWidth??1,w=this.resolvePercent(L.radius??"80%",f),A=this.resolvePercent(L.rearLength??"15%",f),T=b-Math.PI/2,R=w*Math.cos(T),F=w*Math.sin(T),D=-A*Math.cos(T),z=-A*Math.sin(T),B=T+Math.PI/2,H=P/2,J=S/2,X=[`M${D+H*Math.cos(B)},${z+H*Math.sin(B)}`,`L${R+J*Math.cos(B)},${F+J*Math.sin(B)}`,`L${R-J*Math.cos(B)},${F-J*Math.sin(B)}`,`L${D-H*Math.cos(B)},${z-H*Math.sin(B)}`,"Z"].join(" "),j=k.append("path").attr("fill",$).attr("stroke",I).attr("stroke-width",E).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))").style("cursor","pointer");if(e){const O=this.buildNeedlePath(a,w,A,P,S);j.attr("d",O).transition().duration(bt).ease(pt).attrTween("d",()=>{const ct=ae(a,b);return it=>this.buildNeedlePath(ct(it),w,A,P,S)})}else j.attr("d",X);if(this.config.enableMouseTracking!==!1){const O=E;j.on("mouseover",ct=>{var it,ft,dt;j.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",O+2),j.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.4))"),this.context.events.emit("point:mouseover",{point:this.data[0],index:0,series:this,event:ct,plotX:i,plotY:h}),(dt=(ft=(it=this.data[0])==null?void 0:it.events)==null?void 0:ft.mouseOver)==null||dt.call(this.data[0],ct)}).on("mouseout",ct=>{var it,ft,dt;j.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",O),j.style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.3))"),this.context.events.emit("point:mouseout",{point:this.data[0],index:0,series:this,event:ct}),(dt=(ft=(it=this.data[0])==null?void 0:it.events)==null?void 0:ft.mouseOut)==null||dt.call(this.data[0],ct)}).on("click",ct=>{var it,ft,dt,at,ot;this.context.events.emit("point:click",{point:this.data[0],index:0,series:this,event:ct}),(dt=(ft=(it=this.data[0])==null?void 0:it.events)==null?void 0:ft.click)==null||dt.call(this.data[0],ct),(ot=(at=this.config.events)==null?void 0:at.click)==null||ot.call(this,ct)})}const W=_.radius??10,U=_.borderWidth??2;k.append("circle").attr("r",W).attr("fill",_.backgroundColor||"#666").attr("stroke",_.borderColor||"#fff").attr("stroke-width",U).style("filter","drop-shadow(0 1px 2px rgba(0,0,0,0.2))"),this.renderValueLabel(k,f,p),e&&this.emitAfterAnimate(bt+100)}buildNeedlePath(t,e,i,r,o){const s=t-Math.PI/2,a=e*Math.cos(s),l=e*Math.sin(s),c=-i*Math.cos(s),h=-i*Math.sin(s),f=s+Math.PI/2,u=r/2,d=o/2;return[`M${c+u*Math.cos(f)},${h+u*Math.sin(f)}`,`L${a+d*Math.cos(f)},${l+d*Math.sin(f)}`,`L${a-d*Math.cos(f)},${l-d*Math.sin(f)}`,`L${c-u*Math.cos(f)},${h-u*Math.sin(f)}`,"Z"].join(" ")}renderPaneBackground(t,e,i,r,o){const s=o.background?Array.isArray(o.background)?o.background:[o.background]:[];for(const a of s){const l=this.resolvePercent(a.outerRadius??"100%",e),c=this.resolvePercent(a.innerRadius??"0%",e),h=_e().innerRadius(c).outerRadius(l).startAngle(i).endAngle(r);t.append("path").attr("d",h({})).attr("fill",a.backgroundColor||"#f2f2f2").attr("stroke",a.borderColor||"#cccccc").attr("stroke-width",a.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var f;const l=((f=this.config._yAxis??this.config.yAxis)==null?void 0:f.plotBands)||[];if(l.length===0)return;const c=a??e*.15,h=we().domain([o,s]).range([i,r]);for(const u of l){if(u.from===void 0||u.to===void 0)continue;const d=_e().innerRadius(e-c).outerRadius(e).startAngle(h(u.from)).endAngle(h(u.to)).cornerRadius(0);t.append("path").attr("d",d({})).attr("fill",u.color||"#e0e0e0").attr("stroke",u.borderColor||"none").attr("stroke-width",u.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s,a){var v,b;const l=(this.config._yAxis??this.config.yAxis)||{},c=l.tickPositions||this.generateTicks(o,s,5),h=l.tickLength??15,f=l.tickWidth??2,u=((v=l.labels)==null?void 0:v.enabled)!==!1,d=((b=l.labels)==null?void 0:b.style)||{},p=d.fontSize||wt,y=d.color||this.autoLabelColor(),g=a??e*.15,m=we().domain([o,s]).range([i,r]),x=l.minorTickInterval?Math.round((s-o)/l.minorTickInterval):0;if(x>0&&l.minorTickInterval)for(let k=0;k<=x;k++){const M=o+k*l.minorTickInterval;if(M>s)break;const C=m(M)-Math.PI/2,L=e-g+2,_=L-6;t.append("line").attr("x1",_*Math.cos(C)).attr("y1",_*Math.sin(C)).attr("x2",L*Math.cos(C)).attr("y2",L*Math.sin(C)).attr("stroke","#999").attr("stroke-width",1)}for(const k of c){const M=m(k)-Math.PI/2,C=e-g+2,L=C-h;if(t.append("line").attr("x1",L*Math.cos(M)).attr("y1",L*Math.sin(M)).attr("x2",C*Math.cos(M)).attr("y2",C*Math.sin(M)).attr("stroke","#333").attr("stroke-width",f),u){const _=L-10;t.append("text").attr("x",_*Math.cos(M)).attr("y",_*Math.sin(M)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",p).attr("font-weight","600").attr("fill",y).style("pointer-events","none").text(String(k))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e,i){var c,h,f,u;const r=this.config.dataLabels||{};if(!(r.enabled!==!1))return;const s=((c=r.style)==null?void 0:c.fontSize)||wt,a=r.color||((h=r.style)==null?void 0:h.color)||this.autoLabelColor();let l;r.formatter?l=r.formatter.call({point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:i}):r.format?l=fe(Zt(r.format,{point:this.data[0],series:{name:this.config.name},x:(u=this.data[0])==null?void 0:u.x,y:i})):l=i.toString(),t.append("text").attr("y",e*.25+(r.y??0)).attr("x",r.x??0).attr("text-anchor","middle").attr("font-size",s).attr("font-weight","bold").attr("fill",a).text(l)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class dk extends Ut{constructor(t){super(t)}render(){var k,M,C,L;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=Math.min(t.width,t.height)/2-10,o=t.width/2,s=t.height/2,a=((k=this.config._yAxis??this.config.yAxis)==null?void 0:k.min)??this.config.min??0,l=((M=this.config._yAxis??this.config.yAxis)==null?void 0:M.max)??this.config.max??100,c=this.data.length>1,h=this.config.pane||{},f=(h.startAngle??-135)*Math.PI/180,u=(h.endAngle??135)*Math.PI/180,d=this.config.overshoot??0,p=d*Math.PI/180,y=this.group.append("g").attr("transform",`translate(${o},${s})`),g=this.config.innerRadius??.6,m=this.config.radius??1,x=this.config.rounded??5,v=this.config.linecap||"round",b=((C=this.config._yAxis??this.config.yAxis)==null?void 0:C.stops)||[];if(c){const _=r/(this.data.length+.5),$=_*.1;this.renderPaneBackground(y,r,0,f,u,h),this.data.forEach((I,E)=>{const P=I.radius?this.resolveRadiusValue(I.radius,r):r-E*_,S=I.innerRadius?this.resolveRadiusValue(I.innerRadius,r):P-_+$,w=I.color||e[E%e.length],A=this.config.color;this.config.color=w,this.renderSingleArc(y,I,E,S,P,r,f,u,a,l,d,p,x,v,b,o,s,i),this.config.color=A})}else{const _=this.resolveRadiusValue(g,r),$=this.resolveRadiusValue(m,r);this.renderPaneBackground(y,$,_,f,u,h),this.renderPlotBands(y,$,_,f,u,a,l),this.renderSingleArc(y,this.data[0],0,_,$,r,f,u,a,l,d,p,x,v,b,o,s,i)}this.renderTickMarks(y,r,f,u,a,l),c||this.renderValueLabel(y,((L=this.data[0])==null?void 0:L.y)??0),i&&this.emitAfterAnimate(bt+100)}renderSingleArc(t,e,i,r,o,s,a,l,c,h,f,u,d,p,y,g,m,x){const v=(e==null?void 0:e.y)??0,b=Math.max(0,Math.min(1,(v-c)/(h-c)));let k=a+(l-a)*b;if(f>0&&v>h){const P=(v-h)/(h-c);k=l+Math.min(u,(l-a)*P)}const M=p==="round",C=_e().innerRadius(r).outerRadius(o).startAngle(a).endAngle(l).cornerRadius(M?(o-r)/2:d);t.append("path").attr("d",C({})).attr("fill","#e0e0e0");const L=M?(o-r)/2:d,_=_e().innerRadius(r).outerRadius(o).cornerRadius(L),$=_e().innerRadius(r).outerRadius(o+5).cornerRadius(L),I=this.resolveArcColor(b,y,e),E=t.append("path").attr("fill",I).style("cursor","pointer");if(x){const P=ae(a,k),S=this;E.transition().duration(bt).ease(pt).attrTween("d",()=>w=>{const A=P(w),T=_.startAngle(a).endAngle(A)({});if(y.length>0){const R=(A-a)/(l-a);E.attr("fill",S.getStopColor(Math.min(1,R),y))}return T})}else E.attr("d",_.startAngle(a).endAngle(k)({}));this.config.enableMouseTracking!==!1&&E.on("mouseover",P=>{var S,w;E.interrupt("hover").transition("hover").duration(K).ease(Z).attr("d",$.startAngle(a).endAngle(k)({})),E.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.25))"),this.context.events.emit("point:mouseover",{point:e,index:i,series:this,event:P,plotX:g,plotY:m}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOver)==null||w.call(e,P)}).on("mouseout",P=>{var S,w;E.interrupt("hover").transition("hover").duration(K).ease(Z).attr("d",_.startAngle(a).endAngle(k)({})),E.style("filter",""),this.context.events.emit("point:mouseout",{point:e,index:i,series:this,event:P}),(w=(S=e==null?void 0:e.events)==null?void 0:S.mouseOut)==null||w.call(e,P)}).on("click",P=>{var S,w,A,T;this.context.events.emit("point:click",{point:e,index:i,series:this,event:P}),(w=(S=e==null?void 0:e.events)==null?void 0:S.click)==null||w.call(e,P),(T=(A=this.config.events)==null?void 0:A.click)==null||T.call(this,P)})}resolveArcColor(t,e,i){return i!=null&&i.color?i.color:e.length>=2?this.getStopColor(t,e):this.getColor()}getStopColor(t,e){if(t<=e[0][0])return e[0][1];if(t>=e[e.length-1][0])return e[e.length-1][1];for(let i=0;i<e.length-1;i++)if(t>=e[i][0]&&t<=e[i+1][0]){const r=(t-e[i][0])/(e[i+1][0]-e[i][0]),o=e[i][1],s=e[i+1][1];return ae(o,s)(r)}return e[e.length-1][1]}resolveRadiusValue(t,e){return typeof t=="string"&&t.endsWith("%")?e*parseFloat(t)/100:typeof t=="number"?t<=1?e*t:t:e*.6}renderPaneBackground(t,e,i,r,o,s){const a=s.background?Array.isArray(s.background)?s.background:[s.background]:[];for(const l of a){const c=this.resolvePercent(l.outerRadius??"100%",e),h=this.resolvePercent(l.innerRadius??"0%",e),f=_e().innerRadius(h).outerRadius(c).startAngle(r).endAngle(o);t.append("path").attr("d",f({})).attr("fill",l.backgroundColor||"#f2f2f2").attr("stroke",l.borderColor||"#cccccc").attr("stroke-width",l.borderWidth??0)}}renderPlotBands(t,e,i,r,o,s,a){var h;const l=((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.plotBands)||[];if(l.length===0)return;const c=we().domain([s,a]).range([r,o]);for(const f of l){if(f.from===void 0||f.to===void 0)continue;const u=_e().innerRadius(i).outerRadius(e).startAngle(c(f.from)).endAngle(c(f.to));t.append("path").attr("d",u({})).attr("fill",f.color||"#e0e0e0").attr("stroke",f.borderColor||"none").attr("stroke-width",f.borderWidth??0)}}renderTickMarks(t,e,i,r,o,s){var p,y;const a=(this.config._yAxis??this.config.yAxis)||{},l=a.tickPositions||this.generateTicks(o,s,5),c=((p=a.labels)==null?void 0:p.enabled)!==!1,h=((y=a.labels)==null?void 0:y.style)||{},f=h.fontSize||wt,u=h.color||this.autoLabelColor(),d=we().domain([o,s]).range([i,r]);for(const g of l){const m=d(g)-Math.PI/2;if(c){const x=e+14;t.append("text").attr("x",x*Math.cos(m)).attr("y",x*Math.sin(m)).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",f).attr("fill",u).style("pointer-events","none").text(String(g))}}}generateTicks(t,e,i){const r=(e-t)/i,o=[];for(let s=0;s<=i;s++)o.push(Math.round((t+r*s)*100)/100);return o}renderValueLabel(t,e){var l,c,h,f;const i=this.config.dataLabels||{};if(!(i.enabled!==!1))return;const o=((l=i.style)==null?void 0:l.fontSize)||wt,s=i.color||((c=i.style)==null?void 0:c.color)||this.autoLabelColor();let a;i.formatter?a=i.formatter.call({point:this.data[0],series:{name:this.config.name},x:(h=this.data[0])==null?void 0:h.x,y:e}):i.format?a=fe(Zt(i.format,{point:this.data[0],series:{name:this.config.name},x:(f=this.data[0])==null?void 0:f.x,y:e})):a=e.toString(),t.append("text").attr("y",10+(i.y??0)).attr("x",i.x??0).attr("text-anchor","middle").attr("font-size",o).attr("font-weight","bold").attr("fill",s).text(a)}resolvePercent(t,e){return typeof t=="number"?t:typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:parseFloat(t)||0}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const pk=fr("~s");function gk(n){return n===0?"0":n>=1e3?pk(n).replace("G","B"):String(n)}function mk(n){return!Number.isFinite(n)||Math.abs(n)<1e3?String(n):Math.round(n).toString().replace(/\B(?=(\d{3})+(?!\d))/g,".")}function hd(n){if(n<=0)return{ticks:[1],niceMax:1,gridMax:1};const t=n/2,e=Math.pow(10,Math.floor(Math.log10(t))),i=t/e;let r;i<1.5?r=1*e:i<3?r=2*e:i<7?r=5*e:r=10*e;const o=Math.max(r,Math.floor(n/r)*r),s=n*1.15;return{ticks:o>0?[Math.round(o*1e6)/1e6]:[],niceMax:o,gridMax:s}}function ud(n,t,e){const i=e==null?void 0:e.size;let r;typeof i=="string"&&i.trim().endsWith("%")?r=parseFloat(i)/100:typeof i=="number"?r=i>1?i/100:i:r=.85;const o=Math.min(n,t)*r/2;return Math.max(20,o-30)}class fd extends Ut{constructor(t){super(t)}render(){const t=this.resolvePolarSubType();t==="column"?this.renderColumnPolar():this.renderLineAreaPolar(t)}resolvePolarSubType(){const t=this.config.polarType||this.config._polarSubType||"area";return t==="column"||t==="bar"?"column":t==="line"?"line":"area"}renderLineAreaPolar(t){var E,P,S,w,A,T,R,F,D,z;const{plotArea:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=ud(e.width,e.height,s),l=e.width/2,c=e.height/2,h=Math.max(...r.map(B=>B.y??0),1),{ticks:f,gridMax:u}=hd(h),d=we().domain([0,u]).range([0,a]),p=((E=this.config.marker)==null?void 0:E.radius)??4,y=((P=this.config.marker)==null?void 0:P.enabled)!==!1,g=this.config.pointPlacement,m=g==="on"?0:g==="between"?Math.PI/r.length:typeof g=="number"?g*Math.PI/180:0,x=2*Math.PI/r.length,v=this.config.connectEnds!==!1;(w=(S=this.config.states)==null?void 0:S.inactive)==null||w.opacity;const b=this.group.append("g").attr("transform",`translate(${l},${c})`);let k=0,M=1/0;for(let B=0;B<r.length;B++){const H=r[B].y??0;H<M&&(M=H,k=B)}const C=k*x-Math.PI/2;this.renderGrid(b,a,r.length,d,f,C);const L=v?L2:Xi,_=w2().angle((B,H)=>H*x+m).radius(B=>d(B.y??0)).defined(B=>B.y!==null&&B.y!==void 0).curve(L),$=r.map(B=>({...B,y:0})),I=b.append("path").datum(r).attr("fill","none").attr("stroke",o).attr("stroke-width",this.config.lineWidth??2);if(t==="area"){const B=k2().angle((J,X)=>X*x+m).innerRadius(0).outerRadius(J=>d(J.y??0)).defined(J=>J.y!==null&&J.y!==void 0).curve(L),H=b.append("path").datum(r).attr("fill",this.config.fillColor||o).attr("fill-opacity",this.config.fillOpacity??.3);i?H.attr("d",B($)||"").transition().duration(bt).ease(pt).attr("d",B(r)||""):H.attr("d",B)}if(i?I.attr("d",_($)||"").transition().duration(bt).ease(pt).attr("d",_(r)||""):I.attr("d",_),y){const H=Math.max(...r.map(X=>X.y??0),1)*.02,J=b.selectAll(".katucharts-polar-point").data(r).join("circle").attr("class","katucharts-polar-point").attr("cx",(X,j)=>d(X.y??0)*Math.cos(j*x-Math.PI/2+m)).attr("cy",(X,j)=>d(X.y??0)*Math.sin(j*x-Math.PI/2+m)).attr("fill",((A=this.config.marker)==null?void 0:A.fillColor)||o).attr("stroke",((T=this.config.marker)==null?void 0:T.lineColor)||this.autoBorderColor()).attr("stroke-width",((R=this.config.marker)==null?void 0:R.lineWidth)??1).style("display",X=>(X.y??0)<H?"none":null).style("cursor",this.config.cursor||"pointer");if(i?J.attr("r",0).attr("opacity",0).transition().duration(bt).ease(pt).delay((X,j)=>j*Wt).attr("r",p).attr("opacity",1):J.attr("r",p),this.renderPolarDataLabels(b,r,d,x,m),this.config.enableMouseTracking!==!1){const X=((z=(D=(F=this.config.marker)==null?void 0:F.states)==null?void 0:D.hover)==null?void 0:z.radius)??p+3;J.on("mouseover",(j,W)=>{var O,ct;const U=rt(j.currentTarget);U.transition("hover").duration(K).ease(Z).attr("r",X),U.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))");const G=r.indexOf(W),N=d(W.y??0)*Math.cos(G*x-Math.PI/2+m),Y=d(W.y??0)*Math.sin(G*x-Math.PI/2+m);this.context.events.emit("point:mouseover",{point:W,index:G,series:this,event:j,plotX:l+N,plotY:c+Y}),(ct=(O=W.events)==null?void 0:O.mouseOver)==null||ct.call(W,j)}).on("mouseout",(j,W)=>{var N,Y;const U=rt(j.currentTarget);U.transition("hover").duration(K).ease(Z).attr("r",p),U.style("filter","");const G=r.indexOf(W);this.context.events.emit("point:mouseout",{point:W,index:G,series:this,event:j}),(Y=(N=W.events)==null?void 0:N.mouseOut)==null||Y.call(W,j)}).on("click",(j,W)=>{var G,N,Y,O;const U=r.indexOf(W);this.context.events.emit("point:click",{point:W,index:U,series:this,event:j}),(N=(G=W.events)==null?void 0:G.click)==null||N.call(W,j),(O=(Y=this.config.events)==null?void 0:Y.click)==null||O.call(this,j)})}}}renderColumnPolar(){var E,P;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=this.getColor(),s=this.context.pane||this.config.pane,a=ud(t.width,t.height,s),l=t.width/2,c=t.height/2,h=Math.max(...r.map(S=>S.y??0),1),{ticks:f,gridMax:u}=hd(h),d=we().domain([0,u]).range([0,a]),p=2*Math.PI/r.length,y=this.config.pointPlacement,g=y==="on"?0:y==="between"?Math.PI/r.length:typeof y=="number"?y*Math.PI/180:0,m=.02,x=((P=(E=this.config.states)==null?void 0:E.inactive)==null?void 0:P.opacity)??.4,v=this.config.colorByPoint===!0,b=this.config.stacking,k=this.group.append("g").attr("transform",`translate(${l},${c})`);let M=0,C=1/0;for(let S=0;S<r.length;S++){const w=r[S].y??0;w<C&&(C=w,M=S)}const L=M*p-Math.PI/2;this.renderGrid(k,a,r.length,d,f,L);const _=_e().cornerRadius(2),$=k.selectAll(".katucharts-polar-bar").data(r).join("path").attr("class","katucharts-polar-bar").attr("fill",(S,w)=>S.color||(v?e[w%e.length]:o)).attr("stroke",this.config.borderColor||"none").attr("stroke-width",this.config.borderWidth??0).style("cursor",this.config.cursor||"pointer"),I=this.context.stackOffsets;i?$.each(function(S,w){const A=rt(this),T=w*p-Math.PI/2+g+m,R=(w+1)*p-Math.PI/2+g-m,F=b&&I?d(I.get(w)??0):0,D=F+d(S.y??0);A.attr("d",_({innerRadius:F,outerRadius:F,startAngle:T+Math.PI/2,endAngle:R+Math.PI/2})||"").transition().duration(bt).ease(pt).delay(w*Wt).attrTween("d",()=>z=>_({innerRadius:F,outerRadius:F+(D-F)*z,startAngle:T+Math.PI/2,endAngle:R+Math.PI/2})||""),b&&I&&I.set(w,(I.get(w)??0)+(S.y??0))}):$.attr("d",(S,w)=>{const A=w*p-Math.PI/2+g+m,T=(w+1)*p-Math.PI/2+g-m,R=b&&I?d(I.get(w)??0):0,F=R+d(S.y??0);return b&&I&&I.set(w,(I.get(w)??0)+(S.y??0)),_({innerRadius:R,outerRadius:F,startAngle:A+Math.PI/2,endAngle:T+Math.PI/2})||""}),this.config.enableMouseTracking!==!1&&$.on("mouseover",(S,w)=>{var D,z;rt(S.currentTarget).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),$.interrupt("highlight"),$.attr("opacity",1),$.filter(B=>B!==w).transition("highlight").duration(K).ease(Z).attr("opacity",x);const T=r.indexOf(w),R=T*p+p/2-Math.PI/2+g,F=d(w.y??0)/2;this.context.events.emit("point:mouseover",{point:w,index:T,series:this,event:S,plotX:l+F*Math.cos(R),plotY:c+F*Math.sin(R)}),(z=(D=w.events)==null?void 0:D.mouseOver)==null||z.call(w,S)}).on("mouseout",(S,w)=>{var R,F;rt(S.currentTarget).style("filter",""),$.interrupt("highlight"),$.transition("highlight").duration(K).ease(Z).attr("opacity",1);const T=r.indexOf(w);this.context.events.emit("point:mouseout",{point:w,index:T,series:this,event:S}),(F=(R=w.events)==null?void 0:R.mouseOut)==null||F.call(w,S)}).on("click",(S,w)=>{var T,R,F,D;const A=r.indexOf(w);this.context.events.emit("point:click",{point:w,index:A,series:this,event:S}),(R=(T=w.events)==null?void 0:T.click)==null||R.call(w,S),(D=(F=this.config.events)==null?void 0:F.click)==null||D.call(this,S)})}renderPolarDataLabels(t,e,i,r,o){var k,M,C;const s=this.config.dataLabels||{};if(s.enabled!==!0)return;const a=((k=s.style)==null?void 0:k.fontSize)||wt,l=((M=s.style)==null?void 0:M.color)||this.autoLabelColor(),c=((C=s.style)==null?void 0:C.fontWeight)||"normal",h=[],f=16,u=6,d=Math.max(...e.map(L=>L.y??0),1),p=d*.02,y=d*.5,g=e.map((L,_)=>({d:L,i:_,v:L.y??0})).filter(L=>L.d.y!=null&&L.d.y!==0&&L.v>=p),m=g.filter(L=>L.v>=y),x=g.filter(L=>L.v<y);x.sort((L,_)=>L.v-_.v);const v=x.length>0?x[0]:null,b=v?[...m,v]:m;b.sort((L,_)=>L.i-_.i);for(const{d:L,i:_}of b){const $=_*r-Math.PI/2+o,I=i(L.y??0),E=I*Math.cos($),P=I*Math.sin($),S=(($+Math.PI/2)*180/Math.PI+360)%360;let w;S>20&&S<160?w="start":S>200&&S<340?w="end":w="middle";let A;S<45||S>315?A="text-after-edge":S>135&&S<225?A="text-before-edge":A="middle";const T=Math.cos($),R=Math.sin($),F=E+T*u,D=P+R*u;let z=!1;for(const B of h)if((B.x-F)**2+(B.y-D)**2<f*f){z=!0;break}z||(h.push({x:F,y:D}),t.append("text").attr("class","katucharts-polar-datalabel").attr("x",F).attr("y",D).attr("text-anchor",w).attr("dominant-baseline",A).attr("fill",l).attr("font-size",a).attr("font-weight",c).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(mk(L.y)))}}renderGrid(t,e,i,r,o,s=-Math.PI/2){var h,f,u,d;const l=(this.config.gridLineInterpolation||((h=this.config._yAxis??this.config.yAxis)==null?void 0:h.gridLineInterpolation)||"circle")==="polygon",c=2*Math.PI/i;if(l){const p=[];for(let y=0;y<i;y++){const g=y*c-Math.PI/2;p.push(`${e*Math.cos(g)},${e*Math.sin(g)}`)}t.append("polygon").attr("points",p.join(" ")).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8)}else t.append("circle").attr("r",e).attr("fill","none").attr("stroke","#d0d0d0").attr("stroke-width",.8);for(const p of o){const y=r(p);if(l){const x=[];for(let v=0;v<i;v++){const b=v*c-Math.PI/2,k=y*Math.cos(b),M=y*Math.sin(b);x.push(`${k},${M}`)}t.append("polygon").attr("points",x.join(" ")).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5)}else t.append("circle").attr("r",y).attr("fill","none").attr("stroke","#e6e6e6").attr("stroke-width",.5);const g=y*Math.cos(s)+5*Math.cos(s+Math.PI/2),m=y*Math.sin(s)+5*Math.sin(s+Math.PI/2);t.append("text").attr("x",g).attr("y",m).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",wt).attr("fill",this.autoLabelColor()).attr("stroke",this.labelHaloColor()).attr("stroke-width",3).attr("stroke-linejoin","round").attr("paint-order","stroke fill").style("pointer-events","none").text(gk(p))}for(let p=0;p<i;p++){const y=p*c-Math.PI/2;t.append("line").attr("x1",0).attr("y1",0).attr("x2",e*Math.cos(y)).attr("y2",e*Math.sin(y)).attr("stroke","#ccc").attr("stroke-width",.5);const g=(u=(f=this.context.xAxis)==null?void 0:f.config)==null?void 0:u.categories,m=g&&g[p]||((d=this.data[p])==null?void 0:d.name)||`${p}`,x=e+28;t.append("text").attr("x",x*Math.cos(y)).attr("y",x*Math.sin(y)).attr("text-anchor","middle").attr("dominant-baseline","middle").attr("font-size",wt).attr("fill",this.autoLabelColor()).text(m)}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class yk extends Ut{constructor(t){super(t)}render(){var m,x,v,b;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.data,s=Math.min(40,t.height/Math.max(o.length,1)),a=(t.height-o.length*s)/2,l=((m=this.config.marker)==null?void 0:m.radius)??6,c=(x=this.config.marker)==null?void 0:x.lineColor,h=r.colorByPoint!==!1,f=r.connectorColor??"#ccc",u=r.connectorWidth??r.lineWidth??4,d=this.config.dataLabels||{},p=((v=d.style)==null?void 0:v.fontSize)||wt,y=d.color||((b=d.style)==null?void 0:b.color)||ye,g=[];o.forEach((k,M)=>{const C=a+M*s,L=k.color||(h?e[M%e.length]:r.color||e[0]),_=this.group.append("circle").attr("cx",20).attr("cy",C+s/2).attr("fill",L).style("cursor","pointer");if(c&&_.attr("stroke",c),i?_.attr("r",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("r",l):_.attr("r",l),M<o.length-1){const T=this.group.append("line").attr("x1",20).attr("x2",20).attr("y1",C+s/2+l).attr("y2",C+s+s/2-l).attr("stroke",f).attr("stroke-width",u);i&&T.attr("opacity",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("opacity",1)}const $=k.label||k.name||`Event ${M+1}`,I=this.group.append("text").attr("x",36).attr("y",C+s/2).attr("dy","0.35em").attr("font-size",p).attr("fill",y).style("cursor","pointer").text($);i&&I.attr("opacity",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("opacity",1);let E=null;const P=k.description;P&&(E=this.group.append("text").attr("x",36).attr("y",C+s/2+14).attr("dy","0.35em").attr("font-size","10px").attr("fill","#777").style("pointer-events","none").text(P),i&&E.attr("opacity",0).transition().duration(bt).ease(pt).delay(M*Wt).attr("opacity",1)),g.push({circle:_,text:I,desc:E});const S=T=>{_.transition("size").duration(K).ease(Z).attr("r",l+3),_.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),I.attr("font-weight","bold"),g.forEach(R=>{R.circle.interrupt("highlight"),R.text.interrupt("highlight"),R.circle.attr("opacity",1),R.text.attr("opacity",1),R.desc&&(R.desc.interrupt("highlight"),R.desc.attr("opacity",1))}),g.forEach((R,F)=>{F!==M&&(R.circle.transition("highlight").duration(K).ease(Z).attr("opacity",.4),R.text.transition("highlight").duration(K).ease(Z).attr("opacity",.4),R.desc&&R.desc.transition("highlight").duration(K).ease(Z).attr("opacity",.4))}),this.context.events.emit("point:mouseover",{point:k,index:M,series:this,event:T,plotX:20,plotY:C+s/2})},w=T=>{_.transition("size").duration(K).ease(Z).attr("r",l),_.style("filter",""),I.attr("font-weight","normal"),g.forEach(R=>{R.circle.interrupt("highlight"),R.text.interrupt("highlight"),R.circle.transition("highlight").duration(K).ease(Z).attr("opacity",1),R.text.transition("highlight").duration(K).ease(Z).attr("opacity",1),R.desc&&(R.desc.interrupt("highlight"),R.desc.transition("highlight").duration(K).ease(Z).attr("opacity",1))}),this.context.events.emit("point:mouseout",{point:k,index:M,series:this,event:T})},A=T=>{this.context.events.emit("point:click",{point:k,index:M,series:this,event:T})};_.on("mouseover",S).on("mouseout",w).on("click",A),I.on("mouseover",S).on("mouseout",w).on("click",A)})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class xk extends Ut{constructor(t){super(t)}render(){const{xAxis:t,plotArea:e,colors:i}=this.context,r=this.data,o=Math.min(25,e.height/Math.max(r.length,1)*.7),s=e.height/Math.max(r.length,1);r.forEach((a,l)=>{const c=a.start??a.x??0,h=a.end??c+1,f=t.getPixelForValue(c),u=t.getPixelForValue(h),d=l*s+(s-o)/2,p=a.color||i[l%i.length],y=this.group.append("rect").attr("class","katucharts-gantt-bar").attr("x",f).attr("y",d).attr("width",Math.max(1,u-f)).attr("height",o).attr("rx",3).attr("fill",p).attr("stroke","none");this.group.append("text").attr("x",f+4).attr("y",d+o/2).attr("dy","0.35em").attr("font-size","10px").attr("fill","#fff").text(a.name||""),y.style("cursor","pointer"),this.group.selectAll(".katucharts-gantt-bar"),y.on("mouseover",g=>{y.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),y.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke","#333").attr("stroke-width",1.5),this.context.events.emit("point:mouseover",{point:a,index:l,series:this,event:g,plotX:(f+u)/2,plotY:d+o/2})}).on("mouseout",g=>{y.style("filter",""),y.interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke","none").attr("stroke-width",0),this.context.events.emit("point:mouseout",{point:a,index:l,series:this,event:g})}).on("click",g=>{this.context.events.emit("point:click",{point:a,index:l,series:this,event:g})})})}getDataExtents(){let t=1/0,e=-1/0;for(const i of this.data){const r=i.start??i.x??0,o=i.end??r+1;t=Math.min(t,r),e=Math.max(e,o)}return{xMin:t,xMax:e,yMin:0,yMax:0}}}var At=1e-6,dd=1e-12,Bt=Math.PI,Qt=Bt/2,pd=Bt/4,qe=Bt*2,Ie=180/Bt,te=Bt/180,Xt=Math.abs,Zi=Math.atan,Wn=Math.atan2,Dt=Math.cos,ps=Math.ceil,gd=Math.exp,gs=Math.log,Ic=Math.pow,Pt=Math.sin,sn=Math.sign||function(n){return n>0?1:n<0?-1:0},Oe=Math.sqrt,Fc=Math.tan;function md(n){return n>1?0:n<-1?Bt:Math.acos(n)}function an(n){return n>1?Qt:n<-1?-Qt:Math.asin(n)}function cn(){}function ms(n,t){n&&xd.hasOwnProperty(n.type)&&xd[n.type](n,t)}var yd={Feature:function(n,t){ms(n.geometry,t)},FeatureCollection:function(n,t){for(var e=n.features,i=-1,r=e.length;++i<r;)ms(e[i].geometry,t)}},xd={Sphere:function(n,t){t.sphere()},Point:function(n,t){n=n.coordinates,t.point(n[0],n[1],n[2])},MultiPoint:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)n=e[i],t.point(n[0],n[1],n[2])},LineString:function(n,t){Rc(n.coordinates,t,0)},MultiLineString:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)Rc(e[i],t,0)},Polygon:function(n,t){bd(n.coordinates,t)},MultiPolygon:function(n,t){for(var e=n.coordinates,i=-1,r=e.length;++i<r;)bd(e[i],t)},GeometryCollection:function(n,t){for(var e=n.geometries,i=-1,r=e.length;++i<r;)ms(e[i],t)}};function Rc(n,t,e){var i=-1,r=n.length-e,o;for(t.lineStart();++i<r;)o=n[i],t.point(o[0],o[1],o[2]);t.lineEnd()}function bd(n,t){var e=-1,i=n.length;for(t.polygonStart();++e<i;)Rc(n[e],t,1);t.polygonEnd()}function Ki(n,t){n&&yd.hasOwnProperty(n.type)?yd[n.type](n,t):ms(n,t)}function Dc(n){return[Wn(n[1],n[0]),an(n[2])]}function Ji(n){var t=n[0],e=n[1],i=Dt(e);return[i*Dt(t),i*Pt(t),Pt(e)]}function ys(n,t){return n[0]*t[0]+n[1]*t[1]+n[2]*t[2]}function xs(n,t){return[n[1]*t[2]-n[2]*t[1],n[2]*t[0]-n[0]*t[2],n[0]*t[1]-n[1]*t[0]]}function zc(n,t){n[0]+=t[0],n[1]+=t[1],n[2]+=t[2]}function bs(n,t){return[n[0]*t,n[1]*t,n[2]*t]}function Bc(n){var t=Oe(n[0]*n[0]+n[1]*n[1]+n[2]*n[2]);n[0]/=t,n[1]/=t,n[2]/=t}function Oc(n,t){function e(i,r){return i=n(i,r),t(i[0],i[1])}return n.invert&&t.invert&&(e.invert=function(i,r){return i=t.invert(i,r),i&&n.invert(i[0],i[1])}),e}function Nc(n,t){return Xt(n)>Bt&&(n-=Math.round(n/qe)*qe),[n,t]}Nc.invert=Nc;function vd(n,t,e){return(n%=qe)?t||e?Oc(kd(n),Md(t,e)):kd(n):t||e?Md(t,e):Nc}function wd(n){return function(t,e){return t+=n,Xt(t)>Bt&&(t-=Math.round(t/qe)*qe),[t,e]}}function kd(n){var t=wd(n);return t.invert=wd(-n),t}function Md(n,t){var e=Dt(n),i=Pt(n),r=Dt(t),o=Pt(t);function s(a,l){var c=Dt(l),h=Dt(a)*c,f=Pt(a)*c,u=Pt(l),d=u*e+h*i;return[Wn(f*r-d*o,h*e-u*i),an(d*r+f*o)]}return s.invert=function(a,l){var c=Dt(l),h=Dt(a)*c,f=Pt(a)*c,u=Pt(l),d=u*r-f*o;return[Wn(f*r+u*o,h*e+d*i),an(d*e-h*i)]},s}function bk(n){n=vd(n[0]*te,n[1]*te,n.length>2?n[2]*te:0);function t(e){return e=n(e[0]*te,e[1]*te),e[0]*=Ie,e[1]*=Ie,e}return t.invert=function(e){return e=n.invert(e[0]*te,e[1]*te),e[0]*=Ie,e[1]*=Ie,e},t}function vk(n,t,e,i,r,o){if(e){var s=Dt(t),a=Pt(t),l=i*e;r==null?(r=t+i*qe,o=t-l/2):(r=Ad(s,r),o=Ad(s,o),(i>0?r<o:r>o)&&(r+=i*qe));for(var c,h=r;i>0?h>o:h<o;h-=l)c=Dc([s,-a*Dt(h),-a*Pt(h)]),n.point(c[0],c[1])}}function Ad(n,t){t=Ji(t),t[0]-=n,Bc(t);var e=md(-t[1]);return((-t[2]<0?-e:e)+qe-At)%qe}function Sd(){var n=[],t;return{point:function(e,i,r){t.push([e,i,r])},lineStart:function(){n.push(t=[])},lineEnd:cn,rejoin:function(){n.length>1&&n.push(n.pop().concat(n.shift()))},result:function(){var e=n;return n=[],t=null,e}}}function vs(n,t){return Xt(n[0]-t[0])<At&&Xt(n[1]-t[1])<At}function ws(n,t,e,i){this.x=n,this.z=t,this.o=e,this.e=i,this.v=!1,this.n=this.p=null}function _d(n,t,e,i,r){var o=[],s=[],a,l;if(n.forEach(function(p){if(!((y=p.length-1)<=0)){var y,g=p[0],m=p[y],x;if(vs(g,m)){if(!g[2]&&!m[2]){for(r.lineStart(),a=0;a<y;++a)r.point((g=p[a])[0],g[1]);r.lineEnd();return}m[0]+=2*At}o.push(x=new ws(g,p,null,!0)),s.push(x.o=new ws(g,null,x,!1)),o.push(x=new ws(m,p,null,!1)),s.push(x.o=new ws(m,null,x,!0))}}),!!o.length){for(s.sort(t),Cd(o),Cd(s),a=0,l=s.length;a<l;++a)s[a].e=e=!e;for(var c=o[0],h,f;;){for(var u=c,d=!0;u.v;)if((u=u.n)===c)return;h=u.z,r.lineStart();do{if(u.v=u.o.v=!0,u.e){if(d)for(a=0,l=h.length;a<l;++a)r.point((f=h[a])[0],f[1]);else i(u.x,u.n.x,1,r);u=u.n}else{if(d)for(h=u.p.z,a=h.length-1;a>=0;--a)r.point((f=h[a])[0],f[1]);else i(u.x,u.p.x,-1,r);u=u.p}u=u.o,h=u.z,d=!d}while(!u.v);r.lineEnd()}}}function Cd(n){if(t=n.length){for(var t,e=0,i=n[0],r;++e<t;)i.n=r=n[e],r.p=i,i=r;i.n=r=n[0],r.p=i}}function Wc(n){return Xt(n[0])<=Bt?n[0]:sn(n[0])*((Xt(n[0])+Bt)%qe-Bt)}function wk(n,t){var e=Wc(t),i=t[1],r=Pt(i),o=[Pt(e),-Dt(e),0],s=0,a=0,l=new fi;r===1?i=Qt+At:r===-1&&(i=-Qt-At);for(var c=0,h=n.length;c<h;++c)if(u=(f=n[c]).length)for(var f,u,d=f[u-1],p=Wc(d),y=d[1]/2+pd,g=Pt(y),m=Dt(y),x=0;x<u;++x,p=b,g=M,m=C,d=v){var v=f[x],b=Wc(v),k=v[1]/2+pd,M=Pt(k),C=Dt(k),L=b-p,_=L>=0?1:-1,$=_*L,I=$>Bt,E=g*M;if(l.add(Wn(E*_*Pt($),m*C+E*Dt($))),s+=I?L+_*qe:L,I^p>=e^b>=e){var P=xs(Ji(d),Ji(v));Bc(P);var S=xs(o,P);Bc(S);var w=(I^L>=0?-1:1)*an(S[2]);(i>w||i===w&&(P[0]||P[1]))&&(a+=I^L>=0?1:-1)}}return(s<-At||s<At&&l<-dd)^a&1}function Pd(n,t,e,i){return function(r){var o=t(r),s=Sd(),a=t(s),l=!1,c,h,f,u={point:d,lineStart:y,lineEnd:g,polygonStart:function(){u.point=m,u.lineStart=x,u.lineEnd=v,h=[],c=[]},polygonEnd:function(){u.point=d,u.lineStart=y,u.lineEnd=g,h=Uh(h);var b=wk(c,i);h.length?(l||(r.polygonStart(),l=!0),_d(h,Mk,b,e,r)):b&&(l||(r.polygonStart(),l=!0),r.lineStart(),e(null,null,1,r),r.lineEnd()),l&&(r.polygonEnd(),l=!1),h=c=null},sphere:function(){r.polygonStart(),r.lineStart(),e(null,null,1,r),r.lineEnd(),r.polygonEnd()}};function d(b,k){n(b,k)&&r.point(b,k)}function p(b,k){o.point(b,k)}function y(){u.point=p,o.lineStart()}function g(){u.point=d,o.lineEnd()}function m(b,k){f.push([b,k]),a.point(b,k)}function x(){a.lineStart(),f=[]}function v(){m(f[0][0],f[0][1]),a.lineEnd();var b=a.clean(),k=s.result(),M,C=k.length,L,_,$;if(f.pop(),c.push(f),f=null,!!C){if(b&1){if(_=k[0],(L=_.length-1)>0){for(l||(r.polygonStart(),l=!0),r.lineStart(),M=0;M<L;++M)r.point(($=_[M])[0],$[1]);r.lineEnd()}return}C>1&&b&2&&k.push(k.pop().concat(k.shift())),h.push(k.filter(kk))}}return u}}function kk(n){return n.length>1}function Mk(n,t){return((n=n.x)[0]<0?n[1]-Qt-At:Qt-n[1])-((t=t.x)[0]<0?t[1]-Qt-At:Qt-t[1])}const Ed=Pd(function(){return!0},Ak,_k,[-Bt,-Qt]);function Ak(n){var t=NaN,e=NaN,i=NaN,r;return{lineStart:function(){n.lineStart(),r=1},point:function(o,s){var a=o>0?Bt:-Bt,l=Xt(o-t);Xt(l-Bt)<At?(n.point(t,e=(e+s)/2>0?Qt:-Qt),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),n.point(o,e),r=0):i!==a&&l>=Bt&&(Xt(t-i)<At&&(t-=i*At),Xt(o-a)<At&&(o-=a*At),e=Sk(t,e,o,s),n.point(i,e),n.lineEnd(),n.lineStart(),n.point(a,e),r=0),n.point(t=o,e=s),i=a},lineEnd:function(){n.lineEnd(),t=e=NaN},clean:function(){return 2-r}}}function Sk(n,t,e,i){var r,o,s=Pt(n-e);return Xt(s)>At?Zi((Pt(t)*(o=Dt(i))*Pt(e)-Pt(i)*(r=Dt(t))*Pt(n))/(r*o*s)):(t+i)/2}function _k(n,t,e,i){var r;if(n==null)r=e*Qt,i.point(-Bt,r),i.point(0,r),i.point(Bt,r),i.point(Bt,0),i.point(Bt,-r),i.point(0,-r),i.point(-Bt,-r),i.point(-Bt,0),i.point(-Bt,r);else if(Xt(n[0]-t[0])>At){var o=n[0]<t[0]?Bt:-Bt;r=e*o/2,i.point(-o,r),i.point(0,r),i.point(o,r)}else i.point(t[0],t[1])}function Ck(n){var t=Dt(n),e=2*te,i=t>0,r=Xt(t)>At;function o(h,f,u,d){vk(d,n,e,u,h,f)}function s(h,f){return Dt(h)*Dt(f)>t}function a(h){var f,u,d,p,y;return{lineStart:function(){p=d=!1,y=1},point:function(g,m){var x=[g,m],v,b=s(g,m),k=i?b?0:c(g,m):b?c(g+(g<0?Bt:-Bt),m):0;if(!f&&(p=d=b)&&h.lineStart(),b!==d&&(v=l(f,x),(!v||vs(f,v)||vs(x,v))&&(x[2]=1)),b!==d)y=0,b?(h.lineStart(),v=l(x,f),h.point(v[0],v[1])):(v=l(f,x),h.point(v[0],v[1],2),h.lineEnd()),f=v;else if(r&&f&&i^b){var M;!(k&u)&&(M=l(x,f,!0))&&(y=0,i?(h.lineStart(),h.point(M[0][0],M[0][1]),h.point(M[1][0],M[1][1]),h.lineEnd()):(h.point(M[1][0],M[1][1]),h.lineEnd(),h.lineStart(),h.point(M[0][0],M[0][1],3)))}b&&(!f||!vs(f,x))&&h.point(x[0],x[1]),f=x,d=b,u=k},lineEnd:function(){d&&h.lineEnd(),f=null},clean:function(){return y|(p&&d)<<1}}}function l(h,f,u){var d=Ji(h),p=Ji(f),y=[1,0,0],g=xs(d,p),m=ys(g,g),x=g[0],v=m-x*x;if(!v)return!u&&h;var b=t*m/v,k=-t*x/v,M=xs(y,g),C=bs(y,b),L=bs(g,k);zc(C,L);var _=M,$=ys(C,_),I=ys(_,_),E=$*$-I*(ys(C,C)-1);if(!(E<0)){var P=Oe(E),S=bs(_,(-$-P)/I);if(zc(S,C),S=Dc(S),!u)return S;var w=h[0],A=f[0],T=h[1],R=f[1],F;A<w&&(F=w,w=A,A=F);var D=A-w,z=Xt(D-Bt)<At,B=z||D<At;if(!z&&R<T&&(F=T,T=R,R=F),B?z?T+R>0^S[1]<(Xt(S[0]-w)<At?T:R):T<=S[1]&&S[1]<=R:D>Bt^(w<=S[0]&&S[0]<=A)){var H=bs(_,(-$+P)/I);return zc(H,C),[S,Dc(H)]}}}function c(h,f){var u=i?n:Bt-n,d=0;return h<-u?d|=1:h>u&&(d|=2),f<-u?d|=4:f>u&&(d|=8),d}return Pd(s,a,o,i?[0,-n]:[-Bt,n-Bt])}function Pk(n,t,e,i,r,o){var s=n[0],a=n[1],l=t[0],c=t[1],h=0,f=1,u=l-s,d=c-a,p;if(p=e-s,!(!u&&p>0)){if(p/=u,u<0){if(p<h)return;p<f&&(f=p)}else if(u>0){if(p>f)return;p>h&&(h=p)}if(p=r-s,!(!u&&p<0)){if(p/=u,u<0){if(p>f)return;p>h&&(h=p)}else if(u>0){if(p<h)return;p<f&&(f=p)}if(p=i-a,!(!d&&p>0)){if(p/=d,d<0){if(p<h)return;p<f&&(f=p)}else if(d>0){if(p>f)return;p>h&&(h=p)}if(p=o-a,!(!d&&p<0)){if(p/=d,d<0){if(p>f)return;p>h&&(h=p)}else if(d>0){if(p<h)return;p<f&&(f=p)}return h>0&&(n[0]=s+h*u,n[1]=a+h*d),f<1&&(t[0]=s+f*u,t[1]=a+f*d),!0}}}}}var Lr=1e9,ks=-Lr;function Ek(n,t,e,i){function r(c,h){return n<=c&&c<=e&&t<=h&&h<=i}function o(c,h,f,u){var d=0,p=0;if(c==null||(d=s(c,f))!==(p=s(h,f))||l(c,h)<0^f>0)do u.point(d===0||d===3?n:e,d>1?i:t);while((d=(d+f+4)%4)!==p);else u.point(h[0],h[1])}function s(c,h){return Xt(c[0]-n)<At?h>0?0:3:Xt(c[0]-e)<At?h>0?2:1:Xt(c[1]-t)<At?h>0?1:0:h>0?3:2}function a(c,h){return l(c.x,h.x)}function l(c,h){var f=s(c,1),u=s(h,1);return f!==u?f-u:f===0?h[1]-c[1]:f===1?c[0]-h[0]:f===2?c[1]-h[1]:h[0]-c[0]}return function(c){var h=c,f=Sd(),u,d,p,y,g,m,x,v,b,k,M,C={point:L,lineStart:E,lineEnd:P,polygonStart:$,polygonEnd:I};function L(w,A){r(w,A)&&h.point(w,A)}function _(){for(var w=0,A=0,T=d.length;A<T;++A)for(var R=d[A],F=1,D=R.length,z=R[0],B,H,J=z[0],X=z[1];F<D;++F)B=J,H=X,z=R[F],J=z[0],X=z[1],H<=i?X>i&&(J-B)*(i-H)>(X-H)*(n-B)&&++w:X<=i&&(J-B)*(i-H)<(X-H)*(n-B)&&--w;return w}function $(){h=f,u=[],d=[],M=!0}function I(){var w=_(),A=M&&w,T=(u=Uh(u)).length;(A||T)&&(c.polygonStart(),A&&(c.lineStart(),o(null,null,1,c),c.lineEnd()),T&&_d(u,a,w,o,c),c.polygonEnd()),h=c,u=d=p=null}function E(){C.point=S,d&&d.push(p=[]),k=!0,b=!1,x=v=NaN}function P(){u&&(S(y,g),m&&b&&f.rejoin(),u.push(f.result())),C.point=L,b&&h.lineEnd()}function S(w,A){var T=r(w,A);if(d&&p.push([w,A]),k)y=w,g=A,m=T,k=!1,T&&(h.lineStart(),h.point(w,A));else if(T&&b)h.point(w,A);else{var R=[x=Math.max(ks,Math.min(Lr,x)),v=Math.max(ks,Math.min(Lr,v))],F=[w=Math.max(ks,Math.min(Lr,w)),A=Math.max(ks,Math.min(Lr,A))];Pk(R,F,n,t,e,i)?(b||(h.lineStart(),h.point(R[0],R[1])),h.point(F[0],F[1]),T||h.lineEnd(),M=!1):T&&(h.lineStart(),h.point(w,A),M=!1)}x=w,v=A,b=T}return C}}function Td(n,t,e){var i=di(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[r,o]})}}function $d(n,t,e){var i=di(n,t-At,e).concat(t);return function(r){return i.map(function(o){return[o,r]})}}function Tk(){var n,t,e,i,r,o,s,a,l=10,c=l,h=90,f=360,u,d,p,y,g=2.5;function m(){return{type:"MultiLineString",coordinates:x()}}function x(){return di(ps(i/h)*h,e,h).map(p).concat(di(ps(a/f)*f,s,f).map(y)).concat(di(ps(t/l)*l,n,l).filter(function(v){return Xt(v%h)>At}).map(u)).concat(di(ps(o/c)*c,r,c).filter(function(v){return Xt(v%f)>At}).map(d))}return m.lines=function(){return x().map(function(v){return{type:"LineString",coordinates:v}})},m.outline=function(){return{type:"Polygon",coordinates:[p(i).concat(y(s).slice(1),p(e).reverse().slice(1),y(a).reverse().slice(1))]}},m.extent=function(v){return arguments.length?m.extentMajor(v).extentMinor(v):m.extentMinor()},m.extentMajor=function(v){return arguments.length?(i=+v[0][0],e=+v[1][0],a=+v[0][1],s=+v[1][1],i>e&&(v=i,i=e,e=v),a>s&&(v=a,a=s,s=v),m.precision(g)):[[i,a],[e,s]]},m.extentMinor=function(v){return arguments.length?(t=+v[0][0],n=+v[1][0],o=+v[0][1],r=+v[1][1],t>n&&(v=t,t=n,n=v),o>r&&(v=o,o=r,r=v),m.precision(g)):[[t,o],[n,r]]},m.step=function(v){return arguments.length?m.stepMajor(v).stepMinor(v):m.stepMinor()},m.stepMajor=function(v){return arguments.length?(h=+v[0],f=+v[1],m):[h,f]},m.stepMinor=function(v){return arguments.length?(l=+v[0],c=+v[1],m):[l,c]},m.precision=function(v){return arguments.length?(g=+v,u=Td(o,r,90),d=$d(t,n,g),p=Td(a,s,90),y=$d(i,e,g),m):g},m.extentMajor([[-180,-90+At],[180,90-At]]).extentMinor([[-180,-80-At],[180,80+At]])}const Hc=n=>n;var Vc=new fi,Gc=new fi,Ld,Id,Yc,Xc,Hn={point:cn,lineStart:cn,lineEnd:cn,polygonStart:function(){Hn.lineStart=$k,Hn.lineEnd=Ik},polygonEnd:function(){Hn.lineStart=Hn.lineEnd=Hn.point=cn,Vc.add(Xt(Gc)),Gc=new fi},result:function(){var n=Vc/2;return Vc=new fi,n}};function $k(){Hn.point=Lk}function Lk(n,t){Hn.point=Fd,Ld=Yc=n,Id=Xc=t}function Fd(n,t){Gc.add(Xc*n-Yc*t),Yc=n,Xc=t}function Ik(){Fd(Ld,Id)}var Qi=1/0,Ms=Qi,Ir=-Qi,As=Ir,Ss={point:Fk,lineStart:cn,lineEnd:cn,polygonStart:cn,polygonEnd:cn,result:function(){var n=[[Qi,Ms],[Ir,As]];return Ir=As=-(Ms=Qi=1/0),n}};function Fk(n,t){n<Qi&&(Qi=n),n>Ir&&(Ir=n),t<Ms&&(Ms=t),t>As&&(As=t)}var Uc=0,qc=0,Fr=0,_s=0,Cs=0,tr=0,jc=0,Zc=0,Rr=0,Rd,Dd,kn,Mn,ln={point:Mi,lineStart:zd,lineEnd:Bd,polygonStart:function(){ln.lineStart=zk,ln.lineEnd=Bk},polygonEnd:function(){ln.point=Mi,ln.lineStart=zd,ln.lineEnd=Bd},result:function(){var n=Rr?[jc/Rr,Zc/Rr]:tr?[_s/tr,Cs/tr]:Fr?[Uc/Fr,qc/Fr]:[NaN,NaN];return Uc=qc=Fr=_s=Cs=tr=jc=Zc=Rr=0,n}};function Mi(n,t){Uc+=n,qc+=t,++Fr}function zd(){ln.point=Rk}function Rk(n,t){ln.point=Dk,Mi(kn=n,Mn=t)}function Dk(n,t){var e=n-kn,i=t-Mn,r=Oe(e*e+i*i);_s+=r*(kn+n)/2,Cs+=r*(Mn+t)/2,tr+=r,Mi(kn=n,Mn=t)}function Bd(){ln.point=Mi}function zk(){ln.point=Ok}function Bk(){Od(Rd,Dd)}function Ok(n,t){ln.point=Od,Mi(Rd=kn=n,Dd=Mn=t)}function Od(n,t){var e=n-kn,i=t-Mn,r=Oe(e*e+i*i);_s+=r*(kn+n)/2,Cs+=r*(Mn+t)/2,tr+=r,r=Mn*n-kn*t,jc+=r*(kn+n),Zc+=r*(Mn+t),Rr+=r*3,Mi(kn=n,Mn=t)}function Nd(n){this._context=n}Nd.prototype={_radius:4.5,pointRadius:function(n){return this._radius=n,this},polygonStart:function(){this._line=0},polygonEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){this._line===0&&this._context.closePath(),this._point=NaN},point:function(n,t){switch(this._point){case 0:{this._context.moveTo(n,t),this._point=1;break}case 1:{this._context.lineTo(n,t);break}default:{this._context.moveTo(n+this._radius,t),this._context.arc(n,t,this._radius,0,qe);break}}},result:cn};var Kc=new fi,Jc,Wd,Hd,Dr,zr,Br={point:cn,lineStart:function(){Br.point=Nk},lineEnd:function(){Jc&&Vd(Wd,Hd),Br.point=cn},polygonStart:function(){Jc=!0},polygonEnd:function(){Jc=null},result:function(){var n=+Kc;return Kc=new fi,n}};function Nk(n,t){Br.point=Vd,Wd=Dr=n,Hd=zr=t}function Vd(n,t){Dr-=n,zr-=t,Kc.add(Oe(Dr*Dr+zr*zr)),Dr=n,zr=t}let Gd,Ps,Yd,Xd;class Ud{constructor(t){this._append=t==null?qd:Wk(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(){this._line===0&&(this._+="Z"),this._point=NaN}point(t,e){switch(this._point){case 0:{this._append`M${t},${e}`,this._point=1;break}case 1:{this._append`L${t},${e}`;break}default:{if(this._append`M${t},${e}`,this._radius!==Yd||this._append!==Ps){const i=this._radius,r=this._;this._="",this._append`m0,${i}a${i},${i} 0 1,1 0,${-2*i}a${i},${i} 0 1,1 0,${2*i}z`,Yd=i,Ps=this._append,Xd=this._,this._=r}this._+=Xd;break}}}result(){const t=this._;return this._="",t.length?t:null}}function qd(n){let t=1;this._+=n[0];for(const e=n.length;t<e;++t)this._+=arguments[t]+n[t]}function Wk(n){const t=Math.floor(n);if(!(t>=0))throw new RangeError(`invalid digits: ${n}`);if(t>15)return qd;if(t!==Gd){const e=10**t;Gd=t,Ps=function(r){let o=1;this._+=r[0];for(const s=r.length;o<s;++o)this._+=Math.round(arguments[o]*e)/e+r[o]}}return Ps}function Hk(n,t){let e=3,i=4.5,r,o;function s(a){return a&&(typeof i=="function"&&o.pointRadius(+i.apply(this,arguments)),Ki(a,r(o))),o.result()}return s.area=function(a){return Ki(a,r(Hn)),Hn.result()},s.measure=function(a){return Ki(a,r(Br)),Br.result()},s.bounds=function(a){return Ki(a,r(Ss)),Ss.result()},s.centroid=function(a){return Ki(a,r(ln)),ln.result()},s.projection=function(a){return arguments.length?(r=a==null?(n=null,Hc):(n=a).stream,s):n},s.context=function(a){return arguments.length?(o=a==null?(t=null,new Ud(e)):new Nd(t=a),typeof i!="function"&&o.pointRadius(i),s):t},s.pointRadius=function(a){return arguments.length?(i=typeof a=="function"?a:(o.pointRadius(+a),+a),s):i},s.digits=function(a){if(!arguments.length)return e;if(a==null)e=null;else{const l=Math.floor(a);if(!(l>=0))throw new RangeError(`invalid digits: ${a}`);e=l}return t===null&&(o=new Ud(e)),s},s.projection(n).digits(e).context(t)}function Qc(n){return function(t){var e=new tl;for(var i in n)e[i]=n[i];return e.stream=t,e}}function tl(){}tl.prototype={constructor:tl,point:function(n,t){this.stream.point(n,t)},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()}};function el(n,t,e){var i=n.clipExtent&&n.clipExtent();return n.scale(150).translate([0,0]),i!=null&&n.clipExtent(null),Ki(e,n.stream(Ss)),t(Ss.result()),i!=null&&n.clipExtent(i),n}function nl(n,t,e){return el(n,function(i){var r=t[1][0]-t[0][0],o=t[1][1]-t[0][1],s=Math.min(r/(i[1][0]-i[0][0]),o/(i[1][1]-i[0][1])),a=+t[0][0]+(r-s*(i[1][0]+i[0][0]))/2,l=+t[0][1]+(o-s*(i[1][1]+i[0][1]))/2;n.scale(150*s).translate([a,l])},e)}function jd(n,t,e){return nl(n,[[0,0],t],e)}function Zd(n,t,e){return el(n,function(i){var r=+t,o=r/(i[1][0]-i[0][0]),s=(r-o*(i[1][0]+i[0][0]))/2,a=-o*i[0][1];n.scale(150*o).translate([s,a])},e)}function Kd(n,t,e){return el(n,function(i){var r=+t,o=r/(i[1][1]-i[0][1]),s=-o*i[0][0],a=(r-o*(i[1][1]+i[0][1]))/2;n.scale(150*o).translate([s,a])},e)}var Jd=16,Vk=Dt(30*te);function Qd(n,t){return+t?Yk(n,t):Gk(n)}function Gk(n){return Qc({point:function(t,e){t=n(t,e),this.stream.point(t[0],t[1])}})}function Yk(n,t){function e(i,r,o,s,a,l,c,h,f,u,d,p,y,g){var m=c-i,x=h-r,v=m*m+x*x;if(v>4*t&&y--){var b=s+u,k=a+d,M=l+p,C=Oe(b*b+k*k+M*M),L=an(M/=C),_=Xt(Xt(M)-1)<At||Xt(o-f)<At?(o+f)/2:Wn(k,b),$=n(_,L),I=$[0],E=$[1],P=I-i,S=E-r,w=x*P-m*S;(w*w/v>t||Xt((m*P+x*S)/v-.5)>.3||s*u+a*d+l*p<Vk)&&(e(i,r,o,s,a,l,I,E,_,b/=C,k/=C,M,y,g),g.point(I,E),e(I,E,_,b,k,M,c,h,f,u,d,p,y,g))}}return function(i){var r,o,s,a,l,c,h,f,u,d,p,y,g={point:m,lineStart:x,lineEnd:b,polygonStart:function(){i.polygonStart(),g.lineStart=k},polygonEnd:function(){i.polygonEnd(),g.lineStart=x}};function m(L,_){L=n(L,_),i.point(L[0],L[1])}function x(){f=NaN,g.point=v,i.lineStart()}function v(L,_){var $=Ji([L,_]),I=n(L,_);e(f,u,h,d,p,y,f=I[0],u=I[1],h=L,d=$[0],p=$[1],y=$[2],Jd,i),i.point(f,u)}function b(){g.point=m,i.lineEnd()}function k(){x(),g.point=M,g.lineEnd=C}function M(L,_){v(r=L,_),o=f,s=u,a=d,l=p,c=y,g.point=v}function C(){e(f,u,h,d,p,y,o,s,r,a,l,c,Jd,i),g.lineEnd=b,b()}return g}}var Xk=Qc({point:function(n,t){this.stream.point(n*te,t*te)}});function Uk(n){return Qc({point:function(t,e){var i=n(t,e);return this.stream.point(i[0],i[1])}})}function qk(n,t,e,i,r){function o(s,a){return s*=i,a*=r,[t+n*s,e-n*a]}return o.invert=function(s,a){return[(s-t)/n*i,(e-a)/n*r]},o}function tp(n,t,e,i,r,o){if(!o)return qk(n,t,e,i,r);var s=Dt(o),a=Pt(o),l=s*n,c=a*n,h=s/n,f=a/n,u=(a*e-s*t)/n,d=(a*t+s*e)/n;function p(y,g){return y*=i,g*=r,[l*y-c*g+t,e-c*y-l*g]}return p.invert=function(y,g){return[i*(h*y-f*g+u),r*(d-f*y-h*g)]},p}function An(n){return ep(function(){return n})()}function ep(n){var t,e=150,i=480,r=250,o=0,s=0,a=0,l=0,c=0,h,f=0,u=1,d=1,p=null,y=Ed,g=null,m,x,v,b=Hc,k=.5,M,C,L,_,$;function I(w){return L(w[0]*te,w[1]*te)}function E(w){return w=L.invert(w[0],w[1]),w&&[w[0]*Ie,w[1]*Ie]}I.stream=function(w){return _&&$===w?_:_=Xk(Uk(h)(y(M(b($=w)))))},I.preclip=function(w){return arguments.length?(y=w,p=void 0,S()):y},I.postclip=function(w){return arguments.length?(b=w,g=m=x=v=null,S()):b},I.clipAngle=function(w){return arguments.length?(y=+w?Ck(p=w*te):(p=null,Ed),S()):p*Ie},I.clipExtent=function(w){return arguments.length?(b=w==null?(g=m=x=v=null,Hc):Ek(g=+w[0][0],m=+w[0][1],x=+w[1][0],v=+w[1][1]),S()):g==null?null:[[g,m],[x,v]]},I.scale=function(w){return arguments.length?(e=+w,P()):e},I.translate=function(w){return arguments.length?(i=+w[0],r=+w[1],P()):[i,r]},I.center=function(w){return arguments.length?(o=w[0]%360*te,s=w[1]%360*te,P()):[o*Ie,s*Ie]},I.rotate=function(w){return arguments.length?(a=w[0]%360*te,l=w[1]%360*te,c=w.length>2?w[2]%360*te:0,P()):[a*Ie,l*Ie,c*Ie]},I.angle=function(w){return arguments.length?(f=w%360*te,P()):f*Ie},I.reflectX=function(w){return arguments.length?(u=w?-1:1,P()):u<0},I.reflectY=function(w){return arguments.length?(d=w?-1:1,P()):d<0},I.precision=function(w){return arguments.length?(M=Qd(C,k=w*w),S()):Oe(k)},I.fitExtent=function(w,A){return nl(I,w,A)},I.fitSize=function(w,A){return jd(I,w,A)},I.fitWidth=function(w,A){return Zd(I,w,A)},I.fitHeight=function(w,A){return Kd(I,w,A)};function P(){var w=tp(e,0,0,u,d,f).apply(null,t(o,s)),A=tp(e,i-w[0],r-w[1],u,d,f);return h=vd(a,l,c),C=Oc(t,A),L=Oc(h,C),M=Qd(C,k),S()}function S(){return _=$=null,I}return function(){return t=n.apply(this,arguments),I.invert=t.invert&&E,P()}}function il(n){var t=0,e=Bt/3,i=ep(n),r=i(t,e);return r.parallels=function(o){return arguments.length?i(t=o[0]*te,e=o[1]*te):[t*Ie,e*Ie]},r}function jk(n){var t=Dt(n);function e(i,r){return[i*t,Pt(r)/t]}return e.invert=function(i,r){return[i/t,an(r*t)]},e}function Zk(n,t){var e=Pt(n),i=(e+Pt(t))/2;if(Xt(i)<At)return jk(n);var r=1+e*(2*i-e),o=Oe(r)/i;function s(a,l){var c=Oe(r-2*i*Pt(l))/i;return[c*Pt(a*=i),o-c*Dt(a)]}return s.invert=function(a,l){var c=o-l,h=Wn(a,Xt(c))*sn(c);return c*i<0&&(h-=Bt*sn(a)*sn(c)),[h/i,an((r-(a*a+c*c)*i*i)/(2*i))]},s}function Es(){return il(Zk).scale(155.424).center([0,33.6442])}function np(){return Es().parallels([29.5,45.5]).scale(1070).translate([480,250]).rotate([96,0]).center([-.6,38.7])}function Kk(n){var t=n.length;return{point:function(e,i){for(var r=-1;++r<t;)n[r].point(e,i)},sphere:function(){for(var e=-1;++e<t;)n[e].sphere()},lineStart:function(){for(var e=-1;++e<t;)n[e].lineStart()},lineEnd:function(){for(var e=-1;++e<t;)n[e].lineEnd()},polygonStart:function(){for(var e=-1;++e<t;)n[e].polygonStart()},polygonEnd:function(){for(var e=-1;++e<t;)n[e].polygonEnd()}}}function Jk(){var n,t,e=np(),i,r=Es().rotate([154,0]).center([-2,58.5]).parallels([55,65]),o,s=Es().rotate([157,0]).center([-3,19.9]).parallels([8,18]),a,l,c={point:function(u,d){l=[u,d]}};function h(u){var d=u[0],p=u[1];return l=null,i.point(d,p),l||(o.point(d,p),l)||(a.point(d,p),l)}h.invert=function(u){var d=e.scale(),p=e.translate(),y=(u[0]-p[0])/d,g=(u[1]-p[1])/d;return(g>=.12&&g<.234&&y>=-.425&&y<-.214?r:g>=.166&&g<.234&&y>=-.214&&y<-.115?s:e).invert(u)},h.stream=function(u){return n&&t===u?n:n=Kk([e.stream(t=u),r.stream(u),s.stream(u)])},h.precision=function(u){return arguments.length?(e.precision(u),r.precision(u),s.precision(u),f()):e.precision()},h.scale=function(u){return arguments.length?(e.scale(u),r.scale(u*.35),s.scale(u),h.translate(e.translate())):e.scale()},h.translate=function(u){if(!arguments.length)return e.translate();var d=e.scale(),p=+u[0],y=+u[1];return i=e.translate(u).clipExtent([[p-.455*d,y-.238*d],[p+.455*d,y+.238*d]]).stream(c),o=r.translate([p-.307*d,y+.201*d]).clipExtent([[p-.425*d+At,y+.12*d+At],[p-.214*d-At,y+.234*d-At]]).stream(c),a=s.translate([p-.205*d,y+.212*d]).clipExtent([[p-.214*d+At,y+.166*d+At],[p-.115*d-At,y+.234*d-At]]).stream(c),f()},h.fitExtent=function(u,d){return nl(h,u,d)},h.fitSize=function(u,d){return jd(h,u,d)},h.fitWidth=function(u,d){return Zd(h,u,d)},h.fitHeight=function(u,d){return Kd(h,u,d)};function f(){return n=t=null,h}return h.scale(1070)}function ip(n){return function(t,e){var i=Dt(t),r=Dt(e),o=n(i*r);return o===1/0?[2,0]:[o*r*Pt(t),o*Pt(e)]}}function Or(n){return function(t,e){var i=Oe(t*t+e*e),r=n(i),o=Pt(r),s=Dt(r);return[Wn(t*o,i*s),an(i&&e*o/i)]}}var rp=ip(function(n){return Oe(2/(1+n))});rp.invert=Or(function(n){return 2*an(n/2)});function Qk(){return An(rp).scale(124.75).clipAngle(180-.001)}var op=ip(function(n){return(n=md(n))&&n/Pt(n)});op.invert=Or(function(n){return n});function tM(){return An(op).scale(79.4188).clipAngle(180-.001)}function Ts(n,t){return[n,gs(Fc((Qt+t)/2))]}Ts.invert=function(n,t){return[n,2*Zi(gd(t))-Qt]};function sp(){return ap(Ts).scale(961/qe)}function ap(n){var t=An(n),e=t.center,i=t.scale,r=t.translate,o=t.clipExtent,s=null,a,l,c;t.scale=function(f){return arguments.length?(i(f),h()):i()},t.translate=function(f){return arguments.length?(r(f),h()):r()},t.center=function(f){return arguments.length?(e(f),h()):e()},t.clipExtent=function(f){return arguments.length?(f==null?s=a=l=c=null:(s=+f[0][0],a=+f[0][1],l=+f[1][0],c=+f[1][1]),h()):s==null?null:[[s,a],[l,c]]};function h(){var f=Bt*i(),u=t(bk(t.rotate()).invert([0,0]));return o(s==null?[[u[0]-f,u[1]-f],[u[0]+f,u[1]+f]]:n===Ts?[[Math.max(u[0]-f,s),a],[Math.min(u[0]+f,l),c]]:[[s,Math.max(u[1]-f,a)],[l,Math.min(u[1]+f,c)]])}return h()}function $s(n){return Fc((Qt+n)/2)}function eM(n,t){var e=Dt(n),i=n===t?Pt(n):gs(e/Dt(t))/gs($s(t)/$s(n)),r=e*Ic($s(n),i)/i;if(!i)return Ts;function o(s,a){r>0?a<-Qt+At&&(a=-Qt+At):a>Qt-At&&(a=Qt-At);var l=r/Ic($s(a),i);return[l*Pt(i*s),r-l*Dt(i*s)]}return o.invert=function(s,a){var l=r-a,c=sn(i)*Oe(s*s+l*l),h=Wn(s,Xt(l))*sn(l);return l*i<0&&(h-=Bt*sn(s)*sn(l)),[h/i,2*Zi(Ic(r/c,1/i))-Qt]},o}function nM(){return il(eM).scale(109.5).parallels([30,30])}function Ls(n,t){return[n,t]}Ls.invert=Ls;function iM(){return An(Ls).scale(152.63)}function rM(n,t){var e=Dt(n),i=n===t?Pt(n):(e-Dt(t))/(t-n),r=e/i+n;if(Xt(i)<At)return Ls;function o(s,a){var l=r-a,c=i*s;return[l*Pt(c),r-l*Dt(c)]}return o.invert=function(s,a){var l=r-a,c=Wn(s,Xt(l))*sn(l);return l*i<0&&(c-=Bt*sn(s)*sn(l)),[c/i,r-sn(i)*Oe(s*s+l*l)]},o}function oM(){return il(rM).scale(131.154).center([0,13.9389])}var Nr=1.340264,Wr=-.081106,Hr=893e-6,Vr=.003796,Is=Oe(3)/2,sM=12;function cp(n,t){var e=an(Is*Pt(t)),i=e*e,r=i*i*i;return[n*Dt(e)/(Is*(Nr+3*Wr*i+r*(7*Hr+9*Vr*i))),e*(Nr+Wr*i+r*(Hr+Vr*i))]}cp.invert=function(n,t){for(var e=t,i=e*e,r=i*i*i,o=0,s,a,l;o<sM&&(a=e*(Nr+Wr*i+r*(Hr+Vr*i))-t,l=Nr+3*Wr*i+r*(7*Hr+9*Vr*i),e-=s=a/l,i=e*e,r=i*i*i,!(Xt(s)<dd));++o);return[Is*n*(Nr+3*Wr*i+r*(7*Hr+9*Vr*i))/Dt(e),an(Pt(e)/Is)]};function lp(){return An(cp).scale(177.158)}function hp(n,t){var e=Dt(t),i=Dt(n)*e;return[e*Pt(n)/i,Pt(t)/i]}hp.invert=Or(Zi);function aM(){return An(hp).scale(144.049).clipAngle(60)}function up(n,t){var e=t*t,i=e*e;return[n*(.8707-.131979*e+i*(-.013791+i*(.003971*e-.001529*i))),t*(1.007226+e*(.015085+i*(-.044475+.028874*e-.005916*i)))]}up.invert=function(n,t){var e=t,i=25,r;do{var o=e*e,s=o*o;e-=r=(e*(1.007226+o*(.015085+s*(-.044475+.028874*o-.005916*s)))-t)/(1.007226+o*(.015085*3+s*(-.044475*7+.028874*9*o-.005916*11*s)))}while(Xt(r)>At&&--i>0);return[n/(.8707+(o=e*e)*(-.131979+o*(-.013791+o*o*o*(.003971-.001529*o)))),e]};function rl(){return An(up).scale(175.295)}function fp(n,t){return[Dt(t)*Pt(n),Pt(t)]}fp.invert=Or(an);function dp(){return An(fp).scale(249.5).clipAngle(90+At)}function pp(n,t){var e=Dt(t),i=1+Dt(n)*e;return[e*Pt(n)/i,Pt(t)/i]}pp.invert=Or(function(n){return 2*Zi(n)});function cM(){return An(pp).scale(250).clipAngle(142)}function gp(n,t){return[gs(Fc((Qt+t)/2)),-n]}gp.invert=function(n,t){return[-t,2*Zi(gd(n))-Qt]};function lM(){var n=ap(gp),t=n.center,e=n.rotate;return n.center=function(i){return arguments.length?t([-i[1],i[0]]):(i=t(),[i[1],-i[0]])},n.rotate=function(i){return arguments.length?e([i[0],i[1],i.length>2?i[2]+90:90]):(i=e(),[i[0],i[1],i[2]-90])},e([0,0,90]).scale(159.155)}function hM(n){return n}function uM(n){if(n==null)return hM;var t,e,i=n.scale[0],r=n.scale[1],o=n.translate[0],s=n.translate[1];return function(a,l){l||(t=e=0);var c=2,h=a.length,f=new Array(h);for(f[0]=(t+=a[0])*i+o,f[1]=(e+=a[1])*r+s;c<h;)f[c]=a[c],++c;return f}}function fM(n,t){for(var e,i=n.length,r=i-t;r<--i;)e=n[r],n[r++]=n[i],n[i]=e}function dM(n,t){return typeof t=="string"&&(t=n.objects[t]),t.type==="GeometryCollection"?{type:"FeatureCollection",features:t.geometries.map(function(e){return mp(n,e)})}:mp(n,t)}function mp(n,t){var e=t.id,i=t.bbox,r=t.properties==null?{}:t.properties,o=pM(n,t);return e==null&&i==null?{type:"Feature",properties:r,geometry:o}:i==null?{type:"Feature",id:e,properties:r,geometry:o}:{type:"Feature",id:e,bbox:i,properties:r,geometry:o}}function pM(n,t){var e=uM(n.transform),i=n.arcs;function r(h,f){f.length&&f.pop();for(var u=i[h<0?~h:h],d=0,p=u.length;d<p;++d)f.push(e(u[d],d));h<0&&fM(f,p)}function o(h){return e(h)}function s(h){for(var f=[],u=0,d=h.length;u<d;++u)r(h[u],f);return f.length<2&&f.push(f[0]),f}function a(h){for(var f=s(h);f.length<4;)f.push(f[0]);return f}function l(h){return h.map(a)}function c(h){var f=h.type,u;switch(f){case"GeometryCollection":return{type:f,geometries:h.geometries.map(c)};case"Point":u=o(h.coordinates);break;case"MultiPoint":u=h.coordinates.map(o);break;case"LineString":u=s(h.arcs);break;case"MultiLineString":u=h.arcs.map(s);break;case"Polygon":u=l(h.arcs);break;case"MultiPolygon":u=h.arcs.map(l);break;default:return null}return{type:f,coordinates:u}}return c(t)}const yp=(n,t)=>[n,1.25*Math.log(Math.tan(Math.PI/4+.4*t))];yp.invert=(n,t)=>[n,2.5*Math.atan(Math.exp(.8*t))-.625*Math.PI];const gM={naturalEarth:rl,naturalEarth1:rl,mercator:sp,orthographic:dp,albers:np,albersUsa:Jk,equirectangular:iM,equalEarth:lp,conicEqualArea:Es,conicEquidistant:oM,stereographic:cM,transverseMercator:lM,azimuthalEqualArea:Qk,azimuthalEquidistant:tM,gnomonic:aM,Orthographic:dp,WebMercator:sp,EqualEarth:lp,LambertConformalConic:nM,Miller:()=>An(yp).scale(108.318)};function mM(n,t){if(n&&n.type==="Topology"&&n.objects){const e=t||(n.objects.countries?"countries":Object.keys(n.objects)[0]),i=dM(n,n.objects[e]);return i.features||[i]}return n.features||n}function ol(n,t){var e;return String(n).toLowerCase()==="orthographic"||!!((e=t==null?void 0:t.options3d)!=null&&e.enabled)}function sl(n,t,e,i){var f,u,d;const r=mM(n,i),o={type:"FeatureCollection",features:r},s=(t==null?void 0:t.name)||t||"naturalEarth",l=(gM[s]||rl)(),c=typeof t=="object"?t:{};c.rotation&&((f=l.rotate)==null||f.call(l,c.rotation)),c.center&&((u=l.center)==null||u.call(l,c.center)),c.scale&&((d=l.scale)==null||d.call(l,c.scale)),c.parallels&&l.parallels&&l.parallels(c.parallels),c.scale||l.fitSize([e.width,e.height],o);const h=Hk().projection(l);return{projection:l,pathGen:h,features:r,projName:String(s)}}function al(n,t){const e=t.width/2,i=t.height/2,r=Math.min(t.width,t.height)/2-10;return n.translate([e,i]).scale(r).clipAngle(90),r}function cl(n){var t;return n?Array.isArray(n)&&n.length>=2&&typeof n[0]=="number"?[n[0],n[1]]:n.lon!=null&&n.lat!=null?[n.lon,n.lat]:(t=n.geometry)!=null&&t.coordinates&&Array.isArray(n.geometry.coordinates)?[n.geometry.coordinates[0],n.geometry.coordinates[1]]:typeof n.x=="number"&&typeof n.y=="number"?[n.x,n.y]:null:null}const yM={blues:ed,reds:hw,greens:rw,oranges:fw,purples:cw,greys:sw,ylOrRd:td,ylGnBu:tw,rdYlGn:J2,viridis:dw,plasma:gw,inferno:pw};class xM extends Ut{constructor(t){super(t),this.zoomBehavior=null,this.mapGroup=null,this.featurePaths=null,this.dataMap=new Map,this.globeProjection=null,this.globePathGen=null,this.autoRotateTimer=null}destroy(){this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null),super.destroy()}render(){var $;const{plotArea:t}=this.context,e=this.config,i=e.mapData;if(!i){this.group.append("text").attr("x",t.width/2).attr("y",t.height/2).attr("text-anchor","middle").attr("fill","#999").text("Map data not provided");return}const{projection:r,pathGen:o,features:s,projName:a}=sl(i,e.projection,t,e.mapDataObject);this.dataMap.clear();const l=e.joinBy||["hc-key","code"],c=Array.isArray(l)?l:[l,l],h=c[0],f=c.length>1?c[1]:c[0];for(const I of this.data){const E=I[f]||I.code||I["hc-key"]||I.name;E&&this.dataMap.set(String(E),I)}const u=e.colorAxis||{},d=this.data.map(I=>I.y??I.value??0).filter(I=>I!=null),p=u.min??(d.length?Math.min(...d):0),y=u.max??(d.length?Math.max(...d):1);if(Array.isArray(u.stops)&&u.stops.length>=2){const I=y-p||1,E=u.stops.map(w=>p+w[0]*I),P=u.stops.map(w=>w[1]),S=we().domain(E).range(P).clamp(!0);this.colorScale=w=>S(w)}else if(u.minColor&&u.maxColor){const I=gi(u.minColor,u.maxColor),E=this.makeAxisNorm(u,p,y);this.colorScale=P=>I(E(P))}else{const I=u.colorScheme||"blues",E=yM[I]||ed,P=this.makeAxisNorm(u,p,y);this.colorScale=S=>E(P(S))}const g=e.nullColor??"#f0f0f0",m=e.allAreas!==!1,x=e.borderColor??"#cccccc",v=e.borderWidth??.5,b=`katucharts-map-clip-${Math.random().toString(36).slice(2,8)}`;this.group.append("defs").append("clipPath").attr("id",b).append("rect").attr("width",t.width).attr("height",t.height);const M=this.group.append("g").attr("clip-path",`url(#${b})`).attr("class","katucharts-map-clip");this.mapGroup=M.append("g").attr("class","katucharts-map-container katucharts-mapzoom");const C=m?s:s.filter(I=>{const E=this.getFeatureKey(I,h);return this.dataMap.has(E)}),L=this.context.animate;this.featurePaths=this.mapGroup.selectAll(".katucharts-map-feature").data(C).join("path").attr("class","katucharts-map-feature").attr("d",o).attr("stroke",x).attr("stroke-width",v).attr("stroke-linejoin","round").style("cursor","pointer"),L?this.featurePaths.attr("fill",g).attr("fill-opacity",0).transition().duration(bt).ease(pt).attr("fill-opacity",1).attr("fill",I=>this.getFeatureColor(I,h,g)):this.featurePaths.attr("fill",I=>this.getFeatureColor(I,h,g)),this.attachMapHover(h,x,v,g),this.renderMapLabels(o,C,h),u.enabled!==!1&&d.length>0&&this.renderColorAxis(p,y,u),ol(a,e)?this.setupGlobeMode(r,o,s,h,g,x,v,e):(($=e.mapNavigation)==null?void 0:$.enabled)!==!1&&this.setupMapNavigation(r,o)}makeAxisNorm(t,e,i){if(t.type==="logarithmic"&&e>0&&i>0){const o=Po().domain([e,i]).clamp(!0);return s=>o(Math.max(s,e))}const r=we().domain([e,i]).clamp(!0);return o=>r(o)}getFeatureKey(t,e){var i,r,o;return String(((i=t.properties)==null?void 0:i[e])||((r=t.properties)==null?void 0:r["hc-key"])||((o=t.properties)==null?void 0:o.name)||t.id||"")}getFeatureColor(t,e,i){const r=this.getFeatureKey(t,e),o=this.dataMap.get(r);if(o){if(o.color)return o.color;const s=o.y??o.value;if(s!=null)return this.colorScale(s)}return i}attachMapHover(t,e,i,r){var h,f,u,d,p,y,g,m;const o=this.config,s=(f=(h=o.states)==null?void 0:h.hover)==null?void 0:f.color,a=((d=(u=o.states)==null?void 0:u.hover)==null?void 0:d.borderColor)??"#333333",l=((y=(p=o.states)==null?void 0:p.hover)==null?void 0:y.borderWidth)??1.5,c=((m=(g=o.states)==null?void 0:g.hover)==null?void 0:m.brightness)??.2;this.featurePaths.on("mouseover",(x,v)=>{var I,E,P;const b=rt(x.currentTarget),k=this.getFeatureKey(v,t),M=this.dataMap.get(k),C=b.attr("fill");if(s)b.transition("hover").duration(K).ease(Z).attr("fill",s);else{const S=((E=(I=oe(C))==null?void 0:I.brighter(c))==null?void 0:E.toString())||C;b.transition("hover").duration(K).ease(Z).attr("fill",S)}b.attr("stroke",a).attr("stroke-width",l),b.raise(),this.featurePaths.interrupt("highlight"),this.featurePaths.filter(S=>S!==v).transition("highlight").duration(K).ease(Z).attr("opacity",.7);const L=((P=v.properties)==null?void 0:P.name)||k,_=M?{name:M.name??L,y:M.y??M.value,...M}:{name:L},$=x.currentTarget.getBBox();this.context.events.emit("point:mouseover",{point:_,index:0,series:this,event:x,plotX:$.x+$.width/2,plotY:$.y+$.height/2})}).on("mouseout",(x,v)=>{var L;const b=rt(x.currentTarget),k=this.getFeatureColor(v,t,r);b.transition("hover").duration(K).ease(Z).attr("fill",k),b.attr("stroke",e).attr("stroke-width",i),this.featurePaths.interrupt("highlight"),this.featurePaths.transition("highlight").duration(K).ease(Z).attr("opacity",1);const M=this.getFeatureKey(v,t),C=this.dataMap.get(M)||{name:((L=v.properties)==null?void 0:L.name)||M};this.context.events.emit("point:mouseout",{point:C,index:0,series:this,event:x})}).on("click",(x,v)=>{var M;const b=this.getFeatureKey(v,t),k=this.dataMap.get(b)||{name:((M=v.properties)==null?void 0:M.name)||b};this.context.events.emit("point:click",{point:k,index:0,series:this,event:x})})}renderMapLabels(t,e,i){var c,h,f;const r=this.config.dataLabels||this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((c=r.style)==null?void 0:c.fontSize)||wt,s=this.autoLabelColor(r.color||((h=r.style)==null?void 0:h.color)),a=this.labelHalo(),l=((f=r.filter)==null?void 0:f.property)==="hasData";this.mapGroup.selectAll(".katucharts-map-label").data(e).join("text").attr("class","katucharts-map-label").attr("transform",u=>{const d=t.centroid(u);return isFinite(d[0])?`translate(${d[0]},${d[1]})`:"translate(-9999,-9999)"}).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",o).attr("fill",s).style("pointer-events","none").style("text-shadow",a).text(u=>{var y,g,m,x,v;const d=this.getFeatureKey(u,i),p=this.dataMap.get(d);return l&&!p?"":r.formatter?r.formatter.call({point:p||{name:(y=u.properties)==null?void 0:y.name},series:{name:this.config.name},x:(g=u.properties)==null?void 0:g.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)}):r.format?fe(Zt(r.format,{point:p||{name:(m=u.properties)==null?void 0:m.name},series:{name:this.config.name},x:(x=u.properties)==null?void 0:x.name,y:(p==null?void 0:p.y)??(p==null?void 0:p.value)})):(p==null?void 0:p.name)||((v=u.properties)==null?void 0:v.name)||""})}renderColorAxis(t,e,i){const{plotArea:r}=this.context,o=i.layout==="horizontal"?"bottom":"right",s=i.labels||{},a=i.title;o==="bottom"?this.renderHorizontalColorAxis(t,e,i,s,a):this.renderVerticalColorAxis(t,e,i,s,a)}renderVerticalColorAxis(t,e,i,r,o){var k,M;const{plotArea:s}=this.context,a=i.width??12,l=i.height??s.height*.5,c=s.width+15,h=(s.height-l)/2,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","100%").attr("x2","0%").attr("y2","0%");for(let C=0;C<=f;C++){const L=C/f,_=t+L*(e-t);y.append("stop").attr("offset",`${L*100}%`).attr("stop-color",this.colorScale(_))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((k=r.style)==null?void 0:k.fontSize)||wt,m=this.autoLabelColor((M=r.style)==null?void 0:M.color),x=r.formatter,v=C=>x?x.call({value:C}):String(Math.round(C));u.append("text").attr("x",c+a+4).attr("y",h+l).attr("font-size",g).attr("fill",m).attr("dominant-baseline","auto").text(v(t)),u.append("text").attr("x",c+a+4).attr("y",h).attr("font-size",g).attr("fill",m).attr("dominant-baseline","hanging").text(v(e));const b=(t+e)/2;u.append("text").attr("x",c+a+4).attr("y",h+l/2).attr("font-size",g).attr("fill",m).attr("dominant-baseline","middle").text(v(b)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-8).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}renderHorizontalColorAxis(t,e,i,r,o){var b,k;const{plotArea:s}=this.context,a=i.width??s.width*.5,l=i.height??12,c=(s.width-a)/2,h=s.height+25,f=60,u=this.group.append("g").attr("class","katucharts-map-color-axis"),d=u.append("defs"),p=`katucharts-map-grad-${Math.random().toString(36).slice(2,8)}`,y=d.append("linearGradient").attr("id",p).attr("x1","0%").attr("y1","0%").attr("x2","100%").attr("y2","0%");for(let M=0;M<=f;M++){const C=M/f,L=t+C*(e-t);y.append("stop").attr("offset",`${C*100}%`).attr("stop-color",this.colorScale(L))}u.append("rect").attr("x",c).attr("y",h).attr("width",a).attr("height",l).attr("fill",`url(#${p})`).attr("stroke","#ccc").attr("stroke-width",.5).attr("rx",2);const g=((b=r.style)==null?void 0:b.fontSize)||wt,m=this.autoLabelColor((k=r.style)==null?void 0:k.color),x=r.formatter,v=M=>x?x.call({value:M}):String(Math.round(M));u.append("text").attr("x",c).attr("y",h+l+12).attr("text-anchor","start").attr("font-size",g).attr("fill",m).text(v(t)),u.append("text").attr("x",c+a).attr("y",h+l+12).attr("text-anchor","end").attr("font-size",g).attr("fill",m).text(v(e)),o!=null&&o.text&&u.append("text").attr("x",c+a/2).attr("y",h-6).attr("text-anchor","middle").attr("font-size","10px").attr("fill",this.autoLabelColor()).text(o.text)}setupMapNavigation(t,e){const{plotArea:i}=this.context,r=this.config.mapNavigation||{},o=r.enableButtons!==!1,s=r.enableMouseWheelZoom!==!1,a=r.enableDoubleClickZoom!==!1,l=r.enableDrag!==!1,c=r.maxZoom??16,h=i.width/2,f=i.height/2;this.zoomBehavior=gf().scaleExtent([1,c]).on("zoom",p=>{this.context.chartGroup.selectAll(".katucharts-mapzoom").attr("transform",p.transform)});const u=this.group.select(".katucharts-map-clip"),d=u.empty()?this.group:u;d.insert("rect",":first-child").attr("width",i.width).attr("height",i.height).attr("fill","none").style("pointer-events","all"),(s||a||l)&&(d.call(this.zoomBehavior),s||d.on("wheel.zoom",null),a||d.on("dblclick.zoom",null),l||(d.on("mousedown.zoom",null),d.on("touchstart.zoom",null))),o&&this.renderNavButtons(d,h,f)}renderNavButtons(t,e,i){var C,L;const{plotArea:r}=this.context,o=this.config.mapNavigation||{},s=o.buttonOptions||{},a=s.theme||{},l=o.buttons||{},c=24,h=4,f=10,u=c*2+h,d=s.align||"left",p=s.verticalAlign||"top",y=(d==="right"?r.width-c-f:f)+(s.x??0),g=(p==="bottom"?r.height-u-f:f)+(s.y??0),m=a.fill||"#ffffff",x=a.stroke||"#e0e0e0",v=a.style&&a.style.color||s.symbolStroke||"#3f3f46",b=this.group.append("g").attr("class","katucharts-map-nav"),k=[e,i],M=(_,$,I)=>{const E=b.append("g").style("cursor","pointer").on("click",I);return E.append("rect").attr("x",y).attr("y",_).attr("width",c).attr("height",c).attr("fill",m).attr("stroke",x).attr("stroke-width",1).attr("rx",4),E.append("text").attr("x",y+c/2).attr("y",_+c/2+1).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size","17px").attr("fill",v).style("user-select","none").text($),E.on("mouseover",function(){rt(this).select("rect").attr("fill","#f5f5f5")}).on("mouseout",function(){rt(this).select("rect").attr("fill",m)}),E};M(g,((C=l.zoomIn)==null?void 0:C.text)||"+",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1.5,k)}),M(g+c+h,((L=l.zoomOut)==null?void 0:L.text)||"−",()=>{t.transition().duration(300).call(this.zoomBehavior.scaleBy,1/1.5,k)})}setupGlobeMode(t,e,i,r,o,s,a,l){const{plotArea:c}=this.context,h=c.width/2,f=c.height/2;this.globeProjection=t,this.globePathGen=e;const u=al(t,c),d=l.options3d||{},p=d.oceanColor??"#d4f1f9",y=d.atmosphereColor??"rgba(100,180,255,0.15)",g=d.graticule!==!1,m=d.graticuleColor??"#ccc",x=d.graticuleOpacity??.4,v=d.autoRotate!==!1,b=d.rotateSpeed??.3,k=d.shadow!==!1,M=this.mapGroup.append("defs"),C=`katucharts-globe-glow-${Math.random().toString(36).slice(2,8)}`,L=M.append("radialGradient").attr("id",C);if(L.append("stop").attr("offset","70%").attr("stop-color",y),L.append("stop").attr("offset","100%").attr("stop-color","rgba(100,180,255,0)"),this.mapGroup.insert("circle",":first-child").attr("cx",h).attr("cy",f).attr("r",u+15).attr("fill",`url(#${C})`).attr("class","katucharts-globe-atmosphere"),k&&this.mapGroup.insert("ellipse",":first-child").attr("cx",h+8).attr("cy",f+u+18).attr("rx",u*.6).attr("ry",8).attr("fill","rgba(0,0,0,0.12)").attr("class","katucharts-globe-shadow"),this.mapGroup.insert("circle",".katucharts-map-feature").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",p).attr("stroke","#999").attr("stroke-width",.5).attr("class","katucharts-globe-ocean"),g){const w=Tk().step([15,15]);this.mapGroup.insert("path",".katucharts-map-feature").datum(w()).attr("d",e).attr("fill","none").attr("stroke",m).attr("stroke-width",.3).attr("stroke-opacity",x).attr("class","katucharts-globe-graticule")}this.featurePaths.attr("d",e);const _=`katucharts-globe-spec-${Math.random().toString(36).slice(2,8)}`,$=M.append("radialGradient").attr("id",_).attr("cx","35%").attr("cy","25%");$.append("stop").attr("offset","0%").attr("stop-color","rgba(255,255,255,0.35)"),$.append("stop").attr("offset","50%").attr("stop-color","rgba(255,255,255,0.05)"),$.append("stop").attr("offset","100%").attr("stop-color","rgba(255,255,255,0)"),this.mapGroup.append("circle").attr("cx",h).attr("cy",f).attr("r",u).attr("fill",`url(#${_})`).style("pointer-events","none").attr("class","katucharts-globe-specular");const I=this;let E=null,P=v;const S=df().on("start",w=>{const A=t.rotate();E=[A[0],A[1],w.x],I.autoRotateTimer&&(P=!0,I.autoRotateTimer.stop(),I.autoRotateTimer=null)}).on("drag",w=>{if(!E)return;const A=.4,T=(w.x-E[2])*A,R=E[0]+T,F=Math.max(-90,Math.min(90,E[1]-(w.y-w.subject.y)*A));t.rotate([R,F]),I.redrawGlobe()}).on("end",()=>{E=null,P&&v&&I.startAutoRotate(t,b)});this.group.call(S),this.group.style("cursor","grab"),this.group.on("wheel",w=>{w.preventDefault();const A=t.scale(),T=w.deltaY>0?.95:1.05,R=Math.max(u*.5,Math.min(u*8,A*T));t.scale(R),I.redrawGlobe()}),v&&this.startAutoRotate(t,b)}startAutoRotate(t,e){const i=this;this.autoRotateTimer&&(this.autoRotateTimer.stop(),this.autoRotateTimer=null);let r=0;this.autoRotateTimer=Yo(o=>{const s=r?Math.min(o-r,64):16;r=o;const a=t.rotate();t.rotate([a[0]+e*(s/16),a[1]]),i.redrawGlobe()})}redrawGlobe(){if(!this.globePathGen||!this.featurePaths||!this.globeProjection)return;const t=this.globeProjection,[e,i]=t.translate(),r=t.scale();this.featurePaths.attr("d",this.globePathGen),this.mapGroup.selectAll(".katucharts-globe-graticule").attr("d",this.globePathGen),this.mapGroup.select(".katucharts-globe-ocean").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-atmosphere").attr("cx",e).attr("cy",i).attr("r",r+15),this.mapGroup.select(".katucharts-globe-specular").attr("cx",e).attr("cy",i).attr("r",r),this.mapGroup.select(".katucharts-globe-shadow").attr("cx",e+8).attr("cy",i+r+18).attr("rx",r*.6),this.mapGroup.selectAll(".katucharts-map-label").attr("transform",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?`translate(${s[0]},${s[1]})`:"translate(-9999,-9999)"}).attr("display",o=>{const s=this.globePathGen.centroid(o);return isFinite(s[0])?null:"none"})}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class bM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}render(){var v,b,k;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=sl(i,t.projection,e,t.mapDataObject);ol(o,t)&&al(r,e);const s=this.group.append("g").attr("class","katucharts-mapzoom katucharts-mappoint-layer"),a=t.marker||{},l=a.enabled!==!1,c=a.radius??5,h=a.lineColor??"#ffffff",f=a.lineWidth??1,u=t.color||this.getColor(),d=this.context.animate,p=t.dataLabels,y=!!(p!=null&&p.enabled),g=this.autoLabelColor((p==null?void 0:p.color)||((v=p==null?void 0:p.style)==null?void 0:v.color)),m=((b=p==null?void 0:p.style)==null?void 0:b.fontSize)||wt,x=((k=p==null?void 0:p.style)==null?void 0:k.fontWeight)||"600";this.data.forEach((M,C)=>{var w;M.name==null&&M.id!=null&&(M.name=M.id);const L=cl(M);if(!L)return;const _=r(L);if(!_||!isFinite(_[0])||!isFinite(_[1]))return;const[$,I]=_,E=M.color||u,P=((w=M.marker)==null?void 0:w.radius)??c,S=s.append("g").attr("class","katucharts-mappoint");if(l){const A=S.append("circle").attr("class","katucharts-mappoint-marker").attr("cx",$).attr("cy",I).attr("fill",E).attr("stroke",h).attr("stroke-width",f).style("cursor",t.cursor||"pointer").attr("r",d?0:P);d&&A.transition().duration(bt).delay(C*12).ease(pt).attr("r",P),A.on("mouseover",T=>{var R,F;rt(T.currentTarget).transition("hover").duration(K).ease(Z).attr("r",P*1.4),this.context.events.emit("point:mouseover",{point:M,index:C,series:this,event:T,plotX:$,plotY:I}),(F=(R=M.events)==null?void 0:R.mouseOver)==null||F.call(M,T)}).on("mouseout",T=>{var R,F;rt(T.currentTarget).transition("hover").duration(K).ease(Z).attr("r",P),this.context.events.emit("point:mouseout",{point:M,index:C,series:this,event:T}),(F=(R=M.events)==null?void 0:R.mouseOut)==null||F.call(M,T)}).on("click",T=>{var R,F,D,z,B,H,J;this.context.events.emit("point:click",{point:M,index:C,series:this,event:T}),(F=(R=M.events)==null?void 0:R.click)==null||F.call(M,T),(B=(z=(D=t.point)==null?void 0:D.events)==null?void 0:z.click)==null||B.call(M,T),(J=(H=t.events)==null?void 0:H.click)==null||J.call(this,T)})}if(y){const A=this.formatLabel(M,C);A&&s.append("text").attr("class","katucharts-mappoint-label").attr("x",$).attr("y",I-P-3).attr("text-anchor","middle").attr("dominant-baseline","auto").attr("font-size",m).attr("font-weight",x).attr("fill",g).style("pointer-events","none").style("text-shadow",this.labelHalo()).text(A)}})}formatLabel(t,e){const i=this.config.dataLabels,r={point:t,series:{name:this.config.name},x:t.id??t.name,y:t.y??t.value};return i!=null&&i.formatter?i.formatter.call(r):i!=null&&i.format?fe(Zt(i.format,r)):t.id||t.name||""}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}class vM extends Ut{constructor(t){super(t)}resolveMapData(){const t=this.config;if(t.mapData)return t.mapData;for(const e of this.context.allSeries||[]){const i=e.config;if(e!==this&&(i!=null&&i.mapData))return i.mapData}return null}buildIdMap(){const t=new Map;for(const e of this.context.allSeries||[])if(e!==this)for(const i of e.data){const r=cl(i),o=i.id??i.name;o!=null&&r&&t.set(String(o),r)}return t}resolveEndpoint(t,e){return t==null?null:Array.isArray(t)&&typeof t[0]=="number"?[t[0],t[1]]:typeof t=="object"?cl(t):e.get(String(t))||null}render(){var g;const t=this.config,{plotArea:e}=this.context,i=this.resolveMapData();if(!i)return;const{projection:r,projName:o}=sl(i,t.projection,e,t.mapDataObject);ol(o,t)&&al(r,e);const s=this.buildIdMap(),a=this.group.append("g").attr("class","katucharts-mapzoom katucharts-flowmap-layer"),l=t.color||this.getColor(),c=t.fillOpacity??.5,h=t.curveFactor??.3,f=((g=t.markerEnd)==null?void 0:g.enabled)!==!1,u=this.context.animate,d=this.data.map(m=>m.weight??m.y??m.value??1),p=Math.max(...d,1),y=t.width!=null?t.width<=1?t.width*40:t.width:16;this.data.forEach((m,x)=>{const v=m,b=this.resolveEndpoint(v.from,s),k=this.resolveEndpoint(v.to,s);if(!b||!k)return;v.name==null&&typeof v.from=="string"&&typeof v.to=="string"&&(v.name=`${v.from} → ${v.to}`);const M=r(b),C=r(k);if(!M||!C||!isFinite(M[0])||!isFinite(C[0]))return;const L=v.weight??v.y??v.value??1,_=Math.max(2,y*(L/p)),$=v.color||l,{d:I,mid:E,tip:P,tipAngle:S}=this.buildFlowPath(M,C,_,h),w=a.append("path").attr("class","katucharts-flowmap-link").attr("d",I).attr("fill",$).attr("fill-opacity",u?0:c).attr("stroke","none").style("cursor",t.cursor||"pointer");if(u&&w.transition().duration(bt).delay(x*30).ease(pt).attr("fill-opacity",c),f){const A=_*1.1+3,T=a.append("path").attr("class","katucharts-flowmap-arrow").attr("d",this.arrowHead(P,S,A)).attr("fill",$).attr("fill-opacity",u?0:c).style("pointer-events","none");u&&T.transition().duration(bt).delay(x*30).ease(pt).attr("fill-opacity",c)}w.on("mouseover",A=>{var T,R;rt(A.currentTarget).transition("hover").duration(K).ease(Z).attr("fill-opacity",Math.min(1,c+.3)),this.context.events.emit("point:mouseover",{point:m,index:x,series:this,event:A,plotX:E[0],plotY:E[1]}),(R=(T=v.events)==null?void 0:T.mouseOver)==null||R.call(m,A)}).on("mouseout",A=>{var T,R;rt(A.currentTarget).transition("hover").duration(K).ease(Z).attr("fill-opacity",c),this.context.events.emit("point:mouseout",{point:m,index:x,series:this,event:A}),(R=(T=v.events)==null?void 0:T.mouseOut)==null||R.call(m,A)}).on("click",A=>{var T,R,F,D,z,B,H;this.context.events.emit("point:click",{point:m,index:x,series:this,event:A}),(R=(T=v.events)==null?void 0:T.click)==null||R.call(m,A),(z=(D=(F=t.point)==null?void 0:F.events)==null?void 0:D.click)==null||z.call(m,A),(H=(B=t.events)==null?void 0:B.click)==null||H.call(this,A)})})}buildFlowPath(t,e,i,r){const o=e[0]-t[0],s=e[1]-t[1],a=Math.hypot(o,s)||1,l=-s/a,c=o/a,h=[(t[0]+e[0])/2+l*r*a,(t[1]+e[1])/2+c*r*a],f=24,u=Math.max(.6,i*.12),d=i/2,p=[],y=[];let g=t;for(let k=0;k<=f;k++){const M=k/f,C=1-M,L=C*C*t[0]+2*C*M*h[0]+M*M*e[0],_=C*C*t[1]+2*C*M*h[1]+M*M*e[1],$=L-g[0],I=_-g[1],E=Math.hypot($,I)||1,P=-I/E,S=$/E,w=u+(d-u)*M;p.push([L+P*w,_+S*w]),y.push([L-P*w,_-S*w]),g=[L,_]}const m=.25*t[0]+.5*h[0]+.25*e[0],x=.25*t[1]+.5*h[1]+.25*e[1],v=Math.atan2(e[1]-h[1],e[0]-h[0]);return{d:"M"+p.map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"L"+y.reverse().map(k=>`${k[0].toFixed(2)},${k[1].toFixed(2)}`).join("L")+"Z",mid:[m,x],tip:e,tipAngle:v}}arrowHead(t,e,i){const r=e,o=r+Math.PI,s=.5,a=[t[0]+Math.cos(r)*i*.6,t[1]+Math.sin(r)*i*.6],l=[t[0]+Math.cos(o+s)*i,t[1]+Math.sin(o+s)*i],c=[t[0]+Math.cos(o-s)*i,t[1]+Math.sin(o-s)*i];return`M${a[0].toFixed(2)},${a[1].toFixed(2)}L${l[0].toFixed(2)},${l[1].toFixed(2)}L${c[0].toFixed(2)},${c[1].toFixed(2)}Z`}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}const xp=["#5b9bd5","#ed7d31","#70ad47","#9e5fa0","#ffc000","#44546a"],wM=/^(.+?)\s+(\([^()]+\))\s*$/,bp=1.15;function vp(n,t,e){for(;n.firstChild;)n.removeChild(n.firstChild);let i;if(t.includes(`
|
|
8
8
|
`))i=t.split(`
|
|
9
|
-
`);else{const a=t.match(wM);i=a?[a[1],a[2]]:[t]}const r="http://www.w3.org/2000/svg",o=i.length,s=o>1?-((o-1)*bp)/2:0;i.forEach((a,l)=>{const c=document.createElementNS(r,"tspan");c.setAttribute("x",String(e)),c.setAttribute("dy",`${l===0?s:bp}em`),c.textContent=a,n.appendChild(c)})}const kM={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};class MM extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1,t.clip=!1}render(){var L;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=r.filter(_=>{var $;return(($=_.sets)==null?void 0:$.length)===1}),s=r.filter(_=>{var $;return(($=_.sets)==null?void 0:$.length)>=2});if(o.length===0)return;const a=t.width/2,l=t.height/2,c=t.height/2*.92,h=Math.max(...o.map(_=>_.value||_.y||1)),f=this.config.opacity??.25,u=Math.min(1,f+.25),d=.4,p=this.config.borderColor,y=this.config.borderWidth??0,g=this.resolveDashStyle(this.config.borderDashStyle),m=this.config.allowPointSelect===!0,x=new Map;this.layoutSets(o,s,x,a,l,c,h,e,t);const v=Array.from(x.values()),b=[];for(const _ of o){const $=x.get(_.sets[0]);if(!$)continue;let I=$.cx,E=$.cy;const P=v.filter(S=>S.id!==$.id);if(P.length>0){let S=0,w=0;for(const T of P){const R=$.cx-T.cx,F=$.cy-T.cy,D=Math.sqrt(R*R+F*F)||1;S+=R/D,w+=F/D}const A=Math.sqrt(S*S+w*w)||1;I=$.cx+S/A*$.r*.7,E=$.cy+w/A*$.r*.7}b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||_.sets[0],color:_.color||$.color,path:this.circlePath($.cx,$.cy,$.r),labelX:I,labelY:E,data:_,order:1,key:_.sets.join("_")})}for(const _ of s){if(_.sets.length!==2)continue;const $=x.get(_.sets[0]),I=x.get(_.sets[1]);if(!$||!I)continue;const E=this.lensPath($,I);if(!E)continue;const P=_.color||this.blendColors($.color,I.color);b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||`${_.sets.join(" ∩ ")} (${_.value||_.y||0})`,color:P,path:E.path,labelX:E.cx,labelY:E.cy,data:_,order:2,key:[..._.sets].sort().join("_")})}for(const _ of s){if(_.sets.length!==3)continue;const $=_.sets.map(P=>x.get(P)).filter(Boolean);if($.length<3)continue;const I=this.triIntersectionPath($[0],$[1],$[2]);if(!I)continue;const E=_.color||this.blendColors($[0].color,$[1].color,$[2].color);b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||`${_.sets.join(" ∩ ")} (${_.value||_.y||0})`,color:E,path:I.path,labelX:I.cx,labelY:I.cy,data:_,order:3,key:[..._.sets].sort().join("_")})}b.sort((_,$)=>_.order-$.order);const M=(((L=this.config.accessibility)==null?void 0:L.point)||{}).descriptionFormatter,C=this.group.selectAll(".katucharts-venn-area").data(b,_=>_.key).join(_=>{const $=_.append("g").attr("class",I=>`katucharts-venn-area katucharts-venn-${I.sets.length===1?"circle-area":"intersection-area"}`).attr("data-venn-sets",I=>I.sets.join("_"));return $.append("path"),$},_=>_,_=>_.remove());C.attr("class",_=>`katucharts-venn-area katucharts-venn-${_.sets.length===1?"circle-area":"intersection-area"}`),C.select("path").attr("d",_=>_.path).attr("fill",_=>_.color).attr("fill-opacity",_=>_.sets.length===1?f:0).attr("stroke",_=>_.sets.length===1?p||_.color:"none").attr("stroke-width",_=>_.sets.length===1?y:0).attr("stroke-dasharray",g).attr("role","img").attr("aria-label",_=>M?M({name:_.name,value:_.value,sets:_.sets}):`${_.name}: ${_.value}`).style("cursor",this.config.cursor||"pointer"),C.sort((_,$)=>_.order-$.order),C.each(function(_){if(_.sets.length>=2){const I=this.querySelector("path");if(I)try{const E=I.getBBox();E.width>0&&E.height>0&&(_.labelX=E.x+E.width/2,_.labelY=E.y+E.height/2)}catch{}}}),i&&C.select("path").attr("opacity",0).transition().duration(bt).ease(pt).delay((_,$)=>$*Wt).attr("opacity",1),this.config.enableMouseTracking!==!1&&this.attachEvents(C,b,f,u,d,m),this.renderLabels(b,i??!1)}resolveDashStyle(t){return t&&kM[t]||"none"}attachEvents(t,e,i,r,o,s){var l,c;(c=(l=this.config.dataLabels)==null?void 0:l.intersections)==null||c.enabled;const a=()=>this.group.selectAll(".katucharts-venn-inter-label");t.on("mouseover",(h,f)=>{var y,g,m;const u=e.indexOf(f),d=f.sets.length>=2;rt(h.currentTarget).select("path").transition("hover").duration(K).ease(Z).attr("fill-opacity",d?o:r),d&&a().filter(x=>x.sets.length===f.sets.length&&x.sets.every(v=>f.sets.includes(v))).transition("label").duration(K).ease(Z).attr("opacity",1),this.context.events.emit("point:mouseover",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h,plotX:f.labelX,plotY:f.labelY}),(m=(g=(y=f.data)==null?void 0:y.events)==null?void 0:g.mouseOver)==null||m.call(f.data,h)}).on("mouseout",(h,f)=>{var y,g,m;const u=e.indexOf(f),d=f.sets.length>=2;rt(h.currentTarget).select("path").transition("hover").duration(K).ease(Z).attr("fill-opacity",d?0:i),a().filter(function(){return this.__autoHidden===!0}).transition("label").duration(K).ease(Z).attr("opacity",0),this.context.events.emit("point:mouseout",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h}),(m=(g=(y=f.data)==null?void 0:y.events)==null?void 0:g.mouseOut)==null||m.call(f.data,h)}).on("click",(h,f)=>{var p,y,g,m,x,v,b,k,M,C,L,_,$;const u=e.indexOf(f);s&&(this.selectedIndices.has(u)?(this.selectedIndices.delete(u),(g=(y=(p=f.data)==null?void 0:p.events)==null?void 0:y.unselect)==null||g.call(f.data,h)):(this.selectedIndices.add(u),(v=(x=(m=f.data)==null?void 0:m.events)==null?void 0:x.select)==null||v.call(f.data,h))),this.context.events.emit("point:click",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h}),(M=(k=(b=f.data)==null?void 0:b.events)==null?void 0:k.click)==null||M.call(f.data,h),(L=(C=this.config.events)==null?void 0:C.click)==null||L.call(this,h);const d=($=(_=this.config.point)==null?void 0:_.events)==null?void 0:$.click;d&&d.call({...f.data,sets:f.sets,name:f.name,value:f.value},h)})}renderLabels(t,e){var u,d,p,y;const i=this.config.dataLabels||{},r=i.enabled!==!1,o=((u=i.intersections)==null?void 0:u.enabled)!==!1,s=((d=i.style)==null?void 0:d.fontSize)||wt,a=i.color||((p=i.style)==null?void 0:p.color)||me,l=((y=i.style)==null?void 0:y.fontWeight)||"bold",c=t.filter(g=>g.sets.length===1),h=t.filter(g=>g.sets.length>=2);if(r){const g=this.group.selectAll(".katucharts-venn-set-label").data(c,m=>m.key).join("text").attr("class","katucharts-venn-set-label").attr("x",m=>m.labelX).attr("y",m=>m.labelY).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",s).attr("font-weight",l).attr("fill",a).style("pointer-events","none").style("text-shadow","0 0 4px #fff, 0 0 4px #fff");g.each((m,x,v)=>{const b=i.formatter?i.formatter.call({point:{name:m.name,y:m.value,sets:m.sets},series:{name:this.config.name},x:m.name,y:m.value}):m.name;vp(v[x],String(b??""),m.labelX)}),e&&g.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}const f=this.group.selectAll(".katucharts-venn-inter-label").data(h,g=>g.key).join("text").attr("class","katucharts-venn-inter-label").attr("x",g=>g.labelX).attr("y",g=>g.labelY).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",wt).attr("fill",me).style("pointer-events","none").style("text-shadow","0 0 3px #fff, 0 0 3px #fff").attr("opacity",o?1:0);if(f.each((g,m,x)=>{vp(x[m],g.name,g.labelX)}),o){const g=this.group;f.each(function(m){const x=this,v=g.select(`[data-venn-sets="${m.sets.join("_")}"]`).node(),b=v==null?void 0:v.querySelector("path");if(b)try{const k=x.getBBox(),M=b.getBBox(),C=k.width<=M.width*.95&&k.height<=M.height*.95;x.setAttribute("opacity",C?"1":"0"),x.__autoHidden=!C}catch{}})}}layoutSets(t,e,i,r,o,s,a,l,c){var P,S;const h=t.length,f=t.map(w=>w.sets[0]),u=t.map(w=>s*Math.sqrt((w.value||w.y||1)/a)),d=new Map;for(const w of e){if(((P=w.sets)==null?void 0:P.length)!==2)continue;const[A,T]=w.sets,R=f.indexOf(A),F=f.indexOf(T);if(R<0||F<0)continue;const D=w.value||w.y||0;if(D<=0)d.set(`${R}-${F}`,u[R]+u[F]+5);else{const z=Math.PI*s*s*(D/a);d.set(`${R}-${F}`,this.findDistance(u[R],u[F],z))}}const p=new Array(h),y=new Set,g=new Array(h).fill(0);for(const w of e){if(((S=w.sets)==null?void 0:S.length)!==2)continue;const A=w.value||w.y||0;for(const T of w.sets){const R=f.indexOf(T);R>=0&&(g[R]+=A)}}const m=Array.from({length:h},(w,A)=>A).sort((w,A)=>g[A]-g[w]);p[m[0]]=[0,0],y.add(m[0]);for(let w=1;w<h;w++){const A=m[w];let T=[0,0],R=1/0;const F=[];for(const D of y){const z=D<A?`${D}-${A}`:`${A}-${D}`,B=d.get(z)??(u[D]+u[A])*1.1,[H,J]=p[D];for(let X=0;X<12;X++){const j=2*Math.PI*X/12;F.push([H+B*Math.cos(j),J+B*Math.sin(j)])}}for(const[D,z]of F){let B=0;for(const H of y){const J=H<A?`${H}-${A}`:`${A}-${H}`,X=d.get(J)??(u[H]+u[A])*1.1,j=Math.sqrt((D-p[H][0])**2+(z-p[H][1])**2);B+=(j-X)**2}B<R&&(R=B,T=[D,z])}p[A]=T,y.add(A)}h>=3&&this.optimizePositions(p,u,d,h);let x=1/0,v=-1/0,b=1/0,k=-1/0;for(let w=0;w<h;w++)x=Math.min(x,p[w][0]-u[w]),v=Math.max(v,p[w][0]+u[w]),b=Math.min(b,p[w][1]-u[w]),k=Math.max(k,p[w][1]+u[w]);const M=v-x||1,C=k-b||1,L=c?c.width*.95:s*2,_=c?c.height*.95:s*2,$=Math.min(L/M,_/C),I=(x+v)/2,E=(b+k)/2;for(let w=0;w<h;w++){const A=r+(p[w][0]-I)*$,T=o+(p[w][1]-E)*$,R=u[w]*$;i.set(f[w],{id:f[w],cx:A,cy:T,r:R,color:t[w].color||xp[w%xp.length]})}}optimizePositions(t,e,i,r){const o=u=>{let d=0;for(let p=0;p<r;p++)for(let y=p+1;y<r;y++){const g=`${p}-${y}`,m=i.get(g)??(e[p]+e[y])*1.1,x=u[p*2]-u[y*2],v=u[p*2+1]-u[y*2+1],b=Math.sqrt(x*x+v*v);d+=(b-m)**2}return d},s=new Array(r*2);for(let u=0;u<r;u++)s[u*2]=t[u][0],s[u*2+1]=t[u][1];const a=r*2,l=[s.slice()];for(let u=0;u<a;u++){const d=s.slice();d[u]+=e[Math.floor(u/2)]*.3,l.push(d)}const c=l.map(u=>o(u));for(let u=0;u<200;u++){let d=0,p=0;for(let x=1;x<=a;x++)c[x]<c[d]&&(d=x),c[x]>c[p]&&(p=x);if(c[p]-c[d]<.01)break;const y=new Array(a).fill(0);for(let x=0;x<=a;x++)if(x!==p)for(let v=0;v<a;v++)y[v]+=l[x][v];for(let x=0;x<a;x++)y[x]/=a;const g=y.map((x,v)=>2*x-l[p][v]),m=o(g);if(m<c[d]){const x=y.map((b,k)=>3*b-2*l[p][k]),v=o(x);v<m?(l[p]=x,c[p]=v):(l[p]=g,c[p]=m)}else if(m<c[p])l[p]=g,c[p]=m;else{const x=y.map((b,k)=>.5*(b+l[p][k])),v=o(x);if(v<c[p])l[p]=x,c[p]=v;else for(let b=0;b<=a;b++)if(b!==d){for(let k=0;k<a;k++)l[b][k]=.5*(l[d][k]+l[b][k]);c[b]=o(l[b])}}}let h=0;for(let u=1;u<=a;u++)c[u]<c[h]&&(h=u);const f=l[h];for(let u=0;u<r;u++)t[u]=[f[u*2],f[u*2+1]]}circlePath(t,e,i){return`M${t-i},${e}A${i},${i},0,1,1,${t+i},${e}A${i},${i},0,1,1,${t-i},${e}Z`}lensPath(t,e){const i=e.cx-t.cx,r=e.cy-t.cy,o=Math.sqrt(i*i+r*r);if(o>=t.r+e.r)return null;if(o<=Math.abs(t.r-e.r)){const m=t.r<e.r?t:e;return{path:this.circlePath(m.cx,m.cy,m.r),cx:m.cx,cy:m.cy}}const s=(t.r*t.r-e.r*e.r+o*o)/(2*o),a=Math.sqrt(t.r*t.r-s*s),l=t.cx+s*i/o,c=t.cy+s*r/o,h=l+a*r/o,f=c-a*i/o,u=l-a*r/o,d=c+a*i/o,p=s<0?1:0,y=o-s<0?1:0;return{path:`M${h},${f}A${t.r},${t.r},0,${p},1,${u},${d}A${e.r},${e.r},0,${y},1,${h},${f}Z`,cx:l,cy:c}}triIntersectionPath(t,e,i){const r=this.circleIntersectionPoints(t,e),o=this.circleIntersectionPoints(t,i),s=this.circleIntersectionPoints(e,i);if(!r||!o||!s)return null;const l=[...r,...o,...s].filter(u=>this.insideCircle(u,t)&&this.insideCircle(u,e)&&this.insideCircle(u,i));if(l.length<3)return null;const c=l.reduce((u,d)=>u+d[0],0)/l.length,h=l.reduce((u,d)=>u+d[1],0)/l.length;l.sort((u,d)=>Math.atan2(u[1]-h,u[0]-c)-Math.atan2(d[1]-h,d[0]-c));let f=`M${l[0][0]},${l[0][1]}`;for(let u=0;u<l.length;u++){const d=l[u],p=l[(u+1)%l.length],y=this.findArcCircle(d,p,[t,e,i]);y?f+=`A${y.r},${y.r},0,0,1,${p[0]},${p[1]}`:f+=`L${p[0]},${p[1]}`}return f+="Z",{path:f,cx:c,cy:h}}circleIntersectionPoints(t,e){const i=e.cx-t.cx,r=e.cy-t.cy,o=Math.sqrt(i*i+r*r);if(o>=t.r+e.r||o<=Math.abs(t.r-e.r))return null;const s=(t.r*t.r-e.r*e.r+o*o)/(2*o),a=Math.sqrt(Math.max(0,t.r*t.r-s*s)),l=t.cx+s*i/o,c=t.cy+s*r/o;return[[l+a*r/o,c-a*i/o],[l-a*r/o,c+a*i/o]]}insideCircle(t,e){const i=t[0]-e.cx,r=t[1]-e.cy;return i*i+r*r<=(e.r+.5)*(e.r+.5)}findArcCircle(t,e,i){const r=(t[0]+e[0])/2,o=(t[1]+e[1])/2;for(const s of i){const a=Math.sqrt((t[0]-s.cx)**2+(t[1]-s.cy)**2),l=Math.sqrt((e[0]-s.cx)**2+(e[1]-s.cy)**2),c=Math.sqrt((r-s.cx)**2+(o-s.cy)**2);if(Math.abs(a-s.r)<1&&Math.abs(l-s.r)<1&&c<=s.r+1)return s}return null}blendColors(...t){let e=0,i=0,r=0;for(const s of t){const a=Ye(oe(s)||s);e+=a.r,i+=a.g,r+=a.b}const o=t.length||1;return Ye(Math.round(e/o*.85),Math.round(i/o*.85),Math.round(r/o*.85)).formatHex()}findDistance(t,e,i){if(i<=0)return t+e+10;const r=Math.PI*Math.min(t,e)**2;if(i>=r)return Math.abs(t-e);let o=Math.abs(t-e),s=t+e;for(let a=0;a<50;a++){const l=(o+s)/2;this.lensArea(t,e,l)>i?o=l:s=l}return(o+s)/2}lensArea(t,e,i){if(i>=t+e)return 0;if(i<=Math.abs(t-e))return Math.PI*Math.min(t,e)**2;const r=(t*t-e*e+i*i)/(2*i),o=t*t-r*r;return o<0?0:t*t*Math.acos(r/t)-r*Math.sqrt(o)+e*e*Math.acos((i-r)/e)-(i-r)*Math.sqrt(e*e-(i-r)*(i-r))}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function AM(n,t=0){return n===void 0?t:typeof n=="number"?n:n.radius??t}const SM=["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1","#7798bf","#aaeeee","#ff0066","#eeaaee","#55bf3b","#df5353","#7798bf","#aaeeee"];class _M extends Ut{constructor(t){super(t),this.keyframes=[],this.currentFrameIndex=0,this.colorMap=new Map,this.timer=null,this.playing=!1,this.controlsEl=null,this.playBtn=null,this.rangeInput=null,this.rangeLabel=null}processData(){var o;const t=this.config.data;if(!Array.isArray(t))return;this.keyframes=t.filter(s=>s&&s.date&&Array.isArray(s.values));const e=new Set;for(const s of this.keyframes)for(const a of s.values)e.add(a.name);const i=this.config.colors||((o=this.context)==null?void 0:o.colors)||SM;let r=0;for(const s of e)this.colorMap.has(s)||(this.colorMap.set(s,i[r%i.length]),r++)}render(){if(this.keyframes.length===0)return;const{plotArea:t}=this.context,e=this.config,i=40,r=30;this.axisGroup=this.group.append("g").attr("class","katucharts-race-axis").attr("transform",`translate(0,${r})`),this.barsGroup=this.group.append("g").attr("class","katucharts-race-bars").attr("transform",`translate(0,${r+5})`),this.tickerText=this.group.append("text").attr("class","katucharts-race-ticker").attr("x",t.width-10).attr("y",t.height-i-10).attr("text-anchor","end").attr("font-size",e.tickerFontSize||"48px").attr("font-weight","bold").attr("fill",e.tickerColor||"#ddd").style("pointer-events","none"),this.renderControls(),this.currentFrameIndex=0,this.renderFrame(0,!1),e.autoPlay!==!1&&this.play()}renderControls(){var e,i,r;const t=(i=(e=this.group.node())==null?void 0:e.closest("svg"))==null?void 0:i.parentElement;t&&(this.controlsEl=document.createElement("div"),this.controlsEl.style.cssText="position:absolute;bottom:8px;left:12px;right:12px;display:flex;align-items:center;gap:8px;z-index:10;",this.playBtn=document.createElement("button"),this.playBtn.innerHTML=this.pauseIcon(),this.playBtn.style.cssText="width:32px;height:32px;border:none;border-radius:50%;background:#2f7ed8;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;box-shadow:0 1px 3px rgba(0,0,0,0.2);transition:background 0.15s;",this.playBtn.onmouseenter=()=>{this.playBtn&&(this.playBtn.style.background="#1a5fa8")},this.playBtn.onmouseleave=()=>{this.playBtn&&(this.playBtn.style.background="#2f7ed8")},this.playBtn.onclick=()=>{this.playing?this.pause():this.currentFrameIndex>=this.keyframes.length-1?this.restart():this.play()},this.rangeInput=document.createElement("input"),this.rangeInput.type="range",this.rangeInput.min="0",this.rangeInput.max=String(this.keyframes.length-1),this.rangeInput.value="0",this.rangeInput.style.cssText="flex:1;height:4px;cursor:pointer;accent-color:#2f7ed8;",this.rangeInput.oninput=()=>{const o=parseInt(this.rangeInput.value,10),s=this.playing;s&&this.pause(),this.goToFrame(o),s&&this.play()},this.rangeLabel=document.createElement("span"),this.rangeLabel.style.cssText='font-size:11px;color:#666;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-width:30px;text-align:right;flex-shrink:0;',this.rangeLabel.textContent=((r=this.keyframes[0])==null?void 0:r.date)||"",this.controlsEl.appendChild(this.playBtn),this.controlsEl.appendChild(this.rangeInput),this.controlsEl.appendChild(this.rangeLabel),t.appendChild(this.controlsEl))}updateControls(){this.rangeInput&&(this.rangeInput.value=String(this.currentFrameIndex)),this.rangeLabel&&this.keyframes[this.currentFrameIndex]&&(this.rangeLabel.textContent=this.keyframes[this.currentFrameIndex].date),this.playBtn&&(this.playBtn.innerHTML=this.playing?this.pauseIcon():this.playIcon())}playIcon(){return'<svg width="14" height="14" viewBox="0 0 14 14"><polygon points="3,1 12,7 3,13" fill="currentColor"/></svg>'}pauseIcon(){return'<svg width="14" height="14" viewBox="0 0 14 14"><rect x="2" y="1" width="3.5" height="12" rx="0.5" fill="currentColor"/><rect x="8.5" y="1" width="3.5" height="12" rx="0.5" fill="currentColor"/></svg>'}renderFrame(t,e){if(t<0||t>=this.keyframes.length)return;const{plotArea:i}=this.context,r=this.config,o=r.barsToShow??12,s=r.barPadding??.1,a=AM(r.borderRadius,3),l=r.frameDuration??500,c=e?r.transitionDuration??l:0,u=i.height-35-40-20,d=this.keyframes[t],y=[...d.values].sort((L,_)=>_.value-L.value).slice(0,o),g=y.length>0?y[0].value:1;this.valueScale=ve().domain([0,g*1.1]).range([0,i.width-80]),this.renderAxis(c);const m=u/o*(1-s),x=u/o,v=L=>L.name,b=this.barsGroup.selectAll(".katucharts-race-bar").data(y,v),k=b.enter().append("g").attr("class","katucharts-race-bar").attr("transform",(L,_)=>`translate(0,${e?u+m:_*x})`).style("opacity",e?0:1);k.append("rect").attr("height",m).attr("rx",a).attr("width",L=>e?0:Math.max(0,this.valueScale(L.value))).attr("fill",L=>this.colorMap.get(L.name)||"#999"),k.append("text").attr("class","katucharts-race-label").attr("x",6).attr("y",m/2).attr("dy","0.35em").attr("fill","#fff").attr("font-weight","bold").attr("font-size",wt).style("pointer-events","none").text(L=>L.name),k.append("text").attr("class","katucharts-race-value").attr("y",m/2).attr("dy","0.35em").attr("fill",me).attr("font-weight","bold").attr("font-size",wt).style("pointer-events","none").attr("data-value",L=>L.value).attr("x",L=>Math.max(0,this.valueScale(L.value))+5).text(L=>L.value.toLocaleString());const M=k.merge(b);c>0?(M.transition().duration(c).ease(kr).attr("transform",(L,_)=>`translate(0,${_*x})`).style("opacity",1),M.select("rect").transition().duration(c).ease(kr).attr("width",L=>Math.max(0,this.valueScale(L.value))).attr("fill",L=>this.colorMap.get(L.name)||"#999"),M.select(".katucharts-race-value").transition().duration(c).ease(kr).attr("x",L=>Math.max(0,this.valueScale(L.value))+5).tween("text",function(L){const _=this,$=parseFloat(_.getAttribute("data-value")||"0"),I=L.value;return E=>{const P=Math.round($+(I-$)*E);_.textContent=P.toLocaleString(),_.setAttribute("data-value",String(P))}})):(M.attr("transform",(L,_)=>`translate(0,${_*x})`).style("opacity",1),M.select("rect").attr("width",L=>Math.max(0,this.valueScale(L.value))).attr("fill",L=>this.colorMap.get(L.name)||"#999"),M.select(".katucharts-race-value").attr("x",L=>Math.max(0,this.valueScale(L.value))+5).attr("data-value",L=>L.value).text(L=>L.value.toLocaleString())),M.select(".katucharts-race-label").style("display",L=>this.valueScale(L.value)<50?"none":"");const C=b.exit();c>0?C.transition().duration(c).ease(kr).attr("transform",`translate(0,${u+m})`).style("opacity",0).remove():C.remove(),this.tickerText.text(d.date),this.updateControls(),this.attachBarHoverEffects(M,m)}renderAxis(t){const e=Na(this.valueScale).ticks(5).tickSize(-this.context.plotArea.height+110).tickFormat(i=>{const r=i;return r>=1e9?(r/1e9).toFixed(1)+"B":r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":r.toString()});t>0?this.axisGroup.transition().duration(t).ease(kr).call(e):this.axisGroup.call(e),this.axisGroup.select(".domain").remove(),this.axisGroup.selectAll(".tick line").attr("stroke","#e0e0e0").attr("stroke-dasharray","2,2"),this.axisGroup.selectAll(".tick text").attr("fill",me).attr("font-size",wt)}attachBarHoverEffects(t,e){const i=this;t.style("cursor","pointer").on("mouseover",function(r,o){const a=rt(this).select("rect"),l=a.attr("fill");a.attr("data-orig-fill",l),a.attr("fill",i.brightenColor(l,.1)),a.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),t.filter(c=>c.name!==o.name).style("opacity","0.5"),i.context.events.emit("point:mouseover",{point:{name:o.name,y:o.value},index:0,series:i,event:r,plotX:i.valueScale(o.value),plotY:0})}).on("mouseout",function(r,o){const a=rt(this).select("rect"),l=a.attr("data-orig-fill")||"";a.attr("fill",l),a.style("filter",""),t.style("opacity",""),i.context.events.emit("point:mouseout",{point:{name:o.name,y:o.value},index:0,series:i,event:r})})}play(){if(this.playing)return;this.playing=!0,this.updateControls();const t=this.config,e=t.frameDuration??500;this.timer=setInterval(()=>{if(this.currentFrameIndex++,this.currentFrameIndex>=this.keyframes.length)if(t.loop)this.currentFrameIndex=0;else{this.currentFrameIndex=this.keyframes.length-1,this.pause();return}this.renderFrame(this.currentFrameIndex,!0)},e)}pause(){this.playing=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.updateControls()}restart(){this.pause(),this.currentFrameIndex=0,this.renderFrame(0,!0),this.play()}goToFrame(t){t<0||t>=this.keyframes.length||(this.currentFrameIndex=t,this.renderFrame(t,!0))}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}destroy(){this.pause(),this.controlsEl&&(this.controlsEl.remove(),this.controlsEl=null),super.destroy()}brightenColor(t,e){const i=t.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(i){const r=Math.min(255,parseInt(i[1],16)+Math.round(255*e)),o=Math.min(255,parseInt(i[2],16)+Math.round(255*e)),s=Math.min(255,parseInt(i[3],16)+Math.round(255*e));return`rgb(${r},${o},${s})`}return t}}class CM extends Ut{constructor(t){super(t),t.clip=!1}render(){var _,$,I;const{plotArea:t,colors:e}=this.context,i=this.data||[];if(!i.length)return;const r=this.config.layout==="vertical"?"vertical":"horizontal",o=this.config.link||{},s=((_=this.config.marker)==null?void 0:_.radius)??6,a=o.color||"#cccccc",l=o.lineWidth??1,c=this.config.layoutAlgorithm==="cluster",h=this.config.levels||[],f=this.config.dataLabels||{},u=(($=f.style)==null?void 0:$.fontSize)||wt,d=f.color||((I=f.style)==null?void 0:I.color)||me,p=this.buildRoot(i);if(!p)return;const y=r==="horizontal"?[t.height,t.width]:[t.width,t.height],g=c?Pw():ik();g.size(y),g(p);const m=E=>r==="horizontal"?E.y:E.x,x=E=>r==="horizontal"?E.x:E.y,v=r==="horizontal"?C2().x(E=>m(E)).y(E=>x(E)):P2().x(E=>m(E)).y(E=>x(E)),b=this.group.append("g").attr("class","katucharts-treegraph"),k=p.descendants(),M=p.links(),C=E=>{const P=h.find(S=>S.level===E);return P!=null&&P.color?P.color:e[E%Math.max(1,e.length)]||"#2f7ed8"};b.append("g").attr("class","katucharts-treegraph-links").selectAll("path").data(M).join("path").attr("d",E=>v(E)).attr("fill","none").attr("stroke",a).attr("stroke-width",l);const L=b.append("g").attr("class","katucharts-treegraph-nodes").selectAll("g").data(k).join("g").attr("transform",E=>`translate(${m(E)},${x(E)})`);L.append("circle").attr("r",s).attr("fill",E=>{var P;return((P=E.data)==null?void 0:P.color)||C(E.depth)}).attr("stroke",this.autoBorderColor()).attr("stroke-width",1),f.enabled!==!1&&L.append("text").attr("dy",r==="horizontal"?"0.32em":s+12).attr("x",r==="horizontal"?E=>E.children?-(s+4):s+4:0).attr("text-anchor",r==="horizontal"?E=>E.children?"end":"start":"middle").attr("font-size",u).attr("fill",d).style("pointer-events","none").text(E=>{var P,S;return((P=E.data)==null?void 0:P.name)??((S=E.data)==null?void 0:S.id)??""}),this.context.animate&&b.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}buildRoot(t){if(t.some(o=>o.children&&o.children.length>0))return qi({name:"root",children:t},o=>o.children);const i=t.filter(o=>o.id!==void 0&&o.id!==null);if(!i.length)return null;if(!(i.filter(o=>!o.parent).length<=1)){const o="__katu_treegraph_root__",s=i.map(a=>({...a,parent:a.parent||o}));return s.push({id:o,parent:"",name:""}),Ec().id(a=>String(a.id)).parentId(a=>a.parent?String(a.parent):null)(s)}return Ec().id(o=>String(o.id)).parentId(o=>o.parent?String(o.parent):null)(i)}getDataExtents(){return{xMin:1/0,xMax:-1/0,yMin:1/0,yMax:-1/0}}}class PM extends Ut{constructor(t){super(t),t.clip=!1}render(){var b,k,M,C,L;const{plotArea:t,colors:e}=this.context,i=this.data||[];if(!i.length)return;const r=this.config.minFontSize??8,o=this.config.maxFontSize??50,s=this.config.rotation||{},a=Array.isArray(s.orientations)?s.orientations:s.from!==void 0&&s.to!==void 0?[s.from,s.to]:[0],l=((k=(b=this.config.dataLabels)==null?void 0:b.style)==null?void 0:k.fontFamily)||"sans-serif",c=((M=this.config.dataLabels)==null?void 0:M.color)||((L=(C=this.config.dataLabels)==null?void 0:C.style)==null?void 0:L.color)||me,h=[...i].filter(_=>_&&_.name&&typeof _.weight=="number"&&_.weight>0).sort((_,$)=>$.weight-_.weight);if(!h.length)return;const f=h[h.length-1].weight,u=h[0].weight,d=_=>{if(u===f)return(r+o)/2;const $=(_-f)/(u-f);return r+$*(o-r)},p=t.width/2,y=t.height/2,g=[],m=this.group.append("g").attr("class","katucharts-wordcloud"),{measure:x,dispose:v}=this.createMeasurer(m.node(),l);try{h.forEach((_,$)=>{const I=d(_.weight),E=a[$%a.length]??0,P=x(_.name,I),S=P.width,w=P.height,A=this.findSpiralSpot(p,y,S,w,E,g,t.width,t.height);A&&g.push({x:A.x,y:A.y,width:S,height:w,word:_,rotation:E,fontSize:I})})}finally{v()}g.forEach((_,$)=>{const I=_.word.color||e[$%Math.max(1,e.length)]||c;m.append("text").attr("x",_.x).attr("y",_.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("transform",_.rotation?`rotate(${_.rotation},${_.x},${_.y})`:null).attr("font-size",_.fontSize).attr("font-family",l).attr("fill",I).style("pointer-events","none").text(_.word.name)}),this.context.animate&&m.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}createMeasurer(t,e){const i=t.ownerSVGElement||t,o=document.createElementNS("http://www.w3.org/2000/svg","text");return o.setAttribute("visibility","hidden"),o.setAttribute("font-family",e),i.appendChild(o),{measure:(a,l)=>{o.setAttribute("font-size",String(l)),o.textContent=a;try{const c=o.getBBox();return{width:c.width,height:c.height||l}}catch{return{width:a.length*l*.55,height:l}}},dispose:()=>o.remove()}}findSpiralSpot(t,e,i,r,o,s,a,l){const c=o%180!==0,h=c?r:i,f=c?i:r,u=.2,d=4*Math.PI*6;for(let p=0;p<d;p+=u){const y=4*p,g=t+y*Math.cos(p),m=e+y*Math.sin(p);if(g-h/2<0||g+h/2>a||m-f/2<0||m+f/2>l)continue;if(!s.some(v=>{const b=v.rotation%180!==0?v.height:v.width,k=v.rotation%180!==0?v.width:v.height;return Math.abs(g-v.x)<(h+b)/2+2&&Math.abs(m-v.y)<(f+k)/2+2}))return{x:g,y:m}}return null}getDataExtents(){return{xMin:1/0,xMax:-1/0,yMin:1/0,yMax:-1/0}}}function wp(){Tt.registerType("waterfall",vw),Tt.registerType("funnel",Qf),Tt.registerType("pyramid",Z2),Tt.registerType("treemap",hk),Tt.registerType("sunburst",uk),Tt.registerType("gauge",fk),Tt.registerType("solidgauge",dk),Tt.registerType("polar",fd),Tt.registerType("radar",fd),Tt.registerType("timeline",yk),Tt.registerType("gantt",xk),Tt.registerType("map",xM),Tt.registerType("mappoint",bM),Tt.registerType("flowmap",vM),Tt.registerType("venn",MM),Tt.registerType("barchartrace",_M),Tt.registerType("treegraph",CM),Tt.registerType("wordcloud",PM)}class EM extends Ut{constructor(t){super(t),this.selectedIndices=new Set}getCandleStyle(t){const e=t.isUp?t.upLineColor:t.downLineColor;return{fill:t.isUp?t.upColor:t.downColor,stroke:e,wick:e}}getCandleClass(){return"katucharts-candlestick"}render(){var L,_,$,I,E,P,S,w;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.context.animate,o=this.data,s=this.applyDataGrouping(o),a=this.config.pointRange,l=this.config.groupPadding??.2,c=this.config.pointPadding??.1,h=l+c,f=this.config.maxPointWidth??1/0,u=a?Math.max(1,Math.min(f,i.width/Math.max(1,((L=t.domain)==null?void 0:L[1])-((_=t.domain)==null?void 0:_[0])||s.length)*a*(1-h))):Math.max(1,Math.min(f,i.width/s.length*(1-h))),d=this.config.pointWidth??u,p=this.config.color||"#f45b5b",y=this.config.upColor||"#2f7ed8",g=this.config.lineColor||p,m=this.config.upLineColor||y,x=this.config.lineWidth??1,v=((I=($=this.config.states)==null?void 0:$.inactive)==null?void 0:I.opacity)??.4,b=this.config.allowPointSelect===!0,k=(P=(E=this.config.states)==null?void 0:E.select)==null?void 0:P.color,M=(w=(S=this.config.states)==null?void 0:S.select)==null?void 0:w.borderColor,C=[];for(let A=0;A<s.length;A++){const T=s[A];if(T.y===null&&T.open===void 0)continue;const R=T.open??T.y??0,F=T.high??R,D=T.low??R,z=T.close??R,B=t.getPixelForValue(T.x??A),H=z>=R,J=this.getCandleStyle({open:R,high:F,low:D,close:z,isUp:H,index:A,data:s,upColor:y,downColor:p,upLineColor:m,downLineColor:g}),X=J.fill,j=J.stroke,W=this.group.append("g").attr("class",this.getCandleClass()).style("cursor",this.config.cursor||"pointer");C.push(W);const U=W.append("line").attr("x1",B).attr("x2",B).attr("stroke",J.wick).attr("stroke-width",x),G=H?z:R,N=H?R:z,Y=e.getPixelForValue(G),O=Math.max(1,Math.abs(e.getPixelForValue(N)-e.getPixelForValue(G))),ct=W.append("rect").attr("x",B-d/2).attr("width",d).attr("stroke",j).attr("stroke-width",x).attr("rx",2);if(r){const it=e.getPixelForValue((F+D)/2),ft=_e(A,0,Wt,s.length);U.attr("y1",it).attr("y2",it).transition().duration(bt).ease(pt).delay(ft).attr("y1",e.getPixelForValue(F)).attr("y2",e.getPixelForValue(D)),ct.attr("y",it).attr("height",0).attr("fill",X).transition().duration(bt).ease(pt).delay(ft).attr("y",Y).attr("height",O)}else U.attr("y1",e.getPixelForValue(F)).attr("y2",e.getPixelForValue(D)),ct.attr("y",Y).attr("height",O).attr("fill",X);this.config.enableMouseTracking!==!1&&W.on("mouseover",it=>{var dt,at,ot,q;const ft=((at=(dt=this.config.states)==null?void 0:dt.hover)==null?void 0:at.lineWidthPlus)??2;W.select("rect").transition("size").duration(K).ease(Z).attr("x",B-d*.7).attr("width",d*1.4),W.select("line").transition("size").duration(K).ease(Z).attr("stroke-width",x+ft),W.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),C.forEach(st=>st.interrupt("highlight")),C.forEach(st=>st.attr("opacity",1)),C.forEach((st,kt)=>{kt!==A&&st.transition("highlight").duration(K).ease(Z).attr("opacity",v)}),this.context.events.emit("point:mouseover",{point:{...T,open:R,high:F,low:D,close:z},index:A,series:this,event:it,plotX:B,plotY:e.getPixelForValue((F+D)/2)}),(q=(ot=T.events)==null?void 0:ot.mouseOver)==null||q.call(T,it)}).on("mouseout",it=>{var ft,dt;W.select("rect").transition("size").duration(K).ease(Z).attr("x",B-d/2).attr("width",d),W.select("line").transition("size").duration(K).ease(Z).attr("stroke-width",x),W.style("filter",""),C.forEach(at=>at.interrupt("highlight")),C.forEach(at=>at.transition("highlight").duration(K).ease(Z).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:T,index:A,series:this,event:it}),(dt=(ft=T.events)==null?void 0:ft.mouseOut)==null||dt.call(T,it)}).on("click",it=>{var ft,dt,at,ot,q,st,kt,Et;b&&(this.selectedIndices.has(A)?(this.selectedIndices.delete(A),W.select("rect").attr("stroke-width",x),(dt=(ft=T.events)==null?void 0:ft.unselect)==null||dt.call(T,it)):(this.selectedIndices.add(A),W.select("rect").attr("stroke",M||"#000").attr("stroke-width",k?2:x+1),k&&W.select("rect").attr("fill",k),(ot=(at=T.events)==null?void 0:at.select)==null||ot.call(T,it))),this.context.events.emit("point:click",{point:T,index:A,series:this,event:it}),(st=(q=T.events)==null?void 0:q.click)==null||st.call(T,it),(Et=(kt=this.config.events)==null?void 0:kt.click)==null||Et.call(this,it)})}this.renderCandlestickLabels(s,t,e)}renderCandlestickLabels(t,e,i){var a,l;const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((a=r.style)==null?void 0:a.fontSize)||wt,s=r.color||((l=r.style)==null?void 0:l.color)||me;t.forEach((c,h)=>{if(c.y===null&&c.open===void 0)return;const f=c.high??c.open??c.y??0,u=e.getPixelForValue(c.x??h),d=i.getPixelForValue(f);let p;r.formatter?p=r.formatter.call({point:c,series:{name:this.config.name},x:c.x,y:c.y}):r.format?p=fe(Zt(r.format,{point:c,series:{name:this.config.name},x:c.x,y:c.y})):p=String(c.close??c.y??""),this.group.append("text").attr("class","katucharts-candlestick-label").attr("x",u+(r.x??0)).attr("y",d-6+(r.y??0)).attr("text-anchor","middle").attr("font-size",o).attr("fill",s).style("pointer-events","none").text(p)})}applyDataGrouping(t){const e=this.config.dataGrouping;if(!(e!=null&&e.enabled)||!e.units||t.length===0)return t;const i=e.groupPixelWidth??10,{plotArea:r}=this.context,o=r.width/Math.max(1,t.length);if(o>=i)return t;const s=Math.ceil(i/o),a=[];for(let l=0;l<t.length;l+=s){const c=t.slice(l,l+s);if(c.length===0)continue;const h=c[0].open??c[0].y??0,f=c[c.length-1].close??c[c.length-1].y??0;let u=-1/0,d=1/0;for(const p of c)u=Math.max(u,p.high??p.y??0),d=Math.min(d,p.low??p.y??0);a.push({...c[0],x:c[0].x,open:h,high:u,low:d,close:f,y:f})}return a}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data){const s=o.x??0;t=Math.min(t,s),e=Math.max(e,s);const a=o.high??o.y??0,l=o.low??o.y??0;i=Math.min(i,l),r=Math.max(r,a)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}class TM extends Ut{constructor(t){super(t)}render(){var f,u;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.context.animate,o=this.data,s=Math.max(2,Math.min(10,i.width/o.length*.3)),a=this.config.color||"#f45b5b",l=this.config.upColor||"#2f7ed8",c=((u=(f=this.config.states)==null?void 0:f.inactive)==null?void 0:u.opacity)??.4,h=[];for(let d=0;d<o.length;d++){const p=o[d];if(p.y===null&&p.open===void 0)continue;const y=p.open??p.y??0,g=p.high??y,m=p.low??y,x=p.close??y,v=t.getPixelForValue(p.x??d),b=x>=y?l:a,k=this.group.append("g").attr("class","katucharts-ohlc").style("cursor",this.config.cursor||"pointer");h.push(k),r&&k.attr("opacity",0).transition().duration(bt).ease(pt).delay(_e(d,0,Wt,o.length)).attr("opacity",1),k.append("line").attr("x1",v).attr("x2",v).attr("y1",e.getPixelForValue(g)).attr("y2",e.getPixelForValue(m)).attr("stroke",b).attr("stroke-width",1.5),k.append("line").attr("x1",v-s).attr("x2",v).attr("y1",e.getPixelForValue(y)).attr("y2",e.getPixelForValue(y)).attr("stroke",b).attr("stroke-width",1.5),k.append("line").attr("x1",v).attr("x2",v+s).attr("y1",e.getPixelForValue(x)).attr("y2",e.getPixelForValue(x)).attr("stroke",b).attr("stroke-width",1.5),this.config.enableMouseTracking!==!1&&k.on("mouseover",M=>{var C,L;k.selectAll("line").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",3),k.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),h.forEach(_=>_.interrupt("highlight")),h.forEach(_=>_.attr("opacity",1)),h.forEach((_,$)=>{$!==d&&_.transition("highlight").duration(K).ease(Z).attr("opacity",c)}),this.context.events.emit("point:mouseover",{point:{...p,open:y,high:g,low:m,close:x},index:d,series:this,event:M,plotX:v,plotY:e.getPixelForValue((g+m)/2)}),(L=(C=p.events)==null?void 0:C.mouseOver)==null||L.call(p,M)}).on("mouseout",M=>{var C,L;k.selectAll("line").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",1.5),k.style("filter",""),h.forEach(_=>_.interrupt("highlight")),h.forEach(_=>_.transition("highlight").duration(K).ease(Z).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:p,index:d,series:this,event:M}),(L=(C=p.events)==null?void 0:C.mouseOut)==null||L.call(p,M)}).on("click",M=>{var C,L,_,$;this.context.events.emit("point:click",{point:p,index:d,series:this,event:M}),(L=(C=p.events)==null?void 0:C.click)==null||L.call(p,M),($=(_=this.config.events)==null?void 0:_.click)==null||$.call(this,M)})}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data){const s=o.x??0;t=Math.min(t,s),e=Math.max(e,s);const a=o.high??o.y??0,l=o.low??o.y??0;i=Math.min(i,l),r=Math.max(r,a)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function kp(){Tt.registerType("candlestick",EM),Tt.registerType("ohlc",TM)}function Mp(n,t){let e;if(t===void 0)for(const i of n)i!=null&&(e<i||e===void 0&&i>=i)&&(e=i);else{let i=-1;for(let r of n)(r=t(r,++i,n))!=null&&(e<r||e===void 0&&r>=r)&&(e=r)}return e}function $M(n,t){let e;if(t===void 0)for(const i of n)i!=null&&(e>i||e===void 0&&i>=i)&&(e=i);else{let i=-1;for(let r of n)(r=t(r,++i,n))!=null&&(e>r||e===void 0&&r>=r)&&(e=r)}return e}function ll(n,t){let e=0;if(t===void 0)for(let i of n)(i=+i)&&(e+=i);else{let i=-1;for(let r of n)(r=+t(r,++i,n))&&(e+=r)}return e}function LM(n){return n.depth}function Ap(n,t){return n.sourceLinks.length?n.depth:t-1}function Fs(n){return function(){return n}}function Sp(n,t){return Rs(n.source,t.source)||n.index-t.index}function _p(n,t){return Rs(n.target,t.target)||n.index-t.index}function Rs(n,t){return n.y0-t.y0}function hl(n){return n.value}function IM(n){return n.index}function FM(n){return n.nodes}function RM(n){return n.links}function Cp(n,t){const e=n.get(t);if(!e)throw new Error("missing: "+t);return e}function Pp({nodes:n}){for(const t of n){let e=t.y0,i=e;for(const r of t.sourceLinks)r.y0=e+r.width/2,e+=r.width;for(const r of t.targetLinks)r.y1=i+r.width/2,i+=r.width}}function DM(){let n=0,t=0,e=1,i=1,r=24,o=8,s,a=IM,l=Ap,c,h,f=FM,u=RM,d=6;function p(){const w={nodes:f.apply(null,arguments),links:u.apply(null,arguments)};return y(w),g(w),m(w),x(w),k(w),Pp(w),w}p.update=function(w){return Pp(w),w},p.nodeId=function(w){return arguments.length?(a=typeof w=="function"?w:Fs(w),p):a},p.nodeAlign=function(w){return arguments.length?(l=typeof w=="function"?w:Fs(w),p):l},p.nodeSort=function(w){return arguments.length?(c=w,p):c},p.nodeWidth=function(w){return arguments.length?(r=+w,p):r},p.nodePadding=function(w){return arguments.length?(o=s=+w,p):o},p.nodes=function(w){return arguments.length?(f=typeof w=="function"?w:Fs(w),p):f},p.links=function(w){return arguments.length?(u=typeof w=="function"?w:Fs(w),p):u},p.linkSort=function(w){return arguments.length?(h=w,p):h},p.size=function(w){return arguments.length?(n=t=0,e=+w[0],i=+w[1],p):[e-n,i-t]},p.extent=function(w){return arguments.length?(n=+w[0][0],e=+w[1][0],t=+w[0][1],i=+w[1][1],p):[[n,t],[e,i]]},p.iterations=function(w){return arguments.length?(d=+w,p):d};function y({nodes:w,links:A}){for(const[R,F]of w.entries())F.index=R,F.sourceLinks=[],F.targetLinks=[];const T=new Map(w.map((R,F)=>[a(R,F,w),R]));for(const[R,F]of A.entries()){F.index=R;let{source:D,target:z}=F;typeof D!="object"&&(D=F.source=Cp(T,D)),typeof z!="object"&&(z=F.target=Cp(T,z)),D.sourceLinks.push(F),z.targetLinks.push(F)}if(h!=null)for(const{sourceLinks:R,targetLinks:F}of w)R.sort(h),F.sort(h)}function g({nodes:w}){for(const A of w)A.value=A.fixedValue===void 0?Math.max(ll(A.sourceLinks,hl),ll(A.targetLinks,hl)):A.fixedValue}function m({nodes:w}){const A=w.length;let T=new Set(w),R=new Set,F=0;for(;T.size;){for(const D of T){D.depth=F;for(const{target:z}of D.sourceLinks)R.add(z)}if(++F>A)throw new Error("circular link");T=R,R=new Set}}function x({nodes:w}){const A=w.length;let T=new Set(w),R=new Set,F=0;for(;T.size;){for(const D of T){D.height=F;for(const{source:z}of D.targetLinks)R.add(z)}if(++F>A)throw new Error("circular link");T=R,R=new Set}}function v({nodes:w}){const A=Mp(w,F=>F.depth)+1,T=(e-n-r)/(A-1),R=new Array(A);for(const F of w){const D=Math.max(0,Math.min(A-1,Math.floor(l.call(null,F,A))));F.layer=D,F.x0=n+D*T,F.x1=F.x0+r,R[D]?R[D].push(F):R[D]=[F]}if(c)for(const F of R)F.sort(c);return R}function b(w){const A=$M(w,T=>(i-t-(T.length-1)*s)/ll(T,hl));for(const T of w){let R=t;for(const F of T){F.y0=R,F.y1=R+F.value*A,R=F.y1+s;for(const D of F.sourceLinks)D.width=D.value*A}R=(i-R+s)/(T.length+1);for(let F=0;F<T.length;++F){const D=T[F];D.y0+=R*(F+1),D.y1+=R*(F+1)}E(T)}}function k(w){const A=v(w);s=Math.min(o,(i-t)/(Mp(A,T=>T.length)-1)),b(A);for(let T=0;T<d;++T){const R=Math.pow(.99,T),F=Math.max(1-R,(T+1)/d);C(A,R,F),M(A,R,F)}}function M(w,A,T){for(let R=1,F=w.length;R<F;++R){const D=w[R];for(const z of D){let B=0,H=0;for(const{source:X,value:j}of z.targetLinks){let W=j*(z.layer-X.layer);B+=P(X,z)*W,H+=W}if(!(H>0))continue;let J=(B/H-z.y0)*A;z.y0+=J,z.y1+=J,I(z)}c===void 0&&D.sort(Rs),L(D,T)}}function C(w,A,T){for(let R=w.length,F=R-2;F>=0;--F){const D=w[F];for(const z of D){let B=0,H=0;for(const{target:X,value:j}of z.sourceLinks){let W=j*(X.layer-z.layer);B+=S(z,X)*W,H+=W}if(!(H>0))continue;let J=(B/H-z.y0)*A;z.y0+=J,z.y1+=J,I(z)}c===void 0&&D.sort(Rs),L(D,T)}}function L(w,A){const T=w.length>>1,R=w[T];$(w,R.y0-s,T-1,A),_(w,R.y1+s,T+1,A),$(w,i,w.length-1,A),_(w,t,0,A)}function _(w,A,T,R){for(;T<w.length;++T){const F=w[T],D=(A-F.y0)*R;D>1e-6&&(F.y0+=D,F.y1+=D),A=F.y1+s}}function $(w,A,T,R){for(;T>=0;--T){const F=w[T],D=(F.y1-A)*R;D>1e-6&&(F.y0-=D,F.y1-=D),A=F.y0-s}}function I({sourceLinks:w,targetLinks:A}){if(h===void 0){for(const{source:{sourceLinks:T}}of A)T.sort(_p);for(const{target:{targetLinks:T}}of w)T.sort(Sp)}}function E(w){if(h===void 0)for(const{sourceLinks:A,targetLinks:T}of w)A.sort(_p),T.sort(Sp)}function P(w,A){let T=w.y0-(w.sourceLinks.length-1)*s/2;for(const{target:R,width:F}of w.sourceLinks){if(R===A)break;T+=F+s}for(const{source:R,width:F}of A.targetLinks){if(R===w)break;T-=F}return T}function S(w,A){let T=A.y0-(A.targetLinks.length-1)*s/2;for(const{source:R,width:F}of A.targetLinks){if(R===w)break;T+=F+s}for(const{target:R,width:F}of w.sourceLinks){if(R===A)break;T-=F}return T}return p}var ul=Math.PI,fl=2*ul,Ai=1e-6,zM=fl-Ai;function dl(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ep(){return new dl}dl.prototype=Ep.prototype={constructor:dl,moveTo:function(n,t){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(n,t){this._+="L"+(this._x1=+n)+","+(this._y1=+t)},quadraticCurveTo:function(n,t,e,i){this._+="Q"+ +n+","+ +t+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(n,t,e,i,r,o){this._+="C"+ +n+","+ +t+","+ +e+","+ +i+","+(this._x1=+r)+","+(this._y1=+o)},arcTo:function(n,t,e,i,r){n=+n,t=+t,e=+e,i=+i,r=+r;var o=this._x1,s=this._y1,a=e-n,l=i-t,c=o-n,h=s-t,f=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(this._x1===null)this._+="M"+(this._x1=n)+","+(this._y1=t);else if(f>Ai)if(!(Math.abs(h*a-l*c)>Ai)||!r)this._+="L"+(this._x1=n)+","+(this._y1=t);else{var u=e-o,d=i-s,p=a*a+l*l,y=u*u+d*d,g=Math.sqrt(p),m=Math.sqrt(f),x=r*Math.tan((ul-Math.acos((p+f-y)/(2*g*m)))/2),v=x/m,b=x/g;Math.abs(v-1)>Ai&&(this._+="L"+(n+v*c)+","+(t+v*h)),this._+="A"+r+","+r+",0,0,"+ +(h*u>c*d)+","+(this._x1=n+b*a)+","+(this._y1=t+b*l)}},arc:function(n,t,e,i,r,o){n=+n,t=+t,e=+e,o=!!o;var s=e*Math.cos(i),a=e*Math.sin(i),l=n+s,c=t+a,h=1^o,f=o?i-r:r-i;if(e<0)throw new Error("negative radius: "+e);this._x1===null?this._+="M"+l+","+c:(Math.abs(this._x1-l)>Ai||Math.abs(this._y1-c)>Ai)&&(this._+="L"+l+","+c),e&&(f<0&&(f=f%fl+fl),f>zM?this._+="A"+e+","+e+",0,1,"+h+","+(n-s)+","+(t-a)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=c):f>Ai&&(this._+="A"+e+","+e+",0,"+ +(f>=ul)+","+h+","+(this._x1=n+e*Math.cos(r))+","+(this._y1=t+e*Math.sin(r))))},rect:function(n,t,e,i){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};function Tp(n){return function(){return n}}function BM(n){return n[0]}function OM(n){return n[1]}var NM=Array.prototype.slice;function WM(n){return n.source}function HM(n){return n.target}function VM(n){var t=WM,e=HM,i=BM,r=OM,o=null;function s(){var a,l=NM.call(arguments),c=t.apply(this,l),h=e.apply(this,l);if(o||(o=a=Ep()),n(o,+i.apply(this,(l[0]=c,l)),+r.apply(this,l),+i.apply(this,(l[0]=h,l)),+r.apply(this,l)),a)return o=null,a+""||null}return s.source=function(a){return arguments.length?(t=a,s):t},s.target=function(a){return arguments.length?(e=a,s):e},s.x=function(a){return arguments.length?(i=typeof a=="function"?a:Tp(+a),s):i},s.y=function(a){return arguments.length?(r=typeof a=="function"?a:Tp(+a),s):r},s.context=function(a){return arguments.length?(o=a??null,s):o},s}function GM(n,t,e,i,r){n.moveTo(t,e),n.bezierCurveTo(t=(t+i)/2,e,t,r,i,r)}function YM(){return VM(GM)}function XM(n){return[n.source.x1,n.y0]}function UM(n){return[n.target.x0,n.y1]}function qM(){return YM().source(XM).target(UM)}const jM=500,ZM=380,KM=280;function JM(n){if(n.endsWith("px"))return parseFloat(n)||12;if(n.endsWith("rem")||n.endsWith("em")){const e=typeof document>"u"?16:parseFloat(getComputedStyle(document.documentElement).fontSize)||16;return(parseFloat(n)||1)*e}const t=parseFloat(n);return Number.isNaN(t)?12:t}class QM extends Ut{getBaseFlowDuration(){return bt*4}constructor(t){super(t)}render(){var Pe,fn,yn,Vn,jr;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.getBaseFlowDuration();this.group.selectAll("rect, path, text").interrupt("enter").interrupt("highlight");const{nodes:s,links:a}=this.buildGraph();if(s.length===0)return;const l=t.width<jM,c=t.width<ZM,h=t.width<KM,f=r.nodeWidth,u=f==="auto",d=s.map(V=>typeof V.column=="number"&&Number.isFinite(V.column)?Math.max(0,Math.floor(V.column)):null).filter(V=>V!==null),p=d.length>0,y=p?Math.max(...d):0,g=typeof r.nodePadding=="number"?r.nodePadding:l?Math.max(4,Math.min(10,t.height/40)):10,m=r.linkOpacity??.4,x=r.colorByPoint!==!1,v=r.minLinkWidth??1,b=r.borderWidth??0,k=r.borderColor??"none",M=r.levels||[],C=this.config.dataLabels||{},L=C.enabled!==!1,_=((Pe=C.style)==null?void 0:Pe.fontSize)||wt,$=JM(_),I=c?Math.min($,10):l?Math.min($,12):$,E=`${I}px`,P=C.color||((fn=C.style)==null?void 0:fn.color)||this.autoLabelColor(),S=I*.62,w=V=>C.formatter?String(C.formatter.call({point:{name:V.name||V.id,y:V.value},series:{name:this.config.name},x:V.name||V.id,y:V.value})??""):String(V.name||V.id||""),A=V=>V.length*S,T=(V,tt,lt=2)=>{if(tt<=0)return"";if(A(V)<=tt)return V;const Ft=Math.floor(tt/S)-1;return Ft<lt?"":Ft>=V.length?V:V.slice(0,Ft)+"…"},R=r.nodeAlignment==="left"?LM:Ap,D=h?5:c?8:l?10:14,z=typeof f=="number"?f:20,B=(V,tt,lt,_t)=>{const Ft=Math.max(tt+_t+20,t.width-lt),ze=DM().nodeId(ge=>ge.id).nodeAlign(R).nodeWidth(_t).nodePadding(V).extent([[tt,0],[Ft,t.height]]),Ee=ze({nodes:[...s],links:[...a]});for(const ge of Ee.nodes)if(ge.x0<tt){const Sn=ge.x1-ge.x0;ge.x0=tt,ge.x1=tt+Sn}return{gen:ze,graph:Ee}};let H=z;const J=B(g,0,0,H),X=V=>p&&typeof V.column=="number"&&Number.isFinite(V.column)?Math.max(0,Math.floor(V.column)):V.layer??V.depth??0,j=p?y:J.graph.nodes.reduce((V,tt)=>Math.max(V,tt.depth??0),0),W=J.graph.nodes.reduce((V,tt)=>Math.min(V,tt.x0??1/0),1/0),U=p?J.graph.nodes.filter(V=>X(V)===0):J.graph.nodes.filter(V=>(V.x0??1/0)<=W+.5),G=L?Math.max(0,...U.map(V=>A(w(V)))):0,N=L&&l?Math.min(Math.floor(t.width*.08),Math.max(0,G*.18)):0,Y=L&&!h,O=0,ct=Math.max(1,t.width-N-O),it=Math.max(j,0);if(it>0){const tt=(ct-it*(h?8:c?10:l?14:18))/(it+1),lt=Math.max(D,Math.min(z,tt));(typeof f!="number"||l)&&(H=lt)}else typeof f!="number"&&(H=Math.max(D,Math.min(z,ct*.5)));const ft=c?Math.max(2,Math.min(8,H*.35)):0,dt=N+ft,at=O+ft;let{gen:ot,graph:q}=B(g,dt,at,H);const st=new Map;for(const V of q.nodes){const tt=X(V);st.set(tt,(st.get(tt)??0)+1)}const kt=Math.max(1,...st.values());let Et=g;const Mt=typeof r.nodePadding!="number";if(L&&Mt&&kt>1){const V=I*1.3;t.height*.82/(kt-1)>=V&&(Et=Math.max(g,V))}if(kt*Et>t.height&&(Et=Math.max(1,t.height/kt)),Et!==g&&({gen:ot,graph:q}=B(Et,dt,at,H)),u){const V=q.nodes.reduce((lt,_t)=>Math.max(lt,X(_t)),0),tt=Math.max(D,Math.min(20,ct/((V+1)*3)));ot.nodeWidth(tt),q=ot({nodes:[...s],links:[...a]})}if(p){const V=Math.max(1,q.nodes[0]?q.nodes[0].x1-q.nodes[0].x0:H);Et=this.applyExplicitColumnLayout(q,ot,X,y,dt,Math.max(dt+V,t.width-at),t.height,Et,V)}else this.reorderNodesByValueDesc(q,ot,X,t.height,Et);const Ct=new Map,Gt=new Map;for(const V of q.nodes){const tt=X(V);Ct.has(tt)||Ct.set(tt,[]),Ct.get(tt).push(V)}for(const V of q.links){const tt=X(V.source);Gt.has(tt)||Gt.set(tt,[]),Gt.get(tt).push(V)}const Ht=q.nodes.reduce((V,tt)=>Math.max(V,X(tt)),0),Nt=Math.round(o*.22),Kt=Nt,ie=Kt,Lt=Ht*ie+Nt+Kt,Jt=r.centerNodes===!0,Ce=r.spreadFactor??1;(Jt||Ce!==1)&&this.centerAndSpreadNodes(q,ot,t.height,Ce,Et);const je=new Map;for(const V of M)V.level!==void 0&&je.set(V.level,V);const pe=V=>{const tt=V.source?X(V.source):void 0,lt=tt!==void 0?je.get(tt):void 0;return(lt==null?void 0:lt.linkOpacity)??m},Hn=qM(),ti=V=>{if(!c)return Hn(V);const tt=V.source.x1,lt=V.target.x0,_t=V.y0,Ft=V.y1,ze=lt-tt;if(!Number.isFinite(ze)||!Number.isFinite(_t)||!Number.isFinite(Ft))return Hn(V);if(ze<=14)return`M${tt},${_t}L${lt},${Ft}`;if(ze<28){const Ee=Math.max(2,ze*.35);return`M${tt},${_t}C${tt+Ee},${_t} ${lt-Ee},${Ft} ${lt},${Ft}`}return Hn(V)},He=c,hn=He?V=>{const tt=V.source.x1,lt=V.target.x0,_t=V.y0,Ft=V.y1,ze=lt-tt,Ee=Math.max(v,V.width)/2;if(!Number.isFinite(ze)||!Number.isFinite(_t)||!Number.isFinite(Ft))return ti(V);const ge=_t-Ee,Sn=_t+Ee,Zr=Ft-Ee,ei=Ft+Ee,Gn=Math.max(1,ze*.42);return ze<=2?[`M${tt},${ge}`,`L${lt},${Zr}`,`L${lt},${ei}`,`L${tt},${Sn}`,"Z"].join(""):[`M${tt},${ge}`,`C${tt+Gn},${ge} ${lt-Gn},${Zr} ${lt},${Zr}`,`L${lt},${ei}`,`C${lt-Gn},${ei} ${tt+Gn},${Sn} ${tt},${Sn}`,"Z"].join("")}:ti,Ze=He?"fill-opacity":"stroke-opacity",Ke=r.linkColorMode??"from",Xr=V=>V.source.color||e[q.nodes.indexOf(V.source)%e.length]||"#aaa",Ur=V=>V.target.color||e[q.nodes.indexOf(V.target)%e.length]||"#aaa",qr=this.group.append("defs"),et=`katucharts-sankey-clip-${this.config.index}-${Math.random().toString(36).slice(2,8)}`;qr.append("clipPath").attr("id",et).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height);const nt=this.group.append("g").attr("class","katucharts-sankey-clipped-layer").attr("clip-path",`url(#${et})`),ht=nt.append("g").attr("class","katucharts-sankey-links"),vt=nt.append("g").attr("class","katucharts-sankey-nodes"),mt=nt.append("g").attr("class","katucharts-sankey-link-hitareas");let gt=null;Ke==="gradient"&&(gt=qr);let Q=null;const It=.55,zt=.25,yt=ht.selectAll(".katucharts-sankey-link").data(q.links).join("path").attr("class","katucharts-sankey-link").attr("d",hn).attr("fill",He?"#aaa":"none").attr("stroke",He?"none":"#aaa").attr("stroke-width",V=>He?null:Math.max(v,V.width)).attr("stroke-linecap","butt").style("cursor","pointer");Ke==="gradient"&>?yt.each(function(V,tt){const lt=`katucharts-sankey-grad-${tt}-${Math.random().toString(36).slice(2,6)}`;gt.append("linearGradient").attr("id",lt).attr("gradientUnits","userSpaceOnUse").attr("x1",V.source.x1).attr("x2",V.target.x0).selectAll("stop").data([{offset:"0%",color:Xr(V)},{offset:"100%",color:Ur(V)}]).join("stop").attr("offset",_t=>_t.offset).attr("stop-color",_t=>_t.color),rt(this).attr(He?"fill":"stroke",`url(#${lt})`)}):Ke==="to"?yt.attr(He?"fill":"stroke",V=>Ur(V)):yt.attr(He?"fill":"stroke",V=>Xr(V)),i&&!h?l?yt.attr(Ze,0).each(function(V){const tt=X(V.source),_t=(Gt.get(tt)||[]).indexOf(V),Ft=tt*ie+Nt-60+Math.min(_t*12,60);rt(this).transition("enter").duration(Kt).delay(Ft).ease(pt).attr(Ze,pe(V))}):yt.attr(Ze,V=>pe(V)).each(function(V){var Sn;const tt=this,lt=((Sn=tt.getTotalLength)==null?void 0:Sn.call(tt))||0;if(lt===0)return;const _t=X(V.source),ze=(Gt.get(_t)||[]).indexOf(V),ge=_t*ie+Nt-60+Math.min(ze*12,60);rt(this).attr("stroke-dasharray",`${lt} ${lt}`).attr("stroke-dashoffset",lt).transition("enter").duration(Kt).delay(ge).ease(pt).attr("stroke-dashoffset",0).on("end",function(){rt(this).attr("stroke-dasharray",null).attr("stroke-dashoffset",null)})}):yt.attr(Ze,V=>pe(V));const qt=(V,tt,lt)=>{const _t={name:`${lt.source.name} → ${lt.target.name}`,from:lt.source.name,to:lt.target.name,y:lt.value,weight:lt.value,fromNode:{name:lt.source.name,id:lt.source.id},toNode:{name:lt.target.name,id:lt.target.id}};if(V==="mouseover"){this.context.events.emit("point:mouseover",{point:_t,index:q.links.indexOf(lt),series:this,event:tt,plotX:(lt.source.x1+lt.target.x0)/2,plotY:(lt.y0+lt.y1)/2});return}if(V==="mouseout"){this.context.events.emit("point:mouseout",{point:_t,index:q.links.indexOf(lt),series:this,event:tt});return}this.context.events.emit("point:click",{point:_t,index:q.links.indexOf(lt),series:this,event:tt})},Ot=(V,tt)=>{const lt=pe(tt);yt.interrupt("highlight"),Vt.interrupt("highlight"),Q==null||Q.interrupt("highlight"),yt.attr(Ze,_t=>_t===tt?Math.min(lt+.3,1):pe(_t)),yt.filter(_t=>_t!==tt).transition("highlight").duration(K).ease(Z).attr(Ze,lt*.375),Vt.attr("opacity",1),Vt.transition("highlight").duration(K).ease(Z).attr("opacity",_t=>_t===tt.source||_t===tt.target?1:It),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",_t=>_t===tt.source||_t===tt.target?1:zt),qt("mouseover",V,tt)},jt=(V,tt)=>{yt.interrupt("highlight"),Vt.interrupt("highlight"),Q==null||Q.interrupt("highlight"),yt.transition("highlight").duration(K).ease(Z).attr(Ze,lt=>pe(lt)),Vt.transition("highlight").duration(K).ease(Z).attr("opacity",1),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",1),qt("mouseout",V,tt)},ee=(V,tt)=>{qt("click",V,tt)};yt.on("mouseover",Ot).on("mouseout",jt).on("click",ee);const Vt=vt.selectAll(".katucharts-sankey-node").data(q.nodes).join("rect").attr("class","katucharts-sankey-node").attr("x",V=>V.x0).attr("y",V=>V.y0).attr("width",V=>V.x1-V.x0).attr("height",V=>Math.max(1,V.y1-V.y0)).attr("fill",(V,tt)=>{if(V.color)return V.color;const lt=je.get(X(V));return lt!=null&<.color?lt.color:x?e[tt%e.length]:r.color||e[0]}).attr("stroke",k).attr("stroke-width",b).attr("rx",4).style("cursor","pointer");i&&!h&&Vt.attr("opacity",0).attr("x",V=>V.x0-(c?4:10)).each(function(V){const tt=X(V),_t=(Ct.get(tt)||[]).indexOf(V),Ft=tt*ie+Math.min(_t*20,80);rt(this).transition("enter").duration(Nt).delay(Ft).ease(pt).attr("opacity",1).attr("x",V.x0)});const un=(V,tt)=>{Vt.filter(Ft=>Ft===tt).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),Vt.interrupt("highlight"),yt.interrupt("highlight"),Q==null||Q.interrupt("highlight");const lt=new Set([tt]);for(const Ft of q.links)Ft.source===tt?lt.add(Ft.target):Ft.target===tt&<.add(Ft.source);Vt.attr("opacity",1),Vt.filter(Ft=>!lt.has(Ft)).transition("highlight").duration(K).ease(Z).attr("opacity",It),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",Ft=>lt.has(Ft)?1:zt),yt.transition("highlight").duration(K).ease(Z).attr(Ze,Ft=>Ft.source===tt||Ft.target===tt?Math.min(pe(Ft)+.3,1):pe(Ft)*.375);const _t={name:tt.name||tt.id,y:tt.value,sum:tt.value};this.context.events.emit("point:mouseover",{point:_t,index:q.nodes.indexOf(tt),series:this,event:V,plotX:(tt.x0+tt.x1)/2,plotY:(tt.y0+tt.y1)/2})},De=(V,tt)=>{Vt.filter(lt=>lt===tt).style("filter",""),Vt.interrupt("highlight"),yt.interrupt("highlight"),Q==null||Q.interrupt("highlight"),Vt.transition("highlight").duration(K).ease(Z).attr("opacity",1),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",1),yt.transition("highlight").duration(K).ease(Z).attr(Ze,lt=>pe(lt)),this.context.events.emit("point:mouseout",{point:{name:tt.name||tt.id,y:tt.value,sum:tt.value},index:q.nodes.indexOf(tt),series:this,event:V})},Ge=(V,tt)=>{this.context.events.emit("point:click",{point:{name:tt.name||tt.id,y:tt.value},index:q.nodes.indexOf(tt),series:this,event:V})};if(Vt.on("mouseover",un).on("mouseout",De).on("click",Ge),mt.selectAll(".katucharts-sankey-link-hitarea").data(q.links).join("path").attr("class","katucharts-sankey-link-hitarea").attr("d",ti).attr("fill","none").attr("stroke","transparent").attr("stroke-linecap","round").attr("stroke-width",V=>Math.max(16,Math.max(v,V.width)+10)).style("cursor","pointer").on("mouseover",Ot).on("mouseout",jt).on("click",ee),L){const V=this.group.append("g").attr("class","katucharts-sankey-labels"),tt=Math.max(6,I*.6),lt=q.nodes.reduce((ut,$t)=>Math.max(ut,$t.x0??0),0),_t=q.nodes.reduce((ut,$t)=>Math.min(ut,$t.x0??1/0),1/0),Ft=ut=>p?X(ut)===Ht:lt>0&&(ut.x0??0)>=lt-.5,ze=ut=>p?X(ut)===0:Number.isFinite(_t)&&(ut.x0??0)<=_t+.5,Ee=ut=>Y&&Ft(ut)||ze(ut),ge=new Map;for(const ut of q.nodes){const $t=ut.y1-ut.y0;if(!Ee(ut)&&$t<tt){ge.set(ut,"");continue}ge.set(ut,w(ut))}const Sn=ut=>Ee(ut)?Ft(ut)?"end":"start":"middle",Zr=ut=>Ee(ut)?Ft(ut)?ut.x0-4+(C.x??0):ut.x1+4+(C.x??0):(ut.x0+ut.x1)/2+(C.x??0);Q=V.selectAll(".katucharts-sankey-label").data(q.nodes).join("text").attr("class","katucharts-sankey-label").attr("x",Zr).attr("y",ut=>(ut.y0+ut.y1)/2+(C.y??0)).attr("dy","0.35em").attr("text-anchor",Sn).attr("font-size",E).attr("font-weight",((yn=C.style)==null?void 0:yn.fontWeight)??600).attr("fill",P).attr("paint-order","stroke").attr("stroke",(Vn=C.style)!=null&&Vn.textOutline?null:this.labelHaloColor()).attr("stroke-width",(jr=C.style)!=null&&jr.textOutline?null:2).attr("stroke-linejoin","round").style("pointer-events","auto").style("cursor","pointer").on("mouseover",un).on("mouseout",De).on("click",Ge).text(ut=>ge.get(ut)??"");const ei=new Map,Gn=new Map;for(const ut of q.nodes){const $t=X(ut);ei.set($t,Math.min(ei.get($t)??1/0,ut.x0)),Gn.set($t,Math.max(Gn.get($t)??-1/0,ut.x1))}Q.each(function(ut){const $t=this;let re=$t.textContent;if(!re)return;const _n=A(re);if(Ee(ut)){const Vp=X(ut),Gp=I*.75;let Jr;if(Ft(ut)){const Qr=Gn.get(Vp-1),Yp=Qr!==void 0?(Qr+ut.x0)/2:2;Jr=ut.x0-4-(Yp+Gp/2)}else{const Qr=ei.get(Vp+1);Jr=(Qr!==void 0?(ut.x1+Qr)/2:t.width-2)-Gp/2-(ut.x1+4)}if(Jr<=S){$t.textContent="";return}_n>Jr&&(re=T(re,Jr,1),$t.textContent=re);return}const _i=(ut.x0+ut.x1)/2,ni=_i-_n/2,nr=_i+_n/2;if(nr<=t.width&&ni>=0)return;const Kr=X(ut),VA=ei.get(Kr+1)??t.width,GA=Gn.get(Kr-1)??0,yl=VA-ut.x1-4,xl=ut.x0-GA-4;if(ni<0&&yl>I*1.5){$t.setAttribute("text-anchor","start"),$t.setAttribute("x",String(ut.x1+2)),_n>yl&&($t.textContent=T(re,yl));return}if(nr>t.width&&xl>I*1.5){$t.setAttribute("text-anchor","end"),$t.setAttribute("x",String(ut.x0-2)),_n>xl&&($t.textContent=T(re,xl));return}const Hp=2*Math.min(_i,t.width-_i)-4;if(Hp<I*2){$t.textContent="";return}$t.textContent=T(re,Hp)});const Np=[],WA=[...q.nodes].sort((ut,$t)=>($t.value??0)-(ut.value??0)),Wp=new Map;Q.each(function(ut){Wp.set(ut,this)});const HA=(ut,$t)=>ut.left<$t.right&&ut.right>$t.left&&ut.top<$t.bottom&&ut.bottom>$t.top;for(const ut of WA){if(C.allowOverlap===!0)break;const $t=Wp.get(ut);if(!$t||!$t.textContent)continue;let re;try{re=$t.getBBox()}catch{const ni=A($t.textContent||""),nr=Number($t.getAttribute("x")||0),Kr=$t.getAttribute("text-anchor");re={x:Kr==="end"?nr-ni:Kr==="middle"?nr-ni/2:nr,y:Number($t.getAttribute("y")||0)-I/2,width:ni,height:I}}if(re.width===0&&re.height===0)continue;const _n={left:re.x,right:re.x+re.width,top:re.y,bottom:re.y+re.height};if(Np.some(ni=>HA(ni,_n))&&C.overflow!=="allow"){$t.textContent="";continue}Np.push(_n)}i&&!h&&Q.attr("opacity",0).each(function(ut){const $t=X(ut),_n=(Ct.get($t)||[]).indexOf(ut),_i=$t*ie+Nt-80+Math.min(_n*20,80);rt(this).transition("enter").duration(Nt).delay(_i).ease(pt).attr("opacity",1)})}i&&this.emitAfterAnimate(h?0:Lt+100)}applyExplicitColumnLayout(t,e,i,r,o,s,a,l,c){var m,x;const h=new Map;for(const v of t.nodes){const b=i(v);v.depth=b,v.layer=b,h.has(b)||h.set(b,[]),h.get(b).push(v)}const f=Array.from(h.entries()).sort((v,b)=>v[0]-b[0]),u=Math.max(1,...f.map(([,v])=>v.length)),d=u>1?Math.min(l,Math.max(1,a/(u-1))):l,y=f.map(([,v])=>v.reduce((b,k)=>b+Math.max(0,k.value??0),0)).filter(v=>v>0).length>0?Math.min(...f.map(([,v])=>{const b=v.reduce((k,M)=>k+Math.max(0,M.value??0),0);return b<=0?1/0:Math.max(1e-4,(a-Math.max(0,v.length-1)*d)/b)})):1,g=r>0?(s-o-c)/r:0;for(const[v,b]of f){const k=b.some(_=>typeof _.offset=="number");b.sort((_,$)=>k?(_.offset??0)-($.offset??0)||(_.y0??0)-($.y0??0)||String(_.name??_.id).localeCompare(String($.name??$.id)):($.value??0)-(_.value??0)||String(_.name??_.id).localeCompare(String($.name??$.id)));const M=b.reduce((_,$)=>_+Math.max(1,($.value??0)*y),0)+Math.max(0,b.length-1)*d;let C=Math.max(0,(a-M)/2);const L=o+v*g;for(const _ of b){const $=Math.max(1,(_.value??0)*y);_.x0=L,_.x1=L+c,_.y0=C,_.y1=C+$,C=_.y1+d}}for(const v of t.links)v.width=Math.max(1e-4,v.value*y);for(const v of t.nodes)(m=v.sourceLinks)==null||m.sort((b,k)=>(b.target.y0??0)-(k.target.y0??0)),(x=v.targetLinks)==null||x.sort((b,k)=>(b.source.y0??0)-(k.source.y0??0));return e.update(t),d}reorderNodesByValueDesc(t,e,i,r,o){var a,l;const s=new Map;for(const c of t.nodes){const h=i(c);s.has(h)||s.set(h,[]),s.get(h).push(c)}for(const[,c]of s){if(c.some(p=>typeof p.offset=="number"))continue;const u=c.reduce((p,y)=>p+(y.y1-y.y0),0)+Math.max(0,c.length-1)*o;c.sort((p,y)=>(y.value??0)-(p.value??0)||String(p.name??p.id).localeCompare(String(y.name??y.id)));let d=Math.max(0,(r-u)/2);for(const p of c){const y=p.y1-p.y0;p.y0=d,p.y1=d+y,d=p.y1+o}}for(const c of t.nodes)(a=c.sourceLinks)==null||a.sort((h,f)=>(h.target.y0??0)-(f.target.y0??0)),(l=c.targetLinks)==null||l.sort((h,f)=>(h.source.y0??0)-(f.source.y0??0));e.update(t)}centerAndSpreadNodes(t,e,i,r,o){const s=new Map;for(const a of t.nodes){const l=a.layer??a.depth??0;s.has(l)||s.set(l,[]),s.get(l).push(a)}for(const[,a]of s){if(a.sort((f,u)=>f.y0-u.y0),r!==1&&a.length>1){const f=a[0].y0,u=a[a.length-1].y1,d=(f+u)/2;for(const p of a){const y=(p.y0+p.y1)/2,g=p.y1-p.y0,m=d+(y-d)*r;p.y0=m-g/2,p.y1=m+g/2}for(let p=1;p<a.length;p++){const y=a[p-1].y1+o-a[p].y0;y>0&&(a[p].y0+=y,a[p].y1+=y)}}const l=a[0].y0,c=a[a.length-1].y1,h=(i-(c-l))/2-l;for(const f of a){const u=f.y1-f.y0,d=f.y0+h;f.y0=Math.max(0,Math.min(i-u,d)),f.y1=f.y0+u}}e.update(t)}buildGraph(){const t=new Map,e=[],i=this.config.nodes||[];for(const r of i)t.set(r.id,{id:r.id,name:r.name||r.id,color:r.color,column:r.column,offset:r.offset});for(const r of this.data){const o=r.from,s=r.to,a=r.y??r.weight??1;o&&s&&(t.has(o)||t.set(o,{id:o,name:o}),t.has(s)||t.set(s,{id:s,name:s}),e.push({source:o,target:s,value:a}))}return{nodes:Array.from(t.values()),links:e}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function tA(n,t){var e,i=1;n==null&&(n=0),t==null&&(t=0);function r(){var o,s=e.length,a,l=0,c=0;for(o=0;o<s;++o)a=e[o],l+=a.x,c+=a.y;for(l=(l/s-n)*i,c=(c/s-t)*i,o=0;o<s;++o)a=e[o],a.x-=l,a.y-=c}return r.initialize=function(o){e=o},r.x=function(o){return arguments.length?(n=+o,r):n},r.y=function(o){return arguments.length?(t=+o,r):t},r.strength=function(o){return arguments.length?(i=+o,r):i},r}function eA(n){const t=+this._x.call(null,n),e=+this._y.call(null,n);return $p(this.cover(t,e),t,e,n)}function $p(n,t,e,i){if(isNaN(t)||isNaN(e))return n;var r,o=n._root,s={data:i},a=n._x0,l=n._y0,c=n._x1,h=n._y1,f,u,d,p,y,g,m,x;if(!o)return n._root=s,n;for(;o.length;)if((y=t>=(f=(a+c)/2))?a=f:c=f,(g=e>=(u=(l+h)/2))?l=u:h=u,r=o,!(o=o[m=g<<1|y]))return r[m]=s,n;if(d=+n._x.call(null,o.data),p=+n._y.call(null,o.data),t===d&&e===p)return s.next=o,r?r[m]=s:n._root=s,n;do r=r?r[m]=new Array(4):n._root=new Array(4),(y=t>=(f=(a+c)/2))?a=f:c=f,(g=e>=(u=(l+h)/2))?l=u:h=u;while((m=g<<1|y)===(x=(p>=u)<<1|d>=f));return r[x]=o,r[m]=s,n}function nA(n){var t,e,i=n.length,r,o,s=new Array(i),a=new Array(i),l=1/0,c=1/0,h=-1/0,f=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,t=n[e]))||isNaN(o=+this._y.call(null,t))||(s[e]=r,a[e]=o,r<l&&(l=r),r>h&&(h=r),o<c&&(c=o),o>f&&(f=o));if(l>h||c>f)return this;for(this.cover(l,c).cover(h,f),e=0;e<i;++e)$p(this,s[e],a[e],n[e]);return this}function iA(n,t){if(isNaN(n=+n)||isNaN(t=+t))return this;var e=this._x0,i=this._y0,r=this._x1,o=this._y1;if(isNaN(e))r=(e=Math.floor(n))+1,o=(i=Math.floor(t))+1;else{for(var s=r-e||1,a=this._root,l,c;e>n||n>=r||i>t||t>=o;)switch(c=(t<i)<<1|n<e,l=new Array(4),l[c]=a,a=l,s*=2,c){case 0:r=e+s,o=i+s;break;case 1:e=r-s,o=i+s;break;case 2:r=e+s,i=o-s;break;case 3:e=r-s,i=o-s;break}this._root&&this._root.length&&(this._root=a)}return this._x0=e,this._y0=i,this._x1=r,this._y1=o,this}function rA(){var n=[];return this.visit(function(t){if(!t.length)do n.push(t.data);while(t=t.next)}),n}function oA(n){return arguments.length?this.cover(+n[0][0],+n[0][1]).cover(+n[1][0],+n[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function Fe(n,t,e,i,r){this.node=n,this.x0=t,this.y0=e,this.x1=i,this.y1=r}function sA(n,t,e){var i,r=this._x0,o=this._y0,s,a,l,c,h=this._x1,f=this._y1,u=[],d=this._root,p,y;for(d&&u.push(new Fe(d,r,o,h,f)),e==null?e=1/0:(r=n-e,o=t-e,h=n+e,f=t+e,e*=e);p=u.pop();)if(!(!(d=p.node)||(s=p.x0)>h||(a=p.y0)>f||(l=p.x1)<r||(c=p.y1)<o))if(d.length){var g=(s+l)/2,m=(a+c)/2;u.push(new Fe(d[3],g,m,l,c),new Fe(d[2],s,m,g,c),new Fe(d[1],g,a,l,m),new Fe(d[0],s,a,g,m)),(y=(t>=m)<<1|n>=g)&&(p=u[u.length-1],u[u.length-1]=u[u.length-1-y],u[u.length-1-y]=p)}else{var x=n-+this._x.call(null,d.data),v=t-+this._y.call(null,d.data),b=x*x+v*v;if(b<e){var k=Math.sqrt(e=b);r=n-k,o=t-k,h=n+k,f=t+k,i=d.data}}return i}function aA(n){if(isNaN(h=+this._x.call(null,n))||isNaN(f=+this._y.call(null,n)))return this;var t,e=this._root,i,r,o,s=this._x0,a=this._y0,l=this._x1,c=this._y1,h,f,u,d,p,y,g,m;if(!e)return this;if(e.length)for(;;){if((p=h>=(u=(s+l)/2))?s=u:l=u,(y=f>=(d=(a+c)/2))?a=d:c=d,t=e,!(e=e[g=y<<1|p]))return this;if(!e.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(i=t,m=g)}for(;e.data!==n;)if(r=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,r?(o?r.next=o:delete r.next,this):t?(o?t[g]=o:delete t[g],(e=t[0]||t[1]||t[2]||t[3])&&e===(t[3]||t[2]||t[1]||t[0])&&!e.length&&(i?i[m]=e:this._root=e),this):(this._root=o,this)}function cA(n){for(var t=0,e=n.length;t<e;++t)this.remove(n[t]);return this}function lA(){return this._root}function hA(){var n=0;return this.visit(function(t){if(!t.length)do++n;while(t=t.next)}),n}function uA(n){var t=[],e,i=this._root,r,o,s,a,l;for(i&&t.push(new Fe(i,this._x0,this._y0,this._x1,this._y1));e=t.pop();)if(!n(i=e.node,o=e.x0,s=e.y0,a=e.x1,l=e.y1)&&i.length){var c=(o+a)/2,h=(s+l)/2;(r=i[3])&&t.push(new Fe(r,c,h,a,l)),(r=i[2])&&t.push(new Fe(r,o,h,c,l)),(r=i[1])&&t.push(new Fe(r,c,s,a,h)),(r=i[0])&&t.push(new Fe(r,o,s,c,h))}return this}function fA(n){var t=[],e=[],i;for(this._root&&t.push(new Fe(this._root,this._x0,this._y0,this._x1,this._y1));i=t.pop();){var r=i.node;if(r.length){var o,s=i.x0,a=i.y0,l=i.x1,c=i.y1,h=(s+l)/2,f=(a+c)/2;(o=r[0])&&t.push(new Fe(o,s,a,h,f)),(o=r[1])&&t.push(new Fe(o,h,a,l,f)),(o=r[2])&&t.push(new Fe(o,s,f,h,c)),(o=r[3])&&t.push(new Fe(o,h,f,l,c))}e.push(i)}for(;i=e.pop();)n(i.node,i.x0,i.y0,i.x1,i.y1);return this}function dA(n){return n[0]}function pA(n){return arguments.length?(this._x=n,this):this._x}function gA(n){return n[1]}function mA(n){return arguments.length?(this._y=n,this):this._y}function pl(n,t,e){var i=new gl(t??dA,e??gA,NaN,NaN,NaN,NaN);return n==null?i:i.addAll(n)}function gl(n,t,e,i,r,o){this._x=n,this._y=t,this._x0=e,this._y0=i,this._x1=r,this._y1=o,this._root=void 0}function Lp(n){for(var t={data:n.data},e=t;n=n.next;)e=e.next={data:n.data};return t}var Re=pl.prototype=gl.prototype;Re.copy=function(){var n=new gl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,e,i;if(!t)return n;if(!t.length)return n._root=Lp(t),n;for(e=[{source:t,target:n._root=new Array(4)}];t=e.pop();)for(var r=0;r<4;++r)(i=t.source[r])&&(i.length?e.push({source:i,target:t.target[r]=new Array(4)}):t.target[r]=Lp(i));return n},Re.add=eA,Re.addAll=nA,Re.cover=iA,Re.data=rA,Re.extent=oA,Re.find=sA,Re.remove=aA,Re.removeAll=cA,Re.root=lA,Re.size=hA,Re.visit=uA,Re.visitAfter=fA,Re.x=pA,Re.y=mA;function Si(n){return function(){return n}}function Jn(n){return(n()-.5)*1e-6}function yA(n){return n.x+n.vx}function xA(n){return n.y+n.vy}function bA(n){var t,e,i,r=1,o=1;typeof n!="function"&&(n=Si(n==null?1:+n));function s(){for(var c,h=t.length,f,u,d,p,y,g,m=0;m<o;++m)for(f=pl(t,yA,xA).visitAfter(a),c=0;c<h;++c)u=t[c],y=e[u.index],g=y*y,d=u.x+u.vx,p=u.y+u.vy,f.visit(x);function x(v,b,k,M,C){var L=v.data,_=v.r,$=y+_;if(L){if(L.index>u.index){var I=d-L.x-L.vx,E=p-L.y-L.vy,P=I*I+E*E;P<$*$&&(I===0&&(I=Jn(i),P+=I*I),E===0&&(E=Jn(i),P+=E*E),P=($-(P=Math.sqrt(P)))/P*r,u.vx+=(I*=P)*($=(_*=_)/(g+_)),u.vy+=(E*=P)*$,L.vx-=I*($=1-$),L.vy-=E*$)}return}return b>d+$||M<d-$||k>p+$||C<p-$}}function a(c){if(c.data)return c.r=e[c.data.index];for(var h=c.r=0;h<4;++h)c[h]&&c[h].r>c.r&&(c.r=c[h].r)}function l(){if(t){var c,h=t.length,f;for(e=new Array(h),c=0;c<h;++c)f=t[c],e[f.index]=+n(f,c,t)}}return s.initialize=function(c,h){t=c,i=h,l()},s.iterations=function(c){return arguments.length?(o=+c,s):o},s.strength=function(c){return arguments.length?(r=+c,s):r},s.radius=function(c){return arguments.length?(n=typeof c=="function"?c:Si(+c),l(),s):n},s}function vA(n){return n.index}function Ip(n,t){var e=n.get(t);if(!e)throw new Error("node not found: "+t);return e}function wA(n){var t=vA,e=f,i,r=Si(30),o,s,a,l,c,h=1;n==null&&(n=[]);function f(g){return 1/Math.min(a[g.source.index],a[g.target.index])}function u(g){for(var m=0,x=n.length;m<h;++m)for(var v=0,b,k,M,C,L,_,$;v<x;++v)b=n[v],k=b.source,M=b.target,C=M.x+M.vx-k.x-k.vx||Jn(c),L=M.y+M.vy-k.y-k.vy||Jn(c),_=Math.sqrt(C*C+L*L),_=(_-o[v])/_*g*i[v],C*=_,L*=_,M.vx-=C*($=l[v]),M.vy-=L*$,k.vx+=C*($=1-$),k.vy+=L*$}function d(){if(s){var g,m=s.length,x=n.length,v=new Map(s.map((k,M)=>[t(k,M,s),k])),b;for(g=0,a=new Array(m);g<x;++g)b=n[g],b.index=g,typeof b.source!="object"&&(b.source=Ip(v,b.source)),typeof b.target!="object"&&(b.target=Ip(v,b.target)),a[b.source.index]=(a[b.source.index]||0)+1,a[b.target.index]=(a[b.target.index]||0)+1;for(g=0,l=new Array(x);g<x;++g)b=n[g],l[g]=a[b.source.index]/(a[b.source.index]+a[b.target.index]);i=new Array(x),p(),o=new Array(x),y()}}function p(){if(s)for(var g=0,m=n.length;g<m;++g)i[g]=+e(n[g],g,n)}function y(){if(s)for(var g=0,m=n.length;g<m;++g)o[g]=+r(n[g],g,n)}return u.initialize=function(g,m){s=g,c=m,d()},u.links=function(g){return arguments.length?(n=g,d(),u):n},u.id=function(g){return arguments.length?(t=g,u):t},u.iterations=function(g){return arguments.length?(h=+g,u):h},u.strength=function(g){return arguments.length?(e=typeof g=="function"?g:Si(+g),p(),u):e},u.distance=function(g){return arguments.length?(r=typeof g=="function"?g:Si(+g),y(),u):r},u}const kA=1664525,MA=1013904223,Fp=4294967296;function AA(){let n=1;return()=>(n=(kA*n+MA)%Fp)/Fp}function SA(n){return n.x}function _A(n){return n.y}var CA=10,PA=Math.PI*(3-Math.sqrt(5));function EA(n){var t,e=1,i=.001,r=1-Math.pow(i,1/300),o=0,s=.6,a=new Map,l=Yo(f),c=zi("tick","end"),h=AA();n==null&&(n=[]);function f(){u(),c.call("tick",t),e<i&&(l.stop(),c.call("end",t))}function u(y){var g,m=n.length,x;y===void 0&&(y=1);for(var v=0;v<y;++v)for(e+=(o-e)*r,a.forEach(function(b){b(e)}),g=0;g<m;++g)x=n[g],x.fx==null?x.x+=x.vx*=s:(x.x=x.fx,x.vx=0),x.fy==null?x.y+=x.vy*=s:(x.y=x.fy,x.vy=0);return t}function d(){for(var y=0,g=n.length,m;y<g;++y){if(m=n[y],m.index=y,m.fx!=null&&(m.x=m.fx),m.fy!=null&&(m.y=m.fy),isNaN(m.x)||isNaN(m.y)){var x=CA*Math.sqrt(.5+y),v=y*PA;m.x=x*Math.cos(v),m.y=x*Math.sin(v)}(isNaN(m.vx)||isNaN(m.vy))&&(m.vx=m.vy=0)}}function p(y){return y.initialize&&y.initialize(n,h),y}return d(),t={tick:u,restart:function(){return l.restart(f),t},stop:function(){return l.stop(),t},nodes:function(y){return arguments.length?(n=y,d(),a.forEach(p),t):n},alpha:function(y){return arguments.length?(e=+y,t):e},alphaMin:function(y){return arguments.length?(i=+y,t):i},alphaDecay:function(y){return arguments.length?(r=+y,t):+r},alphaTarget:function(y){return arguments.length?(o=+y,t):o},velocityDecay:function(y){return arguments.length?(s=1-y,t):1-s},randomSource:function(y){return arguments.length?(h=y,a.forEach(p),t):h},force:function(y,g){return arguments.length>1?(g==null?a.delete(y):a.set(y,p(g)),t):a.get(y)},find:function(y,g,m){var x=0,v=n.length,b,k,M,C,L;for(m==null?m=1/0:m*=m,x=0;x<v;++x)C=n[x],b=y-C.x,k=g-C.y,M=b*b+k*k,M<m&&(L=C,m=M);return L},on:function(y,g){return arguments.length>1?(c.on(y,g),t):c.on(y)}}}function TA(){var n,t,e,i,r=Si(-30),o,s=1,a=1/0,l=.81;function c(d){var p,y=n.length,g=pl(n,SA,_A).visitAfter(f);for(i=d,p=0;p<y;++p)t=n[p],g.visit(u)}function h(){if(n){var d,p=n.length,y;for(o=new Array(p),d=0;d<p;++d)y=n[d],o[y.index]=+r(y,d,n)}}function f(d){var p=0,y,g,m=0,x,v,b;if(d.length){for(x=v=b=0;b<4;++b)(y=d[b])&&(g=Math.abs(y.value))&&(p+=y.value,m+=g,x+=g*y.x,v+=g*y.y);d.x=x/m,d.y=v/m}else{y=d,y.x=y.data.x,y.y=y.data.y;do p+=o[y.data.index];while(y=y.next)}d.value=p}function u(d,p,y,g){if(!d.value)return!0;var m=d.x-t.x,x=d.y-t.y,v=g-p,b=m*m+x*x;if(v*v/l<b)return b<a&&(m===0&&(m=Jn(e),b+=m*m),x===0&&(x=Jn(e),b+=x*x),b<s&&(b=Math.sqrt(s*b)),t.vx+=m*d.value*i/b,t.vy+=x*d.value*i/b),!0;if(d.length||b>=a)return;(d.data!==t||d.next)&&(m===0&&(m=Jn(e),b+=m*m),x===0&&(x=Jn(e),b+=x*x),b<s&&(b=Math.sqrt(s*b)));do d.data!==t&&(v=o[d.data.index]*i/b,t.vx+=m*v,t.vy+=x*v);while(d=d.next)}return c.initialize=function(d,p){n=d,e=p,h()},c.strength=function(d){return arguments.length?(r=typeof d=="function"?d:Si(+d),h(),c):r},c.distanceMin=function(d){return arguments.length?(s=d*d,c):Math.sqrt(s)},c.distanceMax=function(d){return arguments.length?(a=d*d,c):Math.sqrt(a)},c.theta=function(d){return arguments.length?(l=d*d,c):Math.sqrt(l)},c}class $A extends Ut{constructor(t){super(t),this.simulation=null}render(){var E,P,S;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,{nodes:o,links:s}=this.buildGraph();if(o.length===0)return;const a=r.link||{},l=r.layoutAlgorithm||{},c=r.draggable!==!1,h=l.linkLength??a.distance??80,f=a.color??"#999",u=a.width,d=a.dashStyle,p=l.maxIterations??300,y=l.gravitationalConstant??-200,g=l.friction??.9,m=l.maxSpeed??10,x=l.initialPositions,v=l.attractiveForce,b=l.repulsiveForce;if(x==="circle"){const w=t.width/2,A=t.height/2,T=Math.min(t.width,t.height)/3;o.forEach((R,F)=>{const D=2*Math.PI*F/o.length;R.x=w+T*Math.cos(D),R.y=A+T*Math.sin(D)})}else x==="random"?o.forEach(w=>{w.x=Math.random()*t.width,w.y=Math.random()*t.height}):typeof x=="function"&&x(o);const k=Math.sqrt(t.width*t.height/Math.max(o.length,1)),M=wA(s).id(w=>w.id);v?M.distance(w=>v(Math.sqrt((w.source.x-w.target.x)**2+(w.source.y-w.target.y)**2)||1,k)):M.distance(h);const C=TA();b?C.strength(w=>-b(1,k)):C.strength(y),this.simulation=EA(o).force("link",M).force("charge",C).force("center",tA(t.width/2,t.height/2)).force("collide",bA(20)).velocityDecay(1-g).alphaDecay(1-Math.pow(.001,1/p)).stop();for(let w=0;w<p;w++)this.simulation.tick(),o.forEach(A=>{const T=Math.abs(A.vx||0),R=Math.abs(A.vy||0);T>m&&(A.vx=Math.sign(A.vx)*m),R>m&&(A.vy=Math.sign(A.vy)*m)});o.forEach(w=>{var T;const A=((T=w.marker)==null?void 0:T.radius)||10;w.x=Math.max(A+30,Math.min(t.width-A-30,w.x??0)),w.y=Math.max(A+18,Math.min(t.height-A-6,w.y??0))});const L=this.getDashArray(d),_=this.group.selectAll(".katucharts-network-link").data(s).join("line").attr("class","katucharts-network-link").attr("x1",w=>w.source.x).attr("y1",w=>w.source.y).attr("x2",w=>w.target.x).attr("y2",w=>w.target.y).attr("stroke",f).attr("stroke-width",w=>u??Math.sqrt(w.value||1)).attr("stroke-dasharray",L);i?_.attr("stroke-opacity",0).transition().duration(bt).ease(pt).attr("stroke-opacity",.6):_.attr("stroke-opacity",.6);const $=this.group.selectAll(".katucharts-network-node").data(o).join("circle").attr("class","katucharts-network-node").attr("cx",w=>w.x).attr("cy",w=>w.y).attr("fill",(w,A)=>w.color||e[A%e.length]).attr("stroke",this.autoBorderColor()).attr("stroke-width",1.5).style("cursor",c?"grab":"pointer");if(i?$.attr("r",0).transition().duration(bt).ease(pt).attr("r",w=>{var A;return((A=w.marker)==null?void 0:A.radius)||10}):$.attr("r",w=>{var A;return((A=w.marker)==null?void 0:A.radius)||10}),c){const w=df().on("start",(A,T)=>{rt(A.sourceEvent.target).style("cursor","grabbing"),this.simulation&&this.simulation.alphaTarget(.3).restart(),T.fx=T.x,T.fy=T.y}).on("drag",(A,T)=>{T.fx=A.x,T.fy=A.y,T.x=A.x,T.y=A.y,this.updatePositions($,_,I)}).on("end",(A,T)=>{rt(A.sourceEvent.target).style("cursor","grab"),this.simulation&&this.simulation.alphaTarget(0),T.fx=null,T.fy=null});$.call(w)}$.on("mouseover",(w,A)=>{var D;const T=rt(w.currentTarget),R=((D=A.marker)==null?void 0:D.radius)||10;T.transition("size").duration(K).ease(Z).attr("r",R+4),T.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.3))"),$.interrupt("highlight"),_.interrupt("highlight"),$.attr("opacity",1),_.transition("highlight").duration(K).ease(Z).attr("stroke-opacity",z=>z.source===A||z.target===A?.9:.1).attr("stroke-width",z=>z.source===A||z.target===A?3:u??Math.sqrt(z.value||1)),$.filter(z=>z!==A).transition("highlight").duration(K).ease(Z).attr("opacity",z=>s.some(H=>H.source===A&&H.target===z||H.target===A&&H.source===z)?1:.3);const F=o.indexOf(A);this.context.events.emit("point:mouseover",{point:{name:A.name||A.id},index:F,series:this,event:w,plotX:A.x,plotY:A.y})}).on("mouseout",(w,A)=>{var F;const T=rt(w.currentTarget);T.transition("size").duration(K).ease(Z).attr("r",((F=A.marker)==null?void 0:F.radius)||10),T.style("filter",""),$.interrupt("highlight"),_.interrupt("highlight"),_.transition("highlight").duration(K).ease(Z).attr("stroke-opacity",.6).attr("stroke-width",D=>u??Math.sqrt(D.value||1)),$.transition("highlight").duration(K).ease(Z).attr("opacity",1);const R=o.indexOf(A);this.context.events.emit("point:mouseout",{point:{name:A.name||A.id},index:R,series:this,event:w})}).on("click",(w,A)=>{const T=o.indexOf(A);this.context.events.emit("point:click",{point:{name:A.name||A.id},index:T,series:this,event:w})});const I=this.group.selectAll(".katucharts-network-label").data(o).join("text").attr("class","katucharts-network-label").attr("x",w=>w.x).attr("y",w=>w.y-14).attr("text-anchor","middle").attr("font-size",wt).attr("fill",this.autoLabelColor(((E=this.config.dataLabels)==null?void 0:E.color)||((S=(P=this.config.dataLabels)==null?void 0:P.style)==null?void 0:S.color))).style("pointer-events","none").text(w=>w.name||w.id);i&&I.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}updatePositions(t,e,i){t.attr("cx",r=>r.x).attr("cy",r=>r.y),e.attr("x1",r=>r.source.x).attr("y1",r=>r.source.y).attr("x2",r=>r.target.x).attr("y2",r=>r.target.y),i.attr("x",r=>r.x).attr("y",r=>r.y-14)}getDashArray(t){return t&&{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t]||"none"}buildGraph(){const t=new Map,e=[],i=this.config.nodes||[];for(const r of i)t.set(r.id,{...r});for(const r of this.data){const o=r[0]||r.from,s=r[1]||r.to;o&&s&&(t.has(o)||t.set(o,{id:o,name:o}),t.has(s)||t.set(s,{id:s,name:s}),e.push({source:o,target:s,value:r.y??1}))}return{nodes:Array.from(t.values()),links:e}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}destroy(){this.simulation&&(this.simulation.stop(),this.simulation=null),super.destroy()}}var LA=Math.PI,Rp=LA*2,Dp=Math.max;function zp(n,t){return Array.from({length:t-n},(e,i)=>n+i)}function IA(n){return function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)}}function FA(){return RA(!1)}function RA(n,t){var e=0,i=null,r=null,o=null;function s(a){var l=a.length,c=new Array(l),h=zp(0,l),f=new Array(l*l),u=new Array(l),d=0,p;a=Float64Array.from({length:l*l},(y,g)=>a[g/l|0][g%l]);for(let y=0;y<l;++y){let g=0;for(let m=0;m<l;++m)g+=a[y*l+m]+n*a[m*l+y];d+=c[y]=g}d=Dp(0,Rp-e*l)/d,p=d?e:Rp/l;{let y=0;i&&h.sort((g,m)=>i(c[g],c[m]));for(const g of h){const m=y;{const x=zp(0,l).filter(v=>a[g*l+v]||a[v*l+g]);r&&x.sort((v,b)=>r(a[g*l+v],a[g*l+b]));for(const v of x){let b;if(g<v?(b=f[g*l+v]||(f[g*l+v]={source:null,target:null}),b.source={index:g,startAngle:y,endAngle:y+=a[g*l+v]*d,value:a[g*l+v]}):(b=f[v*l+g]||(f[v*l+g]={source:null,target:null}),b.target={index:g,startAngle:y,endAngle:y+=a[g*l+v]*d,value:a[g*l+v]},g===v&&(b.source=b.target)),b.source&&b.target&&b.source.value<b.target.value){const k=b.source;b.source=b.target,b.target=k}}u[g]={index:g,startAngle:m,endAngle:y,value:c[g]}}y+=p}}return f=Object.values(f),f.groups=u,o?f.sort(o):f}return s.padAngle=function(a){return arguments.length?(e=Dp(0,a),s):e},s.sortGroups=function(a){return arguments.length?(i=a,s):i},s.sortSubgroups=function(a){return arguments.length?(r=a,s):r},s.sortChords=function(a){return arguments.length?(a==null?o=null:(o=IA(a))._=a,s):o&&o._},s}class DA extends Ut{constructor(t){super(t)}render(){var Xr,Ur,qr;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=r.labelType??"max",s=bt*2,a=8,l=Math.round(s*.48),c=12,h=Math.round(l*.65),f=l+8,u=r.nodeWidth??20,d=r.linkOpacity??.5;r.minLinkWidth;const p=(r.startAngle??0)*(Math.PI/180),y=(Xr=this.group.node())==null?void 0:Xr.parentElement;y&&rt(y).attr("clip-path",null);const g=this.group.select(function(){return this.ownerSVGElement});g.empty()||g.style("overflow","visible");const m=r.center||["50%","50%"],x=this.resolvePercent(m[0],t.width),v=this.resolvePercent(m[1],t.height),b=r.size,k=o==="small"?34:70,M=o==="small"?34:24,C=Math.max(80,Math.min(t.width-2*k,t.height-2*M)),L=b?this.resolvePercent(b,C):C,_=Math.max(40,L/2-2),$=_-u,{matrix:I,names:E,nodeColors:P}=this.buildMatrix();if(E.length===0)return;const w=(r.nodePadding??2)/(_>0?_:1),T=FA().padAngle(w).sortSubgroups(null)(I);this.normalizeChordWidths(T),this.sortChordEndpoints(T);const R=Se().innerRadius($).outerRadius(_).cornerRadius(3),F=Se().innerRadius($).outerRadius(_+4).cornerRadius(3),D=r.curveFactor??.05,z=et=>{const nt=$,ht=et.source.startAngle+p-Math.PI/2,vt=et.source.endAngle+p-Math.PI/2,mt=et.target.startAngle+p-Math.PI/2,gt=et.target.endAngle+p-Math.PI/2,Q=nt*Math.cos(ht),It=nt*Math.sin(ht),zt=nt*Math.cos(vt),yt=nt*Math.sin(vt),qt=nt*Math.cos(mt),Ot=nt*Math.sin(mt),jt=nt*Math.cos(gt),ee=nt*Math.sin(gt),Vt=Math.abs(vt-ht)>Math.PI?1:0,un=Math.abs(gt-mt)>Math.PI?1:0;let De=Math.abs(mt-vt);De>Math.PI&&(De=2*Math.PI-De);const Ge=De/Math.PI,Pe=nt*Math.max(D,(1-Ge)*(1-Ge)*(1-Ge));let fn=Math.abs(ht-gt);fn>Math.PI&&(fn=2*Math.PI-fn);const yn=fn/Math.PI,Vn=nt*Math.max(D,(1-yn)*(1-yn)*(1-yn));return`M${Q},${It}A${nt},${nt},0,${Vt},1,${zt},${yt}C${Pe*Math.cos(vt)},${Pe*Math.sin(vt)},${Pe*Math.cos(mt)},${Pe*Math.sin(mt)},${qt},${Ot}A${nt},${nt},0,${un},1,${jt},${ee}C${Vn*Math.cos(gt)},${Vn*Math.sin(gt)},${Vn*Math.cos(ht)},${Vn*Math.sin(ht)},${Q},${It}Z`},B=this.group.append("g").attr("transform",`translate(${x},${v})`),H=et=>P[et]||e[et%e.length],J=r.linkColorMode??"from",X=B.append("defs");let j=null;J==="gradient"&&(j=X);const W=et=>H(J==="to"?et.target.index:et.source.index),U=u*2,G=(et,nt,ht,vt)=>{const mt=`katucharts-dw-edge-${vt}-${ht}-${Math.random().toString(36).slice(2,6)}`,gt=$*Math.cos(et),Q=$*Math.sin(et),It=($-U)*Math.cos(et),zt=($-U)*Math.sin(et);return X.append("linearGradient").attr("id",mt).attr("gradientUnits","userSpaceOnUse").attr("x1",gt).attr("y1",Q).attr("x2",It).attr("y2",zt).selectAll("stop").data([{offset:"0%",opacity:.7},{offset:"25%",opacity:.2},{offset:"50%",opacity:.05},{offset:"100%",opacity:0}]).join("stop").attr("offset",yt=>yt.offset).attr("stop-color",nt).attr("stop-opacity",yt=>yt.opacity),mt},N=J!=="gradient";let Y,O;if(N){const et=new Map;for(const vt of T){const mt=W(vt);et.has(mt)||et.set(mt,[]),et.get(mt).push(vt)}const nt=B.append("g").attr("class","katucharts-chord-container");for(const[vt,mt]of et)nt.append("g").attr("class","katucharts-chord-group").attr("opacity",d).selectAll(".katucharts-chord").data(mt).join("path").attr("class","katucharts-chord").attr("d",Q=>z(Q)).attr("fill",vt).attr("fill-opacity",1).attr("stroke","none").style("cursor","pointer");Y=nt.selectAll(".katucharts-chord"),O=nt.selectAll(".katucharts-chord-group");const ht=B.append("g").attr("class","katucharts-chord-edges").attr("opacity",d);if(T.forEach((vt,mt)=>{const gt=H(vt.source.index),Q=H(vt.target.index);if(gt===Q)return;const It=z(vt),zt=(vt.target.startAngle+vt.target.endAngle)/2+p-Math.PI/2,yt=G(zt,Q,mt,"tgt");ht.append("path").attr("d",It).attr("fill",`url(#${yt})`).attr("stroke","none").style("pointer-events","none");const qt=(vt.source.startAngle+vt.source.endAngle)/2+p-Math.PI/2,Ot=G(qt,gt,mt,"src");ht.append("path").attr("d",It).attr("fill",`url(#${Ot})`).attr("stroke","none").style("pointer-events","none")}),i){ht.attr("opacity",0);const vt=B.append("defs"),mt=Math.round(s*.62);Y.each(function(Q,It){const zt=f+It*a,yt=`dw-clip-${It}-${Math.random().toString(36).slice(2,6)}`,qt=Q.source.startAngle+p-Math.PI/2,Ot=Q.source.endAngle+p-Math.PI/2,jt=Q.target.startAngle+p-Math.PI/2,ee=Q.target.endAngle+p-Math.PI/2,Vt=(qt+Ot)/2,un=(jt+ee)/2,De=$*Math.cos(Vt),Ge=$*Math.sin(Vt),Pe=$*Math.cos(un),fn=$*Math.sin(un),yn=Math.atan2(fn-Ge,Pe-De)*180/Math.PI,Vn=Math.sqrt((Pe-De)**2+(fn-Ge)**2)+_*2,jr=vt.append("clipPath").attr("id",yt).attr("clipPathUnits","userSpaceOnUse"),V=jr.append("rect").attr("transform",`translate(${De},${Ge}) rotate(${yn})`).attr("x",-_).attr("y",-_).attr("width",0).attr("height",_*2),tt=rt(this);tt.attr("clip-path",`url(#${yt})`),V.transition("enter").duration(mt).delay(zt).ease(pt).attr("width",Vn).on("end",function(){tt.attr("clip-path",null),jr.remove()})});const gt=f+(T.length-1)*a+mt;ht.transition("enter").duration(300).delay(gt).ease(pt).attr("opacity",d)}}else if(Y=B.selectAll(".katucharts-chord").data(T).join("path").attr("class","katucharts-chord").attr("d",et=>z(et)).attr("stroke","none").style("cursor","pointer"),Y.each(function(et,nt){const ht=`katucharts-dw-grad-${nt}-${Math.random().toString(36).slice(2,6)}`,vt=(et.source.startAngle+et.source.endAngle)/2+p-Math.PI/2,mt=(et.target.startAngle+et.target.endAngle)/2+p-Math.PI/2;j.append("linearGradient").attr("id",ht).attr("gradientUnits","userSpaceOnUse").attr("x1",$*Math.cos(vt)).attr("y1",$*Math.sin(vt)).attr("x2",$*Math.cos(mt)).attr("y2",$*Math.sin(mt)).selectAll("stop").data([{offset:"0%",color:H(et.source.index)},{offset:"100%",color:H(et.target.index)}]).join("stop").attr("offset",gt=>gt.offset).attr("stop-color",gt=>gt.color),rt(this).attr("fill",`url(#${ht})`)}),i){Y.attr("fill-opacity",d);const et=B.append("defs"),nt=Math.round(s*.62);Y.each(function(ht,vt){const mt=f+vt*a,gt=`dw-clip-${vt}-${Math.random().toString(36).slice(2,6)}`,Q=ht.source.startAngle+p-Math.PI/2,It=ht.source.endAngle+p-Math.PI/2,zt=ht.target.startAngle+p-Math.PI/2,yt=ht.target.endAngle+p-Math.PI/2,qt=(Q+It)/2,Ot=(zt+yt)/2,jt=$*Math.cos(qt),ee=$*Math.sin(qt),Vt=$*Math.cos(Ot),un=$*Math.sin(Ot),De=Math.atan2(un-ee,Vt-jt)*180/Math.PI,Ge=Math.sqrt((Vt-jt)**2+(un-ee)**2)+_*2,Pe=et.append("clipPath").attr("id",gt).attr("clipPathUnits","userSpaceOnUse"),fn=Pe.append("rect").attr("transform",`translate(${jt},${ee}) rotate(${De})`).attr("x",-_).attr("y",-_).attr("width",0).attr("height",_*2),yn=rt(this);yn.attr("clip-path",`url(#${gt})`),fn.transition("enter").duration(nt).delay(mt).ease(pt).attr("width",Ge).on("end",function(){yn.attr("clip-path",null),Pe.remove()})})}else Y.attr("fill-opacity",d);const ct=(et,nt,ht)=>{const vt=E[ht.source.index],mt=E[ht.target.index],gt={name:`${vt} → ${mt}`,from:vt,to:mt,y:ht.source.value,weight:ht.source.value,fromNode:{name:vt},toNode:{name:mt}};if(et==="mouseover"){this.context.events.emit("point:mouseover",{point:gt,index:T.indexOf(ht),series:this,event:nt,plotX:nt.offsetX-this.context.plotArea.x,plotY:nt.offsetY-this.context.plotArea.y});return}if(et==="mouseout"){this.context.events.emit("point:mouseout",{point:gt,index:T.indexOf(ht),series:this,event:nt});return}this.context.events.emit("point:click",{point:gt,index:T.indexOf(ht),series:this,event:nt})},it=(et,nt)=>{Y.interrupt("highlight"),Mt.interrupt("highlight"),O&&O.interrupt("highlight").attr("opacity",1),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",ht=>ht===nt?Math.min(d+.35,1):.05),Mt.attr("opacity",1),Mt.transition("highlight").duration(K).ease(Z).attr("opacity",ht=>ht.index===nt.source.index||ht.index===nt.target.index?1:.3),ct("mouseover",et,nt)},ft=(et,nt)=>{Y.interrupt("highlight"),Mt.interrupt("highlight"),O?(O.interrupt("highlight"),O.transition("highlight").duration(K).ease(Z).attr("opacity",d),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",1)):Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",d),Mt.transition("highlight").duration(K).ease(Z).attr("opacity",1),ct("mouseout",et,nt)},dt=(et,nt)=>{ct("click",et,nt)};Y.on("mouseover",it).on("mouseout",ft).on("click",dt);const at=T.groups.map(et=>({...et,startAngle:et.startAngle+p,endAngle:et.endAngle+p})),ot=et=>{const nt=Math.PI*2;let ht=et%nt;return ht<0&&(ht+=nt),ht},q=(et,nt)=>{const ht=et.offsetX-this.context.plotArea.x-x,vt=et.offsetY-this.context.plotArea.y-v,mt=ot(Math.atan2(vt,ht)+Math.PI/2),gt=T.filter(Ot=>Ot.source.index===nt.index||Ot.target.index===nt.index);if(gt.length===0)return null;const Q=Ot=>Ot.source.index===nt.index?Ot.source:Ot.target,It=Ot=>{const jt=Q(Ot),ee=ot(jt.startAngle+p),Vt=ot(jt.endAngle+p);return ee<=Vt?mt>=ee&&mt<=Vt:mt>=ee||mt<=Vt},zt=gt.find(It);if(zt)return zt;let yt=gt[0],qt=1/0;for(const Ot of gt){const jt=Q(Ot),ee=ot((jt.startAngle+jt.endAngle)/2+p);let Vt=Math.abs(mt-ee);Vt>Math.PI&&(Vt=Math.PI*2-Vt),Vt<qt&&(qt=Vt,yt=Ot)}return yt},st=et=>{const nt=E[et.source.index],ht=E[et.target.index];return{name:`${nt} → ${ht}`,from:nt,to:ht,y:et.source.value,weight:et.source.value,fromNode:{name:nt},toNode:{name:ht}}},kt=r.borderColor??this.autoBorderColor(),Et=r.borderWidth??1,Mt=B.selectAll(".katucharts-chord-arc").data(at).join("path").attr("class","katucharts-chord-arc").attr("fill",et=>H(et.index)).attr("stroke",kt).attr("stroke-width",Et).style("cursor","pointer");i?Mt.each(function(et,nt){const ht=rt(this),vt={startAngle:et.startAngle,endAngle:et.startAngle},mt=ae(vt,et);ht.transition("enter").duration(l).delay(nt*c).ease(pt).attrTween("d",()=>gt=>R(mt(gt)))}):Mt.attr("d",R),Mt.on("mouseover",(et,nt)=>{rt(et.currentTarget).transition("arc").duration(K).ease(Z).attr("d",F(nt)),Y.interrupt("highlight"),Mt.interrupt("highlight"),O&&O.interrupt("highlight").attr("opacity",1),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",mt=>mt.source.index===nt.index||mt.target.index===nt.index?Math.min(d+.35,1):.05),Mt.attr("opacity",1),Mt.filter(mt=>mt!==nt).transition("highlight").duration(K).ease(Z).attr("opacity",mt=>T.some(Q=>Q.source.index===nt.index&&Q.target.index===mt.index||Q.target.index===nt.index&&Q.source.index===mt.index)?1:.3),Ke.filter(mt=>mt.index===nt.index).transition("label").duration(K).ease(Z).attr("opacity",1);const vt=q(et,nt);this.context.events.emit("point:mouseover",{point:vt?st(vt):{name:E[nt.index],y:nt.value,sum:nt.value},index:nt.index,series:this,event:et,plotX:et.offsetX-this.context.plotArea.x,plotY:et.offsetY-this.context.plotArea.y})}).on("mouseout",(et,nt)=>{rt(et.currentTarget).transition("arc").duration(K).ease(Z).attr("d",R(nt)),Y.interrupt("highlight"),Mt.interrupt("highlight"),O?(O.interrupt("highlight"),O.transition("highlight").duration(K).ease(Z).attr("opacity",d),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",1)):Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",d),Mt.transition("highlight").duration(K).ease(Z).attr("opacity",1),Ke.filter(mt=>mt.index===nt.index).transition("label").duration(K).ease(Z).attr("opacity",mt=>hn(mt)?1:0);const vt=q(et,nt);this.context.events.emit("point:mouseout",{point:vt?st(vt):{name:E[nt.index],y:nt.value,sum:nt.value},index:nt.index,series:this,event:et})}).on("click",(et,nt)=>{const ht=q(et,nt);this.context.events.emit("point:click",{point:ht?st(ht):{name:E[nt.index],y:nt.value,sum:nt.value},index:nt.index,series:this,event:et})}),B.append("g").attr("class","katucharts-chord-hitareas").selectAll(".katucharts-chord-hitarea").data(T).join("path").attr("class","katucharts-chord-hitarea").attr("d",et=>z(et)).attr("fill","#ffffff").attr("fill-opacity",0).attr("stroke","#ffffff").attr("stroke-opacity",0).attr("stroke-width",12).attr("stroke-linejoin","round").style("cursor","pointer").style("pointer-events","all").on("mouseover",it).on("mouseout",ft).on("click",dt);const Ct=this.config.dataLabels||{},Gt=Ct.color||((Ur=Ct.style)==null?void 0:Ur.color)||me,Ht=((qr=Ct.style)==null?void 0:qr.fontSize)||wt,Nt=ye(Ht),Kt=22,ie=_+Kt,Lt=Math.max(Nt*1.6,17),Jt="…",Ce=Je(Jt,Nt,"bold"),je=(et,nt)=>{if(!et||nt<=Ce)return"";if(Je(et,Nt,"bold")<=nt)return et;let ht="";for(const vt of et){if(Je(ht+vt,Nt,"bold")+Ce>nt)break;ht+=vt}return ht=ht.trimEnd(),(ht||et[0])+Jt},pe=t.width-x,Hn=x,ti=v,He=t.height-v,Ve=at.map(et=>{const nt=(et.startAngle+et.endAngle)/2,ht=Math.sin(nt)>=0;return{index:et.index,mid:nt,span:et.endAngle-et.startAngle,isRight:ht,ax:_*Math.sin(nt),ay:-_*Math.cos(nt),lx:ie*Math.sin(nt),ly:-ie*Math.cos(nt),rank:et.value||0,color:H(et.index),visible:!!E[et.index]}}),hn=et=>!!et.visible,Ze=B.append("g").attr("class","katucharts-chord-labels");let Ke;if(o==="small"){const et=Math.PI*2,nt=_+6+Nt*.5,ht=gt=>[nt*Math.sin(gt),-nt*Math.cos(gt)],vt=(gt,Q)=>{if(!gt)return"";const It=Q*nt-2;if(It<Je(gt[0],Nt,"bold"))return"";if(Je(gt,Nt,"bold")<=It)return gt;let zt="";for(const yt of gt){if(zt&&Je(zt+yt,Nt,"bold")>It)break;zt+=yt}return zt},mt=B.append("defs");if(Ke=Ze.selectAll(".katucharts-chord-label").data(Ve.filter(gt=>gt.visible)).join("text").attr("class","katucharts-chord-label").attr("font-size",Ht).attr("font-weight","bold").attr("fill",Gt).style("pointer-events","none").attr("opacity",0),Ke.each((gt,Q,It)=>{const zt=rt(It[Q]);zt.text(null);const yt=vt(E[gt.index]||"",gt.span);if(!yt)return;const qt=(gt.mid%et+et)%et,Ot=qt>Math.PI/2&&qt<Math.PI*3/2,jt=gt.span/2,[ee,Vt]=ht(Ot?gt.mid+jt:gt.mid-jt),[un,De]=ht(Ot?gt.mid-jt:gt.mid+jt),Ge=Ot?0:1,Pe=`katucharts-dw-label-${Q}-${Math.random().toString(36).slice(2,6)}`;mt.append("path").attr("id",Pe).attr("fill","none").attr("d",`M${ee},${Vt}A${nt},${nt},0,0,${Ge},${un},${De}`),zt.append("textPath").attr("href",`#${Pe}`).attr("startOffset","50%").attr("text-anchor","middle").attr("dominant-baseline","central").text(yt)}),i){Ke.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",1);const gt=Math.round(s*.62),Q=T.length,It=f+Q*a+gt;this.emitAfterAnimate(It+100)}else Ke.attr("opacity",1)}else{const et=Math.max(1,ti-5+(He-5));if(o==="medium"){const Q=Math.max(1,Math.min(10,Math.floor(et/(Lt*1.2))));for(const It of[!0,!1]){const zt=Ve.filter(yt=>yt.visible&&yt.isRight===It);zt.length>Q&&(zt.sort((yt,qt)=>qt.rank-yt.rank),zt.slice(Q).forEach(yt=>{yt.visible=!1}))}}this.distributeChordLabels(Ve.filter(Q=>Q.visible&&Q.isRight),Lt,ti,He),this.distributeChordLabels(Ve.filter(Q=>Q.visible&&!Q.isRight),Lt,ti,He);const nt=Math.max(Nt*1.4,16),ht=Q=>{const It=Q.filter(Ot=>Ot.visible).sort((Ot,jt)=>Ot.ly-jt.ly),zt=It.length*Lt/et;let yt=1;It.length>=8&&zt>.5&&(yt=2),It.length>=14&&zt>.75&&(yt=3);const qt=Math.max(1,yt*2-2);It.forEach((Ot,jt)=>{if(yt<=1){Ot.col=0;return}const ee=jt%qt;Ot.col=ee<yt?ee:qt-ee})};if(o==="medium")for(const Q of Ve)Q.col=0;else ht(Ve.filter(Q=>Q.isRight)),ht(Ve.filter(Q=>!Q.isRight));for(const Q of Ve){if(!Q.visible)continue;const It=(Q.col||0)*nt,zt=ie+It,yt=Math.max(-zt,Math.min(zt,Q.ly)),qt=Math.sqrt(Math.max(0,zt*zt-yt*yt)),Ot=_*.4+It;Q.lx=Q.isRight?Math.max(qt,Ot):-Math.max(qt,Ot)}const vt=Q=>Q.lx+(Q.isRight?4:-4),mt=Q=>(Q.isRight?pe-vt(Q):vt(Q)+Hn)-6,gt=Ze.selectAll(".katucharts-chord-connector").data(Ve.filter(Q=>Q.visible)).join("path").attr("class","katucharts-chord-connector").attr("fill","none").attr("stroke",Q=>Q.color).attr("stroke-width",1).attr("opacity",0).attr("d",Q=>{const It=_+Kt*.55,zt=It*Math.sin(Q.mid),yt=-It*Math.cos(Q.mid);return`M${Q.ax},${Q.ay}L${zt},${yt}L${Q.lx},${Q.ly}`});if(Ke=Ze.selectAll(".katucharts-chord-label").data(Ve).join("text").attr("class","katucharts-chord-label").attr("text-anchor",Q=>Q.isRight?"start":"end").attr("dominant-baseline","middle").attr("font-size",Ht).attr("font-weight","bold").attr("fill",Gt).style("pointer-events","none").attr("opacity",0).attr("x",Q=>vt(Q)).attr("y",Q=>Q.ly).text(Q=>Q.visible?je(E[Q.index]||"",mt(Q)):""),i){gt.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",.8),Ke.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",yt=>hn(yt)?1:0);const Q=Math.round(s*.62),It=T.length,zt=f+It*a+Q;this.emitAfterAnimate(zt+100)}else gt.attr("opacity",.8),Ke.attr("opacity",Q=>hn(Q)?1:0)}}distributeChordLabels(t,e,i,r){const o=t.filter(h=>h.visible);if(o.length<=1)return;const s=-(i-5),l=r-5-s,c=o.map(h=>({target:h.ly-s,size:e,rank:h.rank,pos:0,removed:!1,label:h}));this.distributeBoxes(c,l,l,l/4);for(const h of c)h.removed?h.label.visible=!1:h.label.ly=s+h.pos+e/2}distributeBoxes(t,e,i,r){const o=t.filter(c=>!c.removed);if(o.length===0)return;let s=o.reduce((c,h)=>c+h.size,0);if(s>e){const c=[...o].sort((f,u)=>f.rank-u.rank);let h=0;for(;s>e&&h<c.length;)c[h].removed=!0,s-=c[h].size,h++}const a=o.filter(c=>!c.removed);if(a.length===0)return;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}if(a.some(c=>Math.abs(c.pos-c.target)>r)){const c=e*.9;if(c>=i*.1){const h=[...a].sort((f,u)=>f.rank-u.rank);h[0].removed=!0,this.distributeBoxes(t,c,i,c/4)}}}resolvePercent(t,e){return typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:typeof t=="number"?t:parseFloat(t)||e/2}normalizeChordWidths(t){const e=t.groups;if(e.length===0)return;let i=0;for(const r of e){const o=r.endAngle-r.startAngle;o>0&&r.value>0&&(i=Math.max(i,r.value/o))}if(i!==0)for(const r of e){const o=[];for(const f of t)f.source.index===r.index&&o.push({ref:f.source,value:f.source.value}),f.target.index===r.index&&o.push({ref:f.target,value:f.target.value});if(o.length===0)continue;o.sort((f,u)=>f.ref.startAngle-u.ref.startAngle);const s=r.endAngle-r.startAngle,a=o.reduce((f,u)=>f+u.value/i,0),c=Math.max(0,s-a)/(o.length+1);let h=r.startAngle+c;for(const f of o){const u=f.value/i;f.ref.startAngle=h,f.ref.endAngle=h+u,h+=u+c}}}sortChordEndpoints(t){const e=t.groups,i=2*Math.PI;for(const r of e){const o=[],s=d=>d.side==="source"?d.chord.source:d.chord.target;for(const d of t){if(d.source.index===r.index){const p=e[d.target.index];o.push({chord:d,side:"source",partnerMid:(p.startAngle+p.endAngle)/2,width:d.source.endAngle-d.source.startAngle})}if(d.target.index===r.index){const p=e[d.source.index];o.push({chord:d,side:"target",partnerMid:(p.startAngle+p.endAngle)/2,width:d.target.endAngle-d.target.startAngle})}}if(o.length<=1)continue;const a=r.endAngle-r.startAngle,l=o.reduce((d,p)=>d+p.width,0),h=Math.max(0,a-l)/(o.length+1),f=r.endAngle;o.sort((d,p)=>{const y=((d.partnerMid-f)%i+i)%i;return((p.partnerMid-f)%i+i)%i-y});let u=r.startAngle+h;for(const d of o){const p=s(d);p.startAngle=u,p.endAngle=u+d.width,u+=d.width+h}}}buildMatrix(){const t=this.config.nodes||[],e=new Map;for(const l of t)l.color&&e.set(l.id,l.color);const i=new Set;for(const l of this.data)l.from&&i.add(l.from),l.to&&i.add(l.to);const r=Array.from(i),o=new Map(r.map((l,c)=>[l,c])),s=Array.from({length:r.length},()=>new Array(r.length).fill(0));for(const l of this.data){const c=o.get(l.from),h=o.get(l.to);if(c!==void 0&&h!==void 0){const f=l.y??l.weight??1;s[c][h]+=f,s[h][c]+=f}}const a=r.map(l=>e.get(l));return{matrix:s,names:r,nodeColors:a}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function Bp(){Tt.registerType("sankey",QM),Tt.registerType("networkgraph",$A),Tt.registerType("dependencywheel",DA)}class Gr{static group(t,e,i="average",r,o){if(!t.length||e<=0)return t;const s=[...t].sort((f,u)=>(f.x??0)-(u.x??0)),a=!(r!=null&&r.groupAll)&&o?s.filter(f=>{const u=f.x??0;return u>=o.min&&u<=o.max}):s,l=new Map;for(const f of a){const u=f.x??0,d=Math.floor(u/e)*e;l.has(d)||l.set(d,[]),l.get(d).push(f)}const c=(r==null?void 0:r.anchor)??"start",h=[];for(const[f,u]of l){const d=Gr.applyAnchor(f,e,c),p=Gr.approximate(d,u,i);h.push(p)}return r!=null&&r.smoothed&&h.length>=3?Gr.smooth(h):h}static applyAnchor(t,e,i){switch(i){case"middle":return t+e/2;case"end":return t+e;default:return t}}static smooth(t){const e=[t[0]];for(let i=1;i<t.length-1;i++){const r=t[i-1].y??0,o=t[i].y??0,s=t[i+1].y??0;e.push({...t[i],y:(r+o+s)/3})}return e.push(t[t.length-1]),e}static approximate(t,e,i){const r=e.map(o=>o.y??0);switch(i){case"sum":return{x:t,y:r.reduce((o,s)=>o+s,0)};case"open":return{x:t,y:r[0]};case"high":return{x:t,y:Math.max(...r)};case"low":return{x:t,y:Math.min(...r)};case"close":return{x:t,y:r[r.length-1]};case"range":return{x:t,y:Math.max(...r)-Math.min(...r)};case"ohlc":return{x:t,y:r[r.length-1],open:r[0],high:Math.max(...r),low:Math.min(...r),close:r[r.length-1]};case"average":default:return{x:t,y:r.reduce((o,s)=>o+s,0)/r.length}}}}class zA{constructor(t){this.head=0,this._size=0,this.capacity=t,this.buffer=new Array(t)}push(t){const e=this._size===this.capacity?this.buffer[this.head]:void 0,i=(this.head+this._size)%this.capacity;return this.buffer[i]=t,this._size<this.capacity?this._size++:this.head=(this.head+1)%this.capacity,e}pushMany(t){const e=[];for(const i of t){const r=this.push(i);r!==void 0&&e.push(r)}return e}get size(){return this._size}get isFull(){return this._size===this.capacity}get(t){if(!(t<0||t>=this._size))return this.buffer[(this.head+t)%this.capacity]}toArray(){const t=new Array(this._size);for(let e=0;e<this._size;e++)t[e]=this.buffer[(this.head+e)%this.capacity];return t}clear(){this.head=0,this._size=0}}class Op{constructor(){this.entries=[]}add(t,e){if(t==="setData"){this.entries=[{type:t,payload:e}];return}this.entries.push({type:t,payload:e})}get isEmpty(){return this.entries.length===0}}class BA{constructor(t,e){this.pendingUpdates=new Map,this.rafId=null,this.lastFrameTime=0,this.maxFps=t.maxFps??30,this.flushCallback=e}schedule(t,e,i){let r=this.pendingUpdates.get(t);r||(r=new Op,this.pendingUpdates.set(t,r)),r.add(e,i),this.requestFrame()}requestFrame(){this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null;const t=performance.now(),e=1e3/this.maxFps;if(t-this.lastFrameTime<e){this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.lastFrameTime=performance.now(),this.flush()});return}this.lastFrameTime=t,this.flush()}))}flush(){if(this.pendingUpdates.size!==0){for(const[t,e]of this.pendingUpdates)e.isEmpty||t.applyBatch(e);this.pendingUpdates.clear(),this.flushCallback()}}destroy(){this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.pendingUpdates.clear()}get hasPending(){return this.pendingUpdates.size>0}}class OA{static fromWebSocket(t,e,i,r){const o=(r==null?void 0:r.shift)??!1,s=a=>{let l;try{l=JSON.parse(a.data)}catch{return}const c=i(l);if(Array.isArray(c))if(e.addPoints)e.addPoints(c,!0,o);else{for(const h of c)e.addPoint(h,!1,o);e.addPoint(c[c.length-1],!0,o)}else e.addPoint(c,!0,o)};return t.addEventListener("message",s),{unsubscribe:()=>t.removeEventListener("message",s)}}static fromEventSource(t,e,i,r,o){const s=(o==null?void 0:o.shift)??!1,a=l=>{const c=r(l.data);e.addPoint(c,!0,s)};return t.addEventListener(i,a),{unsubscribe:()=>t.removeEventListener(i,a)}}static fromPolling(t,e,i,r){const o=(r==null?void 0:r.shift)??!1;let s=!0;const a=async()=>{if(s){try{const l=await t();if(!s)return;if(Array.isArray(l))if(e.addPoints)e.addPoints(l,!0,o);else for(const c of l)e.addPoint(c,!0,o);else e.addPoint(l,!0,o)}catch{}s&&setTimeout(a,i)}};return setTimeout(a,i),{unsubscribe:()=>{s=!1}}}}nd(),wp(),kp(),Bp();const ml={chart(n,t){return new Vf(n,t)},setOptions(n){ha(n)},getOptions(){return Ph()},dateFormat:ja,numberFormat:jo,templateFormat:Zt,stripHtmlTags:fe,color(n){return zs(n)},palettes:oo,getPalette(n){return Pl(n)},themes:so,themeNames:ag,getTheme(n){return $l(n)},setTheme(n){const t=so[n];t&&ha(t)},use(n){Gh.register(n),n.init(ml)},setLicenseKey(n){return Qe.setKey(n)},isLicensed(){return Qe.isLicensed()},configureLicensing(n){Qe.configure(n)},ChartRegistry:Tt},NA=Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}));St.A11yModule=yf,St.BaseSeries=Ut,St.Chart=Vf,St.ChartRegistry=Tt,St.CircularBuffer=zA,St.Crosshair=rf,St.DataGrouping=Gr,St.DataLabels=Jo,St.Drilldown=ff,St.EventBus=Hh,St.ExportButton=af,St.ExportModule=ne,St.KatuCharts=ml,St.Legend=ts,St.LicenseManager=Qe,St.ModuleRegistry=Gh,St.Navigator=Wf,St.OptionsParser=qn,St.RangeSelector=Hf,St.ResponsiveEngine=cf,St.SVGRenderer=vo,St.StreamAdapter=OA,St.Tooltip=Qo,St.UpdateBatch=Op,St.UpdateScheduler=BA,St.Zoom=mf,St.default=ml,St.getGlobalOptions=Ph,St.lttbDecimate=Sc,St.minMaxDecimate=B2,St.registerCoreSeriesTypes=nd,St.registerFinancialSeriesTypes=kp,St.registerFlowSeriesTypes=Bp,St.registerGeneralSeriesTypes=wp,St.setGlobalOptions=ha,Object.defineProperties(St,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|
|
9
|
+
`);else{const a=t.match(wM);i=a?[a[1],a[2]]:[t]}const r="http://www.w3.org/2000/svg",o=i.length,s=o>1?-((o-1)*bp)/2:0;i.forEach((a,l)=>{const c=document.createElementNS(r,"tspan");c.setAttribute("x",String(e)),c.setAttribute("dy",`${l===0?s:bp}em`),c.textContent=a,n.appendChild(c)})}const kM={Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"};class MM extends Ut{constructor(t){super(t),this.selectedIndices=new Set,t.showInLegend=!1,t.clip=!1}render(){var L;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.data,o=r.filter(_=>{var $;return(($=_.sets)==null?void 0:$.length)===1}),s=r.filter(_=>{var $;return(($=_.sets)==null?void 0:$.length)>=2});if(o.length===0)return;const a=t.width/2,l=t.height/2,c=t.height/2*.92,h=Math.max(...o.map(_=>_.value||_.y||1)),f=this.config.opacity??.25,u=Math.min(1,f+.25),d=.4,p=this.config.borderColor,y=this.config.borderWidth??0,g=this.resolveDashStyle(this.config.borderDashStyle),m=this.config.allowPointSelect===!0,x=new Map;this.layoutSets(o,s,x,a,l,c,h,e,t);const v=Array.from(x.values()),b=[];for(const _ of o){const $=x.get(_.sets[0]);if(!$)continue;let I=$.cx,E=$.cy;const P=v.filter(S=>S.id!==$.id);if(P.length>0){let S=0,w=0;for(const T of P){const R=$.cx-T.cx,F=$.cy-T.cy,D=Math.sqrt(R*R+F*F)||1;S+=R/D,w+=F/D}const A=Math.sqrt(S*S+w*w)||1;I=$.cx+S/A*$.r*.7,E=$.cy+w/A*$.r*.7}b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||_.sets[0],color:_.color||$.color,path:this.circlePath($.cx,$.cy,$.r),labelX:I,labelY:E,data:_,order:1,key:_.sets.join("_")})}for(const _ of s){if(_.sets.length!==2)continue;const $=x.get(_.sets[0]),I=x.get(_.sets[1]);if(!$||!I)continue;const E=this.lensPath($,I);if(!E)continue;const P=_.color||this.blendColors($.color,I.color);b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||`${_.sets.join(" ∩ ")} (${_.value||_.y||0})`,color:P,path:E.path,labelX:E.cx,labelY:E.cy,data:_,order:2,key:[..._.sets].sort().join("_")})}for(const _ of s){if(_.sets.length!==3)continue;const $=_.sets.map(P=>x.get(P)).filter(Boolean);if($.length<3)continue;const I=this.triIntersectionPath($[0],$[1],$[2]);if(!I)continue;const E=_.color||this.blendColors($[0].color,$[1].color,$[2].color);b.push({sets:_.sets,value:_.value||_.y||0,name:_.name||`${_.sets.join(" ∩ ")} (${_.value||_.y||0})`,color:E,path:I.path,labelX:I.cx,labelY:I.cy,data:_,order:3,key:[..._.sets].sort().join("_")})}b.sort((_,$)=>_.order-$.order);const M=(((L=this.config.accessibility)==null?void 0:L.point)||{}).descriptionFormatter,C=this.group.selectAll(".katucharts-venn-area").data(b,_=>_.key).join(_=>{const $=_.append("g").attr("class",I=>`katucharts-venn-area katucharts-venn-${I.sets.length===1?"circle-area":"intersection-area"}`).attr("data-venn-sets",I=>I.sets.join("_"));return $.append("path"),$},_=>_,_=>_.remove());C.attr("class",_=>`katucharts-venn-area katucharts-venn-${_.sets.length===1?"circle-area":"intersection-area"}`),C.select("path").attr("d",_=>_.path).attr("fill",_=>_.color).attr("fill-opacity",_=>_.sets.length===1?f:0).attr("stroke",_=>_.sets.length===1?p||_.color:"none").attr("stroke-width",_=>_.sets.length===1?y:0).attr("stroke-dasharray",g).attr("role","img").attr("aria-label",_=>M?M({name:_.name,value:_.value,sets:_.sets}):`${_.name}: ${_.value}`).style("cursor",this.config.cursor||"pointer"),C.sort((_,$)=>_.order-$.order),C.each(function(_){if(_.sets.length>=2){const I=this.querySelector("path");if(I)try{const E=I.getBBox();E.width>0&&E.height>0&&(_.labelX=E.x+E.width/2,_.labelY=E.y+E.height/2)}catch{}}}),i&&C.select("path").attr("opacity",0).transition().duration(bt).ease(pt).delay((_,$)=>$*Wt).attr("opacity",1),this.config.enableMouseTracking!==!1&&this.attachEvents(C,b,f,u,d,m),this.renderLabels(b,i??!1)}resolveDashStyle(t){return t&&kM[t]||"none"}attachEvents(t,e,i,r,o,s){var l,c;(c=(l=this.config.dataLabels)==null?void 0:l.intersections)==null||c.enabled;const a=()=>this.group.selectAll(".katucharts-venn-inter-label");t.on("mouseover",(h,f)=>{var y,g,m;const u=e.indexOf(f),d=f.sets.length>=2;rt(h.currentTarget).select("path").transition("hover").duration(K).ease(Z).attr("fill-opacity",d?o:r),d&&a().filter(x=>x.sets.length===f.sets.length&&x.sets.every(v=>f.sets.includes(v))).transition("label").duration(K).ease(Z).attr("opacity",1),this.context.events.emit("point:mouseover",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h,plotX:f.labelX,plotY:f.labelY}),(m=(g=(y=f.data)==null?void 0:y.events)==null?void 0:g.mouseOver)==null||m.call(f.data,h)}).on("mouseout",(h,f)=>{var y,g,m;const u=e.indexOf(f),d=f.sets.length>=2;rt(h.currentTarget).select("path").transition("hover").duration(K).ease(Z).attr("fill-opacity",d?0:i),a().filter(function(){return this.__autoHidden===!0}).transition("label").duration(K).ease(Z).attr("opacity",0),this.context.events.emit("point:mouseout",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h}),(m=(g=(y=f.data)==null?void 0:y.events)==null?void 0:g.mouseOut)==null||m.call(f.data,h)}).on("click",(h,f)=>{var p,y,g,m,x,v,b,k,M,C,L,_,$;const u=e.indexOf(f);s&&(this.selectedIndices.has(u)?(this.selectedIndices.delete(u),(g=(y=(p=f.data)==null?void 0:p.events)==null?void 0:y.unselect)==null||g.call(f.data,h)):(this.selectedIndices.add(u),(v=(x=(m=f.data)==null?void 0:m.events)==null?void 0:x.select)==null||v.call(f.data,h))),this.context.events.emit("point:click",{point:{name:f.name,y:f.value,value:f.value,sets:f.sets},index:u,series:this,event:h}),(M=(k=(b=f.data)==null?void 0:b.events)==null?void 0:k.click)==null||M.call(f.data,h),(L=(C=this.config.events)==null?void 0:C.click)==null||L.call(this,h);const d=($=(_=this.config.point)==null?void 0:_.events)==null?void 0:$.click;d&&d.call({...f.data,sets:f.sets,name:f.name,value:f.value},h)})}renderLabels(t,e){var u,d,p,y;const i=this.config.dataLabels||{},r=i.enabled!==!1,o=((u=i.intersections)==null?void 0:u.enabled)!==!1,s=((d=i.style)==null?void 0:d.fontSize)||wt,a=i.color||((p=i.style)==null?void 0:p.color)||ye,l=((y=i.style)==null?void 0:y.fontWeight)||"bold",c=t.filter(g=>g.sets.length===1),h=t.filter(g=>g.sets.length>=2);if(r){const g=this.group.selectAll(".katucharts-venn-set-label").data(c,m=>m.key).join("text").attr("class","katucharts-venn-set-label").attr("x",m=>m.labelX).attr("y",m=>m.labelY).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",s).attr("font-weight",l).attr("fill",a).style("pointer-events","none").style("text-shadow","0 0 4px #fff, 0 0 4px #fff");g.each((m,x,v)=>{const b=i.formatter?i.formatter.call({point:{name:m.name,y:m.value,sets:m.sets},series:{name:this.config.name},x:m.name,y:m.value}):m.name;vp(v[x],String(b??""),m.labelX)}),e&&g.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}const f=this.group.selectAll(".katucharts-venn-inter-label").data(h,g=>g.key).join("text").attr("class","katucharts-venn-inter-label").attr("x",g=>g.labelX).attr("y",g=>g.labelY).attr("text-anchor","middle").attr("dominant-baseline","central").attr("font-size",wt).attr("fill",ye).style("pointer-events","none").style("text-shadow","0 0 3px #fff, 0 0 3px #fff").attr("opacity",o?1:0);if(f.each((g,m,x)=>{vp(x[m],g.name,g.labelX)}),o){const g=this.group;f.each(function(m){const x=this,v=g.select(`[data-venn-sets="${m.sets.join("_")}"]`).node(),b=v==null?void 0:v.querySelector("path");if(b)try{const k=x.getBBox(),M=b.getBBox(),C=k.width<=M.width*.95&&k.height<=M.height*.95;x.setAttribute("opacity",C?"1":"0"),x.__autoHidden=!C}catch{}})}}layoutSets(t,e,i,r,o,s,a,l,c){var P,S;const h=t.length,f=t.map(w=>w.sets[0]),u=t.map(w=>s*Math.sqrt((w.value||w.y||1)/a)),d=new Map;for(const w of e){if(((P=w.sets)==null?void 0:P.length)!==2)continue;const[A,T]=w.sets,R=f.indexOf(A),F=f.indexOf(T);if(R<0||F<0)continue;const D=w.value||w.y||0;if(D<=0)d.set(`${R}-${F}`,u[R]+u[F]+5);else{const z=Math.PI*s*s*(D/a);d.set(`${R}-${F}`,this.findDistance(u[R],u[F],z))}}const p=new Array(h),y=new Set,g=new Array(h).fill(0);for(const w of e){if(((S=w.sets)==null?void 0:S.length)!==2)continue;const A=w.value||w.y||0;for(const T of w.sets){const R=f.indexOf(T);R>=0&&(g[R]+=A)}}const m=Array.from({length:h},(w,A)=>A).sort((w,A)=>g[A]-g[w]);p[m[0]]=[0,0],y.add(m[0]);for(let w=1;w<h;w++){const A=m[w];let T=[0,0],R=1/0;const F=[];for(const D of y){const z=D<A?`${D}-${A}`:`${A}-${D}`,B=d.get(z)??(u[D]+u[A])*1.1,[H,J]=p[D];for(let X=0;X<12;X++){const j=2*Math.PI*X/12;F.push([H+B*Math.cos(j),J+B*Math.sin(j)])}}for(const[D,z]of F){let B=0;for(const H of y){const J=H<A?`${H}-${A}`:`${A}-${H}`,X=d.get(J)??(u[H]+u[A])*1.1,j=Math.sqrt((D-p[H][0])**2+(z-p[H][1])**2);B+=(j-X)**2}B<R&&(R=B,T=[D,z])}p[A]=T,y.add(A)}h>=3&&this.optimizePositions(p,u,d,h);let x=1/0,v=-1/0,b=1/0,k=-1/0;for(let w=0;w<h;w++)x=Math.min(x,p[w][0]-u[w]),v=Math.max(v,p[w][0]+u[w]),b=Math.min(b,p[w][1]-u[w]),k=Math.max(k,p[w][1]+u[w]);const M=v-x||1,C=k-b||1,L=c?c.width*.95:s*2,_=c?c.height*.95:s*2,$=Math.min(L/M,_/C),I=(x+v)/2,E=(b+k)/2;for(let w=0;w<h;w++){const A=r+(p[w][0]-I)*$,T=o+(p[w][1]-E)*$,R=u[w]*$;i.set(f[w],{id:f[w],cx:A,cy:T,r:R,color:t[w].color||xp[w%xp.length]})}}optimizePositions(t,e,i,r){const o=u=>{let d=0;for(let p=0;p<r;p++)for(let y=p+1;y<r;y++){const g=`${p}-${y}`,m=i.get(g)??(e[p]+e[y])*1.1,x=u[p*2]-u[y*2],v=u[p*2+1]-u[y*2+1],b=Math.sqrt(x*x+v*v);d+=(b-m)**2}return d},s=new Array(r*2);for(let u=0;u<r;u++)s[u*2]=t[u][0],s[u*2+1]=t[u][1];const a=r*2,l=[s.slice()];for(let u=0;u<a;u++){const d=s.slice();d[u]+=e[Math.floor(u/2)]*.3,l.push(d)}const c=l.map(u=>o(u));for(let u=0;u<200;u++){let d=0,p=0;for(let x=1;x<=a;x++)c[x]<c[d]&&(d=x),c[x]>c[p]&&(p=x);if(c[p]-c[d]<.01)break;const y=new Array(a).fill(0);for(let x=0;x<=a;x++)if(x!==p)for(let v=0;v<a;v++)y[v]+=l[x][v];for(let x=0;x<a;x++)y[x]/=a;const g=y.map((x,v)=>2*x-l[p][v]),m=o(g);if(m<c[d]){const x=y.map((b,k)=>3*b-2*l[p][k]),v=o(x);v<m?(l[p]=x,c[p]=v):(l[p]=g,c[p]=m)}else if(m<c[p])l[p]=g,c[p]=m;else{const x=y.map((b,k)=>.5*(b+l[p][k])),v=o(x);if(v<c[p])l[p]=x,c[p]=v;else for(let b=0;b<=a;b++)if(b!==d){for(let k=0;k<a;k++)l[b][k]=.5*(l[d][k]+l[b][k]);c[b]=o(l[b])}}}let h=0;for(let u=1;u<=a;u++)c[u]<c[h]&&(h=u);const f=l[h];for(let u=0;u<r;u++)t[u]=[f[u*2],f[u*2+1]]}circlePath(t,e,i){return`M${t-i},${e}A${i},${i},0,1,1,${t+i},${e}A${i},${i},0,1,1,${t-i},${e}Z`}lensPath(t,e){const i=e.cx-t.cx,r=e.cy-t.cy,o=Math.sqrt(i*i+r*r);if(o>=t.r+e.r)return null;if(o<=Math.abs(t.r-e.r)){const m=t.r<e.r?t:e;return{path:this.circlePath(m.cx,m.cy,m.r),cx:m.cx,cy:m.cy}}const s=(t.r*t.r-e.r*e.r+o*o)/(2*o),a=Math.sqrt(t.r*t.r-s*s),l=t.cx+s*i/o,c=t.cy+s*r/o,h=l+a*r/o,f=c-a*i/o,u=l-a*r/o,d=c+a*i/o,p=s<0?1:0,y=o-s<0?1:0;return{path:`M${h},${f}A${t.r},${t.r},0,${p},1,${u},${d}A${e.r},${e.r},0,${y},1,${h},${f}Z`,cx:l,cy:c}}triIntersectionPath(t,e,i){const r=this.circleIntersectionPoints(t,e),o=this.circleIntersectionPoints(t,i),s=this.circleIntersectionPoints(e,i);if(!r||!o||!s)return null;const l=[...r,...o,...s].filter(u=>this.insideCircle(u,t)&&this.insideCircle(u,e)&&this.insideCircle(u,i));if(l.length<3)return null;const c=l.reduce((u,d)=>u+d[0],0)/l.length,h=l.reduce((u,d)=>u+d[1],0)/l.length;l.sort((u,d)=>Math.atan2(u[1]-h,u[0]-c)-Math.atan2(d[1]-h,d[0]-c));let f=`M${l[0][0]},${l[0][1]}`;for(let u=0;u<l.length;u++){const d=l[u],p=l[(u+1)%l.length],y=this.findArcCircle(d,p,[t,e,i]);y?f+=`A${y.r},${y.r},0,0,1,${p[0]},${p[1]}`:f+=`L${p[0]},${p[1]}`}return f+="Z",{path:f,cx:c,cy:h}}circleIntersectionPoints(t,e){const i=e.cx-t.cx,r=e.cy-t.cy,o=Math.sqrt(i*i+r*r);if(o>=t.r+e.r||o<=Math.abs(t.r-e.r))return null;const s=(t.r*t.r-e.r*e.r+o*o)/(2*o),a=Math.sqrt(Math.max(0,t.r*t.r-s*s)),l=t.cx+s*i/o,c=t.cy+s*r/o;return[[l+a*r/o,c-a*i/o],[l-a*r/o,c+a*i/o]]}insideCircle(t,e){const i=t[0]-e.cx,r=t[1]-e.cy;return i*i+r*r<=(e.r+.5)*(e.r+.5)}findArcCircle(t,e,i){const r=(t[0]+e[0])/2,o=(t[1]+e[1])/2;for(const s of i){const a=Math.sqrt((t[0]-s.cx)**2+(t[1]-s.cy)**2),l=Math.sqrt((e[0]-s.cx)**2+(e[1]-s.cy)**2),c=Math.sqrt((r-s.cx)**2+(o-s.cy)**2);if(Math.abs(a-s.r)<1&&Math.abs(l-s.r)<1&&c<=s.r+1)return s}return null}blendColors(...t){let e=0,i=0,r=0;for(const s of t){const a=Ye(oe(s)||s);e+=a.r,i+=a.g,r+=a.b}const o=t.length||1;return Ye(Math.round(e/o*.85),Math.round(i/o*.85),Math.round(r/o*.85)).formatHex()}findDistance(t,e,i){if(i<=0)return t+e+10;const r=Math.PI*Math.min(t,e)**2;if(i>=r)return Math.abs(t-e);let o=Math.abs(t-e),s=t+e;for(let a=0;a<50;a++){const l=(o+s)/2;this.lensArea(t,e,l)>i?o=l:s=l}return(o+s)/2}lensArea(t,e,i){if(i>=t+e)return 0;if(i<=Math.abs(t-e))return Math.PI*Math.min(t,e)**2;const r=(t*t-e*e+i*i)/(2*i),o=t*t-r*r;return o<0?0:t*t*Math.acos(r/t)-r*Math.sqrt(o)+e*e*Math.acos((i-r)/e)-(i-r)*Math.sqrt(e*e-(i-r)*(i-r))}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function AM(n,t=0){return n===void 0?t:typeof n=="number"?n:n.radius??t}const SM=["#7cb5ec","#434348","#90ed7d","#f7a35c","#8085e9","#f15c80","#e4d354","#2b908f","#f45b5b","#91e8e1","#7798bf","#aaeeee","#ff0066","#eeaaee","#55bf3b","#df5353","#7798bf","#aaeeee"];class _M extends Ut{constructor(t){super(t),this.keyframes=[],this.currentFrameIndex=0,this.colorMap=new Map,this.timer=null,this.playing=!1,this.controlsEl=null,this.playBtn=null,this.rangeInput=null,this.rangeLabel=null}processData(){var o;const t=this.config.data;if(!Array.isArray(t))return;this.keyframes=t.filter(s=>s&&s.date&&Array.isArray(s.values));const e=new Set;for(const s of this.keyframes)for(const a of s.values)e.add(a.name);const i=this.config.colors||((o=this.context)==null?void 0:o.colors)||SM;let r=0;for(const s of e)this.colorMap.has(s)||(this.colorMap.set(s,i[r%i.length]),r++)}render(){if(this.keyframes.length===0)return;const{plotArea:t}=this.context,e=this.config,i=40,r=30;this.axisGroup=this.group.append("g").attr("class","katucharts-race-axis").attr("transform",`translate(0,${r})`),this.barsGroup=this.group.append("g").attr("class","katucharts-race-bars").attr("transform",`translate(0,${r+5})`),this.tickerText=this.group.append("text").attr("class","katucharts-race-ticker").attr("x",t.width-10).attr("y",t.height-i-10).attr("text-anchor","end").attr("font-size",e.tickerFontSize||"48px").attr("font-weight","bold").attr("fill",e.tickerColor||"#ddd").style("pointer-events","none"),this.renderControls(),this.currentFrameIndex=0,this.renderFrame(0,!1),e.autoPlay!==!1&&this.play()}renderControls(){var e,i,r;const t=(i=(e=this.group.node())==null?void 0:e.closest("svg"))==null?void 0:i.parentElement;t&&(this.controlsEl=document.createElement("div"),this.controlsEl.style.cssText="position:absolute;bottom:8px;left:12px;right:12px;display:flex;align-items:center;gap:8px;z-index:10;",this.playBtn=document.createElement("button"),this.playBtn.innerHTML=this.pauseIcon(),this.playBtn.style.cssText="width:32px;height:32px;border:none;border-radius:50%;background:#2f7ed8;color:#fff;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;box-shadow:0 1px 3px rgba(0,0,0,0.2);transition:background 0.15s;",this.playBtn.onmouseenter=()=>{this.playBtn&&(this.playBtn.style.background="#1a5fa8")},this.playBtn.onmouseleave=()=>{this.playBtn&&(this.playBtn.style.background="#2f7ed8")},this.playBtn.onclick=()=>{this.playing?this.pause():this.currentFrameIndex>=this.keyframes.length-1?this.restart():this.play()},this.rangeInput=document.createElement("input"),this.rangeInput.type="range",this.rangeInput.min="0",this.rangeInput.max=String(this.keyframes.length-1),this.rangeInput.value="0",this.rangeInput.style.cssText="flex:1;height:4px;cursor:pointer;accent-color:#2f7ed8;",this.rangeInput.oninput=()=>{const o=parseInt(this.rangeInput.value,10),s=this.playing;s&&this.pause(),this.goToFrame(o),s&&this.play()},this.rangeLabel=document.createElement("span"),this.rangeLabel.style.cssText='font-size:11px;color:#666;font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;min-width:30px;text-align:right;flex-shrink:0;',this.rangeLabel.textContent=((r=this.keyframes[0])==null?void 0:r.date)||"",this.controlsEl.appendChild(this.playBtn),this.controlsEl.appendChild(this.rangeInput),this.controlsEl.appendChild(this.rangeLabel),t.appendChild(this.controlsEl))}updateControls(){this.rangeInput&&(this.rangeInput.value=String(this.currentFrameIndex)),this.rangeLabel&&this.keyframes[this.currentFrameIndex]&&(this.rangeLabel.textContent=this.keyframes[this.currentFrameIndex].date),this.playBtn&&(this.playBtn.innerHTML=this.playing?this.pauseIcon():this.playIcon())}playIcon(){return'<svg width="14" height="14" viewBox="0 0 14 14"><polygon points="3,1 12,7 3,13" fill="currentColor"/></svg>'}pauseIcon(){return'<svg width="14" height="14" viewBox="0 0 14 14"><rect x="2" y="1" width="3.5" height="12" rx="0.5" fill="currentColor"/><rect x="8.5" y="1" width="3.5" height="12" rx="0.5" fill="currentColor"/></svg>'}renderFrame(t,e){if(t<0||t>=this.keyframes.length)return;const{plotArea:i}=this.context,r=this.config,o=r.barsToShow??12,s=r.barPadding??.1,a=AM(r.borderRadius,3),l=r.frameDuration??500,c=e?r.transitionDuration??l:0,u=i.height-35-40-20,d=this.keyframes[t],y=[...d.values].sort((L,_)=>_.value-L.value).slice(0,o),g=y.length>0?y[0].value:1;this.valueScale=we().domain([0,g*1.1]).range([0,i.width-80]),this.renderAxis(c);const m=u/o*(1-s),x=u/o,v=L=>L.name,b=this.barsGroup.selectAll(".katucharts-race-bar").data(y,v),k=b.enter().append("g").attr("class","katucharts-race-bar").attr("transform",(L,_)=>`translate(0,${e?u+m:_*x})`).style("opacity",e?0:1);k.append("rect").attr("height",m).attr("rx",a).attr("width",L=>e?0:Math.max(0,this.valueScale(L.value))).attr("fill",L=>this.colorMap.get(L.name)||"#999"),k.append("text").attr("class","katucharts-race-label").attr("x",6).attr("y",m/2).attr("dy","0.35em").attr("fill","#fff").attr("font-weight","bold").attr("font-size",wt).style("pointer-events","none").text(L=>L.name),k.append("text").attr("class","katucharts-race-value").attr("y",m/2).attr("dy","0.35em").attr("fill",ye).attr("font-weight","bold").attr("font-size",wt).style("pointer-events","none").attr("data-value",L=>L.value).attr("x",L=>Math.max(0,this.valueScale(L.value))+5).text(L=>L.value.toLocaleString());const M=k.merge(b);c>0?(M.transition().duration(c).ease(kr).attr("transform",(L,_)=>`translate(0,${_*x})`).style("opacity",1),M.select("rect").transition().duration(c).ease(kr).attr("width",L=>Math.max(0,this.valueScale(L.value))).attr("fill",L=>this.colorMap.get(L.name)||"#999"),M.select(".katucharts-race-value").transition().duration(c).ease(kr).attr("x",L=>Math.max(0,this.valueScale(L.value))+5).tween("text",function(L){const _=this,$=parseFloat(_.getAttribute("data-value")||"0"),I=L.value;return E=>{const P=Math.round($+(I-$)*E);_.textContent=P.toLocaleString(),_.setAttribute("data-value",String(P))}})):(M.attr("transform",(L,_)=>`translate(0,${_*x})`).style("opacity",1),M.select("rect").attr("width",L=>Math.max(0,this.valueScale(L.value))).attr("fill",L=>this.colorMap.get(L.name)||"#999"),M.select(".katucharts-race-value").attr("x",L=>Math.max(0,this.valueScale(L.value))+5).attr("data-value",L=>L.value).text(L=>L.value.toLocaleString())),M.select(".katucharts-race-label").style("display",L=>this.valueScale(L.value)<50?"none":"");const C=b.exit();c>0?C.transition().duration(c).ease(kr).attr("transform",`translate(0,${u+m})`).style("opacity",0).remove():C.remove(),this.tickerText.text(d.date),this.updateControls(),this.attachBarHoverEffects(M,m)}renderAxis(t){const e=Na(this.valueScale).ticks(5).tickSize(-this.context.plotArea.height+110).tickFormat(i=>{const r=i;return r>=1e9?(r/1e9).toFixed(1)+"B":r>=1e6?(r/1e6).toFixed(1)+"M":r>=1e3?(r/1e3).toFixed(1)+"K":r.toString()});t>0?this.axisGroup.transition().duration(t).ease(kr).call(e):this.axisGroup.call(e),this.axisGroup.select(".domain").remove(),this.axisGroup.selectAll(".tick line").attr("stroke","#e0e0e0").attr("stroke-dasharray","2,2"),this.axisGroup.selectAll(".tick text").attr("fill",ye).attr("font-size",wt)}attachBarHoverEffects(t,e){const i=this;t.style("cursor","pointer").on("mouseover",function(r,o){const a=rt(this).select("rect"),l=a.attr("fill");a.attr("data-orig-fill",l),a.attr("fill",i.brightenColor(l,.1)),a.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),t.filter(c=>c.name!==o.name).style("opacity","0.5"),i.context.events.emit("point:mouseover",{point:{name:o.name,y:o.value},index:0,series:i,event:r,plotX:i.valueScale(o.value),plotY:0})}).on("mouseout",function(r,o){const a=rt(this).select("rect"),l=a.attr("data-orig-fill")||"";a.attr("fill",l),a.style("filter",""),t.style("opacity",""),i.context.events.emit("point:mouseout",{point:{name:o.name,y:o.value},index:0,series:i,event:r})})}play(){if(this.playing)return;this.playing=!0,this.updateControls();const t=this.config,e=t.frameDuration??500;this.timer=setInterval(()=>{if(this.currentFrameIndex++,this.currentFrameIndex>=this.keyframes.length)if(t.loop)this.currentFrameIndex=0;else{this.currentFrameIndex=this.keyframes.length-1,this.pause();return}this.renderFrame(this.currentFrameIndex,!0)},e)}pause(){this.playing=!1,this.timer!==null&&(clearInterval(this.timer),this.timer=null),this.updateControls()}restart(){this.pause(),this.currentFrameIndex=0,this.renderFrame(0,!0),this.play()}goToFrame(t){t<0||t>=this.keyframes.length||(this.currentFrameIndex=t,this.renderFrame(t,!0))}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}destroy(){this.pause(),this.controlsEl&&(this.controlsEl.remove(),this.controlsEl=null),super.destroy()}brightenColor(t,e){const i=t.match(/^#([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})$/i);if(i){const r=Math.min(255,parseInt(i[1],16)+Math.round(255*e)),o=Math.min(255,parseInt(i[2],16)+Math.round(255*e)),s=Math.min(255,parseInt(i[3],16)+Math.round(255*e));return`rgb(${r},${o},${s})`}return t}}class CM extends Ut{constructor(t){super(t),t.clip=!1}render(){var _,$,I;const{plotArea:t,colors:e}=this.context,i=this.data||[];if(!i.length)return;const r=this.config.layout==="vertical"?"vertical":"horizontal",o=this.config.link||{},s=((_=this.config.marker)==null?void 0:_.radius)??6,a=o.color||"#cccccc",l=o.lineWidth??1,c=this.config.layoutAlgorithm==="cluster",h=this.config.levels||[],f=this.config.dataLabels||{},u=(($=f.style)==null?void 0:$.fontSize)||wt,d=f.color||((I=f.style)==null?void 0:I.color)||ye,p=this.buildRoot(i);if(!p)return;const y=r==="horizontal"?[t.height,t.width]:[t.width,t.height],g=c?Pw():ik();g.size(y),g(p);const m=E=>r==="horizontal"?E.y:E.x,x=E=>r==="horizontal"?E.x:E.y,v=r==="horizontal"?C2().x(E=>m(E)).y(E=>x(E)):P2().x(E=>m(E)).y(E=>x(E)),b=this.group.append("g").attr("class","katucharts-treegraph"),k=p.descendants(),M=p.links(),C=E=>{const P=h.find(S=>S.level===E);return P!=null&&P.color?P.color:e[E%Math.max(1,e.length)]||"#2f7ed8"};b.append("g").attr("class","katucharts-treegraph-links").selectAll("path").data(M).join("path").attr("d",E=>v(E)).attr("fill","none").attr("stroke",a).attr("stroke-width",l);const L=b.append("g").attr("class","katucharts-treegraph-nodes").selectAll("g").data(k).join("g").attr("transform",E=>`translate(${m(E)},${x(E)})`);L.append("circle").attr("r",s).attr("fill",E=>{var P;return((P=E.data)==null?void 0:P.color)||C(E.depth)}).attr("stroke",this.autoBorderColor()).attr("stroke-width",1),f.enabled!==!1&&L.append("text").attr("dy",r==="horizontal"?"0.32em":s+12).attr("x",r==="horizontal"?E=>E.children?-(s+4):s+4:0).attr("text-anchor",r==="horizontal"?E=>E.children?"end":"start":"middle").attr("font-size",u).attr("fill",d).style("pointer-events","none").text(E=>{var P,S;return((P=E.data)==null?void 0:P.name)??((S=E.data)==null?void 0:S.id)??""}),this.context.animate&&b.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}buildRoot(t){if(t.some(o=>o.children&&o.children.length>0))return qi({name:"root",children:t},o=>o.children);const i=t.filter(o=>o.id!==void 0&&o.id!==null);if(!i.length)return null;if(!(i.filter(o=>!o.parent).length<=1)){const o="__katu_treegraph_root__",s=i.map(a=>({...a,parent:a.parent||o}));return s.push({id:o,parent:"",name:""}),Ec().id(a=>String(a.id)).parentId(a=>a.parent?String(a.parent):null)(s)}return Ec().id(o=>String(o.id)).parentId(o=>o.parent?String(o.parent):null)(i)}getDataExtents(){return{xMin:1/0,xMax:-1/0,yMin:1/0,yMax:-1/0}}}class PM extends Ut{constructor(t){super(t),t.clip=!1}render(){var b,k,M,C,L;const{plotArea:t,colors:e}=this.context,i=this.data||[];if(!i.length)return;const r=this.config.minFontSize??8,o=this.config.maxFontSize??50,s=this.config.rotation||{},a=Array.isArray(s.orientations)?s.orientations:s.from!==void 0&&s.to!==void 0?[s.from,s.to]:[0],l=((k=(b=this.config.dataLabels)==null?void 0:b.style)==null?void 0:k.fontFamily)||"sans-serif",c=((M=this.config.dataLabels)==null?void 0:M.color)||((L=(C=this.config.dataLabels)==null?void 0:C.style)==null?void 0:L.color)||ye,h=[...i].filter(_=>_&&_.name&&typeof _.weight=="number"&&_.weight>0).sort((_,$)=>$.weight-_.weight);if(!h.length)return;const f=h[h.length-1].weight,u=h[0].weight,d=_=>{if(u===f)return(r+o)/2;const $=(_-f)/(u-f);return r+$*(o-r)},p=t.width/2,y=t.height/2,g=[],m=this.group.append("g").attr("class","katucharts-wordcloud"),{measure:x,dispose:v}=this.createMeasurer(m.node(),l);try{h.forEach((_,$)=>{const I=d(_.weight),E=a[$%a.length]??0,P=x(_.name,I),S=P.width,w=P.height,A=this.findSpiralSpot(p,y,S,w,E,g,t.width,t.height);A&&g.push({x:A.x,y:A.y,width:S,height:w,word:_,rotation:E,fontSize:I})})}finally{v()}g.forEach((_,$)=>{const I=_.word.color||e[$%Math.max(1,e.length)]||c;m.append("text").attr("x",_.x).attr("y",_.y).attr("text-anchor","middle").attr("dominant-baseline","central").attr("transform",_.rotation?`rotate(${_.rotation},${_.x},${_.y})`:null).attr("font-size",_.fontSize).attr("font-family",l).attr("fill",I).style("pointer-events","none").text(_.word.name)}),this.context.animate&&m.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}createMeasurer(t,e){const i=t.ownerSVGElement||t,o=document.createElementNS("http://www.w3.org/2000/svg","text");return o.setAttribute("visibility","hidden"),o.setAttribute("font-family",e),i.appendChild(o),{measure:(a,l)=>{o.setAttribute("font-size",String(l)),o.textContent=a;try{const c=o.getBBox();return{width:c.width,height:c.height||l}}catch{return{width:a.length*l*.55,height:l}}},dispose:()=>o.remove()}}findSpiralSpot(t,e,i,r,o,s,a,l){const c=o%180!==0,h=c?r:i,f=c?i:r,u=.2,d=4*Math.PI*6;for(let p=0;p<d;p+=u){const y=4*p,g=t+y*Math.cos(p),m=e+y*Math.sin(p);if(g-h/2<0||g+h/2>a||m-f/2<0||m+f/2>l)continue;if(!s.some(v=>{const b=v.rotation%180!==0?v.height:v.width,k=v.rotation%180!==0?v.width:v.height;return Math.abs(g-v.x)<(h+b)/2+2&&Math.abs(m-v.y)<(f+k)/2+2}))return{x:g,y:m}}return null}getDataExtents(){return{xMin:1/0,xMax:-1/0,yMin:1/0,yMax:-1/0}}}function wp(){Tt.registerType("waterfall",vw),Tt.registerType("funnel",Qf),Tt.registerType("pyramid",Z2),Tt.registerType("treemap",hk),Tt.registerType("sunburst",uk),Tt.registerType("gauge",fk),Tt.registerType("solidgauge",dk),Tt.registerType("polar",fd),Tt.registerType("radar",fd),Tt.registerType("timeline",yk),Tt.registerType("gantt",xk),Tt.registerType("map",xM),Tt.registerType("mappoint",bM),Tt.registerType("flowmap",vM),Tt.registerType("venn",MM),Tt.registerType("barchartrace",_M),Tt.registerType("treegraph",CM),Tt.registerType("wordcloud",PM)}class EM extends Ut{constructor(t){super(t),this.selectedIndices=new Set}getCandleStyle(t){const e=t.isUp?t.upLineColor:t.downLineColor;return{fill:t.isUp?t.upColor:t.downColor,stroke:e,wick:e}}getCandleClass(){return"katucharts-candlestick"}render(){var L,_,$,I,E,P,S,w;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.context.animate,o=this.data,s=this.applyDataGrouping(o),a=this.config.pointRange,l=this.config.groupPadding??.2,c=this.config.pointPadding??.1,h=l+c,f=this.config.maxPointWidth??1/0,u=a?Math.max(1,Math.min(f,i.width/Math.max(1,((L=t.domain)==null?void 0:L[1])-((_=t.domain)==null?void 0:_[0])||s.length)*a*(1-h))):Math.max(1,Math.min(f,i.width/s.length*(1-h))),d=this.config.pointWidth??u,p=this.config.color||"#f45b5b",y=this.config.upColor||"#2f7ed8",g=this.config.lineColor||p,m=this.config.upLineColor||y,x=this.config.lineWidth??1,v=((I=($=this.config.states)==null?void 0:$.inactive)==null?void 0:I.opacity)??.4,b=this.config.allowPointSelect===!0,k=(P=(E=this.config.states)==null?void 0:E.select)==null?void 0:P.color,M=(w=(S=this.config.states)==null?void 0:S.select)==null?void 0:w.borderColor,C=[];for(let A=0;A<s.length;A++){const T=s[A];if(T.y===null&&T.open===void 0)continue;const R=T.open??T.y??0,F=T.high??R,D=T.low??R,z=T.close??R,B=t.getPixelForValue(T.x??A),H=z>=R,J=this.getCandleStyle({open:R,high:F,low:D,close:z,isUp:H,index:A,data:s,upColor:y,downColor:p,upLineColor:m,downLineColor:g}),X=J.fill,j=J.stroke,W=this.group.append("g").attr("class",this.getCandleClass()).style("cursor",this.config.cursor||"pointer");C.push(W);const U=W.append("line").attr("x1",B).attr("x2",B).attr("stroke",J.wick).attr("stroke-width",x),G=H?z:R,N=H?R:z,Y=e.getPixelForValue(G),O=Math.max(1,Math.abs(e.getPixelForValue(N)-e.getPixelForValue(G))),ct=W.append("rect").attr("x",B-d/2).attr("width",d).attr("stroke",j).attr("stroke-width",x).attr("rx",2);if(r){const it=e.getPixelForValue((F+D)/2),ft=Ce(A,0,Wt,s.length);U.attr("y1",it).attr("y2",it).transition().duration(bt).ease(pt).delay(ft).attr("y1",e.getPixelForValue(F)).attr("y2",e.getPixelForValue(D)),ct.attr("y",it).attr("height",0).attr("fill",X).transition().duration(bt).ease(pt).delay(ft).attr("y",Y).attr("height",O)}else U.attr("y1",e.getPixelForValue(F)).attr("y2",e.getPixelForValue(D)),ct.attr("y",Y).attr("height",O).attr("fill",X);this.config.enableMouseTracking!==!1&&W.on("mouseover",it=>{var dt,at,ot,q;const ft=((at=(dt=this.config.states)==null?void 0:dt.hover)==null?void 0:at.lineWidthPlus)??2;W.select("rect").transition("size").duration(K).ease(Z).attr("x",B-d*.7).attr("width",d*1.4),W.select("line").transition("size").duration(K).ease(Z).attr("stroke-width",x+ft),W.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),C.forEach(st=>st.interrupt("highlight")),C.forEach(st=>st.attr("opacity",1)),C.forEach((st,kt)=>{kt!==A&&st.transition("highlight").duration(K).ease(Z).attr("opacity",v)}),this.context.events.emit("point:mouseover",{point:{...T,open:R,high:F,low:D,close:z},index:A,series:this,event:it,plotX:B,plotY:e.getPixelForValue((F+D)/2)}),(q=(ot=T.events)==null?void 0:ot.mouseOver)==null||q.call(T,it)}).on("mouseout",it=>{var ft,dt;W.select("rect").transition("size").duration(K).ease(Z).attr("x",B-d/2).attr("width",d),W.select("line").transition("size").duration(K).ease(Z).attr("stroke-width",x),W.style("filter",""),C.forEach(at=>at.interrupt("highlight")),C.forEach(at=>at.transition("highlight").duration(K).ease(Z).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:T,index:A,series:this,event:it}),(dt=(ft=T.events)==null?void 0:ft.mouseOut)==null||dt.call(T,it)}).on("click",it=>{var ft,dt,at,ot,q,st,kt,Et;b&&(this.selectedIndices.has(A)?(this.selectedIndices.delete(A),W.select("rect").attr("stroke-width",x),(dt=(ft=T.events)==null?void 0:ft.unselect)==null||dt.call(T,it)):(this.selectedIndices.add(A),W.select("rect").attr("stroke",M||"#000").attr("stroke-width",k?2:x+1),k&&W.select("rect").attr("fill",k),(ot=(at=T.events)==null?void 0:at.select)==null||ot.call(T,it))),this.context.events.emit("point:click",{point:T,index:A,series:this,event:it}),(st=(q=T.events)==null?void 0:q.click)==null||st.call(T,it),(Et=(kt=this.config.events)==null?void 0:kt.click)==null||Et.call(this,it)})}this.renderCandlestickLabels(s,t,e)}renderCandlestickLabels(t,e,i){var a,l;const r=this.config.dataLabels;if(!(r!=null&&r.enabled))return;const o=((a=r.style)==null?void 0:a.fontSize)||wt,s=r.color||((l=r.style)==null?void 0:l.color)||ye;t.forEach((c,h)=>{if(c.y===null&&c.open===void 0)return;const f=c.high??c.open??c.y??0,u=e.getPixelForValue(c.x??h),d=i.getPixelForValue(f);let p;r.formatter?p=r.formatter.call({point:c,series:{name:this.config.name},x:c.x,y:c.y}):r.format?p=fe(Zt(r.format,{point:c,series:{name:this.config.name},x:c.x,y:c.y})):p=String(c.close??c.y??""),this.group.append("text").attr("class","katucharts-candlestick-label").attr("x",u+(r.x??0)).attr("y",d-6+(r.y??0)).attr("text-anchor","middle").attr("font-size",o).attr("fill",s).style("pointer-events","none").text(p)})}applyDataGrouping(t){const e=this.config.dataGrouping;if(!(e!=null&&e.enabled)||!e.units||t.length===0)return t;const i=e.groupPixelWidth??10,{plotArea:r}=this.context,o=r.width/Math.max(1,t.length);if(o>=i)return t;const s=Math.ceil(i/o),a=[];for(let l=0;l<t.length;l+=s){const c=t.slice(l,l+s);if(c.length===0)continue;const h=c[0].open??c[0].y??0,f=c[c.length-1].close??c[c.length-1].y??0;let u=-1/0,d=1/0;for(const p of c)u=Math.max(u,p.high??p.y??0),d=Math.min(d,p.low??p.y??0);a.push({...c[0],x:c[0].x,open:h,high:u,low:d,close:f,y:f})}return a}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data){const s=o.x??0;t=Math.min(t,s),e=Math.max(e,s);const a=o.high??o.y??0,l=o.low??o.y??0;i=Math.min(i,l),r=Math.max(r,a)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}class TM extends Ut{constructor(t){super(t)}render(){var f,u;const{xAxis:t,yAxis:e,plotArea:i}=this.context,r=this.context.animate,o=this.data,s=Math.max(2,Math.min(10,i.width/o.length*.3)),a=this.config.color||"#f45b5b",l=this.config.upColor||"#2f7ed8",c=((u=(f=this.config.states)==null?void 0:f.inactive)==null?void 0:u.opacity)??.4,h=[];for(let d=0;d<o.length;d++){const p=o[d];if(p.y===null&&p.open===void 0)continue;const y=p.open??p.y??0,g=p.high??y,m=p.low??y,x=p.close??y,v=t.getPixelForValue(p.x??d),b=x>=y?l:a,k=this.group.append("g").attr("class","katucharts-ohlc").style("cursor",this.config.cursor||"pointer");h.push(k),r&&k.attr("opacity",0).transition().duration(bt).ease(pt).delay(Ce(d,0,Wt,o.length)).attr("opacity",1),k.append("line").attr("x1",v).attr("x2",v).attr("y1",e.getPixelForValue(g)).attr("y2",e.getPixelForValue(m)).attr("stroke",b).attr("stroke-width",1.5),k.append("line").attr("x1",v-s).attr("x2",v).attr("y1",e.getPixelForValue(y)).attr("y2",e.getPixelForValue(y)).attr("stroke",b).attr("stroke-width",1.5),k.append("line").attr("x1",v).attr("x2",v+s).attr("y1",e.getPixelForValue(x)).attr("y2",e.getPixelForValue(x)).attr("stroke",b).attr("stroke-width",1.5),this.config.enableMouseTracking!==!1&&k.on("mouseover",M=>{var C,L;k.selectAll("line").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",3),k.style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.25))"),h.forEach(_=>_.interrupt("highlight")),h.forEach(_=>_.attr("opacity",1)),h.forEach((_,$)=>{$!==d&&_.transition("highlight").duration(K).ease(Z).attr("opacity",c)}),this.context.events.emit("point:mouseover",{point:{...p,open:y,high:g,low:m,close:x},index:d,series:this,event:M,plotX:v,plotY:e.getPixelForValue((g+m)/2)}),(L=(C=p.events)==null?void 0:C.mouseOver)==null||L.call(p,M)}).on("mouseout",M=>{var C,L;k.selectAll("line").interrupt("hover").transition("hover").duration(K).ease(Z).attr("stroke-width",1.5),k.style("filter",""),h.forEach(_=>_.interrupt("highlight")),h.forEach(_=>_.transition("highlight").duration(K).ease(Z).attr("opacity",1)),this.context.events.emit("point:mouseout",{point:p,index:d,series:this,event:M}),(L=(C=p.events)==null?void 0:C.mouseOut)==null||L.call(p,M)}).on("click",M=>{var C,L,_,$;this.context.events.emit("point:click",{point:p,index:d,series:this,event:M}),(L=(C=p.events)==null?void 0:C.click)==null||L.call(p,M),($=(_=this.config.events)==null?void 0:_.click)==null||$.call(this,M)})}}getDataExtents(){let t=1/0,e=-1/0,i=1/0,r=-1/0;for(const o of this.data){const s=o.x??0;t=Math.min(t,s),e=Math.max(e,s);const a=o.high??o.y??0,l=o.low??o.y??0;i=Math.min(i,l),r=Math.max(r,a)}return{xMin:t,xMax:e,yMin:i,yMax:r}}}function kp(){Tt.registerType("candlestick",EM),Tt.registerType("ohlc",TM)}function Mp(n,t){let e;if(t===void 0)for(const i of n)i!=null&&(e<i||e===void 0&&i>=i)&&(e=i);else{let i=-1;for(let r of n)(r=t(r,++i,n))!=null&&(e<r||e===void 0&&r>=r)&&(e=r)}return e}function $M(n,t){let e;if(t===void 0)for(const i of n)i!=null&&(e>i||e===void 0&&i>=i)&&(e=i);else{let i=-1;for(let r of n)(r=t(r,++i,n))!=null&&(e>r||e===void 0&&r>=r)&&(e=r)}return e}function ll(n,t){let e=0;if(t===void 0)for(let i of n)(i=+i)&&(e+=i);else{let i=-1;for(let r of n)(r=+t(r,++i,n))&&(e+=r)}return e}function LM(n){return n.depth}function Ap(n,t){return n.sourceLinks.length?n.depth:t-1}function Fs(n){return function(){return n}}function Sp(n,t){return Rs(n.source,t.source)||n.index-t.index}function _p(n,t){return Rs(n.target,t.target)||n.index-t.index}function Rs(n,t){return n.y0-t.y0}function hl(n){return n.value}function IM(n){return n.index}function FM(n){return n.nodes}function RM(n){return n.links}function Cp(n,t){const e=n.get(t);if(!e)throw new Error("missing: "+t);return e}function Pp({nodes:n}){for(const t of n){let e=t.y0,i=e;for(const r of t.sourceLinks)r.y0=e+r.width/2,e+=r.width;for(const r of t.targetLinks)r.y1=i+r.width/2,i+=r.width}}function DM(){let n=0,t=0,e=1,i=1,r=24,o=8,s,a=IM,l=Ap,c,h,f=FM,u=RM,d=6;function p(){const w={nodes:f.apply(null,arguments),links:u.apply(null,arguments)};return y(w),g(w),m(w),x(w),k(w),Pp(w),w}p.update=function(w){return Pp(w),w},p.nodeId=function(w){return arguments.length?(a=typeof w=="function"?w:Fs(w),p):a},p.nodeAlign=function(w){return arguments.length?(l=typeof w=="function"?w:Fs(w),p):l},p.nodeSort=function(w){return arguments.length?(c=w,p):c},p.nodeWidth=function(w){return arguments.length?(r=+w,p):r},p.nodePadding=function(w){return arguments.length?(o=s=+w,p):o},p.nodes=function(w){return arguments.length?(f=typeof w=="function"?w:Fs(w),p):f},p.links=function(w){return arguments.length?(u=typeof w=="function"?w:Fs(w),p):u},p.linkSort=function(w){return arguments.length?(h=w,p):h},p.size=function(w){return arguments.length?(n=t=0,e=+w[0],i=+w[1],p):[e-n,i-t]},p.extent=function(w){return arguments.length?(n=+w[0][0],e=+w[1][0],t=+w[0][1],i=+w[1][1],p):[[n,t],[e,i]]},p.iterations=function(w){return arguments.length?(d=+w,p):d};function y({nodes:w,links:A}){for(const[R,F]of w.entries())F.index=R,F.sourceLinks=[],F.targetLinks=[];const T=new Map(w.map((R,F)=>[a(R,F,w),R]));for(const[R,F]of A.entries()){F.index=R;let{source:D,target:z}=F;typeof D!="object"&&(D=F.source=Cp(T,D)),typeof z!="object"&&(z=F.target=Cp(T,z)),D.sourceLinks.push(F),z.targetLinks.push(F)}if(h!=null)for(const{sourceLinks:R,targetLinks:F}of w)R.sort(h),F.sort(h)}function g({nodes:w}){for(const A of w)A.value=A.fixedValue===void 0?Math.max(ll(A.sourceLinks,hl),ll(A.targetLinks,hl)):A.fixedValue}function m({nodes:w}){const A=w.length;let T=new Set(w),R=new Set,F=0;for(;T.size;){for(const D of T){D.depth=F;for(const{target:z}of D.sourceLinks)R.add(z)}if(++F>A)throw new Error("circular link");T=R,R=new Set}}function x({nodes:w}){const A=w.length;let T=new Set(w),R=new Set,F=0;for(;T.size;){for(const D of T){D.height=F;for(const{source:z}of D.targetLinks)R.add(z)}if(++F>A)throw new Error("circular link");T=R,R=new Set}}function v({nodes:w}){const A=Mp(w,F=>F.depth)+1,T=(e-n-r)/(A-1),R=new Array(A);for(const F of w){const D=Math.max(0,Math.min(A-1,Math.floor(l.call(null,F,A))));F.layer=D,F.x0=n+D*T,F.x1=F.x0+r,R[D]?R[D].push(F):R[D]=[F]}if(c)for(const F of R)F.sort(c);return R}function b(w){const A=$M(w,T=>(i-t-(T.length-1)*s)/ll(T,hl));for(const T of w){let R=t;for(const F of T){F.y0=R,F.y1=R+F.value*A,R=F.y1+s;for(const D of F.sourceLinks)D.width=D.value*A}R=(i-R+s)/(T.length+1);for(let F=0;F<T.length;++F){const D=T[F];D.y0+=R*(F+1),D.y1+=R*(F+1)}E(T)}}function k(w){const A=v(w);s=Math.min(o,(i-t)/(Mp(A,T=>T.length)-1)),b(A);for(let T=0;T<d;++T){const R=Math.pow(.99,T),F=Math.max(1-R,(T+1)/d);C(A,R,F),M(A,R,F)}}function M(w,A,T){for(let R=1,F=w.length;R<F;++R){const D=w[R];for(const z of D){let B=0,H=0;for(const{source:X,value:j}of z.targetLinks){let W=j*(z.layer-X.layer);B+=P(X,z)*W,H+=W}if(!(H>0))continue;let J=(B/H-z.y0)*A;z.y0+=J,z.y1+=J,I(z)}c===void 0&&D.sort(Rs),L(D,T)}}function C(w,A,T){for(let R=w.length,F=R-2;F>=0;--F){const D=w[F];for(const z of D){let B=0,H=0;for(const{target:X,value:j}of z.sourceLinks){let W=j*(X.layer-z.layer);B+=S(z,X)*W,H+=W}if(!(H>0))continue;let J=(B/H-z.y0)*A;z.y0+=J,z.y1+=J,I(z)}c===void 0&&D.sort(Rs),L(D,T)}}function L(w,A){const T=w.length>>1,R=w[T];$(w,R.y0-s,T-1,A),_(w,R.y1+s,T+1,A),$(w,i,w.length-1,A),_(w,t,0,A)}function _(w,A,T,R){for(;T<w.length;++T){const F=w[T],D=(A-F.y0)*R;D>1e-6&&(F.y0+=D,F.y1+=D),A=F.y1+s}}function $(w,A,T,R){for(;T>=0;--T){const F=w[T],D=(F.y1-A)*R;D>1e-6&&(F.y0-=D,F.y1-=D),A=F.y0-s}}function I({sourceLinks:w,targetLinks:A}){if(h===void 0){for(const{source:{sourceLinks:T}}of A)T.sort(_p);for(const{target:{targetLinks:T}}of w)T.sort(Sp)}}function E(w){if(h===void 0)for(const{sourceLinks:A,targetLinks:T}of w)A.sort(_p),T.sort(Sp)}function P(w,A){let T=w.y0-(w.sourceLinks.length-1)*s/2;for(const{target:R,width:F}of w.sourceLinks){if(R===A)break;T+=F+s}for(const{source:R,width:F}of A.targetLinks){if(R===w)break;T-=F}return T}function S(w,A){let T=A.y0-(A.targetLinks.length-1)*s/2;for(const{source:R,width:F}of A.targetLinks){if(R===w)break;T+=F+s}for(const{target:R,width:F}of w.sourceLinks){if(R===A)break;T-=F}return T}return p}var ul=Math.PI,fl=2*ul,Ai=1e-6,zM=fl-Ai;function dl(){this._x0=this._y0=this._x1=this._y1=null,this._=""}function Ep(){return new dl}dl.prototype=Ep.prototype={constructor:dl,moveTo:function(n,t){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)},closePath:function(){this._x1!==null&&(this._x1=this._x0,this._y1=this._y0,this._+="Z")},lineTo:function(n,t){this._+="L"+(this._x1=+n)+","+(this._y1=+t)},quadraticCurveTo:function(n,t,e,i){this._+="Q"+ +n+","+ +t+","+(this._x1=+e)+","+(this._y1=+i)},bezierCurveTo:function(n,t,e,i,r,o){this._+="C"+ +n+","+ +t+","+ +e+","+ +i+","+(this._x1=+r)+","+(this._y1=+o)},arcTo:function(n,t,e,i,r){n=+n,t=+t,e=+e,i=+i,r=+r;var o=this._x1,s=this._y1,a=e-n,l=i-t,c=o-n,h=s-t,f=c*c+h*h;if(r<0)throw new Error("negative radius: "+r);if(this._x1===null)this._+="M"+(this._x1=n)+","+(this._y1=t);else if(f>Ai)if(!(Math.abs(h*a-l*c)>Ai)||!r)this._+="L"+(this._x1=n)+","+(this._y1=t);else{var u=e-o,d=i-s,p=a*a+l*l,y=u*u+d*d,g=Math.sqrt(p),m=Math.sqrt(f),x=r*Math.tan((ul-Math.acos((p+f-y)/(2*g*m)))/2),v=x/m,b=x/g;Math.abs(v-1)>Ai&&(this._+="L"+(n+v*c)+","+(t+v*h)),this._+="A"+r+","+r+",0,0,"+ +(h*u>c*d)+","+(this._x1=n+b*a)+","+(this._y1=t+b*l)}},arc:function(n,t,e,i,r,o){n=+n,t=+t,e=+e,o=!!o;var s=e*Math.cos(i),a=e*Math.sin(i),l=n+s,c=t+a,h=1^o,f=o?i-r:r-i;if(e<0)throw new Error("negative radius: "+e);this._x1===null?this._+="M"+l+","+c:(Math.abs(this._x1-l)>Ai||Math.abs(this._y1-c)>Ai)&&(this._+="L"+l+","+c),e&&(f<0&&(f=f%fl+fl),f>zM?this._+="A"+e+","+e+",0,1,"+h+","+(n-s)+","+(t-a)+"A"+e+","+e+",0,1,"+h+","+(this._x1=l)+","+(this._y1=c):f>Ai&&(this._+="A"+e+","+e+",0,"+ +(f>=ul)+","+h+","+(this._x1=n+e*Math.cos(r))+","+(this._y1=t+e*Math.sin(r))))},rect:function(n,t,e,i){this._+="M"+(this._x0=this._x1=+n)+","+(this._y0=this._y1=+t)+"h"+ +e+"v"+ +i+"h"+-e+"Z"},toString:function(){return this._}};function Tp(n){return function(){return n}}function BM(n){return n[0]}function OM(n){return n[1]}var NM=Array.prototype.slice;function WM(n){return n.source}function HM(n){return n.target}function VM(n){var t=WM,e=HM,i=BM,r=OM,o=null;function s(){var a,l=NM.call(arguments),c=t.apply(this,l),h=e.apply(this,l);if(o||(o=a=Ep()),n(o,+i.apply(this,(l[0]=c,l)),+r.apply(this,l),+i.apply(this,(l[0]=h,l)),+r.apply(this,l)),a)return o=null,a+""||null}return s.source=function(a){return arguments.length?(t=a,s):t},s.target=function(a){return arguments.length?(e=a,s):e},s.x=function(a){return arguments.length?(i=typeof a=="function"?a:Tp(+a),s):i},s.y=function(a){return arguments.length?(r=typeof a=="function"?a:Tp(+a),s):r},s.context=function(a){return arguments.length?(o=a??null,s):o},s}function GM(n,t,e,i,r){n.moveTo(t,e),n.bezierCurveTo(t=(t+i)/2,e,t,r,i,r)}function YM(){return VM(GM)}function XM(n){return[n.source.x1,n.y0]}function UM(n){return[n.target.x0,n.y1]}function qM(){return YM().source(XM).target(UM)}const jM=500,ZM=380,KM=280;function JM(n){if(n.endsWith("px"))return parseFloat(n)||12;if(n.endsWith("rem")||n.endsWith("em")){const e=typeof document>"u"?16:parseFloat(getComputedStyle(document.documentElement).fontSize)||16;return(parseFloat(n)||1)*e}const t=parseFloat(n);return Number.isNaN(t)?12:t}class QM extends Ut{getBaseFlowDuration(){return bt*4}constructor(t){super(t)}render(){var Pe,fn,yn,Vn,jr;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=this.getBaseFlowDuration();this.group.selectAll("rect, path, text").interrupt("enter").interrupt("highlight");const{nodes:s,links:a}=this.buildGraph();if(s.length===0)return;const l=t.width<jM,c=t.width<ZM,h=t.width<KM,f=r.nodeWidth,u=f==="auto",d=s.map(V=>typeof V.column=="number"&&Number.isFinite(V.column)?Math.max(0,Math.floor(V.column)):null).filter(V=>V!==null),p=d.length>0,y=p?Math.max(...d):0,g=typeof r.nodePadding=="number"?r.nodePadding:l?Math.max(4,Math.min(10,t.height/40)):10,m=r.linkOpacity??.4,x=r.colorByPoint!==!1,v=r.minLinkWidth??1,b=r.borderWidth??0,k=r.borderColor??"none",M=r.levels||[],C=this.config.dataLabels||{},L=C.enabled!==!1,_=((Pe=C.style)==null?void 0:Pe.fontSize)||wt,$=JM(_),I=c?Math.min($,10):l?Math.min($,12):$,E=`${I}px`,P=C.color||((fn=C.style)==null?void 0:fn.color)||this.autoLabelColor(),S=I*.62,w=V=>C.formatter?String(C.formatter.call({point:{name:V.name||V.id,y:V.value},series:{name:this.config.name},x:V.name||V.id,y:V.value})??""):String(V.name||V.id||""),A=V=>V.length*S,T=(V,tt,lt=2)=>{if(tt<=0)return"";if(A(V)<=tt)return V;const Ft=Math.floor(tt/S)-1;return Ft<lt?"":Ft>=V.length?V:V.slice(0,Ft)+"…"},R=r.nodeAlignment==="left"?LM:Ap,D=h?5:c?8:l?10:14,z=typeof f=="number"?f:20,B=(V,tt,lt,_t)=>{const Ft=Math.max(tt+_t+20,t.width-lt),ze=DM().nodeId(me=>me.id).nodeAlign(R).nodeWidth(_t).nodePadding(V).extent([[tt,0],[Ft,t.height]]),Ee=ze({nodes:[...s],links:[...a]});for(const me of Ee.nodes)if(me.x0<tt){const _n=me.x1-me.x0;me.x0=tt,me.x1=tt+_n}return{gen:ze,graph:Ee}};let H=z;const J=B(g,0,0,H),X=V=>p&&typeof V.column=="number"&&Number.isFinite(V.column)?Math.max(0,Math.floor(V.column)):V.layer??V.depth??0,j=p?y:J.graph.nodes.reduce((V,tt)=>Math.max(V,tt.depth??0),0),W=J.graph.nodes.reduce((V,tt)=>Math.min(V,tt.x0??1/0),1/0),U=p?J.graph.nodes.filter(V=>X(V)===0):J.graph.nodes.filter(V=>(V.x0??1/0)<=W+.5),G=L?Math.max(0,...U.map(V=>A(w(V)))):0,N=L&&l?Math.min(Math.floor(t.width*.08),Math.max(0,G*.18)):0,Y=L&&!h,O=0,ct=Math.max(1,t.width-N-O),it=Math.max(j,0);if(it>0){const tt=(ct-it*(h?8:c?10:l?14:18))/(it+1),lt=Math.max(D,Math.min(z,tt));(typeof f!="number"||l)&&(H=lt)}else typeof f!="number"&&(H=Math.max(D,Math.min(z,ct*.5)));const ft=c?Math.max(2,Math.min(8,H*.35)):0,dt=N+ft,at=O+ft;let{gen:ot,graph:q}=B(g,dt,at,H);const st=new Map;for(const V of q.nodes){const tt=X(V);st.set(tt,(st.get(tt)??0)+1)}const kt=Math.max(1,...st.values());let Et=g;const Mt=typeof r.nodePadding!="number";if(L&&Mt&&kt>1){const V=I*1.3;t.height*.82/(kt-1)>=V&&(Et=Math.max(g,V))}if(kt*Et>t.height&&(Et=Math.max(1,t.height/kt)),Et!==g&&({gen:ot,graph:q}=B(Et,dt,at,H)),u){const V=q.nodes.reduce((lt,_t)=>Math.max(lt,X(_t)),0),tt=Math.max(D,Math.min(20,ct/((V+1)*3)));ot.nodeWidth(tt),q=ot({nodes:[...s],links:[...a]})}if(p){const V=Math.max(1,q.nodes[0]?q.nodes[0].x1-q.nodes[0].x0:H);Et=this.applyExplicitColumnLayout(q,ot,X,y,dt,Math.max(dt+V,t.width-at),t.height,Et,V)}else this.reorderNodesByValueDesc(q,ot,X,t.height,Et);const Ct=new Map,Gt=new Map;for(const V of q.nodes){const tt=X(V);Ct.has(tt)||Ct.set(tt,[]),Ct.get(tt).push(V)}for(const V of q.links){const tt=X(V.source);Gt.has(tt)||Gt.set(tt,[]),Gt.get(tt).push(V)}const Ht=q.nodes.reduce((V,tt)=>Math.max(V,X(tt)),0),Nt=Math.round(o*.22),Kt=Nt,ie=Kt,Lt=Ht*ie+Nt+Kt,Jt=r.centerNodes===!0,de=r.spreadFactor??1;(Jt||de!==1)&&this.centerAndSpreadNodes(q,ot,t.height,de,Et);const je=new Map;for(const V of M)V.level!==void 0&&je.set(V.level,V);const pe=V=>{const tt=V.source?X(V.source):void 0,lt=tt!==void 0?je.get(tt):void 0;return(lt==null?void 0:lt.linkOpacity)??m},Sn=qM(),ti=V=>{if(!c)return Sn(V);const tt=V.source.x1,lt=V.target.x0,_t=V.y0,Ft=V.y1,ze=lt-tt;if(!Number.isFinite(ze)||!Number.isFinite(_t)||!Number.isFinite(Ft))return Sn(V);if(ze<=14)return`M${tt},${_t}L${lt},${Ft}`;if(ze<28){const Ee=Math.max(2,ze*.35);return`M${tt},${_t}C${tt+Ee},${_t} ${lt-Ee},${Ft} ${lt},${Ft}`}return Sn(V)},He=c,hn=He?V=>{const tt=V.source.x1,lt=V.target.x0,_t=V.y0,Ft=V.y1,ze=lt-tt,Ee=Math.max(v,V.width)/2;if(!Number.isFinite(ze)||!Number.isFinite(_t)||!Number.isFinite(Ft))return ti(V);const me=_t-Ee,_n=_t+Ee,Zr=Ft-Ee,ei=Ft+Ee,Gn=Math.max(1,ze*.42);return ze<=2?[`M${tt},${me}`,`L${lt},${Zr}`,`L${lt},${ei}`,`L${tt},${_n}`,"Z"].join(""):[`M${tt},${me}`,`C${tt+Gn},${me} ${lt-Gn},${Zr} ${lt},${Zr}`,`L${lt},${ei}`,`C${lt-Gn},${ei} ${tt+Gn},${_n} ${tt},${_n}`,"Z"].join("")}:ti,Ze=He?"fill-opacity":"stroke-opacity",Ke=r.linkColorMode??"from",Xr=V=>V.source.color||e[q.nodes.indexOf(V.source)%e.length]||"#aaa",Ur=V=>V.target.color||e[q.nodes.indexOf(V.target)%e.length]||"#aaa",qr=this.group.append("defs"),et=`katucharts-sankey-clip-${this.config.index}-${Math.random().toString(36).slice(2,8)}`;qr.append("clipPath").attr("id",et).append("rect").attr("x",0).attr("y",0).attr("width",t.width).attr("height",t.height);const nt=this.group.append("g").attr("class","katucharts-sankey-clipped-layer").attr("clip-path",`url(#${et})`),ht=nt.append("g").attr("class","katucharts-sankey-links"),vt=nt.append("g").attr("class","katucharts-sankey-nodes"),mt=nt.append("g").attr("class","katucharts-sankey-link-hitareas");let gt=null;Ke==="gradient"&&(gt=qr);let Q=null;const It=.55,zt=.25,yt=ht.selectAll(".katucharts-sankey-link").data(q.links).join("path").attr("class","katucharts-sankey-link").attr("d",hn).attr("fill",He?"#aaa":"none").attr("stroke",He?"none":"#aaa").attr("stroke-width",V=>He?null:Math.max(v,V.width)).attr("stroke-linecap","butt").style("cursor","pointer");Ke==="gradient"&>?yt.each(function(V,tt){const lt=`katucharts-sankey-grad-${tt}-${Math.random().toString(36).slice(2,6)}`;gt.append("linearGradient").attr("id",lt).attr("gradientUnits","userSpaceOnUse").attr("x1",V.source.x1).attr("x2",V.target.x0).selectAll("stop").data([{offset:"0%",color:Xr(V)},{offset:"100%",color:Ur(V)}]).join("stop").attr("offset",_t=>_t.offset).attr("stop-color",_t=>_t.color),rt(this).attr(He?"fill":"stroke",`url(#${lt})`)}):Ke==="to"?yt.attr(He?"fill":"stroke",V=>Ur(V)):yt.attr(He?"fill":"stroke",V=>Xr(V)),i&&!h?l?yt.attr(Ze,0).each(function(V){const tt=X(V.source),_t=(Gt.get(tt)||[]).indexOf(V),Ft=tt*ie+Nt-60+Math.min(_t*12,60);rt(this).transition("enter").duration(Kt).delay(Ft).ease(pt).attr(Ze,pe(V))}):yt.attr(Ze,V=>pe(V)).each(function(V){var _n;const tt=this,lt=((_n=tt.getTotalLength)==null?void 0:_n.call(tt))||0;if(lt===0)return;const _t=X(V.source),ze=(Gt.get(_t)||[]).indexOf(V),me=_t*ie+Nt-60+Math.min(ze*12,60);rt(this).attr("stroke-dasharray",`${lt} ${lt}`).attr("stroke-dashoffset",lt).transition("enter").duration(Kt).delay(me).ease(pt).attr("stroke-dashoffset",0).on("end",function(){rt(this).attr("stroke-dasharray",null).attr("stroke-dashoffset",null)})}):yt.attr(Ze,V=>pe(V));const jt=(V,tt,lt)=>{const _t={name:`${lt.source.name} → ${lt.target.name}`,from:lt.source.name,to:lt.target.name,y:lt.value,weight:lt.value,fromNode:{name:lt.source.name,id:lt.source.id},toNode:{name:lt.target.name,id:lt.target.id}};if(V==="mouseover"){this.context.events.emit("point:mouseover",{point:_t,index:q.links.indexOf(lt),series:this,event:tt,plotX:(lt.source.x1+lt.target.x0)/2,plotY:(lt.y0+lt.y1)/2});return}if(V==="mouseout"){this.context.events.emit("point:mouseout",{point:_t,index:q.links.indexOf(lt),series:this,event:tt});return}this.context.events.emit("point:click",{point:_t,index:q.links.indexOf(lt),series:this,event:tt})},Ot=(V,tt)=>{const lt=pe(tt);yt.interrupt("highlight"),Vt.interrupt("highlight"),Q==null||Q.interrupt("highlight"),yt.attr(Ze,_t=>_t===tt?Math.min(lt+.3,1):pe(_t)),yt.filter(_t=>_t!==tt).transition("highlight").duration(K).ease(Z).attr(Ze,lt*.375),Vt.attr("opacity",1),Vt.transition("highlight").duration(K).ease(Z).attr("opacity",_t=>_t===tt.source||_t===tt.target?1:It),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",_t=>_t===tt.source||_t===tt.target?1:zt),jt("mouseover",V,tt)},qt=(V,tt)=>{yt.interrupt("highlight"),Vt.interrupt("highlight"),Q==null||Q.interrupt("highlight"),yt.transition("highlight").duration(K).ease(Z).attr(Ze,lt=>pe(lt)),Vt.transition("highlight").duration(K).ease(Z).attr("opacity",1),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",1),jt("mouseout",V,tt)},ee=(V,tt)=>{jt("click",V,tt)};yt.on("mouseover",Ot).on("mouseout",qt).on("click",ee);const Vt=vt.selectAll(".katucharts-sankey-node").data(q.nodes).join("rect").attr("class","katucharts-sankey-node").attr("x",V=>V.x0).attr("y",V=>V.y0).attr("width",V=>V.x1-V.x0).attr("height",V=>Math.max(1,V.y1-V.y0)).attr("fill",(V,tt)=>{if(V.color)return V.color;const lt=je.get(X(V));return lt!=null&<.color?lt.color:x?e[tt%e.length]:r.color||e[0]}).attr("stroke",k).attr("stroke-width",b).attr("rx",4).style("cursor","pointer");i&&!h&&Vt.attr("opacity",0).attr("x",V=>V.x0-(c?4:10)).each(function(V){const tt=X(V),_t=(Ct.get(tt)||[]).indexOf(V),Ft=tt*ie+Math.min(_t*20,80);rt(this).transition("enter").duration(Nt).delay(Ft).ease(pt).attr("opacity",1).attr("x",V.x0)});const un=(V,tt)=>{Vt.filter(Ft=>Ft===tt).style("filter","drop-shadow(0 2px 4px rgba(0,0,0,0.3))"),Vt.interrupt("highlight"),yt.interrupt("highlight"),Q==null||Q.interrupt("highlight");const lt=new Set([tt]);for(const Ft of q.links)Ft.source===tt?lt.add(Ft.target):Ft.target===tt&<.add(Ft.source);Vt.attr("opacity",1),Vt.filter(Ft=>!lt.has(Ft)).transition("highlight").duration(K).ease(Z).attr("opacity",It),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",Ft=>lt.has(Ft)?1:zt),yt.transition("highlight").duration(K).ease(Z).attr(Ze,Ft=>Ft.source===tt||Ft.target===tt?Math.min(pe(Ft)+.3,1):pe(Ft)*.375);const _t={name:tt.name||tt.id,y:tt.value,sum:tt.value};this.context.events.emit("point:mouseover",{point:_t,index:q.nodes.indexOf(tt),series:this,event:V,plotX:(tt.x0+tt.x1)/2,plotY:(tt.y0+tt.y1)/2})},De=(V,tt)=>{Vt.filter(lt=>lt===tt).style("filter",""),Vt.interrupt("highlight"),yt.interrupt("highlight"),Q==null||Q.interrupt("highlight"),Vt.transition("highlight").duration(K).ease(Z).attr("opacity",1),Q==null||Q.transition("highlight").duration(K).ease(Z).attr("opacity",1),yt.transition("highlight").duration(K).ease(Z).attr(Ze,lt=>pe(lt)),this.context.events.emit("point:mouseout",{point:{name:tt.name||tt.id,y:tt.value,sum:tt.value},index:q.nodes.indexOf(tt),series:this,event:V})},Ge=(V,tt)=>{this.context.events.emit("point:click",{point:{name:tt.name||tt.id,y:tt.value},index:q.nodes.indexOf(tt),series:this,event:V})};if(Vt.on("mouseover",un).on("mouseout",De).on("click",Ge),mt.selectAll(".katucharts-sankey-link-hitarea").data(q.links).join("path").attr("class","katucharts-sankey-link-hitarea").attr("d",ti).attr("fill","none").attr("stroke","transparent").attr("stroke-linecap","round").attr("stroke-width",V=>Math.max(16,Math.max(v,V.width)+10)).style("cursor","pointer").on("mouseover",Ot).on("mouseout",qt).on("click",ee),L){const V=this.group.append("g").attr("class","katucharts-sankey-labels"),tt=Math.max(6,I*.6),lt=q.nodes.reduce((ut,$t)=>Math.max(ut,$t.x0??0),0),_t=q.nodes.reduce((ut,$t)=>Math.min(ut,$t.x0??1/0),1/0),Ft=ut=>p?X(ut)===Ht:lt>0&&(ut.x0??0)>=lt-.5,ze=ut=>p?X(ut)===0:Number.isFinite(_t)&&(ut.x0??0)<=_t+.5,Ee=ut=>Y&&Ft(ut)||ze(ut),me=new Map;for(const ut of q.nodes){const $t=ut.y1-ut.y0;if(!Ee(ut)&&$t<tt){me.set(ut,"");continue}me.set(ut,w(ut))}const _n=ut=>Ee(ut)?Ft(ut)?"end":"start":"middle",Zr=ut=>Ee(ut)?Ft(ut)?ut.x0-4+(C.x??0):ut.x1+4+(C.x??0):(ut.x0+ut.x1)/2+(C.x??0);Q=V.selectAll(".katucharts-sankey-label").data(q.nodes).join("text").attr("class","katucharts-sankey-label").attr("x",Zr).attr("y",ut=>(ut.y0+ut.y1)/2+(C.y??0)).attr("dy","0.35em").attr("text-anchor",_n).attr("font-size",E).attr("font-weight",((yn=C.style)==null?void 0:yn.fontWeight)??600).attr("fill",P).attr("paint-order","stroke").attr("stroke",(Vn=C.style)!=null&&Vn.textOutline?null:this.labelHaloColor()).attr("stroke-width",(jr=C.style)!=null&&jr.textOutline?null:2).attr("stroke-linejoin","round").style("pointer-events","auto").style("cursor","pointer").on("mouseover",un).on("mouseout",De).on("click",Ge).text(ut=>me.get(ut)??"");const ei=new Map,Gn=new Map;for(const ut of q.nodes){const $t=X(ut);ei.set($t,Math.min(ei.get($t)??1/0,ut.x0)),Gn.set($t,Math.max(Gn.get($t)??-1/0,ut.x1))}Q.each(function(ut){const $t=this;let re=$t.textContent;if(!re)return;const Cn=A(re);if(Ee(ut)){const Vp=X(ut),Gp=I*.75;let Jr;if(Ft(ut)){const Qr=Gn.get(Vp-1),Yp=Qr!==void 0?(Qr+ut.x0)/2:2;Jr=ut.x0-4-(Yp+Gp/2)}else{const Qr=ei.get(Vp+1);Jr=(Qr!==void 0?(ut.x1+Qr)/2:t.width-2)-Gp/2-(ut.x1+4)}if(Jr<=S){$t.textContent="";return}Cn>Jr&&(re=T(re,Jr,1),$t.textContent=re);return}const _i=(ut.x0+ut.x1)/2,ni=_i-Cn/2,nr=_i+Cn/2;if(nr<=t.width&&ni>=0)return;const Kr=X(ut),VA=ei.get(Kr+1)??t.width,GA=Gn.get(Kr-1)??0,yl=VA-ut.x1-4,xl=ut.x0-GA-4;if(ni<0&&yl>I*1.5){$t.setAttribute("text-anchor","start"),$t.setAttribute("x",String(ut.x1+2)),Cn>yl&&($t.textContent=T(re,yl));return}if(nr>t.width&&xl>I*1.5){$t.setAttribute("text-anchor","end"),$t.setAttribute("x",String(ut.x0-2)),Cn>xl&&($t.textContent=T(re,xl));return}const Hp=2*Math.min(_i,t.width-_i)-4;if(Hp<I*2){$t.textContent="";return}$t.textContent=T(re,Hp)});const Np=[],WA=[...q.nodes].sort((ut,$t)=>($t.value??0)-(ut.value??0)),Wp=new Map;Q.each(function(ut){Wp.set(ut,this)});const HA=(ut,$t)=>ut.left<$t.right&&ut.right>$t.left&&ut.top<$t.bottom&&ut.bottom>$t.top;for(const ut of WA){if(C.allowOverlap===!0)break;const $t=Wp.get(ut);if(!$t||!$t.textContent)continue;let re;try{re=$t.getBBox()}catch{const ni=A($t.textContent||""),nr=Number($t.getAttribute("x")||0),Kr=$t.getAttribute("text-anchor");re={x:Kr==="end"?nr-ni:Kr==="middle"?nr-ni/2:nr,y:Number($t.getAttribute("y")||0)-I/2,width:ni,height:I}}if(re.width===0&&re.height===0)continue;const Cn={left:re.x,right:re.x+re.width,top:re.y,bottom:re.y+re.height};if(Np.some(ni=>HA(ni,Cn))&&C.overflow!=="allow"){$t.textContent="";continue}Np.push(Cn)}i&&!h&&Q.attr("opacity",0).each(function(ut){const $t=X(ut),Cn=(Ct.get($t)||[]).indexOf(ut),_i=$t*ie+Nt-80+Math.min(Cn*20,80);rt(this).transition("enter").duration(Nt).delay(_i).ease(pt).attr("opacity",1)})}i&&this.emitAfterAnimate(h?0:Lt+100)}applyExplicitColumnLayout(t,e,i,r,o,s,a,l,c){var m,x;const h=new Map;for(const v of t.nodes){const b=i(v);v.depth=b,v.layer=b,h.has(b)||h.set(b,[]),h.get(b).push(v)}const f=Array.from(h.entries()).sort((v,b)=>v[0]-b[0]),u=Math.max(1,...f.map(([,v])=>v.length)),d=u>1?Math.min(l,Math.max(1,a/(u-1))):l,y=f.map(([,v])=>v.reduce((b,k)=>b+Math.max(0,k.value??0),0)).filter(v=>v>0).length>0?Math.min(...f.map(([,v])=>{const b=v.reduce((k,M)=>k+Math.max(0,M.value??0),0);return b<=0?1/0:Math.max(1e-4,(a-Math.max(0,v.length-1)*d)/b)})):1,g=r>0?(s-o-c)/r:0;for(const[v,b]of f){const k=b.some(_=>typeof _.offset=="number");b.sort((_,$)=>k?(_.offset??0)-($.offset??0)||(_.y0??0)-($.y0??0)||String(_.name??_.id).localeCompare(String($.name??$.id)):($.value??0)-(_.value??0)||String(_.name??_.id).localeCompare(String($.name??$.id)));const M=b.reduce((_,$)=>_+Math.max(1,($.value??0)*y),0)+Math.max(0,b.length-1)*d;let C=Math.max(0,(a-M)/2);const L=o+v*g;for(const _ of b){const $=Math.max(1,(_.value??0)*y);_.x0=L,_.x1=L+c,_.y0=C,_.y1=C+$,C=_.y1+d}}for(const v of t.links)v.width=Math.max(1e-4,v.value*y);for(const v of t.nodes)(m=v.sourceLinks)==null||m.sort((b,k)=>(b.target.y0??0)-(k.target.y0??0)),(x=v.targetLinks)==null||x.sort((b,k)=>(b.source.y0??0)-(k.source.y0??0));return e.update(t),d}reorderNodesByValueDesc(t,e,i,r,o){var a,l;const s=new Map;for(const c of t.nodes){const h=i(c);s.has(h)||s.set(h,[]),s.get(h).push(c)}for(const[,c]of s){if(c.some(p=>typeof p.offset=="number"))continue;const u=c.reduce((p,y)=>p+(y.y1-y.y0),0)+Math.max(0,c.length-1)*o;c.sort((p,y)=>(y.value??0)-(p.value??0)||String(p.name??p.id).localeCompare(String(y.name??y.id)));let d=Math.max(0,(r-u)/2);for(const p of c){const y=p.y1-p.y0;p.y0=d,p.y1=d+y,d=p.y1+o}}for(const c of t.nodes)(a=c.sourceLinks)==null||a.sort((h,f)=>(h.target.y0??0)-(f.target.y0??0)),(l=c.targetLinks)==null||l.sort((h,f)=>(h.source.y0??0)-(f.source.y0??0));e.update(t)}centerAndSpreadNodes(t,e,i,r,o){const s=new Map;for(const a of t.nodes){const l=a.layer??a.depth??0;s.has(l)||s.set(l,[]),s.get(l).push(a)}for(const[,a]of s){if(a.sort((f,u)=>f.y0-u.y0),r!==1&&a.length>1){const f=a[0].y0,u=a[a.length-1].y1,d=(f+u)/2;for(const p of a){const y=(p.y0+p.y1)/2,g=p.y1-p.y0,m=d+(y-d)*r;p.y0=m-g/2,p.y1=m+g/2}for(let p=1;p<a.length;p++){const y=a[p-1].y1+o-a[p].y0;y>0&&(a[p].y0+=y,a[p].y1+=y)}}const l=a[0].y0,c=a[a.length-1].y1,h=(i-(c-l))/2-l;for(const f of a){const u=f.y1-f.y0,d=f.y0+h;f.y0=Math.max(0,Math.min(i-u,d)),f.y1=f.y0+u}}e.update(t)}buildGraph(){const t=new Map,e=[],i=this.config.nodes||[];for(const r of i)t.set(r.id,{id:r.id,name:r.name||r.id,color:r.color,column:r.column,offset:r.offset});for(const r of this.data){const o=r.from,s=r.to,a=r.y??r.weight??1;o&&s&&(t.has(o)||t.set(o,{id:o,name:o}),t.has(s)||t.set(s,{id:s,name:s}),e.push({source:o,target:s,value:a}))}return{nodes:Array.from(t.values()),links:e}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function tA(n,t){var e,i=1;n==null&&(n=0),t==null&&(t=0);function r(){var o,s=e.length,a,l=0,c=0;for(o=0;o<s;++o)a=e[o],l+=a.x,c+=a.y;for(l=(l/s-n)*i,c=(c/s-t)*i,o=0;o<s;++o)a=e[o],a.x-=l,a.y-=c}return r.initialize=function(o){e=o},r.x=function(o){return arguments.length?(n=+o,r):n},r.y=function(o){return arguments.length?(t=+o,r):t},r.strength=function(o){return arguments.length?(i=+o,r):i},r}function eA(n){const t=+this._x.call(null,n),e=+this._y.call(null,n);return $p(this.cover(t,e),t,e,n)}function $p(n,t,e,i){if(isNaN(t)||isNaN(e))return n;var r,o=n._root,s={data:i},a=n._x0,l=n._y0,c=n._x1,h=n._y1,f,u,d,p,y,g,m,x;if(!o)return n._root=s,n;for(;o.length;)if((y=t>=(f=(a+c)/2))?a=f:c=f,(g=e>=(u=(l+h)/2))?l=u:h=u,r=o,!(o=o[m=g<<1|y]))return r[m]=s,n;if(d=+n._x.call(null,o.data),p=+n._y.call(null,o.data),t===d&&e===p)return s.next=o,r?r[m]=s:n._root=s,n;do r=r?r[m]=new Array(4):n._root=new Array(4),(y=t>=(f=(a+c)/2))?a=f:c=f,(g=e>=(u=(l+h)/2))?l=u:h=u;while((m=g<<1|y)===(x=(p>=u)<<1|d>=f));return r[x]=o,r[m]=s,n}function nA(n){var t,e,i=n.length,r,o,s=new Array(i),a=new Array(i),l=1/0,c=1/0,h=-1/0,f=-1/0;for(e=0;e<i;++e)isNaN(r=+this._x.call(null,t=n[e]))||isNaN(o=+this._y.call(null,t))||(s[e]=r,a[e]=o,r<l&&(l=r),r>h&&(h=r),o<c&&(c=o),o>f&&(f=o));if(l>h||c>f)return this;for(this.cover(l,c).cover(h,f),e=0;e<i;++e)$p(this,s[e],a[e],n[e]);return this}function iA(n,t){if(isNaN(n=+n)||isNaN(t=+t))return this;var e=this._x0,i=this._y0,r=this._x1,o=this._y1;if(isNaN(e))r=(e=Math.floor(n))+1,o=(i=Math.floor(t))+1;else{for(var s=r-e||1,a=this._root,l,c;e>n||n>=r||i>t||t>=o;)switch(c=(t<i)<<1|n<e,l=new Array(4),l[c]=a,a=l,s*=2,c){case 0:r=e+s,o=i+s;break;case 1:e=r-s,o=i+s;break;case 2:r=e+s,i=o-s;break;case 3:e=r-s,i=o-s;break}this._root&&this._root.length&&(this._root=a)}return this._x0=e,this._y0=i,this._x1=r,this._y1=o,this}function rA(){var n=[];return this.visit(function(t){if(!t.length)do n.push(t.data);while(t=t.next)}),n}function oA(n){return arguments.length?this.cover(+n[0][0],+n[0][1]).cover(+n[1][0],+n[1][1]):isNaN(this._x0)?void 0:[[this._x0,this._y0],[this._x1,this._y1]]}function Fe(n,t,e,i,r){this.node=n,this.x0=t,this.y0=e,this.x1=i,this.y1=r}function sA(n,t,e){var i,r=this._x0,o=this._y0,s,a,l,c,h=this._x1,f=this._y1,u=[],d=this._root,p,y;for(d&&u.push(new Fe(d,r,o,h,f)),e==null?e=1/0:(r=n-e,o=t-e,h=n+e,f=t+e,e*=e);p=u.pop();)if(!(!(d=p.node)||(s=p.x0)>h||(a=p.y0)>f||(l=p.x1)<r||(c=p.y1)<o))if(d.length){var g=(s+l)/2,m=(a+c)/2;u.push(new Fe(d[3],g,m,l,c),new Fe(d[2],s,m,g,c),new Fe(d[1],g,a,l,m),new Fe(d[0],s,a,g,m)),(y=(t>=m)<<1|n>=g)&&(p=u[u.length-1],u[u.length-1]=u[u.length-1-y],u[u.length-1-y]=p)}else{var x=n-+this._x.call(null,d.data),v=t-+this._y.call(null,d.data),b=x*x+v*v;if(b<e){var k=Math.sqrt(e=b);r=n-k,o=t-k,h=n+k,f=t+k,i=d.data}}return i}function aA(n){if(isNaN(h=+this._x.call(null,n))||isNaN(f=+this._y.call(null,n)))return this;var t,e=this._root,i,r,o,s=this._x0,a=this._y0,l=this._x1,c=this._y1,h,f,u,d,p,y,g,m;if(!e)return this;if(e.length)for(;;){if((p=h>=(u=(s+l)/2))?s=u:l=u,(y=f>=(d=(a+c)/2))?a=d:c=d,t=e,!(e=e[g=y<<1|p]))return this;if(!e.length)break;(t[g+1&3]||t[g+2&3]||t[g+3&3])&&(i=t,m=g)}for(;e.data!==n;)if(r=e,!(e=e.next))return this;return(o=e.next)&&delete e.next,r?(o?r.next=o:delete r.next,this):t?(o?t[g]=o:delete t[g],(e=t[0]||t[1]||t[2]||t[3])&&e===(t[3]||t[2]||t[1]||t[0])&&!e.length&&(i?i[m]=e:this._root=e),this):(this._root=o,this)}function cA(n){for(var t=0,e=n.length;t<e;++t)this.remove(n[t]);return this}function lA(){return this._root}function hA(){var n=0;return this.visit(function(t){if(!t.length)do++n;while(t=t.next)}),n}function uA(n){var t=[],e,i=this._root,r,o,s,a,l;for(i&&t.push(new Fe(i,this._x0,this._y0,this._x1,this._y1));e=t.pop();)if(!n(i=e.node,o=e.x0,s=e.y0,a=e.x1,l=e.y1)&&i.length){var c=(o+a)/2,h=(s+l)/2;(r=i[3])&&t.push(new Fe(r,c,h,a,l)),(r=i[2])&&t.push(new Fe(r,o,h,c,l)),(r=i[1])&&t.push(new Fe(r,c,s,a,h)),(r=i[0])&&t.push(new Fe(r,o,s,c,h))}return this}function fA(n){var t=[],e=[],i;for(this._root&&t.push(new Fe(this._root,this._x0,this._y0,this._x1,this._y1));i=t.pop();){var r=i.node;if(r.length){var o,s=i.x0,a=i.y0,l=i.x1,c=i.y1,h=(s+l)/2,f=(a+c)/2;(o=r[0])&&t.push(new Fe(o,s,a,h,f)),(o=r[1])&&t.push(new Fe(o,h,a,l,f)),(o=r[2])&&t.push(new Fe(o,s,f,h,c)),(o=r[3])&&t.push(new Fe(o,h,f,l,c))}e.push(i)}for(;i=e.pop();)n(i.node,i.x0,i.y0,i.x1,i.y1);return this}function dA(n){return n[0]}function pA(n){return arguments.length?(this._x=n,this):this._x}function gA(n){return n[1]}function mA(n){return arguments.length?(this._y=n,this):this._y}function pl(n,t,e){var i=new gl(t??dA,e??gA,NaN,NaN,NaN,NaN);return n==null?i:i.addAll(n)}function gl(n,t,e,i,r,o){this._x=n,this._y=t,this._x0=e,this._y0=i,this._x1=r,this._y1=o,this._root=void 0}function Lp(n){for(var t={data:n.data},e=t;n=n.next;)e=e.next={data:n.data};return t}var Re=pl.prototype=gl.prototype;Re.copy=function(){var n=new gl(this._x,this._y,this._x0,this._y0,this._x1,this._y1),t=this._root,e,i;if(!t)return n;if(!t.length)return n._root=Lp(t),n;for(e=[{source:t,target:n._root=new Array(4)}];t=e.pop();)for(var r=0;r<4;++r)(i=t.source[r])&&(i.length?e.push({source:i,target:t.target[r]=new Array(4)}):t.target[r]=Lp(i));return n},Re.add=eA,Re.addAll=nA,Re.cover=iA,Re.data=rA,Re.extent=oA,Re.find=sA,Re.remove=aA,Re.removeAll=cA,Re.root=lA,Re.size=hA,Re.visit=uA,Re.visitAfter=fA,Re.x=pA,Re.y=mA;function Si(n){return function(){return n}}function Jn(n){return(n()-.5)*1e-6}function yA(n){return n.x+n.vx}function xA(n){return n.y+n.vy}function bA(n){var t,e,i,r=1,o=1;typeof n!="function"&&(n=Si(n==null?1:+n));function s(){for(var c,h=t.length,f,u,d,p,y,g,m=0;m<o;++m)for(f=pl(t,yA,xA).visitAfter(a),c=0;c<h;++c)u=t[c],y=e[u.index],g=y*y,d=u.x+u.vx,p=u.y+u.vy,f.visit(x);function x(v,b,k,M,C){var L=v.data,_=v.r,$=y+_;if(L){if(L.index>u.index){var I=d-L.x-L.vx,E=p-L.y-L.vy,P=I*I+E*E;P<$*$&&(I===0&&(I=Jn(i),P+=I*I),E===0&&(E=Jn(i),P+=E*E),P=($-(P=Math.sqrt(P)))/P*r,u.vx+=(I*=P)*($=(_*=_)/(g+_)),u.vy+=(E*=P)*$,L.vx-=I*($=1-$),L.vy-=E*$)}return}return b>d+$||M<d-$||k>p+$||C<p-$}}function a(c){if(c.data)return c.r=e[c.data.index];for(var h=c.r=0;h<4;++h)c[h]&&c[h].r>c.r&&(c.r=c[h].r)}function l(){if(t){var c,h=t.length,f;for(e=new Array(h),c=0;c<h;++c)f=t[c],e[f.index]=+n(f,c,t)}}return s.initialize=function(c,h){t=c,i=h,l()},s.iterations=function(c){return arguments.length?(o=+c,s):o},s.strength=function(c){return arguments.length?(r=+c,s):r},s.radius=function(c){return arguments.length?(n=typeof c=="function"?c:Si(+c),l(),s):n},s}function vA(n){return n.index}function Ip(n,t){var e=n.get(t);if(!e)throw new Error("node not found: "+t);return e}function wA(n){var t=vA,e=f,i,r=Si(30),o,s,a,l,c,h=1;n==null&&(n=[]);function f(g){return 1/Math.min(a[g.source.index],a[g.target.index])}function u(g){for(var m=0,x=n.length;m<h;++m)for(var v=0,b,k,M,C,L,_,$;v<x;++v)b=n[v],k=b.source,M=b.target,C=M.x+M.vx-k.x-k.vx||Jn(c),L=M.y+M.vy-k.y-k.vy||Jn(c),_=Math.sqrt(C*C+L*L),_=(_-o[v])/_*g*i[v],C*=_,L*=_,M.vx-=C*($=l[v]),M.vy-=L*$,k.vx+=C*($=1-$),k.vy+=L*$}function d(){if(s){var g,m=s.length,x=n.length,v=new Map(s.map((k,M)=>[t(k,M,s),k])),b;for(g=0,a=new Array(m);g<x;++g)b=n[g],b.index=g,typeof b.source!="object"&&(b.source=Ip(v,b.source)),typeof b.target!="object"&&(b.target=Ip(v,b.target)),a[b.source.index]=(a[b.source.index]||0)+1,a[b.target.index]=(a[b.target.index]||0)+1;for(g=0,l=new Array(x);g<x;++g)b=n[g],l[g]=a[b.source.index]/(a[b.source.index]+a[b.target.index]);i=new Array(x),p(),o=new Array(x),y()}}function p(){if(s)for(var g=0,m=n.length;g<m;++g)i[g]=+e(n[g],g,n)}function y(){if(s)for(var g=0,m=n.length;g<m;++g)o[g]=+r(n[g],g,n)}return u.initialize=function(g,m){s=g,c=m,d()},u.links=function(g){return arguments.length?(n=g,d(),u):n},u.id=function(g){return arguments.length?(t=g,u):t},u.iterations=function(g){return arguments.length?(h=+g,u):h},u.strength=function(g){return arguments.length?(e=typeof g=="function"?g:Si(+g),p(),u):e},u.distance=function(g){return arguments.length?(r=typeof g=="function"?g:Si(+g),y(),u):r},u}const kA=1664525,MA=1013904223,Fp=4294967296;function AA(){let n=1;return()=>(n=(kA*n+MA)%Fp)/Fp}function SA(n){return n.x}function _A(n){return n.y}var CA=10,PA=Math.PI*(3-Math.sqrt(5));function EA(n){var t,e=1,i=.001,r=1-Math.pow(i,1/300),o=0,s=.6,a=new Map,l=Yo(f),c=zi("tick","end"),h=AA();n==null&&(n=[]);function f(){u(),c.call("tick",t),e<i&&(l.stop(),c.call("end",t))}function u(y){var g,m=n.length,x;y===void 0&&(y=1);for(var v=0;v<y;++v)for(e+=(o-e)*r,a.forEach(function(b){b(e)}),g=0;g<m;++g)x=n[g],x.fx==null?x.x+=x.vx*=s:(x.x=x.fx,x.vx=0),x.fy==null?x.y+=x.vy*=s:(x.y=x.fy,x.vy=0);return t}function d(){for(var y=0,g=n.length,m;y<g;++y){if(m=n[y],m.index=y,m.fx!=null&&(m.x=m.fx),m.fy!=null&&(m.y=m.fy),isNaN(m.x)||isNaN(m.y)){var x=CA*Math.sqrt(.5+y),v=y*PA;m.x=x*Math.cos(v),m.y=x*Math.sin(v)}(isNaN(m.vx)||isNaN(m.vy))&&(m.vx=m.vy=0)}}function p(y){return y.initialize&&y.initialize(n,h),y}return d(),t={tick:u,restart:function(){return l.restart(f),t},stop:function(){return l.stop(),t},nodes:function(y){return arguments.length?(n=y,d(),a.forEach(p),t):n},alpha:function(y){return arguments.length?(e=+y,t):e},alphaMin:function(y){return arguments.length?(i=+y,t):i},alphaDecay:function(y){return arguments.length?(r=+y,t):+r},alphaTarget:function(y){return arguments.length?(o=+y,t):o},velocityDecay:function(y){return arguments.length?(s=1-y,t):1-s},randomSource:function(y){return arguments.length?(h=y,a.forEach(p),t):h},force:function(y,g){return arguments.length>1?(g==null?a.delete(y):a.set(y,p(g)),t):a.get(y)},find:function(y,g,m){var x=0,v=n.length,b,k,M,C,L;for(m==null?m=1/0:m*=m,x=0;x<v;++x)C=n[x],b=y-C.x,k=g-C.y,M=b*b+k*k,M<m&&(L=C,m=M);return L},on:function(y,g){return arguments.length>1?(c.on(y,g),t):c.on(y)}}}function TA(){var n,t,e,i,r=Si(-30),o,s=1,a=1/0,l=.81;function c(d){var p,y=n.length,g=pl(n,SA,_A).visitAfter(f);for(i=d,p=0;p<y;++p)t=n[p],g.visit(u)}function h(){if(n){var d,p=n.length,y;for(o=new Array(p),d=0;d<p;++d)y=n[d],o[y.index]=+r(y,d,n)}}function f(d){var p=0,y,g,m=0,x,v,b;if(d.length){for(x=v=b=0;b<4;++b)(y=d[b])&&(g=Math.abs(y.value))&&(p+=y.value,m+=g,x+=g*y.x,v+=g*y.y);d.x=x/m,d.y=v/m}else{y=d,y.x=y.data.x,y.y=y.data.y;do p+=o[y.data.index];while(y=y.next)}d.value=p}function u(d,p,y,g){if(!d.value)return!0;var m=d.x-t.x,x=d.y-t.y,v=g-p,b=m*m+x*x;if(v*v/l<b)return b<a&&(m===0&&(m=Jn(e),b+=m*m),x===0&&(x=Jn(e),b+=x*x),b<s&&(b=Math.sqrt(s*b)),t.vx+=m*d.value*i/b,t.vy+=x*d.value*i/b),!0;if(d.length||b>=a)return;(d.data!==t||d.next)&&(m===0&&(m=Jn(e),b+=m*m),x===0&&(x=Jn(e),b+=x*x),b<s&&(b=Math.sqrt(s*b)));do d.data!==t&&(v=o[d.data.index]*i/b,t.vx+=m*v,t.vy+=x*v);while(d=d.next)}return c.initialize=function(d,p){n=d,e=p,h()},c.strength=function(d){return arguments.length?(r=typeof d=="function"?d:Si(+d),h(),c):r},c.distanceMin=function(d){return arguments.length?(s=d*d,c):Math.sqrt(s)},c.distanceMax=function(d){return arguments.length?(a=d*d,c):Math.sqrt(a)},c.theta=function(d){return arguments.length?(l=d*d,c):Math.sqrt(l)},c}class $A extends Ut{constructor(t){super(t),this.simulation=null}render(){var E,P,S;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,{nodes:o,links:s}=this.buildGraph();if(o.length===0)return;const a=r.link||{},l=r.layoutAlgorithm||{},c=r.draggable!==!1,h=l.linkLength??a.distance??80,f=a.color??"#999",u=a.width,d=a.dashStyle,p=l.maxIterations??300,y=l.gravitationalConstant??-200,g=l.friction??.9,m=l.maxSpeed??10,x=l.initialPositions,v=l.attractiveForce,b=l.repulsiveForce;if(x==="circle"){const w=t.width/2,A=t.height/2,T=Math.min(t.width,t.height)/3;o.forEach((R,F)=>{const D=2*Math.PI*F/o.length;R.x=w+T*Math.cos(D),R.y=A+T*Math.sin(D)})}else x==="random"?o.forEach(w=>{w.x=Math.random()*t.width,w.y=Math.random()*t.height}):typeof x=="function"&&x(o);const k=Math.sqrt(t.width*t.height/Math.max(o.length,1)),M=wA(s).id(w=>w.id);v?M.distance(w=>v(Math.sqrt((w.source.x-w.target.x)**2+(w.source.y-w.target.y)**2)||1,k)):M.distance(h);const C=TA();b?C.strength(w=>-b(1,k)):C.strength(y),this.simulation=EA(o).force("link",M).force("charge",C).force("center",tA(t.width/2,t.height/2)).force("collide",bA(20)).velocityDecay(1-g).alphaDecay(1-Math.pow(.001,1/p)).stop();for(let w=0;w<p;w++)this.simulation.tick(),o.forEach(A=>{const T=Math.abs(A.vx||0),R=Math.abs(A.vy||0);T>m&&(A.vx=Math.sign(A.vx)*m),R>m&&(A.vy=Math.sign(A.vy)*m)});o.forEach(w=>{var T;const A=((T=w.marker)==null?void 0:T.radius)||10;w.x=Math.max(A+30,Math.min(t.width-A-30,w.x??0)),w.y=Math.max(A+18,Math.min(t.height-A-6,w.y??0))});const L=this.getDashArray(d),_=this.group.selectAll(".katucharts-network-link").data(s).join("line").attr("class","katucharts-network-link").attr("x1",w=>w.source.x).attr("y1",w=>w.source.y).attr("x2",w=>w.target.x).attr("y2",w=>w.target.y).attr("stroke",f).attr("stroke-width",w=>u??Math.sqrt(w.value||1)).attr("stroke-dasharray",L);i?_.attr("stroke-opacity",0).transition().duration(bt).ease(pt).attr("stroke-opacity",.6):_.attr("stroke-opacity",.6);const $=this.group.selectAll(".katucharts-network-node").data(o).join("circle").attr("class","katucharts-network-node").attr("cx",w=>w.x).attr("cy",w=>w.y).attr("fill",(w,A)=>w.color||e[A%e.length]).attr("stroke",this.autoBorderColor()).attr("stroke-width",1.5).style("cursor",c?"grab":"pointer");if(i?$.attr("r",0).transition().duration(bt).ease(pt).attr("r",w=>{var A;return((A=w.marker)==null?void 0:A.radius)||10}):$.attr("r",w=>{var A;return((A=w.marker)==null?void 0:A.radius)||10}),c){const w=df().on("start",(A,T)=>{rt(A.sourceEvent.target).style("cursor","grabbing"),this.simulation&&this.simulation.alphaTarget(.3).restart(),T.fx=T.x,T.fy=T.y}).on("drag",(A,T)=>{T.fx=A.x,T.fy=A.y,T.x=A.x,T.y=A.y,this.updatePositions($,_,I)}).on("end",(A,T)=>{rt(A.sourceEvent.target).style("cursor","grab"),this.simulation&&this.simulation.alphaTarget(0),T.fx=null,T.fy=null});$.call(w)}$.on("mouseover",(w,A)=>{var D;const T=rt(w.currentTarget),R=((D=A.marker)==null?void 0:D.radius)||10;T.transition("size").duration(K).ease(Z).attr("r",R+4),T.style("filter","drop-shadow(0 2px 6px rgba(0,0,0,0.3))"),$.interrupt("highlight"),_.interrupt("highlight"),$.attr("opacity",1),_.transition("highlight").duration(K).ease(Z).attr("stroke-opacity",z=>z.source===A||z.target===A?.9:.1).attr("stroke-width",z=>z.source===A||z.target===A?3:u??Math.sqrt(z.value||1)),$.filter(z=>z!==A).transition("highlight").duration(K).ease(Z).attr("opacity",z=>s.some(H=>H.source===A&&H.target===z||H.target===A&&H.source===z)?1:.3);const F=o.indexOf(A);this.context.events.emit("point:mouseover",{point:{name:A.name||A.id},index:F,series:this,event:w,plotX:A.x,plotY:A.y})}).on("mouseout",(w,A)=>{var F;const T=rt(w.currentTarget);T.transition("size").duration(K).ease(Z).attr("r",((F=A.marker)==null?void 0:F.radius)||10),T.style("filter",""),$.interrupt("highlight"),_.interrupt("highlight"),_.transition("highlight").duration(K).ease(Z).attr("stroke-opacity",.6).attr("stroke-width",D=>u??Math.sqrt(D.value||1)),$.transition("highlight").duration(K).ease(Z).attr("opacity",1);const R=o.indexOf(A);this.context.events.emit("point:mouseout",{point:{name:A.name||A.id},index:R,series:this,event:w})}).on("click",(w,A)=>{const T=o.indexOf(A);this.context.events.emit("point:click",{point:{name:A.name||A.id},index:T,series:this,event:w})});const I=this.group.selectAll(".katucharts-network-label").data(o).join("text").attr("class","katucharts-network-label").attr("x",w=>w.x).attr("y",w=>w.y-14).attr("text-anchor","middle").attr("font-size",wt).attr("fill",this.autoLabelColor(((E=this.config.dataLabels)==null?void 0:E.color)||((S=(P=this.config.dataLabels)==null?void 0:P.style)==null?void 0:S.color))).style("pointer-events","none").text(w=>w.name||w.id);i&&I.attr("opacity",0).transition().duration(bt).ease(pt).attr("opacity",1)}updatePositions(t,e,i){t.attr("cx",r=>r.x).attr("cy",r=>r.y),e.attr("x1",r=>r.source.x).attr("y1",r=>r.source.y).attr("x2",r=>r.target.x).attr("y2",r=>r.target.y),i.attr("x",r=>r.x).attr("y",r=>r.y-14)}getDashArray(t){return t&&{Solid:"none",ShortDash:"6,2",ShortDot:"2,2",ShortDashDot:"6,2,2,2",Dot:"2,6",Dash:"8,6",LongDash:"16,6",DashDot:"8,6,2,6",LongDashDot:"16,6,2,6",LongDashDotDot:"16,6,2,6,2,6"}[t]||"none"}buildGraph(){const t=new Map,e=[],i=this.config.nodes||[];for(const r of i)t.set(r.id,{...r});for(const r of this.data){const o=r[0]||r.from,s=r[1]||r.to;o&&s&&(t.has(o)||t.set(o,{id:o,name:o}),t.has(s)||t.set(s,{id:s,name:s}),e.push({source:o,target:s,value:r.y??1}))}return{nodes:Array.from(t.values()),links:e}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}destroy(){this.simulation&&(this.simulation.stop(),this.simulation=null),super.destroy()}}var LA=Math.PI,Rp=LA*2,Dp=Math.max;function zp(n,t){return Array.from({length:t-n},(e,i)=>n+i)}function IA(n){return function(t,e){return n(t.source.value+t.target.value,e.source.value+e.target.value)}}function FA(){return RA(!1)}function RA(n,t){var e=0,i=null,r=null,o=null;function s(a){var l=a.length,c=new Array(l),h=zp(0,l),f=new Array(l*l),u=new Array(l),d=0,p;a=Float64Array.from({length:l*l},(y,g)=>a[g/l|0][g%l]);for(let y=0;y<l;++y){let g=0;for(let m=0;m<l;++m)g+=a[y*l+m]+n*a[m*l+y];d+=c[y]=g}d=Dp(0,Rp-e*l)/d,p=d?e:Rp/l;{let y=0;i&&h.sort((g,m)=>i(c[g],c[m]));for(const g of h){const m=y;{const x=zp(0,l).filter(v=>a[g*l+v]||a[v*l+g]);r&&x.sort((v,b)=>r(a[g*l+v],a[g*l+b]));for(const v of x){let b;if(g<v?(b=f[g*l+v]||(f[g*l+v]={source:null,target:null}),b.source={index:g,startAngle:y,endAngle:y+=a[g*l+v]*d,value:a[g*l+v]}):(b=f[v*l+g]||(f[v*l+g]={source:null,target:null}),b.target={index:g,startAngle:y,endAngle:y+=a[g*l+v]*d,value:a[g*l+v]},g===v&&(b.source=b.target)),b.source&&b.target&&b.source.value<b.target.value){const k=b.source;b.source=b.target,b.target=k}}u[g]={index:g,startAngle:m,endAngle:y,value:c[g]}}y+=p}}return f=Object.values(f),f.groups=u,o?f.sort(o):f}return s.padAngle=function(a){return arguments.length?(e=Dp(0,a),s):e},s.sortGroups=function(a){return arguments.length?(i=a,s):i},s.sortSubgroups=function(a){return arguments.length?(r=a,s):r},s.sortChords=function(a){return arguments.length?(a==null?o=null:(o=IA(a))._=a,s):o&&o._},s}class DA extends Ut{constructor(t){super(t)}render(){var Xr,Ur,qr;const{plotArea:t,colors:e}=this.context,i=this.context.animate,r=this.config,o=r.labelType??"max",s=bt*2,a=8,l=Math.round(s*.48),c=12,h=Math.round(l*.65),f=l+8,u=r.nodeWidth??20,d=r.linkOpacity??.5;r.minLinkWidth;const p=(r.startAngle??0)*(Math.PI/180),y=(Xr=this.group.node())==null?void 0:Xr.parentElement;y&&rt(y).attr("clip-path",null);const g=this.group.select(function(){return this.ownerSVGElement});g.empty()||g.style("overflow","visible");const m=r.center||["50%","50%"],x=this.resolvePercent(m[0],t.width),v=this.resolvePercent(m[1],t.height),b=r.size,k=o==="small"?34:70,M=o==="small"?34:24,C=Math.max(80,Math.min(t.width-2*k,t.height-2*M)),L=b?this.resolvePercent(b,C):C,_=Math.max(40,L/2-2),$=_-u,{matrix:I,names:E,nodeColors:P}=this.buildMatrix();if(E.length===0)return;const w=(r.nodePadding??2)/(_>0?_:1),T=FA().padAngle(w).sortSubgroups(null)(I);this.normalizeChordWidths(T),this.sortChordEndpoints(T);const R=_e().innerRadius($).outerRadius(_).cornerRadius(3),F=_e().innerRadius($).outerRadius(_+4).cornerRadius(3),D=r.curveFactor??.05,z=et=>{const nt=$,ht=et.source.startAngle+p-Math.PI/2,vt=et.source.endAngle+p-Math.PI/2,mt=et.target.startAngle+p-Math.PI/2,gt=et.target.endAngle+p-Math.PI/2,Q=nt*Math.cos(ht),It=nt*Math.sin(ht),zt=nt*Math.cos(vt),yt=nt*Math.sin(vt),jt=nt*Math.cos(mt),Ot=nt*Math.sin(mt),qt=nt*Math.cos(gt),ee=nt*Math.sin(gt),Vt=Math.abs(vt-ht)>Math.PI?1:0,un=Math.abs(gt-mt)>Math.PI?1:0;let De=Math.abs(mt-vt);De>Math.PI&&(De=2*Math.PI-De);const Ge=De/Math.PI,Pe=nt*Math.max(D,(1-Ge)*(1-Ge)*(1-Ge));let fn=Math.abs(ht-gt);fn>Math.PI&&(fn=2*Math.PI-fn);const yn=fn/Math.PI,Vn=nt*Math.max(D,(1-yn)*(1-yn)*(1-yn));return`M${Q},${It}A${nt},${nt},0,${Vt},1,${zt},${yt}C${Pe*Math.cos(vt)},${Pe*Math.sin(vt)},${Pe*Math.cos(mt)},${Pe*Math.sin(mt)},${jt},${Ot}A${nt},${nt},0,${un},1,${qt},${ee}C${Vn*Math.cos(gt)},${Vn*Math.sin(gt)},${Vn*Math.cos(ht)},${Vn*Math.sin(ht)},${Q},${It}Z`},B=this.group.append("g").attr("transform",`translate(${x},${v})`),H=et=>P[et]||e[et%e.length],J=r.linkColorMode??"from",X=B.append("defs");let j=null;J==="gradient"&&(j=X);const W=et=>H(J==="to"?et.target.index:et.source.index),U=u*2,G=(et,nt,ht,vt)=>{const mt=`katucharts-dw-edge-${vt}-${ht}-${Math.random().toString(36).slice(2,6)}`,gt=$*Math.cos(et),Q=$*Math.sin(et),It=($-U)*Math.cos(et),zt=($-U)*Math.sin(et);return X.append("linearGradient").attr("id",mt).attr("gradientUnits","userSpaceOnUse").attr("x1",gt).attr("y1",Q).attr("x2",It).attr("y2",zt).selectAll("stop").data([{offset:"0%",opacity:.7},{offset:"25%",opacity:.2},{offset:"50%",opacity:.05},{offset:"100%",opacity:0}]).join("stop").attr("offset",yt=>yt.offset).attr("stop-color",nt).attr("stop-opacity",yt=>yt.opacity),mt},N=J!=="gradient";let Y,O;if(N){const et=new Map;for(const vt of T){const mt=W(vt);et.has(mt)||et.set(mt,[]),et.get(mt).push(vt)}const nt=B.append("g").attr("class","katucharts-chord-container");for(const[vt,mt]of et)nt.append("g").attr("class","katucharts-chord-group").attr("opacity",d).selectAll(".katucharts-chord").data(mt).join("path").attr("class","katucharts-chord").attr("d",Q=>z(Q)).attr("fill",vt).attr("fill-opacity",1).attr("stroke","none").style("cursor","pointer");Y=nt.selectAll(".katucharts-chord"),O=nt.selectAll(".katucharts-chord-group");const ht=B.append("g").attr("class","katucharts-chord-edges").attr("opacity",d);if(T.forEach((vt,mt)=>{const gt=H(vt.source.index),Q=H(vt.target.index);if(gt===Q)return;const It=z(vt),zt=(vt.target.startAngle+vt.target.endAngle)/2+p-Math.PI/2,yt=G(zt,Q,mt,"tgt");ht.append("path").attr("d",It).attr("fill",`url(#${yt})`).attr("stroke","none").style("pointer-events","none");const jt=(vt.source.startAngle+vt.source.endAngle)/2+p-Math.PI/2,Ot=G(jt,gt,mt,"src");ht.append("path").attr("d",It).attr("fill",`url(#${Ot})`).attr("stroke","none").style("pointer-events","none")}),i){ht.attr("opacity",0);const vt=B.append("defs"),mt=Math.round(s*.62);Y.each(function(Q,It){const zt=f+It*a,yt=`dw-clip-${It}-${Math.random().toString(36).slice(2,6)}`,jt=Q.source.startAngle+p-Math.PI/2,Ot=Q.source.endAngle+p-Math.PI/2,qt=Q.target.startAngle+p-Math.PI/2,ee=Q.target.endAngle+p-Math.PI/2,Vt=(jt+Ot)/2,un=(qt+ee)/2,De=$*Math.cos(Vt),Ge=$*Math.sin(Vt),Pe=$*Math.cos(un),fn=$*Math.sin(un),yn=Math.atan2(fn-Ge,Pe-De)*180/Math.PI,Vn=Math.sqrt((Pe-De)**2+(fn-Ge)**2)+_*2,jr=vt.append("clipPath").attr("id",yt).attr("clipPathUnits","userSpaceOnUse"),V=jr.append("rect").attr("transform",`translate(${De},${Ge}) rotate(${yn})`).attr("x",-_).attr("y",-_).attr("width",0).attr("height",_*2),tt=rt(this);tt.attr("clip-path",`url(#${yt})`),V.transition("enter").duration(mt).delay(zt).ease(pt).attr("width",Vn).on("end",function(){tt.attr("clip-path",null),jr.remove()})});const gt=f+(T.length-1)*a+mt;ht.transition("enter").duration(300).delay(gt).ease(pt).attr("opacity",d)}}else if(Y=B.selectAll(".katucharts-chord").data(T).join("path").attr("class","katucharts-chord").attr("d",et=>z(et)).attr("stroke","none").style("cursor","pointer"),Y.each(function(et,nt){const ht=`katucharts-dw-grad-${nt}-${Math.random().toString(36).slice(2,6)}`,vt=(et.source.startAngle+et.source.endAngle)/2+p-Math.PI/2,mt=(et.target.startAngle+et.target.endAngle)/2+p-Math.PI/2;j.append("linearGradient").attr("id",ht).attr("gradientUnits","userSpaceOnUse").attr("x1",$*Math.cos(vt)).attr("y1",$*Math.sin(vt)).attr("x2",$*Math.cos(mt)).attr("y2",$*Math.sin(mt)).selectAll("stop").data([{offset:"0%",color:H(et.source.index)},{offset:"100%",color:H(et.target.index)}]).join("stop").attr("offset",gt=>gt.offset).attr("stop-color",gt=>gt.color),rt(this).attr("fill",`url(#${ht})`)}),i){Y.attr("fill-opacity",d);const et=B.append("defs"),nt=Math.round(s*.62);Y.each(function(ht,vt){const mt=f+vt*a,gt=`dw-clip-${vt}-${Math.random().toString(36).slice(2,6)}`,Q=ht.source.startAngle+p-Math.PI/2,It=ht.source.endAngle+p-Math.PI/2,zt=ht.target.startAngle+p-Math.PI/2,yt=ht.target.endAngle+p-Math.PI/2,jt=(Q+It)/2,Ot=(zt+yt)/2,qt=$*Math.cos(jt),ee=$*Math.sin(jt),Vt=$*Math.cos(Ot),un=$*Math.sin(Ot),De=Math.atan2(un-ee,Vt-qt)*180/Math.PI,Ge=Math.sqrt((Vt-qt)**2+(un-ee)**2)+_*2,Pe=et.append("clipPath").attr("id",gt).attr("clipPathUnits","userSpaceOnUse"),fn=Pe.append("rect").attr("transform",`translate(${qt},${ee}) rotate(${De})`).attr("x",-_).attr("y",-_).attr("width",0).attr("height",_*2),yn=rt(this);yn.attr("clip-path",`url(#${gt})`),fn.transition("enter").duration(nt).delay(mt).ease(pt).attr("width",Ge).on("end",function(){yn.attr("clip-path",null),Pe.remove()})})}else Y.attr("fill-opacity",d);const ct=(et,nt,ht)=>{const vt=E[ht.source.index],mt=E[ht.target.index],gt={name:`${vt} → ${mt}`,from:vt,to:mt,y:ht.source.value,weight:ht.source.value,fromNode:{name:vt},toNode:{name:mt}};if(et==="mouseover"){this.context.events.emit("point:mouseover",{point:gt,index:T.indexOf(ht),series:this,event:nt,plotX:nt.offsetX-this.context.plotArea.x,plotY:nt.offsetY-this.context.plotArea.y});return}if(et==="mouseout"){this.context.events.emit("point:mouseout",{point:gt,index:T.indexOf(ht),series:this,event:nt});return}this.context.events.emit("point:click",{point:gt,index:T.indexOf(ht),series:this,event:nt})},it=(et,nt)=>{Y.interrupt("highlight"),Mt.interrupt("highlight"),O&&O.interrupt("highlight").attr("opacity",1),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",ht=>ht===nt?Math.min(d+.35,1):.05),Mt.attr("opacity",1),Mt.transition("highlight").duration(K).ease(Z).attr("opacity",ht=>ht.index===nt.source.index||ht.index===nt.target.index?1:.3),ct("mouseover",et,nt)},ft=(et,nt)=>{Y.interrupt("highlight"),Mt.interrupt("highlight"),O?(O.interrupt("highlight"),O.transition("highlight").duration(K).ease(Z).attr("opacity",d),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",1)):Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",d),Mt.transition("highlight").duration(K).ease(Z).attr("opacity",1),ct("mouseout",et,nt)},dt=(et,nt)=>{ct("click",et,nt)};Y.on("mouseover",it).on("mouseout",ft).on("click",dt);const at=T.groups.map(et=>({...et,startAngle:et.startAngle+p,endAngle:et.endAngle+p})),ot=et=>{const nt=Math.PI*2;let ht=et%nt;return ht<0&&(ht+=nt),ht},q=(et,nt)=>{const ht=et.offsetX-this.context.plotArea.x-x,vt=et.offsetY-this.context.plotArea.y-v,mt=ot(Math.atan2(vt,ht)+Math.PI/2),gt=T.filter(Ot=>Ot.source.index===nt.index||Ot.target.index===nt.index);if(gt.length===0)return null;const Q=Ot=>Ot.source.index===nt.index?Ot.source:Ot.target,It=Ot=>{const qt=Q(Ot),ee=ot(qt.startAngle+p),Vt=ot(qt.endAngle+p);return ee<=Vt?mt>=ee&&mt<=Vt:mt>=ee||mt<=Vt},zt=gt.find(It);if(zt)return zt;let yt=gt[0],jt=1/0;for(const Ot of gt){const qt=Q(Ot),ee=ot((qt.startAngle+qt.endAngle)/2+p);let Vt=Math.abs(mt-ee);Vt>Math.PI&&(Vt=Math.PI*2-Vt),Vt<jt&&(jt=Vt,yt=Ot)}return yt},st=et=>{const nt=E[et.source.index],ht=E[et.target.index];return{name:`${nt} → ${ht}`,from:nt,to:ht,y:et.source.value,weight:et.source.value,fromNode:{name:nt},toNode:{name:ht}}},kt=r.borderColor??this.autoBorderColor(),Et=r.borderWidth??1,Mt=B.selectAll(".katucharts-chord-arc").data(at).join("path").attr("class","katucharts-chord-arc").attr("fill",et=>H(et.index)).attr("stroke",kt).attr("stroke-width",Et).style("cursor","pointer");i?Mt.each(function(et,nt){const ht=rt(this),vt={startAngle:et.startAngle,endAngle:et.startAngle},mt=ae(vt,et);ht.transition("enter").duration(l).delay(nt*c).ease(pt).attrTween("d",()=>gt=>R(mt(gt)))}):Mt.attr("d",R),Mt.on("mouseover",(et,nt)=>{rt(et.currentTarget).transition("arc").duration(K).ease(Z).attr("d",F(nt)),Y.interrupt("highlight"),Mt.interrupt("highlight"),O&&O.interrupt("highlight").attr("opacity",1),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",mt=>mt.source.index===nt.index||mt.target.index===nt.index?Math.min(d+.35,1):.05),Mt.attr("opacity",1),Mt.filter(mt=>mt!==nt).transition("highlight").duration(K).ease(Z).attr("opacity",mt=>T.some(Q=>Q.source.index===nt.index&&Q.target.index===mt.index||Q.target.index===nt.index&&Q.source.index===mt.index)?1:.3),Ke.filter(mt=>mt.index===nt.index).transition("label").duration(K).ease(Z).attr("opacity",1);const vt=q(et,nt);this.context.events.emit("point:mouseover",{point:vt?st(vt):{name:E[nt.index],y:nt.value,sum:nt.value},index:nt.index,series:this,event:et,plotX:et.offsetX-this.context.plotArea.x,plotY:et.offsetY-this.context.plotArea.y})}).on("mouseout",(et,nt)=>{rt(et.currentTarget).transition("arc").duration(K).ease(Z).attr("d",R(nt)),Y.interrupt("highlight"),Mt.interrupt("highlight"),O?(O.interrupt("highlight"),O.transition("highlight").duration(K).ease(Z).attr("opacity",d),Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",1)):Y.transition("highlight").duration(K).ease(Z).attr("fill-opacity",d),Mt.transition("highlight").duration(K).ease(Z).attr("opacity",1),Ke.filter(mt=>mt.index===nt.index).transition("label").duration(K).ease(Z).attr("opacity",mt=>hn(mt)?1:0);const vt=q(et,nt);this.context.events.emit("point:mouseout",{point:vt?st(vt):{name:E[nt.index],y:nt.value,sum:nt.value},index:nt.index,series:this,event:et})}).on("click",(et,nt)=>{const ht=q(et,nt);this.context.events.emit("point:click",{point:ht?st(ht):{name:E[nt.index],y:nt.value,sum:nt.value},index:nt.index,series:this,event:et})}),B.append("g").attr("class","katucharts-chord-hitareas").selectAll(".katucharts-chord-hitarea").data(T).join("path").attr("class","katucharts-chord-hitarea").attr("d",et=>z(et)).attr("fill","#ffffff").attr("fill-opacity",0).attr("stroke","#ffffff").attr("stroke-opacity",0).attr("stroke-width",12).attr("stroke-linejoin","round").style("cursor","pointer").style("pointer-events","all").on("mouseover",it).on("mouseout",ft).on("click",dt);const Ct=this.config.dataLabels||{},Gt=Ct.color||((Ur=Ct.style)==null?void 0:Ur.color)||ye,Ht=((qr=Ct.style)==null?void 0:qr.fontSize)||wt,Nt=xe(Ht),Kt=22,ie=_+Kt,Lt=Math.max(Nt*1.6,17),Jt="…",de=Je(Jt,Nt,"bold"),je=(et,nt)=>{if(!et||nt<=de)return"";if(Je(et,Nt,"bold")<=nt)return et;let ht="";for(const vt of et){if(Je(ht+vt,Nt,"bold")+de>nt)break;ht+=vt}return ht=ht.trimEnd(),(ht||et[0])+Jt},pe=t.width-x,Sn=x,ti=v,He=t.height-v,Ve=at.map(et=>{const nt=(et.startAngle+et.endAngle)/2,ht=Math.sin(nt)>=0;return{index:et.index,mid:nt,span:et.endAngle-et.startAngle,isRight:ht,ax:_*Math.sin(nt),ay:-_*Math.cos(nt),lx:ie*Math.sin(nt),ly:-ie*Math.cos(nt),rank:et.value||0,color:H(et.index),visible:!!E[et.index]}}),hn=et=>!!et.visible,Ze=B.append("g").attr("class","katucharts-chord-labels");let Ke;if(o==="small"){const et=Math.PI*2,nt=_+6+Nt*.5,ht=gt=>[nt*Math.sin(gt),-nt*Math.cos(gt)],vt=(gt,Q)=>{if(!gt)return"";const It=Q*nt-2;if(It<Je(gt[0],Nt,"bold"))return"";if(Je(gt,Nt,"bold")<=It)return gt;let zt="";for(const yt of gt){if(zt&&Je(zt+yt,Nt,"bold")>It)break;zt+=yt}return zt},mt=B.append("defs");if(Ke=Ze.selectAll(".katucharts-chord-label").data(Ve.filter(gt=>gt.visible)).join("text").attr("class","katucharts-chord-label").attr("font-size",Ht).attr("font-weight","bold").attr("fill",Gt).style("pointer-events","none").attr("opacity",0),Ke.each((gt,Q,It)=>{const zt=rt(It[Q]);zt.text(null);const yt=vt(E[gt.index]||"",gt.span);if(!yt)return;const jt=(gt.mid%et+et)%et,Ot=jt>Math.PI/2&&jt<Math.PI*3/2,qt=gt.span/2,[ee,Vt]=ht(Ot?gt.mid+qt:gt.mid-qt),[un,De]=ht(Ot?gt.mid-qt:gt.mid+qt),Ge=Ot?0:1,Pe=`katucharts-dw-label-${Q}-${Math.random().toString(36).slice(2,6)}`;mt.append("path").attr("id",Pe).attr("fill","none").attr("d",`M${ee},${Vt}A${nt},${nt},0,0,${Ge},${un},${De}`),zt.append("textPath").attr("href",`#${Pe}`).attr("startOffset","50%").attr("text-anchor","middle").attr("dominant-baseline","central").text(yt)}),i){Ke.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",1);const gt=Math.round(s*.62),Q=T.length,It=f+Q*a+gt;this.emitAfterAnimate(It+100)}else Ke.attr("opacity",1)}else{const et=Math.max(1,ti-5+(He-5));if(o==="medium"){const Q=Math.max(1,Math.min(10,Math.floor(et/(Lt*1.2))));for(const It of[!0,!1]){const zt=Ve.filter(yt=>yt.visible&&yt.isRight===It);zt.length>Q&&(zt.sort((yt,jt)=>jt.rank-yt.rank),zt.slice(Q).forEach(yt=>{yt.visible=!1}))}}this.distributeChordLabels(Ve.filter(Q=>Q.visible&&Q.isRight),Lt,ti,He),this.distributeChordLabels(Ve.filter(Q=>Q.visible&&!Q.isRight),Lt,ti,He);const nt=Math.max(Nt*1.4,16),ht=Q=>{const It=Q.filter(Ot=>Ot.visible).sort((Ot,qt)=>Ot.ly-qt.ly),zt=It.length*Lt/et;let yt=1;It.length>=8&&zt>.5&&(yt=2),It.length>=14&&zt>.75&&(yt=3);const jt=Math.max(1,yt*2-2);It.forEach((Ot,qt)=>{if(yt<=1){Ot.col=0;return}const ee=qt%jt;Ot.col=ee<yt?ee:jt-ee})};if(o==="medium")for(const Q of Ve)Q.col=0;else ht(Ve.filter(Q=>Q.isRight)),ht(Ve.filter(Q=>!Q.isRight));for(const Q of Ve){if(!Q.visible)continue;const It=(Q.col||0)*nt,zt=ie+It,yt=Math.max(-zt,Math.min(zt,Q.ly)),jt=Math.sqrt(Math.max(0,zt*zt-yt*yt)),Ot=_*.4+It;Q.lx=Q.isRight?Math.max(jt,Ot):-Math.max(jt,Ot);const qt=(Q.isRight?pe:Sn)-de-4;Q.lx=Q.isRight?Math.min(Q.lx,qt):Math.max(Q.lx,-qt)}const vt=Q=>Q.lx+(Q.isRight?4:-4),mt=Q=>Math.max(0,(Q.isRight?pe-vt(Q):vt(Q)+Sn)-6),gt=Ze.selectAll(".katucharts-chord-connector").data(Ve.filter(Q=>Q.visible)).join("path").attr("class","katucharts-chord-connector").attr("fill","none").attr("stroke",Q=>Q.color).attr("stroke-width",1).attr("opacity",0).attr("d",Q=>{const It=_+Kt*.55,zt=It*Math.sin(Q.mid),yt=-It*Math.cos(Q.mid);return`M${Q.ax},${Q.ay}L${zt},${yt}L${Q.lx},${Q.ly}`});if(Ke=Ze.selectAll(".katucharts-chord-label").data(Ve).join("text").attr("class","katucharts-chord-label").attr("text-anchor",Q=>Q.isRight?"start":"end").attr("dominant-baseline","middle").attr("font-size",Ht).attr("font-weight","bold").attr("fill",Gt).style("pointer-events","none").attr("opacity",0).attr("x",Q=>vt(Q)).attr("y",Q=>Q.ly).text(Q=>Q.visible&&mt(Q)>=de?je(E[Q.index]||"",mt(Q)):""),i){gt.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",.8),Ke.transition("enter").duration(300).delay(h).ease(pt).attr("opacity",yt=>hn(yt)?1:0);const Q=Math.round(s*.62),It=T.length,zt=f+It*a+Q;this.emitAfterAnimate(zt+100)}else gt.attr("opacity",.8),Ke.attr("opacity",Q=>hn(Q)?1:0)}}distributeChordLabels(t,e,i,r){const o=t.filter(h=>h.visible);if(o.length<=1)return;const s=-(i-5),l=r-5-s,c=o.map(h=>({target:h.ly-s,size:e,rank:h.rank,pos:0,removed:!1,label:h}));this.distributeBoxes(c,l,l,l/4);for(const h of c)h.removed?h.label.visible=!1:h.label.ly=s+h.pos+e/2}distributeBoxes(t,e,i,r){const o=t.filter(c=>!c.removed);if(o.length===0)return;let s=o.reduce((c,h)=>c+h.size,0);if(s>e){const c=[...o].sort((f,u)=>f.rank-u.rank);let h=0;for(;s>e&&h<c.length;)c[h].removed=!0,s-=c[h].size,h++}const a=o.filter(c=>!c.removed);if(a.length===0)return;a.sort((c,h)=>c.target-h.target);for(let c=0;c<a.length;c++)if(a[c].pos=a[c].target,c>0){const h=a[c-1].pos+a[c-1].size;a[c].pos<h&&(a[c].pos=h)}for(let c=a.length-1;c>=0;c--){const h=c===a.length-1?e-a[c].size:a[c+1].pos-a[c].size;a[c].pos>h&&(a[c].pos=Math.max(0,h))}for(let c=0;c<5;c++)for(let h=0;h<a.length;h++){const f=a[h].pos+(a[h].target-a[h].pos)*.3,u=h>0?a[h-1].pos+a[h-1].size:0,d=h<a.length-1?a[h+1].pos-a[h].size:e-a[h].size;a[h].pos=Math.max(u,Math.min(d,f))}if(a.some(c=>Math.abs(c.pos-c.target)>r)){const c=e*.9;if(c>=i*.1){const h=[...a].sort((f,u)=>f.rank-u.rank);h[0].removed=!0,this.distributeBoxes(t,c,i,c/4)}}}resolvePercent(t,e){return typeof t=="string"&&t.endsWith("%")?parseFloat(t)/100*e:typeof t=="number"?t:parseFloat(t)||e/2}normalizeChordWidths(t){const e=t.groups;if(e.length===0)return;let i=0;for(const r of e){const o=r.endAngle-r.startAngle;o>0&&r.value>0&&(i=Math.max(i,r.value/o))}if(i!==0)for(const r of e){const o=[];for(const f of t)f.source.index===r.index&&o.push({ref:f.source,value:f.source.value}),f.target.index===r.index&&o.push({ref:f.target,value:f.target.value});if(o.length===0)continue;o.sort((f,u)=>f.ref.startAngle-u.ref.startAngle);const s=r.endAngle-r.startAngle,a=o.reduce((f,u)=>f+u.value/i,0),c=Math.max(0,s-a)/(o.length+1);let h=r.startAngle+c;for(const f of o){const u=f.value/i;f.ref.startAngle=h,f.ref.endAngle=h+u,h+=u+c}}}sortChordEndpoints(t){const e=t.groups,i=2*Math.PI;for(const r of e){const o=[],s=d=>d.side==="source"?d.chord.source:d.chord.target;for(const d of t){if(d.source.index===r.index){const p=e[d.target.index];o.push({chord:d,side:"source",partnerMid:(p.startAngle+p.endAngle)/2,width:d.source.endAngle-d.source.startAngle})}if(d.target.index===r.index){const p=e[d.source.index];o.push({chord:d,side:"target",partnerMid:(p.startAngle+p.endAngle)/2,width:d.target.endAngle-d.target.startAngle})}}if(o.length<=1)continue;const a=r.endAngle-r.startAngle,l=o.reduce((d,p)=>d+p.width,0),h=Math.max(0,a-l)/(o.length+1),f=r.endAngle;o.sort((d,p)=>{const y=((d.partnerMid-f)%i+i)%i;return((p.partnerMid-f)%i+i)%i-y});let u=r.startAngle+h;for(const d of o){const p=s(d);p.startAngle=u,p.endAngle=u+d.width,u+=d.width+h}}}buildMatrix(){const t=this.config.nodes||[],e=new Map;for(const l of t)l.color&&e.set(l.id,l.color);const i=new Set;for(const l of this.data)l.from&&i.add(l.from),l.to&&i.add(l.to);const r=Array.from(i),o=new Map(r.map((l,c)=>[l,c])),s=Array.from({length:r.length},()=>new Array(r.length).fill(0));for(const l of this.data){const c=o.get(l.from),h=o.get(l.to);if(c!==void 0&&h!==void 0){const f=l.y??l.weight??1;s[c][h]+=f,s[h][c]+=f}}const a=r.map(l=>e.get(l));return{matrix:s,names:r,nodeColors:a}}getDataExtents(){return{xMin:0,xMax:0,yMin:0,yMax:0}}}function Bp(){Tt.registerType("sankey",QM),Tt.registerType("networkgraph",$A),Tt.registerType("dependencywheel",DA)}class Gr{static group(t,e,i="average",r,o){if(!t.length||e<=0)return t;const s=[...t].sort((f,u)=>(f.x??0)-(u.x??0)),a=!(r!=null&&r.groupAll)&&o?s.filter(f=>{const u=f.x??0;return u>=o.min&&u<=o.max}):s,l=new Map;for(const f of a){const u=f.x??0,d=Math.floor(u/e)*e;l.has(d)||l.set(d,[]),l.get(d).push(f)}const c=(r==null?void 0:r.anchor)??"start",h=[];for(const[f,u]of l){const d=Gr.applyAnchor(f,e,c),p=Gr.approximate(d,u,i);h.push(p)}return r!=null&&r.smoothed&&h.length>=3?Gr.smooth(h):h}static applyAnchor(t,e,i){switch(i){case"middle":return t+e/2;case"end":return t+e;default:return t}}static smooth(t){const e=[t[0]];for(let i=1;i<t.length-1;i++){const r=t[i-1].y??0,o=t[i].y??0,s=t[i+1].y??0;e.push({...t[i],y:(r+o+s)/3})}return e.push(t[t.length-1]),e}static approximate(t,e,i){const r=e.map(o=>o.y??0);switch(i){case"sum":return{x:t,y:r.reduce((o,s)=>o+s,0)};case"open":return{x:t,y:r[0]};case"high":return{x:t,y:Math.max(...r)};case"low":return{x:t,y:Math.min(...r)};case"close":return{x:t,y:r[r.length-1]};case"range":return{x:t,y:Math.max(...r)-Math.min(...r)};case"ohlc":return{x:t,y:r[r.length-1],open:r[0],high:Math.max(...r),low:Math.min(...r),close:r[r.length-1]};case"average":default:return{x:t,y:r.reduce((o,s)=>o+s,0)/r.length}}}}class zA{constructor(t){this.head=0,this._size=0,this.capacity=t,this.buffer=new Array(t)}push(t){const e=this._size===this.capacity?this.buffer[this.head]:void 0,i=(this.head+this._size)%this.capacity;return this.buffer[i]=t,this._size<this.capacity?this._size++:this.head=(this.head+1)%this.capacity,e}pushMany(t){const e=[];for(const i of t){const r=this.push(i);r!==void 0&&e.push(r)}return e}get size(){return this._size}get isFull(){return this._size===this.capacity}get(t){if(!(t<0||t>=this._size))return this.buffer[(this.head+t)%this.capacity]}toArray(){const t=new Array(this._size);for(let e=0;e<this._size;e++)t[e]=this.buffer[(this.head+e)%this.capacity];return t}clear(){this.head=0,this._size=0}}class Op{constructor(){this.entries=[]}add(t,e){if(t==="setData"){this.entries=[{type:t,payload:e}];return}this.entries.push({type:t,payload:e})}get isEmpty(){return this.entries.length===0}}class BA{constructor(t,e){this.pendingUpdates=new Map,this.rafId=null,this.lastFrameTime=0,this.maxFps=t.maxFps??30,this.flushCallback=e}schedule(t,e,i){let r=this.pendingUpdates.get(t);r||(r=new Op,this.pendingUpdates.set(t,r)),r.add(e,i),this.requestFrame()}requestFrame(){this.rafId===null&&(this.rafId=requestAnimationFrame(()=>{this.rafId=null;const t=performance.now(),e=1e3/this.maxFps;if(t-this.lastFrameTime<e){this.rafId=requestAnimationFrame(()=>{this.rafId=null,this.lastFrameTime=performance.now(),this.flush()});return}this.lastFrameTime=t,this.flush()}))}flush(){if(this.pendingUpdates.size!==0){for(const[t,e]of this.pendingUpdates)e.isEmpty||t.applyBatch(e);this.pendingUpdates.clear(),this.flushCallback()}}destroy(){this.rafId!==null&&(cancelAnimationFrame(this.rafId),this.rafId=null),this.pendingUpdates.clear()}get hasPending(){return this.pendingUpdates.size>0}}class OA{static fromWebSocket(t,e,i,r){const o=(r==null?void 0:r.shift)??!1,s=a=>{let l;try{l=JSON.parse(a.data)}catch{return}const c=i(l);if(Array.isArray(c))if(e.addPoints)e.addPoints(c,!0,o);else{for(const h of c)e.addPoint(h,!1,o);e.addPoint(c[c.length-1],!0,o)}else e.addPoint(c,!0,o)};return t.addEventListener("message",s),{unsubscribe:()=>t.removeEventListener("message",s)}}static fromEventSource(t,e,i,r,o){const s=(o==null?void 0:o.shift)??!1,a=l=>{const c=r(l.data);e.addPoint(c,!0,s)};return t.addEventListener(i,a),{unsubscribe:()=>t.removeEventListener(i,a)}}static fromPolling(t,e,i,r){const o=(r==null?void 0:r.shift)??!1;let s=!0;const a=async()=>{if(s){try{const l=await t();if(!s)return;if(Array.isArray(l))if(e.addPoints)e.addPoints(l,!0,o);else for(const c of l)e.addPoint(c,!0,o);else e.addPoint(l,!0,o)}catch{}s&&setTimeout(a,i)}};return setTimeout(a,i),{unsubscribe:()=>{s=!1}}}}nd(),wp(),kp(),Bp();const ml={chart(n,t){return new Vf(n,t)},setOptions(n){ha(n)},getOptions(){return Ph()},dateFormat:ja,numberFormat:jo,templateFormat:Zt,stripHtmlTags:fe,color(n){return zs(n)},palettes:oo,getPalette(n){return Pl(n)},themes:so,themeNames:ag,getTheme(n){return $l(n)},setTheme(n){const t=so[n];t&&ha(t)},use(n){Gh.register(n),n.init(ml)},setLicenseKey(n){return Qe.setKey(n)},isLicensed(){return Qe.isLicensed()},configureLicensing(n){Qe.configure(n)},ChartRegistry:Tt},NA=Object.freeze(Object.defineProperty({__proto__:null,default:{}},Symbol.toStringTag,{value:"Module"}));St.A11yModule=yf,St.BaseSeries=Ut,St.Chart=Vf,St.ChartRegistry=Tt,St.CircularBuffer=zA,St.Crosshair=rf,St.DataGrouping=Gr,St.DataLabels=Jo,St.Drilldown=ff,St.EventBus=Hh,St.ExportButton=af,St.ExportModule=ne,St.KatuCharts=ml,St.Legend=ts,St.LicenseManager=Qe,St.ModuleRegistry=Gh,St.Navigator=Wf,St.OptionsParser=qn,St.RangeSelector=Hf,St.ResponsiveEngine=cf,St.SVGRenderer=vo,St.StreamAdapter=OA,St.Tooltip=Qo,St.UpdateBatch=Op,St.UpdateScheduler=BA,St.Zoom=mf,St.default=ml,St.getGlobalOptions=Ph,St.lttbDecimate=Sc,St.minMaxDecimate=B2,St.registerCoreSeriesTypes=nd,St.registerFinancialSeriesTypes=kp,St.registerFlowSeriesTypes=Bp,St.registerGeneralSeriesTypes=wp,St.setGlobalOptions=ha,Object.defineProperties(St,{__esModule:{value:!0},[Symbol.toStringTag]:{value:"Module"}})});
|