diff --git a/.changeset/config.json b/.changeset/config.json new file mode 100644 index 0000000..ad6f18a --- /dev/null +++ b/.changeset/config.json @@ -0,0 +1,11 @@ +{ + "$schema": "https://unpkg.com/@changesets/config@3.1.2/schema.json", + "changelog": "@changesets/cli/changelog", + "commit": false, + "fixed": [], + "linked": [], + "access": "restricted", + "baseBranch": "main", + "updateInternalDependencies": "patch", + "ignore": [] +} diff --git a/.changeset/facs-bin-analysis-first-implementation.md b/.changeset/facs-bin-analysis-first-implementation.md new file mode 100644 index 0000000..34c1a8e --- /dev/null +++ b/.changeset/facs-bin-analysis-first-implementation.md @@ -0,0 +1,21 @@ +--- +'@platforma-open/milaboratories.sort-seq-analysis.software': patch +'@platforma-open/milaboratories.sort-seq-analysis.block': patch +--- + +Sort-Seq Analysis — first implementation. + +Scores protein variants from a sort-seq (FACS bin) experiment. Per condition the block emits the +read-weighted mean of the gate ranks each variant sorted into (`pl7.app/facsBin/gateRankMean`) and that +value minus the parent's (`pl7.app/facsBin/binScore`), both keyed on the profiler's variant axis and +carrying the condition — and, on the bin score, the reference mode — as matchable domain keys. + +- **software** — the score computation as a Python package on the scientific-slim runenv, with its own + pytest suite pinning the arithmetic clause by clause against hand-computed numbers. +- **workflow** — resolves the inputs against the abundance anchor, exports the reads and variants tables, + invokes the entrypoint once, and constructs one PColumn per file the manifest names. +- **model** — the seven-argument surface with every configuration rule validated before the run, the four + option lists, and the outputs the three views read. +- **ui** — one settings drawer plus Results, Read distribution and Run summary. + +Integration tests against the real upstream chain are not in this change. diff --git a/.github/workflows/build.yaml b/.github/workflows/build.yaml new file mode 100644 index 0000000..569d0e6 --- /dev/null +++ b/.github/workflows/build.yaml @@ -0,0 +1,83 @@ +name: Build, Test and Release Platforma Block +on: + merge_group: + pull_request: + types: [opened, reopened, synchronize] + branches: + - 'main' + push: + branches: + - 'main' + workflow_dispatch: {} +jobs: + init: + runs-on: hz-ubuntu-dind + steps: + - uses: milaboratory/github-ci/actions/context/init@v4 + with: + version-canonize: false + branch-versioning: main + run: + needs: + - init + uses: milaboratory/github-ci/.github/workflows/node-simple-pnpm.yaml@v4 + with: + app-name: 'Block: Sort Seq Analysis' + app-name-slug: 'block-sort-seq-analysis' + node-version: '20.x' + gha-runner-label: hz-ubuntu-dind + build-script-name: 'build:dev-local' + build-before-publish-script-name: 'build:release' + pnpm-recursive-build: false + + test: true + test-script-name: 'test' + pnpm-recursive-tests: false + team-id: 'ciplopen' + + publish-to-public: 'true' + package-path: 'block' + create-tag: 'true' + + # Require the published `block` package to be bumped by a changeset on + # PRs (empty changeset or the `skip-changelog` label waives it). Needs + # the input to exist on the pinned `@v4` reusable workflow. + require-package-path-bump: true + + npmrc-config: | + { + "registries": { + "https://registry.npmjs.org/": { + "scopes": ["milaboratories", "platforma-sdk", "platforma-open"], + "tokenVar": "NPMJS_TOKEN" + } + } + } + secrets: + env: | + { "PL_LICENSE": ${{ toJSON(secrets.MI_LICENSE) }}, + "MI_LICENSE": ${{ toJSON(secrets.MI_LICENSE) }}, + "NPMJS_TOKEN": ${{ toJSON(secrets.NPMJS_TOKEN) }}, + "PL_CI_TEST_USER": ${{ toJSON(secrets.PL_CI_TEST_USER) }}, + "PL_CI_TEST_PASSWORD": ${{ toJSON(secrets.PL_CI_TEST_PASSWORD) }}, + + "AWS_CI_IAM_MONOREPO_SIMPLE_ROLE": ${{ toJSON(secrets.AWS_CI_IAM_MONOREPO_SIMPLE_ROLE) }}, + "AWS_CI_TURBOREPO_S3_BUCKET": ${{ toJSON(secrets.AWS_CI_TURBOREPO_S3_BUCKET) }}, + + "HZ_CI_TURBO_S3_BUCKET": ${{ toJSON(vars.HZ_CI_TURBO_S3_BUCKET) }}, + "HZ_CI_TURBO_S3_ENDPOINT": ${{ toJSON(vars.HZ_CI_TURBO_S3_ENDPOINT) }}, + "HZ_CI_TURBO_S3_REGION": ${{ toJSON(vars.HZ_CI_TURBO_S3_REGION) }}, + "HZ_CI_TURBO_S3_ACCESS_KEY": ${{ toJSON(secrets.HZ_CI_TURBO_S3_ACCESS_KEY) }}, + "HZ_CI_TURBO_S3_SECRET_KEY": ${{ toJSON(secrets.HZ_CI_TURBO_S3_SECRET_KEY) }}, + "HZ_CI_CACHE_S3_ACCESS_KEY": ${{ toJSON(secrets.HZ_CI_CACHE_S3_ACCESS_KEY) }}, + "HZ_CI_CACHE_S3_SECRET_KEY": ${{ toJSON(secrets.HZ_CI_CACHE_S3_SECRET_KEY) }}, + + "PL_REGISTRY_PLATFORMA_OPEN_UPLOAD_URL": ${{ toJSON(secrets.PL_REGISTRY_PLOPEN_UPLOAD_URL) }}, + "QUAY_USERNAME": ${{ toJSON(secrets.QUAY_USERNAME) }}, + "QUAY_ROBOT_TOKEN": ${{ toJSON(secrets.QUAY_ROBOT_TOKEN) }} } + + SLACK_CHANNEL: ${{ secrets.SLACK_BLOCKS_CI_CHANNEL }} + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} + + GH_ZEN_APP_ID: ${{ secrets.GH_ZEN_APP_ID }} + GH_ZEN_APP_PRIVATE_KEY: ${{ secrets.GH_ZEN_APP_PRIVATE_KEY }} diff --git a/.github/workflows/mark-stable.yaml b/.github/workflows/mark-stable.yaml new file mode 100644 index 0000000..67d52e7 --- /dev/null +++ b/.github/workflows/mark-stable.yaml @@ -0,0 +1,34 @@ +name: Mark Platforma Block as Stable +on: + workflow_dispatch: {} +jobs: + init: + runs-on: ubuntu-latest + steps: + - uses: milaboratory/github-ci/actions/context/init@v4 + with: + version-canonize: false + branch-versioning: main + run: + needs: + - init + uses: milaboratory/github-ci/.github/workflows/block-mark-stable.yaml@v4 + with: + app-name: 'Block: Sort Seq Analysis - Mark Stable' + node-version: '20.x' + npmrc-config: | + { + "registries": { + "https://registry.npmjs.org/": { + "scopes": ["milaboratories", "platforma-sdk", "platforma-open"], + "tokenVar": "NPMJS_TOKEN" + } + } + } + secrets: + env: | + { "NPMJS_TOKEN": ${{ toJSON(secrets.NPMJS_TOKEN) }}, + "AWS_CI_IAM_MONOREPO_SIMPLE_ROLE": ${{ toJSON(secrets.AWS_CI_IAM_MONOREPO_SIMPLE_ROLE) }} } + + SLACK_CHANNEL: ${{ secrets.SLACK_BLOCKS_CI_CHANNEL }} + SLACK_BOT_TOKEN: ${{ secrets.SLACK_BOT_TOKEN }} diff --git a/.github/workflows/python-tests.yaml b/.github/workflows/python-tests.yaml new file mode 100644 index 0000000..9182abc --- /dev/null +++ b/.github/workflows/python-tests.yaml @@ -0,0 +1,77 @@ +name: Python Tests + +# The score computation's own suite, run on its own rather than through the block. +# `computation-test-suite`: the arithmetic is where a wrong number comes from, and a +# block-level assertion cannot see one. This lane needs no backend, no registry and no +# upstream pipeline, so it stays fast and fails for one reason only. + +on: + merge_group: + pull_request: + types: [opened, reopened, synchronize] + branches: + - 'main' + push: + branches: + - 'main' + workflow_dispatch: {} + +jobs: + pytest: + runs-on: ubuntu-latest + defaults: + run: + working-directory: software + steps: + - uses: actions/checkout@v4 + + - uses: astral-sh/setup-uv@v5 + with: + version: "0.11.16" + enable-cache: true + cache-dependency-glob: software/pyproject.toml + + - name: Install dependencies + run: uv sync + + - name: Run pytest + run: uv run pytest + + requirements-sync: + # src/requirements.txt is generated from pyproject.toml (the single source of truth) + # and is what the package builder installs from. This job fails if the committed file + # has drifted — e.g. someone changed a dependency and forgot to regenerate. Fix + # locally with `pnpm deps:export` (see software/package.json). + # + # It matters more here than it looks: requirements.txt is a *selector* over the wheels + # the runenv already ships, installed with --no-index. A drifted pin does not fall back + # to PyPI — it fails the offline install at block build time. + runs-on: ubuntu-latest + defaults: + run: + working-directory: software + steps: + - uses: actions/checkout@v4 + + - uses: astral-sh/setup-uv@v5 + with: + version: "0.11.16" + enable-cache: true + cache-dependency-glob: software/pyproject.toml + + - name: Regenerate requirements.txt from pyproject.toml + # The same script `pnpm deps:export` runs locally — single source of truth. + run: bash scripts/deps-export.sh + + - name: Verify requirements.txt is in sync with pyproject.toml + run: | + if ! git diff --exit-code -- src/requirements.txt; then + echo "" + echo "::error::src/requirements.txt is out of sync with pyproject.toml" + echo "Dependencies are defined in software/pyproject.toml; src/requirements.txt is generated." + echo "Resolve locally with:" + echo " cd software && pnpm deps:export" + echo "then commit the updated src/requirements.txt." + exit 1 + fi + echo "src/requirements.txt is in sync with pyproject.toml." diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..795afef --- /dev/null +++ b/.gitignore @@ -0,0 +1,22 @@ +.test_auth.json +node_modules/ +dist/ +block-pack/ +dev/ +work/ +log/ +.turbo +vite.config.*.timestamp-* +software/**/*.tgz +.DS_Store +.vscode/sftp.json +test-dry-run.json + +# Python — the software package. Not written by `block-tools structure`; re-add these if a +# structure refresh drops them. Without them `__pycache__` gets committed, which has +# already happened in blocks/titeseq-analysis. +__pycache__/ +*.py[cod] +.pytest_cache/ +.ruff_cache/ +.venv/ diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..9cbbd30 --- /dev/null +++ b/.npmrc @@ -0,0 +1,8 @@ +//registry.npmjs.org/:always-auth=true +//registry.npmjs.org/:_authToken=${NPMJS_TOKEN} +@milaboratories:registry=https://registry.npmjs.org/ +@platforma-open:registry=https://registry.npmjs.org/ +@platforma-sdk:registry=https://registry.npmjs.org/ +//npm.pkg.github.com/:always-auth=true +//npm.pkg.github.com/:_authToken=${NODE_AUTH_TOKEN} +@milaboratory:registry=https://npm.pkg.github.com/ diff --git a/.structure b/.structure new file mode 100644 index 0000000..218abba --- /dev/null +++ b/.structure @@ -0,0 +1 @@ +{"version":2} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..25fa621 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "typescript.tsdk": "node_modules/typescript/lib" +} diff --git a/README.md b/README.md index 9897e69..83c4206 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,37 @@ # sort-seq-analysis -FACS Bin Analysis Block + +**Sort-Seq Analysis** — a Platforma block that scores protein variants from a sort-seq (FACS bin) +experiment. Per condition it emits the read-weighted mean of the gate ranks each variant sorted into +(`pl7.app/facsBin/gateRankMean`) and that value minus the parent's (`pl7.app/facsBin/binScore`). + +## Specification + +`docs/text/work/projects/sequence-repertoires/facs-bin-analysis/` in the `docs/text` repo. + +- `README.md` — the front door: what the block is for and what always holds. +- `implementation.md` — the implementer's door: the decisions and why each is held. +- `work/atoms/` — the spec source. Never hand-edit the two rendered docs above. + +Cross-block contracts this block honours rather than decides live in the umbrella spec, +`docs/text/work/projects/sequence-repertoires/dms-analysis/`. + +## Layout + +| Path | What | +|---|---| +| `model/` | `BlockModelV3` — args projection, outputs, sections | +| `workflow/` | Tengo template — resolves inputs, invokes the computation, builds the output columns | +| `ui/` | Vue 3 UI — settings drawer and result views | +| `software/` | Python package holding the score computation | +| `block/` | Published facade — block meta and components | +| `test/` | Integration tests against a running backend | + +## Build + +```bash +pnpm install +pnpm build:dev-local # local software paths; there is no plain `build` script +``` + +The layout is owned by `block-tools structure`. To take an SDK upgrade, run `pnpm upgrade-sdk` — do not +hand-edit tsconfigs, turbo config, lint config or the catalog. diff --git a/block/CHANGELOG.md b/block/CHANGELOG.md new file mode 100644 index 0000000..44f2b84 --- /dev/null +++ b/block/CHANGELOG.md @@ -0,0 +1 @@ +# @platforma-open/milaboratories.sort-seq-analysis.block diff --git a/block/logos/block-logo.png b/block/logos/block-logo.png new file mode 100644 index 0000000..e03221e Binary files /dev/null and b/block/logos/block-logo.png differ diff --git a/block/logos/organization-logo.png b/block/logos/organization-logo.png new file mode 100644 index 0000000..e03221e Binary files /dev/null and b/block/logos/organization-logo.png differ diff --git a/block/package.json b/block/package.json new file mode 100644 index 0000000..eed53d7 --- /dev/null +++ b/block/package.json @@ -0,0 +1,64 @@ +{ + "name": "@platforma-open/milaboratories.sort-seq-analysis.block", + "version": "1.0.0", + "files": [ + "dist", + "block-pack" + ], + "type": "module", + "main": "./dist/index.js", + "module": "./dist/index.js", + "types": "./dist/index.d.ts", + "exports": { + ".": { + "sources": "./src/index.ts", + "types": "./dist/index.d.ts", + "default": "./dist/index.js" + } + }, + "scripts": { + "build": "ts-builder build --target block-facade && block-tools pack", + "check": "ts-builder type-check --target block-facade", + "prepublishOnly": "block-tools publish --unstable -r s3://milab-euce1-prod-pkgs-s3-block-registry/pub/releases/?region=eu-central-1 --registry-serve-url https://blocks.pl-open.science", + "do-pack": "shx rm -f package.tgz && pnpm pack && shx mv *.tgz package.tgz" + }, + "dependencies": {}, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:", + "@platforma-open/milaboratories.sort-seq-analysis.model": "workspace:*", + "@platforma-open/milaboratories.sort-seq-analysis.ui": "workspace:*", + "@platforma-open/milaboratories.sort-seq-analysis.workflow": "workspace:*", + "@platforma-sdk/block-tools": "catalog:", + "@platforma-sdk/model": "catalog:", + "shx": "catalog:", + "typescript": "catalog:" + }, + "block": { + "components": { + "workflow": "@platforma-open/milaboratories.sort-seq-analysis.workflow/dist/tengo/tpl/main.plj.gz", + "model": "@platforma-open/milaboratories.sort-seq-analysis.model/dist/model.json", + "ui": "@platforma-open/milaboratories.sort-seq-analysis.ui/dist" + }, + "meta": { + "title": "Sort-Seq Analysis", + "logo": "file:logos/block-logo.png", + "url": "https://github.com/platforma-open/sort-seq-analysis", + "support": "mailto:support@milaboratories.com", + "description": "Scores protein variants from a sort-seq (FACS bin) experiment: per condition, the read-weighted mean of the gate ranks each variant sorted into, and that value minus the parent's.", + "longDescription": "file:../docs/description.md", + "changelog": "file:./CHANGELOG.md", + "tags": [ + "downstream", + "dms", + "antibody", + "assay" + ], + "organization": { + "name": "MiLaboratories Inc", + "url": "https://milaboratories.com/", + "logo": "file:logos/organization-logo.png" + } + } + } +} diff --git a/block/src/AGENTS.ts b/block/src/AGENTS.ts new file mode 100644 index 0000000..5cf2589 --- /dev/null +++ b/block/src/AGENTS.ts @@ -0,0 +1,5 @@ +// This file is managed by `block-tools structure`. Do not edit by hand. +// Narrow MCP / AI surface. + +export type { BlockContract, BlockOutputs, BlockData } from "./index"; +export * from "./agents-extra"; diff --git a/block/src/agents-extra.ts b/block/src/agents-extra.ts new file mode 100644 index 0000000..228811f --- /dev/null +++ b/block/src/agents-extra.ts @@ -0,0 +1,8 @@ +// Author-owned. `block-tools structure` does not modify this file. +// MCP / AI extension surface. Add types and functions the agent +// surface should expose. +// +// In the future this file will host JS functions the MCP runtime +// can execute. The `.d.ts` declarations stay visible to the agent; +// the JS bodies execute in the MCP code-execution context (the +// agent sees the types but not the implementation). diff --git a/block/src/block-extra.ts b/block/src/block-extra.ts new file mode 100644 index 0000000..fc00cdd --- /dev/null +++ b/block/src/block-extra.ts @@ -0,0 +1,9 @@ +// Author-owned. `block-tools structure` does not modify this file. +// Add block-specific helper types or values the consumer surface +// should expose. Anything you `export` here flows out via the +// main entry (./index re-exports this file). +// +// Do NOT redefine: BlockContract, BlockOutputs, BlockData, +// BlockPointer, platforma, or the block-named Block* +// aliases — those names come from ./index and `export *` from this +// file would shadow them. diff --git a/block/src/index.ts b/block/src/index.ts new file mode 100644 index 0000000..749d994 --- /dev/null +++ b/block/src/index.ts @@ -0,0 +1,55 @@ +// This file is managed by `block-tools structure`. Do not edit by hand. +// Author content lives in ./block-extra.ts. + +import { platforma } from "@platforma-open/milaboratories.sort-seq-analysis.model"; +import { + InferOutputsType, + InferDataType, + InferHrefType, +} from "@platforma-sdk/model"; + +export { platforma }; + +export type BlockContract = { + outputs: InferOutputsType; + data: InferDataType; + href: InferHrefType; +}; + +export type BlockOutputs = BlockContract["outputs"]; +export type BlockData = BlockContract["data"]; + +// import.meta.url is a file: URL (always forward-slash, even on Windows: +// file:///C:/…). We expose URLs, NOT paths — the facade stays dependency-free +// and loadable in minimal engines (e.g. QuickJS), and each consumer converts +// at its own edge with the right tool (fileURLToPath in Node), where Windows +// drive letters / %-encoding / UNC are handled correctly. The bundled entry +// sits one dir under the package root (dist/index.js, or src/index.ts in dev), +// so the root is two URL segments up. The structurer owns this layout — +// consumers read these URLs, they never reconstruct /block-pack. +// +// TypeScript ships `ImportMeta.url` only in the `dom`/`webworker` libs; the +// facade tsconfig is lib-minimal (no `dom`, no `@types/node`) by design. We +// type the one ESM-standard member we use with a local cast rather than a +// `declare global` — a global augmentation would leak into the published +// `dist/index.d.ts` and clash with `@types/node`'s `ImportMeta` in full-Node +// consumers (test packages, the Middle Layer). +const selfUrl = (import.meta as ImportMeta & { url: string }).url; +const dirUrl = selfUrl.slice(0, selfUrl.lastIndexOf("/")); +const rootUrl = dirUrl.slice(0, dirUrl.lastIndexOf("/")); + +export const BlockPointer = { + type: "from-pack-v2" as const, + packUrl: rootUrl + "/block-pack", + rootUrl, +} as const; + +// Block-named aliases for readable cross-block imports in tests and +// consumer code. Same types / same runtime value as the universal +// names above; the aliases avoid `as`-renames at the import site. +export type SortSeqAnalysisBlockContract = BlockContract; +export type SortSeqAnalysisBlockOutputs = BlockOutputs; +export type SortSeqAnalysisBlockData = BlockData; +export const SortSeqAnalysisBlockPointer = BlockPointer; + +export * from "./block-extra"; diff --git a/block/tsconfig.json b/block/tsconfig.json new file mode 100644 index 0000000..8b5ec69 --- /dev/null +++ b/block/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@milaboratories/ts-configs/block/facade", + "include": ["src/**/*"] +} diff --git a/docs/description.md b/docs/description.md new file mode 100644 index 0000000..ae87519 --- /dev/null +++ b/docs/description.md @@ -0,0 +1,27 @@ +## Overview + +A sort-seq experiment hands you a library of protein variants and, for each gate the sorter collected, a +count of how many reads of each variant landed in it. Nothing in that table is a binding measurement: it is +a spread of reads across gates, and the gates' order along the binding axis is the only thing that makes one +variant's spread better than another's. + +This block turns that spread into a score, one per condition. For every variant it emits: + +- **Gate rank mean** — the read-weighted mean of the gate ranks the variant's reads fell in, in gate-rank + units. Higher means the variant sorted into higher gates. Not an affinity and not calibrated. +- **Bin score** — the gate rank mean minus the parent's. Zero means the variant behaves like the parent at + that condition. + +A run over N conditions emits both quantities N times, once per condition. A one-condition run is an +ordinary run: it gets both quantities, with the run's single condition on each column exactly as a +two-condition run would carry two. + +## Downstream + +Everything downstream of this block is a comparison of these scores — a pH switch is the difference between +a variant's bin score at two pH arms, the on-state is its raw score at the arm the campaign treats as *on*, +and a shortlist is a ranking over one of them. + +## Status + +Under development. The specification lives in `docs/text/work/projects/sequence-repertoires/facs-bin-analysis/`. diff --git a/model/.oxfmtrc.json b/model/.oxfmtrc.json new file mode 100644 index 0000000..7eff5e7 --- /dev/null +++ b/model/.oxfmtrc.json @@ -0,0 +1,4 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/configs/oxfmt.json"], + "ignorePatterns": ["dist", "coverage", "CHANGELOG.md"] +} diff --git a/model/.oxlintrc.json b/model/.oxlintrc.json new file mode 100644 index 0000000..70ab6b8 --- /dev/null +++ b/model/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-block-model.json"] +} diff --git a/model/package.json b/model/package.json new file mode 100644 index 0000000..1db1519 --- /dev/null +++ b/model/package.json @@ -0,0 +1,36 @@ +{ + "name": "@platforma-open/milaboratories.sort-seq-analysis.model", + "private": true, + "type": "module", + "main": "dist/index.cjs", + "module": "dist/index.js", + "types": "dist/index.d.ts", + "exports": { + ".": { + "types": "./dist/index.d.ts", + "sources": "./src/index.ts", + "import": "./dist/index.js" + }, + "./dist/*": "./dist/*" + }, + "scripts": { + "fmt": "ts-builder format", + "watch": "ts-builder build --target block-model --watch", + "build": "ts-builder build --target block-model && block-tools build-model", + "check": "ts-builder check --target block-model" + }, + "dependencies": { + "@milaboratories/graph-maker": "catalog:", + "@milaboratories/helpers": "catalog:", + "@platforma-sdk/model": "catalog:" + }, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:", + "@platforma-sdk/block-tools": "catalog:" + }, + "peerDependencies": { + "@types/node": "*", + "typescript": "*" + } +} diff --git a/model/src/columns.ts b/model/src/columns.ts new file mode 100644 index 0000000..16f7e38 --- /dev/null +++ b/model/src/columns.ts @@ -0,0 +1,122 @@ +/** + * The shared vocabulary this block reads and writes, and the predicates it locates inputs + * with. + * + * Every column this block reads is located by its spec — axes, domain, annotations — never by a + * literal column name. The narrowing that *is* permitted, and used below, matches a shared + * vocabulary term: a name saying what a column *means*, identical across every block emitting + * one. Forbidden is a lookup keyed on a particular column's own instance name. + * + * The variant axis is the reason this matters rather than being style. It is defined twice + * upstream with incompatible domains, so identifying *it* by name resolves to the wrong + * axis on some projects and the right one on others — with output of ordinary shape and + * plausible content either way. Hence the abundance predicate below matches on axis + * **count** plus annotations, and never names an axis. + */ + +import type { AnchoredPColumnSelector, PColumnSpec, PObjectSpec } from "@platforma-sdk/model"; + +/** Annotation keys this block reads on upstream columns. */ +export const Annotation = { + IsAbundance: "pl7.app/isAbundance", + AbundanceIsPrimary: "pl7.app/abundance/isPrimary", + AbundanceNormalized: "pl7.app/abundance/normalized", + Label: "pl7.app/label", +} as const; + +/** Column *names* in the platform's shared vocabulary — what a column means, not which one it is. */ +export const PColumnName = { + /** Every per-sample metadata column upstream emits carries this name. */ + Metadata: "pl7.app/metadata", + MutationCount: "pl7.app/repertoire/mutationCount", + /** The variant axis's label column — shown as "Variant Id". */ + VariantLabel: "pl7.app/label", + /** The per-variant mutation list, shown as "Mutations". */ + Mutations: "pl7.app/repertoire/mutations", +} as const; + +/** Names this block mints, all under one namespace segment. */ +export const FacsBin = { + GateRankMean: "pl7.app/facsBin/gateRankMean", + BinScore: "pl7.app/facsBin/binScore", + GateFrequency: "pl7.app/facsBin/gateFrequency", + GateReads: "pl7.app/facsBin/gateReads", + GateAxis: "pl7.app/facsBin/gate", + ConditionDomain: "pl7.app/facsBin/condition", + ReferenceModeDomain: "pl7.app/facsBin/referenceMode", + SortYieldCorrectedAnnotation: "pl7.app/facsBin/sortYieldCorrected", +} as const; + +function isPColumnSpec(spec: PObjectSpec): spec is PColumnSpec { + return spec.kind === "PColumn"; +} + +function annotation(spec: PColumnSpec, key: string): string | undefined { + return spec.annotations?.[key]; +} + +/** + * The anchor: per-sample abundance on the variant grain. + * + * Both annotation conditions are required and neither is redundant. The profiler emits a + * second primary abundance column that is normalized (`pl7.app/readFraction`), so the + * primary marker alone selects two candidates. And three further columns in the same block + * carry the abundance marker without the primary one — one on the mutation-count axis, two + * per-variant totals — so a predicate loose enough to admit them would compute a bin score + * over aggregated totals and emit output of ordinary shape. + * + * Two axes are required by count rather than by name: the sample axis and the variant axis + * are what a per-sample-per-variant abundance has, and naming the variant axis is the live + * defect described at the top of this file. + */ +export function isAbundanceAnchor(spec: PObjectSpec): boolean { + if (!isPColumnSpec(spec)) return false; + if (spec.axesSpec.length !== 2) return false; + return ( + annotation(spec, Annotation.AbundanceIsPrimary) === "true" && + annotation(spec, Annotation.AbundanceNormalized) === "false" + ); +} + +/** + * Per-sample metadata, in the anchor's context — the one option list the three roles are + * picked from. + * + * **This predicate is expected to resolve to many.** It produces the option list, not an + * answer. A spec predicate can establish that a column *is* per-sample metadata; it cannot + * establish which role a given one plays, because the only per-column discriminator is a + * value drawn from the user's own data. The roles are assigned by the user, one pick each. + * + * `pl7.app/metadata` is the column's **name**, not an annotation — every per-sample metadata + * column upstream is literally named that, with the sample axis as its only axis and its + * user-facing header in `pl7.app/label`. Matching it as an annotation matches nothing, and does + * so silently: the option list comes back empty and the pickers look broken while the metadata + * is plainly loaded. + * + * This is still a match on a shared-vocabulary *term*, not on a particular column's instance + * name. + * + * The single axis is bound to the anchor's sample axis by the anchor context rather than by + * name. + */ +export const metadataSelector: AnchoredPColumnSelector = { + axes: [{ anchor: "main", idx: 0 }], + name: PColumnName.Metadata, +}; + +/** + * The variants' mutation count. Resolved in the workflow rather than here — this constant + * exists so the model and the workflow state the same predicate, and so a reader can see + * all three in one place. + * + * The alphabet domain is load-bearing rather than a detail. The profiler emits the count at + * two grains and keeps them apart by exactly this domain. At the nucleotide grain a library + * of synonymous barcodes for one wild-type protein yields several rows with a count of + * zero, which reads as the parent being *unidentifiable* — so `binScore` would be emitted + * in the cancelled form for a run whose parent is in fact perfectly well defined. + */ +export const mutationCountSelector: AnchoredPColumnSelector = { + axes: [{ anchor: "main", idx: 1 }], + name: PColumnName.MutationCount, + domain: { "pl7.app/alphabet": "aminoacid" }, +}; diff --git a/model/src/dataModel.ts b/model/src/dataModel.ts new file mode 100644 index 0000000..1d56bd1 --- /dev/null +++ b/model/src/dataModel.ts @@ -0,0 +1,35 @@ +import type { GraphMakerState } from "@milaboratories/graph-maker"; +import { createPlDataTableStateV2, DataModelBuilder } from "@platforma-sdk/model"; +import type { BlockData } from "./types"; + +/** + * The chart a condition's distribution page opens with. + * + * Takes a finished title because the caller is the one holding the drawn-variant count. Seeded + * once per condition, so a chart that already has state keeps the title it was created with — + * which only shows in exports, the page suppressing GraphMaker's own header. + */ +export function defaultDistributionGraphState(title: string): GraphMakerState { + return { + title, + template: "line", + // Left unset, the chart opens with its settings panel over the plot. + currentTab: null, + }; +} + +/** + * `readFloor` is deliberately absent rather than 0: those are different runs. Absent applies no + * floor at all, where 0 would be a floor the block invented. + * + * Later shape changes add `.migrate("Ver_…", prev => …)` links rather than editing this. + */ +export const blockDataModel = new DataModelBuilder().from("Ver_2026_08_07").init(() => ({ + gateOrder: [], + excludedConditions: [], + gateValues: [], + customBlockLabel: "", + conditionValues: [], + resultsTableState: createPlDataTableStateV2(), + distributionGraphStates: {}, +})); diff --git a/model/src/index.ts b/model/src/index.ts new file mode 100644 index 0000000..9638084 --- /dev/null +++ b/model/src/index.ts @@ -0,0 +1,481 @@ +import { + BlockModelV3, + createPFrameForGraphs, + createPlDataTableV3, + type InferOutputsType, + type PColumn, + type PColumnSpec, + type PColumnValues, + type StringMatcher, + type SUniversalPColumnId, +} from "@platforma-sdk/model"; +import { Annotation, FacsBin, isAbundanceAnchor, metadataSelector, PColumnName } from "./columns"; +import { blockDataModel } from "./dataModel"; +import type { BlockArgs, BlockData, RunManifest } from "./types"; + +export { blockDataModel, defaultDistributionGraphState } from "./dataModel"; +export * from "./columns"; +export * from "./types"; + +/** + * Every configuration rule, checked here and **nowhere else**. These six are decidable from the + * arguments and snapshotted column values alone, so they are refused before the run starts. + * + * The two data-value rules — sort fractions, one sample per condition-and-gate group — belong + * to the computation and are deliberately not approximated here: a duplicated rule is one that + * will disagree, and it fails by drifting looser, so the settings pass and the run fails anyway + * with a different message. + */ +export function settingsIssues(data: BlockData): string[] { + const issues: string[] = []; + // 1, 2, 3 absent — nothing to read. + if (data.abundanceRef === undefined) issues.push("Select an abundance dataset"); + if (data.conditionColumnRef === undefined) issues.push("Select the condition column"); + if (data.gateColumnRef === undefined) issues.push("Select the gate column"); + + // 2, 3 and 7 not three distinct columns. Each role is a different fact about a sample and + // one column cannot carry two of them. Nothing else would catch the confusion: condition + // and gate picked identically would map every gate to its own condition, rank one value + // per condition and score single-gate conditions — output of ordinary shape, silently + // meaningless. + const roles = [data.conditionColumnRef, data.gateColumnRef, data.sortFractionColumnRef].filter( + (ref): ref is NonNullable => ref !== undefined, + ); + if (new Set(roles).size !== roles.length) { + issues.push("The condition, gate and sort-fraction columns must be three different columns"); + } + + // 4 incomplete — the order must cover exactly the gate column's values. The drag list makes + // duplicates and unknown values unrepresentable, so what is left to check is that the + // snapshot and the order agree; they can drift if upstream re-emits the column and the user + // does not re-pick it. + // Only once a gate column is picked. Collecting every issue rather than throwing on the + // first means an unguarded check here would tell a freshly added block that "the gate column + // has no values to rank" while also telling it to select a gate column — two complaints for + // one unmade choice. + if (data.gateColumnRef !== undefined) { + if (data.gateValues.length === 0) { + issues.push("The gate column has no values to rank"); + } + const missing = data.gateValues.filter((value) => !data.gateOrder.includes(value)); + if (missing.length > 0) { + issues.push( + `Assign an order position to every gate: ${missing.join(", ")} ${missing.length === 1 ? "is" : "are"} missing`, + ); + } + const unknown = data.gateOrder.filter((value) => !data.gateValues.includes(value)); + if (unknown.length > 0) { + issues.push(`Ordered value(s) the gate column does not carry: ${unknown.join(", ")}`); + } + } + + // 5 excluding every value. Refused rather than allowed to produce nothing, because an + // empty result is indistinguishable from a failed run and the user's own last action + // caused it — naming the cause while the settings are still on screen is the point. + if ( + data.conditionValues.length > 0 && + data.conditionValues.every((value) => data.excludedConditions.includes(value)) + ) { + issues.push("At least one condition must remain — every value is currently excluded"); + } + + // 6 negative. + if (data.readFloor !== undefined && data.readFloor < 0) { + issues.push("The read-count floor cannot be negative"); + } + + return issues; +} + +/** + * A bare string in a column selector is treated as a **regex**, so an exact name has to say so + * — otherwise `pl7.app/label` would also match any longer name containing it. + */ +function exact(name: string): StringMatcher { + return { type: "exact", value: name }; +} + +/** + * A multi-condition run's column pairs are told apart by the condition domain key alone, so + * that key is the only place the condition can be read from. Sorted, because conditions carry + * no order of their own and callers must agree on one. + */ +function distributionConditionsOf( + columns: readonly C[], +): string[] { + const conditions = new Set(); + for (const column of columns) { + const condition = column.spec.domain?.[FacsBin.ConditionDomain]; + if (condition !== undefined) conditions.add(condition); + } + return [...conditions].sort(); +} + +/** + * Called two ways: with an entry for the plot's own title, carrying the drawn-variant count, + * and without one for the nav, which should name where a link goes rather than how much of it + * is drawn. + * + * The count comes from what the run actually drew, not from the cut the computation applies — + * that cut is a maximum, so repeating it here would read "Top 20" over a library of twelve. And + * where nothing was left out the suffix is absent entirely, rather than claiming a caveat. + */ +export function distributionPlotTitle( + condition: string, + entry?: { variantsPlotted: number; variantsScored: number }, +): string { + const truncated = entry !== undefined && entry.variantsPlotted < entry.variantsScored; + return truncated + ? `Variant Frequency Top ${entry.variantsPlotted} — ${condition}` + : `Variant Frequency — ${condition}`; +} + +export const platforma = BlockModelV3.create(blockDataModel) + .args((data) => { + // Throwing marks args invalid and disables Run, but carries no reason to the user — the + // `settingsIssues` output below is what names the offending input. + const issues = settingsIssues(data); + if (issues.length > 0) throw new Error(issues.join("; ")); + + return { + abundanceRef: data.abundanceRef!, + conditionColumnRef: data.conditionColumnRef!, + gateColumnRef: data.gateColumnRef!, + // Canonicalised so an edit that does not change what the workflow would do — a gate + // re-ranked back to where it started, an exclusion added and removed — produces the + // same bytes and does not fire the staleness gate. + // Position becomes the rank: first in the list is gate 1, the weakest binder. The + // computation weights by these integers, so the list's order is the whole signal. + gateRanks: Object.fromEntries(data.gateOrder.map((gate, index) => [gate, index + 1])), + excludedConditions: [...data.excludedConditions].sort(), + // Both optional arguments are passed through as `undefined` when unset rather than + // being given a value. The workflow omits the field entirely and the computation + // reads the absence as the behaviour this spec states. + readFloor: data.readFloor, + sortFractionColumnRef: data.sortFractionColumnRef, + }; + }) + + // --------------------------------------------------------------------------- + // Option lists. Four pickers, two predicates. + // --------------------------------------------------------------------------- + + /** The anchor. Matched on axis count plus the two abundance annotations, never on a name. */ + .output("abundanceOptions", (ctx) => ctx.resultPool.getOptions(isAbundanceAnchor)) + + /** + * Every per-sample metadata column in the anchor's context, as one list: the anchored id + * the pickers store, the label they display, and the PObjectId the UI needs to read the + * column's values out of the published PFrame. + * + * One query feeding four consumers, rather than one query per picker. + */ + .output("metadataColumns", (ctx) => { + const anchor = ctx.data.abundanceRef; + if (!anchor) return undefined; + + const anchorCtx = ctx.resultPool.resolveAnchorCtx({ main: anchor }); + if (!anchorCtx) return undefined; + + const columns = ctx.resultPool.getAnchoredPColumns({ main: anchor }, [metadataSelector]); + if (!columns) return undefined; + + return columns.map((column) => ({ + // Derived from the column's own spec rather than by position, so the anchored id and + // the PObjectId are correlated by construction — pairing two same-length lists by + // index would break the first time the pool returned them in a different order. + value: anchorCtx.deriveS(column.spec), + objectId: column.id, + label: column.spec.annotations?.[Annotation.Label] ?? column.spec.name, + })); + }) + + /** The pickers, each offering what the other two roles do not already hold. */ + .output("conditionOptions", (ctx) => narrowTo(ctx, "conditionColumnRef")) + .output("gateOptions", (ctx) => narrowTo(ctx, "gateColumnRef")) + .output("sortFractionOptions", (ctx) => narrowTo(ctx, "sortFractionColumnRef")) + + // --------------------------------------------------------------------------- + // The two controls that need a picked column's values rather than its spec. + // --------------------------------------------------------------------------- + + /** + * **Every** metadata column, published so the UI can fetch their values. + * + * Not just the picked ones — and that distinction is the whole point. The gate-order and + * exclusion controls are driven by a snapshot the UI writes at the moment the user picks a + * column, so the values have to be in hand *before* the pick. Publishing only what was + * already picked makes the frame lag the gesture by one round trip: the snapshot writes an + * empty list, the gate-order control never appears, and nothing says why. + * + * Sample metadata is a handful of columns over the sample count, so fetching all of them + * up front is cheap. + */ + .output("metadataColumnsPframe", (ctx) => { + const anchor = ctx.data.abundanceRef; + if (!anchor) return undefined; + + const columns = ctx.resultPool.getAnchoredPColumns({ main: anchor }, [metadataSelector]); + if (!columns || columns.length === 0) return undefined; + + return ctx.createPFrame(columns as PColumn[]); + }) + + // --------------------------------------------------------------------------- + // The three views. + // --------------------------------------------------------------------------- + + /** + * Main — one row per variant, carrying both scored columns for every retained condition + * together with the pool columns that share the variant axis. + * + * Anchored on `gateRankMean` rather than `binScore`, because the anchor decides whether the + * table renders at all and `binScore` is legitimately absent at a condition whose parent + * went unscored. Anchored on that, a run that scored perfectly well everywhere else would + * show an empty table. + * + * **The anchor is one concrete column's spec, taken from this block's own output.** Two + * things rule out the obvious alternative of a selector naming `pl7.app/facsBin/gateRankMean`: + * a run over N conditions emits N such columns, so the selector is ambiguous and + * `createPlDataTableV3` refuses it outright; and the result pool cannot tell this instance's + * columns from a second instance of this block on the same project. Reading the frame the + * workflow hands back sidesteps both — those columns are ours by construction. + * + * Which condition's `gateRankMean` anchors is deliberately unfixed by the spec: conditions + * carry no order, so "the first" names nothing, and the choice cannot change what the table + * shows, which carries every condition's columns either way. Sorting by the condition domain + * value only makes the pick stable across renders. + */ + .outputWithStatus("resultsTable", (ctx) => { + const columns = ctx.outputs?.resolve("scoresPf")?.getPColumns(); + if (!columns) return undefined; + + const anchor = columns + .filter((column) => column.spec.name === FacsBin.GateRankMean) + .sort((a, b) => + (a.spec.domain?.[FacsBin.ConditionDomain] ?? "").localeCompare( + b.spec.domain?.[FacsBin.ConditionDomain] ?? "", + ), + )[0]; + if (!anchor) return undefined; + + return createPlDataTableV3(ctx, { + columns: { + anchors: { main: anchor.spec }, + // Strict axis equality, so only columns keyed on the variant axis and nothing else get + // in. "related" would let both sides' axes float and reach every column the variant + // axis participates in — the per-position state matrix, this block's own per-gate + // distribution — giving a row per variant per position per gate. + selector: { mode: "exact" }, + }, + tableState: ctx.data.resultsTableState, + displayOptions: { + /** + * First match wins, and an **unmatched column keeps its own annotation** — which + * upstream sets to `default` on nearly everything, so without the catch-all last the + * table opens with every reachable column on screen. + * + * `optional` rather than `hidden` for the remainder: they stay one click away in the + * column picker. Hiding a column a user wants, with no way to bring it back, is the + * worse failure. + */ + visibility: [ + { match: { name: exact(FacsBin.GateRankMean) }, visibility: "default" }, + { match: { name: exact(FacsBin.BinScore) }, visibility: "default" }, + { match: { name: exact(PColumnName.VariantLabel) }, visibility: "default" }, + { match: { name: exact(PColumnName.Mutations) }, visibility: "default" }, + { match: { name: ".*" }, visibility: "optional" }, + ], + }, + }); + }) + + /** + * The conditions a distribution page can be opened for, sorted. + * + * Taken from the columns rather than the manifest, because the columns are what the frame can + * actually render. Lets a page tell a route naming a dropped condition from one whose data has + * simply not arrived yet. + */ + .output("distributionConditions", (ctx) => { + const columns = ctx.outputs?.resolve("distributionPf")?.getPColumns(); + if (!columns) return undefined; + return distributionConditionsOf(columns); + }) + + /** + * The graph frame, held out of exports and the pool. + * + * **One frame covering every condition, not one per condition.** A condition is part of a + * column's identity here, not a dimension of it, so each page binds `y` to its own condition's + * column out of this shared frame. The frame therefore never swaps, which is what keeps each + * page's saved chart state pointing at a column that still exists. + * + * **`createPFrameForGraphs` rather than a bare `ctx.createPFrame`**: the variant axis's labels + * live in a separate pool column that only this helper pulls in. A frame of just this block's + * columns draws variants as raw keys. The cost is extra entries in the chart's source + * dropdowns, which is the better of the two. + */ + .outputWithStatus("distributionPf", (ctx) => { + const columns = ctx.outputs?.resolve("distributionPf")?.getPColumns(); + if (!columns) return undefined; + return createPFrameForGraphs(ctx, columns); + }) + + /** + * The same columns as id+spec pairs, so a page can bind to real specs instead of guessing + * names. Every condition is here; a page picks its own by the condition domain key. + */ + .output("distributionPfCols", (ctx) => { + const columns = ctx.outputs?.resolve("distributionPf")?.getPColumns(); + if (!columns) return undefined; + return columns.map((column) => ({ id: column.id, spec: column.spec })); + }) + + /** + * The not-ready-safe accessor is required here, not a preference: plain `getDataAsJson` throws + * mid-run against a remote backend, and this is read while a run is in progress. + */ + .output("manifest", (ctx) => + ctx.outputs?.resolve("manifest")?.getDataAsJsonOrUndefined(), + ) + + .output("logHandle", (ctx) => ctx.outputs?.resolve("logHandle")?.getLogHandle()) + .output("isRunning", (ctx) => ctx.outputs?.getIsReadyOrError() === false) + + /** + * Why the block is not runnable, in the user's words, or an empty list. Naming the missing + * input is the block's own job — the platform reports only that the settings are incomplete. + */ + .output("settingsIssues", (ctx) => settingsIssues(ctx.data)) + + /** Exposed so the UI can show it as the subtitle field's placeholder. */ + .output("defaultBlockLabel", (ctx) => deriveBlockLabel(ctx.data)) + + /** + * The block's own name, and nothing else. What this *instance* is configured for belongs + * in the subtitle — a title that changes with configuration makes the block list read as + * several different blocks, and every sibling keeps the title constant for that reason. + */ + .title(() => "Sort-Seq Analysis") + + /** The user's override wins; otherwise the label derived from the gate selection. */ + .subtitle((ctx) => ctx.data.customBlockLabel || deriveBlockLabel(ctx.data)) + + /** + * The scores table, then one distribution page per condition. + * + * The condition rides in the query string and every such link resolves to the single + * `/distribution` route, routes being keyed on the pathname alone. + * + * Encoding matters beyond the obvious `&`, `=` and `#`: `encodeURIComponent` escapes `+` to + * `%2B`, and the reading side would otherwise decode a bare `+` as a space — `CD4+` being an + * entirely ordinary condition value. + * + * Built from the columns a run produced, so a page appears only where there is something to + * draw on it, and none do before the first run. + */ + .sections((ctx) => { + const columns = ctx.outputs?.resolve("distributionPf")?.getPColumns(); + + // Each entry must stay an `as const` literal with no annotation on the array: the href's + // template literal type is what the route's query type is derived from, so widening it + // stops `queryParams.condition` type-checking in the page. + return [ + // Must stay identical to the page's own title. + { type: "link" as const, href: "/" as const, label: "Variant Scores" }, + ...(columns ? distributionConditionsOf(columns) : []).map((condition) => ({ + type: "link" as const, + href: `/distribution?condition=${encodeURIComponent(condition)}` as const, + // Deliberately no manifest entry: the count belongs on the plot, not repeated down a + // list of links where it would shift under the reader mid-run. + label: distributionPlotTitle(condition), + })), + ]; + }) + + .done(); + +/** + * The block subtitle when the user has not overridden it. + * + * The gate selection is what distinguishes two instances of this block on one project — + * same dataset, different gate column or different gate order — so that is what the label + * names. It reads along the binding axis: weakest gate first, strongest last. + * + * A pure function of `data`, which is what keeps the subtitle out of hairpin territory. + */ +export function deriveBlockLabel(data: BlockData): string { + // The declared order, which the drag list keeps populated from the moment a gate column is + // picked — so the label appears on the pick rather than waiting for a ranking step. + const ordered = data.gateOrder; + if (!data.gateColumnLabel || ordered.length === 0) return "Select gates"; + + // Every gate, in order — not just the ends. The ordering is what distinguishes two + // instances of this block on one dataset, and first-to-last hides a reordering of the + // middle, which is precisely the change that silently moves every score. + return `${data.gateColumnLabel}: ${ordered.join("-")}`; +} + +/** + * The metadata options minus whatever the other two roles already hold. + * + * The pickers narrow; they do not re-check distinctness. That refusal stays the single check + * in `args` — hiding a column another role holds keeps the user away from a refusal whose + * cause is not visible on the control. A role never hides its own current pick, or the + * control would render with no matching option and look empty. + */ +function narrowTo( + ctx: { + data: BlockData; + resultPool: unknown; + outputs?: unknown; + } & { data: BlockData }, + role: "conditionColumnRef" | "gateColumnRef" | "sortFractionColumnRef", +): { label: string; value: SUniversalPColumnId }[] | undefined { + const all = metadataColumnsOf(ctx); + if (!all) return undefined; + + const roles = ["conditionColumnRef", "gateColumnRef", "sortFractionColumnRef"] as const; + const taken = new Set( + roles + .filter((other) => other !== role) + .map((other) => ctx.data[other]) + .filter((ref): ref is SUniversalPColumnId => ref !== undefined), + ); + + return all + .filter((column) => !taken.has(column.value)) + .map((column) => ({ label: column.label, value: column.value })); +} + +/** The same query `metadataColumns` runs; the runtime memoizes it across both. */ +function metadataColumnsOf(ctx: { + data: BlockData; + resultPool: unknown; +}): { value: SUniversalPColumnId; label: string }[] | undefined { + const anchor = ctx.data.abundanceRef; + if (!anchor) return undefined; + + const pool = ctx.resultPool as { + resolveAnchorCtx: ( + a: Record, + ) => { deriveS: (spec: unknown) => SUniversalPColumnId } | undefined; + getAnchoredPColumns: ( + a: Record, + s: unknown[], + ) => { id: string; spec: { name: string; annotations?: Record } }[] | undefined; + }; + + const anchorCtx = pool.resolveAnchorCtx({ main: anchor }); + if (!anchorCtx) return undefined; + const columns = pool.getAnchoredPColumns({ main: anchor }, [metadataSelector]); + if (!columns) return undefined; + + return columns.map((column) => ({ + value: anchorCtx.deriveS(column.spec), + label: column.spec.annotations?.[Annotation.Label] ?? column.spec.name, + })); +} + +export type BlockOutputs = InferOutputsType; diff --git a/model/src/types.ts b/model/src/types.ts new file mode 100644 index 0000000..c08d9fd --- /dev/null +++ b/model/src/types.ts @@ -0,0 +1,136 @@ +import type { GraphMakerState } from "@milaboratories/graph-maker"; +import type { PlDataTableStateV2, PlRef, SUniversalPColumnId } from "@platforma-sdk/model"; + +/** + * What the workflow consumes — seven arguments and no others. The count is part of the claim: + * no certainty statistic, no per-gate threshold, no parent-variant key. An eighth is a spec + * change, not an implementation detail. + */ +export type BlockArgs = { + /** 1. The dataset selection that anchors every other input. */ + abundanceRef: PlRef; + /** 2. A per-sample metadata column, picked from the option list. */ + conditionColumnRef: SUniversalPColumnId; + /** 3. A per-sample metadata column, picked for the other role. */ + gateColumnRef: SUniversalPColumnId; + /** + * 4. A rank per distinct value of the gate column, along the binding axis. + * + * Derived from `BlockData.gateOrder` by position — the workflow and the computation want a + * value → rank map, the user wants to drag a list. + */ + gateRanks: Record; + /** 5. Absent (empty) means every distinct value of the condition column is a condition. */ + excludedConditions: string[]; + /** 6. Absent means **no floor is applied** — not a floor of zero, and not a guess. */ + readFloor?: number; + /** 7. Absent means the score is computed **uncorrected**, declared on every value. */ + sortFractionColumnRef?: SUniversalPColumnId; +}; + +/** + * The unified data the user edits. Shaped on the UI's terms, projected to `BlockArgs` by + * the args lambda — view state never crosses. + */ +export type BlockData = { + // --- The seven arguments, in argument order ------------------------------ + abundanceRef?: PlRef; + conditionColumnRef?: SUniversalPColumnId; + gateColumnRef?: SUniversalPColumnId; + /** + * The gate values in declared order, weakest binder first. + * + * A list rather than a value → rank map because the control is drag-to-reorder and position + * *is* the rank, which makes a duplicated rank and a rank naming an absent value + * unrepresentable rather than merely refused. + */ + gateOrder: string[]; + excludedConditions: string[]; + /** `undefined` applies no floor at all, and is the normal first run. */ + readFloor?: number; + sortFractionColumnRef?: SUniversalPColumnId; + + // --- Snapshots of the picked columns' distinct values --------------------- + // + // The args lambda sees only `data`, but two of its validations need a picked column's + // *values*, which only a PFrame fetch produces. So the UI writes the ref and the values it + // implies in one user gesture. + // + // Deliberately allowed to go stale if upstream re-emits the column and the user does not + // re-pick: keeping it fresh means a watcher on an output writing back to shared data, whose + // multi-client race costs more than the staleness. The computation re-derives the real + // values anyway. + /** Distinct values of the picked gate column, at the moment it was picked. */ + gateValues: string[]; + /** + * Only the option list knows a column's label, and that list is an output — so deriving the + * subtitle from it in a watcher would be output → data. Snapshotting keeps the subtitle a + * pure function of `data`. + */ + gateColumnLabel?: string; + /** Distinct values of the picked condition column, at the moment it was picked. */ + conditionValues: string[]; + + /** The user's override for the block subtitle. Empty means use the derived label. */ + customBlockLabel: string; + + // --- Pure view state. Never projected. ------------------------------------ + // + // The settings drawer's open state is deliberately absent: it must close when a run starts, + // which means reacting to an output, and writing that back to shared data is the hairpin. It + // lives in a local Vue ref instead. + resultsTableState: PlDataTableStateV2; + /** + * One chart state per condition, so re-templating one arm leaves the others alone. + * + * Which condition a page shows is deliberately not here — it is in the route, and so + * per-client. Held in `data` it would be shared, and two people would fight over which arm + * is on screen. + */ + distributionGraphStates: Record; +}; + +/** One gate a condition collected, with its depth taken **before** the floor. */ +export type GateCollected = { + gate: string; + depth: number; +}; + +/** The manifest's per-condition entry. */ +export type ConditionSummary = { + /** Verbatim, exactly as it appears in the metadata column. */ + condition: string; + gateRankMeanFile: string; + /** Null where the column is not produced at this condition. */ + binScoreFile: string | null; + readDistributionFile: string; + /** Null where `binScore` is not produced. */ + referenceMode: "referenced" | "cancelled" | null; + gatesCollected: GateCollected[]; + variantsScored: number; + /** + * Of the `variantsScored` total, how many the distribution draws — one series per variant, so + * it is cut to the highest-scoring few. Reported only in that view's title, where a truncated + * chart would otherwise be indistinguishable from a complete one. + */ + variantsPlotted: number; + /** As applied, reported from inside the computation rather than from the arguments. */ + sortYieldCorrected: boolean; + /** Null in the uncorrected mode. A sum short of 1.0 is legitimate. */ + sortFractionSum: number | null; +}; + +/** + * The manifest — the only thing the caller reads to know what the run produced. Whether + * `binScore` exists at a condition, in which reference mode, and whether the correction was + * applied are held only here. + */ +export type RunManifest = { + parentIdentified: boolean; + /** + * Which of the two reasons applied, or null — null also covers the case where there was + * no mutation-count table at all, which is a third state rather than a reason. + */ + parentAbsenceReason: string | null; + conditions: ConditionSummary[]; +}; diff --git a/model/tsconfig.json b/model/tsconfig.json new file mode 100644 index 0000000..ccde314 --- /dev/null +++ b/model/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@milaboratories/ts-configs/block/model", + "include": ["src/**/*"] +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..911e0d6 --- /dev/null +++ b/package.json @@ -0,0 +1,34 @@ +{ + "version": "1.0.0", + "private": true, + "scripts": { + "fmt": "turbo run fmt", + "check": "turbo run check", + "build:dev-local": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=all PL_BUILD_LOCATION=local turbo run build", + "build:dev-remote": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=all PL_BUILD_LOCATION=remote turbo run build", + "build:dev-no-software": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=none turbo run build", + "build:dev-binary-existing": "env PL_BUILD_CHANNEL=dev PL_BUILD_USE_PUBLISHED=true turbo run build", + "build:release": "env PL_BUILD_CHANNEL=release PL_BUILD_VARIANT=all PL_BUILD_LOCATION=remote turbo run build", + "test": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=binary PL_BUILD_LOCATION=local turbo run test --concurrency 1", + "test:dry-run": "env PL_BUILD_CHANNEL=dev PL_BUILD_VARIANT=binary PL_BUILD_LOCATION=local turbo run test --dry-run=json", + "mark-stable": "turbo run mark-stable", + "do-pack": "turbo run do-pack", + "watch": "turbo watch build", + "changeset": "changeset", + "version-packages": "changeset version", + "update-sdk": "block-tools structure refresh --update-deps-only", + "upgrade-sdk": "block-tools structure refresh --update-deps-only && pnpm i && block-tools structure refresh && pnpm i && pnpm fmt" + }, + "devDependencies": { + "@changesets/cli": "catalog:", + "@milaboratories/ts-builder": "catalog:", + "@platforma-sdk/block-tools": "catalog:", + "shx": "catalog:", + "turbo": "catalog:" + }, + "peerDependencies": { + "oxfmt": "*", + "oxlint": "*" + }, + "packageManager": "pnpm@9.12.0" +} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..31b03c3 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,14479 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +catalogs: + default: + '@changesets/cli': + specifier: ~2.29.8 + version: 2.29.8 + '@milaboratories/graph-maker': + specifier: 1.6.1 + version: 1.6.1 + '@milaboratories/helpers': + specifier: 1.14.5 + version: 1.14.5 + '@milaboratories/ts-builder': + specifier: 1.6.2 + version: 1.6.2 + '@milaboratories/ts-configs': + specifier: 1.4.0 + version: 1.4.0 + '@platforma-open/milaboratories.runenv-python-3': + specifier: 1.8.2 + version: 1.8.2 + '@platforma-sdk/block-tools': + specifier: 2.13.0 + version: 2.13.0 + '@platforma-sdk/model': + specifier: 1.81.1 + version: 1.81.1 + '@platforma-sdk/tengo-builder': + specifier: 4.0.22 + version: 4.0.22 + '@platforma-sdk/test': + specifier: 1.81.3 + version: 1.81.3 + '@platforma-sdk/ui-vue': + specifier: 1.81.1 + version: 1.81.1 + '@platforma-sdk/workflow-tengo': + specifier: 6.8.2 + version: 6.8.2 + shx: + specifier: ~0.4.0 + version: 0.4.0 + turbo: + specifier: ~2.8.11 + version: 2.8.21 + typescript: + specifier: ~5.6.3 + version: 5.6.3 + vitest: + specifier: ~4.0.18 + version: 4.0.18 + vue: + specifier: 3.5.24 + version: 3.5.24 + +importers: + + .: + dependencies: + oxfmt: + specifier: '*' + version: 0.62.0 + oxlint: + specifier: '*' + version: 1.77.0 + devDependencies: + '@changesets/cli': + specifier: 'catalog:' + version: 2.29.8(@types/node@26.1.2) + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@7.0.2))(yaml@2.9.0) + '@platforma-sdk/block-tools': + specifier: 'catalog:' + version: 2.13.0(@types/node@26.1.2) + shx: + specifier: 'catalog:' + version: 0.4.0 + turbo: + specifier: 'catalog:' + version: 2.8.21 + + block: + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@5.6.3))(yaml@2.9.0) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 + '@platforma-open/milaboratories.sort-seq-analysis.model': + specifier: workspace:* + version: link:../model + '@platforma-open/milaboratories.sort-seq-analysis.ui': + specifier: workspace:* + version: link:../ui + '@platforma-open/milaboratories.sort-seq-analysis.workflow': + specifier: workspace:* + version: link:../workflow + '@platforma-sdk/block-tools': + specifier: 'catalog:' + version: 2.13.0(@types/node@26.1.2) + '@platforma-sdk/model': + specifier: 'catalog:' + version: 1.81.1 + shx: + specifier: 'catalog:' + version: 0.4.0 + typescript: + specifier: 'catalog:' + version: 5.6.3 + + model: + dependencies: + '@milaboratories/graph-maker': + specifier: 'catalog:' + version: 1.6.1(@milaboratories/pl-model-common@1.47.3)(@platforma-sdk/model@1.81.1)(@platforma-sdk/ui-vue@1.81.1(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@7.0.2) + '@milaboratories/helpers': + specifier: 'catalog:' + version: 1.14.5 + '@platforma-sdk/model': + specifier: 'catalog:' + version: 1.81.1 + '@types/node': + specifier: '*' + version: 26.1.2 + typescript: + specifier: '*' + version: 7.0.2 + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@7.0.2))(yaml@2.9.0) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 + '@platforma-sdk/block-tools': + specifier: 'catalog:' + version: 2.13.0(@types/node@26.1.2) + + software: + devDependencies: + '@platforma-open/milaboratories.runenv-python-3': + specifier: 'catalog:' + version: 1.8.2 + '@platforma-sdk/block-tools': + specifier: 'catalog:' + version: 2.13.0(@types/node@26.1.2) + + test: + dependencies: + typescript: + specifier: '*' + version: 7.0.2 + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@7.0.2))(yaml@2.9.0) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 + '@platforma-sdk/test': + specifier: 'catalog:' + version: 1.81.3(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2)(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + vitest: + specifier: 'catalog:' + version: 4.0.18(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0) + + ui: + dependencies: + '@milaboratories/graph-maker': + specifier: 'catalog:' + version: 1.6.1(@milaboratories/pl-model-common@1.47.3)(@platforma-sdk/model@1.81.1)(@platforma-sdk/ui-vue@1.81.1(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@7.0.2) + '@platforma-open/milaboratories.sort-seq-analysis.model': + specifier: workspace:* + version: link:../model + '@platforma-sdk/model': + specifier: 'catalog:' + version: 1.81.1 + '@platforma-sdk/ui-vue': + specifier: 'catalog:' + version: 1.81.1(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2) + '@types/node': + specifier: '*' + version: 26.1.2 + typescript: + specifier: '*' + version: 7.0.2 + vue: + specifier: 'catalog:' + version: 3.5.24(typescript@7.0.2) + devDependencies: + '@milaboratories/ts-builder': + specifier: 'catalog:' + version: 1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@7.0.2))(yaml@2.9.0) + '@milaboratories/ts-configs': + specifier: 'catalog:' + version: 1.4.0 + + workflow: + dependencies: + '@platforma-open/milaboratories.sort-seq-analysis.software': + specifier: workspace:* + version: link:../software + '@platforma-sdk/workflow-tengo': + specifier: 'catalog:' + version: 6.8.2 + devDependencies: + '@platforma-sdk/tengo-builder': + specifier: 'catalog:' + version: 4.0.22 + '@platforma-sdk/test': + specifier: 'catalog:' + version: 1.81.3(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + shx: + specifier: 'catalog:' + version: 0.4.0 + +packages: + + '@ag-grid-community/core@32.3.9': + resolution: {integrity: sha512-oZeAEPgaJVMzfKqbAPCyadcN5+iy+tjvhRLqEYJdBxtLgW/s2s0qXcXQvnrz7eUMD3Z7h3BQRVt2h/p0T6Ox/w==} + + '@ast-grep/napi-darwin-arm64@0.36.3': + resolution: {integrity: sha512-uM0Hrm5gcHqaBL64ktmPBFMTorTlPKWsUfi0E2Cg09GJfeYWvZmicCqgd7qVtjURmQvFQdb4JSqHIkJvws6Uqw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [darwin] + + '@ast-grep/napi-darwin-x64@0.36.3': + resolution: {integrity: sha512-wEMeQw8lRL66puG2m8m0kDRQDtubygj59HA/cmut2V5SPx/13BN3wuEk6JPv97gqGUCUGhG2+5Z6UZ/Ll2q01Q==} + engines: {node: '>= 10'} + cpu: [x64] + os: [darwin] + + '@ast-grep/napi-linux-arm64-gnu@0.36.3': + resolution: {integrity: sha512-sMsTMaUjW7SM8KPbLviCSBuM4zgJcwvie1yZI92HKSlFzC7ABe7X7UvyUREB+JwqccDVEL5yOJAjqB8eFSCizw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@ast-grep/napi-linux-arm64-musl@0.36.3': + resolution: {integrity: sha512-2XRmNYuovZu0Pa4J3or4PKMkQZnXXfpVcCrPwWB/2ytX7XUo+TWLgYE8rPVnJOyw5zujkveFb0XUrro9mQgLzw==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [linux] + + '@ast-grep/napi-linux-x64-gnu@0.36.3': + resolution: {integrity: sha512-mTwPRbBi1feGqR2b5TWC5gkEDeRi8wfk4euF5sKNihfMGHj6pdfINHQ3QvLVO4C7z0r/wgWLAvditFA0b997dg==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@ast-grep/napi-linux-x64-musl@0.36.3': + resolution: {integrity: sha512-tMGPrT+zuZzJK6n1cD1kOii7HYZE9gUXjwtVNE/uZqXEaWP6lmkfoTMbLjnxEe74VQbmaoDGh1/cjrDBnqC6Uw==} + engines: {node: '>= 10'} + cpu: [x64] + os: [linux] + + '@ast-grep/napi-win32-arm64-msvc@0.36.3': + resolution: {integrity: sha512-7pFyr9+dyV+4cBJJ1I57gg6PDXP3GBQeVAsEEitzEruxx4Hb4cyNro54gGtlsS+6ty+N0t004tPQxYO2VrsPIg==} + engines: {node: '>= 10'} + cpu: [arm64] + os: [win32] + + '@ast-grep/napi-win32-ia32-msvc@0.36.3': + resolution: {integrity: sha512-MPAgccH9VscRaFuEBMzDGPS+3c4cKNVGIVJ7WSNa1nZtLQ0eFEaPJ7pyDnCezgVSxfNFVYBvKyyF/vcm7Qc9+A==} + engines: {node: '>= 10'} + cpu: [ia32] + os: [win32] + + '@ast-grep/napi-win32-x64-msvc@0.36.3': + resolution: {integrity: sha512-TIVtuSbXhty9kaSEfr4ULWx5PAuUeGgUkFaR60lmOs7sGTWgpig+suwKfTmevoAblFknCW/aMHOwziwJoUZA6A==} + engines: {node: '>= 10'} + cpu: [x64] + os: [win32] + + '@ast-grep/napi@0.36.3': + resolution: {integrity: sha512-ExypohE8L7FvKBHxu7UpwcV9XVfyS+AqNZKyKIfxYwJyD9l7Gw6pmMYd7J2uopJsPEIUf44/emEFds6nFUx/dw==} + engines: {node: '>= 10'} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-ecr-public@3.859.0': + resolution: {integrity: sha512-pPY85lrGBNWynofNC6Er49W6aA4JvOOKC9RDbS8rWR8pBPEG6p0B82VQKFMR+3JYRogpfQf5hzU47um96EslFA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-s3@3.859.0': + resolution: {integrity: sha512-oFLHZX1X6o54ZlweubtSVvQDz15JiNrgDD7KeMZT2MwxiI3axPcHzTo2uizjj5mgNapmYjRmQS5c1c63dvruVA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/client-sso@3.858.0': + resolution: {integrity: sha512-iXuZQs4KH6a3Pwnt0uORalzAZ5EXRPr3lBYAsdNwkP8OYyoUz5/TE3BLyw7ceEh0rj4QKGNnNALYo1cDm0EV8w==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/core@3.858.0': + resolution: {integrity: sha512-iWm4QLAS+/XMlnecIU1Y33qbBr1Ju+pmWam3xVCPlY4CSptKpVY+2hXOnmg9SbHAX9C005fWhrIn51oDd00c9A==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-env@3.858.0': + resolution: {integrity: sha512-kZsGyh2BoSRguzlcGtzdLhw/l/n3KYAC+/l/H0SlsOq3RLHF6tO/cRdsLnwoix2bObChHUp03cex63o1gzdx/Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-http@3.858.0': + resolution: {integrity: sha512-GDnfYl3+NPJQ7WQQYOXEA489B212NinpcIDD7rpsB6IWUPo8yDjT5NceK4uUkIR3MFpNCGt9zd/z6NNLdB2fuQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-ini@3.859.0': + resolution: {integrity: sha512-KsccE1T88ZDNhsABnqbQj014n5JMDilAroUErFbGqu5/B3sXqUsYmG54C/BjvGTRUFfzyttK9lB9P9h6ddQ8Cw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-node@3.859.0': + resolution: {integrity: sha512-ZRDB2xU5aSyTR/jDcli30tlycu6RFvQngkZhBs9Zoh2BiYXrfh2MMuoYuZk+7uD6D53Q2RIEldDHR9A/TPlRuA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-process@3.858.0': + resolution: {integrity: sha512-l5LJWZJMRaZ+LhDjtupFUKEC5hAjgvCRrOvV5T60NCUBOy0Ozxa7Sgx3x+EOwiruuoh3Cn9O+RlbQlJX6IfZIw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-sso@3.859.0': + resolution: {integrity: sha512-BwAqmWIivhox5YlFRjManFF8GoTvEySPk6vsJNxDsmGsabY+OQovYxFIYxRCYiHzH7SFjd4Lcd+riJOiXNsvRw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.858.0': + resolution: {integrity: sha512-8iULWsH83iZDdUuiDsRb83M0NqIlXjlDbJUIddVsIrfWp4NmanKw77SV6yOZ66nuJjPsn9j7RDb9bfEPCy5SWA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/lib-storage@3.859.0': + resolution: {integrity: sha512-VfaEhih4MMxD6llibXEnrS4HyExhLpIFAvy1nq490IGO/Z6JCI81kmA3rB376XahMhoS9CVN0eAoeryTYHFHGw==} + engines: {node: '>=18.0.0'} + peerDependencies: + '@aws-sdk/client-s3': ^3.859.0 + + '@aws-sdk/middleware-bucket-endpoint@3.840.0': + resolution: {integrity: sha512-+gkQNtPwcSMmlwBHFd4saVVS11In6ID1HczNzpM3MXKXRBfSlbZJbCt6wN//AZ8HMklZEik4tcEOG0qa9UY8SQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-expect-continue@3.840.0': + resolution: {integrity: sha512-iJg2r6FKsKKvdiU4oCOuCf7Ro/YE0Q2BT/QyEZN3/Rt8Nr4SAZiQOlcBXOCpGvuIKOEAhvDOUnW3aDHL01PdVw==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.858.0': + resolution: {integrity: sha512-/GBerFXab3Mk5zkkTaOR1drR1IWMShiUbcEocCPig068/HnpjVSd9SP4+ro/ivG+zLOtxJdpjBcBKxCwQmefMA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-host-header@3.840.0': + resolution: {integrity: sha512-ub+hXJAbAje94+Ya6c6eL7sYujoE8D4Bumu1NUI8TXjUhVVn0HzVWQjpRLshdLsUp1AW7XyeJaxyajRaJQ8+Xg==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-location-constraint@3.840.0': + resolution: {integrity: sha512-KVLD0u0YMF3aQkVF8bdyHAGWSUY6N1Du89htTLgqCcIhSxxAJ9qifrosVZ9jkAzqRW99hcufyt2LylcVU2yoKQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-logger@3.840.0': + resolution: {integrity: sha512-lSV8FvjpdllpGaRspywss4CtXV8M7NNNH+2/j86vMH+YCOZ6fu2T/TyFd/tHwZ92vDfHctWkRbQxg0bagqwovA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.840.0': + resolution: {integrity: sha512-Gu7lGDyfddyhIkj1Z1JtrY5NHb5+x/CRiB87GjaSrKxkDaydtX2CU977JIABtt69l9wLbcGDIQ+W0uJ5xPof7g==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.858.0': + resolution: {integrity: sha512-g1LBHK9iAAMnh4rRX4/cGBuICH5R9boHUw4X9FkMC+ROAH9z1A2uy6bE55sg5guheAmVTQ5sOsVZb8QPEQbIUA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-ssec@3.840.0': + resolution: {integrity: sha512-CBZP9t1QbjDFGOrtnUEHL1oAvmnCUUm7p0aPNbIdSzNtH42TNKjPRN3TuEIJDGjkrqpL3MXyDSmNayDcw/XW7Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/middleware-user-agent@3.858.0': + resolution: {integrity: sha512-pC3FT/sRZ6n5NyXiTVu9dpf1D9j3YbJz3XmeOOwJqO/Mib2PZyIQktvNMPgwaC5KMVB1zWqS5bmCwxpMOnq0UQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/nested-clients@3.858.0': + resolution: {integrity: sha512-ChdIj80T2whoWbovmO7o8ICmhEB2S9q4Jes9MBnKAPm69PexcJAK2dQC8yI4/iUP8b3+BHZoUPrYLWjBxIProQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/region-config-resolver@3.840.0': + resolution: {integrity: sha512-Qjnxd/yDv9KpIMWr90ZDPtRj0v75AqGC92Lm9+oHXZ8p1MjG5JE2CW0HL8JRgK9iKzgKBL7pPQRXI8FkvEVfrA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.858.0': + resolution: {integrity: sha512-WtQvCtIz8KzTqd/OhjziWb5nAFDEZ0pE1KJsWBZ0j6Ngvp17ORSY37U96buU0SlNNflloGT7ZIlDkdFh73YktA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/token-providers@3.859.0': + resolution: {integrity: sha512-6P2wlvm9KBWOvRNn0Pt8RntnXg8fzOb5kEShvWsOsAocZeqKNaYbihum5/Onq1ZPoVtkdb++8eWDocDnM4k85Q==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/types@3.840.0': + resolution: {integrity: sha512-xliuHaUFZxEx1NSXeLLZ9Dyu6+EJVQKEoD+yM+zqUo3YDZ7medKJWY6fIOKiPX/N7XbLdBYwajb15Q7IL8KkeA==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-arn-parser@3.804.0': + resolution: {integrity: sha512-wmBJqn1DRXnZu3b4EkE6CWnoWMo1ZMvlfkqU5zPz67xx1GMaXlDCchFvKAXMjk4jn/L1O3tKnoFDNsoLV1kgNQ==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-endpoints@3.848.0': + resolution: {integrity: sha512-fY/NuFFCq/78liHvRyFKr+aqq1aA/uuVSANjzr5Ym8c+9Z3HRPE9OrExAHoMrZ6zC8tHerQwlsXYYH5XZ7H+ww==} + engines: {node: '>=18.0.0'} + + '@aws-sdk/util-locate-window@3.965.8': + resolution: {integrity: sha512-uUbMs1cBZPafD0ohUj6EwNf0fPZ534NvBxHox4hjX+0Rxq5paSYUem7+hi833pYrzrcnBATKIYpR02MDXT5M9g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-user-agent-browser@3.840.0': + resolution: {integrity: sha512-JdyZM3EhhL4PqwFpttZu1afDpPJCCc3eyZOLi+srpX11LsGj6sThf47TYQN75HT1CarZ7cCdQHGzP2uy3/xHfQ==} + + '@aws-sdk/util-user-agent-node@3.858.0': + resolution: {integrity: sha512-T1m05QlN8hFpx5/5duMjS8uFSK5e6EXP45HQRkZULVkL3DK+jMaxsnh3KLl5LjUoHn/19M4HM0wNUBhYp4Y2Yw==} + engines: {node: '>=18.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.821.0': + resolution: {integrity: sha512-DIIotRnefVL6DiaHtO6/21DhJ4JZnnIwdNbpwiAhdt/AVbttcE4yw925gsjur0OGv5BTYXQXU3YnANBYnZjuQA==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.8': + resolution: {integrity: sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==} + engines: {node: '>=6.9.0'} + + '@babel/generator@8.0.0': + resolution: {integrity: sha512-NT9NrVwJsbSV6Y2FSstWa71EETOnzrjkL5/wX3D2mYHtKM+qvqB1DvR4D0Setb/gDBsHzRICifwEWMO8CnTF6g==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@8.0.0': + resolution: {integrity: sha512-6mJgmFFFIIO82vvoLt9XtRC7/TkzXfts1t/SpRX4IHSzMgqoPYCWesVu1udUPUWioAE/2fcG6WuI8zrkE1gwrg==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@8.0.4': + resolution: {integrity: sha512-4wFaiLd0bVo4cIoTXI3zKI038NIWE/cr3jvBjejOVYVxV/m8Ltav1USiGzG1fmS5J2RhgEOgXNNK46cRPnRsrg==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.8': + resolution: {integrity: sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/parser@8.0.4': + resolution: {integrity: sha512-srpptsAkEbbNIC/q8nT7o+m6CQe8CJUTV/t7MYc9NnWlgYVtHOb7JH6SorxMhN0kuRJjVqXbKClG6xSbPtzz+g==} + engines: {node: ^22.18.0 || >=24.11.0} + hasBin: true + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.8': + resolution: {integrity: sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.8': + resolution: {integrity: sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==} + engines: {node: '>=6.9.0'} + + '@babel/types@8.0.4': + resolution: {integrity: sha512-eY+Yn3dCqTGmyiq2QRU66lA5FL8lqqqvecHt0fF3uHONIa7ToYsaCiWV8lOKqAs0Rb2SjixiKFROngnulPtt2g==} + engines: {node: ^22.18.0 || >=24.11.0} + + '@bufbuild/protobuf@2.13.0': + resolution: {integrity: sha512-acq7c49vxfm1ggJ95P70TX7ABDM0vxr1SYD3BB0o0jnBLB4OAqeHyKuN+cD3w80gXEDQ2zxHpR6CUeA+O/aU9g==} + + '@bufbuild/protoplugin@2.13.0': + resolution: {integrity: sha512-32eMChKaL/A8Hh5AfMmXSdnuyznN85uoEjoyWiWeRrvtQOtpqX/v1R9PDe0g9vMIgzznK9inMT3CUaal0kjLUQ==} + + '@bytecodealliance/preview2-shim@0.17.9': + resolution: {integrity: sha512-i0R3eQBe6PA/o/1EFE3Owe4In2rcccb6QxnjpntM/lPe3/duJ0bRQTVZM2Ufpo99X4eofGeltQUkape1C91FFA==} + + '@changesets/apply-release-plan@7.1.1': + resolution: {integrity: sha512-9qPCm/rLx/xoOFXIHGB229+4GOL76S4MC+7tyOuTsR6+1jYlfFDQORdvwR5hDA6y4FL2BPt3qpbcQIS+dW85LA==} + + '@changesets/assemble-release-plan@6.0.10': + resolution: {integrity: sha512-rSDcqdJ9KbVyjpBIuCidhvZNIiVt1XaIYp73ycVQRIA5n/j6wQaEk0ChRLMUQ1vkxZe51PTQ9OIhbg6HQMW45A==} + + '@changesets/changelog-git@0.2.1': + resolution: {integrity: sha512-x/xEleCFLH28c3bQeQIyeZf8lFXyDFVn1SgcBiR2Tw/r4IAWlk1fzxCEZ6NxQAjF2Nwtczoen3OA2qR+UawQ8Q==} + + '@changesets/cli@2.29.8': + resolution: {integrity: sha512-1weuGZpP63YWUYjay/E84qqwcnt5yJMM0tep10Up7Q5cS/DGe2IZ0Uj3HNMxGhCINZuR7aO9WBMdKnPit5ZDPA==} + hasBin: true + + '@changesets/config@3.1.4': + resolution: {integrity: sha512-pf0bvD/v6WI2cRlZ6hzpjtZdSlXDXMAJ+Iz7xfFzV4ZxJ8OGGAON+1qYc99ZPrijnt4xp3VGG7eNvAOGS24V1Q==} + + '@changesets/errors@0.2.0': + resolution: {integrity: sha512-6BLOQUscTpZeGljvyQXlWOItQyU71kCdGz7Pi8H8zdw6BI0g3m43iL4xKUVPWtG+qrrL9DTjpdn8eYuCQSRpow==} + + '@changesets/get-dependents-graph@2.1.4': + resolution: {integrity: sha512-ZsS00x6WvmHq3sQv8oCMwL0f/z3wbXCVuSVTJwCnnmbC/iBdNJGFx1EcbMG4PC6sXRyH69liM4A2WKXzn/kRPg==} + + '@changesets/get-release-plan@4.0.16': + resolution: {integrity: sha512-2K5Om6CrMPm45rtvckfzWo7e9jOVCKLCnXia5eUPaURH7/LWzri7pK1TycdzAuAtehLkW7VPbWLCSExTHmiI6g==} + + '@changesets/get-version-range-type@0.4.0': + resolution: {integrity: sha512-hwawtob9DryoGTpixy1D3ZXbGgJu1Rhr+ySH2PvTLHvkZuQ7sRT4oQwMh0hbqZH1weAooedEjRsbrWcGLCeyVQ==} + + '@changesets/git@3.0.4': + resolution: {integrity: sha512-BXANzRFkX+XcC1q/d27NKvlJ1yf7PSAgi8JG6dt8EfbHFHi4neau7mufcSca5zRhwOL8j9s6EqsxmT+s+/E6Sw==} + + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + + '@changesets/parse@0.4.3': + resolution: {integrity: sha512-ZDmNc53+dXdWEv7fqIUSgRQOLYoUom5Z40gmLgmATmYR9NbL6FJJHwakcCpzaeCy+1D0m0n7mT4jj2B/MQPl7A==} + + '@changesets/pre@2.0.2': + resolution: {integrity: sha512-HaL/gEyFVvkf9KFg6484wR9s0qjAXlZ8qWPDkTyKF6+zqjBe/I2mygg3MbpZ++hdi0ToqNUF8cjj7fBy0dg8Ug==} + + '@changesets/read@0.6.7': + resolution: {integrity: sha512-D1G4AUYGrBEk8vj8MGwf75k9GpN6XL3wg8i42P2jZZwFLXnlr2Pn7r9yuQNbaMCarP7ZQWNJbV6XLeysAIMhTA==} + + '@changesets/should-skip-package@0.1.2': + resolution: {integrity: sha512-qAK/WrqWLNCP22UDdBTMPH5f41elVDlsNyat180A33dWxuUDyNpg6fPi/FyTZwRriVjg0L8gnjJn2F9XAoF0qw==} + + '@changesets/types@4.1.0': + resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} + + '@changesets/types@6.1.0': + resolution: {integrity: sha512-rKQcJ+o1nKNgeoYRHKOS07tAMNd3YSN0uHaJOZYjBAgxfV7TUE7JE+z4BzZdQwb5hKaYbayKN5KrYV7ODb2rAA==} + + '@changesets/write@0.4.0': + resolution: {integrity: sha512-CdTLvIOPiCNuH71pyDu3rA+Q0n65cmAbXnwWH84rKGiFumFzkmHNT8KHTMEchcxN+Kl8I54xGUhJ7l3E7X396Q==} + + '@colors/colors@1.6.0': + resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==} + engines: {node: '>=0.1.90'} + + '@d3fc/d3fc-axis@3.0.7': + resolution: {integrity: sha512-S4pILxkQUkD7WQmimWxIEHfXUYEonlXWuWvMP6iq3KXL3d+cj4flvwNqLYZvSVaQDdK990cKkjrK/ZAKnReGlg==} + peerDependencies: + d3-scale: '*' + d3-selection: '*' + d3-shape: '*' + + '@d3fc/d3fc-chart@5.1.9': + resolution: {integrity: sha512-xFO9lDUi2wAkjfyWlVZuFwSWEgnk0WOEagR2R9KzQ+uxeg3oZOPzwE+AZbpALyQbjjQ2uIxcOk56xnmnnayk3w==} + peerDependencies: + d3-scale: '*' + d3-selection: '*' + + '@d3fc/d3fc-data-join@6.0.3': + resolution: {integrity: sha512-fd1D2Cl4YGjzl3gBhcrvTl/VxaSncY0ZcokWsN8ahtmk9DZK4DnAgHGrdecnXVLkOx+ANDcqxqscYz6MWXLbcA==} + peerDependencies: + d3-selection: '*' + + '@d3fc/d3fc-element@6.2.0': + resolution: {integrity: sha512-AvdZ3V4mVxF9dGYLiDCoqr3GhrFOUQEc1FcP20QEhQ3fJ3qYRwx7/uhL7G/L2xbe6k4delPgnLOvtoaDenhpZw==} + + '@d3fc/d3fc-pointer@3.0.3': + resolution: {integrity: sha512-hXY7LqliDEJBH/do4YZusdLoikLYlWoN7efPC7YKYJ8igoEQFa48BqEHcANLs1qH+r7vzL2SS8V39MzgnJ1yQA==} + peerDependencies: + d3-dispatch: '*' + d3-selection: '*' + + '@d3fc/d3fc-rebind@6.0.1': + resolution: {integrity: sha512-+ryBZ53ALMffbADwnFAtTYQJcT7PE5BwpducGYS0X6Jux6ESnp+fP+cDQvBGbDBOVqaziGnfeLeJXjtMnZujmQ==} + + '@d3fc/d3fc-series@6.1.3': + resolution: {integrity: sha512-OSbt60SohTIib1xihX9ufneyJY7s9Feg9hvXVyEBZEBkwNE1NaeesZJ4nkmslu39RWuwsvpK3apL/XuBw7i5WA==} + peerDependencies: + d3-array: '*' + d3-scale: '*' + d3-scale-chromatic: '*' + d3-selection: '*' + d3-shape: '*' + + '@d3fc/d3fc-shape@6.0.1': + resolution: {integrity: sha512-/dD3S8BWrOjO2mSptUmwe38V7KG4Kw6liIE5NXZJjX/XidfZhuDu7WWuya3i90HeNYDZNcs6Z+4qM3FnvlZf8g==} + peerDependencies: + d3-path: '*' + + '@d3fc/d3fc-webgl@3.2.1': + resolution: {integrity: sha512-yNYHW/tC05rrJs5fpVM5zdmInL8NH6UP09ZJ2tmKw62ELYHWySV8vuXOVZN3V/3WihPa60p2w23H0Hrp2b5qeg==} + peerDependencies: + d3-scale: '*' + d3-shape: '*' + + '@dabh/diagnostics@2.0.8': + resolution: {integrity: sha512-R4MSXTVnuMzGD7bzHdW2ZhhdPC/igELENcq5IjEverBvq5hn1SXCWcsi6eSsdWP0/Ur+SItRRjAktmdoX/8R/Q==} + + '@esbuild/aix-ppc64@0.28.1': + resolution: {integrity: sha512-Svl7tq8k/08+p6CXPpRjQ1fKX+1odH/BQbb48fV6fj3CWHhsoIOoY87w1oHXm0qEpkIK3ZfVgp0hed3XBXzXMQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.28.1': + resolution: {integrity: sha512-34EGEbCIAgosYz6goLcopX6Mo7NyGv9tfwEM2/7Ce2VcVRk568iSvniGWcUXIy7wEDR1wzolcxcriFVrWYcwBg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.28.1': + resolution: {integrity: sha512-0k2F129Xdio1TdJfzJ8sy1Q47vUD2NnwdhiAf7drUN1EBTfPf4hsFCtmMgu/6m8JSzsBrlmVjudMBQqOfG8usQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.28.1': + resolution: {integrity: sha512-dbwY7ltSMDWsRatcRpCnES4F+im88OCUgGZjy52shC7GqHRE/cYlxNbB4Z4UpJswpcc4Qxd2oE/ufM0p61IKng==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.28.1': + resolution: {integrity: sha512-TZbWkQY7kvTAXbXUT7uVACR5cMHsDiSz9z7ZKAX/RTq/WJEk3QyRr0wZpNhBDX+/0CtdqUIJlOiodQcta6tY3Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.28.1': + resolution: {integrity: sha512-zfdzgK9ACBNZLI/CyHTOx81SyNbM6YXn7rxSgX97VjyiPl9W1i4Ka4fgKECEoFCKGpvBj5qArWIGgQjOwkgskQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.28.1': + resolution: {integrity: sha512-wG2EA8ENdEI0qhkSZMjfqrdY+ziCYCPMmtZjjIwOmXFjmyzEHn+UUxk5of+SYsjtfs3VpnlC7QLzSI5hY/rOAw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.28.1': + resolution: {integrity: sha512-i7dZ9vQgnvSCzi/rYCXNgtF/U+eKZNJBzu3eTQbRgHnM7tNSizLOkRFAl3qzVc/Op/u5YkHHa4pf/3DOYHthLQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.28.1': + resolution: {integrity: sha512-yHs+0uc8+nvEAfAfxrWQKK5peSNzBc4PegcMO0EJ2hT71uA7vB8Ihg2e77R2P7SG5uYjPbHlLLmve4LLLRCf0g==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.28.1': + resolution: {integrity: sha512-qVXBOHQS+d5Y722GwJzJUtOLlX7km3CraOaGormF1pDtPd2C/l1SHRPgjLunLGe51Sh5YYWKMFDyV4SxgMQYTQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.28.1': + resolution: {integrity: sha512-d1z4ZuP0ajrfz/FhGT4vv278rX8KnPPJx8i5+AtK7TYbx9Le9F1hyzurZpkEyjkGa9dUGhQow4C1NmeGvqxN2w==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.28.1': + resolution: {integrity: sha512-M5sRjUVZrkm1OAPR3dlOYzNmN+loZKGVi1VUQGrwuqLcbR6qeAz+famMhjASeH3YVKvZz+zT1jlh/keC3Rj/lg==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.28.1': + resolution: {integrity: sha512-mRObBZeHh2OxcBFPWE/FjylkRgZdYuiTR3vaTozquCGOH14iP9oN4x4Ge81CoIDYQrXmIxpFumJBu5MtZpnQJQ==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.28.1': + resolution: {integrity: sha512-slScBsMAb3GFDcdrCgLwZtPYRoH2H/youv10QiZyRjmsP48fznoveWytSgCI/R0ZcUgpc0ZhIUEx6LHts8yrfQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.28.1': + resolution: {integrity: sha512-kw0owk1o0GFETUJyW0jc0G4Yzs0BHZn0JDZ8JRT088vjJYX777BAs1fDGxAC+q831qOs2DTC96mNsG2opdfyyQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.28.1': + resolution: {integrity: sha512-/lAIjX8aYFRByhh6L5rYtPEDRqa9de/4V/juOXcta5frjvzXO4/sqEtyytse0g3zZFuWu5cDN0MkLz2qRDD2Ag==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.28.1': + resolution: {integrity: sha512-u/anNYF2mmVOEDwLtnQ1wOr3EZ9sTNGLWrsYGYwHWzGA3Si84IOkHXlbWTD1NB+9/1lcnweYKO54uhxZydNzfA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.28.1': + resolution: {integrity: sha512-oks0DYbLwWMmaakTsCb+zL4E+aHRVLom9IJZOAthMQEPiQmydXHkziYEsGYRx0uNV/IjEKGAV941JzH02pflqw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.28.1': + resolution: {integrity: sha512-aeL6lAnN89Hz43Mlh1G8ARasbuoYvSITDEx0tHh5b7jJnHcssqgjy9Yx430GDpmCa6OyrKoS0aNRjKundRizGg==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.28.1': + resolution: {integrity: sha512-MEFJe5C3R8pwXdZ5Y21oo6m7ePiS0d9pWucn99O/wvyJZChoIQKrQDxKrGeW8F5+T0okTHesAmDeiHDTIq0V/Q==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.28.1': + resolution: {integrity: sha512-i/ZLIOafE0Z8cI/XANJAixoJL/uRAoS2xOA3rb0xN+KK0K177cMAsQYkzHtBrtMXAKuAc7HGgcWiZ/sRC1Nxgw==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.28.1': + resolution: {integrity: sha512-ge+Z7EXFNt2BO1oAMsVpiQ8EwndV9i1xXerAeTIK7AtPs3bKFXQM7nlRxDSIUIMeueR1CNXxqztLzdNeReKBJg==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.28.1': + resolution: {integrity: sha512-BEjgtECkL3vY+SaSQ6nzVfiALUeFxpawyp8Jmf5PtYhf1Ug40N1h/hxlhts+f1FvSvarEigdxS3BlSMI2PJLcQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.28.1': + resolution: {integrity: sha512-lCv9eK/H6ZJWbE7bh2nw54CZ9M2nupBxJcTsdk/QQnWkdSjKGuxmmH8/GWrlT1eMmZfn4dGcCjRte397WqfQXA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.28.1': + resolution: {integrity: sha512-zvb/mB2bSCoJOpoCBgYKKpX6YM6mJBlBUVUtVj41DlZJVEB6/0CKlRYxP5wWl1C1ILiCoAU5wZZ4q1P3qeS6Eg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.28.1': + resolution: {integrity: sha512-bm4Mowrv+GXMlpWX++EcXw/iLyd1o3+bJkC2DkWXYVvgZCqD/bSj9ctZeAMC3cIxgjRVR2Dufaiu4YPxr5gW1A==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@grpc/grpc-js@1.14.4': + resolution: {integrity: sha512-k9Dj3DV/itK9D06Y8f190Qgop7/Ui+D0njFV3LHMPwPT75DpXLQohE9Wmz0QElrJnzsjB7KPWiKJbOl7IPDArQ==} + engines: {node: '>=12.10.0'} + + '@grpc/proto-loader@0.8.1': + resolution: {integrity: sha512-wtF6h+DY6M3YaDBPAmvuuA6jV8Sif9MjtOI5euKFWRgCDl5PeDpPsHR9u2l6St5ceY8AZgoNDww5+HvEsXFsGg==} + engines: {node: '>=6'} + hasBin: true + + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@istanbuljs/schema@0.1.6': + resolution: {integrity: sha512-+Sg6GCR/wy1oSmQDFq4LQDAhm3ETKnorxN+y5nbLULOR3P0c14f2Wurzj3/xqPXtasLFfHd5iRFQ7AJt4KH2cw==} + engines: {node: '>=8'} + + '@jitl/quickjs-ffi-types@0.32.0': + resolution: {integrity: sha512-v9T+GQpmk43VDJ7d72sf0Nexhk+ArvtUihW27dy7lqAl0zBObFKtSBBIm5RBjwIhE8VwsPPm9PNuvPvNqLWUEg==} + + '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': + resolution: {integrity: sha512-EX8zbXwGqCgAE764M+qvkHtyXDi/FUoMBea0JnES7vCM3P7a2+EOZOjGv85wtZ2sJhI1oJ+nekmqpOODFDY+hw==} + + '@jitl/quickjs-wasmfile-debug-sync@0.32.0': + resolution: {integrity: sha512-LeYWrPGC1uNCTBWvibo3ZLJj0CSVNYUXvJpXMCmuQ5Sap2cCACc3uvGvYV4homHHBAzfw5akoTqMMS4YFRtw+Q==} + + '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': + resolution: {integrity: sha512-3oSwPfja12ICz4aIblB58cuY8JlEq5Txt8Cut4VLo+LH47QN+mzCnSgnbB03hWzg1LBcc+VyyI9UOag7a1NF+Q==} + + '@jitl/quickjs-wasmfile-release-sync@0.32.0': + resolution: {integrity: sha512-BKNDI/TPBfGlLNGYpLrhcDGXmIk4xHm4MRAisOBnOzpXVn9HZWsfmMAc9WMBrAHjvvds6HOikKeaOBKdPdpVrg==} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@js-sdsl/ordered-map@4.4.2': + resolution: {integrity: sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==} + + '@manypkg/find-root@1.1.0': + resolution: {integrity: sha512-mki5uBvhHzO8kYYix/WRy2WX8S3B5wdVSc9D6KcU5lQNglP2yt58/VfLuAK49glRXChosY8ap2oJ1qgma3GUVA==} + + '@manypkg/get-packages@1.1.3': + resolution: {integrity: sha512-fo+QhuU3qE/2TQMQmbVMqaQ6EWbMhi4ABWP+O4AM1NqPBuy0OrApV5LO6BrrgnhtAHS2NH6RrVk9OL181tTi8A==} + + '@mapbox/node-pre-gyp@2.0.3': + resolution: {integrity: sha512-uwPAhccfFJlsfCxMYTwOdVfOz3xqyj8xYL3zJj8f0pb30tLohnnFPhLuqp4/qoEz8sNxe4SESZedcBojRefIzg==} + engines: {node: '>=18'} + hasBin: true + + '@microsoft/api-extractor-model@7.33.10': + resolution: {integrity: sha512-uPUK17xGxeQ3av6TN7awp+dTTSTvx8fZC0XFL1gyt7hFapYuxND3XLXH8vkmI7UjfW92oogzFAFqHSifmJROaw==} + + '@microsoft/api-extractor@7.58.12': + resolution: {integrity: sha512-VNpgC/1LaroLbn+UKmwDYspq+9r3EHyj4vJ3qUy/g8vB0rKt+1Wgs7WFj/JGpgxhG8SNyXs1XwYwe7nqkk8IDg==} + hasBin: true + + '@microsoft/tsdoc-config@0.18.1': + resolution: {integrity: sha512-9brPoVdfN9k9g0dcWkFeA7IH9bbcttzDJlXvkf8b2OBzd5MueR1V2wkKBL0abn0otvmkHJC6aapBOTJDDeMCZg==} + + '@microsoft/tsdoc@0.16.0': + resolution: {integrity: sha512-xgAyonlVVS+q7Vc7qLW0UrJU7rSFcETRWsqdXZtjzRU8dF+6CkozTK4V4y1LwOX7j8r/vHphjDeMeGI4tNGeGA==} + + '@milaboratories/columns-collection-driver@0.2.3': + resolution: {integrity: sha512-3rNWmuQGvEaBEzGMHIWeOi1p8j8sMDpnPKNUQvT0Ji7/ArvnfM5HK8dywxB+n3mLK8c11lW16+auM5xuydJXGw==} + + '@milaboratories/computable@2.9.8': + resolution: {integrity: sha512-X0ZtxOnIJlAd9Y7CyBtWSKHgVuTKXbIryMwJaoYSEz0gY3JZVnsD0f59J/lwe3Key0/lSYh3EbL/pP5jACIzfQ==} + engines: {node: '>=22.19.0'} + + '@milaboratories/graph-maker@1.6.1': + resolution: {integrity: sha512-Al9Ll57P4yLbDSLkfFDS6s1JPTsbqcApJRqvtXWHVf+rMvY7ZOhNeQfyVKSX08kpVPFeXGZa9PpEwu8HSSpCPQ==} + peerDependencies: + '@platforma-sdk/model': 1.79.27 + '@platforma-sdk/ui-vue': 1.79.27 + + '@milaboratories/helpers@1.14.2': + resolution: {integrity: sha512-zOkD4aWNbembwI+AsPTz7nmWC1VPA4rwGBc+Nd5jPpKVh7rCtZwQrlOP5mVqRVMKIAjb1nU8kzzCGfqNPqfJjA==} + engines: {node: '>=22'} + + '@milaboratories/helpers@1.14.5': + resolution: {integrity: sha512-Kiy0g7sEmFQxDwtnmTrdJ8XdUK0IDAB5ZnPCNEbK7lPGHIa+xG3kzfeR4y44QBdrYaK0NwG63D8Fc7dlv9KItg==} + engines: {node: '>=22'} + + '@milaboratories/miplots4@1.4.0': + resolution: {integrity: sha512-Fsopmq+q3nkYyCNRJbmLpyDBU7rXJqMoAaNA3hnfeCa3RquGA6uOOl/ONKmqCJ35j+s+L7ch7a3Vt4IG2qeLtg==} + + '@milaboratories/pf-driver@1.9.0': + resolution: {integrity: sha512-OhMsf1jNMp31wRCrXHMU75WQj48Nc/lDeYTo4/6R6+FLYBYkK9yWgsSH+02V4WCKbUqsyF1Xy0+O+qsYjpqUDA==} + engines: {node: '>=22.19.0'} + + '@milaboratories/pf-plots@1.5.0': + resolution: {integrity: sha512-KlRY5hqJQYDpqJe3Hdcdw9gpmGp8P9PqQzMXHnWq0opqBKON4lhWtIk3PF6HMTS6RQDt22phn6nmTkyWJ5DxmA==} + peerDependencies: + '@milaboratories/pl-model-common': 1.46.4 + '@platforma-sdk/model': 1.79.27 + + '@milaboratories/pf-spec-driver@1.5.0': + resolution: {integrity: sha512-XWXrKCyCwcqS8EcukuyDqvMq0D6qt61zrkb3qGpWKyy0SVQNzXC2JL0ThCM2uGI7QQelgV0aagcg8xU5pGKWPw==} + + '@milaboratories/pf-spec@1.0.0': + resolution: {integrity: sha512-JIOhJdDHcKDItjlxOT4wVmnjejoazM69qK5ylu+g5q65RIcH/R5MF2OGiu9nV7QbLEXszll+EVnvx6jYhuE44w==} + peerDependencies: + '@bytecodealliance/preview2-shim': ^0.20.1 + + '@milaboratories/pframes-rs-node@1.1.56': + resolution: {integrity: sha512-H6qltcR+HHb2kAy0U0zP90rqmv/MZGGkdXIyf89FUZTpoHOlXG4Ahxq7wXp9vviUczci4cLl2L0Q+dL2XGcsUA==} + + '@milaboratories/pframes-rs-serv@1.1.56': + resolution: {integrity: sha512-Pi0CRuvkfL+PqdgQ8im0MW5tqVjUvJ8hJbOG7v5pS45adg8tuq4TyrAoWN7un9ZWQ6KRLypUD+7eXCwhjOwADg==} + hasBin: true + + '@milaboratories/pframes-rs-wasip2@1.1.56': + resolution: {integrity: sha512-54bhC6XCAVO09J/sqVwEKA4hhTa27BDDNdH8BE+6+LvjBVkg/qq2/f0MzdrVijrmagbr97F1zgj5wIgUqwCSoA==} + + '@milaboratories/pl-client@3.14.6': + resolution: {integrity: sha512-IPzh5bSibr02DMKpwlCW6TuHVxaDe2o6tjaEJ4P2y5lshRbe5SBR/ne/G/N7E7KEKxmpWq7ZapOCLkLyvqFFDw==} + engines: {node: '>=22.19.0'} + + '@milaboratories/pl-config@1.8.5': + resolution: {integrity: sha512-XnfYXSSkRxeImQ21k6I8y5apisvagcSgMGfEeyRxNdSGwUVJbbI8TwJk+XBEDQ4lErW8oqtLxKjFQuHJMzRUoQ==} + + '@milaboratories/pl-deployments@3.0.15': + resolution: {integrity: sha512-+i3bdvfPCXLZ789f5fRdtrbil3/RFyzSBNMkULcnyKY5u6GRZLjWDBC5aSE75PRTWx3Fxf743Fj9L3B6loMSWw==} + engines: {node: '>=22.19.0'} + + '@milaboratories/pl-drivers@1.16.15': + resolution: {integrity: sha512-mVKIEHVOeAPdwSZZk+URAFD6zoyPiAARinpDfihDvkFcrlTLIzeoOvnQNPG5a8jqc0GiW+a9mnTrfjG7+n82Ww==} + engines: {node: '>=22'} + + '@milaboratories/pl-error-like@1.12.10': + resolution: {integrity: sha512-iHmnLG5lxJqcymUmEL8onCDGEADk1S/5RNACQ5yfTCNcCkUc+7hYrDHQpFmWXPPGC9sG+NTBxt4wr5m8UsLm2g==} + + '@milaboratories/pl-errors@1.4.35': + resolution: {integrity: sha512-rq5Lg9G7ax+LtMPdrkZg+Pdqk28JViiS/KIcQfk0Cg1ttZoAnhDhFIh6rAFy2eGybPtlzXqM32/ODKUSMawc8Q==} + + '@milaboratories/pl-healthcheck@1.0.5': + resolution: {integrity: sha512-ZkQti4VU2FapJBFRtZGfR5NDPXEAEFgTf/NfemypgY0aA75fFPi4/c3BpXX5K7dht+JOgHqkMrBHxKIuE2T+fA==} + engines: {node: '>=22.19.0'} + + '@milaboratories/pl-http@1.2.4': + resolution: {integrity: sha512-QKmhx+WEvJCV9dUy/SBdQk/ApaJ5ewBFgm/b+XPlS10SusAdqUUTGvK5+hq8YSuUMXlHb/dk++UtI5YlDuDl2Q==} + + '@milaboratories/pl-middle-layer@1.66.19': + resolution: {integrity: sha512-rFBmJDdBcIrdDHz730p3sL8+7uUs7VimXYGQo9IbayxmAlp5mnft1XlPUTuVbwx5QeRNGv4Cwya1T+7WL1wSmw==} + engines: {node: '>=22.19.0'} + + '@milaboratories/pl-model-backend@1.4.20': + resolution: {integrity: sha512-AkV+PhmQms6WPwR3E75THrkD9fFE7OpfsIUC297HvnFUoCFXR6GOMGPworA/qipXReTmv192AqBpuaLdgAngyg==} + + '@milaboratories/pl-model-common@1.46.2': + resolution: {integrity: sha512-VEeauisApYScvCS8lnK3zpFJ520xuTAodKJmjR8ulHcMrWMyWMfHEdGb7j5OMD0mM/OwTgmQrrJ5eB7Xd+xoOQ==} + + '@milaboratories/pl-model-common@1.47.3': + resolution: {integrity: sha512-tXmKujm+6ru/Fh9hr9H3iRBWbS+JE0Q7FNualtzJpijaB3SNtScR4erLTamdANv5RYNn7kbYpDWr6wAjAOajrg==} + + '@milaboratories/pl-model-middle-layer@1.30.7': + resolution: {integrity: sha512-rs9x3Ron4ujR/UOdEgB8WUB1SvZ8ZAScT1Av/e4or+iiQ/CzhmK9nqtYamHVwKV+JgwIFbXQwxGvIHDVz955dQ==} + + '@milaboratories/pl-model-middle-layer@1.31.0': + resolution: {integrity: sha512-D1vyGABBtCYyp2IhKd9eMoZtKUj1wUYpIzz4Xz5k+bfJWGEF8GmZGiOvO4oOvrsEsXlG4NyO249MnBKmHFcppQ==} + + '@milaboratories/pl-tree@1.13.6': + resolution: {integrity: sha512-R3wnMjbCNfAsyGJe3FQOqEyrNePd9ZCwkjDj2ps7d9oeiJ7QX6hYkIVuMlq8IQNYOJybfHc/dFEvWeYE3uAAZg==} + engines: {node: '>=22.19.0'} + + '@milaboratories/ptabler-expression-js@1.2.37': + resolution: {integrity: sha512-urVRk4b5Jse555euNNITlOJ437McZVtBnC5h/E6O+iHm+hfNIi6OP1aAD5ai4jOpHllm85zW5Ne7hVyyd71bJw==} + + '@milaboratories/resolve-helper@1.1.3': + resolution: {integrity: sha512-38/dW/XRZQREOxAOOKtO0lzEWPCP/DH0qhB3q1kYcGoN++5V92/zbVwbYrMDeDcjTyo+D62iIep+sKXeWHa7Uw==} + + '@milaboratories/software-pframes-conv@2.2.9': + resolution: {integrity: sha512-w+GaazDSqEgqYUJ38I5lgOsggyZJpcBVGvDMHIX1pyTdvPjWAOWu3mLkScaYuWeitFfh8aAedf5vrLqXtnX8bw==} + + '@milaboratories/tengo-tester@1.6.4': + resolution: {integrity: sha512-0t//LejQwe8LuZtTbu4zUHk0/gIP3nZOoW6JJv//zTRH8Ybx+JGvE8rztesnTaqQeV2U9qzfXKNb51OZPYU1Vw==} + os: [darwin, linux, win32] + hasBin: true + + '@milaboratories/ts-builder@1.6.2': + resolution: {integrity: sha512-6pS36U5EL2IBLIpoP0/5oSFA9jzjcJmYhgEODzt5kglovTzJuh15nEmJMeChr0OpFtGFjQT6o37qHerDGETIpA==} + hasBin: true + + '@milaboratories/ts-configs@1.4.0': + resolution: {integrity: sha512-VzU9D+RiggsG4VYteJSBN4o8IjYae9GbZ8MofikMJQLOI1Ir9/pVyPXXGnG/TAGvmcjbK/psAiZVGSvI5MBPGg==} + + '@milaboratories/ts-helpers@1.8.6': + resolution: {integrity: sha512-ef01tARUl+0Urt3x8HHAByrhYHg4Rnn7WiFyJ+joZFZl1T1pUKTgfB7Zxc8Cn06HIl4i6H7s5OSymjZePIGqfQ==} + engines: {node: '>=22.19.0'} + + '@milaboratories/uikit@2.15.23': + resolution: {integrity: sha512-FrZPJsa3jry4juVofR42IPCHv+oKPAcdBL+OidX0/S2lhIAsCIrEKBcAN3yzWd2yvyAPb3qzt0hbwpuTY0UVlw==} + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + resolution: {integrity: sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==} + engines: {node: ^22.20 || ^24.12 || >=25} + cpu: [x64] + os: [linux] + + '@noble/hashes@1.4.0': + resolution: {integrity: sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==} + engines: {node: '>= 16'} + + '@noble/hashes@2.3.0': + resolution: {integrity: sha512-oN+QwyX7VSHotibwubG3kpzbwKrfnyR6OOO+3Nk/53ADL7FmgHHz4TgrbaYKvvOw09u6QTx0oiH1cNCIOuN0CQ==} + engines: {node: '>= 20.19.0'} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@oxc-project/types@0.143.0': + resolution: {integrity: sha512-u6JZdLBTLotrNC9Vd6vPssINdzcCzleKAH6EJKImQb7GtYvX5keN2dxkoK44stCc4tffE6QQRtZTXVSzsLUlWA==} + + '@oxfmt/binding-android-arm-eabi@0.35.0': + resolution: {integrity: sha512-BaRKlM3DyG81y/xWTsE6gZiv89F/3pHe2BqX2H4JbiB8HNVlWWtplzgATAE5IDSdwChdeuWLDTQzJ92Lglw3ZA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm-eabi@0.62.0': + resolution: {integrity: sha512-pdsv0C4gPjJ8H1+sd8u0BDx+yLACTL+rgeMIOL1ln4ihSnhw8CWXtYWgvcSkyTfgGBIzFKab+d8rx9Xl4en/Kw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxfmt/binding-android-arm64@0.35.0': + resolution: {integrity: sha512-/O+EbuAJYs6nde/anv+aID6uHsGQApyE9JtYBo/79KyU8e6RBN3DMbT0ix97y1SOnCglurmL2iZ+hlohjP2PnQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-android-arm64@0.62.0': + resolution: {integrity: sha512-WC3YQ7uS/KtDrjmqwBviwFKe9qeoi+eXx8aX1z/ffG23Md75myjrJaQqTuJvdOLPoa4EYTjDWH0dHXfwulCVog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxfmt/binding-darwin-arm64@0.35.0': + resolution: {integrity: sha512-pGqRtqlNdn9d4VrmGUWVyQjkw79ryhI6je9y2jfqNUIZCfqceob+R97YYAoG7C5TFyt8ILdLVoN+L2vw/hSFyA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-arm64@0.62.0': + resolution: {integrity: sha512-GM8Yf3LjjaR1I8PD0SfeoIlwhsh9GvSF+cQ8sf624Yxnjsyumn95aFzYfKJVefblfDIiOAnZ7QVm2sa21Er/0Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.35.0': + resolution: {integrity: sha512-8GmsDcSozTPjrCJeGpp+sCmS9+9V5yRrdEZ1p/sTWxPG5nYeAfSLuS0nuEYjXSO+CtdSbStIW6dxa+4NM58yRw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-darwin-x64@0.62.0': + resolution: {integrity: sha512-d5THp7F8bCxLqNogEXDORRsQD6dosf3EyFtnXfBer6v+8tGdcWIjoDX9WaXrrF/26zOmL8qHpPTKCEvpBDmZkQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxfmt/binding-freebsd-x64@0.35.0': + resolution: {integrity: sha512-QyfKfTe0ytHpFKHAcHCGQEzN45QSqq1AHJOYYxQMgLM3KY4xu8OsXHpCnINjDsV4XGnQzczJDU9e04Zmd8XqIQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-freebsd-x64@0.62.0': + resolution: {integrity: sha512-1DnrtXGZooOZ0fHgAXZUaDQzBVh1CM2MNW4oBXyQ2aWKvCHjyljvT9fgBkOM0fEOb96X5eqtcfJ0YUVt9jj66g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxfmt/binding-linux-arm-gnueabihf@0.35.0': + resolution: {integrity: sha512-u+kv3JD6P3J38oOyUaiCqgY5TNESzBRZJ5lyZQ6c2czUW2v5SIN9E/KWWa9vxoc+P8AFXQFUVrdzGy1tK+nbPQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-gnueabihf@0.62.0': + resolution: {integrity: sha512-4pQDHOYRH+Huqe0StIaWyvk2CVl/aTaqSrbZpA3/pLS2xH24ME7lBgYprhQF2fRkHBzhGGGKliwxFsDdHwx59g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.35.0': + resolution: {integrity: sha512-1NiZroCiV57I7Pf8kOH4XGR366kW5zir3VfSMBU2D0V14GpYjiYmPYFAoJboZvp8ACnZKUReWyMkNKSa5ad58A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm-musleabihf@0.62.0': + resolution: {integrity: sha512-X0jAaZJFMCVKhB6YyWVTQ/wN2DLsBcZKSMqTS76bF6riT+XZdtg2FPEdjDvdVbunO9cG+tWiVaEs4Zs38lxYog==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.35.0': + resolution: {integrity: sha512-7Q0Xeg7ZnW2nxnZ4R7aF6DEbCFls4skgHZg+I63XitpNvJCbVIU8MFOTZlvZGRsY9+rPgWPQGeUpLHlyx0wvMA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-arm64-gnu@0.62.0': + resolution: {integrity: sha512-682Z8T5s8T5ATArYtsejKvbIfd8LEAXyyDkKkoZVq8HND7Vx8TYLlrDjDSeYfodMeVwHOgkj13lJYR8cj6vUSg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-arm64-musl@0.35.0': + resolution: {integrity: sha512-5Okqi+uhYFxwKz8hcnUftNNwdm8BCkf6GSCbcz9xJxYMm87k1E4p7PEmAAbhLTk7cjSdDre6TDL0pDzNX+Y22Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-arm64-musl@0.62.0': + resolution: {integrity: sha512-lk25fAl7KWaLWVJcW0CHEXB7QlQZtx5eDkjpaGMK0hzXTjUe0Wmlu8IKuFHoviSOcEJedRTs4VE/506VqGxGew==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxfmt/binding-linux-ppc64-gnu@0.35.0': + resolution: {integrity: sha512-9k66pbZQXM/lBJWys3Xbc5yhl4JexyfqkEf/tvtq8976VIJnLAAL3M127xHA3ifYSqxdVHfVGTg84eiBHCGcNw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxfmt/binding-linux-ppc64-gnu@0.62.0': + resolution: {integrity: sha512-SFyNqHQLwySceWNLhiSldx7wPXRAzP0L0WcW9GegP3uWrpZGJiZlQO85NbHAFPEfxR9PhZ9qSnZryEh7+v+4Gw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-gnu@0.35.0': + resolution: {integrity: sha512-aUcY9ofKPtjO52idT6t0SAQvEF6ctjzUQa1lLp7GDsRpSBvuTrBQGeq0rYKz3gN8dMIQ7mtMdGD9tT4LhR8jAQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-gnu@0.62.0': + resolution: {integrity: sha512-KYj55C1ywJfHo6+aKDuEmUtVEdJALsC5GwayDGsI6FGz2GxFqNr/mA8nxVsNbJzm7sE5MRqTQ9ziImSzhYXysA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-musl@0.35.0': + resolution: {integrity: sha512-C6yhY5Hvc2sGM+mCPek9ZLe5xRUOC/BvhAt2qIWFAeXMn4il04EYIjl3DsWiJr0xDMTJhvMOmD55xTRPlNp39w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-riscv64-musl@0.62.0': + resolution: {integrity: sha512-BhZDNo5GOU5nC378RhD0/XpvaEBHsH3HLgJp8YZX3A0InC7oivzA63HsRmiXFLtLSHAstEVrDf6fbC7Rs8Jh/A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxfmt/binding-linux-s390x-gnu@0.35.0': + resolution: {integrity: sha512-RG2hlvOMK4OMZpO3mt8MpxLQ0AAezlFqhn5mI/g5YrVbPFyoCv9a34AAvbSJS501ocOxlFIRcKEuw5hFvddf9g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxfmt/binding-linux-s390x-gnu@0.62.0': + resolution: {integrity: sha512-UyAFmyHkgSgUJ/wOM4p3U8AC2yAFvRH5PNBs7TnK0fObTT/XSWcdr/lAzPSWaekHaZFaMeFZyk9n93Joq3J93A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxfmt/binding-linux-x64-gnu@0.35.0': + resolution: {integrity: sha512-wzmh90Pwvqj9xOKHJjkQYBpydRkaXG77ZvDz+iFDRRQpnqIEqGm5gmim2s6vnZIkDGsvKCuTdtxm0GFmBjM1+w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-linux-x64-gnu@0.62.0': + resolution: {integrity: sha512-1iYMP0leytWazFubD/WnINJuIrzRPuoL1aWEJdlGezEzDbTxcd29R4r8IUzP2oWeKst5V02uMJgR2NILlPlG6w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-linux-x64-musl@0.35.0': + resolution: {integrity: sha512-+HCqYCJPCUy5I+b2cf+gUVaApfgtoQT3HdnSg/l7NIcLHOhKstlYaGyrFZLmUpQt4WkFbpGKZZayG6zjRU0KFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-linux-x64-musl@0.62.0': + resolution: {integrity: sha512-4rA/URtJSTVNVAQz6Q8wf7SaRvOXVy+TizriT9hs/Y1XhLR/R+92uWKRQG8yFWRAIEBbFHJ6WevQcl/G9SXEfw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxfmt/binding-openharmony-arm64@0.35.0': + resolution: {integrity: sha512-kFYmWfR9YL78XyO5ws+1dsxNvZoD973qfVMNFOS4e9bcHXGF7DvGC2tY5UDFwyMCeB33t3sDIuGONKggnVNSJA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-openharmony-arm64@0.62.0': + resolution: {integrity: sha512-mSZuFHU2ar1KLUjXpI2QBQcJ1VsOB3mOCgQXuXCpKs19dgh4u+OaovNfrWDfiJb+ihJ2+f7YFcaO9bS2dlTCXA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxfmt/binding-win32-arm64-msvc@0.35.0': + resolution: {integrity: sha512-uD/NGdM65eKNCDGyTGdO8e9n3IHX+wwuorBvEYrPJXhDXL9qz6gzddmXH8EN04ejUXUujlq4FsoSeCfbg0Y+Jg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-arm64-msvc@0.62.0': + resolution: {integrity: sha512-OfwuhkcjDlqC4EgDojtiV9mzpLqeB9KqTOWPOjLEYBVdDCVSxqW3qzp/xcIxsbtI0UgGCnKvAqYKyY25kf5JZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.35.0': + resolution: {integrity: sha512-oSRD2k8J2uxYDEKR2nAE/YTY9PobOEnhZgCmspHu0+yBQ665yH8lFErQVSTE7fcGJmJp/cC6322/gc8VFuQf7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-ia32-msvc@0.62.0': + resolution: {integrity: sha512-P9uDDNFRzghO3X8QAzhkjKhK7JvtABsVn8UYtFX7uor12IAnwNt8nNIctvfWj1JkQU/kE+fmLRPiw7XlrIHsZw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.35.0': + resolution: {integrity: sha512-WCDJjlS95NboR0ugI2BEwzt1tYvRDorDRM9Lvctls1SLyKYuNRCyrPwp1urUPFBnwgBNn9p2/gnmo7gFMySRoQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxfmt/binding-win32-x64-msvc@0.62.0': + resolution: {integrity: sha512-dlI5SY7XYQCiCBafntWagCR6HcAJB/NpsLtdlPx8x08+Osz8Ok1HHz1GZuusegCe/VoJ6pAnF5a4pd5OZAq7qQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint/binding-android-arm-eabi@1.63.0': + resolution: {integrity: sha512-A9xLtQt7i0OA1PoB/meog6kikXI9CdwEp7ZwQqmgnpKn3G3b1orvTDy8CQ6T7w1HvDrgWGB78PkFKcWgibcTCg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm-eabi@1.77.0': + resolution: {integrity: sha512-E06sKWS6PiI6HRxS1wyQg22HvApt01hI7fV+T3wUk3OSbaaP4a3hYGY/MIQDmASqCiRjBdpRQYkgMkqH82cWmQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [android] + + '@oxlint/binding-android-arm64@1.63.0': + resolution: {integrity: sha512-SQo+ZMvdR9l3CxZp5W5gFNxSiDxclY6lOzzNpKYLF8asESpm3Pwumx0gER5T7aHLF1/2BAAtLD3DiDkdgy4V1A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-android-arm64@1.77.0': + resolution: {integrity: sha512-NvsKz0KZxTp9cYWPLf+FXaSZwB3oO3peAjtukpOMBgse2vhQSoIIVqeO1yR0lEo/UcdZIDL18uq+kL0LzQ0ytA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@oxlint/binding-darwin-arm64@1.63.0': + resolution: {integrity: sha512-6W82XjJDTmMnjg30427l0dufpnyLoq7wEukKdM6/g2VIybRVuQiBVh43EA4b+UxZ3+tLcKm+Or/pXGNgLCEU8g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-arm64@1.77.0': + resolution: {integrity: sha512-bgjTn6nW4bQCFBvSvuHCpDD+sONvmpo4lGI4PxzMt1quBA+xYxhczk6RiCn3GZ9gY8uhaBbwhj9MdKGfu6T9DA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.63.0': + resolution: {integrity: sha512-CnWd/YCuVG5W1BYkjJEVbJG11o526O9qAwBEQM+nh8K19CRFUkFdROXCyYkGmroHEYQe4vgQ6+lh3550Lp35Xw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-darwin-x64@1.77.0': + resolution: {integrity: sha512-aotaIttH1R6j1Rwhx0M0htgeZyGtVQqYNTVEYMN/UcgHPquGA6kmk9OyuDc3a2GKUQBC+3C3GVQCcrRPMYqAFA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@oxlint/binding-freebsd-x64@1.63.0': + resolution: {integrity: sha512-a4eZAqrmtajqcxfdAzC+l7g3PaE3V8hpAYqqeD3fTxLXOMFdK3eNTZrU80n4dDEVm0JXy1aL5PqvqWldBl6zYA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-freebsd-x64@1.77.0': + resolution: {integrity: sha512-nNx/wta7ksRAdYvq+l4AWjXkLxEXHALhENxjj2cYbQAIR4ybaA5L+hCbE63HOmft5czQ6ks+hb8vmEAnn7YGPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@oxlint/binding-linux-arm-gnueabihf@1.63.0': + resolution: {integrity: sha512-tYUtU9TdbU3uXF5D62g5zXJ13iniFGhXQx5vp9cyEjGdbSAY3VdFBSaldYvyoDmgMZ0ZYuwQP1Y4t2Fhejwa0w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-gnueabihf@1.77.0': + resolution: {integrity: sha512-tMLLjM7xXtzXisVCzkOTXNCy9bZVId2wteNwjohlFDR/jY6WagpEDA1c1wu4xRc20Hojaxj+V6DSR7gbKxijWA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.63.0': + resolution: {integrity: sha512-I5r3twFf776UZg9dmRo2xbrKt00tTkORXEVe0ctg4vdTkQvJAjiCHxnbAU2HL1AiJ9cqADA76MAliuilsAWnvg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm-musleabihf@1.77.0': + resolution: {integrity: sha512-MiAFDFaqR0tmHTAyo0YDcZ5hyLREdYw/RQhc2R3cbT+8O3tB+zqPM2th9TTQ+Uo3jn/embS+DO+HyX9ztCPkOQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.63.0': + resolution: {integrity: sha512-t7ltUkg6FFh4b564QyGir8xIj/QZbXu8FlcRkcyW9+ztr/mfRHlvUOFd95pJCXi9s/L5DrUeWWgpXRS+V+6igQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-arm64-gnu@1.77.0': + resolution: {integrity: sha512-/xqQ3B16i1T4cyt/9Mn+4CpzhUXoBXp7kVpIwzOXNFLj5JmK1bIjsbSnX296Gg8A/o7oDtKWikFgBx0SLwztkw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-arm64-musl@1.63.0': + resolution: {integrity: sha512-Q5mmZy/XWjuYFUuQyYjOvZ5U/JkKEwnpir6hGxhh6HcdP0V/BKxLo8dqkfF/t7r7AguB17dfS/8+go5AQDRR6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-arm64-musl@1.77.0': + resolution: {integrity: sha512-LSbwuRKiNCenPDcbARqAZ5RfBy7gmj7vOvfJRLeCDU3gFtSxWbhv/+VTlaUqzUhNj1gFLHB8h7ALnxa/Az6z6g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@oxlint/binding-linux-ppc64-gnu@1.63.0': + resolution: {integrity: sha512-uBGtuZ0TzLB4x5wVa82HGNvYqY8buwDhyCnCP0R0gkk9szqVsP0MeTtD5HX7EsEuFIt+aYmYxuxeVxs3nTSwtQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxlint/binding-linux-ppc64-gnu@1.77.0': + resolution: {integrity: sha512-QWdcH31mXEUe5Nq1s0CfCpceaKjIo9uZtwDjAuL681g1axf+5x8xrg/eXWaw//4NCxYZ4V4e5Hu5tvdR+pTBlg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@oxlint/binding-linux-riscv64-gnu@1.63.0': + resolution: {integrity: sha512-h4s6FwxE+9MeA181o0dnDwHP32Y/bG8EiB/vrD6Ib+AMt6haigDc/0bUtI/sLmQDBMJnUfaCmtSSrEAqjtEVrA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-riscv64-gnu@1.77.0': + resolution: {integrity: sha512-GnOfYgJxbcElOiPZaDFDl406ONddwvOWk2jvAAAEjwAl4GofNoHF+/HHUIBYa6bFCArlcGPi0XjC4cU1pkgF/Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-riscv64-musl@1.63.0': + resolution: {integrity: sha512-2EaNcCBR8Mcjl5ARtuN3BdEpVkX7KpjSjMGZ/mJMIeaXgTtdz5ytg2VwygMSStA/k0ixfvZFoZOfjDEcouV5vQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-riscv64-musl@1.77.0': + resolution: {integrity: sha512-AyEMTUCf0xY+hHF+IxqXFQIX0yQOIR8ykpY0lJNOw9xYqOzUX8dyZfRvlG0RfXwuQn2eonf/8NrMmDSZJjdqsA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [riscv64] + os: [linux] + + '@oxlint/binding-linux-s390x-gnu@1.63.0': + resolution: {integrity: sha512-p4hlf/fd7TrYYl3QrWWD0GocqJefwMu3cHQhmi2FvEB/YOvFb5DZN3SMBaPi7B1TM5DeypkEtrVib674q1KKPg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxlint/binding-linux-s390x-gnu@1.77.0': + resolution: {integrity: sha512-sPLzEcNvxd/oyVQ5oZo92CiHkFkpBeRop13E/P3TPY+hZfXHKCOWKI70TE2RYwMKFJDc20EMjH16L7NZICtKTw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@oxlint/binding-linux-x64-gnu@1.63.0': + resolution: {integrity: sha512-Vgq9rkRVcPcjbcH+ihYTfpeR7vCXfqpd+z5ItTGc0yYUV59L5ceHYN1iV4H9bKGV7Rn5hkVc7x3mSvHegduENA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-linux-x64-gnu@1.77.0': + resolution: {integrity: sha512-1Oh2ssH2L7lwyvkdSqaMUfsGfwU2Wfvew+obBUYjRVqhpBcUpwnsPSEr1IzVi9XqkuY10geiLsNKecqaZC34Dw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-linux-x64-musl@1.63.0': + resolution: {integrity: sha512-3/Lkq/ncooA61rorrC+ZQed1Bc4VpGj+WnGsp58zmxKgvZ2vhreu+dcVyr3mX8NUpq7mfZ4gDDTou/yrF1Pd7A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-linux-x64-musl@1.77.0': + resolution: {integrity: sha512-0j/2wRgNGO+Qj/M1uu/p57h/hFTTWWcfie0ufkbabeus2s5+/QqkCflnMOwLLN5m2GsNeWp4xdl4cPa4n7QCOQ==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@oxlint/binding-openharmony-arm64@1.63.0': + resolution: {integrity: sha512-0/EdD/6hDkx5Mfd769PTjvEM8mZ/6Dfukp1dBCL/2PjlIVGEtYdNZyok6ChqYPsT9JcFnlQnUeQzO0/1L/oC9w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-openharmony-arm64@1.77.0': + resolution: {integrity: sha512-BJ/j54qS0usEnyDkLYURMj2iiD9h5Cyy+ppzeMSXBGRXaGRNWnj1Mw14NqWMR5E/PzdgB30OOCCzLzbRoduafw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@oxlint/binding-win32-arm64-msvc@1.63.0': + resolution: {integrity: sha512-wb0CUkN8ngwPiRQBjD1Cj0LsHeNvm+Xt6YBHDMtj2DVQVD6Oj8Ri7g6BD+KICf6LaBqZlmzOvy6nF9E/8yyGOg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-arm64-msvc@1.77.0': + resolution: {integrity: sha512-Yh8w+g2Lpx7StrvtYkoz9JJvXjB9wxgFChFNb85nrXm/wj/XTwGWS1hve9+900HL7llrntYB3YP+y32E3tRqzA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.63.0': + resolution: {integrity: sha512-BX5iq+ovdNlVYhSn5qPMUIT0uwAwt2lmEnCnzK+Gkhw4DovIvhGb96OFhV8yzQNUnQxn/xGkOR+X+BLrLDNm8w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-ia32-msvc@1.77.0': + resolution: {integrity: sha512-zja5b7+6a7UsRFgAQSrnax5vrzliEyNPLCjfXONu/vTWswaIVZGFajJZptaeRvPE4LghtFdAzVFlexTm7MVTGA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ia32] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.63.0': + resolution: {integrity: sha512-QeN/WELOfsXMeYwxvfgQrl6CbVftYUCZsGXHjXQd5Trccm8+i4gmtxaOui4xbJQaiDlviF8F3yLSBloQUeFsfA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@oxlint/binding-win32-x64-msvc@1.77.0': + resolution: {integrity: sha512-+teyvPDZ2RjUvo+SuCqS/UhaJl1QtdW5fWT5NJTV61V5MIuIS90Db9LixmtEGvXixyttiK62P96MSu3UlpviBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@peculiar/asn1-cms@2.8.0': + resolution: {integrity: sha512-NgekZOrSJFSBFLFoLfwePguAWAx7z1+f2TEsWFUMyiqqfntZ4+S/S5hzqME3q4pCA0iOsFKdwiQ35dwY24eVqA==} + + '@peculiar/asn1-csr@2.8.0': + resolution: {integrity: sha512-akbF8+uvleHs8sejNPQxwmVFuInAg6FMNHOwMILXfP518YfFJwdR3jr6oNUPOaEJfuEhn/vkNOCIT6ASUd4mbg==} + + '@peculiar/asn1-ecc@2.8.0': + resolution: {integrity: sha512-ohwlk+u9Rv2NOAY1c6MfHj45ATVF8R1DUN/WCgABiRtLi2ZftlZWZX7KvpAbU8v9xPcmoILfELeEABj/rn18AQ==} + + '@peculiar/asn1-pfx@2.8.0': + resolution: {integrity: sha512-5yof1ytoB++RQtaFbqSUJ8pxDJtZT6vbVqZ8XoJ61ph7UjNVvfFwAilnCodqkNsAodpy13gDhoxZXw00pghnyg==} + + '@peculiar/asn1-pkcs8@2.8.0': + resolution: {integrity: sha512-qAKXtLpBEw9LqhKpjw3ajZSXlBur+ipW+y2ivVBQAG6F6qRx94yO+1ZR4mvw+YaCfKSaOzLeYEzsPaBp4SJELA==} + + '@peculiar/asn1-pkcs9@2.8.0': + resolution: {integrity: sha512-b5nDWCnkV60+cQ141D6sVVwK9nz64R5n3zSVnklGd+ECdkW2Ol3U1a6yYFlalpSOaD557yuJB64A+q42jG7lUQ==} + + '@peculiar/asn1-rsa@2.8.0': + resolution: {integrity: sha512-zHEUlCqB2mk7x2lxDwHHJy7hWZOPdGHVlsmITWKB5/PbQo61atbu9PJ/0r9dQNMwFzbKPXZ8uK8/91eUhRznSg==} + + '@peculiar/asn1-schema@2.8.0': + resolution: {integrity: sha512-7YT0U/ze0tF2QOBbE15gKZwy5tvgGyLRiRHLzhlbOpf7BT032oBSd0haZqXn5W6l26WLlu3dyxzjM+2638/z2Q==} + + '@peculiar/asn1-x509-attr@2.8.0': + resolution: {integrity: sha512-tHjkfS/qhMnmrlB2J9NhflQlQ7In3khO3CfmVrriOlpTeErY9ZIKOso1hQ5JQiyrJ7ShvqVPk7E5fQmbclkSKA==} + + '@peculiar/asn1-x509@2.8.0': + resolution: {integrity: sha512-N0CMuhWUzsWEVq6F1q9X6+VKUnWzSW+cSVg+aPaGGwDdbFoFWTYgin5MHwXgpWd6y9COMBxnfy/Qc+Xc7F0Zwg==} + + '@peculiar/utils@2.0.3': + resolution: {integrity: sha512-+oL3HPFRIZ1St2K50lWCXiioIgSoxzz7R1J3uF6neO2yl1sgmpgY6XXJH4BdpoDkMWznQTeYF6oWNDZLCdQ4eQ==} + + '@peculiar/x509@1.14.3': + resolution: {integrity: sha512-C2Xj8FZ0uHWeCXXqX5B4/gVFQmtSkiuOolzAgutjTfseNOHT3pUjljDZsTSxXFGgio54bCzVFqmEOUrIVk8RDA==} + engines: {node: '>=20.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@platforma-open/milaboratories.runenv-python-3.12.10-atls@1.2.4': + resolution: {integrity: sha512-yeklY7ISewNOQ5TWlNLRi6VSOGfcdTJPoDWtf5Z8na3xPP56fWZFuckX/ixZpGvcoyBSQf1kFBFnHPginX7jCw==} + + '@platforma-open/milaboratories.runenv-python-3.12.10-h5ad@1.1.4': + resolution: {integrity: sha512-Yo47x/rm/FF8x/7q2o7TXdAS7pEWqBd/+aHnQzgNAF0DYljzln99mq1L4lMrQx08SJBGrh84ZtgQl/weTzWSIw==} + + '@platforma-open/milaboratories.runenv-python-3.12.10-parapred@1.1.0': + resolution: {integrity: sha512-nEM4eEj7pFT6yi+P5028qtgK5v9A9H0XdVHDtrKX7xW5Jipc1RIliOEU3gzaH0E7UAzPFQGSqShlwakRcGXwdQ==} + + '@platforma-open/milaboratories.runenv-python-3.12.10-rapids@1.6.0': + resolution: {integrity: sha512-SHCS1PevyL1mEo1G7eCzrkkulVQKPQYrOfLYvmKob2wPdxp8I68AiSzSx3pC4L0ctzuWK/yAM5GVlZqF4uZg9Q==} + + '@platforma-open/milaboratories.runenv-python-3.12.10-sccoda@1.3.5': + resolution: {integrity: sha512-oNkt0u8fgZACcL3XmAu4v0tDGnTSc3qRQs07U8OFX+paQk7qH4ckt0psLGN1iHDKZ3Gw3nlgel0D6Lst02WahQ==} + + '@platforma-open/milaboratories.runenv-python-3.12.10-scientific-slim@1.1.0': + resolution: {integrity: sha512-CSLEjBYUdHDf66QAfgQ9jo+MoW63Wr0ygdIncJE2siO2jMUzYCqgCNd8bMjaMfZa3YBC9bHca3Cjxbp4VYc54A==} + + '@platforma-open/milaboratories.runenv-python-3.12.10@1.3.10': + resolution: {integrity: sha512-WOulvGTW7Q/ptaNuGGXy8ZXwf3s1L9ic7OReWkqWmt1QstJCE9HtCZeup6e5xwltHSo6yRRtJsoX30B8JvqAaA==} + + '@platforma-open/milaboratories.runenv-python-3@1.8.2': + resolution: {integrity: sha512-gsb33geN7RXIKhcYXPn18aU3sInJNcGVEO5/vlM+JxySBVMr2ICr86ABY90oX0fc60RiuEgVI3ltiOgtCs9Kbg==} + + '@platforma-open/milaboratories.software-ptabler.schema@1.15.21': + resolution: {integrity: sha512-3EWO64poe5VcBIgVIdIFHwN7nPi000kPuaRmlVt3xnnQZqXUYDFNZfZ2Mc9/mE1Eq3FLwQxcy/5mng7LvgWnXg==} + + '@platforma-open/milaboratories.software-ptabler@2.1.8': + resolution: {integrity: sha512-28dKwcKNIB/8OYH6l/li7Qa/aE2NgDVtNUmN8v6jZsLKT59ogFclz8ZrQ+OiQFzHQCLBlWBt5TdIHfHPxBaNFw==} + + '@platforma-open/milaboratories.software-ptexter@1.2.4': + resolution: {integrity: sha512-4ZqhqksSNVKWhEB9WwrL0rU89G+00ulzH1urYyNA4EdBVGA4mwbKbw0K/zcwce/oUYYMdRl+epXmr0w9wHyNzA==} + + '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.10': + resolution: {integrity: sha512-16BGRLIrsVW+YIaXwWLX6Nbm80PS5mQJEclHhjNbRrRTLHPaKI4RygZfBC0lLNzvHBiTXU4Qkh1+WmdovkshDg==} + + '@platforma-open/milaboratories.software-small-binaries.hello-world@1.1.7': + resolution: {integrity: sha512-CqXbfFld2l6Y/8rtcZXRPsa5kqNnaS3QWUxrcfMYwNxultbhLzjZGdqSR7ejV9xRWilXpeg6DdZJIKF3+KDH8g==} + + '@platforma-open/milaboratories.software-small-binaries.line-counter@1.1.1': + resolution: {integrity: sha512-3bqn2ZK/dV5IR0Zp678Ea9lGSHjLvfRv4lyRBYXZNO1mMWIlEhtT0bmn6FhNzBBj+MhTQfSRFnEsOejtfdN1Ew==} + + '@platforma-open/milaboratories.software-small-binaries.mnz-client@1.6.5': + resolution: {integrity: sha512-ZdVg77pZ0Hgvxdk+mYahEyPbcTzDyz6Y7qlm6A0rJw8WCYmDVkfLqctQj0QkTLHM76oSWOHJIgD07ZxORjjgwA==} + + '@platforma-open/milaboratories.software-small-binaries.table-converter@1.3.5': + resolution: {integrity: sha512-x6WOZ8S3uLXzmwliCF500hw7VQ4A9U3VBbESjJlPia26aU91FqB3ylKyH2fEyTiVw2wADlTYuui1tHX47iS5Lw==} + + '@platforma-open/milaboratories.software-small-binaries@2.1.1': + resolution: {integrity: sha512-KN1PR7YgUUfx1dxh/TtcoWpSZbOXbRxXzQuJ505qHuXuE0spYwC7bXnvJsEYbEwRcPMa0foTrjBnPNORE4yr+Q==} + + '@platforma-sdk/block-tools@2.13.0': + resolution: {integrity: sha512-xKiTmNLjfxCnnHRr9Q4ct3HdjLfkbLztvxpU++/pek0R8Bj/Lezeoji+eLpxAAYYUxjMr8jLj935eLK5MqKrSg==} + hasBin: true + + '@platforma-sdk/blocks-deps-updater@2.2.0': + resolution: {integrity: sha512-p9lBxhFXM9WoRsrJO7dfkiXSK+1m63yIn1sKhBO71eMbhrLMyVYHEOeNf3w5OCdbRF5QsNhXzWuiTmFK3zHFsA==} + hasBin: true + + '@platforma-sdk/model@1.81.1': + resolution: {integrity: sha512-pyCcCzMu+L0ELnNQkpmYMNw+A70WWCXng29WxOVllMTvFvr6/BaH4OUOA2q8ocseUlKm6qFQiRxmZTe53AcvlQ==} + + '@platforma-sdk/package-builder-lib@1.3.0': + resolution: {integrity: sha512-CdBjmNo6E1fBxKYWaXa49L/L2WLURxs2f1TAqxLIZlHRE4DZ6E1TEj3jNNKESWp+/9rwtLkTAzmTzNPrDgz+2Q==} + + '@platforma-sdk/tengo-builder@4.0.22': + resolution: {integrity: sha512-8+zDYDFFI2tQS7dplTcxgQdUwzt8+IO++sJiVbwBgwSg1Giyc2qMThEYPLK3QNFArgCsIDR6wQuS8t66pJsRPQ==} + engines: {node: '>=22'} + hasBin: true + + '@platforma-sdk/test@1.81.3': + resolution: {integrity: sha512-LSDJoQqpxX2G8W7ZshnYWroqNQiFoxXQlka4pEJTnPEO8YISW3lWknBhqsxMp2GyepQNoyl2WO1bfiQz+ssT5A==} + + '@platforma-sdk/ui-vue@1.81.1': + resolution: {integrity: sha512-xFnehLOXDHYwDFrdtiU/NBjV0l6pEVLkthfnBjR+g2pSrHJGEL9JDrY3DdzoNUSxU4fal+Ak5aoAJR5v8mOeLg==} + + '@platforma-sdk/workflow-tengo@6.8.2': + resolution: {integrity: sha512-AHR/Y+vbyfda17A7xY2uH9TlXiBpM8242tTO6+lj8phA4/KS6mez4GLu4ZEaASlZpX6YkQsUs5LUxYQU7pXeiQ==} + + '@protobuf-ts/grpc-transport@2.11.1': + resolution: {integrity: sha512-l6wrcFffY+tuNnuyrNCkRM8hDIsAZVLA8Mn7PKdVyYxITosYh60qW663p9kL6TWXYuDCL3oxH8ih3vLKTDyhtg==} + peerDependencies: + '@grpc/grpc-js': ^1.6.0 + + '@protobuf-ts/plugin@2.11.1': + resolution: {integrity: sha512-HyuprDcw0bEEJqkOWe1rnXUP0gwYLij8YhPuZyZk6cJbIgc/Q0IFgoHQxOXNIXAcXM4Sbehh6kjVnCzasElw1A==} + hasBin: true + + '@protobuf-ts/protoc@2.11.1': + resolution: {integrity: sha512-mUZJaV0daGO6HUX90o/atzQ6A7bbN2RSuHtdwo8SSF2Qoe3zHwa4IHyCN1evftTeHfLmdz+45qo47sL+5P8nyg==} + hasBin: true + + '@protobuf-ts/runtime-rpc@2.11.1': + resolution: {integrity: sha512-4CqqUmNA+/uMz00+d3CYKgElXO9VrEbucjnBFEjqI4GuDrEQ32MaI3q+9qPBvIGOlL4PmHXrzM32vBPWRhQKWQ==} + + '@protobuf-ts/runtime@2.11.1': + resolution: {integrity: sha512-KuDaT1IfHkugM2pyz+FwiY80ejWrkH1pAtOBOZFuR6SXEFTsnb/jiQWQ1rCIrcKx2BtyxnxW6BWwsVSA/Ie+WQ==} + + '@protobufjs/aspromise@1.1.2': + resolution: {integrity: sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==} + + '@protobufjs/base64@1.1.2': + resolution: {integrity: sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==} + + '@protobufjs/codegen@2.0.5': + resolution: {integrity: sha512-zgXFLzW3Ap33e6d0Wlj4MGIm6Ce8O89n/apUaGNB/jx+hw+ruWEp7EwGUshdLKVRCxZW12fp9r40E1mQrf/34g==} + + '@protobufjs/eventemitter@1.1.1': + resolution: {integrity: sha512-vW1GmwMZNnL+gMRaovlh9yZX74kc+TTU3FObkkurpMaRtBfLP3ldjS9KQWlwZgraRE0+dheEEoAxdzcJQ8eXZg==} + + '@protobufjs/fetch@1.1.1': + resolution: {integrity: sha512-GpptLrs57adMSuHi3VNj0mAF8dwh36LMaYF6XyJ6JMWlVsc+t42tm1HSEDmOs3A8fC9yyeisgLhsTVQokOZ0zw==} + + '@protobufjs/float@1.0.2': + resolution: {integrity: sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==} + + '@protobufjs/path@1.1.2': + resolution: {integrity: sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==} + + '@protobufjs/pool@1.1.0': + resolution: {integrity: sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==} + + '@protobufjs/utf8@1.1.2': + resolution: {integrity: sha512-b1UQwcEZ4yCnMCD8DAL1VlbvBJE9/IX4FTIp7BG1xYpf29SLazLSrqUkj4w7Y5y7cCVP6E5tcqqcI0xemPkHug==} + + '@rolldown/binding-android-arm64@1.2.3': + resolution: {integrity: sha512-zrJtHDcaZJ1Fp7xf4hNl+7seH9Cn/N5TwLYkhgXREtBwAd/jaqW3uqeHxpDugJLVICWg4eW44kOQEGJ1r6jCGw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + + '@rolldown/binding-darwin-arm64@1.2.3': + resolution: {integrity: sha512-ieIiibVCp0tX7TLu2cafoNPv8wJyYi01ekXpbf8q2j7F4rGAhhXb/eQh7ge9DRBY78GwmRQtvjZDux7EDbA8kA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + + '@rolldown/binding-darwin-x64@1.2.3': + resolution: {integrity: sha512-Zh9tCon19eDXJoihx0rqKhMUlMYqzwj3aPsSuHmI4RWZh62dWUL+DJN4C5YQya5TcQBJU/Fe8+rY0jhXTQITqA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + + '@rolldown/binding-freebsd-x64@1.2.3': + resolution: {integrity: sha512-nGbJWewA1wrXXZiQhjAT5rhibGfns5ZNkDVqxsO6zJ3f3YvpoDNNmGMSbbhLuXKjNScaBJVOAboztAWVespQMg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + + '@rolldown/binding-linux-arm-gnueabihf@1.2.3': + resolution: {integrity: sha512-QNniJr5Kml0kDEB98jiDOJjXNroxIIi0IXIbdYzY26Xt1pVbeP62+KnoIZLwirOymX/0jDk/2gI/bNUv7A7OIw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + + '@rolldown/binding-linux-arm64-gnu@1.2.3': + resolution: {integrity: sha512-TkqEAcmmvH3I/q4114NB4RVt6241Dao48pF45uLcFGrwAaIn0iITgTAKP/dLjbN0R4buJjGb91+UHSoFmpgIWw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-arm64-musl@1.2.3': + resolution: {integrity: sha512-NHqjnxpsndf4MPymxteFAWHHfkTL8HjWh1KB7z23ofZ6QO2euONuxDXjat69dKZRALnGypg8k8SsK8vZJoXv1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + + '@rolldown/binding-linux-ppc64-gnu@1.2.3': + resolution: {integrity: sha512-6tbrbwfz5GB9DQ4Jwo6hy9v+vR31xZlvzZ6n5Xut6Hhx5PvrA9q/HsK8KMaYQp063iqZGXwNvZtYNLD7EM/x0w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + + '@rolldown/binding-linux-s390x-gnu@1.2.3': + resolution: {integrity: sha512-oyuXxXmoZHjXC917IAPFAAv4wWAa0cM9afk8nx1+9/jNNOX1uPf8yDA6p7G0RypOfw/X0PQt5IfoquY1um+zSg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + + '@rolldown/binding-linux-x64-gnu@1.2.3': + resolution: {integrity: sha512-TytMwF2KVGqP2tgd0I1OY0PAv78dZRAYcF5ssDzjM34SUXCED3uXvSd5+lHoC0bTD6eEdFz7LdQNCO1y0oVk9w==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-linux-x64-musl@1.2.3': + resolution: {integrity: sha512-/E9m3qstrJFVPoULV25mVQblSNExY2+kBsYe4sy0Tn0yOOgJ8wZbZt3KnRbF/XeU2Gl1STKUQnDNTqhIE5MD4A==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + + '@rolldown/binding-openharmony-arm64@1.2.3': + resolution: {integrity: sha512-Kr0OcsoQI816i6HOl3vFHpd1K0eZyh76zgfj4c1nTyaTsd5r2Mj1lwM4R90y/qaCfmTn9eHy0SKwi98eitRxug==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + + '@rolldown/binding-win32-arm64-msvc@1.2.3': + resolution: {integrity: sha512-hOtMwTqnME+/gJcH/PCZ0wn0zPUjiWOgkHpxbSJpfGKMezHltx1S7/k1SitzVa7Ww2cqrDDaFbZEhcJZO8o+Jw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + + '@rolldown/binding-win32-x64-msvc@1.2.3': + resolution: {integrity: sha512-ekcqMMkI2PlhYnfzQnB/cEdYUVVJViWvoUyLrbzgDoi3Snfc1mVBwdnc306ufA5ejy8JSPjT2RlW1nQSjW7efg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/pluginutils@5.4.0': + resolution: {integrity: sha512-MfPp06CjRLfXQ3wY0R8vJDYBy/MvVcc9OulEfR0B8Iv9ko+GCNaRZ+EpJYFl27LhKsZK0o420sYCRHCjfCgeUg==} + engines: {node: '>=14.0.0'} + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true + + '@rollup/rollup-android-arm-eabi@4.62.4': + resolution: {integrity: sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.62.4': + resolution: {integrity: sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.62.4': + resolution: {integrity: sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.62.4': + resolution: {integrity: sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.62.4': + resolution: {integrity: sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.62.4': + resolution: {integrity: sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + resolution: {integrity: sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + resolution: {integrity: sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.62.4': + resolution: {integrity: sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.62.4': + resolution: {integrity: sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.62.4': + resolution: {integrity: sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.62.4': + resolution: {integrity: sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + resolution: {integrity: sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.62.4': + resolution: {integrity: sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + resolution: {integrity: sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.62.4': + resolution: {integrity: sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.62.4': + resolution: {integrity: sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.62.4': + resolution: {integrity: sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.62.4': + resolution: {integrity: sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.62.4': + resolution: {integrity: sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.62.4': + resolution: {integrity: sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.62.4': + resolution: {integrity: sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.62.4': + resolution: {integrity: sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.62.4': + resolution: {integrity: sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.62.4': + resolution: {integrity: sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==} + cpu: [x64] + os: [win32] + + '@rushstack/node-core-library@5.23.3': + resolution: {integrity: sha512-f6uuza7Um65bwsIJgf0MRs7IPA5IG+A+zs1AYGQvpZmLjtTGdfHowhQw4kwF0pPhJCrU4UHNhK8Qa6tLygYZCA==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/problem-matcher@0.2.1': + resolution: {integrity: sha512-gulfhBs6n+I5b7DvjKRfhMGyUejtSgOHTclF/eONr8hcgF1APEDjhxIsfdUYYMzC3rvLwGluqLjbwCFZ8nxrog==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/rig-package@0.7.3': + resolution: {integrity: sha512-aAA518n6wxxjCfnTAOjQnm7ngNE0FVHxHAw2pxKlIhxrMn0XQjGcXKF0oKWpjBgJOmsaJpVob/v+zr3zxgPWuA==} + + '@rushstack/terminal@0.24.2': + resolution: {integrity: sha512-KB7PpvzDyKMw/RGU3TxOwxTs3OwZ4gq6+WHlTJN/JfQH4ezliNtWIqver78jTaAJyz/ZAAlJGH7a/M1WyFLFSw==} + peerDependencies: + '@types/node': '*' + peerDependenciesMeta: + '@types/node': + optional: true + + '@rushstack/ts-command-line@5.3.12': + resolution: {integrity: sha512-Vg2n24arSf7JvUNga2DMHYTbxnVq9L5OtVCp4Gfr8YC/kmL/bmdR8FQhGcpMzMYNY9Vdw3+TaimG11Sf+z1Tpw==} + + '@smithy/abort-controller@4.3.3': + resolution: {integrity: sha512-rQzc/M6ejh96yTAWk4tupBaQ3v+r4fS9W5sH6mXJlg9T195bIdPZC/mf6nn8J4MxFw6G2BezSMjmCiI84Vm+uw==} + engines: {node: '>=18.0.0'} + + '@smithy/config-resolver@4.6.16': + resolution: {integrity: sha512-XMDfb7LTrlUeI9PpfMa6xzRv+yMtYFsr1LqTsR3CGpSSaaPIR5ldlAiXyLjFYmbh1/DD5NxHmDybdh6lJjJM+Q==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.31.1': + resolution: {integrity: sha512-CyogUINxvi7C7LDsh8Syo6hVJOT9ckz4rG8dRZfTJ8r91HkMY59PnNooaj7WcHyxEkxPfBAmbgztZU+xTo76lg==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.4.16': + resolution: {integrity: sha512-QfuLWAkLzptffFW980AFeHZFdqds2B64rpEd3uJ6lgs3xVn9QegGMUgUcj+4d7dRrAsya3r58ZKpku97WcFb4w==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.4.16': + resolution: {integrity: sha512-t+RmwgPwqlhzHxH9EHubIkyN2eSAuy5d4LR7gz/HsUZRHkXpHRuzjiPvD7fLIVefhgSakGoiiiJ1jUursfFkMQ==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.5.16': + resolution: {integrity: sha512-XSqzMmc3iUO+jC50lQET3l8fX8qvt9apyQMobmHy8o9Ax4eDcIqWvXKdzGJJanJZNeqfH+Itwo6l4tspmKQekA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.4.16': + resolution: {integrity: sha512-xIWOCcsrQPlWzxXfdPer0cHzvEDycVKk76F1Oxl73qXq8lZuGd+lzJYWo3vkrXnrwqFya95urMmYMjDIY7hG8g==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.6.13': + resolution: {integrity: sha512-4fW86pEUOMbrD5nkbyl/tTvPHHWJFbuB2odl6ps9lWfHoXf9HWh3Q/Smh59qH1g7+c/BSZghX6bbUk4gsiMs8A==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.4.16': + resolution: {integrity: sha512-B3yUUqflj/L1HY1QvSLSmU+NOtG5mroO4+dXj3sjqWKxdO//wrlSpkymV+dkVpwUJvwCXtSAybdzs2WIiCArjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.4.16': + resolution: {integrity: sha512-9NJHd8scrdVORvnaMHIHgPipGxLiTK3FMNUfWl0tHn2fwJIEk4rZ3OM793yIWV8L+WKu+AWQZBcVyd5qrVXy+A==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.4.16': + resolution: {integrity: sha512-ZhloOl0+kyQHlmaEhYvsPbNs9ekLHsbMt82W70v0ChIQKbm1HaUAozWDph2QmA8L/PtiP6cwy+6nPTffVNjBMg==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.4.16': + resolution: {integrity: sha512-fEXR2jKLnu1U9sL/Obdkxs8f3M1pLSDjM30cMmpz2L61oGnlUdx1Z9Wj+9+mID7kKldEVOUQfuXqHrK4RP90FA==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.4.16': + resolution: {integrity: sha512-Uu5RVG+BjnS74dzSlQbK50ONlE3DD9YXdZwlBbZRCjvEp5KrBu/FPwO3SyDBYf6l12Q0DxSFdjeBiIh+7gNcmg==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.4.16': + resolution: {integrity: sha512-XdPyIiKajNJ5HoLkBYe3EP+Tc9LmyIz/o7bfcCvr7TR7wmtJqAezvyMSV7X+vjTh6l/y3dC81tIc2PirpMpbZw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.4.16': + resolution: {integrity: sha512-Q+J8iTUHr5qtoejFJCb9TTavDh7xQFVFRjy1n1edq5BFJq5b4mfziqrEqJlAscHHVdsqyFTNJXcV+b9i3oad9w==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.6.16': + resolution: {integrity: sha512-nU2N3LY6Vn46rwga1+gZQJ1Zsu+3/Qj2X+d5gKb8gSvLmojZd0sg9XWYqMDH59VeadVKOGOhMrhyzUo7ln4lGw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.7.16': + resolution: {integrity: sha512-JOVvyFbNiXUuT8Id+uNIEzbkqi8IOa6zqEQgzpoQ1xYIQQFTFL/mXIiBRLlA129aoBB1EeiElkhmLZyok5axYA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.4.16': + resolution: {integrity: sha512-nwYV4tBUU5kBOYec2p8vKz5pzMVWVEcalVY4ZXguUdZZEOm9LQZhT0pKsnYSQhldvWegaFKWAR45Mi4XUfv5cQ==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.4.16': + resolution: {integrity: sha512-IivXdOXykxp8Eq+qDL91mxEVd9CoR7wEIJqhJiwbHnmJVX6SZm2hxZt6uSDQOEh5tYHQdj6WuqmpNhV7P8C1Ww==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.5.16': + resolution: {integrity: sha512-N4XTMCO77u8jXq9Ms1pbFM3M9zD+ScKnvB+M7//VyawM8L6xW3/mqAPp/uMOYprW+q/b1Qen6qUKVwxTb2ymiQ==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.9.13': + resolution: {integrity: sha512-Nmd/Nl35zfYrd+a6OO2cDJb3GPh9bgTjIUhcM+JFfjpp8/osCgboDV5nCT1I01Pv6R13eSKDKLSoVa5ZB6Zsfw==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.4.16': + resolution: {integrity: sha512-xsj0qoE3ya7Fu3YoyKPINtGWsY33IO2ypcOJpLAGMbzGYTNr0wqK0HnCroHRIoJTsHapnsFABUhzlNfHo/diwg==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.5.16': + resolution: {integrity: sha512-iPaxIe9mTyidyhM6WF2/gSLPezyCwSlZcqlDBj2KCoSS994iw4yf1se1xmZkWsY98ZpwjDR/ZMubOSVx+Nrokw==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.6.16': + resolution: {integrity: sha512-apuIuit7x6ZM0nJxuKf24MCkflwnSyD6wePOPGkhntEl0gLaIYLlZTQtzCB+j3kWOTpqx0D1o6JZ15NTk4f8xQ==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.6.12': + resolution: {integrity: sha512-I6KLtq3H0qqSuV9vLglfi8puHqzygzWHOnI4z/Rdoo+q50vvo18vBRdPAvvEtcaKROz7Zn6qnPa14kRfPH6PcQ==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.14.16': + resolution: {integrity: sha512-UzWzH88hntrIn1wMPlmt/6vmQL+FS+pYgqvBsp4QQdgt/DUFZZD0S0xRO7kCfAfz9fqn9boVb+buFWU4LD9PJg==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.16.1': + resolution: {integrity: sha512-0JFs3V2y2M9tKW5na/qxe69Zv+uxLMO7QBbhxF/FHu/Gp2NFZAAL9tWl9PU02xxo07pb3G9FTyjNc6D5uZrJIg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.4.16': + resolution: {integrity: sha512-0VynNn3o4qSpRbgtG6RbT09wsN2HjsIkBvxHUX99p0t3sFj7hvqsOtPQBubawSNH4PWfwXgkD82vG166ROta7w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.5.16': + resolution: {integrity: sha512-80e25qWKD6hJh5BenAutni2Z6dj2AiZKmht21pcROmzWzQja8yl+KqsuDSia++hwk1Ne6RrDEBwP6I+A4R0XAg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.4.16': + resolution: {integrity: sha512-gTqO1MkKFsaKgJoGelxgWBdUlHqc9g1z6ItBVFsQU1yTO4W6BEIq/NZIDf/UTi6ueojTr2fJRetusBIbctA6KQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.4.16': + resolution: {integrity: sha512-BTwIXGhunFzjNYpKrRJJjgfEONT8m/wyBB0IL4BWB9WqJSQa/CEMh2cPHqbqMpKwnAljPuhhbGwF2Z0qm2C04A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-config-provider@4.4.16': + resolution: {integrity: sha512-GB3CQ1o09Dc3aUOswcy3q3xbe5ib5tNyIDmvn8i8Nno01gogbqn1BNIHGawSHApEFVtL1OqjkoiQ9lMXpgY5ig==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.5.16': + resolution: {integrity: sha512-en8XtoFeELWwI0pwpmUbf63bJ9WRusVozGQ59mE9YuUuW+Q/FFRfdbd/EZIf/p1oZXHerbj30ITuer7vE47TbQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.4.16': + resolution: {integrity: sha512-MAN0jEah3skK3+94QiikeLbuhnZ9GuW+JCjuIUpXGUvJG2U4N8sscypWDMUJUkKc6DYJ0UaGI5Xvb17crXwyiw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.6.16': + resolution: {integrity: sha512-7dFFv+DA2Ln8s60s+JIRHHfl/Fch8HZ3FY9VjnM6I3EtigDP+bUUexNQZuexVYJXUejpQ48/JIHSiSmugFDD/A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.4.16': + resolution: {integrity: sha512-VuChjNaV9VteddlugHsGqFXgjQK8WIt9JxYAtdsi1i8A1PwrVAVC6DVVRqr9XbGeWnHvvWb0ywWLMjYUZwiHYg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.5.16': + resolution: {integrity: sha512-oM/8/5H9aG1omF2CzDxE7oxiJQhkonS2Vz1Kd6/76IhvPzCoroA3RVhr0EhAhZmyY6th3WfLK0OpRrphJ3YbgQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.7.16': + resolution: {integrity: sha512-r/r4fqkU5fkJQaGpTrVssAHuPIwDSHrwz1KQ3rb1riYkL71OsYciHun1i0PWrJLLt+nPvroHXcaz39RdNW3XBw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.4.16': + resolution: {integrity: sha512-/gSbVMQlLRcneJ8D/JGbB1DNf0w4I7OpY2ldNUJ+myDmakPXEm9fy/X4swDlNYTOwBwsCKVJsogCfe7Txjnolg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.5.16': + resolution: {integrity: sha512-fbrKxazlmJDe70WVjM6LOiNA2IKiz8lzsF1rHoIiEj9ONf5uQTgN1srg8X+AveJHGYavqEhsDEGZP7gM1k43Rg==} + engines: {node: '>=18.0.0'} + + '@so-ric/colorspace@1.1.6': + resolution: {integrity: sha512-/KiKkpHNOBgkFJwu9sh48LkHSMYGyuTcSFK/qMBdnOAlrRJzRSXAOFB5qwzaVQuDl8wAvHVMkaASQDReTahxuw==} + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@stdlib/array-base-accessor-getter@0.2.3': + resolution: {integrity: sha512-/2tQbhLpgBMfAafB9I8MWFkn3dYUUGcUUiZcbPHaAloV22G6W2HU+gUk0l4i++w/34Y9HzxjF1pevMi9wPizMQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-accessor-setter@0.2.3': + resolution: {integrity: sha512-NMvp8JNmvI9mCWmenPX749j28IBvUflsQ9WVhCRwmzrBDgf1FMUvvFFyWpcjnZI+8luwW97o9e3EzWBUIxeLEA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-arraylike2object@0.2.2': + resolution: {integrity: sha512-k5dDtnpL33vgSuHkIJjsMcNWT75SCD3daeU+S9Ucwb8GW9UJh8iWRmm1/F4OLD0dRlQx1Jrkf7Z3fUxIb8aaqA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-assert-contains@0.2.3': + resolution: {integrity: sha512-0SFOYk9DozEa/8zzKIds78ubLHP1bnL6RuqXi5Af167N8BmSUFzkl3dI/CYhGOjxOyBUIZxe38AsngkVCNYtCQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-assert-is-accessor-array@0.2.3': + resolution: {integrity: sha512-crAa2IZOPCqQMLRfIVkFMX6tJFnzTKfhCNzRXOGBmx7tOfoZoI/KHHVct1yZLv6uBD7v6hvegKdJcGk1BgMTEw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-assert-is-booleanarray@0.0.3': + resolution: {integrity: sha512-10sn1QJMZUahwCy2QTujv6Mwx+fikqVhO7m1uywozBRALltEIq04r0CKhXPWxJS7HjQ+CYg9Lx2f0l19avR91w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-assert-is-complex-typed-array@0.1.3': + resolution: {integrity: sha512-Rx9edezX8Suxh2+zQ3JtuJSiXKWTvS9drj8zWUhbdOBodtMSiqWH4UH9YM8N7BcZiYXWL99cnnIKDPXxz5wPfQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-assert-is-complex128array@0.2.3': + resolution: {integrity: sha512-C2B/mcZ9S1I2KSsWkAwIIoW0ekDXcMao0Eoa8moS6xlpX5sgDVhmB/DkL0sb+z0E3GRp6/axiqyNTmEl1dhKeA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-assert-is-complex64array@0.2.3': + resolution: {integrity: sha512-CtI7sc1pcXB2yqQxHbz6mglOHK243HV+/hO2jAqDBPpaRiY+/z6+NHuhd1lrynJBSJdFzDyTatQaLTsfhLPDfw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-filled@0.2.3': + resolution: {integrity: sha512-+npZqPn297Gv+D6B/OUkDT/3JGFdrr31+d/SGTeCzm7JQ22tGCUDmixDXwqVp9fWwB+LbjrOWrXMKluUTLcNWg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-getter@0.2.3': + resolution: {integrity: sha512-guM8IURCdDGEo71vvk4S0ZZUWVP3GvzdtYhWLJnDQPW4axLdfWTIUf13qcrUV5TRSMpfMOftSuQZf7dBGAOE2Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-incrspace@0.2.3': + resolution: {integrity: sha512-uzaxYUiYd8bk/wJdSBuE/Mx/jc1vr/7CtnVu9522QRq/cE3ZUPqLW12pBYo+oEoBOfHNA4CGBtdK2yNMI3zrbQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-index-of-same-value@0.1.1': + resolution: {integrity: sha512-Eyn/DU1tmb/LOTdTahIB1fEUGX50UzTNW2dzmwTVBbjHk1mN25vvjzkn0H1Eba5HF+bHdVrKXS6X+/Jt/28JcA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-resolve-getter@0.2.3': + resolution: {integrity: sha512-nkaDnhbUYe53FZYxITFaxXLgn0WELnhjvspi2XvExuSa2h+chqVKlOKj4hvzffYaYtiONlpBzURpa8Mu19AQPQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-setter@0.2.3': + resolution: {integrity: sha512-jq27dgj4h9YyT4ZUubG7jP0KrNQP1MY2aLyieHGXv9Yx+1ysf8FLBRkekbOl1MJXXE7o0bOGAsiywS+olCgBGA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-base-zeros@0.2.3': + resolution: {integrity: sha512-C+eo5MFy37TR7BJ5EDK/5O83/x1n4pozCRj3fcL3ZrURTwUHq0nwRCVCmym/DrmZuxb7MM4xHyYto/suoQOm3A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-bool@0.1.2': + resolution: {integrity: sha512-u+e5+u/zCSNM6914c+3dVjfR3HWJzZvME84FyuETS1WkSIueHYYjbL/Y3Mwrrj8UufOdQCJEFDsNHUPBRWSqmQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-complex128@0.3.2': + resolution: {integrity: sha512-DPmQ8+MIxJBvusFNXDJMxqHCvMezhq0BGHcZoPeQYn5EDr6PN27VhyxgSWALzmHl72432e6ukeg+KQPKJQ1fcg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-complex64@0.3.2': + resolution: {integrity: sha512-gYh7d2yCq4EELHP/8PKNWz2NO+x6ln5VPXbd4logAVZg4EhYW3rl9jkU6W0KGPncwEDIw+QuHcIAogYmPFnFDQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-dtype@0.3.1': + resolution: {integrity: sha512-D/tBahfw2W0gVKPX89YbUA52SYOeGS2kqdOMgf2lJD/U1vuJehLq145dajQEGhjc60wdigM2VMjfCrME2MGfSQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-float32@0.2.3': + resolution: {integrity: sha512-LxdKGrpsCehFDgU+nw7r3/NL+g8pe9zcDn/6fvNwiuy0AiunX/+c8lin9qUy/FEhrbU6aFXepFM2Ql/9YQD+TA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-float64@0.2.3': + resolution: {integrity: sha512-LtQOcxfE2zX5QnYfLNfptSV9q3JUGkOvGhvtO94iPXEvYTvJSEWLK7G97AJR9MK3rdL1+USjGQzUPiUd1/kAbw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-int16@0.2.3': + resolution: {integrity: sha512-yNoSOvDGUwHlO5g3wyEM5KYIRaHB5N/PNQHhOTbuvjdsvBhPgmyJr/TQABnSipKsS6hOEveI1SxyONfZGD2QkQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-int32@0.2.3': + resolution: {integrity: sha512-m+uRYfsP2XDMCgCN0EMsxUNha4SQ29htPqFC9KZPgnVvvmjr5gsTHiZ95Io/ErgLxFCjRajpi9stjZ7f9Xeiug==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-int8@0.2.3': + resolution: {integrity: sha512-RZFDdqpFwNrIUob38519AL6tNWGQb/Nqo5TnocCgLPRVFa722DF2MI/DMjhQBbp9RhI2gHAz/gtqfa3CIhsM7Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint16@0.2.3': + resolution: {integrity: sha512-ceDGvNGOxR2kUO30USUWL8ezKw+R6wBwQNJmPOfT1HJRmCxio+eRMBygmxoRmWwoj2pj8IHC/GlC3N2kSNN0Iw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint32@0.2.3': + resolution: {integrity: sha512-zZGjkJjPsgp3WyKOCICOGaJ3OoVyzwgyZgyEHl3wlEqfPhUPpVJGLhy9mFx8WIoTGHsCWHs1COWZfh88bL/pSA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint8@0.2.3': + resolution: {integrity: sha512-+UVsdR94Qe1zXEbpE+rpXFxp/VB8+zGxH3d7RH2cUpy5eFeqcSQNvxaxfqZnbmqk2Gu5tJEv/ZBcTXkpeKH7HA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/array-uint8c@0.2.3': + resolution: {integrity: sha512-bTK5NJeXPo3bpiSu7qebFjGogu9CJKCNmmooAjPcq1Kj/S5C+vVamJjHx/C32euvlynwRiF0fJjcerSVvggsZQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-contains@0.3.1': + resolution: {integrity: sha512-CDAVa9BxxFN3XfcgNDlbZj/sY3AyWmX0oz/5xFj/V9SRgHeOn/NeDu+CAW/Ph6GW1xKNVMeva6tSFjNWdsG6Xg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-float32array-support@0.2.3': + resolution: {integrity: sha512-nNRO8I4dp3CtxFXCD901IBmVc+/otaFMr/Mx1jN956nkaXaL3GZR6p12IGgN535Nj3QILoKPmOG7gOjts+uQOA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-float64array-support@0.2.3': + resolution: {integrity: sha512-BbHjShic68woFydK2s8ECn4uKM+Cr3lB6kBP+9wK7wkUGVzq4lo7n+Twt0cBbgwJOGLlQayJQOQAVVq/nu/wDg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-generator-support@0.2.3': + resolution: {integrity: sha512-wr4w9/ufSBHSj+x3WNGK2WdEA9u+itVeY2Tx6ExN7w5avBAFe5EF8/ndeta4iQd8Su6YKJCqCUXNVJ3Dq4gl5g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-int16array-support@0.2.3': + resolution: {integrity: sha512-b/2LkEPpg4jmrZZYVF0kmjsThEolINpj7TkKLQORxWeFKlULHX+rEVBwnUxGqW7Z3P6xwklbSlzzhlCU0xXc4w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-int32array-support@0.2.3': + resolution: {integrity: sha512-FjGlpOYwUV/DbWpX14ZirgxMRgkwe6KKsN+/DEllu/w0bLIR4uBVBOQk8XDnExSVd72CiOH9+HOx6QTjHlhnMg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-int8array-support@0.2.3': + resolution: {integrity: sha512-DYq1D2vpVO9NnRQa+BQ6JeZy4SX4yps2Tusalnri7M9s9BNzgzH2rqB1gdcUmSLQ8vLLaHNVsHPGoiPqh9tJBw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-iterator-symbol-support@0.2.3': + resolution: {integrity: sha512-m06tXK3ErFF3O3pFrgfbCmtH7UpGDspqAoE260Gw+75JY7LkX6cl/uGoGOmxq0WZPyom/R4UJCdDkB7J15DKYQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-own-property@0.2.3': + resolution: {integrity: sha512-BnX1Lpvd9YaucQLokQrf7ppLwa3V+nTUQ9qoys5SloYhjwbYWtO61SJVT2JK+cfsCxUAx/HAh3dN1qTKxx1PIg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-symbol-support@0.2.3': + resolution: {integrity: sha512-yNsJnCb7HWye5xhZ/eRIpp28HwOVFF5gUCKeT1p4haoDJOn+3YEPYaXMn4mYK6kRN96tUhovlJQv9H/9jwnLpA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-to-primitive-symbol-support@0.1.1': + resolution: {integrity: sha512-nobeU8aB76XlDtKCC4DZWRdWSbPCoOGOOwEuVoyJ058gNacR4lRPoCA/7cxAVl3UqqLwhX3E1MSOMxNTnMyTGA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-tostringtag-support@0.2.3': + resolution: {integrity: sha512-9sULfRKYneF/Mq6F96xqeQrf0a9wdJc1lNZf2wfs1EtRwQHQfx5+QlYl7hp3gWI/iid5M4Npme86T0413eaBfA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint16array-support@0.2.3': + resolution: {integrity: sha512-7PjQTyXmpIczUz7Vx8c7BcdroJmMmQjyNQDF9a46Ya+nZxqH7g9jRsxmvzqVrSyXhkIyAbw1Ao2QyKocz+hZhg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint32array-support@0.2.3': + resolution: {integrity: sha512-xa/0yWs+fhp/yUZPD3/ZmQCXqv7haJGGJE75HBX9tw9CHgmqpgAihD4yGy982CtQaxEltH8icNOX8CQzZZS31w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint8array-support@0.2.3': + resolution: {integrity: sha512-cgXcNtv5PS+LEV0tj8VOZ8WVjLJuvSzG0GolF+2M0u5le2hHk7BfKH9bqmrk0AzpipAEEdQgp4CGc/Mmji5s8g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-has-uint8clampedarray-support@0.2.3': + resolution: {integrity: sha512-Lp2sWfsU5Saqm4IQ+ARuUFc3o6qOJoYxzhyI9nAHC1yy8bgvwNkjFiGs+fJcfrtFxeNDC8WIs+IbzuiT3HSoJw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-accessor-array@0.2.3': + resolution: {integrity: sha512-Ll7rZqXnwT5v5ys01rnUxfJFxtqVprJtb0NMyF3Rw9QXJtPsVcaWMOeL5FDZhBqlw8d6Lq+VkVA6WabgtPQuzA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-arguments@0.2.3': + resolution: {integrity: sha512-J3cf5pEZmJkjUi2MV/uldPe+rOpC9Y7pLAtJHY7BkCTKxZCyn16KpX9PuqeMXp+H04GdD9wxuhESGdqoXPa7pg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-array-like-object@0.2.3': + resolution: {integrity: sha512-Vu+ekWIc3srgjwWZSUl7FK+kj0HVwWdcAHNDsUon6mcvzltkTm+fYS9q/233L9U8BanhfORMtVcQ6hLX0Cnnkw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-array-like@0.2.3': + resolution: {integrity: sha512-HXjWVOiyYwjSOAhq5LDXWcZDuUwHRcOWKY9s0PqeMS7/15smJJCMc6y1yg/aXae0qzHdex4UmCB4zIxXOftJvA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-array@0.2.3': + resolution: {integrity: sha512-ayRsLGmssNO+8SR63tPP2+LZCxFVsSXtdN0ToSdm0kAOaGT4e0FoQus+AlFdhW5xWtvoxL8r5WKTVqJ514/rvQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-arraybuffer@0.2.3': + resolution: {integrity: sha512-1uNY2fnLP1bsHDqydcuxhj3SdJrMMvKdZvGVCSoT8H0HRMoStED3FS/zXzSLTGHXcExYYSHXWyOrvieLWNIfQg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-big-endian@0.2.3': + resolution: {integrity: sha512-+/X7ZcXFdboHIKDtxnx25fKmf9EhPRyp37qp9H9tUb0RnPT8SgmQKtYZxovp7EeBbESZOKSousg0jZKLbPqRAg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-boolean@0.2.3': + resolution: {integrity: sha512-36BETlRDrBeCOBLowW1/vqk9wD+OA3Wp9eQxFij/7icKiMDURH+Fiw2hfbhaZ3c3Y9uEN0rAdOT7AJlwWhXc7Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-buffer@0.2.3': + resolution: {integrity: sha512-ppnL0sC5XHSk221AYjT4zD33TDB/XuSkhbbbr5sviTH5+88KAqy7SjFlvcpqpvB2BvEVzqRE1fgVso8SjGQD+A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-collection@0.2.3': + resolution: {integrity: sha512-mAL86cRZhTeqCHiLDynOFm2S3DRUaB9NWPbUSFELmoWZ9wV0JeCIfNRYRyzWRPthMsyTYACAhLx8UV8IGJjsmQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-complex-like@0.2.4': + resolution: {integrity: sha512-BTrhcwlCRb/6NRqlB6Ap5WpniqaawCZOWnJuAJy16lbrvYvFP09f7UNNmxrxFl8BCg9hhyZQTIfdaF9CMgN9wQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-enumerable-property@0.2.3': + resolution: {integrity: sha512-UtqsBVUEAnPjfbOduQ8CT/YwUFLiXiapjSnKaGeLX000qBHCW07uOL1nIuE/vN61SMB+yvZuTZl9xUux/Adtew==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-float32array@0.2.3': + resolution: {integrity: sha512-fHPem8taZPd1YoYIB1lqju9HEPDUuY/UFKG0/PquCZtA/g32TEyMM7tb/GCcDQuxno9jnH4+6r7CTfHaa9758w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-float64array@0.2.3': + resolution: {integrity: sha512-GEuYmjWDT2PY530fIO4qBDr4xO9vYWTjyszkyma0RWKzyGBdCV6GYdMj8qO+W7bOVsqeuoYNTCNebOYfpgZbSQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-function@0.2.3': + resolution: {integrity: sha512-6EdSkdJ1KtILdGb84MhherNtitGgzHH+u6rs1gGj+294wg/9IzLYaaHDktJVRN/viD3XLEQjPGzSTq5x5DzPbQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-int16array@0.2.3': + resolution: {integrity: sha512-H5OohxNtQJ/i6esWE5R01TmXl0M5gCdvHP3+02ahiXbq6PBOJ5bJQVvw2M/j0jO93tS6d+5OcVGAKGazSn76RQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-int32array@0.2.3': + resolution: {integrity: sha512-ATPkqHYsQnOYs2Vz3KudJd/N79GFsiKzEOiTMzl5ILcN6bdW28ZNjfh2eIJ/o8NR22rfPQOiUCvxJHw2hpAYKw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-int8array@0.2.3': + resolution: {integrity: sha512-eK9SvSUVTTQ0yGgWF9BI/hvqs6pu77NoVRwfQLLvjzcpI3hRm5RyzhHyoNe6Q7FQ1obxvVYsCjysRmC+xmV36Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-integer@0.2.3': + resolution: {integrity: sha512-HfJg0x6YWW6aP3JSONoI5bNXFGqtiNqWj0L0ex+oDpzrVbXQOu9GNlRKP5P5cDgfI+3rpZMCINX52IGKyCiUJw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-little-endian@0.2.3': + resolution: {integrity: sha512-TvKdQhKwrWf0rik5iiurlI1hpJru+bbYGByoSJ6SScTvZIgf54MTYEsWgVyoNqMw8AQFxOyDbMRee+je65ZbMA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-nan@0.2.3': + resolution: {integrity: sha512-gFTy7KCz0/bqf0pnEBihtpVz8QYZHiYDuv8wvTZsybMz8tDOE5LnNPJ1klCsWgRLgCy9MA7uec3xwfst9n+71A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-nonnegative-integer@0.2.3': + resolution: {integrity: sha512-3Goiu4Kum1Xm9NbvC23GZOj1a6aVrGF1D8CkZkKDNp8kiYgKSKonvcbf3JeVrr/fLxsdfjnprbzrPOYsMOsRYw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-number-array@0.2.3': + resolution: {integrity: sha512-jpodfINEvUe6lQWxurZduf2aiaAoBD+KZsXq4Pn8sas6XDjPRmHkqth6dJFz8QcyzDdCmq6CbyPOEs7e/q192g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-number@0.2.3': + resolution: {integrity: sha512-6i2RoG5TYn7mfKnPmvAA1Gdhn3PxvQegb2bh2pi5k/+xXgEHoubpqBSVxZBTZ70GIkPwNFJQDRWqwOwHet6enQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-object-like@0.2.3': + resolution: {integrity: sha512-K6G58h5euEVSEZvFZSHADoYL7sixNTRy+ezHl/I3byJpC9PJdvTO0XWYD0CT0yVXIaqmCYU2NsPpgGdcPLELFg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-object@0.2.3': + resolution: {integrity: sha512-H9NaVGuPl4qA3J4gDAzy+sHCkTImVycoNd7izPF63JuAlEO6KTdpVK7stQBXgcWf1pyRHem7ZTJCzht2UMLzcA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-plain-object@0.2.3': + resolution: {integrity: sha512-MRdn9kuzC4Hf/2Z/911yZUso6s6f048Ck3dO1j9scHk9EKnU404XrC5NJHeZ9OaI/689Fs+JKDWyKyqyHYRV8A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-positive-integer@0.2.3': + resolution: {integrity: sha512-lGd068beyzC9O1cAlyI5vKlCEUyJwwTrSdLkfVqNdqppiX64lOngjoAhu4BmHScuWSiJz9Zz39YnQ/mA6cH/kg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-regexp@0.2.3': + resolution: {integrity: sha512-+QlQMHrmSmF++7gK0Jjgy7W5aa91gAfpFWPyY4gUwkrSc+mY+JPPYW4peAf+v6dXABOgfKH/JOaFPSv227SSTQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-same-value@0.2.3': + resolution: {integrity: sha512-YC69SQUS5RJ4gjYrgzBTV42VLNm4geENhA5dHfS3JfdwruzG+AGBbhupG+DLRQII9Mpv8qui2ik4EXQCKU99bQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-string-array@0.2.3': + resolution: {integrity: sha512-OZhH3sJ4xUP1iGEvpG4IGIr9B9pWWv1CsvK1bSsNunvCEa5fi6XPJvXeP5NbgTIgT4JhmM5fxgaoT74S/CW3Cw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-string@0.2.3': + resolution: {integrity: sha512-KC2sHwnIo775uEPRG7miERHb3DMABf37jS6o2bmcMHyME+gl+HC/bnqgwYTfgOsM0YOvYMSgA1HJo6iPDXdFrw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-typed-array-like@0.2.3': + resolution: {integrity: sha512-TOb9CCwNGikBm2KD6cpiAJSq7FoD0amdt9zsBMRQUJEgfjKxcRGORx5i73GmkJUoFT0uJa2pnRRlGJp+4bZmoA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint16array@0.2.3': + resolution: {integrity: sha512-gHnj9FpIpyiIgsDfA7exvfqqn91THgGJD6BAWqiBgQQccK++K5q3ARc31ysTBuIea1FqYfpy30vt2ZW46lIMcw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint32array@0.2.3': + resolution: {integrity: sha512-Jt9hp3iolCoQC6zC/yisTvxcuxhZ9jyiYwNzyEzgoY4GdV/WETuTpQKwTKbgQkJdUbcl/3VIQaVopEJSUaoV5w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint8array@0.2.3': + resolution: {integrity: sha512-a+CzS7ffk2D8oFsswqGJk3L8zpqcnzuB5rwolilRVQtrWjQT/s2ydv5b1HbMB2rEcT6h64rYJDNAITeetGmzBA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-is-uint8clampedarray@0.2.3': + resolution: {integrity: sha512-tGyJ74IqIFczWUZAAaR/xlGSzh6vO8t8SYV33ruNPjah/d69uijXHRVohx/aO3xaQ7bbVapk/WbGosmILI7sIw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-napi-equal-typedarray-types@0.2.3': + resolution: {integrity: sha512-eBfODSc+zsPnsIXuO1cmWZ6AgGFXPpx0YEApBFzG6akllcPssYuOIJHuE9xBdgL2c8NAGKl91tMitlkmEulG8w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-napi-equal-types@0.2.3': + resolution: {integrity: sha512-JfESREBknrUOorPQp6y0vQicG5oSrzopRs2/Uas4tXRWRWe8J+WI60W/HTNAbfow03a5k30M9b7Vg81N6zf2mw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-napi-is-type@0.2.3': + resolution: {integrity: sha512-EajA0tANjWepz0MVE0zZU45CXLA12/uuRpQ+680ZBfULsVc0plipSQfIMePBgHueJe9YMgyqm3r25RXzf98i7g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-napi-is-typedarray@0.2.3': + resolution: {integrity: sha512-szTmOUQmxi7wi+sJjOpmqBeKdaTHXJAYaBAlrT4Lm8KPjIGr+RP2Fvi2CfFqQu4faekHEM/AXuKbujZnc/P7Xw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-napi-status-ok@0.2.3': + resolution: {integrity: sha512-rA+0Vo1ULn4uBHQ+FfagPAcikFT3W/t9I7HdP7SMjz71IZpkWyuxVFZi5MTv2+7hGMYA8be5FibLz20uzbZ9pA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-tools-array-function@0.2.3': + resolution: {integrity: sha512-z2a2G6f9Exz/V0UfE00TLm1sp6W+pOdYltekRRgdEgFNPPP66WxaJfFLkXwqZv0X75U6TuQ0pp7tFq6Ac0lf5A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/assert-tools-array-like-function@0.2.3': + resolution: {integrity: sha512-OjU5pTqnG5vVLQnQNhbtuENciUJHOo8KO3QiUPUcvEY72bkF9ONNthYUl4VmKEEeHZnyrHIeIpjOQk18JNTKeA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/blas-base-gcopy@0.2.3': + resolution: {integrity: sha512-W1vwLtEIfty7iCJZZ3OhcpNw6o0HwGMXdLWLEDlhYpQ+eBKPBpa8FQducrGSbYDI0sys+ZBMq/oRv9dGIyH2IA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/blas-ext-base-gapxsumpw@0.3.1': + resolution: {integrity: sha512-PAe5tuC7LtUdCpa3w2Up7n8axhavCsRjrgB+GUcpyW5CwhjahTqqve4QAkcdZt6Y530dlh31q50I5IQG80RDiw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/blas-ext-base-gsumpw@0.3.1': + resolution: {integrity: sha512-LARELhFnqFuAQiJVsg2MxXTQvR74+SCu56kzsBK3Wxrc8KQKzmzmWHPJ2y9beZNkzPLmpWNPiCyQUULvmUd8lQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/boolean-ctor@0.2.3': + resolution: {integrity: sha512-JmVu1SdJHYK5ubLl8nqi0gfYX5kAcSRRJYNQ7JuG8oU6WtkIMsC0ahQ8+3G673czRaQ7HGE+pL0IZiH/s8HSrQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float32-ctor@0.1.1': + resolution: {integrity: sha512-P5aJ7kJ3VkOCvtwIipYH2t/vENK8XnwQGDChQiZAgkJadrF2dKYOXa8t1vWEsy/AMVujAjamHlCXQffhafYm8A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float32-imag@0.1.2': + resolution: {integrity: sha512-RwwHXMocm0/1wMB3NI7oJR2MNA1avqisqh58oFR95Kq35leSIrevSHw2HbW3P1QG1uyYCbOTp5V2zv1alwXAzg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float32-real@0.1.2': + resolution: {integrity: sha512-KyUfN8nm9zyfNwi9O37u1oq3hsAi8uG1sQX+lI49PGxqkxfIEoMwHclYrs2lgQ02EWD6t/Coj+8dbzKwuj21ug==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float32-reim@0.1.4': + resolution: {integrity: sha512-PXnims1rRAVGARrpoeiwxkYcThjCoXv3iLhUhz8oyulcHteGkJuBAmhnrLANfkh2ro+bFlk6lC9znLt13SOM2g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-base-assert-is-same-value@0.0.3': + resolution: {integrity: sha512-Arz1sXdgWNUY9Fl5FWpGM/4KPU7xH/1vEPjf2DlnESsHOuNXjPfaox5Lw9BcAHqVs/Va34HO2LA9XLcbXVI9zA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-ctor@0.1.2': + resolution: {integrity: sha512-xCVE2Lv1/I7A/2mDloT3hDCpA9NP9XOqZKpyKhg3D/9D/vJnh1rnn9CK8+xzVfRborsyQbJF7OI+Ijc3szDI1A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-imag@0.1.2': + resolution: {integrity: sha512-uYmpvw8723pXVMaPIyoDWh53OLBk3F5HQyCFrgJsFCfuM0e718yd778ltMOyl7kem3M87ealSuxBwFX5SLFxcA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-real@0.1.2': + resolution: {integrity: sha512-m8kJIckqStBS7WzmGe5X8A1CCooGmLToXRo1qq4EydA976FFMFuYrsI4XuByt1e9zp9HEGeoywyelaqyeeWtHw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/complex-float64-reim@0.1.4': + resolution: {integrity: sha512-5IxS+GqkVezTGh57Gp7pIyAHS+obDqUpq5y7KpAjrH0s6gp6oN/m+tmPh7K6Yz8yX+7FLVn5b9lZxY1otBBEJQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-array-max-array-length@0.2.3': + resolution: {integrity: sha512-f6X1YlF9RnN5HkeFZFr8V4iSpV5968/4V5j6RFKY7gwr3jxjiIBar4CFja8W0f5eRUsuAlxf3HQ+Y0syYKpLuQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-array-max-typed-array-length@0.2.3': + resolution: {integrity: sha512-Npc2GG28d1+dgdb2akvzDNZZpiGTIAEe1vvJzBLfmVnDkqxYSuTu55N9jcXtTvrPOLqxwWy7K8AMAKboMFEFVA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-eps@0.2.3': + resolution: {integrity: sha512-gdDE9eYNuJqIxmpWFfFsTx24uJv3BV/S+MKi3vj/TgWFeGMnsqHP+xIf46Hby2OwRbr6yYzsVwfJMAzF7ItCQQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-exponent-bias@0.3.1': + resolution: {integrity: sha512-fUqcun9eGniI8sqsZf06qa064cKcp6cARfX9dXuGnCQWSWEwn8Q/LKr8zEgUVEu6cJCVyCMHgm8VPpkTpnFPAQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-exponent-mask@0.1.1': + resolution: {integrity: sha512-5J38bgxW+UlF9AHG+C9Z7ilx25aPSOr3ECyK0LThG9H8Kw2zL+9cNbt72vRnVr0BSCv3NKvgxPza+B/bB7IJpg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-max@0.2.3': + resolution: {integrity: sha512-M1Hgv/fUdnuV6uw9yyXXOAf7Bzf7I/8naaYolXGX4h7B6XSuCT6Of/0BRxXlU9D+V6zPniGo2zdBaXUGfek28g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-num-significand-bits@0.0.2': + resolution: {integrity: sha512-qml2Wmm1/gHOGmEfrR1w5G2wYsBHKfCLBaJ8idZ4IMcBfmR8Ez4I9K3uQ3EZ6mW8QU2nUIgp0Fc99lnzLoH+7A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-sign-mask@0.1.1': + resolution: {integrity: sha512-LpLyCmkhzwotXb1mAAkAZ4sTk5lh5lW3Q1pOp6jtepEFT/marQsoeTe+0r0mIwSncGbym/eEB455qUZQsdiTBg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-significand-mask@0.1.1': + resolution: {integrity: sha512-+IA0fHkBV7X00ZTqAo0ZZSSuh9fjLGB8+4ot8iR0irC0YxPLkvyPzFHujnWFu8UD1Eu3SZcyaCY20CLcgsGr9Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float16-smallest-normal@0.2.3': + resolution: {integrity: sha512-u/EzlthAeRba4TePLQzTyivIAp4GB9jLdOwE9FdxSYmqUwAbEIODkd7vft1ArzuCILRHM4NNNESJeaLlv9Qd7w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-abs-mask@0.2.3': + resolution: {integrity: sha512-owGGn8KvmHmne0u5ItTvOpHL6lUJP+tuUe2wzrKYiZuoUTg+7cOhNW4fPWCK8AFYxs11Ha3qPA7oAzjqlq+Log==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-eps@0.2.3': + resolution: {integrity: sha512-yJY7ipPOriceMh2zQvNVDYRrBJlQoBN+7cejox5DxTTn5zytyJn9sfdBQs2buGBqT7BiV+RJE7iE1vQdhuslcQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-exponent-bias@0.2.3': + resolution: {integrity: sha512-AdJFdh75o8cBwT/zjRebtZGGz0lYY2P/ITKrxHo4snqinm+DoMFRChkYM2s0QYn8ZgFBHQ1iEPB0cYzxTLk3tg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-exponent-mask@0.2.3': + resolution: {integrity: sha512-mkSAIakaixXJy45Ss8G7QbrS6eQemGjfIZhwmwlWDHxCJEVcfpuIijO/N0gtlF/MnGSOACwgn3Qkt1t3Eg30IQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-max@0.2.3': + resolution: {integrity: sha512-b+G9qRNbN4/Ke1BKK3fP7+nWahbWJhcCpbieaiAsbdJyucx7oIaHyzcnNDSmPYhVP57iGEqL9RzhVRd0u4+u4w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-ninf@0.2.3': + resolution: {integrity: sha512-X0t2gw6UKfzDRRjYH8k8dqRv2C6iI2sn3UrunRIzCL4WYYR+QWn1UwjZWG4fviIE+QuEGTyoKKb4wG6gTiS8yw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-num-significand-bits@0.1.1': + resolution: {integrity: sha512-pb5IMIdVb22DP6yJc1PmsqTc3mmn02ze4P1oE5aZY/0v4bPUf9yegUmYIyCEWPfM1HX/xnW4GwXDZ3QptSgLqg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-pinf@0.2.3': + resolution: {integrity: sha512-ofzg0/NDAjALtXw0GPGzsfwpTEziENlSNln2PqoPphno6u7yfCD7BWblIinvDALFwbpsUVWuxAvarL8XnXl4mA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-sign-mask@0.2.3': + resolution: {integrity: sha512-CdGdK5nHesLEkS6TeQ/jdl3iThAZYrNCysRVshkpz15ORgvbFyHiXaYFIGkwt0a5RnA4i11e3nioHBNWxITGxQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-significand-mask@0.2.4': + resolution: {integrity: sha512-6oBi94bfEEqEPHyzgS3YNBK0fjCRsh/8A6xyaPuHBP+ltGmGfNsZmsZ5vQ+vChszKVyJG1/Bd/j4wif7GGJ/3A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float32-smallest-normal@0.2.3': + resolution: {integrity: sha512-NHUPJr9+Bwcr0lMZ2goX7T5jWpel9AQcv4fZfnlabQ3HSYDkAhLBmoCUJh2jxjItR4SbWXzpIEKL3RNDeiKEeQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-e@0.2.3': + resolution: {integrity: sha512-8nQCMqyeLPdNN2Kzc+tSeoksZbvyfRpqUgB2xCujfWIxdsPKvAXclWpMQ0EZuk19MBpNPSOEbiXbUiAIrk1Ksg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-eps@0.2.3': + resolution: {integrity: sha512-TB4+YU9vc9RwMmSrCt9+UuFeXp+a29Q1KrzcBTcxU8uB/2totg6yYAFwhs8+48Vr5T/bQOsTQpuxXA5KEaThrg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-eulergamma@0.2.3': + resolution: {integrity: sha512-8scw10W2H/rgE2gSmW3Ubp310dsxW0UGppUoDcm5aJNOu/KgCUMqStoPLU653f5AbPZ//hSBpRh2+Nv31WCieg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-exponent-bias@0.2.3': + resolution: {integrity: sha512-GjhdDNlHP96WooqvgEvsCPcK64ZsfpU6DlAsjRMJAPuh/QJ+Ut4WC7vMxuLp/Qio/N3AEsRvCOWIqa5jTvEWUw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-fourth-pi@0.2.3': + resolution: {integrity: sha512-Ib/W5K0Pf/sDLjnGclxigJkGQJ/1Jtb+id4kuyRrf1qrlQwiP7tZq60prd+czL14r+1r2y3MYE/7ow4Fc1chUA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-gamma-lanczos-g@0.2.3': + resolution: {integrity: sha512-bAC0FhhxMDeU6UsCGsAzVZXjnJOc65StXINkvIzhKTw8SjrlQGifNNcanOVtrwKMnpq13MLsVcG+m0R7BmiUZA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-half-ln-two@0.2.3': + resolution: {integrity: sha512-5FcB6dmhWYNSvCRIukJ3fdd5kNH2eTbpgKo1pYqksp3dwMD6GKR3i/832maewutCvcT72Baj95Si1bqX037AXQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-half-pi@0.2.3': + resolution: {integrity: sha512-JBDU7c03I5H0kvmOM0ZyxwVxK6kZTLogYSXAS8ho3jkHU8P+DFHXxn6X9DhGKKlTaCTHCAEYQ7zSmV8H886TMA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-high-word-abs-mask@0.2.3': + resolution: {integrity: sha512-AXa286EisR1y71U71M18QvzldmIWsh1TNimoBjrUdCQn5jELOJAQPriTKt0H8kngfOUYfy/+EJwCpuQEL/VWrg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-high-word-exponent-mask@0.2.3': + resolution: {integrity: sha512-/q5YMZwugOvQGCXp2kusJY04/KHDzAKMv/QEFBB98fDhN6Ux2VWbVyBESJzn55zVGQvb9XhULwkBy/KdB6YuqQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-high-word-sign-mask@0.2.1': + resolution: {integrity: sha512-Fep/Ccgvz5i9d5k96zJsDjgXGno8HJfmH7wihLmziFmA2z9t7NSacH4/BH4rPJ5yXFHLkacNLDxaF1gO1XpcLA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-high-word-significand-mask@0.2.3': + resolution: {integrity: sha512-SGQfHBnS71PFGQt7Tv6ptAHStJy0sTXmUEjOOXoJlnlClizsgdHXwkeho4xIvycxyNe7L4nT34cFPDMRFguT7w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-ln-sqrt-two-pi@0.2.3': + resolution: {integrity: sha512-+VE4Z3OoPmyVzYJ7mbQUkKdkT7+uHeSG821U0hZLtUQAD2AmPWQNUzKk+G6IF8FUQv03Ly6U4lLL9aoXxXjz0A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-ln-two@0.2.3': + resolution: {integrity: sha512-pCNVc7Cmr56sg+jOrN2yLSWNHdN0UECAZIJ79sDaLBpF2FqeL6EI52EJesLmD64oGSNUC4yZNdGBe+DpKc1ZXw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max-base10-exponent@0.2.3': + resolution: {integrity: sha512-hM5h/ZFk/XM9bpb5NZcpsRcVQLL5PRdXveVise/FS6NbKEkOvvFqZ0FBXeAYkA1mvnGSPE90gKFvF32/3kv83A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max-base2-exponent-subnormal@0.2.1': + resolution: {integrity: sha512-D1wBNn54Hu2pK6P/yBz0FtPBI3/7HdgK8igYjWDKWUKzC92R/6PHZ9q5NzedcGxoBs8MUk1zNpP0tZyYj9Y4YQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max-base2-exponent@0.2.3': + resolution: {integrity: sha512-DXOhw/QF63NCeB7o7zAgq2g6IeT7jGDT5kBoRP67qbOeHm+NpZdrFdHXo7acH+pwLJXf5iECnVdyQ/axDLQ5mQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max-ln@0.2.3': + resolution: {integrity: sha512-M/qzo1CWhgX84vCuF6Nba/Jf+doaQKxQHNXr3yXKL7BEatz7MWweEMaU2pxfKWa5wADMDvLttskYm5jLWnkiNg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max-nth-factorial@0.1.1': + resolution: {integrity: sha512-krwhCczEOQQDllianEG3LMR7m887BBMZV/udK1/0bYhXJPA2joOEp3RNz3F+IOMJZgPwMnK/x5P66Yp44jeydg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max-safe-integer@0.2.3': + resolution: {integrity: sha512-T1CHYahzAHGLEIS5NMiHjOkGzvgZ0KFtBvFB62shkfMbnkc2gHxVuUzmbxaIm8jQO9X4qafQkRpHFg8AE/e4kg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-max@0.2.3': + resolution: {integrity: sha512-UiN+AZ8FuWCq0vXjTYRzQVpMA5Dnx5lBGaYP46/XiT9DY5v4I4ooJiSGcRpnMa/AcFvM+ZLVq/K/2c1VdL8h3g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-min-base10-exponent-subnormal@0.2.1': + resolution: {integrity: sha512-AghpVQcTuhPiLE1IAk+e8HNU+wce/132Sg3MsL60CQaRVnG8X/VdivzEJGt2Nw9uH5rctvVINFrNnM0gxtmzJg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-min-base10-exponent@0.2.3': + resolution: {integrity: sha512-IECHt7a8dZloMWBzs8/05OC09K6Fi5J4rkNnayWVZbfHUHpls8bMqibcjgHPmebGWHCFkHcyKYCL73Sb0+Lang==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-min-base2-exponent-subnormal@0.2.1': + resolution: {integrity: sha512-fTXfvctXWj/48gK+gbRBrHuEHEKY4QOJoXSGp414Sz6vUxHusHJJ686p8ze3XqM7CY6fmL09ZgdGz/uhJl/7lw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-min-base2-exponent@0.2.3': + resolution: {integrity: sha512-N6Xh+ZCnSCMC+ImkgmYAPHFn4V+94pA5KM2ekhNUC3as1pZVJRkJVacogGnqJ9vnoAbZ0QgZpkJpap8Jy7Pldw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-min-ln@0.2.3': + resolution: {integrity: sha512-xiA2KS0yVt69fPehhEgl2glBJJrMLH/0q6eornMRkrZuG+o03wLKaqAqTcrkm2nhIMmhNXEVm+gQU0nfiI8Cmw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-ninf@0.2.3': + resolution: {integrity: sha512-1yBmgdNkvxWR0IfebDnhS4KOHPNgTpe3j6CCRt3qUW98l45tUkjuqyKKu8jNvjJCq+qKaNHNNk8xAl+/eDuABg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-num-high-word-significand-bits@0.1.1': + resolution: {integrity: sha512-qyZWHlGYIS6Hjxnt8TTBWlvkGQlFJT2UVQhaoBrQfp456YF8aghgiwHiaUTXzngMH1llcEq2tyPjCxBdTLs6Hg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-pi@0.2.3': + resolution: {integrity: sha512-1s/4TBYzAj+tOgi2yRX6Iecos8SUn968Vymsl8U7+5pDpJzicfBpB9ZIbWNVMQVkBRWFnMx/T3BUzW1+g/dEsA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-pinf@0.2.3': + resolution: {integrity: sha512-8kRy0XOvW7QiJlxdy8MXx7rM3S4H/ZsUI+q9dNoarKVDBtWzkqnEG/u5QYouVjGHaSVL8C7b7qwL1FdpSD+24g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-smallest-normal@0.2.3': + resolution: {integrity: sha512-z2IDWJD7s6QwrfzI5o4q3OnZ7mEzUIs1V1PdTuHDofyWkpFGEr7GgwGI/0cZbuhW3aY3xydvM3rZ5SxT+6KQoQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-smallest-subnormal@0.2.3': + resolution: {integrity: sha512-NcXOJRA9vuhWcPPvwQf+c86Oab8UtJ3P8Y2DwKt9eRzjRdFFMw73pDmYXEOHSwczn/mGaTHG4HxmVBTugh/ezw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-sqrt-eps@0.2.3': + resolution: {integrity: sha512-N6ga0XNLkDgrGCs1cgajXzTYFgl6gDrgWOJW3AQhZPaFEswTtD+yMmcw3p4ye1LZpU3JyDr8hcY2iwL8whX+nA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-sqrt-two-pi@0.2.3': + resolution: {integrity: sha512-XVCJ0voDf2U/MMqqnLOo9CB8IEC4odQoercGolrJBud6MXmWp1eVrRYM6y0ocJuyaAPgsYSoPKp0+Gc907InTQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-sqrt-two@0.2.3': + resolution: {integrity: sha512-vehmaN+P1IYJ6HhbH70ebhLAZOYnuTm1ezWpFBm/IEC9NGiKKmyrtO+z1xp6iWGl1VrAAhWJE+bBQEP4wVQsCw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-float64-two-pi@0.2.3': + resolution: {integrity: sha512-KoNeAgq+jSDT0lYYHAYosZJwRSH9VlykKjI7BK8TVox7z5QqlXG4Sa94NeGwP8qhp+g4N3Mb7BqXlol3t4vPfg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int16-max@0.2.3': + resolution: {integrity: sha512-mPHYy0jMD8ALGd5QDOAYU8mO57sbYsivYUVZq7+/mJDXldVprD+fUJFX8QOkuRW1LIsVSqHA1F4oGrnjFM+lVA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int16-min@0.2.3': + resolution: {integrity: sha512-FZrIJecQGw5qEYSrd4inQgx9xe5igDb+UmZZDKccv39xwWpPPfprt7Sr+zholUdcGGpoJdftBI9QbbLQRTOqcw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int32-max@0.3.1': + resolution: {integrity: sha512-ZAhWfNaBhVzDatkha1q0vu7tO6XRbP6kxJk/Erh4emgE/4JpC9WPlXfkZvhOoCWQ1Rsll7tevxN3rfu6oGN7OA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int32-min@0.2.3': + resolution: {integrity: sha512-xXa5t+tlRuwi+cHru4p8gFPnXqa2hI1bn+K6IoTd8Pj+ySKTkR0evSgNIrO6kcEf+kj2YuNXZZM3sqK33SH9vw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int8-max@0.2.3': + resolution: {integrity: sha512-TD5BzgiZshK/LD/3Ya4fp2mI0j/XGm+XH7TOWLjMWrH3JYbW/GIQfTTDsXTEu52Te0M64Xy5WBmvrXoObFkqSw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-int8-min@0.2.3': + resolution: {integrity: sha512-sD5yCZIujDG0DKLBSj+r3UzxQ04yTyQ4yT/umQrtTHMHAGmZnNZ0Jab8VmxBxfZUC2PAVc841hS/XKQglw5Fsg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-uint16-max@0.2.3': + resolution: {integrity: sha512-QLqt85JMBnL8ozliswgAeR9oWrsmWeaeWjr10P0zbGV1dKhM2HoRK3VXjO4SCtNWUwiV4w8Wa5ylSYdJhORDjA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-uint32-max@0.2.3': + resolution: {integrity: sha512-NYQIGMA3Z8+1gp2qUfmr90whvZJLDq737ipNeujrFm98/RcbBlCRmXCLlj0WMwxniw2T35ysfclAcFSE7caUCA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/constants-uint8-max@0.2.3': + resolution: {integrity: sha512-B4VzHho0T43dJk3m1x9V3GZ1OOK9AKNojo3jOweixBLLlofaEIe0E9f4Gihc2ef7+M4azYptsJdPY1jPy7kK2g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/error-tools-fmtprodmsg@0.2.3': + resolution: {integrity: sha512-mt4YRp52oCkNWhxkUIJkeGaFnSvZkyfl4rOJX8Drz99xFiIdanXcSacckhrXXu6NQvMDKidCGr6DvrhHHx15LQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/fs-exists@0.2.3': + resolution: {integrity: sha512-kfHok9sKxvCftgWriVtNjqezNZA72Q/rJh78lcrGCLPvSHGIAL460olzl7D1OgAgQvM3Cwdoupay0o3dBCCwVQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/fs-resolve-parent-path@0.2.3': + resolution: {integrity: sha512-bof7pQQewv8LLaSi2Ut77mkEv4v45Z/w/hYocG0UUzmXhu4lXIiCcXz9ZAMJC4tdN5hwBReJGfJ0mQryddhGGA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/function-ctor@0.2.3': + resolution: {integrity: sha512-/Ny143oEz3YAwauaPZ+J9A3IGFdE+0dam5/ATJPGLcl2nDj8P2shAsMp30coyEyzKDoMZqYSKTFFTV5rxyChAA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-even@0.2.5': + resolution: {integrity: sha512-EtCGbIAnrhgYpCrCrYNQC6aqOPviTdU2Ui1t9grPG2e1eE8cMjzSpTg1TJmcZeMShzlWl9BcgeCS2GQPaYhkCQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-finite@0.2.3': + resolution: {integrity: sha512-PqqxkiubjHe9jdIfAf/PTHZLbYIk1wcFwPGALM+PR3kjRngEkti7NbbkTQX3sByZCCfRwOf7VxLPWDlGo3EmLw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-finitef@0.2.3': + resolution: {integrity: sha512-FiP4w+PjwD6zapXgrD0hLEtnUMi+uCcBQw+tU9cAGyB+7NrhnUoKSWgHsjtLGLMD08gWsFOIjZzZRavx4PocfA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-infinite@0.2.3': + resolution: {integrity: sha512-tWQoN9z7j56DIop5cBnbdkP/o1MGQ0K8bX4v6Nxsgqngk7YBXYlxGRVw+46FVyxNButJY20VwxpMhrv4fQg35g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-integer@0.2.7': + resolution: {integrity: sha512-rsxiM7N9Y5kd9elTEJpx1kAcHBeHETH46vn2s5FoKyNt7oZLqv9iE5oKF3oNznA3H47o7SNyQSdcJpUDqS1W3w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-nan@0.2.3': + resolution: {integrity: sha512-mj1p+JUSfbsiBI3+hwRV7bS0qgI2nWdzrFtBJUSLk+17MJSdA4aboUsXM12wIV1kg5JNfEAn+5eh4NF/sMvaoQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-nanf@0.2.3': + resolution: {integrity: sha512-sWMMFhTrkeYu/t5bv7KZ8Rm7H4pD+O1+wYYNu1CsJ4y1Q6HwSDeHBNIH7Z4zHOOSFiOidb04jnqMGSsL5UCFRg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-negative-zero@0.2.3': + resolution: {integrity: sha512-5XzTwloDrG60ZRd5vgbw/lXKn794s2q8Hb0pT2LUy0WG2j98LhAQNEv0f0a7brhHlGOMTX5Hmg1DZXw+ve2u5Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-odd@0.3.2': + resolution: {integrity: sha512-AVtda9LMQ7WgracZDygZzh7rBDys8KKn4qzAIVv2hWG3ns8X8btQ46plekP44iRyGjYagXMzLJn2jo/Irkf71Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-positive-integer@0.3.2': + resolution: {integrity: sha512-+FLU8JowmOzk2wiUI/PJzKXXPj2F2BFiNhJihpYv7mm3SCoSyCgRgPG3wzVmPieOY1T3TFBF0ITZy1eqQQCC1Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-assert-is-positive-zero@0.2.3': + resolution: {integrity: sha512-V+f8enSK2dEk2V/nHMezyJaUfSC0QJNUD8+mQYON7JtFaxq/+xURnPMllF9h84cFqQ9SAuxWXP+Y7MoE+ENORw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-napi-binary@0.3.3': + resolution: {integrity: sha512-rLBojVTK0GRhy5v0MEKLmamggOrosEMaDcMS5ITuUe6Jgz4DM3lsiB/EHhd0TamPdqo+5HPjqSo10zpFVbLZbA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-napi-ternary@0.3.2': + resolution: {integrity: sha512-DUu7zbd692l86VnUaav4dgIVIkYnxklDMMKpmGT+mi30QH959324tjl3dsthYy5iySnKWg/V0z54opu0FC8jXA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-napi-unary@0.2.7': + resolution: {integrity: sha512-eEu0nAq8WzCGe15ppGJWtLGhKOoG4OcMJQpsfbjwaa3sZ9h1sREmV1iiAFWyi/mHy8C0y6PiG2szx4D/F0ywmg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-abs@0.2.3': + resolution: {integrity: sha512-0n2Jb1NQv/siPL5EJFf6/cCuK63zqgqFjQwPujJI8B+dDizlHJKF4jR6yOtavrB5RvVf37/3Ibpdjf8UPf3uzA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-absf@0.2.3': + resolution: {integrity: sha512-lUEEnIo6jpR397bn4mphlihPBMncdgKYQQYZ8nwnL/wGNE9InwqLqrO6otM+CO2nkG/kOyt0dSAhSSffqBZU6g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-acos@0.2.4': + resolution: {integrity: sha512-lidI9Q1No+jYM7glXFXMPzxQKwrzqV/QuAp4hVDmidDTL1d6NW0jPBAiaRL7RLcqXqd8oYVirTrQIga8RhMatQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-asin@0.2.4': + resolution: {integrity: sha512-HM/x7n25umG0plZrAil2wq21m6+9rA9TDTXErYXAv27HEM5NZGCZn9i+kpTog5/IDSdM58OkTsEB5FOfaBCjuw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-beta@0.3.1': + resolution: {integrity: sha512-DabfQZifUcNF529IYtj/9A5oAmZD6g4JhQt1drx8sMMLUJ89r8TZLIyMZU/bgp4cpzSkRGRSPjfXWL/98y5Y7w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-betainc@0.2.3': + resolution: {integrity: sha512-yTGYcCptTWVFxL9hv4Uc221kb7tULU5JkRp5oklPhZmg2uj/eRIvaGYtYvzuTnEU2HpdgWcTVwdDaWsG68F6NQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-binomcoef@0.3.1': + resolution: {integrity: sha512-ywcno89Y7ntRdj3NdAVfVzYoIrJb5lILhq+K+NqhgrJBOcrE8ZF+/yPhyVwjUvksfGy990tBnyhx+06VLVFAQg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-ceil@0.2.3': + resolution: {integrity: sha512-QJsGAxftN8RLjDkqKqyOcWh8tGFauyXMvqLxoq4C22tm+1ABJ+1rU5wEATOgvOHaDVc7HvHA7fakHTB0UsDUyw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-copysign@0.2.3': + resolution: {integrity: sha512-kOPVuWHQht53FcFXO4L1yqXSZy4emdI6qITJAWRENDuW9YZ6QRTONBqOaDC5uU/dRZg3LcMUpQ7iuqYqa/pbeQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-cos@0.3.1': + resolution: {integrity: sha512-efthz58G0wf8rXh4+jbYeRuRCagNlYb8AL3es1GxwV9P9/8ZpKAlkQiRPY3AI3ZJMB17aR/KHpVw7Pz+rw4Fhg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-erfc@0.2.5': + resolution: {integrity: sha512-qA2iPLKr8SjYpI9TCT7LoQCbUrbx17kmiRidDewWk/aHL0pcpSm8KITCjBUtsmletSEUNUS+8MyAPqisXT3N1g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-erfcinv@0.2.4': + resolution: {integrity: sha512-oF/3UXs2zZFAOKe19rRcWg2SFZFHQbnFJ4ucbSzYykM79pDnvVtSP/dRPtDy3uevUix6BzeloFyK0dLbQsYt+w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-exp@0.2.5': + resolution: {integrity: sha512-1xZWUc+uDQHRD/mHJMsAjenRq7w6ZZqAUc8Jtxwcd5Ccv23CckP0TvDNkC6RqVWWPJploxoxDArQ+BUXgHbpeA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-expm1@0.2.4': + resolution: {integrity: sha512-/2HSORRdM0vAdiEEILreYV8cKtnUfW2OrxKLc5dbkCMHe895gURlrpTA507lF3x02uAnHh8PiasMsYTOXcGeCA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-factorial@0.3.2': + resolution: {integrity: sha512-YOqPZBtZPP+Pa6jQn/IY0JjGx1sShxQ27XYbpgupg9yZCvabLzhHg+J6/mnjqf4eti6UcVtCITFUZOZ671GyOQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-floor@0.2.4': + resolution: {integrity: sha512-YSDt9gHSp8SeVBVzHfpZZ1HFEQDPihHUF92zTDCRGKeKBC4BTFlw9Q4/fNWqS1mtuBGli1zgpRbiTv3atQ5EjQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-fmod@0.1.1': + resolution: {integrity: sha512-pW0Jn1S9D8Eh34tEmEJUzZlkfN2nhOmi0dCO8xDWhgdit3+qG/U85t0bULT+/5kRezy8SspnTFkGOoopHztzQQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gamma-delta-ratio@0.3.1': + resolution: {integrity: sha512-Tekp7Flw36nZPZ8fQilkPRiGyMbYyzWjRV/HZWuBaqqDWE3+J2W68qflGFCad0M6qkWDxLV65TJ9E8yJiTYxAQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled@0.2.2': + resolution: {integrity: sha512-P8exugMuGijA+9FzG1krmfPIHWqRolFm9xws+H1OGTw9lq6c+sPAny/1KNLo/QbL/UaKrjhbeUDVHOjN3wj2Hw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gamma-lanczos-sum@0.3.2': + resolution: {integrity: sha512-wIH23KUPBKhu0nCraZ3aY882ICDtLIDxeiiBY4F1hNeBBrMeODcCWJc3+jwXvzjigBXPRFHWJqjOyL57FyoGBQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gamma1pm1@0.3.1': + resolution: {integrity: sha512-cZ6m+qn350Hi6nBXoqH/4WLRInDRJ4cZLVgfzuP/49waT9iOGX+kszKAVnMjvp4AYe96ZEBJ1DwUcMYDrX3S1A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gamma@0.3.1': + resolution: {integrity: sha512-WONtgh00BdeBbgvhjjmn4kviBXb2ybFa4IDOhknxvKS3m8mIVJU59tzLHVa9XiGcomq1H7Mm6CeGPmjmkD+Rpw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gammainc@0.3.1': + resolution: {integrity: sha512-w9R2wnk+5gvZaWiPsnlpZVELYvQ+6ZccgBY2JmRmwBLbvj5t/u8M0jC7MM3CaMCIt5jBmocCD4kCtconzx4WuQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gammaincinv@0.2.3': + resolution: {integrity: sha512-eH3TCXZdH4WvtgKc+jI3ATeaYq87eKcActfSpV0ZZE6Otc326vmNzhv7dXnjVxgSY81bKgKeBzfaTW/fGyXT7w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gammaln@0.3.1': + resolution: {integrity: sha512-ptzVz18xkfxzgekgAbk6ytMoDc7MYAUY4xZuAW/SyFGO6sCPVbwU4GH1/1IQAGLrDKYizKeVoTsO5NGK5Zpvyw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-gcd@0.3.2': + resolution: {integrity: sha512-eQKqRFOlHGw5Ce4mo91uilqywONEp/7L4d/bDEUqL1sRj3bTAIZeCa6ap7wl8vnMXCHLGI0ve7xp6wxVHo4Bdg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-kernel-betainc@0.2.3': + resolution: {integrity: sha512-ho7hVn2GAnHsoj+SKJxrgo5rvftmIinE2H2J9/NWXYU6ubjQJ1EmJAzZ6fMSED++lK+eARS1kUl8hUeKRuIbDQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-kernel-betaincinv@0.2.3': + resolution: {integrity: sha512-k93/sg4xC/eIsUUw1OD3Rwb8Y2Bl5moTMuOoKeSo5aogqpP6mFwSKOkoW9VS4iAHFUHkjPLgpaN7eRStm1/Deg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-kernel-cos@0.2.4': + resolution: {integrity: sha512-DFaoDJCFhPXiOuiGPSU1tmlUQ2UzRWMMB7lKKARjUoxbFpNLwB1TAqAnlx/rguQcCMf7uSZYALpTfxYlJHDPyg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-kernel-sin@0.2.4': + resolution: {integrity: sha512-mMXh47MXZd4gB45747Y+6Z5G4oQW0Uaqo5sx+HmJ7JPol/Sp3B6JSqahT+OtAf7oZVBAJ7qWmNlmib6IiueosQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-ldexp@0.2.5': + resolution: {integrity: sha512-ZbuCayeY8zsmptOxDsTnDmRGmEt10wjOXOdsKTCNGZwLP7h7e0ImTRbJ8wpKiLWv8JKef/xE+rp61wQrjZHS3A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-ln@0.2.5': + resolution: {integrity: sha512-ki+/tyoi767DsNyaw95O5NDMt1MbmRp5PI5ZfZo11AE6yUDKeS1H5cm3N3SE2GdwtuKyT3ZBc5/d8MtWzTPObA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-log1p@0.2.4': + resolution: {integrity: sha512-x7YYsmM3NqfcZlDwZ4x88e5MtkXHTtUAroPhuDgDk2Ez9J/ZWQY4/t3RHb+wwEYtZU1WG4PQ7VMDlHOJUvEhBQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-log1pmx@0.2.4': + resolution: {integrity: sha512-CrF4ucxzA1hkR4zSHaXWZGhfFuHS9A80nZP8cvIBvrtU8Dl21fHqCegOSSZBNvzL7WPssCXNzgkfdf5GUGvwlw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-max@0.3.1': + resolution: {integrity: sha512-TV4GK3gt5BCy4se6Rn59zSbcL2EQBYynJ4g15KeniZWrQbvpm7WdjdJRJk/Ly78ESAoM6Qd2KEaP/bTGukGTqA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-maxabs@0.3.1': + resolution: {integrity: sha512-nvlh0Pkwrmh3E6Nva+o0dbAksJ7BErsp9v3Q783TGNlwsRNovOc8FmrkqvmuDhWkSoUUuYtefYyxz1HZ+CzvDg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-min@0.2.4': + resolution: {integrity: sha512-RjwMYI+CqdD8Pg41RBsvv0g50nl3d2a5SJBXDcjzHIs0Lj4+qdOXSYQYbn2IQH0dVCNlZrBwaGX3L8O9tu5umQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-minabs@0.2.4': + resolution: {integrity: sha512-aRQBXaoSBj026u90ZTreKa88GAF8SWSqm2WD43v22TFJVJ0qhjtSmQXRLs+tD2ug7LDUHa8Bf1Ui2DYuVw41uQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-pow@0.3.1': + resolution: {integrity: sha512-8i5zbz0KfhnNeACMsT+94/iv1/zCNj5JurXvrNHfLg3eLwvKIvwI28G+anpaqGZdPX3aJq66M5+dKDMSWvUvyw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-powm1@0.3.2': + resolution: {integrity: sha512-GwjXuzaKy4uO+DDFirt1HIKlvL5359ssx4AgMhYuPnwcHvq+B8NSo8gld/jgcshTXelzkSHvupOcgZrBO8gZVQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-rempio2@0.3.1': + resolution: {integrity: sha512-tHqU2T0ewJKOUhlAqV5hc1iQzPC2KoBn88ahOBndQqfJUKUG0vg/sDPfi6LF35RVo+yW03pDMzeZlAmCi4bSzg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-round@0.3.1': + resolution: {integrity: sha512-YoFhBJb0J21QLG1sEHoC8Pxnb+eMfu+pAeT40jF1vlC6p18MFEDVgcX/iBpJg52jPal7CHJF86X6XxlbJCh3Yg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-roundn@0.2.3': + resolution: {integrity: sha512-u3G0ZUNJJzG8BFHmy+YhJpBFklTzF7I+Jz502bhv84GBjfwaaFOaJP1/RADmjcZsWU+ZuH/5G/kmFSwMFtKc8A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-signum@0.2.3': + resolution: {integrity: sha512-a4Ar0QsFqsie6dOAvJQyb7OWpIZKIbaa6EVn/ZF+B/CPfczQvqrv7UujeH5tfwZYOXqFbKXAOXv//nQm8/4yHQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-sin@0.3.1': + resolution: {integrity: sha512-t1mU2N6muFdXaafeYtxB3NQ9udxzL7gwFtKyph+GaMWJKLg1EAZ9G31StMFh5dqxmY0IjHLdkDUhwwh3pXxgPQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-sinpi@0.3.1': + resolution: {integrity: sha512-IHBiUy9KmG0pR6nqCaVktw/7j0IestUk6gIqMIQtQSyC11sgByhNJFKEBbIwqLgPGnLJ10B8Y3iN5jgBC7lRpQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-sqrt@0.2.3': + resolution: {integrity: sha512-Pdgq9Imx4lxsmM4jouu4b2ynB1osgrKLkJtdsaNUjrA3kTxc16FALkAJVEdKA9/7FxEFLji9CvJ0VBOWXzoyTQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-special-trunc@0.2.3': + resolution: {integrity: sha512-ga3rqr82G7Q3eqpF/aFR4v2Bj3meKhbuWRiEWrJwWARTqQa0e8aWTI7p9qYeQ0mFsKVoXH21oESjAHuJ1WfsQg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-tools-continued-fraction@0.2.3': + resolution: {integrity: sha512-EyzelNGzuL7wFfzbpuDFbf7//a3Z9iSRtIEbVbulduXQ8uYbB3YGMbbuKES2nG+WBeawpKFAgMDTC6siPdo1Vw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-tools-evalpoly@0.2.3': + resolution: {integrity: sha512-SJFnTcVUeDqVp+wJIZe9yj6Ddxn7kaf+aCepbmnxqdJLtvOtCsEyvOYX5q26x6Ik/JJULTNiOMQqWm2VInNAzQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/math-base-tools-sum-series@0.2.3': + resolution: {integrity: sha512-2Tc5fjKCXizXLb266n+AxNu0tTXau3DLd2lVPDhyBSqXoCqT0N/PZBmxWujaRuTpr7WxmEMzoMTxegwz487oaA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-argv-bool@0.1.1': + resolution: {integrity: sha512-xW+BJ8wYeJAs3GPhu8SdlZur9WgzfKwFESJR8gzsaKkUy9+1POMs3jZA++I+Ote7CNY0AmFgC3/5v+qLNcb+Xw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-argv-double@0.2.2': + resolution: {integrity: sha512-QJrnt4CTS8x7WHny4s8eHvGT2u5x8BSH6RWVaPg6ZrnHwqz9Jz48JGTawFKLgcyvZyeE9kCwKDkPIN7MbXcHKQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-argv-float64array@0.2.3': + resolution: {integrity: sha512-0uZaYZC/sV6UN/rDNJxQVn5U4CsdjPGztT2c0D7i0bPPwLscv4THKyLge6x41acHx1kjPuEvq03l+Wg94/DL+A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-argv-float@0.2.3': + resolution: {integrity: sha512-2hNFgenY7M5iVfIbRw+xccutxtKfk89VQb1RMGbSAOrRcR53J5OENAaddohrCp1zT1FKe14LCG/k+LlZR5jEdA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-argv-int32@0.2.3': + resolution: {integrity: sha512-Set5AdSIUePU/Y0gT+WC4lerzahwaAQJd1USCgnKQD55xmDfXAPMyJliZnZPNUyjQ6SsWN6PaiOfJluq+oVcVQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-argv@0.2.3': + resolution: {integrity: sha512-JQe8cqcCmxVhAMZ6z7Ysx0hmY8DtIGEXcM7Ymmjxl5VNaVXq/grw3HEQm5Fcb+TdqJIb7xEbsRHCiowRzvk0Pg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-create-double@0.0.3': + resolution: {integrity: sha512-6JcSG40t8HQGOgRaaxpxMWKrkqqZbSnUIKi9qx8R4g1gWWzbP5/aRMmMcLpanmXP61PjryfpnjhtUC27WMFNfQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-create-int32@0.0.3': + resolution: {integrity: sha512-tIT9BWA3jmOjzz4XTwVplkKETI3dyTK4BZoMtbQGnTxfsHz+pNdgepbp8hEx7wJADHKO2L8YTqddTHij4H3Ptw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/napi-export@0.3.1': + resolution: {integrity: sha512-JQaR2FYyIGprLgjg02JwgGGbjaYgRsWJpF72T748AiUQMd8SEN/mjUkqPq4zYLRjYATpKxnDUQNvP642z9JnIg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-ctor@0.2.3': + resolution: {integrity: sha512-T4xeLGny/gBRe4ZJcS5ugluT8E7Y/LCEHycTQingYWqbBK+5XJED7zJrcawkneewXd7CgqypCtVuI0BOxBBzcQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float16-base-to-float32@0.1.2': + resolution: {integrity: sha512-OClMQYz6GJEiSxrzhNp2LK4K8j75Rq6HCk+ReRBNQjXYdvNfzzaYoqnv3ZSzrXdvqUoGz+19XaVTLLzkKT1GCg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float16-base-to-float64@0.1.2': + resolution: {integrity: sha512-1MNdMfThDFEIMeJHKmum343x9sbiRplRmsjEHojVGyMQNuxOamzbzw+Gw3xl04GrfOIUG673KZEljwUwDFgtUA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float16-ctor@0.1.2': + resolution: {integrity: sha512-bdBhgwgtRClxBU9Ef8puY/WQ+DMqUr0oXfkfCrYKUATmqVQghv3bDw/dMggz01AguJo2ZtdjGp3PjQwNZlmHcg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float32-base-exponent@0.2.4': + resolution: {integrity: sha512-JUuSZCPD6yWA2jJhtS5MIYSZGerJJCXfwStz0Mqsh76x166mSkiZ4dH3VpDz2OMrZk6rvt35UB2HhAZecTqFAw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float32-base-to-float16@0.1.1': + resolution: {integrity: sha512-phYWBtfheX0c/pXtbiK/xr6lVwU5HKYVNgmol8y0HE8NvwXG3oCXLySa2p0jr+Xi7G9xtMdXW4Eq0rShs4lTmQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float32-base-to-word@0.2.3': + resolution: {integrity: sha512-E42KOQ+jqVDElwvFtrDMEkXYl03btIPan3g/YAScCibfmYDkYRDT9iuaydyYS/O3+m/MPM1Jhn+U/B8+f+C1HQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-assert-is-same-value@0.2.2': + resolution: {integrity: sha512-kE5uKSaMeE/V/zJf3B1jd1OOZ4biwXOp3hPuaOYm4s9J53Kq+53Hbq0wLLAVta/KZ1cbTp72nOjdufiMefyABQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-exponent@0.2.3': + resolution: {integrity: sha512-KRicBsOMrVCIB2veebT+mPpTrxyXCP6eknJTs8A59E/ATU2/gKYbMKzkdEX/FzxSBcdw5thvuuqmmwJKGZYSkA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-from-words@0.2.3': + resolution: {integrity: sha512-7v0bOW1AjsoWqkiVFqljLxCWmGA+iZ3OA/NwuIFBsYOEOpZqMIevu6TkJkWYaP6YYUJUrSG0w6t7b1P9JuzBgw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-get-high-word@0.2.3': + resolution: {integrity: sha512-yyJJR8+8BK88ldB5rM3GaM6S7vfUXZ3ib2VPse7Jb/ecd9r9gE6ojJv9v7N/M4STmKVrWWcggFEHzAVe/KMhrQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-get-low-word@0.2.3': + resolution: {integrity: sha512-e2OcnZ8wAYU5w/sFXY5d8bOFyjWYHW4UxdxLUsf24nVKyBPvS2Rhib8NbOETPeT8WYqFN6yrL2L4VlXO3Mz6ig==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-normalize@0.2.4': + resolution: {integrity: sha512-WVtJYkAt1zZXRlcjmbGEYVlZUd6dpSsOKACmVLEWyI9kMlegRAwibAKGMRtAcuYFSOyRVONwJbYar35McmabHg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-set-high-word@0.2.3': + resolution: {integrity: sha512-tWyEAJlbINvxcGMK5wgOlfFcZP9ILpqdBWLrc9HCpbUul41pmWEZi7+zI7dwe5zWIlACzguykdY0cEe7raceIw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-set-low-word@0.2.3': + resolution: {integrity: sha512-lmZvzkVlPqM+viBpmI0lBzArRb2+ifBMhuZ/Rtla+O91bcXgBtx/+L4UuqofAfQ5PRRnCW82r3kzILEKsxSoaw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-to-float16@0.1.2': + resolution: {integrity: sha512-d+ZJYGoykrzI3H0GRCI3qqyjspgNcIvECQ4OjyC1qdy1haT3cgoj1rwWkJS9uFKD/QgWlFGMrcmRzf0MVj17zg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-to-float32@0.2.3': + resolution: {integrity: sha512-+Lu8vk1oLCxO8RaRzw8pEY+BP2TWROweNFiML0w7TP4i9ZyG5E6EJdxZ2J3c29LVPfsf+oLOOxyySHH2kjwIsw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-float64-base-to-words@0.2.3': + resolution: {integrity: sha512-G63YuysfTKRP3Tkn19zBxTseS+uYnnOYZSN9VRTWrx5iNE8IYDzanAJIolSBZ7PuFMoE+HmjEZ0E9SX3NsLKvg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/number-uint32-base-to-int32@0.2.3': + resolution: {integrity: sha512-C6jGEzdnoiy9Er7mTwWO34r+6DVPRRVKRGVtxSQW3yAiQOnLS1ZvimqvgZtl0PYu1OnE02ReegpOMkpqSGO3vQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/object-ctor@0.2.2': + resolution: {integrity: sha512-3zkUkzZ9LdX+J5fEyU/D7I2c+0qG+ejNI3tCtSFek35bezdqWs9tOAAUiU6HeQJcGgqOmkakB4apIxvN+eehCA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/os-byte-order@0.2.3': + resolution: {integrity: sha512-QU4JY7WN4inoLVz+ML92TOevgyxZa+d2RcA1EmaDC0y0TNrXez1GmIn1t7+L7UTJEdf39IUm6VfdMmYdcDwFTw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/os-float-word-order@0.2.3': + resolution: {integrity: sha512-5dLZBCNn9Fge3kq7uHIh7S1qshfe5L7pjLYLSUGxxKa7gecAbsaQBPLxDkFiFwMytr6tnGGjWQfyVbhq/+RjlQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/process-cwd@0.2.3': + resolution: {integrity: sha512-T/sYVJjs9iHAOK9B8yGymGY+59eAz20G7eL/G4cObT6sWssAF7s/2+KgzAvWB0maE9qX6qnP4zBg2msCsWwvVg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/regexp-extended-length-path@0.2.3': + resolution: {integrity: sha512-3HYXiSzBpKz4nSOCtrYtMw9/OXN4EmTvq0owXv6HMvvDweFskieBcdNlVcOl0ViezjvUuvUL0DHJHdGp6SQEIw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/regexp-function-name@0.2.3': + resolution: {integrity: sha512-ER1C2rUW5Kzu5w4W0gbrJdIj5STNO5RfNy4GeiqycezeiXT99G393QeN4irqcOItYkeZhwbpY2ZzwlLxQvod1A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-anova1@0.2.3': + resolution: {integrity: sha512-UuDnctJuggfwuFmFJS0XGVN8x9S+lXCov7CvqkBaCThJH0k8iqOD7aLKR1L7qP9O+jSxuyNkk9CYtLqQ0J2rxA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-chisquare-cdf@0.3.1': + resolution: {integrity: sha512-j0X9V9FO0kwpdmhaa38+JuEjkHws1b3SWJUGuCx9C/eUdTY4soi9EwjdXheDRu0ww9qRhrECpXobHUiLJEdnTw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-degenerate-cdf@0.3.1': + resolution: {integrity: sha512-i6qu8JegKFJ/xJcnJH4x+wMTxKbHtMG2bOVjdFswxt5MHGEob0bmpZMCPaUQ99KDXx1ntntbAzqURt8Bwhi12g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-f-cdf@0.2.3': + resolution: {integrity: sha512-wl74kdmaGjUlFkb2VI5ml/VyZsUB89EkHJi+tTvr281MyM9D0JYd0xaDKai7OnJ4R3S5YhFueQ2hkAjnIDwEkg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-gamma-cdf@0.3.1': + resolution: {integrity: sha512-L+S2aLWixmdF+hHDt+R72yduF+jvDljTU1tpcevBD1CxMNuGliShgsbU9/w10odi30SW1HtaS9cRA99kWJmm/A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-normal-cdf@0.3.1': + resolution: {integrity: sha512-a4xGRE5ZKaB1J9wGEXu7gforIA9mGkR3BqlHPaaUuasDBdYxsI6NH7mZr/zeWaT4c176iiZzJjYMPWUAdV4aFQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-signrank-cdf@0.2.3': + resolution: {integrity: sha512-i6XUeuXXjCw9WIabx1wouBJ4RDxmkH85hYT3JrQWJwUxvDRUypYaI4V5abjeNYwlFByo2wiKhhjYe4nCXKg6hg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-t-cdf@0.2.3': + resolution: {integrity: sha512-Y6LUuwknLaewhjnJgMwcZuiD4adx1hzEkbnnrwlqh7Qz+CFyh1D5Ov7ZoyHkcs5djAZcOTaVbn8Ktc+EQ6A7mA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-base-dists-t-quantile@0.2.3': + resolution: {integrity: sha512-HT6cfDL8EKt7H5rpA5x4YHOfXNAOyxToijTBiQSEvHoGnRoULcc0RFm+KF3kI85HP55AVkg6/KIuukdpRICxUg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-incr-stdev@0.2.3': + resolution: {integrity: sha512-vjYynYt2/phYnn05EWQeVCXpssy+aE9rIeYpwNtiu24yR3BZ4scAYoxn/O6toG/hnmxAW/DZl4qAvhuTUq7hiQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-kruskal-test@0.2.3': + resolution: {integrity: sha512-T9fgDFwGS0R7BCCi9Gp+AKGX8F3vHWOw4zp24d35XlD35trl7eYtrg35kYxBD6khsmP0Fd3oioYCWbj+eYzJHw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-ranks@0.2.3': + resolution: {integrity: sha512-SoXELH42IHmW8gdpqLGnMt6PNCH3A9CqXcXojh5Ff/RGhZMrRTdQphTjNfqfNdwjmM8eqlI7SbOG93Alx7QoHg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-strided-mean@0.1.1': + resolution: {integrity: sha512-45UdxpAPbb3d+8obiaHOeUBie0GlB6J0xV+vMhkGR71AO5UaEPLxFnIRgx9dz1KLuThw8Ms/TQXTvXV3Z8YnvQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-strided-meanpn@0.1.1': + resolution: {integrity: sha512-Mu6bByEITlud9K/nrO7ICA0o5K+CP09GhWJoXS8BJWi2qmw/h/3O3RzBKkinKkUhoW9LVNSI+wmng4fU+rsXOQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-strided-variance@0.1.1': + resolution: {integrity: sha512-nrO5mvyRUV8Ta4Y4HsTGY8uQ97+e0QZyt+T6ASjqvqKe6B+KC1yBGXKAcxxa698Pyhx2eFHTrvpm39GGI7SQUQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-strided-variancepn@0.1.1': + resolution: {integrity: sha512-F2GPQSda5jxsZ0kZhYXLc/RJ4uMknWJqYx420/Ed5Du1NIDMLxy4mCleJxgJ/zVLS9t8AgAq/EOAx/QOY78l2g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-ttest2@0.2.3': + resolution: {integrity: sha512-CJIrZTDmyJi0TrscYO2qiE9M+rsWcKEa2a0nwh1e4VD6glJxO5q53t4y1Yr0D3OyI17ZMIhS7o1zJZnxD3mDVg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-ttest@0.2.3': + resolution: {integrity: sha512-sbwGkIvLNTi77qJ2fwscQH+wT7XGv5gM2MmE6HTJsDk4XTmhyPTlSsE4mbuGKz5UXlnVCrL2qAp5KaW+TlTHlg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/stats-wilcoxon@0.2.3': + resolution: {integrity: sha512-w0+WZ8TDbM9jW1ASnjDSYFHSO3xJZuGkr1ojt/DUufB0KMNjhrsoiQmljPN4QhKI4d/DRHU+ZR9MrxSBn123XQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/strided-base-reinterpret-boolean@0.0.3': + resolution: {integrity: sha512-co8rBbg9FYbz4X2ZGMMlt/+MpC4gq/JhxaSYMby2n92hvK57Ru62L35Kq1nngBHFb6hshhCRbnFXMyVzL6OYwQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/strided-base-reinterpret-complex128@0.2.3': + resolution: {integrity: sha512-7y/Phr1B+d2GBnyv9a0DQBwsZIvDstLXNuEfQ+Y9NOzl0NG7pQvzlTkm6MTtxIbsYoQO44GTpIHEK8ag/cpa/A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/strided-base-reinterpret-complex64@0.2.2': + resolution: {integrity: sha512-BgbLBqLqoc0GfdyHPI2xYuTOqQkAB2ivBw7rN35ev0J2GN0X9rnUtRKvl5V2H3WFqsvujieS6HwGZ+fmF2Tocg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/strided-base-reinterpret-complex@0.1.3': + resolution: {integrity: sha512-3mG3Uqyvvr1NXQ/EAg3Yy5V5VAWLBuZ4K3/cbaxXJTl4DL5r+Uh1Taus4pgy4j5Z2FVkK/4iqjpnRWx8sj0q6g==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/strided-base-stride2offset@0.1.1': + resolution: {integrity: sha512-c5GkXFQOKEbfWM3f8db1AyDCWswazdgTKJrIj7DZZJSBUUECmg5avHPJy0juFHn1Sp3JfzQUx6ViQXqm6VoarQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-format-interpolate@0.2.4': + resolution: {integrity: sha512-POG725+DPEmzEJbMFTFPdKM4vA5i+t7juNYs+H2cQz5JXiPV1+5+P3epnO+/DqHWzLhiMlsKDCZq03C3WcBkSA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-format-tokenize@0.2.4': + resolution: {integrity: sha512-qYHSmqFv7vloLFvjBAbZCn5qtxj7M+Qru3VqBooJTxWMcUeZOEBZg18/PFgfUrZhji5MVWDXbRTAx5Bu5M5nQA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-lowercase@0.4.1': + resolution: {integrity: sha512-3NcDy2j6HtvKrC2GRCt5mKiYaWWHLLSQRSbuu28WEzA98/2izmiHYkR0i9IeEd4Tqrxqof/FXP4gWj1f14RXTQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-repeat@0.2.3': + resolution: {integrity: sha512-Cd9shcpBgwM0MsYCcE3sLmtEhph1tQDK+JsfvMmUpdAOdR4fIVtbT7W+6LT/dSXxCqCsrdDypBY148lITzZ8zA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-base-replace@0.2.3': + resolution: {integrity: sha512-FJdh2GzIkgMlr0v/ZZKD5cWRs+SMOhBTWxAexmWoYFL3WL1YMDgwI5hRtYh/ySyOy94MjJmYwRMpIVdxeclrAw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-format@0.2.3': + resolution: {integrity: sha512-uE0LHUUnWKfxFeipyfb9yWbs+iczz6dHaolSGC1WBzMVyeHqx8xvq+yP3f2POYWgEcknmxNgU21WSqToSNrxdA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-repeat@0.2.3': + resolution: {integrity: sha512-6Bh4BCnldYilcc0uwX2CK3ujuBQNI9uoAPgEHVI012hTpsT610o5Zxcis3JLsDgG/IWG/Ig+vYnmIt989nn6Gw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/string-replace@0.2.3': + resolution: {integrity: sha512-CXJhl/L2TfRrkVUNVp8OfNsKeuUzOZXzJLUDoopHtQalbWBww1fDSDj1fwGpzgZV4IODs8LCsiIxLBnLRP6emg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/symbol-ctor@0.2.3': + resolution: {integrity: sha512-wnuFrxnmhg2p6QQP0B/j97LD5ys2d1bHuwVvh9yuUSCLoX/GankaVyGSufk2ROlsxrcm2HPhSDB/ILBHeUmamA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/symbol-iterator@0.2.3': + resolution: {integrity: sha512-HN609e5u8+O3VtiHbQeuGeKMgR1/bZ0E/qwObihTA5Yca5ATDJsTZOxY463JNU41x+6xlptO24l4OJE+t3IBAA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/symbol-to-primitive@0.1.2': + resolution: {integrity: sha512-//r52ighL35HprZrK5Pdiz1L27l47X9o+0LOJ84mTk5eB89i9shVRjOpHauKyx/uy9VkDoxUkMY0PwPrAIp4aw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/types@0.4.3': + resolution: {integrity: sha512-9GCqS2eni2VSwa5/CCniAJ4I1eWLtvior1z6hoPJp6VTNMgW9Lh4BiI84IO0xun/0qAclJ+mTGTiCTZxZLK13A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-constant-function@0.2.3': + resolution: {integrity: sha512-mQ6606O8JKq4tgL508it1ro7hx+RK6j36URSjbRI7Dje72YYpdQJGnN6UJ183Im5TT0fN2s4oOCM6+SAGcQi2w==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-constructor-name@0.2.3': + resolution: {integrity: sha512-/ApogDUIFxndcmnEeI6ctsqWt66c40g1T7R0nS9aOoYgnDOdmpUFSflzf++MDWksBycGsqgm1UD7IU54m4u7jg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-convert-path@0.2.3': + resolution: {integrity: sha512-fmqJ6Qvce0HV7D+uYrram/+iAHB3u2gMys9zeh0uc/h411sB8Hw9X7i1w2cJevCpouMzqTnpzp75C+swkoQlKA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-count-by@0.2.3': + resolution: {integrity: sha512-cK/P0JXJHFC8jrONRnedhSJhHTlvG641Ay5Q1kpjum+R2ryBkVcgxNAfpfrSaiLOTDKRmj9dFuNv1cXN1h2S4Q==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-define-nonenumerable-read-only-accessor@0.2.4': + resolution: {integrity: sha512-ZxHDIuA6d1Wr10Nkav5ejS53LS0eAwXV9IijQLQ/vD/rCRMNnLYT1hC2a0ZpDRc+lHQ0xsyHQvmYQJy9GBFkpg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-define-nonenumerable-read-only-property@0.2.3': + resolution: {integrity: sha512-W0rqnRsXgW3GjcwEcOMi0mI/CXn3TVqmFvcxItLUZPJNYmwrU6+t+9kGldhMw845DyOtv8uYASrnNoVE/VfiDw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-define-property@0.2.5': + resolution: {integrity: sha512-WpbXc2uq8vtSqmWFzVrFifNj6HGoGHIZHolxX5GfRFbj4RNme1u/wtklmiOvcHE0s6SwPX764tuFXIgHBR5Vag==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-define-read-only-property@0.2.3': + resolution: {integrity: sha512-3sGMpmmSlErHup+Y6YwIgN075GW3t1FD8ARS+zHaU1U1IKEaiOVKMH49WfBGiSsVfV7sfieoZC5B//MrSWQjaA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-escape-regexp-string@0.2.3': + resolution: {integrity: sha512-ZQAq5HHF+C1fmK+RvqeMO0iIQf5kGl2Ofx9LYloURUPZD2zVMX+2hxDLFBTPAusqYxffQAjj3ap4LE/J0+YiRQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-eval@0.2.3': + resolution: {integrity: sha512-T9rL6lEX58My6GcZ0bXD7reJoBEzoO/r5i3U/lj6dC94immyQtbqoz0djHfpCVrCnoK4Mzbq3t813cBQS7yfRg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-get-prototype-of@0.2.3': + resolution: {integrity: sha512-unEoKhhAnV4AbQ87oPo1v+4xLjd00nQxJLSvl43PkdoBn/GKNv/B6SMnQWmM5b62esWTbxBu/uWCYoglbprxkA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-global@0.2.3': + resolution: {integrity: sha512-e8gyuENhSeF8udH7vlZMDbNVQ/ZxZ4vWOcpB2iw06z1HSFZWc31Coh19ScfgagLfofo2GQYPJI3tJtZQYsUS6A==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-identity-function@0.2.3': + resolution: {integrity: sha512-XZNW1j/mWbRTP8WeIVCQX9o/2HOudrCIgRjte5EJsDjZp2fKW6mTjm96s3P9NGd4YQi3jzDm36VWPjLRQziJRg==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-index-of@0.2.3': + resolution: {integrity: sha512-R5lBztlvTWiH0CFFSYsSDGDexQH5y9UVIAHNevp/uS3jE0+nMHREWEkIwCHxkAsYlbi1Dlbyq8+vapswxgBSNw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-keys@0.2.3': + resolution: {integrity: sha512-pH7orA2LGYVQ/uTDtNFPocdpF8AfiZIcJpGR1178OhoaMv7lXa4avVHCNY5TT+GHZebJxIWJum1zmi8onYuVwQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-library-manifest@0.2.4': + resolution: {integrity: sha512-sNzEclCbpRRa35DBv8ZOcOjCesBLczkOFX8o7mMrG9VWhyZuJUCBtgSPmzGIIBLAsVEYJuguEk4iYoMqFnCwnw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-memoize@0.2.3': + resolution: {integrity: sha512-H8OGqss0lsbTAFKxbaQ+xywRgtcn9WV4w6p59tjMVmsDqQNGGrwvf6TuljUJY3Wc21E5VK4Vcs2O/MxBIAJsZw==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-native-class@0.2.3': + resolution: {integrity: sha512-UGXCPhgmOjwMpEQ5fFiifcqrhUnP8ICyWzEkHphUrh2/0pHyK0zilZvcODfROgzoy6L9ivUUuR6NjrAI+j14hA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-noop@0.2.3': + resolution: {integrity: sha512-kZQWwUwq+RwmKBZZD+6dnRwhjfut5fBgbEappugvVjFGp12wDKXCj6D6Y/xTmBdKFRumO8/gzkj9n6DKNDchpA==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-tabulate@0.2.3': + resolution: {integrity: sha512-00HL6s5KPcAqwobAjmaTlsGK7i6FVb1IFqivaKoIhn8rGPuFTYmeo4Kc2ZyXGitteQJjXABl0qjF+yei813OVQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@stdlib/utils-type-of@0.2.3': + resolution: {integrity: sha512-2KmDUfqIv0g4lrWtnyR5xw82NvdsEwUHON43JAe55XRlLWnk1V1troiyJiM9fccENtl524kVRBnD7RMohmUyyQ==} + engines: {node: '>=0.10.0', npm: '>2.7.0'} + os: [aix, darwin, freebsd, linux, macos, openbsd, sunos, win32, windows] + + '@turbo/darwin-64@2.8.21': + resolution: {integrity: sha512-kfGoM0Iw8ZNZpbds+4IzOe0hjvHldqJwUPRAjXJi3KBxg/QOZL95N893SRoMtf2aJ+jJ3dk32yPkp8rvcIjP9g==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.8.21': + resolution: {integrity: sha512-o9HEflxUEyr987x0cTUzZBhDOyL6u95JmdmlkH2VyxAw7zq2sdtM5e72y9ufv2N5SIoOBw1fVn9UES5VY5H6vQ==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.8.21': + resolution: {integrity: sha512-uTxlCcXWy5h1fSSymP8XSJ+AudzEHMDV3IDfKX7+DGB8kgJ+SLoTUAH7z4OFA7I/l2sznz0upPdbNNZs91YMag==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.8.21': + resolution: {integrity: sha512-cdHIcxNcihHHkCHp0Y4Zb60K4Qz+CK4xw1gb6s/t/9o4SMeMj+hTBCtoW6QpPnl9xPYmxuTou8Zw6+cylTnREg==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.8.21': + resolution: {integrity: sha512-/iBj4OzbqEY8CX+eaeKbBTMZv2CLXNrt0692F7HnK7LcyYwyDecaAiSET6ZzL4opT7sbwkKvzAC/fhqT3Quu1A==} + cpu: [x64] + os: [win32] + + '@turbo/windows-arm64@2.8.21': + resolution: {integrity: sha512-95tMA/ZbIidJFUUtkmqioQ1gf3n3I1YbRP3ZgVdWTVn2qVbkodcIdGXBKRHHrIbRsLRl99SiHi/L7IxhpZDagQ==} + cpu: [arm64] + os: [win32] + + '@types/argparse@1.0.38': + resolution: {integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/d3-array@3.2.2': + resolution: {integrity: sha512-hOLWVbm7uRza0BYXpIIW5pxfrKe0W+D5lrFiAEYR+pb6w3N2SwSMaJbXdUfSEv+dT4MfHBLtn5js0LAWaO6otw==} + + '@types/d3-axis@3.0.6': + resolution: {integrity: sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==} + + '@types/d3-format@3.0.4': + resolution: {integrity: sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==} + + '@types/d3-hierarchy@3.1.7': + resolution: {integrity: sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==} + + '@types/d3-scale@4.0.9': + resolution: {integrity: sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==} + + '@types/d3-selection@3.0.11': + resolution: {integrity: sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==} + + '@types/d3-time@3.0.4': + resolution: {integrity: sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/fs-extra@8.1.5': + resolution: {integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==} + + '@types/glob@7.2.0': + resolution: {integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==} + + '@types/jsesc@2.5.1': + resolution: {integrity: sha512-9VN+6yxLOPLOav+7PwjZbxiID2bVaeq0ED4qSQmdQTdjnXJSaCVKTR58t15oqH1H5t8Ng2ZX1SabJVoN9Q34bw==} + + '@types/minimatch@6.0.0': + resolution: {integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==} + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. + + '@types/node@12.20.55': + resolution: {integrity: sha512-J8xLz7q2OFulZ2cyGTLE1TbbZcjpno7FaN6zdJNrgAdrJ+DZzh/uFR6YrTb4C+nXakvud8Q4+rbhoIWlYQbUFQ==} + + '@types/node@24.5.2': + resolution: {integrity: sha512-FYxk1I7wPv3K2XBaoyH2cTnocQEu8AOZ60hPbsyukMPLv5/5qr7V1i8PLHdl6Zf87I+xZXFvPCXYjiTFq+YSDQ==} + + '@types/node@26.1.2': + resolution: {integrity: sha512-Vu4a5UFA9rIIFJ7rB/Vaafh9lrCQszopTCx6KjFboXTGQbPNasehVR5TEiithSDGyd1DEiUByggTZsg8jukeIg==} + + '@types/semver@7.8.0': + resolution: {integrity: sha512-1mAINjtQCXXeLkJ9ehXkwOcBpqtLxiVtKhpUf83DdRNdQKV0iXZpaHYqRr7nj+wvxuJzoAmAwXI+sCNMv1CzLQ==} + + '@types/sortablejs@1.15.9': + resolution: {integrity: sha512-7HP+rZGE2p886PKV9c9OJzLBI6BBJu1O7lJGYnPyG3fS4/duUCcngkNCjsLwIMV+WMqANe3tt4irrXHSIe68OQ==} + + '@types/triple-beam@1.3.5': + resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==} + + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + + '@types/web-bluetooth@0.0.21': + resolution: {integrity: sha512-oIQLCGWtcFZy2JW77j9k8nHzAOpqMHLQejDA48XXMWH6tjCQHz5RCFz1bzsmROyL6PUm+LLnUiI4BCn221inxA==} + + '@typescript/typescript-aix-ppc64@7.0.2': + resolution: {integrity: sha512-MTKKkWB7p/0E9xi1d1tHtZ5PiLkGEMIq88pK2CubZjOsLtYTLqhgIgi6zepFa+9GHZ6h05NMCkQxGKiPXMxXtQ==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [aix] + + '@typescript/typescript-darwin-arm64@7.0.2': + resolution: {integrity: sha512-gowzar9MwS/aRWp6f3a4KUqzRjAZjOsmGNCM6LcTgXum+dBfgsBVMN+AgvOCCbguXyick6LJhpBszxMebJ8syA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [darwin] + + '@typescript/typescript-darwin-x64@7.0.2': + resolution: {integrity: sha512-SZ9xZInqApNlNGc9s0W1VSsktYSOe9cFqNOIqmN1Gs8SmkjKZYFt017G4VwPxASInODuAdbTW7sXiFUf893RgA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [darwin] + + '@typescript/typescript-freebsd-arm64@7.0.2': + resolution: {integrity: sha512-W5NH4y/J0plIIS5b2xvTEkU7JFxyqdMAOgf+Ilhl0vHQXKO5dZoxd+C/jEtq56c4F3wk71RB4BMRQ2XdI+bwYQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [freebsd] + + '@typescript/typescript-freebsd-x64@7.0.2': + resolution: {integrity: sha512-UMGDx5sTpzNw3WiPebH7l90IWfJggEd+egHt/q6p7/Cm3zqoV7VxkGXt+3DxPIw8CcmvAB0j3sVVfbhX+M4Tpw==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [freebsd] + + '@typescript/typescript-linux-arm64@7.0.2': + resolution: {integrity: sha512-Qh4eU4/y3yDjnfjjyPYihMj5/ODIlmt+Bzu17OI+fiSRDW57QmU5SiN63exPRNJPKUzcc1INa1NXdrJ+MqHjUQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [linux] + + '@typescript/typescript-linux-arm@7.0.2': + resolution: {integrity: sha512-gffT3xPz9sR7j/YJExkyPntrI0P2EP9XbOyWzth2/Gs0RstK+90RBcO0ncXoXy/beYll1SXw846Nf2zdnEz0QQ==} + engines: {node: '>=16.20.0'} + cpu: [arm] + os: [linux] + + '@typescript/typescript-linux-loong64@7.0.2': + resolution: {integrity: sha512-uEHck9i8hoAzXPiYRib1O7miOnz23SxIeVl6F4LXox+qov1K35jHcEW6VHKvZI+pyvl7fZEP4MCU5LYvIq1GuQ==} + engines: {node: '>=16.20.0'} + cpu: [loong64] + os: [linux] + + '@typescript/typescript-linux-mips64el@7.0.2': + resolution: {integrity: sha512-R4KvAMnE43W5Qeqb0Ly56O3mWMWIAgsMyz36DCaycd5nbg/9kzm0liw3JocfRqyJY0KPmzFjbswozXyW0DnIYA==} + engines: {node: '>=16.20.0'} + cpu: [mips64el] + os: [linux] + + '@typescript/typescript-linux-ppc64@7.0.2': + resolution: {integrity: sha512-DORx5b3sd/4S7eayxm4FQv+A7CrkUIGRaHiwI8oiHTAI1fAPWhF4J0vAlkC8biAlHSVVwxMQ3tjZ2/DVbnQiiA==} + engines: {node: '>=16.20.0'} + cpu: [ppc64] + os: [linux] + + '@typescript/typescript-linux-riscv64@7.0.2': + resolution: {integrity: sha512-wf0jqEDOjrPRnKwYRyyJDRo11KMbvMFrU+q4zqKyChODBzvlkbhNQfKvLxQCcwTpdDaXSHZTVuh0JoCrKCUMHQ==} + engines: {node: '>=16.20.0'} + cpu: [riscv64] + os: [linux] + + '@typescript/typescript-linux-s390x@7.0.2': + resolution: {integrity: sha512-IkwJc3L7yhytWd/ewjyxNDfOmswCm9GWMJT/ue/dU4aZNbwZeYAetq42VyLmsmSjvoX7z74X6ZaYCtzAr0EuGw==} + engines: {node: '>=16.20.0'} + cpu: [s390x] + os: [linux] + + '@typescript/typescript-linux-x64@7.0.2': + resolution: {integrity: sha512-EYdf2cNg7rgCWJnxCdJ+F3V39O8ihb37eHAu1LK8oAFizgTQbPOK7zHHXbPt8rX24COqODXeI3sIf0fCXG7H/A==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [linux] + + '@typescript/typescript-netbsd-arm64@7.0.2': + resolution: {integrity: sha512-+polYF4MF04aPpO5FTkHran9yUQDSXqy5GiSDKpsll5jy3l3+g9QLhpf39T+ePtefhXLOGrLl0QIjkQP6VnelA==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [netbsd] + + '@typescript/typescript-netbsd-x64@7.0.2': + resolution: {integrity: sha512-8YIT0EHM/3dq10ZOVF/A7pc/YSMtbcecct4rWtexrnSCHOPcpC2KTLXfTCR6vDpnSiY12heNb1GiN/wu+T/FyA==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [netbsd] + + '@typescript/typescript-openbsd-arm64@7.0.2': + resolution: {integrity: sha512-APT8+ClYnuYm1u9+kgGXoMj2VzWzcymwh2gNSQVySHfkRDGOTVkoWLjCmOQSaO+PoqQ57B0flRp9SA+7GnnkzQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [openbsd] + + '@typescript/typescript-openbsd-x64@7.0.2': + resolution: {integrity: sha512-yX7s+Q0Dln0Dt9tEzZsAjXXR/+ytBM7AlglaqyeMPxQszJ1JhlJdZ6jLA+IzldHtflX81em7lDao1xXu+aRRkg==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [openbsd] + + '@typescript/typescript-sunos-x64@7.0.2': + resolution: {integrity: sha512-dLJDGaLZ1D4HPQn62u1n8mBDkJREwMsAkCdkwd4Ieqw+x3TUyTsqY0YiBCtE6H6OzzgGk3iuZ3vFWRS+E8/d1g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [sunos] + + '@typescript/typescript-win32-arm64@7.0.2': + resolution: {integrity: sha512-Gyl1Vy6OsWesLzmq+EP0Fb7b4Nid5232AvcA2SFcdYreldpNtYFFofPjnt62y9hQy7VTaZp65ICJjuAQRaVcIQ==} + engines: {node: '>=16.20.0'} + cpu: [arm64] + os: [win32] + + '@typescript/typescript-win32-x64@7.0.2': + resolution: {integrity: sha512-0BQ3HkAHHlKLSp1qRvf3SUhGpGsDuhB/jgFw75guyqbxJqEaS0Cw/VFO8i2nHglJUzQCRtMMR/IBAKE3ETMC4g==} + engines: {node: '>=16.20.0'} + cpu: [x64] + os: [win32] + + '@typescript/vfs@1.6.4': + resolution: {integrity: sha512-PJFXFS4ZJKiJ9Qiuix6Dz/OwEIqHD7Dme1UwZhTK11vR+5dqW2ACbdndWQexBzCx+CPuMe5WBYQWCsFyGlQLlQ==} + peerDependencies: + typescript: '*' + + '@vitejs/plugin-vue@6.0.8': + resolution: {integrity: sha512-0ZjgOg7oO6farnNGup7yvoM/YXZV84OZxHAwtflItNa/6zzQyVb5LNxyea3FEKEX2XlagIKzrlH7wwxkKgtiew==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + + '@vitest/coverage-istanbul@4.1.10': + resolution: {integrity: sha512-AyNJ5pQRFqCX7pwB9PSTmoVKPaZ4H5IEVJfJsT+q1DYkXvZMEFYgJlyk5sfStmt9rVYRyYYRRsuBeImCOc39ww==} + peerDependencies: + vitest: 4.1.10 + + '@vitest/expect@4.0.18': + resolution: {integrity: sha512-8sCWUyckXXYvx4opfzVY03EOiYVxyNrHS5QxX3DAIi5dpJAAkyJezHCP77VMX4HKA2LDT/Jpfo8i2r5BE3GnQQ==} + + '@vitest/expect@4.1.10': + resolution: {integrity: sha512-YsCn+qAk1GWjQOWFEsEcL2gNQ0zmVmQu3T03qP6UyjhtmdtwtbuI+DASn/7iQB3HGTXkdBwGddzxPlmiql5vlA==} + + '@vitest/mocker@4.0.18': + resolution: {integrity: sha512-HhVd0MDnzzsgevnOWCBj5Otnzobjy5wLBe4EdeeFGv8luMsGcYqDuFRMcttKWZA5vVO8RFjexVovXvAM4JoJDQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/mocker@4.1.10': + resolution: {integrity: sha512-v0xaezt+DKEmKfaxg133ldzADrwLGd7Ze1MfQQTYfvs8OqZIwbxyxaYURivwV7sWy5fqn3rH5uOrSp07bp44Ow==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.0.18': + resolution: {integrity: sha512-P24GK3GulZWC5tz87ux0m8OADrQIUVDPIjjj65vBXYG17ZeU3qD7r+MNZ1RNv4l8CGU2vtTRqixrOi9fYk/yKw==} + + '@vitest/pretty-format@4.1.10': + resolution: {integrity: sha512-W1HsjSH4MXQ9YfmmhLAoIYf1HRfekQCGngeIgcei6MP5QQGWUe0gkopdZQaVCFO+JDJMrAJGwa5pRpNpvy4P8Q==} + + '@vitest/runner@4.0.18': + resolution: {integrity: sha512-rpk9y12PGa22Jg6g5M3UVVnTS7+zycIGk9ZNGN+m6tZHKQb7jrP7/77WfZy13Y/EUDd52NDsLRQhYKtv7XfPQw==} + + '@vitest/runner@4.1.10': + resolution: {integrity: sha512-IKI6kpIH+LmpROplyLwBBaCfMgOZOMsygVa6BARD6ahA04VRuJSa6OaVG7kRvSEMD870Vd91rSSw0eegtWyLGg==} + + '@vitest/snapshot@4.0.18': + resolution: {integrity: sha512-PCiV0rcl7jKQjbgYqjtakly6T1uwv/5BQ9SwBLekVg/EaYeQFPiXcgrC2Y7vDMA8dM1SUEAEV82kgSQIlXNMvA==} + + '@vitest/snapshot@4.1.10': + resolution: {integrity: sha512-xRkfOT1qpTAi/Ti4Y1LtfRc3kEuqxGw59eN2jN9pRWMtS/XDevekhcFSqvQqjUNGksfjMJu3Y+oJ+4Ypn2OaJw==} + + '@vitest/spy@4.0.18': + resolution: {integrity: sha512-cbQt3PTSD7P2OARdVW3qWER5EGq7PHlvE+QfzSC0lbwO+xnt7+XH06ZzFjFRgzUX//JmpxrCu92VdwvEPlWSNw==} + + '@vitest/spy@4.1.10': + resolution: {integrity: sha512-PLf/Ugvoq5wO/b4rwYCR1h2PSIdXz7wnkQFMiUpLdtM7l6pqVFcQIBEHyT1+l+cj7mNwAfZHzqXqDyjvOuwbDw==} + + '@vitest/utils@4.0.18': + resolution: {integrity: sha512-msMRKLMVLWygpK3u2Hybgi4MNjcYJvwTb0Ru09+fOyCXIgT5raYP041DRRdiJiI3k/2U6SEbAETB3YtBrUkCFA==} + + '@vitest/utils@4.1.10': + resolution: {integrity: sha512-fy9am/HWxbaGt/Sawrp90vt6Y6jQwf1RX77cz3uwoJwJVMli/e1IEwRPnMNJ7vKfPTwo0diXifkpPvwH9v7nGA==} + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vue/compiler-core@3.5.24': + resolution: {integrity: sha512-eDl5H57AOpNakGNAkFDH+y7kTqrQpJkZFXhWZQGyx/5Wh7B1uQYvcWkvZi11BDhscPgj8N7XV3oRwiPnx1Vrig==} + + '@vue/compiler-core@3.5.41': + resolution: {integrity: sha512-q0Xtv/F9w2YO/7htQhtiL+Ev2WCJbe5N2hc+XfgyKkEKqWpSxknmT8QOuGdEKNdjPq0c3F7rNpFkTo3Kfrm7pg==} + + '@vue/compiler-dom@3.5.24': + resolution: {integrity: sha512-1QHGAvs53gXkWdd3ZMGYuvQFXHW4ksKWPG8HP8/2BscrbZ0brw183q2oNWjMrSWImYLHxHrx1ItBQr50I/q2zw==} + + '@vue/compiler-dom@3.5.41': + resolution: {integrity: sha512-oKacVfNglLvGjnS6BXOlGL7EyG2h8X03pqXCjzotRZUaXGjbrTJUnVAQjrCqUnS+lyu31nwQjZY/d817GmCnfw==} + + '@vue/compiler-sfc@3.5.24': + resolution: {integrity: sha512-8EG5YPRgmTB+YxYBM3VXy8zHD9SWHUJLIGPhDovo3Z8VOgvP+O7UP5vl0J4BBPWYD9vxtBabzW1EuEZ+Cqs14g==} + + '@vue/compiler-ssr@3.5.24': + resolution: {integrity: sha512-trOvMWNBMQ/odMRHW7Ae1CdfYx+7MuiQu62Jtu36gMLXcaoqKvAyh+P73sYG9ll+6jLB6QPovqoKGGZROzkFFg==} + + '@vue/compiler-vue2@2.7.16': + resolution: {integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==} + + '@vue/language-core@2.2.0': + resolution: {integrity: sha512-O1ZZFaaBGkKbsRfnVH1ifOK1/1BUkyK+3SQsfnh6PmMmD4qJcTU8godCeA96jjDRTL6zgnK7YzCHfaUlH2r0Mw==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/language-core@3.3.5': + resolution: {integrity: sha512-UkKu5nhX89fg4VhlG/FOeI10G3cj/7radKT/cy9BT4Q9qJmJlSTAc/dP63Xqs29aypN4f39xUV6PsLNk/dcD6g==} + + '@vue/reactivity@3.5.24': + resolution: {integrity: sha512-BM8kBhtlkkbnyl4q+HiF5R5BL0ycDPfihowulm02q3WYp2vxgPcJuZO866qa/0u3idbMntKEtVNuAUp5bw4teg==} + + '@vue/runtime-core@3.5.24': + resolution: {integrity: sha512-RYP/byyKDgNIqfX/gNb2PB55dJmM97jc9wyF3jK7QUInYKypK2exmZMNwnjueWwGceEkP6NChd3D2ZVEp9undQ==} + + '@vue/runtime-dom@3.5.24': + resolution: {integrity: sha512-Z8ANhr/i0XIluonHVjbUkjvn+CyrxbXRIxR7wn7+X7xlcb7dJsfITZbkVOeJZdP8VZwfrWRsWdShH6pngMxRjw==} + + '@vue/server-renderer@3.5.24': + resolution: {integrity: sha512-Yh2j2Y4G/0/4z/xJ1Bad4mxaAk++C2v4kaa8oSYTMJBJ00/ndPuxCnWeot0/7/qafQFLh5pr6xeV6SdMcE/G1w==} + peerDependencies: + vue: 3.5.24 + + '@vue/shared@3.5.24': + resolution: {integrity: sha512-9cwHL2EsJBdi8NY22pngYYWzkTDhld6fAD6jlaeloNGciNSJL6bLpbxVgXl96X00Jtc6YWQv96YA/0sxex/k1A==} + + '@vue/shared@3.5.41': + resolution: {integrity: sha512-IOnwSCma8j+9xJT6b8H0dEYidC80NsYmNMlZxRsukYcSoGaDBohog5hDxzeUXdFeGWFA++vWvxqOmrr96VlqMA==} + + '@vue/test-utils@2.4.11': + resolution: {integrity: sha512-GDqaqZsA6m2E5vNzej0aYiIb6BX8xV9pNSbbbXKOfEYwg7ZNblVX8suyqmUBThq8VIrgAJNxn+z72hVtUeiWHA==} + peerDependencies: + '@vue/compiler-dom': 3.x + '@vue/server-renderer': 3.x + vue: 3.x + peerDependenciesMeta: + '@vue/server-renderer': + optional: true + + '@vueuse/core@13.9.0': + resolution: {integrity: sha512-ts3regBQyURfCE2BcytLqzm8+MmLlo5Ln/KLoxDVcsZ2gzIwVNnQpQOL/UKV8alUqjSZOlpFZcRNsLRqj+OzyA==} + peerDependencies: + vue: ^3.5.0 + + '@vueuse/integrations@13.9.0': + resolution: {integrity: sha512-SDobKBbPIOe0cVL7QxMzGkuUGHvWTdihi9zOrrWaWUgFKe15cwEcwfWmgrcNzjT6kHnNmWuTajPHoIzUjYNYYQ==} + peerDependencies: + async-validator: ^4 + axios: ^1 + change-case: ^5 + drauu: ^0.4 + focus-trap: ^7 + fuse.js: ^7 + idb-keyval: ^6 + jwt-decode: ^4 + nprogress: ^0.2 + qrcode: ^1.5 + sortablejs: ^1 + universal-cookie: ^7 || ^8 + vue: ^3.5.0 + peerDependenciesMeta: + async-validator: + optional: true + axios: + optional: true + change-case: + optional: true + drauu: + optional: true + focus-trap: + optional: true + fuse.js: + optional: true + idb-keyval: + optional: true + jwt-decode: + optional: true + nprogress: + optional: true + qrcode: + optional: true + sortablejs: + optional: true + universal-cookie: + optional: true + + '@vueuse/metadata@13.9.0': + resolution: {integrity: sha512-1AFRvuiGphfF7yWixZa0KwjYH8ulyjDCC0aFgrGRz8+P4kvDFSdXLVfTk5xAN9wEuD1J6z4/myMoYbnHoX07zg==} + + '@vueuse/shared@13.9.0': + resolution: {integrity: sha512-e89uuTLMh0U5cZ9iDpEI2senqPGfbPRTHM/0AaQkcxnpqjkZqDYP8rpfm7edOz8s+pOCOROEy1PIveSW8+fL5g==} + peerDependencies: + vue: ^3.5.0 + + '@zip.js/zip.js@2.8.34': + resolution: {integrity: sha512-+6a3lyqq69rpseLbvDPiVIWsZ/HdTGAAD6afFtug6ECPDGttb2dHnPC6cJgdPofYkzL9OvXizegq+DQVfL2rnA==} + engines: {bun: '>=0.7.0', deno: '>=1.0.0', node: '>=18.0.0'} + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + abbrev@3.0.1: + resolution: {integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==} + engines: {node: ^18.17.0 || >=20.5.0} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn@8.18.0: + resolution: {integrity: sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==} + engines: {node: '>=0.4.0'} + hasBin: true + + ag-charts-community@12.1.2: + resolution: {integrity: sha512-Z3oSsbIyAqaiB4PdnMQ2gt3s+oY19xTHJUee5TKjsTThX8wVX8PXRGMOZaFWbN/HNaZCWkUTgkuLrasw2w+x/w==} + + ag-charts-core@12.1.2: + resolution: {integrity: sha512-9AfMX+HSpr4zmp88PBWcOqO9jW1HTKxC+b/7B/xYOE6K1hBFvnuLbqdeNGfGoiyWqw5TUlY1lirr/9xrFyZFsQ==} + + ag-charts-enterprise@12.1.2: + resolution: {integrity: sha512-ac6AfLJ2OM/+V9VtCe6SHXdJLviDXhnU3iTtVnE21OvpBZ2ynl3C3v2kZDUQ0EdAkNK/SwWCHo7xaPrE2lbfIg==} + + ag-charts-locale@12.1.2: + resolution: {integrity: sha512-GFAq4KZit3CHT3Br/LGruas75HqsvV+VZV6qz5hLrmiovJSSVfzPirzf/hUGDTCHqIOS7CdxmpdKUu8pKv1LGw==} + + ag-charts-types@10.3.9: + resolution: {integrity: sha512-drcRiJVencliC8LnRwk4MmeQDNNBg5GzmOoLFihO3/k0CUK0VF/N+2nc7iFozwaNG0btSB9vAhYuJLjqHMtRrQ==} + + ag-charts-types@12.1.2: + resolution: {integrity: sha512-B5IEMzaDxpJRko9sREIBEZOn44tlMX353tMJ1RGYHZrjDFx4on/p6q3YxBvway3nViAM2POmFOS45+1fF9YC8g==} + + ag-grid-community@34.1.2: + resolution: {integrity: sha512-PN79zG/tigZaVKkQZXaithLO3j4JWp+9CjqEFth6kFUwMJ0E6OcNzNtn4NFEKM38fEdpGsr+k+gFk5KUE2h5fA==} + + ag-grid-enterprise@34.1.2: + resolution: {integrity: sha512-B++4t4lDylXt6SfFvaNY6aswtzp/0oUwbaXLpXWJZQZlfyRb4u1e787NpISGaVVcGoHyAgYLvtNHJluVsnQikg==} + + ag-grid-vue3@34.1.2: + resolution: {integrity: sha512-ioBKNLENrtvorUsl/tbhMxjh3CxTukt4UoySmerDH88SE8E03UKk2enNOa4hMlTdbDCbc15FuwPEgh3bNI+0WA==} + peerDependencies: + vue: ^3.5.0 + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv-draft-04@1.0.0: + resolution: {integrity: sha512-mv00Te6nmYbRp5DCwclxtt7yV/joXJPGS7nM+97GdxvuttCOfgI3K4U25zboyeX0O+myI8ERluxQe5wljMmVIw==} + peerDependencies: + ajv: ^8.5.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@8.18.0: + resolution: {integrity: sha512-PlXPeEWMXMZ7sPYOHqmDyCJzcfNrUr3fGNKtezX14ykXOEIvyK81d+qydx89KY5O71FKMPaQ2vBfBFI5NHR63A==} + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + alien-signals@0.4.14: + resolution: {integrity: sha512-itUAVzhczTmP2U5yX67xVpsbbOiquusbWVyA9N+sy6+r6YVbFkahXvNCeEPWEOMhwDYwbVbGHFkVL03N9I5g+Q==} + + alien-signals@3.2.1: + resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} + + ansi-colors@4.1.3: + resolution: {integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==} + engines: {node: '>=6'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + anynum@1.0.1: + resolution: {integrity: sha512-N6//FLET/tXYNM/F6ABca1oH6fWB+KlTt909Le28WMDBk8oaT4vY17DCrwg2MvmuqUKt3Ni4N5dGJ/EoBgcO6A==} + + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + + argparse@1.0.10: + resolution: {integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-union@2.1.0: + resolution: {integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==} + engines: {node: '>=8'} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + asn1js@3.0.10: + resolution: {integrity: sha512-S2s3aOytiKdFRdulw2qPE51MzjzVOisppcVv7jVFR+Kw0kxwvFrDcYA0h7Ndqbmj0HkMIXYWaoj7fli8kgx1eg==} + engines: {node: '>=12.0.0'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-kit@3.0.0: + resolution: {integrity: sha512-8OG92q3R35qjC/4i6BLBMg8IB+fClWu/1PEwg2Z9Rn+BuNaiEgJzpzn+pxWOdHJWDCAwu2JP0wCDTozAM4QirQ==} + engines: {node: ^22.18.0 || >=24.11.0} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + available-typed-arrays@1.0.7: + resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} + engines: {node: '>= 0.4'} + + b4a@1.8.1: + resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + bare-events@2.9.1: + resolution: {integrity: sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + + bare-fs@4.8.0: + resolution: {integrity: sha512-fM+MhCvdQhZ7NV6S95a07gPSqjIYKn6mFaXfx266wN3ajZGl/+1AzH+ubkXQ0fFZvOe2nk9VHkzdYkQE5zMV3Q==} + engines: {bare: '>=1.28.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-path@3.1.1: + resolution: {integrity: sha512-JprUlveX3QjApC1cTpsUOiscADftCGVWkzitbHsRqv84hzYwYHw2mbluddsq5TvI8mH/8Ov1f4BiMAdcB0oYnQ==} + + bare-stream@2.13.3: + resolution: {integrity: sha512-Kc+brLqvEqGkjyfiwJmImAOqLZL7OsoLKuavx+hJjgVV3nLTOjloJyPMFxjUPerGGHrNH0fLU06jjykMLWrERQ==} + peerDependencies: + bare-abort-controller: '*' + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.4.7: + resolution: {integrity: sha512-o8CRCiJtib+ycO3mE4A5UChtGX4dDP2XxsWVu9P+Zc3H8tcmKwNVEDoDTXmwN+uuMhfKeT7/i7Y26xS8W7ohoA==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.11.12: + resolution: {integrity: sha512-r7WnVImvVCeFpf2DOXfy41aPWzeNg3H/A2X4dKmy1QL0MSyyk/e7z8ihJ3N6Nn2PsdhkVlqnEfnUE4a05P2aTA==} + engines: {node: '>=6.0.0'} + hasBin: true + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + better-path-resolve@1.0.0: + resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} + engines: {node: '>=4'} + + better-sqlite3@12.10.0: + resolution: {integrity: sha512-CyzaZRQKyHkB2ZInfTTl2nvT33EbDpjkLEbE8/Zck3Ll6O0qqvuGdrJ45HgtH+HykRg88ITY3AdreBGN70aBSQ==} + engines: {node: 20.x || 22.x || 23.x || 24.x || 25.x || 26.x} + + bindings@1.5.0: + resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==} + + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + + bl@1.2.3: + resolution: {integrity: sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==} + + bl@4.1.0: + resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==} + + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + + brace-expansion@1.1.18: + resolution: {integrity: sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==} + + brace-expansion@2.1.4: + resolution: {integrity: sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==} + + brace-expansion@5.0.9: + resolution: {integrity: sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==} + engines: {node: 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.7: + resolution: {integrity: sha512-JxV13hNrFxqjOc8alRbq9dK1MM79NEXYpma2B2J4wAtpWS5zIEIKqWPGCl7N4o7Uc7B7itylh7SuDujATRyyTw==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer-alloc-unsafe@1.1.0: + resolution: {integrity: sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==} + + buffer-alloc@1.2.0: + resolution: {integrity: sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==} + + buffer-crc32@0.2.13: + resolution: {integrity: sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-fill@1.0.0: + resolution: {integrity: sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==} + + buffer@5.6.0: + resolution: {integrity: sha512-/gDYp/UtU0eA1ys8bOs9J6a+E/KWIY+DZ+Q2WESNUA0jFRsJOc0SNUO6xJ5SGA1xueg3NL65W6s+NY5l9cunuw==} + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + buildcheck@0.0.7: + resolution: {integrity: sha512-lHblz4ahamxpTmnsk+MNTRWsjYKv965MwOrSJyeD588rR3Jcu7swE+0wN5F+PbL5cjgu/9ObkhfzEPuofEMwLA==} + engines: {node: '>=10.0.0'} + + bytestreamjs@2.0.1: + resolution: {integrity: sha512-U1Z/ob71V/bXfVABvNr/Kumf5VyeQRBEm6Txb0PQ6S7V5GpBM3w4Cbqz/xPDicR5tN0uvDifng8C+5qECeGwyQ==} + engines: {node: '>=6.0.0'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bind@1.0.9: + resolution: {integrity: sha512-a/hy+pNsFUTR+Iz8TCJvXudKVLAnz/DyeSUo10I5yvFDQJBFU2s9uqQpoSrJlroHUKoKqzg+epxyP9lqFdzfBQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + caniuse-lite@1.0.30001807: + resolution: {integrity: sha512-daRXJ9EB/rdRgu7kV+TTl1YUKtlsMWblPl2sLnpg9DZae16QCegol6A1SmCE31Lm9mXC1sRWGt/krouH+/dl7Q==} + + canonicalize@2.1.0: + resolution: {integrity: sha512-F705O3xrsUtgt98j7leetNhTWPe+5S72rlL5O4jA1pKqBVQ/dT1O1D6PFxmSXvc0SUOinWS57DKx0I3CHrXJHQ==} + hasBin: true + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chardet@2.2.0: + resolution: {integrity: sha512-rddelWYNPRrXq6PtNEN2S3f6t9ILzvqaN5pVgi4kqt9jHQaXIial9PznB5iSPVlQSLNaaH22ItWz3EJtQ10+OA==} + + chownr@1.1.4: + resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + ci-info@3.9.0: + resolution: {integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==} + engines: {node: '>=8'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-convert@3.1.3: + resolution: {integrity: sha512-fasDH2ont2GqF5HpyO4w0+BcewlhHEZOFn9c1ckZdHpJ56Qb7MHhH/IcJZbBGgvdtwdwNbLvxiBEdg336iA9Sg==} + engines: {node: '>=14.6'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + color-name@2.1.1: + resolution: {integrity: sha512-p2FdgwVx1a9yWBHP2wI0VgShkDpgN4kZISkxdNipGBJWpa5G6b04OINlVWCyJj0JmfvcPrgqt95E9k8yvaOJFg==} + engines: {node: '>=12.20'} + + color-string@2.1.4: + resolution: {integrity: sha512-Bb6Cq8oq0IjDOe8wJmi4JeNn763Xs9cfrBcaylK1tPypWzyoy2G3l90v9k64kjphl/ZJjPIShFztenRomi8WTg==} + engines: {node: '>=18'} + + color@5.0.3: + resolution: {integrity: sha512-ezmVcLR3xAVp8kYOm4GS45ZLLgIE6SPAFoduLr6hTDajwb3KZ2F46gulK3XpcwRFb5KKGCSezCBAY4Dw4HsyXA==} + engines: {node: '>=18'} + + colorette@1.4.0: + resolution: {integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==} + + comlink@4.4.2: + resolution: {integrity: sha512-OxGdvBmJuNKSCMO4NTl1L47VRp6xn2wG4F/2hYzB6tiCb709otOxtEYCSvK80PtjODfXXZu8ds+Nw5kVCjqd2g==} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + + commander@15.0.0: + resolution: {integrity: sha512-z67u4ZhzCL/Tydu1lJARtEZYWbWaN7oYLHbsuzocr6y4N6WZAagG3RQ4FW61V1/0+jImpj293XfrcYnd1qxtPg==} + engines: {node: '>=22.12.0'} + + commander@2.20.3: + resolution: {integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==} + + compare-versions@6.1.1: + resolution: {integrity: sha512-4hm4VPpIecmlg59CHXnRDnqGplJFrbLG4aFEl5vl6cK1u76ws3LLvX7ikFnTDl5vo39sjWD6AaDPYodJp/NNHg==} + + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + confbox@0.1.8: + resolution: {integrity: sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==} + + confbox@0.2.4: + resolution: {integrity: sha512-ysOGlgTFbN2/Y6Cg3Iye8YKulHw+R2fNXHrgSmXISQdMnomY6eNDprVdW9R5xBguEqI954+S6709UyiO7B+6OQ==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + consola@3.4.2: + resolution: {integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==} + engines: {node: ^14.18.0 || >=16.10.0} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cpu-features@0.0.10: + resolution: {integrity: sha512-9IkYqtX3YHPCzoVg1Py+o9057a3i0fp7S530UWokCSaFVTc7CwXPRiOjRjBQQ18ZCNafx78YfnG+HALxtVmOGA==} + engines: {node: '>=10.0.0'} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + + cross-spawn@6.0.6: + resolution: {integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==} + engines: {node: '>=4.8'} + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + d3-array@3.2.4: + resolution: {integrity: sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==} + engines: {node: '>=12'} + + d3-axis@3.0.0: + resolution: {integrity: sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==} + engines: {node: '>=12'} + + d3-color@3.1.0: + resolution: {integrity: sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==} + engines: {node: '>=12'} + + d3-dispatch@3.0.1: + resolution: {integrity: sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==} + engines: {node: '>=12'} + + d3-drag@3.0.0: + resolution: {integrity: sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==} + engines: {node: '>=12'} + + d3-ease@3.0.1: + resolution: {integrity: sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==} + engines: {node: '>=12'} + + d3-format@3.1.2: + resolution: {integrity: sha512-AJDdYOdnyRDV5b6ArilzCPPwc1ejkHcoyFarqlPqT7zRYjhavcT3uSrqcMvsgh2CgoPbK3RCwyHaVyxYcP2Arg==} + engines: {node: '>=12'} + + d3-hierarchy@3.1.2: + resolution: {integrity: sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==} + engines: {node: '>=12'} + + d3-interpolate@3.0.1: + resolution: {integrity: sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==} + engines: {node: '>=12'} + + d3-path@3.1.0: + resolution: {integrity: sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==} + engines: {node: '>=12'} + + d3-polygon@3.0.1: + resolution: {integrity: sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==} + engines: {node: '>=12'} + + d3-quadtree@3.0.1: + resolution: {integrity: sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==} + engines: {node: '>=12'} + + d3-random@3.0.1: + resolution: {integrity: sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==} + engines: {node: '>=12'} + + d3-scale-chromatic@3.1.0: + resolution: {integrity: sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==} + engines: {node: '>=12'} + + d3-scale@4.0.2: + resolution: {integrity: sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==} + engines: {node: '>=12'} + + d3-selection@3.0.0: + resolution: {integrity: sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==} + engines: {node: '>=12'} + + d3-shape@3.2.0: + resolution: {integrity: sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==} + engines: {node: '>=12'} + + d3-time-format@4.1.0: + resolution: {integrity: sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==} + engines: {node: '>=12'} + + d3-time@3.1.0: + resolution: {integrity: sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==} + engines: {node: '>=12'} + + d3-timer@3.0.1: + resolution: {integrity: sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==} + engines: {node: '>=12'} + + d3-transition@3.0.1: + resolution: {integrity: sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==} + engines: {node: '>=12'} + peerDependencies: + d3-selection: 2 - 3 + + d3-zoom@3.0.0: + resolution: {integrity: sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==} + engines: {node: '>=12'} + + de-indent@1.0.2: + resolution: {integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==} + + debug@2.6.9: + resolution: {integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + decompress-tar@4.1.1: + resolution: {integrity: sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==} + engines: {node: '>=4'} + + decompress-tarbz2@4.1.1: + resolution: {integrity: sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==} + engines: {node: '>=4'} + + decompress-targz@4.1.1: + resolution: {integrity: sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==} + engines: {node: '>=4'} + + decompress-unzip@4.0.1: + resolution: {integrity: sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==} + engines: {node: '>=4'} + + decompress@4.2.1: + resolution: {integrity: sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==} + engines: {node: '>=4'} + + deep-extend@0.6.0: + resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==} + engines: {node: '>=4.0.0'} + + define-data-property@1.1.4: + resolution: {integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==} + engines: {node: '>= 0.4'} + + denque@2.1.0: + resolution: {integrity: sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==} + engines: {node: '>=0.10'} + + detect-indent@6.1.0: + resolution: {integrity: sha512-reYkTUJAZb9gUuZ2RvVCNhVHdg62RHnJ7WJl8ftMi4diZ6NWlciOzQN88pUhSELEwflJht4oQDv0F0BMlwaYtA==} + engines: {node: '>=8'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + diff@8.0.4: + resolution: {integrity: sha512-DPi0FmjiSU5EvQV0++GFDOJ9ASQUVFh5kD+OzOnYdi7n3Wpm9hWWGfB/O2blfHcMVTL5WkQXSnRiK9makhrcnw==} + engines: {node: '>=0.3.1'} + + dir-glob@3.0.1: + resolution: {integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==} + engines: {node: '>=8'} + + dts-resolver@3.0.0: + resolution: {integrity: sha512-1T1f+z+4tl9XD+m+0HBgWoL/nm0bOIffyWaUuUSBlFg/86IWvfx+wjNaO/ybU0AJzG9/Mi5hBUgGV6zCmWEN7Q==} + engines: {node: ^22.18.0 || >=24.0.0} + peerDependencies: + oxc-resolver: '>=11.0.0' + peerDependenciesMeta: + oxc-resolver: + optional: true + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + editorconfig@1.0.7: + resolution: {integrity: sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.5.402: + resolution: {integrity: sha512-/oOpMaPT6Yg+6/1XQhyIPlzgj7Ye9zf+nNM2Uh6OcE2G2oNptWazFa+qB2Pdqqbsc9KnIDzgAntoYN0dbwOXwA==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + enabled@2.0.0: + resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enquirer@2.4.1: + resolution: {integrity: sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==} + engines: {node: '>=8.6'} + + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-module-lexer@2.3.1: + resolution: {integrity: sha512-shc1dbU90Yl/xq1QrC7QRtfcwURZuVRfPhZbDoldJ1cn1gzDvBaBWlv0eFolj5+0znnPJz5TXLxsN77X/12KTA==} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-toolkit@1.50.0: + resolution: {integrity: sha512-OyZKhUVvEep9ITEiwHn8GKnMRQIVqoSIX7WnRbkWgJkllCujilqP2rD0u979tkl8wqyc8ICwlc1UBVv/Sl1G6w==} + + esbuild@0.28.1: + resolution: {integrity: sha512-HrJrvZv5ayxBzPfwphOoNzkzOIIlifzk0KJrGK2c8R4+LKpMtpYLQeUdjnwjWv/LZlkH2laZk+4w78pi99D4Vw==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@1.0.0: + resolution: {integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==} + engines: {node: '>=6'} + + expand-template@2.0.3: + resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==} + engines: {node: '>=6'} + + expect-type@1.4.0: + resolution: {integrity: sha512-KfYbmpRm0VbLjEvVa9yGwCi9GI34xvi7A/HXYWQO65CSD2u3MczUJSuwXKFIxlGsgBQizV9q5J9NHj4VG0n+pA==} + engines: {node: '>=12.0.0'} + + exsolve@1.1.1: + resolution: {integrity: sha512-9U/jZUgjnSGyntRr6y5Muu1MJcwFl6kPu7k8qLF0IMNfLqvw0NZ4nnVDq0RVoZ0RvCyumib4Ez3KYrVfilrw+g==} + + extendable-error@0.1.7: + resolution: {integrity: sha512-UOiS2in6/Q0FK0R0q6UY9vYpQ21mr/Qn1KOnte7vsACuNJf514WvCCUHSRCPcgjPT2bAhNIJdlE6bVap1GKmeg==} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-patch@3.1.1: + resolution: {integrity: sha512-vf6IHUX2SBcA+5/+4883dsIjpBTqmfBjmYiWK1savxQmFk4JfBMLa7ynTYOs1Rolp/T1betJxHiGD3g1Mn8lUQ==} + + fast-uri@3.1.5: + resolution: {integrity: sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==} + + fast-xml-parser@5.2.5: + resolution: {integrity: sha512-pfX9uG9Ki0yekDHx2SiuRIyFdyAr1kMIMitPvb0YBo8SUfKvia7w7FIyd/l6av85pFYRhZscS75MwMnbvY+hcQ==} + hasBin: true + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fd-slicer@1.1.0: + resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fecha@4.2.3: + resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} + + file-type@3.9.0: + resolution: {integrity: sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==} + engines: {node: '>=0.10.0'} + + file-type@5.2.0: + resolution: {integrity: sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==} + engines: {node: '>=4'} + + file-type@6.2.0: + resolution: {integrity: sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==} + engines: {node: '>=4'} + + file-uri-to-path@1.0.0: + resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + fn.name@1.1.0: + resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==} + + for-each@0.3.5: + resolution: {integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==} + engines: {node: '>= 0.4'} + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + fs-constants@1.0.0: + resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==} + + fs-extra@11.3.6: + resolution: {integrity: sha512-w8ZNZr2mKIc7qeNaQ9AVPT1+iFaI+Avd4xudVOvdDJ8VytREi1Ft5Ih7hd9jjehod8vAM5GMsfQ/TpPf4EyoEA==} + engines: {node: '>=14.14'} + + fs-extra@7.0.1: + resolution: {integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==} + engines: {node: '>=6 <7 || >=8'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fs.realpath@1.0.0: + resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@2.3.1: + resolution: {integrity: sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==} + engines: {node: '>=0.10.0'} + + get-stream@4.1.0: + resolution: {integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==} + engines: {node: '>=6'} + + get-tsconfig@5.0.0-beta.5: + resolution: {integrity: sha512-/6gFNr0N04nob252sTQxyFLi3eKFRqIg1I87YcqAMT1i6SQrSF6KujUEQrtrjMV0H/eejTCltLdDSTEMzHbnsQ==} + engines: {node: '>=20.20.0'} + + github-from-package@0.0.0: + resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + glob@7.2.3: + resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + + globby@10.0.1: + resolution: {integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==} + engines: {node: '>=8'} + + globby@11.1.0: + resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} + engines: {node: '>=10'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-property-descriptors@1.0.2: + resolution: {integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + he@1.2.0: + resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} + hasBin: true + + html-escaper@2.0.2: + resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-id@4.2.0: + resolution: {integrity: sha512-K3GbkIWqyvvlpfhBPlbEvD97TtqBpAYA4kt+cn2lD2x2HuohzZCibcA2nOlnJT6exqvJLggoB5nv2dNf192nEA==} + hasBin: true + + iconv-lite@0.7.3: + resolution: {integrity: sha512-IKXpvIzjnC9XTAUbVBcMfGS0EPaIXtW6v+zr+RRp+hqULEpo0owZax6wyRwPOJbWbzjYspQwusTsfVr0ifh4uQ==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + immer@11.1.4: + resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==} + + import-lazy@4.0.0: + resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} + engines: {node: '>=8'} + + inflight@1.0.6: + resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + internmap@2.0.3: + resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==} + engines: {node: '>=12'} + + interpret@1.4.0: + resolution: {integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==} + engines: {node: '>= 0.10'} + + is-callable@1.2.7: + resolution: {integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==} + engines: {node: '>= 0.4'} + + is-core-module@2.16.2: + resolution: {integrity: sha512-evOr8xfXKxE6qSR0hSXL2r3sd7ALj8+7jQEUvPYcm5sgZFdJ+AYzT6yNmJenvIYQBgIGwfwz08sL8zoL7yq2BA==} + engines: {node: '>= 0.4'} + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-natural-number@4.0.1: + resolution: {integrity: sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-plain-object@3.0.1: + resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==} + engines: {node: '>=0.10.0'} + + is-stream@1.1.0: + resolution: {integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-subdir@1.2.0: + resolution: {integrity: sha512-2AT6j+gXe/1ueqbW6fLZJiIw3F8iXGJtt0yDrZaBhAZEG1raiTxKWU+IPqMCzQAXOUCKdA4UDMgacKH25XG2Cw==} + engines: {node: '>=4'} + + is-typed-array@1.1.15: + resolution: {integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==} + engines: {node: '>= 0.4'} + + is-windows@1.0.2: + resolution: {integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==} + engines: {node: '>=0.10.0'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isarray@2.0.5: + resolution: {integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + istanbul-lib-coverage@3.2.2: + resolution: {integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==} + engines: {node: '>=8'} + + istanbul-lib-report@3.0.1: + resolution: {integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==} + engines: {node: '>=10'} + + istanbul-reports@3.2.0: + resolution: {integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==} + engines: {node: '>=8'} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jju@1.4.0: + resolution: {integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==} + + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.8: + resolution: {integrity: sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@3.15.1: + resolution: {integrity: sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==} + hasBin: true + + js-yaml@4.3.1: + resolution: {integrity: sha512-CY6crGq313MX8GkwvB7tzgp99vjQxY1++5y10/BKN/GUfHqWaOGQMNZkBvqSzsZKWk/ijwHlWzzkLulsGHhjWQ==} + hasBin: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonc-parser@3.3.1: + resolution: {integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==} + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + kdbush@4.1.0: + resolution: {integrity: sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + kuler@2.0.0: + resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + lightningcss-android-arm64@1.33.0: + resolution: {integrity: sha512-gEpRTalKdosp4Bb8qWtc2iOgE5SeIHlpS1up9bFq2wAyYhl1UdTObYiHe98zEM9SQvSoqQZ1IQD0JNpg3Ml5pg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.33.0: + resolution: {integrity: sha512-Sciaz8eenNTKn9b3t7+xr0ipTp9YxKQY4npwQ3mrRuL0BAVHBLyZxofhaKBAVtzmtRZ/zTyo0/to4B1uWG/Djg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.33.0: + resolution: {integrity: sha512-Z5UPAxzrjlWNNyGy6i65cJzzvgJ5D3T6wMvs+gWpY9d7qRhANrxqAp6LhxIgZhWEw18RfJTGcRxjuLIBr+m8XQ==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.33.0: + resolution: {integrity: sha512-QQM/Ti/hQajJwCY+RiWuCZ9sdtI/XQk7nDK5vC8kkdwixezOlDgvDx7+RT+QjK6FcFT4MpsuoBnHIo/O3StRRg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.33.0: + resolution: {integrity: sha512-N7FVBe6iS24MlM6R/4RBTxGhQheZGs7tiQ9U32UtF75NzP5Q7xWPRqLBCKxlRQRk3rY1jCIPLzx7WzOhuUIRLQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.33.0: + resolution: {integrity: sha512-j2v/itmy4HlNxlc6voKXYgBqNi0Ng2LShg4z7GufpEgs05P+2suBVyi9I6YHq5uoVFx9ETin3eCEhLVyXGQnKg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.33.0: + resolution: {integrity: sha512-yiO5ROMuYQgXbC60yjZU5CYSFZGKXL0HFATXt9mHJn1+zW55oCtMI9NfcVhYLMFDL7gV7oBPon/EmMMGg2OvtQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.33.0: + resolution: {integrity: sha512-ar+Ju7LmcN0Jo4FpL4hpFybwNG9/3A/Br5KW2n2jyODg3MEZXaDYADdemoNS+BDNfMgKvylJLj4S5tyRActuAg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.33.0: + resolution: {integrity: sha512-RYiYbkokw0trfKqqzfF55lginwEPrD3OJDfTuJzFs1MK6iFnDenaz1fqLLtX4ITG3OktJQXOeTaw1awrBAlZPw==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.33.0: + resolution: {integrity: sha512-1K+MPfLSFVpphzpdbfkhlWk6wBrTObBzS2T6db10PNOZgR9GoVsAWzwNyuhUYYbTp23j+4RrncfujZ4uAzXvwA==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.33.0: + resolution: {integrity: sha512-OlEICDx/Xl0FqSp4bry8zFnCvGpig3Gl4gCquvYwHuqJKEC1+n9NgDniFvqHGmMv1ZkqDJrDqKKSykTDX+ehuA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.33.0: + resolution: {integrity: sha512-WkUDrojuJs0xkgGf2udWxa3yGBRxPtxUkB79i6aCZLRgc7PM8fZe9TosfPDcvEpQZbuFASnHYmRLBLUbmLOIIA==} + engines: {node: '>= 12.0.0'} + + local-pkg@1.2.1: + resolution: {integrity: sha512-++gUqRDEvcnN6Zhqrr+y/CkVEHhlrR96vZn3nZZPYzMcBUyBtTKzB9NadClFIsIVSsu+3i9tfk/erqy9kAmt7Q==} + engines: {node: '>=14'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + lodash.camelcase@4.3.0: + resolution: {integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==} + + lodash.startcase@4.4.0: + resolution: {integrity: sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + logform@2.7.0: + resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==} + engines: {node: '>= 12.0.0'} + + long@5.3.2: + resolution: {integrity: sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.5.2: + resolution: {integrity: sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + magicast@0.5.4: + resolution: {integrity: sha512-llBEhWm1SacoRwgHUoQJYtwp4PBLF4faQi5TCpIGyGs9n4y5+juI0tDgyKIfpqxckRHaHzouUEph3THklWh03w==} + + make-dir@1.3.0: + resolution: {integrity: sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==} + engines: {node: '>=4'} + + make-dir@4.0.0: + resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} + engines: {node: '>=10'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + minimatch@10.2.3: + resolution: {integrity: sha512-Rwi3pnapEqirPSbWbrZaa6N3nmqq4Xer/2XooiOKyV3q12ML06f7MOuc5DVH8ONZIFhwIYQ3yzPH4nt7iWHaTg==} + engines: {node: 18 || 20 || >=22} + + minimatch@10.2.6: + resolution: {integrity: sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mkdirp-classic@0.5.3: + resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==} + + mlly@1.8.2: + resolution: {integrity: sha512-d+ObxMQFmbt10sretNDytwt85VrbkhhUA/JBGm1MPaWJ65Cl4wOgLaB1NYvJSZ0Ef03MMEU/0xpPMXUIQ29UfA==} + + mri@1.2.0: + resolution: {integrity: sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==} + engines: {node: '>=4'} + + ms@2.0.0: + resolution: {integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + + nan@2.28.0: + resolution: {integrity: sha512-fTsDz99OTq2sVePhGdp4qQhggZFtKr64ZNVyVajRKtMOkJxYekplBh577PiJB12v/D3s2E5cGtOI45LWp6rnLQ==} + + nanoid@3.3.17: + resolution: {integrity: sha512-xQLf0A3HOMlgHq0n247/LRuAOYmB7dXJ/DvAxGvsSBij45XtBSmQycu+F8ODbHwns/XyFZagyL1+J0Offw1E0g==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + napi-build-utils@2.0.0: + resolution: {integrity: sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA==} + + nice-try@1.0.5: + resolution: {integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==} + + node-abi@3.94.0: + resolution: {integrity: sha512-W5ZNO5KRPB5TkYmGVD9F6YqhsglXJzE6etpbmT+f6EQElhiX/UTG551cnsRGvLG3fyZEg9HwaDmNmj5nwJ4z9g==} + engines: {node: '>=10'} + + node-fetch@2.7.0: + resolution: {integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==} + engines: {node: 4.x || >=6.0.0} + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true + + node-releases@2.0.53: + resolution: {integrity: sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==} + engines: {node: '>=18'} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + nopt@8.1.0: + resolution: {integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + npm-run-path@2.0.2: + resolution: {integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==} + engines: {node: '>=4'} + + object-assign@4.1.1: + resolution: {integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==} + engines: {node: '>=0.10.0'} + + obug@2.1.4: + resolution: {integrity: sha512-4a+OsYv9UktOJKE+l1A4OufDgdRF9PifWj+tJnHURo/P+WOxpG4GzUFL9qCalmWauao6ogiG+QvnCovwPoyAWA==} + engines: {node: '>=12.20.0'} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + one-time@1.0.0: + resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==} + + openapi-fetch@0.15.2: + resolution: {integrity: sha512-rdYTzUmSsJevmNqg7fwUVGuKc2Gfb9h6ph74EVPkPfIGJaZTfqdIbJahtbJ3qg1LKinln30hqZniLnKpH0RJBg==} + + openapi-typescript-helpers@0.0.15: + resolution: {integrity: sha512-opyTPaunsklCBpTK8JGef6mfPhLSnyy5a0IN9vKtx3+4aExf+KxEqYwIy3hqkedXIB97u357uLMJsOnm3GVjsw==} + + outdent@0.5.0: + resolution: {integrity: sha512-/jHxFIzoMXdqPzTaCpFzAAWhpkSjZPF4Vsn6jAfNpmbH/ymsmd7Qc6VE9BGn0L6YMj6uwpQLxCECpus4ukKS9Q==} + + oxfmt@0.35.0: + resolution: {integrity: sha512-QYeXWkP+aLt7utt5SLivNIk09glWx9QE235ODjgcEZ3sd1VMaUBSpLymh6ZRCA76gD2rMP4bXanUz/fx+nLM9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + oxfmt@0.62.0: + resolution: {integrity: sha512-vxgGHTmnDU9j4CX7dDBLzxgmHxfda/yPcgJkGCMUSCwRmz+euo/V08xXLNgXTeqAB9Fhf3Pe2nO1RNKLCVgphQ==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + svelte: ^5.0.0 + vite-plus: '*' + peerDependenciesMeta: + svelte: + optional: true + vite-plus: + optional: true + + oxlint-plugin-eslint@1.63.0: + resolution: {integrity: sha512-mb3mlDkQTIzQm0TWvW1n13srNKek3mc4fWNaGsveITlIkKMOi8499rT5B2ZFQDw2+G3LKvjNYkUKIt+OfECqPw==} + engines: {node: ^20.19.0 || >=22.12.0} + + oxlint@1.63.0: + resolution: {integrity: sha512-9TGXetdjgIHOJ9OiReomP7nnrMkV9HxC1xM2ramJSLQpzxjsAJtQwa4wqkJN2f/uCrqZuJseFuSlWDdvcruveg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=0.22.1' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + + oxlint@1.77.0: + resolution: {integrity: sha512-qnGh8XJHaQ0dprrDXNQZgS0FgjI6v+V3+X8DwmaV++5Aamy6jGKfDdQ1TUvhUxtmKFAbEf4/WeO5QZX+5WSngg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + oxlint-tsgolint: '>=7.0.2001' + vite-plus: '*' + peerDependenciesMeta: + oxlint-tsgolint: + optional: true + vite-plus: + optional: true + + p-filter@2.1.0: + resolution: {integrity: sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==} + engines: {node: '>=8'} + + p-finally@1.0.0: + resolution: {integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==} + engines: {node: '>=4'} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-map@2.1.0: + resolution: {integrity: sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==} + engines: {node: '>=6'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + package-manager-detector@0.2.11: + resolution: {integrity: sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-is-absolute@1.0.1: + resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} + engines: {node: '>=0.10.0'} + + path-key@2.0.1: + resolution: {integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==} + engines: {node: '>=4'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-parse@1.0.7: + resolution: {integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-type@4.0.0: + resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} + engines: {node: '>=8'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.5: + resolution: {integrity: sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==} + engines: {node: '>=12'} + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pify@3.0.0: + resolution: {integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==} + engines: {node: '>=4'} + + pify@4.0.1: + resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} + engines: {node: '>=6'} + + pinkie-promise@2.0.1: + resolution: {integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==} + engines: {node: '>=0.10.0'} + + pinkie@2.0.4: + resolution: {integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==} + engines: {node: '>=0.10.0'} + + pkg-types@1.3.1: + resolution: {integrity: sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==} + + pkg-types@2.3.1: + resolution: {integrity: sha512-y+ichcgc2LrADuhLNAx8DFjVfgz91pRxfZdI3UDhxHvcVEZsenLO+7XaU5vOp0u/7V/wZ+plyuQxtrDlZJ+yeg==} + + pkijs@3.4.0: + resolution: {integrity: sha512-emEcLuomt2j03vxD54giVB4SxTjnsqkU692xZOZXHDVoYyypEm+b3jpiTcc+Cf+myooc+/Ly0z01jqeNHVgJGw==} + engines: {node: '>=16.0.0'} + + possible-typed-array-names@1.1.0: + resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} + engines: {node: '>= 0.4'} + + postcss@8.5.26: + resolution: {integrity: sha512-u82N74LFzG8ca+dD8puPnplTXoGH4fTPpVGuIbt36G3qvNlkvfD0lEAZSxaly3KX8TS/L1A1gsCEmvKmBcVbkQ==} + engines: {node: ^10 || ^12 || >=14} + + prebuild-install@7.1.3: + resolution: {integrity: sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug==} + engines: {node: '>=10'} + deprecated: No longer maintained. Please contact the author of the relevant native addon; alternatives are available. + hasBin: true + + prettier@2.8.8: + resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} + engines: {node: '>=10.13.0'} + hasBin: true + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protobufjs@7.6.5: + resolution: {integrity: sha512-/FPD0nUc9jH6rfFjji9IBqOz4pcSE3CsT1m7Ep6Mdb0LxSUMj8hgl6GomOvZzpNpAqqGaXA0P3VSrZLFzIhQrw==} + engines: {node: '>=12.0.0'} + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + + pvtsutils@1.3.6: + resolution: {integrity: sha512-PLgQXQ6H2FWCaeRak8vvk1GW462lMxB5s3Jm673N82zI4vqtVUPuZdffdZbPDFRoU8kAhItWFtPCWiPpp4/EDg==} + + pvutils@1.2.0: + resolution: {integrity: sha512-BbubeCEyTuQjVMakvJQ/Sxbc93F2pwmbsxONT/ZRrwU7Ua38d8unYTwXpTVLAKJ4BDuH9IGztCjQcd/N/39Dvg==} + engines: {node: '>=16.0.0'} + + quansync@0.2.11: + resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quickjs-emscripten-core@0.32.0: + resolution: {integrity: sha512-QFnPfjFey8EqknSrSxe1hZrf1/8z7/6s1QzGOmKo6++02r7QRRX7ZoyNaZh7JuVjWsVW87KnQrbZqnHkOAzUyg==} + + quickjs-emscripten@0.32.0: + resolution: {integrity: sha512-So0Sqw869y/S2oE3Nuc0uT3Dhqgvsj8FSrwBdsuTosVsG8ME5/OcudU1GxsrIFdFABgy17GHnTVO9TYV/bLQcA==} + engines: {node: '>=16.0.0'} + + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + + rbush@4.0.1: + resolution: {integrity: sha512-IP0UpfeWQujYC8Jg162rMNc01Rf0gWMMAb2Uxus/Q0qOFw4lCcq6ZnQEZwUoJqWyUGJ9th7JjwI4yIWo+uvoAQ==} + + rc@1.2.8: + resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==} + hasBin: true + + react-dom@19.2.8: + resolution: {integrity: sha512-rVprimfGBG3DR+Tq0IQG2DT5PxKth1WIGDmj5yPmlzr4YBe7uyE+Du4oVqTDXZSHGGGXRtTJEGSSePyQCMBglQ==} + peerDependencies: + react: ^19.2.8 + + react@19.2.8: + resolution: {integrity: sha512-PWaYA1L/q9u2u7xYQi+Y3L3Yfnie7XyLeaJICV1MGD6LprsBxcAqGjYyr0eY3p+QdsA+x/Irkt4Qif8D63+Sbw==} + engines: {node: '>=0.10.0'} + + read-yaml-file@1.1.0: + resolution: {integrity: sha512-VIMnQi/Z4HT2Fxuwg5KrY174U1VdUIASQVWXXyqtNRtxSr9IYkn1rsI6Tb6HsrHCmB7gVpNwX6JxPTHcH6IoTA==} + engines: {node: '>=6'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + rechoir@0.6.2: + resolution: {integrity: sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==} + engines: {node: '>= 0.10'} + + reflect-metadata@0.2.2: + resolution: {integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resize-observer-polyfill@1.5.1: + resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + + resolve@1.22.12: + resolution: {integrity: sha512-TyeJ1zif53BPfHootBGwPRYT1RUt6oGWsaQr8UyZW/eAm9bKoijtvruSDEmZHm92CwS9nj7/fWttqPCgzep8CA==} + engines: {node: '>= 0.4'} + hasBin: true + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rolldown-plugin-dts@0.26.0: + resolution: {integrity: sha512-e+kEPtUiDES0htk5iqkSeF4EzAV7R+vugGB44iPDuw1Kw9E+WyL1VG7PaV0IIjGHLiacztMBcMTyrr8ON9CT1Q==} + engines: {node: ^22.18.0 || >=24.11.0} + peerDependencies: + '@ts-macro/tsc': ^0.3.6 + '@typescript/native-preview': '>=7.0.0-dev.20260325.1' + rolldown: ^1.0.0 + typescript: ^5.0.0 || ^6.0.0 + vue-tsc: ~3.2.0 || ~3.3.0 + peerDependenciesMeta: + '@ts-macro/tsc': + optional: true + '@typescript/native-preview': + optional: true + typescript: + optional: true + vue-tsc: + optional: true + + rolldown@1.2.3: + resolution: {integrity: sha512-rn9wpmxplLf7NLNyCk9FyWh3FM43DbY8jOzCdEPzH7uflhTftRbCEpqi6Ly2osgoU8OwObtmavMbWLaWy4LX7A==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + + rollup-plugin-copy@3.5.0: + resolution: {integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==} + engines: {node: '>=8.3'} + + rollup-plugin-sourcemaps2@0.5.8: + resolution: {integrity: sha512-c5BfiVbKAmaz+RoEhFF44Tg/X2QoLxEB8F7wS/eNWDJF/NKxi0SF7srN3Dg0RUnIcYLyCOwscket5Mr3BImMbg==} + engines: {node: '>=22.13.0'} + peerDependencies: + '@types/node': '>=18.0.0' + rollup: '>=4' + peerDependenciesMeta: + '@types/node': + optional: true + + rollup@4.62.4: + resolution: {integrity: sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safe-stable-stringify@2.5.0: + resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==} + engines: {node: '>=10'} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + scheduler@0.27.0: + resolution: {integrity: sha512-eNv+WrVbKu1f3vbYJT/xtiF5syA5HPIMtf9IgY/nKg0sWqzAUEvqY/xm7OcZc/qafLx/iO9FgOmeSAp4v5ti/Q==} + + seek-bzip@1.0.6: + resolution: {integrity: sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==} + hasBin: true + + selfsigned@5.5.0: + resolution: {integrity: sha512-ftnu3TW4+3eBfLRFnDEkzGxSF/10BJBkaLJuBHZX0kiPS7bRdlpZGu6YGt4KngMkdTwJE6MbjavFpqHvqVt+Ew==} + engines: {node: '>=18'} + + semver@5.7.2: + resolution: {integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==} + hasBin: true + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + semver@7.8.5: + resolution: {integrity: sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==} + engines: {node: '>=10'} + hasBin: true + + set-function-length@1.2.2: + resolution: {integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==} + engines: {node: '>= 0.4'} + + shebang-command@1.2.0: + resolution: {integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==} + engines: {node: '>=0.10.0'} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@1.0.0: + resolution: {integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==} + engines: {node: '>=0.10.0'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shelljs@0.9.2: + resolution: {integrity: sha512-S3I64fEiKgTZzKCC46zT/Ib9meqofLrQVbpSswtjFfAVDW+AZ54WTnAM/3/yENoxz/V1Cy6u3kiiEbQ4DNphvw==} + engines: {node: '>=18'} + hasBin: true + + shx@0.4.0: + resolution: {integrity: sha512-Z0KixSIlGPpijKgcH6oCMCbltPImvaKy0sGH8AkLRXw1KyzpKtaCTizP2xen+hNDqVF4xxgvA0KXSb9o4Q6hnA==} + engines: {node: '>=18'} + hasBin: true + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-concat@1.0.1: + resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==} + + simple-get@4.0.1: + resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==} + + slash@3.0.0: + resolution: {integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==} + engines: {node: '>=8'} + + sortablejs@1.15.7: + resolution: {integrity: sha512-Kk8wLQPlS+yi1ZEf48a4+fzHa4yxjC30M/Sr2AnQu+f/MPwvvX9XjZ6OWejiz8crBsLwSq8GHqaxaET7u6ux0A==} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spawndamnit@3.0.1: + resolution: {integrity: sha512-MmnduQUuHCoFckZoWnXsTg7JaiLBJrKFj9UI2MbRPGaJeVpsLcVBu6P/IGZovziM/YBsellCmsprgNA+w0CzVg==} + + sprintf-js@1.0.3: + resolution: {integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==} + + ssh2@1.17.0: + resolution: {integrity: sha512-wPldCk3asibAjQ/kziWQQt1Wh3PgDFpC0XpwclzKcdT1vql6KeYxf5LIt4nlFkUeR8WuphYMKqUA56X4rjbfgQ==} + engines: {node: '>=10.16.0'} + + stack-trace@0.0.10: + resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + std-env@4.2.0: + resolution: {integrity: sha512-oCUKSupKTHX53EyjDtuZQ64pjLJ6yYCtpmEw0goYxtjG9KpbRe8KAsl2tBUGU9DyMcJ0RwJ8GqJAFzMXcXW1Rw==} + + stream-browserify@3.0.0: + resolution: {integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==} + + streamx@2.28.0: + resolution: {integrity: sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-bom@3.0.0: + resolution: {integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==} + engines: {node: '>=4'} + + strip-dirs@2.1.0: + resolution: {integrity: sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==} + + strip-eof@1.0.0: + resolution: {integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==} + engines: {node: '>=0.10.0'} + + strip-json-comments@2.0.1: + resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==} + engines: {node: '>=0.10.0'} + + strnum@2.4.1: + resolution: {integrity: sha512-M9eUSMT2dCB2cTNPG7UYj6KuK7RJR2SN2+yCV/fTW3xzTCS6EaGZ5pSMgDIjB7r8zSfTGk+dvvn9rTjpVS9Mwg==} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + supports-preserve-symlinks-flag@1.0.0: + resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} + engines: {node: '>= 0.4'} + + tar-fs@2.1.5: + resolution: {integrity: sha512-OboTd8mmMhZDNPV+UjQcK9yKAatXu2aJ+r1w4im1Otd4M4fl2hwvdoXUxIYHFTHWK/3y3FarBP70v3vwmGlOxw==} + + tar-fs@3.1.3: + resolution: {integrity: sha512-/hU4AXnIdZu+Gvl1pk0oI5f5HxWsCJRtY2aFaJdk9VvyL48DWU6iU5WAIPG+wIi1YvWA6eTJvIviP/tMAZZNwQ==} + + tar-stream@1.6.2: + resolution: {integrity: sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==} + engines: {node: '>= 0.8.0'} + + tar-stream@2.2.0: + resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==} + engines: {node: '>=6'} + + tar-stream@3.2.0: + resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} + + tar@7.5.22: + resolution: {integrity: sha512-MFO/QzvtAOmJbkhOaCTvbGcFN9L9b+JunIsDwaKljSOdcLMea3NJ1k9Usz/rjdfSXTq4dfzfeS7W4p4YOAAHeA==} + engines: {node: '>=18'} + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + + term-size@2.2.1: + resolution: {integrity: sha512-wK0Ri4fOGjv/XPy8SBHZChl8CM7uMc5VML7SqiQ0zG7+J5Vr+RMQDoHa2CNT6KHUnTGIXH34UDMkPzAUyapBZg==} + engines: {node: '>=8'} + + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + + text-hex@1.0.0: + resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.3.0: + resolution: {integrity: sha512-QKAl9m8gWWGHV8jZcPeym6j+XULi6tOf1mT83WYJ4Lk2ytW/uwAWkrP0uFsdoYMdueVJ0qs26wZ+23xeB4ibNQ==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinypool@2.1.0: + resolution: {integrity: sha512-Pugqs6M0m7Lv1I7FtxN4aoyToKg1C4tu+/381vH35y8oENM/Ai7f7C4StcoK4/+BSw9ebcS8jRiVrORFKCALLw==} + engines: {node: ^20.0.0 || >=22.0.0} + + tinyrainbow@3.1.1: + resolution: {integrity: sha512-yau8yJdTt989Mm0Bd/236QnzEiPf2xLLTqUZRUJOo/3CB078LSwzei343DgtJVmfJKJE3TMINY1u42SQsP6mXw==} + engines: {node: '>=14.0.0'} + + to-buffer@1.2.2: + resolution: {integrity: sha512-db0E3UJjcFhpDhAF4tLo03oli3pwl3dbnzXOUIlRKrp+ldk/VUxzpWYZENsw2SZiuBjHAk7DfB0VU7NKdpb6sw==} + engines: {node: '>= 0.4'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + tr46@0.0.3: + resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} + + triple-beam@1.4.1: + resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==} + engines: {node: '>= 14.0.0'} + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tsyringe@4.10.0: + resolution: {integrity: sha512-axr3IdNuVIxnaK5XGEUFTu3YmAQ6lllgrvqfEoR16g/HGnYY/6We4oWENtAnzK6/LpJ2ur9PAb80RBt7/U4ugw==} + engines: {node: '>= 6.0.0'} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + turbo@2.8.21: + resolution: {integrity: sha512-FlJ8OD5Qcp0jTAM7E4a/RhUzRNds2GzKlyxHKA6N247VLy628rrxAGlMpIXSz6VB430+TiQDJ/SMl6PL1lu6wQ==} + hasBin: true + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + typed-array-buffer@1.0.3: + resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} + engines: {node: '>= 0.4'} + + typescript@3.9.10: + resolution: {integrity: sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==} + engines: {node: '>=4.2.0'} + hasBin: true + + typescript@5.4.5: + resolution: {integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.6.3: + resolution: {integrity: sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + typescript@7.0.2: + resolution: {integrity: sha512-8FYau96o3NKOhbjKi/qNvG/W5jhzxkbdm5sj9AbZ/5T5sWqn3hJgLfGx27sRKZWTvyzCP8dLRBTf5tBTSRVUNA==} + engines: {node: '>=16.20.0'} + hasBin: true + + ufo@1.6.4: + resolution: {integrity: sha512-JFNbkD1Svwe0KvGi8GOeLcP4kAWQ609twvCdcHxq1oSL8svv39ZuSvajcD8B+5D0eL4+s1Is2D/O6KN3qcTeRA==} + + ulid@3.0.2: + resolution: {integrity: sha512-yu26mwteFYzBAot7KVMqFGCVpsF6g8wXfJzQUHvu1no3+rRRSFcSV2nKeYvNPLD2J4b08jYBDhHUjeH0ygIl9w==} + hasBin: true + + unbzip2-stream@1.4.3: + resolution: {integrity: sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==} + + undici-types@7.12.0: + resolution: {integrity: sha512-goOacqME2GYyOZZfb5Lgtu+1IDmAlAEu5xnD3+xTzS10hT0vzpf0SPjkXwAw9Jm+4n/mQGDP3LO8CPbYROeBfQ==} + + undici-types@8.3.0: + resolution: {integrity: sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==} + + undici@7.16.0: + resolution: {integrity: sha512-QEg3HPMll0o3t2ourKwOeUAZ159Kn9mx5pnzHRQO8+Wixmh88YdZRiIwat0iNzNNXn0yoEtXJqFpyW7eM8BV7g==} + engines: {node: '>=20.18.1'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + upath@2.0.1: + resolution: {integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==} + engines: {node: '>=4'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utility-types@3.11.0: + resolution: {integrity: sha512-6Z7Ma2aVEWisaL6TvBCy7P8rm2LQoPv6dJ7ecIaIixHcwfbJ0x7mWdbcwlIM5IGQxPZSFYeqRCqlOOeKoJYMkw==} + engines: {node: '>= 4'} + + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). + hasBin: true + + vite-plugin-commonjs@0.10.4: + resolution: {integrity: sha512-eWQuvQKCcx0QYB5e5xfxBNjQKyrjEWZIR9UOkOV6JAgxVhtbZvCOF+FNC2ZijBJ3U3Px04ZMMyyMyFBVWIJ5+g==} + + vite-plugin-dts@4.5.4: + resolution: {integrity: sha512-d4sOM8M/8z7vRXHHq/ebbblfaxENjogAAekcfcDCCwAyvGqnPrc7f4NZbvItS+g4WTgerW0xDwSz5qz11JT3vg==} + peerDependencies: + typescript: '*' + vite: '*' + peerDependenciesMeta: + vite: + optional: true + + vite-plugin-dynamic-import@1.6.0: + resolution: {integrity: sha512-TM0sz70wfzTIo9YCxVFwS8OA9lNREsh+0vMHGSkWDTZ7bgd1Yjs5RV8EgB634l/91IsXJReg0xtmuQqP0mf+rg==} + + vite-plugin-externalize-deps@0.10.0: + resolution: {integrity: sha512-eQrtpT/Do7AvDn76l1yL6ZHyXJ+UWH2LaHVqhAes9go54qaAnPZuMbgxcroQ/7WY3ZyetZzYW2quQnDF0DV5qg==} + peerDependencies: + vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 + + vite-plugin-lib-inject-css@2.2.2: + resolution: {integrity: sha512-NF30p0GwtfSAmVlxo2NgPXM2rEdtgV7LFi4lkzajKD7P3Ru/ZAFmI533M0Z5qyMZpvNMxVGkewzpjD0HOWtbDQ==} + peerDependencies: + vite: '*' + + vite@7.3.6: + resolution: {integrity: sha512-4XP60spRGjSZFf1qYH+dJIkK2znL3zQfl9KkOV9MkkRR/3Dls0dxaBsQPTloEc5BLXWPL9vsOxopxyKoMmDueg==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vite@8.2.1: + resolution: {integrity: sha512-EU/eS7BH3XROHh2YnBefjM6DBKA6ZeMZEYQbj7NLWg5wHYlhB8B/Mayd5XsgWq+NFYccDOTemRpdETWR6Ka/lw==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + '@vitejs/devtools': ^0.4.0 + esbuild: ^0.27.0 || ^0.28.0 + jiti: '>=1.21.0' + less: ^4.0.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + '@vitejs/devtools': + optional: true + esbuild: + optional: true + jiti: + optional: true + less: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.0.18: + resolution: {integrity: sha512-hOQuK7h0FGKgBAas7v0mSAsnvrIgAvWmRFjmzpJ7SwFHH3g1k2u37JtYwOwmEKhK6ZO3v9ggDBBm0La1LCK4uQ==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.0.18 + '@vitest/browser-preview': 4.0.18 + '@vitest/browser-webdriverio': 4.0.18 + '@vitest/ui': 4.0.18 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vitest@4.1.10: + resolution: {integrity: sha512-R9jUTe5S4Qb0HCd4TNqpC7oGcrMssMRGXLW80ubjWsW9VH5GF8y1Y0SFLY9AbqSk6nt0PnOx4H4WNJYZ13GUPw==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.10 + '@vitest/browser-preview': 4.1.10 + '@vitest/browser-webdriverio': 4.1.10 + '@vitest/coverage-istanbul': 4.1.10 + '@vitest/coverage-v8': 4.1.10 + '@vitest/ui': 4.1.10 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-component-type-helpers@3.3.9: + resolution: {integrity: sha512-3c/UfMe0SqyEfcGTyH7mfshHagJ9QTCbppCb0/uGpHZpFug7+If3GeGZN7I0YheKEExemx3xldQPoO7PQSOLQg==} + + vue-tsc@3.3.5: + resolution: {integrity: sha512-Rzh/G2MmNlMSAMTiQEjDrsb4dgB/jbtEM47rVN2NtidF1dfb/q4w4QvpQBtW5+y3y5H27Hjh7deVwk+YB02fNg==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.24: + resolution: {integrity: sha512-uTHDOpVQTMjcGgrqFPSb8iO2m1DUvo+WbGqoXQz8Y1CeBYQ0FXf2z1gLRaBtHjlRz7zZUBHxjVB5VTLzYkvftg==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + webidl-conversions@3.0.1: + resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} + + whatwg-url@5.0.0: + resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} + + which-typed-array@1.1.22: + resolution: {integrity: sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==} + engines: {node: '>= 0.4'} + + which@1.3.1: + resolution: {integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==} + hasBin: true + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + winston-transport@4.9.0: + resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==} + engines: {node: '>= 12.0.0'} + + winston@3.19.0: + resolution: {integrity: sha512-LZNJgPzfKR+/J3cHkxcpHKpKKvGfDZVPS4hfJCc4cCG0CgYzvlD6yE/S3CIL/Yt91ak327YCpiF/0MyeZHEHKA==} + engines: {node: '>= 12.0.0'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + xtend@4.0.2: + resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==} + engines: {node: '>=0.4'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@2.9.0: + resolution: {integrity: sha512-2AvhNX3mb8zd6Zy7INTtSpl1F15HW6Wnqj0srWlkKLcpYl/gMIMJiyuGq2KeI2YFxUPjdlB+3Lc10seMLtL4cA==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.3: + resolution: {integrity: sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==} + engines: {node: '>=12'} + + yauzl@2.10.0: + resolution: {integrity: sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==} + + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + + zod@3.25.76: + resolution: {integrity: sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ==} + +snapshots: + + '@ag-grid-community/core@32.3.9': + dependencies: + ag-charts-types: 10.3.9 + tslib: 2.8.1 + + '@ast-grep/napi-darwin-arm64@0.36.3': + optional: true + + '@ast-grep/napi-darwin-x64@0.36.3': + optional: true + + '@ast-grep/napi-linux-arm64-gnu@0.36.3': + optional: true + + '@ast-grep/napi-linux-arm64-musl@0.36.3': + optional: true + + '@ast-grep/napi-linux-x64-gnu@0.36.3': + optional: true + + '@ast-grep/napi-linux-x64-musl@0.36.3': + optional: true + + '@ast-grep/napi-win32-arm64-msvc@0.36.3': + optional: true + + '@ast-grep/napi-win32-ia32-msvc@0.36.3': + optional: true + + '@ast-grep/napi-win32-x64-msvc@0.36.3': + optional: true + + '@ast-grep/napi@0.36.3': + optionalDependencies: + '@ast-grep/napi-darwin-arm64': 0.36.3 + '@ast-grep/napi-darwin-x64': 0.36.3 + '@ast-grep/napi-linux-arm64-gnu': 0.36.3 + '@ast-grep/napi-linux-arm64-musl': 0.36.3 + '@ast-grep/napi-linux-x64-gnu': 0.36.3 + '@ast-grep/napi-linux-x64-musl': 0.36.3 + '@ast-grep/napi-win32-arm64-msvc': 0.36.3 + '@ast-grep/napi-win32-ia32-msvc': 0.36.3 + '@ast-grep/napi-win32-x64-msvc': 0.36.3 + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-locate-window': 3.965.8 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-locate-window': 3.965.8 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.840.0 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-ecr-public@3.859.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/credential-provider-node': 3.859.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.858.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.858.0 + '@smithy/config-resolver': 4.6.16 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/hash-node': 4.4.16 + '@smithy/invalid-dependency': 4.4.16 + '@smithy/middleware-content-length': 4.4.16 + '@smithy/middleware-endpoint': 4.6.16 + '@smithy/middleware-retry': 4.7.16 + '@smithy/middleware-serde': 4.4.16 + '@smithy/middleware-stack': 4.4.16 + '@smithy/node-config-provider': 4.5.16 + '@smithy/node-http-handler': 4.9.13 + '@smithy/protocol-http': 5.5.16 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/url-parser': 4.4.16 + '@smithy/util-base64': 4.5.16 + '@smithy/util-body-length-browser': 4.4.16 + '@smithy/util-body-length-node': 4.4.16 + '@smithy/util-defaults-mode-browser': 4.5.16 + '@smithy/util-defaults-mode-node': 4.4.16 + '@smithy/util-endpoints': 3.6.16 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-retry': 4.5.16 + '@smithy/util-utf8': 4.4.16 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.859.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/credential-provider-node': 3.859.0 + '@aws-sdk/middleware-bucket-endpoint': 3.840.0 + '@aws-sdk/middleware-expect-continue': 3.840.0 + '@aws-sdk/middleware-flexible-checksums': 3.858.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-location-constraint': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-sdk-s3': 3.858.0 + '@aws-sdk/middleware-ssec': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.858.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/signature-v4-multi-region': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.858.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/config-resolver': 4.6.16 + '@smithy/core': 3.31.1 + '@smithy/eventstream-serde-browser': 4.4.16 + '@smithy/eventstream-serde-config-resolver': 4.5.16 + '@smithy/eventstream-serde-node': 4.4.16 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/hash-blob-browser': 4.4.16 + '@smithy/hash-node': 4.4.16 + '@smithy/hash-stream-node': 4.4.16 + '@smithy/invalid-dependency': 4.4.16 + '@smithy/md5-js': 4.4.16 + '@smithy/middleware-content-length': 4.4.16 + '@smithy/middleware-endpoint': 4.6.16 + '@smithy/middleware-retry': 4.7.16 + '@smithy/middleware-serde': 4.4.16 + '@smithy/middleware-stack': 4.4.16 + '@smithy/node-config-provider': 4.5.16 + '@smithy/node-http-handler': 4.9.13 + '@smithy/protocol-http': 5.5.16 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/url-parser': 4.4.16 + '@smithy/util-base64': 4.5.16 + '@smithy/util-body-length-browser': 4.4.16 + '@smithy/util-body-length-node': 4.4.16 + '@smithy/util-defaults-mode-browser': 4.5.16 + '@smithy/util-defaults-mode-node': 4.4.16 + '@smithy/util-endpoints': 3.6.16 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-retry': 4.5.16 + '@smithy/util-stream': 4.7.16 + '@smithy/util-utf8': 4.4.16 + '@smithy/util-waiter': 4.5.16 + '@types/uuid': 9.0.8 + tslib: 2.8.1 + uuid: 9.0.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-sso@3.858.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.858.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.858.0 + '@smithy/config-resolver': 4.6.16 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/hash-node': 4.4.16 + '@smithy/invalid-dependency': 4.4.16 + '@smithy/middleware-content-length': 4.4.16 + '@smithy/middleware-endpoint': 4.6.16 + '@smithy/middleware-retry': 4.7.16 + '@smithy/middleware-serde': 4.4.16 + '@smithy/middleware-stack': 4.4.16 + '@smithy/node-config-provider': 4.5.16 + '@smithy/node-http-handler': 4.9.13 + '@smithy/protocol-http': 5.5.16 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/url-parser': 4.4.16 + '@smithy/util-base64': 4.5.16 + '@smithy/util-body-length-browser': 4.4.16 + '@smithy/util-body-length-node': 4.4.16 + '@smithy/util-defaults-mode-browser': 4.5.16 + '@smithy/util-defaults-mode-node': 4.4.16 + '@smithy/util-endpoints': 3.6.16 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-retry': 4.5.16 + '@smithy/util-utf8': 4.4.16 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.858.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@aws-sdk/xml-builder': 3.821.0 + '@smithy/core': 3.31.1 + '@smithy/node-config-provider': 4.5.16 + '@smithy/property-provider': 4.4.16 + '@smithy/protocol-http': 5.5.16 + '@smithy/signature-v4': 5.6.12 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/util-base64': 4.5.16 + '@smithy/util-body-length-browser': 4.4.16 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-utf8': 4.4.16 + fast-xml-parser: 5.2.5 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.858.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.858.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/node-http-handler': 4.9.13 + '@smithy/property-provider': 4.4.16 + '@smithy/protocol-http': 5.5.16 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/util-stream': 4.7.16 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.859.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/credential-provider-env': 3.858.0 + '@aws-sdk/credential-provider-http': 3.858.0 + '@aws-sdk/credential-provider-process': 3.858.0 + '@aws-sdk/credential-provider-sso': 3.859.0 + '@aws-sdk/credential-provider-web-identity': 3.858.0 + '@aws-sdk/nested-clients': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/property-provider': 4.4.16 + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.859.0': + dependencies: + '@aws-sdk/credential-provider-env': 3.858.0 + '@aws-sdk/credential-provider-http': 3.858.0 + '@aws-sdk/credential-provider-ini': 3.859.0 + '@aws-sdk/credential-provider-process': 3.858.0 + '@aws-sdk/credential-provider-sso': 3.859.0 + '@aws-sdk/credential-provider-web-identity': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/credential-provider-imds': 4.4.16 + '@smithy/property-provider': 4.4.16 + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.858.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.4.16 + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.859.0': + dependencies: + '@aws-sdk/client-sso': 3.858.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/token-providers': 3.859.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.4.16 + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.858.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/nested-clients': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.4.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/lib-storage@3.859.0(@aws-sdk/client-s3@3.859.0)': + dependencies: + '@aws-sdk/client-s3': 3.859.0 + '@smithy/abort-controller': 4.3.3 + '@smithy/middleware-endpoint': 4.6.16 + '@smithy/smithy-client': 4.14.16 + buffer: 5.6.0 + events: 3.3.0 + stream-browserify: 3.0.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-bucket-endpoint@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/node-config-provider': 4.5.16 + '@smithy/protocol-http': 5.5.16 + '@smithy/types': 4.16.1 + '@smithy/util-config-provider': 4.4.16 + tslib: 2.8.1 + + '@aws-sdk/middleware-expect-continue@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.5.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.858.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/is-array-buffer': 4.4.16 + '@smithy/node-config-provider': 4.5.16 + '@smithy/protocol-http': 5.5.16 + '@smithy/types': 4.16.1 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-stream': 4.7.16 + '@smithy/util-utf8': 4.4.16 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.5.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-location-constraint@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.5.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.858.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-arn-parser': 3.804.0 + '@smithy/core': 3.31.1 + '@smithy/node-config-provider': 4.5.16 + '@smithy/protocol-http': 5.5.16 + '@smithy/signature-v4': 5.6.12 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/util-config-provider': 4.4.16 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-stream': 4.7.16 + '@smithy/util-utf8': 4.4.16 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.858.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@smithy/core': 3.31.1 + '@smithy/protocol-http': 5.5.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.858.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.858.0 + '@aws-sdk/middleware-host-header': 3.840.0 + '@aws-sdk/middleware-logger': 3.840.0 + '@aws-sdk/middleware-recursion-detection': 3.840.0 + '@aws-sdk/middleware-user-agent': 3.858.0 + '@aws-sdk/region-config-resolver': 3.840.0 + '@aws-sdk/types': 3.840.0 + '@aws-sdk/util-endpoints': 3.848.0 + '@aws-sdk/util-user-agent-browser': 3.840.0 + '@aws-sdk/util-user-agent-node': 3.858.0 + '@smithy/config-resolver': 4.6.16 + '@smithy/core': 3.31.1 + '@smithy/fetch-http-handler': 5.6.13 + '@smithy/hash-node': 4.4.16 + '@smithy/invalid-dependency': 4.4.16 + '@smithy/middleware-content-length': 4.4.16 + '@smithy/middleware-endpoint': 4.6.16 + '@smithy/middleware-retry': 4.7.16 + '@smithy/middleware-serde': 4.4.16 + '@smithy/middleware-stack': 4.4.16 + '@smithy/node-config-provider': 4.5.16 + '@smithy/node-http-handler': 4.9.13 + '@smithy/protocol-http': 5.5.16 + '@smithy/smithy-client': 4.14.16 + '@smithy/types': 4.16.1 + '@smithy/url-parser': 4.4.16 + '@smithy/util-base64': 4.5.16 + '@smithy/util-body-length-browser': 4.4.16 + '@smithy/util-body-length-node': 4.4.16 + '@smithy/util-defaults-mode-browser': 4.5.16 + '@smithy/util-defaults-mode-node': 4.4.16 + '@smithy/util-endpoints': 3.6.16 + '@smithy/util-middleware': 4.4.16 + '@smithy/util-retry': 4.5.16 + '@smithy/util-utf8': 4.4.16 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/node-config-provider': 4.5.16 + '@smithy/types': 4.16.1 + '@smithy/util-config-provider': 4.4.16 + '@smithy/util-middleware': 4.4.16 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.858.0': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/protocol-http': 5.5.16 + '@smithy/signature-v4': 5.6.12 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.859.0': + dependencies: + '@aws-sdk/core': 3.858.0 + '@aws-sdk/nested-clients': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/property-provider': 4.4.16 + '@smithy/shared-ini-file-loader': 4.6.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.840.0': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.804.0': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.848.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.16.1 + '@smithy/url-parser': 4.4.16 + '@smithy/util-endpoints': 3.6.16 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.965.8': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.840.0': + dependencies: + '@aws-sdk/types': 3.840.0 + '@smithy/types': 4.16.1 + bowser: 2.14.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.858.0': + dependencies: + '@aws-sdk/middleware-user-agent': 3.858.0 + '@aws-sdk/types': 3.840.0 + '@smithy/node-config-provider': 4.5.16 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.821.0': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.8': + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/generator@8.0.0': + dependencies: + '@babel/parser': 8.0.4 + '@babel/types': 8.0.4 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + '@types/jsesc': 2.5.1 + jsesc: 3.1.0 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.7 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.8 + '@babel/types': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.8 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-string-parser@8.0.0': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-identifier@8.0.4': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + + '@babel/parser@7.29.8': + dependencies: + '@babel/types': 7.29.8 + + '@babel/parser@8.0.4': + dependencies: + '@babel/types': 8.0.4 + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + + '@babel/traverse@7.29.8': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.8 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.8 + '@babel/template': 7.29.7 + '@babel/types': 7.29.8 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.8': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@babel/types@8.0.4': + dependencies: + '@babel/helper-string-parser': 8.0.0 + '@babel/helper-validator-identifier': 8.0.4 + + '@bufbuild/protobuf@2.13.0': {} + + '@bufbuild/protoplugin@2.13.0': + dependencies: + '@bufbuild/protobuf': 2.13.0 + '@typescript/vfs': 1.6.4(typescript@5.4.5) + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@bytecodealliance/preview2-shim@0.17.9': {} + + '@changesets/apply-release-plan@7.1.1': + dependencies: + '@changesets/config': 3.1.4 + '@changesets/get-version-range-type': 0.4.0 + '@changesets/git': 3.0.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + detect-indent: 6.1.0 + fs-extra: 7.0.1 + lodash.startcase: 4.4.0 + outdent: 0.5.0 + prettier: 2.8.8 + resolve-from: 5.0.0 + semver: 7.8.5 + + '@changesets/assemble-release-plan@6.0.10': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + semver: 7.8.5 + + '@changesets/changelog-git@0.2.1': + dependencies: + '@changesets/types': 6.1.0 + + '@changesets/cli@2.29.8(@types/node@26.1.2)': + dependencies: + '@changesets/apply-release-plan': 7.1.1 + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/changelog-git': 0.2.1 + '@changesets/config': 3.1.4 + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/get-release-plan': 4.0.16 + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@changesets/write': 0.4.0 + '@inquirer/external-editor': 1.0.3(@types/node@26.1.2) + '@manypkg/get-packages': 1.1.3 + ansi-colors: 4.1.3 + ci-info: 3.9.0 + enquirer: 2.4.1 + fs-extra: 7.0.1 + mri: 1.2.0 + p-limit: 2.3.0 + package-manager-detector: 0.2.11 + picocolors: 1.1.1 + resolve-from: 5.0.0 + semver: 7.8.5 + spawndamnit: 3.0.1 + term-size: 2.2.1 + transitivePeerDependencies: + - '@types/node' + + '@changesets/config@3.1.4': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/get-dependents-graph': 2.1.4 + '@changesets/logger': 0.1.1 + '@changesets/should-skip-package': 0.1.2 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + micromatch: 4.0.8 + + '@changesets/errors@0.2.0': + dependencies: + extendable-error: 0.1.7 + + '@changesets/get-dependents-graph@2.1.4': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + picocolors: 1.1.1 + semver: 7.8.5 + + '@changesets/get-release-plan@4.0.16': + dependencies: + '@changesets/assemble-release-plan': 6.0.10 + '@changesets/config': 3.1.4 + '@changesets/pre': 2.0.2 + '@changesets/read': 0.6.7 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/get-version-range-type@0.4.0': {} + + '@changesets/git@3.0.4': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.8 + spawndamnit: 3.0.1 + + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.1 + + '@changesets/parse@0.4.3': + dependencies: + '@changesets/types': 6.1.0 + js-yaml: 4.3.1 + + '@changesets/pre@2.0.2': + dependencies: + '@changesets/errors': 0.2.0 + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + fs-extra: 7.0.1 + + '@changesets/read@0.6.7': + dependencies: + '@changesets/git': 3.0.4 + '@changesets/logger': 0.1.1 + '@changesets/parse': 0.4.3 + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + p-filter: 2.1.0 + picocolors: 1.1.1 + + '@changesets/should-skip-package@0.1.2': + dependencies: + '@changesets/types': 6.1.0 + '@manypkg/get-packages': 1.1.3 + + '@changesets/types@4.1.0': {} + + '@changesets/types@6.1.0': {} + + '@changesets/write@0.4.0': + dependencies: + '@changesets/types': 6.1.0 + fs-extra: 7.0.1 + human-id: 4.2.0 + prettier: 2.8.8 + + '@colors/colors@1.6.0': {} + + '@d3fc/d3fc-axis@3.0.7(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0)': + dependencies: + '@d3fc/d3fc-data-join': 6.0.3(d3-selection@3.0.0) + '@d3fc/d3fc-rebind': 6.0.1 + d3-scale: 4.0.2 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + + '@d3fc/d3fc-chart@5.1.9(d3-array@3.2.4)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0)': + dependencies: + '@d3fc/d3fc-axis': 3.0.7(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0) + '@d3fc/d3fc-data-join': 6.0.3(d3-selection@3.0.0) + '@d3fc/d3fc-element': 6.2.0 + '@d3fc/d3fc-rebind': 6.0.1 + '@d3fc/d3fc-series': 6.1.3(d3-array@3.2.4)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0) + d3-scale: 4.0.2 + d3-selection: 3.0.0 + transitivePeerDependencies: + - d3-array + - d3-path + - d3-scale-chromatic + - d3-shape + + '@d3fc/d3fc-data-join@6.0.3(d3-selection@3.0.0)': + dependencies: + d3-selection: 3.0.0 + + '@d3fc/d3fc-element@6.2.0': {} + + '@d3fc/d3fc-pointer@3.0.3(d3-dispatch@3.0.1)(d3-selection@3.0.0)': + dependencies: + '@d3fc/d3fc-rebind': 6.0.1 + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + '@d3fc/d3fc-rebind@6.0.1': {} + + '@d3fc/d3fc-series@6.1.3(d3-array@3.2.4)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0)': + dependencies: + '@d3fc/d3fc-data-join': 6.0.3(d3-selection@3.0.0) + '@d3fc/d3fc-rebind': 6.0.1 + '@d3fc/d3fc-shape': 6.0.1(d3-path@3.1.0) + '@d3fc/d3fc-webgl': 3.2.1(d3-scale@4.0.2)(d3-shape@3.2.0) + d3-array: 3.2.4 + d3-scale: 4.0.2 + d3-scale-chromatic: 3.1.0 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + transitivePeerDependencies: + - d3-path + + '@d3fc/d3fc-shape@6.0.1(d3-path@3.1.0)': + dependencies: + d3-path: 3.1.0 + + '@d3fc/d3fc-webgl@3.2.1(d3-scale@4.0.2)(d3-shape@3.2.0)': + dependencies: + '@d3fc/d3fc-rebind': 6.0.1 + d3-scale: 4.0.2 + d3-shape: 3.2.0 + + '@dabh/diagnostics@2.0.8': + dependencies: + '@so-ric/colorspace': 1.1.6 + enabled: 2.0.0 + kuler: 2.0.0 + + '@esbuild/aix-ppc64@0.28.1': + optional: true + + '@esbuild/android-arm64@0.28.1': + optional: true + + '@esbuild/android-arm@0.28.1': + optional: true + + '@esbuild/android-x64@0.28.1': + optional: true + + '@esbuild/darwin-arm64@0.28.1': + optional: true + + '@esbuild/darwin-x64@0.28.1': + optional: true + + '@esbuild/freebsd-arm64@0.28.1': + optional: true + + '@esbuild/freebsd-x64@0.28.1': + optional: true + + '@esbuild/linux-arm64@0.28.1': + optional: true + + '@esbuild/linux-arm@0.28.1': + optional: true + + '@esbuild/linux-ia32@0.28.1': + optional: true + + '@esbuild/linux-loong64@0.28.1': + optional: true + + '@esbuild/linux-mips64el@0.28.1': + optional: true + + '@esbuild/linux-ppc64@0.28.1': + optional: true + + '@esbuild/linux-riscv64@0.28.1': + optional: true + + '@esbuild/linux-s390x@0.28.1': + optional: true + + '@esbuild/linux-x64@0.28.1': + optional: true + + '@esbuild/netbsd-arm64@0.28.1': + optional: true + + '@esbuild/netbsd-x64@0.28.1': + optional: true + + '@esbuild/openbsd-arm64@0.28.1': + optional: true + + '@esbuild/openbsd-x64@0.28.1': + optional: true + + '@esbuild/openharmony-arm64@0.28.1': + optional: true + + '@esbuild/sunos-x64@0.28.1': + optional: true + + '@esbuild/win32-arm64@0.28.1': + optional: true + + '@esbuild/win32-ia32@0.28.1': + optional: true + + '@esbuild/win32-x64@0.28.1': + optional: true + + '@grpc/grpc-js@1.14.4': + dependencies: + '@grpc/proto-loader': 0.8.1 + '@js-sdsl/ordered-map': 4.4.2 + + '@grpc/proto-loader@0.8.1': + dependencies: + lodash.camelcase: 4.3.0 + long: 5.3.2 + protobufjs: 7.6.5 + yargs: 17.7.3 + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@26.1.2)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@26.1.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/confirm@5.1.21(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/core@10.3.2(@types/node@26.1.2)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@26.1.2) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/editor@4.2.23(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/external-editor': 1.0.3(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/expand@4.0.23(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/external-editor@1.0.3(@types/node@26.1.2)': + dependencies: + chardet: 2.2.0 + iconv-lite: 0.7.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@4.3.1(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/number@3.0.23(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/password@4.0.23(@types/node@26.1.2)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/prompts@7.10.1(@types/node@26.1.2)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@26.1.2) + '@inquirer/confirm': 5.1.21(@types/node@26.1.2) + '@inquirer/editor': 4.2.23(@types/node@26.1.2) + '@inquirer/expand': 4.0.23(@types/node@26.1.2) + '@inquirer/input': 4.3.1(@types/node@26.1.2) + '@inquirer/number': 3.0.23(@types/node@26.1.2) + '@inquirer/password': 4.0.23(@types/node@26.1.2) + '@inquirer/rawlist': 4.1.11(@types/node@26.1.2) + '@inquirer/search': 3.2.2(@types/node@26.1.2) + '@inquirer/select': 4.4.2(@types/node@26.1.2) + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/rawlist@4.1.11(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/type': 3.0.10(@types/node@26.1.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/search@3.2.2(@types/node@26.1.2)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@26.1.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/select@4.4.2(@types/node@26.1.2)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@26.1.2) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@26.1.2) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 26.1.2 + + '@inquirer/type@3.0.10(@types/node@26.1.2)': + optionalDependencies: + '@types/node': 26.1.2 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@istanbuljs/schema@0.1.6': {} + + '@jitl/quickjs-ffi-types@0.32.0': {} + + '@jitl/quickjs-wasmfile-debug-asyncify@0.32.0': + dependencies: + '@jitl/quickjs-ffi-types': 0.32.0 + + '@jitl/quickjs-wasmfile-debug-sync@0.32.0': + dependencies: + '@jitl/quickjs-ffi-types': 0.32.0 + + '@jitl/quickjs-wasmfile-release-asyncify@0.32.0': + dependencies: + '@jitl/quickjs-ffi-types': 0.32.0 + + '@jitl/quickjs-wasmfile-release-sync@0.32.0': + dependencies: + '@jitl/quickjs-ffi-types': 0.32.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@js-sdsl/ordered-map@4.4.2': {} + + '@manypkg/find-root@1.1.0': + dependencies: + '@babel/runtime': 7.29.7 + '@types/node': 12.20.55 + find-up: 4.1.0 + fs-extra: 8.1.0 + + '@manypkg/get-packages@1.1.3': + dependencies: + '@babel/runtime': 7.29.7 + '@changesets/types': 4.1.0 + '@manypkg/find-root': 1.1.0 + fs-extra: 8.1.0 + globby: 11.1.0 + read-yaml-file: 1.1.0 + + '@mapbox/node-pre-gyp@2.0.3': + dependencies: + consola: 3.4.2 + detect-libc: 2.1.2 + https-proxy-agent: 7.0.6 + node-fetch: 2.7.0 + nopt: 8.1.0 + semver: 7.8.5 + tar: 7.5.22 + transitivePeerDependencies: + - encoding + - supports-color + + '@microsoft/api-extractor-model@7.33.10(@types/node@26.1.2)': + dependencies: + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.3(@types/node@26.1.2) + transitivePeerDependencies: + - '@types/node' + + '@microsoft/api-extractor@7.58.12(@types/node@26.1.2)': + dependencies: + '@microsoft/api-extractor-model': 7.33.10(@types/node@26.1.2) + '@microsoft/tsdoc': 0.16.0 + '@microsoft/tsdoc-config': 0.18.1 + '@rushstack/node-core-library': 5.23.3(@types/node@26.1.2) + '@rushstack/rig-package': 0.7.3 + '@rushstack/terminal': 0.24.2(@types/node@26.1.2) + '@rushstack/ts-command-line': 5.3.12(@types/node@26.1.2) + diff: 8.0.4 + minimatch: 10.2.3 + resolve: 1.22.12 + semver: 7.7.4 + source-map: 0.6.1 + typescript: 5.9.3 + transitivePeerDependencies: + - '@types/node' + + '@microsoft/tsdoc-config@0.18.1': + dependencies: + '@microsoft/tsdoc': 0.16.0 + ajv: 8.18.0 + jju: 1.4.0 + resolve: 1.22.12 + + '@microsoft/tsdoc@0.16.0': {} + + '@milaboratories/columns-collection-driver@0.2.3': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.47.3 + + '@milaboratories/computable@2.9.8': + dependencies: + '@milaboratories/pl-error-like': 1.12.10 + '@milaboratories/ts-helpers': 1.8.6 + '@types/node': 24.5.2 + utility-types: 3.11.0 + + '@milaboratories/graph-maker@1.6.1(@milaboratories/pl-model-common@1.47.3)(@platforma-sdk/model@1.81.1)(@platforma-sdk/ui-vue@1.81.1(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2))(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(typescript@7.0.2)': + dependencies: + '@ag-grid-community/core': 32.3.9 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/miplots4': 1.4.0(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0) + '@milaboratories/pf-plots': 1.5.0(@milaboratories/pl-model-common@1.47.3)(@platforma-sdk/model@1.81.1) + '@platforma-sdk/model': 1.81.1 + '@platforma-sdk/ui-vue': 1.81.1(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2) + '@types/d3-hierarchy': 3.1.7 + '@types/d3-scale': 4.0.9 + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@7.0.2)) + ag-grid-vue3: 34.1.2(vue@3.5.24(typescript@7.0.2)) + canonicalize: 2.1.0 + d3-hierarchy: 3.1.2 + d3-scale: 4.0.2 + vue: 3.5.24(typescript@7.0.2) + transitivePeerDependencies: + - '@milaboratories/pl-model-common' + - d3-dispatch + - d3-path + - d3-scale-chromatic + - supports-color + - typescript + + '@milaboratories/helpers@1.14.2': {} + + '@milaboratories/helpers@1.14.5': {} + + '@milaboratories/miplots4@1.4.0(d3-dispatch@3.0.1)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)': + dependencies: + '@d3fc/d3fc-chart': 5.1.9(d3-array@3.2.4)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0) + '@d3fc/d3fc-pointer': 3.0.3(d3-dispatch@3.0.1)(d3-selection@3.0.0) + '@d3fc/d3fc-series': 6.1.3(d3-array@3.2.4)(d3-path@3.1.0)(d3-scale-chromatic@3.1.0)(d3-scale@4.0.2)(d3-selection@3.0.0)(d3-shape@3.2.0) + '@d3fc/d3fc-webgl': 3.2.1(d3-scale@4.0.2)(d3-shape@3.2.0) + '@stdlib/stats-anova1': 0.2.3 + '@stdlib/stats-base-dists-f-cdf': 0.2.3 + '@stdlib/stats-kruskal-test': 0.2.3 + '@stdlib/stats-ttest': 0.2.3 + '@stdlib/stats-ttest2': 0.2.3 + '@stdlib/stats-wilcoxon': 0.2.3 + comlink: 4.4.2 + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-color: 3.1.0 + d3-drag: 3.0.0 + d3-format: 3.1.2 + d3-hierarchy: 3.1.2 + d3-polygon: 3.0.1 + d3-quadtree: 3.0.1 + d3-random: 3.0.1 + d3-scale: 4.0.2 + d3-selection: 3.0.0 + d3-shape: 3.2.0 + d3-zoom: 3.0.0 + kdbush: 4.1.0 + lodash: 4.18.1 + rbush: 4.0.1 + react: 19.2.8 + react-dom: 19.2.8(react@19.2.8) + zod: 3.25.76 + transitivePeerDependencies: + - d3-dispatch + - d3-path + - d3-scale-chromatic + - supports-color + + '@milaboratories/pf-driver@1.9.0(@bytecodealliance/preview2-shim@0.17.9)': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-spec': 1.0.0(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pframes-rs-node': 1.1.56 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-middle-layer': 1.31.0 + '@milaboratories/ts-helpers': 1.8.6 + es-toolkit: 1.50.0 + lru-cache: 11.5.2 + transitivePeerDependencies: + - '@bytecodealliance/preview2-shim' + - encoding + - supports-color + + '@milaboratories/pf-plots@1.5.0(@milaboratories/pl-model-common@1.47.3)(@platforma-sdk/model@1.81.1)': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.47.3 + '@platforma-sdk/model': 1.81.1 + canonicalize: 2.1.0 + lodash: 4.18.1 + + '@milaboratories/pf-spec-driver@1.5.0(@bytecodealliance/preview2-shim@0.17.9)': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-spec': 1.0.0(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pl-model-common': 1.47.3 + '@noble/hashes': 2.3.0 + transitivePeerDependencies: + - '@bytecodealliance/preview2-shim' + + '@milaboratories/pf-spec@1.0.0(@bytecodealliance/preview2-shim@0.17.9)': + dependencies: + '@bytecodealliance/preview2-shim': 0.17.9 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-middle-layer': 1.31.0 + + '@milaboratories/pframes-rs-node@1.1.56': + dependencies: + '@mapbox/node-pre-gyp': 2.0.3 + '@milaboratories/helpers': 1.14.2 + '@milaboratories/pframes-rs-serv': 1.1.56 + '@milaboratories/pl-model-common': 1.46.2 + ulid: 3.0.2 + transitivePeerDependencies: + - encoding + - supports-color + + '@milaboratories/pframes-rs-serv@1.1.56': + dependencies: + '@milaboratories/helpers': 1.14.2 + '@milaboratories/pl-model-common': 1.46.2 + '@milaboratories/pl-model-middle-layer': 1.30.7 + better-sqlite3: 12.10.0 + commander: 14.0.3 + selfsigned: 5.5.0 + + '@milaboratories/pframes-rs-wasip2@1.1.56': {} + + '@milaboratories/pl-client@3.14.6': + dependencies: + '@grpc/grpc-js': 1.14.4 + '@milaboratories/pl-http': 1.2.4 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/ts-helpers': 1.8.6 + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + canonicalize: 2.1.0 + denque: 2.1.0 + long: 5.3.2 + lru-cache: 11.5.2 + openapi-fetch: 0.15.2 + undici: 7.16.0 + utility-types: 3.11.0 + yaml: 2.9.0 + + '@milaboratories/pl-config@1.8.5': + dependencies: + '@milaboratories/ts-helpers': 1.8.6 + upath: 2.0.1 + yaml: 2.9.0 + + '@milaboratories/pl-deployments@3.0.15': + dependencies: + '@milaboratories/pl-config': 1.8.5 + '@milaboratories/pl-healthcheck': 1.0.5 + '@milaboratories/pl-http': 1.2.4 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/ts-helpers': 1.8.6 + decompress: 4.2.1 + ssh2: 1.17.0 + tar: 7.5.22 + undici: 7.16.0 + upath: 2.0.1 + yaml: 2.9.0 + zod: 3.25.76 + + '@milaboratories/pl-drivers@1.16.15': + dependencies: + '@grpc/grpc-js': 1.14.4 + '@milaboratories/computable': 2.9.8 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-client': 3.14.6 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-tree': 1.13.6 + '@milaboratories/ts-helpers': 1.8.6 + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) + '@protobuf-ts/plugin': 2.11.1 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + decompress: 4.2.1 + denque: 2.1.0 + lru-cache: 11.5.2 + openapi-fetch: 0.15.2 + tar-fs: 3.1.3 + undici: 7.16.0 + zod: 3.25.76 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + - supports-color + + '@milaboratories/pl-error-like@1.12.10': + dependencies: + json-stringify-safe: 5.0.1 + zod: 3.25.76 + + '@milaboratories/pl-errors@1.4.35': + dependencies: + '@milaboratories/pl-client': 3.14.6 + '@milaboratories/ts-helpers': 1.8.6 + zod: 3.25.76 + + '@milaboratories/pl-healthcheck@1.0.5': + dependencies: + '@grpc/grpc-js': 1.14.4 + '@milaboratories/ts-helpers': 1.8.6 + '@protobuf-ts/grpc-transport': 2.11.1(@grpc/grpc-js@1.14.4) + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + + '@milaboratories/pl-http@1.2.4': + dependencies: + undici: 7.16.0 + + '@milaboratories/pl-middle-layer@1.66.19(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2)': + dependencies: + '@milaboratories/columns-collection-driver': 0.2.3 + '@milaboratories/computable': 2.9.8 + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pf-driver': 1.9.0(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pf-spec-driver': 1.5.0(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pframes-rs-node': 1.1.56 + '@milaboratories/pl-client': 3.14.6 + '@milaboratories/pl-deployments': 3.0.15 + '@milaboratories/pl-drivers': 1.16.15 + '@milaboratories/pl-errors': 1.4.35 + '@milaboratories/pl-http': 1.2.4 + '@milaboratories/pl-model-backend': 1.4.20 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-middle-layer': 1.31.0 + '@milaboratories/pl-tree': 1.13.6 + '@milaboratories/resolve-helper': 1.1.3 + '@milaboratories/ts-helpers': 1.8.6 + '@platforma-sdk/block-tools': 2.13.0(@types/node@26.1.2) + '@platforma-sdk/model': 1.81.1 + '@platforma-sdk/workflow-tengo': 6.8.2 + canonicalize: 2.1.0 + denque: 2.1.0 + es-toolkit: 1.50.0 + lru-cache: 11.5.2 + quickjs-emscripten: 0.32.0 + semver: 7.8.5 + undici: 7.16.0 + utility-types: 3.11.0 + yaml: 2.9.0 + zod: 3.25.76 + transitivePeerDependencies: + - '@bytecodealliance/preview2-shim' + - '@types/node' + - aws-crt + - bare-abort-controller + - bare-buffer + - encoding + - react-native-b4a + - supports-color + + '@milaboratories/pl-model-backend@1.4.20': + dependencies: + '@milaboratories/pl-client': 3.14.6 + canonicalize: 2.1.0 + zod: 3.25.76 + + '@milaboratories/pl-model-common@1.46.2': + dependencies: + '@milaboratories/helpers': 1.14.2 + '@milaboratories/pl-error-like': 1.12.10 + canonicalize: 2.1.0 + zod: 3.25.76 + + '@milaboratories/pl-model-common@1.47.3': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-error-like': 1.12.10 + canonicalize: 2.1.0 + es-toolkit: 1.50.0 + zod: 3.25.76 + + '@milaboratories/pl-model-middle-layer@1.30.7': + dependencies: + '@milaboratories/helpers': 1.14.2 + '@milaboratories/pl-model-common': 1.46.2 + es-toolkit: 1.50.0 + utility-types: 3.11.0 + zod: 3.25.76 + + '@milaboratories/pl-model-middle-layer@1.31.0': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-model-common': 1.47.3 + es-toolkit: 1.50.0 + utility-types: 3.11.0 + zod: 3.25.76 + + '@milaboratories/pl-tree@1.13.6': + dependencies: + '@milaboratories/computable': 2.9.8 + '@milaboratories/pl-client': 3.14.6 + '@milaboratories/pl-errors': 1.4.35 + '@milaboratories/ts-helpers': 1.8.6 + denque: 2.1.0 + utility-types: 3.11.0 + zod: 3.25.76 + + '@milaboratories/ptabler-expression-js@1.2.37': + dependencies: + '@platforma-open/milaboratories.software-ptabler.schema': 1.15.21 + + '@milaboratories/resolve-helper@1.1.3': {} + + '@milaboratories/software-pframes-conv@2.2.9': {} + + '@milaboratories/tengo-tester@1.6.4': {} + + '@milaboratories/ts-builder@1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@5.6.3))(yaml@2.9.0)': + dependencies: + '@milaboratories/ts-configs': 1.4.0 + '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0))(vue@3.5.24(typescript@5.6.3)) + commander: 15.0.0 + jsonc-parser: 3.3.1 + oxfmt: 0.35.0 + oxlint: 1.63.0 + oxlint-plugin-eslint: 1.63.0 + rolldown: 1.2.3 + rolldown-plugin-dts: 0.26.0(rolldown@1.2.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)) + rollup-plugin-copy: 3.5.0 + rollup-plugin-sourcemaps2: 0.5.8(@types/node@26.1.2)(rollup@4.62.4) + typescript: 5.9.3 + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + vite-plugin-commonjs: 0.10.4 + vite-plugin-dts: 4.5.4(@types/node@26.1.2)(rollup@4.62.4)(typescript@5.9.3)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + vite-plugin-externalize-deps: 0.10.0(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + vite-plugin-lib-inject-css: 2.2.2(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + vue-tsc: 3.3.5(typescript@5.9.3) + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@types/node' + - '@typescript/native-preview' + - '@vitejs/devtools' + - esbuild + - jiti + - less + - oxc-resolver + - oxlint-tsgolint + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - vue + - yaml + + '@milaboratories/ts-builder@1.6.2(@types/node@26.1.2)(esbuild@0.28.1)(rollup@4.62.4)(vue@3.5.24(typescript@7.0.2))(yaml@2.9.0)': + dependencies: + '@milaboratories/ts-configs': 1.4.0 + '@vitejs/plugin-vue': 6.0.8(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0))(vue@3.5.24(typescript@7.0.2)) + commander: 15.0.0 + jsonc-parser: 3.3.1 + oxfmt: 0.35.0 + oxlint: 1.63.0 + oxlint-plugin-eslint: 1.63.0 + rolldown: 1.2.3 + rolldown-plugin-dts: 0.26.0(rolldown@1.2.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)) + rollup-plugin-copy: 3.5.0 + rollup-plugin-sourcemaps2: 0.5.8(@types/node@26.1.2)(rollup@4.62.4) + typescript: 5.9.3 + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + vite-plugin-commonjs: 0.10.4 + vite-plugin-dts: 4.5.4(@types/node@26.1.2)(rollup@4.62.4)(typescript@5.9.3)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + vite-plugin-externalize-deps: 0.10.0(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + vite-plugin-lib-inject-css: 2.2.2(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + vue-tsc: 3.3.5(typescript@5.9.3) + transitivePeerDependencies: + - '@ts-macro/tsc' + - '@types/node' + - '@typescript/native-preview' + - '@vitejs/devtools' + - esbuild + - jiti + - less + - oxc-resolver + - oxlint-tsgolint + - rollup + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - vue + - yaml + + '@milaboratories/ts-configs@1.4.0': {} + + '@milaboratories/ts-helpers@1.8.6': + dependencies: + '@milaboratories/helpers': 1.14.5 + canonicalize: 2.1.0 + denque: 2.1.0 + + '@milaboratories/uikit@2.15.23(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2)': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@platforma-sdk/model': 1.81.1 + '@types/d3-array': 3.2.2 + '@types/d3-axis': 3.0.6 + '@types/d3-scale': 4.0.9 + '@types/d3-selection': 3.0.11 + '@types/sortablejs': 1.15.9 + '@vue/test-utils': 2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(vue@3.5.24(typescript@7.0.2)) + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@7.0.2)) + '@vueuse/integrations': 13.9.0(sortablejs@1.15.7)(vue@3.5.24(typescript@7.0.2)) + canonicalize: 2.1.0 + d3-array: 3.2.4 + d3-axis: 3.0.0 + d3-scale: 4.0.2 + d3-selection: 3.0.0 + resize-observer-polyfill: 1.5.1 + sortablejs: 1.15.7 + vue: 3.5.24(typescript@7.0.2) + transitivePeerDependencies: + - '@vue/compiler-dom' + - '@vue/server-renderer' + - async-validator + - axios + - change-case + - drauu + - focus-trap + - fuse.js + - idb-keyval + - jwt-decode + - nprogress + - qrcode + - typescript + - universal-cookie + + '@napi-rs/lzma-linux-x64-gnu@1.5.1': + optional: true + + '@noble/hashes@1.4.0': {} + + '@noble/hashes@2.3.0': {} + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@one-ini/wasm@0.1.1': {} + + '@oxc-project/types@0.143.0': {} + + '@oxfmt/binding-android-arm-eabi@0.35.0': + optional: true + + '@oxfmt/binding-android-arm-eabi@0.62.0': + optional: true + + '@oxfmt/binding-android-arm64@0.35.0': + optional: true + + '@oxfmt/binding-android-arm64@0.62.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.35.0': + optional: true + + '@oxfmt/binding-darwin-arm64@0.62.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.35.0': + optional: true + + '@oxfmt/binding-darwin-x64@0.62.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.35.0': + optional: true + + '@oxfmt/binding-freebsd-x64@0.62.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm-gnueabihf@0.62.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm-musleabihf@0.62.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm64-gnu@0.62.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.35.0': + optional: true + + '@oxfmt/binding-linux-arm64-musl@0.62.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-ppc64-gnu@0.62.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-riscv64-gnu@0.62.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.35.0': + optional: true + + '@oxfmt/binding-linux-riscv64-musl@0.62.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-s390x-gnu@0.62.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.35.0': + optional: true + + '@oxfmt/binding-linux-x64-gnu@0.62.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.35.0': + optional: true + + '@oxfmt/binding-linux-x64-musl@0.62.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.35.0': + optional: true + + '@oxfmt/binding-openharmony-arm64@0.62.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.35.0': + optional: true + + '@oxfmt/binding-win32-arm64-msvc@0.62.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.35.0': + optional: true + + '@oxfmt/binding-win32-ia32-msvc@0.62.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.35.0': + optional: true + + '@oxfmt/binding-win32-x64-msvc@0.62.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.63.0': + optional: true + + '@oxlint/binding-android-arm-eabi@1.77.0': + optional: true + + '@oxlint/binding-android-arm64@1.63.0': + optional: true + + '@oxlint/binding-android-arm64@1.77.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.63.0': + optional: true + + '@oxlint/binding-darwin-arm64@1.77.0': + optional: true + + '@oxlint/binding-darwin-x64@1.63.0': + optional: true + + '@oxlint/binding-darwin-x64@1.77.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.63.0': + optional: true + + '@oxlint/binding-freebsd-x64@1.77.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.63.0': + optional: true + + '@oxlint/binding-linux-arm-gnueabihf@1.77.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.63.0': + optional: true + + '@oxlint/binding-linux-arm-musleabihf@1.77.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.63.0': + optional: true + + '@oxlint/binding-linux-arm64-gnu@1.77.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.63.0': + optional: true + + '@oxlint/binding-linux-arm64-musl@1.77.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.63.0': + optional: true + + '@oxlint/binding-linux-ppc64-gnu@1.77.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.63.0': + optional: true + + '@oxlint/binding-linux-riscv64-gnu@1.77.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.63.0': + optional: true + + '@oxlint/binding-linux-riscv64-musl@1.77.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.63.0': + optional: true + + '@oxlint/binding-linux-s390x-gnu@1.77.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.63.0': + optional: true + + '@oxlint/binding-linux-x64-gnu@1.77.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.63.0': + optional: true + + '@oxlint/binding-linux-x64-musl@1.77.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.63.0': + optional: true + + '@oxlint/binding-openharmony-arm64@1.77.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.63.0': + optional: true + + '@oxlint/binding-win32-arm64-msvc@1.77.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.63.0': + optional: true + + '@oxlint/binding-win32-ia32-msvc@1.77.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.63.0': + optional: true + + '@oxlint/binding-win32-x64-msvc@1.77.0': + optional: true + + '@peculiar/asn1-cms@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + '@peculiar/asn1-x509-attr': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-csr@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-ecc@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pfx@2.8.0': + dependencies: + '@peculiar/asn1-cms': 2.8.0 + '@peculiar/asn1-pkcs8': 2.8.0 + '@peculiar/asn1-rsa': 2.8.0 + '@peculiar/asn1-schema': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs8@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-pkcs9@2.8.0': + dependencies: + '@peculiar/asn1-cms': 2.8.0 + '@peculiar/asn1-pfx': 2.8.0 + '@peculiar/asn1-pkcs8': 2.8.0 + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + '@peculiar/asn1-x509-attr': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-rsa@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-schema@2.8.0': + dependencies: + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509-attr@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/asn1-x509@2.8.0': + dependencies: + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/utils': 2.0.3 + asn1js: 3.0.10 + tslib: 2.8.1 + + '@peculiar/utils@2.0.3': + dependencies: + tslib: 2.8.1 + + '@peculiar/x509@1.14.3': + dependencies: + '@peculiar/asn1-cms': 2.8.0 + '@peculiar/asn1-csr': 2.8.0 + '@peculiar/asn1-ecc': 2.8.0 + '@peculiar/asn1-pkcs9': 2.8.0 + '@peculiar/asn1-rsa': 2.8.0 + '@peculiar/asn1-schema': 2.8.0 + '@peculiar/asn1-x509': 2.8.0 + pvtsutils: 1.3.6 + reflect-metadata: 0.2.2 + tslib: 2.8.1 + tsyringe: 4.10.0 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@platforma-open/milaboratories.runenv-python-3.12.10-atls@1.2.4': {} + + '@platforma-open/milaboratories.runenv-python-3.12.10-h5ad@1.1.4': {} + + '@platforma-open/milaboratories.runenv-python-3.12.10-parapred@1.1.0': {} + + '@platforma-open/milaboratories.runenv-python-3.12.10-rapids@1.6.0': {} + + '@platforma-open/milaboratories.runenv-python-3.12.10-sccoda@1.3.5': {} + + '@platforma-open/milaboratories.runenv-python-3.12.10-scientific-slim@1.1.0': {} + + '@platforma-open/milaboratories.runenv-python-3.12.10@1.3.10': {} + + '@platforma-open/milaboratories.runenv-python-3@1.8.2': + dependencies: + '@platforma-open/milaboratories.runenv-python-3.12.10': 1.3.10 + '@platforma-open/milaboratories.runenv-python-3.12.10-atls': 1.2.4 + '@platforma-open/milaboratories.runenv-python-3.12.10-h5ad': 1.1.4 + '@platforma-open/milaboratories.runenv-python-3.12.10-parapred': 1.1.0 + '@platforma-open/milaboratories.runenv-python-3.12.10-rapids': 1.6.0 + '@platforma-open/milaboratories.runenv-python-3.12.10-sccoda': 1.3.5 + '@platforma-open/milaboratories.runenv-python-3.12.10-scientific-slim': 1.1.0 + + '@platforma-open/milaboratories.software-ptabler.schema@1.15.21': + dependencies: + '@milaboratories/pl-model-common': 1.47.3 + + '@platforma-open/milaboratories.software-ptabler@2.1.8': {} + + '@platforma-open/milaboratories.software-ptexter@1.2.4': {} + + '@platforma-open/milaboratories.software-small-binaries.hello-world-py@1.0.10': {} + + '@platforma-open/milaboratories.software-small-binaries.hello-world@1.1.7': {} + + '@platforma-open/milaboratories.software-small-binaries.line-counter@1.1.1': {} + + '@platforma-open/milaboratories.software-small-binaries.mnz-client@1.6.5': {} + + '@platforma-open/milaboratories.software-small-binaries.table-converter@1.3.5': {} + + '@platforma-open/milaboratories.software-small-binaries@2.1.1': + dependencies: + '@platforma-open/milaboratories.software-small-binaries.hello-world': 1.1.7 + '@platforma-open/milaboratories.software-small-binaries.hello-world-py': 1.0.10 + '@platforma-open/milaboratories.software-small-binaries.line-counter': 1.1.1 + '@platforma-open/milaboratories.software-small-binaries.mnz-client': 1.6.5 + '@platforma-open/milaboratories.software-small-binaries.table-converter': 1.3.5 + + '@platforma-sdk/block-tools@2.13.0(@types/node@26.1.2)': + dependencies: + '@aws-sdk/client-ecr-public': 3.859.0 + '@aws-sdk/client-s3': 3.859.0 + '@inquirer/prompts': 7.10.1(@types/node@26.1.2) + '@milaboratories/pl-http': 1.2.4 + '@milaboratories/pl-model-backend': 1.4.20 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-middle-layer': 1.31.0 + '@milaboratories/resolve-helper': 1.1.3 + '@milaboratories/ts-helpers': 1.8.6 + '@platforma-sdk/blocks-deps-updater': 2.2.0 + '@platforma-sdk/package-builder-lib': 1.3.0 + canonicalize: 2.1.0 + commander: 15.0.0 + lru-cache: 11.5.2 + mime-types: 2.1.35 + tar: 7.5.22 + undici: 7.16.0 + yaml: 2.9.0 + zod: 3.25.76 + transitivePeerDependencies: + - '@types/node' + - aws-crt + - bare-abort-controller + - bare-buffer + - react-native-b4a + + '@platforma-sdk/blocks-deps-updater@2.2.0': + dependencies: + yaml: 2.9.0 + + '@platforma-sdk/model@1.81.1': + dependencies: + '@milaboratories/helpers': 1.14.5 + '@milaboratories/pl-error-like': 1.12.10 + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/pl-model-middle-layer': 1.31.0 + '@milaboratories/ptabler-expression-js': 1.2.37 + canonicalize: 2.1.0 + es-toolkit: 1.50.0 + fast-json-patch: 3.1.1 + lru-cache: 11.5.2 + utility-types: 3.11.0 + zod: 3.25.76 + + '@platforma-sdk/package-builder-lib@1.3.0': + dependencies: + '@aws-sdk/client-s3': 3.859.0 + '@aws-sdk/lib-storage': 3.859.0(@aws-sdk/client-s3@3.859.0) + '@milaboratories/resolve-helper': 1.1.3 + archiver: 7.0.1 + undici: 7.16.0 + winston: 3.19.0 + yaml: 2.9.0 + zod: 3.25.76 + transitivePeerDependencies: + - aws-crt + - bare-abort-controller + - bare-buffer + - react-native-b4a + + '@platforma-sdk/tengo-builder@4.0.22': + dependencies: + '@milaboratories/pl-model-backend': 1.4.20 + '@milaboratories/resolve-helper': 1.1.3 + '@milaboratories/tengo-tester': 1.6.4 + '@milaboratories/ts-helpers': 1.8.6 + commander: 15.0.0 + winston: 3.19.0 + + '@platforma-sdk/test@1.81.3(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2)(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0))': + dependencies: + '@milaboratories/computable': 2.9.8 + '@milaboratories/pl-client': 3.14.6 + '@milaboratories/pl-middle-layer': 1.66.19(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2) + '@milaboratories/pl-tree': 1.13.6 + '@platforma-sdk/model': 1.81.1 + '@vitest/coverage-istanbul': 4.1.10(vitest@4.0.18(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-istanbul@4.1.10)(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + transitivePeerDependencies: + - '@bytecodealliance/preview2-shim' + - '@edge-runtime/vm' + - '@opentelemetry/api' + - '@types/node' + - '@vitest/browser-playwright' + - '@vitest/browser-preview' + - '@vitest/browser-webdriverio' + - '@vitest/coverage-v8' + - '@vitest/ui' + - aws-crt + - bare-abort-controller + - bare-buffer + - encoding + - happy-dom + - jsdom + - msw + - react-native-b4a + - supports-color + - vite + + '@platforma-sdk/test@1.81.3(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0))': + dependencies: + '@milaboratories/computable': 2.9.8 + '@milaboratories/pl-client': 3.14.6 + '@milaboratories/pl-middle-layer': 1.66.19(@bytecodealliance/preview2-shim@0.17.9)(@types/node@26.1.2) + '@milaboratories/pl-tree': 1.13.6 + '@platforma-sdk/model': 1.81.1 + '@vitest/coverage-istanbul': 4.1.10(vitest@4.1.10) + vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-istanbul@4.1.10)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + transitivePeerDependencies: + - '@bytecodealliance/preview2-shim' + - '@edge-runtime/vm' + - '@opentelemetry/api' + - '@types/node' + - '@vitest/browser-playwright' + - '@vitest/browser-preview' + - '@vitest/browser-webdriverio' + - '@vitest/coverage-v8' + - '@vitest/ui' + - aws-crt + - bare-abort-controller + - bare-buffer + - encoding + - happy-dom + - jsdom + - msw + - react-native-b4a + - supports-color + - vite + + '@platforma-sdk/ui-vue@1.81.1(@bytecodealliance/preview2-shim@0.17.9)(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2)': + dependencies: + '@milaboratories/columns-collection-driver': 0.2.3 + '@milaboratories/pf-spec-driver': 1.5.0(@bytecodealliance/preview2-shim@0.17.9) + '@milaboratories/pl-model-common': 1.47.3 + '@milaboratories/uikit': 2.15.23(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(typescript@7.0.2) + '@platforma-sdk/model': 1.81.1 + '@types/d3-format': 3.0.4 + '@types/node': 24.5.2 + '@types/semver': 7.8.0 + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@7.0.2)) + '@zip.js/zip.js': 2.8.34 + ag-grid-enterprise: 34.1.2 + ag-grid-vue3: 34.1.2(vue@3.5.24(typescript@7.0.2)) + canonicalize: 2.1.0 + d3-format: 3.1.2 + es-toolkit: 1.50.0 + fast-json-patch: 3.1.1 + immer: 11.1.4 + lru-cache: 11.5.2 + vue: 3.5.24(typescript@7.0.2) + zod: 3.25.76 + transitivePeerDependencies: + - '@bytecodealliance/preview2-shim' + - '@vue/compiler-dom' + - '@vue/server-renderer' + - async-validator + - axios + - change-case + - drauu + - focus-trap + - fuse.js + - idb-keyval + - jwt-decode + - nprogress + - qrcode + - typescript + - universal-cookie + + '@platforma-sdk/workflow-tengo@6.8.2': + dependencies: + '@milaboratories/pframes-rs-wasip2': 1.1.56 + '@milaboratories/software-pframes-conv': 2.2.9 + '@platforma-open/milaboratories.software-ptabler': 2.1.8 + '@platforma-open/milaboratories.software-ptexter': 1.2.4 + '@platforma-open/milaboratories.software-small-binaries': 2.1.1 + + '@protobuf-ts/grpc-transport@2.11.1(@grpc/grpc-js@1.14.4)': + dependencies: + '@grpc/grpc-js': 1.14.4 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + + '@protobuf-ts/plugin@2.11.1': + dependencies: + '@bufbuild/protobuf': 2.13.0 + '@bufbuild/protoplugin': 2.13.0 + '@protobuf-ts/protoc': 2.11.1 + '@protobuf-ts/runtime': 2.11.1 + '@protobuf-ts/runtime-rpc': 2.11.1 + typescript: 3.9.10 + transitivePeerDependencies: + - supports-color + + '@protobuf-ts/protoc@2.11.1': {} + + '@protobuf-ts/runtime-rpc@2.11.1': + dependencies: + '@protobuf-ts/runtime': 2.11.1 + + '@protobuf-ts/runtime@2.11.1': {} + + '@protobufjs/aspromise@1.1.2': {} + + '@protobufjs/base64@1.1.2': {} + + '@protobufjs/codegen@2.0.5': {} + + '@protobufjs/eventemitter@1.1.1': {} + + '@protobufjs/fetch@1.1.1': + dependencies: + '@protobufjs/aspromise': 1.1.2 + + '@protobufjs/float@1.0.2': {} + + '@protobufjs/path@1.1.2': {} + + '@protobufjs/pool@1.1.0': {} + + '@protobufjs/utf8@1.1.2': {} + + '@rolldown/binding-android-arm64@1.2.3': + optional: true + + '@rolldown/binding-darwin-arm64@1.2.3': + optional: true + + '@rolldown/binding-darwin-x64@1.2.3': + optional: true + + '@rolldown/binding-freebsd-x64@1.2.3': + optional: true + + '@rolldown/binding-linux-arm-gnueabihf@1.2.3': + optional: true + + '@rolldown/binding-linux-arm64-gnu@1.2.3': + optional: true + + '@rolldown/binding-linux-arm64-musl@1.2.3': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.2.3': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.2.3': + optional: true + + '@rolldown/binding-linux-x64-gnu@1.2.3': + optional: true + + '@rolldown/binding-linux-x64-musl@1.2.3': + optional: true + + '@rolldown/binding-openharmony-arm64@1.2.3': + optional: true + + '@rolldown/binding-win32-arm64-msvc@1.2.3': + optional: true + + '@rolldown/binding-win32-x64-msvc@1.2.3': + optional: true + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/pluginutils@5.4.0(rollup@4.62.4)': + dependencies: + '@types/estree': 1.0.9 + estree-walker: 2.0.2 + picomatch: 4.0.5 + optionalDependencies: + rollup: 4.62.4 + + '@rollup/rollup-android-arm-eabi@4.62.4': + optional: true + + '@rollup/rollup-android-arm64@4.62.4': + optional: true + + '@rollup/rollup-darwin-arm64@4.62.4': + optional: true + + '@rollup/rollup-darwin-x64@4.62.4': + optional: true + + '@rollup/rollup-freebsd-arm64@4.62.4': + optional: true + + '@rollup/rollup-freebsd-x64@4.62.4': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.62.4': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.62.4': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.62.4': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.62.4': + optional: true + + '@rollup/rollup-linux-x64-musl@4.62.4': + optional: true + + '@rollup/rollup-openbsd-x64@4.62.4': + optional: true + + '@rollup/rollup-openharmony-arm64@4.62.4': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.62.4': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.62.4': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.62.4': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.62.4': + optional: true + + '@rushstack/node-core-library@5.23.3(@types/node@26.1.2)': + dependencies: + ajv: 8.20.0 + ajv-draft-04: 1.0.0(ajv@8.20.0) + ajv-formats: 3.0.1(ajv@8.20.0) + fs-extra: 11.3.6 + import-lazy: 4.0.0 + jju: 1.4.0 + resolve: 1.22.12 + semver: 7.7.4 + optionalDependencies: + '@types/node': 26.1.2 + + '@rushstack/problem-matcher@0.2.1(@types/node@26.1.2)': + optionalDependencies: + '@types/node': 26.1.2 + + '@rushstack/rig-package@0.7.3': + dependencies: + jju: 1.4.0 + resolve: 1.22.12 + + '@rushstack/terminal@0.24.2(@types/node@26.1.2)': + dependencies: + '@rushstack/node-core-library': 5.23.3(@types/node@26.1.2) + '@rushstack/problem-matcher': 0.2.1(@types/node@26.1.2) + supports-color: 8.1.1 + optionalDependencies: + '@types/node': 26.1.2 + + '@rushstack/ts-command-line@5.3.12(@types/node@26.1.2)': + dependencies: + '@rushstack/terminal': 0.24.2(@types/node@26.1.2) + '@types/argparse': 1.0.38 + argparse: 1.0.10 + string-argv: 0.3.2 + transitivePeerDependencies: + - '@types/node' + + '@smithy/abort-controller@4.3.3': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/config-resolver@4.6.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/core@3.31.1': + dependencies: + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.6.13': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/hash-node@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/md5-js@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.6.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.7.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.9.13': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/property-provider@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/protocol-http@5.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/shared-ini-file-loader@4.6.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/signature-v4@5.6.12': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/smithy-client@4.14.16': + dependencies: + '@smithy/core': 3.31.1 + '@smithy/types': 4.16.1 + tslib: 2.8.1 + + '@smithy/types@4.16.1': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-base64@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.6.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-middleware@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-retry@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-stream@4.7.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.4.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@smithy/util-waiter@4.5.16': + dependencies: + '@smithy/core': 3.31.1 + tslib: 2.8.1 + + '@so-ric/colorspace@1.1.6': + dependencies: + color: 5.0.3 + text-hex: 1.0.0 + + '@standard-schema/spec@1.1.0': {} + + '@stdlib/array-base-accessor-getter@0.2.3': {} + + '@stdlib/array-base-accessor-setter@0.2.3': {} + + '@stdlib/array-base-arraylike2object@0.2.2': + dependencies: + '@stdlib/array-base-accessor-getter': 0.2.3 + '@stdlib/array-base-accessor-setter': 0.2.3 + '@stdlib/array-base-assert-is-accessor-array': 0.2.3 + '@stdlib/array-base-getter': 0.2.3 + '@stdlib/array-base-setter': 0.2.3 + '@stdlib/array-dtype': 0.3.1 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-base-assert-contains@0.2.3': + dependencies: + '@stdlib/array-base-accessor-getter': 0.2.3 + '@stdlib/array-base-assert-is-accessor-array': 0.2.3 + '@stdlib/array-base-getter': 0.2.3 + '@stdlib/array-dtype': 0.3.1 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-base-assert-is-accessor-array@0.2.3': {} + + '@stdlib/array-base-assert-is-booleanarray@0.0.3': {} + + '@stdlib/array-base-assert-is-complex-typed-array@0.1.3': {} + + '@stdlib/array-base-assert-is-complex128array@0.2.3': {} + + '@stdlib/array-base-assert-is-complex64array@0.2.3': {} + + '@stdlib/array-base-filled@0.2.3': {} + + '@stdlib/array-base-getter@0.2.3': {} + + '@stdlib/array-base-incrspace@0.2.3': + dependencies: + '@stdlib/math-base-special-ceil': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-base-index-of-same-value@0.1.1': + dependencies: + '@stdlib/array-base-assert-is-booleanarray': 0.0.3 + '@stdlib/array-base-assert-is-complex-typed-array': 0.1.3 + '@stdlib/array-base-resolve-getter': 0.2.3 + '@stdlib/assert-is-accessor-array': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-complex-like': 0.2.4 + '@stdlib/assert-is-same-value': 0.2.3 + '@stdlib/complex-float64-imag': 0.1.2 + '@stdlib/complex-float64-real': 0.1.2 + '@stdlib/strided-base-reinterpret-boolean': 0.0.3 + '@stdlib/strided-base-reinterpret-complex': 0.1.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-base-resolve-getter@0.2.3': + dependencies: + '@stdlib/array-base-accessor-getter': 0.2.3 + '@stdlib/array-base-assert-is-accessor-array': 0.2.3 + '@stdlib/array-base-getter': 0.2.3 + '@stdlib/array-dtype': 0.3.1 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-base-setter@0.2.3': {} + + '@stdlib/array-base-zeros@0.2.3': + dependencies: + '@stdlib/array-base-filled': 0.2.3 + + '@stdlib/array-bool@0.1.2': + dependencies: + '@stdlib/array-base-accessor-getter': 0.2.3 + '@stdlib/array-base-getter': 0.2.3 + '@stdlib/array-uint8': 0.2.3 + '@stdlib/assert-has-iterator-symbol-support': 0.2.3 + '@stdlib/assert-is-arraybuffer': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-integer': 0.2.3 + '@stdlib/assert-is-nonnegative-integer': 0.2.3 + '@stdlib/assert-is-object': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-is-string-array': 0.2.3 + '@stdlib/boolean-ctor': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/string-format': 0.2.3 + '@stdlib/symbol-iterator': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-accessor': 0.2.4 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-complex128@0.3.2': + dependencies: + '@stdlib/array-base-accessor-getter': 0.2.3 + '@stdlib/array-base-assert-is-complex128array': 0.2.3 + '@stdlib/array-base-assert-is-complex64array': 0.2.3 + '@stdlib/array-base-getter': 0.2.3 + '@stdlib/array-float64': 0.2.3 + '@stdlib/assert-has-iterator-symbol-support': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-array-like-object': 0.2.3 + '@stdlib/assert-is-arraybuffer': 0.2.3 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-complex-like': 0.2.4 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-nonnegative-integer': 0.2.3 + '@stdlib/assert-is-object': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-is-string-array': 0.2.3 + '@stdlib/complex-float64-ctor': 0.1.2 + '@stdlib/complex-float64-imag': 0.1.2 + '@stdlib/complex-float64-real': 0.1.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-assert-is-even': 0.2.5 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/strided-base-reinterpret-complex128': 0.2.3 + '@stdlib/strided-base-reinterpret-complex64': 0.2.2 + '@stdlib/string-format': 0.2.3 + '@stdlib/symbol-iterator': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-accessor': 0.2.4 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-complex64@0.3.2': + dependencies: + '@stdlib/array-base-accessor-getter': 0.2.3 + '@stdlib/array-base-assert-is-complex128array': 0.2.3 + '@stdlib/array-base-assert-is-complex64array': 0.2.3 + '@stdlib/array-base-getter': 0.2.3 + '@stdlib/array-float32': 0.2.3 + '@stdlib/assert-has-iterator-symbol-support': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-array-like-object': 0.2.3 + '@stdlib/assert-is-arraybuffer': 0.2.3 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-complex-like': 0.2.4 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-nonnegative-integer': 0.2.3 + '@stdlib/assert-is-object': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-is-string-array': 0.2.3 + '@stdlib/complex-float32-ctor': 0.1.1 + '@stdlib/complex-float32-imag': 0.1.2 + '@stdlib/complex-float32-real': 0.1.2 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-assert-is-even': 0.2.5 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/strided-base-reinterpret-complex128': 0.2.3 + '@stdlib/strided-base-reinterpret-complex64': 0.2.2 + '@stdlib/string-format': 0.2.3 + '@stdlib/symbol-iterator': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-accessor': 0.2.4 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-dtype@0.3.1': + dependencies: + '@stdlib/array-bool': 0.1.2 + '@stdlib/array-complex128': 0.3.2 + '@stdlib/array-complex64': 0.3.2 + '@stdlib/array-float32': 0.2.3 + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-int16': 0.2.3 + '@stdlib/array-int32': 0.2.3 + '@stdlib/array-int8': 0.2.3 + '@stdlib/array-uint16': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/array-uint8': 0.2.3 + '@stdlib/array-uint8c': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-buffer': 0.2.3 + '@stdlib/utils-constructor-name': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/array-float32@0.2.3': + dependencies: + '@stdlib/assert-has-float32array-support': 0.2.3 + + '@stdlib/array-float64@0.2.3': + dependencies: + '@stdlib/assert-has-float64array-support': 0.2.3 + + '@stdlib/array-int16@0.2.3': + dependencies: + '@stdlib/assert-has-int16array-support': 0.2.3 + + '@stdlib/array-int32@0.2.3': + dependencies: + '@stdlib/assert-has-int32array-support': 0.2.3 + + '@stdlib/array-int8@0.2.3': + dependencies: + '@stdlib/assert-has-int8array-support': 0.2.3 + + '@stdlib/array-uint16@0.2.3': + dependencies: + '@stdlib/assert-has-uint16array-support': 0.2.3 + + '@stdlib/array-uint32@0.2.3': + dependencies: + '@stdlib/assert-has-uint32array-support': 0.2.3 + + '@stdlib/array-uint8@0.2.3': + dependencies: + '@stdlib/assert-has-uint8array-support': 0.2.3 + + '@stdlib/array-uint8c@0.2.3': + dependencies: + '@stdlib/assert-has-uint8clampedarray-support': 0.2.3 + + '@stdlib/assert-contains@0.3.1': + dependencies: + '@stdlib/array-base-index-of-same-value': 0.1.1 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-integer': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-has-float32array-support@0.2.3': + dependencies: + '@stdlib/assert-is-float32array': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + + '@stdlib/assert-has-float64array-support@0.2.3': + dependencies: + '@stdlib/assert-is-float64array': 0.2.3 + + '@stdlib/assert-has-generator-support@0.2.3': + dependencies: + '@stdlib/utils-eval': 0.2.3 + + '@stdlib/assert-has-int16array-support@0.2.3': + dependencies: + '@stdlib/assert-is-int16array': 0.2.3 + '@stdlib/constants-int16-max': 0.2.3 + '@stdlib/constants-int16-min': 0.2.3 + + '@stdlib/assert-has-int32array-support@0.2.3': + dependencies: + '@stdlib/assert-is-int32array': 0.2.3 + '@stdlib/constants-int32-max': 0.3.1 + '@stdlib/constants-int32-min': 0.2.3 + + '@stdlib/assert-has-int8array-support@0.2.3': + dependencies: + '@stdlib/assert-is-int8array': 0.2.3 + '@stdlib/constants-int8-max': 0.2.3 + '@stdlib/constants-int8-min': 0.2.3 + + '@stdlib/assert-has-iterator-symbol-support@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/symbol-ctor': 0.2.3 + + '@stdlib/assert-has-own-property@0.2.3': {} + + '@stdlib/assert-has-symbol-support@0.2.3': {} + + '@stdlib/assert-has-to-primitive-symbol-support@0.1.1': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/symbol-ctor': 0.2.3 + + '@stdlib/assert-has-tostringtag-support@0.2.3': + dependencies: + '@stdlib/assert-has-symbol-support': 0.2.3 + + '@stdlib/assert-has-uint16array-support@0.2.3': + dependencies: + '@stdlib/assert-is-uint16array': 0.2.3 + '@stdlib/constants-uint16-max': 0.2.3 + + '@stdlib/assert-has-uint32array-support@0.2.3': + dependencies: + '@stdlib/assert-is-uint32array': 0.2.3 + '@stdlib/constants-uint32-max': 0.2.3 + + '@stdlib/assert-has-uint8array-support@0.2.3': + dependencies: + '@stdlib/assert-is-uint8array': 0.2.3 + '@stdlib/constants-uint8-max': 0.2.3 + + '@stdlib/assert-has-uint8clampedarray-support@0.2.3': + dependencies: + '@stdlib/assert-is-uint8clampedarray': 0.2.3 + + '@stdlib/assert-is-accessor-array@0.2.3': + dependencies: + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-function': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-arguments@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-enumerable-property': 0.2.3 + '@stdlib/constants-uint32-max': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/utils-native-class': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-array-like-object@0.2.3': + dependencies: + '@stdlib/constants-array-max-array-length': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-array-like@0.2.3': + dependencies: + '@stdlib/constants-array-max-array-length': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-arraybuffer@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-big-endian@0.2.3': + dependencies: + '@stdlib/array-uint16': 0.2.3 + '@stdlib/array-uint8': 0.2.3 + + '@stdlib/assert-is-boolean@0.2.3': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.3 + '@stdlib/boolean-ctor': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-buffer@0.2.3': + dependencies: + '@stdlib/assert-is-object-like': 0.2.3 + + '@stdlib/assert-is-collection@0.2.3': + dependencies: + '@stdlib/constants-array-max-typed-array-length': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-complex-like@0.2.4': + dependencies: + '@stdlib/complex-float32-ctor': 0.1.1 + '@stdlib/complex-float64-ctor': 0.1.2 + + '@stdlib/assert-is-enumerable-property@0.2.3': + dependencies: + '@stdlib/assert-is-integer': 0.2.3 + '@stdlib/assert-is-nan': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-float32array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-float64array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-function@0.2.3': + dependencies: + '@stdlib/utils-type-of': 0.2.3 + + '@stdlib/assert-is-int16array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-int32array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-int8array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-integer@0.2.3': + dependencies: + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-little-endian@0.2.3': + dependencies: + '@stdlib/array-uint16': 0.2.3 + '@stdlib/array-uint8': 0.2.3 + + '@stdlib/assert-is-nan@0.2.3': + dependencies: + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-nonnegative-integer@0.2.3': + dependencies: + '@stdlib/assert-is-integer': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-number-array@0.2.3': + dependencies: + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/assert-tools-array-like-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-number@0.2.3': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.3 + '@stdlib/number-ctor': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-object-like@0.2.3': + dependencies: + '@stdlib/assert-tools-array-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/assert-is-object@0.2.3': + dependencies: + '@stdlib/assert-is-array': 0.2.3 + + '@stdlib/assert-is-plain-object@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-object': 0.2.3 + '@stdlib/utils-get-prototype-of': 0.2.3 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-positive-integer@0.2.3': + dependencies: + '@stdlib/assert-is-integer': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-regexp@0.2.3': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.3 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-same-value@0.2.3': + dependencies: + '@stdlib/assert-is-complex-like': 0.2.4 + '@stdlib/complex-float64-base-assert-is-same-value': 0.0.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-string-array@0.2.3': + dependencies: + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-tools-array-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/assert-is-string@0.2.3': + dependencies: + '@stdlib/assert-has-tostringtag-support': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-typed-array-like@0.2.3': + dependencies: + '@stdlib/assert-is-nonnegative-integer': 0.2.3 + '@stdlib/constants-array-max-typed-array-length': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-is-uint16array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-uint32array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-uint8array@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-is-uint8clampedarray@0.2.3': + dependencies: + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/assert-napi-equal-typedarray-types@0.2.3': + dependencies: + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-napi-equal-types@0.2.3': + dependencies: + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-napi-is-type@0.2.3': + dependencies: + '@stdlib/assert-napi-equal-types': 0.2.3 + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-napi-is-typedarray@0.2.3': + dependencies: + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/assert-napi-status-ok@0.2.3': {} + + '@stdlib/assert-tools-array-function@0.2.3': + dependencies: + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + + '@stdlib/assert-tools-array-like-function@0.2.3': + dependencies: + '@stdlib/assert-is-array-like': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/blas-base-gcopy@0.2.3': + dependencies: + '@stdlib/array-base-arraylike2object': 0.2.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/blas-ext-base-gapxsumpw@0.3.1': + dependencies: + '@stdlib/blas-ext-base-gsumpw': 0.3.1 + '@stdlib/strided-base-stride2offset': 0.1.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/blas-ext-base-gsumpw@0.3.1': + dependencies: + '@stdlib/array-base-arraylike2object': 0.2.2 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/strided-base-stride2offset': 0.1.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/boolean-ctor@0.2.3': {} + + '@stdlib/complex-float32-ctor@0.1.1': + dependencies: + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/number-float64-base-to-float32': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + + '@stdlib/complex-float32-imag@0.1.2': + dependencies: + '@stdlib/complex-float32-ctor': 0.1.1 + + '@stdlib/complex-float32-real@0.1.2': + dependencies: + '@stdlib/complex-float32-ctor': 0.1.1 + + '@stdlib/complex-float32-reim@0.1.4': + dependencies: + '@stdlib/array-float32': 0.2.3 + '@stdlib/complex-float32-ctor': 0.1.1 + + '@stdlib/complex-float64-base-assert-is-same-value@0.0.3': + dependencies: + '@stdlib/complex-float64-ctor': 0.1.2 + '@stdlib/complex-float64-reim': 0.1.4 + '@stdlib/number-float64-base-assert-is-same-value': 0.2.2 + transitivePeerDependencies: + - supports-color + + '@stdlib/complex-float64-ctor@0.1.2': + dependencies: + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/complex-float32-ctor': 0.1.1 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + + '@stdlib/complex-float64-imag@0.1.2': + dependencies: + '@stdlib/complex-float64-ctor': 0.1.2 + + '@stdlib/complex-float64-real@0.1.2': + dependencies: + '@stdlib/complex-float64-ctor': 0.1.2 + + '@stdlib/complex-float64-reim@0.1.4': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/complex-float64-ctor': 0.1.2 + + '@stdlib/constants-array-max-array-length@0.2.3': {} + + '@stdlib/constants-array-max-typed-array-length@0.2.3': {} + + '@stdlib/constants-float16-eps@0.2.3': {} + + '@stdlib/constants-float16-exponent-bias@0.3.1': {} + + '@stdlib/constants-float16-exponent-mask@0.1.1': {} + + '@stdlib/constants-float16-max@0.2.3': {} + + '@stdlib/constants-float16-num-significand-bits@0.0.2': {} + + '@stdlib/constants-float16-sign-mask@0.1.1': {} + + '@stdlib/constants-float16-significand-mask@0.1.1': {} + + '@stdlib/constants-float16-smallest-normal@0.2.3': {} + + '@stdlib/constants-float32-abs-mask@0.2.3': {} + + '@stdlib/constants-float32-eps@0.2.3': + dependencies: + '@stdlib/number-float64-base-to-float32': 0.2.3 + + '@stdlib/constants-float32-exponent-bias@0.2.3': {} + + '@stdlib/constants-float32-exponent-mask@0.2.3': {} + + '@stdlib/constants-float32-max@0.2.3': {} + + '@stdlib/constants-float32-ninf@0.2.3': + dependencies: + '@stdlib/array-float32': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + + '@stdlib/constants-float32-num-significand-bits@0.1.1': {} + + '@stdlib/constants-float32-pinf@0.2.3': + dependencies: + '@stdlib/array-float32': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + + '@stdlib/constants-float32-sign-mask@0.2.3': {} + + '@stdlib/constants-float32-significand-mask@0.2.4': {} + + '@stdlib/constants-float32-smallest-normal@0.2.3': {} + + '@stdlib/constants-float64-e@0.2.3': {} + + '@stdlib/constants-float64-eps@0.2.3': {} + + '@stdlib/constants-float64-eulergamma@0.2.3': {} + + '@stdlib/constants-float64-exponent-bias@0.2.3': {} + + '@stdlib/constants-float64-fourth-pi@0.2.3': {} + + '@stdlib/constants-float64-gamma-lanczos-g@0.2.3': {} + + '@stdlib/constants-float64-half-ln-two@0.2.3': {} + + '@stdlib/constants-float64-half-pi@0.2.3': {} + + '@stdlib/constants-float64-high-word-abs-mask@0.2.3': {} + + '@stdlib/constants-float64-high-word-exponent-mask@0.2.3': {} + + '@stdlib/constants-float64-high-word-sign-mask@0.2.1': {} + + '@stdlib/constants-float64-high-word-significand-mask@0.2.3': {} + + '@stdlib/constants-float64-ln-sqrt-two-pi@0.2.3': {} + + '@stdlib/constants-float64-ln-two@0.2.3': {} + + '@stdlib/constants-float64-max-base10-exponent@0.2.3': {} + + '@stdlib/constants-float64-max-base2-exponent-subnormal@0.2.1': {} + + '@stdlib/constants-float64-max-base2-exponent@0.2.3': {} + + '@stdlib/constants-float64-max-ln@0.2.3': {} + + '@stdlib/constants-float64-max-nth-factorial@0.1.1': {} + + '@stdlib/constants-float64-max-safe-integer@0.2.3': {} + + '@stdlib/constants-float64-max@0.2.3': {} + + '@stdlib/constants-float64-min-base10-exponent-subnormal@0.2.1': {} + + '@stdlib/constants-float64-min-base10-exponent@0.2.3': {} + + '@stdlib/constants-float64-min-base2-exponent-subnormal@0.2.1': {} + + '@stdlib/constants-float64-min-base2-exponent@0.2.3': {} + + '@stdlib/constants-float64-min-ln@0.2.3': {} + + '@stdlib/constants-float64-ninf@0.2.3': + dependencies: + '@stdlib/number-ctor': 0.2.3 + + '@stdlib/constants-float64-num-high-word-significand-bits@0.1.1': {} + + '@stdlib/constants-float64-pi@0.2.3': {} + + '@stdlib/constants-float64-pinf@0.2.3': {} + + '@stdlib/constants-float64-smallest-normal@0.2.3': {} + + '@stdlib/constants-float64-smallest-subnormal@0.2.3': {} + + '@stdlib/constants-float64-sqrt-eps@0.2.3': {} + + '@stdlib/constants-float64-sqrt-two-pi@0.2.3': {} + + '@stdlib/constants-float64-sqrt-two@0.2.3': {} + + '@stdlib/constants-float64-two-pi@0.2.3': {} + + '@stdlib/constants-int16-max@0.2.3': {} + + '@stdlib/constants-int16-min@0.2.3': {} + + '@stdlib/constants-int32-max@0.3.1': {} + + '@stdlib/constants-int32-min@0.2.3': {} + + '@stdlib/constants-int8-max@0.2.3': {} + + '@stdlib/constants-int8-min@0.2.3': {} + + '@stdlib/constants-uint16-max@0.2.3': {} + + '@stdlib/constants-uint32-max@0.2.3': {} + + '@stdlib/constants-uint8-max@0.2.3': {} + + '@stdlib/error-tools-fmtprodmsg@0.2.3': {} + + '@stdlib/fs-exists@0.2.3': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/fs-resolve-parent-path@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/fs-exists': 0.2.3 + '@stdlib/process-cwd': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/function-ctor@0.2.3': {} + + '@stdlib/math-base-assert-is-even@0.2.5': + dependencies: + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-create-int32': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-finite@0.2.3': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-create-int32': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-finitef@0.2.3': + dependencies: + '@stdlib/constants-float32-ninf': 0.2.3 + '@stdlib/constants-float32-pinf': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-float': 0.2.3 + '@stdlib/napi-create-int32': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-infinite@0.2.3': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-integer@0.2.7': + dependencies: + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-create-int32': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-nan@0.2.3': + dependencies: + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-nanf@0.2.3': + dependencies: + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-float': 0.2.3 + '@stdlib/napi-create-int32': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-negative-zero@0.2.3': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-odd@0.3.2': + dependencies: + '@stdlib/math-base-assert-is-even': 0.2.5 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-create-int32': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-positive-integer@0.3.2': + dependencies: + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-assert-is-positive-zero@0.2.3': + dependencies: + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-napi-binary@0.3.3': + dependencies: + '@stdlib/complex-float32-ctor': 0.1.1 + '@stdlib/complex-float32-reim': 0.1.4 + '@stdlib/complex-float64-ctor': 0.1.2 + '@stdlib/complex-float64-reim': 0.1.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-napi-ternary@0.3.2': + dependencies: + '@stdlib/complex-float32-ctor': 0.1.1 + '@stdlib/complex-float32-reim': 0.1.4 + '@stdlib/complex-float64-ctor': 0.1.2 + '@stdlib/complex-float64-reim': 0.1.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-napi-unary@0.2.7': + dependencies: + '@stdlib/complex-float32-ctor': 0.1.1 + '@stdlib/complex-float32-reim': 0.1.4 + '@stdlib/complex-float64-ctor': 0.1.2 + '@stdlib/complex-float64-reim': 0.1.4 + '@stdlib/number-float16-base-to-float64': 0.1.2 + '@stdlib/number-float16-ctor': 0.1.2 + '@stdlib/number-float64-base-to-float16': 0.1.2 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-abs@0.2.3': + dependencies: + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-absf@0.2.3': + dependencies: + '@stdlib/constants-float32-abs-mask': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/number-float32-base-to-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-acos@0.2.4': + dependencies: + '@stdlib/constants-float64-fourth-pi': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-asin': 0.2.4 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-asin@0.2.4': + dependencies: + '@stdlib/constants-float64-fourth-pi': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-beta@0.3.1': + dependencies: + '@stdlib/constants-float64-e': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-log1p': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-betainc@0.2.3': + dependencies: + '@stdlib/math-base-special-kernel-betainc': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-binomcoef@0.3.1': + dependencies: + '@stdlib/constants-float64-max-safe-integer': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-odd': 0.3.2 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-gcd': 0.3.2 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-ceil@0.2.3': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-copysign@0.2.3': + dependencies: + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/constants-float64-high-word-sign-mask': 0.2.1 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/number-float64-base-from-words': 0.2.3 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-cos@0.3.1': + dependencies: + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/constants-float64-high-word-exponent-mask': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-kernel-cos': 0.2.4 + '@stdlib/math-base-special-kernel-sin': 0.2.4 + '@stdlib/math-base-special-rempio2': 0.3.1 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-erfc@0.2.5': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/number-float64-base-set-low-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-erfcinv@0.2.4': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-exp@0.2.5': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-ldexp': 0.2.5 + '@stdlib/math-base-special-trunc': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-expm1@0.2.4': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-half-ln-two': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/number-float64-base-from-words': 0.2.3 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/number-float64-base-set-high-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-factorial@0.3.2': + dependencies: + '@stdlib/constants-float64-max-nth-factorial': 0.1.1 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-gamma': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-floor@0.2.4': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-fmod@0.1.1': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/constants-float64-high-word-exponent-mask': 0.2.3 + '@stdlib/constants-float64-high-word-sign-mask': 0.2.1 + '@stdlib/constants-float64-high-word-significand-mask': 0.2.3 + '@stdlib/constants-float64-min-base2-exponent': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/number-float64-base-from-words': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gamma-delta-ratio@0.3.1': + dependencies: + '@stdlib/constants-float64-e': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/constants-float64-gamma-lanczos-g': 0.2.3 + '@stdlib/constants-float64-max-nth-factorial': 0.1.1 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-factorial': 0.3.2 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-gamma': 0.3.1 + '@stdlib/math-base-special-gamma-lanczos-sum': 0.3.2 + '@stdlib/math-base-special-log1p': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled@0.2.2': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gamma-lanczos-sum@0.3.2': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gamma1pm1@0.3.1': + dependencies: + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-expm1': 0.2.4 + '@stdlib/math-base-special-gamma': 0.3.1 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-log1p': 0.2.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gamma@0.3.1': + dependencies: + '@stdlib/constants-float64-eulergamma': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pi': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/constants-float64-sqrt-two-pi': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-negative-zero': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-sin': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gammainc@0.3.1': + dependencies: + '@stdlib/constants-float32-smallest-normal': 0.2.3 + '@stdlib/constants-float64-e': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/constants-float64-gamma-lanczos-g': 0.2.3 + '@stdlib/constants-float64-max': 0.2.3 + '@stdlib/constants-float64-max-ln': 0.2.3 + '@stdlib/constants-float64-max-nth-factorial': 0.1.1 + '@stdlib/constants-float64-min-ln': 0.2.3 + '@stdlib/constants-float64-pi': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/constants-float64-sqrt-eps': 0.2.3 + '@stdlib/constants-float64-sqrt-two-pi': 0.2.3 + '@stdlib/constants-float64-two-pi': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-erfc': 0.2.5 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-gamma': 0.3.1 + '@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled': 0.2.2 + '@stdlib/math-base-special-gamma1pm1': 0.3.1 + '@stdlib/math-base-special-gammaln': 0.3.1 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-log1pmx': 0.2.4 + '@stdlib/math-base-special-max': 0.3.1 + '@stdlib/math-base-special-min': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-powm1': 0.3.2 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/math-base-tools-continued-fraction': 0.2.3 + '@stdlib/math-base-tools-evalpoly': 0.2.3 + '@stdlib/math-base-tools-sum-series': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-bool': 0.1.1 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-create-double': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gammaincinv@0.2.3': + dependencies: + '@stdlib/constants-float32-max': 0.2.3 + '@stdlib/constants-float32-smallest-normal': 0.2.3 + '@stdlib/constants-float64-ln-sqrt-two-pi': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/constants-float64-sqrt-two-pi': 0.2.3 + '@stdlib/constants-float64-two-pi': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-erfcinv': 0.2.4 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-gamma': 0.3.1 + '@stdlib/math-base-special-gammainc': 0.3.1 + '@stdlib/math-base-special-gammaln': 0.3.1 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-min': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/math-base-tools-evalpoly': 0.2.3 + debug: 2.6.9 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gammaln@0.3.1': + dependencies: + '@stdlib/constants-float64-pi': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-sinpi': 0.3.1 + '@stdlib/math-base-special-trunc': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-gcd@0.3.2': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/constants-int32-max': 0.3.1 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-fmod': 0.1.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-kernel-betainc@0.2.3': + dependencies: + '@stdlib/constants-float64-e': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/constants-float64-gamma-lanczos-g': 0.2.3 + '@stdlib/constants-float64-half-pi': 0.2.3 + '@stdlib/constants-float64-max': 0.2.3 + '@stdlib/constants-float64-max-ln': 0.2.3 + '@stdlib/constants-float64-min-ln': 0.2.3 + '@stdlib/constants-float64-pi': 0.2.3 + '@stdlib/constants-float64-smallest-normal': 0.2.3 + '@stdlib/constants-int32-max': 0.3.1 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-asin': 0.2.4 + '@stdlib/math-base-special-beta': 0.3.1 + '@stdlib/math-base-special-binomcoef': 0.3.1 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-expm1': 0.2.4 + '@stdlib/math-base-special-factorial': 0.3.2 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-gamma': 0.3.1 + '@stdlib/math-base-special-gamma-delta-ratio': 0.3.1 + '@stdlib/math-base-special-gamma-lanczos-sum-expg-scaled': 0.2.2 + '@stdlib/math-base-special-gammainc': 0.3.1 + '@stdlib/math-base-special-gammaln': 0.3.1 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-log1p': 0.2.4 + '@stdlib/math-base-special-max': 0.3.1 + '@stdlib/math-base-special-maxabs': 0.3.1 + '@stdlib/math-base-special-min': 0.2.4 + '@stdlib/math-base-special-minabs': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/math-base-tools-continued-fraction': 0.2.3 + '@stdlib/math-base-tools-sum-series': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-kernel-betaincinv@0.2.3': + dependencies: + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/constants-float64-half-pi': 0.2.3 + '@stdlib/constants-float64-max': 0.2.3 + '@stdlib/constants-float64-pi': 0.2.3 + '@stdlib/constants-float64-smallest-normal': 0.2.3 + '@stdlib/constants-float64-smallest-subnormal': 0.2.3 + '@stdlib/constants-float64-sqrt-two': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-acos': 0.2.4 + '@stdlib/math-base-special-asin': 0.2.4 + '@stdlib/math-base-special-beta': 0.3.1 + '@stdlib/math-base-special-betainc': 0.2.3 + '@stdlib/math-base-special-cos': 0.3.1 + '@stdlib/math-base-special-erfcinv': 0.2.4 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-expm1': 0.2.4 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-gamma-delta-ratio': 0.3.1 + '@stdlib/math-base-special-gammaincinv': 0.2.3 + '@stdlib/math-base-special-kernel-betainc': 0.2.3 + '@stdlib/math-base-special-ldexp': 0.2.5 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-log1p': 0.2.4 + '@stdlib/math-base-special-max': 0.3.1 + '@stdlib/math-base-special-min': 0.2.4 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-round': 0.3.1 + '@stdlib/math-base-special-signum': 0.2.3 + '@stdlib/math-base-special-sin': 0.3.1 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/math-base-tools-evalpoly': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-kernel-cos@0.2.4': + dependencies: + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-kernel-sin@0.2.4': + dependencies: + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-ldexp@0.2.5': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-max-base2-exponent': 0.2.3 + '@stdlib/constants-float64-max-base2-exponent-subnormal': 0.2.1 + '@stdlib/constants-float64-min-base2-exponent-subnormal': 0.2.1 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-copysign': 0.2.3 + '@stdlib/number-float64-base-exponent': 0.2.3 + '@stdlib/number-float64-base-from-words': 0.2.3 + '@stdlib/number-float64-base-normalize': 0.2.4 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-ln@0.2.5': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/number-float64-base-set-high-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-log1p@0.2.4': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/number-float64-base-set-high-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-log1pmx@0.2.4': + dependencies: + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-log1p': 0.2.4 + '@stdlib/math-base-tools-sum-series': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-max@0.3.1': + dependencies: + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-positive-zero': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-maxabs@0.3.1': + dependencies: + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-max': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-min@0.2.4': + dependencies: + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-negative-zero': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-minabs@0.2.4': + dependencies: + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-min': 0.2.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-pow@0.3.1': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/constants-float64-high-word-significand-mask': 0.2.3 + '@stdlib/constants-float64-ln-two': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-num-high-word-significand-bits': 0.1.1 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-integer': 0.2.7 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-odd': 0.3.2 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-copysign': 0.2.3 + '@stdlib/math-base-special-ldexp': 0.2.5 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/number-float64-base-set-high-word': 0.2.3 + '@stdlib/number-float64-base-set-low-word': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/number-uint32-base-to-int32': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-powm1@0.3.2': + dependencies: + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-expm1': 0.2.4 + '@stdlib/math-base-special-fmod': 0.1.1 + '@stdlib/math-base-special-ln': 0.2.5 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-trunc': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-rempio2@0.3.1': + dependencies: + '@stdlib/array-base-zeros': 0.2.3 + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/constants-float64-high-word-exponent-mask': 0.2.3 + '@stdlib/constants-float64-high-word-significand-mask': 0.2.3 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/math-base-special-ldexp': 0.2.5 + '@stdlib/math-base-special-round': 0.3.1 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-argv-float64array': 0.2.3 + '@stdlib/napi-create-double': 0.0.3 + '@stdlib/napi-export': 0.3.1 + '@stdlib/number-float64-base-from-words': 0.2.3 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/number-float64-base-get-low-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-round@0.3.1': + dependencies: + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-negative-zero': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-roundn@0.2.3': + dependencies: + '@stdlib/constants-float64-max-base10-exponent': 0.2.3 + '@stdlib/constants-float64-max-safe-integer': 0.2.3 + '@stdlib/constants-float64-min-base10-exponent': 0.2.3 + '@stdlib/constants-float64-min-base10-exponent-subnormal': 0.2.1 + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-round': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-signum@0.2.3': + dependencies: + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-sin@0.3.1': + dependencies: + '@stdlib/constants-float64-high-word-abs-mask': 0.2.3 + '@stdlib/constants-float64-high-word-exponent-mask': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-kernel-cos': 0.2.4 + '@stdlib/math-base-special-kernel-sin': 0.2.4 + '@stdlib/math-base-special-rempio2': 0.3.1 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-sinpi@0.3.1': + dependencies: + '@stdlib/constants-float64-pi': 0.2.3 + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-copysign': 0.2.3 + '@stdlib/math-base-special-cos': 0.3.1 + '@stdlib/math-base-special-fmod': 0.1.1 + '@stdlib/math-base-special-sin': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-sqrt@0.2.3': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-special-trunc@0.2.3': + dependencies: + '@stdlib/math-base-napi-unary': 0.2.7 + '@stdlib/math-base-special-ceil': 0.2.3 + '@stdlib/math-base-special-floor': 0.2.4 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-tools-continued-fraction@0.2.3': + dependencies: + '@stdlib/assert-has-generator-support': 0.2.3 + '@stdlib/constants-float32-smallest-normal': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/math-base-tools-evalpoly@0.2.3': + dependencies: + '@stdlib/function-ctor': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/math-base-tools-sum-series@0.2.3': + dependencies: + '@stdlib/assert-has-generator-support': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-argv-bool@0.1.1': + dependencies: + '@stdlib/assert-napi-is-type': 0.2.3 + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-argv-double@0.2.2': + dependencies: + '@stdlib/assert-napi-is-type': 0.2.3 + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-argv-float64array@0.2.3': + dependencies: + '@stdlib/assert-napi-equal-typedarray-types': 0.2.3 + '@stdlib/assert-napi-is-typedarray': 0.2.3 + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-argv-float@0.2.3': + dependencies: + '@stdlib/assert-napi-is-type': 0.2.3 + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-argv-int32@0.2.3': + dependencies: + '@stdlib/assert-napi-is-type': 0.2.3 + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-argv@0.2.3': + dependencies: + '@stdlib/assert-napi-status-ok': 0.2.3 + + '@stdlib/napi-create-double@0.0.3': + dependencies: + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-create-int32@0.0.3': + dependencies: + '@stdlib/assert-napi-status-ok': 0.2.3 + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-int32': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/napi-export@0.3.1': {} + + '@stdlib/number-ctor@0.2.3': {} + + '@stdlib/number-float16-base-to-float32@0.1.2': + dependencies: + '@stdlib/constants-float16-exponent-bias': 0.3.1 + '@stdlib/constants-float16-exponent-mask': 0.1.1 + '@stdlib/constants-float16-num-significand-bits': 0.0.2 + '@stdlib/constants-float16-sign-mask': 0.1.1 + '@stdlib/constants-float16-significand-mask': 0.1.1 + '@stdlib/constants-float32-exponent-bias': 0.2.3 + '@stdlib/constants-float32-exponent-mask': 0.2.3 + '@stdlib/constants-float32-num-significand-bits': 0.1.1 + '@stdlib/number-float16-ctor': 0.1.2 + '@stdlib/number-float32-base-to-float16': 0.1.1 + '@stdlib/number-float64-base-to-float16': 0.1.2 + '@stdlib/number-float64-base-to-float32': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float16-base-to-float64@0.1.2': + dependencies: + '@stdlib/number-float16-base-to-float32': 0.1.2 + '@stdlib/number-float16-ctor': 0.1.2 + '@stdlib/number-float64-base-to-float16': 0.1.2 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float16-ctor@0.1.2': + dependencies: + '@stdlib/assert-has-to-primitive-symbol-support': 0.1.1 + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/number-float64-base-to-float16': 0.1.2 + '@stdlib/string-format': 0.2.3 + '@stdlib/symbol-to-primitive': 0.1.2 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float32-base-exponent@0.2.4': + dependencies: + '@stdlib/constants-float32-exponent-bias': 0.2.3 + '@stdlib/constants-float32-exponent-mask': 0.2.3 + '@stdlib/number-float32-base-to-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float32-base-to-float16@0.1.1': + dependencies: + '@stdlib/constants-float16-eps': 0.2.3 + '@stdlib/constants-float16-max': 0.2.3 + '@stdlib/constants-float16-smallest-normal': 0.2.3 + '@stdlib/constants-float32-eps': 0.2.3 + '@stdlib/constants-float32-exponent-mask': 0.2.3 + '@stdlib/constants-float32-num-significand-bits': 0.1.1 + '@stdlib/constants-float32-pinf': 0.2.3 + '@stdlib/constants-float32-sign-mask': 0.2.3 + '@stdlib/constants-float32-significand-mask': 0.2.4 + '@stdlib/math-base-assert-is-finitef': 0.2.3 + '@stdlib/math-base-assert-is-nanf': 0.2.3 + '@stdlib/math-base-special-absf': 0.2.3 + '@stdlib/number-float16-ctor': 0.1.2 + '@stdlib/number-float32-base-exponent': 0.2.4 + '@stdlib/number-float64-base-to-float32': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float32-base-to-word@0.2.3': + dependencies: + '@stdlib/array-float32': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-assert-is-same-value@0.2.2': + dependencies: + '@stdlib/napi-argv': 0.2.3 + '@stdlib/napi-argv-double': 0.2.2 + '@stdlib/napi-export': 0.3.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-exponent@0.2.3': + dependencies: + '@stdlib/constants-float64-exponent-bias': 0.2.3 + '@stdlib/constants-float64-high-word-exponent-mask': 0.2.3 + '@stdlib/number-float64-base-get-high-word': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-from-words@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-get-high-word@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-get-low-word@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-normalize@0.2.4': + dependencies: + '@stdlib/constants-float64-smallest-normal': 0.2.3 + '@stdlib/math-base-assert-is-infinite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-set-high-word@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-set-low-word@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + '@stdlib/number-float64-base-to-words': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-to-float16@0.1.2': + dependencies: + '@stdlib/constants-float16-eps': 0.2.3 + '@stdlib/constants-float16-max': 0.2.3 + '@stdlib/constants-float16-smallest-normal': 0.2.3 + '@stdlib/constants-float64-eps': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-finite': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/number-float16-ctor': 0.1.2 + '@stdlib/number-float32-base-to-float16': 0.1.1 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-float64-base-to-float32@0.2.3': + dependencies: + '@stdlib/array-float32': 0.2.3 + + '@stdlib/number-float64-base-to-words@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/array-uint32': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + '@stdlib/os-byte-order': 0.2.3 + '@stdlib/os-float-word-order': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/number-uint32-base-to-int32@0.2.3': {} + + '@stdlib/object-ctor@0.2.2': {} + + '@stdlib/os-byte-order@0.2.3': + dependencies: + '@stdlib/assert-is-big-endian': 0.2.3 + '@stdlib/assert-is-little-endian': 0.2.3 + + '@stdlib/os-float-word-order@0.2.3': + dependencies: + '@stdlib/os-byte-order': 0.2.3 + + '@stdlib/process-cwd@0.2.3': {} + + '@stdlib/regexp-extended-length-path@0.2.3': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/regexp-function-name@0.2.3': + dependencies: + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + + '@stdlib/stats-anova1@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-nan': 0.2.3 + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/assert-is-number-array': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/assert-is-positive-integer': 0.2.3 + '@stdlib/assert-is-typed-array-like': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-special-max': 0.3.1 + '@stdlib/math-base-special-roundn': 0.2.3 + '@stdlib/stats-base-dists-f-cdf': 0.2.3 + '@stdlib/stats-incr-stdev': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/string-repeat': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-chisquare-cdf@0.3.1': + dependencies: + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/stats-base-dists-gamma-cdf': 0.3.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-degenerate-cdf@0.3.1': + dependencies: + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-binary': 0.3.3 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-f-cdf@0.2.3': + dependencies: + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-betainc': 0.2.3 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-gamma-cdf@0.3.1': + dependencies: + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-ternary': 0.3.2 + '@stdlib/math-base-special-gammainc': 0.3.1 + '@stdlib/stats-base-dists-degenerate-cdf': 0.3.1 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-normal-cdf@0.3.1': + dependencies: + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-napi-ternary': 0.3.2 + '@stdlib/math-base-special-erfc': 0.2.5 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/stats-base-dists-degenerate-cdf': 0.3.1 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-library-manifest': 0.2.4 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-signrank-cdf@0.2.3': + dependencies: + '@stdlib/constants-float64-ln-two': 0.2.3 + '@stdlib/math-base-assert-is-finite': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-assert-is-positive-integer': 0.3.2 + '@stdlib/math-base-special-exp': 0.2.5 + '@stdlib/math-base-special-round': 0.3.1 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-memoize': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-t-cdf@0.2.3': + dependencies: + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-betainc': 0.2.3 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-base-dists-t-quantile@0.2.3': + dependencies: + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-kernel-betaincinv': 0.2.3 + '@stdlib/math-base-special-signum': 0.2.3 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/utils-constant-function': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-incr-stdev@0.2.3': + dependencies: + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-kruskal-test@0.2.3': + dependencies: + '@stdlib/array-base-incrspace': 0.2.3 + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-nan': 0.2.3 + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/assert-is-positive-integer': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-roundn': 0.2.3 + '@stdlib/stats-base-dists-chisquare-cdf': 0.3.1 + '@stdlib/stats-ranks': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-count-by': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + '@stdlib/utils-identity-function': 0.2.3 + '@stdlib/utils-keys': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-ranks@0.2.3': + dependencies: + '@stdlib/array-base-assert-contains': 0.2.3 + '@stdlib/array-base-filled': 0.2.3 + '@stdlib/array-base-zeros': 0.2.3 + '@stdlib/assert-contains': 0.3.1 + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-array': 0.2.3 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-object': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-strided-mean@0.1.1': + dependencies: + '@stdlib/stats-strided-meanpn': 0.1.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-strided-meanpn@0.1.1': + dependencies: + '@stdlib/array-base-arraylike2object': 0.2.2 + '@stdlib/blas-ext-base-gapxsumpw': 0.3.1 + '@stdlib/blas-ext-base-gsumpw': 0.3.1 + '@stdlib/strided-base-stride2offset': 0.1.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-strided-variance@0.1.1': + dependencies: + '@stdlib/stats-strided-variancepn': 0.1.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-strided-variancepn@0.1.1': + dependencies: + '@stdlib/array-base-arraylike2object': 0.2.2 + '@stdlib/blas-ext-base-gsumpw': 0.3.1 + '@stdlib/strided-base-stride2offset': 0.1.1 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-ttest2@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-nan': 0.2.3 + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/assert-is-number-array': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/assert-is-positive-integer': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-is-typed-array-like': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-pow': 0.3.1 + '@stdlib/math-base-special-roundn': 0.2.3 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/stats-base-dists-t-cdf': 0.2.3 + '@stdlib/stats-base-dists-t-quantile': 0.2.3 + '@stdlib/stats-strided-mean': 0.1.1 + '@stdlib/stats-strided-variance': 0.1.1 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-ttest@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + '@stdlib/assert-contains': 0.3.1 + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/assert-is-number-array': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/assert-is-positive-integer': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-is-typed-array-like': 0.2.3 + '@stdlib/blas-base-gcopy': 0.2.3 + '@stdlib/constants-float64-ninf': 0.2.3 + '@stdlib/constants-float64-pinf': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-assert-is-nan': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-roundn': 0.2.3 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/stats-base-dists-t-cdf': 0.2.3 + '@stdlib/stats-base-dists-t-quantile': 0.2.3 + '@stdlib/stats-strided-mean': 0.1.1 + '@stdlib/stats-strided-variance': 0.1.1 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/stats-wilcoxon@0.2.3': + dependencies: + '@stdlib/array-base-assert-contains': 0.2.3 + '@stdlib/array-float64': 0.2.3 + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/assert-is-nan': 0.2.3 + '@stdlib/assert-is-number': 0.2.3 + '@stdlib/assert-is-number-array': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/assert-is-positive-integer': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/assert-is-typed-array-like': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/math-base-special-abs': 0.2.3 + '@stdlib/math-base-special-roundn': 0.2.3 + '@stdlib/math-base-special-signum': 0.2.3 + '@stdlib/math-base-special-sqrt': 0.2.3 + '@stdlib/stats-base-dists-normal-cdf': 0.3.1 + '@stdlib/stats-base-dists-signrank-cdf': 0.2.3 + '@stdlib/stats-ranks': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-read-only-property': 0.2.3 + '@stdlib/utils-tabulate': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/strided-base-reinterpret-boolean@0.0.3': + dependencies: + '@stdlib/array-uint8': 0.2.3 + + '@stdlib/strided-base-reinterpret-complex128@0.2.3': + dependencies: + '@stdlib/array-float64': 0.2.3 + + '@stdlib/strided-base-reinterpret-complex64@0.2.2': + dependencies: + '@stdlib/array-float32': 0.2.3 + + '@stdlib/strided-base-reinterpret-complex@0.1.3': + dependencies: + '@stdlib/array-base-assert-is-complex128array': 0.2.3 + '@stdlib/array-base-assert-is-complex64array': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/strided-base-reinterpret-complex128': 0.2.3 + '@stdlib/strided-base-reinterpret-complex64': 0.2.2 + '@stdlib/string-format': 0.2.3 + + '@stdlib/strided-base-stride2offset@0.1.1': {} + + '@stdlib/string-base-format-interpolate@0.2.4': {} + + '@stdlib/string-base-format-tokenize@0.2.4': {} + + '@stdlib/string-base-lowercase@0.4.1': {} + + '@stdlib/string-base-repeat@0.2.3': {} + + '@stdlib/string-base-replace@0.2.3': {} + + '@stdlib/string-format@0.2.3': + dependencies: + '@stdlib/string-base-format-interpolate': 0.2.4 + '@stdlib/string-base-format-tokenize': 0.2.4 + + '@stdlib/string-repeat@0.2.3': + dependencies: + '@stdlib/assert-is-nonnegative-integer': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-base-repeat': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/string-replace@0.2.3': + dependencies: + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-regexp': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-base-replace': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-escape-regexp-string': 0.2.3 + + '@stdlib/symbol-ctor@0.2.3': {} + + '@stdlib/symbol-iterator@0.2.3': + dependencies: + '@stdlib/assert-has-iterator-symbol-support': 0.2.3 + + '@stdlib/symbol-to-primitive@0.1.2': + dependencies: + '@stdlib/assert-has-to-primitive-symbol-support': 0.1.1 + '@stdlib/symbol-ctor': 0.2.3 + + '@stdlib/types@0.4.3': {} + + '@stdlib/utils-constant-function@0.2.3': {} + + '@stdlib/utils-constructor-name@0.2.3': + dependencies: + '@stdlib/assert-is-buffer': 0.2.3 + '@stdlib/regexp-function-name': 0.2.3 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/utils-convert-path@0.2.3': + dependencies: + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/regexp-extended-length-path': 0.2.3 + '@stdlib/string-base-lowercase': 0.4.1 + '@stdlib/string-format': 0.2.3 + '@stdlib/string-replace': 0.2.3 + + '@stdlib/utils-count-by@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/assert-is-plain-object': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-define-nonenumerable-read-only-accessor@0.2.4': + dependencies: + '@stdlib/types': 0.4.3 + '@stdlib/utils-define-property': 0.2.5 + + '@stdlib/utils-define-nonenumerable-read-only-property@0.2.3': + dependencies: + '@stdlib/types': 0.4.3 + '@stdlib/utils-define-property': 0.2.5 + + '@stdlib/utils-define-property@0.2.5': + dependencies: + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + + '@stdlib/utils-define-read-only-property@0.2.3': + dependencies: + '@stdlib/utils-define-property': 0.2.5 + + '@stdlib/utils-escape-regexp-string@0.2.3': + dependencies: + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + + '@stdlib/utils-eval@0.2.3': {} + + '@stdlib/utils-get-prototype-of@0.2.3': + dependencies: + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/object-ctor': 0.2.2 + '@stdlib/utils-native-class': 0.2.3 + + '@stdlib/utils-global@0.2.3': + dependencies: + '@stdlib/assert-is-boolean': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + + '@stdlib/utils-identity-function@0.2.3': {} + + '@stdlib/utils-index-of@0.2.3': + dependencies: + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/assert-is-integer': 0.2.3 + '@stdlib/assert-is-nan': 0.2.3 + '@stdlib/assert-is-string': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-keys@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-arguments': 0.2.3 + '@stdlib/assert-is-enumerable-property': 0.2.3 + '@stdlib/assert-is-object-like': 0.2.3 + '@stdlib/utils-index-of': 0.2.3 + '@stdlib/utils-noop': 0.2.3 + '@stdlib/utils-type-of': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-library-manifest@0.2.4': + dependencies: + '@stdlib/fs-resolve-parent-path': 0.2.3 + '@stdlib/utils-convert-path': 0.2.3 + debug: 2.6.9 + resolve: 1.22.12 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-memoize@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-is-function': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-define-nonenumerable-read-only-property': 0.2.3 + '@stdlib/utils-identity-function': 0.2.3 + + '@stdlib/utils-native-class@0.2.3': + dependencies: + '@stdlib/assert-has-own-property': 0.2.3 + '@stdlib/assert-has-tostringtag-support': 0.2.3 + '@stdlib/symbol-ctor': 0.2.3 + + '@stdlib/utils-noop@0.2.3': {} + + '@stdlib/utils-tabulate@0.2.3': + dependencies: + '@stdlib/assert-is-collection': 0.2.3 + '@stdlib/error-tools-fmtprodmsg': 0.2.3 + '@stdlib/string-format': 0.2.3 + '@stdlib/utils-index-of': 0.2.3 + transitivePeerDependencies: + - supports-color + + '@stdlib/utils-type-of@0.2.3': + dependencies: + '@stdlib/utils-constructor-name': 0.2.3 + '@stdlib/utils-global': 0.2.3 + + '@turbo/darwin-64@2.8.21': + optional: true + + '@turbo/darwin-arm64@2.8.21': + optional: true + + '@turbo/linux-64@2.8.21': + optional: true + + '@turbo/linux-arm64@2.8.21': + optional: true + + '@turbo/windows-64@2.8.21': + optional: true + + '@turbo/windows-arm64@2.8.21': + optional: true + + '@types/argparse@1.0.38': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/d3-array@3.2.2': {} + + '@types/d3-axis@3.0.6': + dependencies: + '@types/d3-selection': 3.0.11 + + '@types/d3-format@3.0.4': {} + + '@types/d3-hierarchy@3.1.7': {} + + '@types/d3-scale@4.0.9': + dependencies: + '@types/d3-time': 3.0.4 + + '@types/d3-selection@3.0.11': {} + + '@types/d3-time@3.0.4': {} + + '@types/deep-eql@4.0.2': {} + + '@types/estree@1.0.9': {} + + '@types/fs-extra@8.1.5': + dependencies: + '@types/node': 26.1.2 + + '@types/glob@7.2.0': + dependencies: + '@types/minimatch': 6.0.0 + '@types/node': 26.1.2 + + '@types/jsesc@2.5.1': {} + + '@types/minimatch@6.0.0': + dependencies: + minimatch: 10.2.6 + + '@types/node@12.20.55': {} + + '@types/node@24.5.2': + dependencies: + undici-types: 7.12.0 + + '@types/node@26.1.2': + dependencies: + undici-types: 8.3.0 + + '@types/semver@7.8.0': {} + + '@types/sortablejs@1.15.9': {} + + '@types/triple-beam@1.3.5': {} + + '@types/uuid@9.0.8': {} + + '@types/web-bluetooth@0.0.21': {} + + '@typescript/typescript-aix-ppc64@7.0.2': + optional: true + + '@typescript/typescript-darwin-arm64@7.0.2': + optional: true + + '@typescript/typescript-darwin-x64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-freebsd-x64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm64@7.0.2': + optional: true + + '@typescript/typescript-linux-arm@7.0.2': + optional: true + + '@typescript/typescript-linux-loong64@7.0.2': + optional: true + + '@typescript/typescript-linux-mips64el@7.0.2': + optional: true + + '@typescript/typescript-linux-ppc64@7.0.2': + optional: true + + '@typescript/typescript-linux-riscv64@7.0.2': + optional: true + + '@typescript/typescript-linux-s390x@7.0.2': + optional: true + + '@typescript/typescript-linux-x64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-netbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-arm64@7.0.2': + optional: true + + '@typescript/typescript-openbsd-x64@7.0.2': + optional: true + + '@typescript/typescript-sunos-x64@7.0.2': + optional: true + + '@typescript/typescript-win32-arm64@7.0.2': + optional: true + + '@typescript/typescript-win32-x64@7.0.2': + optional: true + + '@typescript/vfs@1.6.4(typescript@5.4.5)': + dependencies: + debug: 4.4.3 + typescript: 5.4.5 + transitivePeerDependencies: + - supports-color + + '@vitejs/plugin-vue@6.0.8(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0))(vue@3.5.24(typescript@5.6.3))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + vue: 3.5.24(typescript@5.6.3) + + '@vitejs/plugin-vue@6.0.8(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0))(vue@3.5.24(typescript@7.0.2))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + vue: 3.5.24(typescript@7.0.2) + + '@vitest/coverage-istanbul@4.1.10(vitest@4.0.18(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0))': + dependencies: + '@babel/core': 7.29.7 + '@istanbuljs/schema': 0.1.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.2.0 + magicast: 0.5.4 + obug: 2.1.4 + tinyrainbow: 3.1.1 + vitest: 4.0.18(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0) + transitivePeerDependencies: + - supports-color + + '@vitest/coverage-istanbul@4.1.10(vitest@4.1.10)': + dependencies: + '@babel/core': 7.29.7 + '@istanbuljs/schema': 0.1.6 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + istanbul-lib-coverage: 3.2.2 + istanbul-lib-report: 3.0.1 + istanbul-reports: 3.2.0 + magicast: 0.5.4 + obug: 2.1.4 + tinyrainbow: 3.1.1 + vitest: 4.1.10(@types/node@26.1.2)(@vitest/coverage-istanbul@4.1.10)(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@4.0.18': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 + chai: 6.2.2 + tinyrainbow: 3.1.1 + + '@vitest/expect@4.1.10': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + chai: 6.2.2 + tinyrainbow: 3.1.1 + + '@vitest/mocker@4.0.18(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.0.18 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0) + + '@vitest/mocker@4.1.10(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0) + + '@vitest/mocker@4.1.10(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0))': + dependencies: + '@vitest/spy': 4.1.10 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + + '@vitest/pretty-format@4.0.18': + dependencies: + tinyrainbow: 3.1.1 + + '@vitest/pretty-format@4.1.10': + dependencies: + tinyrainbow: 3.1.1 + + '@vitest/runner@4.0.18': + dependencies: + '@vitest/utils': 4.0.18 + pathe: 2.0.3 + + '@vitest/runner@4.1.10': + dependencies: + '@vitest/utils': 4.1.10 + pathe: 2.0.3 + + '@vitest/snapshot@4.0.18': + dependencies: + '@vitest/pretty-format': 4.0.18 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + '@vitest/utils': 4.1.10 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.0.18': {} + + '@vitest/spy@4.1.10': {} + + '@vitest/utils@4.0.18': + dependencies: + '@vitest/pretty-format': 4.0.18 + tinyrainbow: 3.1.1 + + '@vitest/utils@4.1.10': + dependencies: + '@vitest/pretty-format': 4.1.10 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.1 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/compiler-core@3.5.24': + dependencies: + '@babel/parser': 7.29.8 + '@vue/shared': 3.5.24 + entities: 4.5.0 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-core@3.5.41': + dependencies: + '@babel/parser': 7.29.8 + '@vue/shared': 3.5.41 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.24': + dependencies: + '@vue/compiler-core': 3.5.24 + '@vue/shared': 3.5.24 + + '@vue/compiler-dom@3.5.41': + dependencies: + '@vue/compiler-core': 3.5.41 + '@vue/shared': 3.5.41 + + '@vue/compiler-sfc@3.5.24': + dependencies: + '@babel/parser': 7.29.8 + '@vue/compiler-core': 3.5.24 + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.26 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.24': + dependencies: + '@vue/compiler-dom': 3.5.24 + '@vue/shared': 3.5.24 + + '@vue/compiler-vue2@2.7.16': + dependencies: + de-indent: 1.0.2 + he: 1.2.0 + + '@vue/language-core@2.2.0(typescript@5.9.3)': + dependencies: + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.41 + '@vue/compiler-vue2': 2.7.16 + '@vue/shared': 3.5.41 + alien-signals: 0.4.14 + minimatch: 9.0.9 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + optionalDependencies: + typescript: 5.9.3 + + '@vue/language-core@3.3.5': + dependencies: + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.41 + '@vue/shared': 3.5.41 + alien-signals: 3.2.1 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.5 + + '@vue/reactivity@3.5.24': + dependencies: + '@vue/shared': 3.5.24 + + '@vue/runtime-core@3.5.24': + dependencies: + '@vue/reactivity': 3.5.24 + '@vue/shared': 3.5.24 + + '@vue/runtime-dom@3.5.24': + dependencies: + '@vue/reactivity': 3.5.24 + '@vue/runtime-core': 3.5.24 + '@vue/shared': 3.5.24 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@5.6.3))': + dependencies: + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + vue: 3.5.24(typescript@5.6.3) + + '@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2))': + dependencies: + '@vue/compiler-ssr': 3.5.24 + '@vue/shared': 3.5.24 + vue: 3.5.24(typescript@7.0.2) + + '@vue/shared@3.5.24': {} + + '@vue/shared@3.5.41': {} + + '@vue/test-utils@2.4.11(@vue/compiler-dom@3.5.41)(@vue/server-renderer@3.5.24(vue@3.5.24(typescript@7.0.2)))(vue@3.5.24(typescript@7.0.2))': + dependencies: + '@vue/compiler-dom': 3.5.41 + js-beautify: 1.15.4 + vue: 3.5.24(typescript@7.0.2) + vue-component-type-helpers: 3.3.9 + optionalDependencies: + '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@7.0.2)) + + '@vueuse/core@13.9.0(vue@3.5.24(typescript@7.0.2))': + dependencies: + '@types/web-bluetooth': 0.0.21 + '@vueuse/metadata': 13.9.0 + '@vueuse/shared': 13.9.0(vue@3.5.24(typescript@7.0.2)) + vue: 3.5.24(typescript@7.0.2) + + '@vueuse/integrations@13.9.0(sortablejs@1.15.7)(vue@3.5.24(typescript@7.0.2))': + dependencies: + '@vueuse/core': 13.9.0(vue@3.5.24(typescript@7.0.2)) + '@vueuse/shared': 13.9.0(vue@3.5.24(typescript@7.0.2)) + vue: 3.5.24(typescript@7.0.2) + optionalDependencies: + sortablejs: 1.15.7 + + '@vueuse/metadata@13.9.0': {} + + '@vueuse/shared@13.9.0(vue@3.5.24(typescript@7.0.2))': + dependencies: + vue: 3.5.24(typescript@7.0.2) + + '@zip.js/zip.js@2.8.34': {} + + abbrev@2.0.0: {} + + abbrev@3.0.1: {} + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn@8.18.0: {} + + ag-charts-community@12.1.2: + dependencies: + ag-charts-core: 12.1.2 + ag-charts-locale: 12.1.2 + ag-charts-types: 12.1.2 + optional: true + + ag-charts-core@12.1.2: + dependencies: + ag-charts-types: 12.1.2 + optional: true + + ag-charts-enterprise@12.1.2: + dependencies: + ag-charts-community: 12.1.2 + ag-charts-core: 12.1.2 + optional: true + + ag-charts-locale@12.1.2: + optional: true + + ag-charts-types@10.3.9: {} + + ag-charts-types@12.1.2: {} + + ag-grid-community@34.1.2: + dependencies: + ag-charts-types: 12.1.2 + + ag-grid-enterprise@34.1.2: + dependencies: + ag-grid-community: 34.1.2 + optionalDependencies: + ag-charts-community: 12.1.2 + ag-charts-enterprise: 12.1.2 + + ag-grid-vue3@34.1.2(vue@3.5.24(typescript@7.0.2)): + dependencies: + ag-grid-community: 34.1.2 + vue: 3.5.24(typescript@7.0.2) + + agent-base@7.1.4: {} + + ajv-draft-04@1.0.0(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv-formats@3.0.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv@8.18.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.5 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.5 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + alien-signals@0.4.14: {} + + alien-signals@3.2.1: {} + + ansi-colors@4.1.3: {} + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + anynum@1.0.1: {} + + archiver-utils@5.0.2: + dependencies: + glob: 10.5.0 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.18.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.7.0 + readdir-glob: 1.1.3 + tar-stream: 3.2.0 + zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + argparse@1.0.10: + dependencies: + sprintf-js: 1.0.3 + + argparse@2.0.1: {} + + array-union@2.1.0: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + asn1js@3.0.10: + dependencies: + pvtsutils: 1.3.6 + pvutils: 1.2.0 + tslib: 2.8.1 + + assertion-error@2.0.1: {} + + ast-kit@3.0.0: + dependencies: + '@babel/parser': 8.0.4 + estree-walker: 3.0.3 + pathe: 2.0.3 + + async@3.2.6: {} + + available-typed-arrays@1.0.7: + dependencies: + possible-typed-array-names: 1.1.0 + + b4a@1.8.1: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + bare-events@2.9.1: {} + + bare-fs@4.8.0: + dependencies: + bare-events: 2.9.1 + bare-path: 3.1.1 + bare-stream: 2.13.3(bare-events@2.9.1) + bare-url: 2.4.7 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + bare-path@3.1.1: {} + + bare-stream@2.13.3(bare-events@2.9.1): + dependencies: + b4a: 1.8.1 + streamx: 2.28.0 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.9.1 + transitivePeerDependencies: + - react-native-b4a + + bare-url@2.4.7: + dependencies: + bare-path: 3.1.1 + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.11.12: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + better-path-resolve@1.0.0: + dependencies: + is-windows: 1.0.2 + + better-sqlite3@12.10.0: + dependencies: + bindings: 1.5.0 + prebuild-install: 7.1.3 + + bindings@1.5.0: + dependencies: + file-uri-to-path: 1.0.0 + + birpc@4.0.0: {} + + bl@1.2.3: + dependencies: + readable-stream: 2.3.8 + safe-buffer: 5.2.1 + + bl@4.1.0: + dependencies: + buffer: 5.7.1 + inherits: 2.0.4 + readable-stream: 3.6.2 + + bowser@2.14.1: {} + + brace-expansion@1.1.18: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.4: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.9: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.7: + dependencies: + baseline-browser-mapping: 2.11.12 + caniuse-lite: 1.0.30001807 + electron-to-chromium: 1.5.402 + node-releases: 2.0.53 + update-browserslist-db: 1.2.3(browserslist@4.28.7) + + buffer-alloc-unsafe@1.1.0: {} + + buffer-alloc@1.2.0: + dependencies: + buffer-alloc-unsafe: 1.1.0 + buffer-fill: 1.0.0 + + buffer-crc32@0.2.13: {} + + buffer-crc32@1.0.0: {} + + buffer-fill@1.0.0: {} + + buffer@5.6.0: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + buildcheck@0.0.7: + optional: true + + bytestreamjs@2.0.1: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bind@1.0.9: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 + set-function-length: 1.2.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + caniuse-lite@1.0.30001807: {} + + canonicalize@2.1.0: {} + + chai@6.2.2: {} + + chardet@2.2.0: {} + + chownr@1.1.4: {} + + chownr@3.0.0: {} + + ci-info@3.9.0: {} + + cli-width@4.1.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-convert@3.1.3: + dependencies: + color-name: 2.1.1 + + color-name@1.1.4: {} + + color-name@2.1.1: {} + + color-string@2.1.4: + dependencies: + color-name: 2.1.1 + + color@5.0.3: + dependencies: + color-convert: 3.1.3 + color-string: 2.1.4 + + colorette@1.4.0: {} + + comlink@4.4.2: {} + + commander@10.0.1: {} + + commander@14.0.3: {} + + commander@15.0.0: {} + + commander@2.20.3: {} + + compare-versions@6.1.1: {} + + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + concat-map@0.0.1: {} + + confbox@0.1.8: {} + + confbox@0.2.4: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + consola@3.4.2: {} + + convert-source-map@2.0.0: {} + + core-util-is@1.0.3: {} + + cpu-features@0.0.10: + dependencies: + buildcheck: 0.0.7 + nan: 2.28.0 + optional: true + + crc-32@1.2.2: {} + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.7.0 + + cross-spawn@6.0.6: + dependencies: + nice-try: 1.0.5 + path-key: 2.0.1 + semver: 5.7.2 + shebang-command: 1.2.0 + which: 1.3.1 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + csstype@3.2.3: {} + + d3-array@3.2.4: + dependencies: + internmap: 2.0.3 + + d3-axis@3.0.0: {} + + d3-color@3.1.0: {} + + d3-dispatch@3.0.1: {} + + d3-drag@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-selection: 3.0.0 + + d3-ease@3.0.1: {} + + d3-format@3.1.2: {} + + d3-hierarchy@3.1.2: {} + + d3-interpolate@3.0.1: + dependencies: + d3-color: 3.1.0 + + d3-path@3.1.0: {} + + d3-polygon@3.0.1: {} + + d3-quadtree@3.0.1: {} + + d3-random@3.0.1: {} + + d3-scale-chromatic@3.1.0: + dependencies: + d3-color: 3.1.0 + d3-interpolate: 3.0.1 + + d3-scale@4.0.2: + dependencies: + d3-array: 3.2.4 + d3-format: 3.1.2 + d3-interpolate: 3.0.1 + d3-time: 3.1.0 + d3-time-format: 4.1.0 + + d3-selection@3.0.0: {} + + d3-shape@3.2.0: + dependencies: + d3-path: 3.1.0 + + d3-time-format@4.1.0: + dependencies: + d3-time: 3.1.0 + + d3-time@3.1.0: + dependencies: + d3-array: 3.2.4 + + d3-timer@3.0.1: {} + + d3-transition@3.0.1(d3-selection@3.0.0): + dependencies: + d3-color: 3.1.0 + d3-dispatch: 3.0.1 + d3-ease: 3.0.1 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-timer: 3.0.1 + + d3-zoom@3.0.0: + dependencies: + d3-dispatch: 3.0.1 + d3-drag: 3.0.0 + d3-interpolate: 3.0.1 + d3-selection: 3.0.0 + d3-transition: 3.0.1(d3-selection@3.0.0) + + de-indent@1.0.2: {} + + debug@2.6.9: + dependencies: + ms: 2.0.0 + + debug@4.4.3: + dependencies: + ms: 2.1.3 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + decompress-tar@4.1.1: + dependencies: + file-type: 5.2.0 + is-stream: 1.1.0 + tar-stream: 1.6.2 + + decompress-tarbz2@4.1.1: + dependencies: + decompress-tar: 4.1.1 + file-type: 6.2.0 + is-stream: 1.1.0 + seek-bzip: 1.0.6 + unbzip2-stream: 1.4.3 + + decompress-targz@4.1.1: + dependencies: + decompress-tar: 4.1.1 + file-type: 5.2.0 + is-stream: 1.1.0 + + decompress-unzip@4.0.1: + dependencies: + file-type: 3.9.0 + get-stream: 2.3.1 + pify: 2.3.0 + yauzl: 2.10.0 + + decompress@4.2.1: + dependencies: + decompress-tar: 4.1.1 + decompress-tarbz2: 4.1.1 + decompress-targz: 4.1.1 + decompress-unzip: 4.0.1 + graceful-fs: 4.2.11 + make-dir: 1.3.0 + pify: 2.3.0 + strip-dirs: 2.1.0 + + deep-extend@0.6.0: {} + + define-data-property@1.1.4: + dependencies: + es-define-property: 1.0.1 + es-errors: 1.3.0 + gopd: 1.2.0 + + denque@2.1.0: {} + + detect-indent@6.1.0: {} + + detect-libc@2.1.2: {} + + diff@8.0.4: {} + + dir-glob@3.0.1: + dependencies: + path-type: 4.0.0 + + dts-resolver@3.0.0: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + editorconfig@1.0.7: + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.9 + semver: 7.8.5 + + electron-to-chromium@1.5.402: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + enabled@2.0.0: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enquirer@2.4.1: + dependencies: + ansi-colors: 4.1.3 + strip-ansi: 6.0.1 + + entities@4.5.0: {} + + entities@7.0.1: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-module-lexer@2.3.1: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-toolkit@1.50.0: {} + + esbuild@0.28.1: + optionalDependencies: + '@esbuild/aix-ppc64': 0.28.1 + '@esbuild/android-arm': 0.28.1 + '@esbuild/android-arm64': 0.28.1 + '@esbuild/android-x64': 0.28.1 + '@esbuild/darwin-arm64': 0.28.1 + '@esbuild/darwin-x64': 0.28.1 + '@esbuild/freebsd-arm64': 0.28.1 + '@esbuild/freebsd-x64': 0.28.1 + '@esbuild/linux-arm': 0.28.1 + '@esbuild/linux-arm64': 0.28.1 + '@esbuild/linux-ia32': 0.28.1 + '@esbuild/linux-loong64': 0.28.1 + '@esbuild/linux-mips64el': 0.28.1 + '@esbuild/linux-ppc64': 0.28.1 + '@esbuild/linux-riscv64': 0.28.1 + '@esbuild/linux-s390x': 0.28.1 + '@esbuild/linux-x64': 0.28.1 + '@esbuild/netbsd-arm64': 0.28.1 + '@esbuild/netbsd-x64': 0.28.1 + '@esbuild/openbsd-arm64': 0.28.1 + '@esbuild/openbsd-x64': 0.28.1 + '@esbuild/openharmony-arm64': 0.28.1 + '@esbuild/sunos-x64': 0.28.1 + '@esbuild/win32-arm64': 0.28.1 + '@esbuild/win32-ia32': 0.28.1 + '@esbuild/win32-x64': 0.28.1 + + escalade@3.2.0: {} + + esprima@4.0.1: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + event-target-shim@5.0.1: {} + + events-universal@1.0.1: + dependencies: + bare-events: 2.9.1 + transitivePeerDependencies: + - bare-abort-controller + + events@3.3.0: {} + + execa@1.0.0: + dependencies: + cross-spawn: 6.0.6 + get-stream: 4.1.0 + is-stream: 1.1.0 + npm-run-path: 2.0.2 + p-finally: 1.0.0 + signal-exit: 3.0.7 + strip-eof: 1.0.0 + + expand-template@2.0.3: {} + + expect-type@1.4.0: {} + + exsolve@1.1.1: {} + + extendable-error@0.1.7: {} + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-patch@3.1.1: {} + + fast-uri@3.1.5: {} + + fast-xml-parser@5.2.5: + dependencies: + strnum: 2.4.1 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fd-slicer@1.1.0: + dependencies: + pend: 1.2.0 + + fdir@6.5.0(picomatch@4.0.5): + optionalDependencies: + picomatch: 4.0.5 + + fecha@4.2.3: {} + + file-type@3.9.0: {} + + file-type@5.2.0: {} + + file-type@6.2.0: {} + + file-uri-to-path@1.0.0: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + fn.name@1.1.0: {} + + for-each@0.3.5: + dependencies: + is-callable: 1.2.7 + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + fs-constants@1.0.0: {} + + fs-extra@11.3.6: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fs-extra@7.0.1: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fs.realpath@1.0.0: {} + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-stream@2.3.1: + dependencies: + object-assign: 4.1.1 + pinkie-promise: 2.0.1 + + get-stream@4.1.0: + dependencies: + pump: 3.0.4 + + get-tsconfig@5.0.0-beta.5: + dependencies: + resolve-pkg-maps: 1.0.0 + + github-from-package@0.0.0: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@7.2.3: + dependencies: + fs.realpath: 1.0.0 + inflight: 1.0.6 + inherits: 2.0.4 + minimatch: 3.1.5 + once: 1.4.0 + path-is-absolute: 1.0.1 + + globby@10.0.1: + dependencies: + '@types/glob': 7.2.0 + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + glob: 7.2.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + globby@11.1.0: + dependencies: + array-union: 2.1.0 + dir-glob: 3.0.1 + fast-glob: 3.3.3 + ignore: 5.3.2 + merge2: 1.4.1 + slash: 3.0.0 + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-property-descriptors@1.0.2: + dependencies: + es-define-property: 1.0.1 + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + he@1.2.0: {} + + html-escaper@2.0.2: {} + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color + + human-id@4.2.0: {} + + iconv-lite@0.7.3: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + immer@11.1.4: {} + + import-lazy@4.0.0: {} + + inflight@1.0.6: + dependencies: + once: 1.4.0 + wrappy: 1.0.2 + + inherits@2.0.4: {} + + ini@1.3.8: {} + + internmap@2.0.3: {} + + interpret@1.4.0: {} + + is-callable@1.2.7: {} + + is-core-module@2.16.2: + dependencies: + hasown: 2.0.4 + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-natural-number@4.0.1: {} + + is-number@7.0.0: {} + + is-plain-object@3.0.1: {} + + is-stream@1.1.0: {} + + is-stream@2.0.1: {} + + is-subdir@1.2.0: + dependencies: + better-path-resolve: 1.0.0 + + is-typed-array@1.1.15: + dependencies: + which-typed-array: 1.1.22 + + is-windows@1.0.2: {} + + isarray@1.0.0: {} + + isarray@2.0.5: {} + + isexe@2.0.0: {} + + istanbul-lib-coverage@3.2.2: {} + + istanbul-lib-report@3.0.1: + dependencies: + istanbul-lib-coverage: 3.2.2 + make-dir: 4.0.0 + supports-color: 7.2.0 + + istanbul-reports@3.2.0: + dependencies: + html-escaper: 2.0.2 + istanbul-lib-report: 3.0.1 + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jju@1.4.0: {} + + js-beautify@1.15.4: + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.7 + glob: 10.5.0 + js-cookie: 3.0.8 + nopt: 7.2.1 + + js-cookie@3.0.8: {} + + js-tokens@4.0.0: {} + + js-yaml@3.15.1: + dependencies: + argparse: 1.0.10 + esprima: 4.0.1 + + js-yaml@4.3.1: + dependencies: + argparse: 2.0.1 + + jsesc@3.1.0: {} + + json-schema-traverse@1.0.0: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonc-parser@3.3.1: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + kdbush@4.1.0: {} + + kolorist@1.8.0: {} + + kuler@2.0.0: {} + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + lightningcss-android-arm64@1.33.0: + optional: true + + lightningcss-darwin-arm64@1.33.0: + optional: true + + lightningcss-darwin-x64@1.33.0: + optional: true + + lightningcss-freebsd-x64@1.33.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.33.0: + optional: true + + lightningcss-linux-arm64-gnu@1.33.0: + optional: true + + lightningcss-linux-arm64-musl@1.33.0: + optional: true + + lightningcss-linux-x64-gnu@1.33.0: + optional: true + + lightningcss-linux-x64-musl@1.33.0: + optional: true + + lightningcss-win32-arm64-msvc@1.33.0: + optional: true + + lightningcss-win32-x64-msvc@1.33.0: + optional: true + + lightningcss@1.33.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.33.0 + lightningcss-darwin-arm64: 1.33.0 + lightningcss-darwin-x64: 1.33.0 + lightningcss-freebsd-x64: 1.33.0 + lightningcss-linux-arm-gnueabihf: 1.33.0 + lightningcss-linux-arm64-gnu: 1.33.0 + lightningcss-linux-arm64-musl: 1.33.0 + lightningcss-linux-x64-gnu: 1.33.0 + lightningcss-linux-x64-musl: 1.33.0 + lightningcss-win32-arm64-msvc: 1.33.0 + lightningcss-win32-x64-msvc: 1.33.0 + + local-pkg@1.2.1: + dependencies: + mlly: 1.8.2 + pkg-types: 2.3.1 + quansync: 0.2.11 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + lodash.camelcase@4.3.0: {} + + lodash.startcase@4.4.0: {} + + lodash@4.18.1: {} + + logform@2.7.0: + dependencies: + '@colors/colors': 1.6.0 + '@types/triple-beam': 1.3.5 + fecha: 4.2.3 + ms: 2.1.3 + safe-stable-stringify: 2.5.0 + triple-beam: 1.4.1 + + long@5.3.2: {} + + lru-cache@10.4.3: {} + + lru-cache@11.5.2: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + magicast@0.5.4: + dependencies: + '@babel/parser': 7.29.8 + '@babel/types': 7.29.8 + source-map-js: 1.2.1 + + make-dir@1.3.0: + dependencies: + pify: 3.0.0 + + make-dir@4.0.0: + dependencies: + semver: 7.8.5 + + math-intrinsics@1.1.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-response@3.1.0: {} + + minimatch@10.2.3: + dependencies: + brace-expansion: 5.0.9 + + minimatch@10.2.6: + dependencies: + brace-expansion: 5.0.9 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.18 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.4 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.4 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mkdirp-classic@0.5.3: {} + + mlly@1.8.2: + dependencies: + acorn: 8.18.0 + pathe: 2.0.3 + pkg-types: 1.3.1 + ufo: 1.6.4 + + mri@1.2.0: {} + + ms@2.0.0: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + mute-stream@2.0.0: {} + + nan@2.28.0: + optional: true + + nanoid@3.3.17: {} + + napi-build-utils@2.0.0: {} + + nice-try@1.0.5: {} + + node-abi@3.94.0: + dependencies: + semver: 7.8.5 + + node-fetch@2.7.0: + dependencies: + whatwg-url: 5.0.0 + + node-releases@2.0.53: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + + normalize-path@3.0.0: {} + + npm-run-path@2.0.2: + dependencies: + path-key: 2.0.1 + + object-assign@4.1.1: {} + + obug@2.1.4: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + one-time@1.0.0: + dependencies: + fn.name: 1.1.0 + + openapi-fetch@0.15.2: + dependencies: + openapi-typescript-helpers: 0.0.15 + + openapi-typescript-helpers@0.0.15: {} + + outdent@0.5.0: {} + + oxfmt@0.35.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.35.0 + '@oxfmt/binding-android-arm64': 0.35.0 + '@oxfmt/binding-darwin-arm64': 0.35.0 + '@oxfmt/binding-darwin-x64': 0.35.0 + '@oxfmt/binding-freebsd-x64': 0.35.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.35.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.35.0 + '@oxfmt/binding-linux-arm64-gnu': 0.35.0 + '@oxfmt/binding-linux-arm64-musl': 0.35.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.35.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.35.0 + '@oxfmt/binding-linux-riscv64-musl': 0.35.0 + '@oxfmt/binding-linux-s390x-gnu': 0.35.0 + '@oxfmt/binding-linux-x64-gnu': 0.35.0 + '@oxfmt/binding-linux-x64-musl': 0.35.0 + '@oxfmt/binding-openharmony-arm64': 0.35.0 + '@oxfmt/binding-win32-arm64-msvc': 0.35.0 + '@oxfmt/binding-win32-ia32-msvc': 0.35.0 + '@oxfmt/binding-win32-x64-msvc': 0.35.0 + + oxfmt@0.62.0: + dependencies: + tinypool: 2.1.0 + optionalDependencies: + '@oxfmt/binding-android-arm-eabi': 0.62.0 + '@oxfmt/binding-android-arm64': 0.62.0 + '@oxfmt/binding-darwin-arm64': 0.62.0 + '@oxfmt/binding-darwin-x64': 0.62.0 + '@oxfmt/binding-freebsd-x64': 0.62.0 + '@oxfmt/binding-linux-arm-gnueabihf': 0.62.0 + '@oxfmt/binding-linux-arm-musleabihf': 0.62.0 + '@oxfmt/binding-linux-arm64-gnu': 0.62.0 + '@oxfmt/binding-linux-arm64-musl': 0.62.0 + '@oxfmt/binding-linux-ppc64-gnu': 0.62.0 + '@oxfmt/binding-linux-riscv64-gnu': 0.62.0 + '@oxfmt/binding-linux-riscv64-musl': 0.62.0 + '@oxfmt/binding-linux-s390x-gnu': 0.62.0 + '@oxfmt/binding-linux-x64-gnu': 0.62.0 + '@oxfmt/binding-linux-x64-musl': 0.62.0 + '@oxfmt/binding-openharmony-arm64': 0.62.0 + '@oxfmt/binding-win32-arm64-msvc': 0.62.0 + '@oxfmt/binding-win32-ia32-msvc': 0.62.0 + '@oxfmt/binding-win32-x64-msvc': 0.62.0 + + oxlint-plugin-eslint@1.63.0: {} + + oxlint@1.63.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.63.0 + '@oxlint/binding-android-arm64': 1.63.0 + '@oxlint/binding-darwin-arm64': 1.63.0 + '@oxlint/binding-darwin-x64': 1.63.0 + '@oxlint/binding-freebsd-x64': 1.63.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.63.0 + '@oxlint/binding-linux-arm-musleabihf': 1.63.0 + '@oxlint/binding-linux-arm64-gnu': 1.63.0 + '@oxlint/binding-linux-arm64-musl': 1.63.0 + '@oxlint/binding-linux-ppc64-gnu': 1.63.0 + '@oxlint/binding-linux-riscv64-gnu': 1.63.0 + '@oxlint/binding-linux-riscv64-musl': 1.63.0 + '@oxlint/binding-linux-s390x-gnu': 1.63.0 + '@oxlint/binding-linux-x64-gnu': 1.63.0 + '@oxlint/binding-linux-x64-musl': 1.63.0 + '@oxlint/binding-openharmony-arm64': 1.63.0 + '@oxlint/binding-win32-arm64-msvc': 1.63.0 + '@oxlint/binding-win32-ia32-msvc': 1.63.0 + '@oxlint/binding-win32-x64-msvc': 1.63.0 + + oxlint@1.77.0: + optionalDependencies: + '@oxlint/binding-android-arm-eabi': 1.77.0 + '@oxlint/binding-android-arm64': 1.77.0 + '@oxlint/binding-darwin-arm64': 1.77.0 + '@oxlint/binding-darwin-x64': 1.77.0 + '@oxlint/binding-freebsd-x64': 1.77.0 + '@oxlint/binding-linux-arm-gnueabihf': 1.77.0 + '@oxlint/binding-linux-arm-musleabihf': 1.77.0 + '@oxlint/binding-linux-arm64-gnu': 1.77.0 + '@oxlint/binding-linux-arm64-musl': 1.77.0 + '@oxlint/binding-linux-ppc64-gnu': 1.77.0 + '@oxlint/binding-linux-riscv64-gnu': 1.77.0 + '@oxlint/binding-linux-riscv64-musl': 1.77.0 + '@oxlint/binding-linux-s390x-gnu': 1.77.0 + '@oxlint/binding-linux-x64-gnu': 1.77.0 + '@oxlint/binding-linux-x64-musl': 1.77.0 + '@oxlint/binding-openharmony-arm64': 1.77.0 + '@oxlint/binding-win32-arm64-msvc': 1.77.0 + '@oxlint/binding-win32-ia32-msvc': 1.77.0 + '@oxlint/binding-win32-x64-msvc': 1.77.0 + + p-filter@2.1.0: + dependencies: + p-map: 2.1.0 + + p-finally@1.0.0: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-map@2.1.0: {} + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + package-manager-detector@0.2.11: + dependencies: + quansync: 0.2.11 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-is-absolute@1.0.1: {} + + path-key@2.0.1: {} + + path-key@3.1.1: {} + + path-parse@1.0.7: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + path-type@4.0.0: {} + + pathe@2.0.3: {} + + pend@1.2.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.5: {} + + pify@2.3.0: {} + + pify@3.0.0: {} + + pify@4.0.1: {} + + pinkie-promise@2.0.1: + dependencies: + pinkie: 2.0.4 + + pinkie@2.0.4: {} + + pkg-types@1.3.1: + dependencies: + confbox: 0.1.8 + mlly: 1.8.2 + pathe: 2.0.3 + + pkg-types@2.3.1: + dependencies: + confbox: 0.2.4 + exsolve: 1.1.1 + pathe: 2.0.3 + + pkijs@3.4.0: + dependencies: + '@noble/hashes': 1.4.0 + asn1js: 3.0.10 + bytestreamjs: 2.0.1 + pvtsutils: 1.3.6 + pvutils: 1.2.0 + tslib: 2.8.1 + + possible-typed-array-names@1.1.0: {} + + postcss@8.5.26: + dependencies: + nanoid: 3.3.17 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + prebuild-install@7.1.3: + dependencies: + detect-libc: 2.1.2 + expand-template: 2.0.3 + github-from-package: 0.0.0 + minimist: 1.2.8 + mkdirp-classic: 0.5.3 + napi-build-utils: 2.0.0 + node-abi: 3.94.0 + pump: 3.0.4 + rc: 1.2.8 + simple-get: 4.0.1 + tar-fs: 2.1.5 + tunnel-agent: 0.6.0 + + prettier@2.8.8: {} + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + proto-list@1.2.4: {} + + protobufjs@7.6.5: + dependencies: + '@protobufjs/aspromise': 1.1.2 + '@protobufjs/base64': 1.1.2 + '@protobufjs/codegen': 2.0.5 + '@protobufjs/eventemitter': 1.1.1 + '@protobufjs/fetch': 1.1.1 + '@protobufjs/float': 1.0.2 + '@protobufjs/path': 1.1.2 + '@protobufjs/pool': 1.1.0 + '@protobufjs/utf8': 1.1.2 + '@types/node': 26.1.2 + long: 5.3.2 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + pvtsutils@1.3.6: + dependencies: + tslib: 2.8.1 + + pvutils@1.2.0: {} + + quansync@0.2.11: {} + + queue-microtask@1.2.3: {} + + quickjs-emscripten-core@0.32.0: + dependencies: + '@jitl/quickjs-ffi-types': 0.32.0 + + quickjs-emscripten@0.32.0: + dependencies: + '@jitl/quickjs-wasmfile-debug-asyncify': 0.32.0 + '@jitl/quickjs-wasmfile-debug-sync': 0.32.0 + '@jitl/quickjs-wasmfile-release-asyncify': 0.32.0 + '@jitl/quickjs-wasmfile-release-sync': 0.32.0 + quickjs-emscripten-core: 0.32.0 + + quickselect@3.0.0: {} + + rbush@4.0.1: + dependencies: + quickselect: 3.0.0 + + rc@1.2.8: + dependencies: + deep-extend: 0.6.0 + ini: 1.3.8 + minimist: 1.2.8 + strip-json-comments: 2.0.1 + + react-dom@19.2.8(react@19.2.8): + dependencies: + react: 19.2.8 + scheduler: 0.27.0 + + react@19.2.8: {} + + read-yaml-file@1.1.0: + dependencies: + graceful-fs: 4.2.11 + js-yaml: 3.15.1 + pify: 4.0.1 + strip-bom: 3.0.0 + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.9 + + rechoir@0.6.2: + dependencies: + resolve: 1.22.12 + + reflect-metadata@0.2.2: {} + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resize-observer-polyfill@1.5.1: {} + + resolve-from@5.0.0: {} + + resolve-pkg-maps@1.0.0: {} + + resolve@1.22.12: + dependencies: + es-errors: 1.3.0 + is-core-module: 2.16.2 + path-parse: 1.0.7 + supports-preserve-symlinks-flag: 1.0.0 + + reusify@1.1.0: {} + + rolldown-plugin-dts@0.26.0(rolldown@1.2.3)(typescript@5.9.3)(vue-tsc@3.3.5(typescript@5.6.3)): + dependencies: + '@babel/generator': 8.0.0 + '@babel/helper-validator-identifier': 8.0.4 + '@babel/parser': 8.0.4 + ast-kit: 3.0.0 + birpc: 4.0.0 + dts-resolver: 3.0.0 + get-tsconfig: 5.0.0-beta.5 + obug: 2.1.4 + rolldown: 1.2.3 + optionalDependencies: + typescript: 5.9.3 + vue-tsc: 3.3.5(typescript@5.9.3) + transitivePeerDependencies: + - oxc-resolver + + rolldown@1.2.3: + dependencies: + '@oxc-project/types': 0.143.0 + '@rolldown/pluginutils': 1.0.1 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.2.3 + '@rolldown/binding-darwin-arm64': 1.2.3 + '@rolldown/binding-darwin-x64': 1.2.3 + '@rolldown/binding-freebsd-x64': 1.2.3 + '@rolldown/binding-linux-arm-gnueabihf': 1.2.3 + '@rolldown/binding-linux-arm64-gnu': 1.2.3 + '@rolldown/binding-linux-arm64-musl': 1.2.3 + '@rolldown/binding-linux-ppc64-gnu': 1.2.3 + '@rolldown/binding-linux-s390x-gnu': 1.2.3 + '@rolldown/binding-linux-x64-gnu': 1.2.3 + '@rolldown/binding-linux-x64-musl': 1.2.3 + '@rolldown/binding-openharmony-arm64': 1.2.3 + '@rolldown/binding-win32-arm64-msvc': 1.2.3 + '@rolldown/binding-win32-x64-msvc': 1.2.3 + + rollup-plugin-copy@3.5.0: + dependencies: + '@types/fs-extra': 8.1.5 + colorette: 1.4.0 + fs-extra: 8.1.0 + globby: 10.0.1 + is-plain-object: 3.0.1 + + rollup-plugin-sourcemaps2@0.5.8(@types/node@26.1.2)(rollup@4.62.4): + dependencies: + '@rollup/pluginutils': 5.4.0(rollup@4.62.4) + rollup: 4.62.4 + optionalDependencies: + '@types/node': 26.1.2 + + rollup@4.62.4: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@napi-rs/lzma-linux-x64-gnu': 1.5.1 + '@rollup/rollup-android-arm-eabi': 4.62.4 + '@rollup/rollup-android-arm64': 4.62.4 + '@rollup/rollup-darwin-arm64': 4.62.4 + '@rollup/rollup-darwin-x64': 4.62.4 + '@rollup/rollup-freebsd-arm64': 4.62.4 + '@rollup/rollup-freebsd-x64': 4.62.4 + '@rollup/rollup-linux-arm-gnueabihf': 4.62.4 + '@rollup/rollup-linux-arm-musleabihf': 4.62.4 + '@rollup/rollup-linux-arm64-gnu': 4.62.4 + '@rollup/rollup-linux-arm64-musl': 4.62.4 + '@rollup/rollup-linux-loong64-gnu': 4.62.4 + '@rollup/rollup-linux-loong64-musl': 4.62.4 + '@rollup/rollup-linux-ppc64-gnu': 4.62.4 + '@rollup/rollup-linux-ppc64-musl': 4.62.4 + '@rollup/rollup-linux-riscv64-gnu': 4.62.4 + '@rollup/rollup-linux-riscv64-musl': 4.62.4 + '@rollup/rollup-linux-s390x-gnu': 4.62.4 + '@rollup/rollup-linux-x64-gnu': 4.62.4 + '@rollup/rollup-linux-x64-musl': 4.62.4 + '@rollup/rollup-openbsd-x64': 4.62.4 + '@rollup/rollup-openharmony-arm64': 4.62.4 + '@rollup/rollup-win32-arm64-msvc': 4.62.4 + '@rollup/rollup-win32-ia32-msvc': 4.62.4 + '@rollup/rollup-win32-x64-gnu': 4.62.4 + '@rollup/rollup-win32-x64-msvc': 4.62.4 + fsevents: 2.3.3 + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safe-stable-stringify@2.5.0: {} + + safer-buffer@2.1.2: {} + + scheduler@0.27.0: {} + + seek-bzip@1.0.6: + dependencies: + commander: 2.20.3 + + selfsigned@5.5.0: + dependencies: + '@peculiar/x509': 1.14.3 + pkijs: 3.4.0 + + semver@5.7.2: {} + + semver@6.3.1: {} + + semver@7.7.4: {} + + semver@7.8.5: {} + + set-function-length@1.2.2: + dependencies: + define-data-property: 1.1.4 + es-errors: 1.3.0 + function-bind: 1.1.2 + get-intrinsic: 1.3.0 + gopd: 1.2.0 + has-property-descriptors: 1.0.2 + + shebang-command@1.2.0: + dependencies: + shebang-regex: 1.0.0 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@1.0.0: {} + + shebang-regex@3.0.0: {} + + shelljs@0.9.2: + dependencies: + execa: 1.0.0 + fast-glob: 3.3.3 + interpret: 1.4.0 + rechoir: 0.6.2 + + shx@0.4.0: + dependencies: + minimist: 1.2.8 + shelljs: 0.9.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-concat@1.0.1: {} + + simple-get@4.0.1: + dependencies: + decompress-response: 6.0.0 + once: 1.4.0 + simple-concat: 1.0.1 + + slash@3.0.0: {} + + sortablejs@1.15.7: {} + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + spawndamnit@3.0.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + sprintf-js@1.0.3: {} + + ssh2@1.17.0: + dependencies: + asn1: 0.2.6 + bcrypt-pbkdf: 1.0.2 + optionalDependencies: + cpu-features: 0.0.10 + nan: 2.28.0 + + stack-trace@0.0.10: {} + + stackback@0.0.2: {} + + std-env@3.10.0: {} + + std-env@4.2.0: {} + + stream-browserify@3.0.0: + dependencies: + inherits: 2.0.4 + readable-stream: 3.6.2 + + streamx@2.28.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.7 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-bom@3.0.0: {} + + strip-dirs@2.1.0: + dependencies: + is-natural-number: 4.0.1 + + strip-eof@1.0.0: {} + + strip-json-comments@2.0.1: {} + + strnum@2.4.1: + dependencies: + anynum: 1.0.1 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + supports-preserve-symlinks-flag@1.0.0: {} + + tar-fs@2.1.5: + dependencies: + chownr: 1.1.4 + mkdirp-classic: 0.5.3 + pump: 3.0.4 + tar-stream: 2.2.0 + + tar-fs@3.1.3: + dependencies: + pump: 3.0.4 + tar-stream: 3.2.0 + optionalDependencies: + bare-fs: 4.8.0 + bare-path: 3.1.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + tar-stream@1.6.2: + dependencies: + bl: 1.2.3 + buffer-alloc: 1.2.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + readable-stream: 2.3.8 + to-buffer: 1.2.2 + xtend: 4.0.2 + + tar-stream@2.2.0: + dependencies: + bl: 4.1.0 + end-of-stream: 1.4.5 + fs-constants: 1.0.0 + inherits: 2.0.4 + readable-stream: 3.6.2 + + tar-stream@3.2.0: + dependencies: + b4a: 1.8.1 + bare-fs: 4.8.0 + fast-fifo: 1.3.2 + streamx: 2.28.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + tar@7.5.22: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + teex@1.0.1: + dependencies: + streamx: 2.28.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + term-size@2.2.1: {} + + text-decoder@1.2.7: + dependencies: + b4a: 1.8.1 + transitivePeerDependencies: + - react-native-b4a + + text-hex@1.0.0: {} + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@1.3.0: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + + tinypool@2.1.0: {} + + tinyrainbow@3.1.1: {} + + to-buffer@1.2.2: + dependencies: + isarray: 2.0.5 + safe-buffer: 5.2.1 + typed-array-buffer: 1.0.3 + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + tr46@0.0.3: {} + + triple-beam@1.4.1: {} + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tsyringe@4.10.0: + dependencies: + tslib: 1.14.1 + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + turbo@2.8.21: + optionalDependencies: + '@turbo/darwin-64': 2.8.21 + '@turbo/darwin-arm64': 2.8.21 + '@turbo/linux-64': 2.8.21 + '@turbo/linux-arm64': 2.8.21 + '@turbo/windows-64': 2.8.21 + '@turbo/windows-arm64': 2.8.21 + + tweetnacl@0.14.5: {} + + typed-array-buffer@1.0.3: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + is-typed-array: 1.1.15 + + typescript@3.9.10: {} + + typescript@5.4.5: {} + + typescript@5.6.3: {} + + typescript@5.9.3: {} + + typescript@7.0.2: + optionalDependencies: + '@typescript/typescript-aix-ppc64': 7.0.2 + '@typescript/typescript-darwin-arm64': 7.0.2 + '@typescript/typescript-darwin-x64': 7.0.2 + '@typescript/typescript-freebsd-arm64': 7.0.2 + '@typescript/typescript-freebsd-x64': 7.0.2 + '@typescript/typescript-linux-arm': 7.0.2 + '@typescript/typescript-linux-arm64': 7.0.2 + '@typescript/typescript-linux-loong64': 7.0.2 + '@typescript/typescript-linux-mips64el': 7.0.2 + '@typescript/typescript-linux-ppc64': 7.0.2 + '@typescript/typescript-linux-riscv64': 7.0.2 + '@typescript/typescript-linux-s390x': 7.0.2 + '@typescript/typescript-linux-x64': 7.0.2 + '@typescript/typescript-netbsd-arm64': 7.0.2 + '@typescript/typescript-netbsd-x64': 7.0.2 + '@typescript/typescript-openbsd-arm64': 7.0.2 + '@typescript/typescript-openbsd-x64': 7.0.2 + '@typescript/typescript-sunos-x64': 7.0.2 + '@typescript/typescript-win32-arm64': 7.0.2 + '@typescript/typescript-win32-x64': 7.0.2 + + ufo@1.6.4: {} + + ulid@3.0.2: {} + + unbzip2-stream@1.4.3: + dependencies: + buffer: 5.7.1 + through: 2.3.8 + + undici-types@7.12.0: {} + + undici-types@8.3.0: {} + + undici@7.16.0: {} + + universalify@0.1.2: {} + + universalify@2.0.1: {} + + upath@2.0.1: {} + + update-browserslist-db@1.2.3(browserslist@4.28.7): + dependencies: + browserslist: 4.28.7 + escalade: 3.2.0 + picocolors: 1.1.1 + + util-deprecate@1.0.2: {} + + utility-types@3.11.0: {} + + uuid@9.0.1: {} + + vite-plugin-commonjs@0.10.4: + dependencies: + acorn: 8.18.0 + magic-string: 0.30.21 + vite-plugin-dynamic-import: 1.6.0 + + vite-plugin-dts@4.5.4(@types/node@26.1.2)(rollup@4.62.4)(typescript@5.9.3)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)): + dependencies: + '@microsoft/api-extractor': 7.58.12(@types/node@26.1.2) + '@rollup/pluginutils': 5.4.0(rollup@4.62.4) + '@volar/typescript': 2.4.28 + '@vue/language-core': 2.2.0(typescript@5.9.3) + compare-versions: 6.1.1 + debug: 4.4.3 + kolorist: 1.8.0 + local-pkg: 1.2.1 + magic-string: 0.30.21 + typescript: 5.9.3 + optionalDependencies: + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + transitivePeerDependencies: + - '@types/node' + - rollup + - supports-color + + vite-plugin-dynamic-import@1.6.0: + dependencies: + acorn: 8.18.0 + es-module-lexer: 1.7.0 + fast-glob: 3.3.3 + magic-string: 0.30.21 + + vite-plugin-externalize-deps@0.10.0(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)): + dependencies: + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + + vite-plugin-lib-inject-css@2.2.2(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)): + dependencies: + '@ast-grep/napi': 0.36.3 + magic-string: 0.30.21 + picocolors: 1.1.1 + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + + vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0): + dependencies: + esbuild: 0.28.1 + fdir: 6.5.0(picomatch@4.0.5) + picomatch: 4.0.5 + postcss: 8.5.26 + rollup: 4.62.4 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.1.2 + fsevents: 2.3.3 + lightningcss: 1.33.0 + yaml: 2.9.0 + + vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0): + dependencies: + lightningcss: 1.33.0 + picomatch: 4.0.5 + postcss: 8.5.26 + rolldown: 1.2.3 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 26.1.2 + esbuild: 0.28.1 + fsevents: 2.3.3 + yaml: 2.9.0 + + vitest@4.0.18(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0): + dependencies: + '@vitest/expect': 4.0.18 + '@vitest/mocker': 4.0.18(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.0.18 + '@vitest/runner': 4.0.18 + '@vitest/snapshot': 4.0.18 + '@vitest/spy': 4.0.18 + '@vitest/utils': 4.0.18 + es-module-lexer: 1.7.0 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 26.1.2 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - terser + - tsx + - yaml + + vitest@4.1.10(@types/node@26.1.2)(@vitest/coverage-istanbul@4.1.10)(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.1 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.2.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 7.3.6(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 26.1.2 + '@vitest/coverage-istanbul': 4.1.10(vitest@4.0.18(@types/node@26.1.2)(lightningcss@1.33.0)(yaml@2.9.0)) + transitivePeerDependencies: + - msw + + vitest@4.1.10(@types/node@26.1.2)(@vitest/coverage-istanbul@4.1.10)(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)): + dependencies: + '@vitest/expect': 4.1.10 + '@vitest/mocker': 4.1.10(vite@8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0)) + '@vitest/pretty-format': 4.1.10 + '@vitest/runner': 4.1.10 + '@vitest/snapshot': 4.1.10 + '@vitest/spy': 4.1.10 + '@vitest/utils': 4.1.10 + es-module-lexer: 2.3.1 + expect-type: 1.4.0 + magic-string: 0.30.21 + obug: 2.1.4 + pathe: 2.0.3 + picomatch: 4.0.5 + std-env: 4.2.0 + tinybench: 2.9.0 + tinyexec: 1.3.0 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.1 + vite: 8.2.1(@types/node@26.1.2)(esbuild@0.28.1)(yaml@2.9.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 26.1.2 + '@vitest/coverage-istanbul': 4.1.10(vitest@4.1.10) + transitivePeerDependencies: + - msw + + vscode-uri@3.1.0: {} + + vue-component-type-helpers@3.3.9: {} + + vue-tsc@3.3.5(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.28 + '@vue/language-core': 3.3.5 + typescript: 5.9.3 + + vue@3.5.24(typescript@5.6.3): + dependencies: + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-sfc': 3.5.24 + '@vue/runtime-dom': 3.5.24 + '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@5.6.3)) + '@vue/shared': 3.5.24 + optionalDependencies: + typescript: 5.6.3 + + vue@3.5.24(typescript@7.0.2): + dependencies: + '@vue/compiler-dom': 3.5.24 + '@vue/compiler-sfc': 3.5.24 + '@vue/runtime-dom': 3.5.24 + '@vue/server-renderer': 3.5.24(vue@3.5.24(typescript@7.0.2)) + '@vue/shared': 3.5.24 + optionalDependencies: + typescript: 7.0.2 + + webidl-conversions@3.0.1: {} + + whatwg-url@5.0.0: + dependencies: + tr46: 0.0.3 + webidl-conversions: 3.0.1 + + which-typed-array@1.1.22: + dependencies: + available-typed-arrays: 1.0.7 + call-bind: 1.0.9 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 + has-tostringtag: 1.0.2 + + which@1.3.1: + dependencies: + isexe: 2.0.0 + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + winston-transport@4.9.0: + dependencies: + logform: 2.7.0 + readable-stream: 3.6.2 + triple-beam: 1.4.1 + + winston@3.19.0: + dependencies: + '@colors/colors': 1.6.0 + '@dabh/diagnostics': 2.0.8 + async: 3.2.6 + is-stream: 2.0.1 + logform: 2.7.0 + one-time: 1.0.0 + readable-stream: 3.6.2 + safe-stable-stringify: 2.5.0 + stack-trace: 0.0.10 + triple-beam: 1.4.1 + winston-transport: 4.9.0 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + xtend@4.0.2: {} + + y18n@5.0.8: {} + + yallist@3.1.1: {} + + yallist@5.0.0: {} + + yaml@2.9.0: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.3: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yauzl@2.10.0: + dependencies: + buffer-crc32: 0.2.13 + fd-slicer: 1.1.0 + + yoctocolors-cjs@2.1.3: {} + + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.7.0 + + zod@3.25.76: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..7c36655 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,30 @@ +packages: + - block + - model + - software + - test + - ui + - workflow +catalog: + "@platforma-sdk/model": 1.81.1 + "@platforma-sdk/ui-vue": 1.81.1 + "@platforma-sdk/workflow-tengo": 6.8.2 + "@platforma-sdk/test": 1.81.3 + "@platforma-sdk/block-tools": 2.13.0 + "@platforma-sdk/tengo-builder": 4.0.22 + "@platforma-sdk/package-builder": 3.15.0 + "@milaboratories/ts-builder": 1.6.2 + "@milaboratories/ts-configs": 1.4.0 + # `structure init` (block-tools 2.12.11) writes `"typescript": "catalog:"` into + # block/package.json but omits the catalog entry, so `pnpm install` fails with + # ERR_PNPM_CATALOG_ENTRY_NOT_FOUND_FOR_SPEC. Pinned here to the version every + # other structured block uses; drop this comment once init supplies it. + "typescript": ~5.6.3 + turbo: ~2.8.11 + shx: ~0.4.0 + "@changesets/cli": ~2.29.8 + vitest: ~4.0.18 + "@platforma-open/milaboratories.runenv-python-3": 1.8.2 + vue: 3.5.24 + "@milaboratories/helpers": 1.14.5 + "@milaboratories/graph-maker": 1.6.1 diff --git a/software/package.json b/software/package.json new file mode 100644 index 0000000..d5d9bc3 --- /dev/null +++ b/software/package.json @@ -0,0 +1,42 @@ +{ + "name": "@platforma-open/milaboratories.sort-seq-analysis.software", + "version": "1.0.0", + "description": "Sort-seq analysis score computation", + "files": [ + "./dist/**/*" + ], + "type": "module", + "scripts": { + "build": "block-tools software build", + "deps:export": "bash scripts/deps-export.sh", + "do-pack": "shx rm -f *.tgz && block-tools software build && pnpm pack && shx mv platforma-open*.tgz package.tgz", + "changeset": "changeset", + "version-packages": "changeset version" + }, + "devDependencies": { + "@platforma-open/milaboratories.runenv-python-3": "catalog:", + "@platforma-sdk/block-tools": "catalog:" + }, + "block-software": { + "entrypoints": { + "main": { + "binary": { + "artifact": { + "type": "python", + "registry": "platforma-open", + "environment": "@platforma-open/milaboratories.runenv-python-3:3.12.10-scientific-slim", + "dependencies": { + "toolset": "pip", + "requirements": "requirements.txt" + }, + "root": "./src" + }, + "cmd": [ + "python", + "{pkg}/main.py" + ] + } + } + } + } +} diff --git a/software/pyproject.toml b/software/pyproject.toml new file mode 100644 index 0000000..75286a5 --- /dev/null +++ b/software/pyproject.toml @@ -0,0 +1,41 @@ +[project] +name = "facs-bin-analysis-score" +version = "0.0.0" +requires-python = ">=3.12.0, <3.13" +# Runtime dependencies — single source of truth. These exact pins are exported to +# src/requirements.txt (top-level only) via `pnpm deps:export`, which is what the package +# builder reads and what the runenv installs offline. +# +# requirements.txt is a SELECTOR over the wheels the runenv already ships, not a sourcer: +# pip runs with --find-links at the runenv's packages and --no-index, so there is no PyPI +# at install time. A package the runenv does not bundle cannot be added by editing that +# file — it needs a different runenv variant. Keep these versions aligned with what +# 3.12.10-scientific-slim carries. +dependencies = [ + "polars-lts-cpu==1.33.1", +] + +[dependency-groups] +# Dev-only tooling, not shipped. Runtime libs live in [project.dependencies] above. +dev = [ + "pytest>=8.0", + "ruff>=0.14", +] + +[tool.pytest.ini_options] +testpaths = ["tests"] +pythonpath = ["src"] +addopts = "-ra --strict-markers" + +[tool.ruff] +line-length = 120 +indent-width = 4 +target-version = "py312" +exclude = ["node_modules", "dist", ".venv", "__pycache__"] + +[tool.ruff.lint] +select = ["E4", "E7", "E9", "E501", "F", "I"] + +[tool.ruff.format] +quote-style = "double" +indent-style = "space" diff --git a/software/scripts/deps-export.sh b/software/scripts/deps-export.sh new file mode 100644 index 0000000..834118b --- /dev/null +++ b/software/scripts/deps-export.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +# Regenerate src/requirements.txt from pyproject.toml (the single source of truth). +# +# --no-deps: top-level pins only. The runenv supplies transitive deps for the offline +# (--no-index) install, so requirements.txt must not pin a full closure. +set -euo pipefail +cd "$(dirname "$0")/.." +uv pip compile pyproject.toml --no-deps --no-annotate \ + --custom-compile-command "pnpm deps:export" -o src/requirements.txt diff --git a/software/src/constants.py b/software/src/constants.py new file mode 100644 index 0000000..f7d2eda --- /dev/null +++ b/software/src/constants.py @@ -0,0 +1,90 @@ +"""Literal names and tokens shared across the computation. + +Every string a caller can observe is defined here once: the input table headers the +workflow writes, the output headers it imports, the manifest field names, and the two +reference-mode tokens. Nothing here is a choice this module is free to make — the +headers are the workflow's side of `computation-interface`, and the tokens come from +`../dms-analysis#bin-score-formula`. +""" + +# --------------------------------------------------------------------------- +# Input table headers — written by the workflow's tsvFileBuilder (stage 2). +# --------------------------------------------------------------------------- + +COL_SAMPLE = "sampleId" +COL_VARIANT = "variantKey" +COL_READS = "reads" +COL_CONDITION = "condition" +COL_GATE = "gate" +COL_MUTATION_COUNT = "mutationCount" + +# --------------------------------------------------------------------------- +# Output headers — read back by the workflow's xsv.importFile (stage 3). Each score +# file carries the variant key and one value column; the value column is named after +# the quantity so the import schema is trivial on the other side. +# --------------------------------------------------------------------------- + +OUT_GATE_RANK_MEAN = "gateRankMean" +OUT_BIN_SCORE = "binScore" +OUT_GATE_FREQUENCY = "gateFrequency" +OUT_GATE_READS = "gateReads" + +# --------------------------------------------------------------------------- +# Output file names. The manifest names every file, so these patterns are internal — +# but they must stay regex-matchable, because the workflow collects them with +# exec's saveFileSet(name, regex) rather than by naming each file up front. +# +# The per-condition suffix is the condition's index in the sorted retained list, never +# the condition value itself: a condition value is arbitrary user data and may contain +# anything, including path separators. Sorting makes the index deterministic, which +# pure-template dedup depends on. +# --------------------------------------------------------------------------- + +SCORE_FILE_PATTERN = "score_{quantity}_c{index}.tsv" +DISTRIBUTION_FILE_PATTERN = "dist_c{index}.tsv" +MANIFEST_FILE = "manifest.json" + +SCORE_FILE_SET_REGEX = r"^score_.*\.tsv$" +DISTRIBUTION_FILE_SET_REGEX = r"^dist_.*\.tsv$" + +# --------------------------------------------------------------------------- +# Reference-mode tokens. Plain scalars, per `selectable-distinction-matchability`: +# a consumer matches on these in a domain key, so they are never encoded structures. +# --------------------------------------------------------------------------- + +MODE_REFERENCED = "referenced" +MODE_CANCELLED = "cancelled" + +# Manifest values for why a parent could not be identified. `parent-row-identification` +# permits one mechanism — a single variant whose amino-acid mutation count is zero — so +# there are exactly two ways it fails. +PARENT_ABSENT_NO_ZERO = "no-variant-with-zero-mutation-count" +PARENT_ABSENT_MULTIPLE_ZERO = "multiple-variants-with-zero-mutation-count" + +# --------------------------------------------------------------------------- +# Sort-fraction constraints, per `sort-fraction-values`. The tolerance and the range +# are adopted from titeseq-analysis rather than derived — both are shipped and tested +# there, and a second tolerance for the same quantity would fork this block from +# working code for no gain. 1e-3 is also the right order for four fractions rounded to +# three decimals on a sorter report. +# --------------------------------------------------------------------------- + +SORT_FRACTION_MIN = 0.0 +SORT_FRACTION_MAX = 1.0 +SORT_FRACTION_SUM_TOLERANCE = 1e-3 + +# --------------------------------------------------------------------------- +# How many variants the read-distribution view draws. +# +# The distribution is one series per variant, and a saturation library has thousands of +# scored variants — every one of them a line on one chart. So the emission is cut to the +# highest-scoring few per condition. This is a display bound, which is why it lives here +# as a constant rather than becoming an eighth block argument: `argument-surface` fixes +# the argument count at seven, and the number of lines a chart reads well at is not a +# property of the experiment. +# +# The full scored set is unaffected — it is what the score columns and the results table +# carry. Only this view is cut, and the manifest records by how much. +# --------------------------------------------------------------------------- + +DISTRIBUTION_TOP_N = 20 diff --git a/software/src/errors.py b/software/src/errors.py new file mode 100644 index 0000000..47a1c35 --- /dev/null +++ b/software/src/errors.py @@ -0,0 +1,21 @@ +"""The one error type a caller is meant to see. + +`validation-boundary` splits violations in two, and each rule is checked in exactly one +place. Configuration violations — a required argument absent, an anchor resolving to +nothing, the three metadata roles not distinct, an incomplete gate order, every +condition excluded, a negative floor — are refused by the block model before the run +starts and never arrive here. + +What arrives here is the data-value class: a sort-fraction set breaking +`sort-fraction-values`, and more than one sample in a condition-and-gate group. Those +raise `Refusal`, which `main` turns into a non-zero exit that names the offending +values and writes no file. + +A `Refusal` is therefore *not* an internal assertion. Anything raised as some other +exception type is a bug in this package or a caller violating the interface, and is +allowed to propagate with its traceback. +""" + + +class Refusal(Exception): + """A data-value violation that stops the run. The message is user-facing.""" diff --git a/software/src/io_layer.py b/software/src/io_layer.py new file mode 100644 index 0000000..0cb141f --- /dev/null +++ b/software/src/io_layer.py @@ -0,0 +1,111 @@ +"""Reading the two input tables and writing the score files, distribution files and manifest. + +One thing here is load-bearing rather than plumbing: **the key and metadata columns are +read as strings, never inferred.** `condition-source` bars relabelling and requires a +retained condition value to be emitted verbatim as it appears in the column, and +`emitted-columns` puts that value in a domain key a consumer matches on. Type inference +would break that silently — a condition written `7.50` parses as a float and renders back +as `7.5`, so the domain value would match nothing in the source metadata column and the +failure would look like absent data rather than a renamed key. +""" + +from __future__ import annotations + +import json +from pathlib import Path + +import polars as pl +from constants import ( + COL_CONDITION, + COL_GATE, + COL_MUTATION_COUNT, + COL_READS, + COL_SAMPLE, + COL_VARIANT, + DISTRIBUTION_FILE_PATTERN, + MANIFEST_FILE, + SCORE_FILE_PATTERN, +) + +# Read as text, so what comes back out is byte-identical to what went in. +_STRING_COLUMNS = (COL_SAMPLE, COL_VARIANT, COL_CONDITION, COL_GATE) + + +def read_reads(path: Path, sort_fraction_column: str | None) -> pl.DataFrame: + """The per-sample × per-variant table: sampleId, variantKey, reads, condition, gate, + and the sort-fraction column where the run supplies one. + + `reads` is Int64 because it is a read count — the profiler's own `readCount` column. + A fractional value here means the workflow exported the normalized abundance instead, + which is the mistake the two-annotation abundance predicate exists to prevent, and + failing loudly is the right response to it. + """ + overrides: dict[str, pl.DataType] = {name: pl.String() for name in _STRING_COLUMNS} + overrides[COL_READS] = pl.Int64() + if sort_fraction_column is not None: + overrides[sort_fraction_column] = pl.Float64() + + frame = pl.read_csv(path, separator="\t", schema_overrides=overrides) + _require_columns(frame, path, [COL_SAMPLE, COL_VARIANT, COL_READS, COL_CONDITION, COL_GATE]) + return frame + + +def read_variants(path: Path | None) -> pl.DataFrame | None: + """The per-variant mutation-count table, or None where the workflow omitted it. + + Omission is meaningful: the mutation-count predicate resolved to nothing, so `binScore` + is produced at no condition while `gateRankMean` is unaffected. The workflow expresses + that as a missing *table* rather than a nullable column precisely so no reader has to + tell "no mutation count anywhere" from "none for this variant". + """ + if path is None: + return None + frame = pl.read_csv( + path, + separator="\t", + schema_overrides={COL_VARIANT: pl.String(), COL_MUTATION_COUNT: pl.Int64()}, + ) + _require_columns(frame, path, [COL_VARIANT, COL_MUTATION_COUNT]) + return frame + + +def _require_columns(frame: pl.DataFrame, path: Path, required: list[str]) -> None: + missing = [name for name in required if name not in frame.columns] + if missing: + raise ValueError( + f"{path.name} is missing required column(s): {', '.join(missing)} " + f"(has: {', '.join(frame.columns)})" + ) + + +def score_file_name(quantity: str, index: int) -> str: + return SCORE_FILE_PATTERN.format(quantity=quantity, index=index) + + +def distribution_file_name(index: int) -> str: + return DISTRIBUTION_FILE_PATTERN.format(index=index) + + +def write_table(frame: pl.DataFrame, out_dir: Path, name: str) -> str: + """Write one TSV and return its name for the manifest. + + An empty frame still writes its header. For a score file that is the true statement + that no variant was scorable at this condition — which is different from the column + not being produced, and the manifest distinguishes them with a null file name. + """ + frame.write_csv(out_dir / name, separator="\t") + return name + + +def write_manifest(manifest: dict, out_dir: Path) -> str: + """Write the manifest — the only thing the caller reads to know what to construct. + + `sort_keys=False` on purpose: the per-condition list is already in sorted order and + the field order matches `computation-interface`'s table, which makes the file readable + when someone opens it to debug a run. + """ + path = out_dir / MANIFEST_FILE + with path.open("w", encoding="utf-8") as handle: + json.dump(manifest, handle, indent=2, sort_keys=False) + handle.write("\n") + return MANIFEST_FILE diff --git a/software/src/main.py b/software/src/main.py new file mode 100644 index 0000000..ecf3b9c --- /dev/null +++ b/software/src/main.py @@ -0,0 +1,97 @@ +"""Sort-seq analysis — the block's score computation. + +One binary entrypoint, invoked once per run. Its interface is fixed by +`computation-interface`: + + --reads the per-sample x per-variant table (required) + --variants the per-variant mutation-count table (optional; absent, + binScore is produced at no condition) + --params the parameter document (required) + --out-dir where score files and the manifest are written (required) + +One invocation covers every condition. Nothing outside the arithmetic is per-condition — +parent row, mutation count, parameters and runenv are all shared — so per-condition calls +would multiply startup, leave the caller merging N manifests, and make the one-condition +case a loop's degenerate iteration. + +**Diagnostics go to stdout**, including failures: the workflow layer does not capture +stderr, so anything written there would be lost. +""" + +from __future__ import annotations + +import argparse +import sys +from pathlib import Path + +from errors import Refusal +from io_layer import read_reads, read_variants +from params import load_params +from pipeline import run + + +def build_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + prog="facs-bin-score", + description="Score protein variants from a sort-seq (FACS bin) experiment.", + ) + parser.add_argument("--reads", required=True, type=Path, help="per-sample x per-variant table (TSV)") + parser.add_argument( + "--variants", + type=Path, + default=None, + help="per-variant mutation-count table (TSV); omit where no mutation count is available", + ) + parser.add_argument("--params", required=True, type=Path, help="parameter document (JSON)") + parser.add_argument("--out-dir", required=True, type=Path, help="directory for score files and the manifest") + return parser + + +def main(argv: list[str] | None = None) -> int: + args = build_parser().parse_args(argv) + + params = load_params(args.params) + reads = read_reads(args.reads, params.sort_fraction_column) + variants = read_variants(args.variants) + + try: + manifest = run(reads, variants, params, args.out_dir) + except Refusal as refusal: + # A data-value violation. Exit non-zero naming the offending values, having written + # no file — nothing partial is produced. + print(f"REFUSED: {refusal}") + return 1 + + _report(manifest) + return 0 + + +def _report(manifest: dict) -> None: + """Echo what the run did, so stdout carries the audit trail. + + The same facts are in the manifest the caller reads; printing them means a failed or + surprising run can be understood from the log alone. + """ + if manifest["parentIdentified"]: + print("Parent row: identified") + else: + reason = manifest["parentAbsenceReason"] + detail = reason if reason is not None else "no mutation-count table supplied" + print(f"Parent row: not identified ({detail})") + + for entry in manifest["conditions"]: + gates = ", ".join(f"{gate['gate']}={gate['depth']}" for gate in entry["gatesCollected"]) + summary = ( + f"Condition {entry['condition']!r}: " + f"{entry['variantsScored']} variants scored; " + f"gates (pre-floor depths) {gates}; " + f"binScore {'absent' if entry['binScoreFile'] is None else entry['referenceMode']}; " + f"sort-yield corrected: {str(entry['sortYieldCorrected']).lower()}" + ) + if entry["sortFractionSum"] is not None: + summary += f"; fraction sum {entry['sortFractionSum']}" + print(summary) + + +if __name__ == "__main__": + sys.exit(main()) diff --git a/software/src/params.py b/software/src/params.py new file mode 100644 index 0000000..a1c4b85 --- /dev/null +++ b/software/src/params.py @@ -0,0 +1,121 @@ +"""The parameter document: one structured document carrying the whole run configuration. + +Shape is fixed by `computation-interface`: + + gateRanks each distinct value of the gate column -> its integer rank + excludedConditions condition values to drop; empty where none are excluded + readFloor a non-negative integer, or null for no floor + sortFractionColumn the reads-table column carrying frac_cb, or null for uncorrected + +Reading it is deliberately strict about *shape* and deliberately silent about *policy*. +An unknown field or a wrong type is a caller bug and raises. But a `readFloor` of null +is not an error and not a missing value — `input-defaults` makes an unset floor an +answer: score every variant holding reads in at least one collected gate. Same for a +null `sortFractionColumn`: the run is uncorrected and says so on every value it emits. + +**An absent optional key means exactly what an explicit null means.** Only `gateRanks` has +to be present. The workflow builds this document in Tengo, which has no JSON null literal — +it omits a field rather than nulling it — so a reader that demanded all four keys would +reject every uncorrected, unfloored run, which is the normal first run. The two spellings +are one meaning, and neither side has to know which the other chose. +""" + +from __future__ import annotations + +import json +from dataclasses import dataclass +from pathlib import Path + +_REQUIRED_FIELDS = frozenset({"gateRanks"}) +_OPTIONAL_FIELDS = frozenset({"excludedConditions", "readFloor", "sortFractionColumn"}) +_KNOWN_FIELDS = _REQUIRED_FIELDS | _OPTIONAL_FIELDS + + +@dataclass(frozen=True) +class Params: + """The run configuration, validated for shape.""" + + gate_ranks: dict[str, int] + excluded_conditions: frozenset[str] + read_floor: int | None + sort_fraction_column: str | None + + @property + def sort_yield_corrected(self) -> bool: + """Whether this run applies the sort-yield correction. + + `sort-fraction-values` makes the correction a property of the run rather than of + a condition: requirement 1 admits no partial supply, so naming the column + corrects every condition and omitting it corrects none. No run mixes modes. + + This is the *intent*; what the manifest reports is the correction **as applied**, + which is read back from the computation rather than from here. + """ + return self.sort_fraction_column is not None + + +def load_params(path: Path) -> Params: + """Parse and shape-check the parameter document. + + Raises ValueError on a malformed document. That is a caller bug, not a data-value + refusal — the workflow writes this file itself, so a bad shape means the workflow + and this package disagree about their own interface. + """ + with path.open(encoding="utf-8") as handle: + raw = json.load(handle) + + if not isinstance(raw, dict): + raise ValueError(f"parameter document must be a JSON object, got {type(raw).__name__}") + + missing = sorted(_REQUIRED_FIELDS - raw.keys()) + if missing: + raise ValueError(f"parameter document is missing required field(s): {', '.join(missing)}") + unknown = sorted(raw.keys() - _KNOWN_FIELDS) + if unknown: + raise ValueError(f"parameter document carries unknown field(s): {', '.join(unknown)}") + + return Params( + gate_ranks=_parse_gate_ranks(raw["gateRanks"]), + excluded_conditions=_parse_excluded(raw.get("excludedConditions", [])), + read_floor=_parse_read_floor(raw.get("readFloor")), + sort_fraction_column=_parse_sort_fraction_column(raw.get("sortFractionColumn")), + ) + + +def _parse_gate_ranks(value: object) -> dict[str, int]: + if not isinstance(value, dict) or not value: + raise ValueError("gateRanks must be a non-empty object mapping gate value -> integer rank") + ranks: dict[str, int] = {} + for gate, rank in value.items(): + # bool is an int subclass in Python and would silently rank a gate 0 or 1. + if not isinstance(rank, int) or isinstance(rank, bool): + raise ValueError(f"gateRanks[{gate!r}] must be an integer, got {rank!r}") + ranks[str(gate)] = rank + return ranks + + +def _parse_excluded(value: object) -> frozenset[str]: + if not isinstance(value, list) or any(not isinstance(item, str) for item in value): + raise ValueError("excludedConditions must be a list of strings (empty where none are excluded)") + return frozenset(value) + + +def _parse_read_floor(value: object) -> int | None: + # null is the no-floor run, which `input-defaults` makes the normal first one. + if value is None: + return None + if not isinstance(value, int) or isinstance(value, bool): + raise ValueError(f"readFloor must be an integer or null, got {value!r}") + if value < 0: + # A negative floor is a configuration violation the block refuses before the run + # (`argument-surface`). Reaching here means a non-block caller; refuse on shape. + raise ValueError(f"readFloor must be non-negative, got {value}") + return value + + +def _parse_sort_fraction_column(value: object) -> str | None: + if value is None: + return None + if not isinstance(value, str) or not value: + raise ValueError(f"sortFractionColumn must be a non-empty string or null, got {value!r}") + return value diff --git a/software/src/pipeline.py b/software/src/pipeline.py new file mode 100644 index 0000000..d236a0d --- /dev/null +++ b/software/src/pipeline.py @@ -0,0 +1,175 @@ +"""One run: refuse what must be refused, score each condition independently, write the manifest. + +Two structural properties, both required rather than incidental: + +**Conditions are never paired, ordered or related.** Each is scored on its own +(`single-condition-run`). A one-condition run is an ordinary run and takes no distinct +code path — it is the same loop over one element, with the run's single condition on each +column exactly as a two-condition run would carry two. There is no placeholder condition +and no special case. + +**The manifest is the whole of what the caller learns.** Whether `binScore` is produced at +a condition, in which reference mode, and whether the correction was applied are held only +here — the caller cannot re-derive them, and `workflow-structure` forbids it from trying. +So every value the workflow will declare on a column is reported by this file, taken from +where the decision was actually made. +""" + +from __future__ import annotations + +from pathlib import Path + +import polars as pl +import scoring +from constants import ( + COL_CONDITION, + COL_GATE, + COL_READS, + COL_VARIANT, + DISTRIBUTION_TOP_N, + OUT_BIN_SCORE, + OUT_GATE_RANK_MEAN, +) +from io_layer import distribution_file_name, score_file_name, write_manifest, write_table +from params import Params +from validate import check_one_sample_per_group, check_sort_fractions + + +def run(reads: pl.DataFrame, variants: pl.DataFrame | None, params: Params, out_dir: Path) -> dict: + """Score every retained condition and write every file. Returns the manifest.""" + retained = retained_conditions(reads, params) + + # Both refusals run over the whole run before anything is written, so a failure leaves + # nothing partial behind. + check_one_sample_per_group(reads, retained) + if params.sort_fraction_column is not None: + check_sort_fractions(reads, params.sort_fraction_column, retained) + + parent = scoring.resolve_parent(variants) + + out_dir.mkdir(parents=True, exist_ok=True) + + conditions = [ + _score_one_condition(reads, params, parent, condition, index, out_dir) + for index, condition in enumerate(retained) + ] + + manifest = { + "parentIdentified": parent.identified, + # Null where there was no mutation-count table at all: the two reasons below are + # for a table that exists and does not identify a single parent. + "parentAbsenceReason": parent.absence_reason, + "conditions": conditions, + } + write_manifest(manifest, out_dir) + return manifest + + +def retained_conditions(reads: pl.DataFrame, params: Params) -> list[str]: + """The condition column's own distinct values, minus the excluded ones, sorted. + + The values are the column's, never a set the caller typed: a typo then becomes a value + matching no sample rather than a silent second condition. + + Sorting is not an ordering claim — conditions carry none (`condition-source`), and + nothing this block emits depends on their order. It is here because the sort makes each + condition's file index deterministic, which the workflow's pure-template dedup needs. + """ + values = reads[COL_CONDITION].unique().drop_nulls().to_list() + return sorted(value for value in values if value not in params.excluded_conditions) + + +def _score_one_condition( + reads: pl.DataFrame, + params: Params, + parent: scoring.Parent, + condition: str, + index: int, + out_dir: Path, +) -> dict: + slice_c = reads.filter(pl.col(COL_CONDITION) == condition) + + per_gate = scoring.per_gate_frequencies(slice_c, params.sort_fraction_column) + means = scoring.gate_rank_means(per_gate, params.gate_ranks) + scored = scoring.apply_read_floor(means, params.read_floor) + + gate_rank_mean_file = write_table( + scored.select(COL_VARIANT, OUT_GATE_RANK_MEAN), + out_dir, + score_file_name(OUT_GATE_RANK_MEAN, index), + ) + + bin_score = scoring.bin_scores(scored, parent) + if bin_score is None: + # The column is absent at this condition, not present-and-empty. A present column + # with no keys would claim every variant was unscorable here. + bin_score_file = None + reference_mode = None + else: + bin_score_file = write_table(bin_score, out_dir, score_file_name(OUT_BIN_SCORE, index)) + reference_mode = parent.reference_mode + + distribution = scoring.read_distribution(per_gate, scored, params.gate_ranks, DISTRIBUTION_TOP_N) + distribution_file = write_table(distribution, out_dir, distribution_file_name(index)) + + return { + # Verbatim, exactly as it appears in the metadata column — this value lands in a + # domain key a consumer matches on. + "condition": condition, + "gateRankMeanFile": gate_rank_mean_file, + "binScoreFile": bin_score_file, + "readDistributionFile": distribution_file, + "referenceMode": reference_mode, + "gatesCollected": _gates_collected(slice_c, params.gate_ranks), + "variantsScored": scored.height, + # How many the distribution view actually draws, against how many were scored. + # Read by the view's own title, which names the count only where something was left + # out: a truncated chart is otherwise indistinguishable from a complete one — the + # same failure the sibling block's correction annotation has, where the view looks + # right and says nothing about what it omitted. The count belongs here rather than + # being recomputed UI-side, so the number shown is the number the run produced. + "variantsPlotted": min(scored.height, DISTRIBUTION_TOP_N), + # Reported as applied, from inside the computation. Deriving it from the run's + # arguments instead would survive a slip that dropped the column from the reads + # export and declare a correction that did not happen. + "sortYieldCorrected": params.sort_fraction_column is not None, + "sortFractionSum": _sort_fraction_sum(slice_c, params.sort_fraction_column), + } + + +def _gates_collected(slice_c: pl.DataFrame, gate_ranks: dict[str, int]) -> list[dict]: + """Each gate this condition collected, with its depth taken **before** the floor. + + Pre-floor is the number needed to choose a floor at all — `input-defaults` makes an + unset floor the normal first run precisely so the depth distribution can be seen. + + A gate counts as collected when a sample exists for it; its depth may still be zero, + which clause 1 handles by having it contribute to neither sum. A gate with no sample at + this condition is simply not collected here, and that is not an error. + + Ordered by declared rank, so the run summary reads along the binding axis. + """ + depths = slice_c.group_by(COL_GATE).agg(pl.col(COL_READS).sum().alias("depth")) + rows = depths.iter_rows(named=True) + return [ + {"gate": row[COL_GATE], "depth": row["depth"]} + for row in sorted(rows, key=lambda row: gate_ranks[row[COL_GATE]]) + ] + + +def _sort_fraction_sum(slice_c: pl.DataFrame, sort_fraction_column: str | None) -> float | None: + """This condition's supplied fractions, summed. None in the uncorrected mode. + + Taken over the supplied values — one per condition-and-gate group, which is the grain + `frac_cb` is defined on — rather than once per variant row. Written this way the rule + survives v2 replicates unchanged, where a group may hold more than one sample but still + supplies one fraction per gate. + + A sum short of 1.0 is legitimate and is not renormalized: it is what a condition that + collected only some of the declared gates correctly looks like. + """ + if sort_fraction_column is None: + return None + per_gate = slice_c.group_by(COL_GATE).agg(pl.col(sort_fraction_column).first().alias("fraction")) + total = per_gate["fraction"].sum() + return None if total is None else float(total) diff --git a/software/src/requirements.txt b/software/src/requirements.txt new file mode 100644 index 0000000..b429630 --- /dev/null +++ b/software/src/requirements.txt @@ -0,0 +1,3 @@ +# This file was autogenerated by uv via the following command: +# pnpm deps:export +polars-lts-cpu==1.33.1 diff --git a/software/src/scoring.py b/software/src/scoring.py new file mode 100644 index 0000000..550bcc9 --- /dev/null +++ b/software/src/scoring.py @@ -0,0 +1,273 @@ +"""The arithmetic, implementing `../dms-analysis#bin-score-formula`. + + gateRankMean(v,c) = Σ_b ( b · w_vcb ) / Σ_b w_vcb range [1, G] + + freq_vcb = reads_vcb / depth_cb depth_cb = Σ_v reads_vcb + w_vcb = freq_vcb (uncorrected) + w_vcb = freq_vcb · frac_cb (sort-yield corrected, Adams eq. A3) + + binScore(v,c) = gateRankMean(v,c) − gateRankMean(parent,c) where identifiable + binScore(v,c) = gateRankMean(v,c) where it is not + +Every function here takes one condition's rows and is pure. Which conditions exist, +which files get written and what the manifest says is `pipeline`'s. + +The clause numbers in the comments are that atom's seven contract clauses. Three of them +are the reason this module is unit-tested against hand-computed numbers rather than +eyeballed: clause 1 (a zero-depth gate contributes to neither numerator nor denominator), +clause 2 (the denominator runs over collected gates only, waste not imputed) and clause 3 +(the floor is applied *after* the depths are taken) all produce output of ordinary shape +and plausible content when implemented wrongly. +""" + +from __future__ import annotations + +from dataclasses import dataclass + +import polars as pl +from constants import ( + COL_GATE, + COL_MUTATION_COUNT, + COL_READS, + COL_VARIANT, + MODE_CANCELLED, + MODE_REFERENCED, + OUT_BIN_SCORE, + OUT_GATE_FREQUENCY, + OUT_GATE_RANK_MEAN, + OUT_GATE_READS, + PARENT_ABSENT_MULTIPLE_ZERO, + PARENT_ABSENT_NO_ZERO, +) + +# Internal working columns. Prefixed so they cannot collide with a metadata column the +# workflow happened to name the same thing. +_DEPTH = "_depth" +_WEIGHT = "_weight" +_RANK = "_rank" +_NUMERATOR = "_numerator" +_DENOMINATOR = "_denominator" + +TOTAL_READS = "totalReads" + + +@dataclass(frozen=True) +class Parent: + """The outcome of looking for the parent row. + + `parent-row-identification` permits exactly one mechanism — the variant whose + amino-acid mutation count is zero — so there are exactly two ways identification + fails, and both mean the same thing for the output: `binScore` is emitted in the + **cancelled** form, numerically equal to `gateRankMean`. + + `binScore` not being produced *at all* is a third and different state, reached only + when there is no mutation-count table to read. Then no reference exists to cancel + against and no reference mode is claimed. + """ + + variant_key: str | None + identified: bool + absence_reason: str | None + produce_bin_score: bool + + @property + def reference_mode(self) -> str | None: + if not self.produce_bin_score: + return None + return MODE_REFERENCED if self.identified else MODE_CANCELLED + + +def resolve_parent(variants: pl.DataFrame | None) -> Parent: + """Find the parent row, or record why there isn't one. + + `variants` is None when the workflow omitted the table because its mutation-count + predicate resolved to nothing. That is not a failure: `gateRankMean` is unaffected + and `binScore` is simply produced at no condition. + """ + if variants is None: + # No mutation count anywhere — distinct from "a table exists and no row is zero". + # A missing table is what the workflow uses to say this, precisely so the two + # cannot be confused (see `workflow-structure`). + return Parent(variant_key=None, identified=False, absence_reason=None, produce_bin_score=False) + + zero_rows = variants.filter(pl.col(COL_MUTATION_COUNT) == 0) + count = zero_rows.height + + if count == 1: + return Parent( + variant_key=zero_rows.item(0, COL_VARIANT), + identified=True, + absence_reason=None, + produce_bin_score=True, + ) + + # Unidentifiable, both ways. More than one zero-count row is the case a nucleotide + # grain would produce for a library of synonymous barcodes over one wild type — which + # is why the workflow matches the mutation count at the amino-acid grain. + reason = PARENT_ABSENT_NO_ZERO if count == 0 else PARENT_ABSENT_MULTIPLE_ZERO + return Parent(variant_key=None, identified=False, absence_reason=reason, produce_bin_score=True) + + +def per_gate_frequencies(reads_c: pl.DataFrame, sort_fraction_column: str | None) -> pl.DataFrame: + """Per (variant, gate): the frequency and the weight it contributes. + + `depth_cb` is summed over **every variant in `reads_c`**. `reads_c` is the condition's + full slice — the workflow is forbidden from applying the floor to it — so this is the + pre-floor depth clause 3 requires. Taking depths over a floor-filtered set instead + would make the floor move every surviving variant's score, and two runs at two floor + settings incomparable with nothing in the output saying so. + + Returns `reads_c` plus `_depth`, `gateFrequency` and `_weight`. + """ + with_depth = reads_c.with_columns(pl.col(COL_READS).sum().over(COL_GATE).alias(_DEPTH)) + + # Clause 1: a gate with depth 0 contributes to neither numerator nor denominator. + # Zero frequency achieves that for both sums at once, so the gate needs no special + # case anywhere downstream. + with_freq = with_depth.with_columns( + pl.when(pl.col(_DEPTH) > 0) + .then(pl.col(COL_READS) / pl.col(_DEPTH)) + .otherwise(0.0) + .alias(OUT_GATE_FREQUENCY) + ) + + if sort_fraction_column is None: + weight = pl.col(OUT_GATE_FREQUENCY) + else: + # Adams eq. A3. The column is validated present and in range before we get here. + weight = pl.col(OUT_GATE_FREQUENCY) * pl.col(sort_fraction_column) + + return with_freq.with_columns(weight.alias(_WEIGHT)) + + +def gate_rank_means(per_gate: pl.DataFrame, gate_ranks: dict[str, int]) -> pl.DataFrame: + """The weighted mean per variant, **before** the floor. + + Returns `[variantKey, gateRankMean, totalReads]`, one row per variant with a defined + mean. A variant whose denominator is zero — no reads in any collected gate, or reads + only in zero-depth gates — gets no row at all, per `unscorable-is-absent`: no key, no + NA row, no sentinel. + + Clause 2: the denominator runs over the collected gates only. That falls out of + `per_gate` holding rows only for gates the condition collected; the uncollected waste + fraction is never reconstructed. + """ + # replace_strict raises on a gate value with no rank rather than dropping its reads. + # An incomplete gate order is a *configuration* violation the block model refuses + # before the run (`argument-surface` rule 4), and `validation-boundary` forbids + # checking one rule in two places — so this is not a second check but an internal + # invariant, guarding a direct CLI caller against silently losing a gate. + rank = pl.col(COL_GATE).replace_strict(gate_ranks, return_dtype=pl.Float64) + + return ( + per_gate.with_columns(rank.alias(_RANK)) + .group_by(COL_VARIANT) + .agg( + (pl.col(_RANK) * pl.col(_WEIGHT)).sum().alias(_NUMERATOR), + pl.col(_WEIGHT).sum().alias(_DENOMINATOR), + pl.col(COL_READS).sum().alias(TOTAL_READS), + ) + .filter(pl.col(_DENOMINATOR) > 0) + .with_columns((pl.col(_NUMERATOR) / pl.col(_DENOMINATOR)).alias(OUT_GATE_RANK_MEAN)) + .select(COL_VARIANT, OUT_GATE_RANK_MEAN, TOTAL_READS) + .sort(COL_VARIANT) + ) + + +def apply_read_floor(means: pl.DataFrame, read_floor: int | None) -> pl.DataFrame: + """Decide which variants are scored. Never changes a score. + + Clause 3. `read_floor` of None is the no-floor run, which `input-defaults` makes the + normal first one: every variant holding reads in at least one collected gate is + scored. Because the depths were already taken over the full set, this is a pure + membership filter — the property the optional-floor decision rests on, and the one + `computation-test-suite` pins with a two-floor comparison. + """ + if read_floor is None: + return means + return means.filter(pl.col(TOTAL_READS) >= read_floor) + + +def bin_scores(scored: pl.DataFrame, parent: Parent) -> pl.DataFrame | None: + """`binScore` for the variants scored at this condition, or None where the column is + not produced here. + + Three outcomes, and the difference between the last two is clause 5: + + * **no mutation-count table** — not produced anywhere. None. + * **parent unidentifiable** — the cancelled form: numerically identical to + `gateRankMean`, still emitted, and the mode in the domain is what tells a consumer + which situation it is reading. + * **parent identifiable but unscored here** — the column is **absent at this + condition**, and it does *not* fall back to the cancelled form. The fallback is + triggered by the parent being unidentifiable, never by its score being missing. + A present column with no keys would claim every variant was unscorable, which is a + different and false statement. + """ + if not parent.produce_bin_score: + return None + + if not parent.identified: + return scored.select(COL_VARIANT, pl.col(OUT_GATE_RANK_MEAN).alias(OUT_BIN_SCORE)) + + parent_row = scored.filter(pl.col(COL_VARIANT) == parent.variant_key) + if parent_row.height == 0: + # Clause 5. The parent is known but fell below the floor, or had no reads here. + return None + + parent_mean = parent_row.item(0, OUT_GATE_RANK_MEAN) + return scored.select(COL_VARIANT, (pl.col(OUT_GATE_RANK_MEAN) - parent_mean).alias(OUT_BIN_SCORE)) + + +def top_scoring_variants(scored: pl.DataFrame, top_n: int) -> pl.DataFrame: + """The `top_n` highest-scoring variants, as a one-column frame of variant keys. + + Ranked on `gateRankMean` descending — the block's own score, and the direction its + `rankingOrder` annotation already declares — with the variant key ascending as the + tiebreaker. The tiebreaker is not cosmetic: ties are ordinary at low read counts, and + without it two runs over identical inputs could emit different variant sets, which + would make the file non-deterministic and break pure-template dedup. + """ + return ( + scored.sort([OUT_GATE_RANK_MEAN, COL_VARIANT], descending=[True, False]) + .head(top_n) + .select(COL_VARIANT) + ) + + +def read_distribution( + per_gate: pl.DataFrame, + scored: pl.DataFrame, + gate_ranks: dict[str, int], + top_n: int, +) -> pl.DataFrame: + """Per (drawn variant, collected gate): the frequency and the raw reads. + + The row set is **the `top_n` highest-scoring variants**, not every scored one. The view + is one series per variant, so at library scale every scored variant would be a line on + one chart — unreadable, and heavy to move. The scored set itself is untouched: it is + what the score columns and the results table carry. The caller records how many + variants were drawn against how many were scored, so a truncated view never reads as + a complete one. + + Every collected gate appears for every drawn variant, including gates where the + variant had no reads — the view draws a profile across gates, and a missing point + would read as a gap in the sort rather than as a variant absent from that gate. + + Both quantities travel because the frequency is a shape and the reads say whether to + trust it: a variant with four reads across two gates draws the same profile as one + with four thousand. + """ + collected = sorted(per_gate[COL_GATE].unique().to_list(), key=lambda gate: gate_ranks[gate]) + grid = top_scoring_variants(scored, top_n).join(pl.DataFrame({COL_GATE: collected}), how="cross") + + observed = per_gate.select(COL_VARIANT, COL_GATE, OUT_GATE_FREQUENCY, pl.col(COL_READS).alias(OUT_GATE_READS)) + + return ( + grid.join(observed, on=[COL_VARIANT, COL_GATE], how="left") + .with_columns( + pl.col(OUT_GATE_FREQUENCY).fill_null(0.0), + pl.col(OUT_GATE_READS).fill_null(0), + ) + .sort(COL_VARIANT, COL_GATE) + ) diff --git a/software/src/validate.py b/software/src/validate.py new file mode 100644 index 0000000..1095390 --- /dev/null +++ b/software/src/validate.py @@ -0,0 +1,156 @@ +"""The two data-value refusals this side owns. + +`validation-boundary` assigns exactly these to the computation, because both need the +column *values* rather than a picked column reference: whether a set of fractions sums to +1, and whether two samples share a gate, are properties of the project's data. + +Every configuration rule — a required argument absent, an anchor resolving to nothing or +to more than one column, the three metadata roles not distinct, an incomplete gate order, +every condition excluded, a negative floor — is refused by the block model before the run +starts and is deliberately **not** re-checked here. Two implementations of one rule, in +two languages, either changeable alone, is a rule that will disagree; the failure mode is +specific and bad, a model-side check drifting looser so the settings pass and the run +fails anyway with a different message. + +Both refusals name the offending values and are raised before any file is written, so +nothing partial is produced. +""" + +from __future__ import annotations + +import polars as pl +from constants import ( + COL_CONDITION, + COL_GATE, + COL_READS, + COL_SAMPLE, + SORT_FRACTION_MAX, + SORT_FRACTION_MIN, + SORT_FRACTION_SUM_TOLERANCE, +) +from errors import Refusal + + +def check_one_sample_per_group(reads: pl.DataFrame, retained_conditions: list[str]) -> None: + """v1 admits at most one sample per condition-and-gate group. + + Two samples in a group **fail the run**. Their reads are not pooled and neither sample + is preferred: summing them would move every depth, frequency and weighted mean in the + run, which is exactly the shape of failure `input-defaults` bars — output of ordinary + length and plausible content, with nothing saying an aggregation was chosen. + + Replicate support is a v2 addition, and what v2 must supply is an aggregation rule for + the reads plus an agreement rule for the per-sample values the group then has more + than one of. Until it does, refusing is the only honest option. + + No sample for a pair is **not** an error — that gate was not collected at that + condition, which clauses 1 and 2 already accommodate. + + Only retained conditions are checked; an excluded value is not part of the run. + """ + offenders = ( + reads.filter(pl.col(COL_CONDITION).is_in(retained_conditions)) + .group_by(COL_CONDITION, COL_GATE) + .agg(pl.col(COL_SAMPLE).unique().sort().alias("samples")) + .filter(pl.col("samples").list.len() > 1) + .sort(COL_CONDITION, COL_GATE) + ) + if offenders.height == 0: + return + + detail = "; ".join( + f"condition {row[COL_CONDITION]!r} gate {row[COL_GATE]!r}: samples {', '.join(row['samples'])}" + for row in offenders.iter_rows(named=True) + ) + raise Refusal( + f"more than one sample in a condition-and-gate group, which v1 does not support " + f"(reads are not pooled): {detail}" + ) + + +def check_sort_fractions(reads: pl.DataFrame, column: str, retained_conditions: list[str]) -> None: + """The three requirements of `sort-fraction-values`. + + 1. **Present** — no null on any sample carrying reads. + 2. **In [0, 1].** + 3. **Not over-summing** — within each condition, the supplied fractions sum to no more + than 1.0 + 1e-3. + + Requirement 3 is deliberately **one-sided**. A two-sided sum-to-1 test is what the + sibling block implements, and it is only correct there because its bins are all + collected. Here a declared gate may legitimately yield no sample, its fraction then + reaches the block through no channel, and — with renormalization barred — a two-sided + test would refuse a valid run and leave it no path at all. A shortfall is what a + partially-collected condition correctly looks like; the manifest reports every + condition's sum, so it is visible rather than silent. + + What the one-sided test still catches is what actually goes wrong: percentages, + absolute counts, and duplicated values, all of which over-sum. + + Nothing is renormalized to fit. An over-summing set is evidence the wrong quantity was + supplied, and scaling it would turn wrong data into a plausible number. Nor does a + violation fall back to the uncorrected mode: that would discard an input the user + deliberately supplied while declaring `sortYieldCorrected: "false"` — technically true, + and read as "this run had no sort fractions" when in fact it had unusable ones. + """ + if column not in reads.columns: + raise Refusal( + f"sortFractionColumn names {column!r}, which the reads table does not carry " + f"(it has: {', '.join(reads.columns)})" + ) + + in_run = reads.filter(pl.col(COL_CONDITION).is_in(retained_conditions)) + + # One supplied value per sample: the sort fraction is per-sample metadata, repeated + # across the sample's variant rows. + per_sample = in_run.group_by(COL_SAMPLE, COL_CONDITION, COL_GATE).agg( + pl.col(column).first().alias("fraction"), + pl.col(COL_READS).sum().alias("sample_reads"), + ) + + _check_present(per_sample) + _check_range(per_sample) + _check_sum_per_condition(per_sample) + + +def _check_present(per_sample: pl.DataFrame) -> None: + missing = per_sample.filter(pl.col("fraction").is_null() & (pl.col("sample_reads") > 0)).sort(COL_SAMPLE) + if missing.height == 0: + return + detail = ", ".join( + f"{row[COL_SAMPLE]!r} (condition {row[COL_CONDITION]!r}, gate {row[COL_GATE]!r})" + for row in missing.iter_rows(named=True) + ) + raise Refusal(f"sort fraction is null on sample(s) carrying reads: {detail}") + + +def _check_range(per_sample: pl.DataFrame) -> None: + out_of_range = per_sample.filter( + pl.col("fraction").is_not_null() + & ((pl.col("fraction") < SORT_FRACTION_MIN) | (pl.col("fraction") > SORT_FRACTION_MAX)) + ).sort(COL_SAMPLE) + if out_of_range.height == 0: + return + detail = ", ".join( + f"{row[COL_SAMPLE]!r}: {row['fraction']}" for row in out_of_range.iter_rows(named=True) + ) + raise Refusal( + f"sort fraction outside [{SORT_FRACTION_MIN}, {SORT_FRACTION_MAX}] — normalized fractions are " + f"expected, not percentages or absolute cell counts: {detail}" + ) + + +def _check_sum_per_condition(per_sample: pl.DataFrame) -> None: + limit = SORT_FRACTION_MAX + SORT_FRACTION_SUM_TOLERANCE + sums = ( + per_sample.group_by(COL_CONDITION) + .agg(pl.col("fraction").sum().alias("total")) + .filter(pl.col("total") > limit) + .sort(COL_CONDITION) + ) + if sums.height == 0: + return + detail = ", ".join(f"{row[COL_CONDITION]!r}: {row['total']}" for row in sums.iter_rows(named=True)) + raise Refusal( + f"supplied sort fractions sum to more than {limit} within a condition, and are not renormalized: {detail}" + ) diff --git a/software/tests/conftest.py b/software/tests/conftest.py new file mode 100644 index 0000000..d2feecc --- /dev/null +++ b/software/tests/conftest.py @@ -0,0 +1,130 @@ +"""Fixture builders for tables small enough to compute by hand. + +`computation-test-suite` requires every case to assert a hand-computed expected number or +an expected absence — never a range. The tables here are built so the arithmetic comes out +in exact decimals wherever possible: each gate's depth is 100, so a denominator of summed +frequencies is 1.00 and the weighted mean reduces to a sum of tenths. + +Floats are compared with `pytest.approx(..., rel=1e-12)`. That is not a range assertion — +it is a hand-computed number with the tolerance a float64 division needs. Asserting bitwise +equality on a quotient would test the FPU, not the formula. +""" + +from __future__ import annotations + +import json +from pathlib import Path + +import polars as pl + +# Three ordered gates along the binding axis, weakest first. +GATE_RANKS = {"g1": 1, "g2": 2, "g3": 3} + +PARENT = "P" + + +def reads_frame(rows: list[tuple[str, str, int]], condition: str = "pH7", fractions: dict[str, float] | None = None): + """Build a reads table from (gate, variantKey, reads) triples. + + One sample per (condition, gate) — the v1 grain `sample-gate-grouping` requires — with + the sample id derived from the pair so a caller cannot accidentally collide two. + """ + frame = pl.DataFrame( + { + "sampleId": [f"s_{condition}_{gate}" for gate, _, _ in rows], + "variantKey": [variant for _, variant, _ in rows], + "reads": [reads for _, _, reads in rows], + "condition": [condition] * len(rows), + "gate": [gate for gate, _, _ in rows], + }, + schema_overrides={"reads": pl.Int64}, + ) + if fractions is not None: + frame = frame.with_columns( + pl.col("gate").replace_strict(fractions, return_dtype=pl.Float64).alias("sortFraction") + ) + return frame + + +# The base table. Every gate's depth is exactly 100. +# +# gate | P | A | B | C | depth +# -----+----+----+----+---+------ +# g1 | 10 | 30 | 59 | 1 | 100 +# g2 | 20 | 50 | 29 | 1 | 100 +# g3 | 70 | 20 | 10 | 0 | 100 +# +# freq = reads / depth, so each variant's denominator is its total reads / 100: +# +# P: .10 .20 .70 den 1.00 num 1(.10)+2(.20)+3(.70) = 2.60 mean 2.6 +# A: .30 .50 .20 den 1.00 num 1(.30)+2(.50)+3(.20) = 1.90 mean 1.9 +# B: .59 .29 .10 den .98 num 1(.59)+2(.29)+3(.10) = 1.47 mean 1.5 (147/98 = 3/2) +# C: .01 .01 .00 den .02 num 1(.01)+2(.01) = .03 mean 1.5 (3/2) +# +# B and C land on the same mean by coincidence, not by construction — B sits mid-low across +# three gates and C has two reads split across the bottom two. What separates them is total +# reads: P 100, A 100, B 98, C 2, deliberately unequal so a read floor has something to +# exclude without touching anything else. +BASE_ROWS: list[tuple[str, str, int]] = [ + ("g1", "P", 10), + ("g1", "A", 30), + ("g1", "B", 59), + ("g1", "C", 1), + ("g2", "P", 20), + ("g2", "A", 50), + ("g2", "B", 29), + ("g2", "C", 1), + ("g3", "P", 70), + ("g3", "A", 20), + ("g3", "B", 10), + ("g3", "C", 0), +] + +BASE_MEANS = {"P": 2.6, "A": 1.9, "B": 1.5, "C": 1.5} +BASE_TOTAL_READS = {"P": 100, "A": 100, "B": 98, "C": 2} + + +def variants_frame(mutation_counts: dict[str, int]): + """The per-variant mutation-count table, at the amino-acid grain.""" + keys = sorted(mutation_counts) + return pl.DataFrame( + {"variantKey": keys, "mutationCount": [mutation_counts[key] for key in keys]}, + schema_overrides={"mutationCount": pl.Int64}, + ) + + +# The parent is the single variant whose amino-acid mutation count is zero. +BASE_MUTATION_COUNTS = {"P": 0, "A": 1, "B": 2, "C": 3} + + +def means_as_dict(frame) -> dict[str, float]: + return dict(zip(frame["variantKey"].to_list(), frame["gateRankMean"].to_list(), strict=True)) + + +def scores_as_dict(frame, column: str) -> dict[str, float]: + return dict(zip(frame["variantKey"].to_list(), frame[column].to_list(), strict=True)) + + +def write_tsv(frame, path: Path) -> Path: + frame.write_csv(path, separator="\t") + return path + + +def write_params( + path: Path, + *, + gate_ranks: dict[str, int] | None = None, + excluded: list[str] | None = None, + read_floor: int | None = None, + sort_fraction_column: str | None = None, +) -> Path: + """Write a parameter document. Defaults are the no-floor, uncorrected, nothing-excluded + run — which `input-defaults` makes the normal first one, not an unset configuration.""" + document = { + "gateRanks": gate_ranks if gate_ranks is not None else GATE_RANKS, + "excludedConditions": excluded if excluded is not None else [], + "readFloor": read_floor, + "sortFractionColumn": sort_fraction_column, + } + path.write_text(json.dumps(document), encoding="utf-8") + return path diff --git a/software/tests/integration/test_cli.py b/software/tests/integration/test_cli.py new file mode 100644 index 0000000..84a21ea --- /dev/null +++ b/software/tests/integration/test_cli.py @@ -0,0 +1,319 @@ +"""The entrypoint end to end: files on disk and the manifest that names them. + +The manifest is the only thing the caller reads to know what to construct, so these tests +assert its fields rather than just that the run exited zero. +""" + +from __future__ import annotations + +import json + +import polars as pl +import pytest +from conftest import ( + BASE_MEANS, + BASE_MUTATION_COUNTS, + BASE_ROWS, + reads_frame, + variants_frame, + write_params, + write_tsv, +) + +from main import main + +REL = 1e-12 + + +def invoke(tmp_path, reads, variants=None, **param_kwargs): + """Run the entrypoint the way the workflow does and return (exit code, out_dir, manifest).""" + # Tests that invoke twice pass a subdirectory, so that the two runs cannot share files. + tmp_path.mkdir(parents=True, exist_ok=True) + reads_path = write_tsv(reads, tmp_path / "reads.tsv") + params_path = write_params(tmp_path / "params.json", **param_kwargs) + out_dir = tmp_path / "out" + + argv = ["--reads", str(reads_path), "--params", str(params_path), "--out-dir", str(out_dir)] + if variants is not None: + argv += ["--variants", str(write_tsv(variants, tmp_path / "variants.tsv"))] + + code = main(argv) + manifest_path = out_dir / "manifest.json" + manifest = json.loads(manifest_path.read_text(encoding="utf-8")) if manifest_path.exists() else None + return code, out_dir, manifest + + +def read_scores(out_dir, name, column): + frame = pl.read_csv(out_dir / name, separator="\t", schema_overrides={"variantKey": pl.String}) + return dict(zip(frame["variantKey"].to_list(), frame[column].to_list(), strict=True)) + + +# --------------------------------------------------------------------------- +# One condition is an ordinary run. +# --------------------------------------------------------------------------- + + +def test_one_condition_emits_both_quantities(tmp_path): + """`single-condition-run`: both quantities, with the run's single condition on each + column exactly as a two-condition run would carry two. No placeholder, no special case.""" + code, out_dir, manifest = invoke(tmp_path, reads_frame(BASE_ROWS), variants_frame(BASE_MUTATION_COUNTS)) + + assert code == 0 + assert manifest["parentIdentified"] is True + assert manifest["parentAbsenceReason"] is None + assert len(manifest["conditions"]) == 1 + + entry = manifest["conditions"][0] + assert entry["condition"] == "pH7" + assert entry["referenceMode"] == "referenced" + assert entry["sortYieldCorrected"] is False + assert entry["sortFractionSum"] is None + assert entry["variantsScored"] == 4 + # Fewer variants than the display cut, so the view draws all of them and says so. + assert entry["variantsPlotted"] == 4 + + assert read_scores(out_dir, entry["gateRankMeanFile"], "gateRankMean") == pytest.approx(BASE_MEANS, rel=REL) + bin_scores = read_scores(out_dir, entry["binScoreFile"], "binScore") + assert bin_scores["P"] == pytest.approx(0.0, abs=1e-12) + assert bin_scores["A"] == pytest.approx(1.9 - 2.6, rel=REL) + + +def test_gates_collected_reports_pre_floor_depths(tmp_path): + """The depths are the number needed to choose a floor at all, so they are taken before it + — a floor of 10 excludes C but must not shrink any gate's reported depth.""" + code, _, manifest = invoke( + tmp_path, reads_frame(BASE_ROWS), variants_frame(BASE_MUTATION_COUNTS), read_floor=10 + ) + + assert code == 0 + entry = manifest["conditions"][0] + assert entry["variantsScored"] == 3 + assert entry["gatesCollected"] == [ + {"gate": "g1", "depth": 100}, + {"gate": "g2", "depth": 100}, + {"gate": "g3", "depth": 100}, + ] + + +def test_gates_collected_is_ordered_by_declared_rank(tmp_path): + """So the run summary reads along the binding axis rather than alphabetically.""" + _, _, manifest = invoke( + tmp_path, + reads_frame(BASE_ROWS), + variants_frame(BASE_MUTATION_COUNTS), + gate_ranks={"g1": 3, "g2": 2, "g3": 1}, + ) + assert [gate["gate"] for gate in manifest["conditions"][0]["gatesCollected"]] == ["g3", "g2", "g1"] + + +# --------------------------------------------------------------------------- +# Two conditions, scored independently. +# --------------------------------------------------------------------------- + + +def two_condition_reads(): + return pl.concat([reads_frame(BASE_ROWS, condition="pH7"), reads_frame(BASE_ROWS, condition="pH5")]) + + +def test_two_conditions_each_get_their_own_files(tmp_path): + code, out_dir, manifest = invoke(tmp_path, two_condition_reads(), variants_frame(BASE_MUTATION_COUNTS)) + + assert code == 0 + assert [entry["condition"] for entry in manifest["conditions"]] == ["pH5", "pH7"] + + names = {entry["gateRankMeanFile"] for entry in manifest["conditions"]} + assert len(names) == 2 + for entry in manifest["conditions"]: + assert (out_dir / entry["gateRankMeanFile"]).exists() + assert (out_dir / entry["binScoreFile"]).exists() + assert (out_dir / entry["readDistributionFile"]).exists() + # Identical reads at both arms, so identical scores — the conditions are scored + # independently and nothing pairs or relates them. + assert read_scores(out_dir, entry["gateRankMeanFile"], "gateRankMean") == pytest.approx(BASE_MEANS, rel=REL) + + +def test_excluded_condition_yields_no_output_at_all(tmp_path): + """An excluded value yields no per-condition output, rather than an empty one.""" + code, _, manifest = invoke( + tmp_path, two_condition_reads(), variants_frame(BASE_MUTATION_COUNTS), excluded=["pH5"] + ) + + assert code == 0 + assert [entry["condition"] for entry in manifest["conditions"]] == ["pH7"] + + +def test_condition_value_is_emitted_verbatim(tmp_path): + """`condition-source` bars relabelling, and the value lands in a domain key a consumer + matches on. A trailing zero must survive: type inference would render `7.50` back as + `7.5` and the domain value would then match nothing in the source metadata column.""" + reads = pl.concat([reads_frame(BASE_ROWS, condition="7.50"), reads_frame(BASE_ROWS, condition="7.5")]) + + code, _, manifest = invoke(tmp_path, reads, variants_frame(BASE_MUTATION_COUNTS)) + + assert code == 0 + assert sorted(entry["condition"] for entry in manifest["conditions"]) == ["7.5", "7.50"] + + +# --------------------------------------------------------------------------- +# The three states of binScore. +# --------------------------------------------------------------------------- + + +def test_no_variants_table_produces_bin_score_at_no_condition(tmp_path): + code, out_dir, manifest = invoke(tmp_path, two_condition_reads(), variants=None) + + assert code == 0 + assert manifest["parentIdentified"] is False + assert manifest["parentAbsenceReason"] is None + for entry in manifest["conditions"]: + assert entry["binScoreFile"] is None + assert entry["referenceMode"] is None + # gateRankMean is unaffected. + assert (out_dir / entry["gateRankMeanFile"]).exists() + + +def test_cancelled_mode_still_emits_bin_score(tmp_path): + """Numerically identical to gateRankMean; the mode in the domain is what tells a consumer + which situation it is reading, and the two columns remain distinct addresses.""" + code, out_dir, manifest = invoke( + tmp_path, reads_frame(BASE_ROWS), variants_frame({"P": 4, "A": 1, "B": 2, "C": 3}) + ) + + assert code == 0 + assert manifest["parentAbsenceReason"] == "no-variant-with-zero-mutation-count" + entry = manifest["conditions"][0] + assert entry["referenceMode"] == "cancelled" + assert read_scores(out_dir, entry["binScoreFile"], "binScore") == pytest.approx(BASE_MEANS, rel=REL) + + +def test_bin_score_column_absent_where_the_parent_went_unscored(tmp_path): + """Clause 5, and the file is absent rather than present-and-empty: a present column with + no keys would claim every variant was unscorable here.""" + rows = [ + ("g1", "P", 1), + ("g1", "A", 40), + ("g1", "B", 59), + ("g2", "P", 1), + ("g2", "A", 60), + ("g2", "B", 39), + ] + code, out_dir, manifest = invoke( + tmp_path, + reads_frame(rows), + variants_frame({"P": 0, "A": 1, "B": 2}), + gate_ranks={"g1": 1, "g2": 2}, + read_floor=10, + ) + + assert code == 0 + entry = manifest["conditions"][0] + assert entry["binScoreFile"] is None + assert entry["referenceMode"] is None + # And it did not silently fall back to the cancelled form. + assert manifest["parentIdentified"] is True + assert set(read_scores(out_dir, entry["gateRankMeanFile"], "gateRankMean")) == {"A", "B"} + + +# --------------------------------------------------------------------------- +# The sort-yield correction, reported as applied. +# --------------------------------------------------------------------------- + + +def test_correction_is_reported_as_applied_with_its_fraction_sum(tmp_path): + reads = reads_frame(BASE_ROWS, fractions={"g1": 0.5, "g2": 0.3, "g3": 0.2}) + code, out_dir, manifest = invoke( + tmp_path, reads, variants_frame(BASE_MUTATION_COUNTS), sort_fraction_column="sortFraction" + ) + + assert code == 0 + entry = manifest["conditions"][0] + assert entry["sortYieldCorrected"] is True + assert entry["sortFractionSum"] == pytest.approx(1.0, rel=REL) + # Adams eq. A3 reweighting actually happened. + assert read_scores(out_dir, entry["gateRankMeanFile"], "gateRankMean")["P"] == pytest.approx(2.36, rel=REL) + + +def test_two_runs_two_modes_are_distinguishable(tmp_path): + """`correction-mode-parity`: a single run satisfies "declares its mode" trivially, so the + pair is the assertion.""" + reads = reads_frame(BASE_ROWS, fractions={"g1": 0.5, "g2": 0.3, "g3": 0.2}) + + _, _, uncorrected = invoke(tmp_path / "a", reads, variants_frame(BASE_MUTATION_COUNTS)) + _, _, corrected = invoke( + tmp_path / "b", reads, variants_frame(BASE_MUTATION_COUNTS), sort_fraction_column="sortFraction" + ) + + assert uncorrected["conditions"][0]["sortYieldCorrected"] is False + assert corrected["conditions"][0]["sortYieldCorrected"] is True + assert uncorrected["conditions"][0]["sortFractionSum"] is None + assert corrected["conditions"][0]["sortFractionSum"] == pytest.approx(1.0, rel=REL) + + +# --------------------------------------------------------------------------- +# The refusals: exit non-zero, name the values, write no file. +# --------------------------------------------------------------------------- + + +def test_over_summing_fractions_exits_non_zero_and_writes_nothing(tmp_path, capsys): + reads = reads_frame(BASE_ROWS, fractions={"g1": 0.5, "g2": 0.5, "g3": 0.5}) + code, out_dir, manifest = invoke( + tmp_path, reads, variants_frame(BASE_MUTATION_COUNTS), sort_fraction_column="sortFraction" + ) + + assert code == 1 + assert manifest is None + assert not out_dir.exists() + # Diagnostics go to stdout — the workflow layer does not capture stderr. + assert "REFUSED" in capsys.readouterr().out + + +def test_replicate_samples_exit_non_zero_and_write_nothing(tmp_path, capsys): + reads = pl.concat( + [ + reads_frame(BASE_ROWS), + pl.DataFrame( + { + "sampleId": ["replicate"], + "variantKey": ["P"], + "reads": [5], + "condition": ["pH7"], + "gate": ["g1"], + }, + schema_overrides={"reads": pl.Int64}, + ), + ] + ) + code, out_dir, manifest = invoke(tmp_path, reads, variants_frame(BASE_MUTATION_COUNTS)) + + assert code == 1 + assert manifest is None + assert not out_dir.exists() + assert "replicate" in capsys.readouterr().out + + +def test_sort_fraction_column_missing_from_the_reads_table_fails(tmp_path, capsys): + code, out_dir, _ = invoke( + tmp_path, reads_frame(BASE_ROWS), variants_frame(BASE_MUTATION_COUNTS), sort_fraction_column="absent" + ) + + assert code == 1 + assert not out_dir.exists() + assert "absent" in capsys.readouterr().out + + +# --------------------------------------------------------------------------- +# Determinism — the workflow's pure-template dedup depends on it. +# --------------------------------------------------------------------------- + + +def test_two_runs_of_the_same_inputs_produce_identical_bytes(tmp_path): + reads = two_condition_reads() + variants = variants_frame(BASE_MUTATION_COUNTS) + + _, first, _ = invoke(tmp_path / "one", reads, variants) + _, second, _ = invoke(tmp_path / "two", reads, variants) + + first_files = sorted(path.name for path in first.iterdir()) + assert first_files == sorted(path.name for path in second.iterdir()) + for name in first_files: + assert (first / name).read_bytes() == (second / name).read_bytes() diff --git a/software/tests/unit/test_params.py b/software/tests/unit/test_params.py new file mode 100644 index 0000000..80dbe25 --- /dev/null +++ b/software/tests/unit/test_params.py @@ -0,0 +1,120 @@ +"""The parameter document. + +The point of these tests is the line between "absent" and "unspecified". A null `readFloor` +and a null `sortFractionColumn` are answers `input-defaults` states, not gaps — so they +parse cleanly and mean something definite. A malformed document is a caller bug and raises, +because the workflow writes this file itself: a bad shape means the two sides disagree about +their own interface. +""" + +from __future__ import annotations + +import json + +import pytest +from conftest import GATE_RANKS, write_params + +from params import load_params + + +def test_defaults_are_answers_not_gaps(tmp_path): + params = load_params(write_params(tmp_path / "params.json")) + + assert params.gate_ranks == GATE_RANKS + assert params.excluded_conditions == frozenset() + # No floor: score every variant holding reads in at least one collected gate. + assert params.read_floor is None + # No column: the run is uncorrected and says so on every value it emits. + assert params.sort_fraction_column is None + assert params.sort_yield_corrected is False + + +def test_absent_optional_keys_mean_the_same_as_explicit_nulls(tmp_path): + """The document the workflow actually writes for a default run. + + Tengo has no JSON null literal, so the template omits `readFloor` and + `sortFractionColumn` rather than nulling them. A reader that demanded all four keys + rejected every uncorrected, unfloored run — which is the normal first run — and the block + died inside the entrypoint with "missing required field(s)". + """ + path = tmp_path / "params.json" + path.write_text(json.dumps({"gateRanks": GATE_RANKS}), encoding="utf-8") + + params = load_params(path) + + assert params.gate_ranks == GATE_RANKS + assert params.excluded_conditions == frozenset() + assert params.read_floor is None + assert params.sort_fraction_column is None + assert params.sort_yield_corrected is False + + +def test_sort_fraction_column_sets_the_corrected_mode(tmp_path): + params = load_params(write_params(tmp_path / "params.json", sort_fraction_column="sortFraction")) + assert params.sort_fraction_column == "sortFraction" + assert params.sort_yield_corrected is True + + +def test_read_floor_of_zero_is_distinct_from_no_floor(tmp_path): + assert load_params(write_params(tmp_path / "a.json", read_floor=0)).read_floor == 0 + assert load_params(write_params(tmp_path / "b.json", read_floor=None)).read_floor is None + + +@pytest.mark.parametrize( + ("document", "fragment"), + [ + # Only gateRanks is required; the other three default to their stated absence. + ({"excludedConditions": [], "readFloor": None, "sortFractionColumn": None}, "missing required field"), + ( + { + "gateRanks": GATE_RANKS, + "excludedConditions": [], + "readFloor": None, + "sortFractionColumn": None, + "extra": 1, + }, + "unknown field", + ), + ( + {"gateRanks": {}, "excludedConditions": [], "readFloor": None, "sortFractionColumn": None}, + "non-empty object", + ), + ( + {"gateRanks": {"g1": "1"}, "excludedConditions": [], "readFloor": None, "sortFractionColumn": None}, + "must be an integer", + ), + ( + {"gateRanks": GATE_RANKS, "excludedConditions": [], "readFloor": -1, "sortFractionColumn": None}, + "non-negative", + ), + ( + {"gateRanks": GATE_RANKS, "excludedConditions": "pH7", "readFloor": None, "sortFractionColumn": None}, + "list of strings", + ), + ( + {"gateRanks": GATE_RANKS, "excludedConditions": [], "readFloor": None, "sortFractionColumn": ""}, + "non-empty string", + ), + ], +) +def test_malformed_document_raises(tmp_path, document, fragment): + path = tmp_path / "params.json" + path.write_text(json.dumps(document), encoding="utf-8") + + with pytest.raises(ValueError, match=fragment): + load_params(path) + + +def test_boolean_is_not_accepted_as_a_rank_or_a_floor(tmp_path): + """bool subclasses int in Python, so an unguarded isinstance check would rank a gate + True and read it as 1.""" + path = tmp_path / "params.json" + document = { + "gateRanks": {"g1": True}, + "excludedConditions": [], + "readFloor": None, + "sortFractionColumn": None, + } + path.write_text(json.dumps(document), encoding="utf-8") + with pytest.raises(ValueError, match="must be an integer"): + load_params(path) diff --git a/software/tests/unit/test_scoring.py b/software/tests/unit/test_scoring.py new file mode 100644 index 0000000..94f8f77 --- /dev/null +++ b/software/tests/unit/test_scoring.py @@ -0,0 +1,346 @@ +"""The arithmetic, clause by clause. + +Each test names the clause of `../dms-analysis#bin-score-formula` it pins. The three that +matter most are the ones whose wrong implementation produces output of ordinary shape and +plausible content: clause 1 (zero-depth gate), clause 2 (denominator over collected gates +only) and clause 3 (floor after depths). +""" + +from __future__ import annotations + +import pytest +from conftest import ( + BASE_MEANS, + BASE_MUTATION_COUNTS, + BASE_ROWS, + BASE_TOTAL_READS, + GATE_RANKS, + means_as_dict, + reads_frame, + scores_as_dict, + variants_frame, +) + +import scoring +from constants import ( + DISTRIBUTION_TOP_N, + MODE_CANCELLED, + MODE_REFERENCED, + PARENT_ABSENT_MULTIPLE_ZERO, + PARENT_ABSENT_NO_ZERO, +) + +REL = 1e-12 + + +def means_for(rows, gate_ranks=None, sort_fraction_column=None, fractions=None): + frame = reads_frame(rows, fractions=fractions) + per_gate = scoring.per_gate_frequencies(frame, sort_fraction_column) + return scoring.gate_rank_means(per_gate, gate_ranks or GATE_RANKS) + + +# --------------------------------------------------------------------------- +# The weighted mean itself, uncorrected. +# --------------------------------------------------------------------------- + + +def test_weighted_mean_uncorrected(): + """gateRankMean = Σ_b (b · freq_vcb) / Σ_b freq_vcb, in gate-rank units on [1, G].""" + means = means_as_dict(means_for(BASE_ROWS)) + + assert means == pytest.approx(BASE_MEANS, rel=REL) + # Every value sits inside the formula's stated range for G = 3. + assert all(1.0 <= value <= 3.0 for value in means.values()) + + +def test_total_reads_is_summed_over_collected_gates(): + """The quantity clause 3 compares against the floor.""" + frame = means_for(BASE_ROWS) + totals = dict(zip(frame["variantKey"].to_list(), frame[scoring.TOTAL_READS].to_list(), strict=True)) + assert totals == BASE_TOTAL_READS + + +# --------------------------------------------------------------------------- +# Clause 3 — the floor is a membership decision and moves no surviving score. +# +# This is the case the suite exists for. `input-defaults` makes the floor optional, and its +# whole argument rests on this property; it says outright that if it ever stopped holding, +# the floor would have to become required. +# --------------------------------------------------------------------------- + + +def test_floor_changes_membership_and_no_surviving_score(): + unfloored = scoring.apply_read_floor(means_for(BASE_ROWS), None) + floored = scoring.apply_read_floor(means_for(BASE_ROWS), 10) + + unfloored_means = means_as_dict(unfloored) + floored_means = means_as_dict(floored) + + # The variants present differ: C holds 2 reads and falls below a floor of 10. + assert set(unfloored_means) == {"P", "A", "B", "C"} + assert set(floored_means) == {"P", "A", "B"} + + # And every surviving variant's value is identical. A floor applied *before* the depths + # were taken would drop C's single read from g1 and g2, making both depths 99 and moving + # B's mean off 1.5 — so this assertion is what discriminates the two orderings. + for variant in floored_means: + assert floored_means[variant] == pytest.approx(unfloored_means[variant], rel=REL) + assert floored_means["B"] == pytest.approx(1.5, rel=REL) + + +def test_no_floor_scores_every_variant_holding_reads(): + """`input-defaults`: unset, no floor is applied — every variant with reads in at least + one collected gate is scored.""" + rows = BASE_ROWS + [("g1", "Z", 0), ("g2", "Z", 0), ("g3", "Z", 0)] + means = means_as_dict(scoring.apply_read_floor(means_for(rows), None)) + + assert set(means) == {"P", "A", "B", "C"} + # Z holds no reads in any gate, so its denominator is zero and it has no key at all — + # `unscorable-is-absent`: no NA row, no sentinel. + assert "Z" not in means + + +def test_floor_of_zero_still_excludes_a_variant_with_no_reads(): + rows = BASE_ROWS + [("g1", "Z", 0), ("g2", "Z", 0), ("g3", "Z", 0)] + means = means_as_dict(scoring.apply_read_floor(means_for(rows), 0)) + assert "Z" not in means + + +# --------------------------------------------------------------------------- +# Clause 1 — a gate with depth 0 contributes to neither numerator nor denominator. +# --------------------------------------------------------------------------- + + +def test_zero_depth_gate_contributes_to_neither_sum(): + """Adding a collected-but-empty fourth gate must not move a single score.""" + ranks = {**GATE_RANKS, "g4": 4} + rows = BASE_ROWS + [("g4", variant, 0) for variant in ("P", "A", "B", "C")] + + with_empty_gate = means_as_dict(means_for(rows, gate_ranks=ranks)) + + assert with_empty_gate == pytest.approx(BASE_MEANS, rel=REL) + + +# --------------------------------------------------------------------------- +# Clause 2 — the denominator runs over the collected gates only, and the uncollected +# fraction is not imputed. +# --------------------------------------------------------------------------- + + +def test_denominator_over_collected_gates_only(): + """A condition that collected g1 and g2 but not g3. + + gate | P | A | depth + -----+----+----+------ + g1 | 10 | 90 | 100 + g2 | 40 | 60 | 100 + + P: freq .10 .40 den .50 num 1(.10)+2(.40) = .90 mean 1.8 + A: freq .90 .60 den 1.50 num 1(.90)+2(.60) = 2.10 mean 1.4 + + Nothing reconstructs what g3 would have held: the waste fraction stays un-imputed, and + g3 is simply not a gate this condition collected. + """ + rows = [("g1", "P", 10), ("g1", "A", 90), ("g2", "P", 40), ("g2", "A", 60)] + means = means_as_dict(means_for(rows)) + + assert means == pytest.approx({"P": 1.8, "A": 1.4}, rel=REL) + + +def test_unranked_gate_raises_rather_than_dropping_its_reads(): + """An incomplete gate order is refused by the block model before the run, so this is an + internal invariant guarding a direct CLI caller — not a second check of that rule.""" + rows = BASE_ROWS + [("gX", "P", 5)] + with pytest.raises(Exception): + means_for(rows) + + +# --------------------------------------------------------------------------- +# The sort-yield correction (Adams eq. A3): w = freq · frac. +# --------------------------------------------------------------------------- + + +def test_sort_yield_correction_reweights_by_gate_fraction(): + """Fractions g1 .5, g2 .3, g3 .2 — summing to 1.0. + + P: w = .10(.5)=.05 .20(.3)=.06 .70(.2)=.14 + num = 1(.05) + 2(.06) + 3(.14) = .59 den = .25 mean = .59/.25 = 2.36 + A: w = .30(.5)=.15 .50(.3)=.15 .20(.2)=.04 + num = 1(.15) + 2(.15) + 3(.04) = .57 den = .34 mean = .57/.34 + """ + fractions = {"g1": 0.5, "g2": 0.3, "g3": 0.2} + means = means_as_dict(means_for(BASE_ROWS, sort_fraction_column="sortFraction", fractions=fractions)) + + assert means["P"] == pytest.approx(2.36, rel=REL) + assert means["A"] == pytest.approx(0.57 / 0.34, rel=REL) + # And the correction genuinely changes the answer — otherwise the test proves nothing. + assert means["P"] != pytest.approx(BASE_MEANS["P"], rel=1e-6) + + +# --------------------------------------------------------------------------- +# The parent subtraction, and the three states of binScore. +# --------------------------------------------------------------------------- + + +def test_parent_subtraction_referenced(): + """binScore = gateRankMean − gateRankMean(parent). Zero means "behaves like the parent".""" + scored = scoring.apply_read_floor(means_for(BASE_ROWS), None) + parent = scoring.resolve_parent(variants_frame(BASE_MUTATION_COUNTS)) + + assert parent.identified + assert parent.reference_mode == MODE_REFERENCED + + scores = scores_as_dict(scoring.bin_scores(scored, parent), "binScore") + assert scores == pytest.approx({"P": 0.0, "A": 1.9 - 2.6, "B": 1.5 - 2.6, "C": 1.5 - 2.6}, rel=REL) + + +def test_cancelled_form_where_no_variant_has_zero_mutation_count(): + """binScore is numerically identical to gateRankMean, still emitted, mode "cancelled".""" + scored = scoring.apply_read_floor(means_for(BASE_ROWS), None) + parent = scoring.resolve_parent(variants_frame({"A": 1, "B": 2, "C": 3, "P": 4})) + + assert not parent.identified + assert parent.absence_reason == PARENT_ABSENT_NO_ZERO + assert parent.reference_mode == MODE_CANCELLED + + scores = scores_as_dict(scoring.bin_scores(scored, parent), "binScore") + assert scores == pytest.approx(BASE_MEANS, rel=REL) + + +def test_cancelled_form_where_more_than_one_variant_has_zero_mutation_count(): + parent = scoring.resolve_parent(variants_frame({"P": 0, "A": 0, "B": 2, "C": 3})) + + assert not parent.identified + assert parent.absence_reason == PARENT_ABSENT_MULTIPLE_ZERO + assert parent.reference_mode == MODE_CANCELLED + + +def test_no_mutation_count_table_produces_bin_score_nowhere(): + """Distinct from the cancelled form: with no table there is no reference to cancel + against, so no reference mode is claimed either.""" + scored = scoring.apply_read_floor(means_for(BASE_ROWS), None) + parent = scoring.resolve_parent(None) + + assert not parent.produce_bin_score + assert parent.absence_reason is None + assert parent.reference_mode is None + assert scoring.bin_scores(scored, parent) is None + + +def test_bin_score_absent_where_parent_is_identifiable_but_unscored(): + """Clause 5. The parent falling below the floor makes every variant's binScore absent at + that condition, and it does **not** fall back to the cancelled form — the fallback is + triggered by the parent being unidentifiable, never by its score being missing. + + gateRankMean is unaffected and is still emitted. + """ + # P holds 2 reads; a floor of 10 excludes it while A and B survive. + rows = [ + ("g1", "P", 1), + ("g1", "A", 40), + ("g1", "B", 59), + ("g2", "P", 1), + ("g2", "A", 60), + ("g2", "B", 39), + ] + scored = scoring.apply_read_floor(means_for(rows), 10) + parent = scoring.resolve_parent(variants_frame({"P": 0, "A": 1, "B": 2})) + + assert parent.identified + assert "P" not in means_as_dict(scored) + assert scoring.bin_scores(scored, parent) is None + # gateRankMean is still there for everything that cleared the floor. + assert set(means_as_dict(scored)) == {"A", "B"} + + +# --------------------------------------------------------------------------- +# The read distribution. +# --------------------------------------------------------------------------- + + +def test_read_distribution_covers_scored_variants_across_collected_gates(): + frame = reads_frame(BASE_ROWS) + per_gate = scoring.per_gate_frequencies(frame, None) + scored = scoring.apply_read_floor(scoring.gate_rank_means(per_gate, GATE_RANKS), 10) + + distribution = scoring.read_distribution(per_gate, scored, GATE_RANKS, DISTRIBUTION_TOP_N) + + # Three scored variants x three collected gates. C fell below the floor and is absent: + # the row set is the variants actually scored, so the view's rows match the results table. + assert distribution.height == 9 + assert set(distribution["variantKey"].to_list()) == {"P", "A", "B"} + + by_key = { + (row["variantKey"], row["gate"]): (row["gateFrequency"], row["gateReads"]) + for row in distribution.iter_rows(named=True) + } + assert by_key[("P", "g1")] == pytest.approx((0.10, 10), rel=REL) + assert by_key[("P", "g3")] == pytest.approx((0.70, 70), rel=REL) + assert by_key[("B", "g2")] == pytest.approx((0.29, 29), rel=REL) + + +def test_read_distribution_draws_only_the_top_n_by_gate_rank_mean(): + """The view is one series per variant, so it is cut to the highest-scoring few. + + Cut on `gateRankMean` descending, which is the direction the score's own + `rankingOrder` annotation declares. + """ + frame = reads_frame(BASE_ROWS) + per_gate = scoring.per_gate_frequencies(frame, None) + scored = scoring.apply_read_floor(scoring.gate_rank_means(per_gate, GATE_RANKS), None) + + distribution = scoring.read_distribution(per_gate, scored, GATE_RANKS, 2) + + # P at 2.6 and A at 1.9 are the two highest of {P: 2.6, A: 1.9, B: 1.5, C: 1.5}. + assert set(distribution["variantKey"].to_list()) == {"P", "A"} + # Two variants x three collected gates, so the grid is still complete for those drawn. + assert distribution.height == 6 + # The scored set itself is untouched — the cut is the view's, not the run's. + assert scored.height == 4 + + +def test_top_scoring_variants_breaks_ties_on_the_variant_key(): + """B and C both score 1.5, so which one is drawn must not depend on row order. + + Two runs over identical inputs emitting different variant sets would make the file + non-deterministic, which pure-template dedup cannot tolerate. + """ + frame = reads_frame(BASE_ROWS) + per_gate = scoring.per_gate_frequencies(frame, None) + scored = scoring.apply_read_floor(scoring.gate_rank_means(per_gate, GATE_RANKS), None) + + top = scoring.top_scoring_variants(scored, 3)["variantKey"].to_list() + + # B before C on the tie, by key ascending. + assert top == ["P", "A", "B"] + # And the same answer from a reversed input. + reversed_scored = scored.reverse() + assert scoring.top_scoring_variants(reversed_scored, 3)["variantKey"].to_list() == top + + +def test_read_distribution_keeps_every_variant_when_fewer_than_the_cut(): + """The ordinary small-library case: nothing is dropped and no padding is invented.""" + frame = reads_frame(BASE_ROWS) + per_gate = scoring.per_gate_frequencies(frame, None) + scored = scoring.apply_read_floor(scoring.gate_rank_means(per_gate, GATE_RANKS), None) + + distribution = scoring.read_distribution(per_gate, scored, GATE_RANKS, DISTRIBUTION_TOP_N) + + assert set(distribution["variantKey"].to_list()) == {"P", "A", "B", "C"} + assert distribution.height == 12 + + +def test_read_distribution_emits_a_zero_point_for_a_gate_the_variant_missed(): + """Every collected gate appears for every scored variant. A missing point would read as + a gap in the sort rather than as a variant absent from that gate.""" + frame = reads_frame(BASE_ROWS) + per_gate = scoring.per_gate_frequencies(frame, None) + scored = scoring.apply_read_floor(scoring.gate_rank_means(per_gate, GATE_RANKS), None) + + distribution = scoring.read_distribution(per_gate, scored, GATE_RANKS, DISTRIBUTION_TOP_N) + row = distribution.filter( + (distribution["variantKey"] == "C") & (distribution["gate"] == "g3") + ).to_dicts()[0] + + assert row["gateReads"] == 0 + assert row["gateFrequency"] == pytest.approx(0.0, rel=REL) diff --git a/software/tests/unit/test_validate.py b/software/tests/unit/test_validate.py new file mode 100644 index 0000000..8977f0a --- /dev/null +++ b/software/tests/unit/test_validate.py @@ -0,0 +1,144 @@ +"""The two data-value refusals. + +Each asserts the refusal fires **and** that its message names the offending values — the +message is the whole of what the user gets, since nothing partial is produced. +""" + +from __future__ import annotations + +import polars as pl +import pytest +from conftest import BASE_ROWS, reads_frame + +from errors import Refusal +from validate import check_one_sample_per_group, check_sort_fractions + +RETAINED = ["pH7"] + + +def test_one_sample_per_group_passes_on_the_v1_grain(): + check_one_sample_per_group(reads_frame(BASE_ROWS), RETAINED) + + +def test_two_samples_in_one_group_refuses_and_names_them(): + """Reads are not pooled and neither sample is preferred: summing them would move every + depth, frequency and weighted mean in the run, invisibly.""" + frame = pl.concat( + [ + reads_frame(BASE_ROWS), + pl.DataFrame( + { + "sampleId": ["replicate_of_g1"], + "variantKey": ["P"], + "reads": [5], + "condition": ["pH7"], + "gate": ["g1"], + }, + schema_overrides={"reads": pl.Int64}, + ), + ] + ) + + with pytest.raises(Refusal) as excinfo: + check_one_sample_per_group(frame, RETAINED) + + message = str(excinfo.value) + assert "replicate_of_g1" in message + assert "'g1'" in message + assert "not pooled" in message + + +def test_a_group_with_no_sample_is_not_an_error(): + """That gate was not collected at that condition — clauses 1 and 2 accommodate it.""" + rows = [row for row in BASE_ROWS if row[0] != "g3"] + check_one_sample_per_group(reads_frame(rows), RETAINED) + + +def test_duplicate_in_an_excluded_condition_is_ignored(): + """An excluded value is not part of the run.""" + frame = pl.concat( + [ + reads_frame(BASE_ROWS), + reads_frame([("g1", "P", 5)], condition="pH5"), + pl.DataFrame( + { + "sampleId": ["other"], + "variantKey": ["P"], + "reads": [5], + "condition": ["pH5"], + "gate": ["g1"], + }, + schema_overrides={"reads": pl.Int64}, + ), + ] + ) + check_one_sample_per_group(frame, RETAINED) + + +# --------------------------------------------------------------------------- +# Sort fractions. +# --------------------------------------------------------------------------- + + +def test_valid_fractions_pass(): + frame = reads_frame(BASE_ROWS, fractions={"g1": 0.5, "g2": 0.3, "g3": 0.2}) + check_sort_fractions(frame, "sortFraction", RETAINED) + + +def test_sum_short_of_one_is_legitimate(): + """It is what a condition that collected only some of the declared gates correctly looks + like. Imputing the remainder is barred, and the manifest reports the sum so the shortfall + is visible rather than silent.""" + frame = reads_frame(BASE_ROWS, fractions={"g1": 0.3, "g2": 0.2, "g3": 0.1}) + check_sort_fractions(frame, "sortFraction", RETAINED) + + +def test_over_summing_refuses_and_names_the_condition(): + """Percentages, absolute counts and duplicated values all over-sum — which is what the + one-sided test exists to catch. Nothing is renormalized to fit.""" + frame = reads_frame(BASE_ROWS, fractions={"g1": 0.5, "g2": 0.5, "g3": 0.5}) + + with pytest.raises(Refusal) as excinfo: + check_sort_fractions(frame, "sortFraction", RETAINED) + + message = str(excinfo.value) + assert "'pH7'" in message + assert "1.5" in message + assert "not renormalized" in message + + +def test_sum_within_tolerance_passes(): + """1e-3 is the right order for fractions rounded to three decimals on a sorter report.""" + frame = reads_frame(BASE_ROWS, fractions={"g1": 0.334, "g2": 0.333, "g3": 0.333}) + check_sort_fractions(frame, "sortFraction", RETAINED) + + +def test_out_of_range_refuses(): + frame = reads_frame(BASE_ROWS, fractions={"g1": 50.0, "g2": 30.0, "g3": 20.0}) + + with pytest.raises(Refusal) as excinfo: + check_sort_fractions(frame, "sortFraction", RETAINED) + + assert "outside [0.0, 1.0]" in str(excinfo.value) + + +def test_null_on_a_sample_carrying_reads_refuses(): + frame = reads_frame(BASE_ROWS, fractions={"g1": 0.5, "g2": 0.3, "g3": 0.2}).with_columns( + pl.when(pl.col("gate") == "g2").then(None).otherwise(pl.col("sortFraction")).alias("sortFraction") + ) + + with pytest.raises(Refusal) as excinfo: + check_sort_fractions(frame, "sortFraction", RETAINED) + + message = str(excinfo.value) + assert "s_pH7_g2" in message + assert "null" in message + + +def test_naming_a_column_the_table_does_not_carry_fails_the_run(): + frame = reads_frame(BASE_ROWS) + + with pytest.raises(Refusal) as excinfo: + check_sort_fractions(frame, "notThere", RETAINED) + + assert "notThere" in str(excinfo.value) diff --git a/test/.oxfmtrc.json b/test/.oxfmtrc.json new file mode 100644 index 0000000..6f74854 --- /dev/null +++ b/test/.oxfmtrc.json @@ -0,0 +1,4 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/configs/oxfmt.json"], + "ignorePatterns": ["dist", "coverage", "CHANGELOG.md", ".test_auth.json"] +} diff --git a/test/.oxlintrc.json b/test/.oxlintrc.json new file mode 100644 index 0000000..55dd4d4 --- /dev/null +++ b/test/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-test.json"] +} diff --git a/test/package.json b/test/package.json new file mode 100644 index 0000000..9cc76e6 --- /dev/null +++ b/test/package.json @@ -0,0 +1,19 @@ +{ + "name": "@platforma-open/milaboratories.sort-seq-analysis.test", + "private": true, + "type": "module", + "scripts": { + "fmt": "ts-builder format", + "check": "ts-builder check --target block-test", + "test": "vitest run --passWithNoTests" + }, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:", + "@platforma-sdk/test": "catalog:", + "vitest": "catalog:" + }, + "peerDependencies": { + "typescript": "*" + } +} diff --git a/test/src/demo.test.ts b/test/src/demo.test.ts new file mode 100644 index 0000000..61d860d --- /dev/null +++ b/test/src/demo.test.ts @@ -0,0 +1,5 @@ +import { expect, test } from "vitest"; + +test("scaffolded block sanity check", () => { + expect(true).toBe(true); +}); diff --git a/test/tsconfig.json b/test/tsconfig.json new file mode 100644 index 0000000..d7ac02f --- /dev/null +++ b/test/tsconfig.json @@ -0,0 +1,5 @@ +{ + "extends": "@milaboratories/ts-configs/block/test", + "include": ["src/**/*"], + "files": [] +} diff --git a/test/vitest.config.mts b/test/vitest.config.mts new file mode 100644 index 0000000..63ac581 --- /dev/null +++ b/test/vitest.config.mts @@ -0,0 +1,8 @@ +import { defineConfig } from "vitest/config"; + +export default defineConfig({ + test: { + watch: false, + testTimeout: 30000, + }, +}); diff --git a/turbo.json b/turbo.json new file mode 100644 index 0000000..d079cd3 --- /dev/null +++ b/turbo.json @@ -0,0 +1,45 @@ +{ + "$schema": "https://turbo.build/schema.json", + "globalDependencies": ["tsconfig.json"], + "tasks": { + "fmt": { + "cache": false + }, + "check": { + "dependsOn": ["^build"], + "outputs": [] + }, + "build": { + "dependsOn": ["^build", "check"], + "inputs": ["$TURBO_DEFAULT$"], + "env": [ + "PL_DOCKER_REGISTRY_PUSH_TO", + "PL_BUILD_CHANNEL", + "PL_BUILD_VARIANT", + "PL_BUILD_LOCATION", + "PL_BUILD_USE_PUBLISHED", + "PL_DEV_DOCKER_PUSH_URL", + "PL_DEV_DOCKER_PULL_URL", + "PL_DEV_BINARY_UPLOAD_URL", + "PL_RELEASE_DOCKER_PUSH_URL", + "PL_RELEASE_DOCKER_PULL_URL", + "PL_RELEASE_BINARY_UPLOAD_URL", + "PL_REGISTRY_PLATFORMA_OPEN_UPLOAD_URL" + ], + "passThroughEnv": ["AWS_*", "PL_AWS_*"], + "outputs": ["./dist/**", "./block-pack/**", "./pkg-*.tgz"] + }, + "do-pack": { + "dependsOn": ["build"], + "outputs": ["package.tgz"] + }, + "test": { + "dependsOn": ["build", "check"], + "passThroughEnv": ["PL_ADDRESS", "PL_TEST_PASSWORD", "PL_TEST_USER", "PL_TEST_PROXY", "DEBUG"] + }, + "mark-stable": { + "passThroughEnv": ["PL_REGISTRY", "AWS_*"], + "cache": false + } + } +} diff --git a/ui/.oxfmtrc.json b/ui/.oxfmtrc.json new file mode 100644 index 0000000..ba9bb8f --- /dev/null +++ b/ui/.oxfmtrc.json @@ -0,0 +1,3 @@ +{ + "ignorePatterns": ["dist", "CHANGELOG.md"] +} diff --git a/ui/.oxlintrc.json b/ui/.oxlintrc.json new file mode 100644 index 0000000..5cb5522 --- /dev/null +++ b/ui/.oxlintrc.json @@ -0,0 +1,3 @@ +{ + "extends": ["node_modules/@milaboratories/ts-builder/dist/configs/oxlint-block-ui.json"] +} diff --git a/ui/index.html b/ui/index.html new file mode 100644 index 0000000..c604936 --- /dev/null +++ b/ui/index.html @@ -0,0 +1,12 @@ + + + + + + + + +
+ + + diff --git a/ui/package.json b/ui/package.json new file mode 100644 index 0000000..8d2e4ca --- /dev/null +++ b/ui/package.json @@ -0,0 +1,27 @@ +{ + "name": "@platforma-open/milaboratories.sort-seq-analysis.ui", + "private": true, + "type": "module", + "scripts": { + "fmt": "ts-builder format", + "dev": "ts-builder serve --target block-ui", + "watch": "ts-builder build --target block-ui --watch", + "build": "ts-builder build --target block-ui", + "check": "ts-builder check --target block-ui" + }, + "dependencies": { + "@milaboratories/graph-maker": "catalog:", + "@platforma-open/milaboratories.sort-seq-analysis.model": "workspace:*", + "@platforma-sdk/model": "catalog:", + "@platforma-sdk/ui-vue": "catalog:", + "vue": "catalog:" + }, + "devDependencies": { + "@milaboratories/ts-builder": "catalog:", + "@milaboratories/ts-configs": "catalog:" + }, + "peerDependencies": { + "@types/node": "*", + "typescript": "*" + } +} diff --git a/ui/src/app.ts b/ui/src/app.ts new file mode 100644 index 0000000..e856351 --- /dev/null +++ b/ui/src/app.ts @@ -0,0 +1,17 @@ +import { platforma } from "@platforma-open/milaboratories.sort-seq-analysis.model"; +import { defineAppV3 } from "@platforma-sdk/ui-vue"; +import DistributionPage from "./pages/DistributionPage.vue"; +import MainPage from "./pages/MainPage.vue"; + +export const sdkPlugin = defineAppV3(platforma, (app) => ({ + progress: () => app.model.outputs.isRunning, + // Two routes for any number of pages: every condition's distribution link resolves here, + // because routes are keyed on the pathname and the condition rides in the query string. + // The run statistics have no route — they are a dialog on Main. + routes: { + "/": () => MainPage, + "/distribution": () => DistributionPage, + }, +})); + +export const useApp = sdkPlugin.useApp; diff --git a/ui/src/components/BlockPage.vue b/ui/src/components/BlockPage.vue new file mode 100644 index 0000000..9d34569 --- /dev/null +++ b/ui/src/components/BlockPage.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/ui/src/components/PageHeader.vue b/ui/src/components/PageHeader.vue new file mode 100644 index 0000000..d78d758 --- /dev/null +++ b/ui/src/components/PageHeader.vue @@ -0,0 +1,31 @@ + + + diff --git a/ui/src/components/RunStatistics.vue b/ui/src/components/RunStatistics.vue new file mode 100644 index 0000000..5a39d6a --- /dev/null +++ b/ui/src/components/RunStatistics.vue @@ -0,0 +1,161 @@ + + + + + diff --git a/ui/src/components/SettingsDrawer.vue b/ui/src/components/SettingsDrawer.vue new file mode 100644 index 0000000..4886cf5 --- /dev/null +++ b/ui/src/components/SettingsDrawer.vue @@ -0,0 +1,217 @@ + + + diff --git a/ui/src/main.ts b/ui/src/main.ts new file mode 100644 index 0000000..cef5df0 --- /dev/null +++ b/ui/src/main.ts @@ -0,0 +1,5 @@ +import { createApp } from "vue"; +import { sdkPlugin } from "./app"; +import { BlockLayout } from "@platforma-sdk/ui-vue"; + +createApp(BlockLayout).use(sdkPlugin).mount("#app"); diff --git a/ui/src/pages/DistributionPage.vue b/ui/src/pages/DistributionPage.vue new file mode 100644 index 0000000..ff0f369 --- /dev/null +++ b/ui/src/pages/DistributionPage.vue @@ -0,0 +1,175 @@ + + + diff --git a/ui/src/pages/MainPage.vue b/ui/src/pages/MainPage.vue new file mode 100644 index 0000000..3bce36a --- /dev/null +++ b/ui/src/pages/MainPage.vue @@ -0,0 +1,49 @@ + + + diff --git a/ui/src/text.ts b/ui/src/text.ts new file mode 100644 index 0000000..180966f --- /dev/null +++ b/ui/src/text.ts @@ -0,0 +1,8 @@ +/** + * One placeholder string, used by all three pages. + * + * Each page reaches it differently — the table through `notReadyText`, the chart through + * GraphMaker's `statusText.noPframe`, the run summary directly — so without a shared + * constant the three drift into three slightly different sentences. + */ +export const NOT_READY_TEXT = 'Configure settings and click "Run" to see the data'; diff --git a/ui/src/useSettingsDrawer.ts b/ui/src/useSettingsDrawer.ts new file mode 100644 index 0000000..7a084b8 --- /dev/null +++ b/ui/src/useSettingsDrawer.ts @@ -0,0 +1,52 @@ +/** + * Whether the settings drawer is open — shared across the three pages. + * + * **This lives in local Vue state, not in `app.model.data`, and that is load-bearing.** + * The drawer has to close when the block starts running, which means reacting to + * `outputs.isRunning`. Watching a server-derived output and writing back to server-stored + * `data` is the hairpin: the write propagates to every client, every client's watcher fires + * on it, and the interleaving is a race no client predicted. Output → local ref is the + * sanctioned alternative — closing a drawer when a run starts is exactly the example the + * harness gives for it. + * + * A module-level ref rather than one per component, so opening it from the page header and + * reading it in the drawer refer to the same thing, and navigating between the three pages + * does not reset it. + */ +import { ref, watch } from "vue"; + +const isOpen = ref(false); + +/** Set once, the first time a page mounts: open on a block that is not yet configured. */ +let initialised = false; +let watching = false; + +export function useSettingsDrawer(app: { + model: { data: { abundanceRef?: unknown }; outputs: { isRunning?: boolean } }; +}) { + if (!initialised) { + // A freshly added block has no anchor, and until one is picked no other input has an + // option list — so there is nothing else to show and the drawer opens on its own. + isOpen.value = app.model.data.abundanceRef === undefined; + initialised = true; + } + + if (!watching) { + watching = true; + watch( + () => app.model.outputs.isRunning, + (running, wasRunning) => { + // Only on the transition into running: the user has committed, so get the settings + // out of the way and show them the run. + if (running && !wasRunning) isOpen.value = false; + }, + ); + } + + return { + isOpen, + open: () => { + isOpen.value = true; + }, + }; +} diff --git a/ui/tsconfig.json b/ui/tsconfig.json new file mode 100644 index 0000000..bf561dd --- /dev/null +++ b/ui/tsconfig.json @@ -0,0 +1,4 @@ +{ + "extends": "@milaboratories/ts-configs/block/ui", + "include": ["src/**/*"] +} diff --git a/workflow/format.el b/workflow/format.el new file mode 100644 index 0000000..dff4aa7 --- /dev/null +++ b/workflow/format.el @@ -0,0 +1,42 @@ +;; This program formats all files inside src directory. Usage: emacs --script ./format.el + +(defun install-go-mode () + "Installs go-mode" + (require 'package) + (add-to-list 'package-archives + '("melpa-stable" . "https://stable.melpa.org/packages/")) + (package-initialize) + (unless package-archive-contents + (package-refresh-contents)) + + (package-install 'go-mode t) + (require 'go-mode)) + +;; spaces -> tabs only at the beginning of lines +(setq tabify-regexp "^\t* [ \t]+") + +(defun format-file (file) + "Formats a file according to slightly changed Go rules" + (message "Format %s" file) + (save-excursion + (find-file file) + (delete-trailing-whitespace) ;; deletes whitespaces + (go-mode) ;; sets golang rules for indentation + (tabify (point-min) (point-max)) ;; spaces -> tabs in the whole file + (indent-region (point-min) (point-max)) ;; indentation in the whole file + (save-buffer))) ;; save file + +(install-go-mode) + +;; change syntax of a standard go-mode a bit +(advice-add + 'go--in-composite-literal-p + :filter-return + (lambda (&rest r) t)) + +;; find all files in src +(setq files (directory-files-recursively "src" "\\.tengo\\'")) + +;; call format on every file. +(dolist (file files) + (format-file file)) diff --git a/workflow/package.json b/workflow/package.json new file mode 100644 index 0000000..5863c95 --- /dev/null +++ b/workflow/package.json @@ -0,0 +1,19 @@ +{ + "name": "@platforma-open/milaboratories.sort-seq-analysis.workflow", + "private": true, + "type": "module", + "scripts": { + "build": "shx rm -rf dist && pl-tengo build", + "check": "pl-tengo check", + "format": "/usr/bin/env emacs --script ./format.el || echo 'No emacs.'" + }, + "dependencies": { + "@platforma-open/milaboratories.sort-seq-analysis.software": "workspace:*", + "@platforma-sdk/workflow-tengo": "catalog:" + }, + "devDependencies": { + "@platforma-sdk/tengo-builder": "catalog:", + "@platforma-sdk/test": "catalog:", + "shx": "catalog:" + } +} diff --git a/workflow/src/build-columns.tpl.tengo b/workflow/src/build-columns.tpl.tengo new file mode 100644 index 0000000..f352108 --- /dev/null +++ b/workflow/src/build-columns.tpl.tengo @@ -0,0 +1,257 @@ +// Stage 5 of `workflow-structure`: construct one PColumn per file the manifest names. +// +// This is a child template rather than part of the entry body because it must read the +// manifest's *value*. Which conditions survived, where binScore was produced, in which +// reference mode, and whether the correction was applied are all decided inside the +// computation — the entry template's body has finished constructing its graph before the +// entrypoint runs, so it cannot branch on any of it. Awaiting the manifest as an input is +// what makes the values readable. +// +// It is rendered with `render.createEphemeral`, and that is forced rather than chosen: +// `awaitState` is allowed only in ephemeral templates. A pure `render.create` fails at run +// time with "awaitState allowed only in ephemeral templates" — it does not fail to compile, +// so the template builds clean and the block dies on its first real run. +// +// Only this step loses cross-project dedup. The exec above it stays pure, so the expensive +// work is still recovered; what re-runs is spec construction over a handful of files. +// +// EVERY DECLARED VALUE COMES FROM THE MANIFEST, NEVER FROM THE BLOCK'S ARGUMENTS. Deriving +// `sortYieldCorrected` from "did the user pick a column" is simpler and is rejected: one +// slip — the column dropped from the reads export while the argument stays set — emits +// "true" over an uncorrected number. The same argument covers the reference mode, plus a +// second reason: deriving it would need this template to find the parent row itself. +// +// The column specs below are contract text in `emitted-columns` and +// `read-distribution-emission`. Every key is written as a literal so this file can be read +// side by side with the spec — and because a Tengo map literal treats a bare identifier as +// the key itself, so a named constant in key position would emit the constant's *name*. + +self := import("@platforma-sdk/workflow-tengo:tpl") +xsv := import("@platforma-sdk/workflow-tengo:pframes.xsv") +pframes := import("@platforma-sdk/workflow-tengo:pframes") +pSpec := import("@platforma-sdk/workflow-tengo:pframes.spec") +maps := import("@platforma-sdk/workflow-tengo:maps") +strings := import("@platforma-sdk/workflow-tengo:strings") +ll := import("@platforma-sdk/workflow-tengo:ll") + +self.defineOutputs("scoresPf", "scoresPfForUi", "distributionPf") + +self.awaitState("manifest", "ResourceReady") +self.awaitState("scoreFiles", "ResourceReady") +self.awaitState("distributionFiles", "ResourceReady") + +self.body(func(inputs) { + // saveFileContent produces a binary value resource rather than a typed JSON one, so the + // template unmarshaller hands it over untouched and the decode is ours. + manifest := inputs.manifest.getDataAsJson() + + // A file set arrives as a map of file name -> file resource. + scoreFiles := inputs.scoreFiles + distributionFiles := inputs.distributionFiles + + variantAxisSpec := inputs.variantAxisSpec + blockId := inputs.blockId + + // This block's own gate axis. It carries no rank: the ordering is the declared gate + // order, applied when the view draws. Its values are the gate column's own distinct + // values. + gateAxisSpec := { + name: "pl7.app/facsBin/gate", + type: "String", + domain: { + "pl7.app/block": blockId + }, + annotations: { + "pl7.app/label": "Gate" + } + } + + // makeTrace bundles the upstream abundance provenance with this block's own step; + // trace.inject then rewrites only the small spec resources. + trace := pSpec.makeTrace(inputs.abundanceSpec, { + type: "milaboratories.sort-seq-analysis", + importance: 30, + label: "Sort-Seq Analysis" + }) + + scoreEntries := {} + distributionEntries := {} + + // `id` is the frame entry key and must be unique per condition: without it every + // condition's import comes back keyed on the bare column name and the second overwrites + // the first. + importOne := func(file, valueColumn, id, valueSpec, axes) { + return xsv.importFile(file, "tsv", { + axes: axes, + columns: [{ column: valueColumn, id: id, spec: valueSpec }], + storageFormat: "Parquet", + partitionKeyLength: 0 + }, { splitDataAndSpec: true, cpu: 1, mem: "8GiB" }) + } + + collect := func(target, imported) { + // Sorted iteration: pFrameBuilder.add() order feeds the frame's resource CID, and + // Tengo map iteration is not order-guaranteed — an unsorted loop gives re-renders + // different CIDs and a CIDConflictError. maps.getKeys returns sorted keys. + for key in maps.getKeys(imported) { + ll.assert(is_undefined(target[key]), "duplicate pframe entry key: %v", key) + target[key] = imported[key] + } + } + + for entry in manifest.conditions { + condition := entry.condition + + // The entry id must be identifier-safe, so special characters are substituted HERE + // and only here. The condition *domain value* below is emitted verbatim: it is what a + // consumer matches on, and a substituted value would join back to nothing in the + // source metadata column. clonotype-enrichment substitutes both, and that second half + // is the part not to copy. + suffix := strings.substituteSpecialCharacters(condition) + + // Always written, including when false: absence is ambiguous between "uncorrected" + // and "produced by a version that did not record it". + sortYieldCorrected := entry.sortYieldCorrected ? "true" : "false" + + variantAxes := [{ column: "variantKey", spec: variantAxisSpec }] + + // Both scored columns are per variant, keyed on the profiler's variant axis and + // nothing else. A condition is never an axis. The sample axis is not carried: samples + // are consumed into gates and conditions. + // + // The variant axis is propagated verbatim from the abundance column, never + // constructed — a hand-built name with a hand-built domain would resolve against the + // wrong variant axis on any project that defines it differently. + collect(scoreEntries, importOne( + scoreFiles[entry.gateRankMeanFile], + "gateRankMean", + "gateRankMean_" + suffix, + { + name: "pl7.app/facsBin/gateRankMean", + valueType: "Double", + domain: { + "pl7.app/block": blockId, + "pl7.app/facsBin/condition": condition + }, + annotations: { + "pl7.app/label": "Gate rank mean (" + condition + ")", + "pl7.app/isScore": "true", + // "decreasing" is the token meaning higher-is-favourable in the ranking path, + // which is the only path these columns reach because they emit no + // defaultCutoff. It reads like the opposite; the UI names the option "Highest". + "pl7.app/score/rankingOrder": "decreasing", + // Header tooltip in the results table. Kept to one plain sentence. + "pl7.app/description": "Which gates this variant sorted into on average, weighted by reads — higher means stronger binding, on an uncalibrated scale.", + "pl7.app/facsBin/sortYieldCorrected": sortYieldCorrected, + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "70100" + } + }, + variantAxes + )) + + // binScore is absent at a condition whose parent went unscored — the manifest says so + // with a null file name, and the column is then not built at all rather than built + // empty. A present column with no keys would claim every variant was unscorable here. + if !is_undefined(entry.binScoreFile) { + collect(scoreEntries, importOne( + scoreFiles[entry.binScoreFile], + "binScore", + "binScore_" + suffix, + { + name: "pl7.app/facsBin/binScore", + valueType: "Double", + domain: { + "pl7.app/block": blockId, + "pl7.app/facsBin/condition": condition, + // Only binScore carries the reference mode. gateRankMean is mathematically + // independent of the parent reference, so a mode on it would claim a + // distinction it does not have. + "pl7.app/facsBin/referenceMode": entry.referenceMode + }, + annotations: { + "pl7.app/label": "Bin score (" + condition + ")", + "pl7.app/isScore": "true", + "pl7.app/score/rankingOrder": "decreasing", + "pl7.app/description": "How much better or worse this variant binds than the parent, in gate steps — zero means it behaves like the parent.", + "pl7.app/facsBin/sortYieldCorrected": sortYieldCorrected, + "pl7.app/table/visibility": "default", + "pl7.app/table/orderPriority": "70200" + } + }, + variantAxes + )) + } + + // The read distribution: two Double columns per condition on [variant, gate]. Neither + // carries the score annotations, because neither is a score. The condition key is + // load-bearing rather than tidy — without it every condition's pair has an identical + // spec and one run's columns collide instead of coexisting. + distributionAxes := [ + { column: "variantKey", spec: variantAxisSpec }, + { column: "gate", spec: gateAxisSpec } + ] + + collect(distributionEntries, importOne( + distributionFiles[entry.readDistributionFile], + "gateFrequency", + "gateFrequency_" + suffix, + { + name: "pl7.app/facsBin/gateFrequency", + valueType: "Double", + domain: { + "pl7.app/block": blockId, + "pl7.app/facsBin/condition": condition + }, + annotations: { + "pl7.app/label": "Gate read frequency (" + condition + ")", + "pl7.app/table/visibility": "optional" + } + }, + distributionAxes + )) + + // Both quantities travel: the frequency is a shape and the reads say whether to trust + // it — a variant with four reads across two gates draws the same profile as one with + // four thousand. + collect(distributionEntries, importOne( + distributionFiles[entry.readDistributionFile], + "gateReads", + "gateReads_" + suffix, + { + name: "pl7.app/facsBin/gateReads", + valueType: "Double", + domain: { + "pl7.app/block": blockId, + "pl7.app/facsBin/condition": condition + }, + annotations: { + "pl7.app/label": "Gate reads (" + condition + ")", + "pl7.app/table/visibility": "optional" + } + }, + distributionAxes + )) + } + + buildFrame := func(entries) { + builder := pframes.pFrameBuilder() + for key in maps.getKeys(entries) { + value := entries[key] + builder.add(key, trace.inject(value.spec), value.data) + } + return builder.build() + } + + // One built frame, two destinations. `scoresPf` is what downstream blocks consume through + // exports; `scoresPfForUi` is the same pcolumn resources exported for this block's own + // table, which needs them because the result pool cannot tell *this* instance's columns + // from another instance of this block's. + scores := buildFrame(scoreEntries) + + return { + scoresPf: scores, + scoresPfForUi: pframes.exportFrame(scores), + distributionPf: pframes.exportFrame(buildFrame(distributionEntries)) + } +}) diff --git a/workflow/src/main.tpl.tengo b/workflow/src/main.tpl.tengo new file mode 100644 index 0000000..cc1146b --- /dev/null +++ b/workflow/src/main.tpl.tengo @@ -0,0 +1,229 @@ +// Entry template for the Sort-Seq Analysis block. +// +// Five stages, per `workflow-structure`: +// 1. resolve the inputs against the abundance anchor (wf.prepare) +// 2. export the reads and variants tables (body) +// 3. write the parameter document (body) +// 4. invoke the score entrypoint once (body) +// 5. construct one PColumn per file the manifest names (build-columns.tpl) +// +// Stage 5 lives in a child template because it cannot be done here: the columns to build, +// and the condition / reference mode / correction mode each declares, are known only once +// the entrypoint has run and written its manifest. A template body has finished +// constructing its graph before the tool executes, so branching on the manifest inline is +// not possible — the child takes the manifest as an input and the platform runs it after. +// +// THREE THINGS THIS TEMPLATE MUST NOT DO (`workflow-structure`): +// * It must not apply the read floor — not here, not in the reads export. The floor +// belongs inside the computation, after per-gate depths are taken. A floor-filtered +// export is the natural thing to write and it silently takes every depth over the +// surviving set, which makes two runs at two floor settings incomparable. +// * It must not pair, order or relate conditions. Each is scored independently. +// * It must not decide which columns exist, nor what they declare about themselves. +// The manifest names every column to build and supplies every value it declares. + +wf := import("@platforma-sdk/workflow-tengo:workflow") +exec := import("@platforma-sdk/workflow-tengo:exec") +assets := import("@platforma-sdk/workflow-tengo:assets") +pframes := import("@platforma-sdk/workflow-tengo:pframes") +render := import("@platforma-sdk/workflow-tengo:render") +canonical := import("@platforma-sdk/workflow-tengo:canonical") + +scoreSw := assets.importSoftware("@platforma-open/milaboratories.sort-seq-analysis.software:main") +buildColumnsTpl := assets.importTemplate(":build-columns") + +// Headers the computation reads. They are its side of `computation-interface`, so they are +// fixed here and in software/src/constants.py together. +READS_FILE := "reads.tsv" +VARIANTS_FILE := "variants.tsv" +PARAMS_FILE := "params.json" +MANIFEST_FILE := "manifest.json" +SORT_FRACTION_HEADER := "sortFraction" + +// The entrypoint writes one file per quantity per condition and one distribution file per +// condition, and the caller cannot name them up front — it does not know which conditions +// survive exclusion, nor where binScore is produced. So they are collected as file sets by +// pattern, and the manifest says which is which. +SCORE_FILE_REGEX := "^score_.*\\.tsv$" +DISTRIBUTION_FILE_REGEX := "^dist_.*\\.tsv$" + +wf.prepare(func(args) { + bb := wf.createPBundleBuilder() + bb.ignoreMissingDomains() + + // The abundance column is the anchor: the user picks exactly one input directly, and + // every other input resolves against it. Located independently, a user could select an + // abundance column from one run and a condition column from another and nothing would + // notice — the mismatch would surface as an empty join or, worse, a partial one. + // The anchor MUST be named "main". The model builds the metadata pickers with + // getCanonicalOptions({ main: anchor }, ...), so every anchored id it stores embeds + // `{"anchor":"main"}` — and resolving one against a bundle whose anchor is registered + // under any other name fails with "Cannot resolve anchored axis: anchor 'main' not found". + // The name is part of the id's contract, not a local label. + bb.addAnchor("main", args.abundanceRef) + + // The three metadata roles. One predicate, one option list, three independent picks — + // a spec predicate can establish that a column *is* per-sample metadata but not which + // role it plays, because the only per-column discriminator is a value from the user's + // own data. So the model offers the list and the user assigns the roles. + bb.addSingle(args.conditionColumnRef, "condition") + bb.addSingle(args.gateColumnRef, "gate") + if !is_undefined(args.sortFractionColumnRef) { + bb.addSingle(args.sortFractionColumnRef, "sortFraction") + } + + // The variants' mutation count, located by predicate rather than picked. All three + // clauses are required: the profiler emits another per-variant total on the same axis, + // so the axis alone selects more than one, and it emits the count at two alphabet + // grains. At the nucleotide grain a library of synonymous barcodes for one wild type + // yields several zero-count rows, which reads as the parent being *unidentifiable* — so + // a correctly-parented run would emit the cancelled form. + // + // Matched as a column, never as the mutation-count *axis* of the same name; the profiler + // emits both and only the column reaches the result pool. + // + // addMulti rather than addSingle because this predicate is allowed to resolve to + // nothing, and because more than one match is treated as no answer — see the body. + bb.addMulti({ + axes: [{ anchor: "main", idx: 1 }], + name: "pl7.app/repertoire/mutationCount", + domain: { "pl7.app/alphabet": "aminoacid" } + }, "mutationCount") + + // Everything in this bundle is awaited fully — spec and data — before the body runs, + // which delays this block's own spec emission. That is unavoidable here: the body's job + // is to export these columns' values as tables, so it genuinely consumes the data. + return { columns: bb.build() } +}) + +wf.body(func(args) { + blockId := wf.blockId().getDataAsJson() + columns := args.columns + + abundanceSpec := columns.getSpec("main") + sampleAxisSpec := abundanceSpec.axesSpec[0] + variantAxisSpec := abundanceSpec.axesSpec[1] + + hasSortFraction := !is_undefined(args.sortFractionColumnRef) + + // "Where it resolves to more than one, the block treats that as no answer and selects + // none" — it does not take the first and it does not rank. Any tie-break would be this + // block's invention, and a first-match rule would pick by result ordering, which is + // exactly the inference `input-defaults` rules out. + mutationCountColumns := columns.getColumns("mutationCount") + hasMutationCount := !is_undefined(mutationCountColumns) && len(mutationCountColumns) == 1 + + //////// Stage 2: two tables, because the inputs sit on two grains //////// + + // The builder joins its columns on their shared axes, so abundance ([sample][variant]) + // plus condition and gate ([sample]) gives one row per (sample, variant) with the + // metadata aligned. + readsBuilder := pframes.tsvFileBuilder() + readsBuilder.setAxisHeader(sampleAxisSpec.name, "sampleId") + readsBuilder.setAxisHeader(variantAxisSpec.name, "variantKey") + readsBuilder.add(columns.getColumn("main"), { header: "reads" }) + readsBuilder.add(columns.getColumn("condition"), { header: "condition" }) + readsBuilder.add(columns.getColumn("gate"), { header: "gate" }) + if hasSortFraction { + readsBuilder.add(columns.getColumn("sortFraction"), { header: SORT_FRACTION_HEADER }) + } + readsBuilder.mem("16GiB") + readsBuilder.cpu(1) + readsTsv := readsBuilder.build() + + // A second table rather than a column on the first, because the mutation count is per + // variant: carried in the reads table it would repeat once per sample, and — the real + // cost — its *absence* would be a null column rather than a missing table. A missing + // table says "no mutation count anywhere"; a nullable column asks every reader to tell + // that from "none for this variant". + variantsTsv := undefined + if hasMutationCount { + variantsBuilder := pframes.tsvFileBuilder() + variantsBuilder.setAxisHeader(variantAxisSpec.name, "variantKey") + variantsBuilder.add(mutationCountColumns[0], { header: "mutationCount" }) + variantsBuilder.mem("8GiB") + variantsBuilder.cpu(1) + variantsTsv = variantsBuilder.build() + } + + //////// Stage 3: the parameter document //////// + + // Optional fields are omitted rather than set to a null literal, and the computation + // reads an absent key as the stated absence behaviour: no floor applied, correction not + // applied. Both are answers `input-defaults` states, not unset configuration. + paramsPayload := { + gateRanks: args.gateRanks, + excludedConditions: args.excludedConditions + } + if !is_undefined(args.readFloor) { + paramsPayload.readFloor = args.readFloor + } + if hasSortFraction { + paramsPayload.sortFractionColumn = SORT_FRACTION_HEADER + } + + //////// Stage 4: one invocation, covering every condition //////// + + // One call rather than one per condition: nothing outside the arithmetic is + // per-condition — parent row, mutation count, parameters and runenv are shared — so + // per-condition calls would multiply startup, leave this template merging N manifests, + // and make the one-condition case a loop's degenerate iteration. + execBuilder := exec.builder(). + software(scoreSw). + mem("16GiB"). + cpu(4). + writeFile(PARAMS_FILE, canonical.encode(paramsPayload)). + addFile(READS_FILE, readsTsv). + arg("--reads").arg(READS_FILE). + arg("--params").arg(PARAMS_FILE). + arg("--out-dir").arg("."). + saveFileSet("scoreFiles", SCORE_FILE_REGEX). + saveFileSet("distributionFiles", DISTRIBUTION_FILE_REGEX). + saveFileContent(MANIFEST_FILE). + saveStdoutStream() + + if hasMutationCount { + execBuilder.addFile(VARIANTS_FILE, variantsTsv) + execBuilder.arg("--variants").arg(VARIANTS_FILE) + } + + score := execBuilder.run() + + //////// Stage 5: construct the columns the manifest names //////// + + // Ephemeral, and it has to be: the child reads the manifest's *value*, which needs + // `awaitState`, and awaitState is allowed only in ephemeral templates. The cost is bounded + // — only this step opts out of cross-project dedup. Everything expensive above it (the + // table exports and the entrypoint invocation) stays pure and still dedups, and this step + // is spec construction over a handful of files. + built := render.createEphemeral(buildColumnsTpl, { + manifest: score.getFileContent(MANIFEST_FILE), + scoreFiles: score.getFileSet("scoreFiles"), + distributionFiles: score.getFileSet("distributionFiles"), + variantAxisSpec: variantAxisSpec, + abundanceSpec: abundanceSpec, + blockId: blockId + }) + + return { + outputs: { + // The distribution columns go to a graph frame the read-distribution view reads, + // and to neither exports nor the pool. A pool column is a contract: the consumers + // that exist read the two scored columns, and a published diagnostic becomes + // something a later block may depend on — while v2 chooses a certainty statistic + // over this same distribution and needs its form still open. + // The scored columns as a frame this block's own table reads. They also go to + // exports below — same resources, one import, two destinations. + scoresPf: built.output("scoresPfForUi"), + distributionPf: built.output("distributionPf"), + // Returned as an output of its own so what it reports about the run is readable + // without reconstructing it from the columns. + manifest: score.getFileContent(MANIFEST_FILE), + logHandle: score.getStdoutStream() + }, + exports: { + // The two scored columns, and those stay the whole of what another block consumes. + pf: built.output("scoresPf") + } + } +})