From a8030ac7d5beb3a3be823d1e89b4568c93dadccf Mon Sep 17 00:00:00 2001 From: Craig Date: Mon, 26 Oct 2026 13:39:25 -0700 Subject: [PATCH 1/3] Correct Storage identity and independent release verification Keep historical immutable anchors and protected payload checks; derive current candidate versions from the catalog and verify independently published releases against their historical baseline. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2eadb772-b466-49f1-bcd0-2e2c59791222 --- docs/release-process.md | 10 +++++ scripts/verify-plugin-marketplace.mjs | 47 ++++++------------------ test/fixtures/marketplace.candidate.json | 11 +----- test/plugin-marketplace.test.mjs | 24 +++++++----- test/storage-release.test.mjs | 14 ++++--- 5 files changed, 45 insertions(+), 61 deletions(-) diff --git a/docs/release-process.md b/docs/release-process.md index bbac4fb..4ea4f89 100644 --- a/docs/release-process.md +++ b/docs/release-process.md @@ -39,6 +39,16 @@ The verifier compares all protected files on the default branch to those tags, including additions and deletions, and pins each original tag to its reviewed commit. Do not rewrite or move old receipts, tags, or versions. +Storage's canonical product identity is `azure-storage`, with its package under +`canvases/azure-storage`. The verifier uses that identity for its launcher, +extension, receipt and release tags; `azure-storage-canvas` is obsolete. +Current candidate tests derive versions from the marketplace; historical +immutable tag checks retain their original pins. +Current Hosted Skills, Resources Query and Cost Health versions may be released +independently at different production commits. Their release commits must still +descend from the original Cost Health baseline; the historical combined-release +tags retain their exact commit and ancestry checks. + A new candidate for any canvas uses the reviewed `schemaVersion: 2`, `mutableDocumentation: true` contract: `release.json` and `checksums.json` enumerate protected files only, and its `SHA256SUMS` covers diff --git a/scripts/verify-plugin-marketplace.mjs b/scripts/verify-plugin-marketplace.mjs index 5a66ef3..1655adc 100644 --- a/scripts/verify-plugin-marketplace.mjs +++ b/scripts/verify-plugin-marketplace.mjs @@ -47,13 +47,13 @@ const packages = { extensionPath: "com.github.copilot/extensions/azure-sre-agent", receipt: "canvases/azure-sre-agent/SHA256SUMS", }, - "azure-storage-canvas": { - path: "canvases/azure-storage-canvas", + "azure-storage": { + path: "canvases/azure-storage", manifest: ".github/plugin/plugin.json", - skills: ["./skills/azure-storage-canvas/"], - extension: "azure-storage-canvas", - extensionPath: "com.github.copilot/extensions/azure-storage-canvas", - receipt: "canvases/azure-storage-canvas/SHA256SUMS", + skills: ["./skills/azure-storage/"], + extension: "azure-storage", + extensionPath: "com.github.copilot/extensions/azure-storage", + receipt: "canvases/azure-storage/SHA256SUMS", }, "containers": { path: "canvases/containers", @@ -350,36 +350,11 @@ export function verifyMarketplace(manifest, { candidate = false } = {}) { } const costCommit = git("rev-parse", "azure-cost-health-check-v0-4-3-b355172^{commit}"); verifySubsequentReleaseCommit(commits[0], costCommit); - const pairedTags = pairedCanvasProducts.map((name) => - releaseTagFor(name, marketplaceVersion(manifest, name), { allowMissing: candidate })); - if (pairedTags.some(Boolean) && !pairedTags.every(Boolean)) { - throw new Error("Paired canvas releases must both be candidates or both have immutable tags"); - } - const pairedCommits = pairedTags.every(Boolean) - ? pairedTags.map((tag) => git("rev-parse", `${tag}^{commit}`)) - : []; - if (pairedCommits.length) { - const canvasCommits = pairedCommits; - if (new Set(canvasCommits).size !== 1) { - throw new Error("New canvas release tags must point to the same reviewed merge commit"); - } - verifySubsequentReleaseCommit(costCommit, canvasCommits[0]); - } - const currentCostTag = releaseTagFor( - "azure-cost-health-check", - marketplaceVersion(manifest, "azure-cost-health-check"), - { allowMissing: candidate }, - ); - if (currentCostTag) { - if (!pairedCommits.length) { - throw new Error("Cost Health cannot be published before the paired canvas releases"); - } - verifySubsequentReleaseCommit( - pairedCommits[0], - git("rev-parse", `${currentCostTag}^{commit}`), - ); - } else if (pairedCommits.length) { - verifySubsequentReleaseCommit(pairedCommits[0], "HEAD"); + for (const name of [...pairedCanvasProducts, "azure-cost-health-check"]) { + const tag = releaseTagFor(name, marketplaceVersion(manifest, name), + { allowMissing: candidate }); + const commit = tag ? git("rev-parse", `${tag}^{commit}`) : git("rev-parse", "HEAD"); + if (commit !== costCommit) verifySubsequentReleaseCommit(costCommit, commit); } } return results; diff --git a/test/fixtures/marketplace.candidate.json b/test/fixtures/marketplace.candidate.json index a309481..04e69a6 100644 --- a/test/fixtures/marketplace.candidate.json +++ b/test/fixtures/marketplace.candidate.json @@ -6,37 +6,30 @@ "plugins": [ { "name": "azure-functions-hosted-skills", - "version": "0.5.5", "source": "canvases/azure-functions-hosted-skills" }, { "name": "azure-resources-query", - "version": "0.1.6", "source": "canvases/azure-resources-query" }, { "name": "canvas-authoring", - "version": "0.1.2", "source": "plugins/canvas-authoring" }, { "name": "azure-cost-health-check", - "version": "0.4.5", "source": "canvases/azure-cost-health-check" }, { "name": "azure-sre-agent", - "version": "0.2.7", "source": "canvases/azure-sre-agent" }, { - "name": "azure-storage-canvas", - "version": "0.1.1", - "source": "canvases/azure-storage-canvas" + "name": "azure-storage", + "source": "canvases/azure-storage" }, { "name": "containers", - "version": "0.1.1", "source": "canvases/containers" } ] diff --git a/test/plugin-marketplace.test.mjs b/test/plugin-marketplace.test.mjs index c1c6ca9..340b601 100644 --- a/test/plugin-marketplace.test.mjs +++ b/test/plugin-marketplace.test.mjs @@ -29,6 +29,7 @@ import { const fixture = JSON.parse(readFileSync(new URL("./fixtures/marketplace.candidate.json", import.meta.url))); const catalog = JSON.parse(readFileSync(new URL("../.github/plugin/marketplace.json", import.meta.url))); +fixture.plugins = fixture.plugins.map((plugin) => ({ ...plugin, version: versionOf(plugin.name) })); const root = fileURLToPath(new URL("../", import.meta.url)); const verifier = "scripts/verify-plugin-marketplace.mjs"; @@ -58,13 +59,13 @@ test("requires release tags for full verification, then checks every catalog plu assert.ok(results[0].startsWith(`azure-functions-hosted-skills@${versionOf("azure-functions-hosted-skills")} azure-functions-hosted-skills-v`)); assert.ok(results[1].startsWith(`azure-resources-query@${versionOf("azure-resources-query")} azure-resources-query-v`)); assert.ok(results[2].startsWith(`canvas-authoring@${versionOf("canvas-authoring")} canvas-authoring-v`)); - assert.match(results[3], /azure-cost-health-check@0\.4\.5 azure-cost-health-check-v0-4-5-/); - assert.match(results[4], /azure-sre-agent@0\.2\.7 azure-sre-agent-v0-2-7-/); - assert.ok(results[5].startsWith(`azure-storage-canvas@${versionOf("azure-storage-canvas")} azure-storage-canvas-v`)); - assert.equal(results[6], "containers@0.1.1 (candidate; immutable tag pending)"); + assert.ok(results[3].startsWith(`azure-cost-health-check@${versionOf("azure-cost-health-check")} azure-cost-health-check-v`)); + assert.ok(results[4].startsWith(`azure-sre-agent@${versionOf("azure-sre-agent")} azure-sre-agent-v`)); + assert.ok(results[5].startsWith(`azure-storage@${versionOf("azure-storage")} azure-storage-v`)); + assert.ok(results[6].startsWith(`containers@${versionOf("containers")} containers-v`)); }); -test("candidate validates every reviewed package and omits only missing immutable tags", () => { +test("candidate validates independently released products and omits only missing immutable tags", () => { const candidate = modified((m) => { m.name = "azure-dev-tools"; }); const results = verifyMarketplace(candidate, { candidate: true }); assert.equal(results.length, candidate.plugins.length); @@ -75,8 +76,8 @@ test("candidate validates every reviewed package and omits only missing immutabl assert.equal(results[index], `${name}@${version} ${tags[0] ?? "(candidate; immutable tag pending)"}`); } assert.ok(results[2].startsWith(`canvas-authoring@${versionOf("canvas-authoring")} `)); - assert.match(results[4], /azure-sre-agent@0\.2\.7 azure-sre-agent-v0-2-7-9da2e40/); - assert.equal(results[6], "containers@0.1.1 (candidate; immutable tag pending)"); + assert.ok(results[4].startsWith(`azure-sre-agent@${versionOf("azure-sre-agent")} `)); + assert.ok(results[6].startsWith(`containers@${versionOf("containers")} `)); }); test("candidate rejects corrupted protected payloads and checksum receipts", () => { @@ -204,7 +205,9 @@ test("canvas-authoring uses versioned receipts without changing historical recei assert.equal(git("show", `HEAD:${historical}`), git("show", `canvas-authoring-v0-1-1-8af10f8:${historical}`)); assert.doesNotThrow(verify); - assert.throws(() => verify(false), /expected exactly one reviewed immutable release tag/); + const currentTag = git("tag", "-l", `canvas-authoring-v${product.version.replaceAll(".", "-")}-*`); + if (currentTag) assert.doesNotThrow(() => verify(false)); + else assert.throws(() => verify(false), /expected exactly one reviewed immutable release tag/); const receipt = `docs/canvas-authoring/${product.version}/SHA256SUMS`; const original = readFileSync(join(clone, receipt), "utf8"); @@ -212,12 +215,12 @@ test("canvas-authoring uses versioned receipts without changing historical recei !line.endsWith(" com.github.copilot/extensions/canvas-authoring/extension.mjs")).join("\n")); git("add", "--", receipt); git("commit", "--quiet", "-m", "Remove authoring runtime receipt"); - assert.throws(verify, /checksum receipt must cover every protected plugin file exactly once/); + assert.throws(verify, /current checksum receipt differs|checksum receipt must cover every protected plugin file exactly once/); writeFileSync(join(clone, receipt), original.replace( /^[0-9a-f]{64}(?= plugin.json$)/m, "0".repeat(64))); git("add", "--", receipt); git("commit", "--quiet", "-m", "Corrupt authoring manifest receipt"); - assert.throws(verify, /plugin file differs from checksum receipt: plugin.json/); + assert.throws(verify, /current checksum receipt differs|plugin file differs from checksum receipt: plugin.json/); writeFileSync(join(clone, receipt), original); const parts = product.version.split(".").map(Number); @@ -236,6 +239,7 @@ test("canvas-authoring uses versioned receipts without changing historical recei git("add", "--", manifestPath, "docs/canvas-authoring"); git("commit", "--quiet", "-m", "Prepare next authoring receipt"); assert.doesNotThrow(verify); + assert.throws(() => verify(false), /expected exactly one reviewed immutable release tag/); } finally { rmSync(checkout, { recursive: true, force: true }); } diff --git a/test/storage-release.test.mjs b/test/storage-release.test.mjs index bf59aa6..1bd7647 100644 --- a/test/storage-release.test.mjs +++ b/test/storage-release.test.mjs @@ -1,6 +1,6 @@ import assert from "node:assert/strict"; import { execFileSync } from "node:child_process"; -import { mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs"; +import { copyFileSync, mkdtempSync, readFileSync, realpathSync, rmSync, writeFileSync } from "node:fs"; import { tmpdir } from "node:os"; import { join } from "node:path"; import { fileURLToPath } from "node:url"; @@ -12,7 +12,7 @@ import { verifyTagSource, } from "../scripts/verify-plugin-marketplace.mjs"; -const name = "azure-storage-canvas"; +const name = "azure-storage"; const source = `canvases/${name}`; const catalog = JSON.parse(readFileSync( new URL("../.github/plugin/marketplace.json", import.meta.url))); @@ -31,13 +31,13 @@ test("Storage accepts reviewed semantic versions without a fixed version gate", }); test("Storage rejects obsolete identities and noncanonical package sources", () => { - for (const obsolete of ["azure-storage", "azure-storage-explorer"]) { + for (const obsolete of ["azure-storage-canvas", "azure-storage-explorer"]) { assert.throws(() => verifyCurrentVersion(obsolete, "0.1.1"), /expected a reviewed product/); } for (const wrongSource of [ - "plugins/azure-storage-canvas", - "canvases/azure-storage-canvas/src", + `plugins/${name}`, + `${source}/src`, `${source}/com.github.copilot/extensions/${name}`, "canvases/azure-resources-query", { source: "github", repo: "microsoft/azure-dev-tools", path: source, ref: "main" }, @@ -81,7 +81,7 @@ test("the Storage candidate verifies its canonical plugin and protected receipt" const plugin = catalog.plugins.find((entry) => entry.name === name); assert.ok(plugin, "Storage must have a production marketplace entry"); assert.match(verifyPlugin(plugin, { candidate: true }), - /^azure-storage-canvas@\d+\.\d+\.\d+ /); + /^azure-storage@\d+\.\d+\.\d+ /); }); test("Storage rejects changes to its protected runtime, launcher, notices, icon and receipt", () => { @@ -101,6 +101,8 @@ test("Storage rejects changes to its protected runtime, launcher, notices, icon }; try { execFileSync("git", ["clone", "--quiet", "--local", "--no-hardlinks", root, clone]); + copyFileSync(join(root, "scripts/verify-plugin-marketplace.mjs"), + join(clone, "scripts/verify-plugin-marketplace.mjs")); git("config", "user.name", "Storage release policy test"); git("config", "user.email", "release-policy@example.invalid"); assert.doesNotThrow(verify); From 4c79de9af54080008ec96b695305387e65344b8f Mon Sep 17 00:00:00 2001 From: Craig Date: Thu, 29 Oct 2026 12:33:32 -0700 Subject: [PATCH 2/3] Release Azure Storage 0.3.4 candidate Import the exact package built from source merge edf749c0bfb4e11963e53185d4325b2e4941dfb3. Retain the reviewed verifier correction and update only the Storage marketplace entry. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Copilot-Session: 2eadb772-b466-49f1-bcd0-2e2c59791222 --- .github/plugin/marketplace.json | 2 +- .../azure-storage/.github/plugin/plugin.json | 2 +- canvases/azure-storage/README.md | 10 + canvases/azure-storage/SHA256SUMS | 22 +-- .../azure-storage/THIRD_PARTY_NOTICES.txt | 185 +++++++++++++++++- canvases/azure-storage/checksums.json | 20 +- .../extensions/azure-storage/extension.mjs | 10 +- .../extensions/azure-storage/sdk/blob.mjs | 30 +-- .../extensions/azure-storage/sdk/file.mjs | 32 +-- .../extensions/azure-storage/sdk/queue.mjs | 32 +-- .../extensions/azure-storage/sdk/tables.mjs | 30 +-- .../azure-storage/studio-package.json | 2 +- canvases/azure-storage/package.json | 2 +- canvases/azure-storage/release.json | 50 ++++- 14 files changed, 330 insertions(+), 99 deletions(-) diff --git a/.github/plugin/marketplace.json b/.github/plugin/marketplace.json index 258ce33..c3aac0c 100644 --- a/.github/plugin/marketplace.json +++ b/.github/plugin/marketplace.json @@ -41,7 +41,7 @@ { "name": "azure-storage", "description": "Azure Storage canvas — browse blobs and containers, bulk transfer with live progress, filter with aggregate statistics, mint and open SAS links, preview blobs, and plan account to account copies, all agent-drivable on one live surface.", - "version": "0.3.2", + "version": "0.3.4", "source": "canvases/azure-storage" }, { diff --git a/canvases/azure-storage/.github/plugin/plugin.json b/canvases/azure-storage/.github/plugin/plugin.json index 3c3e2ed..b74a566 100644 --- a/canvases/azure-storage/.github/plugin/plugin.json +++ b/canvases/azure-storage/.github/plugin/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "azure-storage", - "version": "0.3.2", + "version": "0.3.4", "description": "Azure Storage canvas — browse blobs and containers, bulk transfer with live progress, filter with aggregate statistics, mint and open SAS links, preview blobs, and plan account to account copies, all agent-drivable on one live surface.", "extensions": { "com.github.copilot": { diff --git a/canvases/azure-storage/README.md b/canvases/azure-storage/README.md index 888a993..7c87820 100644 --- a/canvases/azure-storage/README.md +++ b/canvases/azure-storage/README.md @@ -45,6 +45,16 @@ Copilot can operate the same controls you see. Ask it to open an account, open a Live mode uses the Azure CLI and your existing `az login`. The canvas reads storage with your own sign in and never starts a sign in for you. Every mutating action runs only from an explicit action on the canvas. +## Usage data + +Usage telemetry is enabled by default to help improve this plugin. It sends +basic usage data and, when available, your numeric GitHub user ID to the +[usage metrics service](https://canvas-metrics-pilot-0b8944-add3hsghhddcbxe9.b01.azurefd.net/api/events). +Prompts, tool inputs/outputs and credentials are excluded. + +You can [disable usage telemetry](https://github.com/microsoft/azure-dev-tools#disable-usage-telemetry). +Copilot's own telemetry is separate. + ## Troubleshooting - **Canvas unavailable:** check that the plugin is enabled, reload extensions, diff --git a/canvases/azure-storage/SHA256SUMS b/canvases/azure-storage/SHA256SUMS index 2d16ce9..dd72a75 100644 --- a/canvases/azure-storage/SHA256SUMS +++ b/canvases/azure-storage/SHA256SUMS @@ -1,14 +1,14 @@ -3a262e33c0e21381bd1a4f51edb8ffaf6d823d3a1516e4ef510ca3aff95da9b0 .github/plugin/plugin.json -a813071223c79d70046ffde6cd6de1d52eecf7b7b3ce174a3e1bcb2c2ebb283d THIRD_PARTY_NOTICES.txt +9927e0bd5952bbefd08f86205c03ae55d9f897008858a6a8f8c3e2183455c07e .github/plugin/plugin.json +b4fef38ef30992d6f6d712dba946d1b210a5fc49ae336031383b2abd3b767b61 THIRD_PARTY_NOTICES.txt 5fb6a9018aecd7aede2a8937f78d81867bf00c5550f30ab071d158b3852ccaca assets/preview.png -122366309ceaa49cae3a1fad71798502bb0587e31ad50e1746ad8af8e7608a77 checksums.json -45fcd18ae09de9b5542e7a113556482105da42419b1c603fcc69ace3be1a55b4 com.github.copilot/extensions/azure-storage/extension.mjs -f7d102239138f46038f9fbbc576d6a34e2f03370f27c282dc7b59dbe470f791d com.github.copilot/extensions/azure-storage/sdk/blob.mjs -88d23b0a1a226385486aade505b086c7bf524ef0bd5b031bac4df0351e8a20f6 com.github.copilot/extensions/azure-storage/sdk/file.mjs +e08549fe6ebac362ce46e5fd1a6d58f62edbcc355016ad2375613959c171ba3f checksums.json +b87bda91f5a1c94fc2e24f720a08ad658e5c5f99d4a06e18a96d6dff8db25486 com.github.copilot/extensions/azure-storage/extension.mjs +cff249e28b2ef357d14edc55fdd2114aa779c7495bb96907fb3f313b5daf663b com.github.copilot/extensions/azure-storage/sdk/blob.mjs +330a7d4b5981befd073d2cec9f585bad5ebb4d2b70481e574638988d9b470205 com.github.copilot/extensions/azure-storage/sdk/file.mjs fa0526b9488b0e797bfa79044b632edb53483e9e2dc12fe672d093bfb9ace670 com.github.copilot/extensions/azure-storage/sdk/identity.mjs -6553c36dad97992722dd5d1320889ec09038847c31f2a04cf8756930f725c169 com.github.copilot/extensions/azure-storage/sdk/queue.mjs -cf4b43961f200d9d73f1158aa28b628863274d33e66f53457afa7f6a16562202 com.github.copilot/extensions/azure-storage/sdk/tables.mjs -5520dc6cc7535a61cae0fe0c5764746837e96ecc5a431b360deca6d2534d0f3f com.github.copilot/extensions/azure-storage/studio-package.json -be4affe6bd79ceb663389d03dc47fc1e55a8223d7075b370dc0f78853825faaf package.json -e534abc17ed846674eeb89b13b1bf1da5efa3aad6e35fbc0fa9454b12eec118b release.json +a91188c1fceff10c99f56c449d8fcf51838c490dde8e5a4428f4615eadc25cb9 com.github.copilot/extensions/azure-storage/sdk/queue.mjs +f966bf90f48c5b4c18113d0ab9737ac6b1a43f42e4b629ba01ee9b6bf68999ae com.github.copilot/extensions/azure-storage/sdk/tables.mjs +0840cdcf2f35276ebc70565f2391a2f2802c5995bf305dee9a045010bd7dc6c1 com.github.copilot/extensions/azure-storage/studio-package.json +91cf6351223e40541ebea1c0a93dd3b2a807cd65c7282516449b10a8db3ebf9c package.json +701c323280691759a957147a3068be3c01f396e36189bdae7164489326b10e4a release.json 27a2fce06a96abfd4a76405a78ff80b3be2cacf50f9dd4bde49649cfea84942f skills/azure-storage/SKILL.md diff --git a/canvases/azure-storage/THIRD_PARTY_NOTICES.txt b/canvases/azure-storage/THIRD_PARTY_NOTICES.txt index 0e7c615..6ac2f09 100644 --- a/canvases/azure-storage/THIRD_PARTY_NOTICES.txt +++ b/canvases/azure-storage/THIRD_PARTY_NOTICES.txt @@ -598,6 +598,37 @@ SOFTWARE. -------------------- +@nodable/entities@3.1.0 +License: MIT +Notice source: reviewed text supplied by this repository (Publishes no licence file; MIT text taken from nodable/val-parsers, the repository the package declares.) + +-------------------- + +nodable-entities-LICENSE.txt +MIT License + +Copyright (c) 2026 Nodable + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------- + @typespec/ts-http-runtime@0.3.9 License: MIT @@ -659,6 +690,36 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. -------------------- +anynum@1.0.1 +License: MIT + +-------------------- + +LICENSE +MIT License + +Copyright (c) 2026 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------- + buffer-equal-constant-time@1.0.1 License: BSD-3-Clause @@ -990,7 +1051,37 @@ Apache License -------------------- -fast-xml-parser@4.5.3 +fast-xml-builder@1.3.1 +License: MIT + +-------------------- + +LICENSE +MIT License + +Copyright (c) 2026 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------- + +fast-xml-parser@5.11.2 License: MIT -------------------- @@ -1136,6 +1227,36 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI -------------------- +is-unsafe@2.0.2 +License: MIT + +-------------------- + +LICENSE +MIT License + +Copyright (c) 2026 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------- + is-wsl@3.1.1 License: MIT @@ -1601,6 +1722,36 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI -------------------- +path-expression-matcher@1.6.2 +License: MIT + +-------------------- + +LICENSE +MIT License + +Copyright (c) 2024 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + +-------------------- + run-applescript@7.1.0 License: MIT @@ -1673,7 +1824,7 @@ IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. -------------------- -strnum@1.1.2 +strnum@2.5.1 License: MIT -------------------- @@ -1736,3 +1887,33 @@ Permission is hereby granted, free of charge, to any person obtaining a copy of The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +-------------------- + +xml-naming@0.3.0 +License: MIT + +-------------------- + +LICENSE +MIT License + +Copyright (c) 2026 Natural Intelligence + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/canvases/azure-storage/checksums.json b/canvases/azure-storage/checksums.json index d6af1d2..93bf902 100644 --- a/canvases/azure-storage/checksums.json +++ b/canvases/azure-storage/checksums.json @@ -1,15 +1,15 @@ { - ".github/plugin/plugin.json": "3a262e33c0e21381bd1a4f51edb8ffaf6d823d3a1516e4ef510ca3aff95da9b0", + ".github/plugin/plugin.json": "9927e0bd5952bbefd08f86205c03ae55d9f897008858a6a8f8c3e2183455c07e", "assets/preview.png": "5fb6a9018aecd7aede2a8937f78d81867bf00c5550f30ab071d158b3852ccaca", - "com.github.copilot/extensions/azure-storage/extension.mjs": "45fcd18ae09de9b5542e7a113556482105da42419b1c603fcc69ace3be1a55b4", - "com.github.copilot/extensions/azure-storage/sdk/blob.mjs": "f7d102239138f46038f9fbbc576d6a34e2f03370f27c282dc7b59dbe470f791d", - "com.github.copilot/extensions/azure-storage/sdk/file.mjs": "88d23b0a1a226385486aade505b086c7bf524ef0bd5b031bac4df0351e8a20f6", + "com.github.copilot/extensions/azure-storage/extension.mjs": "b87bda91f5a1c94fc2e24f720a08ad658e5c5f99d4a06e18a96d6dff8db25486", + "com.github.copilot/extensions/azure-storage/sdk/blob.mjs": "cff249e28b2ef357d14edc55fdd2114aa779c7495bb96907fb3f313b5daf663b", + "com.github.copilot/extensions/azure-storage/sdk/file.mjs": "330a7d4b5981befd073d2cec9f585bad5ebb4d2b70481e574638988d9b470205", "com.github.copilot/extensions/azure-storage/sdk/identity.mjs": "fa0526b9488b0e797bfa79044b632edb53483e9e2dc12fe672d093bfb9ace670", - "com.github.copilot/extensions/azure-storage/sdk/queue.mjs": "6553c36dad97992722dd5d1320889ec09038847c31f2a04cf8756930f725c169", - "com.github.copilot/extensions/azure-storage/sdk/tables.mjs": "cf4b43961f200d9d73f1158aa28b628863274d33e66f53457afa7f6a16562202", - "com.github.copilot/extensions/azure-storage/studio-package.json": "5520dc6cc7535a61cae0fe0c5764746837e96ecc5a431b360deca6d2534d0f3f", - "package.json": "be4affe6bd79ceb663389d03dc47fc1e55a8223d7075b370dc0f78853825faaf", - "release.json": "e534abc17ed846674eeb89b13b1bf1da5efa3aad6e35fbc0fa9454b12eec118b", + "com.github.copilot/extensions/azure-storage/sdk/queue.mjs": "a91188c1fceff10c99f56c449d8fcf51838c490dde8e5a4428f4615eadc25cb9", + "com.github.copilot/extensions/azure-storage/sdk/tables.mjs": "f966bf90f48c5b4c18113d0ab9737ac6b1a43f42e4b629ba01ee9b6bf68999ae", + "com.github.copilot/extensions/azure-storage/studio-package.json": "0840cdcf2f35276ebc70565f2391a2f2802c5995bf305dee9a045010bd7dc6c1", + "package.json": "91cf6351223e40541ebea1c0a93dd3b2a807cd65c7282516449b10a8db3ebf9c", + "release.json": "701c323280691759a957147a3068be3c01f396e36189bdae7164489326b10e4a", "skills/azure-storage/SKILL.md": "27a2fce06a96abfd4a76405a78ff80b3be2cacf50f9dd4bde49649cfea84942f", - "THIRD_PARTY_NOTICES.txt": "a813071223c79d70046ffde6cd6de1d52eecf7b7b3ce174a3e1bcb2c2ebb283d" + "THIRD_PARTY_NOTICES.txt": "b4fef38ef30992d6f6d712dba946d1b210a5fc49ae336031383b2abd3b767b61" } diff --git a/canvases/azure-storage/com.github.copilot/extensions/azure-storage/extension.mjs b/canvases/azure-storage/com.github.copilot/extensions/azure-storage/extension.mjs index 8751cae..09751d7 100644 --- a/canvases/azure-storage/com.github.copilot/extensions/azure-storage/extension.mjs +++ b/canvases/azure-storage/com.github.copilot/extensions/azure-storage/extension.mjs @@ -1,12 +1,12 @@ import { createRequire as __canvasCreateRequire } from "node:module"; const require = __canvasCreateRequire(import.meta.url); -var __defProp=Object.defineProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})};import{createCanvas,joinSession}from"@github/copilot-sdk/extension";import os2 from"node:os";import path2 from"node:path";import fs from"node:fs/promises";import{spawn as spawn3}from"node:child_process";import http from"node:http";import{randomBytes}from"node:crypto";var HOST_SESSION_VARIABLE=/^(?:SESSION_ID|(?:COPILOT|AGENCY)_\w*SESSION\w*)$/i;function inheritedCliEnvironment(source=process.env){let env={};for(let[key,value]of Object.entries(source))typeof value=="string"&&!HOST_SESSION_VARIABLE.test(key)&&(env[key]=value);return env}function scrubHostSessionEnv(target=process.env){let removed=[];for(let key of Object.keys(target))target===process.env&&key.toUpperCase()==="SESSION_ID"||HOST_SESSION_VARIABLE.test(key)&&(delete target[key],removed.push(key));return removed}function humanErrorSummary(message,needsAuth=!1,status=""){let text=String(message||"");return/ContainerAlreadyExists|QueueAlreadyExists|TableAlreadyExists|ShareAlreadyExists|ResourceAlreadyExists|already exists/i.test(text)?"That resource already exists. Choose a different name.":/IncorrectConfiguration|AADSTS901001|invalid.*client_session/i.test(text)?"Azure CLI authentication is misconfigured. Check the tenant login in Azure CLI, then retry.":needsAuth||/AADSTS500|please run.*az login|interaction_required|expired.*token/i.test(text)?"Azure access needs sign-in. Use Sign in only if you want to authenticate, then retry.":String(status)==="403"||/HTTP 403|AuthorizationFailed|Forbidden|PermissionMismatch|not authorized/i.test(text)?"Azure denied access. Check your resource permissions, then retry.":String(status)==="429"||/HTTP 429|TooManyRequests/i.test(text)?"Azure is throttling requests. Wait briefly, then retry.":/ETIMEDOUT|ENOTFOUND|ECONNRESET|fetch failed|timed? ?out/i.test(text)?"Azure could not be reached. Check your network connection, then retry.":text.length>240||/[\r\n]|Command failed|cmd\.exe|Traceback|az account get-access-token|ARM (GET|POST)|HTTP \d{3}/i.test(text)?"Azure could not complete the request. Retry, or open the Debug log for diagnostics.":text}function classifyAuthError(message="",code=""){let text=`${message} ${code}`,aadCode=/\bAADSTS(\d{5,7})\b/.exec(text)?.[1]||null;return aadCode==="901001"||/invalid[_ ]request|client_session/i.test(text)?{needsAuth:!1,kind:"invalid-request",aadCode}:/\b403\b|AuthorizationFailed|\bForbidden\b|does not have authorization/i.test(text)?{needsAuth:!1,kind:"permission",aadCode}:/\b429\b|TooManyRequests|throttl/i.test(text)?{needsAuth:!1,kind:"throttled",aadCode}:/\b401\b|CredentialUnavailable|DefaultAzureCredential|az login|not (?:logged|signed) in|AADSTS(?:50076|50079|50078|50158|65001|700082|70043|50173)|\bcredential\b/i.test(text)?{needsAuth:!0,kind:"needs-auth",aadCode}:aadCode||/authenticat/i.test(text)?{needsAuth:!0,kind:"needs-auth",aadCode}:{needsAuth:!1,kind:"other",aadCode}}function cspHeader(nonce){return["default-src 'none'",`script-src 'nonce-${nonce}'`,"style-src 'unsafe-inline'","img-src 'self' data:","connect-src 'self'","font-src 'self'","base-uri 'none'","form-action 'none'","frame-ancestors 'none'"].join("; ")}var MAX_BODY=100*1024*1024;function isLoopbackHost(hostHeader){if(!hostHeader)return!1;let h=String(hostHeader).toLowerCase(),host=h.startsWith("[")?h.slice(0,h.indexOf("]")+1):h.split(":")[0];return host==="127.0.0.1"||host==="localhost"||host==="[::1]"||host==="::1"}function sameOriginLoopback(req){if(!isLoopbackHost(req.headers.host))return!1;let origin=req.headers.origin;if(origin)try{if(!isLoopbackHost(new URL(origin).host))return!1}catch{return!1}return!0}function createCanvasServer({html,routes={},media=null,initialState={},port=0}={}){let state={activityLog:[],s_entitiesRevision:0,...initialState},clients=new Set;function broadcast(entitiesChanged){let update={...state};entitiesChanged||(delete update.s_entities,update.s_entitiesUnchanged=!0);let data=`data: ${JSON.stringify(update)} +var __defProp=Object.defineProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})};import{createCanvas,joinSession}from"@github/copilot-sdk/extension";import os2 from"node:os";import path3 from"node:path";import fs from"node:fs/promises";import{spawn as spawn3}from"node:child_process";import http from"node:http";import{randomBytes}from"node:crypto";var HOST_SESSION_VARIABLE=/^(?:SESSION_ID|(?:COPILOT|AGENCY)_\w*SESSION\w*)$/i;function inheritedCliEnvironment(source=process.env){let env={};for(let[key,value]of Object.entries(source))typeof value=="string"&&!HOST_SESSION_VARIABLE.test(key)&&(env[key]=value);return env}function scrubHostSessionEnv(target=process.env){let removed=[];for(let key of Object.keys(target))target===process.env&&key.toUpperCase()==="SESSION_ID"||HOST_SESSION_VARIABLE.test(key)&&(delete target[key],removed.push(key));return removed}function humanErrorSummary(message,needsAuth=!1,status=""){let text=String(message||"");return/ContainerAlreadyExists|QueueAlreadyExists|TableAlreadyExists|ShareAlreadyExists|ResourceAlreadyExists|already exists/i.test(text)?"That resource already exists. Choose a different name.":/IncorrectConfiguration|AADSTS901001|invalid.*client_session/i.test(text)?"Azure CLI authentication is misconfigured. Check the tenant login in Azure CLI, then retry.":needsAuth||/AADSTS500|please run.*az login|interaction_required|expired.*token/i.test(text)?"Azure access needs sign-in. Use Sign in only if you want to authenticate, then retry.":String(status)==="403"||/HTTP 403|AuthorizationFailed|Forbidden|PermissionMismatch|not authorized/i.test(text)?"Azure denied access. Check your resource permissions, then retry.":String(status)==="429"||/HTTP 429|TooManyRequests/i.test(text)?"Azure is throttling requests. Wait briefly, then retry.":/ETIMEDOUT|ENOTFOUND|ECONNRESET|fetch failed|timed? ?out/i.test(text)?"Azure could not be reached. Check your network connection, then retry.":text.length>240||/[\r\n]|Command failed|cmd\.exe|Traceback|az account get-access-token|ARM (GET|POST)|HTTP \d{3}/i.test(text)?"Azure could not complete the request. Retry, or open the Debug log for diagnostics.":text}function classifyAuthError(message="",code=""){let text=`${message} ${code}`,aadCode=/\bAADSTS(\d{5,7})\b/.exec(text)?.[1]||null;return aadCode==="901001"||/invalid[_ ]request|client_session/i.test(text)?{needsAuth:!1,kind:"invalid-request",aadCode}:/\b403\b|AuthorizationFailed|\bForbidden\b|does not have authorization/i.test(text)?{needsAuth:!1,kind:"permission",aadCode}:/\b429\b|TooManyRequests|throttl/i.test(text)?{needsAuth:!1,kind:"throttled",aadCode}:/\b401\b|CredentialUnavailable|DefaultAzureCredential|az login|not (?:logged|signed) in|AADSTS(?:50076|50079|50078|50158|65001|700082|70043|50173)|\bcredential\b/i.test(text)?{needsAuth:!0,kind:"needs-auth",aadCode}:aadCode||/authenticat/i.test(text)?{needsAuth:!0,kind:"needs-auth",aadCode}:{needsAuth:!1,kind:"other",aadCode}}function cspHeader(nonce){return["default-src 'none'",`script-src 'nonce-${nonce}'`,"style-src 'unsafe-inline'","img-src 'self' data:","connect-src 'self'","font-src 'self'","base-uri 'none'","form-action 'none'","frame-ancestors 'none'"].join("; ")}var MAX_BODY=100*1024*1024;function isLoopbackHost(hostHeader){if(!hostHeader)return!1;let h=String(hostHeader).toLowerCase(),host=h.startsWith("[")?h.slice(0,h.indexOf("]")+1):h.split(":")[0];return host==="127.0.0.1"||host==="localhost"||host==="[::1]"||host==="::1"}function sameOriginLoopback(req){if(!isLoopbackHost(req.headers.host))return!1;let origin=req.headers.origin;if(origin)try{if(!isLoopbackHost(new URL(origin).host))return!1}catch{return!1}return!0}function createCanvasServer({html,routes={},media=null,initialState={},port=0}={}){let state={activityLog:[],s_entitiesRevision:0,...initialState},clients=new Set;function broadcast(entitiesChanged){let update={...state};entitiesChanged||(delete update.s_entities,update.s_entitiesUnchanged=!0);let data=`data: ${JSON.stringify(update)} `;for(let res of clients)try{res.write(data)}catch{}}function setState(patch){let entitiesChanged=Object.hasOwn(patch,"s_entities");state={...state,...patch,s_entitiesRevision:(state.s_entitiesRevision||0)+Number(entitiesChanged)},broadcast(entitiesChanged)}function getState(){return state}function log(msg){let line=`[${new Date().toLocaleTimeString()}] ${msg}`,activityLog=[...state.activityLog||[],line].slice(-200);setState({activityLog})}let ctx={getState,setState,log},server2=http.createServer(async(req,res)=>{if(req.method==="GET"&&req.url==="/events"){res.writeHead(200,{"Content-Type":"text/event-stream","Cache-Control":"no-cache",Connection:"keep-alive"}),res.write(`data: ${JSON.stringify(state)} -`),clients.add(res),req.on("close",()=>clients.delete(res));return}if(req.method==="GET"&&(req.url==="/"||req.url.startsWith("/?"))){let nonce=randomBytes(16).toString("base64");res.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Content-Security-Policy":cspHeader(nonce),"X-Content-Type-Options":"nosniff","Referrer-Policy":"no-referrer"}),res.end(typeof html=="function"?html(nonce):String(html||""));return}if(req.method==="GET"&&media&&req.url!=="/"&&!req.url.startsWith("/?")){let u=new URL(req.url,"http://127.0.0.1"),out=null;try{out=await media(u.pathname,u.searchParams,ctx)}catch(err){res.writeHead(500,{"Content-Type":"text/plain"}),res.end(String(err?.message||err));return}if(out&&out.buffer){res.writeHead(200,{"Content-Type":out.contentType||"application/octet-stream","Cache-Control":"no-store"}),res.end(out.buffer);return}}if(req.method==="POST"){if(!sameOriginLoopback(req)){res.writeHead(403,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"cross-origin request blocked"}));return}let path3=req.url.split("?")[0],handler=routes[path3];if(!handler){res.writeHead(404,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"no route "+path3}));return}let body="",tooLarge=!1;req.on("data",c=>{tooLarge||(body+=c,body.length>MAX_BODY&&(tooLarge=!0,res.writeHead(413,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"request body too large"})),req.destroy()))}),req.on("end",async()=>{if(tooLarge)return;let payload;try{payload=body?JSON.parse(body):{}}catch{res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"malformed JSON body"}));return}try{let out=await handler(payload,ctx);res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify(out??{ok:!0}))}catch(err){res.writeHead(500,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:String(err?.message||err)}))}});return}res.writeHead(404),res.end()});return new Promise(resolve=>{server2.listen(port,"127.0.0.1",()=>{let port2=server2.address().port;resolve({port:port2,url:`http://127.0.0.1:${port2}`,getState,setState,log,close:()=>{for(let res of clients)try{res.end()}catch{}clients.clear(),server2.close()}})})})}async function safe(fn){try{return{ok:!0,data:await fn()}}catch(err){let msg=String(err?.message||err),code=String(err?.code||err?.statusCode||""),{needsAuth,kind}=classifyAuthError(msg,code);return{ok:!1,error:msg,needsAuth,authKind:kind}}}var azure_exports={};__export(azure_exports,{accountMeta:()=>accountMeta,blobSize:()=>blobSize,clearQueueMessages:()=>clearQueueMessages,collectBlobs:()=>collectBlobs,createContainer:()=>createContainer,createQueue:()=>createQueue,createShare:()=>createShare,createShareDirectory:()=>createShareDirectory,createTable:()=>createTable,credential:()=>credential,deleteBlob:()=>deleteBlob,deleteContainer:()=>deleteContainer,deleteEntity:()=>deleteEntity,deleteQueue:()=>deleteQueue,deleteQueueMessage:()=>deleteQueueMessage,deleteShare:()=>deleteShare,deleteShareItem:()=>deleteShareItem,deleteTable:()=>deleteTable,discoveryFailure:()=>discoveryFailure,downloadBlob:()=>downloadBlob,downloadSasBlob:()=>downloadSasBlob,downloadShareFile:()=>downloadShareFile,ensureAccountMeta:()=>ensureAccountMeta,generateBlobSas:()=>generateBlobSas,generateContainerSas:()=>generateContainerSas,getAccountConfig:()=>getAccountConfig,listBlobDirectory:()=>listBlobDirectory,listBlobs:()=>listBlobs,listContainers:()=>listContainers,listQueues:()=>listQueues,listSasBlobs:()=>listSasBlobs,listShareItems:()=>listShareItems,listShares:()=>listShares,listStorageAccounts:()=>listStorageAccounts,listStorageAccountsForSubs:()=>listStorageAccountsForSubs,listStoragePage:()=>listStoragePage,listSubscriptions:()=>listSubscriptions,listTables:()=>listTables,listTenantSubscriptions:()=>listTenantSubscriptions,listTenants:()=>listTenants,openInStorageExplorer:()=>openInStorageExplorer,peekQueueMessages:()=>peekQueueMessages,queryTableEntities:()=>queryTableEntities,registerAccountContext:()=>registerAccountContext,requireNewResource:()=>requireNewResource,resetTokenCache:()=>resetTokenCache,resolveBlobService:()=>resolveBlobService,resolveQueueService:()=>resolveQueueService,resolveShareService:()=>resolveShareService,resolveTableService:()=>resolveTableService,sendQueueMessage:()=>sendQueueMessage,setBlobTier:()=>setBlobTier,signIn:()=>signIn,storageCredential:()=>storageCredential,storageExplorerDeepLink:()=>storageExplorerDeepLink,storageExplorerInstalled:()=>storageExplorerInstalled,storagePage:()=>storagePage,tokenFor:()=>tokenFor,updateQueueMessage:()=>updateQueueMessage,uploadBlob:()=>uploadBlob,uploadShareFile:()=>uploadShareFile,upsertEntity:()=>upsertEntity,warmup:()=>warmup});import{execFile,spawn,spawnSync}from"node:child_process";import{createHash}from"node:crypto";import{accessSync,constants,readFileSync}from"node:fs";import{cp,lstat,mkdir,mkdtemp,readFile,readdir,rename,rm,stat,writeFile}from"node:fs/promises";import os from"node:os";import path from"node:path";import{fileURLToPath}from"node:url";function resolveStudioRoot(moduleUrl){let directory=path.dirname(fileURLToPath(moduleUrl)),candidates=path.basename(directory)==="src"?[directory,path.dirname(directory)]:[directory];for(let candidate of candidates)for(let metadata of["studio-package.json","package.json"])try{return accessSync(path.join(candidate,metadata)),candidate}catch(error){if(error.code!=="ENOENT")throw error}throw new Error(`Missing canvas package metadata for ${moduleUrl}`)}function resolveStudioBuildInfo(moduleUrl,fallbackVersion="unknown"){let version=fallbackVersion,revision="unknown";try{let manifest;try{manifest=readFileSync(new URL("./studio-package.json",moduleUrl),"utf8")}catch(error){if(error.code!=="ENOENT")throw error;manifest=readFileSync(path.join(resolveStudioRoot(moduleUrl),"package.json"),"utf8")}version=JSON.parse(manifest).version||fallbackVersion}catch{}try{revision=createHash("sha256").update(readFileSync(new URL(moduleUrl))).digest("hex").slice(0,10)}catch{}return{version,revision}}var ICONS={vscode:'',github:'',azure:''},COMMAND_BUTTONS=` +`),clients.add(res),req.on("close",()=>clients.delete(res));return}if(req.method==="GET"&&(req.url==="/"||req.url.startsWith("/?"))){let nonce=randomBytes(16).toString("base64");res.writeHead(200,{"Content-Type":"text/html; charset=utf-8","Content-Security-Policy":cspHeader(nonce),"X-Content-Type-Options":"nosniff","Referrer-Policy":"no-referrer"}),res.end(typeof html=="function"?html(nonce):String(html||""));return}if(req.method==="GET"&&media&&req.url!=="/"&&!req.url.startsWith("/?")){let u=new URL(req.url,"http://127.0.0.1"),out=null;try{out=await media(u.pathname,u.searchParams,ctx)}catch(err){res.writeHead(500,{"Content-Type":"text/plain"}),res.end(String(err?.message||err));return}if(out&&out.buffer){res.writeHead(200,{"Content-Type":out.contentType||"application/octet-stream","Cache-Control":"no-store"}),res.end(out.buffer);return}}if(req.method==="POST"){if(!sameOriginLoopback(req)){res.writeHead(403,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"cross-origin request blocked"}));return}let path4=req.url.split("?")[0],handler=routes[path4];if(!handler){res.writeHead(404,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"no route "+path4}));return}let body="",tooLarge=!1;req.on("data",c=>{tooLarge||(body+=c,body.length>MAX_BODY&&(tooLarge=!0,res.writeHead(413,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"request body too large"})),req.destroy()))}),req.on("end",async()=>{if(tooLarge)return;let payload;try{payload=body?JSON.parse(body):{}}catch{res.writeHead(400,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:"malformed JSON body"}));return}try{let source=req.headers["x-storage-invocation-source"]==="model"?"model":"panel",out=await handler(payload,ctx,source);res.writeHead(200,{"Content-Type":"application/json"}),res.end(JSON.stringify(out??{ok:!0}))}catch(err){res.writeHead(500,{"Content-Type":"application/json"}),res.end(JSON.stringify({ok:!1,error:String(err?.message||err)}))}});return}res.writeHead(404),res.end()});return new Promise(resolve=>{server2.listen(port,"127.0.0.1",()=>{let port2=server2.address().port;resolve({port:port2,url:`http://127.0.0.1:${port2}`,getState,setState,log,close:()=>{for(let res of clients)try{res.end()}catch{}clients.clear(),server2.close()}})})})}async function safe(fn){try{return{ok:!0,data:await fn()}}catch(err){let msg=String(err?.message||err),code=String(err?.code||err?.statusCode||""),{needsAuth,kind}=classifyAuthError(msg,code);return{ok:!1,error:msg,needsAuth,authKind:kind}}}var azure_exports={};__export(azure_exports,{accountMeta:()=>accountMeta,blobSize:()=>blobSize,clearQueueMessages:()=>clearQueueMessages,collectBlobs:()=>collectBlobs,createContainer:()=>createContainer,createQueue:()=>createQueue,createShare:()=>createShare,createShareDirectory:()=>createShareDirectory,createTable:()=>createTable,credential:()=>credential,deleteBlob:()=>deleteBlob,deleteContainer:()=>deleteContainer,deleteEntity:()=>deleteEntity,deleteQueue:()=>deleteQueue,deleteQueueMessage:()=>deleteQueueMessage,deleteShare:()=>deleteShare,deleteShareItem:()=>deleteShareItem,deleteTable:()=>deleteTable,discoveryFailure:()=>discoveryFailure,downloadBlob:()=>downloadBlob,downloadSasBlob:()=>downloadSasBlob,downloadShareFile:()=>downloadShareFile,ensureAccountMeta:()=>ensureAccountMeta,generateBlobSas:()=>generateBlobSas,generateContainerSas:()=>generateContainerSas,getAccountConfig:()=>getAccountConfig,listBlobDirectory:()=>listBlobDirectory,listBlobs:()=>listBlobs,listContainers:()=>listContainers,listQueues:()=>listQueues,listSasBlobs:()=>listSasBlobs,listShareItems:()=>listShareItems,listShares:()=>listShares,listStorageAccounts:()=>listStorageAccounts,listStorageAccountsForSubs:()=>listStorageAccountsForSubs,listStoragePage:()=>listStoragePage,listSubscriptions:()=>listSubscriptions,listTables:()=>listTables,listTenantSubscriptions:()=>listTenantSubscriptions,listTenants:()=>listTenants,openInStorageExplorer:()=>openInStorageExplorer,peekQueueMessages:()=>peekQueueMessages,queryTableEntities:()=>queryTableEntities,registerAccountContext:()=>registerAccountContext,requireNewResource:()=>requireNewResource,resetTokenCache:()=>resetTokenCache,resolveBlobService:()=>resolveBlobService,resolveQueueService:()=>resolveQueueService,resolveShareService:()=>resolveShareService,resolveTableService:()=>resolveTableService,sendQueueMessage:()=>sendQueueMessage,setBlobTier:()=>setBlobTier,signIn:()=>signIn,storageCredential:()=>storageCredential,storageExplorerDeepLink:()=>storageExplorerDeepLink,storageExplorerInstalled:()=>storageExplorerInstalled,storagePage:()=>storagePage,tokenFor:()=>tokenFor,updateQueueMessage:()=>updateQueueMessage,uploadBlob:()=>uploadBlob,uploadShareFile:()=>uploadShareFile,upsertEntity:()=>upsertEntity,warmup:()=>warmup});import{execFile,spawn,spawnSync}from"node:child_process";import{createHash}from"node:crypto";import{accessSync,constants,readFileSync}from"node:fs";import{cp,lstat,mkdir,mkdtemp,readFile,readdir,rename,rm,stat,writeFile}from"node:fs/promises";import os from"node:os";import path from"node:path";import{fileURLToPath}from"node:url";function resolveStudioRoot(moduleUrl){let directory=path.dirname(fileURLToPath(moduleUrl)),candidates=path.basename(directory)==="src"?[directory,path.dirname(directory)]:[directory];for(let candidate of candidates)for(let metadata of["studio-package.json","package.json"])try{return accessSync(path.join(candidate,metadata)),candidate}catch(error){if(error.code!=="ENOENT")throw error}throw new Error(`Missing canvas package metadata for ${moduleUrl}`)}function resolveStudioBuildInfo(moduleUrl,fallbackVersion="unknown"){let version=fallbackVersion,revision="unknown";try{let manifest;try{manifest=readFileSync(new URL("./studio-package.json",moduleUrl),"utf8")}catch(error){if(error.code!=="ENOENT")throw error;manifest=readFileSync(path.join(resolveStudioRoot(moduleUrl),"package.json"),"utf8")}version=JSON.parse(manifest).version||fallbackVersion}catch{}try{revision=createHash("sha256").update(readFileSync(new URL(moduleUrl))).digest("hex").slice(0,10)}catch{}return{version,revision}}var ICONS={vscode:'',github:'',azure:''},COMMAND_BUTTONS=` - `;function canExecuteCommand(file,osName=os.platform()){try{return accessSync(file,osName==="win32"?constants.F_OK:constants.X_OK),!0}catch{return!1}}var WINDOWS_COMMAND_META_CHARACTERS=/([()\][%!^"`<>&|;, *?])/g;function escapeWindowsCommandMetaCharacters(value){return value.replace(WINDOWS_COMMAND_META_CHARACTERS,"^$1")}function assertWindowsCommandValue(value){let text=String(value);if(/[\r\n]/.test(text))throw new Error("Command arguments contain unsupported Windows command characters.");return text}function escapeWindowsCommand(value){return escapeWindowsCommandMetaCharacters(assertWindowsCommandValue(value))}function quoteWindowsCommandArgument(value){let text=assertWindowsCommandValue(value);return text=text.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),text=text.replace(/(?=(\\+?)?)\1$/,"$1$1"),escapeWindowsCommandMetaCharacters(`"${text}"`)}function windowsCommandShellLine(command,args=[]){return`"${[escapeWindowsCommand(command),...args.map(quoteWindowsCommandArgument)].join(" ")}"`}function spawnSpecForLocated(located,args,env,osName){return osName==="win32"&&/\.(?:cmd|bat)$/i.test(located.path)?{file:env.ComSpec||env.COMSPEC||path.win32.join(env.SystemRoot||env.SYSTEMROOT||"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",windowsCommandShellLine(located.path,args)],env,located,windowsVerbatimArguments:!0}:{file:located.path,args:[...args],env,located,windowsVerbatimArguments:!1}}var AZURE_CLI_ENV_KEYS=["HOME","USER","LOGNAME","TMPDIR","LANG","LC_ALL","SHELL","USERPROFILE","HOMEDRIVE","HOMEPATH","SystemRoot","SYSTEMROOT","TEMP","TMP","ComSpec","COMSPEC","PATHEXT","AZURE_CONFIG_DIR","XDG_CONFIG_HOME","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","REQUESTS_CA_BUNDLE","CURL_CA_BUNDLE","SSL_CERT_FILE","SSL_CERT_DIR","AZURE_CLI_DISABLE_CONNECTION_VERIFICATION"];function sourcePath(source){return source.PATH||source.Path||source.path||""}function locateAzureCli(source=process.env,osName=os.platform(),exists=candidate=>canExecuteCommand(candidate,osName)){let paths=osName==="win32"?path.win32:path.posix,inherited=sourcePath(source).split(paths.delimiter).filter(Boolean),home=source.HOME||source.USERPROFILE||os.homedir(),known=osName==="win32"?[paths.join(source.ProgramFiles||"C:\\Program Files","Microsoft SDKs","Azure","CLI2","wbin"),paths.join(source["ProgramFiles(x86)"]||"C:\\Program Files (x86)","Microsoft SDKs","Azure","CLI2","wbin")]:["/opt/homebrew/bin","/usr/local/bin","/opt/local/bin",paths.join(home,".local","bin"),paths.join(home,"bin"),"/usr/bin","/bin","/snap/bin"],directories=[...new Set([...inherited,...known])],searched=[];if(source.AZURE_CLI_PATH&&(searched.push(source.AZURE_CLI_PATH),exists(source.AZURE_CLI_PATH)))return{found:!0,path:source.AZURE_CLI_PATH,directory:paths.dirname(source.AZURE_CLI_PATH),searched};for(let directory of directories)for(let name of osName==="win32"?["az.cmd","az.exe","az"]:["az"]){let candidate=paths.join(directory,name);if(searched.push(candidate),exists(candidate))return{found:!0,path:candidate,directory,searched}}return{found:!1,path:"",directory:"",searched}}var AzureCliNotFoundError=class extends Error{constructor(searched=[]){super("Azure CLI executable was not found. Install Azure CLI or set AZURE_CLI_PATH to its absolute path, then retry."),this.name="AzureCliNotFoundError",this.code="AZURE_CLI_NOT_FOUND",this.searched=searched}};function azureCliChildEnv(source=process.env,located=locateAzureCli(source),osName=os.platform()){let paths=osName==="win32"?path.win32:path.posix,env={},copied=new Set;for(let key of AZURE_CLI_ENV_KEYS){let identity=osName==="win32"?key.toLowerCase():key;source[key]!=null&&!copied.has(identity)&&(env[key]=source[key],copied.add(identity))}let inherited=sourcePath(source).split(paths.delimiter).filter(Boolean),fallbacks=osName==="win32"?[paths.join(source.SystemRoot||source.SYSTEMROOT||"C:\\Windows","System32"),source.SystemRoot||source.SYSTEMROOT||"C:\\Windows"]:["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"];return env.PATH=[...new Set([...located.found?[located.directory]:[],...inherited,...fallbacks])].join(paths.delimiter),osName==="win32"&&!env.ComSpec&&!env.COMSPEC&&(env.ComSpec=paths.join(source.SystemRoot||source.SYSTEMROOT||"C:\\Windows","System32","cmd.exe")),env}function azureCliSpawnSpec(args,{env=process.env,osName=os.platform(),locate=locateAzureCli}={}){assertFixtureAuthenticationDenied("az");let located=locate(env,osName);if(!located.found)throw new AzureCliNotFoundError(located.searched);let childEnv=azureCliChildEnv(env,located,osName);return spawnSpecForLocated(located,args,childEnv,osName)}async function runAzureCliJson(args,subscription,{timeout=3e4,maxBuffer=1024*1024,env=process.env,execute=execFileText,locate=locateAzureCli,osName=os.platform(),signal}={}){let full=subscription?[...args,"--subscription",subscription]:[...args],withFlag=full.includes("--only-show-errors")?full:[...full,"--only-show-errors"],{stdout}=await runAzureCliText(withFlag,{env,maxBuffer,timeout,execute,locate,osName,...signal?{signal}:{}}),text=stdout.trim();return text?JSON.parse(text):null}async function runAzureCliText(args,{env=process.env,execute=execFileText,locate=locateAzureCli,osName=os.platform(),...options}={}){let command=azureCliSpawnSpec(args,{env,locate,osName});return execute(command.file,command.args,{maxBuffer:1024*1024,...options,env:command.env,windowsVerbatimArguments:command.windowsVerbatimArguments})}var fixtureAuthCommands=[];function assertFixtureAuthenticationDenied(command,args=[]){if(process.env.FUNCTION_STUDIO_TEST_MODE!=="1")return;let name=path.win32.basename(String(command)).replace(/\.(?:cmd|bat|exe)$/i,"").toLowerCase(),gitRemote=name==="git"&&args.some(arg=>["clone","fetch","pull","push","ls-remote","credential"].includes(arg)),packageInstall=["npm","npx","pip","pip3","uv"].includes(name)&&args.some(arg=>["install","exec","add","run"].includes(arg))||/^python(?:\d+(?:\.\d+)?)?$/.test(name)&&args.includes("pip")&&args.includes("install");if(!(!gitRemote&&!packageInstall&&!["az","azd","gh","azureauth","security","codesign","npx"].includes(name)))throw fixtureAuthCommands.push(name),new Error(`Live authentication command '${name}' is disabled in Hosted Skills fixture mode. Inject a fake service instead.`)}function execFileText(file,args,options={}){return new Promise((resolve,reject)=>{assertFixtureAuthenticationDenied(file,args),execFile(file,args,{maxBuffer:1024*1024,...options},(error,stdout,stderr)=>{if(error){error.stdout=stdout,error.stderr=stderr,reject(error);return}resolve({stdout,stderr})})})}import{BlobServiceClient,StorageSharedKeyCredential,ContainerClient,generateBlobSASQueryParameters,BlobSASPermissions,ContainerSASPermissions,SASProtocol}from"./sdk/blob.mjs";import{QueueServiceClient,StorageSharedKeyCredential as QueueSharedKey}from"./sdk/queue.mjs";import{ShareServiceClient,StorageSharedKeyCredential as FileSharedKey}from"./sdk/file.mjs";import{TableServiceClient,TableClient,AzureNamedKeyCredential}from"./sdk/tables.mjs";import{spawn as spawn2,spawnSync as spawnSync2}from"node:child_process";import{existsSync}from"node:fs";var ARM="https://management.azure.com",API="2023-01-01";scrubHostSessionEnv();var _credentials=new Map;function credential(tenantId=""){return _credentials.has(tenantId)||_credentials.set(tenantId,{async getToken(scopes,options){if(options?.claims)throw new Error("Azure CLI cannot satisfy this claims challenge. Sign in to the account's tenant and retry.");let args=["account","get-access-token","--scope",...Array.isArray(scopes)?scopes:[scopes],"--output","json"];tenantId&&args.push("--tenant",tenantId);let result=await runAzureCliJson(args,void 0,{env:inheritedCliEnvironment()}),expiresOnTimestamp=result?.expires_on?Number(result.expires_on)*1e3:Date.parse(result?.expiresOn);if(!result?.accessToken||!Number.isFinite(expiresOnTimestamp))throw new Error("Azure CLI returned an invalid access token response. Run `az login` and retry.");return{token:result.accessToken,expiresOnTimestamp}}}),_credentials.get(tenantId)}var _tokens=new Map;async function tokenFor(scope,tenantId="",acquire=credential){let key=JSON.stringify([tenantId,scope]),now=Date.now(),hit=_tokens.get(key);if(hit?.token&&hit.exp-12e4>now)return hit.token;if(hit?.inflight)return hit.inflight;let inflight=acquire(tenantId).getToken(scope).then(t=>{if(!t?.token)throw new Error(`Could not acquire a token for ${scope}. Run \`az login\`.`);return _tokens.set(key,{token:t.token,exp:t.expiresOnTimestamp||now+33e5}),t.token}).catch(e=>{throw _tokens.delete(key),e});return _tokens.set(key,{...hit||{},inflight}),inflight}function storageCredential(account){if(!accountMeta(account)&&!knownAccount(account))throw new Error(`Storage account '${account}' has no known subscription or tenant context. Select its subscription before accessing storage.`);return{getToken:async(scopes,options)=>{let{tenantId}=await ensureAccountMeta(account);if(options?.claims)return credential(tenantId).getToken(scopes,options);let scope=Array.isArray(scopes)?scopes[0]:scopes;return{token:await tokenFor(scope,tenantId),expiresOnTimestamp:_tokens.get(JSON.stringify([tenantId,scope]))?.exp??Date.now()+33e5}}}}var _warmed=null;function warmup(){return _warmed||(_warmed=Promise.allSettled([tokenFor("https://management.azure.com/.default"),tokenFor("https://storage.azure.com/.default")]),_warmed)}function resetTokenCache(){_tokens.clear(),_credentials.clear(),svcCache.clear(),queueCache.clear(),tableCache.clear(),shareCache.clear(),_warmed=null}function azMissingMsg(e){let m=String(e&&e.message||e);return/ENOENT/i.test(m)?"Azure CLI (az) was not found on PATH. Install it from aka.ms/azure-cli, then try again, or run `az login` manually.":"Could not start az login: "+m}var _signInInflight=null;function signIn(opts={}){return _signInInflight||(_signInInflight=_doSignIn(opts).finally(()=>{_signInInflight=null}),_signInInflight)}function _doSignIn({tenantId,timeoutMs=18e4,_spawn=spawn2}={}){return new Promise(resolve=>{let isWin=process.platform==="win32",env={...inheritedCliEnvironment(),AZURE_CORE_LOGIN_EXPERIENCE_V2:"off"},child;try{child=_spawn("az",["login","--only-show-errors",...tenantId?["--tenant",tenantId]:[]],{env,windowsHide:!0,shell:isWin,stdio:["ignore","ignore","pipe"]})}catch(e){resolve({ok:!1,error:azMissingMsg(e)});return}let err="";child.stderr&&child.stderr.on("data",d=>{err+=String(d)});let timer=setTimeout(()=>{try{child.kill()}catch{}resolve({ok:!1,error:"Sign-in timed out after 3 minutes. Finish az login in the browser, then click Refresh."})},timeoutMs);child.on("error",e=>{clearTimeout(timer),resolve({ok:!1,error:azMissingMsg(e)})}),child.on("close",code=>{if(clearTimeout(timer),code===0){resetTokenCache(),resolve({ok:!0});return}resolve({ok:!1,error:err.trim()||"az login exited with code "+code})})})}var SE_RESOURCE_TYPE={blob:"Azure.BlobContainer",file:"Azure.FileShare",queue:"Azure.Queue",table:"Azure.Table"};function storageExplorerDeepLink({account,kind,item}={}){let m=account?accountMeta(account):null;if(!m||!m.subscriptionId||!m.resourceGroup)return null;let accountId=`/subscriptions/${m.subscriptionId}/resourceGroups/${m.resourceGroup}/providers/Microsoft.Storage/storageAccounts/${m.name}`,link="storageexplorer://v=1&accountid="+encodeURIComponent(accountId)+"&subscriptionid="+encodeURIComponent(m.subscriptionId),rt=kind?SE_RESOURCE_TYPE[kind]:null;return rt&&item&&(link+="&resourcetype="+encodeURIComponent(rt)+"&resourcename="+encodeURIComponent(item)),link}function storageExplorerExe(){if(process.platform!=="win32")return null;let candidates=[process.env.LOCALAPPDATA&&process.env.LOCALAPPDATA+"\\Programs\\Microsoft Azure Storage Explorer\\StorageExplorer.exe",process.env.ProgramFiles&&process.env.ProgramFiles+"\\Microsoft Azure Storage Explorer\\StorageExplorer.exe",process.env["ProgramFiles(x86)"]&&process.env["ProgramFiles(x86)"]+"\\Microsoft Azure Storage Explorer\\StorageExplorer.exe"].filter(Boolean);for(let p of candidates)try{if(existsSync(p))return p}catch{}return null}var SE_DOWNLOAD="https://aka.ms/storageexplorer",_seInstalled;function storageExplorerInstalled(){if(_seInstalled!==void 0)return _seInstalled;if(storageExplorerExe())return _seInstalled=!0;if(process.platform==="win32"){for(let key of["HKCU\\Software\\Classes\\storageexplorer","HKCR\\storageexplorer"])try{let r=spawnSync2("reg",["query",key],{stdio:"ignore",windowsHide:!0});if(r&&r.status===0)return _seInstalled=!0}catch{}return _seInstalled=!1}return _seInstalled=null}function openBrowser(url){let opts={detached:!0,stdio:"ignore"},file,args;process.platform==="win32"?(file=process.env.ComSpec||"cmd.exe",args=["/c","start","",url]):process.platform==="darwin"?(file="open",args=[url]):(file="xdg-open",args=[url]);try{let c=spawn2(file,args,opts);c.on("error",()=>{}),c.unref&&c.unref()}catch{}}function seMissingMsg(e){let m=String(e&&e.message||e);return/ENOENT/i.test(m)?"Azure Storage Explorer isn't installed. Get the free desktop app at "+SE_DOWNLOAD+".":"Could not launch Azure Storage Explorer: "+m}function openInStorageExplorer({account,kind,item}={}){return new Promise(resolve=>{if(storageExplorerInstalled()===!1){openBrowser(SE_DOWNLOAD),resolve({ok:!1,notInstalled:!0,install:SE_DOWNLOAD});return}let link=storageExplorerDeepLink({account,kind,item}),exe=storageExplorerExe(),opts={detached:!0,stdio:"ignore"},file,args;if(exe)file=exe,args=link?[link]:[];else if(process.platform==="win32"){if(!link){openBrowser(SE_DOWNLOAD),resolve({ok:!1,notInstalled:!0,install:SE_DOWNLOAD});return}file=process.env.ComSpec||"cmd.exe",args=["/c","start","",link]}else process.platform==="darwin"?(file="open",args=link?[link]:["-a","Microsoft Azure Storage Explorer"]):(file="StorageExplorer",args=link?[link]:[]);let onFail=e=>{if(e&&/ENOENT/i.test(String(e.message||e))){openBrowser(SE_DOWNLOAD),resolve({ok:!1,notInstalled:!0,install:SE_DOWNLOAD});return}resolve({ok:!1,error:seMissingMsg(e)})},child;try{child=spawn2(file,args,opts)}catch(e){onFail(e);return}child.on("error",onFail),child.on("spawn",()=>{try{child.unref()}catch{}resolve({ok:!0,deepLink:!!link})})})}async function armToken(tenantId){return tokenFor("https://management.azure.com/.default",tenantId)}async function armGet(path3,tenantId){let res=await fetch(`${ARM}${path3}`,{headers:{Authorization:`Bearer ${await armToken(tenantId)}`}});if(!res.ok){let e=new Error(`ARM GET ${path3} \u2192 HTTP ${res.status}`);throw e.statusCode=res.status,e}return res.json()}async function armPost(path3,tenantId){let res=await fetch(`${ARM}${path3}`,{method:"POST",headers:{Authorization:`Bearer ${await armToken(tenantId)}`}});if(!res.ok){let e=new Error(`ARM POST ${path3} \u2192 HTTP ${res.status}`);throw e.statusCode=res.status,e}return res.json()}async function armGetAll(path3,tenantId){let token=await armToken(tenantId),url=path3.startsWith("http")?path3:`${ARM}${path3}`,items=[];for(;url;){let res=await fetch(url,{headers:{Authorization:`Bearer ${token}`}});if(!res.ok){let e=new Error(`ARM GET ${url} \u2192 HTTP ${res.status}`);throw e.statusCode=res.status,e}let j=await res.json();if(Array.isArray(j.value))for(let v of j.value)items.push(v);url=j.nextLink||j["@odata.nextLink"]||null}return items}async function listSubscriptions({runCli=runAzureCliJson}={}){let value=await runCli(["account","list","--all","--output","json"],void 0,{env:inheritedCliEnvironment()});if(!Array.isArray(value))throw new Error("Azure CLI returned an invalid subscription list.");if(value.some(s=>s.id&&!s.tenantId))throw new Error("Azure CLI returned a subscription without a tenant. Refresh your Azure CLI login.");return value.filter(s=>s.id).map(s=>({subscriptionId:s.id,displayName:s.name,tenantId:s.tenantId,state:s.state}))}async function listTenants({read=armGetAll}={}){return(await read("/tenants?api-version=2022-12-01")).map(t=>({tenantId:t.tenantId,displayName:t.displayName||t.defaultDomain||"Unnamed directory",defaultDomain:t.defaultDomain||"",current:!0}))}async function listTenantSubscriptions(tenantId,{read=armGetAll}={}){if(!tenantId)throw new Error("A tenant is required.");return(await read("/subscriptions?api-version=2022-12-01",tenantId)).map(s=>({subscriptionId:s.subscriptionId,displayName:s.displayName,tenantId,state:s.state}))}function discoveryFailure(error){let text=String(error?.message||error),auth=classifyAuthError(text),status=error?.statusCode||/\bHTTP (\d{3})\b/.exec(text)?.[1];return{error:text,needsAuth:auth.needsAuth,message:humanErrorSummary(text,auth.needsAuth,status)}}var accountIndex=new Map,accountContexts=new Set,accountResolutions=new Map;function registerAccountContext(getContext){return accountContexts.add(getContext),()=>accountContexts.delete(getContext)}function knownAccount(account){for(let getContext of[...accountContexts].reverse()){let{accounts=[],subscriptions=[]}=getContext(),metadata=accounts.find(a=>a.name===account);if(metadata)return{metadata,subscription:subscriptions.find(s=>s.subscriptionId===metadata.subscriptionId)}}return null}function completeAccount(metadata){return!!(metadata?.tenantId&&metadata.subscriptionId&&metadata.resourceGroup)}function rgFromId(id){let m=/\/resourceGroups\/([^/]+)\//i.exec(id||"");return m?m[1]:""}async function mapLimit(items,limit,fn){let results=[],i=0,workers=Array.from({length:Math.min(limit,items.length)},async()=>{for(;i`${e.subscriptionName}: ${e.error}`).join("; "));return accounts}async function listStorageAccountsForSubs(subs,{concurrency=16,readAccounts=armGetAll}={}){let out=[],errors=[];return await mapLimit(subs,concurrency,async sub=>{let accts;try{if(!sub.tenantId)throw new Error("Subscription tenant is unknown. Refresh subscriptions.");accts=await readAccounts(`/subscriptions/${sub.subscriptionId}/providers/Microsoft.Storage/storageAccounts?api-version=${API}`,sub.tenantId)}catch(e){errors.push({subscriptionName:sub.displayName||sub.subscriptionId,subscriptionId:sub.subscriptionId,tenantId:sub.tenantId,...discoveryFailure(e)});return}for(let a of accts){let acct={name:a.name,subscriptionId:sub.subscriptionId,subscriptionName:sub.displayName,tenantId:sub.tenantId,resourceGroup:rgFromId(a.id),location:a.location||"",sku:a.sku?.name||"",kind:a.kind||""};accountIndex.set(a.name,acct),out.push(acct)}}),out.sort((x,y)=>x.name.localeCompare(y.name)),{accounts:out,errors}}function accountMeta(account){let cached=accountIndex.get(account);if(completeAccount(cached))return cached;let known=knownAccount(account);if(!known)return cached||null;let metadata={...known.metadata,tenantId:known.metadata.tenantId||known.subscription?.tenantId,resourceGroup:known.metadata.resourceGroup||rgFromId(known.metadata.id)};return completeAccount(metadata)?(accountIndex.set(account,metadata),metadata):cached||null}async function ensureAccountMeta(account,{readAccounts=armGetAll}={}){let cached=accountMeta(account);if(completeAccount(cached))return cached;if(accountResolutions.has(account))return accountResolutions.get(account);let known=knownAccount(account),subscriptionId=known?.metadata.subscriptionId,tenantId=known?.metadata.tenantId||known?.subscription?.tenantId;if(!subscriptionId||!tenantId)throw new Error(`Storage account '${account}' has no known subscription or tenant context. Select its subscription before accessing storage.`);let pending=(async()=>{let result=await listStorageAccountsForSubs([{...known.subscription,subscriptionId,tenantId}],{readAccounts});if(result.errors.length)throw new Error(`Could not resolve storage account '${account}': ${result.errors[0].error}`);let resolved=result.accounts.find(a=>a.name===account);if(!completeAccount(resolved))throw new Error(`Storage account '${account}' was not returned with complete metadata in subscription '${subscriptionId}'. Refresh that subscription's accounts.`);return resolved})();accountResolutions.set(account,pending);try{return await pending}finally{accountResolutions.get(account)===pending&&accountResolutions.delete(account)}}async function getAccountConfig(account){try{let m=await ensureAccountMeta(account),j=await armGet(`/subscriptions/${m.subscriptionId}/resourceGroups/${m.resourceGroup}/providers/Microsoft.Storage/storageAccounts/${account}?api-version=${API}`,m.tenantId),p=j.properties||{};return{ok:!0,exists:!0,allowSharedKeyAccess:p.allowSharedKeyAccess!==!1,publicNetworkAccess:p.publicNetworkAccess||"Enabled",defaultAction:p.networkAcls?.defaultAction||"Allow",provisioningState:p.provisioningState||"",sku:j.sku?.name||"",location:j.location||""}}catch(err){return err.statusCode===404?{ok:!0,exists:!1}:{ok:!1,error:String(err?.message||err)}}}async function fetchAccountKey(account){let m=await ensureAccountMeta(account),key=(await armPost(`/subscriptions/${m.subscriptionId}/resourceGroups/${m.resourceGroup}/providers/Microsoft.Storage/storageAccounts/${account}/listKeys?api-version=${API}`,m.tenantId))?.keys?.[0]?.value;if(!key)throw new Error("listKeys returned no key");return key}var svcCache=new Map;function accountUrl(account){return`https://${account}.blob.core.windows.net`}async function probe(svc){await svc.listContainers().byPage({maxPageSize:1})[Symbol.asyncIterator]().next()}function isAuthError(e){let s=e?.statusCode??e?.response?.status;if(s===401||s===403)return!0;let txt=`${e?.code||e?.name||""} ${e?.message||""}`;return/Authoriz|Authentic|KeyBasedAuthenticationNotPermitted|InvalidAuthenticationInfo|NoAuthenticationInformation/i.test(txt)}async function buildEntry(account){await ensureAccountMeta(account);try{let key=await fetchAccountKey(account);return{svc:new BlobServiceClient(accountUrl(account),new StorageSharedKeyCredential(account,key)),mode:"sharedKey",key}}catch{return{svc:new BlobServiceClient(accountUrl(account),storageCredential(account)),mode:"aad",key:null}}}async function withBlob(account,fn){let entry=svcCache.get(account);entry||(entry=await buildEntry(account),svcCache.set(account,entry));try{return await fn(entry.svc)}catch(e){if(entry.mode==="sharedKey"&&isAuthError(e)){let aad={svc:new BlobServiceClient(accountUrl(account),storageCredential(account)),mode:"aad",key:null};return svcCache.set(account,aad),await fn(aad.svc)}throw e}}async function resolveBlobService(account){if(await ensureAccountMeta(account),svcCache.has(account))return svcCache.get(account);let keyErr=null,aadErr=null;try{let key=await fetchAccountKey(account),cred=new StorageSharedKeyCredential(account,key),svc=new BlobServiceClient(accountUrl(account),cred);await probe(svc);let entry={svc,mode:"sharedKey",key};return svcCache.set(account,entry),entry}catch(err){keyErr=err}try{let svc=new BlobServiceClient(accountUrl(account),storageCredential(account));await probe(svc);let entry={svc,mode:"aad",key:null};return svcCache.set(account,entry),entry}catch(err){aadErr=err}throw new Error(`Could not access '${account}': key fallback ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${aadErr?.code||aadErr?.message||"n/a"}.`)}async function listContainers(account){return withBlob(account,async svc=>{let out=[];for await(let c of svc.listContainers())out.push({name:c.name,lastModified:c.properties?.lastModified||null});return out})}function mapBlob(b){return{name:b.name,size:b.properties?.contentLength??0,lastModified:b.properties?.lastModified?new Date(b.properties.lastModified).toISOString():null,contentType:b.properties?.contentType||"",accessTier:b.properties?.accessTier||"",blobType:b.properties?.blobType||"",tags:b.tags||null}}async function collectBlobs(cc,max,{prefix,onProgress,requireTags=!1}={}){let out=[],truncated=!1,read=async includeTags=>{for await(let b of cc.listBlobsFlat({prefix,includeTags})){if(out.length>=max){truncated=!0;break}out.push(mapBlob(b)),out.length%1e3===0&&onProgress?.(out.length)}onProgress?.(out.length)};try{await read(!0)}catch(error){if(error?.statusCode!==403||requireTags)throw error;out.length=0,truncated=!1,onProgress?.(0),await read(!1)}return out.truncated=truncated,out.limit=max,out}async function listBlobs(account,container,{max=5e3,complete=!1,...options}={}){return withBlob(account,svc=>collectBlobs(svc.getContainerClient(container),complete?1/0:max,options))}async function listBlobDirectory(account,container,{prefix="",max=5e3,list}={}){let collect=async(cc,includeTags)=>{let blobs=[],prefixes=[],truncated=!1;for await(let item of cc.listBlobsByHierarchy("/",{prefix,includeTags})){if(blobs.length+prefixes.length>=max){truncated=!0;break}item.kind==="prefix"?prefixes.push(item.name):blobs.push(mapBlob(item))}return{blobs,prefixes,truncated,limit:max}},read=async cc=>{try{return await collect(cc,!0)}catch(error){if(error?.statusCode!==403)throw error;return collect(cc,!1)}};return list?read({listBlobsByHierarchy:list}):withBlob(account,svc=>read(svc.getContainerClient(container)))}async function storagePage(iterator,continuationToken,maxPageSize=100){let result=await iterator.byPage({continuationToken:continuationToken||void 0,maxPageSize}).next();return result.done?{page:[],nextToken:null}:{page:result.value,nextToken:result.value.continuationToken||null}}async function listStoragePage({account,kind,resource,dir="",prefix="",token,sasUrl,resolve,tableClient}){let read=iterator=>storagePage(iterator,token);if(kind==="blob"||kind==="sas"){let fromClient=async svc=>{let cc=kind==="sas"?svc:resource?svc.getContainerClient(resource):null;if(!cc){let{page,nextToken}=await read(svc.listContainers());return{items:(page.containerItems||[]).map(c=>({name:c.name,lastModified:c.properties?.lastModified||null})),nextToken}}let result;try{result=await read(kind==="sas"?cc.listBlobsFlat({includeTags:!0}):cc.listBlobsByHierarchy("/",{prefix,includeTags:!0}))}catch(error){if(error?.statusCode!==403)throw error;result=await read(kind==="sas"?cc.listBlobsFlat():cc.listBlobsByHierarchy("/",{prefix}))}return{items:(result.page.segment?.blobItems||[]).map(mapBlob),prefixes:(result.page.segment?.blobPrefixes||[]).map(p=>p.name),nextToken:result.nextToken}};return kind==="sas"?fromClient(new ContainerClient(sasUrl)):resolve?fromClient((await resolve(account)).svc):withBlob(account,fromClient)}if(kind==="file"){let{svc}=await(resolve||resolveShareService)(account),{page,nextToken}=await read(resource?svc.getShareClient(resource).getDirectoryClient(dir).listFilesAndDirectories({includeTimestamps:!0}):svc.listShares());return{items:resource?[...(page.segment?.directoryItems||[]).map(x=>({name:x.name,kind:"directory",size:null,lastModified:null})),...(page.segment?.fileItems||[]).map(x=>({name:x.name,kind:"file",size:x.properties?.contentLength??0,lastModified:x.properties?.lastModified?new Date(x.properties.lastModified).toISOString():null}))]:(page.shareItems||[]).map(x=>({name:x.name,quotaGiB:x.properties?.quota??null})),nextToken}}if(kind==="queue"){let{svc}=await(resolve||resolveQueueService)(account),{page,nextToken}=await read(svc.listQueues());return{items:(page.queueItems||[]).map(x=>({name:x.name,approximateMessagesCount:null})),nextToken}}if(kind==="table"){let{svc,cred}=await(resolve||resolveTableService)(account),{page,nextToken}=await read(resource?(tableClient||new TableClient(tableUrl(account),resource,cred)).listEntities():svc.listTables());if(!resource)return{items:page.map(x=>({name:x.name})),nextToken};let columns=new Set(["partitionKey","rowKey","timestamp"]);return{entities:{rows:page.map(ent=>{let row={};for(let[key,value]of Object.entries(ent))key.startsWith("odata.")||key==="etag"||(columns.add(key),row[key]=value&&typeof value.toISOString=="function"?value.toISOString():value);return row}),columns:[...columns]},nextToken}}throw new Error("This storage view does not support continuation pages.")}async function createContainer(account,container,{resolve=resolveBlobService}={}){let{svc}=await resolve(account);return await svc.getContainerClient(container).create(),{ok:!0,container}}async function deleteContainer(account,container){let{svc}=await resolveBlobService(account);return await svc.getContainerClient(container).delete(),{ok:!0}}async function deleteBlob(account,container,name){let{svc}=await resolveBlobService(account);return await svc.getContainerClient(container).getBlockBlobClient(name).delete(),{ok:!0}}async function setBlobTier(account,container,name,tier){let{svc}=await resolveBlobService(account);return await svc.getContainerClient(container).getBlockBlobClient(name).setAccessTier(tier),{ok:!0}}async function uploadBlob(account,container,name,buffer,contentType){let{svc}=await resolveBlobService(account),cc=svc.getContainerClient(container);return await cc.createIfNotExists(),await cc.getBlockBlobClient(name).uploadData(buffer,contentType?{blobHTTPHeaders:{blobContentType:contentType}}:void 0),{ok:!0,name,size:buffer.length}}async function downloadBlob(account,container,name,{maxBytes=null}={}){let{svc}=await resolveBlobService(account),bc=svc.getContainerClient(container).getBlockBlobClient(name);if(Number.isFinite(maxBytes)&&maxBytes>0){let resp=await bc.download(0,maxBytes);return await streamToBuffer(resp.readableStreamBody)}return await bc.downloadToBuffer()}async function blobSize(account,container,name){let{svc}=await resolveBlobService(account),props=await svc.getContainerClient(container).getBlockBlobClient(name).getProperties();return Number(props.contentLength)||0}async function streamToBuffer(stream){let chunks=[];for await(let chunk of stream)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks)}async function generateBlobSas(account,container,name,{minutes=60,permissions="r"}={}){let entry=await resolveBlobService(account),perms=BlobSASPermissions.parse(permissions||"r"),startsOn=new Date(Date.now()-5*6e4),expiresOn=new Date(Date.now()+Math.max(1,minutes)*6e4),common={containerName:container,blobName:name,permissions:perms,startsOn,expiresOn,protocol:SASProtocol.Https},sas,mode;if(entry.mode==="sharedKey"&&entry.key){let cred=new StorageSharedKeyCredential(account,entry.key);sas=generateBlobSASQueryParameters(common,cred).toString(),mode="account-key"}else{let udk=await entry.svc.getUserDelegationKey(startsOn,expiresOn);sas=generateBlobSASQueryParameters(common,udk,account).toString(),mode="user-delegation"}let encName=name.split("/").map(encodeURIComponent).join("/");return{url:`${accountUrl(account)}/${container}/${encName}?${sas}`,expiresOn:expiresOn.toISOString(),permissions:permissions||"r",mode}}async function generateContainerSas(account,container,{minutes=1440,permissions="rl"}={}){let entry=await resolveBlobService(account),perms=ContainerSASPermissions.parse(permissions||"rl"),startsOn=new Date(Date.now()-5*6e4),expiresOn=new Date(Date.now()+Math.max(1,minutes)*6e4),common={containerName:container,permissions:perms,startsOn,expiresOn,protocol:SASProtocol.Https},sas,mode;if(entry.mode==="sharedKey"&&entry.key){let cred=new StorageSharedKeyCredential(account,entry.key);sas=generateBlobSASQueryParameters(common,cred).toString(),mode="account-key"}else{let udk=await entry.svc.getUserDelegationKey(startsOn,expiresOn);sas=generateBlobSASQueryParameters(common,udk,account).toString(),mode="user-delegation"}return{url:`${accountUrl(account)}/${container}?${sas}`,expiresOn:expiresOn.toISOString(),permissions:permissions||"rl",mode}}async function listSasBlobs(sasUrl,{max=5e3,complete=!1,...options}={}){let cc=new ContainerClient(sasUrl);return collectBlobs(cc,complete?1/0:max,options)}async function downloadSasBlob(sasUrl,name){return await new ContainerClient(sasUrl).getBlockBlobClient(name).downloadToBuffer()}var queueCache=new Map;function queueUrl(account){return`https://${account}.queue.core.windows.net`}async function resolveQueueService(account){if(await ensureAccountMeta(account),queueCache.has(account))return queueCache.get(account);let keyErr=null;try{let key=await fetchAccountKey(account),svc=new QueueServiceClient(queueUrl(account),new QueueSharedKey(account,key));await svc.listQueues().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"sharedKey"};return queueCache.set(account,e),e}catch(err){keyErr=err}try{let svc=new QueueServiceClient(queueUrl(account),storageCredential(account));await svc.listQueues().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"aad"};return queueCache.set(account,e),e}catch(err){throw new Error(`Could not access queues for '${account}': key ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${err?.code||err?.message||"n/a"}.`)}}async function listQueues(account){let{svc}=await resolveQueueService(account),out=[];for await(let q of svc.listQueues()){let count=null;try{count=(await svc.getQueueClient(q.name).getProperties()).approximateMessagesCount??null}catch{}out.push({name:q.name,approximateMessagesCount:count})}return out}async function peekQueueMessages(account,queue,{max=32}={}){let{svc}=await resolveQueueService(account);return((await svc.getQueueClient(queue).peekMessages({numberOfMessages:Math.min(max,32)})).peekedMessageItems||[]).map(m=>({messageId:m.messageId,messageText:m.messageText,insertedOn:m.insertedOn?new Date(m.insertedOn).toISOString():null,dequeueCount:m.dequeueCount??0}))}function requireNewResource(items,name,kind){if(items.some(item=>item.name.toLowerCase()===name.toLowerCase()))throw new Error(`A ${kind} named "${name}" already exists. Choose a different name.`)}async function createQueue(account,queue){requireNewResource(await listQueues(account),queue,"queue");let{svc}=await resolveQueueService(account);return await svc.getQueueClient(queue).create(),{ok:!0}}async function deleteQueue(account,queue){let{svc}=await resolveQueueService(account);return await svc.getQueueClient(queue).delete(),{ok:!0}}async function sendQueueMessage(account,queue,text){let{svc}=await resolveQueueService(account);return{ok:!0,messageId:(await svc.getQueueClient(queue).sendMessage(String(text??""))).messageId}}async function clearQueueMessages(account,queue){let{svc}=await resolveQueueService(account);return await svc.getQueueClient(queue).clearMessages(),{ok:!0}}async function withReceivedMessage(account,queue,messageId,act){let{svc}=await resolveQueueService(account),qc=svc.getQueueClient(queue),msgs=(await qc.receiveMessages({numberOfMessages:32,visibilityTimeout:30})).receivedMessageItems||[],target=msgs.find(m=>m.messageId===messageId);for(let m of msgs)if(m.messageId!==messageId)try{await qc.updateMessage(m.messageId,m.popReceipt,void 0,0)}catch{}if(!target)throw new Error("That message isn't among the first 32 in the queue, so it can't be changed directly.");return await act(qc,target),{ok:!0}}async function updateQueueMessage(account,queue,messageId,text){return withReceivedMessage(account,queue,messageId,(qc,target)=>qc.updateMessage(messageId,target.popReceipt,String(text??""),0))}async function deleteQueueMessage(account,queue,messageId){return withReceivedMessage(account,queue,messageId,(qc,target)=>qc.deleteMessage(messageId,target.popReceipt))}var tableCache=new Map;function tableUrl(account){return`https://${account}.table.core.windows.net`}async function resolveTableService(account){if(await ensureAccountMeta(account),tableCache.has(account))return tableCache.get(account);let keyErr=null;try{let key=await fetchAccountKey(account),cred=new AzureNamedKeyCredential(account,key),svc=new TableServiceClient(tableUrl(account),cred);await svc.listTables().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"sharedKey",cred};return tableCache.set(account,e),e}catch(err){keyErr=err}try{let cred=storageCredential(account),svc=new TableServiceClient(tableUrl(account),cred);await svc.listTables().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"aad",cred};return tableCache.set(account,e),e}catch(err){throw new Error(`Could not access tables for '${account}': key ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${err?.code||err?.message||"n/a"}.`)}}async function listTables(account){let{svc}=await resolveTableService(account),out=[];for await(let t of svc.listTables())out.push({name:t.name});return out}async function queryTableEntities(account,table,{max=100}={}){let{cred}=await resolveTableService(account),tc=new TableClient(tableUrl(account),table,cred),rows=[],cols=new Set(["partitionKey","rowKey","timestamp"]);for await(let ent of tc.listEntities()){let row={};for(let k of Object.keys(ent)){if(k.startsWith("odata.")||k==="etag")continue;cols.add(k);let v=ent[k];row[k]=v&&typeof v=="object"&&typeof v.toISOString=="function"?v.toISOString():v}if(rows.push(row),rows.length>=max)break}return{columns:Array.from(cols),rows}}async function createTable(account,table){requireNewResource(await listTables(account),table,"table");let{svc}=await resolveTableService(account);return await svc.createTable(table),{ok:!0}}async function deleteTable(account,table){let{svc}=await resolveTableService(account);return await svc.deleteTable(table),{ok:!0}}async function upsertEntity(account,table,entity){if(!entity||!entity.partitionKey||!entity.rowKey)throw new Error("entity requires partitionKey and rowKey");let{cred}=await resolveTableService(account);return await new TableClient(tableUrl(account),table,cred).upsertEntity(entity,"Merge"),{ok:!0}}async function deleteEntity(account,table,partitionKey,rowKey){let{cred}=await resolveTableService(account);return await new TableClient(tableUrl(account),table,cred).deleteEntity(partitionKey,rowKey),{ok:!0}}var shareCache=new Map;function fileUrl(account){return`https://${account}.file.core.windows.net`}async function resolveShareService(account){if(await ensureAccountMeta(account),shareCache.has(account))return shareCache.get(account);let keyErr=null;try{let key=await fetchAccountKey(account),svc=new ShareServiceClient(fileUrl(account),new FileSharedKey(account,key));await svc.listShares().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"sharedKey"};return shareCache.set(account,e),e}catch(err){keyErr=err}try{let svc=new ShareServiceClient(fileUrl(account),storageCredential(account),{fileRequestIntent:"backup"});await svc.listShares().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"aad"};return shareCache.set(account,e),e}catch(err){throw new Error(`Could not access file shares for '${account}': key ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${err?.code||err?.message||"n/a"}.`)}}async function listShares(account){let{svc}=await resolveShareService(account),out=[];for await(let s of svc.listShares())out.push({name:s.name,quotaGiB:s.properties?.quota??null});return out}async function listShareItems(account,share,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account),dc=svc.getShareClient(share).getDirectoryClient(dir||""),out=[];for await(let item of dc.listFilesAndDirectories({includeTimestamps:!0}))out.push({name:item.name,kind:item.kind,size:item.kind==="file"?item.properties?.contentLength??0:null,lastModified:item.kind==="file"&&item.properties?.lastModified?new Date(item.properties.lastModified).toISOString():null});return out}async function createShare(account,share){requireNewResource(await listShares(account),share,"file share");let{svc}=await resolveShareService(account);return await svc.getShareClient(share).create(),{ok:!0}}async function deleteShare(account,share){let{svc}=await resolveShareService(account);return await svc.getShareClient(share).delete(),{ok:!0}}async function createShareDirectory(account,share,dir){let{svc}=await resolveShareService(account);return await svc.getShareClient(share).getDirectoryClient(dir).create(),{ok:!0}}async function uploadShareFile(account,share,name,buffer,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account),fc=svc.getShareClient(share).getDirectoryClient(dir).getFileClient(name);return await fc.create(buffer.length),buffer.length&&await fc.uploadData(buffer),{ok:!0,size:buffer.length}}async function downloadShareFile(account,share,name,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account);return await svc.getShareClient(share).getDirectoryClient(dir).getFileClient(name).downloadToBuffer()}async function deleteShareItem(account,share,name,kind,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account),sc=svc.getShareClient(share);return kind==="directory"?await sc.getDirectoryClient(dir?`${dir}/${name}`:name).delete():await sc.getDirectoryClient(dir).getFileClient(name).delete(),{ok:!0}}function fmtBytes(n){if(n=Number(n)||0,n<1024)return`${n} B`;let u=["KB","MB","GB","TB","PB"],i=-1;do n/=1024,i++;while(n>=1024&&i=10?0:1)} ${u[i]}`}function globToRe(glob){let body=String(glob).replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp("^"+body+"$","i")}function typeFamily(contentType,name){let ct=String(contentType||"").toLowerCase(),ext=String(name||"").toLowerCase().split(".").pop();return/^image\//.test(ct)||/^(png|jpe?g|gif|webp|bmp|svg|tiff?)$/.test(ext)?"image":/^video\//.test(ct)||/^(mp4|mov|avi|mkv|webm)$/.test(ext)?"video":/^audio\//.test(ct)||/^(mp3|wav|flac|ogg|m4a)$/.test(ext)?"audio":/json|xml|csv|text\/|javascript|yaml/.test(ct)||/^(json|xml|csv|txt|log|md|yaml|yml|js|ts|html?|css)$/.test(ext)?"text/data":/pdf|word|excel|powerpoint|officedocument|msword/.test(ct)||/^(pdf|docx?|xlsx?|pptx?)$/.test(ext)?"document":/zip|gzip|tar|compress|x-7z|rar/.test(ct)||/^(zip|gz|tar|7z|rar|bz2)$/.test(ext)?"archive":/octet-stream/.test(ct)||/^(bin|dat|iso|vhd|img)$/.test(ext)?"binary":ct.split("/")[0]||"other"}function applyBlobFilter(blobs,c={}){let list=Array.isArray(blobs)?blobs:[],nowMs=c.now?Date.parse(c.now):Date.now(),re=c.namePattern&&String(c.namePattern).trim()?globToRe(String(c.namePattern).trim()):null,prefix=c.prefix!=null&&String(c.prefix)!==""?String(c.prefix).toLowerCase():null,suffix=c.suffix!=null&&String(c.suffix)!==""?String(c.suffix).toLowerCase():null,contains=c.contains!=null&&String(c.contains)!==""?String(c.contains).toLowerCase():null,min=c.minSize!=null&&c.minSize!==""?Number(c.minSize):null,max=c.maxSize!=null&&c.maxSize!==""?Number(c.maxSize):null,older=c.olderThanDays!=null&&c.olderThanDays!==""?Number(c.olderThanDays):null,newer=c.newerThanDays!=null&&c.newerThanDays!==""?Number(c.newerThanDays):null,type=c.type&&String(c.type).trim()&&c.type!=="all"?String(c.type).trim():null,tiers=normList(c.tiers).map(t=>t.toLowerCase()),blobTypes=normList(c.blobTypes).map(t=>t.toLowerCase()),tagKeys=normList(c.tagKeys),tags=c.tags&&typeof c.tags=="object"?c.tags:null,DAY=864e5;return list.filter(b=>{let nm=String(b.name||""),nml=nm.toLowerCase();if(re&&!re.test(nm)||prefix&&!nml.startsWith(prefix)||suffix&&!nml.endsWith(suffix)||contains&&nml.indexOf(contains)===-1)return!1;let sz=Number(b.size)||0;if(min!=null&&szmax)return!1;if((older!=null||newer!=null)&&b.lastModified){let ageMs=nowMs-Date.parse(b.lastModified);if(older!=null&&!(ageMs>older*DAY)||newer!=null&&!(ageMs<=newer*DAY))return!1}else if(older!=null||newer!=null)return!1;if(type&&typeFamily(b.contentType,b.name)!==type||tiers.length&&tiers.indexOf(String(b.accessTier||"").toLowerCase())===-1||blobTypes.length&&blobTypes.indexOf(String(b.blobType||"").toLowerCase())===-1)return!1;if(tagKeys.length){let bt=b.tags||{};for(let k of tagKeys)if(!(k in bt))return!1}if(tags){let bt=b.tags||{};for(let k of Object.keys(tags))if(String(bt[k])!==String(tags[k]))return!1}return!0})}function normList(v){return v==null||v===""?[]:Array.isArray(v)?v.map(x=>String(x).trim()).filter(Boolean):String(v).split(",").map(x=>x.trim()).filter(Boolean)}function computeBlobStats(blobs){let list=Array.isArray(blobs)?blobs:[],n=list.length,sizes=list.map(b=>Number(b.size)||0),total=sizes.reduce((a,s)=>a+s,0),max=n?Math.max(...sizes):0,avg=n?Math.round(total/n):0,buckets=[{label:"0\u20131 KB",lo:0,hi:1024},{label:"1 KB\u20131 MB",lo:1024,hi:1048576},{label:"1\u2013100 MB",lo:1048576,hi:104857600},{label:"100 MB\u20131 GB",lo:104857600,hi:1073741824},{label:">1 GB",lo:1073741824,hi:1/0}].map(bk=>({label:bk.label,n:sizes.filter(s=>s>=bk.lo&&s({label,n:v.n,bytes:v.bytes})).sort((a,b)=>b.bytes-a.bytes),byTierMap=new Map;for(let b of list){let tier=String(b.accessTier||"").trim()||"\u2014",cur=byTierMap.get(tier)||{n:0,bytes:0};cur.n++,cur.bytes+=Number(b.size)||0,byTierMap.set(tier,cur)}let byTier=[...byTierMap.entries()].map(([label,v])=>({label,n:v.n,bytes:v.bytes})).sort((a,b)=>b.bytes-a.bytes),hasTier=byTier.some(t=>t.label!=="\u2014"),byExtMap=new Map;for(let b of list){let parts=String(b.name||"").toLowerCase().split("."),ext=parts.length>1?"."+parts.pop():"(none)",cur=byExtMap.get(ext)||{n:0,bytes:0};cur.n++,cur.bytes+=Number(b.size)||0,byExtMap.set(ext,cur)}let byExt=[...byExtMap.entries()].map(([label,v])=>({label,n:v.n,bytes:v.bytes})).sort((a,b)=>b.bytes-a.bytes).slice(0,8),topLargest=[...list].sort((a,b)=>(Number(b.size)||0)-(Number(a.size)||0)).slice(0,10).map(b=>({name:b.name,size:Number(b.size)||0,sizeh:fmtBytes(b.size),lastModified:b.lastModified||null}));return{count:n,totalBytes:total,totalh:fmtBytes(total),avgBytes:avg,avgh:fmtBytes(avg),maxBytes:max,maxh:fmtBytes(max),buckets,byType,byTier:hasTier?byTier:[],byExt,topLargest}}function filterAndStat(blobs,criteria={}){let filtered=applyBlobFilter(blobs,criteria);return{filtered,stats:computeBlobStats(filtered),criteria}}var OVERWRITE={overwrite:"true",skip:"false","if-newer":"ifSourceNewer"};function resolutionFlag(resolution){return OVERWRITE[resolution]||"true"}function planTransfer(sourceBlobs,destBlobs,resolution="overwrite"){let src=Array.isArray(sourceBlobs)?sourceBlobs:[],dstByName=new Map((Array.isArray(destBlobs)?destBlobs:[]).map(b=>[b.name,b])),conflicts=[],newFiles=[];for(let b of src)dstByName.has(b.name)?conflicts.push(b):newFiles.push(b);let toTransfer;if(resolution==="skip")toTransfer=newFiles.slice();else if(resolution==="if-newer"){let newerConflicts=conflicts.filter(b=>{let d=dstByName.get(b.name),s=Date.parse(b.lastModified||""),dm=Date.parse(d?.lastModified||"");return Number.isFinite(s)&&Number.isFinite(dm)?s>dm:!0});toTransfer=newFiles.concat(newerConflicts)}else toTransfer=src.slice();let bytes=toTransfer.reduce((a,b)=>a+(Number(b.size)||0),0),skipped=src.length-toTransfer.length;return{resolution,sourceCount:src.length,destCount:dstByName.size,conflictCount:conflicts.length,newCount:newFiles.length,transferCount:toTransfer.length,skippedCount:skipped,transferBytes:bytes,transferBytesh:fmtBytes(bytes),conflicts:conflicts.slice(0,100).map(b=>({name:b.name,size:Number(b.size)||0,sizeh:fmtBytes(b.size),lastModified:b.lastModified||null})),toTransfer:toTransfer.map(b=>b.name)}}function azcopyCommand({sourceUrl,destUrl,resolution="overwrite",includeNames=null,allSource=!1}={}){let q=s=>`"${String(s||"").replace(/[\\"$`]/g,"\\$&")}"`,flags=[`--overwrite=${resolutionFlag(resolution)}`];if(allSource)flags.push("--recursive");else if(Array.isArray(includeNames)){if(!includeNames.length)return{command:null,needsLogin:!1,empty:!0};flags.push(`--include-path ${q(includeNames.join(";"))}`),flags.push("--recursive")}else flags.push("--recursive");let needsLogin=!/[?&]sig=/.test(String(sourceUrl||""))||!/[?&]sig=/.test(String(destUrl||""));return{command:`azcopy copy ${q(sourceUrl)} ${q(destUrl)} ${flags.join(" ")}`,needsLogin}}function sniffText(bytes){let buf=bytes instanceof Uint8Array?bytes:new Uint8Array(bytes||[]);if(!buf.length)return{isText:!0,text:""};let control=0;for(let i=0;i13&&c<32||c===127)&&control++}if(control/buf.length>.1)return{isText:!1,text:null};try{let text=new TextDecoder("utf-8",{fatal:!1}).decode(buf);return(text.match(/\uFFFD/g)||[]).length/Math.max(text.length,1)>.1?{isText:!1,text:null}:{isText:!0,text}}catch{return{isText:!1,text:null}}}var MAGIC=[{off:0,hex:"67 6C 54 46",format:"glTF binary (GLB) 3D model",category:"3D model"},{off:0,hex:"89 50 4E 47 0D 0A 1A 0A",format:"PNG image",category:"image"},{off:0,hex:"FF D8 FF",format:"JPEG image",category:"image"},{off:0,hex:"47 49 46 38",format:"GIF image",category:"image"},{off:0,hex:"42 4D",format:"BMP image",category:"image"},{off:0,hex:"49 49 2A 00",format:"TIFF image (little-endian)",category:"image"},{off:0,hex:"4D 4D 00 2A",format:"TIFF image (big-endian)",category:"image"},{off:0,hex:"00 00 01 00",format:"ICO icon",category:"image"},{off:0,hex:"25 50 44 46",format:"PDF document",category:"document"},{off:0,hex:"D0 CF 11 E0 A1 B1 1A E1",format:"Legacy MS Office (OLE2: .doc/.xls/.ppt)",category:"document"},{off:0,hex:"50 4B 03 04",format:"ZIP archive (or OOXML .docx/.xlsx/.pptx, JAR, APK)",category:"archive"},{off:0,hex:"50 4B 05 06",format:"ZIP archive (empty)",category:"archive"},{off:0,hex:"1F 8B",format:"gzip archive",category:"archive"},{off:0,hex:"42 5A 68",format:"bzip2 archive",category:"archive"},{off:0,hex:"37 7A BC AF 27 1C",format:"7-Zip archive",category:"archive"},{off:0,hex:"52 61 72 21 1A 07",format:"RAR archive",category:"archive"},{off:0,hex:"FD 37 7A 58 5A 00",format:"XZ archive",category:"archive"},{off:257,hex:"75 73 74 61 72",format:"TAR archive",category:"archive"},{off:0,hex:"7F 45 4C 46",format:"ELF executable / shared object",category:"executable"},{off:0,hex:"4D 5A",format:"Windows PE executable (.exe/.dll)",category:"executable"},{off:0,hex:"CA FE BA BE",format:"Java class file",category:"executable"},{off:0,hex:"00 61 73 6D",format:"WebAssembly (WASM) module",category:"executable"},{off:0,hex:"4F 67 67 53",format:"Ogg media",category:"audio"},{off:0,hex:"49 44 33",format:"MP3 audio (ID3)",category:"audio"},{off:0,hex:"66 4C 61 43",format:"FLAC audio",category:"audio"},{off:0,hex:"53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00",format:"SQLite database",category:"database"},{off:0,hex:"50 41 52 31",format:"Apache Parquet",category:"data"},{off:0,hex:"4F 62 6A 01",format:"Apache Avro",category:"data"}],EXT_FORMAT={glb:["glTF binary (GLB) 3D model","3D model"],gltf:["glTF 3D model","3D model"],obj:["Wavefront OBJ 3D model","3D model"],fbx:["Autodesk FBX 3D model","3D model"],stl:["STL 3D model","3D model"],usdz:["USDZ 3D scene","3D model"],ply:["PLY 3D model","3D model"],png:["PNG image","image"],jpg:["JPEG image","image"],jpeg:["JPEG image","image"],gif:["GIF image","image"],webp:["WebP image","image"],bmp:["BMP image","image"],tiff:["TIFF image","image"],ico:["ICO icon","image"],heic:["HEIC image","image"],avif:["AVIF image","image"],svg:["SVG vector image","image"],psd:["Photoshop document","image"],pdf:["PDF document","document"],docx:["Word document (OOXML)","document"],xlsx:["Excel workbook (OOXML)","document"],pptx:["PowerPoint deck (OOXML)","document"],doc:["Legacy Word document","document"],xls:["Legacy Excel workbook","document"],ppt:["Legacy PowerPoint deck","document"],zip:["ZIP archive","archive"],gz:["gzip archive","archive"],tgz:["gzip TAR archive","archive"],tar:["TAR archive","archive"],rar:["RAR archive","archive"],"7z":["7-Zip archive","archive"],bz2:["bzip2 archive","archive"],xz:["XZ archive","archive"],zst:["Zstandard archive","archive"],mp3:["MP3 audio","audio"],wav:["WAV audio","audio"],flac:["FLAC audio","audio"],ogg:["Ogg audio","audio"],m4a:["AAC audio","audio"],mp4:["MP4 video","video"],mov:["QuickTime video","video"],avi:["AVI video","video"],mkv:["Matroska video","video"],webm:["WebM video","video"],exe:["Windows executable","executable"],dll:["Windows library","executable"],so:["Shared object","executable"],wasm:["WebAssembly module","executable"],parquet:["Apache Parquet","data"],avro:["Apache Avro","data"],orc:["Apache ORC","data"],db:["SQLite database","database"],sqlite:["SQLite database","database"],bin:["Raw binary","binary"],dat:["Raw data","binary"]};function hexHead(buf,n=16){let out=[];for(let i=0;i{let sig=hex.split(" ").map(h=>parseInt(h,16));if(off+sig.length>buf.length)return!1;for(let i=0;ibuf.length)return{version,truncated:!0};json=new TextDecoder("utf-8").decode(buf.subarray(dstart,dend));break}off=dend}if(json==null)return{version,truncated:!0};let g;try{g=JSON.parse(json)}catch{return{version,truncated:!0}}let n=a=>Array.isArray(a)?a.length:0,accessors=g.accessors||[],vertices=0,triangles=0;for(let mesh of g.meshes||[])for(let prim of mesh.primitives||[]){let posIdx=prim.attributes&&prim.attributes.POSITION;posIdx!=null&&accessors[posIdx]&&(vertices+=accessors[posIdx].count||0),prim.indices!=null&&accessors[prim.indices]&&(triangles+=Math.floor((accessors[prim.indices].count||0)/3))}return{version,truncated:!1,meshes:n(g.meshes),materials:n(g.materials),textures:n(g.textures),images:n(g.images),animations:n(g.animations),nodes:n(g.nodes),accessors:n(g.accessors),vertices,triangles,generator:g.asset&&g.asset.generator||null,gltfVersion:g.asset&&g.asset.version||null}}function previewLang(name){let m=/\.([a-z0-9]+)$/i.exec(String(name||"")),ext=m?m[1].toLowerCase():"";return{json:"json",ndjson:"json",js:"javascript",mjs:"javascript",ts:"typescript",csv:"csv",tsv:"csv",xml:"xml",html:"html",htm:"html",md:"markdown",yml:"yaml",yaml:"yaml",log:"log",txt:"text",ini:"ini",conf:"ini",sql:"sql",sh:"shell",py:"python",cs:"csharp"}[ext]||ext||"text"}function parseSasUrl(rawUrl){let u;try{u=new URL(String(rawUrl||"").trim())}catch{return{ok:!1,error:"That doesn't look like a URL."}}if(u.protocol!=="https:"){let emulator=/^(127\.0\.0\.1|localhost|\[::1\])$/i.test(u.hostname);if(!(u.protocol==="http:"&&emulator))return{ok:!1,error:"SAS URL must use HTTPS \u2014 a SAS signature is a bearer credential and must not travel over plain HTTP."}}let q=u.searchParams;if(!q.get("sig"))return{ok:!1,error:"No SAS signature (sig=) in the URL \u2014 that's a plain URL, not a SAS."};let host=u.hostname,accountMatch=/^([^.]+)\.blob\./.exec(host),account=accountMatch?accountMatch[1]:host,segs=u.pathname.replace(/^\/+/,"").split("/"),container=segs[0]||"",blobPath=segs.slice(1).join("/"),perms=q.get("sp")||"",expiry=q.get("se")||"",resource=q.get("sr")||(blobPath?"b":container?"c":""),now=Date.now(),expMs=expiry?Date.parse(expiry):NaN,expired=Number.isFinite(expMs)&&expMs{let done=!1,finish=value=>{done||(done=!0,resolve(value))};execFile2("azcopy",["--version"],{timeout:4e3,windowsHide:!0},(err,stdout)=>{if(err){let missing=err.code==="ENOENT";finish({installed:!1,version:null,reason:missing?"notFound":"error",hint:missing?`AzCopy isn't on your PATH. Install it from ${AZCOPY_INSTALL_URL}, then re-open the transfer plan.`:`AzCopy was found but couldn't be queried (${String(err.message||err).slice(0,120)}).`,installUrl:AZCOPY_INSTALL_URL});return}let version=(String(stdout||"").match(/\d+\.\d+\.\d+/)||[])[0]||null;finish({installed:!0,version,reason:"ok",hint:null,installUrl:AZCOPY_INSTALL_URL})}).on("error",()=>finish({installed:!1,version:null,reason:"notFound",hint:`AzCopy isn't on your PATH. Install it from ${AZCOPY_INSTALL_URL}, then re-open the transfer plan.`,installUrl:AZCOPY_INSTALL_URL}))})),azcopyProbe}import"node:fs";var BUILD_INFO=resolveStudioBuildInfo(new URL("./extension.mjs",import.meta.url));import"node:fs";var TENANT_ICON=` + Deploy to Azure`;function canExecuteCommand(file,osName=os.platform()){try{return accessSync(file,osName==="win32"?constants.F_OK:constants.X_OK),!0}catch{return!1}}var WINDOWS_COMMAND_META_CHARACTERS=/([()\][%!^"`<>&|;, *?])/g;function escapeWindowsCommandMetaCharacters(value){return value.replace(WINDOWS_COMMAND_META_CHARACTERS,"^$1")}function assertWindowsCommandValue(value){let text=String(value);if(/[\r\n]/.test(text))throw new Error("Command arguments contain unsupported Windows command characters.");return text}function escapeWindowsCommand(value){return escapeWindowsCommandMetaCharacters(assertWindowsCommandValue(value))}function quoteWindowsCommandArgument(value){let text=assertWindowsCommandValue(value);return text=text.replace(/(?=(\\+?)?)\1"/g,'$1$1\\"'),text=text.replace(/(?=(\\+?)?)\1$/,"$1$1"),escapeWindowsCommandMetaCharacters(`"${text}"`)}function windowsCommandShellLine(command,args=[]){return`"${[escapeWindowsCommand(command),...args.map(quoteWindowsCommandArgument)].join(" ")}"`}function spawnSpecForLocated(located,args,env,osName){return osName==="win32"&&/\.(?:cmd|bat)$/i.test(located.path)?{file:env.ComSpec||env.COMSPEC||path.win32.join(env.SystemRoot||env.SYSTEMROOT||"C:\\Windows","System32","cmd.exe"),args:["/d","/s","/c",windowsCommandShellLine(located.path,args)],env,located,windowsVerbatimArguments:!0}:{file:located.path,args:[...args],env,located,windowsVerbatimArguments:!1}}var AZURE_CLI_ENV_KEYS=["HOME","USER","LOGNAME","TMPDIR","LANG","LC_ALL","SHELL","USERPROFILE","HOMEDRIVE","HOMEPATH","SystemRoot","SYSTEMROOT","TEMP","TMP","ComSpec","COMSPEC","PATHEXT","AZURE_CONFIG_DIR","XDG_CONFIG_HOME","HTTP_PROXY","HTTPS_PROXY","ALL_PROXY","NO_PROXY","http_proxy","https_proxy","all_proxy","no_proxy","REQUESTS_CA_BUNDLE","CURL_CA_BUNDLE","SSL_CERT_FILE","SSL_CERT_DIR","AZURE_CLI_DISABLE_CONNECTION_VERIFICATION"];function sourcePath(source){return source.PATH||source.Path||source.path||""}function locateAzureCli(source=process.env,osName=os.platform(),exists=candidate=>canExecuteCommand(candidate,osName)){let paths=osName==="win32"?path.win32:path.posix,inherited=sourcePath(source).split(paths.delimiter).filter(Boolean),home=source.HOME||source.USERPROFILE||os.homedir(),known=osName==="win32"?[paths.join(source.ProgramFiles||"C:\\Program Files","Microsoft SDKs","Azure","CLI2","wbin"),paths.join(source["ProgramFiles(x86)"]||"C:\\Program Files (x86)","Microsoft SDKs","Azure","CLI2","wbin")]:["/opt/homebrew/bin","/usr/local/bin","/opt/local/bin",paths.join(home,".local","bin"),paths.join(home,"bin"),"/usr/bin","/bin","/snap/bin"],directories=[...new Set([...inherited,...known])],searched=[];if(source.AZURE_CLI_PATH&&(searched.push(source.AZURE_CLI_PATH),exists(source.AZURE_CLI_PATH)))return{found:!0,path:source.AZURE_CLI_PATH,directory:paths.dirname(source.AZURE_CLI_PATH),searched};for(let directory of directories)for(let name of osName==="win32"?["az.cmd","az.exe","az"]:["az"]){let candidate=paths.join(directory,name);if(searched.push(candidate),exists(candidate))return{found:!0,path:candidate,directory,searched}}return{found:!1,path:"",directory:"",searched}}var AzureCliNotFoundError=class extends Error{constructor(searched=[]){super("Azure CLI executable was not found. Install Azure CLI or set AZURE_CLI_PATH to its absolute path, then retry."),this.name="AzureCliNotFoundError",this.code="AZURE_CLI_NOT_FOUND",this.searched=searched}};function azureCliChildEnv(source=process.env,located=locateAzureCli(source),osName=os.platform()){let paths=osName==="win32"?path.win32:path.posix,env={},copied=new Set;for(let key of AZURE_CLI_ENV_KEYS){let identity=osName==="win32"?key.toLowerCase():key;source[key]!=null&&!copied.has(identity)&&(env[key]=source[key],copied.add(identity))}let inherited=sourcePath(source).split(paths.delimiter).filter(Boolean),fallbacks=osName==="win32"?[paths.join(source.SystemRoot||source.SYSTEMROOT||"C:\\Windows","System32"),source.SystemRoot||source.SYSTEMROOT||"C:\\Windows"]:["/opt/homebrew/bin","/usr/local/bin","/usr/bin","/bin"];return env.PATH=[...new Set([...located.found?[located.directory]:[],...inherited,...fallbacks])].join(paths.delimiter),osName==="win32"&&!env.ComSpec&&!env.COMSPEC&&(env.ComSpec=paths.join(source.SystemRoot||source.SYSTEMROOT||"C:\\Windows","System32","cmd.exe")),env}function azureCliSpawnSpec(args,{env=process.env,osName=os.platform(),locate=locateAzureCli}={}){assertFixtureAuthenticationDenied("az");let located=locate(env,osName);if(!located.found)throw new AzureCliNotFoundError(located.searched);let childEnv=azureCliChildEnv(env,located,osName);return spawnSpecForLocated(located,args,childEnv,osName)}async function runAzureCliJson(args,subscription,{timeout=3e4,maxBuffer=1024*1024,env=process.env,execute=execFileText,locate=locateAzureCli,osName=os.platform(),signal}={}){let full=subscription?[...args,"--subscription",subscription]:[...args],withFlag=full.includes("--only-show-errors")?full:[...full,"--only-show-errors"],{stdout}=await runAzureCliText(withFlag,{env,maxBuffer,timeout,execute,locate,osName,...signal?{signal}:{}}),text=stdout.trim();return text?JSON.parse(text):null}async function runAzureCliText(args,{env=process.env,execute=execFileText,locate=locateAzureCli,osName=os.platform(),...options}={}){let command=azureCliSpawnSpec(args,{env,locate,osName});return execute(command.file,command.args,{maxBuffer:1024*1024,...options,env:command.env,windowsVerbatimArguments:command.windowsVerbatimArguments})}var fixtureAuthCommands=[];function assertFixtureAuthenticationDenied(command,args=[]){if(process.env.FUNCTION_STUDIO_TEST_MODE!=="1")return;let name=path.win32.basename(String(command)).replace(/\.(?:cmd|bat|exe)$/i,"").toLowerCase(),gitRemote=name==="git"&&args.some(arg=>["clone","fetch","pull","push","ls-remote","credential"].includes(arg)),packageInstall=["npm","npx","pip","pip3","uv"].includes(name)&&args.some(arg=>["install","exec","add","run"].includes(arg))||/^python(?:\d+(?:\.\d+)?)?$/.test(name)&&args.includes("pip")&&args.includes("install");if(!(!gitRemote&&!packageInstall&&!["az","azd","gh","azureauth","security","codesign","npx"].includes(name)))throw fixtureAuthCommands.push(name),new Error(`Live authentication command '${name}' is disabled in Hosted Skills fixture mode. Inject a fake service instead.`)}function execFileText(file,args,options={}){return new Promise((resolve,reject)=>{assertFixtureAuthenticationDenied(file,args),execFile(file,args,{maxBuffer:1024*1024,...options},(error,stdout,stderr)=>{if(error){error.stdout=stdout,error.stderr=stderr,reject(error);return}resolve({stdout,stderr})})})}import{BlobServiceClient,StorageSharedKeyCredential,ContainerClient,generateBlobSASQueryParameters,BlobSASPermissions,ContainerSASPermissions,SASProtocol}from"./sdk/blob.mjs";import{QueueServiceClient,StorageSharedKeyCredential as QueueSharedKey}from"./sdk/queue.mjs";import{ShareServiceClient,StorageSharedKeyCredential as FileSharedKey}from"./sdk/file.mjs";import{TableServiceClient,TableClient,AzureNamedKeyCredential}from"./sdk/tables.mjs";import{spawn as spawn2,spawnSync as spawnSync2}from"node:child_process";import{existsSync}from"node:fs";var ARM="https://management.azure.com",API="2023-01-01";scrubHostSessionEnv();var _credentials=new Map;function credential(tenantId=""){return _credentials.has(tenantId)||_credentials.set(tenantId,{async getToken(scopes,options){if(options?.claims)throw new Error("Azure CLI cannot satisfy this claims challenge. Sign in to the account's tenant and retry.");let args=["account","get-access-token","--scope",...Array.isArray(scopes)?scopes:[scopes],"--output","json"];tenantId&&args.push("--tenant",tenantId);let result=await runAzureCliJson(args,void 0,{env:inheritedCliEnvironment()}),expiresOnTimestamp=result?.expires_on?Number(result.expires_on)*1e3:Date.parse(result?.expiresOn);if(!result?.accessToken||!Number.isFinite(expiresOnTimestamp))throw new Error("Azure CLI returned an invalid access token response. Run `az login` and retry.");return{token:result.accessToken,expiresOnTimestamp}}}),_credentials.get(tenantId)}var _tokens=new Map;async function tokenFor(scope,tenantId="",acquire=credential){let key=JSON.stringify([tenantId,scope]),now=Date.now(),hit=_tokens.get(key);if(hit?.token&&hit.exp-12e4>now)return hit.token;if(hit?.inflight)return hit.inflight;let inflight=acquire(tenantId).getToken(scope).then(t=>{if(!t?.token)throw new Error(`Could not acquire a token for ${scope}. Run \`az login\`.`);return _tokens.set(key,{token:t.token,exp:t.expiresOnTimestamp||now+33e5}),t.token}).catch(e=>{throw _tokens.delete(key),e});return _tokens.set(key,{...hit||{},inflight}),inflight}function storageCredential(account){if(!accountMeta(account)&&!knownAccount(account))throw new Error(`Storage account '${account}' has no known subscription or tenant context. Select its subscription before accessing storage.`);return{getToken:async(scopes,options)=>{let{tenantId}=await ensureAccountMeta(account);if(options?.claims)return credential(tenantId).getToken(scopes,options);let scope=Array.isArray(scopes)?scopes[0]:scopes;return{token:await tokenFor(scope,tenantId),expiresOnTimestamp:_tokens.get(JSON.stringify([tenantId,scope]))?.exp??Date.now()+33e5}}}}var _warmed=null;function warmup(){return _warmed||(_warmed=Promise.allSettled([tokenFor("https://management.azure.com/.default"),tokenFor("https://storage.azure.com/.default")]),_warmed)}function resetTokenCache(){_tokens.clear(),_credentials.clear(),svcCache.clear(),queueCache.clear(),tableCache.clear(),shareCache.clear(),_warmed=null}function azMissingMsg(e){let m=String(e&&e.message||e);return/ENOENT/i.test(m)?"Azure CLI (az) was not found on PATH. Install it from aka.ms/azure-cli, then try again, or run `az login` manually.":"Could not start az login: "+m}var _signInInflight=null;function signIn(opts={}){return _signInInflight||(_signInInflight=_doSignIn(opts).finally(()=>{_signInInflight=null}),_signInInflight)}function _doSignIn({tenantId,timeoutMs=18e4,_spawn=spawn2}={}){return new Promise(resolve=>{let isWin=process.platform==="win32",env={...inheritedCliEnvironment(),AZURE_CORE_LOGIN_EXPERIENCE_V2:"off"},child;try{child=_spawn("az",["login","--only-show-errors",...tenantId?["--tenant",tenantId]:[]],{env,windowsHide:!0,shell:isWin,stdio:["ignore","ignore","pipe"]})}catch(e){resolve({ok:!1,error:azMissingMsg(e)});return}let err="";child.stderr&&child.stderr.on("data",d=>{err+=String(d)});let timer=setTimeout(()=>{try{child.kill()}catch{}resolve({ok:!1,error:"Sign-in timed out after 3 minutes. Finish az login in the browser, then click Refresh."})},timeoutMs);child.on("error",e=>{clearTimeout(timer),resolve({ok:!1,error:azMissingMsg(e)})}),child.on("close",code=>{if(clearTimeout(timer),code===0){resetTokenCache(),resolve({ok:!0});return}resolve({ok:!1,error:err.trim()||"az login exited with code "+code})})})}var SE_RESOURCE_TYPE={blob:"Azure.BlobContainer",file:"Azure.FileShare",queue:"Azure.Queue",table:"Azure.Table"};function storageExplorerDeepLink({account,kind,item}={}){let m=account?accountMeta(account):null;if(!m||!m.subscriptionId||!m.resourceGroup)return null;let accountId=`/subscriptions/${m.subscriptionId}/resourceGroups/${m.resourceGroup}/providers/Microsoft.Storage/storageAccounts/${m.name}`,link="storageexplorer://v=1&accountid="+encodeURIComponent(accountId)+"&subscriptionid="+encodeURIComponent(m.subscriptionId),rt=kind?SE_RESOURCE_TYPE[kind]:null;return rt&&item&&(link+="&resourcetype="+encodeURIComponent(rt)+"&resourcename="+encodeURIComponent(item)),link}function storageExplorerExe(){if(process.platform!=="win32")return null;let candidates=[process.env.LOCALAPPDATA&&process.env.LOCALAPPDATA+"\\Programs\\Microsoft Azure Storage Explorer\\StorageExplorer.exe",process.env.ProgramFiles&&process.env.ProgramFiles+"\\Microsoft Azure Storage Explorer\\StorageExplorer.exe",process.env["ProgramFiles(x86)"]&&process.env["ProgramFiles(x86)"]+"\\Microsoft Azure Storage Explorer\\StorageExplorer.exe"].filter(Boolean);for(let p of candidates)try{if(existsSync(p))return p}catch{}return null}var SE_DOWNLOAD="https://aka.ms/storageexplorer",_seInstalled;function storageExplorerInstalled(){if(_seInstalled!==void 0)return _seInstalled;if(storageExplorerExe())return _seInstalled=!0;if(process.platform==="win32"){for(let key of["HKCU\\Software\\Classes\\storageexplorer","HKCR\\storageexplorer"])try{let r=spawnSync2("reg",["query",key],{stdio:"ignore",windowsHide:!0});if(r&&r.status===0)return _seInstalled=!0}catch{}return _seInstalled=!1}return _seInstalled=null}function openBrowser(url){let opts={detached:!0,stdio:"ignore"},file,args;process.platform==="win32"?(file=process.env.ComSpec||"cmd.exe",args=["/c","start","",url]):process.platform==="darwin"?(file="open",args=[url]):(file="xdg-open",args=[url]);try{let c=spawn2(file,args,opts);c.on("error",()=>{}),c.unref&&c.unref()}catch{}}function seMissingMsg(e){let m=String(e&&e.message||e);return/ENOENT/i.test(m)?"Azure Storage Explorer isn't installed. Get the free desktop app at "+SE_DOWNLOAD+".":"Could not launch Azure Storage Explorer: "+m}function openInStorageExplorer({account,kind,item}={}){return new Promise(resolve=>{if(storageExplorerInstalled()===!1){openBrowser(SE_DOWNLOAD),resolve({ok:!1,notInstalled:!0,install:SE_DOWNLOAD});return}let link=storageExplorerDeepLink({account,kind,item}),exe=storageExplorerExe(),opts={detached:!0,stdio:"ignore"},file,args;if(exe)file=exe,args=link?[link]:[];else if(process.platform==="win32"){if(!link){openBrowser(SE_DOWNLOAD),resolve({ok:!1,notInstalled:!0,install:SE_DOWNLOAD});return}file=process.env.ComSpec||"cmd.exe",args=["/c","start","",link]}else process.platform==="darwin"?(file="open",args=link?[link]:["-a","Microsoft Azure Storage Explorer"]):(file="StorageExplorer",args=link?[link]:[]);let onFail=e=>{if(e&&/ENOENT/i.test(String(e.message||e))){openBrowser(SE_DOWNLOAD),resolve({ok:!1,notInstalled:!0,install:SE_DOWNLOAD});return}resolve({ok:!1,error:seMissingMsg(e)})},child;try{child=spawn2(file,args,opts)}catch(e){onFail(e);return}child.on("error",onFail),child.on("spawn",()=>{try{child.unref()}catch{}resolve({ok:!0,deepLink:!!link})})})}async function armToken(tenantId){return tokenFor("https://management.azure.com/.default",tenantId)}async function armGet(path4,tenantId){let res=await fetch(`${ARM}${path4}`,{headers:{Authorization:`Bearer ${await armToken(tenantId)}`}});if(!res.ok){let e=new Error(`ARM GET ${path4} \u2192 HTTP ${res.status}`);throw e.statusCode=res.status,e}return res.json()}async function armPost(path4,tenantId){let res=await fetch(`${ARM}${path4}`,{method:"POST",headers:{Authorization:`Bearer ${await armToken(tenantId)}`}});if(!res.ok){let e=new Error(`ARM POST ${path4} \u2192 HTTP ${res.status}`);throw e.statusCode=res.status,e}return res.json()}async function armGetAll(path4,tenantId){let token=await armToken(tenantId),url=path4.startsWith("http")?path4:`${ARM}${path4}`,items=[];for(;url;){let res=await fetch(url,{headers:{Authorization:`Bearer ${token}`}});if(!res.ok){let e=new Error(`ARM GET ${url} \u2192 HTTP ${res.status}`);throw e.statusCode=res.status,e}let j=await res.json();if(Array.isArray(j.value))for(let v of j.value)items.push(v);url=j.nextLink||j["@odata.nextLink"]||null}return items}async function listSubscriptions({runCli=runAzureCliJson}={}){let value=await runCli(["account","list","--all","--output","json"],void 0,{env:inheritedCliEnvironment()});if(!Array.isArray(value))throw new Error("Azure CLI returned an invalid subscription list.");if(value.some(s=>s.id&&!s.tenantId))throw new Error("Azure CLI returned a subscription without a tenant. Refresh your Azure CLI login.");return value.filter(s=>s.id).map(s=>({subscriptionId:s.id,displayName:s.name,tenantId:s.tenantId,state:s.state}))}async function listTenants({read=armGetAll}={}){return(await read("/tenants?api-version=2022-12-01")).map(t=>({tenantId:t.tenantId,displayName:t.displayName||t.defaultDomain||"Unnamed directory",defaultDomain:t.defaultDomain||"",current:!0}))}async function listTenantSubscriptions(tenantId,{read=armGetAll}={}){if(!tenantId)throw new Error("A tenant is required.");return(await read("/subscriptions?api-version=2022-12-01",tenantId)).map(s=>({subscriptionId:s.subscriptionId,displayName:s.displayName,tenantId,state:s.state}))}function discoveryFailure(error){let text=String(error?.message||error),auth=classifyAuthError(text),status=error?.statusCode||/\bHTTP (\d{3})\b/.exec(text)?.[1];return{error:text,needsAuth:auth.needsAuth,message:humanErrorSummary(text,auth.needsAuth,status)}}var accountIndex=new Map,accountContexts=new Set,accountResolutions=new Map;function registerAccountContext(getContext){return accountContexts.add(getContext),()=>accountContexts.delete(getContext)}function knownAccount(account){for(let getContext of[...accountContexts].reverse()){let{accounts=[],subscriptions=[]}=getContext(),metadata=accounts.find(a=>a.name===account);if(metadata)return{metadata,subscription:subscriptions.find(s=>s.subscriptionId===metadata.subscriptionId)}}return null}function completeAccount(metadata){return!!(metadata?.tenantId&&metadata.subscriptionId&&metadata.resourceGroup)}function rgFromId(id){let m=/\/resourceGroups\/([^/]+)\//i.exec(id||"");return m?m[1]:""}async function mapLimit(items,limit,fn){let results=[],i=0,workers=Array.from({length:Math.min(limit,items.length)},async()=>{for(;i`${e.subscriptionName}: ${e.error}`).join("; "));return accounts}async function listStorageAccountsForSubs(subs,{concurrency=16,readAccounts=armGetAll}={}){let out=[],errors=[];return await mapLimit(subs,concurrency,async sub=>{let accts;try{if(!sub.tenantId)throw new Error("Subscription tenant is unknown. Refresh subscriptions.");accts=await readAccounts(`/subscriptions/${sub.subscriptionId}/providers/Microsoft.Storage/storageAccounts?api-version=${API}`,sub.tenantId)}catch(e){errors.push({subscriptionName:sub.displayName||sub.subscriptionId,subscriptionId:sub.subscriptionId,tenantId:sub.tenantId,...discoveryFailure(e)});return}for(let a of accts){let acct={name:a.name,subscriptionId:sub.subscriptionId,subscriptionName:sub.displayName,tenantId:sub.tenantId,resourceGroup:rgFromId(a.id),location:a.location||"",sku:a.sku?.name||"",kind:a.kind||""};accountIndex.set(a.name,acct),out.push(acct)}}),out.sort((x,y)=>x.name.localeCompare(y.name)),{accounts:out,errors}}function accountMeta(account){let cached=accountIndex.get(account);if(completeAccount(cached))return cached;let known=knownAccount(account);if(!known)return cached||null;let metadata={...known.metadata,tenantId:known.metadata.tenantId||known.subscription?.tenantId,resourceGroup:known.metadata.resourceGroup||rgFromId(known.metadata.id)};return completeAccount(metadata)?(accountIndex.set(account,metadata),metadata):cached||null}async function ensureAccountMeta(account,{readAccounts=armGetAll}={}){let cached=accountMeta(account);if(completeAccount(cached))return cached;if(accountResolutions.has(account))return accountResolutions.get(account);let known=knownAccount(account),subscriptionId=known?.metadata.subscriptionId,tenantId=known?.metadata.tenantId||known?.subscription?.tenantId;if(!subscriptionId||!tenantId)throw new Error(`Storage account '${account}' has no known subscription or tenant context. Select its subscription before accessing storage.`);let pending=(async()=>{let result=await listStorageAccountsForSubs([{...known.subscription,subscriptionId,tenantId}],{readAccounts});if(result.errors.length)throw new Error(`Could not resolve storage account '${account}': ${result.errors[0].error}`);let resolved=result.accounts.find(a=>a.name===account);if(!completeAccount(resolved))throw new Error(`Storage account '${account}' was not returned with complete metadata in subscription '${subscriptionId}'. Refresh that subscription's accounts.`);return resolved})();accountResolutions.set(account,pending);try{return await pending}finally{accountResolutions.get(account)===pending&&accountResolutions.delete(account)}}async function getAccountConfig(account){try{let m=await ensureAccountMeta(account),j=await armGet(`/subscriptions/${m.subscriptionId}/resourceGroups/${m.resourceGroup}/providers/Microsoft.Storage/storageAccounts/${account}?api-version=${API}`,m.tenantId),p=j.properties||{};return{ok:!0,exists:!0,allowSharedKeyAccess:p.allowSharedKeyAccess!==!1,publicNetworkAccess:p.publicNetworkAccess||"Enabled",defaultAction:p.networkAcls?.defaultAction||"Allow",provisioningState:p.provisioningState||"",sku:j.sku?.name||"",location:j.location||""}}catch(err){return err.statusCode===404?{ok:!0,exists:!1}:{ok:!1,error:String(err?.message||err)}}}async function fetchAccountKey(account){let m=await ensureAccountMeta(account),key=(await armPost(`/subscriptions/${m.subscriptionId}/resourceGroups/${m.resourceGroup}/providers/Microsoft.Storage/storageAccounts/${account}/listKeys?api-version=${API}`,m.tenantId))?.keys?.[0]?.value;if(!key)throw new Error("listKeys returned no key");return key}var svcCache=new Map;function accountUrl(account){return`https://${account}.blob.core.windows.net`}async function probe(svc){await svc.listContainers().byPage({maxPageSize:1})[Symbol.asyncIterator]().next()}function isAuthError(e){let s=e?.statusCode??e?.response?.status;if(s===401||s===403)return!0;let txt=`${e?.code||e?.name||""} ${e?.message||""}`;return/Authoriz|Authentic|KeyBasedAuthenticationNotPermitted|InvalidAuthenticationInfo|NoAuthenticationInformation/i.test(txt)}async function buildEntry(account){await ensureAccountMeta(account);try{let key=await fetchAccountKey(account);return{svc:new BlobServiceClient(accountUrl(account),new StorageSharedKeyCredential(account,key)),mode:"sharedKey",key}}catch{return{svc:new BlobServiceClient(accountUrl(account),storageCredential(account)),mode:"aad",key:null}}}async function withBlob(account,fn){let entry=svcCache.get(account);entry||(entry=await buildEntry(account),svcCache.set(account,entry));try{return await fn(entry.svc)}catch(e){if(entry.mode==="sharedKey"&&isAuthError(e)){let aad={svc:new BlobServiceClient(accountUrl(account),storageCredential(account)),mode:"aad",key:null};return svcCache.set(account,aad),await fn(aad.svc)}throw e}}async function resolveBlobService(account){if(await ensureAccountMeta(account),svcCache.has(account))return svcCache.get(account);let keyErr=null,aadErr=null;try{let key=await fetchAccountKey(account),cred=new StorageSharedKeyCredential(account,key),svc=new BlobServiceClient(accountUrl(account),cred);await probe(svc);let entry={svc,mode:"sharedKey",key};return svcCache.set(account,entry),entry}catch(err){keyErr=err}try{let svc=new BlobServiceClient(accountUrl(account),storageCredential(account));await probe(svc);let entry={svc,mode:"aad",key:null};return svcCache.set(account,entry),entry}catch(err){aadErr=err}throw new Error(`Could not access '${account}': key fallback ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${aadErr?.code||aadErr?.message||"n/a"}.`)}async function listContainers(account){return withBlob(account,async svc=>{let out=[];for await(let c of svc.listContainers())out.push({name:c.name,lastModified:c.properties?.lastModified||null});return out})}function mapBlob(b){return{name:b.name,size:b.properties?.contentLength??0,lastModified:b.properties?.lastModified?new Date(b.properties.lastModified).toISOString():null,contentType:b.properties?.contentType||"",accessTier:b.properties?.accessTier||"",blobType:b.properties?.blobType||"",tags:b.tags||null}}async function collectBlobs(cc,max,{prefix,onProgress,requireTags=!1}={}){let out=[],truncated=!1,read=async includeTags=>{for await(let b of cc.listBlobsFlat({prefix,includeTags})){if(out.length>=max){truncated=!0;break}out.push(mapBlob(b)),out.length%1e3===0&&onProgress?.(out.length)}onProgress?.(out.length)};try{await read(!0)}catch(error){if(error?.statusCode!==403||requireTags)throw error;out.length=0,truncated=!1,onProgress?.(0),await read(!1)}return out.truncated=truncated,out.limit=max,out}async function listBlobs(account,container,{max=5e3,complete=!1,...options}={}){return withBlob(account,svc=>collectBlobs(svc.getContainerClient(container),complete?1/0:max,options))}async function listBlobDirectory(account,container,{prefix="",max=5e3,list}={}){let collect=async(cc,includeTags)=>{let blobs=[],prefixes=[],truncated=!1;for await(let item of cc.listBlobsByHierarchy("/",{prefix,includeTags})){if(blobs.length+prefixes.length>=max){truncated=!0;break}item.kind==="prefix"?prefixes.push(item.name):blobs.push(mapBlob(item))}return{blobs,prefixes,truncated,limit:max}},read=async cc=>{try{return await collect(cc,!0)}catch(error){if(error?.statusCode!==403)throw error;return collect(cc,!1)}};return list?read({listBlobsByHierarchy:list}):withBlob(account,svc=>read(svc.getContainerClient(container)))}async function storagePage(iterator,continuationToken,maxPageSize=100){let result=await iterator.byPage({continuationToken:continuationToken||void 0,maxPageSize}).next();return result.done?{page:[],nextToken:null}:{page:result.value,nextToken:result.value.continuationToken||null}}async function listStoragePage({account,kind,resource,dir="",prefix="",token,sasUrl,resolve,tableClient}){let read=iterator=>storagePage(iterator,token);if(kind==="blob"||kind==="sas"){let fromClient=async svc=>{let cc=kind==="sas"?svc:resource?svc.getContainerClient(resource):null;if(!cc){let{page,nextToken}=await read(svc.listContainers());return{items:(page.containerItems||[]).map(c=>({name:c.name,lastModified:c.properties?.lastModified||null})),nextToken}}let result;try{result=await read(kind==="sas"?cc.listBlobsFlat({includeTags:!0}):cc.listBlobsByHierarchy("/",{prefix,includeTags:!0}))}catch(error){if(error?.statusCode!==403)throw error;result=await read(kind==="sas"?cc.listBlobsFlat():cc.listBlobsByHierarchy("/",{prefix}))}return{items:(result.page.segment?.blobItems||[]).map(mapBlob),prefixes:(result.page.segment?.blobPrefixes||[]).map(p=>p.name),nextToken:result.nextToken}};return kind==="sas"?fromClient(new ContainerClient(sasUrl)):resolve?fromClient((await resolve(account)).svc):withBlob(account,fromClient)}if(kind==="file"){let{svc}=await(resolve||resolveShareService)(account),{page,nextToken}=await read(resource?svc.getShareClient(resource).getDirectoryClient(dir).listFilesAndDirectories({includeTimestamps:!0}):svc.listShares());return{items:resource?[...(page.segment?.directoryItems||[]).map(x=>({name:x.name,kind:"directory",size:null,lastModified:null})),...(page.segment?.fileItems||[]).map(x=>({name:x.name,kind:"file",size:x.properties?.contentLength??0,lastModified:x.properties?.lastModified?new Date(x.properties.lastModified).toISOString():null}))]:(page.shareItems||[]).map(x=>({name:x.name,quotaGiB:x.properties?.quota??null})),nextToken}}if(kind==="queue"){let{svc}=await(resolve||resolveQueueService)(account),{page,nextToken}=await read(svc.listQueues());return{items:(page.queueItems||[]).map(x=>({name:x.name,approximateMessagesCount:null})),nextToken}}if(kind==="table"){let{svc,cred}=await(resolve||resolveTableService)(account),{page,nextToken}=await read(resource?(tableClient||new TableClient(tableUrl(account),resource,cred)).listEntities():svc.listTables());if(!resource)return{items:page.map(x=>({name:x.name})),nextToken};let columns=new Set(["partitionKey","rowKey","timestamp"]);return{entities:{rows:page.map(ent=>{let row={};for(let[key,value]of Object.entries(ent))key.startsWith("odata.")||key==="etag"||(columns.add(key),row[key]=value&&typeof value.toISOString=="function"?value.toISOString():value);return row}),columns:[...columns]},nextToken}}throw new Error("This storage view does not support continuation pages.")}async function createContainer(account,container,{resolve=resolveBlobService}={}){let{svc}=await resolve(account);return await svc.getContainerClient(container).create(),{ok:!0,container}}async function deleteContainer(account,container){let{svc}=await resolveBlobService(account);return await svc.getContainerClient(container).delete(),{ok:!0}}async function deleteBlob(account,container,name){let{svc}=await resolveBlobService(account);return await svc.getContainerClient(container).getBlockBlobClient(name).delete(),{ok:!0}}async function setBlobTier(account,container,name,tier){let{svc}=await resolveBlobService(account);return await svc.getContainerClient(container).getBlockBlobClient(name).setAccessTier(tier),{ok:!0}}async function uploadBlob(account,container,name,buffer,contentType){let{svc}=await resolveBlobService(account),cc=svc.getContainerClient(container);return await cc.createIfNotExists(),await cc.getBlockBlobClient(name).uploadData(buffer,contentType?{blobHTTPHeaders:{blobContentType:contentType}}:void 0),{ok:!0,name,size:buffer.length}}async function downloadBlob(account,container,name,{maxBytes=null}={}){let{svc}=await resolveBlobService(account),bc=svc.getContainerClient(container).getBlockBlobClient(name);if(Number.isFinite(maxBytes)&&maxBytes>0){let resp=await bc.download(0,maxBytes);return await streamToBuffer(resp.readableStreamBody)}return await bc.downloadToBuffer()}async function blobSize(account,container,name){let{svc}=await resolveBlobService(account),props=await svc.getContainerClient(container).getBlockBlobClient(name).getProperties();return Number(props.contentLength)||0}async function streamToBuffer(stream){let chunks=[];for await(let chunk of stream)chunks.push(Buffer.isBuffer(chunk)?chunk:Buffer.from(chunk));return Buffer.concat(chunks)}async function generateBlobSas(account,container,name,{minutes=60,permissions="r"}={}){let entry=await resolveBlobService(account),perms=BlobSASPermissions.parse(permissions||"r"),startsOn=new Date(Date.now()-5*6e4),expiresOn=new Date(Date.now()+Math.max(1,minutes)*6e4),common={containerName:container,blobName:name,permissions:perms,startsOn,expiresOn,protocol:SASProtocol.Https},sas,mode;if(entry.mode==="sharedKey"&&entry.key){let cred=new StorageSharedKeyCredential(account,entry.key);sas=generateBlobSASQueryParameters(common,cred).toString(),mode="account-key"}else{let udk=await entry.svc.getUserDelegationKey(startsOn,expiresOn);sas=generateBlobSASQueryParameters(common,udk,account).toString(),mode="user-delegation"}let encName=name.split("/").map(encodeURIComponent).join("/");return{url:`${accountUrl(account)}/${container}/${encName}?${sas}`,expiresOn:expiresOn.toISOString(),permissions:permissions||"r",mode}}async function generateContainerSas(account,container,{minutes=1440,permissions="rl"}={}){let entry=await resolveBlobService(account),perms=ContainerSASPermissions.parse(permissions||"rl"),startsOn=new Date(Date.now()-5*6e4),expiresOn=new Date(Date.now()+Math.max(1,minutes)*6e4),common={containerName:container,permissions:perms,startsOn,expiresOn,protocol:SASProtocol.Https},sas,mode;if(entry.mode==="sharedKey"&&entry.key){let cred=new StorageSharedKeyCredential(account,entry.key);sas=generateBlobSASQueryParameters(common,cred).toString(),mode="account-key"}else{let udk=await entry.svc.getUserDelegationKey(startsOn,expiresOn);sas=generateBlobSASQueryParameters(common,udk,account).toString(),mode="user-delegation"}return{url:`${accountUrl(account)}/${container}?${sas}`,expiresOn:expiresOn.toISOString(),permissions:permissions||"rl",mode}}async function listSasBlobs(sasUrl,{max=5e3,complete=!1,...options}={}){let cc=new ContainerClient(sasUrl);return collectBlobs(cc,complete?1/0:max,options)}async function downloadSasBlob(sasUrl,name){return await new ContainerClient(sasUrl).getBlockBlobClient(name).downloadToBuffer()}var queueCache=new Map;function queueUrl(account){return`https://${account}.queue.core.windows.net`}async function resolveQueueService(account){if(await ensureAccountMeta(account),queueCache.has(account))return queueCache.get(account);let keyErr=null;try{let key=await fetchAccountKey(account),svc=new QueueServiceClient(queueUrl(account),new QueueSharedKey(account,key));await svc.listQueues().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"sharedKey"};return queueCache.set(account,e),e}catch(err){keyErr=err}try{let svc=new QueueServiceClient(queueUrl(account),storageCredential(account));await svc.listQueues().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"aad"};return queueCache.set(account,e),e}catch(err){throw new Error(`Could not access queues for '${account}': key ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${err?.code||err?.message||"n/a"}.`)}}async function listQueues(account){let{svc}=await resolveQueueService(account),out=[];for await(let q of svc.listQueues()){let count=null;try{count=(await svc.getQueueClient(q.name).getProperties()).approximateMessagesCount??null}catch{}out.push({name:q.name,approximateMessagesCount:count})}return out}async function peekQueueMessages(account,queue,{max=32}={}){let{svc}=await resolveQueueService(account);return((await svc.getQueueClient(queue).peekMessages({numberOfMessages:Math.min(max,32)})).peekedMessageItems||[]).map(m=>({messageId:m.messageId,messageText:m.messageText,insertedOn:m.insertedOn?new Date(m.insertedOn).toISOString():null,dequeueCount:m.dequeueCount??0}))}function requireNewResource(items,name,kind){if(items.some(item=>item.name.toLowerCase()===name.toLowerCase()))throw new Error(`A ${kind} named "${name}" already exists. Choose a different name.`)}async function createQueue(account,queue){requireNewResource(await listQueues(account),queue,"queue");let{svc}=await resolveQueueService(account);return await svc.getQueueClient(queue).create(),{ok:!0}}async function deleteQueue(account,queue){let{svc}=await resolveQueueService(account);return await svc.getQueueClient(queue).delete(),{ok:!0}}async function sendQueueMessage(account,queue,text){let{svc}=await resolveQueueService(account);return{ok:!0,messageId:(await svc.getQueueClient(queue).sendMessage(String(text??""))).messageId}}async function clearQueueMessages(account,queue){let{svc}=await resolveQueueService(account);return await svc.getQueueClient(queue).clearMessages(),{ok:!0}}async function withReceivedMessage(account,queue,messageId,act){let{svc}=await resolveQueueService(account),qc=svc.getQueueClient(queue),msgs=(await qc.receiveMessages({numberOfMessages:32,visibilityTimeout:30})).receivedMessageItems||[],target=msgs.find(m=>m.messageId===messageId);for(let m of msgs)if(m.messageId!==messageId)try{await qc.updateMessage(m.messageId,m.popReceipt,void 0,0)}catch{}if(!target)throw new Error("That message isn't among the first 32 in the queue, so it can't be changed directly.");return await act(qc,target),{ok:!0}}async function updateQueueMessage(account,queue,messageId,text){return withReceivedMessage(account,queue,messageId,(qc,target)=>qc.updateMessage(messageId,target.popReceipt,String(text??""),0))}async function deleteQueueMessage(account,queue,messageId){return withReceivedMessage(account,queue,messageId,(qc,target)=>qc.deleteMessage(messageId,target.popReceipt))}var tableCache=new Map;function tableUrl(account){return`https://${account}.table.core.windows.net`}async function resolveTableService(account){if(await ensureAccountMeta(account),tableCache.has(account))return tableCache.get(account);let keyErr=null;try{let key=await fetchAccountKey(account),cred=new AzureNamedKeyCredential(account,key),svc=new TableServiceClient(tableUrl(account),cred);await svc.listTables().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"sharedKey",cred};return tableCache.set(account,e),e}catch(err){keyErr=err}try{let cred=storageCredential(account),svc=new TableServiceClient(tableUrl(account),cred);await svc.listTables().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"aad",cred};return tableCache.set(account,e),e}catch(err){throw new Error(`Could not access tables for '${account}': key ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${err?.code||err?.message||"n/a"}.`)}}async function listTables(account){let{svc}=await resolveTableService(account),out=[];for await(let t of svc.listTables())out.push({name:t.name});return out}async function queryTableEntities(account,table,{max=100}={}){let{cred}=await resolveTableService(account),tc=new TableClient(tableUrl(account),table,cred),rows=[],cols=new Set(["partitionKey","rowKey","timestamp"]);for await(let ent of tc.listEntities()){let row={};for(let k of Object.keys(ent)){if(k.startsWith("odata.")||k==="etag")continue;cols.add(k);let v=ent[k];row[k]=v&&typeof v=="object"&&typeof v.toISOString=="function"?v.toISOString():v}if(rows.push(row),rows.length>=max)break}return{columns:Array.from(cols),rows}}async function createTable(account,table){requireNewResource(await listTables(account),table,"table");let{svc}=await resolveTableService(account);return await svc.createTable(table),{ok:!0}}async function deleteTable(account,table){let{svc}=await resolveTableService(account);return await svc.deleteTable(table),{ok:!0}}async function upsertEntity(account,table,entity){if(!entity||!entity.partitionKey||!entity.rowKey)throw new Error("entity requires partitionKey and rowKey");let{cred}=await resolveTableService(account);return await new TableClient(tableUrl(account),table,cred).upsertEntity(entity,"Merge"),{ok:!0}}async function deleteEntity(account,table,partitionKey,rowKey){let{cred}=await resolveTableService(account);return await new TableClient(tableUrl(account),table,cred).deleteEntity(partitionKey,rowKey),{ok:!0}}var shareCache=new Map;function fileUrl(account){return`https://${account}.file.core.windows.net`}async function resolveShareService(account){if(await ensureAccountMeta(account),shareCache.has(account))return shareCache.get(account);let keyErr=null;try{let key=await fetchAccountKey(account),svc=new ShareServiceClient(fileUrl(account),new FileSharedKey(account,key));await svc.listShares().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"sharedKey"};return shareCache.set(account,e),e}catch(err){keyErr=err}try{let svc=new ShareServiceClient(fileUrl(account),storageCredential(account),{fileRequestIntent:"backup"});await svc.listShares().byPage({maxPageSize:1})[Symbol.asyncIterator]().next();let e={svc,mode:"aad"};return shareCache.set(account,e),e}catch(err){throw new Error(`Could not access file shares for '${account}': key ${keyErr?.code||keyErr?.message||"n/a"}; AAD ${err?.code||err?.message||"n/a"}.`)}}async function listShares(account){let{svc}=await resolveShareService(account),out=[];for await(let s of svc.listShares())out.push({name:s.name,quotaGiB:s.properties?.quota??null});return out}async function listShareItems(account,share,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account),dc=svc.getShareClient(share).getDirectoryClient(dir||""),out=[];for await(let item of dc.listFilesAndDirectories({includeTimestamps:!0}))out.push({name:item.name,kind:item.kind,size:item.kind==="file"?item.properties?.contentLength??0:null,lastModified:item.kind==="file"&&item.properties?.lastModified?new Date(item.properties.lastModified).toISOString():null});return out}async function createShare(account,share){requireNewResource(await listShares(account),share,"file share");let{svc}=await resolveShareService(account);return await svc.getShareClient(share).create(),{ok:!0}}async function deleteShare(account,share){let{svc}=await resolveShareService(account);return await svc.getShareClient(share).delete(),{ok:!0}}async function createShareDirectory(account,share,dir){let{svc}=await resolveShareService(account);return await svc.getShareClient(share).getDirectoryClient(dir).create(),{ok:!0}}async function uploadShareFile(account,share,name,buffer,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account),fc=svc.getShareClient(share).getDirectoryClient(dir).getFileClient(name);return await fc.create(buffer.length),buffer.length&&await fc.uploadData(buffer),{ok:!0,size:buffer.length}}async function downloadShareFile(account,share,name,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account);return await svc.getShareClient(share).getDirectoryClient(dir).getFileClient(name).downloadToBuffer()}async function deleteShareItem(account,share,name,kind,dir="",{resolve=resolveShareService}={}){let{svc}=await resolve(account),sc=svc.getShareClient(share);return kind==="directory"?await sc.getDirectoryClient(dir?`${dir}/${name}`:name).delete():await sc.getDirectoryClient(dir).getFileClient(name).delete(),{ok:!0}}function fmtBytes(n){if(n=Number(n)||0,n<1024)return`${n} B`;let u=["KB","MB","GB","TB","PB"],i=-1;do n/=1024,i++;while(n>=1024&&i=10?0:1)} ${u[i]}`}function globToRe(glob){let body=String(glob).replace(/[.+^${}()|[\]\\]/g,"\\$&").replace(/\*/g,".*").replace(/\?/g,".");return new RegExp("^"+body+"$","i")}function typeFamily(contentType,name){let ct=String(contentType||"").toLowerCase(),ext=String(name||"").toLowerCase().split(".").pop();return/^image\//.test(ct)||/^(png|jpe?g|gif|webp|bmp|svg|tiff?)$/.test(ext)?"image":/^video\//.test(ct)||/^(mp4|mov|avi|mkv|webm)$/.test(ext)?"video":/^audio\//.test(ct)||/^(mp3|wav|flac|ogg|m4a)$/.test(ext)?"audio":/json|xml|csv|text\/|javascript|yaml/.test(ct)||/^(json|xml|csv|txt|log|md|yaml|yml|js|ts|html?|css)$/.test(ext)?"text/data":/pdf|word|excel|powerpoint|officedocument|msword/.test(ct)||/^(pdf|docx?|xlsx?|pptx?)$/.test(ext)?"document":/zip|gzip|tar|compress|x-7z|rar/.test(ct)||/^(zip|gz|tar|7z|rar|bz2)$/.test(ext)?"archive":/octet-stream/.test(ct)||/^(bin|dat|iso|vhd|img)$/.test(ext)?"binary":ct.split("/")[0]||"other"}function applyBlobFilter(blobs,c={}){let list=Array.isArray(blobs)?blobs:[],nowMs=c.now?Date.parse(c.now):Date.now(),re=c.namePattern&&String(c.namePattern).trim()?globToRe(String(c.namePattern).trim()):null,prefix=c.prefix!=null&&String(c.prefix)!==""?String(c.prefix).toLowerCase():null,suffix=c.suffix!=null&&String(c.suffix)!==""?String(c.suffix).toLowerCase():null,contains=c.contains!=null&&String(c.contains)!==""?String(c.contains).toLowerCase():null,min=c.minSize!=null&&c.minSize!==""?Number(c.minSize):null,max=c.maxSize!=null&&c.maxSize!==""?Number(c.maxSize):null,older=c.olderThanDays!=null&&c.olderThanDays!==""?Number(c.olderThanDays):null,newer=c.newerThanDays!=null&&c.newerThanDays!==""?Number(c.newerThanDays):null,type=c.type&&String(c.type).trim()&&c.type!=="all"?String(c.type).trim():null,tiers=normList(c.tiers).map(t=>t.toLowerCase()),blobTypes=normList(c.blobTypes).map(t=>t.toLowerCase()),tagKeys=normList(c.tagKeys),tags=c.tags&&typeof c.tags=="object"?c.tags:null,DAY=864e5;return list.filter(b=>{let nm=String(b.name||""),nml=nm.toLowerCase();if(re&&!re.test(nm)||prefix&&!nml.startsWith(prefix)||suffix&&!nml.endsWith(suffix)||contains&&nml.indexOf(contains)===-1)return!1;let sz=Number(b.size)||0;if(min!=null&&szmax)return!1;if((older!=null||newer!=null)&&b.lastModified){let ageMs=nowMs-Date.parse(b.lastModified);if(older!=null&&!(ageMs>older*DAY)||newer!=null&&!(ageMs<=newer*DAY))return!1}else if(older!=null||newer!=null)return!1;if(type&&typeFamily(b.contentType,b.name)!==type||tiers.length&&tiers.indexOf(String(b.accessTier||"").toLowerCase())===-1||blobTypes.length&&blobTypes.indexOf(String(b.blobType||"").toLowerCase())===-1)return!1;if(tagKeys.length){let bt=b.tags||{};for(let k of tagKeys)if(!(k in bt))return!1}if(tags){let bt=b.tags||{};for(let k of Object.keys(tags))if(String(bt[k])!==String(tags[k]))return!1}return!0})}function normList(v){return v==null||v===""?[]:Array.isArray(v)?v.map(x=>String(x).trim()).filter(Boolean):String(v).split(",").map(x=>x.trim()).filter(Boolean)}function computeBlobStats(blobs){let list=Array.isArray(blobs)?blobs:[],n=list.length,sizes=list.map(b=>Number(b.size)||0),total=sizes.reduce((a,s)=>a+s,0),max=n?Math.max(...sizes):0,avg=n?Math.round(total/n):0,buckets=[{label:"0\u20131 KB",lo:0,hi:1024},{label:"1 KB\u20131 MB",lo:1024,hi:1048576},{label:"1\u2013100 MB",lo:1048576,hi:104857600},{label:"100 MB\u20131 GB",lo:104857600,hi:1073741824},{label:">1 GB",lo:1073741824,hi:1/0}].map(bk=>({label:bk.label,n:sizes.filter(s=>s>=bk.lo&&s({label,n:v.n,bytes:v.bytes})).sort((a,b)=>b.bytes-a.bytes),byTierMap=new Map;for(let b of list){let tier=String(b.accessTier||"").trim()||"\u2014",cur=byTierMap.get(tier)||{n:0,bytes:0};cur.n++,cur.bytes+=Number(b.size)||0,byTierMap.set(tier,cur)}let byTier=[...byTierMap.entries()].map(([label,v])=>({label,n:v.n,bytes:v.bytes})).sort((a,b)=>b.bytes-a.bytes),hasTier=byTier.some(t=>t.label!=="\u2014"),byExtMap=new Map;for(let b of list){let parts=String(b.name||"").toLowerCase().split("."),ext=parts.length>1?"."+parts.pop():"(none)",cur=byExtMap.get(ext)||{n:0,bytes:0};cur.n++,cur.bytes+=Number(b.size)||0,byExtMap.set(ext,cur)}let byExt=[...byExtMap.entries()].map(([label,v])=>({label,n:v.n,bytes:v.bytes})).sort((a,b)=>b.bytes-a.bytes).slice(0,8),topLargest=[...list].sort((a,b)=>(Number(b.size)||0)-(Number(a.size)||0)).slice(0,10).map(b=>({name:b.name,size:Number(b.size)||0,sizeh:fmtBytes(b.size),lastModified:b.lastModified||null}));return{count:n,totalBytes:total,totalh:fmtBytes(total),avgBytes:avg,avgh:fmtBytes(avg),maxBytes:max,maxh:fmtBytes(max),buckets,byType,byTier:hasTier?byTier:[],byExt,topLargest}}function filterAndStat(blobs,criteria={}){let filtered=applyBlobFilter(blobs,criteria);return{filtered,stats:computeBlobStats(filtered),criteria}}var OVERWRITE={overwrite:"true",skip:"false","if-newer":"ifSourceNewer"};function resolutionFlag(resolution){return OVERWRITE[resolution]||"true"}function planTransfer(sourceBlobs,destBlobs,resolution="overwrite"){let src=Array.isArray(sourceBlobs)?sourceBlobs:[],dstByName=new Map((Array.isArray(destBlobs)?destBlobs:[]).map(b=>[b.name,b])),conflicts=[],newFiles=[];for(let b of src)dstByName.has(b.name)?conflicts.push(b):newFiles.push(b);let toTransfer;if(resolution==="skip")toTransfer=newFiles.slice();else if(resolution==="if-newer"){let newerConflicts=conflicts.filter(b=>{let d=dstByName.get(b.name),s=Date.parse(b.lastModified||""),dm=Date.parse(d?.lastModified||"");return Number.isFinite(s)&&Number.isFinite(dm)?s>dm:!0});toTransfer=newFiles.concat(newerConflicts)}else toTransfer=src.slice();let bytes=toTransfer.reduce((a,b)=>a+(Number(b.size)||0),0),skipped=src.length-toTransfer.length;return{resolution,sourceCount:src.length,destCount:dstByName.size,conflictCount:conflicts.length,newCount:newFiles.length,transferCount:toTransfer.length,skippedCount:skipped,transferBytes:bytes,transferBytesh:fmtBytes(bytes),conflicts:conflicts.slice(0,100).map(b=>({name:b.name,size:Number(b.size)||0,sizeh:fmtBytes(b.size),lastModified:b.lastModified||null})),toTransfer:toTransfer.map(b=>b.name)}}function azcopyCommand({sourceUrl,destUrl,resolution="overwrite",includeNames=null,allSource=!1}={}){let q=s=>`"${String(s||"").replace(/[\\"$`]/g,"\\$&")}"`,flags=[`--overwrite=${resolutionFlag(resolution)}`];if(allSource)flags.push("--recursive");else if(Array.isArray(includeNames)){if(!includeNames.length)return{command:null,needsLogin:!1,empty:!0};flags.push(`--include-path ${q(includeNames.join(";"))}`),flags.push("--recursive")}else flags.push("--recursive");let needsLogin=!/[?&]sig=/.test(String(sourceUrl||""))||!/[?&]sig=/.test(String(destUrl||""));return{command:`azcopy copy ${q(sourceUrl)} ${q(destUrl)} ${flags.join(" ")}`,needsLogin}}function sniffText(bytes){let buf=bytes instanceof Uint8Array?bytes:new Uint8Array(bytes||[]);if(!buf.length)return{isText:!0,text:""};let control=0;for(let i=0;i13&&c<32||c===127)&&control++}if(control/buf.length>.1)return{isText:!1,text:null};try{let text=new TextDecoder("utf-8",{fatal:!1}).decode(buf);return(text.match(/\uFFFD/g)||[]).length/Math.max(text.length,1)>.1?{isText:!1,text:null}:{isText:!0,text}}catch{return{isText:!1,text:null}}}var MAGIC=[{off:0,hex:"67 6C 54 46",format:"glTF binary (GLB) 3D model",category:"3D model"},{off:0,hex:"89 50 4E 47 0D 0A 1A 0A",format:"PNG image",category:"image"},{off:0,hex:"FF D8 FF",format:"JPEG image",category:"image"},{off:0,hex:"47 49 46 38",format:"GIF image",category:"image"},{off:0,hex:"42 4D",format:"BMP image",category:"image"},{off:0,hex:"49 49 2A 00",format:"TIFF image (little-endian)",category:"image"},{off:0,hex:"4D 4D 00 2A",format:"TIFF image (big-endian)",category:"image"},{off:0,hex:"00 00 01 00",format:"ICO icon",category:"image"},{off:0,hex:"25 50 44 46",format:"PDF document",category:"document"},{off:0,hex:"D0 CF 11 E0 A1 B1 1A E1",format:"Legacy MS Office (OLE2: .doc/.xls/.ppt)",category:"document"},{off:0,hex:"50 4B 03 04",format:"ZIP archive (or OOXML .docx/.xlsx/.pptx, JAR, APK)",category:"archive"},{off:0,hex:"50 4B 05 06",format:"ZIP archive (empty)",category:"archive"},{off:0,hex:"1F 8B",format:"gzip archive",category:"archive"},{off:0,hex:"42 5A 68",format:"bzip2 archive",category:"archive"},{off:0,hex:"37 7A BC AF 27 1C",format:"7-Zip archive",category:"archive"},{off:0,hex:"52 61 72 21 1A 07",format:"RAR archive",category:"archive"},{off:0,hex:"FD 37 7A 58 5A 00",format:"XZ archive",category:"archive"},{off:257,hex:"75 73 74 61 72",format:"TAR archive",category:"archive"},{off:0,hex:"7F 45 4C 46",format:"ELF executable / shared object",category:"executable"},{off:0,hex:"4D 5A",format:"Windows PE executable (.exe/.dll)",category:"executable"},{off:0,hex:"CA FE BA BE",format:"Java class file",category:"executable"},{off:0,hex:"00 61 73 6D",format:"WebAssembly (WASM) module",category:"executable"},{off:0,hex:"4F 67 67 53",format:"Ogg media",category:"audio"},{off:0,hex:"49 44 33",format:"MP3 audio (ID3)",category:"audio"},{off:0,hex:"66 4C 61 43",format:"FLAC audio",category:"audio"},{off:0,hex:"53 51 4C 69 74 65 20 66 6F 72 6D 61 74 20 33 00",format:"SQLite database",category:"database"},{off:0,hex:"50 41 52 31",format:"Apache Parquet",category:"data"},{off:0,hex:"4F 62 6A 01",format:"Apache Avro",category:"data"}],EXT_FORMAT={glb:["glTF binary (GLB) 3D model","3D model"],gltf:["glTF 3D model","3D model"],obj:["Wavefront OBJ 3D model","3D model"],fbx:["Autodesk FBX 3D model","3D model"],stl:["STL 3D model","3D model"],usdz:["USDZ 3D scene","3D model"],ply:["PLY 3D model","3D model"],png:["PNG image","image"],jpg:["JPEG image","image"],jpeg:["JPEG image","image"],gif:["GIF image","image"],webp:["WebP image","image"],bmp:["BMP image","image"],tiff:["TIFF image","image"],ico:["ICO icon","image"],heic:["HEIC image","image"],avif:["AVIF image","image"],svg:["SVG vector image","image"],psd:["Photoshop document","image"],pdf:["PDF document","document"],docx:["Word document (OOXML)","document"],xlsx:["Excel workbook (OOXML)","document"],pptx:["PowerPoint deck (OOXML)","document"],doc:["Legacy Word document","document"],xls:["Legacy Excel workbook","document"],ppt:["Legacy PowerPoint deck","document"],zip:["ZIP archive","archive"],gz:["gzip archive","archive"],tgz:["gzip TAR archive","archive"],tar:["TAR archive","archive"],rar:["RAR archive","archive"],"7z":["7-Zip archive","archive"],bz2:["bzip2 archive","archive"],xz:["XZ archive","archive"],zst:["Zstandard archive","archive"],mp3:["MP3 audio","audio"],wav:["WAV audio","audio"],flac:["FLAC audio","audio"],ogg:["Ogg audio","audio"],m4a:["AAC audio","audio"],mp4:["MP4 video","video"],mov:["QuickTime video","video"],avi:["AVI video","video"],mkv:["Matroska video","video"],webm:["WebM video","video"],exe:["Windows executable","executable"],dll:["Windows library","executable"],so:["Shared object","executable"],wasm:["WebAssembly module","executable"],parquet:["Apache Parquet","data"],avro:["Apache Avro","data"],orc:["Apache ORC","data"],db:["SQLite database","database"],sqlite:["SQLite database","database"],bin:["Raw binary","binary"],dat:["Raw data","binary"]};function hexHead(buf,n=16){let out=[];for(let i=0;i{let sig=hex.split(" ").map(h=>parseInt(h,16));if(off+sig.length>buf.length)return!1;for(let i=0;ibuf.length)return{version,truncated:!0};json=new TextDecoder("utf-8").decode(buf.subarray(dstart,dend));break}off=dend}if(json==null)return{version,truncated:!0};let g;try{g=JSON.parse(json)}catch{return{version,truncated:!0}}let n=a=>Array.isArray(a)?a.length:0,accessors=g.accessors||[],vertices=0,triangles=0;for(let mesh of g.meshes||[])for(let prim of mesh.primitives||[]){let posIdx=prim.attributes&&prim.attributes.POSITION;posIdx!=null&&accessors[posIdx]&&(vertices+=accessors[posIdx].count||0),prim.indices!=null&&accessors[prim.indices]&&(triangles+=Math.floor((accessors[prim.indices].count||0)/3))}return{version,truncated:!1,meshes:n(g.meshes),materials:n(g.materials),textures:n(g.textures),images:n(g.images),animations:n(g.animations),nodes:n(g.nodes),accessors:n(g.accessors),vertices,triangles,generator:g.asset&&g.asset.generator||null,gltfVersion:g.asset&&g.asset.version||null}}function previewLang(name){let m=/\.([a-z0-9]+)$/i.exec(String(name||"")),ext=m?m[1].toLowerCase():"";return{json:"json",ndjson:"json",js:"javascript",mjs:"javascript",ts:"typescript",csv:"csv",tsv:"csv",xml:"xml",html:"html",htm:"html",md:"markdown",yml:"yaml",yaml:"yaml",log:"log",txt:"text",ini:"ini",conf:"ini",sql:"sql",sh:"shell",py:"python",cs:"csharp"}[ext]||ext||"text"}function parseSasUrl(rawUrl){let u;try{u=new URL(String(rawUrl||"").trim())}catch{return{ok:!1,error:"That doesn't look like a URL."}}if(u.protocol!=="https:"){let emulator=/^(127\.0\.0\.1|localhost|\[::1\])$/i.test(u.hostname);if(!(u.protocol==="http:"&&emulator))return{ok:!1,error:"SAS URL must use HTTPS \u2014 a SAS signature is a bearer credential and must not travel over plain HTTP."}}let q=u.searchParams;if(!q.get("sig"))return{ok:!1,error:"No SAS signature (sig=) in the URL \u2014 that's a plain URL, not a SAS."};let host=u.hostname,accountMatch=/^([^.]+)\.blob\./.exec(host),account=accountMatch?accountMatch[1]:host,segs=u.pathname.replace(/^\/+/,"").split("/"),container=segs[0]||"",blobPath=segs.slice(1).join("/"),perms=q.get("sp")||"",expiry=q.get("se")||"",resource=q.get("sr")||(blobPath?"b":container?"c":""),now=Date.now(),expMs=expiry?Date.parse(expiry):NaN,expired=Number.isFinite(expMs)&&expMs{let done=!1,finish=value=>{done||(done=!0,resolve(value))};execFile2("azcopy",["--version"],{timeout:4e3,windowsHide:!0},(err,stdout)=>{if(err){let missing=err.code==="ENOENT";finish({installed:!1,version:null,reason:missing?"notFound":"error",hint:missing?`AzCopy isn't on your PATH. Install it from ${AZCOPY_INSTALL_URL}, then re-open the transfer plan.`:`AzCopy was found but couldn't be queried (${String(err.message||err).slice(0,120)}).`,installUrl:AZCOPY_INSTALL_URL});return}let version=(String(stdout||"").match(/\d+\.\d+\.\d+/)||[])[0]||null;finish({installed:!0,version,reason:"ok",hint:null,installUrl:AZCOPY_INSTALL_URL})}).on("error",()=>finish({installed:!1,version:null,reason:"notFound",hint:`AzCopy isn't on your PATH. Install it from ${AZCOPY_INSTALL_URL}, then re-open the transfer plan.`,installUrl:AZCOPY_INSTALL_URL}))})),azcopyProbe}import"node:fs";var BUILD_INFO=resolveStudioBuildInfo(new URL("./extension.mjs",import.meta.url));import"node:fs";var TENANT_ICON=` @@ -2665,10 +2665,10 @@ Revision: `+info.revision+` ## Feedback -`;return(FEEDBACK_BASE+"?title="+encodeURIComponent(title)+"&body="+encodeURIComponent(body)).replace(/&/g,"&")}function escAttr(s){return String(s??"").replace(/[&<>"]/g,function(c){return{"&":"&","<":"<",">":">",'"':"""}[c]})}var BUILD_STAMP_HTML='v'+escAttr(BUILD_INFO.version)+"+"+escAttr(BUILD_INFO.revision)+"",FEEDBACK_HTML='',BODY_WITH_IDENTITY=BODY.replace("","").replace("",BUILD_STAMP_HTML).replace("",FEEDBACK_HTML);function pageHtml(nonce){let n=nonce?' nonce="'+nonce+'"':"";return'Azure Storage"+BODY_WITH_IDENTITY+'"}var DL_ROOT=path2.join(os2.homedir(),"Downloads","azure-storage");function redactEndpointError(message,endpoints){let msg=String(message).replace(/([?&]sig=)[^&\s"'<>]*/gi,"$1[redacted]");for(let raw of endpoints)try{let url=new URL(raw);msg=msg.replaceAll(raw,`${url.origin}${url.pathname}?[redacted]`);let signature=url.searchParams.get("sig");if(signature)for(let value of[signature,encodeURIComponent(signature)])msg=msg.replaceAll(value,"[redacted]")}catch{}return msg}var PREFS_FILE=path2.join(os2.homedir(),".azure-storage","prefs.json");async function readPrefs(){try{let raw=await fs.readFile(PREFS_FILE,"utf8"),obj=JSON.parse(raw)||{};return{pinned:obj.pinned&&typeof obj.pinned=="object"?obj.pinned:{},hidden:obj.hidden&&typeof obj.hidden=="object"?obj.hidden:{},hiddenTenants:obj.hiddenTenants||{},hiddenSubscriptions:obj.hiddenSubscriptions||{}}}catch{return{pinned:{},hidden:{}}}}async function writePrefs({pinned,hidden,hiddenTenants,hiddenSubscriptions}={}){let safePinned=pinned&&typeof pinned=="object"?pinned:{},safeHidden=hidden&&typeof hidden=="object"?hidden:{};await fs.mkdir(path2.dirname(PREFS_FILE),{recursive:!0});let previous=await readPrefs(),prefs={pinned:safePinned,hidden:safeHidden,hiddenTenants:hiddenTenants||previous.hiddenTenants||{},hiddenSubscriptions:hiddenSubscriptions||previous.hiddenSubscriptions||{}};return await fs.writeFile(PREFS_FILE,JSON.stringify(prefs)),prefs}async function saveDownload(container,name,buffer){let root=path2.resolve(DL_ROOT),full=path2.resolve(root,String(container||""),String(name||"").replace(/[\\/]+/g,path2.sep));if(full!==root&&!full.startsWith(root+path2.sep))throw new Error(`refusing to write outside the download folder: ${container}/${name}`);return await fs.mkdir(path2.dirname(full),{recursive:!0}),await fs.writeFile(full,buffer),full}async function openFolder(dir){let target=path2.resolve(dir||DL_ROOT),isDir=!1;try{isDir=(await fs.stat(target)).isDirectory()}catch{isDir=!1}if(!isDir){if(dir)return{ok:!1,target,error:"folder not found"};await fs.mkdir(target,{recursive:!0}).catch(()=>{}),isDir=!0}let attempts=process.platform==="win32"?[["explorer.exe",[target]],[process.env.ComSpec||"cmd.exe",["/c","start","",target]]]:process.platform==="darwin"?[["open",[target]]]:[["xdg-open",[target]]];for(let[cmd,args]of attempts)if(await new Promise(resolve=>{try{let child=spawn3(cmd,args,{detached:!0,stdio:"ignore"}),settled=!1;child.on("error",()=>{settled||(settled=!0,resolve(!1))}),child.unref(),setTimeout(()=>{settled||(settled=!0,resolve(!0))},200)}catch{resolve(!1)}}))return{ok:!0,target};return{ok:!1,target,error:"no file manager available"}}async function start({agent:agent2,port,az=azure_exports,listTransferSas=listSasBlobs2,transferDoctor=azcopyDoctor}={}){let subscriptionGeneration=0,navigationGeneration=0,discoveredSubscriptions=new Map,pageKey=t=>JSON.stringify([t.account||"",t.kind,t.resource||"",t.dir||t.prefix||""]),pageRequests=new Map,pageResults=new Map,serviceViews=new Map,viewFields={blob:["s_container","s_blobPrefix","s_blobPrefixes","s_blobs","s_blobsMore","s_stats","s_filtered","s_criteria","s_insight"],file:["s_fileDir","s_files"],queue:["s_messages"],table:["s_entities"]};function saveServiceView(st){st.s_account&&viewFields[st.s_kind]&&serviceViews.set(JSON.stringify([st.s_account,st.s_kind]),{...Object.fromEntries(["s_kind","s_item",...viewFields[st.s_kind]].map(key=>[key,st[key]])),incomplete:!!st.s_loading})}async function loadStoragePage(target,ctx,direction){let{getState,setState,log}=ctx,key=pageKey(target),old=getState().s_pages?.[key],cachedPages=direction?(pageResults.get(key)||[]).slice():[],index=direction==="last"?Math.max(0,cachedPages.length-1):direction==="next"?(old?.index||0)+1:direction==="previous"?(old?.index||0)-1:0;if(direction&&(!old||index<0||direction==="next"&&!old.nextToken&&!cachedPages[index]))return{ok:!1,error:"That page is not available. Refresh the current view."};let tokens=direction?old.tokens.slice():[null];direction==="next"&&!cachedPages[index]&&(tokens[index]=old.nextToken);let generation=target.resource&&target.kind!=="sas"?++navigationGeneration:null,request=(pageRequests.get(key)||0)+1;pageRequests.set(key,request);let sasUrl=target.kind==="sas"?getState().s_sasUrl:null;setState({s_pageLoading:key,s_error:null});let result=cachedPages[index]?{ok:!0,data:cachedPages[index]}:await safe(()=>az.listStoragePage({...target,token:tokens[index],...sasUrl?{sasUrl}:{}}));if(pageRequests.get(key)!==request||sasUrl&&sasUrl!==getState().s_sasUrl||generation!=null&&(generation!==navigationGeneration||target.account!==getState().s_account||target.kind!==getState().s_kind||target.resource!==getState().s_item))return{ok:!1,error:"Resource navigation changed; older page discarded."};if(!result.ok){let message=redactEndpointError(result.error,[sasUrl||""]);return setState({s_pageLoading:null,s_pageProgress:null,...target.resource?{s_loading:!1}:{},s_error:message,s_needsAuth:result.needsAuth}),log(`Read ${target.kind} page failed: ${message}`),{ok:!1,error:message}}let data=result.data;for(let scope of pageResults.keys()){let[account,kind,resource]=JSON.parse(scope);scope!==key&&!direction&&account===target.account&&kind===target.kind&&!!resource==!!target.resource&&pageResults.delete(scope)}cachedPages[index]=data,pageResults.set(key,cachedPages);let columns;target.kind==="table"&&target.resource&&(columns=[...new Set(cachedPages.flatMap(page=>page?.entities?.columns||[]))]);let patch={s_pages:{...getState().s_pages,[key]:{index,tokens,nextToken:data.nextToken||null,cachedPageCount:cachedPages.length,cachedItemCount:cachedPages.reduce((count,page)=>count+(page?.items?.length||page?.entities?.rows.length||0),0)}},s_pageProgress:null,s_pageLoading:getState().s_pageLoading===key?null:getState().s_pageLoading,...target.resource?{s_loading:!1}:{}};if(target.kind==="sas"){let parsed=parseSasUrl(getState().s_sasUrl);patch.s_sasBlobs=parsed.canRead?data.items.map(b=>({...b,url:blobSasUrl(getState().s_sasUrl,b.name)})):data.items,patch.s_sasStats=filterAndStat(data.items,{}).stats}else if(target.resource)if(target.kind==="blob"){let criteria=getState().s_criteria,filtered=criteria?filterAndStat(data.items,criteria):null;Object.assign(patch,{s_blobs:data.items,s_blobPrefixes:data.prefixes||[],s_blobsMore:!!data.nextToken,s_stats:filtered?.stats||null,s_filtered:filtered?filtered.filtered.map(b=>b.name):[]})}else target.kind==="file"?patch.s_files=data.items:target.kind==="table"&&(patch.s_entities={...data.entities,columns});else{let field={blob:"containers",file:"shares",queue:"queues",table:"tables"}[target.kind];setTree(ctx,target.account,{[field]:data.items},{[target.kind]:!1})}return setState(patch),{ok:!0,...target.kind==="sas"?{blobs:data.items.length}:target.resource?target.kind==="blob"?{blobs:data.items.length,directories:(data.prefixes||[]).length,truncated:!!data.nextToken}:target.kind==="file"?{items:data.items.length}:{entities:data.entities.rows.length}:{count:data.items.length,...target.kind==="blob"?{containers:data.items.map(item=>item.name)}:{}},page:index+1,hasNext:!!data.nextToken}}async function loadAccounts(_p,{setState,log}){setState({s_loading:!0,s_accountsLoading:!0,s_error:null});let r=await safe(()=>az.listStorageAccounts());return r.ok?(setState({s_loading:!1,s_accountsLoading:!1,s_accounts:r.data}),log(`Loaded ${r.data.length} storage accounts.`),{ok:!0,count:r.data.length}):(setState({s_loading:!1,s_accountsLoading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Load accounts failed: ${r.error}`),{ok:!1,error:r.error})}async function loadSubscriptions(_p,{setState,log}){setState({s_subsLoading:!0,s_error:null,s_seInstalled:az.storageExplorerInstalled()});let r=await safe(()=>az.listSubscriptions());if(!r.ok)return setState({s_subsLoading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Load subscriptions failed: ${r.error}`),{ok:!1,error:r.error};let inventory=await safe(()=>az.listTenants()),subs=[...r.data.filter(s=>!discoveredSubscriptions.has(s.tenantId)),...[...discoveredSubscriptions.values()].flat()].sort((a,b)=>(a.displayName||"").localeCompare(b.displayName||"")),tenants=inventory.ok?inventory.data:[];for(let sub of subs)tenants.some(t=>t.tenantId===sub.tenantId)||tenants.push({tenantId:sub.tenantId,displayName:"Cached directory",current:!1});return setState({s_subsLoading:!1,s_subscriptions:subs,s_tenants:tenants,s_tenantInventoryError:inventory.ok?null:inventory.error}),inventory.ok||log(`Current tenant inventory failed: ${inventory.error}`),log(`Found ${tenants.length} directories and ${subs.length} cached subscriptions.`),{ok:!0,count:subs.length}}async function selectSubscriptions({subscriptionIds},{getState,setState,log}){let generation=++subscriptionGeneration,requested=Array.isArray(subscriptionIds)?subscriptionIds:[],chosen=(getState().s_subscriptions||[]).filter(s=>requested.includes(s.subscriptionId)),ids=chosen.map(s=>s.subscriptionId),clearResource={s_account:null,s_container:null,s_kind:null,s_item:null,s_tree:{},s_containers:[],s_blobs:[],s_stats:null,s_filtered:[],s_shares:[],s_queues:[],s_tables:[],s_files:[],s_messages:[],s_entities:null},st=getState(),currentAccount=(st.s_accounts||[]).find(a=>a.name===st.s_account),keepResource=currentAccount&&ids.includes(currentAccount.subscriptionId);if(setState({s_selectedSubs:ids,s_loading:!0,s_accountsLoading:!0,s_error:null,s_needsAuth:!1,s_subscriptionErrors:[],...keepResource?{}:{s_accounts:[],...clearResource}}),!chosen.length)return setState({s_loading:!1,s_accountsLoading:!1}),log("Scope cleared. No subscriptions selected."),{ok:!0,count:0};log(`Loading storage accounts for ${chosen.length} subscription(s)\u2026`);let r=await safe(()=>az.listStorageAccountsForSubs(chosen));if(generation!==subscriptionGeneration)return{ok:!1,error:"Subscription selection changed while accounts were loading. Older results were discarded."};if(!r.ok)return setState({s_loading:!1,s_accountsLoading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Load accounts failed: ${r.error}`),{ok:!1,error:r.error};let{accounts,errors}=r.data,patch={s_loading:!1,s_accountsLoading:!1,s_accounts:accounts};if(getState().s_account&&!accounts.some(a=>a.name===getState().s_account)&&Object.assign(patch,clearResource),patch.s_subscriptionErrors=errors||[],errors&&errors.length){patch.s_error=`${errors.length} subscription(s) could not be read. ${accounts.length} storage account(s) loaded successfully.`;for(let e of errors)log(`Subscription ${e.subscriptionName} (${e.subscriptionId}, tenant ${e.tenantId||"unknown"}) failed: ${e.error}`)}return setState(patch),log(`Loaded ${accounts.length} accounts from ${chosen.length} subscription(s).`),{ok:!errors.length,count:accounts.length,errors}}function setTree({getState,setState},account,patch,loadingPatch){let tree={...getState().s_tree||{}},cur=tree[account]||{containers:null,shares:null,queues:null,tables:null,loading:{}};tree[account]={...cur,...patch||{},loading:{...cur.loading,...loadingPatch||{}}},setState({s_tree:tree})}async function openAccount({account},ctx){++navigationGeneration;let{getState,setState,log}=ctx;if(!account)return{ok:!1,error:"account required"};if(saveServiceView(getState()),setState({s_error:null,s_account:account,s_container:null,s_blobs:[],s_stats:null,s_filtered:[],s_criteria:null,s_insight:null,s_kind:null,s_item:null,s_files:[],s_messages:[],s_entities:null}),getState().s_tree&&getState().s_tree[account]&&getState().s_tree[account].containers!=null)return log(`Focused account ${account}.`),{ok:!0,cached:!0};if(az.listStoragePage)return loadStoragePage({account,kind:"blob"},ctx);setTree(ctx,account,{},{blob:!0}),log(`Opening account ${account}\u2026`);let r=await safe(()=>az.listContainers(account));return r.ok?(setTree(ctx,account,{containers:r.data},{blob:!1}),log(`${account}: ${r.data.length} containers.`),{ok:!0,containers:r.data.map(c=>c.name)}):(setTree(ctx,account,{},{blob:!1}),setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`Open ${account} failed: ${r.error}`),{ok:!1,error:r.error})}async function openContainer({container,account,prefix=""},ctx){let{getState,setState,log}=ctx,generation=++navigationGeneration;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(!container)return{ok:!1,error:"container required"};if(typeof prefix!="string"||prefix&&!prefix.endsWith("/"))throw new Error("Invalid blob directory prefix.");if(setState({s_loading:!0,s_error:null,s_account:account,s_container:container,s_kind:"blob",s_item:container,s_blobPrefix:prefix,s_blobPrefixes:[],s_blobs:[],s_blobsMore:!1,s_stats:null,s_filtered:[],s_criteria:null,s_insight:null}),az.listStoragePage)return loadStoragePage({account,kind:"blob",resource:container,prefix},ctx);log(`Listing blobs in ${account}/${container}\u2026`);let r=await safe(()=>az.listBlobDirectory(account,container,{prefix}));return generation!==navigationGeneration||getState().s_account!==account||getState().s_kind!=="blob"?{ok:!1,error:"Resource navigation changed; older blob listing discarded."}:r.ok?(setState({s_loading:!1,s_blobs:r.data.blobs,s_blobPrefixes:r.data.prefixes,s_blobsMore:!!r.data.truncated}),log(`${container}/${prefix}: ${r.data.blobs.length} blobs, ${r.data.prefixes.length} directories${r.data.truncated?" (listing capped at "+r.data.limit+" items)":""}.`),{ok:!0,blobs:r.data.blobs.length,directories:r.data.prefixes.length,truncated:r.data.truncated}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`List ${container} failed: ${r.error}`),{ok:!1,error:r.error})}async function listShares2({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(az.listStoragePage)return loadStoragePage({account,kind:"file"},ctx);setTree(ctx,account,{},{file:!0});let r=await safe(()=>az.listShares(account));return r.ok?(setTree(ctx,account,{shares:r.data},{file:!1}),log(`${account}: ${r.data.length} file shares.`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{file:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List shares failed: ${r.error}`),{ok:!1,error:r.error})}async function listQueues2({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(az.listStoragePage)return loadStoragePage({account,kind:"queue"},ctx);setTree(ctx,account,{},{queue:!0});let r=await safe(()=>az.listQueues(account));return r.ok?(setTree(ctx,account,{queues:r.data},{queue:!1}),log(`${account}: ${r.data.length} queues.`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{queue:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List queues failed: ${r.error}`),{ok:!1,error:r.error})}async function listTables2({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(az.listStoragePage)return loadStoragePage({account,kind:"table"},ctx);setTree(ctx,account,{},{table:!0});let r=await safe(()=>az.listTables(account));return r.ok?(setTree(ctx,account,{tables:r.data},{table:!1}),log(`${account}: ${r.data.length} tables.`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{table:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List tables failed: ${r.error}`),{ok:!1,error:r.error})}async function listContainersTree({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"account required"};if(getState().s_tree&&getState().s_tree[account]&&getState().s_tree[account].containers!=null)return{ok:!0,cached:!0};if(az.listStoragePage)return loadStoragePage({account,kind:"blob"},ctx);setTree(ctx,account,{},{blob:!0});let r=await safe(()=>az.listContainers(account));return r.ok?(setTree(ctx,account,{containers:r.data},{blob:!1}),log(`${account}: ${r.data.length} containers (tree).`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{blob:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List containers failed: ${r.error}`),{ok:!1,error:r.error})}async function openQueue({queue,account},{getState,setState,log}){let generation=++navigationGeneration;if(account=account||getState().s_account,!account||!queue)return{ok:!1,error:"open an account first"};setState({s_loading:!0,s_error:null,s_account:account,s_kind:"queue",s_item:queue,s_messages:[]}),log(`Peeking messages in ${account} \xB7 queue ${queue}\u2026`);let r=await safe(()=>az.peekQueueMessages(account,queue));return generation!==navigationGeneration||getState().s_account!==account||getState().s_kind!=="queue"||getState().s_item!==queue?{ok:!1,error:"Resource navigation changed; older queue listing discarded."}:r.ok?(setState({s_loading:!1,s_messages:r.data}),log(`${queue}: peeked ${r.data.length} message(s).`),{ok:!0,messages:r.data.length}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Peek ${queue} failed: ${r.error}`),{ok:!1,error:r.error})}async function openTable({table,account},ctx){let{getState,setState,log}=ctx;if(++navigationGeneration,account=account||getState().s_account,!account||!table)return{ok:!1,error:"open an account first"};if(setState({s_loading:!0,s_error:null,s_account:account,s_kind:"table",s_item:table,s_entities:null}),az.listStoragePage)return loadStoragePage({account,kind:"table",resource:table},ctx);log(`Querying entities in ${account} \xB7 table ${table}\u2026`);let r=await safe(()=>az.queryTableEntities(account,table));return r.ok?(setState({s_loading:!1,s_entities:r.data}),log(`${table}: ${r.data.rows.length} entities.`),{ok:!0,entities:r.data.rows.length}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Query ${table} failed: ${r.error}`),{ok:!1,error:r.error})}async function openShare({share,account,dir=""},ctx){let{getState,setState,log}=ctx,generation=++navigationGeneration;if(account=account||getState().s_account,!account||!share)return{ok:!1,error:"open an account first"};if(dir=shareDirectory(dir),setState({s_loading:!0,s_error:null,s_account:account,s_kind:"file",s_item:share,s_fileDir:dir,s_files:[]}),az.listStoragePage)return loadStoragePage({account,kind:"file",resource:share,dir},ctx);log(`Listing files in ${account} \xB7 share ${share}\u2026`);let r=await safe(()=>az.listShareItems(account,share,dir));return generation!==navigationGeneration||getState().s_account!==account||getState().s_kind!=="file"?{ok:!1,error:"Resource navigation changed; older file listing discarded."}:r.ok?(setState({s_loading:!1,s_files:r.data}),log(`${share}: ${r.data.length} item(s).`),{ok:!0,items:r.data.length}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`List ${share} failed: ${r.error}`),{ok:!1,error:r.error})}async function refreshCategory(account,kind,ctx){if(az.listStoragePage)return loadStoragePage({account,kind},ctx);kind==="blob"?setTree(ctx,account,{containers:await az.listContainers(account)}):kind==="queue"?setTree(ctx,account,{queues:await az.listQueues(account)}):kind==="table"?setTree(ctx,account,{tables:await az.listTables(account)}):kind==="file"&&setTree(ctx,account,{shares:await az.listShares(account)})}async function afterMutation(read,ctx){let result=await safe(read);if(result.ok&&result.data?.ok!==!1)return{ok:!0};let cause=result.ok?result.data.error:result.error,error="Operation completed, but the listing could not be refreshed. Refresh it before retrying any operation.";return ctx.setState({s_error:error}),ctx.log(`Post-operation refresh failed: ${cause}`),{ok:!1,error,operationCompleted:!0}}function mutate(fn,{refresh,reopen}={}){return async(payload,ctx)=>{let account=payload&&payload.account||ctx.getState().s_account;if(!account)return{ok:!1,error:"open an account first"};let r=await safe(()=>fn(account,payload,ctx));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),ctx.log(`Operation failed: ${r.error}`),{ok:!1,error:r.error};if(refresh){let result=await afterMutation(()=>refreshCategory(account,refresh,ctx),ctx);if(!result.ok)return result}if(reopen){let result=await afterMutation(()=>reopen(account,payload,ctx),ctx);if(result?.ok===!1)return result}return r.data??{ok:!0}}}let reopenQueue=(account,{queue},ctx)=>openQueue({account,queue},ctx),reopenTable=(account,{table},ctx)=>openTable({account,table},ctx),reopenShare=(account,{share,dir=""},ctx)=>{let st=ctx.getState();return st.s_account!==account||st.s_kind!=="file"||st.s_item!==share||(st.s_fileDir||"")!==dir?{ok:!0}:openShare({share,account,dir},ctx)};function shareDirectory(dir){if(typeof dir!="string"||dir.split("/").some(p=>p==="."||p==="..")||dir.includes("\\"))throw new Error("Invalid file-share directory path.");return dir.split("/").filter(Boolean).join("/")}async function runBatchDownload(names,{getState,setState,log}){let st=getState(),account=st.s_account,container=st.s_container;if(!account||!container)return{ok:!1,error:"open a container first"};let list=(names||[]).filter(Boolean);if(!list.length)return{ok:!1,error:"no blobs given"};let dir=path2.join(DL_ROOT,container),done=0,okc=0,failed=[];setState({s_batch:{op:"download",total:list.length,done,ok:okc,failed:[],running:!0,dir}}),log(`Downloading ${list.length} blob(s) from ${container}\u2026`);for(let name of list){let r=await safe(()=>az.downloadBlob(account,container,name));if(done++,r.ok)try{await saveDownload(container,name,r.data),okc++}catch(e){failed.push({name,error:"could not save to disk: "+(e&&e.message?e.message:String(e))})}else failed.push({name,error:r.error});setState({s_batch:{op:"download",total:list.length,done,ok:okc,failed:[...failed],running:donei&&i.name&&i.contentBase64);if(!list.length)return{ok:!1,error:"no items given"};let done=0,okc=0,failed=[];setState({s_batch:{op:"upload",total:list.length,done,ok:okc,failed:[],running:!0}}),log(`Uploading ${list.length} file(s) to ${container}\u2026`);for(let it of list){let buf=Buffer.from(it.contentBase64,"base64"),r=await safe(()=>az.uploadBlob(account,container,(st.s_blobPrefix||"")+it.name,buf,it.contentType));done++,r.ok?okc++:failed.push({name:it.name,error:r.error}),setState({s_batch:{op:"upload",total:list.length,done,ok:okc,failed:[...failed],running:doneopenContainer({account,container,prefix:st.s_blobPrefix||""},ctx),ctx):{ok:!0};return log(`Upload complete: ${okc} ok, ${failed.length} failed.`),{ok:refreshed.ok&&!failed.length,uploaded:okc,failed,...refreshed.ok?{}:{error:"Upload finished, but listing refresh failed.",operationCompleted:okc>0}}}async function runBatchCleanup(action,ctx){let{getState,setState,log}=ctx,st=getState(),account=st.s_account,container=st.s_container;if(!account||!container)return{ok:!1,error:"open a container first"};let list=(st.s_filtered||[]).filter(Boolean);if(!list.length)return{ok:!1,error:"filter some blobs first, nothing matched"};let op=action==="delete"?"delete":"archive",done=0,okc=0,failed=[];setState({s_batch:{op,total:list.length,done,ok:okc,failed:[],running:!0}}),log(`${op==="delete"?"Deleting":"Archiving"} ${list.length} matched blob(s) in ${container}\u2026`);for(let name of list){let r=op==="delete"?await safe(()=>az.deleteBlob(account,container,name)):await safe(()=>az.setBlobTier(account,container,name,"Archive"));done++,r.ok?okc++:failed.push({name,error:r.error}),setState({s_batch:{op,total:list.length,done,ok:okc,failed:[...failed],running:doneopenContainer({account,container,prefix:st.s_blobPrefix||""},ctx),ctx):{ok:!0};return log(`${op==="delete"?"Delete":"Archive"} complete: ${okc} ok, ${failed.length} failed.`),{ok:refreshed.ok&&!failed.length,op,cleaned:okc,failed,...refreshed.ok?{}:{error:"Cleanup finished, but listing refresh failed.",operationCompleted:okc>0}}}let routes={"/load-accounts":loadAccounts,"/load-subscriptions":loadSubscriptions,"/tenant-subscriptions":async({tenantId},ctx)=>{if(!(ctx.getState().s_tenants||[]).some(t=>t.tenantId===tenantId))throw new Error("Tenant is not in the discovered inventory.");ctx.setState({s_tenantLoading:tenantId});try{let subscriptions=await az.listTenantSubscriptions(tenantId);return discoveredSubscriptions.set(tenantId,subscriptions),ctx.setState({s_subscriptions:[...(ctx.getState().s_subscriptions||[]).filter(s=>s.tenantId!==tenantId),...subscriptions],s_tenantErrors:{...ctx.getState().s_tenantErrors||{},[tenantId]:null}}),ctx.log(`Refreshed ${subscriptions.length} subscriptions for tenant ${tenantId}.`),{ok:!0}}catch(error){let failure=az.discoveryFailure(error);return ctx.setState({s_tenantErrors:{...ctx.getState().s_tenantErrors||{},[tenantId]:failure}}),ctx.log(`Tenant subscription discovery failed: ${failure.error}`),{ok:!1,error:failure.message}}finally{ctx.setState({s_tenantLoading:null})}},"/select-subscriptions":selectSubscriptions,"/account":openAccount,"/activate-service":async({account,kind},ctx)=>{let st=ctx.getState();if(account!==st.s_account||!["blob","file","queue","table"].includes(kind))throw new Error("Service selection changed.");saveServiceView(st),++navigationGeneration;let saved=serviceViews.get(JSON.stringify([account,kind])),{incomplete,...cached}=saved||{};return ctx.setState({s_entities:null,s_blobs:[],s_blobPrefixes:[],s_files:[],s_messages:[],s_stats:null,s_filtered:[],s_criteria:null,s_container:null,...saved?cached:{s_kind:kind,s_item:null},s_loading:!1,s_error:null,s_pageLoading:null,s_pageProgress:null}),incomplete&&cached.s_item?kind==="blob"?openContainer({account,container:cached.s_item,prefix:cached.s_blobPrefix||""},ctx):kind==="file"?openShare({account,share:cached.s_item,dir:cached.s_fileDir||""},ctx):kind==="table"?openTable({account,table:cached.s_item},ctx):openQueue({account,queue:cached.s_item},ctx):{ok:!0,cached:!!saved}},"/container":openContainer,"/list-shares":listShares2,"/list-queues":listQueues2,"/list-tables":listTables2,"/storage-page":async({account,kind,resource,prefix="",dir="",direction},ctx)=>{let st=ctx.getState();if(!["first","last","next","previous","refresh","cancel"].includes(direction))throw new Error("Invalid page direction.");if(kind==="sas"){if(!st.s_sasInfo||account!==st.s_sasInfo.account||resource!==st.s_sasInfo.container)throw new Error("SAS connection changed; refresh its page.")}else if(account!==st.s_account||resource&&(kind!==st.s_kind||resource!==st.s_item||kind==="blob"&&prefix!==(st.s_blobPrefix||"")||kind==="file"&&dir!==(st.s_fileDir||"")))throw new Error("Resource navigation changed; page request discarded.");if(direction==="cancel"){let key=pageKey({account,kind,resource,prefix,dir});return pageRequests.set(key,(pageRequests.get(key)||0)+1),ctx.setState({s_pageLoading:null,s_pageProgress:null,...resource&&kind!=="sas"?{s_loading:!1}:{}}),{ok:!0,cancelled:!0}}return loadStoragePage({account,kind,resource,prefix,dir},ctx,direction==="refresh"?void 0:direction)},"/tree-containers":listContainersTree,"/open-queue":openQueue,"/open-table":openTable,"/open-share":openShare,"/download-many":({blobs},ctx)=>runBatchDownload(blobs,ctx),"/open-folder":async({dir},_ctx)=>await openFolder(dir),"/dismiss-batch":(_p,{setState})=>(setState({s_batch:null}),{ok:!0}),"/get-prefs":async()=>({ok:!0,prefs:await readPrefs()}),"/save-prefs":async(input={})=>({ok:!0,prefs:await writePrefs(input)}),"/upload-many":({items,account,container,prefix},ctx)=>{let st=ctx.getState();if(account!==void 0&&(account!==st.s_account||container!==st.s_container||prefix!==(st.s_blobPrefix||""))){let error="The upload destination changed. Choose files again in the intended directory.";return ctx.setState({s_error:error}),ctx.log(error),{ok:!1,error}}return runBatchUpload(items,ctx)},"/container-create":mutate((a,{container})=>az.createContainer(a,container),{refresh:"blob"}),"/container-delete":async({container,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteContainer(a,container));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"blob",ctx),ctx);return ctx.getState().s_kind==="blob"&&ctx.getState().s_item===container&&ctx.setState({s_kind:null,s_item:null,s_container:null,s_blobs:[]}),ctx.log(`Deleted container ${container}.`),refreshed},"/blob-delete":async({container,name,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteBlob(a,container,name));return r.ok?(await afterMutation(()=>openContainer({account:a,container,prefix:ctx.getState().s_blobPrefix||""},ctx),ctx)).ok?(ctx.log(`Deleted blob ${name}.`),{ok:!0}):{ok:!1,operationCompleted:!0,error:"Blob deleted, but listing refresh failed."}:(ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error})},"/generate-sas":async({container,name,account,minutes,permissions},{getState,log})=>{let a=account||getState().s_account,c=container||getState().s_container;if(!c||!name)return{ok:!1,error:"no blob selected"};let r=await safe(()=>az.generateBlobSas(a,c,name,{minutes:Number(minutes)||60,permissions:permissions||"r"}));return r.ok?(log(`Generated ${r.data.mode} SAS for ${name} (${r.data.permissions}, expires ${r.data.expiresOn}).`),{ok:!0,name,...r.data}):{ok:!1,error:r.error,needsAuth:r.needsAuth}},"/generate-container-sas":async({container,account,minutes,permissions},{getState,log})=>{let a=account||getState().s_account,c=container||getState().s_container;if(!c)return{ok:!1,error:"no container selected"};let r=await safe(()=>az.generateContainerSas(a,c,{minutes:Number(minutes)||1440,permissions:permissions||"rl"}));return r.ok?(log(`Generated ${r.data.mode} container SAS for ${c} (${r.data.permissions}, expires ${r.data.expiresOn}).`),{ok:!0,container:c,...r.data}):{ok:!1,error:r.error,needsAuth:r.needsAuth}},"/queue-create":mutate((a,{queue})=>az.createQueue(a,queue),{refresh:"queue"}),"/queue-delete":async({queue,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteQueue(a,queue));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"queue",ctx),ctx);return ctx.getState().s_kind==="queue"&&ctx.getState().s_item===queue&&ctx.setState({s_kind:null,s_item:null,s_messages:[]}),ctx.log(`Deleted queue ${queue}.`),refreshed},"/queue-send":mutate((a,{queue,text})=>az.sendQueueMessage(a,queue,text),{reopen:reopenQueue}),"/queue-clear":mutate((a,{queue})=>az.clearQueueMessages(a,queue),{reopen:reopenQueue}),"/queue-msg-update":mutate((a,{queue,messageId,text})=>az.updateQueueMessage(a,queue,messageId,text),{reopen:reopenQueue}),"/queue-msg-delete":mutate((a,{queue,messageId})=>az.deleteQueueMessage(a,queue,messageId),{reopen:reopenQueue}),"/table-create":mutate((a,{table})=>az.createTable(a,table),{refresh:"table"}),"/table-delete":async({table,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteTable(a,table));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"table",ctx),ctx);return ctx.getState().s_kind==="table"&&ctx.getState().s_item===table&&ctx.setState({s_kind:null,s_item:null,s_entities:null}),ctx.log(`Deleted table ${table}.`),refreshed},"/entity-upsert":mutate((a,{table,entity})=>az.upsertEntity(a,table,entity),{reopen:reopenTable}),"/entity-delete":mutate((a,{table,partitionKey,rowKey})=>az.deleteEntity(a,table,partitionKey,rowKey),{reopen:reopenTable}),"/share-create":mutate((a,{share})=>az.createShare(a,share),{refresh:"file"}),"/share-delete":async({share,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteShare(a,share));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"file",ctx),ctx);return ctx.getState().s_kind==="file"&&ctx.getState().s_item===share&&ctx.setState({s_kind:null,s_item:null,s_files:[]}),ctx.log(`Deleted file share ${share}.`),refreshed},"/share-mkdir":mutate((a,{share,dir="",name})=>az.createShareDirectory(a,share,shareDirectory(name?[dir,name].filter(Boolean).join("/"):dir)),{reopen:reopenShare}),"/share-delete-item":mutate((a,{share,name,kind,dir=""})=>az.deleteShareItem(a,share,name,kind,shareDirectory(dir)),{reopen:reopenShare}),"/share-upload":mutate((a,{share,name,contentBase64,dir=""})=>az.uploadShareFile(a,share,name,Buffer.from(contentBase64||"","base64"),shareDirectory(dir)),{reopen:reopenShare}),"/share-download":async({account,share,name,dir:directory=""},ctx)=>{let a=account||ctx.getState().s_account;directory=shareDirectory(directory);let r=await safe(()=>az.downloadShareFile(a,share,name,directory));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let dir=path2.join(DL_ROOT,share);try{await saveDownload(share,[directory,name].filter(Boolean).join("/"),r.data)}catch(e){let msg="could not save to disk: "+(e&&e.message?e.message:String(e));return ctx.setState({s_error:msg}),{ok:!1,error:msg}}return ctx.setState({s_batch:{op:"download",total:1,done:1,ok:1,failed:[],running:!1,dir}}),ctx.log(`Downloaded ${name} from share ${share} to ${dir}.`),{ok:!0,dir}},"/delete-selected":async({account,kind,resource,dir="",prefix="",names},ctx)=>{let st=ctx.getState();dir=shareDirectory(dir);let fail=error=>(ctx.setState({s_error:error}),ctx.log(`Delete selected failed: ${error}`),{ok:!1,error});if(!["blob","file"].includes(kind)||st.s_account!==account||st.s_kind!==kind||st.s_item!==resource||kind==="file"&&(st.s_fileDir||"")!==dir||kind==="blob"&&(st.s_blobPrefix||"")!==prefix)return fail("The open resource changed. Select items again before deleting.");let items=kind==="blob"?st.s_blobs||[]:st.s_files||[];if(!Array.isArray(names)||!names.length||names.some(n=>!items.some(i=>i.name===n)))return fail("Select items from the current listing before deleting.");let failures=[],deleted=0;for(let name of new Set(names)){let item=items.find(i=>i.name===name),result=await safe(()=>kind==="blob"?az.deleteBlob(account,resource,name):az.deleteShareItem(account,resource,name,item.kind,dir));result.ok?deleted++:(failures.push({name,error:result.error}),ctx.log(`Delete ${name} failed: ${result.error}`))}let refreshed=ctx.getState().s_account===account&&ctx.getState().s_kind===kind&&ctx.getState().s_item===resource&&(kind!=="file"||(ctx.getState().s_fileDir||"")===dir)&&(kind!=="blob"||(ctx.getState().s_blobPrefix||"")===prefix)?await(kind==="blob"?openContainer({account,container:resource,prefix},ctx):openShare({account,share:resource,dir},ctx)):{ok:!0};if(ctx.log(`Delete selected: ${deleted} deleted, ${failures.length} failed.`),failures.length||!refreshed.ok){let error=`${deleted} item(s) deleted; ${failures.length} failed.${refreshed.ok?"":" Listing refresh also failed."} Open diagnostics for details.`;return ctx.setState({s_error:error}),{ok:!1,deleted,failures,error,operationCompleted:deleted>0}}return{ok:!0,deleted}},"/diagnose":(_p,_ctx)=>({ok:!1,error:"diagnosis removed"}),"/filter":async(criteria,{getState,setState,log})=>{let st=getState();if(!(st.s_kind==="blob"&&st.s_container))return{ok:!1,error:"Open a container first to filter its blobs."};let blobs=st.s_blobs||[],{filtered,stats}=filterAndStat(blobs,criteria||{});return setState({s_criteria:criteria||{},s_filtered:filtered.map(b=>b.name),s_stats:stats}),log(`Filter matched ${filtered.length} of ${blobs.length} blobs.`),{ok:!0,matched:filtered.length,stats}},"/download-filtered":async(_p,ctx)=>{let names=ctx.getState().s_filtered||[];return runBatchDownload(names,ctx)},"/cleanup-filtered":({action},ctx)=>runBatchCleanup(action,ctx),"/transfer-plan":async({dest,resolution,useFiltered,source:srcContainer,sourceSas},{getState,setState,log})=>{let st=getState(),account=st.s_account,container=String(srcContainer||st.s_container||"").trim(),sourceSasUrl=String(sourceSas||"").trim(),fail=(message,severity="error")=>{let msg=redactEndpointError(message,[sourceSasUrl,String(dest||"")]);return setState({s_transferErr:msg,s_transferSeverity:severity,s_transferProgress:null,s_transfer:null}),log(`Transfer plan ${severity==="warning"?"blocked":"failed"}: ${msg}`),{ok:!1,error:msg,severity}},parsedSource;if(sourceSasUrl){if(parsedSource=parseSasUrl(sourceSasUrl),!parsedSource.ok)return fail(parsedSource.error);if(!parsedSource.container||parsedSource.blobPath||parsedSource.resource!=="c")return fail("Source must be a container SAS URL, not an account or blob SAS.");if(parsedSource.expired)return fail("Source SAS has expired. Provide a current container SAS.");if(!parsedSource.canRead||!parsedSource.canList)return fail("Source SAS needs Read and List permissions to plan and copy the container.");if(useFiltered)return fail("Filtered transfer applies only to the open account/container source, not a SAS source.")}else{if(!account)return fail("Open a storage account first. Pick one in the Explorer.");if(!container)return fail("Choose a source container.")}let isOpen=!sourceSasUrl&&st.s_kind==="blob"&&st.s_item===container;if(useFiltered&&(!isOpen||!st.s_criteria))return fail("Apply filter criteria to the open source container before planning a filtered transfer.");let progress=side=>count=>setState({s_transferProgress:{side,count}});setState({s_transfer:null,s_transferErr:null,s_transferSeverity:null,s_transferProgress:{side:"source",count:0}});let criteria=useFiltered?{...st.s_criteria,now:st.s_criteria.now||new Date().toISOString()}:null,options={complete:!0,onProgress:progress("source"),...criteria?{prefix:st.s_blobPrefix||"",requireTags:!!(criteria.tags&&Object.keys(criteria.tags).length||criteria.tagKeys?.length)}:{}},allBlobs;if(parsedSource){let rs=await safe(()=>listTransferSas(sourceSasUrl,options));if(!rs.ok)return fail(`Couldn't read the source SAS container: ${rs.error}`);allBlobs=rs.data.blobs}else{let rs=await safe(()=>az.listBlobs(account,container,options));if(!rs.ok)return fail(`Couldn't read source container '${container}': ${rs.error}`);allBlobs=rs.data}if(allBlobs.truncated)return fail("Source inventory is incomplete. No transfer plan was generated.");let prefix=st.s_blobPrefix||"",source=criteria?applyBlobFilter(allBlobs.filter(b=>b.name.startsWith(prefix)&&!b.name.slice(prefix.length).includes("/")),criteria):allBlobs,names=criteria?new Set(source.map(b=>b.name)):null,destStr=String(dest||"").trim();if(!destStr)return fail("Enter a destination: 'account/container' (e.g. myaccount/backups) or a container SAS URL.");if(!/[?&]sig=/.test(destStr)&&destStr.replace(/^https?:\/\//,"").split("/").filter(Boolean).length<2)return fail(`Destination must be 'account/container', not just '${destStr}'. Example: ${account}/${destStr||"backups"}, or paste a container SAS URL.`);if(`${account}/${container}`===destStr.replace(/^https?:\/\//,"").replace(".blob.core.windows.net",""))return fail("Source and destination are the same container. Pick a different destination.");let res=["overwrite","skip","if-newer"].includes(resolution)?resolution:"overwrite",destBlobs=[],destUrl="",destSas=!1;setState({s_transferProgress:{side:"destination",count:0}});let r=await safe(async()=>{if(/[?&]sig=/.test(destStr)){let p=parseSasUrl(destStr);if(!p.ok)throw new Error(p.error);if(!p.container||p.blobPath||p.resource!=="c")throw new Error("Destination must be a container SAS URL, not an account or blob SAS.");if(p.expired)throw new Error("Destination SAS has expired.");if(!p.canList)throw new Error("Destination SAS needs List permission to calculate conflicts.");if(!/w/i.test(p.permissions))throw new Error("Destination SAS needs Write permission for the planned copy.");return destUrl=p.containerUrl,destSas=!0,await listTransferSas(destStr,{complete:!0,onProgress:progress("destination")}).then(x=>x.blobs)}let m=destStr.replace(/^https?:\/\//,"").split("/"),dAcct=m[0].split(".")[0],dCont=m[1];if(!dAcct||!dCont)throw new Error("Destination must be 'account/container' or a container SAS URL.");return destUrl=`https://${dAcct}.blob.core.windows.net/${dCont}`,await az.listBlobs(dAcct,dCont,{complete:!0,onProgress:progress("destination")})});if(!r.ok)return fail(`Couldn't read the destination: ${r.error}`);if(destBlobs=r.data,destBlobs.truncated)return fail("Destination inventory is incomplete. No transfer plan was generated.");let sourceUrl=parsedSource?parsedSource.containerUrl:`https://${account}.blob.core.windows.net/${container}`;if(new URL(sourceUrl).origin+new URL(sourceUrl).pathname===new URL(destUrl).origin+new URL(destUrl).pathname)return fail("Source and destination are the same container. Pick a different destination.");if(res==="if-newer"){let byName=new Map(destBlobs.map(b=>[b.name,b]));if(source.some(b=>byName.has(b.name)&&(!Number.isFinite(Date.parse(b.lastModified))||!Number.isFinite(Date.parse(byName.get(b.name).lastModified)))))return fail("Last modified timestamps are missing for conflicting blobs. Choose Overwrite or Skip existing instead of If source newer.")}let plan=planTransfer(source,destBlobs,res),allSource=!names,{command,needsLogin,empty}=azcopyCommand({sourceUrl,destUrl,resolution:res,includeNames:names?plan.toTransfer:null,allSource});if(empty)return fail("Nothing to transfer \u2014 every selected blob already exists at the destination under the current conflict rule.");let azcopy=await transferDoctor(),summary={...plan,toTransfer:plan.toTransfer.slice(0,100),toTransferTruncated:plan.toTransfer.length>100};return setState({s_transferErr:null,s_transferSeverity:null,s_transferProgress:null,s_transfer:{plan:summary,command,needsLogin,azcopy,sourceLabel:parsedSource?`${parsedSource.account}/${parsedSource.container} (SAS)`:`${account}/${container}`,destLabel:destSas?`${plan.destCount} blobs (SAS)`:destStr,source:allSource?"all blobs":`${source.length} filtered blobs`}}),log(`Transfer plan: ${plan.transferCount} to transfer, ${plan.conflictCount} conflicts (${res}).${azcopy.installed?` AzCopy ${azcopy.version||"detected"}.`:" AzCopy not found \u2014 install it to run the command."}`),{ok:!0,plan:summary,...!parsedSource&&!destSas?{command}:{},needsLogin,azcopy}},"/azcopy-doctor":async(_p,_ctx)=>({ok:!0,azcopy:await azcopyDoctor({refresh:!0})}),"/sas-connect":async({url},ctx)=>{let{setState,log}=ctx;setState({s_loading:!0,s_error:null});let parsed=parseSasUrl(url);if(!parsed.ok)return setState({s_loading:!1,s_error:parsed.error}),{ok:!1,error:parsed.error};if(az.listStoragePage){if(parsed.expired||!parsed.canList||!parsed.container)return setState({s_loading:!1,s_error:"Provide an unexpired container SAS with List permission."}),{ok:!1,error:"Provide an unexpired container SAS with List permission."};let{containerUrl,...info}=parsed;return setState({s_sasUrl:url,s_sasInfo:info,s_sasBlobs:[]}),loadStoragePage({account:parsed.account,kind:"sas",resource:parsed.container},ctx)}log(`Connecting to SAS: ${describeSas(parsed)}`);let r=await safe(()=>listSasBlobs2(url));if(!r.ok)return setState({s_loading:!1,s_error:r.error}),log(`SAS connect failed: ${r.error}`),{ok:!1,error:r.error};let{stats}=filterAndStat(r.data.blobs,{}),withUrls=parsed.canRead?r.data.blobs.map(b=>({...b,url:blobSasUrl(url,b.name)})):r.data.blobs;return setState({s_loading:!1,s_sasUrl:url,s_sasInfo:{account:r.data.account,container:r.data.container,permissions:r.data.permissions,expiresOn:r.data.expiresOn,canRead:parsed.canRead,canList:parsed.canList,canWrite:parsed.canWrite,canDelete:parsed.canDelete,expired:parsed.expired,resource:parsed.resource},s_sasBlobs:withUrls,s_sasStats:stats}),log(`SAS connected: ${r.data.blobs.length} blobs in ${r.data.container}.`),{ok:!0,blobs:r.data.blobs.length}},"/sas-download":async({name},{getState,setState,log})=>{let url=getState().s_sasUrl;if(!url)return{ok:!1,error:"connect a SAS first"};let r=await safe(()=>downloadSasBlob2(url,name));if(!r.ok)return setState({s_error:r.error}),{ok:!1,error:r.error};let container=getState().s_sasInfo?.container||"sas",savedPath;try{savedPath=await saveDownload(container,name,Buffer.from(r.data.contentBase64,"base64"))}catch(e){let msg="could not save to disk: "+(e&&e.message?e.message:String(e));return setState({s_error:msg}),log(`SAS download failed: ${msg}`),{ok:!1,name,error:msg}}return log(`Downloaded '${name}' (${r.data.size} bytes) from SAS.`),{ok:!0,name,size:r.data.size,path:savedPath,dir:path2.dirname(savedPath)}},"/read-state":(_p,{getState})=>{let st=getState(),blobPage=st.s_pages?.[pageKey({account:st.s_account,kind:"blob",resource:st.s_container,prefix:st.s_blobPrefix||""})];return{ok:!0,state:{account:st.s_account,container:st.s_container,subscriptions:(st.s_subscriptions||[]).length,selectedSubs:st.s_selectedSubs||[],selectedSubscriptions:(st.s_subscriptions||[]).filter(s=>(st.s_selectedSubs||[]).includes(s.subscriptionId)),tenants:[...new Set((st.s_subscriptions||[]).map(s=>s.tenantId))],tenantInventory:st.s_tenants||[],tenantInventoryError:st.s_tenantInventoryError||null,loading:!!st.s_loading,error:st.s_error||null,subscriptionErrors:st.s_subscriptionErrors||[],accounts:(st.s_accounts||[]).map(a=>a.name),tree:st.s_tree||{},containers:Object.values(st.s_tree||{}).flatMap(t=>(t.containers||[]).map(c=>c.name)),blobs:st.s_blobs||[],blobsTruncated:blobPage?blobPage.index>0||!!blobPage.nextToken:!!st.s_blobs?.truncated,stats:st.s_stats||null,criteria:st.s_kind==="blob"&&st.s_criteria||null,filtered:st.s_filtered||[],batch:st.s_batch||null,listingPages:Object.entries(st.s_pages||{}).map(([scope,page])=>({scope:JSON.parse(scope),page:page.index+1,hasNext:!!page.nextToken})),sasInfo:st.s_sasInfo||null,sasBlobs:(st.s_sasBlobs||[]).map(b=>({name:b.name,size:b.size,lastModified:b.lastModified||null,contentType:b.contentType||null})),transfer:st.s_transfer?(()=>{let{command,sourceUrl,destUrl,...rest}=st.s_transfer;return rest})():null,insight:st.s_insight||null,preview:st.s_preview?{name:st.s_preview.name,isText:st.s_preview.isText,size:st.s_preview.size,truncated:st.s_preview.truncated,lang:st.s_preview.lang,format:st.s_preview.format||null,category:st.s_preview.category||null,magicHex:st.s_preview.magicHex||null,glb:st.s_preview.glb||null,isImage:!!st.s_preview.image,explaining:!!st.s_preview.explaining,explained:!!st.s_preview.explanation,text:st.s_preview.text||null}:null,s_queues:(st.s_queues||[]).map(q=>({name:q.name})),s_tables:(st.s_tables||[]).map(t=>({name:t.name})),s_shares:(st.s_shares||[]).map(x=>({name:x.name})),s_messages:(st.s_messages||[]).map(m=>({messageId:m.messageId||null,messageText:m.messageText})),s_entities:st.s_entities||null,s_files:(st.s_files||[]).map(f=>({name:f.name,kind:f.kind,size:f.size??null,lastModified:f.lastModified||null})),s_kind:st.s_kind||null,s_item:st.s_item||null,s_fileDir:st.s_fileDir||"",s_blobPrefix:st.s_blobPrefix||"",s_blobPrefixes:st.s_blobPrefixes||[]}}},"/canvas-answer":({answer,visual,target,suggestedFilter},{getState,setState})=>{let payload={pending:!1,answer:String(answer||""),visual:visual||null},st=getState(),t=target==="insights"||target==="preview"||target==="ask"?target:null;if(st.s_preview&&st.s_preview.explaining?t="preview":st.s_insight&&st.s_insight.pending?t="insights":t||(t="ask"),t==="insights")setState({s_insight:{...payload,suggestedFilter:suggestedFilter||null}});else if(t==="preview"){let p=st.s_preview||{};setState({s_preview:{...p,explaining:!1,explanation:payload}})}else setState({s_ask:payload});return{ok:!0}},"/insights":async(_p,{getState,setState,log})=>{let st=getState();return st.s_stats?(setState({s_insight:{pending:!0,answer:null,visual:null,suggestedFilter:null}}),log("Asked Copilot to explain the statistics."),await agent2?.requestInsight?.({account:st.s_account,container:st.s_container}),{ok:!0}):{ok:!1,error:"Filter or open a container first so there are statistics to explain."}},"/preview-blob":async({name},{getState,setState,log})=>{let st=getState(),account=st.s_account,container=st.s_container;if(!account||!container||!name)return{ok:!1,error:"Open a container and pick a blob to preview."};setState({s_preview:{name,pending:!0}});let MAX=32*1024,r=await safe(()=>az.downloadBlob(account,container,name,{maxBytes:MAX}));if(!r.ok)return setState({s_preview:{name,pending:!1,error:r.error}}),log(`Preview failed: ${r.error}`),{ok:!1,error:r.error};let slice=r.data.subarray(0,MAX),{isText,text}=sniffText(slice),bin=isText?null:sniffBinaryFormat(slice,name),mime=isText?null:imageMime(name),sz=await safe(()=>az.blobSize(account,container,name)),total=sz.ok?sz.data:slice.length,RENDER_MAX=25*1024*1024,GLB_MAX=50*1024*1024,image=mime&&total<=RENDER_MAX?{mime}:null,glb=null;if(bin&&/GLB/.test(bin.format)&&total<=GLB_MAX){let full=await safe(()=>az.downloadBlob(account,container,name));full.ok&&(glb=parseGlb(full.data))}return setState({s_preview:{name,pending:!1,size:total,truncated:total>MAX,isText,lang:previewLang(name),text:isText?text:null,format:bin?bin.format:null,category:bin?bin.category:null,magicHex:bin?bin.magicHex:null,image,glb,explanation:null}}),log(`Previewed ${name}: ${isText?"text":bin.format}, ${total} bytes.`),{ok:!0,isText,bytes:total}},"/explain-blob":async(_p,{getState,setState})=>{let p=getState().s_preview;return!p||p.pending||p.error?{ok:!1,error:"Preview a blob first."}:!p.isText&&!p.format?{ok:!1,error:"Preview a blob first."}:(setState({s_preview:{...p,explaining:!0,explanation:null}}),await agent2?.requestPreviewExplain?.({name:p.name,isText:!!p.isText,format:p.format||null,category:p.category||null,size:p.size,glb:p.glb||null}),{ok:!0})},"/dismiss-preview":(_p,{setState})=>(setState({s_preview:null}),{ok:!0}),"/dismiss-insight":(_p,{setState})=>(setState({s_insight:null}),{ok:!0}),"/open-storage-explorer":async(_p,{getState,log})=>{let st=getState(),account=st.s_account||null,kind=st.s_kind||null,item=st.s_item||null,where=item?`${account}/${item}`:account||"the app";log(`Opening Azure Storage Explorer \u2192 ${where}\u2026`);let r=await az.openInStorageExplorer({account,kind,item});return r.ok?(log(r.deepLink?`Opened Storage Explorer at ${where}.`:"Opened Storage Explorer."),{ok:!0,deepLink:r.deepLink}):r.notInstalled?(log("Azure Storage Explorer isn't installed. Opening the download page so you can get the free desktop app."),{ok:!1,notInstalled:!0,install:r.install}):(log(`Storage Explorer: ${r.error}`),{ok:!1,error:r.error})},"/dismiss-error":(_p,{setState})=>(setState({s_error:null,s_needsAuth:!1}),{ok:!0}),"/sign-in":async({tenantId}={},ctx)=>{let{setState,log}=ctx;if(tenantId&&![...ctx.getState().s_subscriptions||[],...ctx.getState().s_tenants||[]].some(s=>s.tenantId===tenantId))throw new Error("The requested tenant is not in the discovered Azure inventory.");setState({s_signingIn:!0,s_error:null}),log("Opening az login in your browser\u2026");let r=await az.signIn({tenantId});return r.ok?(setState({s_signingIn:!1,s_needsAuth:!1,s_error:null}),log("Signed in successfully. Loading subscriptions\u2026"),await loadSubscriptions({},ctx),(ctx.getState().s_selectedSubs||[]).length&&await selectSubscriptions({subscriptionIds:ctx.getState().s_selectedSubs},ctx),{ok:!0}):(setState({s_signingIn:!1,s_error:r.error,s_needsAuth:!0}),log(`Sign-in failed: ${r.error}`),{ok:!1,error:r.error})}},initialState={s_subscriptions:[],s_selectedSubs:[],s_subsLoading:!1,s_accounts:[],s_tree:{},s_containers:[],s_blobs:[],s_filtered:[],s_shares:[],s_queues:[],s_tables:[],s_files:[],s_messages:[],s_entities:null,s_kind:null,s_item:null,s_svcLoading:null,s_account:null,s_container:null,s_stats:null,s_batch:null,s_sasInfo:null,s_sasBlobs:[],s_ask:null,s_transfer:null,s_insight:null,s_preview:null,s_transferErr:null,s_loading:!1,s_accountsLoading:!1,s_error:null,activityLog:[],s_signingIn:!1,s_seInstalled:null};async function mediaHandler(pathname,query,{getState}){if(pathname!=="/blob-media")return null;let name=query.get("name"),st=getState(),p=st.s_preview;if(!p||p.name!==name||!p.image)return null;let account=st.s_account,container=st.s_container;if(!account||!container)return null;let r=await safe(()=>az.downloadBlob(account,container,name));return r.ok?{contentType:p.image.mime||imageMime(name)||"application/octet-stream",buffer:r.data}:null}let server2=await createCanvasServer({html:pageHtml,routes,media:mediaHandler,initialState,port});if(typeof az.registerAccountContext=="function"){let releaseContext=az.registerAccountContext(()=>({accounts:server2.getState().s_accounts,subscriptions:server2.getState().s_subscriptions})),close=server2.close;server2.close=()=>{releaseContext(),close()}}return server2.loadAccounts=()=>loadAccounts({},{getState:server2.getState,setState:server2.setState,log:server2.log}),server2.loadSubscriptions=()=>loadSubscriptions({},{getState:server2.getState,setState:server2.setState,log:server2.log}),server2}var session;async function post(server2,route,body){let res=await fetch(`http://127.0.0.1:${server2.port}${route}`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(body||{})});try{return await res.json()}catch{return{ok:res.ok}}}var agent={async requestInsight({container}={}){session?.send({prompt:`On the "Azure Storage" canvas, the user clicked "Explain these statistics"${container?` for container "${container}"`:""}. +`;return(FEEDBACK_BASE+"?title="+encodeURIComponent(title)+"&body="+encodeURIComponent(body)).replace(/&/g,"&")}function escAttr(s){return String(s??"").replace(/[&<>"]/g,function(c){return{"&":"&","<":"<",">":">",'"':"""}[c]})}var BUILD_STAMP_HTML='v'+escAttr(BUILD_INFO.version)+"+"+escAttr(BUILD_INFO.revision)+"",FEEDBACK_HTML='',BODY_WITH_IDENTITY=BODY.replace("","").replace("",BUILD_STAMP_HTML).replace("",FEEDBACK_HTML);function pageHtml(nonce){let n=nonce?' nonce="'+nonce+'"':"";return'Azure Storage"+BODY_WITH_IDENTITY+'"}import{randomUUID}from"node:crypto";import{execFile as execFile3}from"node:child_process";import{closeSync,constants as constants2,fstatSync,openSync,readSync}from"node:fs";import{homedir}from"node:os";import path2 from"node:path";var ID=/^[a-z][a-z0-9_.-]{0,79}$/,VERSION=/^[a-zA-Z0-9][a-zA-Z0-9.+_-]{0,39}$/,SOURCES=new Set(["model","panel","system","unknown"]),CONTROL_TYPES=new Set(["button","link","select","input","textarea","details","other"]),INTERACTIONS=new Set(["click","change","submit"]),FAILURE_CODES=Object.freeze({succeeded:"",failed:"action_error",rejected:"action_rejected",cancelled:"action_cancelled"}),RESERVED=new Set(["__proto__","constructor","prototype"]),USAGE_ENVELOPE_SCHEMA_VERSION=2,DEFAULT_REQUEST_TIMEOUT_MS=1e4,PUBLIC_CANVAS_USAGE_SERVICE=Object.freeze({serviceId:"public-canvas-product-usage",schemaVersion:USAGE_ENVELOPE_SCHEMA_VERSION,dataClassification:"pseudonymous_product_usage",endpoint:"https://canvas-metrics-pilot-0b8944-add3hsghhddcbxe9.b01.azurefd.net/api/events"}),PUBLIC_CANVAS_USAGE_ENDPOINT=PUBLIC_CANVAS_USAGE_SERVICE.endpoint,GITHUB_USER_ID=/^[1-9][0-9]{0,19}$/;function telemetryPreference(){let fd;try{try{let home=process.env.COPILOT_HOME||path2.join(homedir(),".copilot");if(!path2.isAbsolute(home))return{disabled:!0,invalid:!0};fd=openSync(path2.join(home,"canvases","telemetry.json"),constants2.O_RDONLY|constants2.O_NONBLOCK);let stat2=fstatSync(fd);if(!stat2.isFile()||stat2.size>4096)return{disabled:!0,invalid:!0};let bytes=Buffer.alloc(4097),size=0,count;for(;size0;)size+=count;if(size>4096)return{disabled:!0,invalid:!0};let value=JSON.parse(bytes.toString("utf8",0,size));return!value||Array.isArray(value)||typeof value.enabled!="boolean"?{disabled:!0,invalid:!0}:{disabled:!value.enabled,invalid:!1}}finally{fd!==void 0&&closeSync(fd)}}catch(error){return error.code==="ENOENT"?{disabled:!1,invalid:!1}:{disabled:!0,invalid:!0}}}function githubCliEnvironment(source){let env={...source};for(let key of Object.keys(env))["GH_TOKEN","GITHUB_TOKEN"].includes(key.toUpperCase())&&delete env[key];return env}function runFile(command,args,options,execFileImpl){return new Promise((resolve,reject)=>{execFileImpl(command,args,options,(error,stdout)=>{error?reject(error):resolve(stdout)})})}async function resolveGitHubCliUserId({signal,env=process.env,execFileImpl=execFile3}={}){if(typeof execFileImpl!="function")throw new TypeError("GitHub CLI executor must be a function.");let stdout;try{stdout=await runFile("gh",["api","--hostname","github.com","user","--jq",".id"],{env:githubCliEnvironment(env),signal,timeout:5e3,maxBuffer:1024,windowsHide:!0},execFileImpl)}catch{throw new Error("GitHub identity is unavailable.")}let githubUserId=String(stdout).trim();if(!GITHUB_USER_ID.test(githubUserId))throw new Error("GitHub identity is unavailable.");return githubUserId}function identifier(value,label,pattern=ID){if(typeof value!="string"||!pattern.test(value)||RESERVED.has(value))throw new TypeError(`${label} must be a bounded, code-defined identifier.`);return value}function record(value,label){if(!value||typeof value!="object"||![Object.prototype,null].includes(Object.getPrototypeOf(value)))throw new TypeError(`${label} must be a plain record.`);return value}function integer(value,min,max,label){if(!Number.isSafeInteger(value)||valuemax)throw new TypeError(`${label} must be an integer from ${min} to ${max}.`);return value}function endpoint(value){try{let url=new URL(value);if(url.protocol==="https:"&&!url.username&&!url.password&&!url.search&&!url.hash)return url.href}catch{}throw new TypeError("Telemetry endpoint must be credential-free HTTPS without a query or fragment.")}function createCanvasUsageMetrics(options={}){return createUsageMetrics(options)}function createUsageMetrics(options,skillContract){let{contract,canvasVersion,releaseChannel="development",enabled:requestedEnabled=!1,endpoint:destination,audience,getAccessToken,transport,fetchImpl=globalThis.fetch,getGitHubUserId,now=Date.now,randomId=randomUUID,onDiagnostic,batchSize=20,maxQueueSize=100,flushIntervalMs=1e3,requestTimeoutMs=DEFAULT_REQUEST_TIMEOUT_MS,closeTimeoutMs=DEFAULT_REQUEST_TIMEOUT_MS}=options;if(contract!==void 0&&(record(contract,"contract"),["canvasId","host","actionUsage","controls"].some(key=>Object.hasOwn(options,key))))throw new TypeError("Contract identity and registries cannot be overridden.");let canvasId=contract?.canvasId??options.canvasId,host=contract?.host??options.host??"copilot_app",actionUsage=contract?.actions??options.actionUsage??{},controls=contract?.controls??options.controls??{};if(identifier(canvasId,"canvasId"),identifier(canvasVersion,"canvasVersion",VERSION),!["copilot_app","mcp_app"].includes(host))throw new TypeError("Unsupported telemetry host.");if(contract!==void 0){if(!Array.isArray(contract.versions)||!contract.versions.length||contract.versions.some(version=>typeof version!="string"||!VERSION.test(version)))throw new TypeError("Contract versions must be bounded version identifiers.");if(!contract.versions.includes(canvasVersion))throw new TypeError("Canvas version is not registered by the telemetry contract.")}if(!["development","internal","preview","stable"].includes(releaseChannel))throw new TypeError("Unsupported telemetry release channel.");if(typeof requestedEnabled!="boolean")throw new TypeError("enabled must be a boolean.");let preference=requestedEnabled?telemetryPreference():void 0,enabled=requestedEnabled&&!preference.disabled,url=destination===void 0&&(!enabled||transport!==void 0)?void 0:endpoint(destination);for(let[name,fn]of Object.entries({now,randomId}))if(typeof fn!="function")throw new TypeError(`${name} must be a function.`);if(transport!==void 0&&typeof transport!="function")throw new TypeError("transport must be a function.");if(getAccessToken!==void 0&&typeof getAccessToken!="function")throw new TypeError("getAccessToken must be a function.");if(enabled&&!transport&&typeof fetchImpl!="function")throw new TypeError("fetchImpl must be a function.");if(getGitHubUserId!==void 0&&typeof getGitHubUserId!="function")throw new TypeError("getGitHubUserId must be a function.");if(audience!==void 0&&(typeof audience!="string"||!audience.trim()||audience.length>512||/[\r\n]/.test(audience)))throw new TypeError("audience must be a bounded nonempty string.");if(onDiagnostic!==void 0&&typeof onDiagnostic!="function")throw new TypeError("onDiagnostic must be a function.");integer(batchSize,1,100,"batchSize"),integer(maxQueueSize,batchSize,1e3,"maxQueueSize"),integer(flushIntervalMs,10,6e4,"flushIntervalMs"),integer(requestTimeoutMs,10,3e4,"requestTimeoutMs"),integer(closeTimeoutMs,10,3e4,"closeTimeoutMs");let actions=new Map(Object.entries(record(actionUsage,"actionUsage")).map(([name,entry])=>{if(identifier(name,"action name"),record(entry,"action usage"),identifier(entry.featureId,"featureId"),identifier(entry.featureArea,"featureArea"),!["intentional","automatic","excluded"].includes(entry.usageClass)||typeof entry.mutates!="boolean")throw new TypeError("Action usage requires a supported usageClass and boolean mutates.");return[name,Object.freeze({featureId:entry.featureId,featureArea:entry.featureArea,usageClass:entry.usageClass,mutates:entry.mutates})]})),controlRegistry=new Map(Object.entries(record(controls,"controls")).map(([id,type])=>{if(identifier(id,"control ID"),!CONTROL_TYPES.has(type))throw new TypeError("Unsupported telemetry control type.");return[id,type]})),queue=[],stats={delivered:0,dropped:0,invalid:0},reported=new Set,shutdown=new AbortController,timer,activeFlush,activeController,closePromise,inFlight=0,closing=!1,resolvedGitHubUserId;function diagnose(code){if(reported.has(code))return;reported.add(code);let warn=message=>{try{process.emitWarning(message,{code:"CANVAS_USAGE_METRICS"})}catch{}};if(onDiagnostic){let reportFailure=()=>warn("Canvas telemetry diagnostic callback failed.");try{Promise.resolve(onDiagnostic(Object.freeze({code}))).catch(reportFailure)}catch{reportFailure()}}else warn(`Canvas telemetry: ${code}.`)}function invalid(){return stats.invalid+=1,diagnose("invalid_event"),!1}preference?.invalid&&diagnose("preference_unavailable");async function githubIdentity(signal){if(resolvedGitHubUserId)return resolvedGitHubUserId;try{let value=await getGitHubUserId(signal);if(signal.aborted)return;if(typeof value=="string"&&GITHUB_USER_ID.test(value))return resolvedGitHubUserId=value,value}catch{}diagnose("identity_unavailable")}function schedule(){closing||timer||activeFlush||!queue.length||(timer=setTimeout(()=>{timer=void 0,flush()},queue.length>=batchSize?0:flushIntervalMs),timer.unref?.())}function enqueue(eventName,fields={}){if(!enabled||closing)return!1;try{let eventId=randomId();if(typeof eventId!="string"||!/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(eventId))return invalid();let event=Object.freeze({...skillContract?{schemaVersion:2,pluginName:skillContract.pluginName,pluginVersion:canvasVersion}:{schemaVersion:1,canvasId,canvasVersion},host,releaseChannel,timestamp:new Date(now()).toISOString(),eventId,eventName,invocationSource:"unknown",...fields}),overflow=queue.length===maxQueueSize;return overflow&&(queue.shift(),stats.dropped+=1),queue.push(event),overflow&&diagnose("queue_overflow"),queue.length>=batchSize&&!activeFlush?flush():schedule(),!0}catch{return stats.dropped+=1,diagnose("event_construction_failed"),!1}}async function deliver(batch){let controller=new AbortController;activeController=controller;let stop=()=>controller.abort(shutdown.signal.reason),deadline=setTimeout(()=>controller.abort("delivery_timeout"),requestTimeoutMs);deadline.unref?.(),shutdown.signal.addEventListener("abort",stop,{once:!0}),shutdown.signal.aborted&&stop();let onAbort,aborted=new Promise(resolve=>{onAbort=()=>resolve(controller.signal.reason),controller.signal.addEventListener("abort",onAbort,{once:!0}),controller.signal.aborted&&onAbort()}),request=Promise.resolve().then(async()=>{if(controller.signal.aborted)return controller.signal.reason;if(transport){await transport(Object.freeze(batch),{signal:controller.signal});return}let headers={"Content-Type":"application/json"};if(getAccessToken){let credential2=await getAccessToken(audience,controller.signal);if(controller.signal.aborted)return controller.signal.reason;let token=typeof credential2=="string"?credential2:credential2?.accessToken;if(typeof token!="string"||!token.trim()||/[\r\n]/.test(token))return"delivery_failed";headers.Authorization=`Bearer ${token}`}let githubUserId=getGitHubUserId?await githubIdentity(controller.signal):void 0;if(getGitHubUserId&&controller.signal.aborted)return controller.signal.reason;let response=await fetchImpl(url,{method:"POST",headers,body:JSON.stringify({schemaVersion:USAGE_ENVELOPE_SCHEMA_VERSION,...githubUserId?{githubUserId}:{},events:batch}),signal:controller.signal,redirect:"error",credentials:"omit"}),accepted=response?.ok;return await response?.body?.cancel(),accepted?void 0:"delivery_rejected"}).catch(()=>"delivery_failed");try{let failure=await Promise.race([request,aborted]);return failure&&diagnose(failure),{delivered:failure?0:batch.length,dropped:failure?batch.length:0}}finally{clearTimeout(deadline),shutdown.signal.removeEventListener("abort",stop),controller.signal.removeEventListener("abort",onAbort),activeController===controller&&(activeController=void 0)}}function flush(){if(activeFlush)return activeFlush;if(clearTimeout(timer),timer=void 0,!queue.length)return Promise.resolve({delivered:0,dropped:0});let batch=queue.splice(0,batchSize);return inFlight=batch.length,activeFlush=deliver(batch).then(result=>(stats.delivered+=result.delivered,stats.dropped+=result.dropped,result)).finally(()=>{inFlight=0,activeFlush=void 0,schedule()}),activeFlush}function feature(actionName,invocationSource){let usage2=actions.get(actionName);return!usage2||!SOURCES.has(invocationSource)?invalid():usage2.usageClass==="excluded"?!1:{...usage2,actionName,invocationSource}}function cancelPending(){activeController?.abort("delivery_cancelled")}function close({flush:drain=!0}={}){return enabled?(drain||(closing=!0,stats.dropped+=queue.length,queue.length=0,shutdown.abort("delivery_cancelled"),cancelPending()),closePromise||(closing=!0,clearTimeout(timer),timer=void 0,closePromise=(async()=>{let deadline=setTimeout(()=>shutdown.abort("shutdown_timeout"),closeTimeoutMs);deadline.unref?.();try{for(;(queue.length||activeFlush)&&!shutdown.signal.aborted;)await flush();return activeFlush&&await activeFlush,stats.dropped+=queue.length,queue.length=0,{delivered:stats.delivered,dropped:stats.dropped}}finally{clearTimeout(deadline)}})(),closePromise)):(closing=!0,closePromise??=Promise.resolve({delivered:0,dropped:0}))}let lifecycle={get enabled(){return enabled&&!closing},getStats:()=>Object.freeze({...stats,queued:queue.length,inFlight,closed:closing}),flush,close,cancelPending};if(skillContract){let skills=new Set(skillContract.skills),workflowId=value=>value===""||typeof value=="string"&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(value);return Object.freeze({...lifecycle,get enabled(){return enabled&&!closing},trackSkillInvoked({skillName,skillTrigger,workflowId:id=""}={}){return!enabled||closing?!1:!skills.has(skillName)||!["user-invoked","agent-invoked","context-load","file-read","unknown"].includes(skillTrigger)||!workflowId(id)?invalid():enqueue("skill_invoked",{skillName,skillTrigger,workflowId:id,invocationSource:"system"})},trackWorkflowCompleted(actionName,{workflowId:id,skillNames,outcome,durationMs}={}){if(!enabled||closing)return!1;let fields=feature(actionName,"system");return fields?!workflowId(id)||!id||!Array.isArray(skillNames)||skillNames.length>skills.size||skillNames.some(name=>!skills.has(name))||new Set(skillNames).size!==skillNames.length||typeof outcome!="string"||!Object.hasOwn(FAILURE_CODES,outcome)||!Number.isFinite(durationMs)?invalid():enqueue("skill_workflow_completed",{...fields,canvasId:skillContract.workflows[actionName].canvasId,workflowId:id,skillNames:Object.freeze([...skillNames].sort()),outcome,durationMs:Math.max(0,Math.min(Math.round(durationMs),36e5)),failureCode:FAILURE_CODES[outcome]}):!1}})}return Object.freeze({...lifecycle,get enabled(){return enabled&&!closing},hasAction:name=>actions.has(name),trackCanvasOpened(invocationSource="unknown"){return!enabled||closing?!1:SOURCES.has(invocationSource)?enqueue("canvas_opened",{invocationSource}):invalid()},trackUiInteraction(input={}){return!enabled||closing?!1:!input||!INTERACTIONS.has(input.interactionType)||!controlRegistry.has(input.controlId)||controlRegistry.get(input.controlId)!==input.controlType?invalid():enqueue("ui_interaction",{invocationSource:"panel",interactionType:input.interactionType,controlId:input.controlId,controlType:input.controlType})},trackFeatureInvoked(actionName,invocationSource="unknown"){if(!enabled||closing)return!1;let fields=feature(actionName,invocationSource);return fields?enqueue("feature_invoked",fields):!1},trackFeatureCompleted(actionName,{outcome,durationMs,invocationSource="unknown",failureCode}={}){if(!enabled||closing)return!1;let fields=feature(actionName,invocationSource);return fields?typeof outcome!="string"||!Object.hasOwn(FAILURE_CODES,outcome)||!Number.isFinite(durationMs)||failureCode!==void 0&&failureCode!==FAILURE_CODES[outcome]?invalid():enqueue("feature_completed",{...fields,outcome,durationMs:Math.max(0,Math.min(Math.round(durationMs),36e5)),failureCode:FAILURE_CODES[outcome]}):!1}})}function createPublicCanvasUsageMetrics(options={}){for(let key of["enabled","endpoint","audience","getAccessToken","transport","now","randomId"])if(Object.hasOwn(options,key))throw new TypeError(`Public canvas telemetry does not accept ${key}.`);return createCanvasUsageMetrics({...options,enabled:!0,endpoint:PUBLIC_CANVAS_USAGE_SERVICE.endpoint,getGitHubUserId:options.getGitHubUserId??resolveGitHubCliUserId})}function capture(callback,fallback){try{let result=callback();return Promise.resolve(result).catch(()=>{}),result}catch{return fallback}}function dataProperty(value,key,inherited=!1){try{for(let depth=0;value!=null&&depth<(inherited?8:1);depth++){let descriptor=Object.getOwnPropertyDescriptor(value,key);if(descriptor)return descriptor.value;value=Object.getPrototypeOf(value)}}catch{}}function completionFromResult(result){return dataProperty(result,"cancelled")===!0||dataProperty(result,"canceled")===!0||dataProperty(result,"status")==="cancelled"?"cancelled":dataProperty(result,"ok")===!1||dataProperty(result,"isError")===!0?"rejected":"succeeded"}function isAbortError(error){if(dataProperty(error,"name",!0)==="AbortError")return!0;try{return Object.getOwnPropertyDescriptor(DOMException.prototype,"name").get.call(error)==="AbortError"}catch{return!1}}function sourceFrom(resolver,args){let source=typeof resolver=="function"?capture(()=>resolver(...args),"unknown"):resolver;return SOURCES.has(source)?source:"unknown"}async function measure(metrics2,name,invocationSource,run,opened,now){let start2=capture(now,0);opened&&capture(()=>metrics2.trackCanvasOpened(invocationSource)),capture(()=>metrics2.trackFeatureInvoked(name,invocationSource));try{let result=await run();return capture(()=>metrics2.trackFeatureCompleted(name,{outcome:completionFromResult(result),invocationSource,durationMs:capture(now,start2)-start2})),result}catch(error){throw capture(()=>metrics2.trackFeatureCompleted(name,{outcome:isAbortError(error)?"cancelled":"failed",invocationSource,durationMs:capture(now,start2)-start2})),error}}function instrumentActionDispatch(dispatch,metrics2,{invocationSource="panel",openedActions=[],now=()=>performance.now()}={}){if(typeof dispatch!="function"||!SOURCES.has(invocationSource)&&typeof invocationSource!="function")throw new TypeError("Invalid dispatch instrumentation.");let opened=new Set(openedActions);return capture(()=>metrics2.enabled,!0)===!1?dispatch:function(name,...args){return capture(()=>metrics2.hasAction(name),!0)?measure(metrics2,name,sourceFrom(invocationSource,[name,...args]),()=>dispatch.call(this,name,...args),opened.has(name),now):dispatch.call(this,name,...args)}}function usage(featureId,featureArea,mutates=!1,usageClass="intentional"){return Object.freeze({featureId,featureArea,usageClass,mutates})}var AZURE_STORAGE_USAGE_CONTRACT=Object.freeze({canvasId:"azure-storage",host:"copilot_app",versions:Object.freeze(["0.3.4"]),actions:Object.freeze({"load-accounts":usage("inventory.accounts","inventory"),"load-subscriptions":usage("inventory.subscriptions","inventory"),"tenant-subscriptions":usage("inventory.tenant_subscriptions","inventory"),"select-subscriptions":usage("inventory.select_subscriptions","inventory"),account:usage("browse.account","browse"),"activate-service":usage("browse.service","browse"),container:usage("browse.container","browse"),"list-shares":usage("browse.shares","browse"),"list-queues":usage("browse.queues","browse"),"list-tables":usage("browse.tables","browse"),"storage-page":usage("browse.page","browse"),"tree-containers":usage("browse.containers","browse"),"open-queue":usage("browse.queue","browse"),"open-table":usage("browse.table","browse"),"open-share":usage("browse.share","browse"),"download-many":usage("blob.download_many","download"),"download-filtered":usage("blob.download_filtered","download"),"share-download":usage("file.download","download"),"sas-download":usage("sas.download","download"),"open-folder":usage("download.open_folder","download"),"upload-many":usage("blob.upload_many","mutation",!0),"container-create":usage("container.create","mutation",!0),"container-delete":usage("container.delete","mutation",!0),"blob-delete":usage("blob.delete","mutation",!0),"queue-create":usage("queue.create","mutation",!0),"queue-delete":usage("queue.delete","mutation",!0),"queue-send":usage("queue.send","mutation",!0),"queue-clear":usage("queue.clear","mutation",!0),"queue-msg-update":usage("queue.update_message","mutation",!0),"queue-msg-delete":usage("queue.delete_message","mutation",!0),"table-create":usage("table.create","mutation",!0),"table-delete":usage("table.delete","mutation",!0),"entity-upsert":usage("table.upsert_entity","mutation",!0),"entity-delete":usage("table.delete_entity","mutation",!0),"share-create":usage("file.create_share","mutation",!0),"share-delete":usage("file.delete_share","mutation",!0),"share-mkdir":usage("file.create_directory","mutation",!0),"share-delete-item":usage("file.delete_item","mutation",!0),"share-upload":usage("file.upload","mutation",!0),"delete-selected":usage("selection.delete","mutation",!0),"cleanup-filtered":usage("blob.cleanup_filtered","mutation",!0),"generate-sas":usage("sas.generate_blob","sas",!0),"generate-container-sas":usage("sas.generate_container","sas",!0),"sas-connect":usage("sas.connect","sas"),filter:usage("blob.filter","analysis"),"transfer-plan":usage("transfer.plan","transfer"),"azcopy-doctor":usage("transfer.doctor","transfer"),"preview-blob":usage("blob.preview","preview"),insights:usage("analysis.explain_stats","analysis"),"explain-blob":usage("preview.explain","preview"),"open-storage-explorer":usage("browse.open_explorer","browse"),"sign-in":usage("auth.sign_in","auth",!0),"save-prefs":usage("settings.save","settings"),"get-prefs":usage("settings.read","settings",!1,"excluded"),"read-state":usage("state.read","state",!1,"excluded"),"canvas-answer":usage("state.answer","state",!1,"excluded"),"dismiss-batch":usage("state.dismiss_batch","state",!1,"excluded"),"dismiss-preview":usage("state.dismiss_preview","state",!1,"excluded"),"dismiss-insight":usage("state.dismiss_insight","state",!1,"excluded"),"dismiss-error":usage("state.dismiss_error","state",!1,"excluded"),diagnose:usage("legacy.diagnose","legacy",!1,"excluded")}),controls:Object.freeze({})});function diagnostic({code}){process.emitWarning(`Canvas telemetry: ${code}.`,{code:"CANVAS_USAGE_METRICS"})}function createStorageMetrics({testMode=process.env.AZURE_STORAGE_TEST_MODE==="1",fetchImpl,getGitHubUserId}={}){let options={contract:AZURE_STORAGE_USAGE_CONTRACT,canvasVersion:BUILD_INFO.version,releaseChannel:"stable"};if(testMode)return createCanvasUsageMetrics({...options,enabled:!1});try{return createPublicCanvasUsageMetrics({...options,fetchImpl,getGitHubUserId,onDiagnostic:diagnostic})}catch{return diagnostic({code:"invalid_configuration"}),createCanvasUsageMetrics({...options,enabled:!1})}}function instrumentStorageRoutes(routes,metrics2){for(let route of Object.keys(routes))if(!Object.hasOwn(AZURE_STORAGE_USAGE_CONTRACT.actions,route.slice(1)))throw new TypeError("Every Storage route requires registered usage metadata.");if(!metrics2)return routes;let dispatch=instrumentActionDispatch(async(name,input,ctx)=>{let result=await routes[`/${name}`](input,ctx);return{result,ok:result?.ok!==!1&&!(Array.isArray(result?.failed)&&result.failed.length),cancelled:result?.cancelled===!0}},metrics2,{invocationSource:(_name,_input,_ctx,source)=>source});return Object.fromEntries(Object.keys(routes).map(route=>[route,async(input,ctx,source="panel")=>(await dispatch(route.slice(1),input,ctx,source)).result]))}var DL_ROOT=path3.join(os2.homedir(),"Downloads","azure-storage");function redactEndpointError(message,endpoints){let msg=String(message).replace(/([?&]sig=)[^&\s"'<>]*/gi,"$1[redacted]");for(let raw of endpoints)try{let url=new URL(raw);msg=msg.replaceAll(raw,`${url.origin}${url.pathname}?[redacted]`);let signature=url.searchParams.get("sig");if(signature)for(let value of[signature,encodeURIComponent(signature)])msg=msg.replaceAll(value,"[redacted]")}catch{}return msg}var PREFS_FILE=path3.join(os2.homedir(),".azure-storage","prefs.json");async function readPrefs(){try{let raw=await fs.readFile(PREFS_FILE,"utf8"),obj=JSON.parse(raw)||{};return{pinned:obj.pinned&&typeof obj.pinned=="object"?obj.pinned:{},hidden:obj.hidden&&typeof obj.hidden=="object"?obj.hidden:{},hiddenTenants:obj.hiddenTenants||{},hiddenSubscriptions:obj.hiddenSubscriptions||{}}}catch{return{pinned:{},hidden:{}}}}async function writePrefs({pinned,hidden,hiddenTenants,hiddenSubscriptions}={}){let safePinned=pinned&&typeof pinned=="object"?pinned:{},safeHidden=hidden&&typeof hidden=="object"?hidden:{};await fs.mkdir(path3.dirname(PREFS_FILE),{recursive:!0});let previous=await readPrefs(),prefs={pinned:safePinned,hidden:safeHidden,hiddenTenants:hiddenTenants||previous.hiddenTenants||{},hiddenSubscriptions:hiddenSubscriptions||previous.hiddenSubscriptions||{}};return await fs.writeFile(PREFS_FILE,JSON.stringify(prefs)),prefs}async function saveDownload(container,name,buffer){let root=path3.resolve(DL_ROOT),full=path3.resolve(root,String(container||""),String(name||"").replace(/[\\/]+/g,path3.sep));if(full!==root&&!full.startsWith(root+path3.sep))throw new Error(`refusing to write outside the download folder: ${container}/${name}`);return await fs.mkdir(path3.dirname(full),{recursive:!0}),await fs.writeFile(full,buffer),full}async function openFolder(dir){let target=path3.resolve(dir||DL_ROOT),isDir=!1;try{isDir=(await fs.stat(target)).isDirectory()}catch{isDir=!1}if(!isDir){if(dir)return{ok:!1,target,error:"folder not found"};await fs.mkdir(target,{recursive:!0}).catch(()=>{}),isDir=!0}let attempts=process.platform==="win32"?[["explorer.exe",[target]],[process.env.ComSpec||"cmd.exe",["/c","start","",target]]]:process.platform==="darwin"?[["open",[target]]]:[["xdg-open",[target]]];for(let[cmd,args]of attempts)if(await new Promise(resolve=>{try{let child=spawn3(cmd,args,{detached:!0,stdio:"ignore"}),settled=!1;child.on("error",()=>{settled||(settled=!0,resolve(!1))}),child.unref(),setTimeout(()=>{settled||(settled=!0,resolve(!0))},200)}catch{resolve(!1)}}))return{ok:!0,target};return{ok:!1,target,error:"no file manager available"}}async function start({agent:agent2,port,az=azure_exports,listTransferSas=listSasBlobs2,transferDoctor=azcopyDoctor,metrics:metrics2}={}){let subscriptionGeneration=0,navigationGeneration=0,discoveredSubscriptions=new Map,pageKey=t=>JSON.stringify([t.account||"",t.kind,t.resource||"",t.dir||t.prefix||""]),pageRequests=new Map,pageResults=new Map,serviceViews=new Map,viewFields={blob:["s_container","s_blobPrefix","s_blobPrefixes","s_blobs","s_blobsMore","s_stats","s_filtered","s_criteria","s_insight"],file:["s_fileDir","s_files"],queue:["s_messages"],table:["s_entities"]};function saveServiceView(st){st.s_account&&viewFields[st.s_kind]&&serviceViews.set(JSON.stringify([st.s_account,st.s_kind]),{...Object.fromEntries(["s_kind","s_item",...viewFields[st.s_kind]].map(key=>[key,st[key]])),incomplete:!!st.s_loading})}async function loadStoragePage(target,ctx,direction){let{getState,setState,log}=ctx,key=pageKey(target),old=getState().s_pages?.[key],cachedPages=direction?(pageResults.get(key)||[]).slice():[],index=direction==="last"?Math.max(0,cachedPages.length-1):direction==="next"?(old?.index||0)+1:direction==="previous"?(old?.index||0)-1:0;if(direction&&(!old||index<0||direction==="next"&&!old.nextToken&&!cachedPages[index]))return{ok:!1,error:"That page is not available. Refresh the current view."};let tokens=direction?old.tokens.slice():[null];direction==="next"&&!cachedPages[index]&&(tokens[index]=old.nextToken);let generation=target.resource&&target.kind!=="sas"?++navigationGeneration:null,request=(pageRequests.get(key)||0)+1;pageRequests.set(key,request);let sasUrl=target.kind==="sas"?getState().s_sasUrl:null;setState({s_pageLoading:key,s_error:null});let result=cachedPages[index]?{ok:!0,data:cachedPages[index]}:await safe(()=>az.listStoragePage({...target,token:tokens[index],...sasUrl?{sasUrl}:{}}));if(pageRequests.get(key)!==request||sasUrl&&sasUrl!==getState().s_sasUrl||generation!=null&&(generation!==navigationGeneration||target.account!==getState().s_account||target.kind!==getState().s_kind||target.resource!==getState().s_item))return{ok:!1,error:"Resource navigation changed; older page discarded."};if(!result.ok){let message=redactEndpointError(result.error,[sasUrl||""]);return setState({s_pageLoading:null,s_pageProgress:null,...target.resource?{s_loading:!1}:{},s_error:message,s_needsAuth:result.needsAuth}),log(`Read ${target.kind} page failed: ${message}`),{ok:!1,error:message}}let data=result.data;for(let scope of pageResults.keys()){let[account,kind,resource]=JSON.parse(scope);scope!==key&&!direction&&account===target.account&&kind===target.kind&&!!resource==!!target.resource&&pageResults.delete(scope)}cachedPages[index]=data,pageResults.set(key,cachedPages);let columns;target.kind==="table"&&target.resource&&(columns=[...new Set(cachedPages.flatMap(page=>page?.entities?.columns||[]))]);let patch={s_pages:{...getState().s_pages,[key]:{index,tokens,nextToken:data.nextToken||null,cachedPageCount:cachedPages.length,cachedItemCount:cachedPages.reduce((count,page)=>count+(page?.items?.length||page?.entities?.rows.length||0),0)}},s_pageProgress:null,s_pageLoading:getState().s_pageLoading===key?null:getState().s_pageLoading,...target.resource?{s_loading:!1}:{}};if(target.kind==="sas"){let parsed=parseSasUrl(getState().s_sasUrl);patch.s_sasBlobs=parsed.canRead?data.items.map(b=>({...b,url:blobSasUrl(getState().s_sasUrl,b.name)})):data.items,patch.s_sasStats=filterAndStat(data.items,{}).stats}else if(target.resource)if(target.kind==="blob"){let criteria=getState().s_criteria,filtered=criteria?filterAndStat(data.items,criteria):null;Object.assign(patch,{s_blobs:data.items,s_blobPrefixes:data.prefixes||[],s_blobsMore:!!data.nextToken,s_stats:filtered?.stats||null,s_filtered:filtered?filtered.filtered.map(b=>b.name):[]})}else target.kind==="file"?patch.s_files=data.items:target.kind==="table"&&(patch.s_entities={...data.entities,columns});else{let field={blob:"containers",file:"shares",queue:"queues",table:"tables"}[target.kind];setTree(ctx,target.account,{[field]:data.items},{[target.kind]:!1})}return setState(patch),{ok:!0,...target.kind==="sas"?{blobs:data.items.length}:target.resource?target.kind==="blob"?{blobs:data.items.length,directories:(data.prefixes||[]).length,truncated:!!data.nextToken}:target.kind==="file"?{items:data.items.length}:{entities:data.entities.rows.length}:{count:data.items.length,...target.kind==="blob"?{containers:data.items.map(item=>item.name)}:{}},page:index+1,hasNext:!!data.nextToken}}async function loadAccounts(_p,{setState,log}){setState({s_loading:!0,s_accountsLoading:!0,s_error:null});let r=await safe(()=>az.listStorageAccounts());return r.ok?(setState({s_loading:!1,s_accountsLoading:!1,s_accounts:r.data}),log(`Loaded ${r.data.length} storage accounts.`),{ok:!0,count:r.data.length}):(setState({s_loading:!1,s_accountsLoading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Load accounts failed: ${r.error}`),{ok:!1,error:r.error})}async function loadSubscriptions(_p,{setState,log}){setState({s_subsLoading:!0,s_error:null,s_seInstalled:az.storageExplorerInstalled()});let r=await safe(()=>az.listSubscriptions());if(!r.ok)return setState({s_subsLoading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Load subscriptions failed: ${r.error}`),{ok:!1,error:r.error};let inventory=await safe(()=>az.listTenants()),subs=[...r.data.filter(s=>!discoveredSubscriptions.has(s.tenantId)),...[...discoveredSubscriptions.values()].flat()].sort((a,b)=>(a.displayName||"").localeCompare(b.displayName||"")),tenants=inventory.ok?inventory.data:[];for(let sub of subs)tenants.some(t=>t.tenantId===sub.tenantId)||tenants.push({tenantId:sub.tenantId,displayName:"Cached directory",current:!1});return setState({s_subsLoading:!1,s_subscriptions:subs,s_tenants:tenants,s_tenantInventoryError:inventory.ok?null:inventory.error}),inventory.ok||log(`Current tenant inventory failed: ${inventory.error}`),log(`Found ${tenants.length} directories and ${subs.length} cached subscriptions.`),{ok:!0,count:subs.length}}async function selectSubscriptions({subscriptionIds},{getState,setState,log}){let generation=++subscriptionGeneration,requested=Array.isArray(subscriptionIds)?subscriptionIds:[],chosen=(getState().s_subscriptions||[]).filter(s=>requested.includes(s.subscriptionId)),ids=chosen.map(s=>s.subscriptionId),clearResource={s_account:null,s_container:null,s_kind:null,s_item:null,s_tree:{},s_containers:[],s_blobs:[],s_stats:null,s_filtered:[],s_shares:[],s_queues:[],s_tables:[],s_files:[],s_messages:[],s_entities:null},st=getState(),currentAccount=(st.s_accounts||[]).find(a=>a.name===st.s_account),keepResource=currentAccount&&ids.includes(currentAccount.subscriptionId);if(setState({s_selectedSubs:ids,s_loading:!0,s_accountsLoading:!0,s_error:null,s_needsAuth:!1,s_subscriptionErrors:[],...keepResource?{}:{s_accounts:[],...clearResource}}),!chosen.length)return setState({s_loading:!1,s_accountsLoading:!1}),log("Scope cleared. No subscriptions selected."),{ok:!0,count:0};log(`Loading storage accounts for ${chosen.length} subscription(s)\u2026`);let r=await safe(()=>az.listStorageAccountsForSubs(chosen));if(generation!==subscriptionGeneration)return{ok:!1,error:"Subscription selection changed while accounts were loading. Older results were discarded."};if(!r.ok)return setState({s_loading:!1,s_accountsLoading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Load accounts failed: ${r.error}`),{ok:!1,error:r.error};let{accounts,errors}=r.data,patch={s_loading:!1,s_accountsLoading:!1,s_accounts:accounts};if(getState().s_account&&!accounts.some(a=>a.name===getState().s_account)&&Object.assign(patch,clearResource),patch.s_subscriptionErrors=errors||[],errors&&errors.length){patch.s_error=`${errors.length} subscription(s) could not be read. ${accounts.length} storage account(s) loaded successfully.`;for(let e of errors)log(`Subscription ${e.subscriptionName} (${e.subscriptionId}, tenant ${e.tenantId||"unknown"}) failed: ${e.error}`)}return setState(patch),log(`Loaded ${accounts.length} accounts from ${chosen.length} subscription(s).`),{ok:!errors.length,count:accounts.length,errors}}function setTree({getState,setState},account,patch,loadingPatch){let tree={...getState().s_tree||{}},cur=tree[account]||{containers:null,shares:null,queues:null,tables:null,loading:{}};tree[account]={...cur,...patch||{},loading:{...cur.loading,...loadingPatch||{}}},setState({s_tree:tree})}async function openAccount({account},ctx){++navigationGeneration;let{getState,setState,log}=ctx;if(!account)return{ok:!1,error:"account required"};if(saveServiceView(getState()),setState({s_error:null,s_account:account,s_container:null,s_blobs:[],s_stats:null,s_filtered:[],s_criteria:null,s_insight:null,s_kind:null,s_item:null,s_files:[],s_messages:[],s_entities:null}),getState().s_tree&&getState().s_tree[account]&&getState().s_tree[account].containers!=null)return log(`Focused account ${account}.`),{ok:!0,cached:!0};if(az.listStoragePage)return loadStoragePage({account,kind:"blob"},ctx);setTree(ctx,account,{},{blob:!0}),log(`Opening account ${account}\u2026`);let r=await safe(()=>az.listContainers(account));return r.ok?(setTree(ctx,account,{containers:r.data},{blob:!1}),log(`${account}: ${r.data.length} containers.`),{ok:!0,containers:r.data.map(c=>c.name)}):(setTree(ctx,account,{},{blob:!1}),setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`Open ${account} failed: ${r.error}`),{ok:!1,error:r.error})}async function openContainer({container,account,prefix=""},ctx){let{getState,setState,log}=ctx,generation=++navigationGeneration;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(!container)return{ok:!1,error:"container required"};if(typeof prefix!="string"||prefix&&!prefix.endsWith("/"))throw new Error("Invalid blob directory prefix.");if(setState({s_loading:!0,s_error:null,s_account:account,s_container:container,s_kind:"blob",s_item:container,s_blobPrefix:prefix,s_blobPrefixes:[],s_blobs:[],s_blobsMore:!1,s_stats:null,s_filtered:[],s_criteria:null,s_insight:null}),az.listStoragePage)return loadStoragePage({account,kind:"blob",resource:container,prefix},ctx);log(`Listing blobs in ${account}/${container}\u2026`);let r=await safe(()=>az.listBlobDirectory(account,container,{prefix}));return generation!==navigationGeneration||getState().s_account!==account||getState().s_kind!=="blob"?{ok:!1,error:"Resource navigation changed; older blob listing discarded."}:r.ok?(setState({s_loading:!1,s_blobs:r.data.blobs,s_blobPrefixes:r.data.prefixes,s_blobsMore:!!r.data.truncated}),log(`${container}/${prefix}: ${r.data.blobs.length} blobs, ${r.data.prefixes.length} directories${r.data.truncated?" (listing capped at "+r.data.limit+" items)":""}.`),{ok:!0,blobs:r.data.blobs.length,directories:r.data.prefixes.length,truncated:r.data.truncated}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`List ${container} failed: ${r.error}`),{ok:!1,error:r.error})}async function listShares2({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(az.listStoragePage)return loadStoragePage({account,kind:"file"},ctx);setTree(ctx,account,{},{file:!0});let r=await safe(()=>az.listShares(account));return r.ok?(setTree(ctx,account,{shares:r.data},{file:!1}),log(`${account}: ${r.data.length} file shares.`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{file:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List shares failed: ${r.error}`),{ok:!1,error:r.error})}async function listQueues2({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(az.listStoragePage)return loadStoragePage({account,kind:"queue"},ctx);setTree(ctx,account,{},{queue:!0});let r=await safe(()=>az.listQueues(account));return r.ok?(setTree(ctx,account,{queues:r.data},{queue:!1}),log(`${account}: ${r.data.length} queues.`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{queue:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List queues failed: ${r.error}`),{ok:!1,error:r.error})}async function listTables2({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"open an account first"};if(az.listStoragePage)return loadStoragePage({account,kind:"table"},ctx);setTree(ctx,account,{},{table:!0});let r=await safe(()=>az.listTables(account));return r.ok?(setTree(ctx,account,{tables:r.data},{table:!1}),log(`${account}: ${r.data.length} tables.`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{table:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List tables failed: ${r.error}`),{ok:!1,error:r.error})}async function listContainersTree({account}={},ctx){let{getState,log}=ctx;if(account=account||getState().s_account,!account)return{ok:!1,error:"account required"};if(getState().s_tree&&getState().s_tree[account]&&getState().s_tree[account].containers!=null)return{ok:!0,cached:!0};if(az.listStoragePage)return loadStoragePage({account,kind:"blob"},ctx);setTree(ctx,account,{},{blob:!0});let r=await safe(()=>az.listContainers(account));return r.ok?(setTree(ctx,account,{containers:r.data},{blob:!1}),log(`${account}: ${r.data.length} containers (tree).`),{ok:!0,count:r.data.length}):(setTree(ctx,account,{},{blob:!1}),ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),log(`List containers failed: ${r.error}`),{ok:!1,error:r.error})}async function openQueue({queue,account},{getState,setState,log}){let generation=++navigationGeneration;if(account=account||getState().s_account,!account||!queue)return{ok:!1,error:"open an account first"};setState({s_loading:!0,s_error:null,s_account:account,s_kind:"queue",s_item:queue,s_messages:[]}),log(`Peeking messages in ${account} \xB7 queue ${queue}\u2026`);let r=await safe(()=>az.peekQueueMessages(account,queue));return generation!==navigationGeneration||getState().s_account!==account||getState().s_kind!=="queue"||getState().s_item!==queue?{ok:!1,error:"Resource navigation changed; older queue listing discarded."}:r.ok?(setState({s_loading:!1,s_messages:r.data}),log(`${queue}: peeked ${r.data.length} message(s).`),{ok:!0,messages:r.data.length}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Peek ${queue} failed: ${r.error}`),{ok:!1,error:r.error})}async function openTable({table,account},ctx){let{getState,setState,log}=ctx;if(++navigationGeneration,account=account||getState().s_account,!account||!table)return{ok:!1,error:"open an account first"};if(setState({s_loading:!0,s_error:null,s_account:account,s_kind:"table",s_item:table,s_entities:null}),az.listStoragePage)return loadStoragePage({account,kind:"table",resource:table},ctx);log(`Querying entities in ${account} \xB7 table ${table}\u2026`);let r=await safe(()=>az.queryTableEntities(account,table));return r.ok?(setState({s_loading:!1,s_entities:r.data}),log(`${table}: ${r.data.rows.length} entities.`),{ok:!0,entities:r.data.rows.length}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`Query ${table} failed: ${r.error}`),{ok:!1,error:r.error})}async function openShare({share,account,dir=""},ctx){let{getState,setState,log}=ctx,generation=++navigationGeneration;if(account=account||getState().s_account,!account||!share)return{ok:!1,error:"open an account first"};if(dir=shareDirectory(dir),setState({s_loading:!0,s_error:null,s_account:account,s_kind:"file",s_item:share,s_fileDir:dir,s_files:[]}),az.listStoragePage)return loadStoragePage({account,kind:"file",resource:share,dir},ctx);log(`Listing files in ${account} \xB7 share ${share}\u2026`);let r=await safe(()=>az.listShareItems(account,share,dir));return generation!==navigationGeneration||getState().s_account!==account||getState().s_kind!=="file"?{ok:!1,error:"Resource navigation changed; older file listing discarded."}:r.ok?(setState({s_loading:!1,s_files:r.data}),log(`${share}: ${r.data.length} item(s).`),{ok:!0,items:r.data.length}):(setState({s_loading:!1,s_error:r.error,s_needsAuth:r.needsAuth}),log(`List ${share} failed: ${r.error}`),{ok:!1,error:r.error})}async function refreshCategory(account,kind,ctx){if(az.listStoragePage)return loadStoragePage({account,kind},ctx);kind==="blob"?setTree(ctx,account,{containers:await az.listContainers(account)}):kind==="queue"?setTree(ctx,account,{queues:await az.listQueues(account)}):kind==="table"?setTree(ctx,account,{tables:await az.listTables(account)}):kind==="file"&&setTree(ctx,account,{shares:await az.listShares(account)})}async function afterMutation(read,ctx){let result=await safe(read);if(result.ok&&result.data?.ok!==!1)return{ok:!0};let cause=result.ok?result.data.error:result.error,error="Operation completed, but the listing could not be refreshed. Refresh it before retrying any operation.";return ctx.setState({s_error:error}),ctx.log(`Post-operation refresh failed: ${cause}`),{ok:!1,error,operationCompleted:!0}}function mutate(fn,{refresh,reopen}={}){return async(payload,ctx)=>{let account=payload&&payload.account||ctx.getState().s_account;if(!account)return{ok:!1,error:"open an account first"};let r=await safe(()=>fn(account,payload,ctx));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),ctx.log(`Operation failed: ${r.error}`),{ok:!1,error:r.error};if(refresh){let result=await afterMutation(()=>refreshCategory(account,refresh,ctx),ctx);if(!result.ok)return result}if(reopen){let result=await afterMutation(()=>reopen(account,payload,ctx),ctx);if(result?.ok===!1)return result}return r.data??{ok:!0}}}let reopenQueue=(account,{queue},ctx)=>openQueue({account,queue},ctx),reopenTable=(account,{table},ctx)=>openTable({account,table},ctx),reopenShare=(account,{share,dir=""},ctx)=>{let st=ctx.getState();return st.s_account!==account||st.s_kind!=="file"||st.s_item!==share||(st.s_fileDir||"")!==dir?{ok:!0}:openShare({share,account,dir},ctx)};function shareDirectory(dir){if(typeof dir!="string"||dir.split("/").some(p=>p==="."||p==="..")||dir.includes("\\"))throw new Error("Invalid file-share directory path.");return dir.split("/").filter(Boolean).join("/")}async function runBatchDownload(names,{getState,setState,log}){let st=getState(),account=st.s_account,container=st.s_container;if(!account||!container)return{ok:!1,error:"open a container first"};let list=(names||[]).filter(Boolean);if(!list.length)return{ok:!1,error:"no blobs given"};let dir=path3.join(DL_ROOT,container),done=0,okc=0,failed=[];setState({s_batch:{op:"download",total:list.length,done,ok:okc,failed:[],running:!0,dir}}),log(`Downloading ${list.length} blob(s) from ${container}\u2026`);for(let name of list){let r=await safe(()=>az.downloadBlob(account,container,name));if(done++,r.ok)try{await saveDownload(container,name,r.data),okc++}catch(e){failed.push({name,error:"could not save to disk: "+(e&&e.message?e.message:String(e))})}else failed.push({name,error:r.error});setState({s_batch:{op:"download",total:list.length,done,ok:okc,failed:[...failed],running:donei&&i.name&&i.contentBase64);if(!list.length)return{ok:!1,error:"no items given"};let done=0,okc=0,failed=[];setState({s_batch:{op:"upload",total:list.length,done,ok:okc,failed:[],running:!0}}),log(`Uploading ${list.length} file(s) to ${container}\u2026`);for(let it of list){let buf=Buffer.from(it.contentBase64,"base64"),r=await safe(()=>az.uploadBlob(account,container,(st.s_blobPrefix||"")+it.name,buf,it.contentType));done++,r.ok?okc++:failed.push({name:it.name,error:r.error}),setState({s_batch:{op:"upload",total:list.length,done,ok:okc,failed:[...failed],running:doneopenContainer({account,container,prefix:st.s_blobPrefix||""},ctx),ctx):{ok:!0};return log(`Upload complete: ${okc} ok, ${failed.length} failed.`),{ok:refreshed.ok&&!failed.length,uploaded:okc,failed,...refreshed.ok?{}:{error:"Upload finished, but listing refresh failed.",operationCompleted:okc>0}}}async function runBatchCleanup(action,ctx){let{getState,setState,log}=ctx,st=getState(),account=st.s_account,container=st.s_container;if(!account||!container)return{ok:!1,error:"open a container first"};let list=(st.s_filtered||[]).filter(Boolean);if(!list.length)return{ok:!1,error:"filter some blobs first, nothing matched"};let op=action==="delete"?"delete":"archive",done=0,okc=0,failed=[];setState({s_batch:{op,total:list.length,done,ok:okc,failed:[],running:!0}}),log(`${op==="delete"?"Deleting":"Archiving"} ${list.length} matched blob(s) in ${container}\u2026`);for(let name of list){let r=op==="delete"?await safe(()=>az.deleteBlob(account,container,name)):await safe(()=>az.setBlobTier(account,container,name,"Archive"));done++,r.ok?okc++:failed.push({name,error:r.error}),setState({s_batch:{op,total:list.length,done,ok:okc,failed:[...failed],running:doneopenContainer({account,container,prefix:st.s_blobPrefix||""},ctx),ctx):{ok:!0};return log(`${op==="delete"?"Delete":"Archive"} complete: ${okc} ok, ${failed.length} failed.`),{ok:refreshed.ok&&!failed.length,op,cleaned:okc,failed,...refreshed.ok?{}:{error:"Cleanup finished, but listing refresh failed.",operationCompleted:okc>0}}}let routes={"/load-accounts":loadAccounts,"/load-subscriptions":loadSubscriptions,"/tenant-subscriptions":async({tenantId},ctx)=>{if(!(ctx.getState().s_tenants||[]).some(t=>t.tenantId===tenantId))throw new Error("Tenant is not in the discovered inventory.");ctx.setState({s_tenantLoading:tenantId});try{let subscriptions=await az.listTenantSubscriptions(tenantId);return discoveredSubscriptions.set(tenantId,subscriptions),ctx.setState({s_subscriptions:[...(ctx.getState().s_subscriptions||[]).filter(s=>s.tenantId!==tenantId),...subscriptions],s_tenantErrors:{...ctx.getState().s_tenantErrors||{},[tenantId]:null}}),ctx.log(`Refreshed ${subscriptions.length} subscriptions for tenant ${tenantId}.`),{ok:!0}}catch(error){let failure=az.discoveryFailure(error);return ctx.setState({s_tenantErrors:{...ctx.getState().s_tenantErrors||{},[tenantId]:failure}}),ctx.log(`Tenant subscription discovery failed: ${failure.error}`),{ok:!1,error:failure.message}}finally{ctx.setState({s_tenantLoading:null})}},"/select-subscriptions":selectSubscriptions,"/account":openAccount,"/activate-service":async({account,kind},ctx)=>{let st=ctx.getState();if(account!==st.s_account||!["blob","file","queue","table"].includes(kind))throw new Error("Service selection changed.");saveServiceView(st),++navigationGeneration;let saved=serviceViews.get(JSON.stringify([account,kind])),{incomplete,...cached}=saved||{};return ctx.setState({s_entities:null,s_blobs:[],s_blobPrefixes:[],s_files:[],s_messages:[],s_stats:null,s_filtered:[],s_criteria:null,s_container:null,...saved?cached:{s_kind:kind,s_item:null},s_loading:!1,s_error:null,s_pageLoading:null,s_pageProgress:null}),incomplete&&cached.s_item?kind==="blob"?openContainer({account,container:cached.s_item,prefix:cached.s_blobPrefix||""},ctx):kind==="file"?openShare({account,share:cached.s_item,dir:cached.s_fileDir||""},ctx):kind==="table"?openTable({account,table:cached.s_item},ctx):openQueue({account,queue:cached.s_item},ctx):{ok:!0,cached:!!saved}},"/container":openContainer,"/list-shares":listShares2,"/list-queues":listQueues2,"/list-tables":listTables2,"/storage-page":async({account,kind,resource,prefix="",dir="",direction},ctx)=>{let st=ctx.getState();if(!["first","last","next","previous","refresh","cancel"].includes(direction))throw new Error("Invalid page direction.");if(kind==="sas"){if(!st.s_sasInfo||account!==st.s_sasInfo.account||resource!==st.s_sasInfo.container)throw new Error("SAS connection changed; refresh its page.")}else if(account!==st.s_account||resource&&(kind!==st.s_kind||resource!==st.s_item||kind==="blob"&&prefix!==(st.s_blobPrefix||"")||kind==="file"&&dir!==(st.s_fileDir||"")))throw new Error("Resource navigation changed; page request discarded.");if(direction==="cancel"){let key=pageKey({account,kind,resource,prefix,dir});return pageRequests.set(key,(pageRequests.get(key)||0)+1),ctx.setState({s_pageLoading:null,s_pageProgress:null,...resource&&kind!=="sas"?{s_loading:!1}:{}}),{ok:!0,cancelled:!0}}return loadStoragePage({account,kind,resource,prefix,dir},ctx,direction==="refresh"?void 0:direction)},"/tree-containers":listContainersTree,"/open-queue":openQueue,"/open-table":openTable,"/open-share":openShare,"/download-many":({blobs},ctx)=>runBatchDownload(blobs,ctx),"/open-folder":async({dir},_ctx)=>await openFolder(dir),"/dismiss-batch":(_p,{setState})=>(setState({s_batch:null}),{ok:!0}),"/get-prefs":async()=>({ok:!0,prefs:await readPrefs()}),"/save-prefs":async(input={})=>({ok:!0,prefs:await writePrefs(input)}),"/upload-many":({items,account,container,prefix},ctx)=>{let st=ctx.getState();if(account!==void 0&&(account!==st.s_account||container!==st.s_container||prefix!==(st.s_blobPrefix||""))){let error="The upload destination changed. Choose files again in the intended directory.";return ctx.setState({s_error:error}),ctx.log(error),{ok:!1,error}}return runBatchUpload(items,ctx)},"/container-create":mutate((a,{container})=>az.createContainer(a,container),{refresh:"blob"}),"/container-delete":async({container,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteContainer(a,container));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"blob",ctx),ctx);return ctx.getState().s_kind==="blob"&&ctx.getState().s_item===container&&ctx.setState({s_kind:null,s_item:null,s_container:null,s_blobs:[]}),ctx.log(`Deleted container ${container}.`),refreshed},"/blob-delete":async({container,name,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteBlob(a,container,name));return r.ok?(await afterMutation(()=>openContainer({account:a,container,prefix:ctx.getState().s_blobPrefix||""},ctx),ctx)).ok?(ctx.log(`Deleted blob ${name}.`),{ok:!0}):{ok:!1,operationCompleted:!0,error:"Blob deleted, but listing refresh failed."}:(ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error})},"/generate-sas":async({container,name,account,minutes,permissions},{getState,log})=>{let a=account||getState().s_account,c=container||getState().s_container;if(!c||!name)return{ok:!1,error:"no blob selected"};let r=await safe(()=>az.generateBlobSas(a,c,name,{minutes:Number(minutes)||60,permissions:permissions||"r"}));return r.ok?(log(`Generated ${r.data.mode} SAS for ${name} (${r.data.permissions}, expires ${r.data.expiresOn}).`),{ok:!0,name,...r.data}):{ok:!1,error:r.error,needsAuth:r.needsAuth}},"/generate-container-sas":async({container,account,minutes,permissions},{getState,log})=>{let a=account||getState().s_account,c=container||getState().s_container;if(!c)return{ok:!1,error:"no container selected"};let r=await safe(()=>az.generateContainerSas(a,c,{minutes:Number(minutes)||1440,permissions:permissions||"rl"}));return r.ok?(log(`Generated ${r.data.mode} container SAS for ${c} (${r.data.permissions}, expires ${r.data.expiresOn}).`),{ok:!0,container:c,...r.data}):{ok:!1,error:r.error,needsAuth:r.needsAuth}},"/queue-create":mutate((a,{queue})=>az.createQueue(a,queue),{refresh:"queue"}),"/queue-delete":async({queue,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteQueue(a,queue));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"queue",ctx),ctx);return ctx.getState().s_kind==="queue"&&ctx.getState().s_item===queue&&ctx.setState({s_kind:null,s_item:null,s_messages:[]}),ctx.log(`Deleted queue ${queue}.`),refreshed},"/queue-send":mutate((a,{queue,text})=>az.sendQueueMessage(a,queue,text),{reopen:reopenQueue}),"/queue-clear":mutate((a,{queue})=>az.clearQueueMessages(a,queue),{reopen:reopenQueue}),"/queue-msg-update":mutate((a,{queue,messageId,text})=>az.updateQueueMessage(a,queue,messageId,text),{reopen:reopenQueue}),"/queue-msg-delete":mutate((a,{queue,messageId})=>az.deleteQueueMessage(a,queue,messageId),{reopen:reopenQueue}),"/table-create":mutate((a,{table})=>az.createTable(a,table),{refresh:"table"}),"/table-delete":async({table,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteTable(a,table));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"table",ctx),ctx);return ctx.getState().s_kind==="table"&&ctx.getState().s_item===table&&ctx.setState({s_kind:null,s_item:null,s_entities:null}),ctx.log(`Deleted table ${table}.`),refreshed},"/entity-upsert":mutate((a,{table,entity})=>az.upsertEntity(a,table,entity),{reopen:reopenTable}),"/entity-delete":mutate((a,{table,partitionKey,rowKey})=>az.deleteEntity(a,table,partitionKey,rowKey),{reopen:reopenTable}),"/share-create":mutate((a,{share})=>az.createShare(a,share),{refresh:"file"}),"/share-delete":async({share,account},ctx)=>{let a=account||ctx.getState().s_account,r=await safe(()=>az.deleteShare(a,share));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let refreshed=await afterMutation(()=>refreshCategory(a,"file",ctx),ctx);return ctx.getState().s_kind==="file"&&ctx.getState().s_item===share&&ctx.setState({s_kind:null,s_item:null,s_files:[]}),ctx.log(`Deleted file share ${share}.`),refreshed},"/share-mkdir":mutate((a,{share,dir="",name})=>az.createShareDirectory(a,share,shareDirectory(name?[dir,name].filter(Boolean).join("/"):dir)),{reopen:reopenShare}),"/share-delete-item":mutate((a,{share,name,kind,dir=""})=>az.deleteShareItem(a,share,name,kind,shareDirectory(dir)),{reopen:reopenShare}),"/share-upload":mutate((a,{share,name,contentBase64,dir=""})=>az.uploadShareFile(a,share,name,Buffer.from(contentBase64||"","base64"),shareDirectory(dir)),{reopen:reopenShare}),"/share-download":async({account,share,name,dir:directory=""},ctx)=>{let a=account||ctx.getState().s_account;directory=shareDirectory(directory);let r=await safe(()=>az.downloadShareFile(a,share,name,directory));if(!r.ok)return ctx.setState({s_error:r.error,s_needsAuth:r.needsAuth}),{ok:!1,error:r.error};let dir=path3.join(DL_ROOT,share);try{await saveDownload(share,[directory,name].filter(Boolean).join("/"),r.data)}catch(e){let msg="could not save to disk: "+(e&&e.message?e.message:String(e));return ctx.setState({s_error:msg}),{ok:!1,error:msg}}return ctx.setState({s_batch:{op:"download",total:1,done:1,ok:1,failed:[],running:!1,dir}}),ctx.log(`Downloaded ${name} from share ${share} to ${dir}.`),{ok:!0,dir}},"/delete-selected":async({account,kind,resource,dir="",prefix="",names},ctx)=>{let st=ctx.getState();dir=shareDirectory(dir);let fail=error=>(ctx.setState({s_error:error}),ctx.log(`Delete selected failed: ${error}`),{ok:!1,error});if(!["blob","file"].includes(kind)||st.s_account!==account||st.s_kind!==kind||st.s_item!==resource||kind==="file"&&(st.s_fileDir||"")!==dir||kind==="blob"&&(st.s_blobPrefix||"")!==prefix)return fail("The open resource changed. Select items again before deleting.");let items=kind==="blob"?st.s_blobs||[]:st.s_files||[];if(!Array.isArray(names)||!names.length||names.some(n=>!items.some(i=>i.name===n)))return fail("Select items from the current listing before deleting.");let failures=[],deleted=0;for(let name of new Set(names)){let item=items.find(i=>i.name===name),result=await safe(()=>kind==="blob"?az.deleteBlob(account,resource,name):az.deleteShareItem(account,resource,name,item.kind,dir));result.ok?deleted++:(failures.push({name,error:result.error}),ctx.log(`Delete ${name} failed: ${result.error}`))}let refreshed=ctx.getState().s_account===account&&ctx.getState().s_kind===kind&&ctx.getState().s_item===resource&&(kind!=="file"||(ctx.getState().s_fileDir||"")===dir)&&(kind!=="blob"||(ctx.getState().s_blobPrefix||"")===prefix)?await(kind==="blob"?openContainer({account,container:resource,prefix},ctx):openShare({account,share:resource,dir},ctx)):{ok:!0};if(ctx.log(`Delete selected: ${deleted} deleted, ${failures.length} failed.`),failures.length||!refreshed.ok){let error=`${deleted} item(s) deleted; ${failures.length} failed.${refreshed.ok?"":" Listing refresh also failed."} Open diagnostics for details.`;return ctx.setState({s_error:error}),{ok:!1,deleted,failures,error,operationCompleted:deleted>0}}return{ok:!0,deleted}},"/diagnose":(_p,_ctx)=>({ok:!1,error:"diagnosis removed"}),"/filter":async(criteria,{getState,setState,log})=>{let st=getState();if(!(st.s_kind==="blob"&&st.s_container))return{ok:!1,error:"Open a container first to filter its blobs."};let blobs=st.s_blobs||[],{filtered,stats}=filterAndStat(blobs,criteria||{});return setState({s_criteria:criteria||{},s_filtered:filtered.map(b=>b.name),s_stats:stats}),log(`Filter matched ${filtered.length} of ${blobs.length} blobs.`),{ok:!0,matched:filtered.length,stats}},"/download-filtered":async(_p,ctx)=>{let names=ctx.getState().s_filtered||[];return runBatchDownload(names,ctx)},"/cleanup-filtered":({action},ctx)=>runBatchCleanup(action,ctx),"/transfer-plan":async({dest,resolution,useFiltered,source:srcContainer,sourceSas},{getState,setState,log})=>{let st=getState(),account=st.s_account,container=String(srcContainer||st.s_container||"").trim(),sourceSasUrl=String(sourceSas||"").trim(),fail=(message,severity="error")=>{let msg=redactEndpointError(message,[sourceSasUrl,String(dest||"")]);return setState({s_transferErr:msg,s_transferSeverity:severity,s_transferProgress:null,s_transfer:null}),log(`Transfer plan ${severity==="warning"?"blocked":"failed"}: ${msg}`),{ok:!1,error:msg,severity}},parsedSource;if(sourceSasUrl){if(parsedSource=parseSasUrl(sourceSasUrl),!parsedSource.ok)return fail(parsedSource.error);if(!parsedSource.container||parsedSource.blobPath||parsedSource.resource!=="c")return fail("Source must be a container SAS URL, not an account or blob SAS.");if(parsedSource.expired)return fail("Source SAS has expired. Provide a current container SAS.");if(!parsedSource.canRead||!parsedSource.canList)return fail("Source SAS needs Read and List permissions to plan and copy the container.");if(useFiltered)return fail("Filtered transfer applies only to the open account/container source, not a SAS source.")}else{if(!account)return fail("Open a storage account first. Pick one in the Explorer.");if(!container)return fail("Choose a source container.")}let isOpen=!sourceSasUrl&&st.s_kind==="blob"&&st.s_item===container;if(useFiltered&&(!isOpen||!st.s_criteria))return fail("Apply filter criteria to the open source container before planning a filtered transfer.");let progress=side=>count=>setState({s_transferProgress:{side,count}});setState({s_transfer:null,s_transferErr:null,s_transferSeverity:null,s_transferProgress:{side:"source",count:0}});let criteria=useFiltered?{...st.s_criteria,now:st.s_criteria.now||new Date().toISOString()}:null,options={complete:!0,onProgress:progress("source"),...criteria?{prefix:st.s_blobPrefix||"",requireTags:!!(criteria.tags&&Object.keys(criteria.tags).length||criteria.tagKeys?.length)}:{}},allBlobs;if(parsedSource){let rs=await safe(()=>listTransferSas(sourceSasUrl,options));if(!rs.ok)return fail(`Couldn't read the source SAS container: ${rs.error}`);allBlobs=rs.data.blobs}else{let rs=await safe(()=>az.listBlobs(account,container,options));if(!rs.ok)return fail(`Couldn't read source container '${container}': ${rs.error}`);allBlobs=rs.data}if(allBlobs.truncated)return fail("Source inventory is incomplete. No transfer plan was generated.");let prefix=st.s_blobPrefix||"",source=criteria?applyBlobFilter(allBlobs.filter(b=>b.name.startsWith(prefix)&&!b.name.slice(prefix.length).includes("/")),criteria):allBlobs,names=criteria?new Set(source.map(b=>b.name)):null,destStr=String(dest||"").trim();if(!destStr)return fail("Enter a destination: 'account/container' (e.g. myaccount/backups) or a container SAS URL.");if(!/[?&]sig=/.test(destStr)&&destStr.replace(/^https?:\/\//,"").split("/").filter(Boolean).length<2)return fail(`Destination must be 'account/container', not just '${destStr}'. Example: ${account}/${destStr||"backups"}, or paste a container SAS URL.`);if(`${account}/${container}`===destStr.replace(/^https?:\/\//,"").replace(".blob.core.windows.net",""))return fail("Source and destination are the same container. Pick a different destination.");let res=["overwrite","skip","if-newer"].includes(resolution)?resolution:"overwrite",destBlobs=[],destUrl="",destSas=!1;setState({s_transferProgress:{side:"destination",count:0}});let r=await safe(async()=>{if(/[?&]sig=/.test(destStr)){let p=parseSasUrl(destStr);if(!p.ok)throw new Error(p.error);if(!p.container||p.blobPath||p.resource!=="c")throw new Error("Destination must be a container SAS URL, not an account or blob SAS.");if(p.expired)throw new Error("Destination SAS has expired.");if(!p.canList)throw new Error("Destination SAS needs List permission to calculate conflicts.");if(!/w/i.test(p.permissions))throw new Error("Destination SAS needs Write permission for the planned copy.");return destUrl=p.containerUrl,destSas=!0,await listTransferSas(destStr,{complete:!0,onProgress:progress("destination")}).then(x=>x.blobs)}let m=destStr.replace(/^https?:\/\//,"").split("/"),dAcct=m[0].split(".")[0],dCont=m[1];if(!dAcct||!dCont)throw new Error("Destination must be 'account/container' or a container SAS URL.");return destUrl=`https://${dAcct}.blob.core.windows.net/${dCont}`,await az.listBlobs(dAcct,dCont,{complete:!0,onProgress:progress("destination")})});if(!r.ok)return fail(`Couldn't read the destination: ${r.error}`);if(destBlobs=r.data,destBlobs.truncated)return fail("Destination inventory is incomplete. No transfer plan was generated.");let sourceUrl=parsedSource?parsedSource.containerUrl:`https://${account}.blob.core.windows.net/${container}`;if(new URL(sourceUrl).origin+new URL(sourceUrl).pathname===new URL(destUrl).origin+new URL(destUrl).pathname)return fail("Source and destination are the same container. Pick a different destination.");if(res==="if-newer"){let byName=new Map(destBlobs.map(b=>[b.name,b]));if(source.some(b=>byName.has(b.name)&&(!Number.isFinite(Date.parse(b.lastModified))||!Number.isFinite(Date.parse(byName.get(b.name).lastModified)))))return fail("Last modified timestamps are missing for conflicting blobs. Choose Overwrite or Skip existing instead of If source newer.")}let plan=planTransfer(source,destBlobs,res),allSource=!names,{command,needsLogin,empty}=azcopyCommand({sourceUrl,destUrl,resolution:res,includeNames:names?plan.toTransfer:null,allSource});if(empty)return fail("Nothing to transfer \u2014 every selected blob already exists at the destination under the current conflict rule.");let azcopy=await transferDoctor(),summary={...plan,toTransfer:plan.toTransfer.slice(0,100),toTransferTruncated:plan.toTransfer.length>100};return setState({s_transferErr:null,s_transferSeverity:null,s_transferProgress:null,s_transfer:{plan:summary,command,needsLogin,azcopy,sourceLabel:parsedSource?`${parsedSource.account}/${parsedSource.container} (SAS)`:`${account}/${container}`,destLabel:destSas?`${plan.destCount} blobs (SAS)`:destStr,source:allSource?"all blobs":`${source.length} filtered blobs`}}),log(`Transfer plan: ${plan.transferCount} to transfer, ${plan.conflictCount} conflicts (${res}).${azcopy.installed?` AzCopy ${azcopy.version||"detected"}.`:" AzCopy not found \u2014 install it to run the command."}`),{ok:!0,plan:summary,...!parsedSource&&!destSas?{command}:{},needsLogin,azcopy}},"/azcopy-doctor":async(_p,_ctx)=>({ok:!0,azcopy:await azcopyDoctor({refresh:!0})}),"/sas-connect":async({url},ctx)=>{let{setState,log}=ctx;setState({s_loading:!0,s_error:null});let parsed=parseSasUrl(url);if(!parsed.ok)return setState({s_loading:!1,s_error:parsed.error}),{ok:!1,error:parsed.error};if(az.listStoragePage){if(parsed.expired||!parsed.canList||!parsed.container)return setState({s_loading:!1,s_error:"Provide an unexpired container SAS with List permission."}),{ok:!1,error:"Provide an unexpired container SAS with List permission."};let{containerUrl,...info}=parsed;return setState({s_sasUrl:url,s_sasInfo:info,s_sasBlobs:[]}),loadStoragePage({account:parsed.account,kind:"sas",resource:parsed.container},ctx)}log(`Connecting to SAS: ${describeSas(parsed)}`);let r=await safe(()=>listSasBlobs2(url));if(!r.ok)return setState({s_loading:!1,s_error:r.error}),log(`SAS connect failed: ${r.error}`),{ok:!1,error:r.error};let{stats}=filterAndStat(r.data.blobs,{}),withUrls=parsed.canRead?r.data.blobs.map(b=>({...b,url:blobSasUrl(url,b.name)})):r.data.blobs;return setState({s_loading:!1,s_sasUrl:url,s_sasInfo:{account:r.data.account,container:r.data.container,permissions:r.data.permissions,expiresOn:r.data.expiresOn,canRead:parsed.canRead,canList:parsed.canList,canWrite:parsed.canWrite,canDelete:parsed.canDelete,expired:parsed.expired,resource:parsed.resource},s_sasBlobs:withUrls,s_sasStats:stats}),log(`SAS connected: ${r.data.blobs.length} blobs in ${r.data.container}.`),{ok:!0,blobs:r.data.blobs.length}},"/sas-download":async({name},{getState,setState,log})=>{let url=getState().s_sasUrl;if(!url)return{ok:!1,error:"connect a SAS first"};let r=await safe(()=>downloadSasBlob2(url,name));if(!r.ok)return setState({s_error:r.error}),{ok:!1,error:r.error};let container=getState().s_sasInfo?.container||"sas",savedPath;try{savedPath=await saveDownload(container,name,Buffer.from(r.data.contentBase64,"base64"))}catch(e){let msg="could not save to disk: "+(e&&e.message?e.message:String(e));return setState({s_error:msg}),log(`SAS download failed: ${msg}`),{ok:!1,name,error:msg}}return log(`Downloaded '${name}' (${r.data.size} bytes) from SAS.`),{ok:!0,name,size:r.data.size,path:savedPath,dir:path3.dirname(savedPath)}},"/read-state":(_p,{getState})=>{let st=getState(),blobPage=st.s_pages?.[pageKey({account:st.s_account,kind:"blob",resource:st.s_container,prefix:st.s_blobPrefix||""})];return{ok:!0,state:{account:st.s_account,container:st.s_container,subscriptions:(st.s_subscriptions||[]).length,selectedSubs:st.s_selectedSubs||[],selectedSubscriptions:(st.s_subscriptions||[]).filter(s=>(st.s_selectedSubs||[]).includes(s.subscriptionId)),tenants:[...new Set((st.s_subscriptions||[]).map(s=>s.tenantId))],tenantInventory:st.s_tenants||[],tenantInventoryError:st.s_tenantInventoryError||null,loading:!!st.s_loading,error:st.s_error||null,subscriptionErrors:st.s_subscriptionErrors||[],accounts:(st.s_accounts||[]).map(a=>a.name),tree:st.s_tree||{},containers:Object.values(st.s_tree||{}).flatMap(t=>(t.containers||[]).map(c=>c.name)),blobs:st.s_blobs||[],blobsTruncated:blobPage?blobPage.index>0||!!blobPage.nextToken:!!st.s_blobs?.truncated,stats:st.s_stats||null,criteria:st.s_kind==="blob"&&st.s_criteria||null,filtered:st.s_filtered||[],batch:st.s_batch||null,listingPages:Object.entries(st.s_pages||{}).map(([scope,page])=>({scope:JSON.parse(scope),page:page.index+1,hasNext:!!page.nextToken})),sasInfo:st.s_sasInfo||null,sasBlobs:(st.s_sasBlobs||[]).map(b=>({name:b.name,size:b.size,lastModified:b.lastModified||null,contentType:b.contentType||null})),transfer:st.s_transfer?(()=>{let{command,sourceUrl,destUrl,...rest}=st.s_transfer;return rest})():null,insight:st.s_insight||null,preview:st.s_preview?{name:st.s_preview.name,isText:st.s_preview.isText,size:st.s_preview.size,truncated:st.s_preview.truncated,lang:st.s_preview.lang,format:st.s_preview.format||null,category:st.s_preview.category||null,magicHex:st.s_preview.magicHex||null,glb:st.s_preview.glb||null,isImage:!!st.s_preview.image,explaining:!!st.s_preview.explaining,explained:!!st.s_preview.explanation,text:st.s_preview.text||null}:null,s_queues:(st.s_queues||[]).map(q=>({name:q.name})),s_tables:(st.s_tables||[]).map(t=>({name:t.name})),s_shares:(st.s_shares||[]).map(x=>({name:x.name})),s_messages:(st.s_messages||[]).map(m=>({messageId:m.messageId||null,messageText:m.messageText})),s_entities:st.s_entities||null,s_files:(st.s_files||[]).map(f=>({name:f.name,kind:f.kind,size:f.size??null,lastModified:f.lastModified||null})),s_kind:st.s_kind||null,s_item:st.s_item||null,s_fileDir:st.s_fileDir||"",s_blobPrefix:st.s_blobPrefix||"",s_blobPrefixes:st.s_blobPrefixes||[]}}},"/canvas-answer":({answer,visual,target,suggestedFilter},{getState,setState})=>{let payload={pending:!1,answer:String(answer||""),visual:visual||null},st=getState(),t=target==="insights"||target==="preview"||target==="ask"?target:null;if(st.s_preview&&st.s_preview.explaining?t="preview":st.s_insight&&st.s_insight.pending?t="insights":t||(t="ask"),t==="insights")setState({s_insight:{...payload,suggestedFilter:suggestedFilter||null}});else if(t==="preview"){let p=st.s_preview||{};setState({s_preview:{...p,explaining:!1,explanation:payload}})}else setState({s_ask:payload});return{ok:!0}},"/insights":async(_p,{getState,setState,log})=>{let st=getState();return st.s_stats?(setState({s_insight:{pending:!0,answer:null,visual:null,suggestedFilter:null}}),log("Asked Copilot to explain the statistics."),await agent2?.requestInsight?.({account:st.s_account,container:st.s_container}),{ok:!0}):{ok:!1,error:"Filter or open a container first so there are statistics to explain."}},"/preview-blob":async({name},{getState,setState,log})=>{let st=getState(),account=st.s_account,container=st.s_container;if(!account||!container||!name)return{ok:!1,error:"Open a container and pick a blob to preview."};setState({s_preview:{name,pending:!0}});let MAX=32*1024,r=await safe(()=>az.downloadBlob(account,container,name,{maxBytes:MAX}));if(!r.ok)return setState({s_preview:{name,pending:!1,error:r.error}}),log(`Preview failed: ${r.error}`),{ok:!1,error:r.error};let slice=r.data.subarray(0,MAX),{isText,text}=sniffText(slice),bin=isText?null:sniffBinaryFormat(slice,name),mime=isText?null:imageMime(name),sz=await safe(()=>az.blobSize(account,container,name)),total=sz.ok?sz.data:slice.length,RENDER_MAX=25*1024*1024,GLB_MAX=50*1024*1024,image=mime&&total<=RENDER_MAX?{mime}:null,glb=null;if(bin&&/GLB/.test(bin.format)&&total<=GLB_MAX){let full=await safe(()=>az.downloadBlob(account,container,name));full.ok&&(glb=parseGlb(full.data))}return setState({s_preview:{name,pending:!1,size:total,truncated:total>MAX,isText,lang:previewLang(name),text:isText?text:null,format:bin?bin.format:null,category:bin?bin.category:null,magicHex:bin?bin.magicHex:null,image,glb,explanation:null}}),log(`Previewed ${name}: ${isText?"text":bin.format}, ${total} bytes.`),{ok:!0,isText,bytes:total}},"/explain-blob":async(_p,{getState,setState})=>{let p=getState().s_preview;return!p||p.pending||p.error?{ok:!1,error:"Preview a blob first."}:!p.isText&&!p.format?{ok:!1,error:"Preview a blob first."}:(setState({s_preview:{...p,explaining:!0,explanation:null}}),await agent2?.requestPreviewExplain?.({name:p.name,isText:!!p.isText,format:p.format||null,category:p.category||null,size:p.size,glb:p.glb||null}),{ok:!0})},"/dismiss-preview":(_p,{setState})=>(setState({s_preview:null}),{ok:!0}),"/dismiss-insight":(_p,{setState})=>(setState({s_insight:null}),{ok:!0}),"/open-storage-explorer":async(_p,{getState,log})=>{let st=getState(),account=st.s_account||null,kind=st.s_kind||null,item=st.s_item||null,where=item?`${account}/${item}`:account||"the app";log(`Opening Azure Storage Explorer \u2192 ${where}\u2026`);let r=await az.openInStorageExplorer({account,kind,item});return r.ok?(log(r.deepLink?`Opened Storage Explorer at ${where}.`:"Opened Storage Explorer."),{ok:!0,deepLink:r.deepLink}):r.notInstalled?(log("Azure Storage Explorer isn't installed. Opening the download page so you can get the free desktop app."),{ok:!1,notInstalled:!0,install:r.install}):(log(`Storage Explorer: ${r.error}`),{ok:!1,error:r.error})},"/dismiss-error":(_p,{setState})=>(setState({s_error:null,s_needsAuth:!1}),{ok:!0}),"/sign-in":async({tenantId}={},ctx)=>{let{setState,log}=ctx;if(tenantId&&![...ctx.getState().s_subscriptions||[],...ctx.getState().s_tenants||[]].some(s=>s.tenantId===tenantId))throw new Error("The requested tenant is not in the discovered Azure inventory.");setState({s_signingIn:!0,s_error:null}),log("Opening az login in your browser\u2026");let r=await az.signIn({tenantId});return r.ok?(setState({s_signingIn:!1,s_needsAuth:!1,s_error:null}),log("Signed in successfully. Loading subscriptions\u2026"),await loadSubscriptions({},ctx),(ctx.getState().s_selectedSubs||[]).length&&await selectSubscriptions({subscriptionIds:ctx.getState().s_selectedSubs},ctx),{ok:!0}):(setState({s_signingIn:!1,s_error:r.error,s_needsAuth:!0}),log(`Sign-in failed: ${r.error}`),{ok:!1,error:r.error})}},initialState={s_subscriptions:[],s_selectedSubs:[],s_subsLoading:!1,s_accounts:[],s_tree:{},s_containers:[],s_blobs:[],s_filtered:[],s_shares:[],s_queues:[],s_tables:[],s_files:[],s_messages:[],s_entities:null,s_kind:null,s_item:null,s_svcLoading:null,s_account:null,s_container:null,s_stats:null,s_batch:null,s_sasInfo:null,s_sasBlobs:[],s_ask:null,s_transfer:null,s_insight:null,s_preview:null,s_transferErr:null,s_loading:!1,s_accountsLoading:!1,s_error:null,activityLog:[],s_signingIn:!1,s_seInstalled:null};async function mediaHandler(pathname,query,{getState}){if(pathname!=="/blob-media")return null;let name=query.get("name"),st=getState(),p=st.s_preview;if(!p||p.name!==name||!p.image)return null;let account=st.s_account,container=st.s_container;if(!account||!container)return null;let r=await safe(()=>az.downloadBlob(account,container,name));return r.ok?{contentType:p.image.mime||imageMime(name)||"application/octet-stream",buffer:r.data}:null}let server2=await createCanvasServer({html:pageHtml,routes:instrumentStorageRoutes(routes,metrics2),media:mediaHandler,initialState,port});if(typeof az.registerAccountContext=="function"){let releaseContext=az.registerAccountContext(()=>({accounts:server2.getState().s_accounts,subscriptions:server2.getState().s_subscriptions})),close=server2.close;server2.close=()=>{releaseContext(),close()}}return server2.loadAccounts=()=>loadAccounts({},{getState:server2.getState,setState:server2.setState,log:server2.log}),server2.loadSubscriptions=()=>loadSubscriptions({},{getState:server2.getState,setState:server2.setState,log:server2.log}),server2}var session,metrics=createStorageMetrics();async function post(server2,route,body){let res=await fetch(`http://127.0.0.1:${server2.port}${route}`,{method:"POST",headers:{"Content-Type":"application/json","X-Storage-Invocation-Source":"model"},body:JSON.stringify(body||{})});try{return await res.json()}catch{return{ok:res.ok}}}var agent={async requestInsight({container}={}){session?.send({prompt:`On the "Azure Storage" canvas, the user clicked "Explain these statistics"${container?` for container "${container}"`:""}. Call read_canvas_state ONCE and read the "stats" object (count, total/avg/max size, size histogram buckets, byType, byTier, byExt, topLargest) and the "filtered" set. The numbers are ALREADY provided \u2014 do NOT run shell commands or call other tools to compute them. Then immediately call answer_on_canvas with target:"insights" and a concise, specific interpretation: what stands out about size distribution, access tiers (Hot/Cool/Cold/Archive), file types, and any cost/cleanup/lifecycle opportunity (e.g. large cold data, many tiny files, old blobs). Cite real numbers. Include a visual ({kind:'bar'|'stat'|'table', ...}) when it helps. If an obvious cleanup/selection would help, ALSO pass suggestedFilter = a storage_filter_blobs criteria object (e.g. {olderThanDays:180} or {tiers:["Archive"],minSize:1048576}) so the user can apply it in one click. Do NOT explain in chat \u2014 render on the canvas.`,displayPrompt:"\u{1F9E0} Storage canvas \u2014 explain statistics"})},async requestPreviewExplain({name,isText,format,category,glb}={}){let glbNote=glb&&!glb.truncated?` The GLB's embedded JSON was parsed \u2014 read preview.glb for the REAL counts (meshes:${glb.meshes}, materials:${glb.materials}, textures:${glb.textures}, nodes:${glb.nodes}, animations:${glb.animations}, vertices:${glb.vertices}, triangles:${glb.triangles}${glb.generator?`, generator:"${glb.generator}"`:""}) and CITE these actual numbers instead of speaking generically.`:"",prompt=isText?`On the "Azure Storage" canvas, the user clicked "Ask Copilot to explain" for the previewed blob "${name}". Call read_canvas_state ONCE and read "preview" ({name, lang, size, truncated, text}). The file content is ALREADY provided in preview.text \u2014 do NOT run any shell commands, do NOT read files from disk, and do NOT call other tools to fetch it. Work only from preview.text. Then immediately call answer_on_canvas with target:"preview" and a concise explanation: what this file is, its structure/schema (columns/keys/format), what the data represents, and anything notable. If it was truncated, say so. Add a visual ({kind:'table'|'bar'|'stat'}) only if it clarifies the structure. Do NOT explain in chat \u2014 render on the canvas.`:`On the "Azure Storage" canvas, the user clicked "Explain this file" for the BINARY blob "${name}" (no text preview). Call read_canvas_state ONCE and read "preview" ({name, size, format, category, magicHex, glb}). The format was detected from the leading magic bytes${format?` and is "${format}"${category?` (${category})`:""}`:""}.${glbNote} The bytes are binary \u2014 do NOT run any shell commands, do NOT download or read the file, and do NOT call other tools. Reason only from the fields in preview. -Then immediately call answer_on_canvas with target:"preview" and a concise explanation of THIS FILE: what "${format||"this format"}" is and what it's used for, ${glb&&!glb.truncated?"PLUS the specific model composition using the real preview.glb counts (meshes/materials/textures/vertices/triangles), and a visual ({kind:'table'} listing those counts). ":""}what tooling opens/produces it, and practical Azure Storage tips (right Content-Type, whether it compresses, viewing, lifecycle/tiering). Keep it specific and do NOT claim to have inspected raw geometry beyond the provided counts. Do NOT explain in chat \u2014 render on the canvas.`;session?.send({prompt,displayPrompt:`\u{1F441} Storage canvas \u2014 explain "${String(name).slice(0,60)}"`})}},server=await start({agent}),canvas=createCanvas({id:"azure-storage",displayName:"Azure Storage",description:"Browse Azure Storage blobs/containers, bulk-transfer with live progress, filter + aggregate statistics, and open SAS links with no login \u2014 all agent-drivable on one live surface.",actions:[{name:"read_canvas_state",description:"Pull the live data shown on the Storage canvas (current account/directory, blob and file metadata, queue message IDs, applied current-page filter criteria and statistics, filtered set, batch progress, SAS info). Use this before answering any question about what's on the canvas.",inputSchema:{type:"object",properties:{keys:{type:"array",items:{type:"string"}}}},handler:async()=>post(server,"/read-state",{})},{name:"answer_on_canvas",description:"Render shared agent notes alongside resource contents. `target` selects the surface: 'ask' (legacy default name for resource annotations, not a chat), 'insights' (statistics), or 'preview' (blob preview). Conversation stays in the session chat. Pass text `answer` and an optional quantitative `visual` ({kind:'bar'|'stat'|'table', ...}). For target='insights', suggestedFilter can offer a one-click storage filter.",inputSchema:{type:"object",properties:{answer:{type:"string"},visual:{type:"object"},target:{type:"string",enum:["ask","insights","preview"]},suggestedFilter:{type:"object"}},required:["answer"]},handler:async({input})=>post(server,"/canvas-answer",{answer:input.answer,visual:input.visual,target:input.target,suggestedFilter:input.suggestedFilter})},{name:"storage_open_account",description:"Open a storage account on the canvas and load its containers live. Pass the account name exactly as shown in the account list (read_canvas_state \u2192 accounts).",inputSchema:{type:"object",properties:{account:{type:"string"}},required:["account"]},handler:async({input})=>post(server,"/account",{account:input.account})},{name:"storage_open_container",description:"Open a blob container directory on the canvas. Optional prefix is an exact virtual-folder prefix ending in '/'; omit for root. Returns immediate blobs with canonical names and directory prefixes. Capped listings explicitly report incompleteness. Requires an open account.",inputSchema:{type:"object",properties:{container:{type:"string"},prefix:{type:"string"}},required:["container"]},handler:async({input})=>post(server,"/container",{container:input.container,prefix:input.prefix||""})},{name:"storage_batch_download",description:"Download several blobs at once from the open container with a LIVE progress bar and per-file pass/fail summary. Pass `blobs` = array of exact blob names (choose them by reading the blob list \u2014 e.g. the largest, or those older than a date). Non-destructive to the cloud.",inputSchema:{type:"object",properties:{blobs:{type:"array",items:{type:"string"}}},required:["blobs"]},handler:async({input})=>post(server,"/download-many",{blobs:input.blobs})},{name:"storage_batch_upload",description:"MUTATION \u2014 upload multiple files into the open container directory with a live progress bar. The current directory prefix is prepended to each supplied name. Only after the user has clearly asked to upload; narrate what you're uploading first. Pass `items` = array of {name, contentBase64, contentType}.",mutates:!0,inputSchema:{type:"object",properties:{items:{type:"array",items:{type:"object"}}},required:["items"]},handler:async({input})=>post(server,"/upload-many",{items:input.items})},{name:"storage_filter_blobs",description:"Filter the displayed blob page in the open container directory and compute LIVE statistics on the canvas (count, total/avg/max size, size histogram, by-type/by-tier/by-extension breakdown, top-10 largest). This does not enumerate other pages or folders. All criteria optional: namePattern (glob), prefix/suffix/contains (substring match on blob name), minSize/maxSize (bytes), olderThanDays/newerThanDays, type (image|video|audio|text/data|document|archive|binary), tiers (Hot|Cool|Cold|Archive \u2014 array or comma list), blobTypes (BlockBlob|PageBlob|AppendBlob), tagKeys (blob-index tag keys that must exist), tags (object of key=value that must all match). The matched NAMES become the filtered set for storage_download_filtered. read_canvas_state returns the applied criteria.",inputSchema:{type:"object",properties:{namePattern:{type:"string"},prefix:{type:"string"},suffix:{type:"string"},contains:{type:"string"},minSize:{type:"number"},maxSize:{type:"number"},olderThanDays:{type:"number"},newerThanDays:{type:"number"},type:{type:"string"},tiers:{type:"array",items:{type:"string"}},blobTypes:{type:"array",items:{type:"string"}},tagKeys:{type:"array",items:{type:"string"}},tags:{type:"object"}}},handler:async({input})=>post(server,"/filter",input)},{name:"storage_download_filtered",description:"Download every blob currently matched by the last storage_filter_blobs, with a live progress bar. Use after filtering, e.g. 'download everything older than 30 days'. Non-destructive to the cloud.",inputSchema:{type:"object",properties:{}},handler:async()=>post(server,"/download-filtered",{})},{name:"storage_open_sas",description:"Open a container SAS URL on the canvas WITHOUT any az login \u2014 parses the SAS, lists its blobs, and shows a read view. Use when the user pastes a 'https://acct.blob.core.windows.net/container?...&sig=...' link. Impossible for the Azure/Storage MCP (they require a full account + RBAC).",inputSchema:{type:"object",properties:{url:{type:"string"}},required:["url"]},handler:async({input})=>post(server,"/sas-connect",{url:input.url})},{name:"storage_download_sas_blob",description:"Download one blob from the currently-connected SAS container. Pass the exact blob `name` from the SAS blob list. Read-only.",inputSchema:{type:"object",properties:{name:{type:"string"}},required:["name"]},handler:async({input})=>post(server,"/sas-download",{name:input.name})},{name:"storage_browse_page",description:"Browse the current Storage list using cached page results and Azure continuation tokens. First/previous/last use fetched pages; last means last cached page, not an automatic Azure inventory walk. Next fetches an uncached page; refresh invalidates this scope and returns to page one; cancel discards an in-flight read after it finishes. Replaces the displayed page, never modifies cloud data. kind is blob, file, queue (queue list only; message peek has no continuation), table or sas. resource is the open container/share/table, omitted for service resource lists. Retain the exact current blob prefix/file dir. Search and selection apply to the displayed page.",inputSchema:{type:"object",properties:{account:{type:"string"},kind:{type:"string",enum:["blob","file","queue","table","sas"]},resource:{type:"string"},prefix:{type:"string"},dir:{type:"string"},direction:{type:"string",enum:["first","last","next","previous","refresh","cancel"]}},required:["account","kind","direction"]},handler:async({input})=>post(server,"/storage-page",input)},{name:"storage_plan_transfer",description:"Preview an AzCopy transfer from the open container or an explicit sourceSas container URL (Read+List permissions) to dest ('account/container' or a container SAS with List+Write permissions). Follows every inventory page independently of the display cap and calculates conflicts; never moves data. useFiltered reapplies Filter & statistics criteria to all direct blobs in the open folder, not descendants or Search items text. Returns counts/bytes and bounded conflict/name samples with an unsigned command; commands containing SAS credentials stay on the canvas, not in the model response.",inputSchema:{type:"object",properties:{dest:{type:"string"},sourceSas:{type:"string"},resolution:{type:"string",enum:["overwrite","skip","if-newer"]},useFiltered:{type:"boolean"}},required:["dest"]},handler:async({input})=>post(server,"/transfer-plan",{dest:input.dest,sourceSas:input.sourceSas,resolution:input.resolution,useFiltered:input.useFiltered})},{name:"storage_preview_blob",description:"Open an inline text PREVIEW of one blob from the open container (first 32 KB). Pass the exact blob `name`. Read-only. Binary blobs are detected and reported as non-text. After previewing, you can read the text via read_canvas_state \u2192 preview.text and explain it via answer_on_canvas target:'preview'.",inputSchema:{type:"object",properties:{name:{type:"string"}},required:["name"]},handler:async({input})=>post(server,"/preview-blob",{name:input.name})},{name:"storage_explain_stats",description:"Trigger the canvas's 'Explain these statistics' insight panel \u2014 reads the live filtered stats and renders an interpretation (via answer_on_canvas target:'insights'). Use when the user asks what the storage stats mean or how to clean up / optimize cost.",inputSchema:{type:"object",properties:{}},handler:async()=>post(server,"/insights",{})},{name:"storage_list_queues",description:"List the Storage queues in the open account on the canvas (read-only). Opens the Queues view and shows each queue with its approximate message count. Requires an account to be open first (storage_open_account).",inputSchema:{type:"object",properties:{account:{type:"string"}}},handler:async({input})=>post(server,"/list-queues",{account:input.account})},{name:"storage_open_queue",description:"Open one Storage queue on the canvas and peek its messages live (read-only \u2014 peeking does not dequeue). Pass the exact queue `name` from storage_list_queues. Requires an account to be open first.",inputSchema:{type:"object",properties:{queue:{type:"string"},account:{type:"string"}},required:["queue"]},handler:async({input})=>post(server,"/open-queue",{queue:input.queue,account:input.account})},{name:"storage_list_tables",description:"List the Storage tables in the open account on the canvas (read-only). Opens the Tables view. Requires an account to be open first (storage_open_account).",inputSchema:{type:"object",properties:{account:{type:"string"}}},handler:async({input})=>post(server,"/list-tables",{account:input.account})},{name:"storage_open_table",description:"Open one Storage table on the canvas and list its entities live (read-only). Pass the exact table `name` from storage_list_tables. Requires an account to be open first.",inputSchema:{type:"object",properties:{table:{type:"string"},account:{type:"string"}},required:["table"]},handler:async({input})=>post(server,"/open-table",{table:input.table,account:input.account})},{name:"storage_list_shares",description:"List the Azure File shares in the open account on the canvas (read-only). Opens the File shares view. Requires an account to be open first (storage_open_account).",inputSchema:{type:"object",properties:{account:{type:"string"}}},handler:async({input})=>post(server,"/list-shares",{account:input.account})},{name:"storage_open_share",description:"Open one Azure File share directory on the canvas and list its files and directories live (read-only). Pass the exact share `name` from storage_list_shares and optional share-relative dir; omit dir for root. Requires an account to be open first.",inputSchema:{type:"object",properties:{share:{type:"string"},account:{type:"string"},dir:{type:"string"}},required:["share"]},handler:async({input})=>post(server,"/open-share",{share:input.share,account:input.account,dir:input.dir||""})},{name:"log_message",description:"Append a message to the canvas activity log visible to the user.",inputSchema:{type:"object",properties:{message:{type:"string"}},required:["message"]},handler:({input})=>(server.log(input.message),{ok:!0})}],open(){return server.loadSubscriptions().catch(()=>{}),{url:`http://127.0.0.1:${server.port}`,title:"Azure Storage",status:"ready"}},onClose(){server.close?.()}});session=await joinSession({canvases:[canvas]}); +Then immediately call answer_on_canvas with target:"preview" and a concise explanation of THIS FILE: what "${format||"this format"}" is and what it's used for, ${glb&&!glb.truncated?"PLUS the specific model composition using the real preview.glb counts (meshes/materials/textures/vertices/triangles), and a visual ({kind:'table'} listing those counts). ":""}what tooling opens/produces it, and practical Azure Storage tips (right Content-Type, whether it compresses, viewing, lifecycle/tiering). Keep it specific and do NOT claim to have inspected raw geometry beyond the provided counts. Do NOT explain in chat \u2014 render on the canvas.`;session?.send({prompt,displayPrompt:`\u{1F441} Storage canvas \u2014 explain "${String(name).slice(0,60)}"`})}},server=await start({agent,metrics}),canvas=createCanvas({id:"azure-storage",displayName:"Azure Storage",description:"Browse Azure Storage blobs/containers, bulk-transfer with live progress, filter + aggregate statistics, and open SAS links with no login \u2014 all agent-drivable on one live surface.",actions:[{name:"read_canvas_state",description:"Pull the live data shown on the Storage canvas (current account/directory, blob and file metadata, queue message IDs, applied current-page filter criteria and statistics, filtered set, batch progress, SAS info). Use this before answering any question about what's on the canvas.",inputSchema:{type:"object",properties:{keys:{type:"array",items:{type:"string"}}}},handler:async()=>post(server,"/read-state",{})},{name:"answer_on_canvas",description:"Render shared agent notes alongside resource contents. `target` selects the surface: 'ask' (legacy default name for resource annotations, not a chat), 'insights' (statistics), or 'preview' (blob preview). Conversation stays in the session chat. Pass text `answer` and an optional quantitative `visual` ({kind:'bar'|'stat'|'table', ...}). For target='insights', suggestedFilter can offer a one-click storage filter.",inputSchema:{type:"object",properties:{answer:{type:"string"},visual:{type:"object"},target:{type:"string",enum:["ask","insights","preview"]},suggestedFilter:{type:"object"}},required:["answer"]},handler:async({input})=>post(server,"/canvas-answer",{answer:input.answer,visual:input.visual,target:input.target,suggestedFilter:input.suggestedFilter})},{name:"storage_open_account",description:"Open a storage account on the canvas and load its containers live. Pass the account name exactly as shown in the account list (read_canvas_state \u2192 accounts).",inputSchema:{type:"object",properties:{account:{type:"string"}},required:["account"]},handler:async({input})=>post(server,"/account",{account:input.account})},{name:"storage_open_container",description:"Open a blob container directory on the canvas. Optional prefix is an exact virtual-folder prefix ending in '/'; omit for root. Returns immediate blobs with canonical names and directory prefixes. Capped listings explicitly report incompleteness. Requires an open account.",inputSchema:{type:"object",properties:{container:{type:"string"},prefix:{type:"string"}},required:["container"]},handler:async({input})=>post(server,"/container",{container:input.container,prefix:input.prefix||""})},{name:"storage_batch_download",description:"Download several blobs at once from the open container with a LIVE progress bar and per-file pass/fail summary. Pass `blobs` = array of exact blob names (choose them by reading the blob list \u2014 e.g. the largest, or those older than a date). Non-destructive to the cloud.",inputSchema:{type:"object",properties:{blobs:{type:"array",items:{type:"string"}}},required:["blobs"]},handler:async({input})=>post(server,"/download-many",{blobs:input.blobs})},{name:"storage_batch_upload",description:"MUTATION \u2014 upload multiple files into the open container directory with a live progress bar. The current directory prefix is prepended to each supplied name. Only after the user has clearly asked to upload; narrate what you're uploading first. Pass `items` = array of {name, contentBase64, contentType}.",mutates:!0,inputSchema:{type:"object",properties:{items:{type:"array",items:{type:"object"}}},required:["items"]},handler:async({input})=>post(server,"/upload-many",{items:input.items})},{name:"storage_filter_blobs",description:"Filter the displayed blob page in the open container directory and compute LIVE statistics on the canvas (count, total/avg/max size, size histogram, by-type/by-tier/by-extension breakdown, top-10 largest). This does not enumerate other pages or folders. All criteria optional: namePattern (glob), prefix/suffix/contains (substring match on blob name), minSize/maxSize (bytes), olderThanDays/newerThanDays, type (image|video|audio|text/data|document|archive|binary), tiers (Hot|Cool|Cold|Archive \u2014 array or comma list), blobTypes (BlockBlob|PageBlob|AppendBlob), tagKeys (blob-index tag keys that must exist), tags (object of key=value that must all match). The matched NAMES become the filtered set for storage_download_filtered. read_canvas_state returns the applied criteria.",inputSchema:{type:"object",properties:{namePattern:{type:"string"},prefix:{type:"string"},suffix:{type:"string"},contains:{type:"string"},minSize:{type:"number"},maxSize:{type:"number"},olderThanDays:{type:"number"},newerThanDays:{type:"number"},type:{type:"string"},tiers:{type:"array",items:{type:"string"}},blobTypes:{type:"array",items:{type:"string"}},tagKeys:{type:"array",items:{type:"string"}},tags:{type:"object"}}},handler:async({input})=>post(server,"/filter",input)},{name:"storage_download_filtered",description:"Download every blob currently matched by the last storage_filter_blobs, with a live progress bar. Use after filtering, e.g. 'download everything older than 30 days'. Non-destructive to the cloud.",inputSchema:{type:"object",properties:{}},handler:async()=>post(server,"/download-filtered",{})},{name:"storage_open_sas",description:"Open a container SAS URL on the canvas WITHOUT any az login \u2014 parses the SAS, lists its blobs, and shows a read view. Use when the user pastes a 'https://acct.blob.core.windows.net/container?...&sig=...' link. Impossible for the Azure/Storage MCP (they require a full account + RBAC).",inputSchema:{type:"object",properties:{url:{type:"string"}},required:["url"]},handler:async({input})=>post(server,"/sas-connect",{url:input.url})},{name:"storage_download_sas_blob",description:"Download one blob from the currently-connected SAS container. Pass the exact blob `name` from the SAS blob list. Read-only.",inputSchema:{type:"object",properties:{name:{type:"string"}},required:["name"]},handler:async({input})=>post(server,"/sas-download",{name:input.name})},{name:"storage_browse_page",description:"Browse the current Storage list using cached page results and Azure continuation tokens. First/previous/last use fetched pages; last means last cached page, not an automatic Azure inventory walk. Next fetches an uncached page; refresh invalidates this scope and returns to page one; cancel discards an in-flight read after it finishes. Replaces the displayed page, never modifies cloud data. kind is blob, file, queue (queue list only; message peek has no continuation), table or sas. resource is the open container/share/table, omitted for service resource lists. Retain the exact current blob prefix/file dir. Search and selection apply to the displayed page.",inputSchema:{type:"object",properties:{account:{type:"string"},kind:{type:"string",enum:["blob","file","queue","table","sas"]},resource:{type:"string"},prefix:{type:"string"},dir:{type:"string"},direction:{type:"string",enum:["first","last","next","previous","refresh","cancel"]}},required:["account","kind","direction"]},handler:async({input})=>post(server,"/storage-page",input)},{name:"storage_plan_transfer",description:"Preview an AzCopy transfer from the open container or an explicit sourceSas container URL (Read+List permissions) to dest ('account/container' or a container SAS with List+Write permissions). Follows every inventory page independently of the display cap and calculates conflicts; never moves data. useFiltered reapplies Filter & statistics criteria to all direct blobs in the open folder, not descendants or Search items text. Returns counts/bytes and bounded conflict/name samples with an unsigned command; commands containing SAS credentials stay on the canvas, not in the model response.",inputSchema:{type:"object",properties:{dest:{type:"string"},sourceSas:{type:"string"},resolution:{type:"string",enum:["overwrite","skip","if-newer"]},useFiltered:{type:"boolean"}},required:["dest"]},handler:async({input})=>post(server,"/transfer-plan",{dest:input.dest,sourceSas:input.sourceSas,resolution:input.resolution,useFiltered:input.useFiltered})},{name:"storage_preview_blob",description:"Open an inline text PREVIEW of one blob from the open container (first 32 KB). Pass the exact blob `name`. Read-only. Binary blobs are detected and reported as non-text. After previewing, you can read the text via read_canvas_state \u2192 preview.text and explain it via answer_on_canvas target:'preview'.",inputSchema:{type:"object",properties:{name:{type:"string"}},required:["name"]},handler:async({input})=>post(server,"/preview-blob",{name:input.name})},{name:"storage_explain_stats",description:"Trigger the canvas's 'Explain these statistics' insight panel \u2014 reads the live filtered stats and renders an interpretation (via answer_on_canvas target:'insights'). Use when the user asks what the storage stats mean or how to clean up / optimize cost.",inputSchema:{type:"object",properties:{}},handler:async()=>post(server,"/insights",{})},{name:"storage_list_queues",description:"List the Storage queues in the open account on the canvas (read-only). Opens the Queues view and shows each queue with its approximate message count. Requires an account to be open first (storage_open_account).",inputSchema:{type:"object",properties:{account:{type:"string"}}},handler:async({input})=>post(server,"/list-queues",{account:input.account})},{name:"storage_open_queue",description:"Open one Storage queue on the canvas and peek its messages live (read-only \u2014 peeking does not dequeue). Pass the exact queue `name` from storage_list_queues. Requires an account to be open first.",inputSchema:{type:"object",properties:{queue:{type:"string"},account:{type:"string"}},required:["queue"]},handler:async({input})=>post(server,"/open-queue",{queue:input.queue,account:input.account})},{name:"storage_list_tables",description:"List the Storage tables in the open account on the canvas (read-only). Opens the Tables view. Requires an account to be open first (storage_open_account).",inputSchema:{type:"object",properties:{account:{type:"string"}}},handler:async({input})=>post(server,"/list-tables",{account:input.account})},{name:"storage_open_table",description:"Open one Storage table on the canvas and list its entities live (read-only). Pass the exact table `name` from storage_list_tables. Requires an account to be open first.",inputSchema:{type:"object",properties:{table:{type:"string"},account:{type:"string"}},required:["table"]},handler:async({input})=>post(server,"/open-table",{table:input.table,account:input.account})},{name:"storage_list_shares",description:"List the Azure File shares in the open account on the canvas (read-only). Opens the File shares view. Requires an account to be open first (storage_open_account).",inputSchema:{type:"object",properties:{account:{type:"string"}}},handler:async({input})=>post(server,"/list-shares",{account:input.account})},{name:"storage_open_share",description:"Open one Azure File share directory on the canvas and list its files and directories live (read-only). Pass the exact share `name` from storage_list_shares and optional share-relative dir; omit dir for root. Requires an account to be open first.",inputSchema:{type:"object",properties:{share:{type:"string"},account:{type:"string"},dir:{type:"string"}},required:["share"]},handler:async({input})=>post(server,"/open-share",{share:input.share,account:input.account,dir:input.dir||""})},{name:"log_message",description:"Append a message to the canvas activity log visible to the user.",inputSchema:{type:"object",properties:{message:{type:"string"}},required:["message"]},handler:({input})=>(server.log(input.message),{ok:!0})}],open(){return server.loadSubscriptions().catch(()=>{}),metrics.trackCanvasOpened("panel"),{url:`http://127.0.0.1:${server.port}`,title:"Azure Storage",status:"ready"}},async onClose(){server.close?.(),await metrics.close()}});session=await joinSession({canvases:[canvas]}); diff --git a/canvases/azure-storage/com.github.copilot/extensions/azure-storage/sdk/blob.mjs b/canvases/azure-storage/com.github.copilot/extensions/azure-storage/sdk/blob.mjs index c7a87e7..8d1c58e 100644 --- a/canvases/azure-storage/com.github.copilot/extensions/azure-storage/sdk/blob.mjs +++ b/canvases/azure-storage/com.github.copilot/extensions/azure-storage/sdk/blob.mjs @@ -1,32 +1,32 @@ import { createRequire as __canvasCreateRequire } from "node:module"; const require = __canvasCreateRequire(import.meta.url); -var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var require_ms=__commonJS({"node_modules/ms/index.js"(exports,module){var s=1e3,m=s*60,h=m*60,d=h*24,w=d*7,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse2(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse2(str){if(str=String(str),!(str.length>100)){var match=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h?Math.round(ms/h)+"h":msAbs>=m?Math.round(ms/m)+"m":msAbs>=s?Math.round(ms/s)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h?plural(ms,msAbs,h,"hour"):msAbs>=m?plural(ms,msAbs,m,"minute"):msAbs>=s?plural(ms,msAbs,s,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"node_modules/debug/src/common.js"(exports,module){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable2,createDebug.enable=enable2,createDebug.enabled=enabled2,createDebug.humanize=require_ms(),createDebug.destroy=destroy2,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self,args),(self.log||createDebug.log).apply(self,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend2,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend2(namespace,delimiter2){let newDebug=createDebug(this.namespace+(typeof delimiter2>"u"?":":delimiter2)+namespace);return newDebug.log=this.log,newDebug}function enable2(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled2(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy2(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports,module){exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.storage=localstorage();exports.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports.storage.setItem("debug",namespaces):exports.storage.removeItem("debug")}catch{}}function load(){let r;try{r=exports.storage.getItem("debug")||exports.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports);var{formatters}=module.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_has_flag=__commonJS({"node_modules/has-flag/index.js"(exports,module){"use strict";module.exports=(flag,argv=process.argv)=>{let prefix2=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix2+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position=2,has16m:level>=3}}function supportsColor(haveStream,streamIsTTY){if(forceColor===0)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(process.platform==="win32"){let osRelease=os3.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in env){let version2=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version2>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function getSupportLevel(stream){let level=supportsColor(stream,stream&&stream.isTTY);return translateLevel(level)}module.exports={supportsColor:getSupportLevel,stdout:translateLevel(supportsColor(!0,tty.isatty(1))),stderr:translateLevel(supportsColor(!0,tty.isatty(2)))}}});var require_node=__commonJS({"node_modules/debug/src/node.js"(exports,module){var tty=__require("node:tty"),util3=__require("node:util");exports.init=init;exports.log=log2;exports.formatArgs=formatArgs;exports.save=save;exports.load=load;exports.useColors=useColors;exports.destroy=util3.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports.inspectOpts?!!exports.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix2=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix2+args[0].split(` +var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __require=(x=>typeof require<"u"?require:typeof Proxy<"u"?new Proxy(x,{get:(a,b)=>(typeof require<"u"?require:a)[b]}):x)(function(x){if(typeof require<"u")return require.apply(this,arguments);throw Error('Dynamic require of "'+x+'" is not supported')});var __commonJS=(cb,mod)=>function(){return mod||(0,cb[__getOwnPropNames(cb)[0]])((mod={exports:{}}).exports,mod),mod.exports};var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod));var require_ms=__commonJS({"node_modules/ms/index.js"(exports2,module){var s=1e3,m=s*60,h=m*60,d=h*24,w=d*7,y=d*365.25;module.exports=function(val,options){options=options||{};var type=typeof val;if(type==="string"&&val.length>0)return parse2(val);if(type==="number"&&isFinite(val))return options.long?fmtLong(val):fmtShort(val);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(val))};function parse2(str){if(str=String(str),!(str.length>100)){var match=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(str);if(match){var n=parseFloat(match[1]),type=(match[2]||"ms").toLowerCase();switch(type){case"years":case"year":case"yrs":case"yr":case"y":return n*y;case"weeks":case"week":case"w":return n*w;case"days":case"day":case"d":return n*d;case"hours":case"hour":case"hrs":case"hr":case"h":return n*h;case"minutes":case"minute":case"mins":case"min":case"m":return n*m;case"seconds":case"second":case"secs":case"sec":case"s":return n*s;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}}}function fmtShort(ms){var msAbs=Math.abs(ms);return msAbs>=d?Math.round(ms/d)+"d":msAbs>=h?Math.round(ms/h)+"h":msAbs>=m?Math.round(ms/m)+"m":msAbs>=s?Math.round(ms/s)+"s":ms+"ms"}function fmtLong(ms){var msAbs=Math.abs(ms);return msAbs>=d?plural(ms,msAbs,d,"day"):msAbs>=h?plural(ms,msAbs,h,"hour"):msAbs>=m?plural(ms,msAbs,m,"minute"):msAbs>=s?plural(ms,msAbs,s,"second"):ms+" ms"}function plural(ms,msAbs,n,name){var isPlural=msAbs>=n*1.5;return Math.round(ms/n)+" "+name+(isPlural?"s":"")}}});var require_common=__commonJS({"node_modules/debug/src/common.js"(exports2,module){function setup(env){createDebug.debug=createDebug,createDebug.default=createDebug,createDebug.coerce=coerce,createDebug.disable=disable2,createDebug.enable=enable2,createDebug.enabled=enabled2,createDebug.humanize=require_ms(),createDebug.destroy=destroy2,Object.keys(env).forEach(key=>{createDebug[key]=env[key]}),createDebug.names=[],createDebug.skips=[],createDebug.formatters={};function selectColor(namespace){let hash=0;for(let i=0;i{if(match==="%%")return"%";index++;let formatter=createDebug.formatters[format];if(typeof formatter=="function"){let val=args[index];match=formatter.call(self,val),args.splice(index,1),index--}return match}),createDebug.formatArgs.call(self,args),(self.log||createDebug.log).apply(self,args)}return debug.namespace=namespace,debug.useColors=createDebug.useColors(),debug.color=createDebug.selectColor(namespace),debug.extend=extend2,debug.destroy=createDebug.destroy,Object.defineProperty(debug,"enabled",{enumerable:!0,configurable:!1,get:()=>enableOverride!==null?enableOverride:(namespacesCache!==createDebug.namespaces&&(namespacesCache=createDebug.namespaces,enabledCache=createDebug.enabled(namespace)),enabledCache),set:v=>{enableOverride=v}}),typeof createDebug.init=="function"&&createDebug.init(debug),debug}function extend2(namespace,delimiter2){let newDebug=createDebug(this.namespace+(typeof delimiter2>"u"?":":delimiter2)+namespace);return newDebug.log=this.log,newDebug}function enable2(namespaces){createDebug.save(namespaces),createDebug.namespaces=namespaces,createDebug.names=[],createDebug.skips=[];let split=(typeof namespaces=="string"?namespaces:"").trim().replace(/\s+/g,",").split(",").filter(Boolean);for(let ns of split)ns[0]==="-"?createDebug.skips.push(ns.slice(1)):createDebug.names.push(ns)}function matchesTemplate(search,template){let searchIndex=0,templateIndex=0,starIndex=-1,matchIndex=0;for(;searchIndex"-"+namespace)].join(",");return createDebug.enable(""),namespaces}function enabled2(name){for(let skip of createDebug.skips)if(matchesTemplate(name,skip))return!1;for(let ns of createDebug.names)if(matchesTemplate(name,ns))return!0;return!1}function coerce(val){return val instanceof Error?val.stack||val.message:val}function destroy2(){console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.")}return createDebug.enable(createDebug.load()),createDebug}module.exports=setup}});var require_browser=__commonJS({"node_modules/debug/src/browser.js"(exports2,module){exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load;exports2.useColors=useColors;exports2.storage=localstorage();exports2.destroy=(()=>{let warned=!1;return()=>{warned||(warned=!0,console.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})();exports2.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"];function useColors(){if(typeof window<"u"&&window.process&&(window.process.type==="renderer"||window.process.__nwjs))return!0;if(typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;let m;return typeof document<"u"&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||typeof window<"u"&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||typeof navigator<"u"&&navigator.userAgent&&(m=navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/))&&parseInt(m[1],10)>=31||typeof navigator<"u"&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)}function formatArgs(args){if(args[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+args[0]+(this.useColors?"%c ":" ")+"+"+module.exports.humanize(this.diff),!this.useColors)return;let c="color: "+this.color;args.splice(1,0,c,"color: inherit");let index=0,lastC=0;args[0].replace(/%[a-zA-Z%]/g,match=>{match!=="%%"&&(index++,match==="%c"&&(lastC=index))}),args.splice(lastC,0,c)}exports2.log=console.debug||console.log||(()=>{});function save(namespaces){try{namespaces?exports2.storage.setItem("debug",namespaces):exports2.storage.removeItem("debug")}catch{}}function load(){let r;try{r=exports2.storage.getItem("debug")||exports2.storage.getItem("DEBUG")}catch{}return!r&&typeof process<"u"&&"env"in process&&(r=process.env.DEBUG),r}function localstorage(){try{return localStorage}catch{}}module.exports=require_common()(exports2);var{formatters}=module.exports;formatters.j=function(v){try{return JSON.stringify(v)}catch(error){return"[UnexpectedJSONParseError]: "+error.message}}}});var require_has_flag=__commonJS({"node_modules/has-flag/index.js"(exports2,module){"use strict";module.exports=(flag,argv=process.argv)=>{let prefix2=flag.startsWith("-")?"":flag.length===1?"-":"--",position=argv.indexOf(prefix2+flag),terminatorPosition=argv.indexOf("--");return position!==-1&&(terminatorPosition===-1||position=2,has16m:level>=3}}function supportsColor(haveStream,streamIsTTY){if(forceColor===0)return 0;if(hasFlag("color=16m")||hasFlag("color=full")||hasFlag("color=truecolor"))return 3;if(hasFlag("color=256"))return 2;if(haveStream&&!streamIsTTY&&forceColor===void 0)return 0;let min=forceColor||0;if(env.TERM==="dumb")return min;if(process.platform==="win32"){let osRelease=os3.release().split(".");return Number(osRelease[0])>=10&&Number(osRelease[2])>=10586?Number(osRelease[2])>=14931?3:2:1}if("CI"in env)return["TRAVIS","CIRCLECI","APPVEYOR","GITLAB_CI","GITHUB_ACTIONS","BUILDKITE"].some(sign=>sign in env)||env.CI_NAME==="codeship"?1:min;if("TEAMCITY_VERSION"in env)return/^(9\.(0*[1-9]\d*)\.|\d{2,}\.)/.test(env.TEAMCITY_VERSION)?1:0;if(env.COLORTERM==="truecolor")return 3;if("TERM_PROGRAM"in env){let version2=parseInt((env.TERM_PROGRAM_VERSION||"").split(".")[0],10);switch(env.TERM_PROGRAM){case"iTerm.app":return version2>=3?3:2;case"Apple_Terminal":return 2}}return/-256(color)?$/i.test(env.TERM)?2:/^screen|^xterm|^vt100|^vt220|^rxvt|color|ansi|cygwin|linux/i.test(env.TERM)||"COLORTERM"in env?1:min}function getSupportLevel(stream){let level=supportsColor(stream,stream&&stream.isTTY);return translateLevel(level)}module.exports={supportsColor:getSupportLevel,stdout:translateLevel(supportsColor(!0,tty.isatty(1))),stderr:translateLevel(supportsColor(!0,tty.isatty(2)))}}});var require_node=__commonJS({"node_modules/debug/src/node.js"(exports2,module){var tty=__require("node:tty"),util3=__require("node:util");exports2.init=init;exports2.log=log2;exports2.formatArgs=formatArgs;exports2.save=save;exports2.load=load;exports2.useColors=useColors;exports2.destroy=util3.deprecate(()=>{},"Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.");exports2.colors=[6,2,3,4,5,1];try{let supportsColor=require_supports_color();supportsColor&&(supportsColor.stderr||supportsColor).level>=2&&(exports2.colors=[20,21,26,27,32,33,38,39,40,41,42,43,44,45,56,57,62,63,68,69,74,75,76,77,78,79,80,81,92,93,98,99,112,113,128,129,134,135,148,149,160,161,162,163,164,165,166,167,168,169,170,171,172,173,178,179,184,185,196,197,198,199,200,201,202,203,204,205,206,207,208,209,214,215,220,221])}catch{}exports2.inspectOpts=Object.keys(process.env).filter(key=>/^debug_/i.test(key)).reduce((obj,key)=>{let prop=key.substring(6).toLowerCase().replace(/_([a-z])/g,(_,k)=>k.toUpperCase()),val=process.env[key];return/^(yes|on|true|enabled)$/i.test(val)?val=!0:/^(no|off|false|disabled)$/i.test(val)?val=!1:val==="null"?val=null:val=Number(val),obj[prop]=val,obj},{});function useColors(){return"colors"in exports2.inspectOpts?!!exports2.inspectOpts.colors:tty.isatty(process.stderr.fd)}function formatArgs(args){let{namespace:name,useColors:useColors2}=this;if(useColors2){let c=this.color,colorCode="\x1B[3"+(c<8?c:"8;5;"+c),prefix2=` ${colorCode};1m${name} \x1B[0m`;args[0]=prefix2+args[0].split(` `).join(` -`+prefix2),args.push(colorCode+"m+"+module.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log2(...args){return process.stderr.write(util3.formatWithOptions(exports.inspectOpts,...args)+` -`)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports.inspectOpts);for(let i=0;istr.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util3.inspect(v,this.inspectOpts)}}});var require_src=__commonJS({"node_modules/debug/src/index.js"(exports,module){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module.exports=require_browser():module.exports=require_node()}});var require_helpers=__commonJS({"node_modules/agent-base/dist/helpers.js"(exports){"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports,"__esModule",{value:!0});exports.req=exports.json=exports.toBuffer=void 0;var http2=__importStar(__require("node:http")),https2=__importStar(__require("node:https"));async function toBuffer(stream){let length=0,chunks=[];for await(let chunk of stream)length+=chunk.length,chunks.push(chunk);return Buffer.concat(chunks,length)}exports.toBuffer=toBuffer;async function json(stream){let str=(await toBuffer(stream)).toString("utf8");try{return JSON.parse(str)}catch(_err){let err=_err;throw err.message+=` (input: ${str})`,err}}exports.json=json;function req(url2,opts={}){let req2=((typeof url2=="string"?url2:url2.href).startsWith("https:")?https2:http2).request(url2,opts),promise=new Promise((resolve,reject)=>{req2.once("response",resolve).once("error",reject).end()});return req2.then=promise.then.bind(promise),req2}exports.req=req}});var require_dist=__commonJS({"node_modules/agent-base/dist/index.js"(exports){"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__exportStar=exports&&exports.__exportStar||function(m,exports2){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports2,p)&&__createBinding(exports2,m,p)};Object.defineProperty(exports,"__esModule",{value:!0});exports.Agent=void 0;var net=__importStar(__require("node:net")),http2=__importStar(__require("node:http")),https_1=__require("node:https");__exportStar(require_helpers(),exports);var INTERNAL=Symbol("AgentBaseInternalState"),Agent=class extends http2.Agent{constructor(opts){super(opts),this[INTERNAL]={}}isSecureEndpoint(options){if(options){if(typeof options.secureEndpoint=="boolean")return options.secureEndpoint;if(typeof options.protocol=="string")return options.protocol==="https:"}let{stack}=new Error;return typeof stack!="string"?!1:stack.split(` -`).some(l=>l.indexOf("(https.js:")!==-1||l.indexOf("node:https:")!==-1)}incrementSockets(name){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[name]||(this.sockets[name]=[]);let fakeSocket=new net.Socket({writable:!1});return this.sockets[name].push(fakeSocket),this.totalSocketCount++,fakeSocket}decrementSockets(name,socket){if(!this.sockets[name]||socket===null)return;let sockets=this.sockets[name],index=sockets.indexOf(socket);index!==-1&&(sockets.splice(index,1),this.totalSocketCount--,sockets.length===0&&delete this.sockets[name])}getName(options){return this.isSecureEndpoint(options)?https_1.Agent.prototype.getName.call(this,options):super.getName(options)}createSocket(req,options,cb){let connectOpts={...options,secureEndpoint:this.isSecureEndpoint(options)},name=this.getName(connectOpts),fakeSocket=this.incrementSockets(name);Promise.resolve().then(()=>this.connect(req,connectOpts)).then(socket=>{if(this.decrementSockets(name,fakeSocket),socket instanceof http2.Agent)try{return socket.addRequest(req,connectOpts)}catch(err){return cb(err)}this[INTERNAL].currentSocket=socket,super.createSocket(req,options,cb)},err=>{this.decrementSockets(name,fakeSocket),cb(err)})}createConnection(){let socket=this[INTERNAL].currentSocket;if(this[INTERNAL].currentSocket=void 0,!socket)throw new Error("No socket was returned in the `connect()` function");return socket}get defaultPort(){return this[INTERNAL].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(v){this[INTERNAL]&&(this[INTERNAL].defaultPort=v)}get protocol(){return this[INTERNAL].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(v){this[INTERNAL]&&(this[INTERNAL].protocol=v)}};exports.Agent=Agent}});var require_parse_proxy_response=__commonJS({"node_modules/https-proxy-agent/dist/parse-proxy-response.js"(exports){"use strict";var __importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.parseProxyResponse=void 0;var debug_1=__importDefault(require_src()),debug=(0,debug_1.default)("https-proxy-agent:parse-proxy-response");function parseProxyResponse(socket){return new Promise((resolve,reject)=>{let buffersLength=0,buffers=[];function read(){let b=socket.read();b?ondata(b):socket.once("readable",read)}function cleanup(){socket.removeListener("end",onend),socket.removeListener("error",onerror),socket.removeListener("readable",read)}function onend(){cleanup(),debug("onend"),reject(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(err){cleanup(),debug("onerror %o",err),reject(err)}function ondata(b){buffers.push(b),buffersLength+=b.length;let buffered=Buffer.concat(buffers,buffersLength),endOfHeaders=buffered.indexOf(`\r +`+prefix2),args.push(colorCode+"m+"+module.exports.humanize(this.diff)+"\x1B[0m")}else args[0]=getDate()+name+" "+args[0]}function getDate(){return exports2.inspectOpts.hideDate?"":new Date().toISOString()+" "}function log2(...args){return process.stderr.write(util3.formatWithOptions(exports2.inspectOpts,...args)+` +`)}function save(namespaces){namespaces?process.env.DEBUG=namespaces:delete process.env.DEBUG}function load(){return process.env.DEBUG}function init(debug){debug.inspectOpts={};let keys=Object.keys(exports2.inspectOpts);for(let i=0;istr.trim()).join(" ")};formatters.O=function(v){return this.inspectOpts.colors=this.useColors,util3.inspect(v,this.inspectOpts)}}});var require_src=__commonJS({"node_modules/debug/src/index.js"(exports2,module){typeof process>"u"||process.type==="renderer"||process.browser===!0||process.__nwjs?module.exports=require_browser():module.exports=require_node()}});var require_helpers=__commonJS({"node_modules/agent-base/dist/helpers.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports2&&exports2.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports2&&exports2.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.req=exports2.json=exports2.toBuffer=void 0;var http2=__importStar(__require("node:http")),https2=__importStar(__require("node:https"));async function toBuffer(stream){let length=0,chunks=[];for await(let chunk of stream)length+=chunk.length,chunks.push(chunk);return Buffer.concat(chunks,length)}exports2.toBuffer=toBuffer;async function json(stream){let str=(await toBuffer(stream)).toString("utf8");try{return JSON.parse(str)}catch(_err){let err=_err;throw err.message+=` (input: ${str})`,err}}exports2.json=json;function req(url2,opts={}){let req2=((typeof url2=="string"?url2:url2.href).startsWith("https:")?https2:http2).request(url2,opts),promise=new Promise((resolve,reject)=>{req2.once("response",resolve).once("error",reject).end()});return req2.then=promise.then.bind(promise),req2}exports2.req=req}});var require_dist=__commonJS({"node_modules/agent-base/dist/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports2&&exports2.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports2&&exports2.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__exportStar=exports2&&exports2.__exportStar||function(m,exports3){for(var p in m)p!=="default"&&!Object.prototype.hasOwnProperty.call(exports3,p)&&__createBinding(exports3,m,p)};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.Agent=void 0;var net=__importStar(__require("node:net")),http2=__importStar(__require("node:http")),https_1=__require("node:https");__exportStar(require_helpers(),exports2);var INTERNAL=Symbol("AgentBaseInternalState"),Agent=class extends http2.Agent{constructor(opts){super(opts),this[INTERNAL]={}}isSecureEndpoint(options){if(options){if(typeof options.secureEndpoint=="boolean")return options.secureEndpoint;if(typeof options.protocol=="string")return options.protocol==="https:"}let{stack}=new Error;return typeof stack!="string"?!1:stack.split(` +`).some(l=>l.indexOf("(https.js:")!==-1||l.indexOf("node:https:")!==-1)}incrementSockets(name){if(this.maxSockets===1/0&&this.maxTotalSockets===1/0)return null;this.sockets[name]||(this.sockets[name]=[]);let fakeSocket=new net.Socket({writable:!1});return this.sockets[name].push(fakeSocket),this.totalSocketCount++,fakeSocket}decrementSockets(name,socket){if(!this.sockets[name]||socket===null)return;let sockets=this.sockets[name],index=sockets.indexOf(socket);index!==-1&&(sockets.splice(index,1),this.totalSocketCount--,sockets.length===0&&delete this.sockets[name])}getName(options){return this.isSecureEndpoint(options)?https_1.Agent.prototype.getName.call(this,options):super.getName(options)}createSocket(req,options,cb){let connectOpts={...options,secureEndpoint:this.isSecureEndpoint(options)},name=this.getName(connectOpts),fakeSocket=this.incrementSockets(name);Promise.resolve().then(()=>this.connect(req,connectOpts)).then(socket=>{if(this.decrementSockets(name,fakeSocket),socket instanceof http2.Agent)try{return socket.addRequest(req,connectOpts)}catch(err){return cb(err)}this[INTERNAL].currentSocket=socket,super.createSocket(req,options,cb)},err=>{this.decrementSockets(name,fakeSocket),cb(err)})}createConnection(){let socket=this[INTERNAL].currentSocket;if(this[INTERNAL].currentSocket=void 0,!socket)throw new Error("No socket was returned in the `connect()` function");return socket}get defaultPort(){return this[INTERNAL].defaultPort??(this.protocol==="https:"?443:80)}set defaultPort(v){this[INTERNAL]&&(this[INTERNAL].defaultPort=v)}get protocol(){return this[INTERNAL].protocol??(this.isSecureEndpoint()?"https:":"http:")}set protocol(v){this[INTERNAL]&&(this[INTERNAL].protocol=v)}};exports2.Agent=Agent}});var require_parse_proxy_response=__commonJS({"node_modules/https-proxy-agent/dist/parse-proxy-response.js"(exports2){"use strict";var __importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.parseProxyResponse=void 0;var debug_1=__importDefault(require_src()),debug=(0,debug_1.default)("https-proxy-agent:parse-proxy-response");function parseProxyResponse(socket){return new Promise((resolve,reject)=>{let buffersLength=0,buffers=[];function read(){let b=socket.read();b?ondata(b):socket.once("readable",read)}function cleanup(){socket.removeListener("end",onend),socket.removeListener("error",onerror),socket.removeListener("readable",read)}function onend(){cleanup(),debug("onend"),reject(new Error("Proxy connection ended before receiving CONNECT response"))}function onerror(err){cleanup(),debug("onerror %o",err),reject(err)}function ondata(b){buffers.push(b),buffersLength+=b.length;let buffered=Buffer.concat(buffers,buffersLength),endOfHeaders=buffered.indexOf(`\r \r `);if(endOfHeaders===-1){debug("have not received end of HTTP headers yet..."),read();return}let headerParts=buffered.slice(0,endOfHeaders).toString("ascii").split(`\r -`),firstLine=headerParts.shift();if(!firstLine)return socket.destroy(),reject(new Error("No header received from proxy CONNECT response"));let firstLineParts=firstLine.split(" "),statusCode=+firstLineParts[1],statusText=firstLineParts.slice(2).join(" "),headers={};for(let header of headerParts){if(!header)continue;let firstColon=header.indexOf(":");if(firstColon===-1)return socket.destroy(),reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`));let key=header.slice(0,firstColon).toLowerCase(),value=header.slice(firstColon+1).trimStart(),current=headers[key];typeof current=="string"?headers[key]=[current,value]:Array.isArray(current)?current.push(value):headers[key]=value}debug("got proxy server response: %o %o",firstLine,headers),cleanup(),resolve({connect:{statusCode,statusText,headers},buffered})}socket.on("error",onerror),socket.on("end",onend),read()})}exports.parseProxyResponse=parseProxyResponse}});var require_dist2=__commonJS({"node_modules/https-proxy-agent/dist/index.js"(exports){"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.HttpsProxyAgent=void 0;var net=__importStar(__require("node:net")),tls=__importStar(__require("node:tls")),assert_1=__importDefault(__require("node:assert")),debug_1=__importDefault(require_src()),agent_base_1=require_dist(),url_1=__require("node:url"),parse_proxy_response_1=require_parse_proxy_response(),debug=(0,debug_1.default)("https-proxy-agent"),setServernameFromNonIpHost=options=>options.servername===void 0&&options.host&&!net.isIP(options.host)?{...options,servername:options.host}:options,HttpsProxyAgent2=class extends agent_base_1.Agent{constructor(proxy,opts){super(opts),this.options={path:void 0},this.proxy=typeof proxy=="string"?new url_1.URL(proxy):proxy,this.proxyHeaders=opts?.headers??{},debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let host=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),port=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...opts?omit(opts,"headers"):null,host,port}}async connect(req,opts){let{proxy}=this;if(!opts.host)throw new TypeError('No "host" provided');let socket;proxy.protocol==="https:"?(debug("Creating `tls.Socket`: %o",this.connectOpts),socket=tls.connect(setServernameFromNonIpHost(this.connectOpts))):(debug("Creating `net.Socket`: %o",this.connectOpts),socket=net.connect(this.connectOpts));let headers=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},host=net.isIPv6(opts.host)?`[${opts.host}]`:opts.host,payload=`CONNECT ${host}:${opts.port} HTTP/1.1\r +`),firstLine=headerParts.shift();if(!firstLine)return socket.destroy(),reject(new Error("No header received from proxy CONNECT response"));let firstLineParts=firstLine.split(" "),statusCode=+firstLineParts[1],statusText=firstLineParts.slice(2).join(" "),headers={};for(let header of headerParts){if(!header)continue;let firstColon=header.indexOf(":");if(firstColon===-1)return socket.destroy(),reject(new Error(`Invalid header from proxy CONNECT response: "${header}"`));let key=header.slice(0,firstColon).toLowerCase(),value=header.slice(firstColon+1).trimStart(),current=headers[key];typeof current=="string"?headers[key]=[current,value]:Array.isArray(current)?current.push(value):headers[key]=value}debug("got proxy server response: %o %o",firstLine,headers),cleanup(),resolve({connect:{statusCode,statusText,headers},buffered})}socket.on("error",onerror),socket.on("end",onend),read()})}exports2.parseProxyResponse=parseProxyResponse}});var require_dist2=__commonJS({"node_modules/https-proxy-agent/dist/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports2&&exports2.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports2&&exports2.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.HttpsProxyAgent=void 0;var net=__importStar(__require("node:net")),tls=__importStar(__require("node:tls")),assert_1=__importDefault(__require("node:assert")),debug_1=__importDefault(require_src()),agent_base_1=require_dist(),url_1=__require("node:url"),parse_proxy_response_1=require_parse_proxy_response(),debug=(0,debug_1.default)("https-proxy-agent"),setServernameFromNonIpHost=options=>options.servername===void 0&&options.host&&!net.isIP(options.host)?{...options,servername:options.host}:options,HttpsProxyAgent2=class extends agent_base_1.Agent{constructor(proxy,opts){super(opts),this.options={path:void 0},this.proxy=typeof proxy=="string"?new url_1.URL(proxy):proxy,this.proxyHeaders=opts?.headers??{},debug("Creating new HttpsProxyAgent instance: %o",this.proxy.href);let host=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),port=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={ALPNProtocols:["http/1.1"],...opts?omit(opts,"headers"):null,host,port}}async connect(req,opts){let{proxy}=this;if(!opts.host)throw new TypeError('No "host" provided');let socket;proxy.protocol==="https:"?(debug("Creating `tls.Socket`: %o",this.connectOpts),socket=tls.connect(setServernameFromNonIpHost(this.connectOpts))):(debug("Creating `net.Socket`: %o",this.connectOpts),socket=net.connect(this.connectOpts));let headers=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders},host=net.isIPv6(opts.host)?`[${opts.host}]`:opts.host,payload=`CONNECT ${host}:${opts.port} HTTP/1.1\r `;if(proxy.username||proxy.password){let auth=`${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;headers["Proxy-Authorization"]=`Basic ${Buffer.from(auth).toString("base64")}`}headers.Host=`${host}:${opts.port}`,headers["Proxy-Connection"]||(headers["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let name of Object.keys(headers))payload+=`${name}: ${headers[name]}\r `;let proxyResponsePromise=(0,parse_proxy_response_1.parseProxyResponse)(socket);socket.write(`${payload}\r -`);let{connect,buffered}=await proxyResponsePromise;if(req.emit("proxyConnect",connect),this.emit("proxyConnect",connect,req),connect.statusCode===200)return req.once("socket",resume),opts.secureEndpoint?(debug("Upgrading socket connection to TLS"),tls.connect({...omit(setServernameFromNonIpHost(opts),"host","path","port"),socket})):socket;socket.destroy();let fakeSocket=new net.Socket({writable:!1});return fakeSocket.readable=!0,req.once("socket",s=>{debug("Replaying proxy buffer for failed request"),(0,assert_1.default)(s.listenerCount("data")>0),s.push(buffered),s.push(null)}),fakeSocket}};HttpsProxyAgent2.protocols=["http","https"];exports.HttpsProxyAgent=HttpsProxyAgent2;function resume(socket){socket.resume()}function omit(obj,...keys){let ret={},key;for(key in obj)keys.includes(key)||(ret[key]=obj[key]);return ret}}});var require_dist3=__commonJS({"node_modules/http-proxy-agent/dist/index.js"(exports){"use strict";var __createBinding=exports&&exports.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports&&exports.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports&&exports.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=exports&&exports.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports,"__esModule",{value:!0});exports.HttpProxyAgent=void 0;var net=__importStar(__require("node:net")),tls=__importStar(__require("node:tls")),debug_1=__importDefault(require_src()),events_1=__require("node:events"),agent_base_1=require_dist(),url_1=__require("node:url"),debug=(0,debug_1.default)("http-proxy-agent"),HttpProxyAgent2=class extends agent_base_1.Agent{constructor(proxy,opts){super(opts),this.proxy=typeof proxy=="string"?new url_1.URL(proxy):proxy,this.proxyHeaders=opts?.headers??{},debug("Creating new HttpProxyAgent instance: %o",this.proxy.href);let host=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),port=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...opts?omit(opts,"headers"):null,host,port}}addRequest(req,opts){req._header=null,this.setRequestProps(req,opts),super.addRequest(req,opts)}setRequestProps(req,opts){let{proxy}=this,protocol=opts.secureEndpoint?"https:":"http:",hostname=req.getHeader("host")||"localhost",base=`${protocol}//${hostname}`,url2=new url_1.URL(req.path,base);opts.port!==80&&(url2.port=String(opts.port)),req.path=String(url2);let headers=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(proxy.username||proxy.password){let auth=`${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;headers["Proxy-Authorization"]=`Basic ${Buffer.from(auth).toString("base64")}`}headers["Proxy-Connection"]||(headers["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let name of Object.keys(headers)){let value=headers[name];value&&req.setHeader(name,value)}}async connect(req,opts){req._header=null,req.path.includes("://")||this.setRequestProps(req,opts);let first,endOfHeaders;debug("Regenerating stored HTTP header string for request"),req._implicitHeader(),req.outputData&&req.outputData.length>0&&(debug("Patching connection write() output buffer with updated header"),first=req.outputData[0].data,endOfHeaders=first.indexOf(`\r +`);let{connect,buffered}=await proxyResponsePromise;if(req.emit("proxyConnect",connect),this.emit("proxyConnect",connect,req),connect.statusCode===200)return req.once("socket",resume),opts.secureEndpoint?(debug("Upgrading socket connection to TLS"),tls.connect({...omit(setServernameFromNonIpHost(opts),"host","path","port"),socket})):socket;socket.destroy();let fakeSocket=new net.Socket({writable:!1});return fakeSocket.readable=!0,req.once("socket",s=>{debug("Replaying proxy buffer for failed request"),(0,assert_1.default)(s.listenerCount("data")>0),s.push(buffered),s.push(null)}),fakeSocket}};HttpsProxyAgent2.protocols=["http","https"];exports2.HttpsProxyAgent=HttpsProxyAgent2;function resume(socket){socket.resume()}function omit(obj,...keys){let ret={},key;for(key in obj)keys.includes(key)||(ret[key]=obj[key]);return ret}}});var require_dist3=__commonJS({"node_modules/http-proxy-agent/dist/index.js"(exports2){"use strict";var __createBinding=exports2&&exports2.__createBinding||(Object.create?(function(o,m,k,k2){k2===void 0&&(k2=k);var desc=Object.getOwnPropertyDescriptor(m,k);(!desc||("get"in desc?!m.__esModule:desc.writable||desc.configurable))&&(desc={enumerable:!0,get:function(){return m[k]}}),Object.defineProperty(o,k2,desc)}):(function(o,m,k,k2){k2===void 0&&(k2=k),o[k2]=m[k]})),__setModuleDefault=exports2&&exports2.__setModuleDefault||(Object.create?(function(o,v){Object.defineProperty(o,"default",{enumerable:!0,value:v})}):function(o,v){o.default=v}),__importStar=exports2&&exports2.__importStar||function(mod){if(mod&&mod.__esModule)return mod;var result={};if(mod!=null)for(var k in mod)k!=="default"&&Object.prototype.hasOwnProperty.call(mod,k)&&__createBinding(result,mod,k);return __setModuleDefault(result,mod),result},__importDefault=exports2&&exports2.__importDefault||function(mod){return mod&&mod.__esModule?mod:{default:mod}};Object.defineProperty(exports2,"__esModule",{value:!0});exports2.HttpProxyAgent=void 0;var net=__importStar(__require("node:net")),tls=__importStar(__require("node:tls")),debug_1=__importDefault(require_src()),events_1=__require("node:events"),agent_base_1=require_dist(),url_1=__require("node:url"),debug=(0,debug_1.default)("http-proxy-agent"),HttpProxyAgent2=class extends agent_base_1.Agent{constructor(proxy,opts){super(opts),this.proxy=typeof proxy=="string"?new url_1.URL(proxy):proxy,this.proxyHeaders=opts?.headers??{},debug("Creating new HttpProxyAgent instance: %o",this.proxy.href);let host=(this.proxy.hostname||this.proxy.host).replace(/^\[|\]$/g,""),port=this.proxy.port?parseInt(this.proxy.port,10):this.proxy.protocol==="https:"?443:80;this.connectOpts={...opts?omit(opts,"headers"):null,host,port}}addRequest(req,opts){req._header=null,this.setRequestProps(req,opts),super.addRequest(req,opts)}setRequestProps(req,opts){let{proxy}=this,protocol=opts.secureEndpoint?"https:":"http:",hostname=req.getHeader("host")||"localhost",base=`${protocol}//${hostname}`,url2=new url_1.URL(req.path,base);opts.port!==80&&(url2.port=String(opts.port)),req.path=String(url2);let headers=typeof this.proxyHeaders=="function"?this.proxyHeaders():{...this.proxyHeaders};if(proxy.username||proxy.password){let auth=`${decodeURIComponent(proxy.username)}:${decodeURIComponent(proxy.password)}`;headers["Proxy-Authorization"]=`Basic ${Buffer.from(auth).toString("base64")}`}headers["Proxy-Connection"]||(headers["Proxy-Connection"]=this.keepAlive?"Keep-Alive":"close");for(let name of Object.keys(headers)){let value=headers[name];value&&req.setHeader(name,value)}}async connect(req,opts){req._header=null,req.path.includes("://")||this.setRequestProps(req,opts);let first,endOfHeaders;debug("Regenerating stored HTTP header string for request"),req._implicitHeader(),req.outputData&&req.outputData.length>0&&(debug("Patching connection write() output buffer with updated header"),first=req.outputData[0].data,endOfHeaders=first.indexOf(`\r \r -`)+4,req.outputData[0].data=req._header+first.substring(endOfHeaders),debug("Output buffer: %o",req.outputData[0].data));let socket;return this.proxy.protocol==="https:"?(debug("Creating `tls.Socket`: %o",this.connectOpts),socket=tls.connect(this.connectOpts)):(debug("Creating `net.Socket`: %o",this.connectOpts),socket=net.connect(this.connectOpts)),await(0,events_1.once)(socket,"connect"),socket}};HttpProxyAgent2.protocols=["http","https"];exports.HttpProxyAgent=HttpProxyAgent2;function omit(obj,...keys){let ret={},key;for(key in obj)keys.includes(key)||(ret[key]=obj[key]);return ret}}});var require_state_cjs=__commonJS({"node_modules/@azure/core-tracing/dist/commonjs/state-cjs.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.state=void 0;exports.state={instrumenterImplementation:void 0}}});var require_state_cjs2=__commonJS({"node_modules/@azure/core-client/dist/commonjs/state-cjs.js"(exports){"use strict";Object.defineProperty(exports,"__esModule",{value:!0});exports.state=void 0;exports.state={operationRequestMap:new WeakMap}}});var require_util=__commonJS({"node_modules/fast-xml-parser/src/util.js"(exports){"use strict";var nameStartChar=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",nameChar=nameStartChar+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",nameRegexp="["+nameStartChar+"]["+nameChar+"]*",regexName=new RegExp("^"+nameRegexp+"$"),getAllMatches=function(string,regex){let matches=[],match=regex.exec(string);for(;match;){let allmatches=[];allmatches.startIndex=regex.lastIndex-match[0].length;let len=match.length;for(let index=0;index"u")};exports.isExist=function(v){return typeof v<"u"};exports.isEmptyObject=function(obj){return Object.keys(obj).length===0};exports.merge=function(target,a,arrayMode){if(a){let keys=Object.keys(a),len=keys.length;for(let i=0;i"&&xmlData[i]!==" "&&xmlData[i]!==" "&&xmlData[i]!==` -`&&xmlData[i]!=="\r";i++)tagName+=xmlData[i];if(tagName=tagName.trim(),tagName[tagName.length-1]==="/"&&(tagName=tagName.substring(0,tagName.length-1),i--),!validateTagName(tagName)){let msg;return tagName.trim().length===0?msg="Invalid space after '<'.":msg="Tag '"+tagName+"' is an invalid name.",getErrorObject("InvalidTag",msg,getLineNumberForPosition(xmlData,i))}let result=readAttributeStr(xmlData,i);if(result===!1)return getErrorObject("InvalidAttr","Attributes for '"+tagName+"' have open quote.",getLineNumberForPosition(xmlData,i));let attrStr=result.value;if(i=result.index,attrStr[attrStr.length-1]==="/"){let attrStrStart=i-attrStr.length;attrStr=attrStr.substring(0,attrStr.length-1);let isValid=validateAttributeString(attrStr,options);if(isValid===!0)tagFound=!0;else return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,attrStrStart+isValid.err.line))}else if(closingTag)if(result.tagClosed){if(attrStr.trim().length>0)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' can't have attributes or invalid starting.",getLineNumberForPosition(xmlData,tagStartPos));if(tags2.length===0)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' has not been opened.",getLineNumberForPosition(xmlData,tagStartPos));{let otg=tags2.pop();if(tagName!==otg.tagName){let openPos=getLineNumberForPosition(xmlData,otg.tagStartPos);return getErrorObject("InvalidTag","Expected closing tag '"+otg.tagName+"' (opened in line "+openPos.line+", col "+openPos.col+") instead of closing tag '"+tagName+"'.",getLineNumberForPosition(xmlData,tagStartPos))}tags2.length==0&&(reachedRoot=!0)}}else return getErrorObject("InvalidTag","Closing tag '"+tagName+"' doesn't have proper closing.",getLineNumberForPosition(xmlData,i));else{let isValid=validateAttributeString(attrStr,options);if(isValid!==!0)return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,i-attrStr.length+isValid.err.line));if(reachedRoot===!0)return getErrorObject("InvalidXml","Multiple possible root nodes found.",getLineNumberForPosition(xmlData,i));options.unpairedTags.indexOf(tagName)!==-1||tags2.push({tagName,tagStartPos}),tagFound=!0}for(i++;i0)return getErrorObject("InvalidXml","Invalid '"+JSON.stringify(tags2.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return getErrorObject("InvalidXml","Start tag expected.",1);return!0};function isWhiteSpace(char){return char===" "||char===" "||char===` -`||char==="\r"}function readPI(xmlData,i){let start=i;for(;i5&&tagname==="xml")return getErrorObject("InvalidXml","XML declaration allowed only at the start of the document.",getLineNumberForPosition(xmlData,i));if(xmlData[i]=="?"&&xmlData[i+1]==">"){i++;break}else continue}return i}function readCommentAndCDATA(xmlData,i){if(xmlData.length>i+5&&xmlData[i+1]==="-"&&xmlData[i+2]==="-"){for(i+=3;i"){i+=2;break}}else if(xmlData.length>i+8&&xmlData[i+1]==="D"&&xmlData[i+2]==="O"&&xmlData[i+3]==="C"&&xmlData[i+4]==="T"&&xmlData[i+5]==="Y"&&xmlData[i+6]==="P"&&xmlData[i+7]==="E"){let angleBracketsCount=1;for(i+=8;i"&&(angleBracketsCount--,angleBracketsCount===0))break}else if(xmlData.length>i+9&&xmlData[i+1]==="["&&xmlData[i+2]==="C"&&xmlData[i+3]==="D"&&xmlData[i+4]==="A"&&xmlData[i+5]==="T"&&xmlData[i+6]==="A"&&xmlData[i+7]==="["){for(i+=8;i"){i+=2;break}}return i}var doubleQuote='"',singleQuote="'";function readAttributeStr(xmlData,i){let attrStr="",startChar="",tagClosed=!1;for(;i"&&startChar===""){tagClosed=!0;break}attrStr+=xmlData[i]}return startChar!==""?!1:{value:attrStr,index:i,tagClosed}}var validAttrStrRegxp=new RegExp(`(\\s*)([^\\s=]+)(\\s*=)?(\\s*(['"])(([\\s\\S])*?)\\5)?`,"g");function validateAttributeString(attrStr,options){let matches=util3.getAllMatches(attrStr,validAttrStrRegxp),attrNames={};for(let i=0;i!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(tagName,jPath,attrs){return tagName}},buildOptions=function(options){return Object.assign({},defaultOptions,options)};exports.buildOptions=buildOptions;exports.defaultOptions=defaultOptions}});var require_xmlNode=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/xmlNode.js"(exports,module){"use strict";var XmlNode=class{constructor(tagname){this.tagname=tagname,this.child=[],this[":@"]={}}add(key,val){key==="__proto__"&&(key="#__proto__"),this.child.push({[key]:val})}addChild(node){node.tagname==="__proto__"&&(node.tagname="#__proto__"),node[":@"]&&Object.keys(node[":@"]).length>0?this.child.push({[node.tagname]:node.child,":@":node[":@"]}):this.child.push({[node.tagname]:node.child})}};module.exports=XmlNode}});var require_DocTypeReader=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/DocTypeReader.js"(exports,module){var util3=require_util();function readDocType(xmlData,i){let entities={};if(xmlData[i+3]==="O"&&xmlData[i+4]==="C"&&xmlData[i+5]==="T"&&xmlData[i+6]==="Y"&&xmlData[i+7]==="P"&&xmlData[i+8]==="E"){i=i+9;let angleBracketsCount=1,hasBody=!1,comment=!1,exp="";for(;i"){if(comment?xmlData[i-1]==="-"&&xmlData[i-2]==="-"&&(comment=!1,angleBracketsCount--):angleBracketsCount--,angleBracketsCount===0)break}else xmlData[i]==="["?hasBody=!0:exp+=xmlData[i];if(angleBracketsCount!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities,i}}function readEntityExp(xmlData,i){let entityName="";for(;i0&&sign&&trimmedStr[2]!==".")return str;if(!options.leadingZeros&&leadingZeros.length>0&&!sign&&trimmedStr[1]!==".")return str;if(options.leadingZeros&&leadingZeros===str)return 0;{let num=Number(trimmedStr),numStr=""+num;return numStr.search(/[eE]/)!==-1?options.eNotation?num:str:trimmedStr.indexOf(".")!==-1?numStr==="0"&&numTrimmedByZeros===""||numStr===numTrimmedByZeros||sign&&numStr==="-"+numTrimmedByZeros?num:str:leadingZeros?numTrimmedByZeros===numStr||sign+numTrimmedByZeros===numStr?num:str:trimmedStr===numStr||trimmedStr===sign+numStr?num:str}}else return str}}function trimZeros(numStr){return numStr&&numStr.indexOf(".")!==-1&&(numStr=numStr.replace(/0+$/,""),numStr==="."?numStr="0":numStr[0]==="."?numStr="0"+numStr:numStr[numStr.length-1]==="."&&(numStr=numStr.substr(0,numStr.length-1))),numStr}function parse_int(numStr,base){if(parseInt)return parseInt(numStr,base);if(Number.parseInt)return Number.parseInt(numStr,base);if(window&&window.parseInt)return window.parseInt(numStr,base);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}module.exports=toNumber}});var require_ignoreAttributes=__commonJS({"node_modules/fast-xml-parser/src/ignoreAttributes.js"(exports,module){function getIgnoreAttributesFn(ignoreAttributes){return typeof ignoreAttributes=="function"?ignoreAttributes:Array.isArray(ignoreAttributes)?attrName=>{for(let pattern of ignoreAttributes)if(typeof pattern=="string"&&attrName===pattern||pattern instanceof RegExp&&pattern.test(attrName))return!0}:()=>!1}module.exports=getIgnoreAttributesFn}});var require_OrderedObjParser=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/OrderedObjParser.js"(exports,module){"use strict";var util3=require_util(),xmlNode=require_xmlNode(),readDocType=require_DocTypeReader(),toNumber=require_strnum(),getIgnoreAttributesFn=require_ignoreAttributes(),OrderedObjParser=class{constructor(options){this.options=options,this.currentNode=null,this.tagsNodeStack=[],this.docTypeEntities={},this.lastEntities={apos:{regex:/&(apos|#39|#x27);/g,val:"'"},gt:{regex:/&(gt|#62|#x3E);/g,val:">"},lt:{regex:/&(lt|#60|#x3C);/g,val:"<"},quot:{regex:/&(quot|#34|#x22);/g,val:'"'}},this.ampEntity={regex:/&(amp|#38|#x26);/g,val:"&"},this.htmlEntities={space:{regex:/&(nbsp|#160);/g,val:" "},cent:{regex:/&(cent|#162);/g,val:"\xA2"},pound:{regex:/&(pound|#163);/g,val:"\xA3"},yen:{regex:/&(yen|#165);/g,val:"\xA5"},euro:{regex:/&(euro|#8364);/g,val:"\u20AC"},copyright:{regex:/&(copy|#169);/g,val:"\xA9"},reg:{regex:/&(reg|#174);/g,val:"\xAE"},inr:{regex:/&(inr|#8377);/g,val:"\u20B9"},num_dec:{regex:/&#([0-9]{1,7});/g,val:(_,str)=>String.fromCharCode(Number.parseInt(str,10))},num_hex:{regex:/&#x([0-9a-fA-F]{1,6});/g,val:(_,str)=>String.fromCharCode(Number.parseInt(str,16))}},this.addExternalEntities=addExternalEntities,this.parseXml=parseXml,this.parseTextData=parseTextData,this.resolveNameSpace=resolveNameSpace,this.buildAttributesMap=buildAttributesMap,this.isItStopNode=isItStopNode,this.replaceEntitiesValue=replaceEntitiesValue,this.readStopNodeData=readStopNodeData,this.saveTextToParentTag=saveTextToParentTag,this.addChild=addChild,this.ignoreAttributesFn=getIgnoreAttributesFn(this.options.ignoreAttributes)}};function addExternalEntities(externalEntities){let entKeys=Object.keys(externalEntities);for(let i=0;i0)){escapeEntities||(val=this.replaceEntitiesValue(val));let newval=this.options.tagValueProcessor(tagName,val,jPath,hasAttributes,isLeafNode);return newval==null?val:typeof newval!=typeof val||newval!==val?newval:this.options.trimValues?parseValue(val,this.options.parseTagValue,this.options.numberParseOptions):val.trim()===val?parseValue(val,this.options.parseTagValue,this.options.numberParseOptions):val}}function resolveNameSpace(tagname){if(this.options.removeNSPrefix){let tags2=tagname.split(":"),prefix2=tagname.charAt(0)==="/"?"/":"";if(tags2[0]==="xmlns")return"";tags2.length===2&&(tagname=prefix2+tags2[1])}return tagname}var attrsRegx=new RegExp(`([^\\s=]+)\\s*(=\\s*(['"])([\\s\\S]*?)\\3)?`,"gm");function buildAttributesMap(attrStr,jPath,tagName){if(this.options.ignoreAttributes!==!0&&typeof attrStr=="string"){let matches=util3.getAllMatches(attrStr,attrsRegx),len=matches.length,attrs={};for(let i=0;i",i,"Closing Tag is not closed."),tagName=xmlData.substring(i+2,closeIndex).trim();if(this.options.removeNSPrefix){let colonIndex=tagName.indexOf(":");colonIndex!==-1&&(tagName=tagName.substr(colonIndex+1))}this.options.transformTagName&&(tagName=this.options.transformTagName(tagName)),currentNode&&(textData=this.saveTextToParentTag(textData,currentNode,jPath));let lastTagName=jPath.substring(jPath.lastIndexOf(".")+1);if(tagName&&this.options.unpairedTags.indexOf(tagName)!==-1)throw new Error(`Unpaired tag can not be used as closing tag: `);let propIndex=0;lastTagName&&this.options.unpairedTags.indexOf(lastTagName)!==-1?(propIndex=jPath.lastIndexOf(".",jPath.lastIndexOf(".")-1),this.tagsNodeStack.pop()):propIndex=jPath.lastIndexOf("."),jPath=jPath.substring(0,propIndex),currentNode=this.tagsNodeStack.pop(),textData="",i=closeIndex}else if(xmlData[i+1]==="?"){let tagData=readTagExp(xmlData,i,!1,"?>");if(!tagData)throw new Error("Pi Tag is not closed.");if(textData=this.saveTextToParentTag(textData,currentNode,jPath),!(this.options.ignoreDeclaration&&tagData.tagName==="?xml"||this.options.ignorePiTags)){let childNode=new xmlNode(tagData.tagName);childNode.add(this.options.textNodeName,""),tagData.tagName!==tagData.tagExp&&tagData.attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagData.tagExp,jPath,tagData.tagName)),this.addChild(currentNode,childNode,jPath)}i=tagData.closeIndex+1}else if(xmlData.substr(i+1,3)==="!--"){let endIndex=findClosingIndex(xmlData,"-->",i+4,"Comment is not closed.");if(this.options.commentPropName){let comment=xmlData.substring(i+4,endIndex-2);textData=this.saveTextToParentTag(textData,currentNode,jPath),currentNode.add(this.options.commentPropName,[{[this.options.textNodeName]:comment}])}i=endIndex}else if(xmlData.substr(i+1,2)==="!D"){let result=readDocType(xmlData,i);this.docTypeEntities=result.entities,i=result.i}else if(xmlData.substr(i+1,2)==="!["){let closeIndex=findClosingIndex(xmlData,"]]>",i,"CDATA is not closed.")-2,tagExp=xmlData.substring(i+9,closeIndex);textData=this.saveTextToParentTag(textData,currentNode,jPath);let val=this.parseTextData(tagExp,currentNode.tagname,jPath,!0,!1,!0,!0);val==null&&(val=""),this.options.cdataPropName?currentNode.add(this.options.cdataPropName,[{[this.options.textNodeName]:tagExp}]):currentNode.add(this.options.textNodeName,val),i=closeIndex+2}else{let result=readTagExp(xmlData,i,this.options.removeNSPrefix),tagName=result.tagName,rawTagName=result.rawTagName,tagExp=result.tagExp,attrExpPresent=result.attrExpPresent,closeIndex=result.closeIndex;this.options.transformTagName&&(tagName=this.options.transformTagName(tagName)),currentNode&&textData&¤tNode.tagname!=="!xml"&&(textData=this.saveTextToParentTag(textData,currentNode,jPath,!1));let lastTag=currentNode;if(lastTag&&this.options.unpairedTags.indexOf(lastTag.tagname)!==-1&&(currentNode=this.tagsNodeStack.pop(),jPath=jPath.substring(0,jPath.lastIndexOf("."))),tagName!==xmlObj.tagname&&(jPath+=jPath?"."+tagName:tagName),this.isItStopNode(this.options.stopNodes,jPath,tagName)){let tagContent="";if(tagExp.length>0&&tagExp.lastIndexOf("/")===tagExp.length-1)tagName[tagName.length-1]==="/"?(tagName=tagName.substr(0,tagName.length-1),jPath=jPath.substr(0,jPath.length-1),tagExp=tagName):tagExp=tagExp.substr(0,tagExp.length-1),i=result.closeIndex;else if(this.options.unpairedTags.indexOf(tagName)!==-1)i=result.closeIndex;else{let result2=this.readStopNodeData(xmlData,rawTagName,closeIndex+1);if(!result2)throw new Error(`Unexpected end of ${rawTagName}`);i=result2.i,tagContent=result2.tagContent}let childNode=new xmlNode(tagName);tagName!==tagExp&&attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagExp,jPath,tagName)),tagContent&&(tagContent=this.parseTextData(tagContent,tagName,jPath,!0,attrExpPresent,!0,!0)),jPath=jPath.substr(0,jPath.lastIndexOf(".")),childNode.add(this.options.textNodeName,tagContent),this.addChild(currentNode,childNode,jPath)}else{if(tagExp.length>0&&tagExp.lastIndexOf("/")===tagExp.length-1){tagName[tagName.length-1]==="/"?(tagName=tagName.substr(0,tagName.length-1),jPath=jPath.substr(0,jPath.length-1),tagExp=tagName):tagExp=tagExp.substr(0,tagExp.length-1),this.options.transformTagName&&(tagName=this.options.transformTagName(tagName));let childNode=new xmlNode(tagName);tagName!==tagExp&&attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagExp,jPath,tagName)),this.addChild(currentNode,childNode,jPath),jPath=jPath.substr(0,jPath.lastIndexOf("."))}else{let childNode=new xmlNode(tagName);this.tagsNodeStack.push(currentNode),tagName!==tagExp&&attrExpPresent&&(childNode[":@"]=this.buildAttributesMap(tagExp,jPath,tagName)),this.addChild(currentNode,childNode,jPath),currentNode=childNode}textData="",i=closeIndex}}else textData+=xmlData[i];return xmlObj.child};function addChild(currentNode,childNode,jPath){let result=this.options.updateTag(childNode.tagname,jPath,childNode[":@"]);result===!1||(typeof result=="string"&&(childNode.tagname=result),currentNode.addChild(childNode))}var replaceEntitiesValue=function(val){if(this.options.processEntities){for(let entityName in this.docTypeEntities){let entity=this.docTypeEntities[entityName];val=val.replace(entity.regx,entity.val)}for(let entityName in this.lastEntities){let entity=this.lastEntities[entityName];val=val.replace(entity.regex,entity.val)}if(this.options.htmlEntities)for(let entityName in this.htmlEntities){let entity=this.htmlEntities[entityName];val=val.replace(entity.regex,entity.val)}val=val.replace(this.ampEntity.regex,this.ampEntity.val)}return val};function saveTextToParentTag(textData,currentNode,jPath,isLeafNode){return textData&&(isLeafNode===void 0&&(isLeafNode=currentNode.child.length===0),textData=this.parseTextData(textData,currentNode.tagname,jPath,!1,currentNode[":@"]?Object.keys(currentNode[":@"]).length!==0:!1,isLeafNode),textData!==void 0&&textData!==""&¤tNode.add(this.options.textNodeName,textData),textData=""),textData}function isItStopNode(stopNodes,jPath,currentTagName){let allNodesExp="*."+currentTagName;for(let stopNodePath in stopNodes){let stopNodeExp=stopNodes[stopNodePath];if(allNodesExp===stopNodeExp||jPath===stopNodeExp)return!0}return!1}function tagExpWithClosingIndex(xmlData,i,closingChar=">"){let attrBoundary,tagExp="";for(let index=i;index",i,`${tagName} is not closed`);if(xmlData.substring(i+2,closeIndex).trim()===tagName&&(openTagCount--,openTagCount===0))return{tagContent:xmlData.substring(startIndex,i),i:closeIndex};i=closeIndex}else if(xmlData[i+1]==="?")i=findClosingIndex(xmlData,"?>",i+1,"StopNode is not closed.");else if(xmlData.substr(i+1,3)==="!--")i=findClosingIndex(xmlData,"-->",i+3,"StopNode is not closed.");else if(xmlData.substr(i+1,2)==="![")i=findClosingIndex(xmlData,"]]>",i,"StopNode is not closed.")-2;else{let tagData=readTagExp(xmlData,i,">");tagData&&((tagData&&tagData.tagName)===tagName&&tagData.tagExp[tagData.tagExp.length-1]!=="/"&&openTagCount++,i=tagData.closeIndex)}}function parseValue(val,shouldParse,options){if(shouldParse&&typeof val=="string"){let newval=val.trim();return newval==="true"?!0:newval==="false"?!1:toNumber(val,options)}else return util3.isExist(val)?val:""}module.exports=OrderedObjParser}});var require_node2json=__commonJS({"node_modules/fast-xml-parser/src/xmlparser/node2json.js"(exports){"use strict";function prettify(node,options){return compress(node,options)}function compress(arr,options,jPath){let text,compressedObj={};for(let i=0;i0&&(compressedObj[options.textNodeName]=text):text!==void 0&&(compressedObj[options.textNodeName]=text),compressedObj}function propName(obj){let keys=Object.keys(obj);for(let i=0;i0&&(indentation=` -`),arrToStr(jArray,options,"",indentation)}function arrToStr(arr,options,jPath,indentation){let xmlStr="",isPreviousElementTag=!1;for(let i=0;i`,isPreviousElementTag=!1;continue}else if(tagName===options.commentPropName){xmlStr+=indentation+``,isPreviousElementTag=!0;continue}else if(tagName[0]==="?"){let attStr2=attr_to_str(tagObj[":@"],options),tempInd=tagName==="?xml"?"":indentation,piTextNodeName=tagObj[tagName][0][options.textNodeName];piTextNodeName=piTextNodeName.length!==0?" "+piTextNodeName:"",xmlStr+=tempInd+`<${tagName}${piTextNodeName}${attStr2}?>`,isPreviousElementTag=!0;continue}let newIdentation=indentation;newIdentation!==""&&(newIdentation+=options.indentBy);let attStr=attr_to_str(tagObj[":@"],options),tagStart=indentation+`<${tagName}${attStr}`,tagValue=arrToStr(tagObj[tagName],options,newJPath,newIdentation);options.unpairedTags.indexOf(tagName)!==-1?options.suppressUnpairedNode?xmlStr+=tagStart+">":xmlStr+=tagStart+"/>":(!tagValue||tagValue.length===0)&&options.suppressEmptyNode?xmlStr+=tagStart+"/>":tagValue&&tagValue.endsWith(">")?xmlStr+=tagStart+`>${tagValue}${indentation}`:(xmlStr+=tagStart+">",tagValue&&indentation!==""&&(tagValue.includes("/>")||tagValue.includes("`),isPreviousElementTag=!0}return xmlStr}function propName(obj){let keys=Object.keys(obj);for(let i=0;i0&&options.processEntities)for(let i=0;i","g"),val:">"},{regex:new RegExp("<","g"),val:"<"},{regex:new RegExp("'","g"),val:"'"},{regex:new RegExp('"',"g"),val:"""}],processEntities:!0,stopNodes:[],oneListGroup:!1};function Builder(options){this.options=Object.assign({},defaultOptions,options),this.options.ignoreAttributes===!0||this.options.attributesGroupName?this.isAttribute=function(){return!1}:(this.ignoreAttributesFn=getIgnoreAttributesFn(this.options.ignoreAttributes),this.attrPrefixLen=this.options.attributeNamePrefix.length,this.isAttribute=isAttribute),this.processTextOrObjNode=processTextOrObjNode,this.options.format?(this.indentate=indentate,this.tagEndChar=`> -`,this.newLine=` -`):(this.indentate=function(){return""},this.tagEndChar=">",this.newLine="")}Builder.prototype.build=function(jObj){return this.options.preserveOrder?buildFromOrderedJs(jObj,this.options):(Array.isArray(jObj)&&this.options.arrayNodeName&&this.options.arrayNodeName.length>1&&(jObj={[this.options.arrayNodeName]:jObj}),this.j2x(jObj,0,[]).val)};Builder.prototype.j2x=function(jObj,level,ajPath){let attrStr="",val="",jPath=ajPath.join(".");for(let key in jObj)if(Object.prototype.hasOwnProperty.call(jObj,key))if(typeof jObj[key]>"u")this.isAttribute(key)&&(val+="");else if(jObj[key]===null)this.isAttribute(key)||key===this.options.cdataPropName?val+="":key[0]==="?"?val+=this.indentate(level)+"<"+key+"?"+this.tagEndChar:val+=this.indentate(level)+"<"+key+"/"+this.tagEndChar;else if(jObj[key]instanceof Date)val+=this.buildTextValNode(jObj[key],key,"",level);else if(typeof jObj[key]!="object"){let attr=this.isAttribute(key);if(attr&&!this.ignoreAttributesFn(attr,jPath))attrStr+=this.buildAttrPairStr(attr,""+jObj[key]);else if(!attr)if(key===this.options.textNodeName){let newval=this.options.tagValueProcessor(key,""+jObj[key]);val+=this.replaceEntitiesValue(newval)}else val+=this.buildTextValNode(jObj[key],key,"",level)}else if(Array.isArray(jObj[key])){let arrLen=jObj[key].length,listTagVal="",listTagAttr="";for(let j=0;j"u"))if(item===null)key[0]==="?"?val+=this.indentate(level)+"<"+key+"?"+this.tagEndChar:val+=this.indentate(level)+"<"+key+"/"+this.tagEndChar;else if(typeof item=="object")if(this.options.oneListGroup){let result=this.j2x(item,level+1,ajPath.concat(key));listTagVal+=result.val,this.options.attributesGroupName&&item.hasOwnProperty(this.options.attributesGroupName)&&(listTagAttr+=result.attrStr)}else listTagVal+=this.processTextOrObjNode(item,key,level,ajPath);else if(this.options.oneListGroup){let textValue=this.options.tagValueProcessor(key,item);textValue=this.replaceEntitiesValue(textValue),listTagVal+=textValue}else listTagVal+=this.buildTextValNode(item,key,"",level)}this.options.oneListGroup&&(listTagVal=this.buildObjectNode(listTagVal,key,listTagAttr,level)),val+=listTagVal}else if(this.options.attributesGroupName&&key===this.options.attributesGroupName){let Ks=Object.keys(jObj[key]),L=Ks.length;for(let j=0;j"+val+tagEndExp:this.options.commentPropName!==!1&&key===this.options.commentPropName&&piClosingChar.length===0?this.indentate(level)+``+this.newLine:this.indentate(level)+"<"+key+attrStr+piClosingChar+this.tagEndChar+val+this.indentate(level)+tagEndExp}};Builder.prototype.closeTag=function(key){let closeTag="";return this.options.unpairedTags.indexOf(key)!==-1?this.options.suppressUnpairedNode||(closeTag="/"):this.options.suppressEmptyNode?closeTag="/":closeTag=`>`+this.newLine;if(this.options.commentPropName!==!1&&key===this.options.commentPropName)return this.indentate(level)+``+this.newLine;if(key[0]==="?")return this.indentate(level)+"<"+key+attrStr+"?"+this.tagEndChar;{let textValue=this.options.tagValueProcessor(key,val);return textValue=this.replaceEntitiesValue(textValue),textValue===""?this.indentate(level)+"<"+key+attrStr+this.closeTag(key)+this.tagEndChar:this.indentate(level)+"<"+key+attrStr+">"+textValue+"0&&this.options.processEntities)for(let i=0;i0,isBun=typeof process3.versions.bun=="string"&&process3.versions.bun.length>0,isNodeLike=!0;var debugEnvVariable=getEnvironmentVariable("DEBUG"),enabledString,enabledNamespaces=[],skippedNamespaces=[],debuggers=[];debugEnvVariable&&enable(debugEnvVariable);var debugObj=Object.assign(namespace=>createDebugger(namespace),{enable,enabled,disable,log});function enable(namespaces){enabledString=namespaces,enabledNamespaces=[],skippedNamespaces=[];let namespaceList=namespaces.split(",").map(ns=>ns.trim());for(let ns of namespaceList)ns.startsWith("-")?skippedNamespaces.push(ns.substring(1)):enabledNamespaces.push(ns);for(let instance of debuggers)instance.enabled=enabled(instance.namespace)}function enabled(namespace){if(namespace.endsWith("*"))return!0;for(let skipped of skippedNamespaces)if(namespaceMatches(namespace,skipped))return!1;for(let enabledNamespace of enabledNamespaces)if(namespaceMatches(namespace,enabledNamespace))return!0;return!1}function namespaceMatches(namespace,patternToMatch){if(patternToMatch.indexOf("*")===-1)return namespace===patternToMatch;let pattern=patternToMatch;if(patternToMatch.indexOf("**")!==-1){let patternParts=[],lastCharacter="";for(let character of patternToMatch)character==="*"&&lastCharacter==="*"||(lastCharacter=character,patternParts.push(character));pattern=patternParts.join("")}let namespaceIndex=0,patternIndex=0,patternLength=pattern.length,namespaceLength=namespace.length,lastWildcard=-1,lastWildcardNamespace=-1;for(;namespaceIndex=0){if(patternIndex=lastWildcard+1,namespaceIndex=lastWildcardNamespace+1,namespaceIndex===namespaceLength)return!1;for(;namespace[namespaceIndex]!==pattern[patternIndex];)if(namespaceIndex++,namespaceIndex===namespaceLength)return!1;lastWildcardNamespace=namespaceIndex,namespaceIndex++,patternIndex++;continue}else return!1;let namespaceDone=namespaceIndex===namespace.length,patternDone=patternIndex===pattern.length,trailingWildCard=patternIndex===pattern.length-1&&pattern[patternIndex]==="*";return namespaceDone&&(patternDone||trailingWildCard)}function disable(){let result=enabledString||"";return enable(""),result}function createDebugger(namespace){let newDebugger=Object.assign(debug,{enabled:enabled(namespace),destroy,log:debugObj.log,namespace,extend});function debug(...args){newDebugger.enabled&&(args.length>0&&(args[0]=`${namespace} ${args[0]}`),newDebugger.log(...args))}return debuggers.push(newDebugger),newDebugger}function destroy(){let index=debuggers.indexOf(this);return index>=0?(debuggers.splice(index,1),!0):!1}function extend(namespace){let newDebugger=createDebugger(`${this.namespace}:${namespace}`);return newDebugger.log=this.log,newDebugger}var debug_default=debugObj;var TYPESPEC_RUNTIME_LOG_LEVELS=["verbose","info","warning","error"],levelMap={verbose:400,info:300,warning:200,error:100};function patchLogMethod(parent,child){child.log=(...args)=>{parent.log(...args)}}function isTypeSpecRuntimeLogLevel(level){return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level)}function createLoggerContext(options){let registeredLoggers=new Set,logLevelFromEnv=getEnvironmentVariable(options.logLevelEnvVarName),logLevel,clientLogger=debug_default(options.namespace);clientLogger.log=(...args)=>{debug_default.log(...args)};function contextSetLogLevel(level){if(level&&!isTypeSpecRuntimeLogLevel(level))throw new Error(`Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(",")}`);logLevel=level;let enabledNamespaces2=[];for(let logger7 of registeredLoggers)shouldEnable(logger7)&&enabledNamespaces2.push(logger7.namespace);debug_default.enable(enabledNamespaces2.join(","))}logLevelFromEnv&&(isTypeSpecRuntimeLogLevel(logLevelFromEnv)?contextSetLogLevel(logLevelFromEnv):console.error(`${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(", ")}.`));function shouldEnable(logger7){return!!(logLevel&&levelMap[logger7.level]<=levelMap[logLevel])}function createLogger(parent,level){let logger7=Object.assign(parent.extend(level),{level});if(patchLogMethod(parent,logger7),shouldEnable(logger7)){let enabledNamespaces2=debug_default.disable();debug_default.enable(enabledNamespaces2+","+logger7.namespace)}return registeredLoggers.add(logger7),logger7}function contextGetLogLevel(){return logLevel}function contextCreateClientLogger(namespace){let clientRootLogger=clientLogger.extend(namespace);return patchLogMethod(clientLogger,clientRootLogger),{error:createLogger(clientRootLogger,"error"),warning:createLogger(clientRootLogger,"warning"),info:createLogger(clientRootLogger,"info"),verbose:createLogger(clientRootLogger,"verbose")}}return{setLogLevel:contextSetLogLevel,getLogLevel:contextGetLogLevel,createClientLogger:contextCreateClientLogger,logger:clientLogger}}var context=createLoggerContext({logLevelEnvVarName:"TYPESPEC_RUNTIME_LOG_LEVEL",namespace:"typeSpecRuntime"}),TypeSpecRuntimeLogger=context.logger;function createClientLogger(namespace){return context.createClientLogger(namespace)}function normalizeName(name){return name.toLowerCase()}function normalizeValue(value){return String(value).trim().replace(/[\r\n]/g,"")}function*headerIterator(map){for(let entry of map.values())yield[entry.name,entry.value]}var HttpHeadersImpl=class{_headersMap;constructor(rawHeaders){if(this._headersMap=new Map,rawHeaders)for(let headerName of Object.keys(rawHeaders))this.set(headerName,rawHeaders[headerName])}set(name,value){this._headersMap.set(normalizeName(name),{name,value:normalizeValue(value)})}get(name){return this._headersMap.get(normalizeName(name))?.value}has(name){return this._headersMap.has(normalizeName(name))}delete(name){this._headersMap.delete(normalizeName(name))}toJSON(options={}){let result={};if(options.preserveCase)for(let entry of this._headersMap.values())result[entry.name]=entry.value;else for(let[normalizedName,entry]of this._headersMap)result[normalizedName]=entry.value;return result}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[Symbol.iterator](){return headerIterator(this._headersMap)}};function createHttpHeaders(rawHeaders){return new HttpHeadersImpl(rawHeaders)}function randomUUID(){return globalThis.crypto.randomUUID()}var PipelineRequestImpl=class{url;method;headers;timeout;withCredentials;body;multipartBody;formData;streamResponseStatusCodes;enableBrowserStreams;proxySettings;disableKeepAlive;abortSignal;requestId;allowInsecureConnection;onUploadProgress;onDownloadProgress;requestOverrides;authSchemes;constructor(options){this.url=options.url,this.body=options.body,this.headers=options.headers??createHttpHeaders(),this.method=options.method??"GET",this.timeout=options.timeout??0,this.multipartBody=options.multipartBody,this.formData=options.formData,this.disableKeepAlive=options.disableKeepAlive??!1,this.proxySettings=options.proxySettings,this.streamResponseStatusCodes=options.streamResponseStatusCodes,this.withCredentials=options.withCredentials??!1,this.abortSignal=options.abortSignal,this.onUploadProgress=options.onUploadProgress,this.onDownloadProgress=options.onDownloadProgress,this.requestId=options.requestId||randomUUID(),this.allowInsecureConnection=options.allowInsecureConnection??!1,this.enableBrowserStreams=options.enableBrowserStreams??!1,this.requestOverrides=options.requestOverrides,this.authSchemes=options.authSchemes}};function createPipelineRequest(options){return new PipelineRequestImpl(options)}var ValidPhaseNames=new Set(["Deserialize","Serialize","Retry","Sign"]),HttpPipeline=class _HttpPipeline{_policies=[];_orderedPolicies;constructor(policies){this._policies=policies?.slice(0)??[],this._orderedPolicies=void 0}addPolicy(policy,options={}){if(options.phase&&options.afterPhase)throw new Error("Policies inside a phase cannot specify afterPhase.");if(options.phase&&!ValidPhaseNames.has(options.phase))throw new Error(`Invalid phase name: ${options.phase}`);if(options.afterPhase&&!ValidPhaseNames.has(options.afterPhase))throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);this._policies.push({policy,options}),this._orderedPolicies=void 0}removePolicy(options){let removedPolicies=[];return this._policies=this._policies.filter(policyDescriptor=>options.name&&policyDescriptor.policy.name===options.name||options.phase&&policyDescriptor.options.phase===options.phase?(removedPolicies.push(policyDescriptor.policy),!1):!0),this._orderedPolicies=void 0,removedPolicies}sendRequest(httpClient,request){return this.getOrderedPolicies().reduceRight((next,policy)=>req=>policy.sendRequest(req,next),req=>httpClient.sendRequest(req))(request)}getOrderedPolicies(){return this._orderedPolicies||(this._orderedPolicies=this.orderPolicies()),this._orderedPolicies}clone(){return new _HttpPipeline(this._policies)}static create(){return new _HttpPipeline}orderPolicies(){let result=[],policyMap=new Map;function createPhase(name){return{name,policies:new Set,hasRun:!1,hasAfterPolicies:!1}}let serializePhase=createPhase("Serialize"),noPhase=createPhase("None"),deserializePhase=createPhase("Deserialize"),retryPhase=createPhase("Retry"),signPhase=createPhase("Sign"),orderedPhases=[serializePhase,noPhase,deserializePhase,retryPhase,signPhase];function getPhase(phase){return phase==="Retry"?retryPhase:phase==="Serialize"?serializePhase:phase==="Deserialize"?deserializePhase:phase==="Sign"?signPhase:noPhase}for(let descriptor of this._policies){let policy=descriptor.policy,options=descriptor.options,policyName=policy.name;if(policyMap.has(policyName))throw new Error("Duplicate policy names not allowed in pipeline");let node={policy,dependsOn:new Set,dependants:new Set};options.afterPhase&&(node.afterPhase=getPhase(options.afterPhase),node.afterPhase.hasAfterPolicies=!0),policyMap.set(policyName,node),getPhase(options.phase).policies.add(node)}for(let descriptor of this._policies){let{policy,options}=descriptor,policyName=policy.name,node=policyMap.get(policyName);if(!node)throw new Error(`Missing node for policy ${policyName}`);if(options.afterPolicies)for(let afterPolicyName of options.afterPolicies){let afterNode=policyMap.get(afterPolicyName);afterNode&&(node.dependsOn.add(afterNode),afterNode.dependants.add(node))}if(options.beforePolicies)for(let beforePolicyName of options.beforePolicies){let beforeNode=policyMap.get(beforePolicyName);beforeNode&&(beforeNode.dependsOn.add(node),node.dependants.add(beforeNode))}}function walkPhase(phase){phase.hasRun=!0;for(let node of phase.policies)if(!(node.afterPhase&&(!node.afterPhase.hasRun||node.afterPhase.policies.size))&&node.dependsOn.size===0){result.push(node.policy);for(let dependant of node.dependants)dependant.dependsOn.delete(node);policyMap.delete(node.policy.name),phase.policies.delete(node)}}function walkPhases(){for(let phase of orderedPhases){if(walkPhase(phase),phase.policies.size>0&&phase!==noPhase){noPhase.hasRun||walkPhase(noPhase);return}phase.hasAfterPolicies&&walkPhase(noPhase)}}let iteration=0;for(;policyMap.size>0;){iteration++;let initialResultLength=result.length;if(walkPhases(),result.length<=initialResultLength&&iteration>1)throw new Error("Cannot satisfy policy dependencies due to requirements cycle.")}return result}};function createEmptyPipeline(){return HttpPipeline.create()}function isObject(input){return typeof input=="object"&&input!==null&&!Array.isArray(input)&&!(input instanceof RegExp)&&!(input instanceof Date)}function isError(e){if(isObject(e)){let hasName=typeof e.name=="string",hasMessage=typeof e.message=="string";return hasName&&hasMessage}return!1}import{inspect}from"node:util";var custom=inspect.custom;var RedactedString="REDACTED",defaultAllowedHeaderNames=["x-ms-client-request-id","x-ms-return-client-request-id","x-ms-useragent","x-ms-correlation-request-id","x-ms-request-id","client-request-id","ms-cv","return-client-request-id","traceparent","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Origin","Accept","Accept-Encoding","Cache-Control","Connection","Content-Length","Content-Type","Date","ETag","Expires","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Last-Modified","Pragma","Request-Id","Retry-After","Server","Transfer-Encoding","User-Agent","WWW-Authenticate"],defaultAllowedQueryParameters=["api-version"],Sanitizer=class{allowedHeaderNames;allowedQueryParameters;constructor({additionalAllowedHeaderNames:allowedHeaderNames=[],additionalAllowedQueryParameters:allowedQueryParameters=[]}={}){allowedHeaderNames=defaultAllowedHeaderNames.concat(allowedHeaderNames),allowedQueryParameters=defaultAllowedQueryParameters.concat(allowedQueryParameters),this.allowedHeaderNames=new Set(allowedHeaderNames.map(n=>n.toLowerCase())),this.allowedQueryParameters=new Set(allowedQueryParameters.map(p=>p.toLowerCase()))}sanitize(obj){let seen=new Set;return JSON.stringify(obj,(key,value)=>{if(value instanceof Error)return{...value,name:value.name,message:value.message};if(key==="headers"&&isObject(value))return this.sanitizeHeaders(value);if(key==="url"&&typeof value=="string")return this.sanitizeUrl(value);if(key==="query"&&isObject(value))return this.sanitizeQuery(value);if(key==="body")return;if(key==="response")return;if(key==="operationSpec")return;if(Array.isArray(value)||isObject(value)){if(seen.has(value))return"[Circular]";seen.add(value)}return value},2)}sanitizeUrl(value){if(typeof value!="string"||value===null||value==="")return value;let url2=new URL(value);if(!url2.search)return value;for(let[key]of url2.searchParams)this.allowedQueryParameters.has(key.toLowerCase())||url2.searchParams.set(key,RedactedString);return url2.toString()}sanitizeHeaders(obj){let sanitized={};for(let key of Object.keys(obj))this.allowedHeaderNames.has(key.toLowerCase())?sanitized[key]=obj[key]:sanitized[key]=RedactedString;return sanitized}sanitizeQuery(value){if(typeof value!="object"||value===null)return value;let sanitized={};for(let k of Object.keys(value))this.allowedQueryParameters.has(k.toLowerCase())?sanitized[k]=value[k]:sanitized[k]=RedactedString;return sanitized}};var errorSanitizer=new Sanitizer,RestError=class _RestError extends Error{static REQUEST_SEND_ERROR="REQUEST_SEND_ERROR";static PARSE_ERROR="PARSE_ERROR";code;statusCode;request;response;details;constructor(message,options={}){super(message),this.name="RestError",this.code=options.code,this.statusCode=options.statusCode,Object.defineProperty(this,"request",{value:options.request,enumerable:!1}),Object.defineProperty(this,"response",{value:options.response,enumerable:!1});let agent=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,custom,{value:()=>`RestError: ${this.message} +`)+4,req.outputData[0].data=req._header+first.substring(endOfHeaders),debug("Output buffer: %o",req.outputData[0].data));let socket;return this.proxy.protocol==="https:"?(debug("Creating `tls.Socket`: %o",this.connectOpts),socket=tls.connect(this.connectOpts)):(debug("Creating `net.Socket`: %o",this.connectOpts),socket=net.connect(this.connectOpts)),await(0,events_1.once)(socket,"connect"),socket}};HttpProxyAgent2.protocols=["http","https"];exports2.HttpProxyAgent=HttpProxyAgent2;function omit(obj,...keys){let ret={},key;for(key in obj)keys.includes(key)||(ret[key]=obj[key]);return ret}}});var require_state_cjs=__commonJS({"node_modules/@azure/core-tracing/dist/commonjs/state-cjs.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.state=void 0;exports2.state={instrumenterImplementation:void 0}}});var require_state_cjs2=__commonJS({"node_modules/@azure/core-client/dist/commonjs/state-cjs.js"(exports2){"use strict";Object.defineProperty(exports2,"__esModule",{value:!0});exports2.state=void 0;exports2.state={operationRequestMap:new WeakMap}}});var AbortError=class extends Error{constructor(message){super(message),this.name="AbortError"}};import{EOL}from"node:os";import util from"node:util";import process2 from"node:process";function log(message,...args){process2.stderr.write(`${util.format(message,...args)}${EOL}`)}import process3 from"node:process";function getEnvironmentVariable(name){return process3.env[name]}var isDeno=typeof process3.versions.deno=="string"&&process3.versions.deno.length>0,isBun=typeof process3.versions.bun=="string"&&process3.versions.bun.length>0,isNodeLike=!0;var debugEnvVariable=getEnvironmentVariable("DEBUG"),enabledString,enabledNamespaces=[],skippedNamespaces=[],debuggers=[];debugEnvVariable&&enable(debugEnvVariable);var debugObj=Object.assign(namespace=>createDebugger(namespace),{enable,enabled,disable,log});function enable(namespaces){enabledString=namespaces,enabledNamespaces=[],skippedNamespaces=[];let namespaceList=namespaces.split(",").map(ns=>ns.trim());for(let ns of namespaceList)ns.startsWith("-")?skippedNamespaces.push(ns.substring(1)):enabledNamespaces.push(ns);for(let instance of debuggers)instance.enabled=enabled(instance.namespace)}function enabled(namespace){if(namespace.endsWith("*"))return!0;for(let skipped of skippedNamespaces)if(namespaceMatches(namespace,skipped))return!1;for(let enabledNamespace of enabledNamespaces)if(namespaceMatches(namespace,enabledNamespace))return!0;return!1}function namespaceMatches(namespace,patternToMatch){if(patternToMatch.indexOf("*")===-1)return namespace===patternToMatch;let pattern=patternToMatch;if(patternToMatch.indexOf("**")!==-1){let patternParts=[],lastCharacter="";for(let character of patternToMatch)character==="*"&&lastCharacter==="*"||(lastCharacter=character,patternParts.push(character));pattern=patternParts.join("")}let namespaceIndex=0,patternIndex=0,patternLength=pattern.length,namespaceLength=namespace.length,lastWildcard=-1,lastWildcardNamespace=-1;for(;namespaceIndex=0){if(patternIndex=lastWildcard+1,namespaceIndex=lastWildcardNamespace+1,namespaceIndex===namespaceLength)return!1;for(;namespace[namespaceIndex]!==pattern[patternIndex];)if(namespaceIndex++,namespaceIndex===namespaceLength)return!1;lastWildcardNamespace=namespaceIndex,namespaceIndex++,patternIndex++;continue}else return!1;let namespaceDone=namespaceIndex===namespace.length,patternDone=patternIndex===pattern.length,trailingWildCard=patternIndex===pattern.length-1&&pattern[patternIndex]==="*";return namespaceDone&&(patternDone||trailingWildCard)}function disable(){let result=enabledString||"";return enable(""),result}function createDebugger(namespace){let newDebugger=Object.assign(debug,{enabled:enabled(namespace),destroy,log:debugObj.log,namespace,extend});function debug(...args){newDebugger.enabled&&(args.length>0&&(args[0]=`${namespace} ${args[0]}`),newDebugger.log(...args))}return debuggers.push(newDebugger),newDebugger}function destroy(){let index=debuggers.indexOf(this);return index>=0?(debuggers.splice(index,1),!0):!1}function extend(namespace){let newDebugger=createDebugger(`${this.namespace}:${namespace}`);return newDebugger.log=this.log,newDebugger}var debug_default=debugObj;var TYPESPEC_RUNTIME_LOG_LEVELS=["verbose","info","warning","error"],levelMap={verbose:400,info:300,warning:200,error:100};function patchLogMethod(parent,child){child.log=(...args)=>{parent.log(...args)}}function isTypeSpecRuntimeLogLevel(level){return TYPESPEC_RUNTIME_LOG_LEVELS.includes(level)}function createLoggerContext(options){let registeredLoggers=new Set,logLevelFromEnv=getEnvironmentVariable(options.logLevelEnvVarName),logLevel,clientLogger=debug_default(options.namespace);clientLogger.log=(...args)=>{debug_default.log(...args)};function contextSetLogLevel(level){if(level&&!isTypeSpecRuntimeLogLevel(level))throw new Error(`Unknown log level '${level}'. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(",")}`);logLevel=level;let enabledNamespaces2=[];for(let logger7 of registeredLoggers)shouldEnable(logger7)&&enabledNamespaces2.push(logger7.namespace);debug_default.enable(enabledNamespaces2.join(","))}logLevelFromEnv&&(isTypeSpecRuntimeLogLevel(logLevelFromEnv)?contextSetLogLevel(logLevelFromEnv):console.error(`${options.logLevelEnvVarName} set to unknown log level '${logLevelFromEnv}'; logging is not enabled. Acceptable values: ${TYPESPEC_RUNTIME_LOG_LEVELS.join(", ")}.`));function shouldEnable(logger7){return!!(logLevel&&levelMap[logger7.level]<=levelMap[logLevel])}function createLogger(parent,level){let logger7=Object.assign(parent.extend(level),{level});if(patchLogMethod(parent,logger7),shouldEnable(logger7)){let enabledNamespaces2=debug_default.disable();debug_default.enable(enabledNamespaces2+","+logger7.namespace)}return registeredLoggers.add(logger7),logger7}function contextGetLogLevel(){return logLevel}function contextCreateClientLogger(namespace){let clientRootLogger=clientLogger.extend(namespace);return patchLogMethod(clientLogger,clientRootLogger),{error:createLogger(clientRootLogger,"error"),warning:createLogger(clientRootLogger,"warning"),info:createLogger(clientRootLogger,"info"),verbose:createLogger(clientRootLogger,"verbose")}}return{setLogLevel:contextSetLogLevel,getLogLevel:contextGetLogLevel,createClientLogger:contextCreateClientLogger,logger:clientLogger}}var context=createLoggerContext({logLevelEnvVarName:"TYPESPEC_RUNTIME_LOG_LEVEL",namespace:"typeSpecRuntime"}),TypeSpecRuntimeLogger=context.logger;function createClientLogger(namespace){return context.createClientLogger(namespace)}function normalizeName(name){return name.toLowerCase()}function normalizeValue(value){return String(value).trim().replace(/[\r\n]/g,"")}function*headerIterator(map){for(let entry of map.values())yield[entry.name,entry.value]}var HttpHeadersImpl=class{_headersMap;constructor(rawHeaders){if(this._headersMap=new Map,rawHeaders)for(let headerName of Object.keys(rawHeaders))this.set(headerName,rawHeaders[headerName])}set(name,value){this._headersMap.set(normalizeName(name),{name,value:normalizeValue(value)})}get(name){return this._headersMap.get(normalizeName(name))?.value}has(name){return this._headersMap.has(normalizeName(name))}delete(name){this._headersMap.delete(normalizeName(name))}toJSON(options={}){let result={};if(options.preserveCase)for(let entry of this._headersMap.values())result[entry.name]=entry.value;else for(let[normalizedName,entry]of this._headersMap)result[normalizedName]=entry.value;return result}toString(){return JSON.stringify(this.toJSON({preserveCase:!0}))}[Symbol.iterator](){return headerIterator(this._headersMap)}};function createHttpHeaders(rawHeaders){return new HttpHeadersImpl(rawHeaders)}function randomUUID(){return globalThis.crypto.randomUUID()}var PipelineRequestImpl=class{url;method;headers;timeout;withCredentials;body;multipartBody;formData;streamResponseStatusCodes;enableBrowserStreams;proxySettings;disableKeepAlive;abortSignal;requestId;allowInsecureConnection;onUploadProgress;onDownloadProgress;requestOverrides;authSchemes;constructor(options){this.url=options.url,this.body=options.body,this.headers=options.headers??createHttpHeaders(),this.method=options.method??"GET",this.timeout=options.timeout??0,this.multipartBody=options.multipartBody,this.formData=options.formData,this.disableKeepAlive=options.disableKeepAlive??!1,this.proxySettings=options.proxySettings,this.streamResponseStatusCodes=options.streamResponseStatusCodes,this.withCredentials=options.withCredentials??!1,this.abortSignal=options.abortSignal,this.onUploadProgress=options.onUploadProgress,this.onDownloadProgress=options.onDownloadProgress,this.requestId=options.requestId||randomUUID(),this.allowInsecureConnection=options.allowInsecureConnection??!1,this.enableBrowserStreams=options.enableBrowserStreams??!1,this.requestOverrides=options.requestOverrides,this.authSchemes=options.authSchemes}};function createPipelineRequest(options){return new PipelineRequestImpl(options)}var ValidPhaseNames=new Set(["Deserialize","Serialize","Retry","Sign"]),HttpPipeline=class _HttpPipeline{_policies=[];_orderedPolicies;constructor(policies){this._policies=policies?.slice(0)??[],this._orderedPolicies=void 0}addPolicy(policy,options={}){if(options.phase&&options.afterPhase)throw new Error("Policies inside a phase cannot specify afterPhase.");if(options.phase&&!ValidPhaseNames.has(options.phase))throw new Error(`Invalid phase name: ${options.phase}`);if(options.afterPhase&&!ValidPhaseNames.has(options.afterPhase))throw new Error(`Invalid afterPhase name: ${options.afterPhase}`);this._policies.push({policy,options}),this._orderedPolicies=void 0}removePolicy(options){let removedPolicies=[];return this._policies=this._policies.filter(policyDescriptor=>options.name&&policyDescriptor.policy.name===options.name||options.phase&&policyDescriptor.options.phase===options.phase?(removedPolicies.push(policyDescriptor.policy),!1):!0),this._orderedPolicies=void 0,removedPolicies}sendRequest(httpClient,request){return this.getOrderedPolicies().reduceRight((next,policy)=>req=>policy.sendRequest(req,next),req=>httpClient.sendRequest(req))(request)}getOrderedPolicies(){return this._orderedPolicies||(this._orderedPolicies=this.orderPolicies()),this._orderedPolicies}clone(){return new _HttpPipeline(this._policies)}static create(){return new _HttpPipeline}orderPolicies(){let result=[],policyMap=new Map;function createPhase(name){return{name,policies:new Set,hasRun:!1,hasAfterPolicies:!1}}let serializePhase=createPhase("Serialize"),noPhase=createPhase("None"),deserializePhase=createPhase("Deserialize"),retryPhase=createPhase("Retry"),signPhase=createPhase("Sign"),orderedPhases=[serializePhase,noPhase,deserializePhase,retryPhase,signPhase];function getPhase(phase){return phase==="Retry"?retryPhase:phase==="Serialize"?serializePhase:phase==="Deserialize"?deserializePhase:phase==="Sign"?signPhase:noPhase}for(let descriptor of this._policies){let policy=descriptor.policy,options=descriptor.options,policyName=policy.name;if(policyMap.has(policyName))throw new Error("Duplicate policy names not allowed in pipeline");let node={policy,dependsOn:new Set,dependants:new Set};options.afterPhase&&(node.afterPhase=getPhase(options.afterPhase),node.afterPhase.hasAfterPolicies=!0),policyMap.set(policyName,node),getPhase(options.phase).policies.add(node)}for(let descriptor of this._policies){let{policy,options}=descriptor,policyName=policy.name,node=policyMap.get(policyName);if(!node)throw new Error(`Missing node for policy ${policyName}`);if(options.afterPolicies)for(let afterPolicyName of options.afterPolicies){let afterNode=policyMap.get(afterPolicyName);afterNode&&(node.dependsOn.add(afterNode),afterNode.dependants.add(node))}if(options.beforePolicies)for(let beforePolicyName of options.beforePolicies){let beforeNode=policyMap.get(beforePolicyName);beforeNode&&(beforeNode.dependsOn.add(node),node.dependants.add(beforeNode))}}function walkPhase(phase){phase.hasRun=!0;for(let node of phase.policies)if(!(node.afterPhase&&(!node.afterPhase.hasRun||node.afterPhase.policies.size))&&node.dependsOn.size===0){result.push(node.policy);for(let dependant of node.dependants)dependant.dependsOn.delete(node);policyMap.delete(node.policy.name),phase.policies.delete(node)}}function walkPhases(){for(let phase of orderedPhases){if(walkPhase(phase),phase.policies.size>0&&phase!==noPhase){noPhase.hasRun||walkPhase(noPhase);return}phase.hasAfterPolicies&&walkPhase(noPhase)}}let iteration=0;for(;policyMap.size>0;){iteration++;let initialResultLength=result.length;if(walkPhases(),result.length<=initialResultLength&&iteration>1)throw new Error("Cannot satisfy policy dependencies due to requirements cycle.")}return result}};function createEmptyPipeline(){return HttpPipeline.create()}function isObject(input){return typeof input=="object"&&input!==null&&!Array.isArray(input)&&!(input instanceof RegExp)&&!(input instanceof Date)}function isError(e){if(isObject(e)){let hasName=typeof e.name=="string",hasMessage=typeof e.message=="string";return hasName&&hasMessage}return!1}import{inspect}from"node:util";var custom=inspect.custom;var RedactedString="REDACTED",defaultAllowedHeaderNames=["x-ms-client-request-id","x-ms-return-client-request-id","x-ms-useragent","x-ms-correlation-request-id","x-ms-request-id","client-request-id","ms-cv","return-client-request-id","traceparent","Access-Control-Allow-Credentials","Access-Control-Allow-Headers","Access-Control-Allow-Methods","Access-Control-Allow-Origin","Access-Control-Expose-Headers","Access-Control-Max-Age","Access-Control-Request-Headers","Access-Control-Request-Method","Origin","Accept","Accept-Encoding","Cache-Control","Connection","Content-Length","Content-Type","Date","ETag","Expires","If-Match","If-Modified-Since","If-None-Match","If-Unmodified-Since","Last-Modified","Pragma","Request-Id","Retry-After","Server","Transfer-Encoding","User-Agent","WWW-Authenticate"],defaultAllowedQueryParameters=["api-version"],Sanitizer=class{allowedHeaderNames;allowedQueryParameters;constructor({additionalAllowedHeaderNames:allowedHeaderNames=[],additionalAllowedQueryParameters:allowedQueryParameters=[]}={}){allowedHeaderNames=defaultAllowedHeaderNames.concat(allowedHeaderNames),allowedQueryParameters=defaultAllowedQueryParameters.concat(allowedQueryParameters),this.allowedHeaderNames=new Set(allowedHeaderNames.map(n=>n.toLowerCase())),this.allowedQueryParameters=new Set(allowedQueryParameters.map(p=>p.toLowerCase()))}sanitize(obj){let seen=new Set;return JSON.stringify(obj,(key,value)=>{if(value instanceof Error)return{...value,name:value.name,message:value.message};if(key==="headers"&&isObject(value))return this.sanitizeHeaders(value);if(key==="url"&&typeof value=="string")return this.sanitizeUrl(value);if(key==="query"&&isObject(value))return this.sanitizeQuery(value);if(key==="body")return;if(key==="response")return;if(key==="operationSpec")return;if(Array.isArray(value)||isObject(value)){if(seen.has(value))return"[Circular]";seen.add(value)}return value},2)}sanitizeUrl(value){if(typeof value!="string"||value===null||value==="")return value;let url2=new URL(value);if(!url2.search)return value;for(let[key]of url2.searchParams)this.allowedQueryParameters.has(key.toLowerCase())||url2.searchParams.set(key,RedactedString);return url2.toString()}sanitizeHeaders(obj){let sanitized={};for(let key of Object.keys(obj))this.allowedHeaderNames.has(key.toLowerCase())?sanitized[key]=obj[key]:sanitized[key]=RedactedString;return sanitized}sanitizeQuery(value){if(typeof value!="object"||value===null)return value;let sanitized={};for(let k of Object.keys(value))this.allowedQueryParameters.has(k.toLowerCase())?sanitized[k]=value[k]:sanitized[k]=RedactedString;return sanitized}};var errorSanitizer=new Sanitizer,RestError=class _RestError extends Error{static REQUEST_SEND_ERROR="REQUEST_SEND_ERROR";static PARSE_ERROR="PARSE_ERROR";code;statusCode;request;response;details;constructor(message,options={}){super(message),this.name="RestError",this.code=options.code,this.statusCode=options.statusCode,Object.defineProperty(this,"request",{value:options.request,enumerable:!1}),Object.defineProperty(this,"response",{value:options.response,enumerable:!1});let agent=this.request?.agent?{maxFreeSockets:this.request.agent.maxFreeSockets,maxSockets:this.request.agent.maxSockets}:void 0;Object.defineProperty(this,custom,{value:()=>`RestError: ${this.message} ${errorSanitizer.sanitize({...this,request:{...this.request,agent},response:this.response})}`,enumerable:!1}),Object.setPrototypeOf(this,_RestError.prototype)}};function isRestError(e){return e instanceof RestError?!0:isError(e)&&e.name==="RestError"}function uint8ArrayToString(bytes,format){return Buffer.from(bytes).toString(format)}function stringToUint8Array(value,format){return Buffer.from(value,format)}import http from"node:http";import https from"node:https";import zlib from"node:zlib";import{Transform}from"node:stream";var logger=createClientLogger("ts-http-runtime");var DEFAULT_TLS_SETTINGS={};function isReadableStream(body2){return body2&&typeof body2.pipe=="function"}function isStreamComplete(stream){return stream.readable===!1?Promise.resolve():new Promise(resolve=>{let handler=()=>{resolve(),stream.removeListener("close",handler),stream.removeListener("end",handler),stream.removeListener("error",handler)};stream.on("close",handler),stream.on("end",handler),stream.on("error",handler)})}function isArrayBuffer(body2){return body2&&typeof body2.byteLength=="number"}var ReportTransform=class extends Transform{loadedBytes=0;progressCallback;_transform(chunk,_encoding,callback){this.push(chunk),this.loadedBytes+=chunk.length;try{this.progressCallback({loadedBytes:this.loadedBytes}),callback()}catch(e){callback(e)}}constructor(progressCallback){super(),this.progressCallback=progressCallback}},NodeHttpClient=class{cachedHttpAgent;cachedHttpsAgents=new WeakMap;async sendRequest(request){let abortController=new AbortController,abortListener;if(request.abortSignal){if(request.abortSignal.aborted)throw new AbortError("The operation was aborted. Request has already been canceled.");abortListener=event=>{event.type==="abort"&&abortController.abort()},request.abortSignal.addEventListener("abort",abortListener)}let timeoutId;request.timeout>0&&(timeoutId=setTimeout(()=>{let sanitizer=new Sanitizer;logger.info(`request to '${sanitizer.sanitizeUrl(request.url)}' timed out. canceling...`),abortController.abort()},request.timeout));let acceptEncoding=request.headers.get("Accept-Encoding"),shouldDecompress=acceptEncoding?.includes("gzip")||acceptEncoding?.includes("deflate"),body2=typeof request.body=="function"?request.body():request.body;if(body2&&!request.headers.has("Content-Length")){let bodyLength=getBodyLength(body2);bodyLength!==null&&request.headers.set("Content-Length",bodyLength)}let responseStream;try{if(body2&&request.onUploadProgress){let onUploadProgress=request.onUploadProgress,uploadReportStream=new ReportTransform(onUploadProgress);uploadReportStream.on("error",e=>{logger.error("Error in upload progress",e)}),isReadableStream(body2)?body2.pipe(uploadReportStream):uploadReportStream.end(body2),body2=uploadReportStream}let res=await this.makeRequest(request,abortController,body2),headers=getResponseHeaders(res),response={status:res.statusCode??0,headers,request};if(request.method==="HEAD")return res.resume(),response;responseStream=shouldDecompress?getDecodedResponseStream(res,headers):res;let onDownloadProgress=request.onDownloadProgress;if(onDownloadProgress){let downloadReportStream=new ReportTransform(onDownloadProgress);downloadReportStream.on("error",e=>{logger.error("Error in download progress",e)}),responseStream.pipe(downloadReportStream),responseStream=downloadReportStream}return request.streamResponseStatusCodes?.has(Number.POSITIVE_INFINITY)||request.streamResponseStatusCodes?.has(response.status)?response.readableStreamBody=responseStream:response.bodyAsText=await streamToText(responseStream),response}finally{if(timeoutId!==void 0&&clearTimeout(timeoutId),request.abortSignal&&abortListener){let uploadStreamDone=Promise.resolve();isReadableStream(body2)&&(uploadStreamDone=isStreamComplete(body2));let downloadStreamDone=Promise.resolve();isReadableStream(responseStream)&&(downloadStreamDone=isStreamComplete(responseStream)),Promise.all([uploadStreamDone,downloadStreamDone]).then(()=>{abortListener&&request.abortSignal?.removeEventListener("abort",abortListener)}).catch(e=>{logger.warning("Error when cleaning up abortListener on httpRequest",e)})}}}makeRequest(request,abortController,body2){let url2=new URL(request.url),isInsecure=url2.protocol!=="https:";if(isInsecure&&!request.allowInsecureConnection)throw new Error(`Cannot connect to ${request.url} while allowInsecureConnection is false.`);let options={agent:request.agent??this.getOrCreateAgent(request,isInsecure),hostname:url2.hostname,path:`${url2.pathname}${url2.search}`,port:url2.port,method:request.method,headers:request.headers.toJSON({preserveCase:!0}),...request.requestOverrides};return new Promise((resolve,reject)=>{let req=isInsecure?http.request(options,resolve):https.request(options,resolve);req.once("error",err=>{reject(new RestError(err.message,{code:err.code??RestError.REQUEST_SEND_ERROR,request}))}),abortController.signal.addEventListener("abort",()=>{let abortError=new AbortError("The operation was aborted. Rejecting from abort signal callback while making request.");req.destroy(abortError),reject(abortError)}),body2&&isReadableStream(body2)?body2.pipe(req):body2?typeof body2=="string"||Buffer.isBuffer(body2)?req.end(body2):isArrayBuffer(body2)?req.end(ArrayBuffer.isView(body2)?Buffer.from(body2.buffer,body2.byteOffset,body2.byteLength):Buffer.from(body2)):(logger.error("Unrecognized body type",body2),reject(new RestError("Unrecognized body type"))):req.end()})}getOrCreateAgent(request,isInsecure){let disableKeepAlive=request.disableKeepAlive;if(isInsecure)return disableKeepAlive?http.globalAgent:(this.cachedHttpAgent||(this.cachedHttpAgent=new http.Agent({keepAlive:!0})),this.cachedHttpAgent);{if(disableKeepAlive&&!request.tlsSettings)return https.globalAgent;let tlsSettings=request.tlsSettings??DEFAULT_TLS_SETTINGS,agent=this.cachedHttpsAgents.get(tlsSettings);return agent&&agent.options.keepAlive===!disableKeepAlive||(logger.info("No cached TLS Agent exist, creating a new Agent"),agent=new https.Agent({keepAlive:!disableKeepAlive,...tlsSettings}),this.cachedHttpsAgents.set(tlsSettings,agent)),agent}}};function getResponseHeaders(res){let headers=createHttpHeaders();for(let header of Object.keys(res.headers)){let value=res.headers[header];Array.isArray(value)?value.length>0&&headers.set(header,value[0]):value&&headers.set(header,value)}return headers}function getDecodedResponseStream(stream,headers){let contentEncoding=headers.get("Content-Encoding");if(contentEncoding==="gzip"){let unzip=zlib.createGunzip();return stream.pipe(unzip),unzip}else if(contentEncoding==="deflate"){let inflate=zlib.createInflate();return stream.pipe(inflate),inflate}return stream}function streamToText(stream){return new Promise((resolve,reject)=>{let buffer2=[];stream.on("data",chunk=>{Buffer.isBuffer(chunk)?buffer2.push(chunk):buffer2.push(Buffer.from(chunk))}),stream.on("end",()=>{resolve(Buffer.concat(buffer2).toString("utf8"))}),stream.on("error",e=>{e&&e?.name==="AbortError"?reject(e):reject(new RestError(`Error reading response as text: ${e.message}`,{code:RestError.PARSE_ERROR}))})})}function getBodyLength(body2){return body2?Buffer.isBuffer(body2)?body2.length:isReadableStream(body2)?null:isArrayBuffer(body2)?body2.byteLength:typeof body2=="string"?Buffer.from(body2).length:null:0}function createNodeHttpClient(){return new NodeHttpClient}function createDefaultHttpClient(){return createNodeHttpClient()}var logPolicyName="logPolicy";function logPolicy(options={}){let logger7=options.logger??logger.info,sanitizer=new Sanitizer({additionalAllowedHeaderNames:options.additionalAllowedHeaderNames,additionalAllowedQueryParameters:options.additionalAllowedQueryParameters});return{name:logPolicyName,async sendRequest(request,next){if(!logger7.enabled)return next(request);logger7(`Request: ${sanitizer.sanitize(request)}`);let response=await next(request);return logger7(`Response status code: ${response.status}`),logger7(`Headers: ${sanitizer.sanitize({headers:response.headers})}`),response}}}import os from"node:os";import process4 from"node:process";function getHeaderName(){return"User-Agent"}function getUserAgentHeaderName(){return getHeaderName()}var UserAgentHeaderName=getUserAgentHeaderName();function getRandomIntegerInclusive(min,max){return min=Math.ceil(min),max=Math.floor(max),Math.floor(Math.random()*(max-min+1))+min}function calculateRetryDelay(retryAttempt,config){let exponentialDelay=config.retryDelayInMs*Math.pow(2,retryAttempt),clampedDelay=Math.min(config.maxRetryDelayInMs,exponentialDelay);return{retryAfterInMs:clampedDelay/2+getRandomIntegerInclusive(0,clampedDelay/2)}}var StandardAbortMessage="The operation was aborted.";function delay(delayInMs,value,options){return new Promise((resolve,reject)=>{let timer,onAborted,rejectOnAbort=()=>reject(new AbortError(options?.abortErrorMsg?options?.abortErrorMsg:StandardAbortMessage)),removeListeners=()=>{options?.abortSignal&&onAborted&&options.abortSignal.removeEventListener("abort",onAborted)};if(onAborted=()=>(timer&&clearTimeout(timer),removeListeners(),rejectOnAbort()),options?.abortSignal&&options.abortSignal.aborted)return rejectOnAbort();timer=setTimeout(()=>{removeListeners(),resolve(value)},delayInMs),options?.abortSignal&&options.abortSignal.addEventListener("abort",onAborted)})}function parseHeaderValueAsNumber(response,headerName){let value=response.headers.get(headerName);if(!value)return;let valueAsNum=Number(value);if(!Number.isNaN(valueAsNum))return valueAsNum}var RetryAfterHeader="Retry-After",AllRetryAfterHeaders=["retry-after-ms","x-ms-retry-after-ms",RetryAfterHeader];function getRetryAfterInMs(response){if(response&&[429,503].includes(response.status))try{for(let header of AllRetryAfterHeaders){let retryAfterValue=parseHeaderValueAsNumber(response,header);if(retryAfterValue===0||retryAfterValue)return retryAfterValue*(header===RetryAfterHeader?1e3:1)}let retryAfterHeader=response.headers.get(RetryAfterHeader);if(!retryAfterHeader)return;let diff=Date.parse(retryAfterHeader)-Date.now();return Number.isFinite(diff)?Math.max(0,diff):void 0}catch{return}}function isThrottlingRetryResponse(response){return Number.isFinite(getRetryAfterInMs(response))}function throttlingRetryStrategy(){return{name:"throttlingRetryStrategy",retry({response}){let retryAfterInMs=getRetryAfterInMs(response);return Number.isFinite(retryAfterInMs)?{retryAfterInMs}:{skipStrategy:!0}}}}var DEFAULT_CLIENT_RETRY_INTERVAL=1e3,DEFAULT_CLIENT_MAX_RETRY_INTERVAL=1e3*64;function exponentialRetryStrategy(options={}){let retryInterval=options.retryDelayInMs??DEFAULT_CLIENT_RETRY_INTERVAL,maxRetryInterval=options.maxRetryDelayInMs??DEFAULT_CLIENT_MAX_RETRY_INTERVAL;return{name:"exponentialRetryStrategy",retry({retryCount,response,responseError}){let matchedSystemError=isSystemError(responseError),ignoreSystemErrors=matchedSystemError&&options.ignoreSystemErrors,isExponential=isExponentialRetryResponse(response),ignoreExponentialResponse=isExponential&&options.ignoreHttpStatusCodes;return response&&(isThrottlingRetryResponse(response)||!isExponential)||ignoreExponentialResponse||ignoreSystemErrors?{skipStrategy:!0}:responseError&&!matchedSystemError&&!isExponential?{errorToThrow:responseError}:calculateRetryDelay(retryCount,{retryDelayInMs:retryInterval,maxRetryDelayInMs:maxRetryInterval})}}}function isExponentialRetryResponse(response){return!!(response&&response.status!==void 0&&(response.status>=500||response.status===408)&&response.status!==501&&response.status!==505)}function isSystemError(err){return err?err.code==="ETIMEDOUT"||err.code==="ESOCKETTIMEDOUT"||err.code==="ECONNREFUSED"||err.code==="ECONNRESET"||err.code==="ENOENT"||err.code==="ENOTFOUND":!1}var retryPolicyLogger=createClientLogger("ts-http-runtime retryPolicy"),retryPolicyName="retryPolicy";function retryPolicy(strategies,options={maxRetries:3}){let logger7=options.logger||retryPolicyLogger;return{name:retryPolicyName,async sendRequest(request,next){let response,responseError,retryCount=-1;retryRequest:for(;;){retryCount+=1,responseError=void 0;try{logger7.info(`Retry ${retryCount}: Attempting to send request`,request.requestId),response=await next(request),logger7.info(`Retry ${retryCount}: Received a response from request`,request.requestId)}catch(e){if(logger7.error(`Retry ${retryCount}: Received an error from request`,request.requestId),!isRestError(e))throw e;responseError=e,response=e.response}if(request.abortSignal?.aborted)throw logger7.error(`Retry ${retryCount}: Request aborted.`),new AbortError;if(retryCount>=(options.maxRetries??3)){if(logger7.info(`Retry ${retryCount}: Maximum retries reached. Returning the last received response, or throwing the last received error.`),responseError)throw responseError;if(response)return response;throw new Error("Maximum retries reached with no response or error to throw")}logger7.info(`Retry ${retryCount}: Processing ${strategies.length} retry strategies.`);strategiesLoop:for(let strategy of strategies){let strategyLogger=strategy.logger||logger7;strategyLogger.info(`Retry ${retryCount}: Processing retry strategy ${strategy.name}.`);let modifiers=strategy.retry({retryCount,response,responseError});if(modifiers.skipStrategy){strategyLogger.info(`Retry ${retryCount}: Skipped.`);continue strategiesLoop}let{errorToThrow,retryAfterInMs,redirectTo}=modifiers;if(errorToThrow)throw strategyLogger.error(`Retry ${retryCount}: Retry strategy ${strategy.name} throws error:`,errorToThrow),errorToThrow;if(retryAfterInMs||retryAfterInMs===0){strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} retries after ${retryAfterInMs}`),await delay(retryAfterInMs,void 0,{abortSignal:request.abortSignal});continue retryRequest}if(redirectTo){strategyLogger.info(`Retry ${retryCount}: Retry strategy ${strategy.name} redirects to ${redirectTo}`),request.url=redirectTo;continue retryRequest}}if(responseError)throw logger7.info("None of the retry strategies could work with the received error. Throwing it."),responseError;if(response)return logger7.info("None of the retry strategies could work with the received response. Returning it."),response}}}}var defaultRetryPolicyName="defaultRetryPolicy";function defaultRetryPolicy(options={}){return{name:defaultRetryPolicyName,sendRequest:retryPolicy([throttlingRetryStrategy(),exponentialRetryStrategy(options)],{maxRetries:options.maxRetries??3}).sendRequest}}function convertBodyToFormDataMap(body2){if(typeof FormData<"u"&&body2 instanceof FormData){let formDataMap={};for(let[key,value]of body2.entries()){let existing=formDataMap[key];Array.isArray(existing)?existing.push(value):formDataMap[key]=existing!==void 0?[existing,value]:[value]}return formDataMap}}var formDataPolicyName="formDataPolicy";function formDataPolicy(){return{name:formDataPolicyName,async sendRequest(request,next){let converted=convertBodyToFormDataMap(request.body);if(converted&&(request.formData=converted,request.body=void 0),request.formData){let contentType2=request.headers.get("Content-Type");contentType2&&contentType2.indexOf("application/x-www-form-urlencoded")!==-1?request.body=wwwFormUrlEncode(request.formData):await prepareFormData(request.formData,request),request.formData=void 0}return next(request)}}}function wwwFormUrlEncode(formData){let urlSearchParams=new URLSearchParams;for(let[key,value]of Object.entries(formData))if(Array.isArray(value))for(let subValue of value)urlSearchParams.append(key,subValue.toString());else urlSearchParams.append(key,value.toString());return urlSearchParams.toString()}async function prepareFormData(formData,request){let contentType2=request.headers.get("Content-Type");if(contentType2&&!contentType2.startsWith("multipart/form-data"))return;request.headers.set("Content-Type",contentType2??"multipart/form-data");let parts=[];for(let[fieldName,values]of Object.entries(formData))for(let value of Array.isArray(values)?values:[values])if(typeof value=="string")parts.push({headers:createHttpHeaders({"Content-Disposition":`form-data; name="${fieldName}"`}),body:stringToUint8Array(value,"utf-8")});else{if(value==null||typeof value!="object")throw new Error(`Unexpected value for key ${fieldName}: ${value}. Value should be serialized to string first.`);{let fileName=value.name||"blob",headers=createHttpHeaders();headers.set("Content-Disposition",`form-data; name="${fieldName}"; filename="${fileName}"`),headers.set("Content-Type",value.type||"application/octet-stream"),parts.push({headers,body:value})}}request.multipartBody={parts}}var agentPolicyName="agentPolicy";function agentPolicy(agent){return{name:agentPolicyName,sendRequest:async(req,next)=>(req.agent||(req.agent=agent),next(req))}}var tlsPolicyName="tlsPolicy";function tlsPolicy(tlsSettings){return{name:tlsPolicyName,sendRequest:async(req,next)=>(req.tlsSettings||(req.tlsSettings=tlsSettings),next(req))}}var import_https_proxy_agent=__toESM(require_dist2(),1),import_http_proxy_agent=__toESM(require_dist3(),1);var HTTPS_PROXY="HTTPS_PROXY",HTTP_PROXY="HTTP_PROXY",ALL_PROXY="ALL_PROXY",NO_PROXY="NO_PROXY",proxyPolicyName="proxyPolicy",globalNoProxyList=[],noProxyListLoaded=!1,globalBypassedMap=new Map;function getEnvironmentValue(name){if(process.env[name])return process.env[name];if(process.env[name.toLowerCase()])return process.env[name.toLowerCase()]}function loadEnvironmentProxyValue(){if(!process)return;let httpsProxy=getEnvironmentValue(HTTPS_PROXY),allProxy=getEnvironmentValue(ALL_PROXY),httpProxy=getEnvironmentValue(HTTP_PROXY);return httpsProxy||allProxy||httpProxy}function isBypassed(uri,noProxyList,bypassedMap){if(noProxyList.length===0)return!1;let host=new URL(uri).hostname;if(bypassedMap?.has(host))return bypassedMap.get(host);let isBypassedFlag=!1;for(let pattern of noProxyList)pattern[0]==="."?(host.endsWith(pattern)||host.length===pattern.length-1&&host===pattern.slice(1))&&(isBypassedFlag=!0):host===pattern&&(isBypassedFlag=!0);return bypassedMap?.set(host,isBypassedFlag),isBypassedFlag}function loadNoProxy(){let noProxy=getEnvironmentValue(NO_PROXY);return noProxyListLoaded=!0,noProxy?noProxy.split(",").map(item=>item.trim()).filter(item=>item.length):[]}function getDefaultProxySettings(proxyUrl){if(!proxyUrl&&(proxyUrl=loadEnvironmentProxyValue(),!proxyUrl))return;let parsedUrl=new URL(proxyUrl);return{host:(parsedUrl.protocol?parsedUrl.protocol+"//":"")+parsedUrl.hostname,port:Number.parseInt(parsedUrl.port||"80"),username:parsedUrl.username,password:parsedUrl.password}}function getDefaultProxySettingsInternal(){let envProxy=loadEnvironmentProxyValue();return envProxy?new URL(envProxy):void 0}function getUrlFromProxySettings(settings){let parsedProxyUrl;try{parsedProxyUrl=new URL(settings.host)}catch{throw new Error(`Expecting a valid host string in proxy settings, but found "${settings.host}".`)}return parsedProxyUrl.port=String(settings.port),settings.username&&(parsedProxyUrl.username=settings.username),settings.password&&(parsedProxyUrl.password=settings.password),parsedProxyUrl}function setProxyAgentOnRequest(request,cachedAgents,proxyUrl){if(request.agent)return;let isInsecure=new URL(request.url).protocol!=="https:";request.tlsSettings&&logger.warning("TLS settings are not supported in combination with custom Proxy, certificates provided to the client will be ignored."),isInsecure?(cachedAgents.httpProxyAgent||(cachedAgents.httpProxyAgent=new import_http_proxy_agent.HttpProxyAgent(proxyUrl)),request.agent=cachedAgents.httpProxyAgent):(cachedAgents.httpsProxyAgent||(cachedAgents.httpsProxyAgent=new import_https_proxy_agent.HttpsProxyAgent(proxyUrl)),request.agent=cachedAgents.httpsProxyAgent)}function proxyPolicy(proxySettings,options){noProxyListLoaded||globalNoProxyList.push(...loadNoProxy());let defaultProxy=proxySettings?getUrlFromProxySettings(proxySettings):getDefaultProxySettingsInternal(),cachedAgents={};return{name:proxyPolicyName,async sendRequest(request,next){return!request.proxySettings&&defaultProxy&&!isBypassed(request.url,options?.customNoProxyList??globalNoProxyList,options?.customNoProxyList?void 0:globalBypassedMap)?setProxyAgentOnRequest(request,cachedAgents,defaultProxy):request.proxySettings&&setProxyAgentOnRequest(request,cachedAgents,getUrlFromProxySettings(request.proxySettings)),next(request)}}}var decompressResponsePolicyName="decompressResponsePolicy";function decompressResponsePolicy(){return{name:decompressResponsePolicyName,async sendRequest(request,next){return request.method!=="HEAD"&&request.headers.set("Accept-Encoding","gzip,deflate"),next(request)}}}var redirectPolicyName="redirectPolicy",allowedRedirect=["GET","HEAD"];function redirectPolicy(options={}){let{maxRetries=20,allowCrossOriginRedirects=!1}=options;return{name:redirectPolicyName,async sendRequest(request,next){let response=await next(request);return handleRedirect(next,response,maxRetries,allowCrossOriginRedirects)}}}async function handleRedirect(next,response,maxRetries,allowCrossOriginRedirects,currentRetries=0){let{request,status,headers}=response,locationHeader=headers.get("location");if(locationHeader&&(status===300||status===301&&allowedRedirect.includes(request.method)||status===302&&allowedRedirect.includes(request.method)||status===303&&request.method==="POST"||status===307)&¤tRetriestypeof x=="function"?x():x).map(toStream);return Readable2.from((async function*(){for(let stream of streams)for await(let chunk of stream)yield chunk})())}}function generateBoundary(){return`----AzSDKFormBoundary${randomUUID()}`}function encodeHeaders(headers){let result="";for(let[key,value]of headers)result+=`${key}: ${value}\r `;return result}function getLength(source){return source instanceof Uint8Array?source.byteLength:isBlob(source)?source.size===-1?void 0:source.size:void 0}function getTotalLength(sources){let total=0;for(let source of sources){let partLength=getLength(source);if(partLength===void 0)return;total+=partLength}return total}async function buildRequestBody(request,parts,boundary){let sources=[stringToUint8Array(`--${boundary}`,"utf-8"),...parts.flatMap(part=>[stringToUint8Array(`\r `,"utf-8"),stringToUint8Array(encodeHeaders(part.headers),"utf-8"),stringToUint8Array(`\r `,"utf-8"),part.body,stringToUint8Array(`\r --${boundary}`,"utf-8")]),stringToUint8Array(`--\r \r -`,"utf-8")],contentLength2=getTotalLength(sources);contentLength2&&request.headers.set("Content-Length",contentLength2),request.body=await concat(sources)}var multipartPolicyName="multipartPolicy",maxBoundaryLength=70,validBoundaryCharacters=new Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?");function assertValidBoundary(boundary){if(boundary.length>maxBoundaryLength)throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`);if(Array.from(boundary).some(x=>!validBoundaryCharacters.has(x)))throw new Error(`Multipart boundary "${boundary}" contains invalid characters`)}function multipartPolicy(){return{name:multipartPolicyName,async sendRequest(request,next){if(!request.multipartBody)return next(request);if(request.body)throw new Error("multipartBody and regular body cannot be set at the same time");let boundary=request.multipartBody.boundary,contentTypeHeader=request.headers.get("Content-Type")??"multipart/mixed",parsedHeader=contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!parsedHeader)throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);let[,contentType2,parsedBoundary]=parsedHeader;if(parsedBoundary&&boundary&&parsedBoundary!==boundary)throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);return boundary??=parsedBoundary,boundary?assertValidBoundary(boundary):boundary=generateBoundary(),request.headers.set("Content-Type",`${contentType2}; boundary=${boundary}`),await buildRequestBody(request,request.multipartBody.parts,boundary),request.multipartBody=void 0,next(request)}}}function createEmptyPipeline2(){return createEmptyPipeline()}var context2=createLoggerContext({logLevelEnvVarName:"AZURE_LOG_LEVEL",namespace:"azure"}),AzureLogger=context2.logger;function createClientLogger2(namespace){return context2.createClientLogger(namespace)}var logger2=createClientLogger2("core-rest-pipeline");function logPolicy2(options={}){return logPolicy({logger:logger2.info,...options})}var redirectPolicyName2=redirectPolicyName;function redirectPolicy2(options={}){return redirectPolicy(options)}import os2 from"node:os";import process5 from"node:process";function getHeaderName2(){return"User-Agent"}async function setPlatformSpecificData2(map){if(process5&&process5.versions){let osInfo=`${os2.type()} ${os2.release()}; ${os2.arch()}`;process5.versions.bun?map.set("Bun",`${process5.versions.bun} (${osInfo})`):process5.versions.deno?map.set("Deno",`${process5.versions.deno} (${osInfo})`):process5.versions.node&&map.set("Node",`${process5.versions.node} (${osInfo})`)}}var SDK_VERSION2="1.25.0";function getUserAgentString(telemetryInfo){let parts=[];for(let[key,value]of telemetryInfo){let token=value?`${key}/${value}`:key;parts.push(token)}return parts.join(" ")}function getUserAgentHeaderName2(){return getHeaderName2()}async function getUserAgentValue2(prefix2){let runtimeInfo=new Map;runtimeInfo.set("core-rest-pipeline",SDK_VERSION2),await setPlatformSpecificData2(runtimeInfo);let defaultAgent=getUserAgentString(runtimeInfo);return prefix2?`${prefix2} ${defaultAgent}`:defaultAgent}var UserAgentHeaderName2=getUserAgentHeaderName2(),userAgentPolicyName2="userAgentPolicy";function userAgentPolicy2(options={}){let userAgentValue=getUserAgentValue2(options.userAgentPrefix);return{name:userAgentPolicyName2,async sendRequest(request,next){return request.headers.has(UserAgentHeaderName2)||request.headers.set(UserAgentHeaderName2,await userAgentValue),next(request)}}}var rawContent=Symbol("rawContent");function hasRawContent(x){return typeof x[rawContent]=="function"}function getRawContent(blob){return hasRawContent(blob)?blob[rawContent]():blob}var multipartPolicyName2=multipartPolicyName;function multipartPolicy2(){let tspPolicy=multipartPolicy();return{name:multipartPolicyName2,sendRequest:async(request,next)=>{if(request.multipartBody)for(let part of request.multipartBody.parts)hasRawContent(part.body)&&(part.body=getRawContent(part.body));return tspPolicy.sendRequest(request,next)}}}var decompressResponsePolicyName2=decompressResponsePolicyName;function decompressResponsePolicy2(){return decompressResponsePolicy()}function defaultRetryPolicy2(options={}){return defaultRetryPolicy(options)}function formDataPolicy2(){return formDataPolicy()}import{createHash,createHmac}from"node:crypto";var AbortError2=class extends Error{constructor(message){super(message),this.name="AbortError"}};function createAbortablePromise(buildPromise,options){let{cleanupBeforeAbort,abortSignal,abortErrorMsg}=options??{};return new Promise((resolve,reject)=>{function rejectOnAbort(){reject(new AbortError2(abortErrorMsg??"The operation was aborted."))}function removeListeners(){abortSignal?.removeEventListener("abort",onAbort)}function onAbort(){cleanupBeforeAbort?.(),removeListeners(),rejectOnAbort()}if(abortSignal?.aborted)return rejectOnAbort();try{buildPromise(x=>{removeListeners(),resolve(x)},x=>{removeListeners(),reject(x)})}catch(err){reject(err)}abortSignal?.addEventListener("abort",onAbort)})}var StandardAbortMessage2="The delay was aborted.";function delay2(timeInMs,options){let token,{abortSignal,abortErrorMsg}=options??{};return createAbortablePromise(resolve=>{token=setTimeout(resolve,timeInMs)},{cleanupBeforeAbort:()=>clearTimeout(token),abortSignal,abortErrorMsg:abortErrorMsg??StandardAbortMessage2})}function getErrorMessage(e){if(isError(e))return e.message;{let stringified;try{typeof e=="object"&&e?stringified=JSON.stringify(e):stringified=String(e)}catch{stringified="[unable to stringify input]"}return`Unknown error ${stringified}`}}function isError2(e){return isError(e)}function randomUUID2(){return randomUUID()}var isNodeLike2=isNodeLike;function uint8ArrayToString2(bytes,format){return uint8ArrayToString(bytes,format)}function stringToUint8Array2(value,format){return stringToUint8Array(value,format)}function getDefaultProxySettings2(proxyUrl){return getDefaultProxySettings(proxyUrl)}function proxyPolicy2(proxySettings,options){return proxyPolicy(proxySettings,options)}var setClientRequestIdPolicyName="setClientRequestIdPolicy";function setClientRequestIdPolicy(requestIdHeaderName="x-ms-client-request-id"){return{name:setClientRequestIdPolicyName,async sendRequest(request,next){return request.headers.has(requestIdHeaderName)||request.headers.set(requestIdHeaderName,request.requestId),next(request)}}}function agentPolicy2(agent){return agentPolicy(agent)}function tlsPolicy2(tlsSettings){return tlsPolicy(tlsSettings)}var knownContextKeys={span:Symbol.for("@azure/core-tracing span"),namespace:Symbol.for("@azure/core-tracing namespace")};function createTracingContext(options={}){let context3=new TracingContextImpl(options.parentContext);return options.span&&(context3=context3.setValue(knownContextKeys.span,options.span)),options.namespace&&(context3=context3.setValue(knownContextKeys.namespace,options.namespace)),context3}var TracingContextImpl=class _TracingContextImpl{_contextMap;constructor(initialContext){this._contextMap=initialContext instanceof _TracingContextImpl?new Map(initialContext._contextMap):new Map}setValue(key,value){let newContext=new _TracingContextImpl(this);return newContext._contextMap.set(key,value),newContext}getValue(key){return this._contextMap.get(key)}deleteValue(key){let newContext=new _TracingContextImpl(this);return newContext._contextMap.delete(key),newContext}};var import_state_cjs=__toESM(require_state_cjs(),1),state=import_state_cjs.state;function createDefaultTracingSpan(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{},addEvent:()=>{}}}function createDefaultInstrumenter(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(_name,spanOptions)=>({span:createDefaultTracingSpan(),tracingContext:createTracingContext({parentContext:spanOptions.tracingContext})}),withContext(_context,callback,...callbackArgs){return callback(...callbackArgs)}}}function getInstrumenter(){return state.instrumenterImplementation||(state.instrumenterImplementation=createDefaultInstrumenter()),state.instrumenterImplementation}function createTracingClient(options){let{namespace,packageName,packageVersion}=options;function startSpan(name,operationOptions,spanOptions){let startSpanResult=getInstrumenter().startSpan(name,{...spanOptions,packageName,packageVersion,tracingContext:operationOptions?.tracingOptions?.tracingContext}),tracingContext=startSpanResult.tracingContext,span=startSpanResult.span;tracingContext.getValue(knownContextKeys.namespace)||(tracingContext=tracingContext.setValue(knownContextKeys.namespace,namespace)),span.setAttribute("az.namespace",tracingContext.getValue(knownContextKeys.namespace));let updatedOptions=Object.assign({},operationOptions,{tracingOptions:{...operationOptions?.tracingOptions,tracingContext}});return{span,updatedOptions}}async function withSpan(name,operationOptions,callback,spanOptions){let{span,updatedOptions}=startSpan(name,operationOptions,spanOptions);try{let result=await withContext(updatedOptions.tracingOptions.tracingContext,()=>callback(updatedOptions,span));return span.setStatus({status:"success"}),result}catch(err){throw span.setStatus({status:"error",error:err}),err}finally{span.end()}}function withContext(context3,callback,...callbackArgs){return getInstrumenter().withContext(context3,callback,...callbackArgs)}function parseTraceparentHeader(traceparentHeader){return getInstrumenter().parseTraceparentHeader(traceparentHeader)}function createRequestHeaders(tracingContext){return getInstrumenter().createRequestHeaders(tracingContext)}return{startSpan,withSpan,withContext,parseTraceparentHeader,createRequestHeaders}}var RestError2=RestError;function isRestError2(e){return isRestError(e)}var tracingPolicyName="tracingPolicy";function tracingPolicy(options={}){let userAgentPromise=getUserAgentValue2(options.userAgentPrefix),sanitizer=new Sanitizer({additionalAllowedQueryParameters:options.additionalAllowedQueryParameters}),tracingClient2=tryCreateTracingClient();return{name:tracingPolicyName,async sendRequest(request,next){if(!tracingClient2)return next(request);let userAgent=await userAgentPromise,spanAttributes={"http.url":sanitizer.sanitizeUrl(request.url),"http.method":request.method,"http.user_agent":userAgent,requestId:request.requestId};userAgent&&(spanAttributes["http.user_agent"]=userAgent);let{span,tracingContext}=tryCreateSpan(tracingClient2,request,spanAttributes)??{};if(!span||!tracingContext)return next(request);try{let response=await tracingClient2.withContext(tracingContext,next,request);return tryProcessResponse(span,response),response}catch(err){throw tryProcessError(span,err),err}}}}function tryCreateTracingClient(){try{return createTracingClient({namespace:"",packageName:"@azure/core-rest-pipeline",packageVersion:SDK_VERSION2})}catch(e){logger2.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);return}}function tryCreateSpan(tracingClient2,request,spanAttributes){try{let{span,updatedOptions}=tracingClient2.startSpan(`HTTP ${request.method}`,{tracingOptions:request.tracingOptions},{spanKind:"client",spanAttributes});if(!span.isRecording()){span.end();return}let headers=tracingClient2.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);for(let[key,value]of Object.entries(headers))request.headers.set(key,value);return{span,tracingContext:updatedOptions.tracingOptions.tracingContext}}catch(e){logger2.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);return}}function tryProcessError(span,error){try{span.setStatus({status:"error",error:isError2(error)?error:void 0}),isRestError2(error)&&error.statusCode&&span.setAttribute("http.status_code",error.statusCode),span.end()}catch(e){logger2.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`)}}function tryProcessResponse(span,response){try{span.setAttribute("http.status_code",response.status);let serviceRequestId=response.headers.get("x-ms-request-id");serviceRequestId&&span.setAttribute("serviceRequestId",serviceRequestId),response.status>=400&&span.setStatus({status:"error"}),span.end()}catch(e){logger2.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`)}}function wrapAbortSignalLike(abortSignalLike){if(abortSignalLike instanceof AbortSignal)return{abortSignal:abortSignalLike};if(abortSignalLike.aborted)return{abortSignal:AbortSignal.abort("reason"in abortSignalLike?abortSignalLike.reason:void 0)};let controller=new AbortController,needsCleanup=!0;function cleanup(){needsCleanup&&(abortSignalLike.removeEventListener("abort",listener),needsCleanup=!1)}function listener(){controller.abort("reason"in abortSignalLike?abortSignalLike.reason:void 0),cleanup()}return abortSignalLike.addEventListener("abort",listener),{abortSignal:controller.signal,cleanup}}var wrapAbortSignalLikePolicyName="wrapAbortSignalLikePolicy";function wrapAbortSignalLikePolicy(){return{name:wrapAbortSignalLikePolicyName,sendRequest:async(request,next)=>{if(!request.abortSignal)return next(request);let{abortSignal,cleanup}=wrapAbortSignalLike(request.abortSignal);request.abortSignal=abortSignal;try{return await next(request)}finally{cleanup?.()}}}}function createPipelineFromOptions2(options){let pipeline=createEmptyPipeline2();return isNodeLike2&&(options.agent&&pipeline.addPolicy(agentPolicy2(options.agent)),options.tlsOptions&&pipeline.addPolicy(tlsPolicy2(options.tlsOptions)),pipeline.addPolicy(proxyPolicy2(options.proxyOptions)),pipeline.addPolicy(decompressResponsePolicy2())),pipeline.addPolicy(wrapAbortSignalLikePolicy()),pipeline.addPolicy(formDataPolicy2(),{beforePolicies:[multipartPolicyName2]}),pipeline.addPolicy(userAgentPolicy2(options.userAgentOptions)),pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName)),pipeline.addPolicy(multipartPolicy2(),{afterPhase:"Deserialize"}),pipeline.addPolicy(defaultRetryPolicy2(options.retryOptions),{phase:"Retry"}),pipeline.addPolicy(tracingPolicy({...options.userAgentOptions,...options.loggingOptions}),{afterPhase:"Retry"}),isNodeLike2&&pipeline.addPolicy(redirectPolicy2(options.redirectOptions),{afterPhase:"Retry"}),pipeline.addPolicy(logPolicy2(options.loggingOptions),{afterPhase:"Sign"}),pipeline}function createDefaultHttpClient2(){let client=createDefaultHttpClient();return{async sendRequest(request){let{abortSignal,cleanup}=request.abortSignal?wrapAbortSignalLike(request.abortSignal):{};try{return request.abortSignal=abortSignal,await client.sendRequest(request)}finally{cleanup?.()}}}}function createHttpHeaders2(rawHeaders){return createHttpHeaders(rawHeaders)}function createPipelineRequest2(options){return createPipelineRequest(options)}var retryPolicyLogger2=createClientLogger2("core-rest-pipeline retryPolicy");var DEFAULT_CYCLER_OPTIONS={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function beginRefresh(getAccessToken,retryIntervalInMs,refreshTimeout){async function tryGetAccessToken(){if(Date.now()credential.getToken(scopes,getTokenOptions),options.retryIntervalInMs,token?.expiresOnTimestamp??Date.now()).then(_token=>(refreshWorker=null,token=_token,tenantId=getTokenOptions.tenantId,token)).catch(reason=>{throw refreshWorker=null,token=null,tenantId=void 0,reason})),refreshWorker}return async(scopes,tokenOptions)=>{let hasClaimChallenge=!!tokenOptions.claims,tenantIdChanged=tenantId!==tokenOptions.tenantId;return hasClaimChallenge&&(token=null),tenantIdChanged||hasClaimChallenge||cycler.mustRefresh?refresh(scopes,tokenOptions):(cycler.shouldRefresh&&refresh(scopes,tokenOptions),token)}}var bearerTokenAuthenticationPolicyName="bearerTokenAuthenticationPolicy";async function trySendRequest(request,next){try{return[await next(request),void 0]}catch(e){if(isRestError2(e)&&e.response)return[e.response,e];throw e}}async function defaultAuthorizeRequest(options){let{scopes,getAccessToken,request}=options,getTokenOptions={abortSignal:request.abortSignal,tracingOptions:request.tracingOptions,enableCae:!0},accessToken=await getAccessToken(scopes,getTokenOptions);accessToken&&options.request.headers.set("Authorization",`Bearer ${accessToken.token}`)}function isChallengeResponse(response){return response.status===401&&response.headers.has("WWW-Authenticate")}async function authorizeRequestOnCaeChallenge(onChallengeOptions,caeClaims){let{scopes}=onChallengeOptions,accessToken=await onChallengeOptions.getAccessToken(scopes,{enableCae:!0,claims:caeClaims});return accessToken?(onChallengeOptions.request.headers.set("Authorization",`${accessToken.tokenType??"Bearer"} ${accessToken.token}`),!0):!1}function bearerTokenAuthenticationPolicy(options){let{credential,scopes,challengeCallbacks}=options,logger7=options.logger||logger2,callbacks={authorizeRequest:challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks)??defaultAuthorizeRequest,authorizeRequestOnChallenge:challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks)},getAccessToken=credential?createTokenCycler(credential):()=>Promise.resolve(null);return{name:bearerTokenAuthenticationPolicyName,async sendRequest(request,next){if(!request.url.toLowerCase().startsWith("https://"))throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");await callbacks.authorizeRequest({scopes:Array.isArray(scopes)?scopes:[scopes],request,getAccessToken,logger:logger7});let response,error,shouldSendRequest;if([response,error]=await trySendRequest(request,next),isChallengeResponse(response)){let claims=getCaeChallengeClaims(response.headers.get("WWW-Authenticate"));if(claims){let parsedClaim;try{parsedClaim=atob(claims)}catch{return logger7.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`),response}shouldSendRequest=await authorizeRequestOnCaeChallenge({scopes:Array.isArray(scopes)?scopes:[scopes],response,request,getAccessToken,logger:logger7},parsedClaim),shouldSendRequest&&([response,error]=await trySendRequest(request,next))}else if(callbacks.authorizeRequestOnChallenge&&(shouldSendRequest=await callbacks.authorizeRequestOnChallenge({scopes:Array.isArray(scopes)?scopes:[scopes],request,response,getAccessToken,logger:logger7}),shouldSendRequest&&([response,error]=await trySendRequest(request,next)),isChallengeResponse(response)&&(claims=getCaeChallengeClaims(response.headers.get("WWW-Authenticate")??""),claims))){let parsedClaim;try{parsedClaim=atob(claims)}catch{return logger7.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`),response}shouldSendRequest=await authorizeRequestOnCaeChallenge({scopes:Array.isArray(scopes)?scopes:[scopes],response,request,getAccessToken,logger:logger7},parsedClaim),shouldSendRequest&&([response,error]=await trySendRequest(request,next))}}if(error)throw error;return response}}}function parseChallenges(challenges){let challengeRegex=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,paramRegex=/(\w+)="([^"]*)"/g,parsedChallenges=[],match;for(;(match=challengeRegex.exec(challenges))!==null;){let scheme=match[1],paramsString=match[2],params={},paramMatch;for(;(paramMatch=paramRegex.exec(paramsString))!==null;)params[paramMatch[1]]=paramMatch[2];parsedChallenges.push({scheme,params})}return parsedChallenges}function getCaeChallengeClaims(challenges){return challenges?parseChallenges(challenges).find(x=>x.scheme==="Bearer"&&x.params.claims&&x.params.error==="insufficient_claims")?.params.claims:void 0}function isTokenCredential(credential){let castCredential=credential;return castCredential&&typeof castCredential.getToken=="function"&&(castCredential.signRequest===void 0||castCredential.getToken.length>0)}var disableKeepAlivePolicyName="DisableKeepAlivePolicy";function createDisableKeepAlivePolicy(){return{name:disableKeepAlivePolicyName,sendRequest(request,next){return request.disableKeepAlive=!0,next(request)}}}function pipelineContainsDisableKeepAlivePolicy(pipeline){return pipeline.getOrderedPolicies().some(policy=>policy.name===disableKeepAlivePolicyName)}function encodeByteArray(value){return uint8ArrayToString2(value,"base64")}function decodeString(value){return stringToUint8Array2(value,"base64")}function isPrimitiveBody(value,mapperTypeName){return mapperTypeName!=="Composite"&&mapperTypeName!=="Dictionary"&&(typeof value=="string"||typeof value=="number"||typeof value=="boolean"||mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||value===void 0||value===null)}var validateISODuration=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function isDuration(value){return validateISODuration.test(value)}var validUuidRegex=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function isValidUuid(uuid){return validUuidRegex.test(uuid)}function handleNullableResponseAndWrappableBody(responseObject){let combinedHeadersAndBody={...responseObject.headers,...responseObject.body};return responseObject.hasNullableType&&Object.getOwnPropertyNames(combinedHeadersAndBody).length===0?responseObject.shouldWrapBody?{body:null}:null:responseObject.shouldWrapBody?{...responseObject.headers,body:responseObject.body}:combinedHeadersAndBody}function flattenResponse(fullResponse,responseSpec){let parsedHeaders=fullResponse.parsedHeaders;if(fullResponse.request.method==="HEAD")return{...parsedHeaders,body:fullResponse.parsedBody};let bodyMapper=responseSpec&&responseSpec.bodyMapper,isNullable=!!bodyMapper?.nullable,expectedBodyTypeName=bodyMapper?.type.name;if(expectedBodyTypeName==="Stream")return{...parsedHeaders,blobBody:fullResponse.blobBody,readableStreamBody:fullResponse.readableStreamBody};let modelProperties=expectedBodyTypeName==="Composite"&&bodyMapper.type.modelProperties||{},isPageableResponse=Object.keys(modelProperties).some(k=>modelProperties[k].serializedName==="");if(expectedBodyTypeName==="Sequence"||isPageableResponse){let arrayResponse=fullResponse.parsedBody??[];for(let key of Object.keys(modelProperties))modelProperties[key].serializedName&&(arrayResponse[key]=fullResponse.parsedBody?.[key]);if(parsedHeaders)for(let key of Object.keys(parsedHeaders))arrayResponse[key]=parsedHeaders[key];return isNullable&&!fullResponse.parsedBody&&!parsedHeaders&&Object.getOwnPropertyNames(modelProperties).length===0?null:arrayResponse}return handleNullableResponseAndWrappableBody({body:fullResponse.parsedBody,headers:parsedHeaders,hasNullableType:isNullable,shouldWrapBody:isPrimitiveBody(fullResponse.parsedBody,expectedBodyTypeName)})}var SerializerImpl=class{modelMappers;isXML;constructor(modelMappers={},isXML=!1){this.modelMappers=modelMappers,this.isXML=isXML}validateConstraints(mapper,value,objectName){let failValidation=(constraintName,constraintValue)=>{throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`)};if(mapper.constraints&&value!==void 0&&value!==null){let{ExclusiveMaximum,ExclusiveMinimum,InclusiveMaximum,InclusiveMinimum,MaxItems,MaxLength,MinItems,MinLength,MultipleOf,Pattern,UniqueItems}=mapper.constraints;if(ExclusiveMaximum!==void 0&&value>=ExclusiveMaximum&&failValidation("ExclusiveMaximum",ExclusiveMaximum),ExclusiveMinimum!==void 0&&value<=ExclusiveMinimum&&failValidation("ExclusiveMinimum",ExclusiveMinimum),InclusiveMaximum!==void 0&&value>InclusiveMaximum&&failValidation("InclusiveMaximum",InclusiveMaximum),InclusiveMinimum!==void 0&&valueMaxItems&&failValidation("MaxItems",MaxItems),MaxLength!==void 0&&value.length>MaxLength&&failValidation("MaxLength",MaxLength),MinItems!==void 0&&value.lengthar.indexOf(item)!==i)&&failValidation("UniqueItems",UniqueItems)}}serialize(mapper,object,objectName,options={xml:{}}){let updatedOptions={xml:{rootName:options.xml.rootName??"",includeRoot:options.xml.includeRoot??!1,xmlCharKey:options.xml.xmlCharKey??"_"}},payload={},mapperType=mapper.type.name;objectName||(objectName=mapper.serializedName),mapperType.match(/^Sequence$/i)!==null&&(payload=[]),mapper.isConstant&&(object=mapper.defaultValue);let{required,nullable}=mapper;if(required&&nullable&&object===void 0)throw new Error(`${objectName} cannot be undefined.`);if(required&&!nullable&&object==null)throw new Error(`${objectName} cannot be null or undefined.`);if(!required&&nullable===!1&&object===null)throw new Error(`${objectName} cannot be null.`);return object==null||mapperType.match(/^any$/i)!==null?payload=object:mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)!==null?payload=serializeBasicTypes(mapperType,objectName,object):mapperType.match(/^Enum$/i)!==null?payload=serializeEnumType(objectName,mapper.type.allowedValues,object):mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)!==null?payload=serializeDateTypes(mapperType,object,objectName):mapperType.match(/^ByteArray$/i)!==null?payload=serializeByteArrayType(objectName,object):mapperType.match(/^Base64Url$/i)!==null?payload=serializeBase64UrlType(objectName,object):mapperType.match(/^Sequence$/i)!==null?payload=serializeSequenceType(this,mapper,object,objectName,!!this.isXML,updatedOptions):mapperType.match(/^Dictionary$/i)!==null?payload=serializeDictionaryType(this,mapper,object,objectName,!!this.isXML,updatedOptions):mapperType.match(/^Composite$/i)!==null&&(payload=serializeCompositeType(this,mapper,object,objectName,!!this.isXML,updatedOptions)),payload}deserialize(mapper,responseBody,objectName,options={xml:{}}){let updatedOptions={xml:{rootName:options.xml.rootName??"",includeRoot:options.xml.includeRoot??!1,xmlCharKey:options.xml.xmlCharKey??"_"},ignoreUnknownProperties:options.ignoreUnknownProperties??!1};if(responseBody==null)return this.isXML&&mapper.type.name==="Sequence"&&!mapper.xmlIsWrapped&&(responseBody=[]),mapper.defaultValue!==void 0&&(responseBody=mapper.defaultValue),responseBody;let payload,mapperType=mapper.type.name;if(objectName||(objectName=mapper.serializedName),mapperType.match(/^Composite$/i)!==null)payload=deserializeCompositeType(this,mapper,responseBody,objectName,updatedOptions);else{if(this.isXML){let xmlCharKey=updatedOptions.xml.xmlCharKey;responseBody["$"]!==void 0&&responseBody[xmlCharKey]!==void 0&&(responseBody=responseBody[xmlCharKey])}mapperType.match(/^Number$/i)!==null?(payload=parseFloat(responseBody),isNaN(payload)&&(payload=responseBody)):mapperType.match(/^Boolean$/i)!==null?responseBody==="true"?payload=!0:responseBody==="false"?payload=!1:payload=responseBody:mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)!==null?payload=responseBody:mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i)!==null?payload=new Date(responseBody):mapperType.match(/^UnixTime$/i)!==null?payload=unixTimeToDate(responseBody):mapperType.match(/^ByteArray$/i)!==null?payload=decodeString(responseBody):mapperType.match(/^Base64Url$/i)!==null?payload=base64UrlToByteArray(responseBody):mapperType.match(/^Sequence$/i)!==null?payload=deserializeSequenceType(this,mapper,responseBody,objectName,updatedOptions):mapperType.match(/^Dictionary$/i)!==null&&(payload=deserializeDictionaryType(this,mapper,responseBody,objectName,updatedOptions))}return mapper.isConstant&&(payload=mapper.defaultValue),payload}};function createSerializer(modelMappers={},isXML=!1){return new SerializerImpl(modelMappers,isXML)}function trimEnd(str,ch){let len=str.length;for(;len-1>=0&&str[len-1]===ch;)--len;return str.substr(0,len)}function bufferToBase64Url(buffer2){if(!buffer2)return;if(!(buffer2 instanceof Uint8Array))throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");let str=encodeByteArray(buffer2);return trimEnd(str,"=").replace(/\+/g,"-").replace(/\//g,"_")}function base64UrlToByteArray(str){if(str){if(str&&typeof str.valueOf()!="string")throw new Error("Please provide an input of type string for converting to Uint8Array");return str=str.replace(/-/g,"+").replace(/_/g,"/"),decodeString(str)}}function splitSerializeName(prop){let classes=[],partialclass="";if(prop){let subwords=prop.split(".");for(let item of subwords)item.charAt(item.length-1)==="\\"?partialclass+=item.substr(0,item.length-1)+".":(partialclass+=item,classes.push(partialclass),partialclass="")}return classes}function dateToUnixTime(d){if(d)return typeof d.valueOf()=="string"&&(d=new Date(d)),Math.floor(d.getTime()/1e3)}function unixTimeToDate(n){if(n)return new Date(n*1e3)}function serializeBasicTypes(typeName,objectName,value){if(value!=null){if(typeName.match(/^Number$/i)!==null){if(typeof value!="number")throw new Error(`${objectName} with value ${value} must be of type number.`)}else if(typeName.match(/^String$/i)!==null){if(typeof value.valueOf()!="string")throw new Error(`${objectName} with value "${value}" must be of type string.`)}else if(typeName.match(/^Uuid$/i)!==null){if(!(typeof value.valueOf()=="string"&&isValidUuid(value)))throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`)}else if(typeName.match(/^Boolean$/i)!==null){if(typeof value!="boolean")throw new Error(`${objectName} with value ${value} must be of type boolean.`)}else if(typeName.match(/^Stream$/i)!==null){let objectType=typeof value;if(objectType!=="string"&&typeof value.pipe!="function"&&typeof value.tee!="function"&&!(value instanceof ArrayBuffer)&&!ArrayBuffer.isView(value)&&!((typeof Blob=="function"||typeof Blob=="object")&&value instanceof Blob)&&objectType!=="function")throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return value}function serializeEnumType(objectName,allowedValues,value){if(!allowedValues)throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);if(!allowedValues.some(item=>typeof item.valueOf()=="string"?item.toLowerCase()===value.toLowerCase():item===value))throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);return value}function serializeByteArrayType(objectName,value){if(value!=null){if(!(value instanceof Uint8Array))throw new Error(`${objectName} must be of type Uint8Array.`);value=encodeByteArray(value)}return value}function serializeBase64UrlType(objectName,value){if(value!=null){if(!(value instanceof Uint8Array))throw new Error(`${objectName} must be of type Uint8Array.`);value=bufferToBase64Url(value)}return value}function serializeDateTypes(typeName,value,objectName){if(value!=null){if(typeName.match(/^Date$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);value=value instanceof Date?value.toISOString().substring(0,10):new Date(value).toISOString().substring(0,10)}else if(typeName.match(/^DateTime$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);value=value instanceof Date?value.toISOString():new Date(value).toISOString()}else if(typeName.match(/^DateTimeRfc1123$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);value=value instanceof Date?value.toUTCString():new Date(value).toUTCString()}else if(typeName.match(/^UnixTime$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);value=dateToUnixTime(value)}else if(typeName.match(/^TimeSpan$/i)!==null&&!isDuration(value))throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`)}return value}function serializeSequenceType(serializer,mapper,object,objectName,isXml,options){if(!Array.isArray(object))throw new Error(`${objectName} must be of type Array.`);let elementType=mapper.type.element;if(!elementType||typeof elementType!="object")throw new Error(`"element" metadata for an Array must be defined in the mapper and it must be of type "object" in ${objectName}.`);elementType.type.name==="Composite"&&elementType.type.className&&(elementType=serializer.modelMappers[elementType.type.className]??elementType);let tempArray=[];for(let i=0;ipn!==clientPropName)&&Object.defineProperty(payload,clientPropName,{value:serializer.serialize(additionalPropertiesMapper,object[clientPropName],objectName+'["'+clientPropName+'"]',options),enumerable:!0,configurable:!0,writable:!0})}return payload}return object}function getXmlObjectValue(propertyMapper,serializedValue,isXml,options){if(!isXml||!propertyMapper.xmlNamespace)return serializedValue;let xmlNamespace={[propertyMapper.xmlNamespacePrefix?`xmlns:${propertyMapper.xmlNamespacePrefix}`:"xmlns"]:propertyMapper.xmlNamespace};if(["Composite"].includes(propertyMapper.type.name)){if(serializedValue["$"])return serializedValue;{let result2={...serializedValue};return result2["$"]=xmlNamespace,result2}}let result={};return result[options.xml.xmlCharKey]=serializedValue,result["$"]=xmlNamespace,result}function isSpecialXmlProperty(propertyName,options){return["$",options.xml.xmlCharKey].includes(propertyName)}function deserializeCompositeType(serializer,mapper,responseBody,objectName,options){let xmlCharKey=options.xml.xmlCharKey??"_";getPolymorphicDiscriminatorRecursively(serializer,mapper)&&(mapper=getPolymorphicMapper(serializer,mapper,responseBody,"serializedName"));let modelProps=resolveModelProperties(serializer,mapper,objectName),instance={},handledPropertyNames=[];for(let key of Object.keys(modelProps)){let propertyMapper=modelProps[key],paths=splitSerializeName(modelProps[key].serializedName);handledPropertyNames.push(paths[0]);let{serializedName,xmlName,xmlElementName}=propertyMapper,propertyObjectName=objectName;serializedName!==""&&serializedName!==void 0&&(propertyObjectName=objectName+"."+serializedName);let headerCollectionPrefix=propertyMapper.headerCollectionPrefix;if(headerCollectionPrefix){let dictionary={};for(let headerKey of Object.keys(responseBody))headerKey.startsWith(headerCollectionPrefix)&&(dictionary[headerKey.substring(headerCollectionPrefix.length)]=serializer.deserialize(propertyMapper.type.value,responseBody[headerKey],propertyObjectName,options)),handledPropertyNames.push(headerKey);instance[key]=dictionary}else if(serializer.isXML)if(propertyMapper.xmlIsAttribute&&responseBody["$"])instance[key]=serializer.deserialize(propertyMapper,responseBody["$"][xmlName],propertyObjectName,options);else if(propertyMapper.xmlIsMsText)responseBody[xmlCharKey]!==void 0?instance[key]=responseBody[xmlCharKey]:typeof responseBody=="string"&&(instance[key]=responseBody);else{let propertyName=xmlElementName||xmlName||serializedName;if(propertyMapper.xmlIsWrapped){let elementList=responseBody[xmlName]?.[xmlElementName]??[];Object.defineProperty(instance,key,{value:serializer.deserialize(propertyMapper,elementList,propertyObjectName,options),enumerable:!0,configurable:!0,writable:!0}),handledPropertyNames.push(xmlName)}else{let property=responseBody[propertyName];instance[key]=serializer.deserialize(propertyMapper,property,propertyObjectName,options),handledPropertyNames.push(propertyName)}}else{let propertyInstance,res=responseBody,steps=0;for(let item of paths){if(!res)break;steps++,res=res[item]}res===null&&steps{for(let clientPropName of Object.keys(modelProps))if(splitSerializeName(modelProps[clientPropName].serializedName)[0]===responsePropName)return!1;return!0};for(let responsePropName of Object.keys(responseBody))if(isAdditionalProperty(responsePropName)){let deserializedValue=serializer.deserialize(additionalPropertiesMapper,responseBody[responsePropName],objectName+'["'+responsePropName+'"]',options);Object.defineProperty(instance,responsePropName,{value:deserializedValue,enumerable:!0,configurable:!0,writable:!0})}}else if(responseBody&&!options.ignoreUnknownProperties)for(let key of Object.keys(responseBody))instance[key]===void 0&&!handledPropertyNames.includes(key)&&!isSpecialXmlProperty(key,options)&&Object.defineProperty(instance,key,{value:responseBody[key],enumerable:!0,configurable:!0,writable:!0});return instance}function deserializeDictionaryType(serializer,mapper,responseBody,objectName,options){let value=mapper.type.value;if(!value||typeof value!="object")throw new Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${objectName}`);if(responseBody){let tempDictionary={};for(let key of Object.keys(responseBody))tempDictionary[key]=serializer.deserialize(value,responseBody[key],objectName,options);return tempDictionary}return responseBody}function deserializeSequenceType(serializer,mapper,responseBody,objectName,options){let element=mapper.type.element;if(!element||typeof element!="object")throw new Error(`"element" metadata for an Array must be defined in the mapper and it must be of type "object" in ${objectName}`);if(responseBody){Array.isArray(responseBody)||(responseBody=[responseBody]),element.type.name==="Composite"&&element.type.className&&(element=serializer.modelMappers[element.type.className]??element);let tempArray=[];for(let i=0;i0)if(parameterMapper.isConstant)value=parameterMapper.defaultValue;else{let propertySearchResult=getPropertyFromParameterPath(operationArguments,parameterPath);!propertySearchResult.propertyFound&&fallbackObject&&(propertySearchResult=getPropertyFromParameterPath(fallbackObject,parameterPath));let useDefaultValue=!1;propertySearchResult.propertyFound||(useDefaultValue=parameterMapper.required||parameterPath[0]==="options"&¶meterPath.length===2),value=useDefaultValue?parameterMapper.defaultValue:propertySearchResult.propertyValue}}else{parameterMapper.required&&(value={});for(let[propertyName,propertyPath]of Object.entries(parameterPath)){let propertyMapper=parameterMapper.type.modelProperties[propertyName],propertyValue=getOperationArgumentValueFromParameter(operationArguments,{parameterPath:propertyPath,mapper:propertyMapper},fallbackObject);propertyValue!==void 0&&(value||(value={}),Object.defineProperty(value,propertyName,{value:propertyValue,enumerable:!0,configurable:!0,writable:!0}))}}return value}function getPropertyFromParameterPath(parent,parameterPath){let result={propertyFound:!1},i=0;for(;i=200&&response.status<300);responseSpec.headersMapper&&(parsedResponse.parsedHeaders=operationSpec.serializer.deserialize(responseSpec.headersMapper,parsedResponse.headers.toJSON(),"operationRes.parsedHeaders",{xml:{},ignoreUnknownProperties:!0}))}return parsedResponse}function isOperationSpecEmpty(operationSpec){let expectedStatusCodes=Object.keys(operationSpec.responses);return expectedStatusCodes.length===0||expectedStatusCodes.length===1&&expectedStatusCodes[0]==="default"}function handleErrorResponse(parsedResponse,operationSpec,responseSpec,options){let isSuccessByStatus=200<=parsedResponse.status&&parsedResponse.status<300;if(isOperationSpecEmpty(operationSpec)?isSuccessByStatus:!!responseSpec)if(responseSpec){if(!responseSpec.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1};let errorResponseSpec=responseSpec??operationSpec.responses.default,initialErrorMessage=parsedResponse.request.streamResponseStatusCodes?.has(parsedResponse.status)?`Unexpected status code: ${parsedResponse.status}`:parsedResponse.bodyAsText,error=new RestError2(initialErrorMessage,{statusCode:parsedResponse.status,request:parsedResponse.request,response:parsedResponse});if(!errorResponseSpec&&!(parsedResponse.parsedBody?.error?.code&&parsedResponse.parsedBody?.error?.message))throw error;let defaultBodyMapper=errorResponseSpec?.bodyMapper,defaultHeadersMapper=errorResponseSpec?.headersMapper;try{if(parsedResponse.parsedBody){let parsedBody=parsedResponse.parsedBody,deserializedError;if(defaultBodyMapper){let valueToDeserialize=parsedBody;if(operationSpec.isXML&&defaultBodyMapper.type.name===MapperTypeNames.Sequence){valueToDeserialize=[];let elementName=defaultBodyMapper.xmlElementName;typeof parsedBody=="object"&&elementName&&(valueToDeserialize=parsedBody[elementName])}deserializedError=operationSpec.serializer.deserialize(defaultBodyMapper,valueToDeserialize,"error.response.parsedBody",options)}let internalError=parsedBody.error||deserializedError||parsedBody;error.code=internalError.code,internalError.message&&(error.message=internalError.message),defaultBodyMapper&&(error.response.parsedBody=deserializedError)}parsedResponse.headers&&defaultHeadersMapper&&(error.response.parsedHeaders=operationSpec.serializer.deserialize(defaultHeadersMapper,parsedResponse.headers.toJSON(),"operationRes.parsedHeaders"))}catch(defaultError){error.message=`Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`}return{error,shouldReturnResponse:!1}}async function parse(jsonContentTypes,xmlContentTypes,operationResponse,opts,parseXML2){if(!operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status)&&operationResponse.bodyAsText){let text=operationResponse.bodyAsText,contentType2=operationResponse.headers.get("Content-Type")||"",contentComponents=contentType2?contentType2.split(";").map(component=>component.toLowerCase()):[];try{if(contentComponents.length===0||contentComponents.some(component=>jsonContentTypes.indexOf(component)!==-1))return operationResponse.parsedBody=JSON.parse(text),operationResponse;if(contentComponents.some(component=>xmlContentTypes.indexOf(component)!==-1)){if(!parseXML2)throw new Error("Parsing XML not supported.");let body2=await parseXML2(text,opts.xml);return operationResponse.parsedBody=body2,operationResponse}}catch(err){let msg=`Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`,errCode=err.code||RestError2.PARSE_ERROR;throw new RestError2(msg,{code:errCode,statusCode:operationResponse.status,request:operationResponse.request,response:operationResponse})}}return operationResponse}function getStreamingResponseStatusCodes(operationSpec){let result=new Set;for(let[statusCode,operationResponse]of Object.entries(operationSpec.responses))operationResponse.bodyMapper&&operationResponse.bodyMapper.type.name===MapperTypeNames.Stream&&result.add(Number(statusCode));return result}function getPathStringFromParameter(parameter){let{parameterPath,mapper}=parameter,result;return typeof parameterPath=="string"?result=parameterPath:Array.isArray(parameterPath)?result=parameterPath.join("."):result=mapper.serializedName,result}var serializationPolicyName="serializationPolicy";function serializationPolicy(options={}){let stringifyXML2=options.stringifyXML;return{name:serializationPolicyName,sendRequest(request,next){let operationInfo=getOperationRequestInfo(request),operationSpec=operationInfo?.operationSpec,operationArguments=operationInfo?.operationArguments;return operationSpec&&operationArguments&&(serializeHeaders(request,operationArguments,operationSpec),serializeRequestBody(request,operationArguments,operationSpec,stringifyXML2)),next(request)}}}function serializeHeaders(request,operationArguments,operationSpec){if(operationSpec.headerParameters)for(let headerParameter of operationSpec.headerParameters){let headerValue=getOperationArgumentValueFromParameter(operationArguments,headerParameter);if(headerValue!=null||headerParameter.mapper.required){headerValue=operationSpec.serializer.serialize(headerParameter.mapper,headerValue,getPathStringFromParameter(headerParameter));let headerCollectionPrefix=headerParameter.mapper.headerCollectionPrefix;if(headerCollectionPrefix)for(let key of Object.keys(headerValue))request.headers.set(headerCollectionPrefix+key,headerValue[key]);else request.headers.set(headerParameter.mapper.serializedName||getPathStringFromParameter(headerParameter),headerValue)}}let customHeaders=operationArguments.options?.requestOptions?.customHeaders;if(customHeaders)for(let customHeaderName of Object.keys(customHeaders))request.headers.set(customHeaderName,customHeaders[customHeaderName])}function serializeRequestBody(request,operationArguments,operationSpec,stringifyXML2=function(){throw new Error("XML serialization unsupported!")}){let serializerOptions=operationArguments.options?.serializerOptions,updatedOptions={xml:{rootName:serializerOptions?.xml.rootName??"",includeRoot:serializerOptions?.xml.includeRoot??!1,xmlCharKey:serializerOptions?.xml.xmlCharKey??"_"}},xmlCharKey=updatedOptions.xml.xmlCharKey;if(operationSpec.requestBody&&operationSpec.requestBody.mapper){request.body=getOperationArgumentValueFromParameter(operationArguments,operationSpec.requestBody);let bodyMapper=operationSpec.requestBody.mapper,{required,serializedName,xmlName,xmlElementName,xmlNamespace,xmlNamespacePrefix,nullable}=bodyMapper,typeName=bodyMapper.type.name;try{if(request.body!==void 0&&request.body!==null||nullable&&request.body===null||required){let requestBodyParameterPathString=getPathStringFromParameter(operationSpec.requestBody);request.body=operationSpec.serializer.serialize(bodyMapper,request.body,requestBodyParameterPathString,updatedOptions);let isStream=typeName===MapperTypeNames.Stream;if(operationSpec.isXML){let xmlnsKey=xmlNamespacePrefix?`xmlns:${xmlNamespacePrefix}`:"xmlns",value=getXmlValueWithNamespace(xmlNamespace,xmlnsKey,typeName,request.body,updatedOptions);typeName===MapperTypeNames.Sequence?request.body=stringifyXML2(prepareXMLRootList(value,xmlElementName||xmlName||serializedName,xmlnsKey,xmlNamespace),{rootName:xmlName||serializedName,xmlCharKey}):isStream||(request.body=stringifyXML2(value,{rootName:xmlName||serializedName,xmlCharKey}))}else{if(typeName===MapperTypeNames.String&&(operationSpec.contentType?.match("text/plain")||operationSpec.mediaType==="text"))return;isStream||(request.body=JSON.stringify(request.body))}}}catch(error){throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName,void 0," ")}.`,{cause:error})}}else if(operationSpec.formDataParameters&&operationSpec.formDataParameters.length>0){request.formData={};for(let formDataParameter of operationSpec.formDataParameters){let formDataParameterValue=getOperationArgumentValueFromParameter(operationArguments,formDataParameter);if(formDataParameterValue!=null){let formDataParameterPropertyName=formDataParameter.mapper.serializedName||getPathStringFromParameter(formDataParameter);request.formData[formDataParameterPropertyName]=operationSpec.serializer.serialize(formDataParameter.mapper,formDataParameterValue,getPathStringFromParameter(formDataParameter),updatedOptions)}}}}function getXmlValueWithNamespace(xmlNamespace,xmlnsKey,typeName,serializedValue,options){if(xmlNamespace&&!["Composite","Sequence","Dictionary"].includes(typeName)){let result={};return result[options.xml.xmlCharKey]=serializedValue,result["$"]={[xmlnsKey]:xmlNamespace},result}return serializedValue}function prepareXMLRootList(obj,elementName,xmlNamespaceKey,xmlNamespace){if(Array.isArray(obj)||(obj=[obj]),!xmlNamespaceKey||!xmlNamespace)return{[elementName]:obj};let result={[elementName]:obj};return result["$"]={[xmlNamespaceKey]:xmlNamespace},result}function createClientPipeline(options={}){let pipeline=createPipelineFromOptions2(options??{});return options.credentialOptions&&pipeline.addPolicy(bearerTokenAuthenticationPolicy({credential:options.credentialOptions.credential,scopes:options.credentialOptions.credentialScopes})),pipeline.addPolicy(serializationPolicy(options.serializationOptions),{phase:"Serialize"}),pipeline.addPolicy(deserializationPolicy(options.deserializationOptions),{phase:"Deserialize"}),pipeline}var cachedHttpClient;function getCachedDefaultHttpClient(){return cachedHttpClient||(cachedHttpClient=createDefaultHttpClient2()),cachedHttpClient}var CollectionFormatToDelimiterMap={CSV:",",SSV:" ",Multi:"Multi",TSV:" ",Pipes:"|"};function getRequestUrl(baseUri,operationSpec,operationArguments,fallbackObject){let urlReplacements=calculateUrlReplacements(operationSpec,operationArguments,fallbackObject),isAbsolutePath=!1,requestUrl=replaceAll(baseUri,urlReplacements);if(operationSpec.path){let path=replaceAll(operationSpec.path,urlReplacements);operationSpec.path==="/{nextLink}"&&path.startsWith("/")&&(path=path.substring(1)),isAbsoluteUrl(path)?(requestUrl=path,isAbsolutePath=!0):requestUrl=appendPath(requestUrl,path)}let{queryParams,sequenceParams}=calculateQueryParameters(operationSpec,operationArguments,fallbackObject);return requestUrl=appendQueryParams(requestUrl,queryParams,sequenceParams,isAbsolutePath),requestUrl}function replaceAll(input,replacements){let result=input;for(let[searchValue,replaceValue]of replacements)result=result.split(searchValue).join(replaceValue);return result}function calculateUrlReplacements(operationSpec,operationArguments,fallbackObject){let result=new Map;if(operationSpec.urlParameters?.length)for(let urlParameter of operationSpec.urlParameters){let urlParameterValue=getOperationArgumentValueFromParameter(operationArguments,urlParameter,fallbackObject),parameterPathString=getPathStringFromParameter(urlParameter);urlParameterValue=operationSpec.serializer.serialize(urlParameter.mapper,urlParameterValue,parameterPathString),urlParameter.skipEncoding||(urlParameterValue=encodeURIComponent(urlParameterValue)),result.set(`{${urlParameter.mapper.serializedName||parameterPathString}}`,urlParameterValue)}return result}function isAbsoluteUrl(url2){return url2.includes("://")}function appendPath(url2,pathToAppend){if(!pathToAppend)return url2;let parsedUrl=new URL(url2),newPath=parsedUrl.pathname;newPath.endsWith("/")||(newPath=`${newPath}/`),pathToAppend.startsWith("/")&&(pathToAppend=pathToAppend.substring(1));let searchStart=pathToAppend.indexOf("?");if(searchStart!==-1){let path=pathToAppend.substring(0,searchStart),search=pathToAppend.substring(searchStart+1);newPath=newPath+path,search&&(parsedUrl.search=parsedUrl.search?`${parsedUrl.search}&${search}`:search)}else newPath=newPath+pathToAppend;return Object.assign(parsedUrl,{pathname:newPath}),parsedUrl.toString()}function calculateQueryParameters(operationSpec,operationArguments,fallbackObject){let result=new Map,sequenceParams=new Set;if(operationSpec.queryParameters?.length)for(let queryParameter of operationSpec.queryParameters){queryParameter.mapper.type.name==="Sequence"&&queryParameter.mapper.serializedName&&sequenceParams.add(queryParameter.mapper.serializedName);let queryParameterValue=getOperationArgumentValueFromParameter(operationArguments,queryParameter,fallbackObject);if(queryParameterValue!=null||queryParameter.mapper.required){queryParameterValue=operationSpec.serializer.serialize(queryParameter.mapper,queryParameterValue,getPathStringFromParameter(queryParameter));let delimiter2=queryParameter.collectionFormat?CollectionFormatToDelimiterMap[queryParameter.collectionFormat]:"";if(Array.isArray(queryParameterValue)&&(queryParameterValue=queryParameterValue.map(item=>item??"")),queryParameter.collectionFormat==="Multi"&&queryParameterValue.length===0)continue;Array.isArray(queryParameterValue)&&(queryParameter.collectionFormat==="SSV"||queryParameter.collectionFormat==="TSV")&&(queryParameterValue=queryParameterValue.join(delimiter2)),queryParameter.skipEncoding||(Array.isArray(queryParameterValue)?queryParameterValue=queryParameterValue.map(item=>encodeURIComponent(item)):queryParameterValue=encodeURIComponent(queryParameterValue)),Array.isArray(queryParameterValue)&&(queryParameter.collectionFormat==="CSV"||queryParameter.collectionFormat==="Pipes")&&(queryParameterValue=queryParameterValue.join(delimiter2)),result.set(queryParameter.mapper.serializedName||getPathStringFromParameter(queryParameter),queryParameterValue)}}return{queryParams:result,sequenceParams}}function simpleParseQueryParams(queryString){let result=new Map;if(!queryString||queryString[0]!=="?")return result;queryString=queryString.slice(1);let pairs=queryString.split("&");for(let pair of pairs){let[name,value]=pair.split("=",2),existingValue=result.get(name);existingValue?Array.isArray(existingValue)?existingValue.push(value):result.set(name,[existingValue,value]):result.set(name,value)}return result}function appendQueryParams(url2,queryParams,sequenceParams,noOverwrite=!1){if(queryParams.size===0)return url2;let parsedUrl=new URL(url2),combinedParams=simpleParseQueryParams(parsedUrl.search);for(let[name,value]of queryParams){let existingValue=combinedParams.get(name);if(Array.isArray(existingValue))if(Array.isArray(value)){existingValue.push(...value);let valueSet=new Set(existingValue);combinedParams.set(name,Array.from(valueSet))}else existingValue.push(value);else existingValue?(Array.isArray(value)?value.unshift(existingValue):sequenceParams.has(name)&&combinedParams.set(name,[existingValue,value]),noOverwrite||combinedParams.set(name,value)):combinedParams.set(name,value)}let searchPieces=[];for(let[name,value]of combinedParams)if(typeof value=="string")searchPieces.push(`${name}=${value}`);else if(Array.isArray(value))for(let subValue of value)searchPieces.push(`${name}=${subValue}`);else searchPieces.push(`${name}=${value}`);return parsedUrl.search=searchPieces.length?`?${searchPieces.join("&")}`:"",parsedUrl.toString()}var logger3=createClientLogger2("core-client");var ServiceClient=class{_endpoint;_requestContentType;_allowInsecureConnection;_httpClient;pipeline;constructor(options={}){if(this._requestContentType=options.requestContentType,this._endpoint=options.endpoint??options.baseUri,options.baseUri&&logger3.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."),this._allowInsecureConnection=options.allowInsecureConnection,this._httpClient=options.httpClient||getCachedDefaultHttpClient(),this.pipeline=options.pipeline||createDefaultPipeline2(options),options.additionalPolicies?.length)for(let{policy,position}of options.additionalPolicies){let afterPhase=position==="perRetry"?"Sign":void 0;this.pipeline.addPolicy(policy,{afterPhase})}}sendRequest(request){return this.pipeline.sendRequest(this._httpClient,request)}async sendOperationRequest(operationArguments,operationSpec){let endpoint=operationSpec.baseUrl||this._endpoint;if(!endpoint)throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.");let url2=getRequestUrl(endpoint,operationSpec,operationArguments,this),request=createPipelineRequest2({url:url2});request.method=operationSpec.httpMethod;let operationInfo=getOperationRequestInfo(request);operationInfo.operationSpec=operationSpec,operationInfo.operationArguments=operationArguments;let contentType2=operationSpec.contentType||this._requestContentType;contentType2&&operationSpec.requestBody&&request.headers.set("Content-Type",contentType2);let options=operationArguments.options;if(options){let requestOptions=options.requestOptions;requestOptions&&(requestOptions.timeout&&(request.timeout=requestOptions.timeout),requestOptions.onUploadProgress&&(request.onUploadProgress=requestOptions.onUploadProgress),requestOptions.onDownloadProgress&&(request.onDownloadProgress=requestOptions.onDownloadProgress),requestOptions.shouldDeserialize!==void 0&&(operationInfo.shouldDeserialize=requestOptions.shouldDeserialize),requestOptions.allowInsecureConnection&&(request.allowInsecureConnection=!0)),options.abortSignal&&(request.abortSignal=options.abortSignal),options.tracingOptions&&(request.tracingOptions=options.tracingOptions)}this._allowInsecureConnection&&(request.allowInsecureConnection=!0),request.streamResponseStatusCodes===void 0&&(request.streamResponseStatusCodes=getStreamingResponseStatusCodes(operationSpec));try{let rawResponse=await this.sendRequest(request),flatResponse=flattenResponse(rawResponse,operationSpec.responses[rawResponse.status]);return options?.onResponse&&options.onResponse(rawResponse,flatResponse),flatResponse}catch(error){if(typeof error=="object"&&error?.response){let rawResponse=error.response,flatResponse=flattenResponse(rawResponse,operationSpec.responses[error.statusCode]||operationSpec.responses.default);error.details=flatResponse,options?.onResponse&&options.onResponse(rawResponse,flatResponse,error)}throw error}}};function createDefaultPipeline2(options){let credentialScopes=getCredentialScopes(options),credentialOptions=options.credential&&credentialScopes?{credentialScopes,credential:options.credential}:void 0;return createClientPipeline({...options,credentialOptions})}function getCredentialScopes(options){if(options.credentialScopes)return options.credentialScopes;if(options.endpoint)return`${options.endpoint}/.default`;if(options.baseUri)return`${options.baseUri}/.default`;if(options.credential)throw new Error("When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy")}var Constants={DefaultScope:"/.default",HeaderConstants:{AUTHORIZATION:"authorization"}};function isUuid(text){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(text)}var authorizeRequestOnTenantChallenge=async challengeOptions=>{let requestOptions=requestToOptions(challengeOptions.request),challenge=getChallenge(challengeOptions.response);if(challenge){let challengeInfo=parseChallenge(challenge),challengeScopes=buildScopes(challengeOptions,challengeInfo),tenantId=extractTenantId(challengeInfo);if(!tenantId)return!1;let accessToken=await challengeOptions.getAccessToken(challengeScopes,{...requestOptions,tenantId});return accessToken?(challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION,`${accessToken.tokenType??"Bearer"} ${accessToken.token}`),!0):!1}return!1};function extractTenantId(challengeInfo){let tenantId=new URL(challengeInfo.authorization_uri).pathname.split("/")[1];if(tenantId&&isUuid(tenantId))return tenantId}function buildScopes(challengeOptions,challengeInfo){if(!challengeInfo.resource_id)return challengeOptions.scopes;let challengeScopes=new URL(challengeInfo.resource_id),scope=new URL(Constants.DefaultScope,challengeScopes.origin).toString();return scope==="https://disk.azure.com/.default"&&(scope="https://disk.azure.com//.default"),[scope]}function getChallenge(response){let challenge=response.headers.get("WWW-Authenticate");if(response.status===401&&challenge)return challenge}function parseChallenge(challenge){return`${challenge.slice(7).trim()} `.split(" ").filter(x=>x).map(keyValue=>(([key,value])=>({[key]:value}))(keyValue.trim().split("="))).reduce((a,b)=>({...a,...b}),{})}function requestToOptions(request){return{abortSignal:request.abortSignal,requestOptions:{timeout:request.timeout},tracingOptions:request.tracingOptions}}var originalRequestSymbol2=Symbol("Original PipelineRequest"),originalClientRequestSymbol=Symbol.for("@azure/core-client original request"),passThroughProps=new Set(["url","method","withCredentials","timeout","requestId","abortSignal","body","formData","onDownloadProgress","onUploadProgress","proxySettings","streamResponseStatusCodes","agent","requestOverrides"]);function toPipelineRequest(webResource,options={}){let request=webResource[originalRequestSymbol2],headers=createHttpHeaders2(webResource.headers.toJson({preserveCase:!0}));if(request)return request.headers=headers,request;{let newRequest=createPipelineRequest2({url:webResource.url,method:webResource.method,headers,withCredentials:webResource.withCredentials,timeout:webResource.timeout,requestId:webResource.requestId,abortSignal:webResource.abortSignal,body:webResource.body,formData:webResource.formData,disableKeepAlive:!!webResource.keepAlive,onDownloadProgress:webResource.onDownloadProgress,onUploadProgress:webResource.onUploadProgress,proxySettings:webResource.proxySettings,streamResponseStatusCodes:webResource.streamResponseStatusCodes,agent:webResource.agent,requestOverrides:webResource.requestOverrides});return options.originalRequest&&(newRequest[originalClientRequestSymbol]=options.originalRequest),newRequest}}function toWebResourceLike(request,options){let originalRequest=options?.originalRequest??request,webResource={url:request.url,method:request.method,headers:toHttpHeadersLike(request.headers),withCredentials:request.withCredentials,timeout:request.timeout,requestId:request.headers.get("x-ms-client-request-id")||request.requestId,abortSignal:request.abortSignal,body:request.body,formData:request.formData,keepAlive:!!request.disableKeepAlive,onDownloadProgress:request.onDownloadProgress,onUploadProgress:request.onUploadProgress,proxySettings:request.proxySettings,streamResponseStatusCodes:request.streamResponseStatusCodes,agent:request.agent,requestOverrides:request.requestOverrides,clone(){throw new Error("Cannot clone a non-proxied WebResourceLike")},prepare(){throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat")},validateRequestProperties(){}};return options?.createProxy?new Proxy(webResource,{get(target,prop,receiver){return prop===originalRequestSymbol2?request:prop==="clone"?()=>toWebResourceLike(toPipelineRequest(webResource,{originalRequest}),{createProxy:!0,originalRequest}):Reflect.get(target,prop,receiver)},set(target,prop,value,receiver){return prop==="keepAlive"&&(request.disableKeepAlive=!value),typeof prop=="string"&&passThroughProps.has(prop)&&(request[prop]=value),Reflect.set(target,prop,value,receiver)}}):webResource}function toHttpHeadersLike(headers){return new HttpHeaders(headers.toJSON({preserveCase:!0}))}function getHeaderKey(headerName){return headerName.toLowerCase()}var HttpHeaders=class _HttpHeaders{_headersMap;constructor(rawHeaders){if(this._headersMap={},rawHeaders)for(let headerName in rawHeaders)this.set(headerName,rawHeaders[headerName])}set(headerName,headerValue){this._headersMap[getHeaderKey(headerName)]={name:headerName,value:headerValue.toString()}}get(headerName){let header=this._headersMap[getHeaderKey(headerName)];return header?header.value:void 0}contains(headerName){return!!this._headersMap[getHeaderKey(headerName)]}remove(headerName){let result=this.contains(headerName);return delete this._headersMap[getHeaderKey(headerName)],result}rawHeaders(){return this.toJson({preserveCase:!0})}headersArray(){let headers=[];for(let headerKey in this._headersMap)headers.push(this._headersMap[headerKey]);return headers}headerNames(){let headerNames=[],headers=this.headersArray();for(let i=0;i{let response=await requestPolicyClient.sendRequest(toWebResourceLike(request,{createProxy:!0}));return toPipelineResponse(response)}}}var import_fast_xml_parser=__toESM(require_fxp(),1);function getCommonOptions(options){return{attributesGroupName:"$",textNodeName:options.xmlCharKey??"_",ignoreAttributes:!1,suppressBooleanAttributes:!1}}function getSerializerOptions(options={}){return{...getCommonOptions(options),attributeNamePrefix:"@_",format:!0,suppressEmptyNode:!0,indentBy:"",rootNodeName:options.rootName??"root",cdataPropName:options.cdataPropName??"__cdata"}}function getParserOptions(options={}){return{...getCommonOptions(options),parseAttributeValue:!1,parseTagValue:!1,attributeNamePrefix:"",stopNodes:options.stopNodes,processEntities:!0,trimValues:!1}}function stringifyXML(obj,opts={}){let parserOptions=getSerializerOptions(opts),j2x=new import_fast_xml_parser.XMLBuilder(parserOptions),node={[parserOptions.rootNodeName]:obj};return`${j2x.build(node)}`.replace(/\n/g,"")}async function parseXML(str,opts={}){if(!str)throw new Error("Document is empty");let validation=import_fast_xml_parser.XMLValidator.validate(str);if(validation!==!0)throw validation;let parsedXml=new import_fast_xml_parser.XMLParser(getParserOptions(opts)).parse(str);if(parsedXml["?xml"]&&delete parsedXml["?xml"],!opts.includeRoot){let key=Object.keys(parsedXml)[0];if(key!==void 0){let value=parsedXml[key];return typeof value=="object"?{...value}:value}}return parsedXml}var logger4=createClientLogger2("storage-blob");import{EventEmitter}from"node:events";import{Readable as Readable3}from"node:stream";var BuffersStream=class extends Readable3{buffers;byteLength;byteOffsetInCurrentBuffer;bufferIndex;pushedBytesLength;constructor(buffers,byteLength,options){super(options),this.buffers=buffers,this.byteLength=byteLength,this.byteOffsetInCurrentBuffer=0,this.bufferIndex=0,this.pushedBytesLength=0;let buffersLength=0;for(let buf of this.buffers)buffersLength+=buf.byteLength;if(buffersLength=this.byteLength&&this.push(null),size||(size=this.readableHighWaterMark);let outBuffers=[],i=0;for(;isize-i){let end=this.byteOffsetInCurrentBuffer+size-i;outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer,end)),this.pushedBytesLength+=size-i,this.byteOffsetInCurrentBuffer=end,i=size;break}else{let end=this.byteOffsetInCurrentBuffer+remaining;outBuffers.push(this.buffers[this.bufferIndex].slice(this.byteOffsetInCurrentBuffer,end)),remaining===remainingCapacityInThisBuffer?(this.byteOffsetInCurrentBuffer=0,this.bufferIndex++):this.byteOffsetInCurrentBuffer=end,this.pushedBytesLength+=remaining,i+=remaining}}outBuffers.length>1?this.push(Buffer.concat(outBuffers)):outBuffers.length===1&&this.push(outBuffers[0])}};import buffer from"node:buffer";var maxBufferLength=buffer.constants.MAX_LENGTH,PooledBuffer=class{buffers=[];capacity;_size;get size(){return this._size}constructor(capacity,buffers,totalLength){this.capacity=capacity,this._size=0;let bufferNum=Math.ceil(capacity/maxBufferLength);for(let i=0;i0&&(buffers[0]=buffers[0].slice(sourceOffset))}getReadableStream(){return new BuffersStream(this.buffers,this.size)}};var BufferScheduler=class{bufferSize;maxBuffers;readable;outgoingHandler;emitter=new EventEmitter;concurrency;offset=0;isStreamEnd=!1;isError=!1;executingOutgoingHandlers=0;encoding;numBuffers=0;unresolvedDataArray=[];unresolvedLength=0;incoming=[];outgoing=[];constructor(readable,bufferSize,maxBuffers,outgoingHandler,concurrency,encoding){if(bufferSize<=0)throw new RangeError(`bufferSize must be larger than 0, current is ${bufferSize}`);if(maxBuffers<=0)throw new RangeError(`maxBuffers must be larger than 0, current is ${maxBuffers}`);if(concurrency<=0)throw new RangeError(`concurrency must be larger than 0, current is ${concurrency}`);this.bufferSize=bufferSize,this.maxBuffers=maxBuffers,this.readable=readable,this.outgoingHandler=outgoingHandler,this.concurrency=concurrency,this.encoding=encoding}async do(){return new Promise((resolve,reject)=>{this.readable.on("data",data=>{data=typeof data=="string"?Buffer.from(data,this.encoding):data,this.appendUnresolvedData(data),this.resolveData()||this.readable.pause()}),this.readable.on("error",err=>{this.emitter.emit("error",err)}),this.readable.on("end",()=>{this.isStreamEnd=!0,this.emitter.emit("checkEnd")}),this.emitter.on("error",err=>{this.isError=!0,this.readable.pause(),reject(err)}),this.emitter.on("checkEnd",()=>{if(this.outgoing.length>0){this.triggerOutgoingHandlers();return}if(this.isStreamEnd&&this.executingOutgoingHandlers===0)if(this.unresolvedLength>0&&this.unresolvedLengthbuffer2.getReadableStream(),buffer2.size,this.offset).then(resolve).catch(reject)}else{if(this.unresolvedLength>=this.bufferSize)return;resolve()}})})}appendUnresolvedData(data){this.unresolvedDataArray.push(data),this.unresolvedLength+=data.length}shiftBufferFromUnresolvedDataArray(buffer2){return buffer2?buffer2.fill(this.unresolvedDataArray,this.unresolvedLength):buffer2=new PooledBuffer(this.bufferSize,this.unresolvedDataArray,this.unresolvedLength),this.unresolvedLength-=buffer2.size,buffer2}resolveData(){for(;this.unresolvedLength>=this.bufferSize;){let buffer2;if(this.incoming.length>0)buffer2=this.incoming.shift(),this.shiftBufferFromUnresolvedDataArray(buffer2);else if(this.numBuffers=this.concurrency)return;buffer2=this.outgoing.shift(),buffer2&&this.triggerOutgoingHandler(buffer2)}while(buffer2)}async triggerOutgoingHandler(buffer2){let bufferLength=buffer2.size;this.executingOutgoingHandlers++,this.offset+=bufferLength;try{await this.outgoingHandler(()=>buffer2.getReadableStream(),bufferLength,this.offset-bufferLength)}catch(err){this.emitter.emit("error",err);return}this.executingOutgoingHandlers--,this.reuseBuffer(buffer2),this.emitter.emit("checkEnd")}reuseBuffer(buffer2){this.incoming.push(buffer2),!this.isError&&this.resolveData()&&!this.isStreamEnd&&this.readable.resume()}};import Stream,{Readable as Readable4}from"node:stream";var NativeCRC64=(()=>{var _scriptDir=typeof document<"u"&&document.currentScript?document.currentScript.src:void 0;return(function(NativeCRC642){NativeCRC642=NativeCRC642||{};var Module=typeof NativeCRC642<"u"?NativeCRC642:{},readyPromiseResolve,readyPromiseReject;Module.ready=new Promise(function(resolve,reject){readyPromiseResolve=resolve,readyPromiseReject=reject}),["_malloc","_free","_emscripten_bind_VoidPtr___destroy___0","_emscripten_bind_Crc64Hash_Crc64Hash_0","_emscripten_bind_Crc64Hash_OnAppend_2","_emscripten_bind_Crc64Hash_OnFinal_3","_emscripten_bind_Crc64Hash___destroy___0","_fflush","onRuntimeInitialized"].forEach(prop=>{Object.getOwnPropertyDescriptor(Module.ready,prop)||Object.defineProperty(Module.ready,prop,{get:()=>abort("You are getting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js"),set:()=>abort("You are setting "+prop+" on the Promise object, instead of the instance. Use .then() to get called back with the instance, see the MODULARIZE docs in src/settings.js")})});var moduleOverrides=Object.assign({},Module),arguments_=[],thisProgram="./this.program",quit_=(status,toThrow)=>{throw toThrow},ENVIRONMENT_IS_WEB=typeof window=="object",ENVIRONMENT_IS_WORKER=typeof importScripts=="function",ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",ENVIRONMENT_IS_SHELL=!ENVIRONMENT_IS_WEB&&!ENVIRONMENT_IS_NODE&&!ENVIRONMENT_IS_WORKER;if(Module.ENVIRONMENT)throw new Error("Module.ENVIRONMENT has been deprecated. To force the environment, use the ENVIRONMENT compile-time option (for example, -sENVIRONMENT=web or -sENVIRONMENT=node)");var scriptDirectory="";function locateFile(path){return Module.locateFile?Module.locateFile(path,scriptDirectory):scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;e&&typeof e=="object"&&e.stack&&(toLog=[e,e.stack]),err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){if(typeof process>"u"||!process.release||process.release.name!=="node")throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");process.argv.length>1&&(thisProgram=process.argv[1].replace(/\\/g,"/")),arguments_=process.argv.slice(2),process.on("uncaughtException",function(ex){if(!(ex instanceof ExitStatus))throw ex}),process.on("unhandledRejection",function(reason){throw reason}),quit_=(status,toThrow)=>{if(keepRuntimeAlive())throw process.exitCode=status,toThrow;logExceptionOnExit(toThrow),process.exit(status)},Module.inspect=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_SHELL){if(typeof process=="object"&&typeof __require=="function"||typeof window=="object"||typeof importScripts=="function")throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)");typeof scriptArgs<"u"?arguments_=scriptArgs:typeof arguments<"u"&&(arguments_=arguments),typeof quit=="function"&&(quit_=(status,toThrow)=>{logExceptionOnExit(toThrow),quit(status)}),typeof print<"u"&&(typeof console>"u"&&(console={}),console.log=print,console.warn=console.error=typeof printErr<"u"?printErr:print)}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(!(typeof window=="object"||typeof importScripts=="function"))throw new Error("not compiled for this environment (did you build to HTML and try to run it not on the web, or set ENVIRONMENT to something - like node - and run it someplace else - like on the web?)")}else throw new Error("environment detection error");var out=Module.print||console.log.bind(console),err=Module.printErr||console.warn.bind(console);Object.assign(Module,moduleOverrides),moduleOverrides=null,checkIncomingModuleAPI(),Module.arguments&&(arguments_=Module.arguments),legacyModuleProp("arguments","arguments_"),Module.thisProgram&&(thisProgram=Module.thisProgram),legacyModuleProp("thisProgram","thisProgram"),Module.quit&&(quit_=Module.quit),legacyModuleProp("quit","quit_"),assert(typeof Module.memoryInitializerPrefixURL>"u","Module.memoryInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(typeof Module.pthreadMainPrefixURL>"u","Module.pthreadMainPrefixURL option was removed, use Module.locateFile instead"),assert(typeof Module.cdInitializerPrefixURL>"u","Module.cdInitializerPrefixURL option was removed, use Module.locateFile instead"),assert(typeof Module.filePackagePrefixURL>"u","Module.filePackagePrefixURL option was removed, use Module.locateFile instead"),assert(typeof Module.read>"u","Module.read option was removed (modify read_ in JS)"),assert(typeof Module.readAsync>"u","Module.readAsync option was removed (modify readAsync in JS)"),assert(typeof Module.readBinary>"u","Module.readBinary option was removed (modify readBinary in JS)"),assert(typeof Module.setWindowTitle>"u","Module.setWindowTitle option was removed (modify setWindowTitle in JS)"),assert(typeof Module.TOTAL_MEMORY>"u","Module.TOTAL_MEMORY has been renamed Module.INITIAL_MEMORY"),legacyModuleProp("read","read_"),legacyModuleProp("readAsync","readAsync"),legacyModuleProp("readBinary","readBinary"),legacyModuleProp("setWindowTitle","setWindowTitle");var IDBFS="IDBFS is no longer included by default; build with -lidbfs.js",PROXYFS="PROXYFS is no longer included by default; build with -lproxyfs.js",WORKERFS="WORKERFS is no longer included by default; build with -lworkerfs.js",NODEFS="NODEFS is no longer included by default; build with -lnodefs.js";assert(!ENVIRONMENT_IS_SHELL,"shell environment detected but not enabled at build time. Add 'shell' to `-sENVIRONMENT` to enable.");var STACK_ALIGN=16,POINTER_SIZE=4;function getNativeTypeSize(type){switch(type){case"i1":case"i8":case"u8":return 1;case"i16":case"u16":return 2;case"i32":case"u32":return 4;case"i64":case"u64":return 8;case"float":return 4;case"double":return 8;default:{if(type[type.length-1]==="*")return POINTER_SIZE;if(type[0]==="i"){let bits=Number(type.substr(1));return assert(bits%8===0,"getNativeTypeSize invalid bits "+bits+", type "+type),bits/8}return 0}}}function legacyModuleProp(prop,newName){Object.getOwnPropertyDescriptor(Module,prop)||Object.defineProperty(Module,prop,{configurable:!0,get:function(){abort("Module."+prop+" has been replaced with plain "+newName+" (the initial value can be provided on Module, but after startup the value is only looked for on a local variable of that name)")}})}function ignoredModuleProp(prop){Object.getOwnPropertyDescriptor(Module,prop)&&abort("`Module."+prop+"` was supplied but `"+prop+"` not included in INCOMING_MODULE_JS_API")}function isExportedByForceFilesystem(name){return name==="FS_createPath"||name==="FS_createDataFile"||name==="FS_createPreloadedFile"||name==="FS_unlink"||name==="addRunDependency"||name==="FS_createLazyFile"||name==="FS_createDevice"||name==="removeRunDependency"}function missingLibrarySymbol(sym){typeof globalThis<"u"&&!Object.getOwnPropertyDescriptor(globalThis,sym)&&Object.defineProperty(globalThis,sym,{configurable:!0,get:function(){var msg="`"+sym+"` is a library symbol and not included by default; add it to your library.js __deps or to DEFAULT_LIBRARY_FUNCS_TO_INCLUDE on the command line",librarySymbol=sym;librarySymbol.startsWith("_")||(librarySymbol="$"+sym),msg+=" (e.g. -sDEFAULT_LIBRARY_FUNCS_TO_INCLUDE="+librarySymbol+")",isExportedByForceFilesystem(sym)&&(msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),warnOnce(msg)}})}function unexportedRuntimeSymbol(sym){Object.getOwnPropertyDescriptor(Module,sym)||Object.defineProperty(Module,sym,{configurable:!0,get:function(){var msg="'"+sym+"' was not exported. add it to EXPORTED_RUNTIME_METHODS (see the FAQ)";isExportedByForceFilesystem(sym)&&(msg+=". Alternatively, forcing filesystem support (-sFORCE_FILESYSTEM) can export this for you"),abort(msg)}})}var wasmBinary;Module.wasmBinary&&(wasmBinary=Module.wasmBinary),legacyModuleProp("wasmBinary","wasmBinary");var noExitRuntime=Module.noExitRuntime||!0;legacyModuleProp("noExitRuntime","noExitRuntime"),typeof WebAssembly!="object"&&abort("no native wasm support detected");var wasmMemory,ABORT=!1,EXITSTATUS;function assert(condition,text){condition||abort("Assertion failed"+(text?": "+text:""))}var UTF8Decoder=typeof TextDecoder<"u"?new TextDecoder("utf8"):void 0;function UTF8ArrayToString(heapOrArray,idx,maxBytesToRead){for(var endIdx=idx+maxBytesToRead,endPtr=idx;heapOrArray[endPtr]&&!(endPtr>=endIdx);)++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder)return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr));for(var str="";idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;for(var startIdx=outIdx,endIdx=outIdx+maxBytesToWrite-1,i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6,heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;u>1114111&&warnOnce("Invalid Unicode code point "+ptrToString(u)+" encountered when serializing a JS string to a UTF-8 string in wasm memory! (Valid unicode code points should be in range 0-0x10FFFF)."),heap[outIdx++]=240|u>>18,heap[outIdx++]=128|u>>12&63,heap[outIdx++]=128|u>>6&63,heap[outIdx++]=128|u&63}}return heap[outIdx]=0,outIdx-startIdx}function stringToUTF8(str,outPtr,maxBytesToWrite){return assert(typeof maxBytesToWrite=="number","stringToUTF8(str, outPtr, maxBytesToWrite) is missing the third parameter that specifies the length of the output buffer!"),stringToUTF8Array(str,HEAPU8,outPtr,maxBytesToWrite)}function lengthBytesUTF8(str){for(var len=0,i=0;i=55296&&c<=57343?(len+=4,++i):len+=3}return len}var HEAP,buffer2,HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateGlobalBufferAndViews(buf){buffer2=buf,Module.HEAP8=HEAP8=new Int8Array(buf),Module.HEAP16=HEAP16=new Int16Array(buf),Module.HEAP32=HEAP32=new Int32Array(buf),Module.HEAPU8=HEAPU8=new Uint8Array(buf),Module.HEAPU16=HEAPU16=new Uint16Array(buf),Module.HEAPU32=HEAPU32=new Uint32Array(buf),Module.HEAPF32=HEAPF32=new Float32Array(buf),Module.HEAPF64=HEAPF64=new Float64Array(buf)}var STACK_SIZE=5242880;Module.STACK_SIZE&&assert(STACK_SIZE===Module.STACK_SIZE,"the stack size can no longer be determined at runtime");var INITIAL_MEMORY=Module.INITIAL_MEMORY||16777216;legacyModuleProp("INITIAL_MEMORY","INITIAL_MEMORY"),assert(INITIAL_MEMORY>=STACK_SIZE,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+STACK_SIZE+")"),assert(typeof Int32Array<"u"&&typeof Float64Array<"u"&&Int32Array.prototype.subarray!=null&&Int32Array.prototype.set!=null,"JS engine does not provide full typed array support"),assert(!Module.wasmMemory,"Use of `wasmMemory` detected. Use -sIMPORTED_MEMORY to define wasmMemory externally"),assert(INITIAL_MEMORY==16777216,"Detected runtime INITIAL_MEMORY setting. Use -sIMPORTED_MEMORY to define wasmMemory dynamically");var wasmTable;function writeStackCookie(){var max=_emscripten_stack_get_end();assert((max&3)==0),max==0&&(max+=4),HEAPU32[max>>2]=34821223,HEAPU32[max+4>>2]=2310721022,HEAPU32[0]=1668509029}function checkStackCookie(){if(!ABORT){var max=_emscripten_stack_get_end();max==0&&(max+=4);var cookie1=HEAPU32[max>>2],cookie2=HEAPU32[max+4>>2];(cookie1!=34821223||cookie2!=2310721022)&&abort("Stack overflow! Stack cookie has been overwritten at "+ptrToString(max)+", expected hex dwords 0x89BACDFE and 0x2135467, but received "+ptrToString(cookie2)+" "+ptrToString(cookie1)),HEAPU32[0]!==1668509029&&abort("Runtime error: The application has corrupted its heap memory area (address zero)!")}}(function(){var h16=new Int16Array(1),h8=new Int8Array(h16.buffer);if(h16[0]=25459,h8[0]!==115||h8[1]!==99)throw"Runtime error: expected the system to be little-endian! (Run with -sSUPPORT_BIG_ENDIAN to bypass)"})();var __ATPRERUN__=[],__ATINIT__=[],__ATEXIT__=[],__ATPOSTRUN__=[],runtimeInitialized=!1;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module.preRun)for(typeof Module.preRun=="function"&&(Module.preRun=[Module.preRun]);Module.preRun.length;)addOnPreRun(Module.preRun.shift());callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){assert(!runtimeInitialized),runtimeInitialized=!0,checkStackCookie(),callRuntimeCallbacks(__ATINIT__)}function postRun(){if(checkStackCookie(),Module.postRun)for(typeof Module.postRun=="function"&&(Module.postRun=[Module.postRun]);Module.postRun.length;)addOnPostRun(Module.postRun.shift());callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnExit(cb){}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}assert(Math.imul,"This browser does not support Math.imul(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.fround,"This browser does not support Math.fround(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.clz32,"This browser does not support Math.clz32(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill"),assert(Math.trunc,"This browser does not support Math.trunc(), build with LEGACY_VM_SUPPORT or POLYFILL_OLD_MATH_FUNCTIONS to add in a polyfill");var runDependencies=0,runDependencyWatcher=null,dependenciesFulfilled=null,runDependencyTracking={};function getUniqueRunDependency(id){for(var orig=id;;){if(!runDependencyTracking[id])return id;id=orig+Math.random()}}function addRunDependency(id){runDependencies++,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),id?(assert(!runDependencyTracking[id]),runDependencyTracking[id]=1,runDependencyWatcher===null&&typeof setInterval<"u"&&(runDependencyWatcher=setInterval(function(){if(ABORT){clearInterval(runDependencyWatcher),runDependencyWatcher=null;return}var shown=!1;for(var dep in runDependencyTracking)shown||(shown=!0,err("still waiting on run dependencies:")),err("dependency: "+dep);shown&&err("(end of list)")},1e4))):err("warning: run dependency added without ID")}function removeRunDependency(id){if(runDependencies--,Module.monitorRunDependencies&&Module.monitorRunDependencies(runDependencies),id?(assert(runDependencyTracking[id]),delete runDependencyTracking[id]):err("warning: run dependency removed without ID"),runDependencies==0&&(runDependencyWatcher!==null&&(clearInterval(runDependencyWatcher),runDependencyWatcher=null),dependenciesFulfilled)){var callback=dependenciesFulfilled;dependenciesFulfilled=null,callback()}}function abort(what){Module.onAbort&&Module.onAbort(what),what="Aborted("+what+")",err(what),ABORT=!0,EXITSTATUS=1;var e=new WebAssembly.RuntimeError(what);throw readyPromiseReject(e),e}var FS={error:function(){abort("Filesystem support (FS) was not included. The problem is that you are using files from JS, but files were not used from C/C++, so filesystem support was not auto-included. You can force-include filesystem support with -sFORCE_FILESYSTEM")},init:function(){FS.error()},createDataFile:function(){FS.error()},createPreloadedFile:function(){FS.error()},createLazyFile:function(){FS.error()},open:function(){FS.error()},mkdev:function(){FS.error()},registerDevice:function(){FS.error()},analyzePath:function(){FS.error()},loadFilesFromDB:function(){FS.error()},ErrnoError:function(){FS.error()}};Module.FS_createDataFile=FS.createDataFile,Module.FS_createPreloadedFile=FS.createPreloadedFile;var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}function createExportWrapper(name,fixedasm){return function(){var displayName=name,asm2=fixedasm;return fixedasm||(asm2=Module.asm),assert(runtimeInitialized,"native function `"+displayName+"` called before runtime initialization"),asm2[name]||assert(asm2[name],"exported native function `"+displayName+"` not found"),asm2[name].apply(null,arguments)}}var wasmBinaryFile;wasmBinaryFile="crc64.wasm",isDataURI(wasmBinaryFile)||(wasmBinaryFile=locateFile(wasmBinaryFile));var binaryInString=["AGFzbQEAAAABzYCAgAAMYAF/AX9gAAF/YAF/AGAAAGADf35/AX5gA39/fwBgBH9/f38AYAN/f38Bf2AFf39","/f38Bf2AEf39/fwF/YAR/f35/AX5gBH9+f38BfwKPgYCAAAUDZW52BWFib3J0AAMDZW52FmVtc2NyaXB0ZW","5fcmVzaXplX2hlYXAAABZ3YXNpX3NuYXBzaG90X3ByZXZpZXcxCGZkX2Nsb3NlAAAWd2FzaV9zbmFwc2hvd","F9wcmV2aWV3MQhmZF93cml0ZQAJFndhc2lfc25hcHNob3RfcHJldmlldzEHZmRfc2VlawAIA62AgIAALAMF","BgIBAAUGAgEBAAACAAIAAAAHBAQCAgEDAAIAAQIBAQIAAQMBAQEACggLBIWAgIAAAXABBAQFh4CAgAABAYA","CgIACBsiAgIAACn8BQYCAwAILfwFBAAt/AUEAC38BQQALfwBBnJHBAgt/AEGwkcECC38AQZyRwQILfwBBsJ","HBAgt/AEGwkcECC38AQZKSwQILB/qEgIAAGwZtZW1vcnkCABFfX3dhc21fY2FsbF9jdG9ycwAFJWVtc2Nya","XB0ZW5fYmluZF9Wb2lkUHRyX19fZGVzdHJveV9fXzAACCVlbXNjcmlwdGVuX2JpbmRfQ3JjNjRIYXNoX0Ny","YzY0SGFzaF8wAAkkZW1zY3JpcHRlbl9iaW5kX0NyYzY0SGFzaF9PbkFwcGVuZF8yAAsjZW1zY3JpcHRlbl9","iaW5kX0NyYzY0SGFzaF9PbkZpbmFsXzMADCdlbXNjcmlwdGVuX2JpbmRfQ3JjNjRIYXNoX19fZGVzdHJveV","9fXzAADRtfX2VtX2xpYl9kZXBzX3dlYmlkbF9iaW5kZXIDBCFfX2VtX2pzX19hcnJheV9ib3VuZHNfY2hlY","2tfZXJyb3IDBRlfX2luZGlyZWN0X2Z1bmN0aW9uX3RhYmxlAQAQX19lcnJub19sb2NhdGlvbgAPBmZmbHVz","aAAtBm1hbGxvYwARBGZyZWUAEhVlbXNjcmlwdGVuX3N0YWNrX2luaXQAKRllbXNjcmlwdGVuX3N0YWNrX2d","ldF9mcmVlACoZZW1zY3JpcHRlbl9zdGFja19nZXRfYmFzZQArGGVtc2NyaXB0ZW5fc3RhY2tfZ2V0X2VuZA","AsCXN0YWNrU2F2ZQAlDHN0YWNrUmVzdG9yZQAmCnN0YWNrQWxsb2MAJxxlbXNjcmlwdGVuX3N0YWNrX2dld","F9jdXJyZW50ACgTX19zdGFydF9lbV9saWJfZGVwcwMGEl9fc3RvcF9lbV9saWJfZGVwcwMHDV9fc3RhcnRf","ZW1fanMDCAxfX3N0b3BfZW1fanMDCQxkeW5DYWxsX2ppamkALwmJgICAAAEAQQELAxYYGgqtkYGAACwEABA","pC81IAvcCf6EFfiMAIQNBgAEhBCADIARrIQUgBSAANgJ8IAUgATYCeCAFIAI2AnQgBSgCfCEGIAUoAnghBy","AFIAc2AnAgBSgCdCEIIAghCSAJrCH6AiAGKQMIIfsCIPsCIPoCfCH8AiAGIPwCNwMIIAYpAwAh/QJCfyH+A","iD9AiD+AoUh/wIgBSD/AjcDaEIAIYADIAUggAM3A2AgBSgCdCEKIAUoAnQhC0EgIQwgCyAMbyENIAogDWsh","DiAFIA42AlwgBSgCXCEPQcAAIRAgDyERIBAhEiARIBJPIRNBASEUIBMgFHEhFQJAIBVFDQAgBSgCcCEWIAU","gFjYCWEIAIYEDIAUggQM3A1BCACGCAyAFIIIDNwNIQgAhgwMgBSCDAzcDQEIAIYQDIAUghAM3AzggBSkDYC","GFAyAFKAJcIRcgFyEYIBitIYYDIIUDIIYDfCGHA0IgIYgDIIcDIIgDfSGJAyAFIIkDNwMwIAUoAlwhGSAFK","AJ0IRogGiAZayEbIAUgGzYCdCAFKQNoIYoDIAUgigM3A1ACQANAIAUpA2AhiwMgBSkDMCGMAyCLAyGNAyCM","AyGOAyCNAyCOA1QhHEEBIR0gHCAdcSEeIB5FDQEgBSgCWCEfIB8pAwAhjwMgBSkDUCGQAyCPAyCQA4UhkQM","gBSCRAzcDKCAFKAJYISAgICkDCCGSAyAFKQNIIZMDIJIDIJMDhSGUAyAFIJQDNwMgIAUoAlghISAhKQMQIZ","UDIAUpA0AhlgMglQMglgOFIZcDIAUglwM3AxggBSgCWCEiICIpAxghmAMgBSkDOCGZAyCYAyCZA4UhmgMgB","SCaAzcDECAFKQMoIZsDQv8BIZwDIJsDIJwDgyGdA0KADiGeAyCdAyCeA3whnwMgnwOnISNBgIDAAiEkQQMh","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"].join("");function _base64ToArrayBuffer(base64){for(var binary_string=window.atob(base64),len=binary_string.length,bytes=new Uint8Array(len),i=0;i0;)callbacks.shift()(Module)}function getValue(ptr,type="i8"){switch(type.endsWith("*")&&(type="*"),type){case"i1":return HEAP8[ptr>>0];case"i8":return HEAP8[ptr>>0];case"i16":return HEAP16[ptr>>1];case"i32":return HEAP32[ptr>>2];case"i64":return HEAP32[ptr>>2];case"float":return HEAPF32[ptr>>2];case"double":return HEAPF64[ptr>>3];case"*":return HEAPU32[ptr>>2];default:abort("invalid type for getValue: "+type)}return null}function ptrToString(ptr){return"0x"+ptr.toString(16).padStart(8,"0")}function setValue(ptr,value,type="i8"){switch(type.endsWith("*")&&(type="*"),type){case"i1":HEAP8[ptr>>0]=value;break;case"i8":HEAP8[ptr>>0]=value;break;case"i16":HEAP16[ptr>>1]=value;break;case"i32":HEAP32[ptr>>2]=value;break;case"i64":tempI64=[value>>>0,(tempDouble=value,+Math.abs(tempDouble)>=1?tempDouble>0?(Math.min(+Math.floor(tempDouble/4294967296),4294967295)|0)>>>0:~~+Math.ceil((tempDouble-+(~~tempDouble>>>0))/4294967296)>>>0:0)],HEAP32[ptr>>2]=tempI64[0],HEAP32[ptr+4>>2]=tempI64[1];break;case"float":HEAPF32[ptr>>2]=value;break;case"double":HEAPF64[ptr>>3]=value;break;case"*":HEAPU32[ptr>>2]=value;break;default:abort("invalid type for setValue: "+type)}}function warnOnce(text){warnOnce.shown||(warnOnce.shown={}),warnOnce.shown[text]||(warnOnce.shown[text]=1,ENVIRONMENT_IS_NODE&&(text="warning: "+text),err(text))}function _abort(){abort("native code called abort()")}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){try{return wasmMemory.grow(size-buffer2.byteLength+65535>>>16),updateGlobalBufferAndViews(wasmMemory.buffer),1}catch(e){err("emscripten_realloc_buffer: Attempted to grow heap from "+buffer2.byteLength+" bytes to "+size+" bytes, but got error: "+e)}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0,assert(requestedSize>oldSize);var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize)return err("Cannot enlarge memory, asked to go up to "+requestedSize+" bytes, but the limit is "+maxHeapSize+" bytes!"),!1;let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536)),replacement=emscripten_realloc_buffer(newSize);if(replacement)return!0}return err("Failed to grow the heap from "+oldSize+" bytes to "+newSize+" bytes, not enough memory!"),!1}var SYSCALLS={varargs:void 0,get:function(){assert(SYSCALLS.varargs!=null),SYSCALLS.varargs+=4;var ret=HEAP32[SYSCALLS.varargs-4>>2];return ret},getStr:function(ptr){var ret=UTF8ToString(ptr);return ret}};function _fd_close(fd){abort("fd_close called without SYSCALLS_REQUIRE_FILESYSTEM")}function convertI32PairToI53Checked(lo,hi){return assert(lo==lo>>>0||lo==(lo|0)),assert(hi===(hi|0)),hi+2097152>>>0<4194305-!!lo?(lo>>>0)+hi*4294967296:NaN}function _fd_seek(fd,offset_low,offset_high,whence,newOffset){return 70}var printCharBuffers=[null,[],[]];function printChar(stream,curr){var buffer3=printCharBuffers[stream];assert(buffer3),curr===0||curr===10?((stream===1?out:err)(UTF8ArrayToString(buffer3,0)),buffer3.length=0):buffer3.push(curr)}function flush_NO_FILESYSTEM(){_fflush(0),printCharBuffers[1].length&&printChar(1,10),printCharBuffers[2].length&&printChar(2,10)}function _fd_write(fd,iov,iovcnt,pnum){for(var num=0,i=0;i>2],len=HEAPU32[iov+4>>2];iov+=8;for(var j=0;j>2]=num,0}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1,u8array=new Array(len),numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);return dontAddNull&&(u8array.length=numBytesWritten),u8array}var ASSERTIONS=!0;function checkIncomingModuleAPI(){ignoredModuleProp("fetchSettings")}var asmLibraryArg={abort:_abort,array_bounds_check_error,emscripten_resize_heap:_emscripten_resize_heap,fd_close:_fd_close,fd_seek:_fd_seek,fd_write:_fd_write},asm=createWasm(),___wasm_call_ctors=Module.___wasm_call_ctors=createExportWrapper("__wasm_call_ctors"),_emscripten_bind_VoidPtr___destroy___0=Module._emscripten_bind_VoidPtr___destroy___0=createExportWrapper("emscripten_bind_VoidPtr___destroy___0"),_emscripten_bind_Crc64Hash_Crc64Hash_0=Module._emscripten_bind_Crc64Hash_Crc64Hash_0=createExportWrapper("emscripten_bind_Crc64Hash_Crc64Hash_0"),_emscripten_bind_Crc64Hash_OnAppend_2=Module._emscripten_bind_Crc64Hash_OnAppend_2=createExportWrapper("emscripten_bind_Crc64Hash_OnAppend_2"),_emscripten_bind_Crc64Hash_OnFinal_3=Module._emscripten_bind_Crc64Hash_OnFinal_3=createExportWrapper("emscripten_bind_Crc64Hash_OnFinal_3"),_emscripten_bind_Crc64Hash___destroy___0=Module._emscripten_bind_Crc64Hash___destroy___0=createExportWrapper("emscripten_bind_Crc64Hash___destroy___0"),___errno_location=Module.___errno_location=createExportWrapper("__errno_location"),_fflush=Module._fflush=createExportWrapper("fflush"),_malloc=Module._malloc=createExportWrapper("malloc"),_free=Module._free=createExportWrapper("free"),_emscripten_stack_init=Module._emscripten_stack_init=function(){return(_emscripten_stack_init=Module._emscripten_stack_init=Module.asm.emscripten_stack_init).apply(null,arguments)},_emscripten_stack_get_free=Module._emscripten_stack_get_free=function(){return(_emscripten_stack_get_free=Module._emscripten_stack_get_free=Module.asm.emscripten_stack_get_free).apply(null,arguments)},_emscripten_stack_get_base=Module._emscripten_stack_get_base=function(){return(_emscripten_stack_get_base=Module._emscripten_stack_get_base=Module.asm.emscripten_stack_get_base).apply(null,arguments)},_emscripten_stack_get_end=Module._emscripten_stack_get_end=function(){return(_emscripten_stack_get_end=Module._emscripten_stack_get_end=Module.asm.emscripten_stack_get_end).apply(null,arguments)},stackSave=Module.stackSave=createExportWrapper("stackSave"),stackRestore=Module.stackRestore=createExportWrapper("stackRestore"),stackAlloc=Module.stackAlloc=createExportWrapper("stackAlloc"),_emscripten_stack_get_current=Module._emscripten_stack_get_current=function(){return(_emscripten_stack_get_current=Module._emscripten_stack_get_current=Module.asm.emscripten_stack_get_current).apply(null,arguments)},dynCall_jiji=Module.dynCall_jiji=createExportWrapper("dynCall_jiji"),___start_em_js=Module.___start_em_js=5261488,___stop_em_js=Module.___stop_em_js=5261586,unexportedRuntimeSymbols=["run","UTF8ArrayToString","UTF8ToString","stringToUTF8Array","stringToUTF8","lengthBytesUTF8","addOnPreRun","addOnInit","addOnPreMain","addOnExit","addOnPostRun","addRunDependency","removeRunDependency","FS_createFolder","FS_createPath","FS_createDataFile","FS_createPreloadedFile","FS_createLazyFile","FS_createLink","FS_createDevice","FS_unlink","getLEB","getFunctionTables","alignFunctionTables","registerFunctions","prettyPrint","getCompilerSetting","out","err","callMain","abort","keepRuntimeAlive","wasmMemory","stackAlloc","stackSave","stackRestore","getTempRet0","setTempRet0","writeStackCookie","checkStackCookie","ptrToString","zeroMemory","stringToNewUTF8","exitJS","getHeapMax","emscripten_realloc_buffer","ENV","ERRNO_CODES","ERRNO_MESSAGES","setErrNo","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","DNS","getHostByName","Protocols","Sockets","getRandomDevice","warnOnce","traverseStack","UNWIND_CACHE","convertPCtoSourceLocation","readEmAsmArgsArray","readEmAsmArgs","runEmAsmFunction","runMainThreadEmAsm","jstoi_q","jstoi_s","getExecutableName","listenOnce","autoResumeAudioContext","dynCallLegacy","getDynCaller","dynCall","handleException","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","safeSetTimeout","asmjsMangle","asyncLoad","alignMemory","mmapAlloc","writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertI32PairToI53Checked","convertU32PairToI53","getCFunc","ccall","cwrap","uleb128Encode","sigToWasmTypes","generateFuncType","convertJsFunctionToWasm","freeTableIndexes","functionsInTableMap","getEmptyTableSlot","updateTableMap","addFunction","removeFunction","reallyNegative","unSign","strLen","reSign","formatString","setValue","getValue","PATH","PATH_FS","intArrayFromString","intArrayToString","AsciiToString","stringToAscii","UTF16Decoder","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","allocateUTF8","allocateUTF8OnStack","writeStringToMemory","writeArrayToMemory","writeAsciiToMemory","SYSCALLS","getSocketFromFD","getSocketAddress","JSEvents","registerKeyEventCallback","specialHTMLTargets","maybeCStringToJsString","findEventTarget","findCanvasEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","currentFullscreenStrategy","restoreOldWindowedStyle","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","battery","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","demangle","demangleAll","jsStackTrace","stackTrace","ExitStatus","getEnvStrings","checkWasiClock","flush_NO_FILESYSTEM","dlopenMissingError","createDyncallWrapper","setImmediateWrapped","clearImmediateWrapped","polyfillSetImmediate","uncaughtExceptionCount","exceptionLast","exceptionCaught","ExceptionInfo","exception_addRef","exception_decRef","Browser","setMainLoop","wget","FS","MEMFS","TTY","PIPEFS","SOCKFS","_setNetworkCallback","tempFixedLengthArray","miniTempWebGLFloatBuffers","heapObjectForWebGLType","heapAccessShiftForWebGLHeap","GL","emscriptenWebGLGet","computeUnpackAlignedImageSize","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","writeGLArray","AL","SDL_unicode","SDL_ttfContext","SDL_audio","SDL","SDL_gfx","GLUT","EGL","GLFW_Window","GLFW","GLEW","IDBStore","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate"];unexportedRuntimeSymbols.forEach(unexportedRuntimeSymbol);var missingLibrarySymbols=["zeroMemory","stringToNewUTF8","exitJS","setErrNo","inetPton4","inetNtop4","inetPton6","inetNtop6","readSockaddr","writeSockaddr","getHostByName","getRandomDevice","traverseStack","convertPCtoSourceLocation","readEmAsmArgs","runEmAsmFunction","runMainThreadEmAsm","jstoi_q","jstoi_s","getExecutableName","listenOnce","autoResumeAudioContext","dynCallLegacy","getDynCaller","dynCall","handleException","runtimeKeepalivePush","runtimeKeepalivePop","callUserCallback","maybeExit","safeSetTimeout","asmjsMangle","asyncLoad","alignMemory","mmapAlloc","writeI53ToI64","writeI53ToI64Clamped","writeI53ToI64Signaling","writeI53ToU64Clamped","writeI53ToU64Signaling","readI53FromI64","readI53FromU64","convertI32PairToI53","convertU32PairToI53","getCFunc","ccall","cwrap","uleb128Encode","sigToWasmTypes","generateFuncType","convertJsFunctionToWasm","getEmptyTableSlot","updateTableMap","addFunction","removeFunction","reallyNegative","unSign","strLen","reSign","formatString","intArrayToString","AsciiToString","stringToAscii","UTF16ToString","stringToUTF16","lengthBytesUTF16","UTF32ToString","stringToUTF32","lengthBytesUTF32","allocateUTF8","allocateUTF8OnStack","writeStringToMemory","writeArrayToMemory","writeAsciiToMemory","getSocketFromFD","getSocketAddress","registerKeyEventCallback","maybeCStringToJsString","findEventTarget","findCanvasEventTarget","getBoundingClientRect","fillMouseEventData","registerMouseEventCallback","registerWheelEventCallback","registerUiEventCallback","registerFocusEventCallback","fillDeviceOrientationEventData","registerDeviceOrientationEventCallback","fillDeviceMotionEventData","registerDeviceMotionEventCallback","screenOrientation","fillOrientationChangeEventData","registerOrientationChangeEventCallback","fillFullscreenChangeEventData","registerFullscreenChangeEventCallback","JSEvents_requestFullscreen","JSEvents_resizeCanvasForFullscreen","registerRestoreOldStyle","hideEverythingExceptGivenElement","restoreHiddenElements","setLetterbox","softFullscreenResizeWebGLRenderTarget","doRequestFullscreen","fillPointerlockChangeEventData","registerPointerlockChangeEventCallback","registerPointerlockErrorEventCallback","requestPointerLock","fillVisibilityChangeEventData","registerVisibilityChangeEventCallback","registerTouchEventCallback","fillGamepadEventData","registerGamepadEventCallback","registerBeforeUnloadEventCallback","fillBatteryEventData","battery","registerBatteryEventCallback","setCanvasElementSize","getCanvasElementSize","demangle","demangleAll","jsStackTrace","stackTrace","getEnvStrings","checkWasiClock","createDyncallWrapper","setImmediateWrapped","clearImmediateWrapped","polyfillSetImmediate","ExceptionInfo","exception_addRef","exception_decRef","setMainLoop","_setNetworkCallback","heapObjectForWebGLType","heapAccessShiftForWebGLHeap","emscriptenWebGLGet","computeUnpackAlignedImageSize","emscriptenWebGLGetTexPixelData","emscriptenWebGLGetUniform","webglGetUniformLocation","webglPrepareUniformLocationsBeforeFirstUse","webglGetLeftBracePos","emscriptenWebGLGetVertexAttrib","writeGLArray","SDL_unicode","SDL_ttfContext","SDL_audio","GLFW_Window","runAndAbortIfError","ALLOC_NORMAL","ALLOC_STACK","allocate"];missingLibrarySymbols.forEach(missingLibrarySymbol);var calledRun;dependenciesFulfilled=function runCaller(){calledRun||run(),calledRun||(dependenciesFulfilled=runCaller)};function stackCheckInit(){_emscripten_stack_init(),writeStackCookie()}function run(args){if(args=args||arguments_,runDependencies>0||(stackCheckInit(),preRun(),runDependencies>0))return;function doRun(){calledRun||(calledRun=!0,Module.calledRun=!0,!ABORT&&(initRuntime(),readyPromiseResolve(Module),Module.onRuntimeInitialized&&Module.onRuntimeInitialized(),assert(!Module._main,'compiled without a main, but one is present. if you added it from JS, use Module["onRuntimeInitialized"]'),postRun()))}Module.setStatus?(Module.setStatus("Running..."),setTimeout(function(){setTimeout(function(){Module.setStatus("")},1),doRun()},1)):doRun(),checkStackCookie()}function checkUnflushedContent(){var oldOut=out,oldErr=err,has=!1;out=err=x=>{has=!0};try{flush_NO_FILESYSTEM()}catch{}out=oldOut,err=oldErr,has&&(warnOnce("stdio streams had content in them that was not flushed. you should set EXIT_RUNTIME to 1 (see the FAQ), or make sure to emit a newline when you printf etc."),warnOnce("(this may also be due to not including full filesystem support - try building with -sFORCE_FILESYSTEM)"))}if(Module.preInit)for(typeof Module.preInit=="function"&&(Module.preInit=[Module.preInit]);Module.preInit.length>0;)Module.preInit.pop()();run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype),WrapperObject.prototype.constructor=WrapperObject,WrapperObject.prototype.__class__=WrapperObject,WrapperObject.__cache__={},Module.WrapperObject=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module.getCache=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__),ret=cache[ptr];return ret||(ret=Object.create((__class__||WrapperObject).prototype),ret.ptr=ptr,cache[ptr]=ret)}Module.wrapPointer=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module.castObject=castObject,Module.NULL=wrapPointer(0);function destroy2(obj){if(!obj.__destroy__)throw"Error: Cannot destroy object. (Did you create it yourself?)";obj.__destroy__(),delete getCache(obj.__class__)[obj.ptr]}Module.destroy=destroy2;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module.compare=compare;function getPointer(obj){return obj.ptr}Module.getPointer=getPointer;function getClass(obj){return obj.__class__}Module.getClass=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size?(assert(len>0),ensureCache.needed+=len,ret=Module._malloc(len),ensureCache.temps.push(ret)):(ret=ensureCache.buffer+ensureCache.pos,ensureCache.pos+=len),ret},copy:function(array,view,offset){offset>>>=0;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offset>>>=1;break;case 4:offset>>>=2;break;case 8:offset>>>=3;break}for(var i=0;i{this.nativeInstance=instance})),this.initPromise}append(body2,length){let ptr=_StorageCRC64Calculator.nativeInstance._malloc(length);_StorageCRC64Calculator.nativeInstance.HEAPU8.set(body2,ptr),this.nativeCrc64Hash.OnAppend(ptr,length),_StorageCRC64Calculator.nativeInstance._free(ptr)}final(body2,length){let ptr=_StorageCRC64Calculator.nativeInstance._malloc(length);_StorageCRC64Calculator.nativeInstance.HEAPU8.set(body2,ptr);let result=_StorageCRC64Calculator.nativeInstance._malloc(8);this.nativeCrc64Hash.OnFinal(ptr,length,result),_StorageCRC64Calculator.nativeInstance._free(ptr);let resultArray=new Uint8Array(8);return resultArray.set(_StorageCRC64Calculator.nativeInstance.HEAPU8.subarray(result,result+8)),_StorageCRC64Calculator.nativeInstance._free(result),resultArray}};function signalStreamEnd(pushData){pushData(null)}var MESSAGE_VERSION=1,MESSAGE_HEADER_LENGTH=13,SEGMENT_HEADER_LENGTH=10,FOOTER_LENGTH=8,MAX_SEGMENT_CONTENT_LENGTH=4*1024*1024,SMRegion;(function(SMRegion3){SMRegion3[SMRegion3.StreamHeader=0]="StreamHeader",SMRegion3[SMRegion3.StreamFooter=1]="StreamFooter",SMRegion3[SMRegion3.SegmentHeader=2]="SegmentHeader",SMRegion3[SMRegion3.SegmentFooter=3]="SegmentFooter",SMRegion3[SMRegion3.SegmentContent=4]="SegmentContent",SMRegion3[SMRegion3.Completed=5]="Completed"})(SMRegion||(SMRegion={}));var StructuredMessageEncoding=class{pushData;contentLength;messageLength;constructor(pushData,contentLength2){this.pushData=pushData,this.contentLength=contentLength2,this.contentOffset=0,this.currentDataOffset=0,this.segmentsCount=Math.ceil(this.contentLength/MAX_SEGMENT_CONTENT_LENGTH),this.messageLength=this.contentLength+MESSAGE_HEADER_LENGTH+(SEGMENT_HEADER_LENGTH+FOOTER_LENGTH)*this.segmentsCount+FOOTER_LENGTH,this.messageHeaderBuffer=new Uint8Array(MESSAGE_HEADER_LENGTH),this.segmentNumber=0,this.segmentContentLength=0,this.segmentContentOffset=0,this.state=SMRegion.StreamHeader,this.segmentCrc64=new StorageCRC64Calculator,this.messageCrc64=new StorageCRC64Calculator}currentDataOffset;contentOffset;segmentsCount;messageHeaderBuffer;segmentNumber;segmentContentLength;segmentContentOffset;segmentCrc64;messageCrc64;state;sourceDataHandler=data=>{for(this.currentDataOffset=0,this.state===SMRegion.StreamHeader&&this.handlingMessageHeader();this.segmentNumber{},s.push(source),s.push(null);let stringContentLength=Buffer.byteLength(source),encodingMessage=await new StructuredMessageEncodingStream(s,stringContentLength,{});return{body:encodingMessage,encodedContentLength:encodingMessage.messageLength()}}if(source instanceof ArrayBuffer){let stream=Readable4.from(Buffer.from(source)),encodingMessage=await new StructuredMessageEncodingStream(stream,contentLength2,{});return{body:encodingMessage,encodedContentLength:encodingMessage.messageLength()}}if(source instanceof Buffer){let stream=Readable4.from(source),encodingMessage=await new StructuredMessageEncodingStream(stream,contentLength2,{});return{body:encodingMessage,encodedContentLength:encodingMessage.messageLength()}}if(ArrayBuffer.isView(source)){let stream=Readable4.from(Buffer.from(source.buffer,source.byteOffset,source.byteLength)),encodingMessage=await new StructuredMessageEncodingStream(stream,contentLength2,{});return{body:encodingMessage,encodedContentLength:encodingMessage.messageLength()}}throw new Error("The specified request body type is not supported for CRC64 checksum")}async function pump(reader,controller,encodingStream){let{done,value}=await reader.read();if(done){controller.close();return}encodingStream.sourceDataHandler(Buffer.from(value))}async function BrowserStream(source,contentLength2){let reader=(source instanceof Blob?source.stream():source).getReader(),encodingStream,stream=new ReadableStream({start(controller){encodingStream=new StructuredMessageEncoding(data=>{controller.enqueue(data)},contentLength2)},pull(controller){pump(reader,controller,encodingStream).then(()=>{}).catch(function(error){controller.error(error)})}});return{content:await new Response(stream).blob(),encodedContentLength:encodingStream.messageLength}}var StructuredMessageEncodingStream=class extends Readable4{source;encodingMethods;constructor(source,contentLength2,options){super({highWaterMark:options.highWaterMark}),this.source=source,this.encodingMethods=new StructuredMessageEncoding(dataToHandle=>{this.push(dataToHandle)||source.pause()},contentLength2),this.setSourceEventHandlers()}messageLength(){return this.encodingMethods.messageLength}setSourceEventHandlers(){this.source.on("data",this.sourceDataHandler),this.source.on("end",this.sourceErrorOrEndHandler),this.source.on("error",this.sourceErrorOrEndHandler),this.source.on("aborted",this.sourceAbortedHandler)}removeSourceEventHandlers(){this.source.removeListener("data",this.sourceDataHandler),this.source.removeListener("end",this.sourceErrorOrEndHandler),this.source.removeListener("error",this.sourceErrorOrEndHandler),this.source.removeListener("aborted",this.sourceAbortedHandler)}sourceDataHandler=data=>{this.encodingMethods.sourceDataHandler(data)};sourceAbortedHandler=()=>{let abortError=new AbortError2("The operation was aborted.");this.destroy(abortError)};sourceErrorOrEndHandler=err=>{if(err&&err.name==="AbortError"){this.destroy(err);return}this.removeSourceEventHandlers()};_read(){this.source.resume()}_destroy(error,callback){this.removeSourceEventHandlers(),this.source.destroy(),callback(error===null?void 0:error)}};import{Readable as Readable5}from"node:stream";var MESSAGE_VERSION2=1,MESSAGE_HEADER_LENGTH2=13,SEGMENT_HEADER_LENGTH2=10,FOOTER_LENGTH2=8,SMRegion2;(function(SMRegion3){SMRegion3[SMRegion3.StreamHeader=0]="StreamHeader",SMRegion3[SMRegion3.StreamFooter=1]="StreamFooter",SMRegion3[SMRegion3.SegmentHeader=2]="SegmentHeader",SMRegion3[SMRegion3.SegmentFooter=3]="SegmentFooter",SMRegion3[SMRegion3.SegmentContent=4]="SegmentContent"})(SMRegion2||(SMRegion2={}));var StructuredMessageDecoding=class{pushData;segmentsCount;currentOffset;currentDataOffset;messageHeaderBuffer;messageHeaderOffset;segmentNumber;segmentHeaderOffset;segmentHeaderBuffer;segmentContentOffset;segmentContentLength;segmentFooterOffset;segmentFooterBuffer;messageFooterOffset;messageFooterBuffer;segmentCrc64;messageCrc64;state;constructor(pushData){this.pushData=pushData,this.currentOffset=0,this.segmentsCount=0,this.messageHeaderOffset=0,this.messageHeaderBuffer=new Uint8Array(MESSAGE_HEADER_LENGTH2),this.currentDataOffset=0,this.segmentNumber=0,this.segmentHeaderOffset=0,this.segmentHeaderBuffer=new Uint8Array(SEGMENT_HEADER_LENGTH2),this.segmentContentOffset=0,this.segmentContentLength=0,this.state=SMRegion2.StreamHeader,this.segmentFooterOffset=0,this.segmentFooterBuffer=new Uint8Array(FOOTER_LENGTH2),this.messageFooterOffset=0,this.messageFooterBuffer=new Uint8Array(FOOTER_LENGTH2),this.segmentCrc64=new StorageCRC64Calculator,this.messageCrc64=new StorageCRC64Calculator}sourceDataHandler=data=>{for(this.currentDataOffset=0,this.state===SMRegion2.StreamHeader&&this.parseMessageHeader(data);this.segmentNumber{this.push(dataToHandle)||source.pause()}),this.setSourceEventHandlers()}_read(){this.source.resume()}setSourceEventHandlers(){this.source.on("data",this.sourceDataHandler),this.source.on("end",this.sourceErrorOrEndHandler),this.source.on("error",this.sourceErrorOrEndHandler),this.source.on("aborted",this.sourceAbortedHandler)}removeSourceEventHandlers(){this.source.removeListener("data",this.sourceDataHandler),this.source.removeListener("end",this.sourceErrorOrEndHandler),this.source.removeListener("error",this.sourceErrorOrEndHandler),this.source.removeListener("aborted",this.sourceAbortedHandler)}sourceDataHandler=data=>{try{this.decodingMethods.sourceDataHandler(data)}catch(err){this.destroy(err)}};sourceAbortedHandler=()=>{let abortError=new AbortError2("The operation was aborted.");this.destroy(abortError)};sourceErrorOrEndHandler=err=>{if(err){this.destroy(err);return}this.removeSourceEventHandlers()};_destroy(error,callback){this.removeSourceEventHandlers(),this.source.destroy(),callback(error===null?void 0:error)}};var _defaultHttpClient;function getCachedDefaultHttpClient2(){return _defaultHttpClient||(_defaultHttpClient=createDefaultHttpClient2()),_defaultHttpClient}var BaseRequestPolicy=class{_nextPolicy;_options;constructor(_nextPolicy,_options){this._nextPolicy=_nextPolicy,this._options=_options}shouldLog(logLevel){return this._options.shouldLog(logLevel)}log(logLevel,message){this._options.log(logLevel,message)}};var StorageBrowserPolicy=class extends BaseRequestPolicy{constructor(nextPolicy,options){super(nextPolicy,options)}async sendRequest(request){return this._nextPolicy.sendRequest(request)}};var StorageBrowserPolicyFactory=class{create(nextPolicy,options){return new StorageBrowserPolicy(nextPolicy,options)}};var CredentialPolicy=class extends BaseRequestPolicy{sendRequest(request){return this._nextPolicy.sendRequest(this.signRequest(request))}signRequest(request){return request}};var AnonymousCredentialPolicy=class extends CredentialPolicy{constructor(nextPolicy,options){super(nextPolicy,options)}};var Credential=class{create(_nextPolicy,_options){throw new Error("Method should be implemented in children classes.")}};var AnonymousCredential=class extends Credential{create(nextPolicy,options){return new AnonymousCredentialPolicy(nextPolicy,options)}};import{createHmac as createHmac2}from"node:crypto";var URLConstants={Parameters:{FORCE_BROWSER_NO_CACHE:"_",SIGNATURE:"sig",SNAPSHOT:"snapshot",VERSIONID:"versionid",TIMEOUT:"timeout"}},HeaderConstants={AUTHORIZATION:"Authorization",AUTHORIZATION_SCHEME:"Bearer",CONTENT_ENCODING:"Content-Encoding",CONTENT_ID:"Content-ID",CONTENT_LANGUAGE:"Content-Language",CONTENT_LENGTH:"Content-Length",CONTENT_MD5:"Content-Md5",CONTENT_TRANSFER_ENCODING:"Content-Transfer-Encoding",CONTENT_TYPE:"Content-Type",COOKIE:"Cookie",DATE:"date",IF_MATCH:"if-match",IF_MODIFIED_SINCE:"if-modified-since",IF_NONE_MATCH:"if-none-match",IF_UNMODIFIED_SINCE:"if-unmodified-since",PREFIX_FOR_STORAGE:"x-ms-",RANGE:"Range",USER_AGENT:"User-Agent",X_MS_CLIENT_REQUEST_ID:"x-ms-client-request-id",X_MS_COPY_SOURCE:"x-ms-copy-source",X_MS_DATE:"x-ms-date",X_MS_ERROR_CODE:"x-ms-error-code",X_MS_VERSION:"x-ms-version",X_MS_CopySourceErrorCode:"x-ms-copy-source-error-code"};function setURLParameter(url2,name,value){let urlParsed=new URL(url2),encodedName=encodeURIComponent(name),encodedValue=value?encodeURIComponent(value):void 0,searchString=urlParsed.search===""?"?":urlParsed.search,searchPieces=[];for(let pair of searchString.slice(1).split("&"))if(pair){let[key]=pair.split("=",2);key!==encodedName&&searchPieces.push(pair)}return encodedValue&&searchPieces.push(`${encodedName}=${encodedValue}`),urlParsed.search=searchPieces.length?`?${searchPieces.join("&")}`:"",urlParsed.toString()}function setURLHost(url2,host){let urlParsed=new URL(url2);return urlParsed.hostname=host,urlParsed.toString()}function getURLPath(url2){try{return new URL(url2).pathname}catch{return}}function getURLQueries(url2){let queryString=new URL(url2).search;if(!queryString)return{};queryString=queryString.trim(),queryString=queryString.startsWith("?")?queryString.substring(1):queryString;let querySubStrings=queryString.split("&");querySubStrings=querySubStrings.filter(value=>{let indexOfEqual=value.indexOf("="),lastIndexOfEqual=value.lastIndexOf("=");return indexOfEqual>0&&indexOfEqual===lastIndexOfEqual&&lastIndexOfEqual{let timeout,abortHandler=()=>{timeout!==void 0&&clearTimeout(timeout),reject(abortError)};timeout=setTimeout(()=>{aborter!==void 0&&aborter.removeEventListener("abort",abortHandler),resolve()},timeInMs),aborter!==void 0&&aborter.addEventListener("abort",abortHandler)})}var table_lv0=new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1820,0,1823,1825,1827,1829,0,0,0,1837,2051,0,0,1843,0,3331,3354,3356,3358,3360,3362,3364,3366,3368,3370,0,0,0,0,0,0,0,3586,3593,3594,3610,3617,3619,3621,3628,3634,3637,3638,3656,3665,3696,3708,3710,3721,3722,3729,3737,3743,3746,3748,3750,3751,3753,0,0,0,1859,1860,1864,3586,3593,3594,3610,3617,3619,3621,3628,3634,3637,3638,3656,3665,3696,3708,3710,3721,3722,3729,3737,3743,3746,3748,3750,3751,3753,0,1868,0,1872,0]),table_lv2=new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,18,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),table_lv4=new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,32786,0,0,0,0,0,33298,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]);function compareHeader(lhs,rhs){return isLessThan(lhs,rhs)?-1:1}function isLessThan(lhs,rhs){let tables=[table_lv0,table_lv2,table_lv4],curr_level=0,i=0,j=0;for(;curr_levelj;let weight1=i0&&request.headers.set(HeaderConstants.CONTENT_LENGTH,Buffer.byteLength(request.body));let stringToSign=[request.method.toUpperCase(),this.getHeaderValueToSign(request,HeaderConstants.CONTENT_LANGUAGE),this.getHeaderValueToSign(request,HeaderConstants.CONTENT_ENCODING),this.getHeaderValueToSign(request,HeaderConstants.CONTENT_LENGTH),this.getHeaderValueToSign(request,HeaderConstants.CONTENT_MD5),this.getHeaderValueToSign(request,HeaderConstants.CONTENT_TYPE),this.getHeaderValueToSign(request,HeaderConstants.DATE),this.getHeaderValueToSign(request,HeaderConstants.IF_MODIFIED_SINCE),this.getHeaderValueToSign(request,HeaderConstants.IF_MATCH),this.getHeaderValueToSign(request,HeaderConstants.IF_NONE_MATCH),this.getHeaderValueToSign(request,HeaderConstants.IF_UNMODIFIED_SINCE),this.getHeaderValueToSign(request,HeaderConstants.RANGE)].join(` +`,"utf-8")],contentLength2=getTotalLength(sources);contentLength2&&request.headers.set("Content-Length",contentLength2),request.body=await concat(sources)}var multipartPolicyName="multipartPolicy",maxBoundaryLength=70,validBoundaryCharacters=new Set("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789'()+,-./:=?");function assertValidBoundary(boundary){if(boundary.length>maxBoundaryLength)throw new Error(`Multipart boundary "${boundary}" exceeds maximum length of 70 characters`);if(Array.from(boundary).some(x=>!validBoundaryCharacters.has(x)))throw new Error(`Multipart boundary "${boundary}" contains invalid characters`)}function multipartPolicy(){return{name:multipartPolicyName,async sendRequest(request,next){if(!request.multipartBody)return next(request);if(request.body)throw new Error("multipartBody and regular body cannot be set at the same time");let boundary=request.multipartBody.boundary,contentTypeHeader=request.headers.get("Content-Type")??"multipart/mixed",parsedHeader=contentTypeHeader.match(/^(multipart\/[^ ;]+)(?:; *boundary=(.+))?$/);if(!parsedHeader)throw new Error(`Got multipart request body, but content-type header was not multipart: ${contentTypeHeader}`);let[,contentType2,parsedBoundary]=parsedHeader;if(parsedBoundary&&boundary&&parsedBoundary!==boundary)throw new Error(`Multipart boundary was specified as ${parsedBoundary} in the header, but got ${boundary} in the request body`);return boundary??=parsedBoundary,boundary?assertValidBoundary(boundary):boundary=generateBoundary(),request.headers.set("Content-Type",`${contentType2}; boundary=${boundary}`),await buildRequestBody(request,request.multipartBody.parts,boundary),request.multipartBody=void 0,next(request)}}}function createEmptyPipeline2(){return createEmptyPipeline()}var context2=createLoggerContext({logLevelEnvVarName:"AZURE_LOG_LEVEL",namespace:"azure"}),AzureLogger=context2.logger;function createClientLogger2(namespace){return context2.createClientLogger(namespace)}var logger2=createClientLogger2("core-rest-pipeline");function logPolicy2(options={}){return logPolicy({logger:logger2.info,...options})}var redirectPolicyName2=redirectPolicyName;function redirectPolicy2(options={}){return redirectPolicy(options)}import os2 from"node:os";import process5 from"node:process";function getHeaderName2(){return"User-Agent"}async function setPlatformSpecificData2(map){if(process5&&process5.versions){let osInfo=`${os2.type()} ${os2.release()}; ${os2.arch()}`;process5.versions.bun?map.set("Bun",`${process5.versions.bun} (${osInfo})`):process5.versions.deno?map.set("Deno",`${process5.versions.deno} (${osInfo})`):process5.versions.node&&map.set("Node",`${process5.versions.node} (${osInfo})`)}}var SDK_VERSION2="1.25.0";function getUserAgentString(telemetryInfo){let parts=[];for(let[key,value]of telemetryInfo){let token=value?`${key}/${value}`:key;parts.push(token)}return parts.join(" ")}function getUserAgentHeaderName2(){return getHeaderName2()}async function getUserAgentValue2(prefix2){let runtimeInfo=new Map;runtimeInfo.set("core-rest-pipeline",SDK_VERSION2),await setPlatformSpecificData2(runtimeInfo);let defaultAgent=getUserAgentString(runtimeInfo);return prefix2?`${prefix2} ${defaultAgent}`:defaultAgent}var UserAgentHeaderName2=getUserAgentHeaderName2(),userAgentPolicyName2="userAgentPolicy";function userAgentPolicy2(options={}){let userAgentValue=getUserAgentValue2(options.userAgentPrefix);return{name:userAgentPolicyName2,async sendRequest(request,next){return request.headers.has(UserAgentHeaderName2)||request.headers.set(UserAgentHeaderName2,await userAgentValue),next(request)}}}var rawContent=Symbol("rawContent");function hasRawContent(x){return typeof x[rawContent]=="function"}function getRawContent(blob){return hasRawContent(blob)?blob[rawContent]():blob}var multipartPolicyName2=multipartPolicyName;function multipartPolicy2(){let tspPolicy=multipartPolicy();return{name:multipartPolicyName2,sendRequest:async(request,next)=>{if(request.multipartBody)for(let part of request.multipartBody.parts)hasRawContent(part.body)&&(part.body=getRawContent(part.body));return tspPolicy.sendRequest(request,next)}}}var decompressResponsePolicyName2=decompressResponsePolicyName;function decompressResponsePolicy2(){return decompressResponsePolicy()}function defaultRetryPolicy2(options={}){return defaultRetryPolicy(options)}function formDataPolicy2(){return formDataPolicy()}import{createHash,createHmac}from"node:crypto";var AbortError2=class extends Error{constructor(message){super(message),this.name="AbortError"}};function createAbortablePromise(buildPromise,options){let{cleanupBeforeAbort,abortSignal,abortErrorMsg}=options??{};return new Promise((resolve,reject)=>{function rejectOnAbort(){reject(new AbortError2(abortErrorMsg??"The operation was aborted."))}function removeListeners(){abortSignal?.removeEventListener("abort",onAbort)}function onAbort(){cleanupBeforeAbort?.(),removeListeners(),rejectOnAbort()}if(abortSignal?.aborted)return rejectOnAbort();try{buildPromise(x=>{removeListeners(),resolve(x)},x=>{removeListeners(),reject(x)})}catch(err){reject(err)}abortSignal?.addEventListener("abort",onAbort)})}var StandardAbortMessage2="The delay was aborted.";function delay2(timeInMs,options){let token,{abortSignal,abortErrorMsg}=options??{};return createAbortablePromise(resolve=>{token=setTimeout(resolve,timeInMs)},{cleanupBeforeAbort:()=>clearTimeout(token),abortSignal,abortErrorMsg:abortErrorMsg??StandardAbortMessage2})}function getErrorMessage(e){if(isError(e))return e.message;{let stringified;try{typeof e=="object"&&e?stringified=JSON.stringify(e):stringified=String(e)}catch{stringified="[unable to stringify input]"}return`Unknown error ${stringified}`}}function isError2(e){return isError(e)}function randomUUID2(){return randomUUID()}var isNodeLike2=isNodeLike;function uint8ArrayToString2(bytes,format){return uint8ArrayToString(bytes,format)}function stringToUint8Array2(value,format){return stringToUint8Array(value,format)}function getDefaultProxySettings2(proxyUrl){return getDefaultProxySettings(proxyUrl)}function proxyPolicy2(proxySettings,options){return proxyPolicy(proxySettings,options)}var setClientRequestIdPolicyName="setClientRequestIdPolicy";function setClientRequestIdPolicy(requestIdHeaderName="x-ms-client-request-id"){return{name:setClientRequestIdPolicyName,async sendRequest(request,next){return request.headers.has(requestIdHeaderName)||request.headers.set(requestIdHeaderName,request.requestId),next(request)}}}function agentPolicy2(agent){return agentPolicy(agent)}function tlsPolicy2(tlsSettings){return tlsPolicy(tlsSettings)}var knownContextKeys={span:Symbol.for("@azure/core-tracing span"),namespace:Symbol.for("@azure/core-tracing namespace")};function createTracingContext(options={}){let context3=new TracingContextImpl(options.parentContext);return options.span&&(context3=context3.setValue(knownContextKeys.span,options.span)),options.namespace&&(context3=context3.setValue(knownContextKeys.namespace,options.namespace)),context3}var TracingContextImpl=class _TracingContextImpl{_contextMap;constructor(initialContext){this._contextMap=initialContext instanceof _TracingContextImpl?new Map(initialContext._contextMap):new Map}setValue(key,value){let newContext=new _TracingContextImpl(this);return newContext._contextMap.set(key,value),newContext}getValue(key){return this._contextMap.get(key)}deleteValue(key){let newContext=new _TracingContextImpl(this);return newContext._contextMap.delete(key),newContext}};var import_state_cjs=__toESM(require_state_cjs(),1),state=import_state_cjs.state;function createDefaultTracingSpan(){return{end:()=>{},isRecording:()=>!1,recordException:()=>{},setAttribute:()=>{},setStatus:()=>{},addEvent:()=>{}}}function createDefaultInstrumenter(){return{createRequestHeaders:()=>({}),parseTraceparentHeader:()=>{},startSpan:(_name,spanOptions)=>({span:createDefaultTracingSpan(),tracingContext:createTracingContext({parentContext:spanOptions.tracingContext})}),withContext(_context,callback,...callbackArgs){return callback(...callbackArgs)}}}function getInstrumenter(){return state.instrumenterImplementation||(state.instrumenterImplementation=createDefaultInstrumenter()),state.instrumenterImplementation}function createTracingClient(options){let{namespace,packageName,packageVersion}=options;function startSpan(name,operationOptions,spanOptions){let startSpanResult=getInstrumenter().startSpan(name,{...spanOptions,packageName,packageVersion,tracingContext:operationOptions?.tracingOptions?.tracingContext}),tracingContext=startSpanResult.tracingContext,span=startSpanResult.span;tracingContext.getValue(knownContextKeys.namespace)||(tracingContext=tracingContext.setValue(knownContextKeys.namespace,namespace)),span.setAttribute("az.namespace",tracingContext.getValue(knownContextKeys.namespace));let updatedOptions=Object.assign({},operationOptions,{tracingOptions:{...operationOptions?.tracingOptions,tracingContext}});return{span,updatedOptions}}async function withSpan(name,operationOptions,callback,spanOptions){let{span,updatedOptions}=startSpan(name,operationOptions,spanOptions);try{let result=await withContext(updatedOptions.tracingOptions.tracingContext,()=>callback(updatedOptions,span));return span.setStatus({status:"success"}),result}catch(err){throw span.setStatus({status:"error",error:err}),err}finally{span.end()}}function withContext(context3,callback,...callbackArgs){return getInstrumenter().withContext(context3,callback,...callbackArgs)}function parseTraceparentHeader(traceparentHeader){return getInstrumenter().parseTraceparentHeader(traceparentHeader)}function createRequestHeaders(tracingContext){return getInstrumenter().createRequestHeaders(tracingContext)}return{startSpan,withSpan,withContext,parseTraceparentHeader,createRequestHeaders}}var RestError2=RestError;function isRestError2(e){return isRestError(e)}var tracingPolicyName="tracingPolicy";function tracingPolicy(options={}){let userAgentPromise=getUserAgentValue2(options.userAgentPrefix),sanitizer=new Sanitizer({additionalAllowedQueryParameters:options.additionalAllowedQueryParameters}),tracingClient2=tryCreateTracingClient();return{name:tracingPolicyName,async sendRequest(request,next){if(!tracingClient2)return next(request);let userAgent=await userAgentPromise,spanAttributes={"http.url":sanitizer.sanitizeUrl(request.url),"http.method":request.method,"http.user_agent":userAgent,requestId:request.requestId};userAgent&&(spanAttributes["http.user_agent"]=userAgent);let{span,tracingContext}=tryCreateSpan(tracingClient2,request,spanAttributes)??{};if(!span||!tracingContext)return next(request);try{let response=await tracingClient2.withContext(tracingContext,next,request);return tryProcessResponse(span,response),response}catch(err){throw tryProcessError(span,err),err}}}}function tryCreateTracingClient(){try{return createTracingClient({namespace:"",packageName:"@azure/core-rest-pipeline",packageVersion:SDK_VERSION2})}catch(e){logger2.warning(`Error when creating the TracingClient: ${getErrorMessage(e)}`);return}}function tryCreateSpan(tracingClient2,request,spanAttributes){try{let{span,updatedOptions}=tracingClient2.startSpan(`HTTP ${request.method}`,{tracingOptions:request.tracingOptions},{spanKind:"client",spanAttributes});if(!span.isRecording()){span.end();return}let headers=tracingClient2.createRequestHeaders(updatedOptions.tracingOptions.tracingContext);for(let[key,value]of Object.entries(headers))request.headers.set(key,value);return{span,tracingContext:updatedOptions.tracingOptions.tracingContext}}catch(e){logger2.warning(`Skipping creating a tracing span due to an error: ${getErrorMessage(e)}`);return}}function tryProcessError(span,error){try{span.setStatus({status:"error",error:isError2(error)?error:void 0}),isRestError2(error)&&error.statusCode&&span.setAttribute("http.status_code",error.statusCode),span.end()}catch(e){logger2.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`)}}function tryProcessResponse(span,response){try{span.setAttribute("http.status_code",response.status);let serviceRequestId=response.headers.get("x-ms-request-id");serviceRequestId&&span.setAttribute("serviceRequestId",serviceRequestId),response.status>=400&&span.setStatus({status:"error"}),span.end()}catch(e){logger2.warning(`Skipping tracing span processing due to an error: ${getErrorMessage(e)}`)}}function wrapAbortSignalLike(abortSignalLike){if(abortSignalLike instanceof AbortSignal)return{abortSignal:abortSignalLike};if(abortSignalLike.aborted)return{abortSignal:AbortSignal.abort("reason"in abortSignalLike?abortSignalLike.reason:void 0)};let controller=new AbortController,needsCleanup=!0;function cleanup(){needsCleanup&&(abortSignalLike.removeEventListener("abort",listener),needsCleanup=!1)}function listener(){controller.abort("reason"in abortSignalLike?abortSignalLike.reason:void 0),cleanup()}return abortSignalLike.addEventListener("abort",listener),{abortSignal:controller.signal,cleanup}}var wrapAbortSignalLikePolicyName="wrapAbortSignalLikePolicy";function wrapAbortSignalLikePolicy(){return{name:wrapAbortSignalLikePolicyName,sendRequest:async(request,next)=>{if(!request.abortSignal)return next(request);let{abortSignal,cleanup}=wrapAbortSignalLike(request.abortSignal);request.abortSignal=abortSignal;try{return await next(request)}finally{cleanup?.()}}}}function createPipelineFromOptions2(options){let pipeline=createEmptyPipeline2();return isNodeLike2&&(options.agent&&pipeline.addPolicy(agentPolicy2(options.agent)),options.tlsOptions&&pipeline.addPolicy(tlsPolicy2(options.tlsOptions)),pipeline.addPolicy(proxyPolicy2(options.proxyOptions)),pipeline.addPolicy(decompressResponsePolicy2())),pipeline.addPolicy(wrapAbortSignalLikePolicy()),pipeline.addPolicy(formDataPolicy2(),{beforePolicies:[multipartPolicyName2]}),pipeline.addPolicy(userAgentPolicy2(options.userAgentOptions)),pipeline.addPolicy(setClientRequestIdPolicy(options.telemetryOptions?.clientRequestIdHeaderName)),pipeline.addPolicy(multipartPolicy2(),{afterPhase:"Deserialize"}),pipeline.addPolicy(defaultRetryPolicy2(options.retryOptions),{phase:"Retry"}),pipeline.addPolicy(tracingPolicy({...options.userAgentOptions,...options.loggingOptions}),{afterPhase:"Retry"}),isNodeLike2&&pipeline.addPolicy(redirectPolicy2(options.redirectOptions),{afterPhase:"Retry"}),pipeline.addPolicy(logPolicy2(options.loggingOptions),{afterPhase:"Sign"}),pipeline}function createDefaultHttpClient2(){let client=createDefaultHttpClient();return{async sendRequest(request){let{abortSignal,cleanup}=request.abortSignal?wrapAbortSignalLike(request.abortSignal):{};try{return request.abortSignal=abortSignal,await client.sendRequest(request)}finally{cleanup?.()}}}}function createHttpHeaders2(rawHeaders){return createHttpHeaders(rawHeaders)}function createPipelineRequest2(options){return createPipelineRequest(options)}var retryPolicyLogger2=createClientLogger2("core-rest-pipeline retryPolicy");var DEFAULT_CYCLER_OPTIONS={forcedRefreshWindowInMs:1e3,retryIntervalInMs:3e3,refreshWindowInMs:1e3*60*2};async function beginRefresh(getAccessToken,retryIntervalInMs,refreshTimeout){async function tryGetAccessToken(){if(Date.now()credential.getToken(scopes,getTokenOptions),options.retryIntervalInMs,token?.expiresOnTimestamp??Date.now()).then(_token=>(refreshWorker=null,token=_token,tenantId=getTokenOptions.tenantId,token)).catch(reason=>{throw refreshWorker=null,token=null,tenantId=void 0,reason})),refreshWorker}return async(scopes,tokenOptions)=>{let hasClaimChallenge=!!tokenOptions.claims,tenantIdChanged=tenantId!==tokenOptions.tenantId;return hasClaimChallenge&&(token=null),tenantIdChanged||hasClaimChallenge||cycler.mustRefresh?refresh(scopes,tokenOptions):(cycler.shouldRefresh&&refresh(scopes,tokenOptions),token)}}var bearerTokenAuthenticationPolicyName="bearerTokenAuthenticationPolicy";async function trySendRequest(request,next){try{return[await next(request),void 0]}catch(e){if(isRestError2(e)&&e.response)return[e.response,e];throw e}}async function defaultAuthorizeRequest(options){let{scopes,getAccessToken,request}=options,getTokenOptions={abortSignal:request.abortSignal,tracingOptions:request.tracingOptions,enableCae:!0},accessToken=await getAccessToken(scopes,getTokenOptions);accessToken&&options.request.headers.set("Authorization",`Bearer ${accessToken.token}`)}function isChallengeResponse(response){return response.status===401&&response.headers.has("WWW-Authenticate")}async function authorizeRequestOnCaeChallenge(onChallengeOptions,caeClaims){let{scopes}=onChallengeOptions,accessToken=await onChallengeOptions.getAccessToken(scopes,{enableCae:!0,claims:caeClaims});return accessToken?(onChallengeOptions.request.headers.set("Authorization",`${accessToken.tokenType??"Bearer"} ${accessToken.token}`),!0):!1}function bearerTokenAuthenticationPolicy(options){let{credential,scopes,challengeCallbacks}=options,logger7=options.logger||logger2,callbacks={authorizeRequest:challengeCallbacks?.authorizeRequest?.bind(challengeCallbacks)??defaultAuthorizeRequest,authorizeRequestOnChallenge:challengeCallbacks?.authorizeRequestOnChallenge?.bind(challengeCallbacks)},getAccessToken=credential?createTokenCycler(credential):()=>Promise.resolve(null);return{name:bearerTokenAuthenticationPolicyName,async sendRequest(request,next){if(!request.url.toLowerCase().startsWith("https://"))throw new Error("Bearer token authentication is not permitted for non-TLS protected (non-https) URLs.");await callbacks.authorizeRequest({scopes:Array.isArray(scopes)?scopes:[scopes],request,getAccessToken,logger:logger7});let response,error,shouldSendRequest;if([response,error]=await trySendRequest(request,next),isChallengeResponse(response)){let claims=getCaeChallengeClaims(response.headers.get("WWW-Authenticate"));if(claims){let parsedClaim;try{parsedClaim=atob(claims)}catch{return logger7.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`),response}shouldSendRequest=await authorizeRequestOnCaeChallenge({scopes:Array.isArray(scopes)?scopes:[scopes],response,request,getAccessToken,logger:logger7},parsedClaim),shouldSendRequest&&([response,error]=await trySendRequest(request,next))}else if(callbacks.authorizeRequestOnChallenge&&(shouldSendRequest=await callbacks.authorizeRequestOnChallenge({scopes:Array.isArray(scopes)?scopes:[scopes],request,response,getAccessToken,logger:logger7}),shouldSendRequest&&([response,error]=await trySendRequest(request,next)),isChallengeResponse(response)&&(claims=getCaeChallengeClaims(response.headers.get("WWW-Authenticate")??""),claims))){let parsedClaim;try{parsedClaim=atob(claims)}catch{return logger7.warning(`The WWW-Authenticate header contains "claims" that cannot be parsed. Unable to perform the Continuous Access Evaluation authentication flow. Unparsable claims: ${claims}`),response}shouldSendRequest=await authorizeRequestOnCaeChallenge({scopes:Array.isArray(scopes)?scopes:[scopes],response,request,getAccessToken,logger:logger7},parsedClaim),shouldSendRequest&&([response,error]=await trySendRequest(request,next))}}if(error)throw error;return response}}}function parseChallenges(challenges){let challengeRegex=/(\w+)\s+((?:\w+=(?:"[^"]*"|[^,]*),?\s*)+)/g,paramRegex=/(\w+)="([^"]*)"/g,parsedChallenges=[],match;for(;(match=challengeRegex.exec(challenges))!==null;){let scheme=match[1],paramsString=match[2],params={},paramMatch;for(;(paramMatch=paramRegex.exec(paramsString))!==null;)params[paramMatch[1]]=paramMatch[2];parsedChallenges.push({scheme,params})}return parsedChallenges}function getCaeChallengeClaims(challenges){return challenges?parseChallenges(challenges).find(x=>x.scheme==="Bearer"&&x.params.claims&&x.params.error==="insufficient_claims")?.params.claims:void 0}function isTokenCredential(credential){let castCredential=credential;return castCredential&&typeof castCredential.getToken=="function"&&(castCredential.signRequest===void 0||castCredential.getToken.length>0)}var disableKeepAlivePolicyName="DisableKeepAlivePolicy";function createDisableKeepAlivePolicy(){return{name:disableKeepAlivePolicyName,sendRequest(request,next){return request.disableKeepAlive=!0,next(request)}}}function pipelineContainsDisableKeepAlivePolicy(pipeline){return pipeline.getOrderedPolicies().some(policy=>policy.name===disableKeepAlivePolicyName)}function encodeByteArray(value){return uint8ArrayToString2(value,"base64")}function decodeString(value){return stringToUint8Array2(value,"base64")}function isPrimitiveBody(value,mapperTypeName){return mapperTypeName!=="Composite"&&mapperTypeName!=="Dictionary"&&(typeof value=="string"||typeof value=="number"||typeof value=="boolean"||mapperTypeName?.match(/^(Date|DateTime|DateTimeRfc1123|UnixTime|ByteArray|Base64Url)$/i)!==null||value===void 0||value===null)}var validateISODuration=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function isDuration(value){return validateISODuration.test(value)}var validUuidRegex=/^[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-[0-9a-fA-F]{12}$/i;function isValidUuid(uuid){return validUuidRegex.test(uuid)}function handleNullableResponseAndWrappableBody(responseObject){let combinedHeadersAndBody={...responseObject.headers,...responseObject.body};return responseObject.hasNullableType&&Object.getOwnPropertyNames(combinedHeadersAndBody).length===0?responseObject.shouldWrapBody?{body:null}:null:responseObject.shouldWrapBody?{...responseObject.headers,body:responseObject.body}:combinedHeadersAndBody}function flattenResponse(fullResponse,responseSpec){let parsedHeaders=fullResponse.parsedHeaders;if(fullResponse.request.method==="HEAD")return{...parsedHeaders,body:fullResponse.parsedBody};let bodyMapper=responseSpec&&responseSpec.bodyMapper,isNullable=!!bodyMapper?.nullable,expectedBodyTypeName=bodyMapper?.type.name;if(expectedBodyTypeName==="Stream")return{...parsedHeaders,blobBody:fullResponse.blobBody,readableStreamBody:fullResponse.readableStreamBody};let modelProperties=expectedBodyTypeName==="Composite"&&bodyMapper.type.modelProperties||{},isPageableResponse=Object.keys(modelProperties).some(k=>modelProperties[k].serializedName==="");if(expectedBodyTypeName==="Sequence"||isPageableResponse){let arrayResponse=fullResponse.parsedBody??[];for(let key of Object.keys(modelProperties))modelProperties[key].serializedName&&(arrayResponse[key]=fullResponse.parsedBody?.[key]);if(parsedHeaders)for(let key of Object.keys(parsedHeaders))arrayResponse[key]=parsedHeaders[key];return isNullable&&!fullResponse.parsedBody&&!parsedHeaders&&Object.getOwnPropertyNames(modelProperties).length===0?null:arrayResponse}return handleNullableResponseAndWrappableBody({body:fullResponse.parsedBody,headers:parsedHeaders,hasNullableType:isNullable,shouldWrapBody:isPrimitiveBody(fullResponse.parsedBody,expectedBodyTypeName)})}var SerializerImpl=class{modelMappers;isXML;constructor(modelMappers={},isXML=!1){this.modelMappers=modelMappers,this.isXML=isXML}validateConstraints(mapper,value,objectName){let failValidation=(constraintName,constraintValue)=>{throw new Error(`"${objectName}" with value "${value}" should satisfy the constraint "${constraintName}": ${constraintValue}.`)};if(mapper.constraints&&value!==void 0&&value!==null){let{ExclusiveMaximum,ExclusiveMinimum,InclusiveMaximum,InclusiveMinimum,MaxItems,MaxLength,MinItems,MinLength,MultipleOf,Pattern,UniqueItems}=mapper.constraints;if(ExclusiveMaximum!==void 0&&value>=ExclusiveMaximum&&failValidation("ExclusiveMaximum",ExclusiveMaximum),ExclusiveMinimum!==void 0&&value<=ExclusiveMinimum&&failValidation("ExclusiveMinimum",ExclusiveMinimum),InclusiveMaximum!==void 0&&value>InclusiveMaximum&&failValidation("InclusiveMaximum",InclusiveMaximum),InclusiveMinimum!==void 0&&valueMaxItems&&failValidation("MaxItems",MaxItems),MaxLength!==void 0&&value.length>MaxLength&&failValidation("MaxLength",MaxLength),MinItems!==void 0&&value.lengthar.indexOf(item)!==i)&&failValidation("UniqueItems",UniqueItems)}}serialize(mapper,object,objectName,options={xml:{}}){let updatedOptions={xml:{rootName:options.xml.rootName??"",includeRoot:options.xml.includeRoot??!1,xmlCharKey:options.xml.xmlCharKey??"_"}},payload={},mapperType=mapper.type.name;objectName||(objectName=mapper.serializedName),mapperType.match(/^Sequence$/i)!==null&&(payload=[]),mapper.isConstant&&(object=mapper.defaultValue);let{required,nullable}=mapper;if(required&&nullable&&object===void 0)throw new Error(`${objectName} cannot be undefined.`);if(required&&!nullable&&object==null)throw new Error(`${objectName} cannot be null or undefined.`);if(!required&&nullable===!1&&object===null)throw new Error(`${objectName} cannot be null.`);return object==null||mapperType.match(/^any$/i)!==null?payload=object:mapperType.match(/^(Number|String|Boolean|Object|Stream|Uuid)$/i)!==null?payload=serializeBasicTypes(mapperType,objectName,object):mapperType.match(/^Enum$/i)!==null?payload=serializeEnumType(objectName,mapper.type.allowedValues,object):mapperType.match(/^(Date|DateTime|TimeSpan|DateTimeRfc1123|UnixTime)$/i)!==null?payload=serializeDateTypes(mapperType,object,objectName):mapperType.match(/^ByteArray$/i)!==null?payload=serializeByteArrayType(objectName,object):mapperType.match(/^Base64Url$/i)!==null?payload=serializeBase64UrlType(objectName,object):mapperType.match(/^Sequence$/i)!==null?payload=serializeSequenceType(this,mapper,object,objectName,!!this.isXML,updatedOptions):mapperType.match(/^Dictionary$/i)!==null?payload=serializeDictionaryType(this,mapper,object,objectName,!!this.isXML,updatedOptions):mapperType.match(/^Composite$/i)!==null&&(payload=serializeCompositeType(this,mapper,object,objectName,!!this.isXML,updatedOptions)),payload}deserialize(mapper,responseBody,objectName,options={xml:{}}){let updatedOptions={xml:{rootName:options.xml.rootName??"",includeRoot:options.xml.includeRoot??!1,xmlCharKey:options.xml.xmlCharKey??"_"},ignoreUnknownProperties:options.ignoreUnknownProperties??!1};if(responseBody==null)return this.isXML&&mapper.type.name==="Sequence"&&!mapper.xmlIsWrapped&&(responseBody=[]),mapper.defaultValue!==void 0&&(responseBody=mapper.defaultValue),responseBody;let payload,mapperType=mapper.type.name;if(objectName||(objectName=mapper.serializedName),mapperType.match(/^Composite$/i)!==null)payload=deserializeCompositeType(this,mapper,responseBody,objectName,updatedOptions);else{if(this.isXML){let xmlCharKey=updatedOptions.xml.xmlCharKey;responseBody["$"]!==void 0&&responseBody[xmlCharKey]!==void 0&&(responseBody=responseBody[xmlCharKey])}mapperType.match(/^Number$/i)!==null?(payload=parseFloat(responseBody),isNaN(payload)&&(payload=responseBody)):mapperType.match(/^Boolean$/i)!==null?responseBody==="true"?payload=!0:responseBody==="false"?payload=!1:payload=responseBody:mapperType.match(/^(String|Enum|Object|Stream|Uuid|TimeSpan|any)$/i)!==null?payload=responseBody:mapperType.match(/^(Date|DateTime|DateTimeRfc1123)$/i)!==null?payload=new Date(responseBody):mapperType.match(/^UnixTime$/i)!==null?payload=unixTimeToDate(responseBody):mapperType.match(/^ByteArray$/i)!==null?payload=decodeString(responseBody):mapperType.match(/^Base64Url$/i)!==null?payload=base64UrlToByteArray(responseBody):mapperType.match(/^Sequence$/i)!==null?payload=deserializeSequenceType(this,mapper,responseBody,objectName,updatedOptions):mapperType.match(/^Dictionary$/i)!==null&&(payload=deserializeDictionaryType(this,mapper,responseBody,objectName,updatedOptions))}return mapper.isConstant&&(payload=mapper.defaultValue),payload}};function createSerializer(modelMappers={},isXML=!1){return new SerializerImpl(modelMappers,isXML)}function trimEnd(str,ch){let len=str.length;for(;len-1>=0&&str[len-1]===ch;)--len;return str.substr(0,len)}function bufferToBase64Url(buffer2){if(!buffer2)return;if(!(buffer2 instanceof Uint8Array))throw new Error("Please provide an input of type Uint8Array for converting to Base64Url.");let str=encodeByteArray(buffer2);return trimEnd(str,"=").replace(/\+/g,"-").replace(/\//g,"_")}function base64UrlToByteArray(str){if(str){if(str&&typeof str.valueOf()!="string")throw new Error("Please provide an input of type string for converting to Uint8Array");return str=str.replace(/-/g,"+").replace(/_/g,"/"),decodeString(str)}}function splitSerializeName(prop){let classes=[],partialclass="";if(prop){let subwords=prop.split(".");for(let item of subwords)item.charAt(item.length-1)==="\\"?partialclass+=item.substr(0,item.length-1)+".":(partialclass+=item,classes.push(partialclass),partialclass="")}return classes}function dateToUnixTime(d){if(d)return typeof d.valueOf()=="string"&&(d=new Date(d)),Math.floor(d.getTime()/1e3)}function unixTimeToDate(n){if(n)return new Date(n*1e3)}function serializeBasicTypes(typeName,objectName,value){if(value!=null){if(typeName.match(/^Number$/i)!==null){if(typeof value!="number")throw new Error(`${objectName} with value ${value} must be of type number.`)}else if(typeName.match(/^String$/i)!==null){if(typeof value.valueOf()!="string")throw new Error(`${objectName} with value "${value}" must be of type string.`)}else if(typeName.match(/^Uuid$/i)!==null){if(!(typeof value.valueOf()=="string"&&isValidUuid(value)))throw new Error(`${objectName} with value "${value}" must be of type string and a valid uuid.`)}else if(typeName.match(/^Boolean$/i)!==null){if(typeof value!="boolean")throw new Error(`${objectName} with value ${value} must be of type boolean.`)}else if(typeName.match(/^Stream$/i)!==null){let objectType=typeof value;if(objectType!=="string"&&typeof value.pipe!="function"&&typeof value.tee!="function"&&!(value instanceof ArrayBuffer)&&!ArrayBuffer.isView(value)&&!((typeof Blob=="function"||typeof Blob=="object")&&value instanceof Blob)&&objectType!=="function")throw new Error(`${objectName} must be a string, Blob, ArrayBuffer, ArrayBufferView, ReadableStream, or () => ReadableStream.`)}}return value}function serializeEnumType(objectName,allowedValues,value){if(!allowedValues)throw new Error(`Please provide a set of allowedValues to validate ${objectName} as an Enum Type.`);if(!allowedValues.some(item=>typeof item.valueOf()=="string"?item.toLowerCase()===value.toLowerCase():item===value))throw new Error(`${value} is not a valid value for ${objectName}. The valid values are: ${JSON.stringify(allowedValues)}.`);return value}function serializeByteArrayType(objectName,value){if(value!=null){if(!(value instanceof Uint8Array))throw new Error(`${objectName} must be of type Uint8Array.`);value=encodeByteArray(value)}return value}function serializeBase64UrlType(objectName,value){if(value!=null){if(!(value instanceof Uint8Array))throw new Error(`${objectName} must be of type Uint8Array.`);value=bufferToBase64Url(value)}return value}function serializeDateTypes(typeName,value,objectName){if(value!=null){if(typeName.match(/^Date$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);value=value instanceof Date?value.toISOString().substring(0,10):new Date(value).toISOString().substring(0,10)}else if(typeName.match(/^DateTime$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in ISO8601 format.`);value=value instanceof Date?value.toISOString():new Date(value).toISOString()}else if(typeName.match(/^DateTimeRfc1123$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123 format.`);value=value instanceof Date?value.toUTCString():new Date(value).toUTCString()}else if(typeName.match(/^UnixTime$/i)!==null){if(!(value instanceof Date||typeof value.valueOf()=="string"&&!isNaN(Date.parse(value))))throw new Error(`${objectName} must be an instanceof Date or a string in RFC-1123/ISO8601 format for it to be serialized in UnixTime/Epoch format.`);value=dateToUnixTime(value)}else if(typeName.match(/^TimeSpan$/i)!==null&&!isDuration(value))throw new Error(`${objectName} must be a string in ISO 8601 format. Instead was "${value}".`)}return value}function serializeSequenceType(serializer,mapper,object,objectName,isXml,options){if(!Array.isArray(object))throw new Error(`${objectName} must be of type Array.`);let elementType=mapper.type.element;if(!elementType||typeof elementType!="object")throw new Error(`"element" metadata for an Array must be defined in the mapper and it must be of type "object" in ${objectName}.`);elementType.type.name==="Composite"&&elementType.type.className&&(elementType=serializer.modelMappers[elementType.type.className]??elementType);let tempArray=[];for(let i=0;ipn!==clientPropName)&&Object.defineProperty(payload,clientPropName,{value:serializer.serialize(additionalPropertiesMapper,object[clientPropName],objectName+'["'+clientPropName+'"]',options),enumerable:!0,configurable:!0,writable:!0})}return payload}return object}function getXmlObjectValue(propertyMapper,serializedValue,isXml,options){if(!isXml||!propertyMapper.xmlNamespace)return serializedValue;let xmlNamespace={[propertyMapper.xmlNamespacePrefix?`xmlns:${propertyMapper.xmlNamespacePrefix}`:"xmlns"]:propertyMapper.xmlNamespace};if(["Composite"].includes(propertyMapper.type.name)){if(serializedValue["$"])return serializedValue;{let result2={...serializedValue};return result2["$"]=xmlNamespace,result2}}let result={};return result[options.xml.xmlCharKey]=serializedValue,result["$"]=xmlNamespace,result}function isSpecialXmlProperty(propertyName,options){return["$",options.xml.xmlCharKey].includes(propertyName)}function deserializeCompositeType(serializer,mapper,responseBody,objectName,options){let xmlCharKey=options.xml.xmlCharKey??"_";getPolymorphicDiscriminatorRecursively(serializer,mapper)&&(mapper=getPolymorphicMapper(serializer,mapper,responseBody,"serializedName"));let modelProps=resolveModelProperties(serializer,mapper,objectName),instance={},handledPropertyNames=[];for(let key of Object.keys(modelProps)){let propertyMapper=modelProps[key],paths=splitSerializeName(modelProps[key].serializedName);handledPropertyNames.push(paths[0]);let{serializedName,xmlName,xmlElementName}=propertyMapper,propertyObjectName=objectName;serializedName!==""&&serializedName!==void 0&&(propertyObjectName=objectName+"."+serializedName);let headerCollectionPrefix=propertyMapper.headerCollectionPrefix;if(headerCollectionPrefix){let dictionary={};for(let headerKey of Object.keys(responseBody))headerKey.startsWith(headerCollectionPrefix)&&(dictionary[headerKey.substring(headerCollectionPrefix.length)]=serializer.deserialize(propertyMapper.type.value,responseBody[headerKey],propertyObjectName,options)),handledPropertyNames.push(headerKey);instance[key]=dictionary}else if(serializer.isXML)if(propertyMapper.xmlIsAttribute&&responseBody["$"])instance[key]=serializer.deserialize(propertyMapper,responseBody["$"][xmlName],propertyObjectName,options);else if(propertyMapper.xmlIsMsText)responseBody[xmlCharKey]!==void 0?instance[key]=responseBody[xmlCharKey]:typeof responseBody=="string"&&(instance[key]=responseBody);else{let propertyName=xmlElementName||xmlName||serializedName;if(propertyMapper.xmlIsWrapped){let elementList=responseBody[xmlName]?.[xmlElementName]??[];Object.defineProperty(instance,key,{value:serializer.deserialize(propertyMapper,elementList,propertyObjectName,options),enumerable:!0,configurable:!0,writable:!0}),handledPropertyNames.push(xmlName)}else{let property=responseBody[propertyName];instance[key]=serializer.deserialize(propertyMapper,property,propertyObjectName,options),handledPropertyNames.push(propertyName)}}else{let propertyInstance,res=responseBody,steps=0;for(let item of paths){if(!res)break;steps++,res=res[item]}res===null&&steps{for(let clientPropName of Object.keys(modelProps))if(splitSerializeName(modelProps[clientPropName].serializedName)[0]===responsePropName)return!1;return!0};for(let responsePropName of Object.keys(responseBody))if(isAdditionalProperty(responsePropName)){let deserializedValue=serializer.deserialize(additionalPropertiesMapper,responseBody[responsePropName],objectName+'["'+responsePropName+'"]',options);Object.defineProperty(instance,responsePropName,{value:deserializedValue,enumerable:!0,configurable:!0,writable:!0})}}else if(responseBody&&!options.ignoreUnknownProperties)for(let key of Object.keys(responseBody))instance[key]===void 0&&!handledPropertyNames.includes(key)&&!isSpecialXmlProperty(key,options)&&Object.defineProperty(instance,key,{value:responseBody[key],enumerable:!0,configurable:!0,writable:!0});return instance}function deserializeDictionaryType(serializer,mapper,responseBody,objectName,options){let value=mapper.type.value;if(!value||typeof value!="object")throw new Error(`"value" metadata for a Dictionary must be defined in the mapper and it must of type "object" in ${objectName}`);if(responseBody){let tempDictionary={};for(let key of Object.keys(responseBody))tempDictionary[key]=serializer.deserialize(value,responseBody[key],objectName,options);return tempDictionary}return responseBody}function deserializeSequenceType(serializer,mapper,responseBody,objectName,options){let element=mapper.type.element;if(!element||typeof element!="object")throw new Error(`"element" metadata for an Array must be defined in the mapper and it must be of type "object" in ${objectName}`);if(responseBody){Array.isArray(responseBody)||(responseBody=[responseBody]),element.type.name==="Composite"&&element.type.className&&(element=serializer.modelMappers[element.type.className]??element);let tempArray=[];for(let i=0;i0)if(parameterMapper.isConstant)value=parameterMapper.defaultValue;else{let propertySearchResult=getPropertyFromParameterPath(operationArguments,parameterPath);!propertySearchResult.propertyFound&&fallbackObject&&(propertySearchResult=getPropertyFromParameterPath(fallbackObject,parameterPath));let useDefaultValue=!1;propertySearchResult.propertyFound||(useDefaultValue=parameterMapper.required||parameterPath[0]==="options"&¶meterPath.length===2),value=useDefaultValue?parameterMapper.defaultValue:propertySearchResult.propertyValue}}else{parameterMapper.required&&(value={});for(let[propertyName,propertyPath]of Object.entries(parameterPath)){let propertyMapper=parameterMapper.type.modelProperties[propertyName],propertyValue=getOperationArgumentValueFromParameter(operationArguments,{parameterPath:propertyPath,mapper:propertyMapper},fallbackObject);propertyValue!==void 0&&(value||(value={}),Object.defineProperty(value,propertyName,{value:propertyValue,enumerable:!0,configurable:!0,writable:!0}))}}return value}function getPropertyFromParameterPath(parent,parameterPath){let result={propertyFound:!1},i=0;for(;i=200&&response.status<300);responseSpec.headersMapper&&(parsedResponse.parsedHeaders=operationSpec.serializer.deserialize(responseSpec.headersMapper,parsedResponse.headers.toJSON(),"operationRes.parsedHeaders",{xml:{},ignoreUnknownProperties:!0}))}return parsedResponse}function isOperationSpecEmpty(operationSpec){let expectedStatusCodes=Object.keys(operationSpec.responses);return expectedStatusCodes.length===0||expectedStatusCodes.length===1&&expectedStatusCodes[0]==="default"}function handleErrorResponse(parsedResponse,operationSpec,responseSpec,options){let isSuccessByStatus=200<=parsedResponse.status&&parsedResponse.status<300;if(isOperationSpecEmpty(operationSpec)?isSuccessByStatus:!!responseSpec)if(responseSpec){if(!responseSpec.isError)return{error:null,shouldReturnResponse:!1}}else return{error:null,shouldReturnResponse:!1};let errorResponseSpec=responseSpec??operationSpec.responses.default,initialErrorMessage=parsedResponse.request.streamResponseStatusCodes?.has(parsedResponse.status)?`Unexpected status code: ${parsedResponse.status}`:parsedResponse.bodyAsText,error=new RestError2(initialErrorMessage,{statusCode:parsedResponse.status,request:parsedResponse.request,response:parsedResponse});if(!errorResponseSpec&&!(parsedResponse.parsedBody?.error?.code&&parsedResponse.parsedBody?.error?.message))throw error;let defaultBodyMapper=errorResponseSpec?.bodyMapper,defaultHeadersMapper=errorResponseSpec?.headersMapper;try{if(parsedResponse.parsedBody){let parsedBody=parsedResponse.parsedBody,deserializedError;if(defaultBodyMapper){let valueToDeserialize=parsedBody;if(operationSpec.isXML&&defaultBodyMapper.type.name===MapperTypeNames.Sequence){valueToDeserialize=[];let elementName=defaultBodyMapper.xmlElementName;typeof parsedBody=="object"&&elementName&&(valueToDeserialize=parsedBody[elementName])}deserializedError=operationSpec.serializer.deserialize(defaultBodyMapper,valueToDeserialize,"error.response.parsedBody",options)}let internalError=parsedBody.error||deserializedError||parsedBody;error.code=internalError.code,internalError.message&&(error.message=internalError.message),defaultBodyMapper&&(error.response.parsedBody=deserializedError)}parsedResponse.headers&&defaultHeadersMapper&&(error.response.parsedHeaders=operationSpec.serializer.deserialize(defaultHeadersMapper,parsedResponse.headers.toJSON(),"operationRes.parsedHeaders"))}catch(defaultError){error.message=`Error "${defaultError.message}" occurred in deserializing the responseBody - "${parsedResponse.bodyAsText}" for the default response.`}return{error,shouldReturnResponse:!1}}async function parse(jsonContentTypes,xmlContentTypes,operationResponse,opts,parseXML2){if(!operationResponse.request.streamResponseStatusCodes?.has(operationResponse.status)&&operationResponse.bodyAsText){let text=operationResponse.bodyAsText,contentType2=operationResponse.headers.get("Content-Type")||"",contentComponents=contentType2?contentType2.split(";").map(component=>component.toLowerCase()):[];try{if(contentComponents.length===0||contentComponents.some(component=>jsonContentTypes.indexOf(component)!==-1))return operationResponse.parsedBody=JSON.parse(text),operationResponse;if(contentComponents.some(component=>xmlContentTypes.indexOf(component)!==-1)){if(!parseXML2)throw new Error("Parsing XML not supported.");let body2=await parseXML2(text,opts.xml);return operationResponse.parsedBody=body2,operationResponse}}catch(err){let msg=`Error "${err}" occurred while parsing the response body - ${operationResponse.bodyAsText}.`,errCode=err.code||RestError2.PARSE_ERROR;throw new RestError2(msg,{code:errCode,statusCode:operationResponse.status,request:operationResponse.request,response:operationResponse})}}return operationResponse}function getStreamingResponseStatusCodes(operationSpec){let result=new Set;for(let[statusCode,operationResponse]of Object.entries(operationSpec.responses))operationResponse.bodyMapper&&operationResponse.bodyMapper.type.name===MapperTypeNames.Stream&&result.add(Number(statusCode));return result}function getPathStringFromParameter(parameter){let{parameterPath,mapper}=parameter,result;return typeof parameterPath=="string"?result=parameterPath:Array.isArray(parameterPath)?result=parameterPath.join("."):result=mapper.serializedName,result}var serializationPolicyName="serializationPolicy";function serializationPolicy(options={}){let stringifyXML2=options.stringifyXML;return{name:serializationPolicyName,sendRequest(request,next){let operationInfo=getOperationRequestInfo(request),operationSpec=operationInfo?.operationSpec,operationArguments=operationInfo?.operationArguments;return operationSpec&&operationArguments&&(serializeHeaders(request,operationArguments,operationSpec),serializeRequestBody(request,operationArguments,operationSpec,stringifyXML2)),next(request)}}}function serializeHeaders(request,operationArguments,operationSpec){if(operationSpec.headerParameters)for(let headerParameter of operationSpec.headerParameters){let headerValue=getOperationArgumentValueFromParameter(operationArguments,headerParameter);if(headerValue!=null||headerParameter.mapper.required){headerValue=operationSpec.serializer.serialize(headerParameter.mapper,headerValue,getPathStringFromParameter(headerParameter));let headerCollectionPrefix=headerParameter.mapper.headerCollectionPrefix;if(headerCollectionPrefix)for(let key of Object.keys(headerValue))request.headers.set(headerCollectionPrefix+key,headerValue[key]);else request.headers.set(headerParameter.mapper.serializedName||getPathStringFromParameter(headerParameter),headerValue)}}let customHeaders=operationArguments.options?.requestOptions?.customHeaders;if(customHeaders)for(let customHeaderName of Object.keys(customHeaders))request.headers.set(customHeaderName,customHeaders[customHeaderName])}function serializeRequestBody(request,operationArguments,operationSpec,stringifyXML2=function(){throw new Error("XML serialization unsupported!")}){let serializerOptions=operationArguments.options?.serializerOptions,updatedOptions={xml:{rootName:serializerOptions?.xml.rootName??"",includeRoot:serializerOptions?.xml.includeRoot??!1,xmlCharKey:serializerOptions?.xml.xmlCharKey??"_"}},xmlCharKey=updatedOptions.xml.xmlCharKey;if(operationSpec.requestBody&&operationSpec.requestBody.mapper){request.body=getOperationArgumentValueFromParameter(operationArguments,operationSpec.requestBody);let bodyMapper=operationSpec.requestBody.mapper,{required,serializedName,xmlName,xmlElementName,xmlNamespace,xmlNamespacePrefix,nullable}=bodyMapper,typeName=bodyMapper.type.name;try{if(request.body!==void 0&&request.body!==null||nullable&&request.body===null||required){let requestBodyParameterPathString=getPathStringFromParameter(operationSpec.requestBody);request.body=operationSpec.serializer.serialize(bodyMapper,request.body,requestBodyParameterPathString,updatedOptions);let isStream=typeName===MapperTypeNames.Stream;if(operationSpec.isXML){let xmlnsKey=xmlNamespacePrefix?`xmlns:${xmlNamespacePrefix}`:"xmlns",value=getXmlValueWithNamespace(xmlNamespace,xmlnsKey,typeName,request.body,updatedOptions);typeName===MapperTypeNames.Sequence?request.body=stringifyXML2(prepareXMLRootList(value,xmlElementName||xmlName||serializedName,xmlnsKey,xmlNamespace),{rootName:xmlName||serializedName,xmlCharKey}):isStream||(request.body=stringifyXML2(value,{rootName:xmlName||serializedName,xmlCharKey}))}else{if(typeName===MapperTypeNames.String&&(operationSpec.contentType?.match("text/plain")||operationSpec.mediaType==="text"))return;isStream||(request.body=JSON.stringify(request.body))}}}catch(error){throw new Error(`Error "${error.message}" occurred in serializing the payload - ${JSON.stringify(serializedName,void 0," ")}.`,{cause:error})}}else if(operationSpec.formDataParameters&&operationSpec.formDataParameters.length>0){request.formData={};for(let formDataParameter of operationSpec.formDataParameters){let formDataParameterValue=getOperationArgumentValueFromParameter(operationArguments,formDataParameter);if(formDataParameterValue!=null){let formDataParameterPropertyName=formDataParameter.mapper.serializedName||getPathStringFromParameter(formDataParameter);request.formData[formDataParameterPropertyName]=operationSpec.serializer.serialize(formDataParameter.mapper,formDataParameterValue,getPathStringFromParameter(formDataParameter),updatedOptions)}}}}function getXmlValueWithNamespace(xmlNamespace,xmlnsKey,typeName,serializedValue,options){if(xmlNamespace&&!["Composite","Sequence","Dictionary"].includes(typeName)){let result={};return result[options.xml.xmlCharKey]=serializedValue,result["$"]={[xmlnsKey]:xmlNamespace},result}return serializedValue}function prepareXMLRootList(obj,elementName,xmlNamespaceKey,xmlNamespace){if(Array.isArray(obj)||(obj=[obj]),!xmlNamespaceKey||!xmlNamespace)return{[elementName]:obj};let result={[elementName]:obj};return result["$"]={[xmlNamespaceKey]:xmlNamespace},result}function createClientPipeline(options={}){let pipeline=createPipelineFromOptions2(options??{});return options.credentialOptions&&pipeline.addPolicy(bearerTokenAuthenticationPolicy({credential:options.credentialOptions.credential,scopes:options.credentialOptions.credentialScopes})),pipeline.addPolicy(serializationPolicy(options.serializationOptions),{phase:"Serialize"}),pipeline.addPolicy(deserializationPolicy(options.deserializationOptions),{phase:"Deserialize"}),pipeline}var cachedHttpClient;function getCachedDefaultHttpClient(){return cachedHttpClient||(cachedHttpClient=createDefaultHttpClient2()),cachedHttpClient}var CollectionFormatToDelimiterMap={CSV:",",SSV:" ",Multi:"Multi",TSV:" ",Pipes:"|"};function getRequestUrl(baseUri,operationSpec,operationArguments,fallbackObject){let urlReplacements=calculateUrlReplacements(operationSpec,operationArguments,fallbackObject),isAbsolutePath=!1,requestUrl=replaceAll(baseUri,urlReplacements);if(operationSpec.path){let path=replaceAll(operationSpec.path,urlReplacements);operationSpec.path==="/{nextLink}"&&path.startsWith("/")&&(path=path.substring(1)),isAbsoluteUrl(path)?(requestUrl=path,isAbsolutePath=!0):requestUrl=appendPath(requestUrl,path)}let{queryParams,sequenceParams}=calculateQueryParameters(operationSpec,operationArguments,fallbackObject);return requestUrl=appendQueryParams(requestUrl,queryParams,sequenceParams,isAbsolutePath),requestUrl}function replaceAll(input,replacements){let result=input;for(let[searchValue,replaceValue]of replacements)result=result.split(searchValue).join(replaceValue);return result}function calculateUrlReplacements(operationSpec,operationArguments,fallbackObject){let result=new Map;if(operationSpec.urlParameters?.length)for(let urlParameter of operationSpec.urlParameters){let urlParameterValue=getOperationArgumentValueFromParameter(operationArguments,urlParameter,fallbackObject),parameterPathString=getPathStringFromParameter(urlParameter);urlParameterValue=operationSpec.serializer.serialize(urlParameter.mapper,urlParameterValue,parameterPathString),urlParameter.skipEncoding||(urlParameterValue=encodeURIComponent(urlParameterValue)),result.set(`{${urlParameter.mapper.serializedName||parameterPathString}}`,urlParameterValue)}return result}function isAbsoluteUrl(url2){return url2.includes("://")}function appendPath(url2,pathToAppend){if(!pathToAppend)return url2;let parsedUrl=new URL(url2),newPath=parsedUrl.pathname;newPath.endsWith("/")||(newPath=`${newPath}/`),pathToAppend.startsWith("/")&&(pathToAppend=pathToAppend.substring(1));let searchStart=pathToAppend.indexOf("?");if(searchStart!==-1){let path=pathToAppend.substring(0,searchStart),search=pathToAppend.substring(searchStart+1);newPath=newPath+path,search&&(parsedUrl.search=parsedUrl.search?`${parsedUrl.search}&${search}`:search)}else newPath=newPath+pathToAppend;return Object.assign(parsedUrl,{pathname:newPath}),parsedUrl.toString()}function calculateQueryParameters(operationSpec,operationArguments,fallbackObject){let result=new Map,sequenceParams=new Set;if(operationSpec.queryParameters?.length)for(let queryParameter of operationSpec.queryParameters){queryParameter.mapper.type.name==="Sequence"&&queryParameter.mapper.serializedName&&sequenceParams.add(queryParameter.mapper.serializedName);let queryParameterValue=getOperationArgumentValueFromParameter(operationArguments,queryParameter,fallbackObject);if(queryParameterValue!=null||queryParameter.mapper.required){queryParameterValue=operationSpec.serializer.serialize(queryParameter.mapper,queryParameterValue,getPathStringFromParameter(queryParameter));let delimiter2=queryParameter.collectionFormat?CollectionFormatToDelimiterMap[queryParameter.collectionFormat]:"";if(Array.isArray(queryParameterValue)&&(queryParameterValue=queryParameterValue.map(item=>item??"")),queryParameter.collectionFormat==="Multi"&&queryParameterValue.length===0)continue;Array.isArray(queryParameterValue)&&(queryParameter.collectionFormat==="SSV"||queryParameter.collectionFormat==="TSV")&&(queryParameterValue=queryParameterValue.join(delimiter2)),queryParameter.skipEncoding||(Array.isArray(queryParameterValue)?queryParameterValue=queryParameterValue.map(item=>encodeURIComponent(item)):queryParameterValue=encodeURIComponent(queryParameterValue)),Array.isArray(queryParameterValue)&&(queryParameter.collectionFormat==="CSV"||queryParameter.collectionFormat==="Pipes")&&(queryParameterValue=queryParameterValue.join(delimiter2)),result.set(queryParameter.mapper.serializedName||getPathStringFromParameter(queryParameter),queryParameterValue)}}return{queryParams:result,sequenceParams}}function simpleParseQueryParams(queryString){let result=new Map;if(!queryString||queryString[0]!=="?")return result;queryString=queryString.slice(1);let pairs=queryString.split("&");for(let pair of pairs){let[name,value]=pair.split("=",2),existingValue=result.get(name);existingValue?Array.isArray(existingValue)?existingValue.push(value):result.set(name,[existingValue,value]):result.set(name,value)}return result}function appendQueryParams(url2,queryParams,sequenceParams,noOverwrite=!1){if(queryParams.size===0)return url2;let parsedUrl=new URL(url2),combinedParams=simpleParseQueryParams(parsedUrl.search);for(let[name,value]of queryParams){let existingValue=combinedParams.get(name);if(Array.isArray(existingValue))if(Array.isArray(value)){existingValue.push(...value);let valueSet=new Set(existingValue);combinedParams.set(name,Array.from(valueSet))}else existingValue.push(value);else existingValue?(Array.isArray(value)?value.unshift(existingValue):sequenceParams.has(name)&&combinedParams.set(name,[existingValue,value]),noOverwrite||combinedParams.set(name,value)):combinedParams.set(name,value)}let searchPieces=[];for(let[name,value]of combinedParams)if(typeof value=="string")searchPieces.push(`${name}=${value}`);else if(Array.isArray(value))for(let subValue of value)searchPieces.push(`${name}=${subValue}`);else searchPieces.push(`${name}=${value}`);return parsedUrl.search=searchPieces.length?`?${searchPieces.join("&")}`:"",parsedUrl.toString()}var logger3=createClientLogger2("core-client");var ServiceClient=class{_endpoint;_requestContentType;_allowInsecureConnection;_httpClient;pipeline;constructor(options={}){if(this._requestContentType=options.requestContentType,this._endpoint=options.endpoint??options.baseUri,options.baseUri&&logger3.warning("The baseUri option for SDK Clients has been deprecated, please use endpoint instead."),this._allowInsecureConnection=options.allowInsecureConnection,this._httpClient=options.httpClient||getCachedDefaultHttpClient(),this.pipeline=options.pipeline||createDefaultPipeline2(options),options.additionalPolicies?.length)for(let{policy,position}of options.additionalPolicies){let afterPhase=position==="perRetry"?"Sign":void 0;this.pipeline.addPolicy(policy,{afterPhase})}}sendRequest(request){return this.pipeline.sendRequest(this._httpClient,request)}async sendOperationRequest(operationArguments,operationSpec){let endpoint=operationSpec.baseUrl||this._endpoint;if(!endpoint)throw new Error("If operationSpec.baseUrl is not specified, then the ServiceClient must have a endpoint string property that contains the base URL to use.");let url2=getRequestUrl(endpoint,operationSpec,operationArguments,this),request=createPipelineRequest2({url:url2});request.method=operationSpec.httpMethod;let operationInfo=getOperationRequestInfo(request);operationInfo.operationSpec=operationSpec,operationInfo.operationArguments=operationArguments;let contentType2=operationSpec.contentType||this._requestContentType;contentType2&&operationSpec.requestBody&&request.headers.set("Content-Type",contentType2);let options=operationArguments.options;if(options){let requestOptions=options.requestOptions;requestOptions&&(requestOptions.timeout&&(request.timeout=requestOptions.timeout),requestOptions.onUploadProgress&&(request.onUploadProgress=requestOptions.onUploadProgress),requestOptions.onDownloadProgress&&(request.onDownloadProgress=requestOptions.onDownloadProgress),requestOptions.shouldDeserialize!==void 0&&(operationInfo.shouldDeserialize=requestOptions.shouldDeserialize),requestOptions.allowInsecureConnection&&(request.allowInsecureConnection=!0)),options.abortSignal&&(request.abortSignal=options.abortSignal),options.tracingOptions&&(request.tracingOptions=options.tracingOptions)}this._allowInsecureConnection&&(request.allowInsecureConnection=!0),request.streamResponseStatusCodes===void 0&&(request.streamResponseStatusCodes=getStreamingResponseStatusCodes(operationSpec));try{let rawResponse=await this.sendRequest(request),flatResponse=flattenResponse(rawResponse,operationSpec.responses[rawResponse.status]);return options?.onResponse&&options.onResponse(rawResponse,flatResponse),flatResponse}catch(error){if(typeof error=="object"&&error?.response){let rawResponse=error.response,flatResponse=flattenResponse(rawResponse,operationSpec.responses[error.statusCode]||operationSpec.responses.default);error.details=flatResponse,options?.onResponse&&options.onResponse(rawResponse,flatResponse,error)}throw error}}};function createDefaultPipeline2(options){let credentialScopes=getCredentialScopes(options),credentialOptions=options.credential&&credentialScopes?{credentialScopes,credential:options.credential}:void 0;return createClientPipeline({...options,credentialOptions})}function getCredentialScopes(options){if(options.credentialScopes)return options.credentialScopes;if(options.endpoint)return`${options.endpoint}/.default`;if(options.baseUri)return`${options.baseUri}/.default`;if(options.credential)throw new Error("When using credentials, the ServiceClientOptions must contain either a endpoint or a credentialScopes. Unable to create a bearerTokenAuthenticationPolicy")}var Constants={DefaultScope:"/.default",HeaderConstants:{AUTHORIZATION:"authorization"}};function isUuid(text){return/^[0-9a-fA-F]{8}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{4}\b-[0-9a-fA-F]{12}$/.test(text)}var authorizeRequestOnTenantChallenge=async challengeOptions=>{let requestOptions=requestToOptions(challengeOptions.request),challenge=getChallenge(challengeOptions.response);if(challenge){let challengeInfo=parseChallenge(challenge),challengeScopes=buildScopes(challengeOptions,challengeInfo),tenantId=extractTenantId(challengeInfo);if(!tenantId)return!1;let accessToken=await challengeOptions.getAccessToken(challengeScopes,{...requestOptions,tenantId});return accessToken?(challengeOptions.request.headers.set(Constants.HeaderConstants.AUTHORIZATION,`${accessToken.tokenType??"Bearer"} ${accessToken.token}`),!0):!1}return!1};function extractTenantId(challengeInfo){let tenantId=new URL(challengeInfo.authorization_uri).pathname.split("/")[1];if(tenantId&&isUuid(tenantId))return tenantId}function buildScopes(challengeOptions,challengeInfo){if(!challengeInfo.resource_id)return challengeOptions.scopes;let challengeScopes=new URL(challengeInfo.resource_id),scope=new URL(Constants.DefaultScope,challengeScopes.origin).toString();return scope==="https://disk.azure.com/.default"&&(scope="https://disk.azure.com//.default"),[scope]}function getChallenge(response){let challenge=response.headers.get("WWW-Authenticate");if(response.status===401&&challenge)return challenge}function parseChallenge(challenge){return`${challenge.slice(7).trim()} `.split(" ").filter(x=>x).map(keyValue=>(([key,value])=>({[key]:value}))(keyValue.trim().split("="))).reduce((a,b)=>({...a,...b}),{})}function requestToOptions(request){return{abortSignal:request.abortSignal,requestOptions:{timeout:request.timeout},tracingOptions:request.tracingOptions}}var originalRequestSymbol2=Symbol("Original PipelineRequest"),originalClientRequestSymbol=Symbol.for("@azure/core-client original request"),passThroughProps=new Set(["url","method","withCredentials","timeout","requestId","abortSignal","body","formData","onDownloadProgress","onUploadProgress","proxySettings","streamResponseStatusCodes","agent","requestOverrides"]);function toPipelineRequest(webResource,options={}){let request=webResource[originalRequestSymbol2],headers=createHttpHeaders2(webResource.headers.toJson({preserveCase:!0}));if(request)return request.headers=headers,request;{let newRequest=createPipelineRequest2({url:webResource.url,method:webResource.method,headers,withCredentials:webResource.withCredentials,timeout:webResource.timeout,requestId:webResource.requestId,abortSignal:webResource.abortSignal,body:webResource.body,formData:webResource.formData,disableKeepAlive:!!webResource.keepAlive,onDownloadProgress:webResource.onDownloadProgress,onUploadProgress:webResource.onUploadProgress,proxySettings:webResource.proxySettings,streamResponseStatusCodes:webResource.streamResponseStatusCodes,agent:webResource.agent,requestOverrides:webResource.requestOverrides});return options.originalRequest&&(newRequest[originalClientRequestSymbol]=options.originalRequest),newRequest}}function toWebResourceLike(request,options){let originalRequest=options?.originalRequest??request,webResource={url:request.url,method:request.method,headers:toHttpHeadersLike(request.headers),withCredentials:request.withCredentials,timeout:request.timeout,requestId:request.headers.get("x-ms-client-request-id")||request.requestId,abortSignal:request.abortSignal,body:request.body,formData:request.formData,keepAlive:!!request.disableKeepAlive,onDownloadProgress:request.onDownloadProgress,onUploadProgress:request.onUploadProgress,proxySettings:request.proxySettings,streamResponseStatusCodes:request.streamResponseStatusCodes,agent:request.agent,requestOverrides:request.requestOverrides,clone(){throw new Error("Cannot clone a non-proxied WebResourceLike")},prepare(){throw new Error("WebResourceLike.prepare() is not supported by @azure/core-http-compat")},validateRequestProperties(){}};return options?.createProxy?new Proxy(webResource,{get(target,prop,receiver){return prop===originalRequestSymbol2?request:prop==="clone"?()=>toWebResourceLike(toPipelineRequest(webResource,{originalRequest}),{createProxy:!0,originalRequest}):Reflect.get(target,prop,receiver)},set(target,prop,value,receiver){return prop==="keepAlive"&&(request.disableKeepAlive=!value),typeof prop=="string"&&passThroughProps.has(prop)&&(request[prop]=value),Reflect.set(target,prop,value,receiver)}}):webResource}function toHttpHeadersLike(headers){return new HttpHeaders(headers.toJSON({preserveCase:!0}))}function getHeaderKey(headerName){return headerName.toLowerCase()}var HttpHeaders=class _HttpHeaders{_headersMap;constructor(rawHeaders){if(this._headersMap={},rawHeaders)for(let headerName in rawHeaders)this.set(headerName,rawHeaders[headerName])}set(headerName,headerValue){this._headersMap[getHeaderKey(headerName)]={name:headerName,value:headerValue.toString()}}get(headerName){let header=this._headersMap[getHeaderKey(headerName)];return header?header.value:void 0}contains(headerName){return!!this._headersMap[getHeaderKey(headerName)]}remove(headerName){let result=this.contains(headerName);return delete this._headersMap[getHeaderKey(headerName)],result}rawHeaders(){return this.toJson({preserveCase:!0})}headersArray(){let headers=[];for(let headerKey in this._headersMap)headers.push(this._headersMap[headerKey]);return headers}headerNames(){let headerNames=[],headers=this.headersArray();for(let i=0;i{let response=await requestPolicyClient.sendRequest(toWebResourceLike(request,{createProxy:!0}));return toPipelineResponse(response)}}}var nameStartChar=":A-Za-z_\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD",nameChar=nameStartChar+"\\-.\\d\\u00B7\\u0300-\\u036F\\u203F-\\u2040",nameRegexp="["+nameStartChar+"]["+nameChar+"]*",regexName=new RegExp("^"+nameRegexp+"$");function getAllMatches(string,regex){let matches=[],match=regex.exec(string);for(;match;){let allmatches=[];allmatches.startIndex=regex.lastIndex-match[0].length;let len=match.length;for(let index=0;index"u")};function isExist(v){return typeof v<"u"}var DANGEROUS_PROPERTY_NAMES=["hasOwnProperty","toString","valueOf","__defineGetter__","__defineSetter__","__lookupGetter__","__lookupSetter__"],criticalProperties=["__proto__","constructor","prototype"];var defaultOptions={allowBooleanAttributes:!1,unpairedTags:[]};function validate(xmlData,options){options=Object.assign({},defaultOptions,options);let tags2=[],tagFound=!1,reachedRoot=!1;xmlData[0]==="\uFEFF"&&(xmlData=xmlData.substr(1));for(let i=0;i"&&xmlData[i]!==" "&&xmlData[i]!==" "&&xmlData[i]!==` +`&&xmlData[i]!=="\r";i++)tagName+=xmlData[i];if(tagName=tagName.trim(),tagName[tagName.length-1]==="/"&&(tagName=tagName.substring(0,tagName.length-1),i--),!validateTagName(tagName)){let msg;return tagName.trim().length===0?msg="Invalid space after '<'.":msg="Tag '"+tagName+"' is an invalid name.",getErrorObject("InvalidTag",msg,getLineNumberForPosition(xmlData,i))}let result=readAttributeStr(xmlData,i);if(result===!1)return getErrorObject("InvalidAttr","Attributes for '"+tagName+"' have open quote.",getLineNumberForPosition(xmlData,i));let attrStr=result.value;if(i=result.index,attrStr[attrStr.length-1]==="/"){let attrStrStart=i-attrStr.length;attrStr=attrStr.substring(0,attrStr.length-1);let isValid=validateAttributeString(attrStr,options);if(isValid===!0)tagFound=!0;else return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,attrStrStart+isValid.err.line))}else if(closingTag)if(result.tagClosed){if(attrStr.trim().length>0)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' can't have attributes or invalid starting.",getLineNumberForPosition(xmlData,tagStartPos));if(tags2.length===0)return getErrorObject("InvalidTag","Closing tag '"+tagName+"' has not been opened.",getLineNumberForPosition(xmlData,tagStartPos));{let otg=tags2.pop();if(tagName!==otg.tagName){let openPos=getLineNumberForPosition(xmlData,otg.tagStartPos);return getErrorObject("InvalidTag","Expected closing tag '"+otg.tagName+"' (opened in line "+openPos.line+", col "+openPos.col+") instead of closing tag '"+tagName+"'.",getLineNumberForPosition(xmlData,tagStartPos))}tags2.length==0&&(reachedRoot=!0)}}else return getErrorObject("InvalidTag","Closing tag '"+tagName+"' doesn't have proper closing.",getLineNumberForPosition(xmlData,i));else{let isValid=validateAttributeString(attrStr,options);if(isValid!==!0)return getErrorObject(isValid.err.code,isValid.err.msg,getLineNumberForPosition(xmlData,i-attrStr.length+isValid.err.line));if(reachedRoot===!0)return getErrorObject("InvalidXml","Multiple possible root nodes found.",getLineNumberForPosition(xmlData,i));options.unpairedTags.indexOf(tagName)!==-1||tags2.push({tagName,tagStartPos}),tagFound=!0}for(i++;i0)return getErrorObject("InvalidXml","Invalid '"+JSON.stringify(tags2.map(t=>t.tagName),null,4).replace(/\r?\n/g,"")+"' found.",{line:1,col:1})}else return getErrorObject("InvalidXml","Start tag expected.",1);return!0}function isWhiteSpace(char){return char===" "||char===" "||char===` +`||char==="\r"}function readPI(xmlData,i){let start=i;for(;i5&&tagname==="xml")return getErrorObject("InvalidXml","XML declaration allowed only at the start of the document.",getLineNumberForPosition(xmlData,i));if(xmlData[i]=="?"&&xmlData[i+1]==">"){i++;break}else continue}return i}function readCommentAndCDATA(xmlData,i){if(xmlData.length>i+5&&xmlData[i+1]==="-"&&xmlData[i+2]==="-"){for(i+=3;i"){i+=2;break}}else if(xmlData.length>i+8&&xmlData[i+1]==="D"&&xmlData[i+2]==="O"&&xmlData[i+3]==="C"&&xmlData[i+4]==="T"&&xmlData[i+5]==="Y"&&xmlData[i+6]==="P"&&xmlData[i+7]==="E"){let angleBracketsCount=1;for(i+=8;i"&&(angleBracketsCount--,angleBracketsCount===0))break}else if(xmlData.length>i+9&&xmlData[i+1]==="["&&xmlData[i+2]==="C"&&xmlData[i+3]==="D"&&xmlData[i+4]==="A"&&xmlData[i+5]==="T"&&xmlData[i+6]==="A"&&xmlData[i+7]==="["){for(i+=8;i"){i+=2;break}}return i}var doubleQuote='"',singleQuote="'";function readAttributeStr(xmlData,i){let attrStr="",startChar="",tagClosed=!1;for(;i"&&startChar===""){tagClosed=!0;break}attrStr+=xmlData[i]}return startChar!==""?!1:{value:attrStr,index:i,tagClosed}}function scanAttributeTokens(attrStr){let tokens=[],len=attrStr.length,i=0;for(;i=len)break;if(attrStr[i]==="="){i=tokenStart+1;continue}let leadingWs=attrStr.slice(tokenStart,i),nameStart=i;for(;i",lt:"<",quot:'"'},COMMON_HTML={nbsp:"\xA0",copy:"\xA9",reg:"\xAE",trade:"\u2122",mdash:"\u2014",ndash:"\u2013",hellip:"\u2026",laquo:"\xAB",raquo:"\xBB",lsquo:"\u2018",rsquo:"\u2019",ldquo:"\u201C",rdquo:"\u201D",bull:"\u2022",para:"\xB6",sect:"\xA7",deg:"\xB0",frac12:"\xBD",frac14:"\xBC",frac34:"\xBE"};var ENTITY_ACTION=Object.freeze({ALLOW:"allow",BLOCK:"block",THROW:"throw"}),SPECIAL_CHARS=new Set("!?\\\\/[]$%{}^&*()<>|+");function validateEntityName(name){if(name[0]==="#")throw new Error(`[EntityReplacer] Invalid character '#' in entity name: "${name}"`);for(let ch of name)if(SPECIAL_CHARS.has(ch))throw new Error(`[EntityReplacer] Invalid character '${ch}' in entity name: "${name}"`);return name}function mergeEntityMaps(...maps){let out=Object.create(null);for(let map of maps)if(map)for(let key of Object.keys(map)){let raw=map[key];if(typeof raw=="string")out[key]=raw;else if(raw&&typeof raw=="object"&&raw.val!==void 0){let val=raw.val;typeof val=="string"&&(out[key]=val)}}return out}var LIMIT_TIER_EXTERNAL="external",LIMIT_TIER_BASE="base",LIMIT_TIER_ALL="all";function parseLimitTiers(raw){return!raw||raw===LIMIT_TIER_EXTERNAL?new Set([LIMIT_TIER_EXTERNAL]):raw===LIMIT_TIER_ALL?new Set([LIMIT_TIER_ALL]):raw===LIMIT_TIER_BASE?new Set([LIMIT_TIER_BASE]):Array.isArray(raw)?new Set(raw):new Set([LIMIT_TIER_EXTERNAL])}var NCR_LEVEL=Object.freeze({allow:0,leave:1,remove:2,throw:3}),XML10_ALLOWED_C0=new Set([9,10,13]);function parseNCRConfig(ncr){if(!ncr)return{xmlVersion:1,onLevel:NCR_LEVEL.allow,nullLevel:NCR_LEVEL.remove};let xmlVersion=ncr.xmlVersion===1.1?1.1:1,onLevel=NCR_LEVEL[ncr.onNCR]??NCR_LEVEL.allow,nullLevel=NCR_LEVEL[ncr.nullNCR]??NCR_LEVEL.remove,clampedNull=Math.max(nullLevel,NCR_LEVEL.remove);return{xmlVersion,onLevel,nullLevel:clampedNull}}var EntityDecoder=class{constructor(options={}){this._limit=options.limit||{},this._maxTotalExpansions=this._limit.maxTotalExpansions||0,this._maxExpandedLength=this._limit.maxExpandedLength||0,this._postCheck=typeof options.postCheck=="function"?options.postCheck:r=>r,this._limitTiers=parseLimitTiers(this._limit.applyLimitsTo??LIMIT_TIER_EXTERNAL),this._numericAllowed=options.numericAllowed??!0,this._baseMap=mergeEntityMaps(XML,options.namedEntities||null),this._externalMap=Object.create(null),this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this._removeSet=new Set(options.remove&&Array.isArray(options.remove)?options.remove:[]),this._leaveSet=new Set(options.leave&&Array.isArray(options.leave)?options.leave:[]);let ncrCfg=parseNCRConfig(options.ncr);this._ncrXmlVersion=ncrCfg.xmlVersion,this._ncrOnLevel=ncrCfg.onLevel,this._ncrNullLevel=ncrCfg.nullLevel,this._onExternalEntity=typeof options.onExternalEntity=="function"?options.onExternalEntity:null,this._onInputEntity=typeof options.onInputEntity=="function"?options.onInputEntity:null}_applyRegistrationHook(hook,name,value,context3){if(!hook)return!0;let action5=hook(name,value);if(action5===ENTITY_ACTION.BLOCK)return!1;if(action5===ENTITY_ACTION.THROW)throw new Error(`[EntityDecoder] Registration of ${context3} entity "&${name};" was rejected by hook`);return!0}setExternalEntities(map){if(map)for(let key of Object.keys(map))validateEntityName(key);if(!this._onExternalEntity){this._externalMap=mergeEntityMaps(map);return}let flat=mergeEntityMaps(map),filtered=Object.create(null);for(let[name,value]of Object.entries(flat))this._applyRegistrationHook(this._onExternalEntity,name,value,"external")&&(filtered[name]=value);this._externalMap=filtered}addExternalEntity(key,value){validateEntityName(key),typeof value=="string"&&value.indexOf("&")===-1&&this._applyRegistrationHook(this._onExternalEntity,key,value,"external")&&(this._externalMap[key]=value)}addInputEntities(map){if(this._totalExpansions=0,this._expandedLength=0,!this._onInputEntity){this._inputMap=mergeEntityMaps(map);return}let flat=mergeEntityMaps(map),filtered=Object.create(null);for(let[name,value]of Object.entries(flat))this._applyRegistrationHook(this._onInputEntity,name,value,"input")&&(filtered[name]=value);this._inputMap=filtered}reset(){return this._inputMap=Object.create(null),this._totalExpansions=0,this._expandedLength=0,this}setXmlVersion(version2){this._ncrXmlVersion=version2===1.1?1.1:1}decode(str){if(typeof str!="string"||str.length===0||str.indexOf("&")===-1)return str;let original=str,chunks=[],len=str.length,last=0,i=0,limitExpansions=this._maxTotalExpansions>0,limitLength=this._maxExpandedLength>0,checkLimits=limitExpansions||limitLength;for(;i=len||str.charCodeAt(j)!==59){i++;continue}let token=str.slice(i+1,j);if(token.length===0){i++;continue}let replacement,tier2;if(this._removeSet.has(token))replacement="",tier2===void 0&&(tier2=LIMIT_TIER_EXTERNAL);else if(this._leaveSet.has(token)){i++;continue}else if(token.charCodeAt(0)===35){let ncrResult=this._resolveNCR(token);if(ncrResult===void 0){i++;continue}replacement=ncrResult,tier2=LIMIT_TIER_BASE}else{let resolved=this._resolveName(token);replacement=resolved?.value,tier2=resolved?.tier}if(replacement===void 0){i++;continue}if(i>last&&chunks.push(str.slice(last,i)),chunks.push(replacement),last=j+1,i=last,checkLimits&&this._tierCounts(tier2)){if(limitExpansions&&(this._totalExpansions++,this._totalExpansions>this._maxTotalExpansions))throw new Error(`[EntityReplacer] Entity expansion count limit exceeded: ${this._totalExpansions} > ${this._maxTotalExpansions}`);if(limitLength){let delta=replacement.length-(token.length+2);if(delta>0&&(this._expandedLength+=delta,this._expandedLength>this._maxExpandedLength))throw new Error(`[EntityReplacer] Expanded content length limit exceeded: ${this._expandedLength} > ${this._maxExpandedLength}`)}}}last=55296&&cp<=57343||this._ncrXmlVersion===1&&cp>=1&&cp<=31&&!XML10_ALLOWED_C0.has(cp)?NCR_LEVEL.remove:-1}_applyNCRAction(action5,token,cp){switch(action5){case NCR_LEVEL.allow:return String.fromCodePoint(cp);case NCR_LEVEL.remove:return"";case NCR_LEVEL.leave:return;case NCR_LEVEL.throw:throw new Error(`[EntityDecoder] Prohibited numeric character reference &${token}; (U+${cp.toString(16).toUpperCase().padStart(4,"0")})`);default:return String.fromCodePoint(cp)}}_resolveNCR(token){let second=token.charCodeAt(1),cp;if(second===120||second===88?cp=parseInt(token.slice(2),16):cp=parseInt(token.slice(1),10),Number.isNaN(cp)||cp<0||cp>1114111)return;let minimum=this._classifyNCR(cp);if(!this._numericAllowed&&minimumDANGEROUS_PROPERTY_NAMES.includes(name)?"__"+name:name,defaultOptions2={preserveOrder:!1,attributeNamePrefix:"@_",attributesGroupName:!1,textNodeName:"#text",ignoreAttributes:!0,removeNSPrefix:!1,allowBooleanAttributes:!1,parseTagValue:!0,parseAttributeValue:!1,trimValues:!0,cdataPropName:!1,numberParseOptions:{hex:!0,leadingZeros:!0,eNotation:!0,unicode:!1},tagValueProcessor:function(tagName,val){return val},attributeValueProcessor:function(attrName,val){return val},stopNodes:[],alwaysCreateTextNode:!1,isArray:()=>!1,commentPropName:!1,unpairedTags:[],processEntities:!0,htmlEntities:!1,entityDecoder:null,ignoreDeclaration:!1,ignorePiTags:!1,transformTagName:!1,transformAttributeName:!1,updateTag:function(tagName,jPath,attrs){return tagName},captureMetaData:!1,maxNestedTags:100,strictReservedNames:!0,jPath:!0,onDangerousProperty:defaultOnDangerousProperty};function validatePropertyName(propertyName,optionName){if(typeof propertyName!="string")return;let normalized=propertyName.toLowerCase();if(DANGEROUS_PROPERTY_NAMES.some(dangerous=>normalized===dangerous.toLowerCase()))throw new Error(`[SECURITY] Invalid ${optionName}: "${propertyName}" is a reserved JavaScript keyword that could cause prototype pollution`);if(criticalProperties.some(dangerous=>normalized===dangerous.toLowerCase()))throw new Error(`[SECURITY] Invalid ${optionName}: "${propertyName}" is a reserved JavaScript keyword that could cause prototype pollution`)}function normalizeProcessEntities(value,htmlEntities){return typeof value=="boolean"?{enabled:value,maxEntitySize:1e4,maxExpansionDepth:1e4,maxTotalExpansions:1/0,maxExpandedLength:1e5,maxEntityCount:1e3,allowedTags:null,tagFilter:null,appliesTo:"all"}:typeof value=="object"&&value!==null?{enabled:value.enabled!==!1,maxEntitySize:Math.max(1,value.maxEntitySize??1e4),maxExpansionDepth:Math.max(1,value.maxExpansionDepth??1e4),maxTotalExpansions:Math.max(1,value.maxTotalExpansions??1/0),maxExpandedLength:Math.max(1,value.maxExpandedLength??1e5),maxEntityCount:Math.max(1,value.maxEntityCount??1e3),allowedTags:value.allowedTags??null,tagFilter:value.tagFilter??null,appliesTo:value.appliesTo??"all"}:normalizeProcessEntities(!0)}var buildOptions=function(options){let built=Object.assign({},defaultOptions2,options),propertyNameOptions=[{value:built.attributeNamePrefix,name:"attributeNamePrefix"},{value:built.attributesGroupName,name:"attributesGroupName"},{value:built.textNodeName,name:"textNodeName"},{value:built.cdataPropName,name:"cdataPropName"},{value:built.commentPropName,name:"commentPropName"}];for(let{value,name}of propertyNameOptions)value&&validatePropertyName(value,name);return built.onDangerousProperty===null&&(built.onDangerousProperty=defaultOnDangerousProperty),built.processEntities=normalizeProcessEntities(built.processEntities,built.htmlEntities),built.unpairedTagsSet=new Set(built.unpairedTags),built.stopNodes&&Array.isArray(built.stopNodes)&&(built.stopNodes=built.stopNodes.map(node=>typeof node=="string"&&node.startsWith("*.")?".."+node.substring(2):node)),built};var METADATA_SYMBOL;typeof Symbol!="function"?METADATA_SYMBOL="@@xmlMetadata":METADATA_SYMBOL=Symbol("XML Node Metadata");var XmlNode=class{constructor(tagname){this.tagname=tagname,this.child=[],this[":@"]=Object.create(null)}add(key,val){key==="__proto__"&&(key="#__proto__"),this.child.push({[key]:val})}addChild(node,startIndex){node.tagname==="__proto__"&&(node.tagname="#__proto__"),node[":@"]&&Object.keys(node[":@"]).length>0?this.child.push({[node.tagname]:node.child,":@":node[":@"]}):this.child.push({[node.tagname]:node.child}),this.addStartIndex(startIndex)}addStartIndex(startIndex){startIndex!==void 0&&(this.child[this.child.length-1][METADATA_SYMBOL]={startIndex})}addEndIndex(endIndex){let lastChild=this.child[this.child.length-1];lastChild!==void 0&&lastChild[METADATA_SYMBOL]!==void 0&&lastChild[METADATA_SYMBOL].endIndex===void 0&&(lastChild[METADATA_SYMBOL].endIndex=endIndex)}static getMetaDataSymbol(){return METADATA_SYMBOL}};var nameStartChar10=":A-Za-z_\xC0-\xD6\xD8-\xF6\xF8-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD",nameChar10=nameStartChar10+"\\-\\.\\d\xB7\u0300-\u036F\u203F-\u2040",nameStartChar11=":A-Za-z_\xC0-\u02FF\u0370-\u037D\u037F-\u0486\u0488-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD\u{10000}-\u{EFFFF}",nameChar11=nameStartChar11+"\\-\\.\\d\xB7\u0300-\u036F\u0487\u203F-\u2040",buildRegexes=(startChar,char,flags="")=>{let ncStart=startChar.replace(":",""),ncChar=char.replace(":",""),ncNamePat=`[${ncStart}][${ncChar}]*`;return{name:new RegExp(`^[${startChar}][${char}]*$`,flags),ncName:new RegExp(`^${ncNamePat}$`,flags),qName:new RegExp(`^${ncNamePat}(?::${ncNamePat})?$`,flags),nmToken:new RegExp(`^[${char}]+$`,flags),nmTokens:new RegExp(`^[${char}]+(?:\\s+[${char}]+)*$`,flags)}},regexes10=buildRegexes(nameStartChar10,nameChar10),regexes11=buildRegexes(nameStartChar11,nameChar11,"u"),nameStartCharAscii=":A-Za-z_",nameCharAscii=nameStartCharAscii+"\\-\\.\\d",regexesAscii=buildRegexes(nameStartCharAscii,nameCharAscii),getRegexes=(xmlVersion="1.0",asciiOnly=!1)=>asciiOnly?regexesAscii:xmlVersion==="1.1"?regexes11:regexes10;var qName=(str,{xmlVersion="1.0",asciiOnly=!1}={})=>getRegexes(xmlVersion,asciiOnly).qName.test(str);var PRODUCTIONS=["name","ncName","qName","nmToken","nmTokens"],createValidator=(production,{xmlVersion="1.0",asciiOnly=!1,maxCacheSize=2048}={})=>{if(!PRODUCTIONS.includes(production))throw new TypeError(`Unknown production "${production}". Must be one of: ${PRODUCTIONS.join(", ")}`);let regex=getRegexes(xmlVersion,asciiOnly)[production],cache=new Map,validator=str=>{let cached=cache.get(str);if(cached!==void 0)return cached;let result=regex.test(str);return cache.size{cache=new Map},validator};var DocTypeReader=class{constructor(options,xmlVersion){this.suppressValidationErr=!options,this.options=options,this.xmlVersion=xmlVersion||1}setXmlVersion(xmlVersion=1){this.xmlVersion=xmlVersion}readDocType(xmlData,i){let entities=Object.create(null),entityCount=0;if(xmlData[i+3]==="O"&&xmlData[i+4]==="C"&&xmlData[i+5]==="T"&&xmlData[i+6]==="Y"&&xmlData[i+7]==="P"&&xmlData[i+8]==="E"){i=i+9;let angleBracketsCount=1,hasBody=!1,comment=!1,quoteChar=null,exp="";for(;i=this.options.maxEntityCount)throw new Error(`Entity count (${entityCount+1}) exceeds maximum allowed (${this.options.maxEntityCount})`);entities[entityName]=val,entityCount++}}else if(hasBody&&hasSeq(xmlData,"!ELEMENT",i)){i+=8;let{index}=this.readElementExp(xmlData,i+1);i=index}else if(hasBody&&hasSeq(xmlData,"!ATTLIST",i))i+=8;else if(hasBody&&hasSeq(xmlData,"!NOTATION",i)){i+=9;let{index}=this.readNotationExp(xmlData,i+1,this.suppressValidationErr);i=index}else if(hasSeq(xmlData,"!--",i))comment=!0;else throw new Error("Invalid DOCTYPE");angleBracketsCount++,exp=""}else if(xmlData[i]===">"){if(comment?xmlData[i-1]==="-"&&xmlData[i-2]==="-"&&(comment=!1,angleBracketsCount--):angleBracketsCount--,angleBracketsCount===0)break}else xmlData[i]==="["?hasBody=!0:exp+=xmlData[i]}if(quoteChar!==null||angleBracketsCount!==0)throw new Error("Unclosed DOCTYPE")}else throw new Error("Invalid Tag instead of DOCTYPE");return{entities,i}}readEntityExp(xmlData,i){i=skipWhitespace(xmlData,i);let startIndex=i;for(;ithis.options.maxEntitySize)throw new Error(`Entity "${entityName}" size (${entityValue.length}) exceeds maximum allowed size (${this.options.maxEntitySize})`);return i--,[entityName,entityValue,i]}readNotationExp(xmlData,i){i=skipWhitespace(xmlData,i);let startIndex=i;for(;i{for(;index=CHAR_0&&cc<=CHAR_9||cc===CHAR_MINUS)){if(cc=55296&&cc<=56319){if(i+1=56320&&low<=57343){let cp=65536+(cc-55296<<10)+(low-56320);if(HIGH_MAP.has(cp)){firstHit=i;break}}}continue}if(TABLE[cc-TABLE_OFFSET]!==NOT_DIGIT||MINUS_SET.has(cc)){firstHit=i;break}}}if(firstHit===-1)return str;let chars=[];firstHit>0&&chars.push(str.slice(0,firstHit));for(let i=firstHit;i=CHAR_0&&cc<=CHAR_9||cc===CHAR_MINUS){chars.push(str[i]);continue}if(cc=55296&&cc<=56319){if(i+1=56320&&low<=57343){let cp=65536+(cc-55296<<10)+(low-56320),d2=HIGH_MAP.get(cp);if(d2!==void 0){chars.push(String.fromCharCode(d2+48)),i++;continue}}}chars.push(str[i]);continue}if(MINUS_SET.has(cc)){chars.push("-");continue}let d=TABLE[cc-TABLE_OFFSET];chars.push(d!==NOT_DIGIT?String.fromCharCode(d+48):str[i])}return chars.join("")}var anynum_default=anynum;var hexRegex=/^[-+]?0x[a-fA-F0-9]+$/,binRegex=/^0b[01]+$/,octRegex=/^0o[0-7]+$/,numRegex=/^([\-\+])?(0*)([0-9]*(\.[0-9]*)?)$/,consider={hex:!0,binary:!1,octal:!1,leadingZeros:!0,decimalPoint:".",eNotation:!0,infinity:"original",unicode:!1};function toNumber(str,options={}){if(options=Object.assign({},consider,options),!str||typeof str!="string")return str;let trimmedStr=str.trim();if(trimmedStr.length===0)return str;if(options.skipLike!==void 0&&options.skipLike.test(trimmedStr))return str;if(trimmedStr==="0"||options.unicode&&(trimmedStr=anynum_default(trimmedStr),trimmedStr==="0"))return 0;if(options.hex&&hexRegex.test(trimmedStr))return parse_int(trimmedStr,16);if(options.binary&&binRegex.test(trimmedStr))return parse_int(trimmedStr,2);if(options.octal&&octRegex.test(trimmedStr))return parse_int(trimmedStr,8);if(isFinite(trimmedStr)){if(trimmedStr.includes("e")||trimmedStr.includes("E"))return resolveEnotation(str,trimmedStr,options);{let match=numRegex.exec(trimmedStr);if(match){let sign=match[1]||"",leadingZeros=match[2],numTrimmedByZeros=trimZeros(match[3]),decimalAdjacentToLeadingZeros=sign?trimmedStr[leadingZeros.length+1]===".":trimmedStr[leadingZeros.length]===".";if(!options.leadingZeros&&(leadingZeros.length>1||leadingZeros.length===1&&!decimalAdjacentToLeadingZeros))return str;{let num=Number(trimmedStr),parsedStr=String(num);if(num===0)return num;if(parsedStr.search(/[eE]/)!==-1)return options.eNotation?num:str;if(trimmedStr.indexOf(".")!==-1)return parsedStr==="0"||parsedStr===numTrimmedByZeros||parsedStr===`${sign}${numTrimmedByZeros}`?num:str;let n=leadingZeros?numTrimmedByZeros:trimmedStr;return leadingZeros?n===parsedStr||sign+n===parsedStr?num:str:n===parsedStr||n===sign+parsedStr?num:str}}else return str}}else{let num=Number(trimmedStr);return Number.isNaN(num)?str:handleInfinity(str,num,options)}}var eNotationRegx=/^([-+])?(0*)(\d*(\.\d*)?[eE][-\+]?\d+)$/;function resolveEnotation(str,trimmedStr,options){if(!options.eNotation)return str;let notation=trimmedStr.match(eNotationRegx);if(notation){let sign=notation[1]||"",eChar=notation[3].indexOf("e")===-1?"E":"e",leadingZeros=notation[2],eAdjacentToLeadingZeros=sign?trimmedStr[leadingZeros.length+1]===eChar:trimmedStr[leadingZeros.length]===eChar;return leadingZeros.length>1&&eAdjacentToLeadingZeros?str:leadingZeros.length===1&&(notation[3].startsWith(`.${eChar}`)||notation[3][0]===eChar)?Number(trimmedStr):leadingZeros.length>0?options.leadingZeros&&!eAdjacentToLeadingZeros?Number(trimmedStr):str:Number(trimmedStr)}else return str}function trimZeros(numStr){if(numStr&&numStr.indexOf(".")!==-1){let end=numStr.length;for(;end>0&&numStr.charCodeAt(end-1)===48;)end--;return numStr=numStr.slice(0,end),numStr==="."?numStr="0":numStr[0]==="."?numStr="0"+numStr:numStr[numStr.length-1]==="."&&(numStr=numStr.substring(0,numStr.length-1)),numStr}return numStr}function parse_int(numStr,base){let str=numStr.trim();if((base===2||base===8)&&(numStr=str.substring(2)),parseInt)return parseInt(numStr,base);if(Number.parseInt)return Number.parseInt(numStr,base);if(window&&window.parseInt)return window.parseInt(numStr,base);throw new Error("parseInt, Number.parseInt, window.parseInt are not supported")}function handleInfinity(str,num,options){let isPositive=num===1/0;switch(options.infinity.toLowerCase()){case"null":return null;case"infinity":return num;case"string":return isPositive?"Infinity":"-Infinity";case"original":default:return str}}function getIgnoreAttributesFn(ignoreAttributes){return typeof ignoreAttributes=="function"?ignoreAttributes:Array.isArray(ignoreAttributes)?attrName=>{for(let pattern of ignoreAttributes)if(typeof pattern=="string"&&attrName===pattern||pattern instanceof RegExp&&pattern.test(attrName))return!0}:()=>!1}var Expression=class{constructor(pattern,options={},data){this.pattern=pattern,this.separator=options.separator||".",this.segments=this._parse(pattern),this.data=data,this._hasDeepWildcard=this.segments.some(seg=>seg.type==="deep-wildcard"),this._hasAttributeCondition=this.segments.some(seg=>seg.attrName!==void 0),this._hasPositionSelector=this.segments.some(seg=>seg.position!==void 0)}_parse(pattern){let segments=[],i=0,currentPart="";for(;i0?path[path.length-1].tag:void 0}getCurrentNamespace(){let path=this._matcher.path;return path.length>0?path[path.length-1].namespace:void 0}getAttrValue(attrName){let path=this._matcher.path;if(path.length!==0)return path[path.length-1].values?.[attrName]}hasAttr(attrName){let path=this._matcher.path;if(path.length===0)return!1;let current=path[path.length-1];return current.values!==void 0&&attrName in current.values}getAnyParentAttr(attrName){return this._matcher.getAnyParentAttr(attrName)}hasAnyParentAttr(attrName){return this._matcher.hasAnyParentAttr(attrName)}getPosition(){let path=this._matcher.path;return path.length===0?-1:path[path.length-1].position??0}getCounter(){let path=this._matcher.path;return path.length===0?-1:path[path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this._matcher.path.length}toString(separator,includeNamespace=!0){return this._matcher.toString(separator,includeNamespace)}toArray(){return this._matcher.path.map(n=>n.tag)}matches(expression){return this._matcher.matches(expression)}matchesAny(exprSet){return exprSet.matchesAny(this._matcher)}},Matcher=class{constructor(options={}){this.separator=options.separator||".",this.path=[],this.siblingStacks=[],this._pathStringCache=null,this._view=new MatcherView(this),this._keptAttrs=[]}push(tagName,attrValues=null,namespace=null,options=null){this._pathStringCache=null,this.path.length>0&&(this.path[this.path.length-1].values=void 0);let currentLevel=this.path.length,level=this.siblingStacks[currentLevel];level||(level={counts:new Map,total:0},this.siblingStacks[currentLevel]=level);let siblingKey=namespace?`${namespace}:${tagName}`:tagName,counter=level.counts.get(siblingKey)||0,position=level.total;level.counts.set(siblingKey,counter+1),level.total++;let node={tag:tagName,position,counter};namespace!=null&&(node.namespace=namespace),attrValues!=null&&(node.values=attrValues),this.path.push(node);let depth=this.path.length,keep=options!==null?options.keep:null;if(keep!=null&&keep.length>0&&attrValues)for(let i=0;ithis.path.length+1&&(this.siblingStacks.length=this.path.length+1);let poppedDepth=this.path.length+1;for(;this._keptAttrs.length>0&&this._keptAttrs[this._keptAttrs.length-1].depth>=poppedDepth;)this._keptAttrs.pop();return node}updateCurrent(attrValues){if(this.path.length>0){let current=this.path[this.path.length-1];attrValues!=null&&(current.values=attrValues)}}getCurrentTag(){return this.path.length>0?this.path[this.path.length-1].tag:void 0}getCurrentNamespace(){return this.path.length>0?this.path[this.path.length-1].namespace:void 0}getAttrValue(attrName){if(this.path.length!==0)return this.path[this.path.length-1].values?.[attrName]}hasAttr(attrName){if(this.path.length===0)return!1;let current=this.path[this.path.length-1];return current.values!==void 0&&attrName in current.values}getAnyParentAttr(attrName){let kept=this._keptAttrs;for(let i=kept.length-1;i>=0;i--)if(kept[i].name===attrName)return kept[i].value}hasAnyParentAttr(attrName){let kept=this._keptAttrs;for(let i=kept.length-1;i>=0;i--)if(kept[i].name===attrName)return!0;return!1}getPosition(){return this.path.length===0?-1:this.path[this.path.length-1].position??0}getCounter(){return this.path.length===0?-1:this.path[this.path.length-1].counter??0}getIndex(){return this.getPosition()}getDepth(){return this.path.length}toString(separator,includeNamespace=!0){let sep2=separator||this.separator;if(sep2===this.separator&&includeNamespace===!0){if(this._pathStringCache!==null)return this._pathStringCache;let result=this.path.map(n=>n.namespace?`${n.namespace}:${n.tag}`:n.tag).join(sep2);return this._pathStringCache=result,result}return this.path.map(n=>includeNamespace&&n.namespace?`${n.namespace}:${n.tag}`:n.tag).join(sep2)}toArray(){return this.path.map(n=>n.tag)}reset(){this._pathStringCache=null,this.path=[],this.siblingStacks=[],this._keptAttrs=[]}matches(expression){let segments=expression.segments;return segments.length===0?!1:expression.hasDeepWildcard()?this._matchWithDeepWildcard(segments):this._matchSimple(segments)}_matchSimple(segments){if(this.path.length!==segments.length)return!1;for(let i=0;i=0&&pathIdx>=0;){let segment=segments[segIdx];if(segment.type==="deep-wildcard"){if(segIdx--,segIdx<0)return!0;let nextSeg=segments[segIdx],found=!1;for(let i=pathIdx;i>=0;i--)if(this._matchSegment(nextSeg,this.path[i],i===this.path.length-1)){pathIdx=i-1,segIdx--,found=!0;break}if(!found)return!1}else{if(!this._matchSegment(segment,this.path[pathIdx],pathIdx===this.path.length-1))return!1;pathIdx--,segIdx--}}return segIdx<0}_matchSegment(segment,node,isCurrentNode){if(segment.tag!=="*"&&segment.tag!==node.tag||segment.namespace!==void 0&&segment.namespace!=="*"&&segment.namespace!==node.namespace||segment.attrName!==void 0&&(!isCurrentNode||!node.values||!(segment.attrName in node.values)||segment.attrValue!==void 0&&String(node.values[segment.attrName])!==String(segment.attrValue)))return!1;if(segment.position!==void 0){if(!isCurrentNode)return!1;let counter=node.counter??0;if(segment.position==="first"&&counter!==0)return!1;if(segment.position==="odd"&&counter%2!==1)return!1;if(segment.position==="even"&&counter%2!==0)return!1;if(segment.position==="nth"&&counter!==segment.positionValue)return!1}return!0}matchesAny(exprSet){return exprSet.matchesAny(this)}snapshot(){return{path:this.path.map(node=>({...node})),siblingStacks:this.siblingStacks.map(level=>level&&{counts:new Map(level.counts),total:level.total}),keptAttrs:this._keptAttrs.map(entry=>({...entry}))}}restore(snapshot2){this._pathStringCache=null,this.path=snapshot2.path.map(node=>({...node})),this.siblingStacks=snapshot2.siblingStacks.map(level=>level&&{counts:new Map(level.counts),total:level.total}),this._keptAttrs=(snapshot2.keptAttrs||[]).map(entry=>({...entry}))}readOnly(){return this._view}};var HTML_PATTERNS=[{id:"html-script-open",description:"]/i},{id:"html-javascript-protocol",description:"javascript: URI scheme (with optional whitespace/encoding)",pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:"html-vbscript-protocol",description:"vbscript: URI scheme",pattern:/vbscript[\t\n\r ]*:/i},{id:"html-data-html",description:"data:text/html URI \u2014 can execute scripts in browsers",pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:"html-data-xhtml",description:"data:application/xhtml+xml URI",pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:"html-data-svg",description:"data:image/svg+xml URI \u2014 can execute scripts",pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:"html-inline-event-handler",description:"Inline event handler attributes: onclick=, onerror=, onload=, etc.",pattern:/\bon\w{1,30}\s*=/i},{id:"html-entity-obfuscated-script",description:"HTML-entity-encoded ]/i},{id:"html-javascript-protocol",description:"javascript: URI scheme (with optional whitespace/encoding)",pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:"html-vbscript-protocol",description:"vbscript: URI scheme",pattern:/vbscript[\t\n\r ]*:/i},{id:"html-data-html",description:"data:text/html URI \u2014 can execute scripts in browsers",pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:"html-data-xhtml",description:"data:application/xhtml+xml URI",pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:"html-data-svg",description:"data:image/svg+xml URI \u2014 can execute scripts",pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:"html-inline-event-handler",description:"Inline event handler attributes: onclick=, onerror=, onload=, etc.",pattern:/\bon\w{1,30}\s*=/i},{id:"html-entity-obfuscated-script",description:"HTML-entity-encoded ]/i},{id:"html-javascript-protocol",description:"javascript: URI scheme (with optional whitespace/encoding)",pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:"html-vbscript-protocol",description:"vbscript: URI scheme",pattern:/vbscript[\t\n\r ]*:/i},{id:"html-data-html",description:"data:text/html URI \u2014 can execute scripts in browsers",pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:"html-data-xhtml",description:"data:application/xhtml+xml URI",pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:"html-data-svg",description:"data:image/svg+xml URI \u2014 can execute scripts",pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:"html-inline-event-handler",description:"Inline event handler attributes: onclick=, onerror=, onload=, etc.",pattern:/\bon\w{1,30}\s*=/i},{id:"html-entity-obfuscated-script",description:"HTML-entity-encoded ]/i},{id:"html-javascript-protocol",description:"javascript: URI scheme (with optional whitespace/encoding)",pattern:/j[\t\n\r ]*a[\t\n\r ]*v[\t\n\r ]*a[\t\n\r ]*s[\t\n\r ]*c[\t\n\r ]*r[\t\n\r ]*i[\t\n\r ]*p[\t\n\r ]*t[\t\n\r ]*:/i},{id:"html-vbscript-protocol",description:"vbscript: URI scheme",pattern:/vbscript[\t\n\r ]*:/i},{id:"html-data-html",description:"data:text/html URI \u2014 can execute scripts in browsers",pattern:/data[\t\n\r ]*:[\t\n\r ]*text\/html/i},{id:"html-data-xhtml",description:"data:application/xhtml+xml URI",pattern:/data[\t\n\r ]*:[\t\n\r ]*application\/xhtml/i},{id:"html-data-svg",description:"data:image/svg+xml URI \u2014 can execute scripts",pattern:/data[\t\n\r ]*:[\t\n\r ]*image\/svg\+xml/i},{id:"html-inline-event-handler",description:"Inline event handler attributes: onclick=, onerror=, onload=, etc.",pattern:/\bon\w{1,30}\s*=/i},{id:"html-entity-obfuscated-script",description:"HTML-entity-encoded