@gethelio/proxy 0.13.0 → 0.13.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -46,10 +46,12 @@ Two integration paths:
|
|
|
46
46
|
|
|
47
47
|
Helio governs at the strongest grade each path physically allows, and records it per call:
|
|
48
48
|
|
|
49
|
-
- **Structural** (stdio MCP) — Helio owns the
|
|
49
|
+
- **Structural** (stdio MCP) — Helio owns the child process it spawned, so nothing on the MCP path routes around it; a co-located process that can run the same command line is outside this grade (see the note below).
|
|
50
50
|
- **Network** (HTTP MCP) — structural given you control the upstream's egress.
|
|
51
51
|
- **Host-enforced** (hook adapters via the [adapter API](https://github.com/gethelio/helio/blob/main/docs/adapter-api.md), e.g. OpenClaw) — for frameworks that run tools in-process and expose hooks rather than an MCP transport. The framework's hook gate enforces; Helio decides. This is a cooperative, lower grade than the proxy path, and Helio labels it as such rather than overclaiming. Helio's decisions still cannot be evicted from the agent's context or prompt-injected, and any attempt to route around them is visible in the audit trail.
|
|
52
52
|
|
|
53
|
+
All three grades assume the proxy's config, secret, and audit store are outside the agent's reach. In the default local install they are not: the proxy runs as the same user as the agent. [SECURITY.md](https://github.com/gethelio/helio/blob/main/SECURITY.md#process-and-filesystem-boundaries) states the boundary and the deployments that close it.
|
|
54
|
+
|
|
53
55
|
## Quick Start (5 minutes)
|
|
54
56
|
|
|
55
57
|
### 1. Install
|
|
@@ -152,7 +154,7 @@ No MCP server to test against? Helio ships a zero-dependency echo server you can
|
|
|
152
154
|
|
|
153
155
|
About `dashboard.api_secret`:
|
|
154
156
|
|
|
155
|
-
- **If you ran `npx @gethelio/proxy init`**, your `helio.yaml` already contains a generated `
|
|
157
|
+
- **If you ran `npx @gethelio/proxy init`**, your `helio.yaml` already contains the SHA-256 digest of a generated secret, and `init` printed the secret itself once. Keep the printed value; it is what you log in with. Skip this step.
|
|
156
158
|
- **If you authored `helio.yaml` by hand** using the `${HELIO_DASHBOARD_SECRET}` placeholder shown above, set the variable before `start`:
|
|
157
159
|
|
|
158
160
|
```bash
|
|
@@ -193,7 +195,7 @@ Either way the call appears in the dashboard with its policy decision. (`get_wea
|
|
|
193
195
|
http://localhost:3100
|
|
194
196
|
```
|
|
195
197
|
|
|
196
|
-
If prompted, log in with the
|
|
198
|
+
If prompted, log in with the dashboard secret that `init` printed (the file holds only its digest).
|
|
197
199
|
|
|
198
200
|
That's it. Every tool call now passes through Helio with a full audit trail, rate limits, and spend controls.
|
|
199
201
|
|
package/dist/cli.js
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
import { Command } from "commander";
|
|
5
5
|
import { writeFile } from "fs/promises";
|
|
6
6
|
import { existsSync } from "fs";
|
|
7
|
-
import { randomBytes as
|
|
7
|
+
import { randomBytes as randomBytes3 } from "crypto";
|
|
8
8
|
import { dirname, resolve } from "path";
|
|
9
9
|
import { fileURLToPath } from "url";
|
|
10
10
|
|
|
@@ -574,7 +574,7 @@ function rootConfigChecks(cfg, ctx) {
|
|
|
574
574
|
ctx.addIssue({
|
|
575
575
|
code: "custom",
|
|
576
576
|
path: ["dashboard", "api_secret"],
|
|
577
|
-
message: 'dashboard.api_secret is required when any rule uses require_approval, any budget uses on_exceed: require_approval, or policies.flag_destructive or policies.on_tool_drift is "require_approval".
|
|
577
|
+
message: 'dashboard.api_secret is required when any rule uses require_approval, any budget uses on_exceed: require_approval, or policies.flag_destructive or policies.on_tool_drift is "require_approval". Run `helio secret` and set the printed digest under `dashboard.api_secret` in your helio.yaml (a plaintext value is accepted but warned about at startup). (See docs/approvals.md.)'
|
|
578
578
|
});
|
|
579
579
|
}
|
|
580
580
|
}
|
|
@@ -582,7 +582,7 @@ function rootConfigChecks(cfg, ctx) {
|
|
|
582
582
|
ctx.addIssue({
|
|
583
583
|
code: "custom",
|
|
584
584
|
path: ["dashboard", "api_secret"],
|
|
585
|
-
message: "dashboard.api_secret is required when dashboard.enabled is true unless dashboard.allow_open_mode is explicitly set to true.
|
|
585
|
+
message: "dashboard.api_secret is required when dashboard.enabled is true unless dashboard.allow_open_mode is explicitly set to true. Run `helio secret` and set the printed digest under dashboard.api_secret in helio.yaml."
|
|
586
586
|
});
|
|
587
587
|
}
|
|
588
588
|
if (!requiresSecret && cfg.dashboard.enabled && !hasSecret && cfg.dashboard.allow_open_mode && !isLoopbackHost(cfg.dashboard.host)) {
|
|
@@ -948,6 +948,7 @@ function isNamedConfig(config) {
|
|
|
948
948
|
|
|
949
949
|
// src/config/loader.ts
|
|
950
950
|
import { readFile } from "fs/promises";
|
|
951
|
+
import { createHash } from "crypto";
|
|
951
952
|
import yaml from "js-yaml";
|
|
952
953
|
|
|
953
954
|
// src/util/format-zod-errors.ts
|
|
@@ -967,36 +968,42 @@ var ConfigError = class extends Error {
|
|
|
967
968
|
}
|
|
968
969
|
};
|
|
969
970
|
var ENV_VAR_PATTERN = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
970
|
-
function
|
|
971
|
+
function interpolateTracked(value, env, path, out) {
|
|
971
972
|
if (typeof value === "string") {
|
|
972
|
-
|
|
973
|
+
let substitutions = 0;
|
|
974
|
+
const result = value.replace(ENV_VAR_PATTERN, (_match, varName) => {
|
|
973
975
|
const envValue = env[varName];
|
|
974
976
|
if (envValue === void 0) {
|
|
975
977
|
throw new ConfigError(`Environment variable "${varName}" is not set`);
|
|
976
978
|
}
|
|
979
|
+
substitutions += 1;
|
|
977
980
|
return envValue;
|
|
978
981
|
});
|
|
982
|
+
if (substitutions > 0 && out !== void 0) out.push(path.join("."));
|
|
983
|
+
return result;
|
|
979
984
|
}
|
|
980
985
|
if (Array.isArray(value)) {
|
|
981
|
-
return value.map((item) =>
|
|
986
|
+
return value.map((item, index) => interpolateTracked(item, env, [...path, String(index)], out));
|
|
982
987
|
}
|
|
983
988
|
if (value !== null && typeof value === "object") {
|
|
984
989
|
return Object.fromEntries(
|
|
985
990
|
Object.entries(value).map(([k, v]) => [
|
|
986
991
|
k,
|
|
987
|
-
|
|
992
|
+
interpolateTracked(v, env, [...path, k], out)
|
|
988
993
|
])
|
|
989
994
|
);
|
|
990
995
|
}
|
|
991
996
|
return value;
|
|
992
997
|
}
|
|
993
|
-
async function
|
|
994
|
-
let
|
|
998
|
+
async function loadConfigWithMeta(filePath, env) {
|
|
999
|
+
let bytes;
|
|
995
1000
|
try {
|
|
996
|
-
|
|
1001
|
+
bytes = await readFile(filePath);
|
|
997
1002
|
} catch {
|
|
998
1003
|
throw new ConfigError(`Cannot read config file: ${filePath}`);
|
|
999
1004
|
}
|
|
1005
|
+
const sha256 = createHash("sha256").update(bytes).digest("hex");
|
|
1006
|
+
const raw = bytes.toString("utf-8");
|
|
1000
1007
|
let parsed;
|
|
1001
1008
|
try {
|
|
1002
1009
|
parsed = yaml.load(raw);
|
|
@@ -1004,7 +1011,8 @@ async function loadConfig(filePath, env) {
|
|
|
1004
1011
|
const message = err instanceof Error ? err.message : String(err);
|
|
1005
1012
|
throw new ConfigError(`YAML parse error in ${filePath}: ${message}`);
|
|
1006
1013
|
}
|
|
1007
|
-
const
|
|
1014
|
+
const interpolatedPaths = [];
|
|
1015
|
+
const interpolated = interpolateTracked(parsed, env ?? process.env, [], interpolatedPaths);
|
|
1008
1016
|
const result = helioConfigSchema.safeParse(interpolated);
|
|
1009
1017
|
if (!result.success) {
|
|
1010
1018
|
const details = formatZodErrors(result.error).map(
|
|
@@ -1016,7 +1024,10 @@ async function loadConfig(filePath, env) {
|
|
|
1016
1024
|
details
|
|
1017
1025
|
);
|
|
1018
1026
|
}
|
|
1019
|
-
return result.data;
|
|
1027
|
+
return { config: result.data, sha256, interpolatedPaths };
|
|
1028
|
+
}
|
|
1029
|
+
async function loadConfig(filePath, env) {
|
|
1030
|
+
return (await loadConfigWithMeta(filePath, env)).config;
|
|
1020
1031
|
}
|
|
1021
1032
|
|
|
1022
1033
|
// src/config/watcher.ts
|
|
@@ -1518,6 +1529,26 @@ var ConfigWatcher = class {
|
|
|
1518
1529
|
}
|
|
1519
1530
|
};
|
|
1520
1531
|
|
|
1532
|
+
// src/auth/bearer.ts
|
|
1533
|
+
import { createHash as createHash2, timingSafeEqual } from "crypto";
|
|
1534
|
+
var BEARER_PREFIX = "Bearer ";
|
|
1535
|
+
var DIGEST_PATTERN = /^sha256:([0-9a-f]{64})$/;
|
|
1536
|
+
function isSecretDigest(value) {
|
|
1537
|
+
return DIGEST_PATTERN.test(value);
|
|
1538
|
+
}
|
|
1539
|
+
function secretDigest(plaintext) {
|
|
1540
|
+
return `sha256:${createHash2("sha256").update(plaintext, "utf-8").digest("hex")}`;
|
|
1541
|
+
}
|
|
1542
|
+
function verifyBearer(authHeader, expected) {
|
|
1543
|
+
if (!authHeader || !expected) return false;
|
|
1544
|
+
if (!authHeader.startsWith(BEARER_PREFIX)) return false;
|
|
1545
|
+
const presented = authHeader.slice(BEARER_PREFIX.length);
|
|
1546
|
+
const storedHex = DIGEST_PATTERN.exec(expected)?.[1];
|
|
1547
|
+
const expectedDigest = storedHex !== void 0 ? Buffer.from(storedHex, "hex") : createHash2("sha256").update(expected, "utf-8").digest();
|
|
1548
|
+
const actualDigest = createHash2("sha256").update(presented, "utf-8").digest();
|
|
1549
|
+
return timingSafeEqual(actualDigest, expectedDigest);
|
|
1550
|
+
}
|
|
1551
|
+
|
|
1521
1552
|
// src/server.ts
|
|
1522
1553
|
import { Hono as Hono3 } from "hono";
|
|
1523
1554
|
import { serve } from "@hono/node-server";
|
|
@@ -8107,20 +8138,10 @@ import { bodyLimit } from "hono/body-limit";
|
|
|
8107
8138
|
import { HTTPException } from "hono/http-exception";
|
|
8108
8139
|
import { z as z5 } from "zod";
|
|
8109
8140
|
|
|
8110
|
-
// src/auth/bearer.ts
|
|
8111
|
-
import { createHash, timingSafeEqual } from "crypto";
|
|
8112
|
-
function verifyBearer(authHeader, expected) {
|
|
8113
|
-
if (!authHeader || !expected) return false;
|
|
8114
|
-
const expectedHeader = `Bearer ${expected}`;
|
|
8115
|
-
const actualDigest = createHash("sha256").update(authHeader).digest();
|
|
8116
|
-
const expectedDigest = createHash("sha256").update(expectedHeader).digest();
|
|
8117
|
-
return timingSafeEqual(actualDigest, expectedDigest);
|
|
8118
|
-
}
|
|
8119
|
-
|
|
8120
8141
|
// src/sideband/governance-api.ts
|
|
8121
8142
|
import { Hono as Hono4 } from "hono";
|
|
8122
8143
|
import { z as z4 } from "zod";
|
|
8123
|
-
import { createHash as
|
|
8144
|
+
import { createHash as createHash3 } from "crypto";
|
|
8124
8145
|
var originSchema = z4.string().regex(/^[a-z0-9_-]{1,64}$/, "origin must match ^[a-z0-9_-]{1,64}$").default("sideband");
|
|
8125
8146
|
var metadataSchema = z4.record(z4.string(), z4.unknown()).nullish();
|
|
8126
8147
|
var toolDefinitionSchema = z4.object({
|
|
@@ -8277,7 +8298,7 @@ function auditPayloadHash(data) {
|
|
|
8277
8298
|
actual_amount: data.actual_amount ?? null,
|
|
8278
8299
|
evidence: canonicalEvidence(data.evidence)
|
|
8279
8300
|
};
|
|
8280
|
-
return
|
|
8301
|
+
return createHash3("sha256").update(canonicalize(semantic)).digest("hex");
|
|
8281
8302
|
}
|
|
8282
8303
|
function canonicalEvidence(evidence) {
|
|
8283
8304
|
if (!evidence || evidence.length === 0) return null;
|
|
@@ -11702,7 +11723,7 @@ function budgetEventsToCsv(events) {
|
|
|
11702
11723
|
// src/dashboard/api.ts
|
|
11703
11724
|
import { readFileSync } from "fs";
|
|
11704
11725
|
import { join } from "path";
|
|
11705
|
-
import { randomUUID as randomUUID8 } from "crypto";
|
|
11726
|
+
import { randomBytes as randomBytes2, randomUUID as randomUUID8 } from "crypto";
|
|
11706
11727
|
import { Hono as Hono8 } from "hono";
|
|
11707
11728
|
import { HTTPException as HTTPException2 } from "hono/http-exception";
|
|
11708
11729
|
import { z as z8 } from "zod";
|
|
@@ -11711,16 +11732,16 @@ import { serveStatic } from "@hono/node-server/serve-static";
|
|
|
11711
11732
|
import { streamSSE } from "hono/streaming";
|
|
11712
11733
|
|
|
11713
11734
|
// src/dashboard/session.ts
|
|
11714
|
-
import { createHash as
|
|
11735
|
+
import { createHash as createHash4, createHmac as createHmac3, randomBytes, timingSafeEqual as timingSafeEqual3 } from "crypto";
|
|
11715
11736
|
var DashboardSessionStore = class {
|
|
11716
|
-
|
|
11737
|
+
signingKey;
|
|
11717
11738
|
ttlMs;
|
|
11718
11739
|
now;
|
|
11719
11740
|
records = /* @__PURE__ */ new Map();
|
|
11720
11741
|
timer = null;
|
|
11721
11742
|
closed = false;
|
|
11722
11743
|
constructor(options) {
|
|
11723
|
-
this.
|
|
11744
|
+
this.signingKey = options.signingKey;
|
|
11724
11745
|
this.ttlMs = options.ttlMs ?? 8 * 60 * 60 * 1e3;
|
|
11725
11746
|
this.now = options.now ?? Date.now;
|
|
11726
11747
|
const cleanupIntervalMs = options.cleanupIntervalMs ?? 6e4;
|
|
@@ -11792,13 +11813,13 @@ var DashboardSessionStore = class {
|
|
|
11792
11813
|
const id = token.slice(0, dot);
|
|
11793
11814
|
const signature = token.slice(dot + 1);
|
|
11794
11815
|
const expected = this.sign(id);
|
|
11795
|
-
const actualDigest =
|
|
11796
|
-
const expectedDigest =
|
|
11816
|
+
const actualDigest = createHash4("sha256").update(signature).digest();
|
|
11817
|
+
const expectedDigest = createHash4("sha256").update(expected).digest();
|
|
11797
11818
|
if (!timingSafeEqual3(actualDigest, expectedDigest)) return void 0;
|
|
11798
11819
|
return id;
|
|
11799
11820
|
}
|
|
11800
11821
|
sign(id) {
|
|
11801
|
-
return createHmac3("sha256", this.
|
|
11822
|
+
return createHmac3("sha256", this.signingKey).update(id).digest("base64url");
|
|
11802
11823
|
}
|
|
11803
11824
|
};
|
|
11804
11825
|
|
|
@@ -11960,7 +11981,10 @@ function createDashboardAppWithLifecycle(deps, options) {
|
|
|
11960
11981
|
budgets
|
|
11961
11982
|
} = deps;
|
|
11962
11983
|
const apiSecret = options?.apiSecret;
|
|
11963
|
-
const sessionStore = apiSecret ? new DashboardSessionStore({
|
|
11984
|
+
const sessionStore = apiSecret ? new DashboardSessionStore({
|
|
11985
|
+
signingKey: randomBytes2(32).toString("hex"),
|
|
11986
|
+
ttlMs: SESSION_TTL_MS
|
|
11987
|
+
}) : void 0;
|
|
11964
11988
|
const app = new Hono8();
|
|
11965
11989
|
app.onError((err, c) => {
|
|
11966
11990
|
if (err instanceof HTTPException2) return err.getResponse();
|
|
@@ -12543,6 +12567,17 @@ function warnIfDashboardOpenMode(config, log = console.error) {
|
|
|
12543
12567
|
);
|
|
12544
12568
|
return true;
|
|
12545
12569
|
}
|
|
12570
|
+
function warnIfDashboardSecretLiteral(config, source, log = console.error) {
|
|
12571
|
+
const secret = config.dashboard.api_secret;
|
|
12572
|
+
if (!config.dashboard.enabled) return false;
|
|
12573
|
+
if (typeof secret !== "string" || secret.length === 0) return false;
|
|
12574
|
+
if (isSecretDigest(secret)) return false;
|
|
12575
|
+
if (source.interpolatedPaths.includes("dashboard.api_secret")) return false;
|
|
12576
|
+
log(
|
|
12577
|
+
`[helio] Warning: dashboard.api_secret is stored as plaintext in ${source.configPath}. Anyone who can read this file holds the operator credential and can approve tickets. Run \`helio secret\`, store the printed digest as dashboard.api_secret, and restart.`
|
|
12578
|
+
);
|
|
12579
|
+
return true;
|
|
12580
|
+
}
|
|
12546
12581
|
function warnIfNoEnforcement(policy, log = console.error) {
|
|
12547
12582
|
if (policy.rules.length > 0 || policy.defaultAction !== "allow" || policy.dryRun) return false;
|
|
12548
12583
|
log(
|
|
@@ -12628,7 +12663,7 @@ function getBundledDashboardDistPath() {
|
|
|
12628
12663
|
const assetsSubdirPath = resolve(assetsDir, "assets");
|
|
12629
12664
|
return existsSync(indexPath) && existsSync(assetsSubdirPath) ? assetsDir : null;
|
|
12630
12665
|
}
|
|
12631
|
-
function renderConfigTemplate(
|
|
12666
|
+
function renderConfigTemplate(apiSecretDigest) {
|
|
12632
12667
|
return `# Helio MCP Governance Proxy configuration
|
|
12633
12668
|
# Docs: https://github.com/gethelio/helio
|
|
12634
12669
|
|
|
@@ -12693,17 +12728,19 @@ upstream:
|
|
|
12693
12728
|
# retention: 90d
|
|
12694
12729
|
# include_responses: true
|
|
12695
12730
|
|
|
12696
|
-
# Operator dashboard + approval REST API. Bound to 127.0.0.1 by default
|
|
12731
|
+
# Operator dashboard + approval REST API. Bound to 127.0.0.1 by default. Do
|
|
12697
12732
|
# not change to 0.0.0.0 without putting an authenticating reverse proxy in
|
|
12698
|
-
# front. dashboard.api_secret
|
|
12699
|
-
#
|
|
12700
|
-
#
|
|
12701
|
-
# the
|
|
12733
|
+
# front. dashboard.api_secret holds the SHA-256 digest of the dashboard
|
|
12734
|
+
# secret, never the secret itself: log in to the dashboard and authenticate
|
|
12735
|
+
# sideband API clients with the secret that \`helio init\` printed once. To
|
|
12736
|
+
# rotate, run \`helio secret\`, paste the new digest here, and restart the
|
|
12737
|
+
# proxy; active dashboard sessions are invalidated. A plaintext value is
|
|
12738
|
+
# still accepted.
|
|
12702
12739
|
dashboard:
|
|
12703
12740
|
enabled: true
|
|
12704
12741
|
port: 3100
|
|
12705
12742
|
host: 127.0.0.1
|
|
12706
|
-
api_secret: "${
|
|
12743
|
+
api_secret: "${apiSecretDigest}"
|
|
12707
12744
|
|
|
12708
12745
|
# sdk:
|
|
12709
12746
|
# enabled: false
|
|
@@ -12744,8 +12781,11 @@ async function governUpstream(options) {
|
|
|
12744
12781
|
}
|
|
12745
12782
|
async function startCommand(configPath, options) {
|
|
12746
12783
|
let config;
|
|
12784
|
+
let interpolatedPaths = [];
|
|
12747
12785
|
try {
|
|
12748
|
-
|
|
12786
|
+
const loaded = await loadConfigWithMeta(configPath);
|
|
12787
|
+
config = loaded.config;
|
|
12788
|
+
interpolatedPaths = loaded.interpolatedPaths;
|
|
12749
12789
|
} catch (err) {
|
|
12750
12790
|
if (err instanceof ConfigError) {
|
|
12751
12791
|
console.error(`Error: ${err.message}`);
|
|
@@ -12913,7 +12953,7 @@ async function startCommand(configPath, options) {
|
|
|
12913
12953
|
if (config.sdk.enabled) {
|
|
12914
12954
|
sidebandToken = process.env["HELIO_SDK_TOKEN"];
|
|
12915
12955
|
if (!sidebandToken || sidebandToken.length === 0) {
|
|
12916
|
-
sidebandToken =
|
|
12956
|
+
sidebandToken = randomBytes3(32).toString("hex");
|
|
12917
12957
|
process.env["HELIO_SDK_TOKEN"] = sidebandToken;
|
|
12918
12958
|
sidebandTokenSource = "generated";
|
|
12919
12959
|
} else {
|
|
@@ -12921,7 +12961,7 @@ async function startCommand(configPath, options) {
|
|
|
12921
12961
|
}
|
|
12922
12962
|
adapterToken = process.env["HELIO_ADAPTER_TOKEN"];
|
|
12923
12963
|
if (!adapterToken || adapterToken.length === 0) {
|
|
12924
|
-
adapterToken =
|
|
12964
|
+
adapterToken = randomBytes3(32).toString("hex");
|
|
12925
12965
|
process.env["HELIO_ADAPTER_TOKEN"] = adapterToken;
|
|
12926
12966
|
adapterTokenSource = "generated";
|
|
12927
12967
|
} else {
|
|
@@ -13028,6 +13068,7 @@ async function startCommand(configPath, options) {
|
|
|
13028
13068
|
warnIfWebhookChannelUnreachable(config);
|
|
13029
13069
|
warnIfSdkSidebandExposed(config);
|
|
13030
13070
|
warnIfDashboardOpenMode(config);
|
|
13071
|
+
warnIfDashboardSecretLiteral(config, { configPath, interpolatedPaths });
|
|
13031
13072
|
warnIfBudgetWindowExceedsRetention(config);
|
|
13032
13073
|
const channelCount = config.approval.channels.length;
|
|
13033
13074
|
console.error(
|
|
@@ -13127,15 +13168,22 @@ async function initCommand(outputPath, force) {
|
|
|
13127
13168
|
console.error(`Error: ${outputPath} already exists. Use --force to overwrite.`);
|
|
13128
13169
|
process.exit(1);
|
|
13129
13170
|
}
|
|
13130
|
-
const
|
|
13131
|
-
await writeFile(outputPath, renderConfigTemplate(
|
|
13171
|
+
const secret = randomBytes3(32).toString("hex");
|
|
13172
|
+
await writeFile(outputPath, renderConfigTemplate(secretDigest(secret)), "utf-8");
|
|
13132
13173
|
console.error(`Created ${outputPath}`);
|
|
13133
13174
|
console.error("");
|
|
13134
|
-
console.error("
|
|
13135
|
-
console.error(` ${
|
|
13175
|
+
console.error("Dashboard secret (shown once; the file stores only its SHA-256 digest):");
|
|
13176
|
+
console.error(` ${secret}`);
|
|
13136
13177
|
console.error("");
|
|
13137
|
-
console.error("
|
|
13138
|
-
console.error("for sideband API clients
|
|
13178
|
+
console.error("Store it in your password manager. Use it to log in to the dashboard and");
|
|
13179
|
+
console.error("as the Bearer credential for sideband API clients (127.0.0.1:3100 by");
|
|
13180
|
+
console.error("default). If you lose it, run `helio secret`, paste the new digest into");
|
|
13181
|
+
console.error("dashboard.api_secret, and restart the proxy.");
|
|
13182
|
+
}
|
|
13183
|
+
function secretCommand() {
|
|
13184
|
+
const secret = randomBytes3(32).toString("hex");
|
|
13185
|
+
console.log(`secret: ${secret}`);
|
|
13186
|
+
console.log(`digest: ${secretDigest(secret)}`);
|
|
13139
13187
|
}
|
|
13140
13188
|
async function validateCommand(configPath) {
|
|
13141
13189
|
try {
|
|
@@ -13321,5 +13369,8 @@ program.command("start").description("Load config and start the proxy server").o
|
|
|
13321
13369
|
);
|
|
13322
13370
|
program.command("init").description("Scaffold a helio.yaml config file with commented defaults").option("-o, --output <path>", "Output file path", DEFAULT_CONFIG_PATH).option("-f, --force", "Overwrite existing file", false).action((opts) => initCommand(opts.output, opts.force));
|
|
13323
13371
|
program.command("validate").description("Validate a helio.yaml config file").option("-c, --config <path>", "Path to helio.yaml", DEFAULT_CONFIG_PATH).action((opts) => validateCommand(opts.config));
|
|
13372
|
+
program.command("secret").description("Generate a dashboard secret and the digest to store as dashboard.api_secret").action(() => {
|
|
13373
|
+
secretCommand();
|
|
13374
|
+
});
|
|
13324
13375
|
program.command("export").description("Export audit records or a budget ledger to JSON or CSV").option("-c, --config <path>", "Path to helio.yaml", DEFAULT_CONFIG_PATH).option("-f, --format <format>", "Output format: json or csv", "json").option("--budgets <name>", "Export the named budget ledger instead of the audit trail").option("--tool <name>", "Filter by tool name").option("--decision <decision>", "Filter by policy decision").option("--reason <reason>", "Filter by block reason").option("--session <id>", "Filter by session ID").option("--upstream <name>", "Filter by upstream name").option("--from <iso>", "Start time (ISO 8601)").option("--to <iso>", "End time (ISO 8601)").option("--limit <n>", "Max records to export (up to 10000)", "1000").action((opts) => exportCommand(opts));
|
|
13325
13376
|
program.parse();
|
|
@@ -125,4 +125,4 @@ Please change the parent <Route path="${j}"> to <Route path="${j==="/"?"*":`${j}
|
|
|
125
125
|
*
|
|
126
126
|
* This source code is licensed under the MIT license found in the
|
|
127
127
|
* LICENSE file in the root directory of this source tree.
|
|
128
|
-
*/var MA;function CG(){if(MA)return Ve;MA=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),b=Symbol.for("react.view_transition"),S=Symbol.for("react.client.reference");function O(_){if(typeof _=="object"&&_!==null){var w=_.$$typeof;switch(w){case e:switch(_=_.type,_){case n:case l:case r:case d:case h:case b:return _;default:switch(_=_&&_.$$typeof,_){case s:case f:case v:case m:return _;case u:return _;default:return w}}case t:return w}}}return Ve.ContextConsumer=u,Ve.ContextProvider=s,Ve.Element=e,Ve.ForwardRef=f,Ve.Fragment=n,Ve.Lazy=v,Ve.Memo=m,Ve.Portal=t,Ve.Profiler=l,Ve.StrictMode=r,Ve.Suspense=d,Ve.SuspenseList=h,Ve.isContextConsumer=function(_){return O(_)===u},Ve.isContextProvider=function(_){return O(_)===s},Ve.isElement=function(_){return typeof _=="object"&&_!==null&&_.$$typeof===e},Ve.isForwardRef=function(_){return O(_)===f},Ve.isFragment=function(_){return O(_)===n},Ve.isLazy=function(_){return O(_)===v},Ve.isMemo=function(_){return O(_)===m},Ve.isPortal=function(_){return O(_)===t},Ve.isProfiler=function(_){return O(_)===l},Ve.isStrictMode=function(_){return O(_)===r},Ve.isSuspense=function(_){return O(_)===d},Ve.isSuspenseList=function(_){return O(_)===h},Ve.isValidElementType=function(_){return typeof _=="string"||typeof _=="function"||_===n||_===l||_===r||_===d||_===h||typeof _=="object"&&_!==null&&(_.$$typeof===v||_.$$typeof===m||_.$$typeof===s||_.$$typeof===u||_.$$typeof===f||_.$$typeof===S||_.getModuleId!==void 0)},Ve.typeOf=O,Ve}var DA;function TG(){return DA||(DA=1,xy.exports=CG()),xy.exports}var NG=TG(),RA=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",kA=null,Sy=null,z5=e=>{if(e===kA&&Array.isArray(Sy))return Sy;var t=[];return y.Children.forEach(e,n=>{ut(n)||(NG.isFragment(n)?t=t.concat(z5(n.props.children)):t.push(n))}),Sy=t,kA=e,t};function Nb(e,t){var n=[],r=[];return Array.isArray(t)?r=t.map(l=>RA(l)):r=[RA(t)],z5(e).forEach(l=>{var u=$i(l,"type.displayName")||$i(l,"type.name");u&&r.indexOf(u)!==-1&&n.push(l)}),n}var I5=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0,wy={},LA;function PG(){return LA||(LA=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){var l;if(typeof n!="object"||n==null)return!1;if(Object.getPrototypeOf(n)===null)return!0;if(Object.prototype.toString.call(n)!=="[object Object]"){const u=n[Symbol.toStringTag];return u==null||!((l=Object.getOwnPropertyDescriptor(n,Symbol.toStringTag))!=null&&l.writable)?!1:n.toString()===`[object ${u}]`}let r=n;for(;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(n)===r}e.isPlainObject=t})(wy)),wy}var Oy,zA;function MG(){return zA||(zA=1,Oy=PG().isPlainObject),Oy}var DG=MG();const RG=Qa(DG);var IA,BA,UA,$A,qA;function HA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function KA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?HA(Object(n),!0).forEach(function(r){kG(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):HA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function kG(e,t,n){return(t=LG(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function LG(e){var t=zG(e,"string");return typeof t=="symbol"?t:t+""}function zG(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function dd(){return dd=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dd.apply(null,arguments)}function Ao(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var YA=(e,t,n,r,l)=>{var u=n-r,s;return s=dt(IA||(IA=Ao(["M ",",",""])),e,t),s+=dt(BA||(BA=Ao(["L ",",",""])),e+n,t),s+=dt(UA||(UA=Ao(["L ",",",""])),e+n-u/2,t+l),s+=dt($A||($A=Ao(["L ",",",""])),e+n-u/2-r,t+l),s+=dt(qA||(qA=Ao(["L ",","," Z"])),e,t),s},IG={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},BG=e=>{var t=Ct(e,IG),{x:n,y:r,upperWidth:l,lowerWidth:u,height:s,className:f}=t,{animationEasing:d,animationDuration:h,animationBegin:m,isUpdateAnimationActive:v}=t,b=y.useRef(null),[S,O]=y.useState(-1),_=y.useRef(l),w=y.useRef(u),j=y.useRef(s),A=y.useRef(n),N=y.useRef(r),T=hs(e,"trapezoid-");if(y.useEffect(()=>{if(b.current&&b.current.getTotalLength)try{var F=b.current.getTotalLength();F&&O(F)}catch{}},[]),n!==+n||r!==+r||l!==+l||u!==+u||s!==+s||l===0&&u===0||s===0)return null;var P=Ie("recharts-trapezoid",f);if(!v)return y.createElement("g",null,y.createElement("path",dd({},rn(t),{className:P,d:YA(n,r,l,u,s)})));var M=_.current,R=w.current,I=j.current,q=A.current,W=N.current,X="0px ".concat(S===-1?1:S,"px"),U="".concat(S,"px ").concat(S,"px"),se=JT(["strokeDasharray"],h,d);return y.createElement(ds,{animationId:T,key:T,canBegin:S>0,duration:h,easing:d,isActive:v,begin:m},F=>{var J=nt(M,l,F),z=nt(R,u,F),V=nt(I,s,F),ne=nt(q,n,F),le=nt(W,r,F);b.current&&(_.current=J,w.current=z,j.current=V,A.current=ne,N.current=le);var Q=F>0?{transition:se,strokeDasharray:U}:{strokeDasharray:X};return y.createElement("path",dd({},rn(t),{className:P,d:YA(ne,le,J,z,V),ref:b,style:KA(KA({},Q),t.style)}))})},UG=["option","shapeType","activeClassName","inActiveClassName"];function $G(e,t){if(e==null)return{};var n,r,l=qG(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function qG(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function GA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function hd(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?GA(Object(n),!0).forEach(function(r){HG(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):GA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function HG(e,t,n){return(t=KG(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function KG(e){var t=YG(e,"string");return typeof t=="symbol"?t:t+""}function YG(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function GG(e,t){return hd(hd({},t),e)}function VG(e,t){return e==="symbols"}function VA(e){var{shapeType:t,elementProps:n}=e;switch(t){case"rectangle":return y.createElement(rN,n);case"trapezoid":return y.createElement(BG,n);case"sector":return y.createElement(v0,n);case"symbols":if(VG(t))return y.createElement(Zg,n);break;case"curve":return y.createElement(Zl,n);default:return null}}function XG(e){return y.isValidElement(e)?e.props:e}function B5(e){var{option:t,shapeType:n,activeClassName:r="recharts-active-shape",inActiveClassName:l="recharts-shape"}=e,u=$G(e,UG),s;if(y.isValidElement(t))s=y.cloneElement(t,hd(hd({},u),XG(t)));else if(typeof t=="function")s=t(u,u.index);else if(RG(t)&&typeof t!="boolean"){var f=GG(t,u);s=y.createElement(VA,{shapeType:n,elementProps:f})}else{var d=u;s=y.createElement(VA,{shapeType:n,elementProps:d})}return u.isActive?y.createElement(ht,{className:r},s):y.createElement(ht,{className:l},s)}var Pb=(e,t,n)=>{var r=Xe();return(l,u)=>s=>{e==null||e(l,u,s),r(KP({activeIndex:String(u),activeDataKey:t,activeCoordinate:l.tooltipPosition,activeGraphicalItemId:n}))}},Mb=e=>{var t=Xe();return(n,r)=>l=>{e==null||e(n,r,l),t(eH())}},Db=(e,t,n)=>{var r=Xe();return(l,u)=>s=>{e==null||e(l,u,s),r(tH({activeIndex:String(u),activeDataKey:t,activeCoordinate:l.tooltipPosition,activeGraphicalItemId:n}))}};function Rb(e){var{tooltipEntrySettings:t}=e,n=Xe(),r=Jt(),l=y.useRef(null);return y.useLayoutEffect(()=>{r||(l.current===null?n(Zq(t)):l.current!==t&&n(Wq({prev:l.current,next:t})),l.current=t)},[t,n,r]),y.useLayoutEffect(()=>()=>{l.current&&(n(Qq(l.current)),l.current=null)},[n]),null}function U5(e){var{legendPayload:t}=e,n=Xe(),r=Jt(),l=y.useRef(null);return y.useLayoutEffect(()=>{r||(l.current===null?n(VT(t)):l.current!==t&&n(XT({prev:l.current,next:t})),l.current=t)},[n,r,t]),y.useLayoutEffect(()=>()=>{l.current&&(n(FT(l.current)),l.current=null)},[n]),null}function FG(e){var{legendPayload:t}=e,n=Xe(),r=pe(ke),l=y.useRef(null);return y.useLayoutEffect(()=>{r!=="centric"&&r!=="radial"||(l.current===null?n(VT(t)):l.current!==t&&n(XT({prev:l.current,next:t})),l.current=t)},[n,r,t]),y.useLayoutEffect(()=>()=>{l.current&&(n(FT(l.current)),l.current=null)},[n]),null}var _y,ZG=()=>{var[e]=y.useState(()=>Bo("uid-"));return e},WG=(_y=fR.useId)!==null&&_y!==void 0?_y:ZG;function QG(e,t){var n=WG();return t||(e?"".concat(e,"-").concat(n):n)}var JG=y.createContext(void 0),kb=e=>{var{id:t,type:n,children:r}=e,l=QG("recharts-".concat(n),t);return y.createElement(JG.Provider,{value:l},r(l))},eV={cartesianItems:[],polarItems:[]},$5=Qt({name:"graphicalItems",initialState:eV,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(t.payload)},prepare:et()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,l=Vn(e).cartesianItems.indexOf(n);l>-1&&(e.cartesianItems[l]=r)},prepare:et()},removeCartesianGraphicalItem:{reducer(e,t){var n=Vn(e).cartesianItems.indexOf(t.payload);n>-1&&e.cartesianItems.splice(n,1)},prepare:et()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(t.payload)},prepare:et()},removePolarGraphicalItem:{reducer(e,t){var n=Vn(e).polarItems.indexOf(t.payload);n>-1&&e.polarItems.splice(n,1)},prepare:et()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,l=Vn(e).polarItems.indexOf(n);l>-1&&(e.polarItems[l]=r)},prepare:et()}}}),{addCartesianGraphicalItem:tV,replaceCartesianGraphicalItem:nV,removeCartesianGraphicalItem:rV,addPolarGraphicalItem:aV,removePolarGraphicalItem:iV,replacePolarGraphicalItem:lV}=$5.actions,uV=$5.reducer,oV=e=>{var t=Xe(),n=y.useRef(null);return y.useLayoutEffect(()=>{n.current===null?t(tV(e)):n.current!==e&&t(nV({prev:n.current,next:e})),n.current=e},[t,e]),y.useLayoutEffect(()=>()=>{n.current&&(t(rV(n.current)),n.current=null)},[t]),null},q5=y.memo(oV),sV=e=>{var t=Xe(),n=y.useRef(null);return y.useLayoutEffect(()=>{n.current===null?t(aV(e)):n.current!==e&&t(lV({prev:n.current,next:e})),n.current=e},[t,e]),y.useLayoutEffect(()=>()=>{n.current&&(t(iV(n.current)),n.current=null)},[t]),null},cV=y.memo(sV),fV=["key"],dV=["onMouseEnter","onClick","onMouseLeave"],hV=["id"],mV=["id"];function Za(){return Za=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Za.apply(null,arguments)}function ph(e,t){if(e==null)return{};var n,r,l=vV(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function vV(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function XA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function at(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?XA(Object(n),!0).forEach(function(r){pV(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):XA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function pV(e,t,n){return(t=yV(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yV(e){var t=gV(e,"string");return typeof t=="symbol"?t:t+""}function gV(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function bV(e){var t=y.useMemo(()=>Nb(e.children,dh),[e.children]),n=pe(r=>jG(r,e.id,t));return n==null?null:y.createElement(FG,{legendPayload:n})}function xV(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(y.isValidElement(e)){var t,n=(t=e.props)===null||t===void 0?void 0:t.fill;return typeof n=="string"?n:void 0}var{fill:r}=e;return typeof r=="string"?r:void 0}}var SV=y.memo(e=>{var{dataKey:t,nameKey:n,sectors:r,stroke:l,strokeWidth:u,fill:s,name:f,hide:d,tooltipType:h,id:m,activeShape:v}=e,b=xV(v),S=r.map(_=>{var w=_.tooltipPayload;return b==null||w==null?w:w.map(j=>at(at({},j),{},{color:b,fill:b}))}),O={dataDefinedOnItem:S,getPosition:_=>{var w;return(w=r[Number(_)])===null||w===void 0?void 0:w.tooltipPosition},settings:{stroke:l,strokeWidth:u,fill:s,dataKey:t,nameKey:n,name:du(f,t),hide:d,type:h,color:s,unit:"",graphicalItemId:m}};return y.createElement(Rb,{tooltipEntrySettings:O})}),wV=(e,t)=>e>t?"start":e<t?"end":"middle",OV=(e,t,n)=>Wt(typeof t=="function"?t(e):t,n,n*.8),_V=(e,t,n)=>{var{top:r,left:l,width:u,height:s}=t,f=aN(u,s),d=l+Wt(e.cx,u,u/2),h=r+Wt(e.cy,s,s/2),m=Wt(e.innerRadius,f,0),v=OV(n,e.outerRadius,f),b=e.maxRadius||Math.sqrt(u*u+s*s)/2;return{cx:d,cy:h,innerRadius:m,outerRadius:v,maxRadius:b}},EV=(e,t)=>{var n=kt(t-e),r=Math.min(Math.abs(t-e),360);return n*r},jV=(e,t)=>{if(y.isValidElement(e))return y.cloneElement(e,t);if(typeof e=="function")return e(t);var n=Ie("recharts-pie-label-line",typeof e!="boolean"?e.className:""),{key:r}=t,l=ph(t,fV);return y.createElement(Zl,Za({},l,{type:"linear",className:n}))},AV=(e,t,n)=>{if(y.isValidElement(e))return y.cloneElement(e,t);var r=n;if(typeof e=="function"&&(r=e(t),y.isValidElement(r)))return r;var l=Ie("recharts-pie-label-text",k5(e));return y.createElement(hh,Za({},t,{alignmentBaseline:"middle",className:l}),r)};function CV(e){var{sectors:t,props:n,showLabels:r}=e,{label:l,labelLine:u,dataKey:s}=n;if(!r||!l||!t)return null;var f=pn(n),d=Bi(l),h=Bi(u),m=typeof l=="object"&&"offsetRadius"in l&&typeof l.offsetRadius=="number"&&l.offsetRadius||20,v=t.map((b,S)=>{var O=(b.startAngle+b.endAngle)/2,_=St(b.cx,b.cy,b.outerRadius+m,O),w=at(at(at(at({},f),b),{},{stroke:"none"},d),{},{index:S,textAnchor:wV(_.x,b.cx)},_),j=at(at(at(at({},f),b),{},{fill:"none",stroke:b.fill},h),{},{index:S,points:[St(b.cx,b.cy,b.outerRadius,O),_],key:"line"});return y.createElement(yn,{zIndex:wt.label,key:"label-".concat(b.startAngle,"-").concat(b.endAngle,"-").concat(b.midAngle,"-").concat(S)},y.createElement(ht,null,u&&jV(u,j),AV(l,w,$e(b,s))))});return y.createElement(ht,{className:"recharts-pie-labels"},v)}function TV(e){var{sectors:t,props:n,showLabels:r}=e,{label:l}=n;return typeof l=="object"&&l!=null&&"position"in l?y.createElement(Ab,{label:l}):y.createElement(CV,{sectors:t,props:n,showLabels:r})}function NV(e){var{sectors:t,activeShape:n,inactiveShape:r,allOtherPieProps:l,shape:u,id:s}=e,f=pe(Fa),d=pe(bb),h=pe(l5),{onMouseEnter:m,onClick:v,onMouseLeave:b}=l,S=ph(l,dV),O=Pb(m,l.dataKey,s),_=Mb(b),w=Db(v,l.dataKey,s);return t==null||t.length===0?null:y.createElement(y.Fragment,null,t.map((j,A)=>{if((j==null?void 0:j.startAngle)===0&&(j==null?void 0:j.endAngle)===0&&t.length!==1)return null;var N=h==null||h===s,T=String(A)===f&&(d==null||l.dataKey===d)&&N,P=f?r:null,M=n&&T?n:P,R=at(at({},j),{},{stroke:j.stroke,tabIndex:-1,[DT]:A,[RT]:s});return y.createElement(ht,Za({key:"sector-".concat(j==null?void 0:j.startAngle,"-").concat(j==null?void 0:j.endAngle,"-").concat(j.midAngle,"-").concat(A),tabIndex:-1,className:"recharts-pie-sector"},is(S,j,A),{onMouseEnter:O(j,A),onMouseLeave:_(j,A),onClick:w(j,A)}),y.createElement(B5,Za({option:u??M,index:A,shapeType:"sector",isActive:T},R)))}))}function PV(e){var t,{pieSettings:n,displayedData:r,cells:l,offset:u}=e,{cornerRadius:s,startAngle:f,endAngle:d,dataKey:h,nameKey:m,tooltipType:v}=n,b=Math.abs(n.minAngle),S=EV(f,d),O=Math.abs(S),_=r.length<=1?0:(t=n.paddingAngle)!==null&&t!==void 0?t:0,w=r.filter(I=>$e(I,h,0)!==0).length,j=(O>=360?w:w-1)*_,A=r.reduce((I,q)=>{var W=$e(q,h,0);return I+(de(W)?W:0)},0),N=b>0&&A>0&&r.some(I=>{var q=$e(I,h,0),W=(de(q)?q:0)/A;return q!==0&&W*O<b}),T=N?b:0,P=O-w*T-j,M;if(A>0){var R;M=r.map((I,q)=>{var W=$e(I,h,0),X=$e(I,m,q),U=_V(n,u,I),se=(de(W)?W:0)/A,F,J=at(at({},I),l&&l[q]&&l[q].props),z=J!=null&&"fill"in J&&typeof J.fill=="string"?J.fill:n.fill;q?F=R.endAngle+kt(S)*_*(W!==0?1:0):F=f;var V=F+kt(S)*((W!==0?T:0)+se*P),ne=(F+V)/2,le=(U.innerRadius+U.outerRadius)/2,Q=[{name:X,value:W,payload:J,dataKey:h,type:v,color:z,fill:z,graphicalItemId:n.id}],D=St(U.cx,U.cy,le,ne);return R=at(at(at(at({},n.presentationProps),{},{percent:se,cornerRadius:typeof s=="string"?parseFloat(s):s,name:X,tooltipPayload:Q,midAngle:ne,middleRadius:le,tooltipPosition:D},J),U),{},{value:W,dataKey:h,startAngle:F,endAngle:V,payload:J,paddingAngle:W!==0?kt(S)*_:0}),R})}return M}function MV(e){var{showLabels:t,sectors:n,children:r}=e,l=y.useMemo(()=>!t||!n?[]:n.map(u=>({value:u.value,payload:u.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:u.cx,cy:u.cy,innerRadius:u.innerRadius,outerRadius:u.outerRadius,startAngle:u.startAngle,endAngle:u.endAngle,clockWise:!1},fill:u.fill})),[n,t]);return y.createElement(sG,{value:t?l:void 0},r)}function DV(e){var{props:t,previousSectorsRef:n,id:r}=e,{sectors:l,isAnimationActive:u,animationBegin:s,animationDuration:f,animationEasing:d,activeShape:h,inactiveShape:m,onAnimationStart:v,onAnimationEnd:b}=t,S=hs(t,"recharts-pie-"),O=n.current,[_,w]=y.useState(!1),j=y.useCallback(()=>{typeof b=="function"&&b(),w(!1)},[b]),A=y.useCallback(()=>{typeof v=="function"&&v(),w(!0)},[v]);return y.createElement(MV,{showLabels:!_,sectors:l},y.createElement(ds,{animationId:S,begin:s,duration:f,isActive:u,easing:d,onAnimationStart:A,onAnimationEnd:j,key:S},N=>{var T,P=[],M=l&&l[0],R=(T=M==null?void 0:M.startAngle)!==null&&T!==void 0?T:0;return l==null||l.forEach((I,q)=>{var W=O&&O[q],X=q>0?$i(I,"paddingAngle",0):0;if(W){var U=nt(W.endAngle-W.startAngle,I.endAngle-I.startAngle,N),se=at(at({},I),{},{startAngle:R+X,endAngle:R+U+X});P.push(se),R=se.endAngle}else{var{endAngle:F,startAngle:J}=I,z=nt(0,F-J,N),V=at(at({},I),{},{startAngle:R+X,endAngle:R+z+X});P.push(V),R=V.endAngle}}),n.current=P,y.createElement(ht,null,y.createElement(NV,{sectors:P,activeShape:h,inactiveShape:m,allOtherPieProps:t,shape:t.shape,id:r}))}),y.createElement(TV,{showLabels:!_,sectors:l,props:t}),t.children)}var RV={animationBegin:400,animationDuration:1500,animationEasing:"ease",cx:"50%",cy:"50%",dataKey:"value",endAngle:360,fill:"#808080",hide:!1,innerRadius:0,isAnimationActive:"auto",label:!1,labelLine:!0,legendType:"rect",minAngle:0,nameKey:"name",outerRadius:"80%",paddingAngle:0,rootTabIndex:0,startAngle:0,stroke:"#fff",zIndex:wt.area};function kV(e){var{id:t}=e,n=ph(e,hV),{hide:r,className:l,rootTabIndex:u}=e,s=y.useMemo(()=>Nb(e.children,dh),[e.children]),f=pe(m=>AG(m,t,s)),d=y.useRef(null),h=Ie("recharts-pie",l);return r||f==null?(d.current=null,y.createElement(ht,{tabIndex:u,className:h})):y.createElement(yn,{zIndex:e.zIndex},y.createElement(SV,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:f,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,id:t,activeShape:e.activeShape}),y.createElement(ht,{tabIndex:u,className:h},y.createElement(DV,{props:at(at({},n),{},{sectors:f}),previousSectorsRef:d,id:t})))}function LV(e){var t=Ct(e,RV),{id:n}=t,r=ph(t,mV),l=pn(r);return y.createElement(kb,{id:n,type:"pie"},u=>y.createElement(y.Fragment,null,y.createElement(cV,{type:"pie",id:u,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:l,maxRadius:t.maxRadius}),y.createElement(bV,Za({},r,{id:u})),y.createElement(kV,Za({},r,{id:u}))))}var H5=LV;H5.displayName="Pie";var zV=["points"];function FA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Ey(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?FA(Object(n),!0).forEach(function(r){IV(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):FA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function IV(e,t,n){return(t=BV(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function BV(e){var t=UV(e,"string");return typeof t=="symbol"?t:t+""}function UV(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function md(){return md=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},md.apply(null,arguments)}function $V(e,t){if(e==null)return{};var n,r,l=qV(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function qV(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function HV(e){var{option:t,dotProps:n,className:r}=e;if(y.isValidElement(t))return y.cloneElement(t,n);if(typeof t=="function")return t(n);var l=Ie(r,typeof t!="boolean"?t.className:""),u=n??{},{points:s}=u,f=$V(u,zV);return y.createElement(P5,md({},f,{className:l}))}function KV(e,t){return e==null?!1:t?!0:e.length===1}function YV(e){var{points:t,dot:n,className:r,dotClassName:l,dataKey:u,baseProps:s,needClip:f,clipPathId:d,zIndex:h=wt.scatter}=e;if(!KV(t,n))return null;var m=I5(n),v=TL(n),b=t.map((O,_)=>{var w,j,A=Ey(Ey(Ey({r:3},s),v),{},{index:_,cx:(w=O.x)!==null&&w!==void 0?w:void 0,cy:(j=O.y)!==null&&j!==void 0?j:void 0,dataKey:u,value:O.value,payload:O.payload,points:t});return y.createElement(HV,{key:"dot-".concat(_),option:n,dotProps:A,className:l})}),S={};return f&&d!=null&&(S.clipPath="url(#clipPath-".concat(m?"":"dots-").concat(d,")")),y.createElement(yn,{zIndex:h},y.createElement(ht,md({className:r},S),b))}function ZA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function WA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?ZA(Object(n),!0).forEach(function(r){GV(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ZA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function GV(e,t,n){return(t=VV(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function VV(e){var t=XV(e,"string");return typeof t=="symbol"?t:t+""}function XV(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var K5=0,FV={xAxis:{},yAxis:{},zAxis:{}},Y5=Qt({name:"cartesianAxis",initialState:FV,reducers:{addXAxis:{reducer(e,t){e.xAxis[t.payload.id]=t.payload},prepare:et()},replaceXAxis:{reducer(e,t){var{prev:n,next:r}=t.payload;e.xAxis[n.id]!==void 0&&(n.id!==r.id&&delete e.xAxis[n.id],e.xAxis[r.id]=r)},prepare:et()},removeXAxis:{reducer(e,t){delete e.xAxis[t.payload.id]},prepare:et()},addYAxis:{reducer(e,t){e.yAxis[t.payload.id]=t.payload},prepare:et()},replaceYAxis:{reducer(e,t){var{prev:n,next:r}=t.payload;e.yAxis[n.id]!==void 0&&(n.id!==r.id&&delete e.yAxis[n.id],e.yAxis[r.id]=r)},prepare:et()},removeYAxis:{reducer(e,t){delete e.yAxis[t.payload.id]},prepare:et()},addZAxis:{reducer(e,t){e.zAxis[t.payload.id]=t.payload},prepare:et()},replaceZAxis:{reducer(e,t){var{prev:n,next:r}=t.payload;e.zAxis[n.id]!==void 0&&(n.id!==r.id&&delete e.zAxis[n.id],e.zAxis[r.id]=r)},prepare:et()},removeZAxis:{reducer(e,t){delete e.zAxis[t.payload.id]},prepare:et()},updateYAxisWidth(e,t){var{id:n,width:r}=t.payload,l=e.yAxis[n];if(l){var u,s=l.widthHistory||[];if(s.length===3&&s[0]===s[2]&&r===s[1]&&r!==l.width&&Math.abs(r-((u=s[0])!==null&&u!==void 0?u:0))<=1)return;var f=[...s,r].slice(-3);e.yAxis[n]=WA(WA({},l),{},{width:r,widthHistory:f})}}}}),{addXAxis:ZV,replaceXAxis:WV,removeXAxis:QV,addYAxis:JV,replaceYAxis:eX,removeYAxis:tX,addZAxis:KQ,replaceZAxis:YQ,removeZAxis:GQ,updateYAxisWidth:nX}=Y5.actions,rX=Y5.reducer,aX=$([Tt],e=>({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),iX=$([aX,oa,sa],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),Lb=()=>pe(iX),lX=()=>pe(FH);function QA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function jy(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?QA(Object(n),!0).forEach(function(r){uX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):QA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function uX(e,t,n){return(t=oX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function oX(e){var t=sX(e,"string");return typeof t=="symbol"?t:t+""}function sX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var cX=e=>{var{point:t,childIndex:n,mainColor:r,activeDot:l,dataKey:u,clipPath:s}=e;if(l===!1||t.x==null||t.y==null)return null;var f={index:n,dataKey:u,cx:t.x,cy:t.y,r:4,fill:r??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},d=jy(jy(jy({},f),Bi(l)),Wg(l)),h;return y.isValidElement(l)?h=y.cloneElement(l,d):typeof l=="function"?h=l(d):h=y.createElement(P5,d),y.createElement(ht,{className:"recharts-active-dot",clipPath:s},h)};function JA(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:l,clipPath:u,zIndex:s=wt.activeDot}=e,f=pe(Fa),d=lX();if(t==null||d==null)return null;var h=t.find(m=>d.includes(m.payload));return ut(h)?null:y.createElement(yn,{zIndex:s},y.createElement(cX,{point:h,childIndex:Number(f),mainColor:n,dataKey:l,activeDot:r,clipPath:u}))}var e2=(e,t,n)=>{var r=n??e;if(!ut(r))return Wt(r,t,0)},fX=(e,t,n)=>{var r={},l=e.filter(Qd),u=e.filter(h=>h.stackId==null),s=l.reduce((h,m)=>{var v=h[m.stackId];return v==null&&(v=[]),v.push(m),h[m.stackId]=v,h},r),f=Object.entries(s).map(h=>{var m,[v,b]=h,S=b.map(_=>_.dataKey),O=e2(t,n,(m=b[0])===null||m===void 0?void 0:m.barSize);return{stackId:v,dataKeys:S,barSize:O}}),d=u.map(h=>{var m=[h.dataKey].filter(b=>b!=null),v=e2(t,n,h.barSize);return{stackId:void 0,dataKeys:m,barSize:v}});return[...f,...d]};function t2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function uf(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?t2(Object(n),!0).forEach(function(r){dX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function dX(e,t,n){return(t=hX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hX(e){var t=mX(e,"string");return typeof t=="symbol"?t:t+""}function mX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function vX(e,t,n,r,l){var u,s=r.length;if(!(s<1)){var f=Wt(e,n,0,!0),d,h=[];if(je((u=r[0])===null||u===void 0?void 0:u.barSize)){var m=!1,v=n/s,b=r.reduce((A,N)=>A+(N.barSize||0),0);b+=(s-1)*f,b>=n&&(b-=(s-1)*f,f=0),b>=n&&v>0&&(m=!0,v*=.9,b=s*v);var S=(n-b)/2>>0,O={offset:S-f,size:0};d=r.reduce((A,N)=>{var T,P={stackId:N.stackId,dataKeys:N.dataKeys,position:{offset:O.offset+O.size+f,size:m?v:(T=N.barSize)!==null&&T!==void 0?T:0}},M=[...A,P];return O=P.position,M},h)}else{var _=Wt(t,n,0,!0);n-2*_-(s-1)*f<=0&&(f=0);var w=(n-2*_-(s-1)*f)/s;w>1&&(w>>=0);var j=je(l)?Math.min(w,l):w;d=r.reduce((A,N,T)=>[...A,{stackId:N.stackId,dataKeys:N.dataKeys,position:{offset:_+(w+f)*T+(w-j)/2,size:j}}],h)}return d}}var pX=(e,t,n,r,l,u,s)=>{var f=ut(s)?t:s,d=vX(n,r,l!==u?l:u,e,f);return l!==u&&d!=null&&(d=d.map(h=>uf(uf({},h),{},{position:uf(uf({},h.position),{},{offset:h.position.offset-l/2})}))),d},yX=(e,t)=>{var n=Wd(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var l=e[r];if(l){var{stackedData:u}=l;if(u)return u.find(s=>s.key===n)}}}},gX=(e,t)=>{if(!(e==null||t==null)){var n=e.find(r=>r.stackId===t.stackId&&t.dataKey!=null&&r.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function bX(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&je(e.zIndex)?e.zIndex:t}var G5=e=>{var{chartData:t}=e,n=Xe(),r=Jt();return y.useEffect(()=>r?()=>{}:(n(cA(t)),()=>{n(cA(void 0))}),[t,n,r]),null},n2={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},V5=Qt({name:"brush",initialState:n2,reducers:{setBrushSettings(e,t){return t.payload==null?n2:t.payload}}}),{setBrushSettings:VQ}=V5.actions,xX=V5.reducer;function SX(e){return(e%180+180)%180}var wX=function(t){var{width:n,height:r}=t,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,u=SX(l),s=u*Math.PI/180,f=Math.atan(r/n),d=s>f&&s<Math.PI-f?r/Math.sin(s):n/Math.cos(s);return Math.abs(d)},OX={dots:[],areas:[],lines:[]},X5=Qt({name:"referenceElements",initialState:OX,reducers:{addDot:(e,t)=>{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=Vn(e).dots.findIndex(r=>r===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=Vn(e).areas.findIndex(r=>r===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(t.payload)},removeLine:(e,t)=>{var n=Vn(e).lines.findIndex(r=>r===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:XQ,removeDot:FQ,addArea:ZQ,removeArea:WQ,addLine:QQ,removeLine:JQ}=X5.actions,_X=X5.reducer,EX=y.createContext(void 0),jX=e=>{var{children:t}=e,[n]=y.useState("".concat(Bo("recharts"),"-clip")),r=Lb();if(r==null)return null;var{x:l,y:u,width:s,height:f}=r;return y.createElement(EX.Provider,{value:n},y.createElement("defs",null,y.createElement("clipPath",{id:n},y.createElement("rect",{x:l,y:u,height:f,width:s}))),t)};function F5(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;r<e.length;r+=t){var l=e[r];l!==void 0&&n.push(l)}return n}function AX(e,t,n){var r={width:e.width+t.width,height:e.height+t.height};return wX(r,n)}function CX(e,t,n){var r=n==="width",{x:l,y:u,width:s,height:f}=e;return t===1?{start:r?l:u,end:r?l+s:u+f}:{start:r?l+s:u+f,end:r?l:u}}function Jo(e,t,n,r,l){if(e*t<e*r||e*t>e*l)return!1;var u=n();return e*(t-e*u/2-r)>=0&&e*(t+e*u/2-l)<=0}function TX(e,t){return F5(e,t+1)}function NX(e,t,n,r,l){for(var u=(r||[]).slice(),{start:s,end:f}=t,d=0,h=1,m=s,v=function(){var O=r==null?void 0:r[d];if(O===void 0)return{v:F5(r,h)};var _=d,w,j=()=>(w===void 0&&(w=n(O,_)),w),A=O.coordinate,N=d===0||Jo(e,A,j,m,f);N||(d=0,m=s,h+=1),N&&(m=A+e*(j()/2+l),d+=h)},b;h<=u.length;)if(b=v(),b)return b.v;return[]}function PX(e,t,n,r,l){var u=(r||[]).slice(),s=u.length;if(s===0)return[];for(var{start:f,end:d}=t,h=1;h<=s;h++){for(var m=(s-1)%h,v=f,b=!0,S=function(){var T=r[_];if(T==null)return 0;var P=_,M,R=()=>(M===void 0&&(M=n(T,P)),M),I=T.coordinate,q=_===m||Jo(e,I,R,v,d);if(!q)return b=!1,1;q&&(v=I+e*(R()/2+l))},O,_=m;_<s&&(O=S(),!(O!==0&&O===1));_+=h);if(b){for(var w=[],j=m;j<s;j+=h){var A=r[j];A!=null&&w.push(A)}return w}}return[]}function r2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Ft(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?r2(Object(n),!0).forEach(function(r){MX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function MX(e,t,n){return(t=DX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function DX(e){var t=RX(e,"string");return typeof t=="symbol"?t:t+""}function RX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kX(e,t,n,r,l){for(var u=(r||[]).slice(),s=u.length,{start:f}=t,{end:d}=t,h=function(b){var S=u[b];if(S==null)return 1;var O=S,_,w=()=>(_===void 0&&(_=n(S,b)),_);if(b===s-1){var j=e*(O.coordinate+e*w()/2-d);u[b]=O=Ft(Ft({},O),{},{tickCoord:j>0?O.coordinate-j*e:O.coordinate})}else u[b]=O=Ft(Ft({},O),{},{tickCoord:O.coordinate});if(O.tickCoord!=null){var A=Jo(e,O.tickCoord,w,f,d);A&&(d=O.tickCoord-e*(w()/2+l),u[b]=Ft(Ft({},O),{},{isShow:!0}))}},m=s-1;m>=0;m--)h(m);return u}function LX(e,t,n,r,l,u){var s=(r||[]).slice(),f=s.length,{start:d,end:h}=t;if(u){var m=r[f-1];if(m!=null){var v=n(m,f-1),b=e*(m.coordinate+e*v/2-h);if(s[f-1]=m=Ft(Ft({},m),{},{tickCoord:b>0?m.coordinate-b*e:m.coordinate}),m.tickCoord!=null){var S=Jo(e,m.tickCoord,()=>v,d,h);S&&(h=m.tickCoord-e*(v/2+l),s[f-1]=Ft(Ft({},m),{},{isShow:!0}))}}}for(var O=u?f-1:f,_=function(A){var N=s[A];if(N==null)return 1;var T=N,P,M=()=>(P===void 0&&(P=n(N,A)),P);if(A===0){var R=e*(T.coordinate-e*M()/2-d);s[A]=T=Ft(Ft({},T),{},{tickCoord:R<0?T.coordinate-R*e:T.coordinate})}else s[A]=T=Ft(Ft({},T),{},{tickCoord:T.coordinate});if(T.tickCoord!=null){var I=Jo(e,T.tickCoord,M,d,h);I&&(d=T.tickCoord+e*(M()/2+l),s[A]=Ft(Ft({},T),{},{isShow:!0}))}},w=0;w<O;w++)_(w);return s}function zb(e,t,n){var{tick:r,ticks:l,viewBox:u,minTickGap:s,orientation:f,interval:d,tickFormatter:h,unit:m,angle:v}=e;if(!l||!l.length||!r)return[];if(de(d)||fs.isSsr){var b;return(b=TX(l,de(d)?d:0))!==null&&b!==void 0?b:[]}var S=[],O=f==="top"||f==="bottom"?"width":"height",_=m&&O==="width"?Ro(m,{fontSize:t,letterSpacing:n}):{width:0,height:0},w=(P,M)=>{var R=typeof h=="function"?h(P.value,M):P.value;return O==="width"?AX(Ro(R,{fontSize:t,letterSpacing:n}),_,v):Ro(R,{fontSize:t,letterSpacing:n})[O]},j=l[0],A=l[1],N=l.length>=2&&j!=null&&A!=null?kt(A.coordinate-j.coordinate):1,T=CX(u,N,O);return d==="equidistantPreserveStart"?NX(N,T,w,l,s):d==="equidistantPreserveEnd"?PX(N,T,w,l,s):(d==="preserveStart"||d==="preserveStartEnd"?S=LX(N,T,w,l,s,d==="preserveStartEnd"):S=kX(N,T,w,l,s),S.filter(P=>P.isShow))}var zX=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:l=0,tickMargin:u=0}=e,s=0;if(t){Array.from(t).forEach(m=>{if(m){var v=m.getBoundingClientRect();v.width>s&&(s=v.width)}});var f=n?n.getBoundingClientRect().width:0,d=l+u,h=s+d+f+(n?r:0);return Math.round(h)}return 0},IX={xAxis:{},yAxis:{}},Z5=Qt({name:"renderedTicks",initialState:IX,reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:l}=t.payload;e[n][r]=l},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:BX,removeRenderedTicks:UX}=Z5.actions,$X=Z5.reducer,qX=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function HX(e,t){if(e==null)return{};var n,r,l=KX(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function KX(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Xi(){return Xi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Xi.apply(null,arguments)}function a2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function ft(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?a2(Object(n),!0).forEach(function(r){YX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function YX(e,t,n){return(t=GX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function GX(e){var t=VX(e,"string");return typeof t=="symbol"?t:t+""}function VX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var ta={x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd",zIndex:wt.axis};function XX(e){var{x:t,y:n,width:r,height:l,orientation:u,mirror:s,axisLine:f,otherSvgProps:d}=e;if(!f)return null;var h=ft(ft(ft({},d),pn(f)),{},{fill:"none"});if(u==="top"||u==="bottom"){var m=+(u==="top"&&!s||u==="bottom"&&s);h=ft(ft({},h),{},{x1:t,y1:n+m*l,x2:t+r,y2:n+m*l})}else{var v=+(u==="left"&&!s||u==="right"&&s);h=ft(ft({},h),{},{x1:t+v*r,y1:n,x2:t+v*r,y2:n+l})}return y.createElement("line",Xi({},h,{className:Ie("recharts-cartesian-axis-line",$i(f,"className"))}))}function FX(e,t,n,r,l,u,s,f,d){var h,m,v,b,S,O,_=f?-1:1,w=e.tickSize||s,j=de(e.tickCoord)?e.tickCoord:e.coordinate;switch(u){case"top":h=m=e.coordinate,b=n+ +!f*l,v=b-_*w,O=v-_*d,S=j;break;case"left":v=b=e.coordinate,m=t+ +!f*r,h=m-_*w,S=h-_*d,O=j;break;case"right":v=b=e.coordinate,m=t+ +f*r,h=m+_*w,S=h+_*d,O=j;break;default:h=m=e.coordinate,b=n+ +f*l,v=b+_*w,O=v+_*d,S=j;break}return{line:{x1:h,y1:v,x2:m,y2:b},tick:{x:S,y:O}}}function ZX(e,t){switch(e){case"left":return t?"start":"end";case"right":return t?"end":"start";default:return"middle"}}function WX(e,t){switch(e){case"left":case"right":return"middle";case"top":return t?"start":"end";default:return t?"end":"start"}}function QX(e){var{option:t,tickProps:n,value:r}=e,l,u=Ie(n.className,"recharts-cartesian-axis-tick-value");if(y.isValidElement(t))l=y.cloneElement(t,ft(ft({},n),{},{className:u}));else if(typeof t=="function")l=t(ft(ft({},n),{},{className:u}));else{var s="recharts-cartesian-axis-tick-value";typeof t!="boolean"&&(s=Ie(s,k5(t))),l=y.createElement(hh,Xi({},n,{className:s}),r)}return l}function JX(e){var{ticks:t,axisType:n,axisId:r}=e,l=Xe();return y.useEffect(()=>{if(r==null||n==null)return Fi;var u=t.map(s=>({value:s.value,coordinate:s.coordinate,offset:s.offset,index:s.index}));return l(BX({ticks:u,axisId:r,axisType:n})),()=>{l(UX({axisId:r,axisType:n}))}},[l,t,r,n]),null}var eF=y.forwardRef((e,t)=>{var{ticks:n=[],tick:r,tickLine:l,stroke:u,tickFormatter:s,unit:f,padding:d,tickTextProps:h,orientation:m,mirror:v,x:b,y:S,width:O,height:_,tickSize:w,tickMargin:j,fontSize:A,letterSpacing:N,getTicksConfig:T,events:P,axisType:M,axisId:R}=e,I=zb(ft(ft({},T),{},{ticks:n}),A,N),q=pn(T),W=Bi(r),X=w5(q.textAnchor)?q.textAnchor:ZX(m,v),U=WX(m,v),se={};typeof l=="object"&&(se=l);var F=ft(ft({},q),{},{fill:"none"},se),J=I.map(ne=>ft({entry:ne},FX(ne,b,S,O,_,m,w,v,j))),z=J.map(ne=>{var{entry:le,line:Q}=ne;return y.createElement(ht,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(le.value,"-").concat(le.coordinate,"-").concat(le.tickCoord)},l&&y.createElement("line",Xi({},F,Q,{className:Ie("recharts-cartesian-axis-tick-line",$i(l,"className"))})))}),V=J.map((ne,le)=>{var Q,D,{entry:K,tick:oe}=ne,ce=ft(ft(ft(ft({verticalAnchor:U},q),{},{textAnchor:X,stroke:"none",fill:u},oe),{},{index:le,payload:K,visibleTicksCount:I.length,tickFormatter:s,padding:d},h),{},{angle:(Q=(D=h==null?void 0:h.angle)!==null&&D!==void 0?D:q.angle)!==null&&Q!==void 0?Q:0}),ge=ft(ft({},ce),W);return y.createElement(ht,Xi({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(K.value,"-").concat(K.coordinate,"-").concat(K.tickCoord)},is(P,K,le)),r&&y.createElement(QX,{option:r,tickProps:ge,value:"".concat(typeof s=="function"?s(K.value,le):K.value).concat(f||"")}))});return y.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(M,"-ticks")},y.createElement(JX,{ticks:I,axisId:R,axisType:M}),V.length>0&&y.createElement(yn,{zIndex:wt.label},y.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(M,"-tick-labels"),ref:t},V)),z.length>0&&y.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(M,"-tick-lines")},z))}),tF=y.forwardRef((e,t)=>{var{axisLine:n,width:r,height:l,className:u,hide:s,ticks:f,axisType:d,axisId:h}=e,m=HX(e,qX),[v,b]=y.useState(""),[S,O]=y.useState(""),_=y.useRef(null);y.useImperativeHandle(t,()=>({getCalculatedWidth:()=>{var j;return zX({ticks:_.current,label:(j=e.labelRef)===null||j===void 0?void 0:j.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var w=y.useCallback(j=>{if(j){var A=j.getElementsByClassName("recharts-cartesian-axis-tick-value");_.current=A;var N=A[0];if(N){var T=window.getComputedStyle(N),P=T.fontSize,M=T.letterSpacing;(P!==v||M!==S)&&(b(P),O(M))}}},[v,S]);return s||r!=null&&r<=0||l!=null&&l<=0?null:y.createElement(yn,{zIndex:e.zIndex},y.createElement(ht,{className:Ie("recharts-cartesian-axis",u)},y.createElement(XX,{x:e.x,y:e.y,width:r,height:l,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:pn(e)}),y.createElement(eF,{ref:w,axisType:d,events:m,fontSize:v,getTicksConfig:e,height:e.height,letterSpacing:S,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:f,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:h}),y.createElement(XY,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},y.createElement(aG,{label:e.label,labelRef:e.labelRef}),e.children)))}),Ib=y.forwardRef((e,t)=>{var n=Ct(e,ta);return y.createElement(tF,Xi({},n,{ref:t}))});Ib.displayName="CartesianAxis";var nF=["x1","y1","x2","y2","key"],rF=["offset"],aF=["xAxisId","yAxisId"],iF=["xAxisId","yAxisId"];function i2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Zt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?i2(Object(n),!0).forEach(function(r){lF(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function lF(e,t,n){return(t=uF(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function uF(e){var t=oF(e,"string");return typeof t=="symbol"?t:t+""}function oF(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Mi(){return Mi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Mi.apply(null,arguments)}function vd(e,t){if(e==null)return{};var n,r,l=sF(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function sF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var cF=e=>{var{fill:t}=e;if(!t||t==="none")return null;var{fillOpacity:n,x:r,y:l,width:u,height:s,ry:f}=e;return y.createElement("rect",{x:r,y:l,ry:f,width:u,height:s,stroke:"none",fill:t,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function W5(e){var{option:t,lineItemProps:n}=e,r;if(y.isValidElement(t))r=y.cloneElement(t,n);else if(typeof t=="function")r=t(n);else{var l,{x1:u,y1:s,x2:f,y2:d,key:h}=n,m=vd(n,nF),v=(l=pn(m))!==null&&l!==void 0?l:{},{offset:b}=v,S=vd(v,rF);r=y.createElement("line",Mi({},S,{x1:u,y1:s,x2:f,y2:d,fill:"none",key:h}))}return r}function fF(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:l}=e;if(!r||!l||!l.length)return null;var{xAxisId:u,yAxisId:s}=e,f=vd(e,aF),d=l.map((h,m)=>{var v=Zt(Zt({},f),{},{x1:t,y1:h,x2:t+n,y2:h,key:"line-".concat(m),index:m});return y.createElement(W5,{key:"line-".concat(m),option:r,lineItemProps:v})});return y.createElement("g",{className:"recharts-cartesian-grid-horizontal"},d)}function dF(e){var{y:t,height:n,vertical:r=!0,verticalPoints:l}=e;if(!r||!l||!l.length)return null;var{xAxisId:u,yAxisId:s}=e,f=vd(e,iF),d=l.map((h,m)=>{var v=Zt(Zt({},f),{},{x1:h,y1:t,x2:h,y2:t+n,key:"line-".concat(m),index:m});return y.createElement(W5,{option:r,lineItemProps:v,key:"line-".concat(m)})});return y.createElement("g",{className:"recharts-cartesian-grid-vertical"},d)}function hF(e){var{horizontalFill:t,fillOpacity:n,x:r,y:l,width:u,height:s,horizontalPoints:f,horizontal:d=!0}=e;if(!d||!t||!t.length||f==null)return null;var h=f.map(v=>Math.round(v+l-l)).sort((v,b)=>v-b);l!==h[0]&&h.unshift(0);var m=h.map((v,b)=>{var S=h[b+1],O=S==null,_=O?l+s-v:S-v;if(_<=0)return null;var w=b%t.length;return y.createElement("rect",{key:"react-".concat(b),y:v,x:r,height:_,width:u,stroke:"none",fill:t[w],fillOpacity:n,className:"recharts-cartesian-grid-bg"})});return y.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},m)}function mF(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:l,y:u,width:s,height:f,verticalPoints:d}=e;if(!t||!n||!n.length)return null;var h=d.map(v=>Math.round(v+l-l)).sort((v,b)=>v-b);l!==h[0]&&h.unshift(0);var m=h.map((v,b)=>{var S=h[b+1],O=S==null,_=O?l+s-v:S-v;if(_<=0)return null;var w=b%n.length;return y.createElement("rect",{key:"react-".concat(b),x:v,y:u,width:_,height:f,stroke:"none",fill:n[w],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return y.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},m)}var vF=(e,t)=>{var{xAxis:n,width:r,height:l,offset:u}=e;return TT(zb(Zt(Zt(Zt({},ta),n),{},{ticks:NT(n),viewBox:{x:0,y:0,width:r,height:l}})),u.left,u.left+u.width,t)},pF=(e,t)=>{var{yAxis:n,width:r,height:l,offset:u}=e;return TT(zb(Zt(Zt(Zt({},ta),n),{},{ticks:NT(n),viewBox:{x:0,y:0,width:r,height:l}})),u.top,u.top+u.height,t)},yF={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:wt.grid};function Q5(e){var t=c0(),n=f0(),r=IT(),l=Zt(Zt({},Ct(e,yF)),{},{x:de(e.x)?e.x:r.left,y:de(e.y)?e.y:r.top,width:de(e.width)?e.width:r.width,height:de(e.height)?e.height:r.height}),{xAxisId:u,yAxisId:s,x:f,y:d,width:h,height:m,syncWithTicks:v,horizontalValues:b,verticalValues:S}=l,O=Jt(),_=pe(q=>Wj(q,"xAxis",u,O)),w=pe(q=>Wj(q,"yAxis",s,O));if(!_r(h)||!_r(m)||!de(f)||!de(d))return null;var j=l.verticalCoordinatesGenerator||vF,A=l.horizontalCoordinatesGenerator||pF,{horizontalPoints:N,verticalPoints:T}=l;if((!N||!N.length)&&typeof A=="function"){var P=b&&b.length,M=A({yAxis:w?Zt(Zt({},w),{},{ticks:P?b:w.ticks}):void 0,width:t??h,height:n??m,offset:r},P?!0:v);Bf(Array.isArray(M),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof M,"]")),Array.isArray(M)&&(N=M)}if((!T||!T.length)&&typeof j=="function"){var R=S&&S.length,I=j({xAxis:_?Zt(Zt({},_),{},{ticks:R?S:_.ticks}):void 0,width:t??h,height:n??m,offset:r},R?!0:v);Bf(Array.isArray(I),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof I,"]")),Array.isArray(I)&&(T=I)}return y.createElement(yn,{zIndex:l.zIndex},y.createElement("g",{className:"recharts-cartesian-grid"},y.createElement(cF,{fill:l.fill,fillOpacity:l.fillOpacity,x:l.x,y:l.y,width:l.width,height:l.height,ry:l.ry}),y.createElement(hF,Mi({},l,{horizontalPoints:N})),y.createElement(mF,Mi({},l,{verticalPoints:T})),y.createElement(fF,Mi({},l,{offset:r,horizontalPoints:N,xAxis:_,yAxis:w})),y.createElement(dF,Mi({},l,{offset:r,verticalPoints:T,xAxis:_,yAxis:w}))))}Q5.displayName="CartesianGrid";var gF={},J5=Qt({name:"errorBars",initialState:gF,reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:l}=t.payload;e[n]&&(e[n]=e[n].map(u=>u.dataKey===r.dataKey&&u.direction===r.direction?l:u))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(l=>l.dataKey!==r.dataKey||l.direction!==r.direction))}}}),{addErrorBar:eJ,replaceErrorBar:tJ,removeErrorBar:nJ}=J5.actions,bF=J5.reducer,xF=["children"];function SF(e,t){if(e==null)return{};var n,r,l=wF(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function wF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var OF={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},_F=y.createContext(OF);function EF(e){var{children:t}=e,n=SF(e,xF);return y.createElement(_F.Provider,{value:n},t)}function Bb(e,t){var n,r,l=pe(h=>fa(h,e)),u=pe(h=>da(h,t)),s=(n=l==null?void 0:l.allowDataOverflow)!==null&&n!==void 0?n:Et.allowDataOverflow,f=(r=u==null?void 0:u.allowDataOverflow)!==null&&r!==void 0?r:jt.allowDataOverflow,d=s||f;return{needClip:d,needClipX:s,needClipY:f}}function eM(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,l=Lb(),{needClipX:u,needClipY:s,needClip:f}=Bb(t,n);if(!f||!l)return null;var{x:d,y:h,width:m,height:v}=l;return y.createElement("clipPath",{id:"clipPath-".concat(r)},y.createElement("rect",{x:u?d:d-m/2,y:s?h:h-v/2,width:u?m:m*2,height:s?v:v*2}))}function jF(e){var t=Bi(e),n=3,r=2;if(t!=null){var{r:l,strokeWidth:u}=t,s=Number(l),f=Number(u);return(Number.isNaN(s)||s<0)&&(s=n),(Number.isNaN(f)||f<0)&&(f=r),{r:s,strokeWidth:f}}return{r:n,strokeWidth:r}}function Tr(e,t){var n,r;return(n=(r=e.graphicalItems.cartesianItems.find(l=>l.id===t))===null||r===void 0?void 0:r.xAxisId)!==null&&n!==void 0?n:K5}function Nr(e,t){var n,r;return(n=(r=e.graphicalItems.cartesianItems.find(l=>l.id===t))===null||r===void 0?void 0:r.yAxisId)!==null&&n!==void 0?n:K5}var tM=(e,t,n)=>Xa(e,"xAxis",Tr(e,t),n),nM=(e,t,n)=>Va(e,"xAxis",Tr(e,t),n),rM=(e,t,n)=>Xa(e,"yAxis",Nr(e,t),n),aM=(e,t,n)=>Va(e,"yAxis",Nr(e,t),n),AF=$([ke,tM,rM,nM,aM],(e,t,n,r,l)=>Cr(e,"xAxis")?eu(t,r,!1):eu(n,l,!1)),CF=(e,t)=>t,iM=$([uh,CF],(e,t)=>e.filter(n=>n.type==="area").find(n=>n.id===t)),lM=e=>{var t=ke(e),n=Cr(t,"xAxis");return n?"yAxis":"xAxis"},TF=(e,t)=>{var n=lM(e);return n==="yAxis"?Nr(e,t):Tr(e,t)},NF=(e,t,n)=>ud(e,lM(e),TF(e,t),n),PF=$([iM,NF],(e,t)=>{var n;if(!(e==null||t==null)){var{stackId:r}=e,l=Wd(e);if(!(r==null||l==null)){var u=(n=t[r])===null||n===void 0?void 0:n.stackedData,s=u==null?void 0:u.find(f=>f.key===l);if(s!=null)return s.map(f=>[f[0],f[1]])}}}),MF=$([ke,tM,rM,nM,aM,PF,oN,AF,iM,iU],(e,t,n,r,l,u,s,f,d,h)=>{var{chartData:m,dataStartIndex:v,dataEndIndex:b}=s;if(!(d==null||e!=="horizontal"&&e!=="vertical"||t==null||n==null||r==null||l==null||r.length===0||l.length===0||f==null)){var{data:S}=d,O;if(S&&S.length>0?O=S:O=m==null?void 0:m.slice(v,b+1),O!=null)return QF({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:l,dataStartIndex:v,areaSettings:d,stackedData:u,displayedData:O,chartBaseValue:h,bandSize:f})}}),DF=["id"],RF=["activeDot","animationBegin","animationDuration","animationEasing","connectNulls","dot","fill","fillOpacity","hide","isAnimationActive","legendType","stroke","xAxisId","yAxisId"];function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Li.apply(null,arguments)}function uM(e,t){if(e==null)return{};var n,r,l=kF(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function kF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function l2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Xl(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?l2(Object(n),!0).forEach(function(r){LF(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function LF(e,t,n){return(t=zF(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zF(e){var t=IF(e,"string");return typeof t=="symbol"?t:t+""}function IF(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pd(e,t){return e&&e!=="none"?e:t}var BF=e=>{var{dataKey:t,name:n,stroke:r,fill:l,legendType:u,hide:s}=e;return[{inactive:s,dataKey:t,type:u,color:pd(r,l),value:du(n,t),payload:e}]},UF=y.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:l,fill:u,name:s,hide:f,unit:d,tooltipType:h,id:m}=e,v={dataDefinedOnItem:n,getPosition:Fi,settings:{stroke:r,strokeWidth:l,fill:u,dataKey:t,nameKey:void 0,name:du(s,t),hide:f,type:h,color:pd(r,u),unit:d,graphicalItemId:m}};return y.createElement(Rb,{tooltipEntrySettings:v})});function $F(e){var{clipPathId:t,points:n,props:r}=e,{needClip:l,dot:u,dataKey:s}=r,f=pn(r);return y.createElement(YV,{points:n,dot:u,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:s,baseProps:f,needClip:l,clipPathId:t})}function qF(e){var{showLabels:t,children:n,points:r}=e,l=r.map(u=>{var s,f,d={x:(s=u.x)!==null&&s!==void 0?s:0,y:(f=u.y)!==null&&f!==void 0?f:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Xl(Xl({},d),{},{value:u.value,payload:u.payload,parentViewBox:void 0,viewBox:d,fill:void 0})});return y.createElement(T5,{value:t?l:void 0},n)}function u2(e){var{points:t,baseLine:n,needClip:r,clipPathId:l,props:u}=e,{layout:s,type:f,stroke:d,connectNulls:h,isRange:m}=u,{id:v}=u,b=uM(u,DF),S=pn(b),O=rn(b);return y.createElement(y.Fragment,null,(t==null?void 0:t.length)>1&&y.createElement(ht,{clipPath:r?"url(#clipPath-".concat(l,")"):void 0},y.createElement(Zl,Li({},O,{id:v,points:t,connectNulls:h,type:f,baseLine:n,layout:s,stroke:"none",className:"recharts-area-area"})),d!=="none"&&y.createElement(Zl,Li({},S,{className:"recharts-area-curve",layout:s,type:f,connectNulls:h,fill:"none",points:t})),d!=="none"&&m&&Array.isArray(n)&&y.createElement(Zl,Li({},S,{className:"recharts-area-curve",layout:s,type:f,connectNulls:h,fill:"none",points:n}))),y.createElement($F,{points:t,props:b,clipPathId:l}))}function HF(e){var t,n,{alpha:r,baseLine:l,points:u,strokeWidth:s}=e,f=(t=u[0])===null||t===void 0?void 0:t.y,d=(n=u[u.length-1])===null||n===void 0?void 0:n.y;if(!je(f)||!je(d))return null;var h=r*Math.abs(f-d),m=Math.max(...u.map(v=>v.x||0));return de(l)?m=Math.max(l,m):l&&Array.isArray(l)&&l.length&&(m=Math.max(...l.map(v=>v.x||0),m)),de(m)?y.createElement("rect",{x:0,y:f<d?f:f-h,width:m+(s?parseInt("".concat(s),10):1),height:Math.floor(h)}):null}function KF(e){var t,n,{alpha:r,baseLine:l,points:u,strokeWidth:s}=e,f=(t=u[0])===null||t===void 0?void 0:t.x,d=(n=u[u.length-1])===null||n===void 0?void 0:n.x;if(!je(f)||!je(d))return null;var h=r*Math.abs(f-d),m=Math.max(...u.map(v=>v.y||0));return de(l)?m=Math.max(l,m):l&&Array.isArray(l)&&l.length&&(m=Math.max(...l.map(v=>v.y||0),m)),de(m)?y.createElement("rect",{x:f<d?f:f-h,y:0,width:h,height:Math.floor(m+(s?parseInt("".concat(s),10):1))}):null}function YF(e){var{alpha:t,layout:n,points:r,baseLine:l,strokeWidth:u}=e;return n==="vertical"?y.createElement(HF,{alpha:t,points:r,baseLine:l,strokeWidth:u}):y.createElement(KF,{alpha:t,points:r,baseLine:l,strokeWidth:u})}function GF(e){var{needClip:t,clipPathId:n,props:r,previousPointsRef:l,previousBaselineRef:u}=e,{points:s,baseLine:f,isAnimationActive:d,animationBegin:h,animationDuration:m,animationEasing:v,onAnimationStart:b,onAnimationEnd:S}=r,O=y.useMemo(()=>({points:s,baseLine:f}),[s,f]),_=hs(O,"recharts-area-"),w=d0(),[j,A]=y.useState(!1),N=!j,T=y.useCallback(()=>{typeof S=="function"&&S(),A(!1)},[S]),P=y.useCallback(()=>{typeof b=="function"&&b(),A(!0)},[b]);if(w==null)return null;var M=l.current,R=u.current;return y.createElement(qF,{showLabels:N,points:s},r.children,y.createElement(ds,{animationId:_,begin:h,duration:m,isActive:d,easing:v,onAnimationEnd:T,onAnimationStart:P,key:_},I=>{if(M){var q=M.length/s.length,W=I===1?s:s.map((U,se)=>{var F=Math.floor(se*q);if(M[F]){var J=M[F];return Xl(Xl({},U),{},{x:nt(J.x,U.x,I),y:nt(J.y,U.y,I)})}return U}),X;return de(f)?X=nt(R,f,I):ut(f)||lr(f)?X=nt(R,0,I):X=f.map((U,se)=>{var F=Math.floor(se*q);if(Array.isArray(R)&&R[F]){var J=R[F];return Xl(Xl({},U),{},{x:nt(J.x,U.x,I),y:nt(J.y,U.y,I)})}return U}),I>0&&(l.current=W,u.current=X),y.createElement(u2,{points:W,baseLine:X,needClip:t,clipPathId:n,props:r})}return I>0&&(l.current=s,u.current=f),y.createElement(ht,null,d&&y.createElement("defs",null,y.createElement("clipPath",{id:"animationClipPath-".concat(n)},y.createElement(YF,{alpha:I,points:s,baseLine:f,layout:w,strokeWidth:r.strokeWidth}))),y.createElement(ht,{clipPath:"url(#animationClipPath-".concat(n,")")},y.createElement(u2,{points:s,baseLine:f,needClip:t,clipPathId:n,props:r})))}),y.createElement(Ab,{label:r.label}))}function VF(e){var{needClip:t,clipPathId:n,props:r}=e,l=y.useRef(null),u=y.useRef();return y.createElement(GF,{needClip:t,clipPathId:n,props:r,previousPointsRef:l,previousBaselineRef:u})}class XF extends y.PureComponent{render(){var{hide:t,dot:n,points:r,className:l,top:u,left:s,needClip:f,xAxisId:d,yAxisId:h,width:m,height:v,id:b,baseLine:S,zIndex:O}=this.props;if(t)return null;var _=Ie("recharts-area",l),w=b,{r:j,strokeWidth:A}=jF(n),N=I5(n),T=j*2+A,P=f?"url(#clipPath-".concat(N?"":"dots-").concat(w,")"):void 0;return y.createElement(yn,{zIndex:O},y.createElement(ht,{className:_},f&&y.createElement("defs",null,y.createElement(eM,{clipPathId:w,xAxisId:d,yAxisId:h}),!N&&y.createElement("clipPath",{id:"clipPath-dots-".concat(w)},y.createElement("rect",{x:s-T/2,y:u-T/2,width:m+T,height:v+T}))),y.createElement(VF,{needClip:f,clipPathId:w,props:this.props})),y.createElement(JA,{points:r,mainColor:pd(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:P}),this.props.isRange&&Array.isArray(S)&&y.createElement(JA,{points:S,mainColor:pd(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:P}))}}var FF={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,xAxisId:0,yAxisId:0,zIndex:wt.area};function ZF(e){var t,{activeDot:n,animationBegin:r,animationDuration:l,animationEasing:u,connectNulls:s,dot:f,fill:d,fillOpacity:h,hide:m,isAnimationActive:v,legendType:b,stroke:S,xAxisId:O,yAxisId:_}=e,w=uM(e,RF),j=Zi(),A=s5(),{needClip:N}=Bb(O,_),T=Jt(),{points:P,isRange:M,baseLine:R}=(t=pe(se=>MF(se,e.id,T)))!==null&&t!==void 0?t:{},I=Lb();if(j!=="horizontal"&&j!=="vertical"||I==null||A!=="AreaChart"&&A!=="ComposedChart")return null;var{height:q,width:W,x:X,y:U}=I;return!P||!P.length?null:y.createElement(XF,Li({},w,{activeDot:n,animationBegin:r,animationDuration:l,animationEasing:u,baseLine:R,connectNulls:s,dot:f,fill:d,fillOpacity:h,height:q,hide:m,layout:j,isAnimationActive:v,isRange:M,legendType:b,needClip:N,points:P,stroke:S,width:W,left:X,top:U,xAxisId:O,yAxisId:_}))}var WF=(e,t,n,r,l)=>{var u=n??t;if(de(u))return u;var s=e==="horizontal"?l:r,f=s.scale.domain();if(s.type==="number"){var d=Math.max(f[0],f[1]),h=Math.min(f[0],f[1]);return u==="dataMin"?h:u==="dataMax"||d<0?d:Math.max(Math.min(f[0],f[1]),0)}return u==="dataMin"?f[0]:u==="dataMax"?f[1]:f[0]};function QF(e){var{areaSettings:{connectNulls:t,baseValue:n,dataKey:r},stackedData:l,layout:u,chartBaseValue:s,xAxis:f,yAxis:d,displayedData:h,dataStartIndex:m,xAxisTicks:v,yAxisTicks:b,bandSize:S}=e,O=l&&l.length,_=WF(u,s,n,f,d),w=u==="horizontal",j=!1,A=h.map((T,P)=>{var M,R,I,q;if(O)q=l[m+P];else{var W=$e(T,r);Array.isArray(W)?(q=W,j=!0):q=[_,W]}var X=(M=(R=q)===null||R===void 0?void 0:R[1])!==null&&M!==void 0?M:null,U=X==null||O&&!t&&$e(T,r)==null;if(w){var se;return{x:H_({axis:f,ticks:v,bandSize:S,entry:T,index:P}),y:U?null:(se=d.scale.map(X))!==null&&se!==void 0?se:null,value:q,payload:T}}return{x:U?null:(I=f.scale.map(X))!==null&&I!==void 0?I:null,y:H_({axis:d,ticks:b,bandSize:S,entry:T,index:P}),value:q,payload:T}}),N;return O||j?N=A.map(T=>{var P,M=Array.isArray(T.value)?T.value[0]:null;if(w){var R;return{x:T.x,y:M!=null&&T.y!=null&&(R=d.scale.map(M))!==null&&R!==void 0?R:null,payload:T.payload}}return{x:M!=null&&(P=f.scale.map(M))!==null&&P!==void 0?P:null,y:T.y,payload:T.payload}}):N=w?d.scale.map(_):f.scale.map(_),{points:A,baseLine:N??0,isRange:j}}function JF(e){var t=Ct(e,FF),n=Jt();return y.createElement(kb,{id:t.id,type:"area"},r=>y.createElement(y.Fragment,null,y.createElement(U5,{legendPayload:BF(t)}),y.createElement(UF,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:r}),y.createElement(q5,{type:"area",id:r,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:PT(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),y.createElement(ZF,Li({},t,{id:r}))))}var oM=y.memo(JF,hu);oM.displayName="Area";var eZ="Invariant failed";function tZ(e,t){throw new Error(eZ)}function bg(){return bg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},bg.apply(null,arguments)}function Ub(e){return y.createElement(B5,bg({shapeType:"rectangle",activeClassName:"recharts-active-bar",inActiveClassName:"recharts-inactive-bar"},e))}var nZ=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return(r,l)=>{if(de(t))return t;var u=de(r)||ut(r);return u?t(r,l):(u||tZ(),n)}},rZ=(e,t,n)=>n,aZ=(e,t)=>t,Es=$([uh,aZ],(e,t)=>e.filter(n=>n.type==="bar").find(n=>n.id===t)),iZ=$([Es],e=>e==null?void 0:e.maxBarSize),lZ=(e,t,n,r)=>r,uZ=$([ke,uh,Tr,Nr,rZ],(e,t,n,r,l)=>t.filter(u=>e==="horizontal"?u.xAxisId===n:u.yAxisId===r).filter(u=>u.isPanorama===l).filter(u=>u.hide===!1).filter(u=>u.type==="bar")),oZ=(e,t,n)=>{var r=ke(e),l=Tr(e,t),u=Nr(e,t);if(!(l==null||u==null))return r==="horizontal"?ud(e,"yAxis",u,n):ud(e,"xAxis",l,n)},sZ=(e,t)=>{var n=ke(e),r=Tr(e,t),l=Nr(e,t);if(!(r==null||l==null))return n==="horizontal"?Zj(e,"xAxis",r):Zj(e,"yAxis",l)},cZ=$([uZ,aU,sZ],fX),fZ=(e,t,n)=>{var r,l,u=Es(e,t);if(u==null)return 0;var s=Tr(e,t),f=Nr(e,t);if(s==null||f==null)return 0;var d=ke(e),h=xN(e),{maxBarSize:m}=u,v=ut(m)?h:m,b,S;return d==="horizontal"?(b=Xa(e,"xAxis",s,n),S=Va(e,"xAxis",s,n)):(b=Xa(e,"yAxis",f,n),S=Va(e,"yAxis",f,n)),(r=(l=eu(b,S,!0))!==null&&l!==void 0?l:v)!==null&&r!==void 0?r:0},sM=(e,t,n)=>{var r=ke(e),l=Tr(e,t),u=Nr(e,t);if(!(l==null||u==null)){var s,f;return r==="horizontal"?(s=Xa(e,"xAxis",l,n),f=Va(e,"xAxis",l,n)):(s=Xa(e,"yAxis",u,n),f=Va(e,"yAxis",u,n)),eu(s,f)}},dZ=$([cZ,xN,rU,SN,fZ,sM,iZ],pX),hZ=(e,t,n)=>{var r=Tr(e,t);if(r!=null)return Xa(e,"xAxis",r,n)},mZ=(e,t,n)=>{var r=Nr(e,t);if(r!=null)return Xa(e,"yAxis",r,n)},vZ=(e,t,n)=>{var r=Tr(e,t);if(r!=null)return Va(e,"xAxis",r,n)},pZ=(e,t,n)=>{var r=Nr(e,t);if(r!=null)return Va(e,"yAxis",r,n)},yZ=$([dZ,Es],gX),gZ=$([oZ,Es],yX),bZ=$([Tt,l0,hZ,mZ,vZ,pZ,yZ,ke,oN,sM,gZ,Es,lZ],(e,t,n,r,l,u,s,f,d,h,m,v,b)=>{var{chartData:S,dataStartIndex:O,dataEndIndex:_}=d;if(!(v==null||s==null||t==null||f!=="horizontal"&&f!=="vertical"||n==null||r==null||l==null||u==null||h==null)){var{data:w}=v,j;if(w!=null&&w.length>0?j=w:j=S==null?void 0:S.slice(O,_+1),j!=null)return VZ({layout:f,barSettings:v,pos:s,parentViewBox:t,bandSize:h,xAxis:n,yAxis:r,xAxisTicks:l,yAxisTicks:u,stackedData:m,displayedData:j,offset:e,cells:b,dataStartIndex:O})}}),xZ=["index"];function xg(){return xg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},xg.apply(null,arguments)}function SZ(e,t){if(e==null)return{};var n,r,l=wZ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function wZ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var cM=y.createContext(void 0),OZ=e=>{var t=y.useContext(cM);if(t!=null)return t.stackId;if(e!=null)return PT(e)},_Z=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),EZ=e=>{var t=y.useContext(cM);if(t!=null){var{stackId:n}=t;return"url(#".concat(_Z(n,e),")")}},fM=e=>{var{index:t}=e,n=SZ(e,xZ),r=EZ(t);return y.createElement(ht,xg({className:"recharts-bar-stack-layer",clipPath:r},n))},jZ=["onMouseEnter","onMouseLeave","onClick"],AZ=["value","background","tooltipPosition"],CZ=["id"],TZ=["onMouseEnter","onClick","onMouseLeave"];function Wa(){return Wa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wa.apply(null,arguments)}function o2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function tn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?o2(Object(n),!0).forEach(function(r){NZ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function NZ(e,t,n){return(t=PZ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function PZ(e){var t=MZ(e,"string");return typeof t=="symbol"?t:t+""}function MZ(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function yd(e,t){if(e==null)return{};var n,r,l=DZ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function DZ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var RZ=e=>{var{dataKey:t,name:n,fill:r,legendType:l,hide:u}=e;return[{inactive:u,dataKey:t,type:l,color:r,value:du(n,t),payload:e}]},kZ=y.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:l,name:u,hide:s,unit:f,tooltipType:d,id:h}=e,m={dataDefinedOnItem:void 0,getPosition:Fi,settings:{stroke:n,strokeWidth:r,fill:l,dataKey:t,nameKey:void 0,name:du(u,t),hide:s,type:d,color:l,unit:f,graphicalItemId:h}};return y.createElement(Rb,{tooltipEntrySettings:m})});function LZ(e){var t=pe(Fa),{data:n,dataKey:r,background:l,allOtherBarProps:u}=e,{onMouseEnter:s,onMouseLeave:f,onClick:d}=u,h=yd(u,jZ),m=Pb(s,r,u.id),v=Mb(f),b=Db(d,r,u.id);if(!l||n==null)return null;var S=Bi(l);return y.createElement(yn,{zIndex:bX(l,wt.barBackground)},n.map((O,_)=>{var{value:w,background:j,tooltipPosition:A}=O,N=yd(O,AZ);if(!j)return null;var T=m(O,_),P=v(O,_),M=b(O,_),R=tn(tn(tn(tn(tn({option:l,isActive:String(_)===t},N),{},{fill:"#eee"},j),S),is(h,O,_)),{},{onMouseEnter:T,onMouseLeave:P,onClick:M,dataKey:r,index:_,className:"recharts-bar-background-rectangle"});return y.createElement(Ub,Wa({key:"background-bar-".concat(_)},R))}))}function zZ(e){var{showLabels:t,children:n,rects:r}=e,l=r==null?void 0:r.map(u=>{var s={x:u.x,y:u.y,width:u.width,lowerWidth:u.width,upperWidth:u.width,height:u.height};return tn(tn({},s),{},{value:u.value,payload:u.payload,parentViewBox:u.parentViewBox,viewBox:s,fill:u.fill})});return y.createElement(T5,{value:t?l:void 0},n)}function IZ(e){var{shape:t,activeBar:n,baseProps:r,entry:l,index:u,dataKey:s}=e,f=pe(Fa),d=pe(bb),h=n&&String(l.originalDataIndex)===f&&(d==null||s===d),[m,v]=y.useState(!1),[b,S]=y.useState(!1);y.useEffect(()=>{var N;return h?(v(!0),N=requestAnimationFrame(()=>{S(!0)})):S(!1),()=>{cancelAnimationFrame(N)}},[h]);var O=y.useCallback(()=>{h||v(!1)},[h]),_=h&&b,w=h||m,j;h?n===!0?j=t:j=n:j=t;var A=y.createElement(Ub,Wa({},r,{name:String(r.name)},l,{isActive:_,option:j,index:u,dataKey:s,onTransitionEnd:O}));return w?y.createElement(yn,{zIndex:wt.activeBar},y.createElement(fM,{index:l.originalDataIndex},A)):A}function BZ(e){var{shape:t,baseProps:n,entry:r,index:l,dataKey:u}=e;return y.createElement(Ub,Wa({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:l,dataKey:u}))}function UZ(e){var t,{data:n,props:r}=e,l=(t=pn(r))!==null&&t!==void 0?t:{},{id:u}=l,s=yd(l,CZ),{shape:f,dataKey:d,activeBar:h}=r,{onMouseEnter:m,onClick:v,onMouseLeave:b}=r,S=yd(r,TZ),O=Pb(m,d,u),_=Mb(b),w=Db(v,d,u);return n?y.createElement(y.Fragment,null,n.map((j,A)=>y.createElement(fM,Wa({index:j.originalDataIndex,key:"rectangle-".concat(j==null?void 0:j.x,"-").concat(j==null?void 0:j.y,"-").concat(j==null?void 0:j.value,"-").concat(A),className:"recharts-bar-rectangle"},is(S,j,A),{onMouseEnter:O(j,A),onMouseLeave:_(j,A),onClick:w(j,A)}),h?y.createElement(IZ,{shape:f,activeBar:h,baseProps:s,entry:j,index:A,dataKey:d}):y.createElement(BZ,{shape:f,baseProps:s,entry:j,index:A,dataKey:d})))):null}function $Z(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:l,isAnimationActive:u,animationBegin:s,animationDuration:f,animationEasing:d,onAnimationEnd:h,onAnimationStart:m}=t,v=n.current,b=hs(t,"recharts-bar-"),[S,O]=y.useState(!1),_=!S,w=y.useCallback(()=>{typeof h=="function"&&h(),O(!1)},[h]),j=y.useCallback(()=>{typeof m=="function"&&m(),O(!0)},[m]);return y.createElement(zZ,{showLabels:_,rects:r},y.createElement(ds,{animationId:b,begin:s,duration:f,isActive:u,easing:d,onAnimationEnd:w,onAnimationStart:j,key:b},A=>{var N=A===1?r:r==null?void 0:r.map((T,P)=>{var M=v&&v[P];if(M)return tn(tn({},T),{},{x:nt(M.x,T.x,A),y:nt(M.y,T.y,A),width:nt(M.width,T.width,A),height:nt(M.height,T.height,A)});if(l==="horizontal"){var R=nt(0,T.height,A),I=nt(T.stackedBarStart,T.y,A);return tn(tn({},T),{},{y:I,height:R})}var q=nt(0,T.width,A),W=nt(T.stackedBarStart,T.x,A);return tn(tn({},T),{},{width:q,x:W})});return A>0&&(n.current=N??null),N==null?null:y.createElement(ht,null,y.createElement(UZ,{props:t,data:N}))}),y.createElement(Ab,{label:t.label}),t.children)}function qZ(e){var t=y.useRef(null);return y.createElement($Z,{previousRectanglesRef:t,props:e})}var dM=0,HZ=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:$e(e,t)}};class KZ extends y.PureComponent{render(){var{hide:t,data:n,dataKey:r,className:l,xAxisId:u,yAxisId:s,needClip:f,background:d,id:h}=this.props;if(t||n==null)return null;var m=Ie("recharts-bar",l),v=h;return y.createElement(ht,{className:m,id:h},f&&y.createElement("defs",null,y.createElement(eM,{clipPathId:v,xAxisId:u,yAxisId:s})),y.createElement(ht,{className:"recharts-bar-rectangles",clipPath:f?"url(#clipPath-".concat(v,")"):void 0},y.createElement(LZ,{data:n,dataKey:r,background:d,allOtherBarProps:this.props}),y.createElement(qZ,this.props)))}}var YZ={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:dM,xAxisId:0,yAxisId:0,zIndex:wt.bar};function GZ(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:l,minPointSize:u,activeBar:s,animationBegin:f,animationDuration:d,animationEasing:h,isAnimationActive:m}=e,{needClip:v}=Bb(t,n),b=Zi(),S=Jt(),O=Nb(e.children,dh),_=pe(A=>bZ(A,e.id,S,O));if(b!=="vertical"&&b!=="horizontal")return null;var w,j=_==null?void 0:_[0];return j==null||j.height==null||j.width==null?w=0:w=b==="vertical"?j.height/2:j.width/2,y.createElement(EF,{xAxisId:t,yAxisId:n,data:_,dataPointFormatter:HZ,errorBarOffset:w},y.createElement(KZ,Wa({},e,{layout:b,needClip:v,data:_,xAxisId:t,yAxisId:n,hide:r,legendType:l,minPointSize:u,activeBar:s,animationBegin:f,animationDuration:d,animationEasing:h,isAnimationActive:m})))}function VZ(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:l},pos:u,bandSize:s,xAxis:f,yAxis:d,xAxisTicks:h,yAxisTicks:m,stackedData:v,displayedData:b,offset:S,cells:O,parentViewBox:_,dataStartIndex:w}=e,j=t==="horizontal"?d:f,A=v?j.scale.domain():null,N=FI({numericAxis:j}),T=j.scale.map(N);return b.map((P,M)=>{var R,I,q,W,X,U;if(v){var se=v[M+w];if(se==null)return null;R=KI(se,A)}else R=$e(P,n),Array.isArray(R)||(R=[N,R]);var F=nZ(r,dM)(R[1],M);if(t==="horizontal"){var J,z=d.scale.map(R[0]),V=d.scale.map(R[1]);if(z==null||V==null)return null;I=K_({axis:f,ticks:h,bandSize:s,offset:u.offset,entry:P,index:M}),q=(J=V??z)!==null&&J!==void 0?J:void 0,W=u.size;var ne=z-V;if(X=lr(ne)?0:ne,U={x:I,y:S.top,width:W,height:S.height},Math.abs(F)>0&&Math.abs(X)<Math.abs(F)){var le=kt(X||F)*(Math.abs(F)-Math.abs(X));q-=le,X+=le}}else{var Q=f.scale.map(R[0]),D=f.scale.map(R[1]);if(Q==null||D==null)return null;if(I=Q,q=K_({axis:d,ticks:m,bandSize:s,offset:u.offset,entry:P,index:M}),W=D-Q,X=u.size,U={x:S.left,y:q,width:S.width,height:X},Math.abs(F)>0&&Math.abs(W)<Math.abs(F)){var K=kt(W||F)*(Math.abs(F)-Math.abs(W));W+=K}}if(I==null||q==null||W==null||X==null||!l&&(W===0||X===0))return null;var oe=tn(tn({},P),{},{stackedBarStart:T,x:I,y:q,width:W,height:X,value:v?R:R[1],payload:P,background:U,tooltipPosition:{x:I+W/2,y:q+X/2},parentViewBox:_,originalDataIndex:M},O&&O[M]&&O[M].props);return oe}).filter(Boolean)}function XZ(e){var t=Ct(e,YZ),n=OZ(t.stackId),r=Jt();return y.createElement(kb,{id:t.id,type:"bar"},l=>y.createElement(y.Fragment,null,y.createElement(U5,{legendPayload:RZ(t)}),y.createElement(kZ,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:l}),y.createElement(q5,{type:"bar",id:l,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),y.createElement(yn,{zIndex:t.zIndex},y.createElement(GZ,Wa({},t,{id:l})))))}var hM=y.memo(XZ,hu);hM.displayName="Bar";var FZ=["domain","range"],ZZ=["domain","range"];function s2(e,t){if(e==null)return{};var n,r,l=WZ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function WZ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function c2(e,t){return e===t?!0:Array.isArray(e)&&e.length===2&&Array.isArray(t)&&t.length===2?e[0]===t[0]&&e[1]===t[1]:!1}function mM(e,t){if(e===t)return!0;var{domain:n,range:r}=e,l=s2(e,FZ),{domain:u,range:s}=t,f=s2(t,ZZ);return!c2(n,u)||!c2(r,s)?!1:hu(l,f)}var QZ=["type"],JZ=["dangerouslySetInnerHTML","ticks","scale"],eW=["id","scale"];function Sg(){return Sg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Sg.apply(null,arguments)}function f2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function d2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?f2(Object(n),!0).forEach(function(r){tW(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):f2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function tW(e,t,n){return(t=nW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nW(e){var t=rW(e,"string");return typeof t=="symbol"?t:t+""}function rW(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function wg(e,t){if(e==null)return{};var n,r,l=aW(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function aW(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function iW(e){var t=Xe(),n=y.useRef(null),r=d0(),{type:l}=e,u=wg(e,QZ),s=Fd(r,"xAxis",l),f=y.useMemo(()=>{if(s!=null)return d2(d2({},u),{},{type:s})},[u,s]);return y.useLayoutEffect(()=>{f!=null&&(n.current===null?t(ZV(f)):n.current!==f&&t(WV({prev:n.current,next:f})),n.current=f)},[f,t]),y.useLayoutEffect(()=>()=>{n.current&&(t(QV(n.current)),n.current=null)},[t]),null}var lW=e=>{var{xAxisId:t,className:n}=e,r=pe(l0),l=Jt(),u="xAxis",s=pe(j=>IP(j,u,t,l)),f=pe(j=>kP(j,t)),d=pe(j=>Iq(j,t)),h=pe(j=>hP(j,t));if(f==null||d==null||h==null)return null;var{dangerouslySetInnerHTML:m,ticks:v,scale:b}=e,S=wg(e,JZ),{id:O,scale:_}=h,w=wg(h,eW);return y.createElement(Ib,Sg({},S,w,{x:d.x,y:d.y,width:f.width,height:f.height,className:Ie("recharts-".concat(u," ").concat(u),n),viewBox:r,ticks:s,axisType:u,axisId:t}))},uW={allowDataOverflow:Et.allowDataOverflow,allowDecimals:Et.allowDecimals,allowDuplicatedCategory:Et.allowDuplicatedCategory,angle:Et.angle,axisLine:ta.axisLine,height:Et.height,hide:!1,includeHidden:Et.includeHidden,interval:Et.interval,label:!1,minTickGap:Et.minTickGap,mirror:Et.mirror,orientation:Et.orientation,padding:Et.padding,reversed:Et.reversed,scale:Et.scale,tick:Et.tick,tickCount:Et.tickCount,tickLine:ta.tickLine,tickSize:ta.tickSize,type:Et.type,niceTicks:Et.niceTicks,xAxisId:0},oW=e=>{var t=Ct(e,uW);return y.createElement(y.Fragment,null,y.createElement(iW,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),y.createElement(lW,t))},$b=y.memo(oW,mM);$b.displayName="XAxis";var sW=["type"],cW=["dangerouslySetInnerHTML","ticks","scale"],fW=["id","scale"];function Og(){return Og=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Og.apply(null,arguments)}function h2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function m2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?h2(Object(n),!0).forEach(function(r){dW(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function dW(e,t,n){return(t=hW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hW(e){var t=mW(e,"string");return typeof t=="symbol"?t:t+""}function mW(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function _g(e,t){if(e==null)return{};var n,r,l=vW(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function vW(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function pW(e){var t=Xe(),n=y.useRef(null),r=d0(),{type:l}=e,u=_g(e,sW),s=Fd(r,"yAxis",l),f=y.useMemo(()=>{if(s!=null)return m2(m2({},u),{},{type:s})},[s,u]);return y.useLayoutEffect(()=>{f!=null&&(n.current===null?t(JV(f)):n.current!==f&&t(eX({prev:n.current,next:f})),n.current=f)},[f,t]),y.useLayoutEffect(()=>()=>{n.current&&(t(tX(n.current)),n.current=null)},[t]),null}function yW(e){var{yAxisId:t,className:n,width:r,label:l}=e,u=y.useRef(null),s=y.useRef(null),f=pe(l0),d=Jt(),h=Xe(),m="yAxis",v=pe(M=>LP(M,t)),b=pe(M=>Uq(M,t)),S=pe(M=>IP(M,m,t,d)),O=pe(M=>mP(M,t));if(y.useLayoutEffect(()=>{if(!(r!=="auto"||!v||jb(l)||y.isValidElement(l)||O==null)){var M=u.current;if(M){var R=M.getCalculatedWidth();Math.round(v.width)!==Math.round(R)&&h(nX({id:t,width:R}))}}},[S,v,h,l,t,r,O]),v==null||b==null||O==null)return null;var{dangerouslySetInnerHTML:_,ticks:w,scale:j}=e,A=_g(e,cW),{id:N,scale:T}=O,P=_g(O,fW);return y.createElement(Ib,Og({},A,P,{ref:u,labelRef:s,x:b.x,y:b.y,tickTextProps:r==="auto"?{width:void 0}:{width:r},width:v.width,height:v.height,className:Ie("recharts-".concat(m," ").concat(m),n),viewBox:f,ticks:S,axisType:m,axisId:t}))}var gW={allowDataOverflow:jt.allowDataOverflow,allowDecimals:jt.allowDecimals,allowDuplicatedCategory:jt.allowDuplicatedCategory,angle:jt.angle,axisLine:ta.axisLine,hide:!1,includeHidden:jt.includeHidden,interval:jt.interval,label:!1,minTickGap:jt.minTickGap,mirror:jt.mirror,orientation:jt.orientation,padding:jt.padding,reversed:jt.reversed,scale:jt.scale,tick:jt.tick,tickCount:jt.tickCount,tickLine:ta.tickLine,tickSize:ta.tickSize,type:jt.type,niceTicks:jt.niceTicks,width:jt.width,yAxisId:0},bW=e=>{var t=Ct(e,gW);return y.createElement(y.Fragment,null,y.createElement(pW,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),y.createElement(yW,t))},qb=y.memo(bW,mM);qb.displayName="YAxis";var xW=(e,t)=>t,Hb=$([xW,ke,CN,Lt,n5,ha,uK,Tt],mK);function SW(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Kb(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(SW(e)){var l=e.currentTarget.getBBox();n=l.width>0?t.width/l.width:1,r=l.height>0?t.height/l.height:1}else{var u=e.currentTarget;n=u.offsetWidth>0?t.width/u.offsetWidth:1,r=u.offsetHeight>0?t.height/u.offsetHeight:1}var s=(f,d)=>({relativeX:Math.round((f-t.left)/n),relativeY:Math.round((d-t.top)/r)});return"touches"in e?Array.from(e.touches).map(f=>s(f.clientX,f.clientY)):s(e.clientX,e.clientY)}var vM=Pn("mouseClick"),pM=us();pM.startListening({actionCreator:vM,effect:(e,t)=>{var n=e.payload,r=Hb(t.getState(),Kb(n));(r==null?void 0:r.activeIndex)!=null&&t.dispatch(nH({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var Eg=Pn("mouseMove"),yM=us(),Hl=null,Oi=null,Ay=null;yM.startListening({actionCreator:Eg,effect:(e,t)=>{var n=e.payload,r=t.getState(),{throttleDelay:l,throttledEvents:u}=r.eventSettings,s=u==="all"||(u==null?void 0:u.includes("mousemove"));Hl!==null&&(cancelAnimationFrame(Hl),Hl=null),Oi!==null&&(typeof l!="number"||!s)&&(clearTimeout(Oi),Oi=null),Ay=Kb(n);var f=()=>{var d=t.getState(),h=Os(d,d.tooltip.settings.shared);if(!Ay){Hl=null,Oi=null;return}if(h==="axis"){var m=Hb(d,Ay);(m==null?void 0:m.activeIndex)!=null?t.dispatch(GP({activeIndex:m.activeIndex,activeDataKey:void 0,activeCoordinate:m.activeCoordinate})):t.dispatch(YP())}Hl=null,Oi=null};if(!s){f();return}l==="raf"?Hl=requestAnimationFrame(f):typeof l=="number"&&Oi===null&&(Oi=setTimeout(f,l))}});function wW(e,t){return t instanceof HTMLElement?"HTMLElement <".concat(t.tagName,' class="').concat(t.className,'">'):t===window?"global.window":e==="children"&&typeof t=="object"&&t!==null?"<<CHILDREN>>":t}var v2={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},gM=Qt({name:"rootProps",initialState:v2,reducers:{updateOptions:(e,t)=>{var n;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=(n=t.payload.barGap)!==null&&n!==void 0?n:v2.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),OW=gM.reducer,{updateOptions:_W}=gM.actions,EW=null,jW={updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)},bM=Qt({name:"polarOptions",initialState:EW,reducers:jW}),{updatePolarOptions:AW}=bM.actions,CW=bM.reducer,xM=Pn("keyDown"),SM=Pn("focus"),wM=Pn("blur"),yh=us(),Kl=null,_i=null,of=null;yh.startListening({actionCreator:xM,effect:(e,t)=>{of=e.payload,Kl!==null&&(cancelAnimationFrame(Kl),Kl=null);var n=t.getState(),{throttleDelay:r,throttledEvents:l}=n.eventSettings,u=l==="all"||l.includes("keydown");_i!==null&&(typeof r!="number"||!u)&&(clearTimeout(_i),_i=null);var s=()=>{try{var f=t.getState(),d=f.rootProps.accessibilityLayer!==!1;if(!d)return;var{keyboardInteraction:h}=f.tooltip,m=of;if(m!=="ArrowRight"&&m!=="ArrowLeft"&&m!=="Enter")return;var v=Do(h,Vi(f),lu(f),uu(f)),b=v==null?-1:Number(v),S=!Number.isFinite(b)||b<0,O=ha(f),_=Vi(f),w=Os(f,f.tooltip.settings.shared);if(m==="Enter"){if(S)return;var j=cd(f,w,"hover",String(h.index));t.dispatch(sd({active:!h.active,activeIndex:h.index,activeCoordinate:j}));return}var A=Yq(f),N=A==="left-to-right"?1:-1,T=m==="ArrowRight"?1:-1,P;if(S){var M=lu(f),R=uu(f),I=T*N,q=F=>({active:!1,index:String(F),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(P=-1,I>0){for(var W=0;W<_.length;W++)if(Do(q(W),_,M,R)!=null){P=W;break}}else for(var X=_.length-1;X>=0;X--)if(Do(q(X),_,M,R)!=null){P=X;break}if(P<0)return}else{P=b+T*N;var U=(O==null?void 0:O.length)||_.length;if(U===0||P>=U||P<0)return}var se=cd(f,w,"hover",String(P));t.dispatch(sd({active:!0,activeIndex:P.toString(),activeCoordinate:se}))}finally{Kl=null,_i=null}};if(!u){s();return}r==="raf"?Kl=requestAnimationFrame(s):typeof r=="number"&&_i===null&&(s(),of=null,_i=setTimeout(()=>{of?s():(_i=null,Kl=null)},r))}});yh.startListening({actionCreator:SM,effect:(e,t)=>{var n=t.getState(),r=n.rootProps.accessibilityLayer!==!1;if(r){var{keyboardInteraction:l}=n.tooltip;if(!l.active&&l.index==null){var u="0",s=Os(n,n.tooltip.settings.shared),f=cd(n,s,"hover",String(u));t.dispatch(sd({active:!0,activeIndex:u,activeCoordinate:f}))}}}});yh.startListening({actionCreator:wM,effect:(e,t)=>{var n=t.getState(),r=n.rootProps.accessibilityLayer!==!1;if(r){var{keyboardInteraction:l}=n.tooltip;l.active&&t.dispatch(sd({active:!1,activeIndex:l.index,activeCoordinate:l.coordinate}))}}});function OM(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(n,r)=>{if(r==="currentTarget")return t;var l=Reflect.get(n,r);return typeof l=="function"?l.bind(n):l}})}var Yn=Pn("externalEvent"),_M=us(),sf=new Map,Co=new Map,Cy=new Map;_M.startListening({actionCreator:Yn,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var l=r.type,u=OM(r);Cy.set(l,{handler:n,reactEvent:u});var s=sf.get(l);s!==void 0&&(cancelAnimationFrame(s),sf.delete(l));var f=t.getState(),{throttleDelay:d,throttledEvents:h}=f.eventSettings,m=h,v=m==="all"||(m==null?void 0:m.includes(l)),b=Co.get(l);b!==void 0&&(typeof d!="number"||!v)&&(clearTimeout(b),Co.delete(l));var S=()=>{var w=Cy.get(l);try{if(!w)return;var{handler:j,reactEvent:A}=w,N=t.getState(),T={activeCoordinate:GH(N),activeDataKey:bb(N),activeIndex:Fa(N),activeLabel:i5(N),activeTooltipIndex:Fa(N),isTooltipActive:VH(N)};j&&j(T,A)}finally{sf.delete(l),Co.delete(l),Cy.delete(l)}};if(!v){S();return}if(d==="raf"){var O=requestAnimationFrame(S);sf.set(l,O)}else if(typeof d=="number"){if(!Co.has(l)){S();var _=setTimeout(S,d);Co.set(l,_)}}else S()}}});var TW=$([Su],e=>e.tooltipItemPayloads),NW=$([TW,(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(u=>u.settings.graphicalItemId===n);if(r!=null){var{getPosition:l}=r;if(l!=null)return l(t)}}}),EM=Pn("touchMove"),jM=us(),Ei=null,Ba=null,p2=null,To=null;jM.startListening({actionCreator:EM,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){To=OM(n);var r=t.getState(),{throttleDelay:l,throttledEvents:u}=r.eventSettings,s=u==="all"||u.includes("touchmove");Ei!==null&&(cancelAnimationFrame(Ei),Ei=null),Ba!==null&&(typeof l!="number"||!s)&&(clearTimeout(Ba),Ba=null),p2=Array.from(n.touches).map(d=>Kb({clientX:d.clientX,clientY:d.clientY,currentTarget:n.currentTarget}));var f=()=>{if(To!=null){var d=t.getState(),h=Os(d,d.tooltip.settings.shared);if(h==="axis"){var m,v=(m=p2)===null||m===void 0?void 0:m[0];if(v==null){Ei=null,Ba=null;return}var b=Hb(d,v);(b==null?void 0:b.activeIndex)!=null&&t.dispatch(GP({activeIndex:b.activeIndex,activeDataKey:void 0,activeCoordinate:b.activeCoordinate}))}else if(h==="item"){var S,O=To.touches[0];if(document.elementFromPoint==null||O==null)return;var _=document.elementFromPoint(O.clientX,O.clientY);if(!_||!_.getAttribute)return;var w=_.getAttribute(DT),j=(S=_.getAttribute(RT))!==null&&S!==void 0?S:void 0,A=Ji(d).find(P=>P.id===j);if(w==null||A==null||j==null)return;var{dataKey:N}=A,T=NW(d,w,j);t.dispatch(KP({activeDataKey:N,activeIndex:w,activeCoordinate:T,activeGraphicalItemId:j}))}Ei=null,Ba=null}};if(!s){f();return}l==="raf"?Ei=requestAnimationFrame(f):typeof l=="number"&&Ba===null&&(f(),To=null,Ba=setTimeout(()=>{To?f():(Ba=null,Ei=null)},l))}}});var Yb={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},AM=Qt({name:"eventSettings",initialState:Yb,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=t.payload.throttledEvents)}}}),{setEventSettings:PW}=AM.actions,MW=AM.reducer,DW=eT({brush:xX,cartesianAxis:rX,chartData:KK,errorBars:bF,eventSettings:MW,graphicalItems:uV,layout:BI,legend:Y8,options:BK,polarAxis:xG,polarOptions:CW,referenceElements:_X,renderedTicks:$X,rootProps:OW,tooltip:rH,zIndex:AK}),RW=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return cI({reducer:DW,preloadedState:t,middleware:r=>{var l;return r({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((l="es6")!==null&&l!==void 0?l:"")}).concat([pM.middleware,yM.middleware,yh.middleware,_M.middleware,jM.middleware])},enhancers:r=>{var l=r;return typeof r=="function"&&(l=r()),l.concat(vT({type:"raf"}))},devTools:{serialize:{replacer:wW},name:"recharts-".concat(n)}})};function CM(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,l=Jt(),u=y.useRef(null);if(l)return n;u.current==null&&(u.current=RW(t,r));var s=Jg;return y.createElement(uB,{context:s,store:u.current},n)}function kW(e){var{layout:t,margin:n}=e,r=Xe(),l=Jt();return y.useEffect(()=>{l||(r(LI(t)),r(kI(n)))},[r,l,t,n]),null}var TM=y.memo(kW,hu);function NM(e){var t=Xe();return y.useEffect(()=>{t(_W(e))},[t,e]),null}var LW=e=>{var t=Xe();return y.useEffect(()=>{t(PW(e))},[t,e]),null},PM=y.memo(LW,hu);function y2(e){var{zIndex:t,isPanorama:n}=e,r=y.useRef(null),l=Xe();return y.useLayoutEffect(()=>(r.current&&l(EK({zIndex:t,element:r.current,isPanorama:n})),()=>{l(jK({zIndex:t,isPanorama:n}))}),[l,t,n]),y.createElement("g",{tabIndex:-1,ref:r,className:"recharts-zIndex-layer_".concat(t)})}function g2(e){var{children:t,isPanorama:n}=e,r=pe(pK);if(!r||r.length===0)return t;var l=r.filter(s=>s<0),u=r.filter(s=>s>0);return y.createElement(y.Fragment,null,l.map(s=>y.createElement(y2,{key:s,zIndex:s,isPanorama:n})),t,u.map(s=>y.createElement(y2,{key:s,zIndex:s,isPanorama:n})))}var zW=["children"];function IW(e,t){if(e==null)return{};var n,r,l=BW(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function BW(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function gd(){return gd=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gd.apply(null,arguments)}var UW={width:"100%",height:"100%",display:"block"},$W=y.forwardRef((e,t)=>{var n=c0(),r=f0(),l=QT();if(!_r(n)||!_r(r))return null;var{children:u,otherAttributes:s,title:f,desc:d}=e,h,m;return s!=null&&(typeof s.tabIndex=="number"?h=s.tabIndex:h=l?0:void 0,typeof s.role=="string"?m=s.role:m=l?"application":void 0),y.createElement(qg,gd({},s,{title:f,desc:d,role:m,tabIndex:h,width:n,height:r,style:UW,ref:t}),u)}),qW=e=>{var{children:t}=e,n=pe(qd);if(!n)return null;var{width:r,height:l,y:u,x:s}=n;return y.createElement(qg,{width:r,height:l,x:s,y:u},t)},b2=y.forwardRef((e,t)=>{var{children:n}=e,r=IW(e,zW),l=Jt();return l?y.createElement(qW,null,y.createElement(g2,{isPanorama:!0},n)):y.createElement($W,gd({ref:t},r),y.createElement(g2,{isPanorama:!1},n))});function HW(){var e=Xe(),[t,n]=y.useState(null),r=pe(t8);return y.useEffect(()=>{if(t!=null){var l=t.getBoundingClientRect(),u=l.width/t.offsetWidth;je(u)&&u!==r&&e(II(u))}},[t,e,r]),n}function x2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function KW(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?x2(Object(n),!0).forEach(function(r){YW(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function YW(e,t,n){return(t=GW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function GW(e){var t=VW(e,"string");return typeof t=="symbol"?t:t+""}function VW(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ga(){return Ga=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ga.apply(null,arguments)}var XW=()=>(JK(),null);function bd(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var FW=y.forwardRef((e,t)=>{var n,r,l=y.useRef(null),[u,s]=y.useState({containerWidth:bd((n=e.style)===null||n===void 0?void 0:n.width),containerHeight:bd((r=e.style)===null||r===void 0?void 0:r.height)}),f=y.useCallback((h,m)=>{s(v=>{var b=Math.round(h),S=Math.round(m);return v.containerWidth===b&&v.containerHeight===S?v:{containerWidth:b,containerHeight:S}})},[]),d=y.useCallback(h=>{if(typeof t=="function"&&t(h),l.current!=null&&(l.current.disconnect(),l.current=null),h!=null&&typeof ResizeObserver<"u"){var{width:m,height:v}=h.getBoundingClientRect();f(m,v);var b=O=>{var _=O[0];if(_!=null){var{width:w,height:j}=_.contentRect;f(w,j)}},S=new ResizeObserver(b);S.observe(h),l.current=S}},[t,f]);return y.useEffect(()=>()=>{var h=l.current;h!=null&&h.disconnect()},[f]),y.createElement(y.Fragment,null,y.createElement(ss,{width:u.containerWidth,height:u.containerHeight}),y.createElement("div",Ga({ref:d},e)))}),ZW=y.forwardRef((e,t)=>{var{width:n,height:r}=e,[l,u]=y.useState({containerWidth:bd(n),containerHeight:bd(r)}),s=y.useCallback((d,h)=>{u(m=>{var v=Math.round(d),b=Math.round(h);return m.containerWidth===v&&m.containerHeight===b?m:{containerWidth:v,containerHeight:b}})},[]),f=y.useCallback(d=>{if(typeof t=="function"&&t(d),d!=null){var{width:h,height:m}=d.getBoundingClientRect();s(h,m)}},[t,s]);return y.createElement(y.Fragment,null,y.createElement(ss,{width:l.containerWidth,height:l.containerHeight}),y.createElement("div",Ga({ref:f},e)))}),WW=y.forwardRef((e,t)=>{var{width:n,height:r}=e;return y.createElement(y.Fragment,null,y.createElement(ss,{width:n,height:r}),y.createElement("div",Ga({ref:t},e)))}),QW=y.forwardRef((e,t)=>{var{width:n,height:r}=e;return typeof n=="string"||typeof r=="string"?y.createElement(ZW,Ga({},e,{ref:t})):typeof n=="number"&&typeof r=="number"?y.createElement(WW,Ga({},e,{width:n,height:r,ref:t})):y.createElement(y.Fragment,null,y.createElement(ss,{width:n,height:r}),y.createElement("div",Ga({ref:t},e)))});function JW(e){return e?FW:QW}var eQ=y.forwardRef((e,t)=>{var{children:n,className:r,height:l,onClick:u,onContextMenu:s,onDoubleClick:f,onMouseDown:d,onMouseEnter:h,onMouseLeave:m,onMouseMove:v,onMouseUp:b,onTouchEnd:S,onTouchMove:O,onTouchStart:_,style:w,width:j,responsive:A,dispatchTouchEvents:N=!0}=e,T=y.useRef(null),P=Xe(),[M,R]=y.useState(null),[I,q]=y.useState(null),W=HW(),X=u0(),U=(X==null?void 0:X.width)>0?X.width:j,se=(X==null?void 0:X.height)>0?X.height:l,F=y.useCallback(fe=>{W(fe),typeof t=="function"&&t(fe),R(fe),q(fe),fe!=null&&(T.current=fe)},[W,t,R,q]),J=y.useCallback(fe=>{P(vM(fe)),P(Yn({handler:u,reactEvent:fe}))},[P,u]),z=y.useCallback(fe=>{P(Eg(fe)),P(Yn({handler:h,reactEvent:fe}))},[P,h]),V=y.useCallback(fe=>{P(YP()),P(Yn({handler:m,reactEvent:fe}))},[P,m]),ne=y.useCallback(fe=>{P(Eg(fe)),P(Yn({handler:v,reactEvent:fe}))},[P,v]),le=y.useCallback(()=>{P(SM())},[P]),Q=y.useCallback(()=>{P(wM())},[P]),D=y.useCallback(fe=>{P(xM(fe.key))},[P]),K=y.useCallback(fe=>{P(Yn({handler:s,reactEvent:fe}))},[P,s]),oe=y.useCallback(fe=>{P(Yn({handler:f,reactEvent:fe}))},[P,f]),ce=y.useCallback(fe=>{P(Yn({handler:d,reactEvent:fe}))},[P,d]),ge=y.useCallback(fe=>{P(Yn({handler:b,reactEvent:fe}))},[P,b]),ae=y.useCallback(fe=>{P(Yn({handler:_,reactEvent:fe}))},[P,_]),he=y.useCallback(fe=>{N&&P(EM(fe)),P(Yn({handler:O,reactEvent:fe}))},[P,N,O]),xe=y.useCallback(fe=>{P(Yn({handler:S,reactEvent:fe}))},[P,S]),ie=JW(A);return y.createElement(m5.Provider,{value:M},y.createElement(vC.Provider,{value:I},y.createElement(ie,{width:U??(w==null?void 0:w.width),height:se??(w==null?void 0:w.height),className:Ie("recharts-wrapper",r),style:KW({position:"relative",cursor:"default",width:U,height:se},w),onClick:J,onContextMenu:K,onDoubleClick:oe,onFocus:le,onBlur:Q,onKeyDown:D,onMouseDown:ce,onMouseEnter:z,onMouseLeave:V,onMouseMove:ne,onMouseUp:ge,onTouchEnd:xe,onTouchMove:he,onTouchStart:ae,ref:F},y.createElement(XW,null),n)))}),tQ=["width","height","responsive","children","className","style","compact","title","desc"];function nQ(e,t){if(e==null)return{};var n,r,l=rQ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function rQ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var MM=y.forwardRef((e,t)=>{var{width:n,height:r,responsive:l,children:u,className:s,style:f,compact:d,title:h,desc:m}=e,v=nQ(e,tQ),b=pn(v);return d?y.createElement(y.Fragment,null,y.createElement(ss,{width:n,height:r}),y.createElement(b2,{otherAttributes:b,title:h,desc:m},u)):y.createElement(eQ,{className:s,style:f,width:n,height:r,responsive:l??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},y.createElement(b2,{otherAttributes:b,title:h,desc:m,ref:t},y.createElement(jX,null,u)))});function jg(){return jg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},jg.apply(null,arguments)}function S2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function aQ(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?S2(Object(n),!0).forEach(function(r){iQ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):S2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function iQ(e,t,n){return(t=lQ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function lQ(e){var t=uQ(e,"string");return typeof t=="symbol"?t:t+""}function uQ(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var oQ={top:5,right:5,bottom:5,left:5},sQ=aQ({accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,layout:"horizontal",margin:oQ,responsive:!1,reverseStackOrder:!1,stackOffset:"none",syncMethod:"index"},Yb),DM=y.forwardRef(function(t,n){var r,l=Ct(t.categoricalChartProps,sQ),{chartName:u,defaultTooltipEventType:s,validateTooltipEventTypes:f,tooltipPayloadSearcher:d,categoricalChartProps:h}=t,m={chartName:u,defaultTooltipEventType:s,validateTooltipEventTypes:f,tooltipPayloadSearcher:d,eventEmitter:void 0};return y.createElement(CM,{preloadedState:{options:m},reduxStoreName:(r=h.id)!==null&&r!==void 0?r:u},y.createElement(G5,{chartData:h.data}),y.createElement(TM,{layout:l.layout,margin:l.margin}),y.createElement(PM,{throttleDelay:l.throttleDelay,throttledEvents:l.throttledEvents}),y.createElement(NM,{baseValue:l.baseValue,accessibilityLayer:l.accessibilityLayer,barCategoryGap:l.barCategoryGap,maxBarSize:l.maxBarSize,stackOffset:l.stackOffset,barGap:l.barGap,barSize:l.barSize,syncId:l.syncId,syncMethod:l.syncMethod,className:l.className,reverseStackOrder:l.reverseStackOrder}),y.createElement(MM,jg({},l,{ref:n})))}),cQ=["axis","item"],fQ=y.forwardRef((e,t)=>y.createElement(DM,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:cQ,tooltipPayloadSearcher:_b,categoricalChartProps:e,ref:t}));function dQ(e){var t=Xe();return y.useEffect(()=>{t(AW(e))},[t,e]),null}var hQ=["layout"];function Ag(){return Ag=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ag.apply(null,arguments)}function mQ(e,t){if(e==null)return{};var n,r,l=vQ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function vQ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function w2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function pQ(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?w2(Object(n),!0).forEach(function(r){yQ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):w2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function yQ(e,t,n){return(t=gQ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gQ(e){var t=bQ(e,"string");return typeof t=="symbol"?t:t+""}function bQ(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var xQ={top:5,right:5,bottom:5,left:5},RM=pQ({accessibilityLayer:!0,stackOffset:"none",barCategoryGap:"10%",barGap:4,margin:xQ,reverseStackOrder:!1,syncMethod:"index",layout:"radial",responsive:!1,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"},Yb),SQ=y.forwardRef(function(t,n){var r,l=Ct(t.categoricalChartProps,RM),{layout:u}=l,s=mQ(l,hQ),{chartName:f,defaultTooltipEventType:d,validateTooltipEventTypes:h,tooltipPayloadSearcher:m}=t,v={chartName:f,defaultTooltipEventType:d,validateTooltipEventTypes:h,tooltipPayloadSearcher:m,eventEmitter:void 0};return y.createElement(CM,{preloadedState:{options:v},reduxStoreName:(r=l.id)!==null&&r!==void 0?r:f},y.createElement(G5,{chartData:l.data}),y.createElement(TM,{layout:u,margin:l.margin}),y.createElement(PM,{throttleDelay:l.throttleDelay,throttledEvents:l.throttledEvents}),y.createElement(NM,{baseValue:void 0,accessibilityLayer:l.accessibilityLayer,barCategoryGap:l.barCategoryGap,maxBarSize:l.maxBarSize,stackOffset:l.stackOffset,barGap:l.barGap,barSize:l.barSize,syncId:l.syncId,syncMethod:l.syncMethod,className:l.className,reverseStackOrder:l.reverseStackOrder}),y.createElement(dQ,{cx:l.cx,cy:l.cy,startAngle:l.startAngle,endAngle:l.endAngle,innerRadius:l.innerRadius,outerRadius:l.outerRadius}),y.createElement(MM,Ag({},s,{ref:n})))});function O2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function _2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?O2(Object(n),!0).forEach(function(r){wQ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function wQ(e,t,n){return(t=OQ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function OQ(e){var t=_Q(e,"string");return typeof t=="symbol"?t:t+""}function _Q(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var EQ=["item"],jQ=_2(_2({},RM),{},{layout:"centric",startAngle:0,endAngle:360}),AQ=y.forwardRef((e,t)=>{var n=Ct(e,jQ);return y.createElement(SQ,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:EQ,tooltipPayloadSearcher:_b,categoricalChartProps:n,ref:t})}),CQ=["axis"],TQ=y.forwardRef((e,t)=>y.createElement(DM,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:CQ,tooltipPayloadSearcher:_b,categoricalChartProps:e,ref:t}));function E2(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:00`}function NQ({data:e,height:t=240,color:n="#6366f1"}){return x.jsx(o0,{width:"100%",height:t,children:x.jsxs(TQ,{data:e,children:[x.jsx("defs",{children:x.jsxs("linearGradient",{id:"areaGradient",x1:"0",y1:"0",x2:"0",y2:"1",children:[x.jsx("stop",{offset:"0%",stopColor:n,stopOpacity:.3}),x.jsx("stop",{offset:"100%",stopColor:n,stopOpacity:0})]})}),x.jsx(Q5,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),x.jsx($b,{dataKey:"bucket",tickFormatter:E2,tick:{fontSize:12,fill:"#6b7280"},axisLine:{stroke:"#e5e7eb"},tickLine:!1}),x.jsx(qb,{allowDecimals:!1,tick:{fontSize:12,fill:"#6b7280"},axisLine:!1,tickLine:!1,width:40}),x.jsx(Eb,{labelFormatter:r=>E2(String(r)),formatter:r=>[String(r),"Actions"],contentStyle:{fontSize:12,borderRadius:6,border:"1px solid #e5e7eb"}}),x.jsx(oM,{type:"monotone",dataKey:"count",stroke:n,strokeWidth:2,fill:"url(#areaGradient)"})]})})}function PQ(e){const t=e.decision??"";return x.jsx(v0,{...e,fill:iC[t]??lC})}function MQ({data:e,height:t=260}){const n=e.map(r=>({name:zg(r.decision),value:r.count,decision:r.decision,fill:iC[r.decision]??lC}));return x.jsx(o0,{width:"100%",height:t,children:x.jsxs(AQ,{children:[x.jsx(H5,{data:n,dataKey:"value",nameKey:"name",cx:"50%",cy:"45%",innerRadius:"55%",outerRadius:"80%",paddingAngle:2,shape:PQ}),x.jsx(Eb,{formatter:r=>[String(r),"Actions"],contentStyle:{fontSize:12,borderRadius:6,border:"1px solid #e5e7eb"}}),x.jsx(ZT,{verticalAlign:"bottom",iconType:"circle",iconSize:8,wrapperStyle:{fontSize:12}})]})})}function DQ(e){const t=e.reduce((n,r)=>Math.max(n,r.tool_name.length),0);return Math.min(t*7.5+12,220)}function j2({data:e,height:t}){const n=t??Math.max(120,e.length*36+20),r=y.useMemo(()=>DQ(e),[e]);return x.jsx(o0,{width:"100%",height:n,children:x.jsxs(fQ,{data:e,layout:"vertical",margin:{left:8,right:16,top:4,bottom:4},children:[x.jsx($b,{type:"number",allowDecimals:!1,tick:{fontSize:12,fill:"#6b7280"},axisLine:{stroke:"#e5e7eb"},tickLine:!1}),x.jsx(qb,{type:"category",dataKey:"tool_name",width:r,tick:{fontSize:12,fill:"#374151"},axisLine:!1,tickLine:!1}),x.jsx(Eb,{cursor:!1,formatter:l=>[String(l),"Calls"],contentStyle:{fontSize:12,borderRadius:6,border:"1px solid #e5e7eb"}}),x.jsx(hM,{dataKey:"count",fill:"#6366f1",barSize:20,radius:[0,4,4,0]})]})})}function RQ(){const[e,t]=y.useState(null),[n,r]=y.useState(!0),[l,u]=y.useState(null),[s,f]=y.useState(Io),d=y.useCallback(w=>{const j=new Date(Date.now()-s).toISOString();i4(j,void 0).then(A=>{t(A),u(null),w&&r(!1)}).catch(A=>{w&&(u(A instanceof Error?A.message:"Failed to load analytics"),r(!1))})},[s]);y.useEffect(()=>{r(!0),d(!0)},[d]);function h(w){w!==s&&f(w)}if(n)return x.jsxs("div",{className:"flex flex-col gap-6",children:[x.jsx("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:Array.from({length:4},(w,j)=>x.jsx("div",{className:"h-20 animate-pulse rounded-md bg-gray-100"},j))}),x.jsx("div",{className:"h-64 animate-pulse rounded-md bg-gray-100"}),x.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[x.jsx("div",{className:"h-72 animate-pulse rounded-md bg-gray-100"}),x.jsx("div",{className:"h-72 animate-pulse rounded-md bg-gray-100"})]})]});if(l)return x.jsx(Ii,{error:l});if(!e||e.total===0)return x.jsxs("div",{className:"flex h-full flex-col gap-6",children:[x.jsxs("div",{children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Analytics"}),x.jsx("p",{className:"mt-1 text-sm text-gray-500",children:"Tool call volume and decision breakdown"})]}),x.jsx(A2,{activePreset:s,onPresetChange:h}),x.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-500",children:[x.jsxs("svg",{className:"h-10 w-10 text-gray-300",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:[x.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z"}),x.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z"})]}),x.jsx("p",{className:"text-sm font-medium",children:"No data yet"}),x.jsx("p",{className:"text-xs text-gray-400",children:"Start sending tool calls through Helio"})]})]});const m=e.allowed_total??"—",v=e.blocked_total??"—",b=e.by_block_reason===void 0,S=(e.by_block_reason??[]).map(w=>({tool_name:zg(w.reason),count:w.count})),O=e.top_tools.map(w=>({tool_name:w.upstream?`${w.tool_name} (${w.upstream})`:w.tool_name,count:w.count})),_=e.approval_rate!=null?`${String(Math.round(e.approval_rate*100))}%`:"—";return x.jsxs("div",{className:"flex h-full flex-col gap-6 overflow-y-auto",children:[x.jsxs("div",{children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Analytics"}),x.jsx("p",{className:"mt-1 text-sm text-gray-500",children:"Tool call volume and decision breakdown"})]}),x.jsx(A2,{activePreset:s,onPresetChange:h}),x.jsx("section",{children:x.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:[x.jsx(cf,{label:"Total Actions",value:e.total}),x.jsx(cf,{label:"Allowed",value:m,color:"emerald"}),x.jsx(cf,{label:"Blocked",value:v,color:"red"}),x.jsx(cf,{label:"Approval Rate",value:_,color:"amber"})]})}),x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Actions Per Hour"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:x.jsx(NQ,{data:e.per_hour})})]}),x.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Matched Actions"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:e.by_decision.length>0?x.jsx(MQ,{data:e.by_decision}):x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"No decision data"})})]}),x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Top Tools"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:O.length>0?x.jsx(j2,{data:O}):x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"No tool data"})})]})]}),x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Blocked by Reason"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:b?x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"Requires a newer proxy version"}):S.length>0?x.jsx(j2,{data:S}):x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"No blocked actions"})})]})]})}function A2({activePreset:e,onPresetChange:t}){return x.jsx("div",{className:"flex gap-1.5",children:oC.map(n=>x.jsx("button",{type:"button",onClick:()=>{t(n.ms)},className:`rounded-md px-3 py-1.5 text-sm transition-colors ${e===n.ms?"bg-gray-900 text-white":"border border-gray-200 bg-white text-gray-600 hover:bg-gray-50"}`,children:n.label},n.label))})}const kQ={emerald:"text-emerald-700",red:"text-red-700",amber:"text-amber-700"};function cf({label:e,value:t,color:n}){const r=(n&&kQ[n])??"text-gray-900";return x.jsxs("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:[x.jsx("p",{className:"text-sm font-medium text-gray-500",children:e}),x.jsx("p",{className:`mt-1 text-2xl font-semibold tabular-nums ${r}`,children:typeof t=="number"?t.toLocaleString():t})]})}function LQ(){const[e,t]=y.useState("booting"),[n,r]=y.useState(!1),[l,u]=y.useState(""),[s,f]=y.useState(null),d=y.useCallback(()=>{Si(void 0),t("locked"),f("Session expired. Enter the dashboard secret again.")},[]),h=y.useCallback(async()=>{t("booting");try{const b=await J2();if(r(b.auth_required),!b.auth_required||b.authenticated){Si(b.csrf_token),f(null),t("ready");return}Si(void 0),t("locked"),f(null)}catch{Si(void 0),t("locked"),f("Unable to check session state. Verify the proxy is running and try again.")}},[]);y.useEffect(()=>{h()},[h]),y.useEffect(()=>(oO(d),()=>{oO(void 0)}),[d]);async function m(b){if(b.preventDefault(),!l.trim()){f("Enter the dashboard secret from your Helio config.");return}t("authenticating"),f(null);try{const S=await e4(l.trim());r(S.auth_required),Si(S.csrf_token),u(""),t("ready")}catch(S){Si(void 0),t("locked"),S instanceof Q2&&S.status===401?f("Invalid dashboard secret. Check your Helio config and try again."):f("Sign in failed due to a network or server error. Try again.")}}async function v(){try{await t4()}catch{}Si(void 0),t("locked"),f("Signed out. Enter the dashboard secret to unlock.")}return e==="booting"?x.jsx("div",{className:"flex min-h-screen items-center justify-center bg-gray-50 px-4",children:x.jsxs("div",{className:"w-full max-w-md rounded-lg border border-gray-200 bg-white p-6 text-center shadow-sm",children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Helio Dashboard"}),x.jsx("p",{className:"mt-2 text-sm text-gray-600",children:"Checking session status..."})]})}):e==="locked"||e==="authenticating"?x.jsx("div",{className:"flex min-h-screen items-center justify-center bg-gray-50 px-4",children:x.jsxs("form",{onSubmit:b=>{m(b)},className:"w-full max-w-md rounded-lg border border-gray-200 bg-white p-6 shadow-sm",children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Dashboard Locked"}),x.jsxs("p",{className:"mt-2 text-sm text-gray-600",children:["Enter your dashboard secret, the ",x.jsx("code",{children:"dashboard.api_secret"})," value from your Helio config. If that is an env placeholder (for example"," ",x.jsx("code",{children:"${HELIO_DASHBOARD_SECRET}"}),"), enter the value it resolves to."]}),x.jsx("label",{htmlFor:"dashboard-secret",className:"mt-4 block text-sm font-medium text-gray-700",children:"Dashboard secret"}),x.jsx("input",{id:"dashboard-secret",type:"password",autoComplete:"current-password",value:l,onChange:b=>{u(b.target.value)},disabled:e==="authenticating",className:"mt-1 w-full rounded-md border border-gray-300 px-3 py-2 text-sm text-gray-900 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-200 disabled:cursor-not-allowed disabled:bg-gray-100"}),s&&x.jsx("p",{className:"mt-3 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800",children:s}),x.jsx("button",{type:"submit",disabled:e==="authenticating",className:"mt-4 inline-flex w-full items-center justify-center rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-500 disabled:cursor-not-allowed disabled:bg-blue-300",children:e==="authenticating"?"Unlocking...":"Unlock Dashboard"})]})}):x.jsx(Kk,{children:x.jsx(f4,{children:x.jsx(c4,{onSessionExpired:d,children:x.jsx(xk,{children:x.jsxs(Ua,{element:x.jsx(y4,{onLogout:n?()=>void v():void 0}),children:[x.jsx(Ua,{index:!0,element:x.jsx(z4,{})}),x.jsx(Ua,{path:"approvals",element:x.jsx(Y4,{})}),x.jsx(Ua,{path:"audit",element:x.jsx(fL,{})}),x.jsx(Ua,{path:"limits",element:x.jsx(vL,{})}),x.jsx(Ua,{path:"budgets",element:x.jsx(SL,{})}),x.jsx(Ua,{path:"analytics",element:x.jsx(RQ,{})})]})})})})})}const kM=document.getElementById("root");if(!kM)throw new Error("Dashboard mount point #root not found in index.html");yR.createRoot(kM).render(x.jsx(y.StrictMode,{children:x.jsx(LQ,{})}));
|
|
128
|
+
*/var MA;function CG(){if(MA)return Ve;MA=1;var e=Symbol.for("react.transitional.element"),t=Symbol.for("react.portal"),n=Symbol.for("react.fragment"),r=Symbol.for("react.strict_mode"),l=Symbol.for("react.profiler"),u=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),h=Symbol.for("react.suspense_list"),m=Symbol.for("react.memo"),v=Symbol.for("react.lazy"),b=Symbol.for("react.view_transition"),S=Symbol.for("react.client.reference");function O(_){if(typeof _=="object"&&_!==null){var w=_.$$typeof;switch(w){case e:switch(_=_.type,_){case n:case l:case r:case d:case h:case b:return _;default:switch(_=_&&_.$$typeof,_){case s:case f:case v:case m:return _;case u:return _;default:return w}}case t:return w}}}return Ve.ContextConsumer=u,Ve.ContextProvider=s,Ve.Element=e,Ve.ForwardRef=f,Ve.Fragment=n,Ve.Lazy=v,Ve.Memo=m,Ve.Portal=t,Ve.Profiler=l,Ve.StrictMode=r,Ve.Suspense=d,Ve.SuspenseList=h,Ve.isContextConsumer=function(_){return O(_)===u},Ve.isContextProvider=function(_){return O(_)===s},Ve.isElement=function(_){return typeof _=="object"&&_!==null&&_.$$typeof===e},Ve.isForwardRef=function(_){return O(_)===f},Ve.isFragment=function(_){return O(_)===n},Ve.isLazy=function(_){return O(_)===v},Ve.isMemo=function(_){return O(_)===m},Ve.isPortal=function(_){return O(_)===t},Ve.isProfiler=function(_){return O(_)===l},Ve.isStrictMode=function(_){return O(_)===r},Ve.isSuspense=function(_){return O(_)===d},Ve.isSuspenseList=function(_){return O(_)===h},Ve.isValidElementType=function(_){return typeof _=="string"||typeof _=="function"||_===n||_===l||_===r||_===d||_===h||typeof _=="object"&&_!==null&&(_.$$typeof===v||_.$$typeof===m||_.$$typeof===s||_.$$typeof===u||_.$$typeof===f||_.$$typeof===S||_.getModuleId!==void 0)},Ve.typeOf=O,Ve}var DA;function TG(){return DA||(DA=1,xy.exports=CG()),xy.exports}var NG=TG(),RA=e=>typeof e=="string"?e:e?e.displayName||e.name||"Component":"",kA=null,Sy=null,z5=e=>{if(e===kA&&Array.isArray(Sy))return Sy;var t=[];return y.Children.forEach(e,n=>{ut(n)||(NG.isFragment(n)?t=t.concat(z5(n.props.children)):t.push(n))}),Sy=t,kA=e,t};function Nb(e,t){var n=[],r=[];return Array.isArray(t)?r=t.map(l=>RA(l)):r=[RA(t)],z5(e).forEach(l=>{var u=$i(l,"type.displayName")||$i(l,"type.name");u&&r.indexOf(u)!==-1&&n.push(l)}),n}var I5=e=>e&&typeof e=="object"&&"clipDot"in e?!!e.clipDot:!0,wy={},LA;function PG(){return LA||(LA=1,(function(e){Object.defineProperty(e,Symbol.toStringTag,{value:"Module"});function t(n){var l;if(typeof n!="object"||n==null)return!1;if(Object.getPrototypeOf(n)===null)return!0;if(Object.prototype.toString.call(n)!=="[object Object]"){const u=n[Symbol.toStringTag];return u==null||!((l=Object.getOwnPropertyDescriptor(n,Symbol.toStringTag))!=null&&l.writable)?!1:n.toString()===`[object ${u}]`}let r=n;for(;Object.getPrototypeOf(r)!==null;)r=Object.getPrototypeOf(r);return Object.getPrototypeOf(n)===r}e.isPlainObject=t})(wy)),wy}var Oy,zA;function MG(){return zA||(zA=1,Oy=PG().isPlainObject),Oy}var DG=MG();const RG=Qa(DG);var IA,BA,UA,$A,qA;function HA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function KA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?HA(Object(n),!0).forEach(function(r){kG(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):HA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function kG(e,t,n){return(t=LG(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function LG(e){var t=zG(e,"string");return typeof t=="symbol"?t:t+""}function zG(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function dd(){return dd=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},dd.apply(null,arguments)}function Ao(e,t){return t||(t=e.slice(0)),Object.freeze(Object.defineProperties(e,{raw:{value:Object.freeze(t)}}))}var YA=(e,t,n,r,l)=>{var u=n-r,s;return s=dt(IA||(IA=Ao(["M ",",",""])),e,t),s+=dt(BA||(BA=Ao(["L ",",",""])),e+n,t),s+=dt(UA||(UA=Ao(["L ",",",""])),e+n-u/2,t+l),s+=dt($A||($A=Ao(["L ",",",""])),e+n-u/2-r,t+l),s+=dt(qA||(qA=Ao(["L ",","," Z"])),e,t),s},IG={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:"ease"},BG=e=>{var t=Ct(e,IG),{x:n,y:r,upperWidth:l,lowerWidth:u,height:s,className:f}=t,{animationEasing:d,animationDuration:h,animationBegin:m,isUpdateAnimationActive:v}=t,b=y.useRef(null),[S,O]=y.useState(-1),_=y.useRef(l),w=y.useRef(u),j=y.useRef(s),A=y.useRef(n),N=y.useRef(r),T=hs(e,"trapezoid-");if(y.useEffect(()=>{if(b.current&&b.current.getTotalLength)try{var F=b.current.getTotalLength();F&&O(F)}catch{}},[]),n!==+n||r!==+r||l!==+l||u!==+u||s!==+s||l===0&&u===0||s===0)return null;var P=Ie("recharts-trapezoid",f);if(!v)return y.createElement("g",null,y.createElement("path",dd({},rn(t),{className:P,d:YA(n,r,l,u,s)})));var M=_.current,R=w.current,I=j.current,q=A.current,W=N.current,X="0px ".concat(S===-1?1:S,"px"),U="".concat(S,"px ").concat(S,"px"),se=JT(["strokeDasharray"],h,d);return y.createElement(ds,{animationId:T,key:T,canBegin:S>0,duration:h,easing:d,isActive:v,begin:m},F=>{var J=nt(M,l,F),z=nt(R,u,F),V=nt(I,s,F),ne=nt(q,n,F),le=nt(W,r,F);b.current&&(_.current=J,w.current=z,j.current=V,A.current=ne,N.current=le);var Q=F>0?{transition:se,strokeDasharray:U}:{strokeDasharray:X};return y.createElement("path",dd({},rn(t),{className:P,d:YA(ne,le,J,z,V),ref:b,style:KA(KA({},Q),t.style)}))})},UG=["option","shapeType","activeClassName","inActiveClassName"];function $G(e,t){if(e==null)return{};var n,r,l=qG(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function qG(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function GA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function hd(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?GA(Object(n),!0).forEach(function(r){HG(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):GA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function HG(e,t,n){return(t=KG(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function KG(e){var t=YG(e,"string");return typeof t=="symbol"?t:t+""}function YG(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function GG(e,t){return hd(hd({},t),e)}function VG(e,t){return e==="symbols"}function VA(e){var{shapeType:t,elementProps:n}=e;switch(t){case"rectangle":return y.createElement(rN,n);case"trapezoid":return y.createElement(BG,n);case"sector":return y.createElement(v0,n);case"symbols":if(VG(t))return y.createElement(Zg,n);break;case"curve":return y.createElement(Zl,n);default:return null}}function XG(e){return y.isValidElement(e)?e.props:e}function B5(e){var{option:t,shapeType:n,activeClassName:r="recharts-active-shape",inActiveClassName:l="recharts-shape"}=e,u=$G(e,UG),s;if(y.isValidElement(t))s=y.cloneElement(t,hd(hd({},u),XG(t)));else if(typeof t=="function")s=t(u,u.index);else if(RG(t)&&typeof t!="boolean"){var f=GG(t,u);s=y.createElement(VA,{shapeType:n,elementProps:f})}else{var d=u;s=y.createElement(VA,{shapeType:n,elementProps:d})}return u.isActive?y.createElement(ht,{className:r},s):y.createElement(ht,{className:l},s)}var Pb=(e,t,n)=>{var r=Xe();return(l,u)=>s=>{e==null||e(l,u,s),r(KP({activeIndex:String(u),activeDataKey:t,activeCoordinate:l.tooltipPosition,activeGraphicalItemId:n}))}},Mb=e=>{var t=Xe();return(n,r)=>l=>{e==null||e(n,r,l),t(eH())}},Db=(e,t,n)=>{var r=Xe();return(l,u)=>s=>{e==null||e(l,u,s),r(tH({activeIndex:String(u),activeDataKey:t,activeCoordinate:l.tooltipPosition,activeGraphicalItemId:n}))}};function Rb(e){var{tooltipEntrySettings:t}=e,n=Xe(),r=Jt(),l=y.useRef(null);return y.useLayoutEffect(()=>{r||(l.current===null?n(Zq(t)):l.current!==t&&n(Wq({prev:l.current,next:t})),l.current=t)},[t,n,r]),y.useLayoutEffect(()=>()=>{l.current&&(n(Qq(l.current)),l.current=null)},[n]),null}function U5(e){var{legendPayload:t}=e,n=Xe(),r=Jt(),l=y.useRef(null);return y.useLayoutEffect(()=>{r||(l.current===null?n(VT(t)):l.current!==t&&n(XT({prev:l.current,next:t})),l.current=t)},[n,r,t]),y.useLayoutEffect(()=>()=>{l.current&&(n(FT(l.current)),l.current=null)},[n]),null}function FG(e){var{legendPayload:t}=e,n=Xe(),r=pe(ke),l=y.useRef(null);return y.useLayoutEffect(()=>{r!=="centric"&&r!=="radial"||(l.current===null?n(VT(t)):l.current!==t&&n(XT({prev:l.current,next:t})),l.current=t)},[n,r,t]),y.useLayoutEffect(()=>()=>{l.current&&(n(FT(l.current)),l.current=null)},[n]),null}var _y,ZG=()=>{var[e]=y.useState(()=>Bo("uid-"));return e},WG=(_y=fR.useId)!==null&&_y!==void 0?_y:ZG;function QG(e,t){var n=WG();return t||(e?"".concat(e,"-").concat(n):n)}var JG=y.createContext(void 0),kb=e=>{var{id:t,type:n,children:r}=e,l=QG("recharts-".concat(n),t);return y.createElement(JG.Provider,{value:l},r(l))},eV={cartesianItems:[],polarItems:[]},$5=Qt({name:"graphicalItems",initialState:eV,reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(t.payload)},prepare:et()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,l=Vn(e).cartesianItems.indexOf(n);l>-1&&(e.cartesianItems[l]=r)},prepare:et()},removeCartesianGraphicalItem:{reducer(e,t){var n=Vn(e).cartesianItems.indexOf(t.payload);n>-1&&e.cartesianItems.splice(n,1)},prepare:et()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(t.payload)},prepare:et()},removePolarGraphicalItem:{reducer(e,t){var n=Vn(e).polarItems.indexOf(t.payload);n>-1&&e.polarItems.splice(n,1)},prepare:et()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,l=Vn(e).polarItems.indexOf(n);l>-1&&(e.polarItems[l]=r)},prepare:et()}}}),{addCartesianGraphicalItem:tV,replaceCartesianGraphicalItem:nV,removeCartesianGraphicalItem:rV,addPolarGraphicalItem:aV,removePolarGraphicalItem:iV,replacePolarGraphicalItem:lV}=$5.actions,uV=$5.reducer,oV=e=>{var t=Xe(),n=y.useRef(null);return y.useLayoutEffect(()=>{n.current===null?t(tV(e)):n.current!==e&&t(nV({prev:n.current,next:e})),n.current=e},[t,e]),y.useLayoutEffect(()=>()=>{n.current&&(t(rV(n.current)),n.current=null)},[t]),null},q5=y.memo(oV),sV=e=>{var t=Xe(),n=y.useRef(null);return y.useLayoutEffect(()=>{n.current===null?t(aV(e)):n.current!==e&&t(lV({prev:n.current,next:e})),n.current=e},[t,e]),y.useLayoutEffect(()=>()=>{n.current&&(t(iV(n.current)),n.current=null)},[t]),null},cV=y.memo(sV),fV=["key"],dV=["onMouseEnter","onClick","onMouseLeave"],hV=["id"],mV=["id"];function Za(){return Za=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Za.apply(null,arguments)}function ph(e,t){if(e==null)return{};var n,r,l=vV(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function vV(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function XA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function at(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?XA(Object(n),!0).forEach(function(r){pV(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):XA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function pV(e,t,n){return(t=yV(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function yV(e){var t=gV(e,"string");return typeof t=="symbol"?t:t+""}function gV(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function bV(e){var t=y.useMemo(()=>Nb(e.children,dh),[e.children]),n=pe(r=>jG(r,e.id,t));return n==null?null:y.createElement(FG,{legendPayload:n})}function xV(e){if(!(e==null||typeof e=="boolean"||typeof e=="function")){if(y.isValidElement(e)){var t,n=(t=e.props)===null||t===void 0?void 0:t.fill;return typeof n=="string"?n:void 0}var{fill:r}=e;return typeof r=="string"?r:void 0}}var SV=y.memo(e=>{var{dataKey:t,nameKey:n,sectors:r,stroke:l,strokeWidth:u,fill:s,name:f,hide:d,tooltipType:h,id:m,activeShape:v}=e,b=xV(v),S=r.map(_=>{var w=_.tooltipPayload;return b==null||w==null?w:w.map(j=>at(at({},j),{},{color:b,fill:b}))}),O={dataDefinedOnItem:S,getPosition:_=>{var w;return(w=r[Number(_)])===null||w===void 0?void 0:w.tooltipPosition},settings:{stroke:l,strokeWidth:u,fill:s,dataKey:t,nameKey:n,name:du(f,t),hide:d,type:h,color:s,unit:"",graphicalItemId:m}};return y.createElement(Rb,{tooltipEntrySettings:O})}),wV=(e,t)=>e>t?"start":e<t?"end":"middle",OV=(e,t,n)=>Wt(typeof t=="function"?t(e):t,n,n*.8),_V=(e,t,n)=>{var{top:r,left:l,width:u,height:s}=t,f=aN(u,s),d=l+Wt(e.cx,u,u/2),h=r+Wt(e.cy,s,s/2),m=Wt(e.innerRadius,f,0),v=OV(n,e.outerRadius,f),b=e.maxRadius||Math.sqrt(u*u+s*s)/2;return{cx:d,cy:h,innerRadius:m,outerRadius:v,maxRadius:b}},EV=(e,t)=>{var n=kt(t-e),r=Math.min(Math.abs(t-e),360);return n*r},jV=(e,t)=>{if(y.isValidElement(e))return y.cloneElement(e,t);if(typeof e=="function")return e(t);var n=Ie("recharts-pie-label-line",typeof e!="boolean"?e.className:""),{key:r}=t,l=ph(t,fV);return y.createElement(Zl,Za({},l,{type:"linear",className:n}))},AV=(e,t,n)=>{if(y.isValidElement(e))return y.cloneElement(e,t);var r=n;if(typeof e=="function"&&(r=e(t),y.isValidElement(r)))return r;var l=Ie("recharts-pie-label-text",k5(e));return y.createElement(hh,Za({},t,{alignmentBaseline:"middle",className:l}),r)};function CV(e){var{sectors:t,props:n,showLabels:r}=e,{label:l,labelLine:u,dataKey:s}=n;if(!r||!l||!t)return null;var f=pn(n),d=Bi(l),h=Bi(u),m=typeof l=="object"&&"offsetRadius"in l&&typeof l.offsetRadius=="number"&&l.offsetRadius||20,v=t.map((b,S)=>{var O=(b.startAngle+b.endAngle)/2,_=St(b.cx,b.cy,b.outerRadius+m,O),w=at(at(at(at({},f),b),{},{stroke:"none"},d),{},{index:S,textAnchor:wV(_.x,b.cx)},_),j=at(at(at(at({},f),b),{},{fill:"none",stroke:b.fill},h),{},{index:S,points:[St(b.cx,b.cy,b.outerRadius,O),_],key:"line"});return y.createElement(yn,{zIndex:wt.label,key:"label-".concat(b.startAngle,"-").concat(b.endAngle,"-").concat(b.midAngle,"-").concat(S)},y.createElement(ht,null,u&&jV(u,j),AV(l,w,$e(b,s))))});return y.createElement(ht,{className:"recharts-pie-labels"},v)}function TV(e){var{sectors:t,props:n,showLabels:r}=e,{label:l}=n;return typeof l=="object"&&l!=null&&"position"in l?y.createElement(Ab,{label:l}):y.createElement(CV,{sectors:t,props:n,showLabels:r})}function NV(e){var{sectors:t,activeShape:n,inactiveShape:r,allOtherPieProps:l,shape:u,id:s}=e,f=pe(Fa),d=pe(bb),h=pe(l5),{onMouseEnter:m,onClick:v,onMouseLeave:b}=l,S=ph(l,dV),O=Pb(m,l.dataKey,s),_=Mb(b),w=Db(v,l.dataKey,s);return t==null||t.length===0?null:y.createElement(y.Fragment,null,t.map((j,A)=>{if((j==null?void 0:j.startAngle)===0&&(j==null?void 0:j.endAngle)===0&&t.length!==1)return null;var N=h==null||h===s,T=String(A)===f&&(d==null||l.dataKey===d)&&N,P=f?r:null,M=n&&T?n:P,R=at(at({},j),{},{stroke:j.stroke,tabIndex:-1,[DT]:A,[RT]:s});return y.createElement(ht,Za({key:"sector-".concat(j==null?void 0:j.startAngle,"-").concat(j==null?void 0:j.endAngle,"-").concat(j.midAngle,"-").concat(A),tabIndex:-1,className:"recharts-pie-sector"},is(S,j,A),{onMouseEnter:O(j,A),onMouseLeave:_(j,A),onClick:w(j,A)}),y.createElement(B5,Za({option:u??M,index:A,shapeType:"sector",isActive:T},R)))}))}function PV(e){var t,{pieSettings:n,displayedData:r,cells:l,offset:u}=e,{cornerRadius:s,startAngle:f,endAngle:d,dataKey:h,nameKey:m,tooltipType:v}=n,b=Math.abs(n.minAngle),S=EV(f,d),O=Math.abs(S),_=r.length<=1?0:(t=n.paddingAngle)!==null&&t!==void 0?t:0,w=r.filter(I=>$e(I,h,0)!==0).length,j=(O>=360?w:w-1)*_,A=r.reduce((I,q)=>{var W=$e(q,h,0);return I+(de(W)?W:0)},0),N=b>0&&A>0&&r.some(I=>{var q=$e(I,h,0),W=(de(q)?q:0)/A;return q!==0&&W*O<b}),T=N?b:0,P=O-w*T-j,M;if(A>0){var R;M=r.map((I,q)=>{var W=$e(I,h,0),X=$e(I,m,q),U=_V(n,u,I),se=(de(W)?W:0)/A,F,J=at(at({},I),l&&l[q]&&l[q].props),z=J!=null&&"fill"in J&&typeof J.fill=="string"?J.fill:n.fill;q?F=R.endAngle+kt(S)*_*(W!==0?1:0):F=f;var V=F+kt(S)*((W!==0?T:0)+se*P),ne=(F+V)/2,le=(U.innerRadius+U.outerRadius)/2,Q=[{name:X,value:W,payload:J,dataKey:h,type:v,color:z,fill:z,graphicalItemId:n.id}],D=St(U.cx,U.cy,le,ne);return R=at(at(at(at({},n.presentationProps),{},{percent:se,cornerRadius:typeof s=="string"?parseFloat(s):s,name:X,tooltipPayload:Q,midAngle:ne,middleRadius:le,tooltipPosition:D},J),U),{},{value:W,dataKey:h,startAngle:F,endAngle:V,payload:J,paddingAngle:W!==0?kt(S)*_:0}),R})}return M}function MV(e){var{showLabels:t,sectors:n,children:r}=e,l=y.useMemo(()=>!t||!n?[]:n.map(u=>({value:u.value,payload:u.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:u.cx,cy:u.cy,innerRadius:u.innerRadius,outerRadius:u.outerRadius,startAngle:u.startAngle,endAngle:u.endAngle,clockWise:!1},fill:u.fill})),[n,t]);return y.createElement(sG,{value:t?l:void 0},r)}function DV(e){var{props:t,previousSectorsRef:n,id:r}=e,{sectors:l,isAnimationActive:u,animationBegin:s,animationDuration:f,animationEasing:d,activeShape:h,inactiveShape:m,onAnimationStart:v,onAnimationEnd:b}=t,S=hs(t,"recharts-pie-"),O=n.current,[_,w]=y.useState(!1),j=y.useCallback(()=>{typeof b=="function"&&b(),w(!1)},[b]),A=y.useCallback(()=>{typeof v=="function"&&v(),w(!0)},[v]);return y.createElement(MV,{showLabels:!_,sectors:l},y.createElement(ds,{animationId:S,begin:s,duration:f,isActive:u,easing:d,onAnimationStart:A,onAnimationEnd:j,key:S},N=>{var T,P=[],M=l&&l[0],R=(T=M==null?void 0:M.startAngle)!==null&&T!==void 0?T:0;return l==null||l.forEach((I,q)=>{var W=O&&O[q],X=q>0?$i(I,"paddingAngle",0):0;if(W){var U=nt(W.endAngle-W.startAngle,I.endAngle-I.startAngle,N),se=at(at({},I),{},{startAngle:R+X,endAngle:R+U+X});P.push(se),R=se.endAngle}else{var{endAngle:F,startAngle:J}=I,z=nt(0,F-J,N),V=at(at({},I),{},{startAngle:R+X,endAngle:R+z+X});P.push(V),R=V.endAngle}}),n.current=P,y.createElement(ht,null,y.createElement(NV,{sectors:P,activeShape:h,inactiveShape:m,allOtherPieProps:t,shape:t.shape,id:r}))}),y.createElement(TV,{showLabels:!_,sectors:l,props:t}),t.children)}var RV={animationBegin:400,animationDuration:1500,animationEasing:"ease",cx:"50%",cy:"50%",dataKey:"value",endAngle:360,fill:"#808080",hide:!1,innerRadius:0,isAnimationActive:"auto",label:!1,labelLine:!0,legendType:"rect",minAngle:0,nameKey:"name",outerRadius:"80%",paddingAngle:0,rootTabIndex:0,startAngle:0,stroke:"#fff",zIndex:wt.area};function kV(e){var{id:t}=e,n=ph(e,hV),{hide:r,className:l,rootTabIndex:u}=e,s=y.useMemo(()=>Nb(e.children,dh),[e.children]),f=pe(m=>AG(m,t,s)),d=y.useRef(null),h=Ie("recharts-pie",l);return r||f==null?(d.current=null,y.createElement(ht,{tabIndex:u,className:h})):y.createElement(yn,{zIndex:e.zIndex},y.createElement(SV,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:f,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,id:t,activeShape:e.activeShape}),y.createElement(ht,{tabIndex:u,className:h},y.createElement(DV,{props:at(at({},n),{},{sectors:f}),previousSectorsRef:d,id:t})))}function LV(e){var t=Ct(e,RV),{id:n}=t,r=ph(t,mV),l=pn(r);return y.createElement(kb,{id:n,type:"pie"},u=>y.createElement(y.Fragment,null,y.createElement(cV,{type:"pie",id:u,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:l,maxRadius:t.maxRadius}),y.createElement(bV,Za({},r,{id:u})),y.createElement(kV,Za({},r,{id:u}))))}var H5=LV;H5.displayName="Pie";var zV=["points"];function FA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Ey(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?FA(Object(n),!0).forEach(function(r){IV(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):FA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function IV(e,t,n){return(t=BV(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function BV(e){var t=UV(e,"string");return typeof t=="symbol"?t:t+""}function UV(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function md(){return md=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},md.apply(null,arguments)}function $V(e,t){if(e==null)return{};var n,r,l=qV(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function qV(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function HV(e){var{option:t,dotProps:n,className:r}=e;if(y.isValidElement(t))return y.cloneElement(t,n);if(typeof t=="function")return t(n);var l=Ie(r,typeof t!="boolean"?t.className:""),u=n??{},{points:s}=u,f=$V(u,zV);return y.createElement(P5,md({},f,{className:l}))}function KV(e,t){return e==null?!1:t?!0:e.length===1}function YV(e){var{points:t,dot:n,className:r,dotClassName:l,dataKey:u,baseProps:s,needClip:f,clipPathId:d,zIndex:h=wt.scatter}=e;if(!KV(t,n))return null;var m=I5(n),v=TL(n),b=t.map((O,_)=>{var w,j,A=Ey(Ey(Ey({r:3},s),v),{},{index:_,cx:(w=O.x)!==null&&w!==void 0?w:void 0,cy:(j=O.y)!==null&&j!==void 0?j:void 0,dataKey:u,value:O.value,payload:O.payload,points:t});return y.createElement(HV,{key:"dot-".concat(_),option:n,dotProps:A,className:l})}),S={};return f&&d!=null&&(S.clipPath="url(#clipPath-".concat(m?"":"dots-").concat(d,")")),y.createElement(yn,{zIndex:h},y.createElement(ht,md({className:r},S),b))}function ZA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function WA(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?ZA(Object(n),!0).forEach(function(r){GV(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):ZA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function GV(e,t,n){return(t=VV(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function VV(e){var t=XV(e,"string");return typeof t=="symbol"?t:t+""}function XV(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var K5=0,FV={xAxis:{},yAxis:{},zAxis:{}},Y5=Qt({name:"cartesianAxis",initialState:FV,reducers:{addXAxis:{reducer(e,t){e.xAxis[t.payload.id]=t.payload},prepare:et()},replaceXAxis:{reducer(e,t){var{prev:n,next:r}=t.payload;e.xAxis[n.id]!==void 0&&(n.id!==r.id&&delete e.xAxis[n.id],e.xAxis[r.id]=r)},prepare:et()},removeXAxis:{reducer(e,t){delete e.xAxis[t.payload.id]},prepare:et()},addYAxis:{reducer(e,t){e.yAxis[t.payload.id]=t.payload},prepare:et()},replaceYAxis:{reducer(e,t){var{prev:n,next:r}=t.payload;e.yAxis[n.id]!==void 0&&(n.id!==r.id&&delete e.yAxis[n.id],e.yAxis[r.id]=r)},prepare:et()},removeYAxis:{reducer(e,t){delete e.yAxis[t.payload.id]},prepare:et()},addZAxis:{reducer(e,t){e.zAxis[t.payload.id]=t.payload},prepare:et()},replaceZAxis:{reducer(e,t){var{prev:n,next:r}=t.payload;e.zAxis[n.id]!==void 0&&(n.id!==r.id&&delete e.zAxis[n.id],e.zAxis[r.id]=r)},prepare:et()},removeZAxis:{reducer(e,t){delete e.zAxis[t.payload.id]},prepare:et()},updateYAxisWidth(e,t){var{id:n,width:r}=t.payload,l=e.yAxis[n];if(l){var u,s=l.widthHistory||[];if(s.length===3&&s[0]===s[2]&&r===s[1]&&r!==l.width&&Math.abs(r-((u=s[0])!==null&&u!==void 0?u:0))<=1)return;var f=[...s,r].slice(-3);e.yAxis[n]=WA(WA({},l),{},{width:r,widthHistory:f})}}}}),{addXAxis:ZV,replaceXAxis:WV,removeXAxis:QV,addYAxis:JV,replaceYAxis:eX,removeYAxis:tX,addZAxis:KQ,replaceZAxis:YQ,removeZAxis:GQ,updateYAxisWidth:nX}=Y5.actions,rX=Y5.reducer,aX=$([Tt],e=>({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),iX=$([aX,oa,sa],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),Lb=()=>pe(iX),lX=()=>pe(FH);function QA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function jy(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?QA(Object(n),!0).forEach(function(r){uX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):QA(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function uX(e,t,n){return(t=oX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function oX(e){var t=sX(e,"string");return typeof t=="symbol"?t:t+""}function sX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var cX=e=>{var{point:t,childIndex:n,mainColor:r,activeDot:l,dataKey:u,clipPath:s}=e;if(l===!1||t.x==null||t.y==null)return null;var f={index:n,dataKey:u,cx:t.x,cy:t.y,r:4,fill:r??"none",strokeWidth:2,stroke:"#fff",payload:t.payload,value:t.value},d=jy(jy(jy({},f),Bi(l)),Wg(l)),h;return y.isValidElement(l)?h=y.cloneElement(l,d):typeof l=="function"?h=l(d):h=y.createElement(P5,d),y.createElement(ht,{className:"recharts-active-dot",clipPath:s},h)};function JA(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:l,clipPath:u,zIndex:s=wt.activeDot}=e,f=pe(Fa),d=lX();if(t==null||d==null)return null;var h=t.find(m=>d.includes(m.payload));return ut(h)?null:y.createElement(yn,{zIndex:s},y.createElement(cX,{point:h,childIndex:Number(f),mainColor:n,dataKey:l,activeDot:r,clipPath:u}))}var e2=(e,t,n)=>{var r=n??e;if(!ut(r))return Wt(r,t,0)},fX=(e,t,n)=>{var r={},l=e.filter(Qd),u=e.filter(h=>h.stackId==null),s=l.reduce((h,m)=>{var v=h[m.stackId];return v==null&&(v=[]),v.push(m),h[m.stackId]=v,h},r),f=Object.entries(s).map(h=>{var m,[v,b]=h,S=b.map(_=>_.dataKey),O=e2(t,n,(m=b[0])===null||m===void 0?void 0:m.barSize);return{stackId:v,dataKeys:S,barSize:O}}),d=u.map(h=>{var m=[h.dataKey].filter(b=>b!=null),v=e2(t,n,h.barSize);return{stackId:void 0,dataKeys:m,barSize:v}});return[...f,...d]};function t2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function uf(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?t2(Object(n),!0).forEach(function(r){dX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):t2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function dX(e,t,n){return(t=hX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hX(e){var t=mX(e,"string");return typeof t=="symbol"?t:t+""}function mX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function vX(e,t,n,r,l){var u,s=r.length;if(!(s<1)){var f=Wt(e,n,0,!0),d,h=[];if(je((u=r[0])===null||u===void 0?void 0:u.barSize)){var m=!1,v=n/s,b=r.reduce((A,N)=>A+(N.barSize||0),0);b+=(s-1)*f,b>=n&&(b-=(s-1)*f,f=0),b>=n&&v>0&&(m=!0,v*=.9,b=s*v);var S=(n-b)/2>>0,O={offset:S-f,size:0};d=r.reduce((A,N)=>{var T,P={stackId:N.stackId,dataKeys:N.dataKeys,position:{offset:O.offset+O.size+f,size:m?v:(T=N.barSize)!==null&&T!==void 0?T:0}},M=[...A,P];return O=P.position,M},h)}else{var _=Wt(t,n,0,!0);n-2*_-(s-1)*f<=0&&(f=0);var w=(n-2*_-(s-1)*f)/s;w>1&&(w>>=0);var j=je(l)?Math.min(w,l):w;d=r.reduce((A,N,T)=>[...A,{stackId:N.stackId,dataKeys:N.dataKeys,position:{offset:_+(w+f)*T+(w-j)/2,size:j}}],h)}return d}}var pX=(e,t,n,r,l,u,s)=>{var f=ut(s)?t:s,d=vX(n,r,l!==u?l:u,e,f);return l!==u&&d!=null&&(d=d.map(h=>uf(uf({},h),{},{position:uf(uf({},h.position),{},{offset:h.position.offset-l/2})}))),d},yX=(e,t)=>{var n=Wd(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var l=e[r];if(l){var{stackedData:u}=l;if(u)return u.find(s=>s.key===n)}}}},gX=(e,t)=>{if(!(e==null||t==null)){var n=e.find(r=>r.stackId===t.stackId&&t.dataKey!=null&&r.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function bX(e,t){return e&&typeof e=="object"&&"zIndex"in e&&typeof e.zIndex=="number"&&je(e.zIndex)?e.zIndex:t}var G5=e=>{var{chartData:t}=e,n=Xe(),r=Jt();return y.useEffect(()=>r?()=>{}:(n(cA(t)),()=>{n(cA(void 0))}),[t,n,r]),null},n2={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},V5=Qt({name:"brush",initialState:n2,reducers:{setBrushSettings(e,t){return t.payload==null?n2:t.payload}}}),{setBrushSettings:VQ}=V5.actions,xX=V5.reducer;function SX(e){return(e%180+180)%180}var wX=function(t){var{width:n,height:r}=t,l=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,u=SX(l),s=u*Math.PI/180,f=Math.atan(r/n),d=s>f&&s<Math.PI-f?r/Math.sin(s):n/Math.cos(s);return Math.abs(d)},OX={dots:[],areas:[],lines:[]},X5=Qt({name:"referenceElements",initialState:OX,reducers:{addDot:(e,t)=>{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=Vn(e).dots.findIndex(r=>r===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=Vn(e).areas.findIndex(r=>r===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(t.payload)},removeLine:(e,t)=>{var n=Vn(e).lines.findIndex(r=>r===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:XQ,removeDot:FQ,addArea:ZQ,removeArea:WQ,addLine:QQ,removeLine:JQ}=X5.actions,_X=X5.reducer,EX=y.createContext(void 0),jX=e=>{var{children:t}=e,[n]=y.useState("".concat(Bo("recharts"),"-clip")),r=Lb();if(r==null)return null;var{x:l,y:u,width:s,height:f}=r;return y.createElement(EX.Provider,{value:n},y.createElement("defs",null,y.createElement("clipPath",{id:n},y.createElement("rect",{x:l,y:u,height:f,width:s}))),t)};function F5(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;r<e.length;r+=t){var l=e[r];l!==void 0&&n.push(l)}return n}function AX(e,t,n){var r={width:e.width+t.width,height:e.height+t.height};return wX(r,n)}function CX(e,t,n){var r=n==="width",{x:l,y:u,width:s,height:f}=e;return t===1?{start:r?l:u,end:r?l+s:u+f}:{start:r?l+s:u+f,end:r?l:u}}function Jo(e,t,n,r,l){if(e*t<e*r||e*t>e*l)return!1;var u=n();return e*(t-e*u/2-r)>=0&&e*(t+e*u/2-l)<=0}function TX(e,t){return F5(e,t+1)}function NX(e,t,n,r,l){for(var u=(r||[]).slice(),{start:s,end:f}=t,d=0,h=1,m=s,v=function(){var O=r==null?void 0:r[d];if(O===void 0)return{v:F5(r,h)};var _=d,w,j=()=>(w===void 0&&(w=n(O,_)),w),A=O.coordinate,N=d===0||Jo(e,A,j,m,f);N||(d=0,m=s,h+=1),N&&(m=A+e*(j()/2+l),d+=h)},b;h<=u.length;)if(b=v(),b)return b.v;return[]}function PX(e,t,n,r,l){var u=(r||[]).slice(),s=u.length;if(s===0)return[];for(var{start:f,end:d}=t,h=1;h<=s;h++){for(var m=(s-1)%h,v=f,b=!0,S=function(){var T=r[_];if(T==null)return 0;var P=_,M,R=()=>(M===void 0&&(M=n(T,P)),M),I=T.coordinate,q=_===m||Jo(e,I,R,v,d);if(!q)return b=!1,1;q&&(v=I+e*(R()/2+l))},O,_=m;_<s&&(O=S(),!(O!==0&&O===1));_+=h);if(b){for(var w=[],j=m;j<s;j+=h){var A=r[j];A!=null&&w.push(A)}return w}}return[]}function r2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Ft(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?r2(Object(n),!0).forEach(function(r){MX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):r2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function MX(e,t,n){return(t=DX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function DX(e){var t=RX(e,"string");return typeof t=="symbol"?t:t+""}function RX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function kX(e,t,n,r,l){for(var u=(r||[]).slice(),s=u.length,{start:f}=t,{end:d}=t,h=function(b){var S=u[b];if(S==null)return 1;var O=S,_,w=()=>(_===void 0&&(_=n(S,b)),_);if(b===s-1){var j=e*(O.coordinate+e*w()/2-d);u[b]=O=Ft(Ft({},O),{},{tickCoord:j>0?O.coordinate-j*e:O.coordinate})}else u[b]=O=Ft(Ft({},O),{},{tickCoord:O.coordinate});if(O.tickCoord!=null){var A=Jo(e,O.tickCoord,w,f,d);A&&(d=O.tickCoord-e*(w()/2+l),u[b]=Ft(Ft({},O),{},{isShow:!0}))}},m=s-1;m>=0;m--)h(m);return u}function LX(e,t,n,r,l,u){var s=(r||[]).slice(),f=s.length,{start:d,end:h}=t;if(u){var m=r[f-1];if(m!=null){var v=n(m,f-1),b=e*(m.coordinate+e*v/2-h);if(s[f-1]=m=Ft(Ft({},m),{},{tickCoord:b>0?m.coordinate-b*e:m.coordinate}),m.tickCoord!=null){var S=Jo(e,m.tickCoord,()=>v,d,h);S&&(h=m.tickCoord-e*(v/2+l),s[f-1]=Ft(Ft({},m),{},{isShow:!0}))}}}for(var O=u?f-1:f,_=function(A){var N=s[A];if(N==null)return 1;var T=N,P,M=()=>(P===void 0&&(P=n(N,A)),P);if(A===0){var R=e*(T.coordinate-e*M()/2-d);s[A]=T=Ft(Ft({},T),{},{tickCoord:R<0?T.coordinate-R*e:T.coordinate})}else s[A]=T=Ft(Ft({},T),{},{tickCoord:T.coordinate});if(T.tickCoord!=null){var I=Jo(e,T.tickCoord,M,d,h);I&&(d=T.tickCoord+e*(M()/2+l),s[A]=Ft(Ft({},T),{},{isShow:!0}))}},w=0;w<O;w++)_(w);return s}function zb(e,t,n){var{tick:r,ticks:l,viewBox:u,minTickGap:s,orientation:f,interval:d,tickFormatter:h,unit:m,angle:v}=e;if(!l||!l.length||!r)return[];if(de(d)||fs.isSsr){var b;return(b=TX(l,de(d)?d:0))!==null&&b!==void 0?b:[]}var S=[],O=f==="top"||f==="bottom"?"width":"height",_=m&&O==="width"?Ro(m,{fontSize:t,letterSpacing:n}):{width:0,height:0},w=(P,M)=>{var R=typeof h=="function"?h(P.value,M):P.value;return O==="width"?AX(Ro(R,{fontSize:t,letterSpacing:n}),_,v):Ro(R,{fontSize:t,letterSpacing:n})[O]},j=l[0],A=l[1],N=l.length>=2&&j!=null&&A!=null?kt(A.coordinate-j.coordinate):1,T=CX(u,N,O);return d==="equidistantPreserveStart"?NX(N,T,w,l,s):d==="equidistantPreserveEnd"?PX(N,T,w,l,s):(d==="preserveStart"||d==="preserveStartEnd"?S=LX(N,T,w,l,s,d==="preserveStartEnd"):S=kX(N,T,w,l,s),S.filter(P=>P.isShow))}var zX=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:l=0,tickMargin:u=0}=e,s=0;if(t){Array.from(t).forEach(m=>{if(m){var v=m.getBoundingClientRect();v.width>s&&(s=v.width)}});var f=n?n.getBoundingClientRect().width:0,d=l+u,h=s+d+f+(n?r:0);return Math.round(h)}return 0},IX={xAxis:{},yAxis:{}},Z5=Qt({name:"renderedTicks",initialState:IX,reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:l}=t.payload;e[n][r]=l},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:BX,removeRenderedTicks:UX}=Z5.actions,$X=Z5.reducer,qX=["axisLine","width","height","className","hide","ticks","axisType","axisId"];function HX(e,t){if(e==null)return{};var n,r,l=KX(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function KX(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function Xi(){return Xi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Xi.apply(null,arguments)}function a2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function ft(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?a2(Object(n),!0).forEach(function(r){YX(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):a2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function YX(e,t,n){return(t=GX(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function GX(e){var t=VX(e,"string");return typeof t=="symbol"?t:t+""}function VX(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var ta={x:0,y:0,width:0,height:0,viewBox:{x:0,y:0,width:0,height:0},orientation:"bottom",ticks:[],stroke:"#666",tickLine:!0,axisLine:!0,tick:!0,mirror:!1,minTickGap:5,tickSize:6,tickMargin:2,interval:"preserveEnd",zIndex:wt.axis};function XX(e){var{x:t,y:n,width:r,height:l,orientation:u,mirror:s,axisLine:f,otherSvgProps:d}=e;if(!f)return null;var h=ft(ft(ft({},d),pn(f)),{},{fill:"none"});if(u==="top"||u==="bottom"){var m=+(u==="top"&&!s||u==="bottom"&&s);h=ft(ft({},h),{},{x1:t,y1:n+m*l,x2:t+r,y2:n+m*l})}else{var v=+(u==="left"&&!s||u==="right"&&s);h=ft(ft({},h),{},{x1:t+v*r,y1:n,x2:t+v*r,y2:n+l})}return y.createElement("line",Xi({},h,{className:Ie("recharts-cartesian-axis-line",$i(f,"className"))}))}function FX(e,t,n,r,l,u,s,f,d){var h,m,v,b,S,O,_=f?-1:1,w=e.tickSize||s,j=de(e.tickCoord)?e.tickCoord:e.coordinate;switch(u){case"top":h=m=e.coordinate,b=n+ +!f*l,v=b-_*w,O=v-_*d,S=j;break;case"left":v=b=e.coordinate,m=t+ +!f*r,h=m-_*w,S=h-_*d,O=j;break;case"right":v=b=e.coordinate,m=t+ +f*r,h=m+_*w,S=h+_*d,O=j;break;default:h=m=e.coordinate,b=n+ +f*l,v=b+_*w,O=v+_*d,S=j;break}return{line:{x1:h,y1:v,x2:m,y2:b},tick:{x:S,y:O}}}function ZX(e,t){switch(e){case"left":return t?"start":"end";case"right":return t?"end":"start";default:return"middle"}}function WX(e,t){switch(e){case"left":case"right":return"middle";case"top":return t?"start":"end";default:return t?"end":"start"}}function QX(e){var{option:t,tickProps:n,value:r}=e,l,u=Ie(n.className,"recharts-cartesian-axis-tick-value");if(y.isValidElement(t))l=y.cloneElement(t,ft(ft({},n),{},{className:u}));else if(typeof t=="function")l=t(ft(ft({},n),{},{className:u}));else{var s="recharts-cartesian-axis-tick-value";typeof t!="boolean"&&(s=Ie(s,k5(t))),l=y.createElement(hh,Xi({},n,{className:s}),r)}return l}function JX(e){var{ticks:t,axisType:n,axisId:r}=e,l=Xe();return y.useEffect(()=>{if(r==null||n==null)return Fi;var u=t.map(s=>({value:s.value,coordinate:s.coordinate,offset:s.offset,index:s.index}));return l(BX({ticks:u,axisId:r,axisType:n})),()=>{l(UX({axisId:r,axisType:n}))}},[l,t,r,n]),null}var eF=y.forwardRef((e,t)=>{var{ticks:n=[],tick:r,tickLine:l,stroke:u,tickFormatter:s,unit:f,padding:d,tickTextProps:h,orientation:m,mirror:v,x:b,y:S,width:O,height:_,tickSize:w,tickMargin:j,fontSize:A,letterSpacing:N,getTicksConfig:T,events:P,axisType:M,axisId:R}=e,I=zb(ft(ft({},T),{},{ticks:n}),A,N),q=pn(T),W=Bi(r),X=w5(q.textAnchor)?q.textAnchor:ZX(m,v),U=WX(m,v),se={};typeof l=="object"&&(se=l);var F=ft(ft({},q),{},{fill:"none"},se),J=I.map(ne=>ft({entry:ne},FX(ne,b,S,O,_,m,w,v,j))),z=J.map(ne=>{var{entry:le,line:Q}=ne;return y.createElement(ht,{className:"recharts-cartesian-axis-tick",key:"tick-".concat(le.value,"-").concat(le.coordinate,"-").concat(le.tickCoord)},l&&y.createElement("line",Xi({},F,Q,{className:Ie("recharts-cartesian-axis-tick-line",$i(l,"className"))})))}),V=J.map((ne,le)=>{var Q,D,{entry:K,tick:oe}=ne,ce=ft(ft(ft(ft({verticalAnchor:U},q),{},{textAnchor:X,stroke:"none",fill:u},oe),{},{index:le,payload:K,visibleTicksCount:I.length,tickFormatter:s,padding:d},h),{},{angle:(Q=(D=h==null?void 0:h.angle)!==null&&D!==void 0?D:q.angle)!==null&&Q!==void 0?Q:0}),ge=ft(ft({},ce),W);return y.createElement(ht,Xi({className:"recharts-cartesian-axis-tick-label",key:"tick-label-".concat(K.value,"-").concat(K.coordinate,"-").concat(K.tickCoord)},is(P,K,le)),r&&y.createElement(QX,{option:r,tickProps:ge,value:"".concat(typeof s=="function"?s(K.value,le):K.value).concat(f||"")}))});return y.createElement("g",{className:"recharts-cartesian-axis-ticks recharts-".concat(M,"-ticks")},y.createElement(JX,{ticks:I,axisId:R,axisType:M}),V.length>0&&y.createElement(yn,{zIndex:wt.label},y.createElement("g",{className:"recharts-cartesian-axis-tick-labels recharts-".concat(M,"-tick-labels"),ref:t},V)),z.length>0&&y.createElement("g",{className:"recharts-cartesian-axis-tick-lines recharts-".concat(M,"-tick-lines")},z))}),tF=y.forwardRef((e,t)=>{var{axisLine:n,width:r,height:l,className:u,hide:s,ticks:f,axisType:d,axisId:h}=e,m=HX(e,qX),[v,b]=y.useState(""),[S,O]=y.useState(""),_=y.useRef(null);y.useImperativeHandle(t,()=>({getCalculatedWidth:()=>{var j;return zX({ticks:_.current,label:(j=e.labelRef)===null||j===void 0?void 0:j.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}}));var w=y.useCallback(j=>{if(j){var A=j.getElementsByClassName("recharts-cartesian-axis-tick-value");_.current=A;var N=A[0];if(N){var T=window.getComputedStyle(N),P=T.fontSize,M=T.letterSpacing;(P!==v||M!==S)&&(b(P),O(M))}}},[v,S]);return s||r!=null&&r<=0||l!=null&&l<=0?null:y.createElement(yn,{zIndex:e.zIndex},y.createElement(ht,{className:Ie("recharts-cartesian-axis",u)},y.createElement(XX,{x:e.x,y:e.y,width:r,height:l,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:pn(e)}),y.createElement(eF,{ref:w,axisType:d,events:m,fontSize:v,getTicksConfig:e,height:e.height,letterSpacing:S,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:f,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:h}),y.createElement(XY,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},y.createElement(aG,{label:e.label,labelRef:e.labelRef}),e.children)))}),Ib=y.forwardRef((e,t)=>{var n=Ct(e,ta);return y.createElement(tF,Xi({},n,{ref:t}))});Ib.displayName="CartesianAxis";var nF=["x1","y1","x2","y2","key"],rF=["offset"],aF=["xAxisId","yAxisId"],iF=["xAxisId","yAxisId"];function i2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Zt(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?i2(Object(n),!0).forEach(function(r){lF(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):i2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function lF(e,t,n){return(t=uF(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function uF(e){var t=oF(e,"string");return typeof t=="symbol"?t:t+""}function oF(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Mi(){return Mi=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Mi.apply(null,arguments)}function vd(e,t){if(e==null)return{};var n,r,l=sF(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function sF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var cF=e=>{var{fill:t}=e;if(!t||t==="none")return null;var{fillOpacity:n,x:r,y:l,width:u,height:s,ry:f}=e;return y.createElement("rect",{x:r,y:l,ry:f,width:u,height:s,stroke:"none",fill:t,fillOpacity:n,className:"recharts-cartesian-grid-bg"})};function W5(e){var{option:t,lineItemProps:n}=e,r;if(y.isValidElement(t))r=y.cloneElement(t,n);else if(typeof t=="function")r=t(n);else{var l,{x1:u,y1:s,x2:f,y2:d,key:h}=n,m=vd(n,nF),v=(l=pn(m))!==null&&l!==void 0?l:{},{offset:b}=v,S=vd(v,rF);r=y.createElement("line",Mi({},S,{x1:u,y1:s,x2:f,y2:d,fill:"none",key:h}))}return r}function fF(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:l}=e;if(!r||!l||!l.length)return null;var{xAxisId:u,yAxisId:s}=e,f=vd(e,aF),d=l.map((h,m)=>{var v=Zt(Zt({},f),{},{x1:t,y1:h,x2:t+n,y2:h,key:"line-".concat(m),index:m});return y.createElement(W5,{key:"line-".concat(m),option:r,lineItemProps:v})});return y.createElement("g",{className:"recharts-cartesian-grid-horizontal"},d)}function dF(e){var{y:t,height:n,vertical:r=!0,verticalPoints:l}=e;if(!r||!l||!l.length)return null;var{xAxisId:u,yAxisId:s}=e,f=vd(e,iF),d=l.map((h,m)=>{var v=Zt(Zt({},f),{},{x1:h,y1:t,x2:h,y2:t+n,key:"line-".concat(m),index:m});return y.createElement(W5,{option:r,lineItemProps:v,key:"line-".concat(m)})});return y.createElement("g",{className:"recharts-cartesian-grid-vertical"},d)}function hF(e){var{horizontalFill:t,fillOpacity:n,x:r,y:l,width:u,height:s,horizontalPoints:f,horizontal:d=!0}=e;if(!d||!t||!t.length||f==null)return null;var h=f.map(v=>Math.round(v+l-l)).sort((v,b)=>v-b);l!==h[0]&&h.unshift(0);var m=h.map((v,b)=>{var S=h[b+1],O=S==null,_=O?l+s-v:S-v;if(_<=0)return null;var w=b%t.length;return y.createElement("rect",{key:"react-".concat(b),y:v,x:r,height:_,width:u,stroke:"none",fill:t[w],fillOpacity:n,className:"recharts-cartesian-grid-bg"})});return y.createElement("g",{className:"recharts-cartesian-gridstripes-horizontal"},m)}function mF(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:l,y:u,width:s,height:f,verticalPoints:d}=e;if(!t||!n||!n.length)return null;var h=d.map(v=>Math.round(v+l-l)).sort((v,b)=>v-b);l!==h[0]&&h.unshift(0);var m=h.map((v,b)=>{var S=h[b+1],O=S==null,_=O?l+s-v:S-v;if(_<=0)return null;var w=b%n.length;return y.createElement("rect",{key:"react-".concat(b),x:v,y:u,width:_,height:f,stroke:"none",fill:n[w],fillOpacity:r,className:"recharts-cartesian-grid-bg"})});return y.createElement("g",{className:"recharts-cartesian-gridstripes-vertical"},m)}var vF=(e,t)=>{var{xAxis:n,width:r,height:l,offset:u}=e;return TT(zb(Zt(Zt(Zt({},ta),n),{},{ticks:NT(n),viewBox:{x:0,y:0,width:r,height:l}})),u.left,u.left+u.width,t)},pF=(e,t)=>{var{yAxis:n,width:r,height:l,offset:u}=e;return TT(zb(Zt(Zt(Zt({},ta),n),{},{ticks:NT(n),viewBox:{x:0,y:0,width:r,height:l}})),u.top,u.top+u.height,t)},yF={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:"#ccc",fill:"none",verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:wt.grid};function Q5(e){var t=c0(),n=f0(),r=IT(),l=Zt(Zt({},Ct(e,yF)),{},{x:de(e.x)?e.x:r.left,y:de(e.y)?e.y:r.top,width:de(e.width)?e.width:r.width,height:de(e.height)?e.height:r.height}),{xAxisId:u,yAxisId:s,x:f,y:d,width:h,height:m,syncWithTicks:v,horizontalValues:b,verticalValues:S}=l,O=Jt(),_=pe(q=>Wj(q,"xAxis",u,O)),w=pe(q=>Wj(q,"yAxis",s,O));if(!_r(h)||!_r(m)||!de(f)||!de(d))return null;var j=l.verticalCoordinatesGenerator||vF,A=l.horizontalCoordinatesGenerator||pF,{horizontalPoints:N,verticalPoints:T}=l;if((!N||!N.length)&&typeof A=="function"){var P=b&&b.length,M=A({yAxis:w?Zt(Zt({},w),{},{ticks:P?b:w.ticks}):void 0,width:t??h,height:n??m,offset:r},P?!0:v);Bf(Array.isArray(M),"horizontalCoordinatesGenerator should return Array but instead it returned [".concat(typeof M,"]")),Array.isArray(M)&&(N=M)}if((!T||!T.length)&&typeof j=="function"){var R=S&&S.length,I=j({xAxis:_?Zt(Zt({},_),{},{ticks:R?S:_.ticks}):void 0,width:t??h,height:n??m,offset:r},R?!0:v);Bf(Array.isArray(I),"verticalCoordinatesGenerator should return Array but instead it returned [".concat(typeof I,"]")),Array.isArray(I)&&(T=I)}return y.createElement(yn,{zIndex:l.zIndex},y.createElement("g",{className:"recharts-cartesian-grid"},y.createElement(cF,{fill:l.fill,fillOpacity:l.fillOpacity,x:l.x,y:l.y,width:l.width,height:l.height,ry:l.ry}),y.createElement(hF,Mi({},l,{horizontalPoints:N})),y.createElement(mF,Mi({},l,{verticalPoints:T})),y.createElement(fF,Mi({},l,{offset:r,horizontalPoints:N,xAxis:_,yAxis:w})),y.createElement(dF,Mi({},l,{offset:r,verticalPoints:T,xAxis:_,yAxis:w}))))}Q5.displayName="CartesianGrid";var gF={},J5=Qt({name:"errorBars",initialState:gF,reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:l}=t.payload;e[n]&&(e[n]=e[n].map(u=>u.dataKey===r.dataKey&&u.direction===r.direction?l:u))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(l=>l.dataKey!==r.dataKey||l.direction!==r.direction))}}}),{addErrorBar:eJ,replaceErrorBar:tJ,removeErrorBar:nJ}=J5.actions,bF=J5.reducer,xF=["children"];function SF(e,t){if(e==null)return{};var n,r,l=wF(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function wF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var OF={data:[],xAxisId:"xAxis-0",yAxisId:"yAxis-0",dataPointFormatter:()=>({x:0,y:0,value:0}),errorBarOffset:0},_F=y.createContext(OF);function EF(e){var{children:t}=e,n=SF(e,xF);return y.createElement(_F.Provider,{value:n},t)}function Bb(e,t){var n,r,l=pe(h=>fa(h,e)),u=pe(h=>da(h,t)),s=(n=l==null?void 0:l.allowDataOverflow)!==null&&n!==void 0?n:Et.allowDataOverflow,f=(r=u==null?void 0:u.allowDataOverflow)!==null&&r!==void 0?r:jt.allowDataOverflow,d=s||f;return{needClip:d,needClipX:s,needClipY:f}}function eM(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,l=Lb(),{needClipX:u,needClipY:s,needClip:f}=Bb(t,n);if(!f||!l)return null;var{x:d,y:h,width:m,height:v}=l;return y.createElement("clipPath",{id:"clipPath-".concat(r)},y.createElement("rect",{x:u?d:d-m/2,y:s?h:h-v/2,width:u?m:m*2,height:s?v:v*2}))}function jF(e){var t=Bi(e),n=3,r=2;if(t!=null){var{r:l,strokeWidth:u}=t,s=Number(l),f=Number(u);return(Number.isNaN(s)||s<0)&&(s=n),(Number.isNaN(f)||f<0)&&(f=r),{r:s,strokeWidth:f}}return{r:n,strokeWidth:r}}function Tr(e,t){var n,r;return(n=(r=e.graphicalItems.cartesianItems.find(l=>l.id===t))===null||r===void 0?void 0:r.xAxisId)!==null&&n!==void 0?n:K5}function Nr(e,t){var n,r;return(n=(r=e.graphicalItems.cartesianItems.find(l=>l.id===t))===null||r===void 0?void 0:r.yAxisId)!==null&&n!==void 0?n:K5}var tM=(e,t,n)=>Xa(e,"xAxis",Tr(e,t),n),nM=(e,t,n)=>Va(e,"xAxis",Tr(e,t),n),rM=(e,t,n)=>Xa(e,"yAxis",Nr(e,t),n),aM=(e,t,n)=>Va(e,"yAxis",Nr(e,t),n),AF=$([ke,tM,rM,nM,aM],(e,t,n,r,l)=>Cr(e,"xAxis")?eu(t,r,!1):eu(n,l,!1)),CF=(e,t)=>t,iM=$([uh,CF],(e,t)=>e.filter(n=>n.type==="area").find(n=>n.id===t)),lM=e=>{var t=ke(e),n=Cr(t,"xAxis");return n?"yAxis":"xAxis"},TF=(e,t)=>{var n=lM(e);return n==="yAxis"?Nr(e,t):Tr(e,t)},NF=(e,t,n)=>ud(e,lM(e),TF(e,t),n),PF=$([iM,NF],(e,t)=>{var n;if(!(e==null||t==null)){var{stackId:r}=e,l=Wd(e);if(!(r==null||l==null)){var u=(n=t[r])===null||n===void 0?void 0:n.stackedData,s=u==null?void 0:u.find(f=>f.key===l);if(s!=null)return s.map(f=>[f[0],f[1]])}}}),MF=$([ke,tM,rM,nM,aM,PF,oN,AF,iM,iU],(e,t,n,r,l,u,s,f,d,h)=>{var{chartData:m,dataStartIndex:v,dataEndIndex:b}=s;if(!(d==null||e!=="horizontal"&&e!=="vertical"||t==null||n==null||r==null||l==null||r.length===0||l.length===0||f==null)){var{data:S}=d,O;if(S&&S.length>0?O=S:O=m==null?void 0:m.slice(v,b+1),O!=null)return QF({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:l,dataStartIndex:v,areaSettings:d,stackedData:u,displayedData:O,chartBaseValue:h,bandSize:f})}}),DF=["id"],RF=["activeDot","animationBegin","animationDuration","animationEasing","connectNulls","dot","fill","fillOpacity","hide","isAnimationActive","legendType","stroke","xAxisId","yAxisId"];function Li(){return Li=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Li.apply(null,arguments)}function uM(e,t){if(e==null)return{};var n,r,l=kF(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function kF(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function l2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function Xl(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?l2(Object(n),!0).forEach(function(r){LF(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):l2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function LF(e,t,n){return(t=zF(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function zF(e){var t=IF(e,"string");return typeof t=="symbol"?t:t+""}function IF(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function pd(e,t){return e&&e!=="none"?e:t}var BF=e=>{var{dataKey:t,name:n,stroke:r,fill:l,legendType:u,hide:s}=e;return[{inactive:s,dataKey:t,type:u,color:pd(r,l),value:du(n,t),payload:e}]},UF=y.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:l,fill:u,name:s,hide:f,unit:d,tooltipType:h,id:m}=e,v={dataDefinedOnItem:n,getPosition:Fi,settings:{stroke:r,strokeWidth:l,fill:u,dataKey:t,nameKey:void 0,name:du(s,t),hide:f,type:h,color:pd(r,u),unit:d,graphicalItemId:m}};return y.createElement(Rb,{tooltipEntrySettings:v})});function $F(e){var{clipPathId:t,points:n,props:r}=e,{needClip:l,dot:u,dataKey:s}=r,f=pn(r);return y.createElement(YV,{points:n,dot:u,className:"recharts-area-dots",dotClassName:"recharts-area-dot",dataKey:s,baseProps:f,needClip:l,clipPathId:t})}function qF(e){var{showLabels:t,children:n,points:r}=e,l=r.map(u=>{var s,f,d={x:(s=u.x)!==null&&s!==void 0?s:0,y:(f=u.y)!==null&&f!==void 0?f:0,width:0,lowerWidth:0,upperWidth:0,height:0};return Xl(Xl({},d),{},{value:u.value,payload:u.payload,parentViewBox:void 0,viewBox:d,fill:void 0})});return y.createElement(T5,{value:t?l:void 0},n)}function u2(e){var{points:t,baseLine:n,needClip:r,clipPathId:l,props:u}=e,{layout:s,type:f,stroke:d,connectNulls:h,isRange:m}=u,{id:v}=u,b=uM(u,DF),S=pn(b),O=rn(b);return y.createElement(y.Fragment,null,(t==null?void 0:t.length)>1&&y.createElement(ht,{clipPath:r?"url(#clipPath-".concat(l,")"):void 0},y.createElement(Zl,Li({},O,{id:v,points:t,connectNulls:h,type:f,baseLine:n,layout:s,stroke:"none",className:"recharts-area-area"})),d!=="none"&&y.createElement(Zl,Li({},S,{className:"recharts-area-curve",layout:s,type:f,connectNulls:h,fill:"none",points:t})),d!=="none"&&m&&Array.isArray(n)&&y.createElement(Zl,Li({},S,{className:"recharts-area-curve",layout:s,type:f,connectNulls:h,fill:"none",points:n}))),y.createElement($F,{points:t,props:b,clipPathId:l}))}function HF(e){var t,n,{alpha:r,baseLine:l,points:u,strokeWidth:s}=e,f=(t=u[0])===null||t===void 0?void 0:t.y,d=(n=u[u.length-1])===null||n===void 0?void 0:n.y;if(!je(f)||!je(d))return null;var h=r*Math.abs(f-d),m=Math.max(...u.map(v=>v.x||0));return de(l)?m=Math.max(l,m):l&&Array.isArray(l)&&l.length&&(m=Math.max(...l.map(v=>v.x||0),m)),de(m)?y.createElement("rect",{x:0,y:f<d?f:f-h,width:m+(s?parseInt("".concat(s),10):1),height:Math.floor(h)}):null}function KF(e){var t,n,{alpha:r,baseLine:l,points:u,strokeWidth:s}=e,f=(t=u[0])===null||t===void 0?void 0:t.x,d=(n=u[u.length-1])===null||n===void 0?void 0:n.x;if(!je(f)||!je(d))return null;var h=r*Math.abs(f-d),m=Math.max(...u.map(v=>v.y||0));return de(l)?m=Math.max(l,m):l&&Array.isArray(l)&&l.length&&(m=Math.max(...l.map(v=>v.y||0),m)),de(m)?y.createElement("rect",{x:f<d?f:f-h,y:0,width:h,height:Math.floor(m+(s?parseInt("".concat(s),10):1))}):null}function YF(e){var{alpha:t,layout:n,points:r,baseLine:l,strokeWidth:u}=e;return n==="vertical"?y.createElement(HF,{alpha:t,points:r,baseLine:l,strokeWidth:u}):y.createElement(KF,{alpha:t,points:r,baseLine:l,strokeWidth:u})}function GF(e){var{needClip:t,clipPathId:n,props:r,previousPointsRef:l,previousBaselineRef:u}=e,{points:s,baseLine:f,isAnimationActive:d,animationBegin:h,animationDuration:m,animationEasing:v,onAnimationStart:b,onAnimationEnd:S}=r,O=y.useMemo(()=>({points:s,baseLine:f}),[s,f]),_=hs(O,"recharts-area-"),w=d0(),[j,A]=y.useState(!1),N=!j,T=y.useCallback(()=>{typeof S=="function"&&S(),A(!1)},[S]),P=y.useCallback(()=>{typeof b=="function"&&b(),A(!0)},[b]);if(w==null)return null;var M=l.current,R=u.current;return y.createElement(qF,{showLabels:N,points:s},r.children,y.createElement(ds,{animationId:_,begin:h,duration:m,isActive:d,easing:v,onAnimationEnd:T,onAnimationStart:P,key:_},I=>{if(M){var q=M.length/s.length,W=I===1?s:s.map((U,se)=>{var F=Math.floor(se*q);if(M[F]){var J=M[F];return Xl(Xl({},U),{},{x:nt(J.x,U.x,I),y:nt(J.y,U.y,I)})}return U}),X;return de(f)?X=nt(R,f,I):ut(f)||lr(f)?X=nt(R,0,I):X=f.map((U,se)=>{var F=Math.floor(se*q);if(Array.isArray(R)&&R[F]){var J=R[F];return Xl(Xl({},U),{},{x:nt(J.x,U.x,I),y:nt(J.y,U.y,I)})}return U}),I>0&&(l.current=W,u.current=X),y.createElement(u2,{points:W,baseLine:X,needClip:t,clipPathId:n,props:r})}return I>0&&(l.current=s,u.current=f),y.createElement(ht,null,d&&y.createElement("defs",null,y.createElement("clipPath",{id:"animationClipPath-".concat(n)},y.createElement(YF,{alpha:I,points:s,baseLine:f,layout:w,strokeWidth:r.strokeWidth}))),y.createElement(ht,{clipPath:"url(#animationClipPath-".concat(n,")")},y.createElement(u2,{points:s,baseLine:f,needClip:t,clipPathId:n,props:r})))}),y.createElement(Ab,{label:r.label}))}function VF(e){var{needClip:t,clipPathId:n,props:r}=e,l=y.useRef(null),u=y.useRef();return y.createElement(GF,{needClip:t,clipPathId:n,props:r,previousPointsRef:l,previousBaselineRef:u})}class XF extends y.PureComponent{render(){var{hide:t,dot:n,points:r,className:l,top:u,left:s,needClip:f,xAxisId:d,yAxisId:h,width:m,height:v,id:b,baseLine:S,zIndex:O}=this.props;if(t)return null;var _=Ie("recharts-area",l),w=b,{r:j,strokeWidth:A}=jF(n),N=I5(n),T=j*2+A,P=f?"url(#clipPath-".concat(N?"":"dots-").concat(w,")"):void 0;return y.createElement(yn,{zIndex:O},y.createElement(ht,{className:_},f&&y.createElement("defs",null,y.createElement(eM,{clipPathId:w,xAxisId:d,yAxisId:h}),!N&&y.createElement("clipPath",{id:"clipPath-dots-".concat(w)},y.createElement("rect",{x:s-T/2,y:u-T/2,width:m+T,height:v+T}))),y.createElement(VF,{needClip:f,clipPathId:w,props:this.props})),y.createElement(JA,{points:r,mainColor:pd(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:P}),this.props.isRange&&Array.isArray(S)&&y.createElement(JA,{points:S,mainColor:pd(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:P}))}}var FF={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:"ease",connectNulls:!1,dot:!1,fill:"#3182bd",fillOpacity:.6,hide:!1,isAnimationActive:"auto",legendType:"line",stroke:"#3182bd",strokeWidth:1,type:"linear",label:!1,xAxisId:0,yAxisId:0,zIndex:wt.area};function ZF(e){var t,{activeDot:n,animationBegin:r,animationDuration:l,animationEasing:u,connectNulls:s,dot:f,fill:d,fillOpacity:h,hide:m,isAnimationActive:v,legendType:b,stroke:S,xAxisId:O,yAxisId:_}=e,w=uM(e,RF),j=Zi(),A=s5(),{needClip:N}=Bb(O,_),T=Jt(),{points:P,isRange:M,baseLine:R}=(t=pe(se=>MF(se,e.id,T)))!==null&&t!==void 0?t:{},I=Lb();if(j!=="horizontal"&&j!=="vertical"||I==null||A!=="AreaChart"&&A!=="ComposedChart")return null;var{height:q,width:W,x:X,y:U}=I;return!P||!P.length?null:y.createElement(XF,Li({},w,{activeDot:n,animationBegin:r,animationDuration:l,animationEasing:u,baseLine:R,connectNulls:s,dot:f,fill:d,fillOpacity:h,height:q,hide:m,layout:j,isAnimationActive:v,isRange:M,legendType:b,needClip:N,points:P,stroke:S,width:W,left:X,top:U,xAxisId:O,yAxisId:_}))}var WF=(e,t,n,r,l)=>{var u=n??t;if(de(u))return u;var s=e==="horizontal"?l:r,f=s.scale.domain();if(s.type==="number"){var d=Math.max(f[0],f[1]),h=Math.min(f[0],f[1]);return u==="dataMin"?h:u==="dataMax"||d<0?d:Math.max(Math.min(f[0],f[1]),0)}return u==="dataMin"?f[0]:u==="dataMax"?f[1]:f[0]};function QF(e){var{areaSettings:{connectNulls:t,baseValue:n,dataKey:r},stackedData:l,layout:u,chartBaseValue:s,xAxis:f,yAxis:d,displayedData:h,dataStartIndex:m,xAxisTicks:v,yAxisTicks:b,bandSize:S}=e,O=l&&l.length,_=WF(u,s,n,f,d),w=u==="horizontal",j=!1,A=h.map((T,P)=>{var M,R,I,q;if(O)q=l[m+P];else{var W=$e(T,r);Array.isArray(W)?(q=W,j=!0):q=[_,W]}var X=(M=(R=q)===null||R===void 0?void 0:R[1])!==null&&M!==void 0?M:null,U=X==null||O&&!t&&$e(T,r)==null;if(w){var se;return{x:H_({axis:f,ticks:v,bandSize:S,entry:T,index:P}),y:U?null:(se=d.scale.map(X))!==null&&se!==void 0?se:null,value:q,payload:T}}return{x:U?null:(I=f.scale.map(X))!==null&&I!==void 0?I:null,y:H_({axis:d,ticks:b,bandSize:S,entry:T,index:P}),value:q,payload:T}}),N;return O||j?N=A.map(T=>{var P,M=Array.isArray(T.value)?T.value[0]:null;if(w){var R;return{x:T.x,y:M!=null&&T.y!=null&&(R=d.scale.map(M))!==null&&R!==void 0?R:null,payload:T.payload}}return{x:M!=null&&(P=f.scale.map(M))!==null&&P!==void 0?P:null,y:T.y,payload:T.payload}}):N=w?d.scale.map(_):f.scale.map(_),{points:A,baseLine:N??0,isRange:j}}function JF(e){var t=Ct(e,FF),n=Jt();return y.createElement(kb,{id:t.id,type:"area"},r=>y.createElement(y.Fragment,null,y.createElement(U5,{legendPayload:BF(t)}),y.createElement(UF,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:r}),y.createElement(q5,{type:"area",id:r,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:PT(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),y.createElement(ZF,Li({},t,{id:r}))))}var oM=y.memo(JF,hu);oM.displayName="Area";var eZ="Invariant failed";function tZ(e,t){throw new Error(eZ)}function bg(){return bg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},bg.apply(null,arguments)}function Ub(e){return y.createElement(B5,bg({shapeType:"rectangle",activeClassName:"recharts-active-bar",inActiveClassName:"recharts-inactive-bar"},e))}var nZ=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0;return(r,l)=>{if(de(t))return t;var u=de(r)||ut(r);return u?t(r,l):(u||tZ(),n)}},rZ=(e,t,n)=>n,aZ=(e,t)=>t,Es=$([uh,aZ],(e,t)=>e.filter(n=>n.type==="bar").find(n=>n.id===t)),iZ=$([Es],e=>e==null?void 0:e.maxBarSize),lZ=(e,t,n,r)=>r,uZ=$([ke,uh,Tr,Nr,rZ],(e,t,n,r,l)=>t.filter(u=>e==="horizontal"?u.xAxisId===n:u.yAxisId===r).filter(u=>u.isPanorama===l).filter(u=>u.hide===!1).filter(u=>u.type==="bar")),oZ=(e,t,n)=>{var r=ke(e),l=Tr(e,t),u=Nr(e,t);if(!(l==null||u==null))return r==="horizontal"?ud(e,"yAxis",u,n):ud(e,"xAxis",l,n)},sZ=(e,t)=>{var n=ke(e),r=Tr(e,t),l=Nr(e,t);if(!(r==null||l==null))return n==="horizontal"?Zj(e,"xAxis",r):Zj(e,"yAxis",l)},cZ=$([uZ,aU,sZ],fX),fZ=(e,t,n)=>{var r,l,u=Es(e,t);if(u==null)return 0;var s=Tr(e,t),f=Nr(e,t);if(s==null||f==null)return 0;var d=ke(e),h=xN(e),{maxBarSize:m}=u,v=ut(m)?h:m,b,S;return d==="horizontal"?(b=Xa(e,"xAxis",s,n),S=Va(e,"xAxis",s,n)):(b=Xa(e,"yAxis",f,n),S=Va(e,"yAxis",f,n)),(r=(l=eu(b,S,!0))!==null&&l!==void 0?l:v)!==null&&r!==void 0?r:0},sM=(e,t,n)=>{var r=ke(e),l=Tr(e,t),u=Nr(e,t);if(!(l==null||u==null)){var s,f;return r==="horizontal"?(s=Xa(e,"xAxis",l,n),f=Va(e,"xAxis",l,n)):(s=Xa(e,"yAxis",u,n),f=Va(e,"yAxis",u,n)),eu(s,f)}},dZ=$([cZ,xN,rU,SN,fZ,sM,iZ],pX),hZ=(e,t,n)=>{var r=Tr(e,t);if(r!=null)return Xa(e,"xAxis",r,n)},mZ=(e,t,n)=>{var r=Nr(e,t);if(r!=null)return Xa(e,"yAxis",r,n)},vZ=(e,t,n)=>{var r=Tr(e,t);if(r!=null)return Va(e,"xAxis",r,n)},pZ=(e,t,n)=>{var r=Nr(e,t);if(r!=null)return Va(e,"yAxis",r,n)},yZ=$([dZ,Es],gX),gZ=$([oZ,Es],yX),bZ=$([Tt,l0,hZ,mZ,vZ,pZ,yZ,ke,oN,sM,gZ,Es,lZ],(e,t,n,r,l,u,s,f,d,h,m,v,b)=>{var{chartData:S,dataStartIndex:O,dataEndIndex:_}=d;if(!(v==null||s==null||t==null||f!=="horizontal"&&f!=="vertical"||n==null||r==null||l==null||u==null||h==null)){var{data:w}=v,j;if(w!=null&&w.length>0?j=w:j=S==null?void 0:S.slice(O,_+1),j!=null)return VZ({layout:f,barSettings:v,pos:s,parentViewBox:t,bandSize:h,xAxis:n,yAxis:r,xAxisTicks:l,yAxisTicks:u,stackedData:m,displayedData:j,offset:e,cells:b,dataStartIndex:O})}}),xZ=["index"];function xg(){return xg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},xg.apply(null,arguments)}function SZ(e,t){if(e==null)return{};var n,r,l=wZ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function wZ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var cM=y.createContext(void 0),OZ=e=>{var t=y.useContext(cM);if(t!=null)return t.stackId;if(e!=null)return PT(e)},_Z=(e,t)=>"recharts-bar-stack-clip-path-".concat(e,"-").concat(t),EZ=e=>{var t=y.useContext(cM);if(t!=null){var{stackId:n}=t;return"url(#".concat(_Z(n,e),")")}},fM=e=>{var{index:t}=e,n=SZ(e,xZ),r=EZ(t);return y.createElement(ht,xg({className:"recharts-bar-stack-layer",clipPath:r},n))},jZ=["onMouseEnter","onMouseLeave","onClick"],AZ=["value","background","tooltipPosition"],CZ=["id"],TZ=["onMouseEnter","onClick","onMouseLeave"];function Wa(){return Wa=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Wa.apply(null,arguments)}function o2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function tn(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?o2(Object(n),!0).forEach(function(r){NZ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):o2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function NZ(e,t,n){return(t=PZ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function PZ(e){var t=MZ(e,"string");return typeof t=="symbol"?t:t+""}function MZ(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function yd(e,t){if(e==null)return{};var n,r,l=DZ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function DZ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var RZ=e=>{var{dataKey:t,name:n,fill:r,legendType:l,hide:u}=e;return[{inactive:u,dataKey:t,type:l,color:r,value:du(n,t),payload:e}]},kZ=y.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:l,name:u,hide:s,unit:f,tooltipType:d,id:h}=e,m={dataDefinedOnItem:void 0,getPosition:Fi,settings:{stroke:n,strokeWidth:r,fill:l,dataKey:t,nameKey:void 0,name:du(u,t),hide:s,type:d,color:l,unit:f,graphicalItemId:h}};return y.createElement(Rb,{tooltipEntrySettings:m})});function LZ(e){var t=pe(Fa),{data:n,dataKey:r,background:l,allOtherBarProps:u}=e,{onMouseEnter:s,onMouseLeave:f,onClick:d}=u,h=yd(u,jZ),m=Pb(s,r,u.id),v=Mb(f),b=Db(d,r,u.id);if(!l||n==null)return null;var S=Bi(l);return y.createElement(yn,{zIndex:bX(l,wt.barBackground)},n.map((O,_)=>{var{value:w,background:j,tooltipPosition:A}=O,N=yd(O,AZ);if(!j)return null;var T=m(O,_),P=v(O,_),M=b(O,_),R=tn(tn(tn(tn(tn({option:l,isActive:String(_)===t},N),{},{fill:"#eee"},j),S),is(h,O,_)),{},{onMouseEnter:T,onMouseLeave:P,onClick:M,dataKey:r,index:_,className:"recharts-bar-background-rectangle"});return y.createElement(Ub,Wa({key:"background-bar-".concat(_)},R))}))}function zZ(e){var{showLabels:t,children:n,rects:r}=e,l=r==null?void 0:r.map(u=>{var s={x:u.x,y:u.y,width:u.width,lowerWidth:u.width,upperWidth:u.width,height:u.height};return tn(tn({},s),{},{value:u.value,payload:u.payload,parentViewBox:u.parentViewBox,viewBox:s,fill:u.fill})});return y.createElement(T5,{value:t?l:void 0},n)}function IZ(e){var{shape:t,activeBar:n,baseProps:r,entry:l,index:u,dataKey:s}=e,f=pe(Fa),d=pe(bb),h=n&&String(l.originalDataIndex)===f&&(d==null||s===d),[m,v]=y.useState(!1),[b,S]=y.useState(!1);y.useEffect(()=>{var N;return h?(v(!0),N=requestAnimationFrame(()=>{S(!0)})):S(!1),()=>{cancelAnimationFrame(N)}},[h]);var O=y.useCallback(()=>{h||v(!1)},[h]),_=h&&b,w=h||m,j;h?n===!0?j=t:j=n:j=t;var A=y.createElement(Ub,Wa({},r,{name:String(r.name)},l,{isActive:_,option:j,index:u,dataKey:s,onTransitionEnd:O}));return w?y.createElement(yn,{zIndex:wt.activeBar},y.createElement(fM,{index:l.originalDataIndex},A)):A}function BZ(e){var{shape:t,baseProps:n,entry:r,index:l,dataKey:u}=e;return y.createElement(Ub,Wa({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:l,dataKey:u}))}function UZ(e){var t,{data:n,props:r}=e,l=(t=pn(r))!==null&&t!==void 0?t:{},{id:u}=l,s=yd(l,CZ),{shape:f,dataKey:d,activeBar:h}=r,{onMouseEnter:m,onClick:v,onMouseLeave:b}=r,S=yd(r,TZ),O=Pb(m,d,u),_=Mb(b),w=Db(v,d,u);return n?y.createElement(y.Fragment,null,n.map((j,A)=>y.createElement(fM,Wa({index:j.originalDataIndex,key:"rectangle-".concat(j==null?void 0:j.x,"-").concat(j==null?void 0:j.y,"-").concat(j==null?void 0:j.value,"-").concat(A),className:"recharts-bar-rectangle"},is(S,j,A),{onMouseEnter:O(j,A),onMouseLeave:_(j,A),onClick:w(j,A)}),h?y.createElement(IZ,{shape:f,activeBar:h,baseProps:s,entry:j,index:A,dataKey:d}):y.createElement(BZ,{shape:f,baseProps:s,entry:j,index:A,dataKey:d})))):null}function $Z(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:l,isAnimationActive:u,animationBegin:s,animationDuration:f,animationEasing:d,onAnimationEnd:h,onAnimationStart:m}=t,v=n.current,b=hs(t,"recharts-bar-"),[S,O]=y.useState(!1),_=!S,w=y.useCallback(()=>{typeof h=="function"&&h(),O(!1)},[h]),j=y.useCallback(()=>{typeof m=="function"&&m(),O(!0)},[m]);return y.createElement(zZ,{showLabels:_,rects:r},y.createElement(ds,{animationId:b,begin:s,duration:f,isActive:u,easing:d,onAnimationEnd:w,onAnimationStart:j,key:b},A=>{var N=A===1?r:r==null?void 0:r.map((T,P)=>{var M=v&&v[P];if(M)return tn(tn({},T),{},{x:nt(M.x,T.x,A),y:nt(M.y,T.y,A),width:nt(M.width,T.width,A),height:nt(M.height,T.height,A)});if(l==="horizontal"){var R=nt(0,T.height,A),I=nt(T.stackedBarStart,T.y,A);return tn(tn({},T),{},{y:I,height:R})}var q=nt(0,T.width,A),W=nt(T.stackedBarStart,T.x,A);return tn(tn({},T),{},{width:q,x:W})});return A>0&&(n.current=N??null),N==null?null:y.createElement(ht,null,y.createElement(UZ,{props:t,data:N}))}),y.createElement(Ab,{label:t.label}),t.children)}function qZ(e){var t=y.useRef(null);return y.createElement($Z,{previousRectanglesRef:t,props:e})}var dM=0,HZ=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:$e(e,t)}};class KZ extends y.PureComponent{render(){var{hide:t,data:n,dataKey:r,className:l,xAxisId:u,yAxisId:s,needClip:f,background:d,id:h}=this.props;if(t||n==null)return null;var m=Ie("recharts-bar",l),v=h;return y.createElement(ht,{className:m,id:h},f&&y.createElement("defs",null,y.createElement(eM,{clipPathId:v,xAxisId:u,yAxisId:s})),y.createElement(ht,{className:"recharts-bar-rectangles",clipPath:f?"url(#clipPath-".concat(v,")"):void 0},y.createElement(LZ,{data:n,dataKey:r,background:d,allOtherBarProps:this.props}),y.createElement(qZ,this.props)))}}var YZ={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:"ease",background:!1,hide:!1,isAnimationActive:"auto",label:!1,legendType:"rect",minPointSize:dM,xAxisId:0,yAxisId:0,zIndex:wt.bar};function GZ(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:l,minPointSize:u,activeBar:s,animationBegin:f,animationDuration:d,animationEasing:h,isAnimationActive:m}=e,{needClip:v}=Bb(t,n),b=Zi(),S=Jt(),O=Nb(e.children,dh),_=pe(A=>bZ(A,e.id,S,O));if(b!=="vertical"&&b!=="horizontal")return null;var w,j=_==null?void 0:_[0];return j==null||j.height==null||j.width==null?w=0:w=b==="vertical"?j.height/2:j.width/2,y.createElement(EF,{xAxisId:t,yAxisId:n,data:_,dataPointFormatter:HZ,errorBarOffset:w},y.createElement(KZ,Wa({},e,{layout:b,needClip:v,data:_,xAxisId:t,yAxisId:n,hide:r,legendType:l,minPointSize:u,activeBar:s,animationBegin:f,animationDuration:d,animationEasing:h,isAnimationActive:m})))}function VZ(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:l},pos:u,bandSize:s,xAxis:f,yAxis:d,xAxisTicks:h,yAxisTicks:m,stackedData:v,displayedData:b,offset:S,cells:O,parentViewBox:_,dataStartIndex:w}=e,j=t==="horizontal"?d:f,A=v?j.scale.domain():null,N=FI({numericAxis:j}),T=j.scale.map(N);return b.map((P,M)=>{var R,I,q,W,X,U;if(v){var se=v[M+w];if(se==null)return null;R=KI(se,A)}else R=$e(P,n),Array.isArray(R)||(R=[N,R]);var F=nZ(r,dM)(R[1],M);if(t==="horizontal"){var J,z=d.scale.map(R[0]),V=d.scale.map(R[1]);if(z==null||V==null)return null;I=K_({axis:f,ticks:h,bandSize:s,offset:u.offset,entry:P,index:M}),q=(J=V??z)!==null&&J!==void 0?J:void 0,W=u.size;var ne=z-V;if(X=lr(ne)?0:ne,U={x:I,y:S.top,width:W,height:S.height},Math.abs(F)>0&&Math.abs(X)<Math.abs(F)){var le=kt(X||F)*(Math.abs(F)-Math.abs(X));q-=le,X+=le}}else{var Q=f.scale.map(R[0]),D=f.scale.map(R[1]);if(Q==null||D==null)return null;if(I=Q,q=K_({axis:d,ticks:m,bandSize:s,offset:u.offset,entry:P,index:M}),W=D-Q,X=u.size,U={x:S.left,y:q,width:S.width,height:X},Math.abs(F)>0&&Math.abs(W)<Math.abs(F)){var K=kt(W||F)*(Math.abs(F)-Math.abs(W));W+=K}}if(I==null||q==null||W==null||X==null||!l&&(W===0||X===0))return null;var oe=tn(tn({},P),{},{stackedBarStart:T,x:I,y:q,width:W,height:X,value:v?R:R[1],payload:P,background:U,tooltipPosition:{x:I+W/2,y:q+X/2},parentViewBox:_,originalDataIndex:M},O&&O[M]&&O[M].props);return oe}).filter(Boolean)}function XZ(e){var t=Ct(e,YZ),n=OZ(t.stackId),r=Jt();return y.createElement(kb,{id:t.id,type:"bar"},l=>y.createElement(y.Fragment,null,y.createElement(U5,{legendPayload:RZ(t)}),y.createElement(kZ,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:l}),y.createElement(q5,{type:"bar",id:l,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),y.createElement(yn,{zIndex:t.zIndex},y.createElement(GZ,Wa({},t,{id:l})))))}var hM=y.memo(XZ,hu);hM.displayName="Bar";var FZ=["domain","range"],ZZ=["domain","range"];function s2(e,t){if(e==null)return{};var n,r,l=WZ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function WZ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function c2(e,t){return e===t?!0:Array.isArray(e)&&e.length===2&&Array.isArray(t)&&t.length===2?e[0]===t[0]&&e[1]===t[1]:!1}function mM(e,t){if(e===t)return!0;var{domain:n,range:r}=e,l=s2(e,FZ),{domain:u,range:s}=t,f=s2(t,ZZ);return!c2(n,u)||!c2(r,s)?!1:hu(l,f)}var QZ=["type"],JZ=["dangerouslySetInnerHTML","ticks","scale"],eW=["id","scale"];function Sg(){return Sg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Sg.apply(null,arguments)}function f2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function d2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?f2(Object(n),!0).forEach(function(r){tW(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):f2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function tW(e,t,n){return(t=nW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function nW(e){var t=rW(e,"string");return typeof t=="symbol"?t:t+""}function rW(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function wg(e,t){if(e==null)return{};var n,r,l=aW(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function aW(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function iW(e){var t=Xe(),n=y.useRef(null),r=d0(),{type:l}=e,u=wg(e,QZ),s=Fd(r,"xAxis",l),f=y.useMemo(()=>{if(s!=null)return d2(d2({},u),{},{type:s})},[u,s]);return y.useLayoutEffect(()=>{f!=null&&(n.current===null?t(ZV(f)):n.current!==f&&t(WV({prev:n.current,next:f})),n.current=f)},[f,t]),y.useLayoutEffect(()=>()=>{n.current&&(t(QV(n.current)),n.current=null)},[t]),null}var lW=e=>{var{xAxisId:t,className:n}=e,r=pe(l0),l=Jt(),u="xAxis",s=pe(j=>IP(j,u,t,l)),f=pe(j=>kP(j,t)),d=pe(j=>Iq(j,t)),h=pe(j=>hP(j,t));if(f==null||d==null||h==null)return null;var{dangerouslySetInnerHTML:m,ticks:v,scale:b}=e,S=wg(e,JZ),{id:O,scale:_}=h,w=wg(h,eW);return y.createElement(Ib,Sg({},S,w,{x:d.x,y:d.y,width:f.width,height:f.height,className:Ie("recharts-".concat(u," ").concat(u),n),viewBox:r,ticks:s,axisType:u,axisId:t}))},uW={allowDataOverflow:Et.allowDataOverflow,allowDecimals:Et.allowDecimals,allowDuplicatedCategory:Et.allowDuplicatedCategory,angle:Et.angle,axisLine:ta.axisLine,height:Et.height,hide:!1,includeHidden:Et.includeHidden,interval:Et.interval,label:!1,minTickGap:Et.minTickGap,mirror:Et.mirror,orientation:Et.orientation,padding:Et.padding,reversed:Et.reversed,scale:Et.scale,tick:Et.tick,tickCount:Et.tickCount,tickLine:ta.tickLine,tickSize:ta.tickSize,type:Et.type,niceTicks:Et.niceTicks,xAxisId:0},oW=e=>{var t=Ct(e,uW);return y.createElement(y.Fragment,null,y.createElement(iW,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),y.createElement(lW,t))},$b=y.memo(oW,mM);$b.displayName="XAxis";var sW=["type"],cW=["dangerouslySetInnerHTML","ticks","scale"],fW=["id","scale"];function Og(){return Og=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Og.apply(null,arguments)}function h2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function m2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?h2(Object(n),!0).forEach(function(r){dW(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function dW(e,t,n){return(t=hW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function hW(e){var t=mW(e,"string");return typeof t=="symbol"?t:t+""}function mW(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function _g(e,t){if(e==null)return{};var n,r,l=vW(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function vW(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function pW(e){var t=Xe(),n=y.useRef(null),r=d0(),{type:l}=e,u=_g(e,sW),s=Fd(r,"yAxis",l),f=y.useMemo(()=>{if(s!=null)return m2(m2({},u),{},{type:s})},[s,u]);return y.useLayoutEffect(()=>{f!=null&&(n.current===null?t(JV(f)):n.current!==f&&t(eX({prev:n.current,next:f})),n.current=f)},[f,t]),y.useLayoutEffect(()=>()=>{n.current&&(t(tX(n.current)),n.current=null)},[t]),null}function yW(e){var{yAxisId:t,className:n,width:r,label:l}=e,u=y.useRef(null),s=y.useRef(null),f=pe(l0),d=Jt(),h=Xe(),m="yAxis",v=pe(M=>LP(M,t)),b=pe(M=>Uq(M,t)),S=pe(M=>IP(M,m,t,d)),O=pe(M=>mP(M,t));if(y.useLayoutEffect(()=>{if(!(r!=="auto"||!v||jb(l)||y.isValidElement(l)||O==null)){var M=u.current;if(M){var R=M.getCalculatedWidth();Math.round(v.width)!==Math.round(R)&&h(nX({id:t,width:R}))}}},[S,v,h,l,t,r,O]),v==null||b==null||O==null)return null;var{dangerouslySetInnerHTML:_,ticks:w,scale:j}=e,A=_g(e,cW),{id:N,scale:T}=O,P=_g(O,fW);return y.createElement(Ib,Og({},A,P,{ref:u,labelRef:s,x:b.x,y:b.y,tickTextProps:r==="auto"?{width:void 0}:{width:r},width:v.width,height:v.height,className:Ie("recharts-".concat(m," ").concat(m),n),viewBox:f,ticks:S,axisType:m,axisId:t}))}var gW={allowDataOverflow:jt.allowDataOverflow,allowDecimals:jt.allowDecimals,allowDuplicatedCategory:jt.allowDuplicatedCategory,angle:jt.angle,axisLine:ta.axisLine,hide:!1,includeHidden:jt.includeHidden,interval:jt.interval,label:!1,minTickGap:jt.minTickGap,mirror:jt.mirror,orientation:jt.orientation,padding:jt.padding,reversed:jt.reversed,scale:jt.scale,tick:jt.tick,tickCount:jt.tickCount,tickLine:ta.tickLine,tickSize:ta.tickSize,type:jt.type,niceTicks:jt.niceTicks,width:jt.width,yAxisId:0},bW=e=>{var t=Ct(e,gW);return y.createElement(y.Fragment,null,y.createElement(pW,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),y.createElement(yW,t))},qb=y.memo(bW,mM);qb.displayName="YAxis";var xW=(e,t)=>t,Hb=$([xW,ke,CN,Lt,n5,ha,uK,Tt],mK);function SW(e){return"getBBox"in e.currentTarget&&typeof e.currentTarget.getBBox=="function"}function Kb(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(SW(e)){var l=e.currentTarget.getBBox();n=l.width>0?t.width/l.width:1,r=l.height>0?t.height/l.height:1}else{var u=e.currentTarget;n=u.offsetWidth>0?t.width/u.offsetWidth:1,r=u.offsetHeight>0?t.height/u.offsetHeight:1}var s=(f,d)=>({relativeX:Math.round((f-t.left)/n),relativeY:Math.round((d-t.top)/r)});return"touches"in e?Array.from(e.touches).map(f=>s(f.clientX,f.clientY)):s(e.clientX,e.clientY)}var vM=Pn("mouseClick"),pM=us();pM.startListening({actionCreator:vM,effect:(e,t)=>{var n=e.payload,r=Hb(t.getState(),Kb(n));(r==null?void 0:r.activeIndex)!=null&&t.dispatch(nH({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var Eg=Pn("mouseMove"),yM=us(),Hl=null,Oi=null,Ay=null;yM.startListening({actionCreator:Eg,effect:(e,t)=>{var n=e.payload,r=t.getState(),{throttleDelay:l,throttledEvents:u}=r.eventSettings,s=u==="all"||(u==null?void 0:u.includes("mousemove"));Hl!==null&&(cancelAnimationFrame(Hl),Hl=null),Oi!==null&&(typeof l!="number"||!s)&&(clearTimeout(Oi),Oi=null),Ay=Kb(n);var f=()=>{var d=t.getState(),h=Os(d,d.tooltip.settings.shared);if(!Ay){Hl=null,Oi=null;return}if(h==="axis"){var m=Hb(d,Ay);(m==null?void 0:m.activeIndex)!=null?t.dispatch(GP({activeIndex:m.activeIndex,activeDataKey:void 0,activeCoordinate:m.activeCoordinate})):t.dispatch(YP())}Hl=null,Oi=null};if(!s){f();return}l==="raf"?Hl=requestAnimationFrame(f):typeof l=="number"&&Oi===null&&(Oi=setTimeout(f,l))}});function wW(e,t){return t instanceof HTMLElement?"HTMLElement <".concat(t.tagName,' class="').concat(t.className,'">'):t===window?"global.window":e==="children"&&typeof t=="object"&&t!==null?"<<CHILDREN>>":t}var v2={accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:"none",syncId:void 0,syncMethod:"index",baseValue:void 0,reverseStackOrder:!1},gM=Qt({name:"rootProps",initialState:v2,reducers:{updateOptions:(e,t)=>{var n;e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=(n=t.payload.barGap)!==null&&n!==void 0?n:v2.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),OW=gM.reducer,{updateOptions:_W}=gM.actions,EW=null,jW={updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)},bM=Qt({name:"polarOptions",initialState:EW,reducers:jW}),{updatePolarOptions:AW}=bM.actions,CW=bM.reducer,xM=Pn("keyDown"),SM=Pn("focus"),wM=Pn("blur"),yh=us(),Kl=null,_i=null,of=null;yh.startListening({actionCreator:xM,effect:(e,t)=>{of=e.payload,Kl!==null&&(cancelAnimationFrame(Kl),Kl=null);var n=t.getState(),{throttleDelay:r,throttledEvents:l}=n.eventSettings,u=l==="all"||l.includes("keydown");_i!==null&&(typeof r!="number"||!u)&&(clearTimeout(_i),_i=null);var s=()=>{try{var f=t.getState(),d=f.rootProps.accessibilityLayer!==!1;if(!d)return;var{keyboardInteraction:h}=f.tooltip,m=of;if(m!=="ArrowRight"&&m!=="ArrowLeft"&&m!=="Enter")return;var v=Do(h,Vi(f),lu(f),uu(f)),b=v==null?-1:Number(v),S=!Number.isFinite(b)||b<0,O=ha(f),_=Vi(f),w=Os(f,f.tooltip.settings.shared);if(m==="Enter"){if(S)return;var j=cd(f,w,"hover",String(h.index));t.dispatch(sd({active:!h.active,activeIndex:h.index,activeCoordinate:j}));return}var A=Yq(f),N=A==="left-to-right"?1:-1,T=m==="ArrowRight"?1:-1,P;if(S){var M=lu(f),R=uu(f),I=T*N,q=F=>({active:!1,index:String(F),dataKey:void 0,graphicalItemId:void 0,coordinate:void 0});if(P=-1,I>0){for(var W=0;W<_.length;W++)if(Do(q(W),_,M,R)!=null){P=W;break}}else for(var X=_.length-1;X>=0;X--)if(Do(q(X),_,M,R)!=null){P=X;break}if(P<0)return}else{P=b+T*N;var U=(O==null?void 0:O.length)||_.length;if(U===0||P>=U||P<0)return}var se=cd(f,w,"hover",String(P));t.dispatch(sd({active:!0,activeIndex:P.toString(),activeCoordinate:se}))}finally{Kl=null,_i=null}};if(!u){s();return}r==="raf"?Kl=requestAnimationFrame(s):typeof r=="number"&&_i===null&&(s(),of=null,_i=setTimeout(()=>{of?s():(_i=null,Kl=null)},r))}});yh.startListening({actionCreator:SM,effect:(e,t)=>{var n=t.getState(),r=n.rootProps.accessibilityLayer!==!1;if(r){var{keyboardInteraction:l}=n.tooltip;if(!l.active&&l.index==null){var u="0",s=Os(n,n.tooltip.settings.shared),f=cd(n,s,"hover",String(u));t.dispatch(sd({active:!0,activeIndex:u,activeCoordinate:f}))}}}});yh.startListening({actionCreator:wM,effect:(e,t)=>{var n=t.getState(),r=n.rootProps.accessibilityLayer!==!1;if(r){var{keyboardInteraction:l}=n.tooltip;l.active&&t.dispatch(sd({active:!1,activeIndex:l.index,activeCoordinate:l.coordinate}))}}});function OM(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(n,r)=>{if(r==="currentTarget")return t;var l=Reflect.get(n,r);return typeof l=="function"?l.bind(n):l}})}var Yn=Pn("externalEvent"),_M=us(),sf=new Map,Co=new Map,Cy=new Map;_M.startListening({actionCreator:Yn,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var l=r.type,u=OM(r);Cy.set(l,{handler:n,reactEvent:u});var s=sf.get(l);s!==void 0&&(cancelAnimationFrame(s),sf.delete(l));var f=t.getState(),{throttleDelay:d,throttledEvents:h}=f.eventSettings,m=h,v=m==="all"||(m==null?void 0:m.includes(l)),b=Co.get(l);b!==void 0&&(typeof d!="number"||!v)&&(clearTimeout(b),Co.delete(l));var S=()=>{var w=Cy.get(l);try{if(!w)return;var{handler:j,reactEvent:A}=w,N=t.getState(),T={activeCoordinate:GH(N),activeDataKey:bb(N),activeIndex:Fa(N),activeLabel:i5(N),activeTooltipIndex:Fa(N),isTooltipActive:VH(N)};j&&j(T,A)}finally{sf.delete(l),Co.delete(l),Cy.delete(l)}};if(!v){S();return}if(d==="raf"){var O=requestAnimationFrame(S);sf.set(l,O)}else if(typeof d=="number"){if(!Co.has(l)){S();var _=setTimeout(S,d);Co.set(l,_)}}else S()}}});var TW=$([Su],e=>e.tooltipItemPayloads),NW=$([TW,(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(u=>u.settings.graphicalItemId===n);if(r!=null){var{getPosition:l}=r;if(l!=null)return l(t)}}}),EM=Pn("touchMove"),jM=us(),Ei=null,Ba=null,p2=null,To=null;jM.startListening({actionCreator:EM,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){To=OM(n);var r=t.getState(),{throttleDelay:l,throttledEvents:u}=r.eventSettings,s=u==="all"||u.includes("touchmove");Ei!==null&&(cancelAnimationFrame(Ei),Ei=null),Ba!==null&&(typeof l!="number"||!s)&&(clearTimeout(Ba),Ba=null),p2=Array.from(n.touches).map(d=>Kb({clientX:d.clientX,clientY:d.clientY,currentTarget:n.currentTarget}));var f=()=>{if(To!=null){var d=t.getState(),h=Os(d,d.tooltip.settings.shared);if(h==="axis"){var m,v=(m=p2)===null||m===void 0?void 0:m[0];if(v==null){Ei=null,Ba=null;return}var b=Hb(d,v);(b==null?void 0:b.activeIndex)!=null&&t.dispatch(GP({activeIndex:b.activeIndex,activeDataKey:void 0,activeCoordinate:b.activeCoordinate}))}else if(h==="item"){var S,O=To.touches[0];if(document.elementFromPoint==null||O==null)return;var _=document.elementFromPoint(O.clientX,O.clientY);if(!_||!_.getAttribute)return;var w=_.getAttribute(DT),j=(S=_.getAttribute(RT))!==null&&S!==void 0?S:void 0,A=Ji(d).find(P=>P.id===j);if(w==null||A==null||j==null)return;var{dataKey:N}=A,T=NW(d,w,j);t.dispatch(KP({activeDataKey:N,activeIndex:w,activeCoordinate:T,activeGraphicalItemId:j}))}Ei=null,Ba=null}};if(!s){f();return}l==="raf"?Ei=requestAnimationFrame(f):typeof l=="number"&&Ba===null&&(f(),To=null,Ba=setTimeout(()=>{To?f():(Ba=null,Ei=null)},l))}}});var Yb={throttleDelay:"raf",throttledEvents:["mousemove","touchmove","pointermove","scroll","wheel"]},AM=Qt({name:"eventSettings",initialState:Yb,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=t.payload.throttledEvents)}}}),{setEventSettings:PW}=AM.actions,MW=AM.reducer,DW=eT({brush:xX,cartesianAxis:rX,chartData:KK,errorBars:bF,eventSettings:MW,graphicalItems:uV,layout:BI,legend:Y8,options:BK,polarAxis:xG,polarOptions:CW,referenceElements:_X,renderedTicks:$X,rootProps:OW,tooltip:rH,zIndex:AK}),RW=function(t){var n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:"Chart";return cI({reducer:DW,preloadedState:t,middleware:r=>{var l;return r({serializableCheck:!1,immutableCheck:!["commonjs","es6","production"].includes((l="es6")!==null&&l!==void 0?l:"")}).concat([pM.middleware,yM.middleware,yh.middleware,_M.middleware,jM.middleware])},enhancers:r=>{var l=r;return typeof r=="function"&&(l=r()),l.concat(vT({type:"raf"}))},devTools:{serialize:{replacer:wW},name:"recharts-".concat(n)}})};function CM(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,l=Jt(),u=y.useRef(null);if(l)return n;u.current==null&&(u.current=RW(t,r));var s=Jg;return y.createElement(uB,{context:s,store:u.current},n)}function kW(e){var{layout:t,margin:n}=e,r=Xe(),l=Jt();return y.useEffect(()=>{l||(r(LI(t)),r(kI(n)))},[r,l,t,n]),null}var TM=y.memo(kW,hu);function NM(e){var t=Xe();return y.useEffect(()=>{t(_W(e))},[t,e]),null}var LW=e=>{var t=Xe();return y.useEffect(()=>{t(PW(e))},[t,e]),null},PM=y.memo(LW,hu);function y2(e){var{zIndex:t,isPanorama:n}=e,r=y.useRef(null),l=Xe();return y.useLayoutEffect(()=>(r.current&&l(EK({zIndex:t,element:r.current,isPanorama:n})),()=>{l(jK({zIndex:t,isPanorama:n}))}),[l,t,n]),y.createElement("g",{tabIndex:-1,ref:r,className:"recharts-zIndex-layer_".concat(t)})}function g2(e){var{children:t,isPanorama:n}=e,r=pe(pK);if(!r||r.length===0)return t;var l=r.filter(s=>s<0),u=r.filter(s=>s>0);return y.createElement(y.Fragment,null,l.map(s=>y.createElement(y2,{key:s,zIndex:s,isPanorama:n})),t,u.map(s=>y.createElement(y2,{key:s,zIndex:s,isPanorama:n})))}var zW=["children"];function IW(e,t){if(e==null)return{};var n,r,l=BW(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function BW(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function gd(){return gd=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},gd.apply(null,arguments)}var UW={width:"100%",height:"100%",display:"block"},$W=y.forwardRef((e,t)=>{var n=c0(),r=f0(),l=QT();if(!_r(n)||!_r(r))return null;var{children:u,otherAttributes:s,title:f,desc:d}=e,h,m;return s!=null&&(typeof s.tabIndex=="number"?h=s.tabIndex:h=l?0:void 0,typeof s.role=="string"?m=s.role:m=l?"application":void 0),y.createElement(qg,gd({},s,{title:f,desc:d,role:m,tabIndex:h,width:n,height:r,style:UW,ref:t}),u)}),qW=e=>{var{children:t}=e,n=pe(qd);if(!n)return null;var{width:r,height:l,y:u,x:s}=n;return y.createElement(qg,{width:r,height:l,x:s,y:u},t)},b2=y.forwardRef((e,t)=>{var{children:n}=e,r=IW(e,zW),l=Jt();return l?y.createElement(qW,null,y.createElement(g2,{isPanorama:!0},n)):y.createElement($W,gd({ref:t},r),y.createElement(g2,{isPanorama:!1},n))});function HW(){var e=Xe(),[t,n]=y.useState(null),r=pe(t8);return y.useEffect(()=>{if(t!=null){var l=t.getBoundingClientRect(),u=l.width/t.offsetWidth;je(u)&&u!==r&&e(II(u))}},[t,e,r]),n}function x2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function KW(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?x2(Object(n),!0).forEach(function(r){YW(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):x2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function YW(e,t,n){return(t=GW(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function GW(e){var t=VW(e,"string");return typeof t=="symbol"?t:t+""}function VW(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}function Ga(){return Ga=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ga.apply(null,arguments)}var XW=()=>(JK(),null);function bd(e){if(typeof e=="number")return e;if(typeof e=="string"){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var FW=y.forwardRef((e,t)=>{var n,r,l=y.useRef(null),[u,s]=y.useState({containerWidth:bd((n=e.style)===null||n===void 0?void 0:n.width),containerHeight:bd((r=e.style)===null||r===void 0?void 0:r.height)}),f=y.useCallback((h,m)=>{s(v=>{var b=Math.round(h),S=Math.round(m);return v.containerWidth===b&&v.containerHeight===S?v:{containerWidth:b,containerHeight:S}})},[]),d=y.useCallback(h=>{if(typeof t=="function"&&t(h),l.current!=null&&(l.current.disconnect(),l.current=null),h!=null&&typeof ResizeObserver<"u"){var{width:m,height:v}=h.getBoundingClientRect();f(m,v);var b=O=>{var _=O[0];if(_!=null){var{width:w,height:j}=_.contentRect;f(w,j)}},S=new ResizeObserver(b);S.observe(h),l.current=S}},[t,f]);return y.useEffect(()=>()=>{var h=l.current;h!=null&&h.disconnect()},[f]),y.createElement(y.Fragment,null,y.createElement(ss,{width:u.containerWidth,height:u.containerHeight}),y.createElement("div",Ga({ref:d},e)))}),ZW=y.forwardRef((e,t)=>{var{width:n,height:r}=e,[l,u]=y.useState({containerWidth:bd(n),containerHeight:bd(r)}),s=y.useCallback((d,h)=>{u(m=>{var v=Math.round(d),b=Math.round(h);return m.containerWidth===v&&m.containerHeight===b?m:{containerWidth:v,containerHeight:b}})},[]),f=y.useCallback(d=>{if(typeof t=="function"&&t(d),d!=null){var{width:h,height:m}=d.getBoundingClientRect();s(h,m)}},[t,s]);return y.createElement(y.Fragment,null,y.createElement(ss,{width:l.containerWidth,height:l.containerHeight}),y.createElement("div",Ga({ref:f},e)))}),WW=y.forwardRef((e,t)=>{var{width:n,height:r}=e;return y.createElement(y.Fragment,null,y.createElement(ss,{width:n,height:r}),y.createElement("div",Ga({ref:t},e)))}),QW=y.forwardRef((e,t)=>{var{width:n,height:r}=e;return typeof n=="string"||typeof r=="string"?y.createElement(ZW,Ga({},e,{ref:t})):typeof n=="number"&&typeof r=="number"?y.createElement(WW,Ga({},e,{width:n,height:r,ref:t})):y.createElement(y.Fragment,null,y.createElement(ss,{width:n,height:r}),y.createElement("div",Ga({ref:t},e)))});function JW(e){return e?FW:QW}var eQ=y.forwardRef((e,t)=>{var{children:n,className:r,height:l,onClick:u,onContextMenu:s,onDoubleClick:f,onMouseDown:d,onMouseEnter:h,onMouseLeave:m,onMouseMove:v,onMouseUp:b,onTouchEnd:S,onTouchMove:O,onTouchStart:_,style:w,width:j,responsive:A,dispatchTouchEvents:N=!0}=e,T=y.useRef(null),P=Xe(),[M,R]=y.useState(null),[I,q]=y.useState(null),W=HW(),X=u0(),U=(X==null?void 0:X.width)>0?X.width:j,se=(X==null?void 0:X.height)>0?X.height:l,F=y.useCallback(fe=>{W(fe),typeof t=="function"&&t(fe),R(fe),q(fe),fe!=null&&(T.current=fe)},[W,t,R,q]),J=y.useCallback(fe=>{P(vM(fe)),P(Yn({handler:u,reactEvent:fe}))},[P,u]),z=y.useCallback(fe=>{P(Eg(fe)),P(Yn({handler:h,reactEvent:fe}))},[P,h]),V=y.useCallback(fe=>{P(YP()),P(Yn({handler:m,reactEvent:fe}))},[P,m]),ne=y.useCallback(fe=>{P(Eg(fe)),P(Yn({handler:v,reactEvent:fe}))},[P,v]),le=y.useCallback(()=>{P(SM())},[P]),Q=y.useCallback(()=>{P(wM())},[P]),D=y.useCallback(fe=>{P(xM(fe.key))},[P]),K=y.useCallback(fe=>{P(Yn({handler:s,reactEvent:fe}))},[P,s]),oe=y.useCallback(fe=>{P(Yn({handler:f,reactEvent:fe}))},[P,f]),ce=y.useCallback(fe=>{P(Yn({handler:d,reactEvent:fe}))},[P,d]),ge=y.useCallback(fe=>{P(Yn({handler:b,reactEvent:fe}))},[P,b]),ae=y.useCallback(fe=>{P(Yn({handler:_,reactEvent:fe}))},[P,_]),he=y.useCallback(fe=>{N&&P(EM(fe)),P(Yn({handler:O,reactEvent:fe}))},[P,N,O]),xe=y.useCallback(fe=>{P(Yn({handler:S,reactEvent:fe}))},[P,S]),ie=JW(A);return y.createElement(m5.Provider,{value:M},y.createElement(vC.Provider,{value:I},y.createElement(ie,{width:U??(w==null?void 0:w.width),height:se??(w==null?void 0:w.height),className:Ie("recharts-wrapper",r),style:KW({position:"relative",cursor:"default",width:U,height:se},w),onClick:J,onContextMenu:K,onDoubleClick:oe,onFocus:le,onBlur:Q,onKeyDown:D,onMouseDown:ce,onMouseEnter:z,onMouseLeave:V,onMouseMove:ne,onMouseUp:ge,onTouchEnd:xe,onTouchMove:he,onTouchStart:ae,ref:F},y.createElement(XW,null),n)))}),tQ=["width","height","responsive","children","className","style","compact","title","desc"];function nQ(e,t){if(e==null)return{};var n,r,l=rQ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function rQ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}var MM=y.forwardRef((e,t)=>{var{width:n,height:r,responsive:l,children:u,className:s,style:f,compact:d,title:h,desc:m}=e,v=nQ(e,tQ),b=pn(v);return d?y.createElement(y.Fragment,null,y.createElement(ss,{width:n,height:r}),y.createElement(b2,{otherAttributes:b,title:h,desc:m},u)):y.createElement(eQ,{className:s,style:f,width:n,height:r,responsive:l??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},y.createElement(b2,{otherAttributes:b,title:h,desc:m,ref:t},y.createElement(jX,null,u)))});function jg(){return jg=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},jg.apply(null,arguments)}function S2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function aQ(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?S2(Object(n),!0).forEach(function(r){iQ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):S2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function iQ(e,t,n){return(t=lQ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function lQ(e){var t=uQ(e,"string");return typeof t=="symbol"?t:t+""}function uQ(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var oQ={top:5,right:5,bottom:5,left:5},sQ=aQ({accessibilityLayer:!0,barCategoryGap:"10%",barGap:4,layout:"horizontal",margin:oQ,responsive:!1,reverseStackOrder:!1,stackOffset:"none",syncMethod:"index"},Yb),DM=y.forwardRef(function(t,n){var r,l=Ct(t.categoricalChartProps,sQ),{chartName:u,defaultTooltipEventType:s,validateTooltipEventTypes:f,tooltipPayloadSearcher:d,categoricalChartProps:h}=t,m={chartName:u,defaultTooltipEventType:s,validateTooltipEventTypes:f,tooltipPayloadSearcher:d,eventEmitter:void 0};return y.createElement(CM,{preloadedState:{options:m},reduxStoreName:(r=h.id)!==null&&r!==void 0?r:u},y.createElement(G5,{chartData:h.data}),y.createElement(TM,{layout:l.layout,margin:l.margin}),y.createElement(PM,{throttleDelay:l.throttleDelay,throttledEvents:l.throttledEvents}),y.createElement(NM,{baseValue:l.baseValue,accessibilityLayer:l.accessibilityLayer,barCategoryGap:l.barCategoryGap,maxBarSize:l.maxBarSize,stackOffset:l.stackOffset,barGap:l.barGap,barSize:l.barSize,syncId:l.syncId,syncMethod:l.syncMethod,className:l.className,reverseStackOrder:l.reverseStackOrder}),y.createElement(MM,jg({},l,{ref:n})))}),cQ=["axis","item"],fQ=y.forwardRef((e,t)=>y.createElement(DM,{chartName:"BarChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:cQ,tooltipPayloadSearcher:_b,categoricalChartProps:e,ref:t}));function dQ(e){var t=Xe();return y.useEffect(()=>{t(AW(e))},[t,e]),null}var hQ=["layout"];function Ag(){return Ag=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)({}).hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},Ag.apply(null,arguments)}function mQ(e,t){if(e==null)return{};var n,r,l=vQ(e,t);if(Object.getOwnPropertySymbols){var u=Object.getOwnPropertySymbols(e);for(r=0;r<u.length;r++)n=u[r],t.indexOf(n)===-1&&{}.propertyIsEnumerable.call(e,n)&&(l[n]=e[n])}return l}function vQ(e,t){if(e==null)return{};var n={};for(var r in e)if({}.hasOwnProperty.call(e,r)){if(t.indexOf(r)!==-1)continue;n[r]=e[r]}return n}function w2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function pQ(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?w2(Object(n),!0).forEach(function(r){yQ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):w2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function yQ(e,t,n){return(t=gQ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function gQ(e){var t=bQ(e,"string");return typeof t=="symbol"?t:t+""}function bQ(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var xQ={top:5,right:5,bottom:5,left:5},RM=pQ({accessibilityLayer:!0,stackOffset:"none",barCategoryGap:"10%",barGap:4,margin:xQ,reverseStackOrder:!1,syncMethod:"index",layout:"radial",responsive:!1,cx:"50%",cy:"50%",innerRadius:0,outerRadius:"80%"},Yb),SQ=y.forwardRef(function(t,n){var r,l=Ct(t.categoricalChartProps,RM),{layout:u}=l,s=mQ(l,hQ),{chartName:f,defaultTooltipEventType:d,validateTooltipEventTypes:h,tooltipPayloadSearcher:m}=t,v={chartName:f,defaultTooltipEventType:d,validateTooltipEventTypes:h,tooltipPayloadSearcher:m,eventEmitter:void 0};return y.createElement(CM,{preloadedState:{options:v},reduxStoreName:(r=l.id)!==null&&r!==void 0?r:f},y.createElement(G5,{chartData:l.data}),y.createElement(TM,{layout:u,margin:l.margin}),y.createElement(PM,{throttleDelay:l.throttleDelay,throttledEvents:l.throttledEvents}),y.createElement(NM,{baseValue:void 0,accessibilityLayer:l.accessibilityLayer,barCategoryGap:l.barCategoryGap,maxBarSize:l.maxBarSize,stackOffset:l.stackOffset,barGap:l.barGap,barSize:l.barSize,syncId:l.syncId,syncMethod:l.syncMethod,className:l.className,reverseStackOrder:l.reverseStackOrder}),y.createElement(dQ,{cx:l.cx,cy:l.cy,startAngle:l.startAngle,endAngle:l.endAngle,innerRadius:l.innerRadius,outerRadius:l.outerRadius}),y.createElement(MM,Ag({},s,{ref:n})))});function O2(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(l){return Object.getOwnPropertyDescriptor(e,l).enumerable})),n.push.apply(n,r)}return n}function _2(e){for(var t=1;t<arguments.length;t++){var n=arguments[t]!=null?arguments[t]:{};t%2?O2(Object(n),!0).forEach(function(r){wQ(e,r,n[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):O2(Object(n)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(n,r))})}return e}function wQ(e,t,n){return(t=OQ(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function OQ(e){var t=_Q(e,"string");return typeof t=="symbol"?t:t+""}function _Q(e,t){if(typeof e!="object"||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t);if(typeof r!="object")return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return(t==="string"?String:Number)(e)}var EQ=["item"],jQ=_2(_2({},RM),{},{layout:"centric",startAngle:0,endAngle:360}),AQ=y.forwardRef((e,t)=>{var n=Ct(e,jQ);return y.createElement(SQ,{chartName:"PieChart",defaultTooltipEventType:"item",validateTooltipEventTypes:EQ,tooltipPayloadSearcher:_b,categoricalChartProps:n,ref:t})}),CQ=["axis"],TQ=y.forwardRef((e,t)=>y.createElement(DM,{chartName:"AreaChart",defaultTooltipEventType:"axis",validateTooltipEventTypes:CQ,tooltipPayloadSearcher:_b,categoricalChartProps:e,ref:t}));function E2(e){const t=new Date(e);return`${String(t.getHours()).padStart(2,"0")}:00`}function NQ({data:e,height:t=240,color:n="#6366f1"}){return x.jsx(o0,{width:"100%",height:t,children:x.jsxs(TQ,{data:e,children:[x.jsx("defs",{children:x.jsxs("linearGradient",{id:"areaGradient",x1:"0",y1:"0",x2:"0",y2:"1",children:[x.jsx("stop",{offset:"0%",stopColor:n,stopOpacity:.3}),x.jsx("stop",{offset:"100%",stopColor:n,stopOpacity:0})]})}),x.jsx(Q5,{strokeDasharray:"3 3",stroke:"#e5e7eb"}),x.jsx($b,{dataKey:"bucket",tickFormatter:E2,tick:{fontSize:12,fill:"#6b7280"},axisLine:{stroke:"#e5e7eb"},tickLine:!1}),x.jsx(qb,{allowDecimals:!1,tick:{fontSize:12,fill:"#6b7280"},axisLine:!1,tickLine:!1,width:40}),x.jsx(Eb,{labelFormatter:r=>E2(String(r)),formatter:r=>[String(r),"Actions"],contentStyle:{fontSize:12,borderRadius:6,border:"1px solid #e5e7eb"}}),x.jsx(oM,{type:"monotone",dataKey:"count",stroke:n,strokeWidth:2,fill:"url(#areaGradient)"})]})})}function PQ(e){const t=e.decision??"";return x.jsx(v0,{...e,fill:iC[t]??lC})}function MQ({data:e,height:t=260}){const n=e.map(r=>({name:zg(r.decision),value:r.count,decision:r.decision,fill:iC[r.decision]??lC}));return x.jsx(o0,{width:"100%",height:t,children:x.jsxs(AQ,{children:[x.jsx(H5,{data:n,dataKey:"value",nameKey:"name",cx:"50%",cy:"45%",innerRadius:"55%",outerRadius:"80%",paddingAngle:2,shape:PQ}),x.jsx(Eb,{formatter:r=>[String(r),"Actions"],contentStyle:{fontSize:12,borderRadius:6,border:"1px solid #e5e7eb"}}),x.jsx(ZT,{verticalAlign:"bottom",iconType:"circle",iconSize:8,wrapperStyle:{fontSize:12}})]})})}function DQ(e){const t=e.reduce((n,r)=>Math.max(n,r.tool_name.length),0);return Math.min(t*7.5+12,220)}function j2({data:e,height:t}){const n=t??Math.max(120,e.length*36+20),r=y.useMemo(()=>DQ(e),[e]);return x.jsx(o0,{width:"100%",height:n,children:x.jsxs(fQ,{data:e,layout:"vertical",margin:{left:8,right:16,top:4,bottom:4},children:[x.jsx($b,{type:"number",allowDecimals:!1,tick:{fontSize:12,fill:"#6b7280"},axisLine:{stroke:"#e5e7eb"},tickLine:!1}),x.jsx(qb,{type:"category",dataKey:"tool_name",width:r,tick:{fontSize:12,fill:"#374151"},axisLine:!1,tickLine:!1}),x.jsx(Eb,{cursor:!1,formatter:l=>[String(l),"Calls"],contentStyle:{fontSize:12,borderRadius:6,border:"1px solid #e5e7eb"}}),x.jsx(hM,{dataKey:"count",fill:"#6366f1",barSize:20,radius:[0,4,4,0]})]})})}function RQ(){const[e,t]=y.useState(null),[n,r]=y.useState(!0),[l,u]=y.useState(null),[s,f]=y.useState(Io),d=y.useCallback(w=>{const j=new Date(Date.now()-s).toISOString();i4(j,void 0).then(A=>{t(A),u(null),w&&r(!1)}).catch(A=>{w&&(u(A instanceof Error?A.message:"Failed to load analytics"),r(!1))})},[s]);y.useEffect(()=>{r(!0),d(!0)},[d]);function h(w){w!==s&&f(w)}if(n)return x.jsxs("div",{className:"flex flex-col gap-6",children:[x.jsx("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:Array.from({length:4},(w,j)=>x.jsx("div",{className:"h-20 animate-pulse rounded-md bg-gray-100"},j))}),x.jsx("div",{className:"h-64 animate-pulse rounded-md bg-gray-100"}),x.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[x.jsx("div",{className:"h-72 animate-pulse rounded-md bg-gray-100"}),x.jsx("div",{className:"h-72 animate-pulse rounded-md bg-gray-100"})]})]});if(l)return x.jsx(Ii,{error:l});if(!e||e.total===0)return x.jsxs("div",{className:"flex h-full flex-col gap-6",children:[x.jsxs("div",{children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Analytics"}),x.jsx("p",{className:"mt-1 text-sm text-gray-500",children:"Tool call volume and decision breakdown"})]}),x.jsx(A2,{activePreset:s,onPresetChange:h}),x.jsxs("div",{className:"flex flex-1 flex-col items-center justify-center gap-3 text-gray-500",children:[x.jsxs("svg",{className:"h-10 w-10 text-gray-300",fill:"none",viewBox:"0 0 24 24",strokeWidth:1.5,stroke:"currentColor",children:[x.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M10.5 6a7.5 7.5 0 1 0 7.5 7.5h-7.5V6Z"}),x.jsx("path",{strokeLinecap:"round",strokeLinejoin:"round",d:"M13.5 10.5H21A7.5 7.5 0 0 0 13.5 3v7.5Z"})]}),x.jsx("p",{className:"text-sm font-medium",children:"No data yet"}),x.jsx("p",{className:"text-xs text-gray-400",children:"Start sending tool calls through Helio"})]})]});const m=e.allowed_total??"—",v=e.blocked_total??"—",b=e.by_block_reason===void 0,S=(e.by_block_reason??[]).map(w=>({tool_name:zg(w.reason),count:w.count})),O=e.top_tools.map(w=>({tool_name:w.upstream?`${w.tool_name} (${w.upstream})`:w.tool_name,count:w.count})),_=e.approval_rate!=null?`${String(Math.round(e.approval_rate*100))}%`:"—";return x.jsxs("div",{className:"flex h-full flex-col gap-6 overflow-y-auto",children:[x.jsxs("div",{children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Analytics"}),x.jsx("p",{className:"mt-1 text-sm text-gray-500",children:"Tool call volume and decision breakdown"})]}),x.jsx(A2,{activePreset:s,onPresetChange:h}),x.jsx("section",{children:x.jsxs("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:[x.jsx(cf,{label:"Total Actions",value:e.total}),x.jsx(cf,{label:"Allowed",value:m,color:"emerald"}),x.jsx(cf,{label:"Blocked",value:v,color:"red"}),x.jsx(cf,{label:"Approval Rate",value:_,color:"amber"})]})}),x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Actions Per Hour"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:x.jsx(NQ,{data:e.per_hour})})]}),x.jsxs("div",{className:"grid gap-6 lg:grid-cols-2",children:[x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Matched Actions"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:e.by_decision.length>0?x.jsx(MQ,{data:e.by_decision}):x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"No decision data"})})]}),x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Top Tools"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:O.length>0?x.jsx(j2,{data:O}):x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"No tool data"})})]})]}),x.jsxs("section",{children:[x.jsx("h2",{className:"mb-3 text-sm font-medium text-gray-500",children:"Blocked by Reason"}),x.jsx("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:b?x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"Requires a newer proxy version"}):S.length>0?x.jsx(j2,{data:S}):x.jsx("p",{className:"py-8 text-center text-sm text-gray-400",children:"No blocked actions"})})]})]})}function A2({activePreset:e,onPresetChange:t}){return x.jsx("div",{className:"flex gap-1.5",children:oC.map(n=>x.jsx("button",{type:"button",onClick:()=>{t(n.ms)},className:`rounded-md px-3 py-1.5 text-sm transition-colors ${e===n.ms?"bg-gray-900 text-white":"border border-gray-200 bg-white text-gray-600 hover:bg-gray-50"}`,children:n.label},n.label))})}const kQ={emerald:"text-emerald-700",red:"text-red-700",amber:"text-amber-700"};function cf({label:e,value:t,color:n}){const r=(n&&kQ[n])??"text-gray-900";return x.jsxs("div",{className:"rounded-md border border-gray-200 bg-white p-4",children:[x.jsx("p",{className:"text-sm font-medium text-gray-500",children:e}),x.jsx("p",{className:`mt-1 text-2xl font-semibold tabular-nums ${r}`,children:typeof t=="number"?t.toLocaleString():t})]})}function LQ(){const[e,t]=y.useState("booting"),[n,r]=y.useState(!1),[l,u]=y.useState(""),[s,f]=y.useState(null),d=y.useCallback(()=>{Si(void 0),t("locked"),f("Session expired. Enter the dashboard secret again.")},[]),h=y.useCallback(async()=>{t("booting");try{const b=await J2();if(r(b.auth_required),!b.auth_required||b.authenticated){Si(b.csrf_token),f(null),t("ready");return}Si(void 0),t("locked"),f(null)}catch{Si(void 0),t("locked"),f("Unable to check session state. Verify the proxy is running and try again.")}},[]);y.useEffect(()=>{h()},[h]),y.useEffect(()=>(oO(d),()=>{oO(void 0)}),[d]);async function m(b){if(b.preventDefault(),!l.trim()){f("Enter the dashboard secret.");return}t("authenticating"),f(null);try{const S=await e4(l.trim());r(S.auth_required),Si(S.csrf_token),u(""),t("ready")}catch(S){Si(void 0),t("locked"),S instanceof Q2&&S.status===401?f("Invalid dashboard secret. Enter the secret itself, not the sha256: digest stored in your Helio config."):f("Sign in failed due to a network or server error. Try again.")}}async function v(){try{await t4()}catch{}Si(void 0),t("locked"),f("Signed out. Enter the dashboard secret to unlock.")}return e==="booting"?x.jsx("div",{className:"flex min-h-screen items-center justify-center bg-gray-50 px-4",children:x.jsxs("div",{className:"w-full max-w-md rounded-lg border border-gray-200 bg-white p-6 text-center shadow-sm",children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Helio Dashboard"}),x.jsx("p",{className:"mt-2 text-sm text-gray-600",children:"Checking session status..."})]})}):e==="locked"||e==="authenticating"?x.jsx("div",{className:"flex min-h-screen items-center justify-center bg-gray-50 px-4",children:x.jsxs("form",{onSubmit:b=>{m(b)},className:"w-full max-w-md rounded-lg border border-gray-200 bg-white p-6 shadow-sm",children:[x.jsx("h1",{className:"text-lg font-semibold text-gray-900",children:"Dashboard Locked"}),x.jsxs("p",{className:"mt-2 text-sm text-gray-600",children:["Enter your dashboard secret, the value ",x.jsx("code",{children:"helio init"})," printed. If"," ",x.jsx("code",{children:"dashboard.api_secret"})," in your Helio config is a ",x.jsx("code",{children:"sha256:"})," digest or an env placeholder (for example ",x.jsx("code",{children:"${HELIO_DASHBOARD_SECRET}"}),"), enter the secret behind it, not the config value."]}),x.jsx("label",{htmlFor:"dashboard-secret",className:"mt-4 block text-sm font-medium text-gray-700",children:"Dashboard secret"}),x.jsx("input",{id:"dashboard-secret",type:"password",autoComplete:"current-password",value:l,onChange:b=>{u(b.target.value)},disabled:e==="authenticating",className:"mt-1 w-full rounded-md border border-gray-300 px-3 py-2 text-sm text-gray-900 shadow-sm focus:border-blue-500 focus:outline-none focus:ring-2 focus:ring-blue-200 disabled:cursor-not-allowed disabled:bg-gray-100"}),s&&x.jsx("p",{className:"mt-3 rounded-md border border-amber-200 bg-amber-50 px-3 py-2 text-xs text-amber-800",children:s}),x.jsx("button",{type:"submit",disabled:e==="authenticating",className:"mt-4 inline-flex w-full items-center justify-center rounded-md bg-blue-600 px-4 py-2 text-sm font-medium text-white hover:bg-blue-500 disabled:cursor-not-allowed disabled:bg-blue-300",children:e==="authenticating"?"Unlocking...":"Unlock Dashboard"})]})}):x.jsx(Kk,{children:x.jsx(f4,{children:x.jsx(c4,{onSessionExpired:d,children:x.jsx(xk,{children:x.jsxs(Ua,{element:x.jsx(y4,{onLogout:n?()=>void v():void 0}),children:[x.jsx(Ua,{index:!0,element:x.jsx(z4,{})}),x.jsx(Ua,{path:"approvals",element:x.jsx(Y4,{})}),x.jsx(Ua,{path:"audit",element:x.jsx(fL,{})}),x.jsx(Ua,{path:"limits",element:x.jsx(vL,{})}),x.jsx(Ua,{path:"budgets",element:x.jsx(SL,{})}),x.jsx(Ua,{path:"analytics",element:x.jsx(RQ,{})})]})})})})})}const kM=document.getElementById("root");if(!kM)throw new Error("Dashboard mount point #root not found in index.html");yR.createRoot(kM).render(x.jsx(y.StrictMode,{children:x.jsx(LQ,{})}));
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
<meta name="referrer" content="no-referrer" />
|
|
7
7
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg" />
|
|
8
8
|
<title>Helio Dashboard</title>
|
|
9
|
-
<script type="module" crossorigin src="/assets/index-
|
|
9
|
+
<script type="module" crossorigin src="/assets/index-BRvkMXWl.js"></script>
|
|
10
10
|
<link rel="stylesheet" crossorigin href="/assets/index-DtnT1Y9r.css">
|
|
11
11
|
</head>
|
|
12
12
|
<body>
|
package/dist/index.js
CHANGED
|
@@ -564,7 +564,7 @@ function rootConfigChecks(cfg, ctx) {
|
|
|
564
564
|
ctx.addIssue({
|
|
565
565
|
code: "custom",
|
|
566
566
|
path: ["dashboard", "api_secret"],
|
|
567
|
-
message: 'dashboard.api_secret is required when any rule uses require_approval, any budget uses on_exceed: require_approval, or policies.flag_destructive or policies.on_tool_drift is "require_approval".
|
|
567
|
+
message: 'dashboard.api_secret is required when any rule uses require_approval, any budget uses on_exceed: require_approval, or policies.flag_destructive or policies.on_tool_drift is "require_approval". Run `helio secret` and set the printed digest under `dashboard.api_secret` in your helio.yaml (a plaintext value is accepted but warned about at startup). (See docs/approvals.md.)'
|
|
568
568
|
});
|
|
569
569
|
}
|
|
570
570
|
}
|
|
@@ -572,7 +572,7 @@ function rootConfigChecks(cfg, ctx) {
|
|
|
572
572
|
ctx.addIssue({
|
|
573
573
|
code: "custom",
|
|
574
574
|
path: ["dashboard", "api_secret"],
|
|
575
|
-
message: "dashboard.api_secret is required when dashboard.enabled is true unless dashboard.allow_open_mode is explicitly set to true.
|
|
575
|
+
message: "dashboard.api_secret is required when dashboard.enabled is true unless dashboard.allow_open_mode is explicitly set to true. Run `helio secret` and set the printed digest under dashboard.api_secret in helio.yaml."
|
|
576
576
|
});
|
|
577
577
|
}
|
|
578
578
|
if (!requiresSecret && cfg.dashboard.enabled && !hasSecret && cfg.dashboard.allow_open_mode && !isLoopbackHost(cfg.dashboard.host)) {
|
|
@@ -938,6 +938,7 @@ function isNamedConfig(config) {
|
|
|
938
938
|
|
|
939
939
|
// src/config/loader.ts
|
|
940
940
|
import { readFile } from "fs/promises";
|
|
941
|
+
import { createHash } from "crypto";
|
|
941
942
|
import yaml from "js-yaml";
|
|
942
943
|
|
|
943
944
|
// src/util/format-zod-errors.ts
|
|
@@ -957,36 +958,42 @@ var ConfigError = class extends Error {
|
|
|
957
958
|
}
|
|
958
959
|
};
|
|
959
960
|
var ENV_VAR_PATTERN = /\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g;
|
|
960
|
-
function
|
|
961
|
+
function interpolateTracked(value, env, path, out) {
|
|
961
962
|
if (typeof value === "string") {
|
|
962
|
-
|
|
963
|
+
let substitutions = 0;
|
|
964
|
+
const result = value.replace(ENV_VAR_PATTERN, (_match, varName) => {
|
|
963
965
|
const envValue = env[varName];
|
|
964
966
|
if (envValue === void 0) {
|
|
965
967
|
throw new ConfigError(`Environment variable "${varName}" is not set`);
|
|
966
968
|
}
|
|
969
|
+
substitutions += 1;
|
|
967
970
|
return envValue;
|
|
968
971
|
});
|
|
972
|
+
if (substitutions > 0 && out !== void 0) out.push(path.join("."));
|
|
973
|
+
return result;
|
|
969
974
|
}
|
|
970
975
|
if (Array.isArray(value)) {
|
|
971
|
-
return value.map((item) =>
|
|
976
|
+
return value.map((item, index) => interpolateTracked(item, env, [...path, String(index)], out));
|
|
972
977
|
}
|
|
973
978
|
if (value !== null && typeof value === "object") {
|
|
974
979
|
return Object.fromEntries(
|
|
975
980
|
Object.entries(value).map(([k, v]) => [
|
|
976
981
|
k,
|
|
977
|
-
|
|
982
|
+
interpolateTracked(v, env, [...path, k], out)
|
|
978
983
|
])
|
|
979
984
|
);
|
|
980
985
|
}
|
|
981
986
|
return value;
|
|
982
987
|
}
|
|
983
|
-
async function
|
|
984
|
-
let
|
|
988
|
+
async function loadConfigWithMeta(filePath, env) {
|
|
989
|
+
let bytes;
|
|
985
990
|
try {
|
|
986
|
-
|
|
991
|
+
bytes = await readFile(filePath);
|
|
987
992
|
} catch {
|
|
988
993
|
throw new ConfigError(`Cannot read config file: ${filePath}`);
|
|
989
994
|
}
|
|
995
|
+
const sha256 = createHash("sha256").update(bytes).digest("hex");
|
|
996
|
+
const raw = bytes.toString("utf-8");
|
|
990
997
|
let parsed;
|
|
991
998
|
try {
|
|
992
999
|
parsed = yaml.load(raw);
|
|
@@ -994,7 +1001,8 @@ async function loadConfig(filePath, env) {
|
|
|
994
1001
|
const message = err instanceof Error ? err.message : String(err);
|
|
995
1002
|
throw new ConfigError(`YAML parse error in ${filePath}: ${message}`);
|
|
996
1003
|
}
|
|
997
|
-
const
|
|
1004
|
+
const interpolatedPaths = [];
|
|
1005
|
+
const interpolated = interpolateTracked(parsed, env ?? process.env, [], interpolatedPaths);
|
|
998
1006
|
const result = helioConfigSchema.safeParse(interpolated);
|
|
999
1007
|
if (!result.success) {
|
|
1000
1008
|
const details = formatZodErrors(result.error).map(
|
|
@@ -1006,7 +1014,10 @@ async function loadConfig(filePath, env) {
|
|
|
1006
1014
|
details
|
|
1007
1015
|
);
|
|
1008
1016
|
}
|
|
1009
|
-
return result.data;
|
|
1017
|
+
return { config: result.data, sha256, interpolatedPaths };
|
|
1018
|
+
}
|
|
1019
|
+
async function loadConfig(filePath, env) {
|
|
1020
|
+
return (await loadConfigWithMeta(filePath, env)).config;
|
|
1010
1021
|
}
|
|
1011
1022
|
|
|
1012
1023
|
// src/config/watcher.ts
|
|
@@ -8207,19 +8218,23 @@ import { HTTPException } from "hono/http-exception";
|
|
|
8207
8218
|
import { z as z5 } from "zod";
|
|
8208
8219
|
|
|
8209
8220
|
// src/auth/bearer.ts
|
|
8210
|
-
import { createHash, timingSafeEqual } from "crypto";
|
|
8221
|
+
import { createHash as createHash2, timingSafeEqual } from "crypto";
|
|
8222
|
+
var BEARER_PREFIX = "Bearer ";
|
|
8223
|
+
var DIGEST_PATTERN = /^sha256:([0-9a-f]{64})$/;
|
|
8211
8224
|
function verifyBearer(authHeader, expected) {
|
|
8212
8225
|
if (!authHeader || !expected) return false;
|
|
8213
|
-
|
|
8214
|
-
const
|
|
8215
|
-
const
|
|
8226
|
+
if (!authHeader.startsWith(BEARER_PREFIX)) return false;
|
|
8227
|
+
const presented = authHeader.slice(BEARER_PREFIX.length);
|
|
8228
|
+
const storedHex = DIGEST_PATTERN.exec(expected)?.[1];
|
|
8229
|
+
const expectedDigest = storedHex !== void 0 ? Buffer.from(storedHex, "hex") : createHash2("sha256").update(expected, "utf-8").digest();
|
|
8230
|
+
const actualDigest = createHash2("sha256").update(presented, "utf-8").digest();
|
|
8216
8231
|
return timingSafeEqual(actualDigest, expectedDigest);
|
|
8217
8232
|
}
|
|
8218
8233
|
|
|
8219
8234
|
// src/sideband/governance-api.ts
|
|
8220
8235
|
import { Hono as Hono4 } from "hono";
|
|
8221
8236
|
import { z as z4 } from "zod";
|
|
8222
|
-
import { createHash as
|
|
8237
|
+
import { createHash as createHash3 } from "crypto";
|
|
8223
8238
|
var originSchema = z4.string().regex(/^[a-z0-9_-]{1,64}$/, "origin must match ^[a-z0-9_-]{1,64}$").default("sideband");
|
|
8224
8239
|
var metadataSchema = z4.record(z4.string(), z4.unknown()).nullish();
|
|
8225
8240
|
var toolDefinitionSchema = z4.object({
|
|
@@ -8376,7 +8391,7 @@ function auditPayloadHash(data) {
|
|
|
8376
8391
|
actual_amount: data.actual_amount ?? null,
|
|
8377
8392
|
evidence: canonicalEvidence(data.evidence)
|
|
8378
8393
|
};
|
|
8379
|
-
return
|
|
8394
|
+
return createHash3("sha256").update(canonicalize(semantic)).digest("hex");
|
|
8380
8395
|
}
|
|
8381
8396
|
function canonicalEvidence(evidence) {
|
|
8382
8397
|
if (!evidence || evidence.length === 0) return null;
|
|
@@ -11000,7 +11015,7 @@ function createApprovalApp(router, queue, options) {
|
|
|
11000
11015
|
// src/dashboard/api.ts
|
|
11001
11016
|
import { readFileSync } from "fs";
|
|
11002
11017
|
import { join } from "path";
|
|
11003
|
-
import { randomUUID as randomUUID8 } from "crypto";
|
|
11018
|
+
import { randomBytes as randomBytes2, randomUUID as randomUUID8 } from "crypto";
|
|
11004
11019
|
import { Hono as Hono8 } from "hono";
|
|
11005
11020
|
import { HTTPException as HTTPException2 } from "hono/http-exception";
|
|
11006
11021
|
import { z as z8 } from "zod";
|
|
@@ -11009,16 +11024,16 @@ import { serveStatic } from "@hono/node-server/serve-static";
|
|
|
11009
11024
|
import { streamSSE } from "hono/streaming";
|
|
11010
11025
|
|
|
11011
11026
|
// src/dashboard/session.ts
|
|
11012
|
-
import { createHash as
|
|
11027
|
+
import { createHash as createHash4, createHmac as createHmac3, randomBytes, timingSafeEqual as timingSafeEqual3 } from "crypto";
|
|
11013
11028
|
var DashboardSessionStore = class {
|
|
11014
|
-
|
|
11029
|
+
signingKey;
|
|
11015
11030
|
ttlMs;
|
|
11016
11031
|
now;
|
|
11017
11032
|
records = /* @__PURE__ */ new Map();
|
|
11018
11033
|
timer = null;
|
|
11019
11034
|
closed = false;
|
|
11020
11035
|
constructor(options) {
|
|
11021
|
-
this.
|
|
11036
|
+
this.signingKey = options.signingKey;
|
|
11022
11037
|
this.ttlMs = options.ttlMs ?? 8 * 60 * 60 * 1e3;
|
|
11023
11038
|
this.now = options.now ?? Date.now;
|
|
11024
11039
|
const cleanupIntervalMs = options.cleanupIntervalMs ?? 6e4;
|
|
@@ -11090,13 +11105,13 @@ var DashboardSessionStore = class {
|
|
|
11090
11105
|
const id = token.slice(0, dot);
|
|
11091
11106
|
const signature = token.slice(dot + 1);
|
|
11092
11107
|
const expected = this.sign(id);
|
|
11093
|
-
const actualDigest =
|
|
11094
|
-
const expectedDigest =
|
|
11108
|
+
const actualDigest = createHash4("sha256").update(signature).digest();
|
|
11109
|
+
const expectedDigest = createHash4("sha256").update(expected).digest();
|
|
11095
11110
|
if (!timingSafeEqual3(actualDigest, expectedDigest)) return void 0;
|
|
11096
11111
|
return id;
|
|
11097
11112
|
}
|
|
11098
11113
|
sign(id) {
|
|
11099
|
-
return createHmac3("sha256", this.
|
|
11114
|
+
return createHmac3("sha256", this.signingKey).update(id).digest("base64url");
|
|
11100
11115
|
}
|
|
11101
11116
|
};
|
|
11102
11117
|
|
|
@@ -11258,7 +11273,10 @@ function createDashboardAppWithLifecycle(deps, options) {
|
|
|
11258
11273
|
budgets
|
|
11259
11274
|
} = deps;
|
|
11260
11275
|
const apiSecret = options?.apiSecret;
|
|
11261
|
-
const sessionStore = apiSecret ? new DashboardSessionStore({
|
|
11276
|
+
const sessionStore = apiSecret ? new DashboardSessionStore({
|
|
11277
|
+
signingKey: randomBytes2(32).toString("hex"),
|
|
11278
|
+
ttlMs: SESSION_TTL_MS
|
|
11279
|
+
}) : void 0;
|
|
11262
11280
|
const app = new Hono8();
|
|
11263
11281
|
app.onError((err, c) => {
|
|
11264
11282
|
if (err instanceof HTTPException2) return err.getResponse();
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@gethelio/proxy",
|
|
3
|
-
"version": "0.13.
|
|
3
|
+
"version": "0.13.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Open-source MCP governance proxy for AI agents",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -41,7 +41,7 @@
|
|
|
41
41
|
"build": "pnpm run build:dashboard && pnpm run build:proxy && pnpm run bundle:dashboard-assets && pnpm run check:dashboard-assets",
|
|
42
42
|
"test": "vitest run",
|
|
43
43
|
"test:watch": "vitest",
|
|
44
|
-
"typecheck": "tsc --noEmit",
|
|
44
|
+
"typecheck": "tsc --noEmit && tsc -p scripts/tsconfig.json",
|
|
45
45
|
"benchmark": "tsx scripts/benchmark.ts",
|
|
46
46
|
"prepack": "pnpm run check:dashboard-assets"
|
|
47
47
|
},
|