diff --git a/.dockerignore b/.dockerignore index 5c69ffc54..386c86a71 100644 --- a/.dockerignore +++ b/.dockerignore @@ -1,6 +1,6 @@ node_modules -/dist/* -!/dist/dashboard +/dist logs +c2d_storage .env.local .env \ No newline at end of file diff --git a/.env.example b/.env.example index 264e0dfdc..f1d59352d 100644 --- a/.env.example +++ b/.env.example @@ -20,17 +20,24 @@ export FEE_AMOUNT= export ADDRESS_FILE= export NODE_ENV= export AUTHORIZED_DECRYPTERS= +export AUTHORIZED_DECRYPTERS_LIST= export OPERATOR_SERVICE_URL= +export POLICY_SERVER_URL export INTERFACES= export ALLOWED_VALIDATORS= +export ALLOWED_VALIDATORS_LIST= +export AUTHORIZED_PUBLISHERS= +export AUTHORIZED_PUBLISHERS_LIST= export INDEXER_INTERVAL= export ALLOWED_ADMINS= -export DASHBOARD=true +export ALLOWED_ADMINS_LIST= +export CONTROL_PANEL=true export RATE_DENY_LIST= -export MAX_REQ_PER_SECOND= +export MAX_REQ_PER_MINUTE= export MAX_CHECKSUM_LENGTH= export LOG_LEVEL= export HTTP_API_PORT= +export VALIDATE_UNSIGNED_DDO= ## p2p @@ -55,4 +62,9 @@ export P2P_ENABLE_AUTONAT= export P2P_ENABLE_CIRCUIT_RELAY_SERVER= export P2P_ENABLE_CIRCUIT_RELAY_CLIENT= export P2P_BOOTSTRAP_NODES= -export P2P_FILTER_ANNOUNCED_ADDRESSES= \ No newline at end of file +export P2P_FILTER_ANNOUNCED_ADDRESSES= + +## compute +export DOCKER_COMPUTE_ENVIRONMENTS= + + diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index d980860e6..c775f3894 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @alexcos20 \ No newline at end of file +* @alexcos20 @bogdanfazakas @jamiehewitt15 @mariacarmina @paulo-ocean @giurgiur99 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 771ab92f6..5fa8b6d23 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -17,7 +17,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.16.0' + node-version: 'v20.19.0' - name: Cache node_modules uses: actions/cache@v3 env: @@ -42,7 +42,7 @@ jobs: fail-fast: false matrix: os: [ubuntu-latest] - node: ['18.20.4', 'v20.16.0', 'v22.5.1'] + node: ['18.20.4', 'v20.19.0', 'v22.5.1'] steps: - uses: actions/checkout@v4 @@ -66,7 +66,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.16.0' + node-version: 'v20.19.0' - name: Cache node_modules uses: actions/cache@v3 env: @@ -100,7 +100,7 @@ jobs: - uses: actions/checkout@v4 - uses: actions/setup-node@v4 with: - node-version: 'v20.16.0' + node-version: 'v20.19.0' - name: Cache node_modules uses: actions/cache@v3 env: @@ -125,24 +125,30 @@ jobs: DOCKERHUB_PASSWORD: ${{ secrets.DOCKERHUB_PASSWORD }} - name: Run Barge working-directory: ${{ github.workspace }}/barge + env: + CONTRACTS_VERSION: escrow run: | - bash -x start_ocean.sh --no-aquarius --no-provider --no-dashboard --with-c2d --with-typesense 2>&1 > start_ocean.log & + bash -x start_ocean.sh --no-aquarius --no-provider --no-dashboard --with-typesense 2>&1 > start_ocean.log & - run: npm ci - run: npm run build - - name: Wait for contracts deployment and C2D cluster to be ready + - run: docker image ls + - name: Delete default runner images + run: | + rm -rf /usr/share/swift/ + - name: Wait for contracts deployment working-directory: ${{ github.workspace }}/barge run: | for i in $(seq 1 250); do - sleep 10 + sleep 5 [ -f "$HOME/.ocean/ocean-contracts/artifacts/ready" ] && break done - name: docker logs - run: docker logs ocean-ocean-contracts-1 && docker logs ocean-kindcluster-1 && docker logs ocean-computetodata-1 && docker logs ocean-typesense-1 + run: docker logs ocean-ocean-contracts-1 && docker logs ocean-typesense-1 if: ${{ failure() }} - name: integration tests run: npm run test:integration:cover env: - OPERATOR_SERVICE_URL: '["http://172.15.0.13:31000"]' + # OPERATOR_SERVICE_URL: '["http://172.15.0.13:31000"]' PRIVATE_KEY: ${{ secrets.NODE1_PRIVATE_KEY }} NODE1_PRIVATE_KEY: ${{ secrets.NODE1_PRIVATE_KEY }} NODE2_PRIVATE_KEY: ${{ secrets.NODE2_PRIVATE_KEY }} @@ -157,7 +163,7 @@ jobs: ASSET_PURGATORY_URL: 'https://raw.githubusercontent.com/oceanprotocol/list-purgatory/main/list-assets.json' ACCOUNT_PURGATORY_URL: 'https://raw.githubusercontent.com/oceanprotocol/list-purgatory/main/list-accounts.json' - name: docker logs - run: docker logs ocean-ocean-contracts-1 && docker logs ocean-kindcluster-1 && docker logs ocean-computetodata-1 && docker logs ocean-typesense-1 + run: docker logs ocean-ocean-contracts-1 && docker logs ocean-typesense-1 if: ${{ failure() }} - uses: actions/upload-artifact@v4 with: @@ -174,7 +180,7 @@ jobs: - name: Set up Node.js uses: actions/setup-node@v4 with: - node-version: 'v20.16.0' + node-version: 'v20.19.0' - name: Cache node_modules uses: actions/cache@v3 @@ -225,7 +231,7 @@ jobs: done - name: docker logs - run: docker logs ocean-ocean-contracts-1 && docker logs ocean-kindcluster-1 && docker logs ocean-computetodata-1 && docker logs ocean-typesense-1 + run: docker logs ocean-ocean-contracts-1 && docker logs ocean-typesense-1 if: ${{ failure() }} - name: Checkout Ocean Node @@ -286,3 +292,22 @@ jobs: run: npm run test:system env: AVOID_LOOP_RUN: true + + control_panel_build: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-node@v4 + with: + node-version: 'v20.19.0' + - name: Cache node_modules + uses: actions/cache@v3 + env: + cache-name: cache-node-modules + with: + path: ~/.npm + key: ${{ runner.os }}-control-panel-${{ env.cache-name }}-${{ hashFiles('**/package-lock.json') }} + restore-keys: ${{ runner.os }}-control-panel-${{ env.cache-name }}- + - run: npm ci + - name: Build control panel + run: npm run build:controlpanel diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml index 4990cb174..f4e8a1c98 100644 --- a/.github/workflows/docker.yml +++ b/.github/workflows/docker.yml @@ -14,6 +14,7 @@ on: jobs: build: runs-on: ubuntu-latest + if: ${{ github.actor != 'dependabot[bot]' }} strategy: fail-fast: false matrix: @@ -81,3 +82,45 @@ jobs: path: /tmp/digests/* if-no-files-found: error retention-days: 1 + + merge: + runs-on: ubuntu-latest + if: ${{ github.actor != 'dependabot[bot]' }} + needs: + - build + steps: + - name: Download digests + uses: actions/download-artifact@v4 + with: + path: /tmp/digests + pattern: digests-* + merge-multiple: true + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + - name: Set Docker metadata + id: ocean_node_meta + uses: docker/metadata-action@v5 + with: + images: | + oceanprotocol/ocean-node + # generate Docker tags based on the following events/attributes + tags: | + type=ref,event=branch + type=semver,pattern={{version}} + type=ref,event=pr + # type=semver,pattern={{major}}.{{minor}} + # type=semver,pattern={{major}} + # type=sha + - name: Login to Docker Hub + uses: docker/login-action@v3 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKER_PUSH_TOKEN }} + - name: Create manifest list and push + working-directory: /tmp/digests + run: | + docker buildx imagetools create $(jq -cr '.tags | map("-t " + .) | join(" ")' <<< "$DOCKER_METADATA_OUTPUT_JSON") \ + $(printf 'oceanprotocol/ocean-node@sha256:%s ' *) + - name: Inspect image + run: | + docker buildx imagetools inspect oceanprotocol/ocean-node:${{ steps.ocean_node_meta.outputs.version }} diff --git a/.gitignore b/.gitignore index a14357002..203f0ecd9 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,8 @@ -# Dahsboard -dashboard/.env +# Control panel +controlpanel/.env + +# Docker compose +**/docker-compose.yml # Logs logs @@ -94,7 +97,7 @@ out .nuxt /dist/* -!/dist/dashboard +!/dist/controlpanel # Gatsby files .cache/ @@ -155,3 +158,4 @@ html-report.html # databases *.sqlite databases/* +c2d_storage/* diff --git a/.nvmrc b/.nvmrc index b427e2ae2..3bf34c276 100644 --- a/.nvmrc +++ b/.nvmrc @@ -1 +1 @@ -v20.16.0 \ No newline at end of file +v20.19.0 \ No newline at end of file diff --git a/CHANGELOG.md b/CHANGELOG.md index 123905f44..3013c787e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,8 +4,99 @@ All notable changes to this project will be documented in this file. Dates are d Generated by [`auto-changelog`](https://github.com/CookPete/auto-changelog). +#### [v0.2.3](https://github.com/oceanprotocol/ocean-node/compare/v0.2.1...v0.2.3) + +- Update node script - C2D [`#896`](https://github.com/oceanprotocol/ocean-node/pull/896) +- fix docker-compose [`#895`](https://github.com/oceanprotocol/ocean-node/pull/895) +- re-indexing old DDOs [`#867`](https://github.com/oceanprotocol/ocean-node/pull/867) +- Upgrade tsx dep to v4.x [`#893`](https://github.com/oceanprotocol/ocean-node/pull/893) +- C2D Docker [`#705`](https://github.com/oceanprotocol/ocean-node/pull/705) +- Updating codeowners [`#887`](https://github.com/oceanprotocol/ocean-node/pull/887) +- fix issue with empty nft fields [`#886`](https://github.com/oceanprotocol/ocean-node/pull/886) +- add allowed admins access list [`#841`](https://github.com/oceanprotocol/ocean-node/pull/841) +- Update error message for invalid peer connection [`#874`](https://github.com/oceanprotocol/ocean-node/pull/874) +- add AUTHORIZED_DECRYPTERS_LIST [`#836`](https://github.com/oceanprotocol/ocean-node/pull/836) +- fix status code if policy server not available [`#869`](https://github.com/oceanprotocol/ocean-node/pull/869) +- Fix DDO: Stats and Prices for exchanges/dispensers [`#774`](https://github.com/oceanprotocol/ocean-node/pull/774) +- move p2p getters as handlers [`#862`](https://github.com/oceanprotocol/ocean-node/pull/862) +- always check remote peerId [`#864`](https://github.com/oceanprotocol/ocean-node/pull/864) +- Test if dashboard changes are already committed [`#842`](https://github.com/oceanprotocol/ocean-node/pull/842) +- add AUTHORIZED_PUBLISHERS_*** env variables [`#826`](https://github.com/oceanprotocol/ocean-node/pull/826) +- Issue 814 credentials types [`#823`](https://github.com/oceanprotocol/ocean-node/pull/823) +- remove echo command [`#839`](https://github.com/oceanprotocol/ocean-node/pull/839) +- Issue 808 - new accesslist credentials type [`#819`](https://github.com/oceanprotocol/ocean-node/pull/819) +- add ALLOWED_VALIDATORS_LIST [`#829`](https://github.com/oceanprotocol/ocean-node/pull/829) +- update build files and hash [`#821`](https://github.com/oceanprotocol/ocean-node/pull/821) +- add * as match all rule for address types [`#837`](https://github.com/oceanprotocol/ocean-node/pull/837) +- fix: return correct message on policy server call [`#834`](https://github.com/oceanprotocol/ocean-node/pull/834) +- add policyServerPassthrough routes [`#832`](https://github.com/oceanprotocol/ocean-node/pull/832) +- Bump fast-xml-parser from 4.3.6 to 4.5.0 in /dashboard [`#711`](https://github.com/oceanprotocol/ocean-node/pull/711) +- Bump secp256k1 from 5.0.0 to 5.0.1 in /dashboard [`#725`](https://github.com/oceanprotocol/ocean-node/pull/725) +- Bump elliptic from 6.5.5 to 6.6.0 in /dashboard [`#746`](https://github.com/oceanprotocol/ocean-node/pull/746) +- Bump cross-spawn and aegir (UPDATE: delete deps) [`#757`](https://github.com/oceanprotocol/ocean-node/pull/757) +- fix corner case issue, cannot start indexing on ganache without ADDRESS_FILE [`#775`](https://github.com/oceanprotocol/ocean-node/pull/775) +- add findPeer & dht refactor [`#793`](https://github.com/oceanprotocol/ocean-node/pull/793) +- add support for identifyPush protocol [`#794`](https://github.com/oceanprotocol/ocean-node/pull/794) +- no need to store everything in peerStore [`#795`](https://github.com/oceanprotocol/ocean-node/pull/795) +- add multiAddrs for directCommand [`#796`](https://github.com/oceanprotocol/ocean-node/pull/796) +- Refactor connections rate, rate per minute instead of second [`#785`](https://github.com/oceanprotocol/ocean-node/pull/785) +- add missing check for ddo DB on republish ddos [`#789`](https://github.com/oceanprotocol/ocean-node/pull/789) +- recalculate code hash if needed [`#790`](https://github.com/oceanprotocol/ocean-node/pull/790) +- fix usage of getBoolEnvValue [`#784`](https://github.com/oceanprotocol/ocean-node/pull/784) +- refactor handlers interfaces [`37cbfa5`](https://github.com/oceanprotocol/ocean-node/commit/37cbfa5076d6b665d9ba524156a8f48a656fe93f) +- mv unit test to integration (need contracts deployment) [`7236ac5`](https://github.com/oceanprotocol/ocean-node/commit/7236ac5a603b2ef9c66ccf68a8a6d52acdb96855) +- refactor, move getAdmins fn to auth [`5ba8bd5`](https://github.com/oceanprotocol/ocean-node/commit/5ba8bd528286a5c18acda572a1ce6170672415e6) + +#### [v0.2.1](https://github.com/oceanprotocol/ocean-node/compare/v0.2.0...v0.2.1) + +> 5 December 2024 + +- have bootstrap config var [`#782`](https://github.com/oceanprotocol/ocean-node/pull/782) +- Removing unused express dependency from dashboard [`#761`](https://github.com/oceanprotocol/ocean-node/pull/761) +- check if rpcs and indexer_networks are aligned, log [`#750`](https://github.com/oceanprotocol/ocean-node/pull/750) +- remove node 16 image references [`#759`](https://github.com/oceanprotocol/ocean-node/pull/759) +- try debug and fix randomly logs failing test [`#752`](https://github.com/oceanprotocol/ocean-node/pull/752) +- fix dashboard hash out of sync [`#744`](https://github.com/oceanprotocol/ocean-node/pull/744) +- improve reindex command, optional block, also check if thread is running [`#747`](https://github.com/oceanprotocol/ocean-node/pull/747) +- Add cleaner logging when idexing and getting/updating block info from db [`#743`](https://github.com/oceanprotocol/ocean-node/pull/743) +- Add INDEXER_NETWORKS env var within CI job. [`#734`](https://github.com/oceanprotocol/ocean-node/pull/734) +- fix system tests. Running old version of node? [`#733`](https://github.com/oceanprotocol/ocean-node/pull/733) +- rm console.logs [`#731`](https://github.com/oceanprotocol/ocean-node/pull/731) +- fix wrong block for log [`#727`](https://github.com/oceanprotocol/ocean-node/pull/727) +- nonce db sql lite [`#723`](https://github.com/oceanprotocol/ocean-node/pull/723) +- Bump version axios 1.6.0 -> 1.7.4. [`#716`](https://github.com/oceanprotocol/ocean-node/pull/716) +- Bump version express 4.18.2 -> 4.21.0. [`#717`](https://github.com/oceanprotocol/ocean-node/pull/717) +- Feature/ add Elasticsearch database alternative for typesense [`#599`](https://github.com/oceanprotocol/ocean-node/pull/599) +- Database tests 2db [`#707`](https://github.com/oceanprotocol/ocean-node/pull/707) +- add credentials at service level, on schemas [`#710`](https://github.com/oceanprotocol/ocean-node/pull/710) +- Bump micromatch from 4.0.5 to 4.0.8 in /dashboard [`#649`](https://github.com/oceanprotocol/ocean-node/pull/649) +- Bump undici from 5.27.0 to 5.28.4 [`#610`](https://github.com/oceanprotocol/ocean-node/pull/610) +- testing changes [`#718`](https://github.com/oceanprotocol/ocean-node/pull/718) +- Policy Server [`#694`](https://github.com/oceanprotocol/ocean-node/pull/694) +- fix missing/invalid db_url log message, put warn at startup [`#654`](https://github.com/oceanprotocol/ocean-node/pull/654) +- move c2d engines under OceanNode class [`#702`](https://github.com/oceanprotocol/ocean-node/pull/702) +- improve error message, transfer fees and tweak node response [`#701`](https://github.com/oceanprotocol/ocean-node/pull/701) +- fix default filtered p2p ip list (non routable ips that should not be announced) [`#699`](https://github.com/oceanprotocol/ocean-node/pull/699) +- chore: add datatokenaddress in order table [`#700`](https://github.com/oceanprotocol/ocean-node/pull/700) +- fixing tests [`#703`](https://github.com/oceanprotocol/ocean-node/pull/703) +- Updating deprecated actions [`#681`](https://github.com/oceanprotocol/ocean-node/pull/681) +- add access control to service level [`#698`](https://github.com/oceanprotocol/ocean-node/pull/698) +- customize boostrap params [`#696`](https://github.com/oceanprotocol/ocean-node/pull/696) +- Issue 668 oasis decryption [`#679`](https://github.com/oceanprotocol/ocean-node/pull/679) +- Add max ram memory in node start cmd [`#697`](https://github.com/oceanprotocol/ocean-node/pull/697) +- Feature/add elasticdb search [`#695`](https://github.com/oceanprotocol/ocean-node/pull/695) +- fix: search and nonce [`#688`](https://github.com/oceanprotocol/ocean-node/pull/688) +- Issue 501 - C2D getJobStatus - did vs documentId vs agreementId [`#502`](https://github.com/oceanprotocol/ocean-node/pull/502) +- Feature/add elasticdb tvl [`#677`](https://github.com/oceanprotocol/ocean-node/pull/677) +- Renaming dashboard as Control Panel [`#674`](https://github.com/oceanprotocol/ocean-node/pull/674) +- add new schema + tests [`a648cb3`](https://github.com/oceanprotocol/ocean-node/commit/a648cb38df2dea537ca28e67ae4bf1113c9b287d) +- normalize responses [`584b6c0`](https://github.com/oceanprotocol/ocean-node/commit/584b6c09c67fb66fee7d0d01cca51693ea2a3723) +- first draft [`b3afc02`](https://github.com/oceanprotocol/ocean-node/commit/b3afc02219233af4026c43b886bf97c0a2edb323) + #### [v0.2.0](https://github.com/oceanprotocol/ocean-node/compare/v0.1.0...v0.2.0) +> 9 September 2024 + - Downgrade indexer errors [`#675`](https://github.com/oceanprotocol/ocean-node/pull/675) - Update system requirements: change iOS to macOS [`#673`](https://github.com/oceanprotocol/ocean-node/pull/673) - Fix crash on connection reset - P2P streams [`#659`](https://github.com/oceanprotocol/ocean-node/pull/659) diff --git a/Dockerfile b/Dockerfile index 85400da14..67a1fdbb7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -4,7 +4,7 @@ COPY .nvmrc /usr/src/app/ RUN rm /bin/sh && ln -s /bin/bash /bin/sh ENV NVM_DIR /usr/local/nvm RUN mkdir $NVM_DIR -ENV NODE_VERSION=v20.16.0 +ENV NODE_VERSION=v20.19.0 # Install nvm with node and npm RUN curl https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.5/install.sh | bash \ && source $NVM_DIR/nvm.sh \ @@ -27,8 +27,8 @@ COPY . /usr/src/app WORKDIR /usr/src/app/ COPY --from=builder /usr/src/app/node_modules/ /usr/src/app/node_modules/ RUN npm run build -# Remove the dashboard folder to reduce the image size and avoid shipping development files -RUN rm -rf dashboard +# Remove the controlpanel folder to reduce the image size and avoid shipping development files +RUN rm -rf controlpanel ENV P2P_ipV4BindTcpPort=9000 EXPOSE 9000 ENV P2P_ipV4BindWsPort=9001 @@ -40,4 +40,4 @@ EXPOSE 9003 ENV HTTP_API_PORT=8000 EXPOSE 8000 ENV NODE_ENV='production' -CMD ["npm","run","start"] \ No newline at end of file +CMD ["npm","run","start"] diff --git a/README.md b/README.md index 0861e3650..ca2d3c255 100644 --- a/README.md +++ b/README.md @@ -137,5 +137,17 @@ Your node is now running, the control panel will be available at `http://localho - [Testing Guide](docs/testing.md) - [Network Configuration](docs/networking.md) - [Logging & accessing logs](docs/networking.md) -- [Control Panel: Local development](dashboard/README.md) +- [Control Panel: Local development](controlpanel/README.md) - [Docker Deployment Guide](docs/dockerDeployment.md) + +## Control Panel + +The control panel is available at `http://localhost:8000/controlpanel/` when your node is running. The built files are included in the distribution, so you **don't need to rebuild it** unless you make changes to the control panel code. + +To rebuild after changes: + +```bash +npm run build:controlpanel +``` + +For more details, see the [Control Panel Development Guide](controlpanel/README.md). diff --git a/dashboard/.DS_Store b/controlpanel/.DS_Store similarity index 100% rename from dashboard/.DS_Store rename to controlpanel/.DS_Store diff --git a/dashboard/README.md b/controlpanel/README.md similarity index 81% rename from dashboard/README.md rename to controlpanel/README.md index 7491d63b0..488800d72 100644 --- a/dashboard/README.md +++ b/controlpanel/README.md @@ -1,6 +1,6 @@ # Control Panel -The static dashbaord files are included in ocean nodes so the control panel doesn't have to be rebuilt every time the node is built. If there are changes to the control panel it will be built by default with the Ocean Node. There is a [script](scripts/dashboardChanges.js) running to check for changes in this directory. +The static controlpanel files are included in ocean nodes so the control panel doesn't have to be rebuilt every time the node is built. If there are changes to the control panel it should be rebuilt with `npm run build:controlpanel`. When you start your node the control panel will be made available at: `http://localhost:8000/controlpanel/` diff --git a/dashboard/additional.d.ts b/controlpanel/additional.d.ts similarity index 100% rename from dashboard/additional.d.ts rename to controlpanel/additional.d.ts diff --git a/dashboard/next-env.d.ts b/controlpanel/next-env.d.ts similarity index 100% rename from dashboard/next-env.d.ts rename to controlpanel/next-env.d.ts diff --git a/dashboard/next.config.js b/controlpanel/next.config.js similarity index 86% rename from dashboard/next.config.js rename to controlpanel/next.config.js index 95e3eee38..7e12e384f 100644 --- a/dashboard/next.config.js +++ b/controlpanel/next.config.js @@ -7,7 +7,7 @@ const nextConfig = { unoptimized: true }, output: 'export', - distDir: '../dist/dashboard' + distDir: '../dist/controlpanel' } module.exports = nextConfig diff --git a/dashboard/package-lock.json b/controlpanel/package-lock.json similarity index 96% rename from dashboard/package-lock.json rename to controlpanel/package-lock.json index 8696673c6..47dfea579 100644 --- a/dashboard/package-lock.json +++ b/controlpanel/package-lock.json @@ -1,11 +1,11 @@ { - "name": "ocean-node-dashboard", + "name": "ocean-node-control-panel", "version": "0.1.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "ocean-node-dashboard", + "name": "ocean-node-control-panel", "version": "0.1.0", "license": "Apache-2.0", "dependencies": { @@ -18,7 +18,6 @@ "classnames": "^2.5.0", "dayjs": "^1.11.10", "ethers": "^6.10.0", - "express": "^4.18.2", "micromodal": "^0.4.10", "next": "^13.5.6", "react": "^18", @@ -70,11 +69,13 @@ } }, "node_modules/@babel/code-frame": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.2.tgz", - "integrity": "sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==", + "version": "7.26.2", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.26.2.tgz", + "integrity": "sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==", + "license": "MIT", "dependencies": { - "@babel/highlight": "^7.24.2", + "@babel/helper-validator-identifier": "^7.25.9", + "js-tokens": "^4.0.0", "picocolors": "^1.0.0" }, "engines": { @@ -468,17 +469,19 @@ } }, "node_modules/@babel/helper-string-parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.1.tgz", - "integrity": "sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.9.tgz", + "integrity": "sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==", + "license": "MIT", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { - "version": "7.22.20", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", - "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "version": "7.25.9", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.9.tgz", + "integrity": "sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==", + "license": "MIT", "engines": { "node": ">=6.9.0" } @@ -507,102 +510,28 @@ } }, "node_modules/@babel/helpers": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.24.1.tgz", - "integrity": "sha512-BpU09QqEe6ZCHuIHFphEFgvNSrubve1FtyMton26ekZ85gRGi6LrTF7zArARp2YvyFxloeiRmtSCq5sjh1WqIg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.27.0.tgz", + "integrity": "sha512-U5eyP/CTFPuNE3qk+WZMxFkp/4zUzdceQlfzf7DdGdhp+Fezd7HD+i8Y24ZuTMKX3wQBld449jijbGq6OdGNQg==", + "license": "MIT", "peer": true, "dependencies": { - "@babel/template": "^7.24.0", - "@babel/traverse": "^7.24.1", - "@babel/types": "^7.24.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/highlight": { - "version": "7.24.2", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.2.tgz", - "integrity": "sha512-Yac1ao4flkTxTteCDZLEvdxg2fZfz1v8M4QpaGypq/WPDqg3ijHYbDfs+LG5hvzSoqaSZ9/Z9lKSP3CjZjv+pA==", - "dependencies": { - "@babel/helper-validator-identifier": "^7.22.20", - "chalk": "^2.4.2", - "js-tokens": "^4.0.0", - "picocolors": "^1.0.0" + "@babel/template": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/highlight/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/@babel/highlight/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/@babel/highlight/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@babel/highlight/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/highlight/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/@babel/parser": { - "version": "7.24.1", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.24.1.tgz", - "integrity": "sha512-Zo9c7N3xdOIQrNip7Lc9wvRPzlRtovHVE4lkz8WEDr7uYh/GMQhSiIgFxGIArRHYdJE5kxtZjAf8rT0xhdLCzg==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.27.0.tgz", + "integrity": "sha512-iaepho73/2Pz7w2eMS0Q5f83+0RKI7i4xmiYeBmDzfRVbQtTOG7Ts0S4HzJVsTMGI9keU8rNfuZr8DKfSt7Yyg==", + "license": "MIT", "peer": true, + "dependencies": { + "@babel/types": "^7.27.0" + }, "bin": { "parser": "bin/babel-parser.js" }, @@ -2192,9 +2121,10 @@ "peer": true }, "node_modules/@babel/runtime": { - "version": "7.24.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.24.4.tgz", - "integrity": "sha512-dkxf7+hn8mFBwKjs9bvBlArzLVxVbS8usaPUDd5p2a9JCL9tB8OaOVN1isD4+Xyk4ns89/xeOmbQvgdK7IIVdA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.0.tgz", + "integrity": "sha512-VtPOkrdPHZsKc/clNqyi9WUA8TINkZ4cGk63UUE3u4pmB2k+ZMQRDuIOagv8UVd6j7k0T3+RRIb7beKTebNbcw==", + "license": "MIT", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -2203,14 +2133,15 @@ } }, "node_modules/@babel/template": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.24.0.tgz", - "integrity": "sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.27.0.tgz", + "integrity": "sha512-2ncevenBqXI6qRMukPlXwHKHchC7RyMuu4xv5JBXRfOGVcTy1mXCD12qrp7Jsoxll1EV3+9sE4GugBVRjT2jFA==", + "license": "MIT", "peer": true, "dependencies": { - "@babel/code-frame": "^7.23.5", - "@babel/parser": "^7.24.0", - "@babel/types": "^7.24.0" + "@babel/code-frame": "^7.26.2", + "@babel/parser": "^7.27.0", + "@babel/types": "^7.27.0" }, "engines": { "node": ">=6.9.0" @@ -2247,13 +2178,13 @@ } }, "node_modules/@babel/types": { - "version": "7.24.0", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.24.0.tgz", - "integrity": "sha512-+j7a5c253RfKh8iABBhywc8NSfP5LURe7Uh4qpsh6jc+aLJguvmIUBdjSdEMQv2bENrCR5MfRdjGo7vzS/ob7w==", + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.27.0.tgz", + "integrity": "sha512-H45s8fVLYjbhFH62dIJ3WtmJ6RSPt/3DRO0ZcT2SUiYiQyz3BLVb9ADEnLl91m74aQPS3AzzeajZHYOalWe3bg==", + "license": "MIT", "dependencies": { - "@babel/helper-string-parser": "^7.23.4", - "@babel/helper-validator-identifier": "^7.22.20", - "to-fast-properties": "^2.0.0" + "@babel/helper-string-parser": "^7.25.9", + "@babel/helper-validator-identifier": "^7.25.9" }, "engines": { "node": ">=6.9.0" @@ -3793,25 +3724,6 @@ "@parcel/watcher-win32-x64": "2.4.1" } }, - "node_modules/@parcel/watcher-android-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-android-arm64/-/watcher-android-arm64-2.4.1.tgz", - "integrity": "sha512-LOi/WTbbh3aTn2RYddrO8pnapixAziFl6SMxHM69r3tvdSm94JtCenaKgk1GRg5FJ5wpMCpHeW+7yqPlvZv7kg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/watcher-darwin-arm64": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-arm64/-/watcher-darwin-arm64-2.4.1.tgz", @@ -3831,139 +3743,6 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/@parcel/watcher-darwin-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-darwin-x64/-/watcher-darwin-x64-2.4.1.tgz", - "integrity": "sha512-yrw81BRLjjtHyDu7J61oPuSoeYWR3lDElcPGJyOvIXmor6DEo7/G2u1o7I38cwlcoBHQFULqF6nesIX3tsEXMg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-freebsd-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-freebsd-x64/-/watcher-freebsd-x64-2.4.1.tgz", - "integrity": "sha512-TJa3Pex/gX3CWIx/Co8k+ykNdDCLx+TuZj3f3h7eOjgpdKM+Mnix37RYsYU4LHhiYJz3DK5nFCCra81p6g050w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm-glibc/-/watcher-linux-arm-glibc-2.4.1.tgz", - "integrity": "sha512-4rVYDlsMEYfa537BRXxJ5UF4ddNwnr2/1O4MHM5PjI9cvV2qymvhwZSFgXqbS8YoTk5i/JR0L0JDs69BUn45YA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-glibc/-/watcher-linux-arm64-glibc-2.4.1.tgz", - "integrity": "sha512-BJ7mH985OADVLpbrzCLgrJ3TOpiZggE9FMblfO65PlOCdG++xJpKUJ0Aol74ZUIYfb8WsRlUdgrZxKkz3zXWYA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-arm64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-arm64-musl/-/watcher-linux-arm64-musl-2.4.1.tgz", - "integrity": "sha512-p4Xb7JGq3MLgAfYhslU2SjoV9G0kI0Xry0kuxeG/41UfpjHGOhv7UoUDAz/jb1u2elbhazy4rRBL8PegPJFBhA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-glibc": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-glibc/-/watcher-linux-x64-glibc-2.4.1.tgz", - "integrity": "sha512-s9O3fByZ/2pyYDPoLM6zt92yu6P4E39a03zvO0qCHOTjxmt3GHRMLuRZEWhWLASTMSrrnVNWdVI/+pUElJBBBg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-linux-x64-musl": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-linux-x64-musl/-/watcher-linux-x64-musl-2.4.1.tgz", - "integrity": "sha512-L2nZTYR1myLNST0O632g0Dx9LyMNHrn6TOt76sYxWLdff3cB22/GZX2UPtJnaqQPdCRoszoY5rcOj4oMTtp5fQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/watcher-wasm": { "version": "2.4.1", "resolved": "https://registry.npmjs.org/@parcel/watcher-wasm/-/watcher-wasm-2.4.1.tgz", @@ -3989,63 +3768,6 @@ "inBundle": true, "license": "MIT" }, - "node_modules/@parcel/watcher-win32-arm64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-arm64/-/watcher-win32-arm64-2.4.1.tgz", - "integrity": "sha512-Uq2BPp5GWhrq/lcuItCHoqxjULU1QYEcyjSO5jqqOK8RNFDBQnenMMx4gAl3v8GiWa59E9+uDM7yZ6LxwUIfRg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-ia32": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-ia32/-/watcher-win32-ia32-2.4.1.tgz", - "integrity": "sha512-maNRit5QQV2kgHFSYwftmPBxiuK5u4DXjbXx7q6eKjq5dsLXZ4FJiVvlcw35QXzk0KrUecJmuVFbj4uV9oYrcw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/@parcel/watcher-win32-x64": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/@parcel/watcher-win32-x64/-/watcher-win32-x64-2.4.1.tgz", - "integrity": "sha512-+DvS92F9ezicfswqrvIRM2njcYJbd5mb9CUgtrHCHmvn7pPPa+nMDRu1o1bYYz/l5IB2NVGNJWiH7h1E58IF2A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, "node_modules/@parcel/watcher/node_modules/node-addon-api": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.0.tgz", @@ -5978,6 +5700,7 @@ "version": "1.3.8", "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "peer": true, "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -6136,11 +5859,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" - }, "node_modules/array-includes": { "version": "3.1.7", "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", @@ -6548,42 +6266,6 @@ "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==" }, - "node_modules/body-parser": { - "version": "1.20.1", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", - "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.4", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.11.0", - "raw-body": "2.5.1", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/bowser": { "version": "2.11.0", "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", @@ -6722,14 +6404,6 @@ "node": ">=10.16.0" } }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "engines": { - "node": ">= 0.8" - } - }, "node_modules/call-bind": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", @@ -7358,48 +7032,16 @@ "node": "^14.18.0 || >=16.10.0" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/convert-source-map": { "version": "1.9.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, - "node_modules/cookie": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", - "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/cookie-es": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/cookie-es/-/cookie-es-1.0.0.tgz", "integrity": "sha512-mWYvfOLrfEc996hlKcdABeIiPHUPC6DM2QYZdGGOvhOTbA3tjm2eBwqlJpoFdjC89NI4Qt6h0Pu06Mp+1Pj5OQ==" }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" - }, "node_modules/core-js-compat": { "version": "3.36.1", "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.36.1.tgz", @@ -7453,9 +7095,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { "path-key": "^3.1.0", "shebang-command": "^2.0.0", @@ -7668,6 +7310,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.8" } @@ -7704,6 +7348,8 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -7810,7 +7456,8 @@ "node_modules/ee-first": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "peer": true }, "node_modules/electron-to-chromium": { "version": "1.4.711", @@ -7819,9 +7466,10 @@ "peer": true }, "node_modules/elliptic": { - "version": "6.5.5", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.5.tgz", - "integrity": "sha512-7EjbcmUm17NQFu4Pmgmq2olYMj8nwMnpcddByChSUjArp8F5DQWcIcpriwO4ZToLNAJig0yiyjswfyGNje/ixw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", "dependencies": { "bn.js": "^4.11.9", "brorand": "^1.1.0", @@ -7852,6 +7500,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -8116,7 +7765,8 @@ "node_modules/escape-html": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "peer": true }, "node_modules/escape-string-regexp": { "version": "4.0.0", @@ -8655,6 +8305,8 @@ "version": "1.8.1", "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.6" } @@ -8873,60 +8525,6 @@ "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/express": { - "version": "4.18.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", - "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", - "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.1", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.5.0", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.2.0", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", - "proxy-addr": "~2.0.7", - "qs": "6.11.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/extension-port-stream": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/extension-port-stream/-/extension-port-stream-2.1.1.tgz", @@ -8998,9 +8596,9 @@ "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, "node_modules/fast-xml-parser": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.6.tgz", - "integrity": "sha512-M2SovcRxD4+vC493Uc2GZVcZaj66CCJhWurC4viynVSTvrpErCShNcDz1lAho6n9REQKvL/ll4A4/fw6Y9z8nw==", + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz", + "integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==", "funding": [ { "type": "github", @@ -9068,36 +8666,6 @@ "node": ">=0.10.0" } }, - "node_modules/finalhandler": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", - "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", - "dependencies": { - "debug": "2.6.9", - "encodeurl": "~1.0.2", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" - }, "node_modules/find-cache-dir": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", @@ -9175,18 +8743,12 @@ "is-callable": "^1.1.3" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.6" } @@ -9655,6 +9217,8 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "peer": true, "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -9715,17 +9279,6 @@ "@babel/runtime": "^7.23.2" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/idb-keyval": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/idb-keyval/-/idb-keyval-6.2.1.tgz", @@ -9760,9 +9313,10 @@ } }, "node_modules/image-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.1.1.tgz", - "integrity": "sha512-541xKlUw6jr/6gGuk92F+mYM5zaFAc5ahphvkqvNe2bQ6gVBkd6bfrmVJ2t4KDAfikAYZyIqTnktX3i6/aQDrQ==", + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.2.1.tgz", + "integrity": "sha512-rH+46sQJ2dlwfjfhCyNx5thzrv+dtmBIhPHk0zgRUukHzZ/kRueTJXoYYsclBaKcSMBWuGbOFXtioLpzTb5euw==", + "license": "MIT", "peer": true, "dependencies": { "queue": "6.0.2" @@ -9833,14 +9387,6 @@ "loose-envify": "^1.0.0" } }, - "node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "engines": { - "node": ">= 0.10" - } - }, "node_modules/iron-webcrypto": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/iron-webcrypto/-/iron-webcrypto-1.1.0.tgz", @@ -11119,25 +10665,12 @@ "@babel/runtime": "^7.12.5" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/memoize-one": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==", "peer": true }, - "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" - }, "node_modules/merge-options": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", @@ -11163,14 +10696,6 @@ "node": ">= 8" } }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "engines": { - "node": ">= 0.6" - } - }, "node_modules/metro": { "version": "0.80.7", "resolved": "https://registry.npmjs.org/metro/-/metro-0.80.7.tgz", @@ -11690,6 +11215,8 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "license": "MIT", + "peer": true, "bin": { "mime": "cli.js" }, @@ -11701,6 +11228,7 @@ "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -11709,6 +11237,7 @@ "version": "2.1.35", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "peer": true, "dependencies": { "mime-db": "1.52.0" }, @@ -11925,15 +11454,16 @@ } }, "node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -11951,6 +11481,7 @@ "version": "0.6.3", "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "peer": true, "engines": { "node": ">= 0.6" } @@ -12184,6 +11715,7 @@ "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "dev": true, "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -12318,6 +11850,8 @@ "version": "2.4.1", "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "peer": true, "dependencies": { "ee-first": "1.1.1" }, @@ -12491,6 +12025,7 @@ "version": "1.3.3", "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -12524,11 +12059,6 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, - "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" - }, "node_modules/path-type": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", @@ -12862,18 +12392,6 @@ "react-is": "^16.13.1" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", - "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" - }, - "engines": { - "node": ">= 0.10" - } - }, "node_modules/proxy-compare": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/proxy-compare/-/proxy-compare-2.5.1.tgz", @@ -12935,20 +12453,6 @@ "qrcode-terminal": "bin/qrcode-terminal.js" } }, - "node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/query-string": { "version": "7.1.3", "resolved": "https://registry.npmjs.org/query-string/-/query-string-7.1.3.tgz", @@ -13009,24 +12513,12 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.6" } }, - "node_modules/raw-body": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", - "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", - "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, "node_modules/react": { "version": "18.2.0", "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", @@ -13897,11 +13389,6 @@ "node": ">=10" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "node_modules/scheduler": { "version": "0.23.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", @@ -13911,17 +13398,17 @@ } }, "node_modules/secp256k1": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", - "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.1.tgz", + "integrity": "sha512-lDFs9AAIaWP9UCdtWrotXWWF9t8PWgQDcxqgAnpM9rMqxb3Oaq2J0thzPVSxBwdJgyQtkU/sYtFtbM1RSt/iYA==", "hasInstallScript": true, "dependencies": { - "elliptic": "^6.5.4", + "elliptic": "^6.5.7", "node-addon-api": "^5.0.0", "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=14.0.0" + "node": ">=18.0.0" } }, "node_modules/secp256k1/node_modules/node-addon-api": { @@ -13944,9 +13431,11 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", + "license": "MIT", + "peer": true, "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -13970,6 +13459,8 @@ "version": "2.6.9", "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "license": "MIT", + "peer": true, "dependencies": { "ms": "2.0.0" } @@ -13977,12 +13468,16 @@ "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT", + "peer": true }, "node_modules/send/node_modules/ms": { "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT", + "peer": true }, "node_modules/serialize-error": { "version": "2.1.0", @@ -13994,19 +13489,31 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", + "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", + "license": "MIT", + "peer": true, "dependencies": { - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "parseurl": "~1.3.3", - "send": "0.18.0" + "send": "0.19.0" }, "engines": { "node": ">= 0.8.0" } }, + "node_modules/serve-static/node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "peer": true, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", @@ -14045,7 +13552,9 @@ "node_modules/setprototypeof": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", - "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC", + "peer": true }, "node_modules/sha.js": { "version": "2.4.11", @@ -14108,6 +13617,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.5.tgz", "integrity": "sha512-QcgiIWV4WV7qWExbN5llt6frQB/lBven9pqliLXfGPB+K9ZYXxDozp0wLkHS24kWCm+6YXH/f0HhnObZnZOBnQ==", + "dev": true, "dependencies": { "call-bind": "^1.0.6", "es-errors": "^1.3.0", @@ -14325,6 +13835,8 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "peer": true, "engines": { "node": ">= 0.8" } @@ -14719,14 +14231,6 @@ "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", "peer": true }, - "node_modules/to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "engines": { - "node": ">=4" - } - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -14742,6 +14246,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "peer": true, "engines": { "node": ">=0.6" } @@ -14813,18 +14319,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/type-is": { - "version": "1.6.18", - "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", - "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", - "dependencies": { - "media-typer": "0.3.0", - "mime-types": "~2.1.24" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/typed-array-buffer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.1.tgz", @@ -15053,6 +14547,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "peer": true, "engines": { "node": ">= 0.8" } @@ -15279,6 +14774,7 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "peer": true, "engines": { "node": ">= 0.4.0" } @@ -15319,6 +14815,7 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "peer": true, "engines": { "node": ">= 0.8" } diff --git a/dashboard/package.json b/controlpanel/package.json similarity index 94% rename from dashboard/package.json rename to controlpanel/package.json index 3e158da0c..f43a28af1 100644 --- a/dashboard/package.json +++ b/controlpanel/package.json @@ -1,5 +1,5 @@ { - "name": "ocean-node-dashboard", + "name": "ocean-node-control-panel", "author": "Ocean Protocol Foundation", "license": "Apache-2.0", "version": "0.1.0", @@ -20,7 +20,6 @@ "classnames": "^2.5.0", "dayjs": "^1.11.10", "ethers": "^6.10.0", - "express": "^4.18.2", "micromodal": "^0.4.10", "next": "^13.5.6", "react": "^18", @@ -43,4 +42,4 @@ "prettier": "^3.1.1", "typescript": "^5" } -} +} \ No newline at end of file diff --git a/dashboard/src/.DS_Store b/controlpanel/src/.DS_Store similarity index 100% rename from dashboard/src/.DS_Store rename to controlpanel/src/.DS_Store diff --git a/dashboard/src/assets/chevron.svg b/controlpanel/src/assets/chevron.svg similarity index 100% rename from dashboard/src/assets/chevron.svg rename to controlpanel/src/assets/chevron.svg diff --git a/dashboard/src/assets/copy.svg b/controlpanel/src/assets/copy.svg similarity index 100% rename from dashboard/src/assets/copy.svg rename to controlpanel/src/assets/copy.svg diff --git a/dashboard/src/assets/download.svg b/controlpanel/src/assets/download.svg similarity index 100% rename from dashboard/src/assets/download.svg rename to controlpanel/src/assets/download.svg diff --git a/dashboard/src/assets/error.svg b/controlpanel/src/assets/error.svg similarity index 100% rename from dashboard/src/assets/error.svg rename to controlpanel/src/assets/error.svg diff --git a/dashboard/src/assets/logo-nodes.svg b/controlpanel/src/assets/logo-nodes.svg similarity index 100% rename from dashboard/src/assets/logo-nodes.svg rename to controlpanel/src/assets/logo-nodes.svg diff --git a/dashboard/src/assets/logo.svg b/controlpanel/src/assets/logo.svg similarity index 100% rename from dashboard/src/assets/logo.svg rename to controlpanel/src/assets/logo.svg diff --git a/dashboard/src/assets/no-error.svg b/controlpanel/src/assets/no-error.svg similarity index 100% rename from dashboard/src/assets/no-error.svg rename to controlpanel/src/assets/no-error.svg diff --git a/dashboard/src/assets/search-icon.svg b/controlpanel/src/assets/search-icon.svg similarity index 100% rename from dashboard/src/assets/search-icon.svg rename to controlpanel/src/assets/search-icon.svg diff --git a/dashboard/src/components/Admin/DownloadLogs.tsx b/controlpanel/src/components/Admin/DownloadLogs.tsx similarity index 100% rename from dashboard/src/components/Admin/DownloadLogs.tsx rename to controlpanel/src/components/Admin/DownloadLogs.tsx diff --git a/dashboard/src/components/Admin/ReindexChain.tsx b/controlpanel/src/components/Admin/ReindexChain.tsx similarity index 100% rename from dashboard/src/components/Admin/ReindexChain.tsx rename to controlpanel/src/components/Admin/ReindexChain.tsx diff --git a/dashboard/src/components/Admin/ReindexTransaction.tsx b/controlpanel/src/components/Admin/ReindexTransaction.tsx similarity index 100% rename from dashboard/src/components/Admin/ReindexTransaction.tsx rename to controlpanel/src/components/Admin/ReindexTransaction.tsx diff --git a/dashboard/src/components/Admin/StopNode.tsx b/controlpanel/src/components/Admin/StopNode.tsx similarity index 90% rename from dashboard/src/components/Admin/StopNode.tsx rename to controlpanel/src/components/Admin/StopNode.tsx index 8b7040269..c50fad7e2 100644 --- a/dashboard/src/components/Admin/StopNode.tsx +++ b/controlpanel/src/components/Admin/StopNode.tsx @@ -1,4 +1,4 @@ -import React, { useState } from 'react' +import { useState } from 'react' import styles from './index.module.css' import { useAdminContext } from '@context/AdminProvider' import Button from '@mui/material/Button' @@ -25,7 +25,7 @@ export default function StopNode() { }) }) } - alert('The node has been stopped. The dashboard will no longer be displayed.') + alert('The node has been stopped. The control panel will no longer be displayed.') window.location.reload() } catch (error) { console.error('error', error) diff --git a/dashboard/src/components/Admin/TransferFees.tsx b/controlpanel/src/components/Admin/TransferFees.tsx similarity index 100% rename from dashboard/src/components/Admin/TransferFees.tsx rename to controlpanel/src/components/Admin/TransferFees.tsx diff --git a/dashboard/src/components/Admin/index.module.css b/controlpanel/src/components/Admin/index.module.css similarity index 100% rename from dashboard/src/components/Admin/index.module.css rename to controlpanel/src/components/Admin/index.module.css diff --git a/dashboard/src/components/Admin/index.tsx b/controlpanel/src/components/Admin/index.tsx similarity index 91% rename from dashboard/src/components/Admin/index.tsx rename to controlpanel/src/components/Admin/index.tsx index 456c8e4b0..74b87a9c3 100644 --- a/dashboard/src/components/Admin/index.tsx +++ b/controlpanel/src/components/Admin/index.tsx @@ -1,7 +1,6 @@ -import React from 'react' import styles from './index.module.css' -import DownloadLogs from '../Admin/DownloadLogs' -import StopNode from '../Admin/StopNode' +import DownloadLogs from './DownloadLogs' +import StopNode from './StopNode' import { useAdminContext } from '@/context/AdminProvider' import { useAccount } from 'wagmi' import { ConnectButton } from '@rainbow-me/rainbowkit' diff --git a/dashboard/src/components/Dashboard/AdminAccounts.tsx b/controlpanel/src/components/ControlPanel/AdminAccounts.tsx similarity index 100% rename from dashboard/src/components/Dashboard/AdminAccounts.tsx rename to controlpanel/src/components/ControlPanel/AdminAccounts.tsx diff --git a/dashboard/src/components/Dashboard/Indexer.tsx b/controlpanel/src/components/ControlPanel/Indexer.tsx similarity index 100% rename from dashboard/src/components/Dashboard/Indexer.tsx rename to controlpanel/src/components/ControlPanel/Indexer.tsx diff --git a/dashboard/src/components/Dashboard/Menu.module.css b/controlpanel/src/components/ControlPanel/Menu.module.css similarity index 100% rename from dashboard/src/components/Dashboard/Menu.module.css rename to controlpanel/src/components/ControlPanel/Menu.module.css diff --git a/dashboard/src/components/Dashboard/Menu.tsx b/controlpanel/src/components/ControlPanel/Menu.tsx similarity index 100% rename from dashboard/src/components/Dashboard/Menu.tsx rename to controlpanel/src/components/ControlPanel/Menu.tsx diff --git a/dashboard/src/components/Dashboard/NodePlatform.tsx b/controlpanel/src/components/ControlPanel/NodePlatform.tsx similarity index 100% rename from dashboard/src/components/Dashboard/NodePlatform.tsx rename to controlpanel/src/components/ControlPanel/NodePlatform.tsx diff --git a/dashboard/src/components/Dashboard/SupportedNetworks.tsx b/controlpanel/src/components/ControlPanel/SupportedNetworks.tsx similarity index 100% rename from dashboard/src/components/Dashboard/SupportedNetworks.tsx rename to controlpanel/src/components/ControlPanel/SupportedNetworks.tsx diff --git a/dashboard/src/components/Dashboard/SupportedStorage.tsx b/controlpanel/src/components/ControlPanel/SupportedStorage.tsx similarity index 100% rename from dashboard/src/components/Dashboard/SupportedStorage.tsx rename to controlpanel/src/components/ControlPanel/SupportedStorage.tsx diff --git a/dashboard/src/components/Dashboard/index.module.css b/controlpanel/src/components/ControlPanel/index.module.css similarity index 100% rename from dashboard/src/components/Dashboard/index.module.css rename to controlpanel/src/components/ControlPanel/index.module.css diff --git a/dashboard/src/components/Dashboard/index.tsx b/controlpanel/src/components/ControlPanel/index.tsx similarity index 97% rename from dashboard/src/components/Dashboard/index.tsx rename to controlpanel/src/components/ControlPanel/index.tsx index 75714c6ef..1507ffb0b 100644 --- a/dashboard/src/components/Dashboard/index.tsx +++ b/controlpanel/src/components/ControlPanel/index.tsx @@ -1,4 +1,4 @@ -import React, { useEffect, useState } from 'react' +import { useEffect, useState } from 'react' import styles from './index.module.css' import { useAdminContext } from '@/context/AdminProvider' import AdminActions from '../Admin' @@ -13,7 +13,7 @@ import AdminAccounts from './AdminAccounts' import NodePlatform from './NodePlatform' import { Box, Typography, Divider } from '@mui/material' -export default function Dashboard() { +export default function ControlPanel() { const [data, setData] = useState() const [isLoading, setLoading] = useState(true) const [ipAddress, setIpAddress] = useState('') diff --git a/dashboard/src/components/Copy/index.module.css b/controlpanel/src/components/Copy/index.module.css similarity index 100% rename from dashboard/src/components/Copy/index.module.css rename to controlpanel/src/components/Copy/index.module.css diff --git a/dashboard/src/components/Copy/index.tsx b/controlpanel/src/components/Copy/index.tsx similarity index 100% rename from dashboard/src/components/Copy/index.tsx rename to controlpanel/src/components/Copy/index.tsx diff --git a/dashboard/src/components/ErrorCheck/index.module.css b/controlpanel/src/components/ErrorCheck/index.module.css similarity index 100% rename from dashboard/src/components/ErrorCheck/index.module.css rename to controlpanel/src/components/ErrorCheck/index.module.css diff --git a/dashboard/src/components/ErrorCheck/index.tsx b/controlpanel/src/components/ErrorCheck/index.tsx similarity index 100% rename from dashboard/src/components/ErrorCheck/index.tsx rename to controlpanel/src/components/ErrorCheck/index.tsx diff --git a/dashboard/src/components/Footer/index.tsx b/controlpanel/src/components/Footer/index.tsx similarity index 100% rename from dashboard/src/components/Footer/index.tsx rename to controlpanel/src/components/Footer/index.tsx diff --git a/dashboard/src/components/Footer/style.module.css b/controlpanel/src/components/Footer/style.module.css similarity index 100% rename from dashboard/src/components/Footer/style.module.css rename to controlpanel/src/components/Footer/style.module.css diff --git a/dashboard/src/components/IndexQueue.tsx b/controlpanel/src/components/IndexQueue.tsx similarity index 97% rename from dashboard/src/components/IndexQueue.tsx rename to controlpanel/src/components/IndexQueue.tsx index 9152095bf..ce2f21beb 100644 --- a/dashboard/src/components/IndexQueue.tsx +++ b/controlpanel/src/components/IndexQueue.tsx @@ -1,4 +1,4 @@ -import React, { useState, useEffect } from 'react' +import { useState, useEffect } from 'react' import { Table, TableBody, @@ -7,7 +7,7 @@ import { TableHead, TableRow } from '@mui/material' -import styles from './Dashboard/index.module.css' +import styles from './ControlPanel/index.module.css' import { useAdminContext } from '@/context/AdminProvider' import Alert from '@mui/material/Alert' diff --git a/dashboard/src/components/JobStatusPanel/index.tsx b/controlpanel/src/components/JobStatusPanel/index.tsx similarity index 100% rename from dashboard/src/components/JobStatusPanel/index.tsx rename to controlpanel/src/components/JobStatusPanel/index.tsx diff --git a/dashboard/src/components/Navigation/index.tsx b/controlpanel/src/components/Navigation/index.tsx similarity index 100% rename from dashboard/src/components/Navigation/index.tsx rename to controlpanel/src/components/Navigation/index.tsx diff --git a/dashboard/src/components/Navigation/style.module.css b/controlpanel/src/components/Navigation/style.module.css similarity index 100% rename from dashboard/src/components/Navigation/style.module.css rename to controlpanel/src/components/Navigation/style.module.css diff --git a/dashboard/src/components/NodeDetails/index.module.css b/controlpanel/src/components/NodeDetails/index.module.css similarity index 100% rename from dashboard/src/components/NodeDetails/index.module.css rename to controlpanel/src/components/NodeDetails/index.module.css diff --git a/dashboard/src/components/NodeDetails/index.tsx b/controlpanel/src/components/NodeDetails/index.tsx similarity index 100% rename from dashboard/src/components/NodeDetails/index.tsx rename to controlpanel/src/components/NodeDetails/index.tsx diff --git a/dashboard/src/components/NodePeers/index.tsx b/controlpanel/src/components/NodePeers/index.tsx similarity index 100% rename from dashboard/src/components/NodePeers/index.tsx rename to controlpanel/src/components/NodePeers/index.tsx diff --git a/dashboard/src/components/NodePeers/style.module.css b/controlpanel/src/components/NodePeers/style.module.css similarity index 100% rename from dashboard/src/components/NodePeers/style.module.css rename to controlpanel/src/components/NodePeers/style.module.css diff --git a/dashboard/src/components/Spinner/index.tsx b/controlpanel/src/components/Spinner/index.tsx similarity index 100% rename from dashboard/src/components/Spinner/index.tsx rename to controlpanel/src/components/Spinner/index.tsx diff --git a/dashboard/src/components/Spinner/style.module.css b/controlpanel/src/components/Spinner/style.module.css similarity index 100% rename from dashboard/src/components/Spinner/style.module.css rename to controlpanel/src/components/Spinner/style.module.css diff --git a/dashboard/src/components/Table/_styles.ts b/controlpanel/src/components/Table/_styles.ts similarity index 100% rename from dashboard/src/components/Table/_styles.ts rename to controlpanel/src/components/Table/_styles.ts diff --git a/dashboard/src/components/Table/data.ts b/controlpanel/src/components/Table/data.ts similarity index 100% rename from dashboard/src/components/Table/data.ts rename to controlpanel/src/components/Table/data.ts diff --git a/dashboard/src/components/Table/index.module.css b/controlpanel/src/components/Table/index.module.css similarity index 100% rename from dashboard/src/components/Table/index.module.css rename to controlpanel/src/components/Table/index.module.css diff --git a/dashboard/src/components/Table/index.tsx b/controlpanel/src/components/Table/index.tsx similarity index 94% rename from dashboard/src/components/Table/index.tsx rename to controlpanel/src/components/Table/index.tsx index 6b22f5528..d8d5a50e5 100644 --- a/dashboard/src/components/Table/index.tsx +++ b/controlpanel/src/components/Table/index.tsx @@ -1,4 +1,3 @@ -import React from 'react' import Image from 'next/image' import DataTable, { TableColumn } from 'react-data-table-component' @@ -39,7 +38,7 @@ export default function Table() { return (
-

Ocean Nodes Dashboard

+

Ocean Node Control Panel

- Ocean nodes - + Ocean Node Control Panel + @@ -18,7 +18,7 @@ export default function Home() {
- + {/* */}
diff --git a/dashboard/src/shared/types/JobTypes.ts b/controlpanel/src/shared/types/JobTypes.ts similarity index 100% rename from dashboard/src/shared/types/JobTypes.ts rename to controlpanel/src/shared/types/JobTypes.ts diff --git a/dashboard/src/shared/types/RowDataType.ts b/controlpanel/src/shared/types/RowDataType.ts similarity index 100% rename from dashboard/src/shared/types/RowDataType.ts rename to controlpanel/src/shared/types/RowDataType.ts diff --git a/dashboard/src/shared/types/dataTypes.ts b/controlpanel/src/shared/types/dataTypes.ts similarity index 100% rename from dashboard/src/shared/types/dataTypes.ts rename to controlpanel/src/shared/types/dataTypes.ts diff --git a/dashboard/src/shared/utils/chains.ts b/controlpanel/src/shared/utils/chains.ts similarity index 100% rename from dashboard/src/shared/utils/chains.ts rename to controlpanel/src/shared/utils/chains.ts diff --git a/dashboard/src/shared/utils/jobs.ts b/controlpanel/src/shared/utils/jobs.ts similarity index 100% rename from dashboard/src/shared/utils/jobs.ts rename to controlpanel/src/shared/utils/jobs.ts diff --git a/dashboard/src/styles/Home.module.css b/controlpanel/src/styles/Home.module.css similarity index 100% rename from dashboard/src/styles/Home.module.css rename to controlpanel/src/styles/Home.module.css diff --git a/dashboard/src/styles/globals.css b/controlpanel/src/styles/globals.css similarity index 100% rename from dashboard/src/styles/globals.css rename to controlpanel/src/styles/globals.css diff --git a/dashboard/tsconfig.json b/controlpanel/tsconfig.json similarity index 100% rename from dashboard/tsconfig.json rename to controlpanel/tsconfig.json diff --git a/dist/dashboard/404.html b/dist/controlpanel/404.html similarity index 93% rename from dist/dashboard/404.html rename to dist/controlpanel/404.html index 83df82bf5..eec1f17b7 100644 --- a/dist/dashboard/404.html +++ b/dist/controlpanel/404.html @@ -1 +1 @@ -404: This page could not be found

404

This page could not be found.

\ No newline at end of file +404: This page could not be found

404

This page could not be found.

\ No newline at end of file diff --git a/dist/dashboard/_next/static/chunks/1194.680c7fabd6caf412.js b/dist/controlpanel/_next/static/chunks/1194.680c7fabd6caf412.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1194.680c7fabd6caf412.js rename to dist/controlpanel/_next/static/chunks/1194.680c7fabd6caf412.js diff --git a/dist/dashboard/_next/static/chunks/135.67fab15ebc7d852e.js b/dist/controlpanel/_next/static/chunks/135.67fab15ebc7d852e.js similarity index 100% rename from dist/dashboard/_next/static/chunks/135.67fab15ebc7d852e.js rename to dist/controlpanel/_next/static/chunks/135.67fab15ebc7d852e.js diff --git a/dist/dashboard/_next/static/chunks/1391.a012fc4679900c0c.js b/dist/controlpanel/_next/static/chunks/1391.a012fc4679900c0c.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1391.a012fc4679900c0c.js rename to dist/controlpanel/_next/static/chunks/1391.a012fc4679900c0c.js diff --git a/dist/dashboard/_next/static/chunks/1424.c15d7e6321ca35d6.js b/dist/controlpanel/_next/static/chunks/1424.c15d7e6321ca35d6.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1424.c15d7e6321ca35d6.js rename to dist/controlpanel/_next/static/chunks/1424.c15d7e6321ca35d6.js diff --git a/dist/dashboard/_next/static/chunks/1608.ec04f07937386922.js b/dist/controlpanel/_next/static/chunks/1608.ec04f07937386922.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1608.ec04f07937386922.js rename to dist/controlpanel/_next/static/chunks/1608.ec04f07937386922.js diff --git a/dist/dashboard/_next/static/chunks/1711.ae2b84d9f5645069.js b/dist/controlpanel/_next/static/chunks/1711.ae2b84d9f5645069.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1711.ae2b84d9f5645069.js rename to dist/controlpanel/_next/static/chunks/1711.ae2b84d9f5645069.js diff --git a/dist/dashboard/_next/static/chunks/1727.af62bd633f21ee69.js b/dist/controlpanel/_next/static/chunks/1727.af62bd633f21ee69.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1727.af62bd633f21ee69.js rename to dist/controlpanel/_next/static/chunks/1727.af62bd633f21ee69.js diff --git a/dist/dashboard/_next/static/chunks/1748.f63b451fd93f590b.js b/dist/controlpanel/_next/static/chunks/1748.f63b451fd93f590b.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1748.f63b451fd93f590b.js rename to dist/controlpanel/_next/static/chunks/1748.f63b451fd93f590b.js diff --git a/dist/dashboard/_next/static/chunks/1950.c8039f3dc9bb92f5.js b/dist/controlpanel/_next/static/chunks/1950.c8039f3dc9bb92f5.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1950.c8039f3dc9bb92f5.js rename to dist/controlpanel/_next/static/chunks/1950.c8039f3dc9bb92f5.js diff --git a/dist/dashboard/_next/static/chunks/1961.e8c3dc6172d4bfaa.js b/dist/controlpanel/_next/static/chunks/1961.e8c3dc6172d4bfaa.js similarity index 100% rename from dist/dashboard/_next/static/chunks/1961.e8c3dc6172d4bfaa.js rename to dist/controlpanel/_next/static/chunks/1961.e8c3dc6172d4bfaa.js diff --git a/dist/dashboard/_next/static/chunks/2499.512d762af08bf6a6.js b/dist/controlpanel/_next/static/chunks/2499.512d762af08bf6a6.js similarity index 100% rename from dist/dashboard/_next/static/chunks/2499.512d762af08bf6a6.js rename to dist/controlpanel/_next/static/chunks/2499.512d762af08bf6a6.js diff --git a/dist/dashboard/_next/static/chunks/2604.250be1a3b8354750.js b/dist/controlpanel/_next/static/chunks/2604.250be1a3b8354750.js similarity index 100% rename from dist/dashboard/_next/static/chunks/2604.250be1a3b8354750.js rename to dist/controlpanel/_next/static/chunks/2604.250be1a3b8354750.js diff --git a/dist/dashboard/_next/static/chunks/2746.0a838d09eabc5b43.js b/dist/controlpanel/_next/static/chunks/2746.0a838d09eabc5b43.js similarity index 100% rename from dist/dashboard/_next/static/chunks/2746.0a838d09eabc5b43.js rename to dist/controlpanel/_next/static/chunks/2746.0a838d09eabc5b43.js diff --git a/dist/dashboard/_next/static/chunks/2840.7001450c4c1f4ea0.js b/dist/controlpanel/_next/static/chunks/2840.7001450c4c1f4ea0.js similarity index 100% rename from dist/dashboard/_next/static/chunks/2840.7001450c4c1f4ea0.js rename to dist/controlpanel/_next/static/chunks/2840.7001450c4c1f4ea0.js diff --git a/dist/dashboard/_next/static/chunks/2896.5ee6626961037489.js b/dist/controlpanel/_next/static/chunks/2896.5ee6626961037489.js similarity index 100% rename from dist/dashboard/_next/static/chunks/2896.5ee6626961037489.js rename to dist/controlpanel/_next/static/chunks/2896.5ee6626961037489.js diff --git a/dist/dashboard/_next/static/chunks/2898.f370a64b5af02f0b.js b/dist/controlpanel/_next/static/chunks/2898.f370a64b5af02f0b.js similarity index 100% rename from dist/dashboard/_next/static/chunks/2898.f370a64b5af02f0b.js rename to dist/controlpanel/_next/static/chunks/2898.f370a64b5af02f0b.js diff --git a/dist/dashboard/_next/static/chunks/3138.03458a939e06d647.js b/dist/controlpanel/_next/static/chunks/3138.03458a939e06d647.js similarity index 100% rename from dist/dashboard/_next/static/chunks/3138.03458a939e06d647.js rename to dist/controlpanel/_next/static/chunks/3138.03458a939e06d647.js diff --git a/dist/dashboard/_next/static/chunks/3200.07a96119d145f2e1.js b/dist/controlpanel/_next/static/chunks/3200.07a96119d145f2e1.js similarity index 100% rename from dist/dashboard/_next/static/chunks/3200.07a96119d145f2e1.js rename to dist/controlpanel/_next/static/chunks/3200.07a96119d145f2e1.js diff --git a/dist/dashboard/_next/static/chunks/3525.53072abba3ca74b8.js b/dist/controlpanel/_next/static/chunks/3525.53072abba3ca74b8.js similarity index 100% rename from dist/dashboard/_next/static/chunks/3525.53072abba3ca74b8.js rename to dist/controlpanel/_next/static/chunks/3525.53072abba3ca74b8.js diff --git a/dist/dashboard/_next/static/chunks/3688.d161b107f65da93d.js b/dist/controlpanel/_next/static/chunks/3688.d161b107f65da93d.js similarity index 100% rename from dist/dashboard/_next/static/chunks/3688.d161b107f65da93d.js rename to dist/controlpanel/_next/static/chunks/3688.d161b107f65da93d.js diff --git a/dist/dashboard/_next/static/chunks/3760.527e299df66f1ddf.js b/dist/controlpanel/_next/static/chunks/3760.527e299df66f1ddf.js similarity index 100% rename from dist/dashboard/_next/static/chunks/3760.527e299df66f1ddf.js rename to dist/controlpanel/_next/static/chunks/3760.527e299df66f1ddf.js diff --git a/dist/dashboard/_next/static/chunks/422.665eb3093c049d41.js b/dist/controlpanel/_next/static/chunks/422.665eb3093c049d41.js similarity index 100% rename from dist/dashboard/_next/static/chunks/422.665eb3093c049d41.js rename to dist/controlpanel/_next/static/chunks/422.665eb3093c049d41.js diff --git a/dist/dashboard/_next/static/chunks/4253.6be69df622e36e45.js b/dist/controlpanel/_next/static/chunks/4253.6be69df622e36e45.js similarity index 100% rename from dist/dashboard/_next/static/chunks/4253.6be69df622e36e45.js rename to dist/controlpanel/_next/static/chunks/4253.6be69df622e36e45.js diff --git a/dist/dashboard/_next/static/chunks/4419.c4f2007bfe36ec14.js b/dist/controlpanel/_next/static/chunks/4419.c4f2007bfe36ec14.js similarity index 100% rename from dist/dashboard/_next/static/chunks/4419.c4f2007bfe36ec14.js rename to dist/controlpanel/_next/static/chunks/4419.c4f2007bfe36ec14.js diff --git a/dist/dashboard/_next/static/chunks/4507.929b32e591e50f8b.js b/dist/controlpanel/_next/static/chunks/4507.929b32e591e50f8b.js similarity index 100% rename from dist/dashboard/_next/static/chunks/4507.929b32e591e50f8b.js rename to dist/controlpanel/_next/static/chunks/4507.929b32e591e50f8b.js diff --git a/dist/dashboard/_next/static/chunks/4583.205bbdd6677d7c00.js b/dist/controlpanel/_next/static/chunks/4583.205bbdd6677d7c00.js similarity index 100% rename from dist/dashboard/_next/static/chunks/4583.205bbdd6677d7c00.js rename to dist/controlpanel/_next/static/chunks/4583.205bbdd6677d7c00.js diff --git a/dist/dashboard/_next/static/chunks/499.6095a9b4c3d3fa0b.js b/dist/controlpanel/_next/static/chunks/499.6095a9b4c3d3fa0b.js similarity index 100% rename from dist/dashboard/_next/static/chunks/499.6095a9b4c3d3fa0b.js rename to dist/controlpanel/_next/static/chunks/499.6095a9b4c3d3fa0b.js diff --git a/dist/dashboard/_next/static/chunks/5119.33e08a0525159056.js b/dist/controlpanel/_next/static/chunks/5119.33e08a0525159056.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5119.33e08a0525159056.js rename to dist/controlpanel/_next/static/chunks/5119.33e08a0525159056.js diff --git a/dist/dashboard/_next/static/chunks/5488.ea86c6ce443ba3bd.js b/dist/controlpanel/_next/static/chunks/5488.ea86c6ce443ba3bd.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5488.ea86c6ce443ba3bd.js rename to dist/controlpanel/_next/static/chunks/5488.ea86c6ce443ba3bd.js diff --git a/dist/dashboard/_next/static/chunks/5515.4b5c8b150669b6f5.js b/dist/controlpanel/_next/static/chunks/5515.4b5c8b150669b6f5.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5515.4b5c8b150669b6f5.js rename to dist/controlpanel/_next/static/chunks/5515.4b5c8b150669b6f5.js diff --git a/dist/dashboard/_next/static/chunks/5679-bec633b225238aa1.js b/dist/controlpanel/_next/static/chunks/5679-bec633b225238aa1.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5679-bec633b225238aa1.js rename to dist/controlpanel/_next/static/chunks/5679-bec633b225238aa1.js diff --git a/dist/dashboard/_next/static/chunks/5710.5bdbdbf21f1c3db3.js b/dist/controlpanel/_next/static/chunks/5710.5bdbdbf21f1c3db3.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5710.5bdbdbf21f1c3db3.js rename to dist/controlpanel/_next/static/chunks/5710.5bdbdbf21f1c3db3.js diff --git a/dist/dashboard/_next/static/chunks/5806.7abe5840ceba140e.js b/dist/controlpanel/_next/static/chunks/5806.7abe5840ceba140e.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5806.7abe5840ceba140e.js rename to dist/controlpanel/_next/static/chunks/5806.7abe5840ceba140e.js diff --git a/dist/dashboard/_next/static/chunks/5811.2ad46e0bdf042ab8.js b/dist/controlpanel/_next/static/chunks/5811.2ad46e0bdf042ab8.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5811.2ad46e0bdf042ab8.js rename to dist/controlpanel/_next/static/chunks/5811.2ad46e0bdf042ab8.js diff --git a/dist/dashboard/_next/static/chunks/5850.b782d289eb0cb77f.js b/dist/controlpanel/_next/static/chunks/5850.b782d289eb0cb77f.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5850.b782d289eb0cb77f.js rename to dist/controlpanel/_next/static/chunks/5850.b782d289eb0cb77f.js diff --git a/dist/dashboard/_next/static/chunks/5883.e4477e9126daa625.js b/dist/controlpanel/_next/static/chunks/5883.e4477e9126daa625.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5883.e4477e9126daa625.js rename to dist/controlpanel/_next/static/chunks/5883.e4477e9126daa625.js diff --git a/dist/dashboard/_next/static/chunks/5939.0a433dc6f963fc41.js b/dist/controlpanel/_next/static/chunks/5939.0a433dc6f963fc41.js similarity index 100% rename from dist/dashboard/_next/static/chunks/5939.0a433dc6f963fc41.js rename to dist/controlpanel/_next/static/chunks/5939.0a433dc6f963fc41.js diff --git a/dist/dashboard/_next/static/chunks/6210.e879386a01d249b4.js b/dist/controlpanel/_next/static/chunks/6210.e879386a01d249b4.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6210.e879386a01d249b4.js rename to dist/controlpanel/_next/static/chunks/6210.e879386a01d249b4.js diff --git a/dist/dashboard/_next/static/chunks/6237.f7b1d24c812922e4.js b/dist/controlpanel/_next/static/chunks/6237.f7b1d24c812922e4.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6237.f7b1d24c812922e4.js rename to dist/controlpanel/_next/static/chunks/6237.f7b1d24c812922e4.js diff --git a/dist/dashboard/_next/static/chunks/6253.dcdff54f0dceda1f.js b/dist/controlpanel/_next/static/chunks/6253.dcdff54f0dceda1f.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6253.dcdff54f0dceda1f.js rename to dist/controlpanel/_next/static/chunks/6253.dcdff54f0dceda1f.js diff --git a/dist/dashboard/_next/static/chunks/6328.ea13afa99496d818.js b/dist/controlpanel/_next/static/chunks/6328.ea13afa99496d818.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6328.ea13afa99496d818.js rename to dist/controlpanel/_next/static/chunks/6328.ea13afa99496d818.js diff --git a/dist/dashboard/_next/static/chunks/6551.432f96462db0d036.js b/dist/controlpanel/_next/static/chunks/6551.432f96462db0d036.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6551.432f96462db0d036.js rename to dist/controlpanel/_next/static/chunks/6551.432f96462db0d036.js diff --git a/dist/dashboard/_next/static/chunks/6626.1c904d6d48510b00.js b/dist/controlpanel/_next/static/chunks/6626.1c904d6d48510b00.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6626.1c904d6d48510b00.js rename to dist/controlpanel/_next/static/chunks/6626.1c904d6d48510b00.js diff --git a/dist/dashboard/_next/static/chunks/6878.5657c32e06476a2e.js b/dist/controlpanel/_next/static/chunks/6878.5657c32e06476a2e.js similarity index 100% rename from dist/dashboard/_next/static/chunks/6878.5657c32e06476a2e.js rename to dist/controlpanel/_next/static/chunks/6878.5657c32e06476a2e.js diff --git a/dist/dashboard/_next/static/chunks/704.484bcd9e0a7f5626.js b/dist/controlpanel/_next/static/chunks/704.484bcd9e0a7f5626.js similarity index 100% rename from dist/dashboard/_next/static/chunks/704.484bcd9e0a7f5626.js rename to dist/controlpanel/_next/static/chunks/704.484bcd9e0a7f5626.js diff --git a/dist/dashboard/_next/static/chunks/7682.b0a3567fac8e0052.js b/dist/controlpanel/_next/static/chunks/7682.b0a3567fac8e0052.js similarity index 100% rename from dist/dashboard/_next/static/chunks/7682.b0a3567fac8e0052.js rename to dist/controlpanel/_next/static/chunks/7682.b0a3567fac8e0052.js diff --git a/dist/dashboard/_next/static/chunks/794.f18da82915d63734.js b/dist/controlpanel/_next/static/chunks/794.f18da82915d63734.js similarity index 100% rename from dist/dashboard/_next/static/chunks/794.f18da82915d63734.js rename to dist/controlpanel/_next/static/chunks/794.f18da82915d63734.js diff --git a/dist/dashboard/_next/static/chunks/8137.d6c500ddcf42e542.js b/dist/controlpanel/_next/static/chunks/8137.d6c500ddcf42e542.js similarity index 100% rename from dist/dashboard/_next/static/chunks/8137.d6c500ddcf42e542.js rename to dist/controlpanel/_next/static/chunks/8137.d6c500ddcf42e542.js diff --git a/dist/dashboard/_next/static/chunks/8366.656bbd943f76fa86.js b/dist/controlpanel/_next/static/chunks/8366.656bbd943f76fa86.js similarity index 100% rename from dist/dashboard/_next/static/chunks/8366.656bbd943f76fa86.js rename to dist/controlpanel/_next/static/chunks/8366.656bbd943f76fa86.js diff --git a/dist/dashboard/_next/static/chunks/8881.8c985300b37d631a.js b/dist/controlpanel/_next/static/chunks/8881.8c985300b37d631a.js similarity index 100% rename from dist/dashboard/_next/static/chunks/8881.8c985300b37d631a.js rename to dist/controlpanel/_next/static/chunks/8881.8c985300b37d631a.js diff --git a/dist/dashboard/_next/static/chunks/8906.7becb64cf75ab6af.js b/dist/controlpanel/_next/static/chunks/8906.7becb64cf75ab6af.js similarity index 100% rename from dist/dashboard/_next/static/chunks/8906.7becb64cf75ab6af.js rename to dist/controlpanel/_next/static/chunks/8906.7becb64cf75ab6af.js diff --git a/dist/dashboard/_next/static/chunks/8989.5d8eeb3ff417836a.js b/dist/controlpanel/_next/static/chunks/8989.5d8eeb3ff417836a.js similarity index 100% rename from dist/dashboard/_next/static/chunks/8989.5d8eeb3ff417836a.js rename to dist/controlpanel/_next/static/chunks/8989.5d8eeb3ff417836a.js diff --git a/dist/dashboard/_next/static/chunks/9212.79924379b5549586.js b/dist/controlpanel/_next/static/chunks/9212.79924379b5549586.js similarity index 100% rename from dist/dashboard/_next/static/chunks/9212.79924379b5549586.js rename to dist/controlpanel/_next/static/chunks/9212.79924379b5549586.js diff --git a/dist/dashboard/_next/static/chunks/9223.882cd6b61a640a13.js b/dist/controlpanel/_next/static/chunks/9223.882cd6b61a640a13.js similarity index 100% rename from dist/dashboard/_next/static/chunks/9223.882cd6b61a640a13.js rename to dist/controlpanel/_next/static/chunks/9223.882cd6b61a640a13.js diff --git a/dist/dashboard/_next/static/chunks/934.405a73de74b58e27.js b/dist/controlpanel/_next/static/chunks/934.405a73de74b58e27.js similarity index 100% rename from dist/dashboard/_next/static/chunks/934.405a73de74b58e27.js rename to dist/controlpanel/_next/static/chunks/934.405a73de74b58e27.js diff --git a/dist/dashboard/_next/static/chunks/9343.a7f54a99eddb02df.js b/dist/controlpanel/_next/static/chunks/9343.a7f54a99eddb02df.js similarity index 100% rename from dist/dashboard/_next/static/chunks/9343.a7f54a99eddb02df.js rename to dist/controlpanel/_next/static/chunks/9343.a7f54a99eddb02df.js diff --git a/dist/dashboard/_next/static/chunks/9600.5accbcbb008d261e.js b/dist/controlpanel/_next/static/chunks/9600.5accbcbb008d261e.js similarity index 100% rename from dist/dashboard/_next/static/chunks/9600.5accbcbb008d261e.js rename to dist/controlpanel/_next/static/chunks/9600.5accbcbb008d261e.js diff --git a/dist/dashboard/_next/static/chunks/9941.44044767831d9eb0.js b/dist/controlpanel/_next/static/chunks/9941.44044767831d9eb0.js similarity index 100% rename from dist/dashboard/_next/static/chunks/9941.44044767831d9eb0.js rename to dist/controlpanel/_next/static/chunks/9941.44044767831d9eb0.js diff --git a/dist/dashboard/_next/static/chunks/framework-ca706bf673a13738.js b/dist/controlpanel/_next/static/chunks/framework-ca706bf673a13738.js similarity index 100% rename from dist/dashboard/_next/static/chunks/framework-ca706bf673a13738.js rename to dist/controlpanel/_next/static/chunks/framework-ca706bf673a13738.js diff --git a/dist/dashboard/_next/static/chunks/main-66d85fc6f7952338.js b/dist/controlpanel/_next/static/chunks/main-66d85fc6f7952338.js similarity index 100% rename from dist/dashboard/_next/static/chunks/main-66d85fc6f7952338.js rename to dist/controlpanel/_next/static/chunks/main-66d85fc6f7952338.js diff --git a/dist/dashboard/_next/static/chunks/pages/_app-8a605b014f26ab32.js b/dist/controlpanel/_next/static/chunks/pages/_app-d357969f021822f1.js similarity index 90% rename from dist/dashboard/_next/static/chunks/pages/_app-8a605b014f26ab32.js rename to dist/controlpanel/_next/static/chunks/pages/_app-d357969f021822f1.js index 3cd53e612..50fd30975 100644 --- a/dist/dashboard/_next/static/chunks/pages/_app-8a605b014f26ab32.js +++ b/dist/controlpanel/_next/static/chunks/pages/_app-d357969f021822f1.js @@ -1,4 +1,4 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{65987:function(e){"use strict";var t={single_source_shortest_paths:function(e,n,o){var i,s,l,c,u,d,p,f={},m={};m[n]=0;var b=t.PriorityQueue.make();for(b.push(n,0);!b.empty();)for(l in s=(i=b.pop()).value,c=i.cost,u=e[s]||{})u.hasOwnProperty(l)&&(d=c+u[l],p=m[l],(void 0===m[l]||p>d)&&(m[l]=d,b.push(l,d),f[l]=s));if(void 0!==o&&void 0===m[o])throw Error(["Could not find a path from ",n," to ",o,"."].join(""));return f},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],o=t;o;)n.push(o),e[o],o=e[o];return n.reverse(),n},find_path:function(e,n,o){var i=t.single_source_shortest_paths(e,n,o);return t.extract_shortest_path_from_predecessor_list(i,o)},PriorityQueue:{make:function(e){var n,o=t.PriorityQueue,i={};for(n in e=e||{},o)o.hasOwnProperty(n)&&(i[n]=o[n]);return i.queue=[],i.sorter=e.sorter||o.default_sorter,i},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){this.queue.push({value:e,cost:t}),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};e.exports=t},62378:function(e){"use strict";e.exports=function(e){for(var t=[],n=e.length,o=0;o=55296&&i<=56319&&n>o+1){var s=e.charCodeAt(o+1);s>=56320&&s<=57343&&(i=(i-55296)*1024+s-56320+65536,o+=1)}if(i<128){t.push(i);continue}if(i<2048){t.push(i>>6|192),t.push(63&i|128);continue}if(i<55296||i>=57344&&i<65536){t.push(i>>12|224),t.push(i>>6&63|128),t.push(63&i|128);continue}if(i>=65536&&i<=1114111){t.push(i>>18|240),t.push(i>>12&63|128),t.push(i>>6&63|128),t.push(63&i|128);continue}t.push(239,191,189)}return new Uint8Array(t).buffer}},26729:function(e){"use strict";var t=Object.prototype.hasOwnProperty,n="~";function Events(){}function EE(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function addListener(e,t,o,i,s){if("function"!=typeof o)throw TypeError("The listener must be a function");var l=new EE(o,i||e,s),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],l]:e._events[c].push(l):(e._events[c]=l,e._eventsCount++),e}function clearEvent(e,t){0==--e._eventsCount?e._events=new Events:delete e._events[t]}function EventEmitter(){this._events=new Events,this._eventsCount=0}Object.create&&(Events.prototype=Object.create(null),new Events().__proto__||(n=!1)),EventEmitter.prototype.eventNames=function(){var e,o,i=[];if(0===this._eventsCount)return i;for(o in e=this._events)t.call(e,o)&&i.push(n?o.slice(1):o);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},EventEmitter.prototype.listeners=function(e){var t=n?n+e:e,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var i=0,s=o.length,l=Array(s);ie.trim());for(let n=0;n>4]+t[15&e[o]];return n}if("object"==typeof e&&"function"==typeof e.toJSON)return stringify(e.toJSON());switch(typeof e){case"boolean":case"symbol":case"number":return e.toString();case"bigint":return BigInt(e).toString();case"string":return JSON.stringify(e);case"object":{let t=Object.keys(e);return t.sort(),"{ "+t.map(t=>`${stringify(t)}: ${stringify(e[t])}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function errors_assert(e,t,n,o){if(!e)throw function(e,t,n){let o,i=e;{let o=[];if(n){if("message"in n||"code"in n||"name"in n)throw Error(`value will overwrite populated values: ${stringify(n)}`);for(let e in n){if("shortMessage"===e)continue;let t=n[e];o.push(e+"="+stringify(t))}}o.push(`code=${t}`),o.push("version=6.11.1"),o.length&&(e+=" ("+o.join(", ")+")")}switch(t){case"INVALID_ARGUMENT":o=TypeError(e);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":o=RangeError(e);break;default:o=Error(e)}return defineProperties(o,{code:t}),n&&Object.assign(o,n),null==o.shortMessage&&defineProperties(o,{shortMessage:i}),o}(t,n,o)}function assertArgument(e,t,n,o){errors_assert(e,t,"INVALID_ARGUMENT",{argument:n,value:o})}let u=["NFD","NFC","NFKD","NFKC"].reduce((e,t)=>{try{if("test"!=="test".normalize(t))throw Error("bad");if("NFD"===t){let e=String.fromCharCode(233).normalize("NFD"),t=String.fromCharCode(101,769);if(e!==t)throw Error("broken")}e.push(t)}catch(e){}return e},[]);function _getBytes(e,t,n){if(e instanceof Uint8Array)return n?new Uint8Array(e):e;if("string"==typeof e&&e.match(/^0x([0-9a-f][0-9a-f])*$/i)){let t=new Uint8Array((e.length-2)/2),n=2;for(let o=0;o>4]+d[15&o]}return n}function concat(e){return"0x"+e.map(e=>data_hexlify(e).substring(2)).join("")}function dataLength(e){return isHexString(e,!0)?(e.length-2)/2:data_getBytes(e).length}let p=!1,_keccak256=function(e){return(0,c.fr)(e)},f=_keccak256;function keccak256(e){let t=data_getBytes(e,"data");return data_hexlify(f(t))}keccak256._=_keccak256,keccak256.lock=function(){p=!0},keccak256.register=function(e){if(p)throw TypeError("keccak256 is locked");f=e},Object.freeze(keccak256);let m=BigInt(0),b=BigInt(36);function getChecksumAddress(e){e=e.toLowerCase();let t=e.substring(2).split(""),n=new Uint8Array(40);for(let e=0;e<40;e++)n[e]=t[e].charCodeAt(0);let o=data_getBytes(keccak256(n));for(let e=0;e<40;e+=2)o[e>>1]>>4>=8&&(t[e]=t[e].toUpperCase()),(15&o[e>>1])>=8&&(t[e+1]=t[e+1].toUpperCase());return"0x"+t.join("")}let g={};for(let e=0;e<10;e++)g[String(e)]=String(e);for(let e=0;e<26;e++)g[String.fromCharCode(65+e)]=String(10+e);let y=function(){let e={};for(let t=0;t<36;t++){let n="0123456789abcdefghijklmnopqrstuvwxyz"[t];e[n]=BigInt(t)}return e}();var v=n(11606),w=n(27499);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */let C=BigInt(0),E=BigInt(1),x=BigInt(2),A=BigInt(3),k=BigInt(4),B=BigInt(5),S=BigInt(8);function modular_mod(e,t){let n=e%t;return n>=C?n:t+n}function pow2(e,t,n){let o=e;for(;t-- >C;)o*=o,o%=n;return o}function invert(e,t){if(e===C||t<=C)throw Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=modular_mod(e,t),o=t,i=C,s=E,l=E,c=C;for(;n!==C;){let e=o/n,t=o%n,u=i-l*e,d=s-c*e;o=n,n=t,i=l,s=c,l=u,c=d}let u=o;if(u!==E)throw Error("invert: does not exist");return modular_mod(i,t)}BigInt(9),BigInt(16);let I=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function nLength(e,t){let n=void 0!==t?t:e.toString(2).length;return{nBitLength:n,nByteLength:Math.ceil(n/8)}}function getFieldBytesLength(e){if("bigint"!=typeof e)throw Error("field order must be bigint");let t=e.toString(2).length;return Math.ceil(t/8)}function getMinHashLength(e){let t=getFieldBytesLength(e);return t+Math.ceil(t/2)}var j=n(93527),T=n(66409);let HMAC=class HMAC extends T.kb{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,(0,j.vp)(e);let n=(0,T.O0)(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,i=new Uint8Array(o);i.set(n.length>o?e.create().update(n).digest():n);for(let e=0;enew HMAC(e,t).update(n).digest();hmac.create=(e,t)=>new HMAC(e,t);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */let P=BigInt(0),M=BigInt(1);function validateBasic(e){return!function(e){let t=I.reduce((e,t)=>(e[t]="function",e),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"});(0,w.FF)(e,t)}(e.Fp),(0,w.FF)(e,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...nLength(e.n,e.nBitLength),...e,p:e.Fp.ORDER})}let{bytesToNumberBE:O,hexToBytes:R}=w,U={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(e){let{Err:t}=U;if(e.length<2||2!==e[0])throw new t("Invalid signature integer tag");let n=e[1],o=e.subarray(2,n+2);if(!n||o.length!==n)throw new t("Invalid signature integer: wrong length");if(128&o[0])throw new t("Invalid signature integer: negative");if(0===o[0]&&!(128&o[1]))throw new t("Invalid signature integer: unnecessary leading zero");return{d:O(o),l:e.subarray(n+2)}},toSig(e){let{Err:t}=U,n="string"==typeof e?R(e):e;if(!(n instanceof Uint8Array))throw Error("ui8a expected");let o=n.length;if(o<2||48!=n[0])throw new t("Invalid signature tag");if(n[1]!==o-2)throw new t("Invalid signature: incorrect length");let{d:i,l:s}=U._parseInt(n.subarray(2)),{d:l,l:c}=U._parseInt(s);if(c.length)throw new t("Invalid signature: left bytes after parsing");return{r:i,s:l}},hexFromSig(e){let slice=e=>8&Number.parseInt(e[0],16)?"00"+e:e,h=e=>{let t=e.toString(16);return 1&t.length?`0${t}`:t},t=slice(h(e.s)),n=slice(h(e.r)),o=t.length/2,i=n.length/2,s=h(o),l=h(i);return`30${h(i+o+4)}02${l}${n}02${s}${t}`}},F=BigInt(0),N=BigInt(1),D=(BigInt(2),BigInt(3));BigInt(4);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */let _=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),L=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),z=BigInt(1),q=BigInt(2),divNearest=(e,t)=>(e+t/q)/t,G=function(e,t,n=!1,o={}){if(e<=C)throw Error(`Expected Field ORDER > 0, got ${e}`);let{nBitLength:i,nByteLength:s}=nLength(e,t);if(s>2048)throw Error("Field lengths over 2048 bytes are not supported");let l=function(e){if(e%k===A){let t=(e+E)/k;return function(e,n){let o=e.pow(n,t);if(!e.eql(e.sqr(o),n))throw Error("Cannot find square root");return o}}if(e%S===B){let t=(e-B)/S;return function(e,n){let o=e.mul(n,x),i=e.pow(o,t),s=e.mul(n,i),l=e.mul(e.mul(s,x),i),c=e.mul(s,e.sub(l,e.ONE));if(!e.eql(e.sqr(c),n))throw Error("Cannot find square root");return c}}return function(e){let t,n,o;let i=(e-E)/x;for(t=e-E,n=0;t%x===C;t/=x,n++);for(o=x;o 0");if(n===E)return C;let o=E;for(;t>C;)t&E&&(o=o*e%n),e=e*e%n,t>>=E;return o}(o,i,e)!==e-E;o++);if(1===n){let t=(e+E)/k;return function(e,n){let o=e.pow(n,t);if(!e.eql(e.sqr(o),n))throw Error("Cannot find square root");return o}}let s=(t+E)/x;return function(e,l){if(e.pow(l,i)===e.neg(e.ONE))throw Error("Cannot find square root");let c=n,u=e.pow(e.mul(e.ONE,o),t),d=e.pow(l,s),p=e.pow(l,t);for(;!e.eql(p,e.ONE);){if(e.eql(p,e.ZERO))return e.ZERO;let t=1;for(let n=e.sqr(p);tmodular_mod(t,e),isValid:t=>{if("bigint"!=typeof t)throw Error(`Invalid field element: expected bigint, got ${typeof t}`);return C<=t&&te===C,isOdd:e=>(e&E)===E,neg:t=>modular_mod(-t,e),eql:(e,t)=>e===t,sqr:t=>modular_mod(t*t,e),add:(t,n)=>modular_mod(t+n,e),sub:(t,n)=>modular_mod(t-n,e),mul:(t,n)=>modular_mod(t*n,e),pow:(e,t)=>(function(e,t,n){if(n 0");if(n===C)return e.ONE;if(n===E)return t;let o=e.ONE,i=t;for(;n>C;)n&E&&(o=e.mul(o,i)),i=e.sqr(i),n>>=E;return o})(c,e,t),div:(t,n)=>modular_mod(t*invert(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>invert(t,e),sqrt:o.sqrt||(e=>l(c,e)),invertBatch:e=>(function(e,t){let n=Array(t.length),o=t.reduce((t,o,i)=>e.is0(o)?t:(n[i]=t,e.mul(t,o)),e.ONE),i=e.inv(o);return t.reduceRight((t,o,i)=>e.is0(o)?t:(n[i]=e.mul(t,n[i]),e.mul(t,o)),i),n})(c,e),cmov:(e,t,n)=>n?t:e,toBytes:e=>n?(0,w.S5)(e,s):(0,w.tL)(e,s),fromBytes:e=>{if(e.length!==s)throw Error(`Fp.fromBytes: expected ${s}, got ${e.length}`);return n?(0,w.ty)(e):(0,w.bytesToNumberBE)(e)}});return Object.freeze(c)}(_,void 0,void 0,{sqrt:function(e){let t=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),l=BigInt(44),c=BigInt(88),u=e*e*e%_,d=u*u*e%_,p=pow2(d,t,_)*d%_,f=pow2(p,t,_)*d%_,m=pow2(f,q,_)*u%_,b=pow2(m,o,_)*m%_,g=pow2(b,i,_)*b%_,y=pow2(g,l,_)*g%_,v=pow2(y,c,_)*y%_,w=pow2(v,l,_)*g%_,C=pow2(w,t,_)*d%_,E=pow2(C,s,_)*b%_,x=pow2(E,n,_)*u%_,A=pow2(x,q,_);if(!G.eql(G.sqr(A),e))throw Error("Cannot find square root");return A}}),W=function(e,t){let create=t=>(function(e){let t=function(e){let t=validateBasic(e);return w.FF(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}(e),{Fp:n,n:o}=t,i=n.BYTES+1,s=2*n.BYTES+1;function modN(e){return modular_mod(e,o)}let{ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:u,isWithinCurveOrder:d}=function(e){let t=/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function(e){let t=validateBasic(e);w.FF(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:n,Fp:o,a:i}=t;if(n){if(!o.eql(i,o.ZERO))throw Error("Endomorphism can only be defined for Koblitz curves that have a=0");if("object"!=typeof n||"bigint"!=typeof n.beta||"function"!=typeof n.splitScalar)throw Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}(e),{Fp:n}=t,o=t.toBytes||((e,t,o)=>{let i=t.toAffine();return w.eV(Uint8Array.from([4]),n.toBytes(i.x),n.toBytes(i.y))}),i=t.fromBytes||(e=>{let t=e.subarray(1),o=n.fromBytes(t.subarray(0,n.BYTES)),i=n.fromBytes(t.subarray(n.BYTES,2*n.BYTES));return{x:o,y:i}});function weierstrassEquation(e){let{a:o,b:i}=t,s=n.sqr(e),l=n.mul(s,e);return n.add(n.add(l,n.mul(e,o)),i)}if(!n.eql(n.sqr(t.Gy),weierstrassEquation(t.Gx)))throw Error("bad generator point: equation left != right");function isWithinCurveOrder(e){return"bigint"==typeof e&&Fn.eql(e,n.ZERO);return is0(t)&&is0(o)?Point.ZERO:new Point(t,o,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){let t=n.invertBatch(e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(Point.fromAffine)}static fromHex(e){let t=Point.fromAffine(i((0,w.ql)("pointHex",e)));return t.assertValidity(),t}static fromPrivateKey(e){return Point.BASE.multiply(normPrivateKeyToScalar(e))}_setWindowSize(e){this._WINDOW_SIZE=e,s.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!n.is0(this.py))return;throw Error("bad point: ZERO")}let{x:e,y:o}=this.toAffine();if(!n.isValid(e)||!n.isValid(o))throw Error("bad point: x or y not FE");let i=n.sqr(o),s=weierstrassEquation(e);if(!n.eql(i,s))throw Error("bad point: equation left != right");if(!this.isTorsionFree())throw Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:e}=this.toAffine();if(n.isOdd)return!n.isOdd(e);throw Error("Field doesn't support isOdd")}equals(e){assertPrjPoint(e);let{px:t,py:o,pz:i}=this,{px:s,py:l,pz:c}=e,u=n.eql(n.mul(t,c),n.mul(s,i)),d=n.eql(n.mul(o,c),n.mul(l,i));return u&&d}negate(){return new Point(this.px,n.neg(this.py),this.pz)}double(){let{a:e,b:o}=t,i=n.mul(o,D),{px:s,py:l,pz:c}=this,u=n.ZERO,d=n.ZERO,p=n.ZERO,f=n.mul(s,s),m=n.mul(l,l),b=n.mul(c,c),g=n.mul(s,l);return g=n.add(g,g),p=n.mul(s,c),p=n.add(p,p),u=n.mul(e,p),d=n.mul(i,b),d=n.add(u,d),u=n.sub(m,d),d=n.add(m,d),d=n.mul(u,d),u=n.mul(g,u),p=n.mul(i,p),b=n.mul(e,b),g=n.sub(f,b),g=n.mul(e,g),g=n.add(g,p),p=n.add(f,f),f=n.add(p,f),f=n.add(f,b),f=n.mul(f,g),d=n.add(d,f),b=n.mul(l,c),b=n.add(b,b),f=n.mul(b,g),u=n.sub(u,f),p=n.mul(b,m),p=n.add(p,p),p=n.add(p,p),new Point(u,d,p)}add(e){assertPrjPoint(e);let{px:o,py:i,pz:s}=this,{px:l,py:c,pz:u}=e,d=n.ZERO,p=n.ZERO,f=n.ZERO,m=t.a,b=n.mul(t.b,D),g=n.mul(o,l),y=n.mul(i,c),v=n.mul(s,u),w=n.add(o,i),C=n.add(l,c);w=n.mul(w,C),C=n.add(g,y),w=n.sub(w,C),C=n.add(o,s);let E=n.add(l,u);return C=n.mul(C,E),E=n.add(g,v),C=n.sub(C,E),E=n.add(i,s),d=n.add(c,u),E=n.mul(E,d),d=n.add(y,v),E=n.sub(E,d),f=n.mul(m,C),d=n.mul(b,v),f=n.add(d,f),d=n.sub(y,f),f=n.add(y,f),p=n.mul(d,f),y=n.add(g,g),y=n.add(y,g),v=n.mul(m,v),C=n.mul(b,C),y=n.add(y,v),v=n.sub(g,v),v=n.mul(m,v),C=n.add(C,v),g=n.mul(y,C),p=n.add(p,g),g=n.mul(E,C),d=n.mul(w,d),d=n.sub(d,g),g=n.mul(w,y),f=n.mul(E,f),f=n.add(f,g),new Point(d,p,f)}subtract(e){return this.add(e.negate())}is0(){return this.equals(Point.ZERO)}wNAF(e){return c.wNAFCached(this,s,e,e=>{let t=n.invertBatch(e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(Point.fromAffine)})}multiplyUnsafe(e){let o=Point.ZERO;if(e===F)return o;if(assertGE(e),e===N)return this;let{endo:i}=t;if(!i)return c.unsafeLadder(this,e);let{k1neg:s,k1:l,k2neg:u,k2:d}=i.splitScalar(e),p=o,f=o,m=this;for(;l>F||d>F;)l&N&&(p=p.add(m)),d&N&&(f=f.add(m)),m=m.double(),l>>=N,d>>=N;return s&&(p=p.negate()),u&&(f=f.negate()),f=new Point(n.mul(f.px,i.beta),f.py,f.pz),p.add(f)}multiply(e){let o,i;assertGE(e);let{endo:s}=t;if(s){let{k1neg:t,k1:l,k2neg:u,k2:d}=s.splitScalar(e),{p:p,f:f}=this.wNAF(l),{p:m,f:b}=this.wNAF(d);p=c.constTimeNegate(t,p),m=c.constTimeNegate(u,m),m=new Point(n.mul(m.px,s.beta),m.py,m.pz),o=p.add(m),i=f.add(b)}else{let{p:t,f:n}=this.wNAF(e);o=t,i=n}return Point.normalizeZ([o,i])[0]}multiplyAndAddUnsafe(e,t,n){let o=Point.BASE,mul=(e,t)=>t!==F&&t!==N&&e.equals(o)?e.multiply(t):e.multiplyUnsafe(t),i=mul(this,t).add(mul(e,n));return i.is0()?void 0:i}toAffine(e){let{px:t,py:o,pz:i}=this,s=this.is0();null==e&&(e=s?n.ONE:n.inv(i));let l=n.mul(t,e),c=n.mul(o,e),u=n.mul(i,e);if(s)return{x:n.ZERO,y:n.ZERO};if(!n.eql(u,n.ONE))throw Error("invZ was invalid");return{x:l,y:c}}isTorsionFree(){let{h:e,isTorsionFree:n}=t;if(e===N)return!0;if(n)return n(Point,this);throw Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:e,clearCofactor:n}=t;return e===N?this:n?n(Point,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return this.assertValidity(),o(Point,this,e)}toHex(e=!0){return w.ci(this.toRawBytes(e))}};Point.BASE=new Point(t.Gx,t.Gy,n.ONE),Point.ZERO=new Point(n.ZERO,n.ONE,n.ZERO);let l=t.nBitLength,c=function(e,t){let constTimeNegate=(e,t)=>{let n=t.negate();return e?n:t},opts=e=>({windows:Math.ceil(t/e)+1,windowSize:2**(e-1)});return{constTimeNegate,unsafeLadder(t,n){let o=e.ZERO,i=t;for(;n>P;)n&M&&(o=o.add(i)),i=i.double(),n>>=M;return o},precomputeWindow(e,t){let{windows:n,windowSize:o}=opts(t),i=[],s=e,l=s;for(let e=0;e>=p,i>s&&(i-=d,o+=M);let f=t+Math.abs(i)-1,m=e%2!=0,b=i<0;0===i?c=c.add(constTimeNegate(m,n[t])):l=l.add(constTimeNegate(b,n[f]))}return{p:l,f:c}},wNAFCached(e,t,n,o){let i=e._WINDOW_SIZE||1,s=t.get(e);return s||(s=this.precomputeWindow(e,i),1!==i&&t.set(e,o(s))),this.wNAF(i,s,n)}}}(Point,t.endo?Math.ceil(l/2):l);return{CURVE:t,ProjectivePoint:Point,normPrivateKeyToScalar,weierstrassEquation,isWithinCurveOrder}}({...t,toBytes(e,t,o){let i=t.toAffine(),s=n.toBytes(i.x),l=w.eV;return o?l(Uint8Array.from([t.hasEvenY()?2:3]),s):l(Uint8Array.from([4]),s,n.toBytes(i.y))},fromBytes(e){let t=e.length,o=e[0],l=e.subarray(1);if(t===i&&(2===o||3===o)){let e=w.bytesToNumberBE(l);if(!(Fw.ci(w.tL(e,t.nByteLength));function isBiggerThanHalfOrder(e){let t=o>>N;return e>t}let slcNum=(e,t,n)=>w.bytesToNumberBE(e.slice(t,n));let Signature=class Signature{constructor(e,t,n){this.r=e,this.s=t,this.recovery=n,this.assertValidity()}static fromCompact(e){let n=t.nByteLength;return e=(0,w.ql)("compactSignature",e,2*n),new Signature(slcNum(e,0,n),slcNum(e,n,2*n))}static fromDER(e){let{r:t,s:n}=U.toSig((0,w.ql)("DER",e));return new Signature(t,n)}assertValidity(){if(!d(this.r))throw Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw Error("s must be 0 < s < CURVE.n")}addRecoveryBit(e){return new Signature(this.r,this.s,e)}recoverPublicKey(e){let{r:i,s,recovery:c}=this,u=f((0,w.ql)("msgHash",e));if(null==c||![0,1,2,3].includes(c))throw Error("recovery id invalid");let d=2===c||3===c?i+t.n:i;if(d>=n.ORDER)throw Error("recovery id 2 or 3 invalid");let p=(1&c)==0?"02":"03",m=l.fromHex(p+numToNByteStr(d)),b=invert(d,o),g=modN(-u*b),y=modN(s*b),v=l.BASE.multiplyAndAddUnsafe(m,g,y);if(!v)throw Error("point at infinify");return v.assertValidity(),v}hasHighS(){return isBiggerThanHalfOrder(this.s)}normalizeS(){return this.hasHighS()?new Signature(this.r,modN(-this.s),this.recovery):this}toDERRawBytes(){return w.hexToBytes(this.toDERHex())}toDERHex(){return U.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return w.hexToBytes(this.toCompactHex())}toCompactHex(){return numToNByteStr(this.r)+numToNByteStr(this.s)}};function isProbPub(e){let t=e instanceof Uint8Array,n="string"==typeof e,o=(t||n)&&e.length;return t?o===i||o===s:n?o===2*i||o===2*s:e instanceof l}let p=t.bits2int||function(e){let n=w.bytesToNumberBE(e),o=8*e.length-t.nBitLength;return o>0?n>>BigInt(o):n},f=t.bits2int_modN||function(e){return modN(p(e))},m=w.dQ(t.nBitLength);function int2octets(e){if("bigint"!=typeof e)throw Error("bigint expected");if(!(F<=e&&ee in s))throw Error("sign() legacy options not supported");let{hash:u,randomBytes:m}=t,{lowS:g,prehash:y,extraEntropy:v}=s;null==g&&(g=!0),e=(0,w.ql)("msgHash",e),y&&(e=(0,w.ql)("prehashed msgHash",u(e)));let C=f(e),E=c(i),x=[int2octets(E),int2octets(C)];if(null!=v){let e=!0===v?m(n.BYTES):v;x.push((0,w.ql)("extraEntropy",e))}let A=w.eV(...x);return{seed:A,k2sig:function(e){let t=p(e);if(!d(t))return;let n=invert(t,o),i=l.BASE.multiply(t).toAffine(),s=modN(i.x);if(s===F)return;let c=modN(n*modN(C+s*E));if(c===F)return;let u=(i.x===s?0:2)|Number(i.y&N),f=c;return g&&isBiggerThanHalfOrder(c)&&(f=isBiggerThanHalfOrder(c)?modN(-c):c,u^=1),new Signature(s,f,u)}}}(e,i,s),g=w.n$(t.hash.outputLen,t.nByteLength,t.hmac);return g(u,m)},verify:function(e,n,i,s=g){let c,u;if(n=(0,w.ql)("msgHash",n),i=(0,w.ql)("publicKey",i),"strict"in s)throw Error("options.strict was renamed to lowS");let{lowS:d,prehash:p}=s;try{if("string"==typeof e||e instanceof Uint8Array)try{u=Signature.fromDER(e)}catch(t){if(!(t instanceof U.Err))throw t;u=Signature.fromCompact(e)}else if("object"==typeof e&&"bigint"==typeof e.r&&"bigint"==typeof e.s){let{r:t,s:n}=e;u=new Signature(t,n)}else throw Error("PARSE");c=l.fromHex(i)}catch(e){if("PARSE"===e.message)throw Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(d&&u.hasHighS())return!1;p&&(n=t.hash(n));let{r:m,s:b}=u,y=f(n),v=invert(b,o),C=modN(y*v),E=modN(m*v),x=l.BASE.multiplyAndAddUnsafe(c,C,E)?.toAffine();if(!x)return!1;let A=modN(x.x);return A===m},ProjectivePoint:l,Signature,utils:{isValidPrivateKey(e){try{return c(e),!0}catch(e){return!1}},normPrivateKeyToScalar:c,randomPrivateKey:()=>{let e=getMinHashLength(t.n);return function(e,t,n=!1){let o=e.length,i=getFieldBytesLength(t),s=getMinHashLength(t);if(o<16||o1024)throw Error(`expected ${s}-1024 bytes of input, got ${o}`);let l=n?(0,w.bytesToNumberBE)(e):(0,w.ty)(e),c=modular_mod(l,t-E)+E;return n?(0,w.S5)(c,i):(0,w.tL)(c,i)}(t.randomBytes(e),t.n)},precompute:(e=8,t=l.BASE)=>(t._setWindowSize(e),t.multiply(BigInt(3)),t)}}})({...e,hash:t,hmac:(e,...n)=>hmac(t,e,(0,T.eV)(...n)),randomBytes:T.O6});return Object.freeze({...create(t),create})}({a:BigInt(0),b:BigInt(7),Fp:G,n:L,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:e=>{let t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-z*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=BigInt("0x100000000000000000000000000000000"),s=divNearest(t*e,L),l=divNearest(-n*e,L),c=modular_mod(e-s*t-l*o,L),u=modular_mod(-s*n-l*t,L),d=c>i,p=u>i;if(d&&(c=L-c),p&&(u=L-u),c>i||u>i)throw Error("splitScalar: Endomorphism failed, k="+e);return{k1neg:d,k1:c,k2neg:p,k2:u}}}},v.J),H=(BigInt(0),W.ProjectivePoint,BigInt(0));function getBigInt(e,t){switch(typeof e){case"bigint":return e;case"number":return assertArgument(Number.isInteger(e),"underflow",t||"value",e),assertArgument(e>=-9007199254740991&&e<=9007199254740991,"overflow",t||"value",e),BigInt(e);case"string":try{if(""===e)throw Error("empty string");if("-"===e[0]&&"-"!==e[1])return-BigInt(e.substring(1));return BigInt(e)}catch(n){assertArgument(!1,`invalid BigNumberish string: ${n.message}`,t||"value",e)}}assertArgument(!1,"invalid BigNumberish value",t||"value",e)}function getUint(e,t){let n=getBigInt(e,t);return errors_assert(n>=H,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:e}),n}function getNumber(e,t){switch(typeof e){case"bigint":return assertArgument(e>=-9007199254740991&&e<=9007199254740991,"overflow",t||"value",e),Number(e);case"number":return assertArgument(Number.isInteger(e),"underflow",t||"value",e),assertArgument(e>=-9007199254740991&&e<=9007199254740991,"overflow",t||"value",e),e;case"string":try{if(""===e)throw Error("empty string");return getNumber(BigInt(e),t)}catch(n){assertArgument(!1,`invalid numeric string: ${n.message}`,t||"value",e)}}assertArgument(!1,"invalid numeric value",t||"value",e)}function toBeHex(e,t){let n=getUint(e,"value"),o=n.toString(16);if(null==t)o.length%2&&(o="0"+o);else{let n=getNumber(t,"width");for(errors_assert(2*n>=o.length,`value exceeds width (${n} bytes)`,"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:e});o.length<2*n;)o="0"+o}return"0x"+o}BigInt(1);let Q="0x0000000000000000000000000000000000000000000000000000000000000000",K=BigInt(0),V=BigInt(1),Z=BigInt(2),J=BigInt(27),X=BigInt(28),Y=BigInt(35),$={};function toUint256(e){return function(e,t,n){let o=data_getBytes(e);errors_assert(t>=o.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(o),length:t,offset:t+1});let i=new Uint8Array(t);return i.fill(0),n?i.set(o,t-o.length):i.set(o,0),data_hexlify(i)}(function(e){let t=getUint(e,"value");if(t===H)return new Uint8Array([]);let n=t.toString(16);n.length%2&&(n="0"+n);let o=new Uint8Array(n.length/2);for(let e=0;eparseInt(t.substring(0,3)),"non-canonical s","value",t),this.#t=t}get v(){return this.#r}set v(e){let t=getNumber(e,"value");assertArgument(27===t||28===t,"invalid v","v",e),this.#r=t}get networkV(){return this.#n}get legacyChainId(){let e=this.networkV;return null==e?null:Signature.getChainId(e)}get yParity(){return 27===this.v?0:1}get yParityAndS(){let e=data_getBytes(this.s);return this.yParity&&(e[0]|=128),data_hexlify(e)}get compactSerialized(){return concat([this.r,this.yParityAndS])}get serialized(){return concat([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(e,t,n,o){!function(e,t,n){if(null==n&&(n=""),e!==t){let e=n,t="new";n&&(e+=".",t+=" "+n),errors_assert(!1,`private constructor; use ${e}from* methods`,"UNSUPPORTED_OPERATION",{operation:t})}}(e,$,"Signature"),this.#e=t,this.#t=n,this.#r=o,this.#n=null}[Symbol.for("nodejs.util.inspect.custom")](){return`Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`}clone(){let e=new Signature($,this.r,this.s,this.v);return this.networkV&&(e.#n=this.networkV),e}toJSON(){let e=this.networkV;return{_type:"signature",networkV:null!=e?e.toString():null,r:this.r,s:this.s,v:this.v}}static getChainId(e){let t=getBigInt(e,"v");return t==J||t==X?K:(assertArgument(t>=Y,"invalid EIP-155 v","v",e),(t-Y)/Z)}static getChainIdV(e,t){return getBigInt(e)*Z+BigInt(35+t-27)}static getNormalizedV(e){let t=getBigInt(e);return t===K||t===J?27:t===V||t===X?28:(assertArgument(t>=Y,"invalid v","v",e),t&V?27:28)}static from(e){function assertError(t,n){assertArgument(t,n,"signature",e)}if(null==e)return new Signature($,Q,Q,27);if("string"==typeof e){let t=data_getBytes(e,"signature");if(64===t.length){let e=data_hexlify(t.slice(0,32)),n=t.slice(32,64),o=128&n[0]?28:27;return n[0]&=127,new Signature($,e,data_hexlify(n),o)}if(65===t.length){let e=data_hexlify(t.slice(0,32)),n=t.slice(32,64);assertError((128&n[0])==0,"non-canonical s");let o=Signature.getNormalizedV(t[64]);return new Signature($,e,data_hexlify(n),o)}assertError(!1,"invalid raw signature length")}if(e instanceof Signature)return e.clone();let t=e.r;assertError(null!=t,"missing r");let n=toUint256(t),o=function(e,t){if(null!=e)return toUint256(e);if(null!=t){assertError(isHexString(t,32),"invalid yParityAndS");let e=data_getBytes(t);return e[0]&=127,data_hexlify(e)}assertError(!1,"missing s")}(e.s,e.yParityAndS);assertError((128&data_getBytes(o)[0])==0,"non-canonical s");let{networkV:i,v:s}=function(e,t,n){if(null!=e){let t=getBigInt(e);return{networkV:t>=Y?t:void 0,v:Signature.getNormalizedV(t)}}if(null!=t)return assertError(isHexString(t,32),"invalid yParityAndS"),{v:128&data_getBytes(t)[0]?28:27};if(null!=n){switch(getNumber(n,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}assertError(!1,"invalid yParity")}assertError(!1,"missing v")}(e.v,e.yParityAndS,e.yParity),l=new Signature($,n,o,s);return i&&(l.#n=i),assertError(null==e.yParity||getNumber(e.yParity,"sig.yParity")===l.yParity,"yParity mismatch"),assertError(null==e.yParityAndS||e.yParityAndS===l.yParityAndS,"yParityAndS mismatch"),l}};let SigningKey=class SigningKey{#a;constructor(e){assertArgument(32===dataLength(e),"invalid private key","privateKey","[REDACTED]"),this.#a=data_hexlify(e)}get privateKey(){return this.#a}get publicKey(){return SigningKey.computePublicKey(this.#a)}get compressedPublicKey(){return SigningKey.computePublicKey(this.#a,!0)}sign(e){assertArgument(32===dataLength(e),"invalid digest length","digest",e);let t=W.sign(getBytesCopy(e),getBytesCopy(this.#a),{lowS:!0});return Signature.from({r:toBeHex(t.r,32),s:toBeHex(t.s,32),v:t.recovery?28:27})}computeSharedSecret(e){let t=SigningKey.computePublicKey(e);return data_hexlify(W.getSharedSecret(getBytesCopy(this.#a),data_getBytes(t),!1))}static computePublicKey(e,t){let n=data_getBytes(e,"key");if(32===n.length){let e=W.getPublicKey(n,!!t);return data_hexlify(e)}if(64===n.length){let e=new Uint8Array(65);e[0]=4,e.set(n,1),n=e}let o=W.ProjectivePoint.fromHex(n);return data_hexlify(o.toRawBytes(t))}static recoverPublicKey(e,t){assertArgument(32===dataLength(e),"invalid digest length","digest",e);let n=Signature.from(t),o=W.Signature.fromCompact(getBytesCopy(concat([n.r,n.s])));o=o.addRecoveryBit(n.yParity);let i=o.recoverPublicKey(getBytesCopy(e));return assertArgument(null!=i,"invalid signautre for digest","signature",t),"0x"+i.toHex(!1)}static addPoints(e,t,n){let o=W.ProjectivePoint.fromHex(SigningKey.computePublicKey(e).substring(2)),i=W.ProjectivePoint.fromHex(SigningKey.computePublicKey(t).substring(2));return"0x"+o.add(i).toHex(!!n)}};function ignoreFunc(e,t,n,o,i){if("BAD_PREFIX"===e||"UNEXPECTED_CONTINUE"===e){let e=0;for(let o=t+1;o>6==2;o++)e++;return e}return"OVERRUN"===e?n.length-t-1:0}function toUtf8Bytes(e,t){assertArgument("string"==typeof e,"invalid string value","str",e),null!=t&&(errors_assert(u.indexOf(t)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}}),e=e.normalize(t));let n=[];for(let t=0;t>6|192),n.push(63&o|128);else if((64512&o)==55296){t++;let i=e.charCodeAt(t);assertArgument(t>18|240),n.push(s>>12&63|128),n.push(s>>6&63|128),n.push(63&s|128)}else n.push(o>>12|224),n.push(o>>6&63|128),n.push(63&o|128)}return new Uint8Array(n)}Object.freeze({error:function(e,t,n,o,i){assertArgument(!1,`invalid codepoint at offset ${t}; ${e}`,"bytes",n)},ignore:ignoreFunc,replace:function(e,t,n,o,i){return"OVERLONG"===e?(assertArgument("number"==typeof i,"invalid bad code point for replacement","badCodepoint",i),o.push(i),0):(o.push(65533),ignoreFunc(e,t,n,o,i))}});let ee=(0,i.createContext)(void 0),AdminProvider=e=>{let{children:t}=e,{address:n,isConnected:c}=(0,s.m)(),{signMessage:u,data:d}=(0,l.Q)(),[p,f]=(0,i.useState)(!1),[v,w]=(0,i.useState)([]),[C,E]=(0,i.useState)(),[x,A]=(0,i.useState)(),[k,B]=(0,i.useState)(!0),[S,I]=(0,i.useState)([]);return(0,i.useEffect)(()=>{c&&n||(A(void 0),E(void 0))},[n,c]),(0,i.useEffect)(()=>{let e=localStorage.getItem("expiryTimestamp"),t=e?parseInt(e,10):null;if(t&&t>Date.now()){E(t);let e=localStorage.getItem("signature");e&&A(e)}},[n,c]),(0,i.useEffect)(()=>{C&&C>Date.now()&&(localStorage.setItem("expiryTimestamp",C.toString()),x&&localStorage.setItem("signature",x))},[C,x,n,c]),(0,i.useEffect)(()=>{d&&A(d)},[d,n,c]),(0,i.useEffect)(()=>{let e=setInterval(()=>{if(C){let e=Date.now();B(eclearInterval(e)},[C,n,c]),(0,i.useEffect)(()=>{if(C&&x){var e;let t=null===(e=function(e,t){var n,o;let i=("string"==typeof(n=e)&&(n=toUtf8Bytes(n)),keccak256(concat([toUtf8Bytes("\x19Ethereum Signed Message:\n"),toUtf8Bytes(String(n.length)),n])));return function(e){if(assertArgument("string"==typeof e,"invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/)){e.startsWith("0x")||(e="0x"+e);let t=getChecksumAddress(e);return assertArgument(!e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||t===e,"bad address checksum","address",e),t}if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){assertArgument(e.substring(2,4)===function(e){let t=(e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00").split("").map(e=>g[e]).join("");for(;t.length>=15;){let e=t.substring(0,15);t=parseInt(e,10)%97+t.substring(e.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}(e),"bad icap checksum","address",e);let t=(function(e){e=e.toLowerCase();let t=m;for(let n=0;n{let e=v.some(e=>n&&(null==e?void 0:e.toLowerCase())===(null==n?void 0:n.toLowerCase()));f(e)},[n,v,c]),(0,o.jsx)(ee.Provider,{value:{admin:p,setAdmin:f,allAdmins:v,setAllAdmins:w,expiryTimestamp:C,setExpiryTimestamp:E,generateSignature:()=>{let e=Date.now()+432e5;u({message:e.toString()}),E(e)},signature:x,setSignature:A,validTimestamp:k,setValidTimestamp:B,networks:S,setNetworks:I},children:t})},useAdminContext=()=>{let e=(0,i.useContext)(ee);if(void 0===e)throw Error("AdminContext must be used within an AdminProvider");return e}},38492:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return App}});var o=n(85893);n(32352);var i=n(59581);n(56953);var s=n(89192),l=n(99931),c=n(24139),u=n(56888),d=n(27037),p=n(7506),f=class extends p.l{constructor(e={}){super(),this.config=e,this.#o=new Map}#o;build(e,t,n){let o=t.queryKey,i=t.queryHash??(0,c.Rm)(o,t),s=this.get(i);return s||(s=new u.A({cache:this,queryKey:o,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(o)}),this.add(s)),s}add(e){this.#o.has(e.queryHash)||(this.#o.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#o.get(e.queryHash);t&&(e.destroy(),t===e&&this.#o.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){d.V.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#o.get(e)}getAll(){return[...this.#o.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>(0,c._x)(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>(0,c._x)(e,t)):t}notify(e){d.V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){d.V.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){d.V.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},m=n(59289),b=class extends p.l{constructor(e={}){super(),this.config=e,this.#i=[],this.#s=0}#i;#s;#l;build(e,t,n){let o=new m.m({mutationCache:this,mutationId:++this.#s,options:e.defaultMutationOptions(t),state:n});return this.add(o),o}add(e){this.#i.push(e),this.notify({type:"added",mutation:e})}remove(e){this.#i=this.#i.filter(t=>t!==e),this.notify({type:"removed",mutation:e})}clear(){d.V.batch(()=>{this.#i.forEach(e=>{this.remove(e)})})}getAll(){return this.#i}find(e){let t={exact:!0,...e};return this.#i.find(e=>(0,c.X7)(t,e))}findAll(e={}){return this.#i.filter(t=>(0,c.X7)(e,t))}notify(e){d.V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){return this.#l=(this.#l??Promise.resolve()).then(()=>{let e=this.#i.filter(e=>e.state.isPaused);return d.V.batch(()=>e.reduce((e,t)=>e.then(()=>t.continue().catch(c.ZT)),Promise.resolve()))}).then(()=>{this.#l=void 0}),this.#l}},g=n(66474),y=n(14304);function getNextPageParam(e,{pages:t,pageParams:n}){let o=t.length-1;return e.getNextPageParam(t[o],t,n[o],n)}function getPreviousPageParam(e,{pages:t,pageParams:n}){return e.getPreviousPageParam?.(t[0],t,n[0],n)}var v=class{#c;#u;#d;#p;#h;#f;#m;#b;constructor(e={}){this.#c=e.queryCache||new f,this.#u=e.mutationCache||new b,this.#d=e.defaultOptions||{},this.#p=new Map,this.#h=new Map,this.#f=0}mount(){this.#f++,1===this.#f&&(this.#m=g.j.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#c.onFocus())}),this.#b=y.N.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#c.onOnline())}))}unmount(){this.#f--,0===this.#f&&(this.#m?.(),this.#m=void 0,this.#b?.(),this.#b=void 0)}isFetching(e){return this.#c.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#u.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#c.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.getQueryData(e.queryKey);if(void 0===t)return this.fetchQuery(e);{let n=this.defaultQueryOptions(e),o=this.#c.build(this,n);return e.revalidateIfStale&&o.isStaleByTime(n.staleTime)&&this.prefetchQuery(n),Promise.resolve(t)}}getQueriesData(e){return this.getQueryCache().findAll(e).map(({queryKey:e,state:t})=>{let n=t.data;return[e,n]})}setQueryData(e,t,n){let o=this.defaultQueryOptions({queryKey:e}),i=this.#c.get(o.queryHash),s=i?.state.data,l=(0,c.SE)(t,s);if(void 0!==l)return this.#c.build(this,o).setData(l,{...n,manual:!0})}setQueriesData(e,t,n){return d.V.batch(()=>this.getQueryCache().findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#c.get(t.queryHash)?.state}removeQueries(e){let t=this.#c;d.V.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#c,o={type:"active",...e};return d.V.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries(o,t)))}cancelQueries(e={},t={}){let n={revert:!0,...t},o=d.V.batch(()=>this.#c.findAll(e).map(e=>e.cancel(n)));return Promise.all(o).then(c.ZT).catch(c.ZT)}invalidateQueries(e={},t={}){return d.V.batch(()=>{if(this.#c.findAll(e).forEach(e=>{e.invalidate()}),"none"===e.refetchType)return Promise.resolve();let n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)})}refetchQueries(e={},t){let n={...t,cancelRefetch:t?.cancelRefetch??!0},o=d.V.batch(()=>this.#c.findAll(e).filter(e=>!e.isDisabled()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(c.ZT)),"paused"===e.state.fetchStatus?Promise.resolve():t}));return Promise.all(o).then(c.ZT)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let n=this.#c.build(this,t);return n.isStaleByTime(t.staleTime)?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(c.ZT).catch(c.ZT)}fetchInfiniteQuery(e){var t;return e.behavior=(t=e.pages,{onFetch:(e,n)=>{let fetchFn=async()=>{let n;let o=e.options,i=e.fetchOptions?.meta?.fetchMore?.direction,s=e.state.data?.pages||[],l=e.state.data?.pageParams||[],u=!1,addSignalProperty=t=>{Object.defineProperty(t,"signal",{enumerable:!0,get:()=>(e.signal.aborted?u=!0:e.signal.addEventListener("abort",()=>{u=!0}),e.signal)})},d=e.options.queryFn&&e.options.queryFn!==c.CN?e.options.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.options.queryHash}'`)),fetchPage=async(t,n,o)=>{if(u)return Promise.reject();if(null==n&&t.pages.length)return Promise.resolve(t);let i={queryKey:e.queryKey,pageParam:n,direction:o?"backward":"forward",meta:e.options.meta};addSignalProperty(i);let s=await d(i),{maxPages:l}=e.options,p=o?c.Ht:c.VX;return{pages:p(t.pages,s,l),pageParams:p(t.pageParams,n,l)}};if(i&&s.length){let e="backward"===i,t=e?getPreviousPageParam:getNextPageParam,c={pages:s,pageParams:l},u=t(o,c);n=await fetchPage(c,u,e)}else{n=await fetchPage({pages:[],pageParams:[]},l[0]??o.initialPageParam);let e=t??s.length;for(let t=1;te.options.persister?.(fetchFn,{queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},n):e.fetchFn=fetchFn}}),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(c.ZT).catch(c.ZT)}resumePausedMutations(){return y.N.isOnline()?this.#u.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#c}getMutationCache(){return this.#u}getDefaultOptions(){return this.#d}setDefaultOptions(e){this.#d=e}setQueryDefaults(e,t){this.#p.set((0,c.Ym)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#p.values()],n={};return t.forEach(t=>{(0,c.to)(e,t.queryKey)&&(n={...n,...t.defaultOptions})}),n}setMutationDefaults(e,t){this.#h.set((0,c.Ym)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#h.values()],n={};return t.forEach(t=>{(0,c.to)(e,t.mutationKey)&&(n={...n,...t.defaultOptions})}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#d.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,c.Rm)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),!0!==t.enabled&&t.queryFn===c.CN&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#d.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#c.clear(),this.#u.clear()}},w=n(30202),C=n(86164);let E=(0,C.a)({id:31337,name:"Hardhat",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"]}}});var x=n(66403);let A=(0,C.a)({id:5,name:"Goerli",nativeCurrency:{name:"Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.ankr.com/eth_goerli"]}},blockExplorers:{default:{name:"Etherscan",url:"https://goerli.etherscan.io",apiUrl:"https://api-goerli.etherscan.io/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xfc4AC75C46C914aF5892d6d3eFFcebD7917293F1",blockCreated:10339206},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:6507670}},testnet:!0});var k=n(95946),B=n(43310),S=n(6073),I=n(30866);let j={block:(0,B.G)({format(e){let t=e.transactions?.map(e=>{if("string"==typeof e)return e;let t=S.Tr(e);return"0x7e"===t.typeHex&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?k.y_(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t});return{transactions:t,stateRoot:e.stateRoot}}}),transaction:(0,S.y_)({format(e){let t={};return"0x7e"===e.type&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?(0,k.y_)(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:(0,I.d)({format:e=>({l1GasPrice:e.l1GasPrice?(0,k.y_)(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?(0,k.y_)(e.l1GasUsed):null,l1Fee:e.l1Fee?(0,k.y_)(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null})})};var T=n(26087),P=n(60480),M=n(57040),O=n(92106),R=n(62027),U=n(11221),F=n(11187);function toRlp(e,t="hex"){let n=function getEncodable(e){return Array.isArray(e)?function(e){let t=e.reduce((e,t)=>e+t.length,0),n=getSizeOfLength(t),o=t<=55?1+t:1+n+t;return{length:o,encode(o){for(let{encode:i}of(t<=55?o.pushByte(192+t):(o.pushByte(247+n),1===n?o.pushUint8(t):2===n?o.pushUint16(t):3===n?o.pushUint24(t):o.pushUint32(t)),e))i(o)}}}(e.map(e=>getEncodable(e))):function(e){let t="string"==typeof e?(0,F.nr)(e):e,n=getSizeOfLength(t.length),o=1===t.length&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length;return{length:o,encode(e){1===t.length&&t[0]<128||(t.length<=55?e.pushByte(128+t.length):(e.pushByte(183+n),1===n?e.pushUint8(t.length):2===n?e.pushUint16(t.length):3===n?e.pushUint24(t.length):e.pushUint32(t.length))),e.pushBytes(t)}}}(e)}(e),o=(0,U.q)(new Uint8Array(n.length));return(n.encode(o),"hex"===t)?(0,O.ci)(o.bytes):o.bytes}function getSizeOfLength(e){if(e<256)return 1;if(e<65536)return 2;if(e<16777216)return 3;if(e<4294967296)return 4;throw new R.G("Length is too large.")}var N=n(33639);function blobsToCommitments(e){let{kzg:t}=e,n=e.to??("string"==typeof e.blobs[0]?"hex":"bytes"),o="string"==typeof e.blobs[0]?e.blobs.map(e=>(0,F.nr)(e)):e.blobs,i=[];for(let e of o)i.push(Uint8Array.from(t.blobToKzgCommitment(e)));return"bytes"===n?i:i.map(e=>(0,O.ci)(e))}function blobsToProofs(e){let{kzg:t}=e,n=e.to??("string"==typeof e.blobs[0]?"hex":"bytes"),o="string"==typeof e.blobs[0]?e.blobs.map(e=>(0,F.nr)(e)):e.blobs,i="string"==typeof e.commitments[0]?e.commitments.map(e=>(0,F.nr)(e)):e.commitments,s=[];for(let e=0;e(0,O.ci)(e))}var D=n(11606),_=n(15102);let BlobSizeTooLargeError=class BlobSizeTooLargeError extends R.G{constructor({maxSize:e,size:t}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${t} bytes`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BlobSizeTooLargeError"})}};let EmptyBlobError=class EmptyBlobError extends R.G{constructor(){super("Blob data must not be empty."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EmptyBlobError"})}};let InvalidVersionedHashSizeError=class InvalidVersionedHashSizeError extends R.G{constructor({hash:e,size:t}){super(`Versioned hash "${e}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${t}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidVersionedHashSizeError"})}};let InvalidVersionedHashVersionError=class InvalidVersionedHashVersionError extends R.G{constructor({hash:e,version:t}){super(`Versioned hash "${e}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${t}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidVersionedHashVersionError"})}};var L=n(39135),z=n(61836),q=n(80377),G=n(26445),W=n(3972);function assertTransactionEIP1559(e){let{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:o,to:i}=e;if(t<=0)throw new q.hJ({chainId:t});if(i&&!(0,P.U)(i))throw new T.b({address:i});if(o&&o>2n**256n-1n)throw new G.Hh({maxFeePerGas:o});if(n&&o&&n>o)throw new G.cs({maxFeePerGas:o,maxPriorityFeePerGas:n})}var H=n(82994);function serializeAccessList(e){if(!e||0===e.length)return[];let t=[];for(let n=0;n2n**256n-1n)throw new G.Hh({maxFeePerGas:o})}(e);let p=serializeAccessList(u),f=[(0,O.NC)(n),s?(0,O.NC)(s):"0x",d?(0,O.NC)(d):"0x",o?(0,O.NC)(o):"0x",l??"0x",c?(0,O.NC)(c):"0x",i??"0x",p,...toYParitySignatureArray(e,t)];return(0,M.SM)(["0x01",toRlp(f)])}(e,t):"eip4844"===n?function(e,t){let{chainId:n,gas:o,nonce:i,to:s,value:l,maxFeePerBlobGas:c,maxFeePerGas:u,maxPriorityFeePerGas:d,accessList:p,data:f}=e;!function(e){let{blobVersionedHashes:t}=e;if(t){if(0===t.length)throw new EmptyBlobError;for(let e of t){let t=(0,L.d)(e),n=(0,k.ly)((0,W.tP)(e,0,1));if(32!==t)throw new InvalidVersionedHashSizeError({hash:e,size:t});if(1!==n)throw new InvalidVersionedHashVersionError({hash:e,version:n})}}assertTransactionEIP1559(e)}(e);let m=e.blobVersionedHashes,b=e.sidecars;if(e.blobs){let t="string"==typeof e.blobs[0]?e.blobs:e.blobs.map(e=>(0,O.ci)(e)),n=e.kzg,o=blobsToCommitments({blobs:t,kzg:n}),i=blobsToProofs({blobs:t,commitments:o,kzg:n});m=function(e){let{commitments:t,version:n}=e,o=e.to??("string"==typeof t[0]?"hex":"bytes"),i=[];for(let e of t)i.push(function(e){let{commitment:t,version:n=1}=e,o=e.to??("string"==typeof t?"hex":"bytes"),i=function(e,t){let n=(0,D.J)((0,_.v)(e,{strict:!1})?(0,F.O0)(e):e);return"bytes"===(t||"hex")?n:(0,O.NC)(n)}(t,"bytes");return i.set([n],0),"bytes"===o?i:(0,O.ci)(i)}({commitment:e,to:o,version:n}));return i}({commitments:o}),!1!==b&&(b=function(e){let{data:t,kzg:n,to:o}=e,i=e.blobs??function(e){let t=e.to??("string"==typeof e.data?"hex":"bytes"),n="string"==typeof e.data?(0,F.nr)(e.data):e.data,o=(0,L.d)(n);if(!o)throw new EmptyBlobError;if(o>253951)throw new BlobSizeTooLargeError({maxSize:253951,size:o});let i=[],s=!0,l=0;for(;s;){let e=(0,U.q)(new Uint8Array(131072)),t=0;for(;t<4096;){let o=n.slice(l,l+31);if(e.pushByte(0),e.pushBytes(o),o.length<31){e.pushByte(128),s=!1;break}t++,l+=31}i.push(e)}return"bytes"===t?i.map(e=>e.bytes):i.map(e=>(0,O.ci)(e.bytes))}({data:t,to:o}),s=e.commitments??blobsToCommitments({blobs:i,kzg:n,to:o}),l=e.proofs??blobsToProofs({blobs:i,commitments:s,kzg:n,to:o}),c=[];for(let e=0;e2n**256n-1n)throw new G.Hh({maxFeePerGas:o});if(l)throw new R.G("`accessList` is not a valid Legacy Transaction attribute.")}(e);let d=[s?(0,O.NC)(s):"0x",u?(0,O.NC)(u):"0x",o?(0,O.NC)(o):"0x",l??"0x",c?(0,O.NC)(c):"0x",i??"0x"];if(t){let e=(()=>{if(t.v>=35n){let e=(t.v-35n)/2n;return e>0?t.v:27n+(35n===t.v?0n:1n)}if(n>0)return BigInt(2*n)+BigInt(35n+t.v-27n);let e=27n+(27n===t.v?0n:1n);if(t.v!==e)throw new N.vl({v:t.v});return e})();d=[...d,(0,O.NC)(e),t.r,t.s]}else n>0&&(d=[...d,(0,O.NC)(n),"0x","0x"]);return toRlp(d)}(e,t)}function toYParitySignatureArray(e,t){let{r:n,s:o,v:i,yParity:s}=t??e;if(void 0===n||void 0===o||void 0===i&&void 0===s)return[];let l="number"==typeof s?s?(0,O.NC)(1):"0x":0n===i?"0x":1n===i?(0,O.NC)(1):27n===i?"0x":(0,O.NC)(1);return[l,(0,z.f)(n),(0,z.f)(o)]}let Q={contracts:{gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},formatters:j,serializers:{transaction:function(e,t){return"deposit"===e.type||void 0!==e.sourceHash?function(e){!function(e){let{from:t,to:n}=e;if(t&&!(0,P.U)(t))throw new T.b({address:t});if(n&&!(0,P.U)(n))throw new T.b({address:n})}(e);let{sourceHash:t,data:n,from:o,gas:i,isSystemTx:s,mint:l,to:c,value:u}=e,d=[t,o,c??"0x",l?(0,O.NC)(l):"0x",u?(0,O.NC)(u):"0x",i?(0,O.NC)(i):"0x",s?"0x1":"0x",n??"0x"];return(0,M.SM)(["0x7e",toRlp(d)])}(e):serializeTransaction(e,t)}}},K=(0,C.a)({...Q,id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimism Explorer",url:"https://optimistic.etherscan.io",apiUrl:"https://api-optimistic.etherscan.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0xdfe97868233d1aa22e815a266982f2cf17685a27"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263},portal:{1:{address:"0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"}},l1StandardBridge:{1:{address:"0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"}}},sourceId:1}),V=(0,C.a)({id:14,name:"Flare Mainnet",nativeCurrency:{decimals:18,name:"flare",symbol:"FLR"},rpcUrls:{default:{http:["https://flare-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Flare Explorer",url:"https://flare-explorer.flare.network",apiUrl:"https://flare-explorer.flare.network/api"}}}),Z=(0,C.a)({id:16,name:"Coston",nativeCurrency:{decimals:18,name:"costonflare",symbol:"CFLR"},rpcUrls:{default:{http:["https://coston-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Coston Explorer",url:"https://coston-explorer.flare.network",apiUrl:"https://coston-explorer.flare.network/api"}},testnet:!0}),J=(0,C.a)({id:19,name:"Songbird Mainnet",nativeCurrency:{decimals:18,name:"songbird",symbol:"SGB"},rpcUrls:{default:{http:["https://songbird-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Songbird Explorer",url:"https://songbird-explorer.flare.network",apiUrl:"https://songbird-explorer.flare.network/api"}}}),X=(0,C.a)({id:25,name:"Cronos Mainnet",nativeCurrency:{decimals:18,name:"Cronos",symbol:"CRO"},rpcUrls:{default:{http:["https://evm.cronos.org"]}},blockExplorers:{default:{name:"Cronos Explorer",url:"https://explorer.cronos.org",apiUrl:"https://explorer-api.cronos.org/mainnet/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1963112}}}),Y=(0,C.a)({id:30,name:"Rootstock Mainnet",network:"rootstock",nativeCurrency:{decimals:18,name:"Rootstock Bitcoin",symbol:"RBTC"},rpcUrls:{default:{http:["https://public-node.rsk.co"]}},blockExplorers:{default:{name:"RSK Explorer",url:"https://explorer.rsk.co"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:4249540}}}),$=(0,C.a)({id:40,name:"Telos",nativeCurrency:{decimals:18,name:"Telos",symbol:"TLOS"},rpcUrls:{default:{http:["https://mainnet.telos.net/evm"]}},blockExplorers:{default:{name:"Teloscan",url:"https://www.teloscan.io/"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:246530709}}}),ee=(0,C.a)({id:41,name:"Telos",nativeCurrency:{decimals:18,name:"Telos",symbol:"TLOS"},rpcUrls:{default:{http:["https://testnet.telos.net/evm"]}},blockExplorers:{default:{name:"Teloscan (testnet)",url:"https://testnet.teloscan.io/"}},testnet:!0}),et=(0,C.a)({id:42,network:"lukso",name:"LUKSO",nativeCurrency:{name:"LUKSO",symbol:"LYX",decimals:18},rpcUrls:{default:{http:["https://rpc.mainnet.lukso.network"],webSocket:["wss://ws-rpc.mainnet.lukso.network"]}},blockExplorers:{default:{name:"LUKSO Mainnet Explorer",url:"https://explorer.execution.mainnet.lukso.network",apiUrl:"https://api.explorer.execution.mainnet.lukso.network/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:468183}}}),er=(0,C.a)({id:50,name:"XinFin Network",nativeCurrency:{decimals:18,name:"XDC",symbol:"XDC"},rpcUrls:{default:{http:["https://rpc.xinfin.network"]}},blockExplorers:{xinfin:{name:"XinFin",url:"https://explorer.xinfin.network"},default:{name:"Blocksscan",url:"https://xdc.blocksscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:71542788}}}),en=(0,C.a)({id:51,name:"Apothem Network",nativeCurrency:{decimals:18,name:"TXDC",symbol:"TXDC"},rpcUrls:{default:{http:["https://erpc.apothem.network"]}},blockExplorers:{default:{name:"Blocksscan",url:"https://apothem.blocksscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:59765389}}}),ea=(0,C.a)({id:56,name:"BNB Smart Chain",nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://rpc.ankr.com/bsc"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com",apiUrl:"https://api.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15921452}}}),eo=(0,C.a)({id:57,name:"Syscoin Mainnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc.syscoin.org"],webSocket:["wss://rpc.syscoin.org/wss"]}},blockExplorers:{default:{name:"SyscoinExplorer",url:"https://explorer.syscoin.org",apiUrl:"https://explorer.syscoin.org/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:287139}}}),ei=(0,C.a)({id:61,name:"Ethereum Classic",nativeCurrency:{decimals:18,name:"ETC",symbol:"ETC"},rpcUrls:{default:{http:["https://etc.rivet.link"]}},blockExplorers:{default:{name:"Blockscout",url:"https://blockscout.com/etc/mainnet"}}}),es=(0,C.a)({id:66,name:"OKC",nativeCurrency:{decimals:18,name:"OKT",symbol:"OKT"},rpcUrls:{default:{http:["https://exchainrpc.okex.org"]}},blockExplorers:{default:{name:"oklink",url:"https://www.oklink.com/okc"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:10364792}}}),el=(0,C.a)({id:71,name:"Conflux eSpace Testnet",network:"cfx-espace-testnet",testnet:!0,nativeCurrency:{name:"Conflux",symbol:"CFX",decimals:18},rpcUrls:{default:{http:["https://evmtestnet.confluxrpc.org"],webSocket:["wss://evmtestnet.confluxrpc.org/ws"]}},blockExplorers:{default:{name:"ConfluxScan",url:"https://evmtestnet.confluxscan.io"}},contracts:{multicall3:{address:"0xEFf0078910f638cd81996cc117bccD3eDf2B072F",blockCreated:117499050}}}),ec=(0,C.a)({id:82,name:"Meter",nativeCurrency:{decimals:18,name:"MTR",symbol:"MTR"},rpcUrls:{default:{http:["https://rpc.meter.io"]}},blockExplorers:{default:{name:"MeterScan",url:"https://scan.meter.io"}}}),eu=(0,C.a)({id:83,name:"Meter Testnet",nativeCurrency:{decimals:18,name:"MTR",symbol:"MTR"},rpcUrls:{default:{http:["https://rpctest.meter.io"]}},blockExplorers:{default:{name:"MeterTestnetScan",url:"https://scan-warringstakes.meter.io"}}}),ed=(0,C.a)({id:97,name:"Binance Smart Chain Testnet",nativeCurrency:{decimals:18,name:"BNB",symbol:"tBNB"},rpcUrls:{default:{http:["https://data-seed-prebsc-1-s1.bnbchain.org:8545"]}},blockExplorers:{default:{name:"BscScan",url:"https://testnet.bscscan.com",apiUrl:"https://testnet.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:17422483}},testnet:!0}),ep=(0,C.a)({id:100,name:"Gnosis",nativeCurrency:{decimals:18,name:"Gnosis",symbol:"xDAI"},rpcUrls:{default:{http:["https://rpc.gnosischain.com"],webSocket:["wss://rpc.gnosischain.com/wss"]}},blockExplorers:{default:{name:"Gnosisscan",url:"https://gnosisscan.io",apiUrl:"https://api.gnosisscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:21022491}}}),eh=(0,C.a)({id:109,name:"Shibarium",network:"shibarium",nativeCurrency:{name:"Bone",symbol:"BONE",decimals:18},rpcUrls:{default:{http:["https://rpc.shibrpc.com"]}},blockExplorers:{default:{name:"Blockscout",url:"https://shibariumscan.io"}},contracts:{multicall3:{address:"0x864Bf681ADD6052395188A89101A1B37d3B4C961",blockCreated:265900}}}),ef=(0,C.a)({id:114,name:"Coston2",nativeCurrency:{decimals:18,name:"coston2flare",symbol:"C2FLR"},rpcUrls:{default:{http:["https://coston2-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Coston2 Explorer",url:"https://coston2-explorer.flare.network",apiUrl:"https://coston2-explorer.flare.network/api"}},testnet:!0}),em=(0,C.a)({id:122,name:"Fuse",nativeCurrency:{name:"Fuse",symbol:"FUSE",decimals:18},rpcUrls:{default:{http:["https://rpc.fuse.io"]}},blockExplorers:{default:{name:"Fuse Explorer",url:"https://explorer.fuse.io",apiUrl:"https://explorer.fuse.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:16146628}}}),eb=(0,C.a)({id:123,name:"Fuse Sparknet",nativeCurrency:{name:"Spark",symbol:"SPARK",decimals:18},rpcUrls:{default:{http:["https://rpc.fusespark.io"]}},blockExplorers:{default:{name:"Sparkent Explorer",url:"https://explorer.fusespark.io",apiUrl:"https://explorer.fusespark.io/api"}}}),eg=(0,C.a)({id:137,name:"Polygon",nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com",apiUrl:"https://api.polygonscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}}}),ey=(0,C.a)({id:148,name:"Shimmer",network:"shimmer",nativeCurrency:{decimals:18,name:"Shimmer",symbol:"SMR"},rpcUrls:{default:{http:["https://json-rpc.evm.shimmer.network"]}},blockExplorers:{default:{name:"Shimmer Network Explorer",url:"https://explorer.evm.shimmer.network",apiUrl:"https://explorer.evm.shimmer.network/api"}}}),ev=(0,C.a)({id:169,name:"Manta Pacific Mainnet",network:"manta",nativeCurrency:{decimals:18,name:"ETH",symbol:"ETH"},rpcUrls:{default:{http:["https://pacific-rpc.manta.network/http"]}},blockExplorers:{default:{name:"Manta Explorer",url:"https://pacific-explorer.manta.network",apiUrl:"https://pacific-explorer.manta.network/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:332890}}}),ew=(0,C.a)({id:195,name:"X1 Testnet",nativeCurrency:{decimals:18,name:"OKB",symbol:"OKB"},rpcUrls:{default:{http:["https://x1testrpc.okx.com"]}},blockExplorers:{default:{name:"OKLink",url:"https://www.oklink.com/x1-test"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:624344}},testnet:!0}),eC=(0,C.a)({id:199,name:"BitTorrent",network:"bittorrent-chain-mainnet",nativeCurrency:{name:"BitTorrent",symbol:"BTT",decimals:18},rpcUrls:{default:{http:["https://rpc.bittorrentchain.io"]},public:{http:["https://rpc.bittorrentchain.io"]}},blockExplorers:{default:{name:"Bttcscan",url:"https://bttcscan.com",apiUrl:"https://api.bttcscan.com/api"}}}),eE=(0,C.a)({id:204,name:"opBNB",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://opbnb-mainnet-rpc.bnbchain.org"]}},blockExplorers:{default:{name:"opbnbscan",url:"https://mainnet.opbnbscan.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:512881}}}),ex=(0,C.a)({id:240,name:"Nexilix Smart Chain",nativeCurrency:{decimals:18,name:"Nexilix",symbol:"NEXILIX"},rpcUrls:{default:{http:["https://rpcurl.pos.nexilix.com"]}},blockExplorers:{default:{name:"NexilixScan",url:"https://scan.nexilix.com"}},contracts:{multicall3:{address:"0x58381c8e2BF9d0C2C4259cA14BdA9Afe02831244",blockCreated:74448}}}),eA=(0,C.a)({id:242,name:"Plinga",nativeCurrency:{name:"Plinga",symbol:"PLINGA",decimals:18},rpcUrls:{default:{http:["https://rpcurl.mainnet.plgchain.com"]}},blockExplorers:{default:{name:"Plgscan",url:"https://www.plgscan.com"}},contracts:{multicall3:{address:"0x0989576160f2e7092908BB9479631b901060b6e4",blockCreated:204489}}}),ek=(0,C.a)({id:248,name:"Oasys",nativeCurrency:{name:"Oasys",symbol:"OAS",decimals:18},rpcUrls:{default:{http:["https://rpc.mainnet.oasys.games"]}},blockExplorers:{default:{name:"OasysScan",url:"https://scan.oasys.games",apiUrl:"https://scan.oasys.games/api"}}}),eB=(0,C.a)({id:250,name:"Fantom",nativeCurrency:{decimals:18,name:"Fantom",symbol:"FTM"},rpcUrls:{default:{http:["https://rpc.ankr.com/fantom"]}},blockExplorers:{default:{name:"FTMScan",url:"https://ftmscan.com",apiUrl:"https://api.ftmscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:33001987}}}),eS=(0,C.a)({...Q,id:252,name:"Fraxtal",nativeCurrency:{name:"Frax Ether",symbol:"frxETH",decimals:18},rpcUrls:{default:{http:["https://rpc.frax.com"]}},blockExplorers:{default:{name:"fraxscan",url:"https://fraxscan.com",apiUrl:"https://api.fraxscan.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0x66CC916Ed5C6C2FA97014f7D1cD141528Ae171e4"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11"},portal:{1:{address:"0x36cb65c1967A0Fb0EEE11569C51C2f2aA1Ca6f6D",blockCreated:19135323}},l1StandardBridge:{1:{address:"0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2",blockCreated:19135323}}},sourceId:1}),eI=(0,C.a)({id:255,name:"Kroma",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://api.kroma.network"]}},blockExplorers:{default:{name:"Kroma Explorer",url:"https://blockscout.kroma.network",apiUrl:"https://blockscout.kroma.network/api"}},testnet:!1}),ej=(0,C.a)({id:260,name:"zkSync InMemory Node",network:"zksync-in-memory-node",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["http://localhost:8011"]}},testnet:!0}),eT=(0,C.a)({id:270,name:"zkSync CLI Local Node",network:"zksync-cli-local-node",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["http://localhost:3050"]}},testnet:!0}),eP=(0,C.a)({id:288,name:"Boba Network",nativeCurrency:{decimals:18,name:"Boba",symbol:"BOBA"},rpcUrls:{default:{http:["https://mainnet.boba.network"]}},blockExplorers:{default:{name:"BOBAScan",url:"https://bobascan.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:446859}}}),eM=(0,C.a)({id:295,name:"Hedera Mainnet",network:"hedera-mainnet",nativeCurrency:{symbol:"HBAR",name:"HBAR",decimals:18},rpcUrls:{default:{http:["https://mainnet.hashio.io/api"]}},blockExplorers:{default:{name:"Hashscan",url:"https://hashscan.io/mainnet"}},testnet:!1}),eO=(0,C.a)({id:296,name:"Hedera Testnet",network:"hedera-testnet",nativeCurrency:{symbol:"HBAR",name:"HBAR",decimals:18},rpcUrls:{default:{http:["https://testnet.hashio.io/api"]}},blockExplorers:{default:{name:"Hashscan",url:"https://hashscan.io/testnet"}},testnet:!0}),eR=(0,C.a)({id:297,name:"Hedera Previewnet",network:"hedera-previewnet",nativeCurrency:{symbol:"HBAR",name:"HBAR",decimals:18},rpcUrls:{default:{http:["https://previewnet.hashio.io/api"]}},blockExplorers:{default:{name:"Hashscan",url:"https://hashscan.io/previewnet"}},testnet:!0});var eU=n(53992),eF=n(74688);let eN={block:(0,B.G)({format(e){let t=e.transactions?.map(e=>{if("string"==typeof e)return e;let t=eN.transaction?.format(e);return"0x71"===t.typeHex?t.type="eip712":"0xff"===t.typeHex&&(t.type="priority"),t});return{l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,l1BatchTimestamp:e.l1BatchTimestamp?(0,k.y_)(e.l1BatchTimestamp):null,transactions:t}}}),transaction:(0,S.y_)({format(e){let t={};return"0x71"===e.type?t.type="eip712":"0xff"===e.type&&(t.type="priority"),{...t,l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?(0,k.y_)(e.l1BatchTxIndex):null}}}),transactionReceipt:(0,I.d)({format:e=>({l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?(0,k.y_)(e.l1BatchTxIndex):null,logs:e.logs.map(e=>({...(0,eU.U)(e),l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,transactionLogIndex:(0,k.ly)(e.transactionLogIndex),logType:e.logType})),l2ToL1Logs:e.l2ToL1Logs.map(e=>({blockNumber:(0,k.y_)(e.blockHash),blockHash:e.blockHash,l1BatchNumber:(0,k.y_)(e.l1BatchNumber),transactionIndex:(0,k.y_)(e.transactionIndex),shardId:(0,k.y_)(e.shardId),isService:e.isService,sender:e.sender,key:e.key,value:e.value,transactionHash:e.transactionHash,logIndex:(0,k.y_)(e.logIndex)}))})}),transactionRequest:(0,eF.iy)({exclude:["customSignature","factoryDeps","gasPerPubdata","paymaster","paymasterInput"],format:e=>e.gasPerPubdata||e.paymaster&&e.paymasterInput||e.factoryDeps||e.customSignature?{eip712Meta:{...e.gasPerPubdata?{gasPerPubdata:(0,O.NC)(e.gasPerPubdata)}:{},...e.paymaster&&e.paymasterInput?{paymasterParams:{paymaster:e.paymaster,paymasterInput:Array.from((0,F.nr)(e.paymasterInput))}}:{},...e.factoryDeps?{factoryDeps:e.factoryDeps}:{},...e.customSignature?{customSignature:Array.from((0,F.nr)(e.customSignature))}:{}},type:"0x71"}:{}})};let InvalidEip712TransactionError=class InvalidEip712TransactionError extends R.G{constructor(){super('Transaction is not an EIP712 transaction.\n\nTransaction must:\n - include `type: "eip712"`\n - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`'),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidEip712TransactionError"})}};function isEIP712Transaction(e){return"eip712"===e.type||"customSignature"in e&&!!e.customSignature||"paymaster"in e&&!!e.paymaster||"paymasterInput"in e&&!!e.paymasterInput||"gasPerPubdata"in e&&"bigint"==typeof e.gasPerPubdata||"factoryDeps"in e&&!!e.factoryDeps}function assertEip712Transaction(e){let{chainId:t,to:n,from:o,paymaster:i,paymasterInput:s}=e;if(!isEIP712Transaction(e))throw new InvalidEip712TransactionError;if(!t||t<=0)throw new q.hJ({chainId:t});if(n&&!(0,P.U)(n))throw new T.b({address:n});if(o&&!(0,P.U)(o))throw new T.b({address:o});if(i&&!(0,P.U)(i))throw new T.b({address:i});if(i&&!s)throw new R.G("`paymasterInput` must be provided when `paymaster` is defined");if(!i&&s)throw new R.G("`paymaster` must be provided when `paymasterInput` is defined")}let eD={formatters:eN,serializers:{transaction:function(e,t){return isEIP712Transaction(e)?function(e){let{chainId:t,gas:n,nonce:o,to:i,from:s,value:l,maxFeePerGas:c,maxPriorityFeePerGas:u,customSignature:d,factoryDeps:p,paymaster:f,paymasterInput:m,gasPerPubdata:b,data:g}=e;assertEip712Transaction(e);let y=[o?(0,O.NC)(o):"0x",u?(0,O.NC)(u):"0x",c?(0,O.NC)(c):"0x",n?(0,O.NC)(n):"0x",i??"0x",l?(0,O.NC)(l):"0x",g??"0x0",(0,O.NC)(t),(0,O.NC)(""),(0,O.NC)(""),(0,O.NC)(t),s??"0x",b?(0,O.NC)(b):"0x",p??[],d??"0x",f&&m?[f,m]:[]];return(0,M.SM)(["0x71",toRlp(y)])}(e):serializeTransaction(e,t)}},custom:{getEip712Domain:e=>{assertEip712Transaction(e);let t=function(e){let{gas:t,nonce:n,to:o,from:i,value:s,maxFeePerGas:l,maxPriorityFeePerGas:c,factoryDeps:u,paymaster:d,paymasterInput:p,gasPerPubdata:f,data:m}=e;return{txType:113n,from:BigInt(i),to:o?BigInt(o):0n,gasLimit:t??0n,gasPerPubdataByteLimit:f??0n,maxFeePerGas:l??0n,maxPriorityFeePerGas:c??0n,paymaster:d?BigInt(d):0n,nonce:n?BigInt(n):0n,value:s??0n,data:m||"0x0",factoryDeps:u??[],paymasterInput:p||"0x0"}}(e);return{domain:{name:"zkSync",version:"2",chainId:e.chainId},types:{Transaction:[{name:"txType",type:"uint256"},{name:"from",type:"uint256"},{name:"to",type:"uint256"},{name:"gasLimit",type:"uint256"},{name:"gasPerPubdataByteLimit",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymaster",type:"uint256"},{name:"nonce",type:"uint256"},{name:"value",type:"uint256"},{name:"data",type:"bytes"},{name:"factoryDeps",type:"bytes32[]"},{name:"paymasterInput",type:"bytes"}]},primaryType:"Transaction",message:t}}}},e_=(0,C.a)({...eD,id:300,name:"zkSync Sepolia Testnet",network:"zksync-sepolia-testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.era.zksync.dev"],webSocket:["wss://sepolia.era.zksync.dev/ws"]}},blockExplorers:{default:{name:"zkExplorer",url:"https://sepolia.explorer.zksync.io/"}},contracts:{multicall3:{address:"0xF9cda624FBC7e059355ce98a31693d299FACd963"}},testnet:!0}),eL=(0,C.a)({id:314,name:"Filecoin Mainnet",nativeCurrency:{decimals:18,name:"filecoin",symbol:"FIL"},rpcUrls:{default:{http:["https://api.node.glif.io/rpc/v1"]}},blockExplorers:{default:{name:"Filfox",url:"https://filfox.info/en"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3328594}}}),ez=(0,C.a)({id:321,name:"KCC Mainnet",network:"KCC Mainnet",nativeCurrency:{decimals:18,name:"KCS",symbol:"KCS"},rpcUrls:{default:{http:["https://kcc-rpc.com"]},public:{http:["https://kcc-rpc.com"]}},blockExplorers:{default:{name:"KCC Explorer",url:"https://explorer.kcc.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11760430}},testnet:!1}),eq=(0,C.a)({...eD,id:324,name:"zkSync Era",network:"zksync-era",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://mainnet.era.zksync.io"],webSocket:["wss://mainnet.era.zksync.io/ws"]}},blockExplorers:{default:{name:"Etherscan",url:"https://era.zksync.network/",apiUrl:"https://api-era.zksync.network/api"}},contracts:{multicall3:{address:"0xF9cda624FBC7e059355ce98a31693d299FACd963"}}}),eG=(0,C.a)({id:338,name:"Cronos Testnet",nativeCurrency:{decimals:18,name:"CRO",symbol:"tCRO"},rpcUrls:{default:{http:["https://evm-t3.cronos.org"]}},blockExplorers:{default:{name:"Cronos Explorer",url:"https://cronos.org/explorer/testnet3"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:10191251}},testnet:!0}),eW=(0,C.a)({id:369,name:"PulseChain",nativeCurrency:{name:"Pulse",symbol:"PLS",decimals:18},testnet:!1,rpcUrls:{default:{http:["https://rpc.pulsechain.com"],webSocket:["wss://ws.pulsechain.com"]}},blockExplorers:{default:{name:"PulseScan",url:"https://scan.pulsechain.com",apiUrl:"https://api.scan.pulsechain.com/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),eH=(0,C.a)({...Q,id:420,name:"Optimism Goerli",nativeCurrency:{name:"Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://goerli.optimism.io"]}},blockExplorers:{default:{name:"Etherscan",url:"https://goerli-optimism.etherscan.io",apiUrl:"https://goerli-optimism.etherscan.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{5:{address:"0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:49461},portal:{5:{address:"0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383"}},l1StandardBridge:{5:{address:"0x636Af16bf2f682dD3109e60102b8E1A089FedAa8"}}},testnet:!0,sourceId:5}),eQ=(0,C.a)({id:424,network:"pgn",name:"PGN",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.publicgoods.network"]}},blockExplorers:{default:{name:"PGN Explorer",url:"https://explorer.publicgoods.network",apiUrl:"https://explorer.publicgoods.network/api"},blocksout:{name:"PGN Explorer",url:"https://explorer.publicgoods.network",apiUrl:"https://explorer.publicgoods.network/api"}},contracts:{l2OutputOracle:{1:{address:"0x9E6204F750cD866b299594e2aC9eA824E2e5f95c"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3380209},portal:{1:{address:"0xb26Fd985c5959bBB382BAFdD0b879E149e48116c"}},l1StandardBridge:{1:{address:"0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b"}}},formatters:j,sourceId:1}),eK=(0,C.a)({id:570,name:"Rollux Mainnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc.rollux.com"],webSocket:["wss://rpc.rollux.com/wss"]}},blockExplorers:{default:{name:"RolluxExplorer",url:"https://explorer.rollux.com",apiUrl:"https://explorer.rollux.com/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:119222}}}),eV=(0,C.a)({id:571,name:"MetaChain Mainnet",nativeCurrency:{name:"Metatime Coin",symbol:"MTC",decimals:18},rpcUrls:{default:{http:["https://rpc.metatime.com"]}},blockExplorers:{default:{name:"MetaExplorer",url:"https://explorer.metatime.com"}},contracts:{multicall3:{address:"0x0000000000000000000000000000000000003001",blockCreated:0}}}),eZ=(0,C.a)({id:592,name:"Astar",network:"astar-mainnet",nativeCurrency:{name:"Astar",symbol:"ASTR",decimals:18},rpcUrls:{default:{http:["https://astar.api.onfinality.io/public"]}},blockExplorers:{default:{name:"Astar Subscan",url:"https://astar.subscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:761794}},testnet:!1}),eJ=(0,C.a)({id:595,name:"Mandala TC9",network:"mandala",nativeCurrency:{name:"Mandala",symbol:"mACA",decimals:18},rpcUrls:{public:{http:["https://eth-rpc-tc9.aca-staging.network"],webSocket:["wss://eth-rpc-tc9.aca-staging.network"]},default:{http:["https://eth-rpc-tc9.aca-staging.network"],webSocket:["wss://eth-rpc-tc9.aca-staging.network"]}},blockExplorers:{default:{name:"Mandala Blockscout",url:"https://blockscout.mandala.aca-staging.network",apiUrl:"https://blockscout.mandala.aca-staging.network/api"}},testnet:!0}),eX=(0,C.a)({id:599,name:"Metis Goerli",nativeCurrency:{decimals:18,name:"Metis Goerli",symbol:"METIS"},rpcUrls:{default:{http:["https://goerli.gateway.metisdevops.link"]}},blockExplorers:{default:{name:"Metis Goerli Explorer",url:"https://goerli.explorer.metisdevops.link",apiUrl:"https://goerli.explorer.metisdevops.link/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1006207}}}),eY=(0,C.a)({id:646,name:"FlowEVM Previewnet",nativeCurrency:{decimals:18,name:"Flow",symbol:"FLOW"},rpcUrls:{default:{http:["https://previewnet.evm.nodes.onflow.org"]}},blockExplorers:{default:{name:"Previewnet Explorer",url:"https://previewnet.flowdiver.io"}}}),e$=(0,C.a)({id:686,name:"Karura",network:"karura",nativeCurrency:{name:"Karura",symbol:"KAR",decimals:18},rpcUrls:{public:{http:["https://eth-rpc-karura.aca-api.network"],webSocket:["wss://eth-rpc-karura.aca-api.network"]},default:{http:["https://eth-rpc-karura.aca-api.network"],webSocket:["wss://eth-rpc-karura.aca-api.network"]}},blockExplorers:{default:{name:"Karura Blockscout",url:"https://blockscout.karura.network",apiUrl:"https://blockscout.karura.network/api"}},testnet:!1}),e0=(0,C.a)({id:747,name:"FlowEVM Mainnet",nativeCurrency:{decimals:18,name:"Flow",symbol:"FLOW"},rpcUrls:{default:{http:["https://mainnet.evm.nodes.onflow.org"]}},blockExplorers:{default:{name:"Mainnet Explorer",url:"https://flowdiver.io"}}}),e1=(0,C.a)({id:787,name:"Acala",network:"acala",nativeCurrency:{name:"Acala",symbol:"ACA",decimals:18},rpcUrls:{public:{http:["https://eth-rpc-acala.aca-api.network"],webSocket:["wss://eth-rpc-acala.aca-api.network"]},default:{http:["https://eth-rpc-acala.aca-api.network"],webSocket:["wss://eth-rpc-acala.aca-api.network"]}},blockExplorers:{default:{name:"Acala Blockscout",url:"https://blockscout.acala.network",apiUrl:"https://blockscout.acala.network/api"}},testnet:!1}),e6=(0,C.a)({id:841,name:"Taraxa Mainnet",nativeCurrency:{name:"Tara",symbol:"TARA",decimals:18},rpcUrls:{default:{http:["https://rpc.mainnet.taraxa.io"]}},blockExplorers:{default:{name:"Taraxa Explorer",url:"https://explorer.mainnet.taraxa.io"}}}),e3=(0,C.a)({id:842,name:"Taraxa Testnet",nativeCurrency:{name:"Tara",symbol:"TARA",decimals:18},rpcUrls:{default:{http:["https://rpc.testnet.taraxa.io"]}},blockExplorers:{default:{name:"Taraxa Explorer",url:"https://explorer.testnet.taraxa.io"}},testnet:!0}),e2=(0,C.a)({id:888,name:"Wanchain",nativeCurrency:{name:"WANCHAIN",symbol:"WAN",decimals:18},rpcUrls:{default:{http:["https://gwan-ssl.wandevs.org:56891","https://gwan2-ssl.wandevs.org"]}},blockExplorers:{default:{name:"WanScan",url:"https://wanscan.org"}},contracts:{multicall3:{address:"0xcDF6A1566e78EB4594c86Fe73Fcdc82429e97fbB",blockCreated:25312390}}}),e7=(0,C.a)({id:919,name:"Mode Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.mode.network"]}},blockExplorers:{default:{name:"Blockscout",url:"https://sepolia.explorer.mode.network",apiUrl:"https://sepolia.explorer.mode.network/api"}},contracts:{multicall3:{address:"0xBAba8373113Fb7a68f195deF18732e01aF8eDfCF",blockCreated:3019007}},testnet:!0}),e8=(0,C.a)({id:943,name:"PulseChain V4",testnet:!0,nativeCurrency:{name:"V4 Pulse",symbol:"v4PLS",decimals:18},rpcUrls:{default:{http:["https://rpc.v4.testnet.pulsechain.com"],webSocket:["wss://ws.v4.testnet.pulsechain.com"]}},blockExplorers:{default:{name:"PulseScan",url:"https://scan.v4.testnet.pulsechain.com",apiUrl:"https://scan.v4.testnet.pulsechain.com/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),e5=(0,C.a)({id:997,name:"5ireChain Thunder Testnet",nativeCurrency:{name:"5ire Token",symbol:"5IRE",decimals:18},rpcUrls:{default:{http:["https://rpc-testnet.5ire.network"]}},blockExplorers:{default:{name:"5ireChain Explorer",url:"https://explorer.5ire.network"}},testnet:!0}),e4=(0,C.a)({id:999,name:"Wanchain Testnet",nativeCurrency:{name:"WANCHAIN",symbol:"WANt",decimals:18},rpcUrls:{default:{http:["https://gwan-ssl.wandevs.org:46891"]}},blockExplorers:{default:{name:"WanScanTest",url:"https://wanscan.org"}},contracts:{multicall3:{address:"0x11c89bF4496c39FB80535Ffb4c92715839CC5324",blockCreated:24743448}},testnet:!0}),e9=(0,C.a)({...Q,id:999,name:"Zora Goerli Testnet",nativeCurrency:{decimals:18,name:"Zora Goerli",symbol:"ETH"},rpcUrls:{default:{http:["https://testnet.rpc.zora.energy"],webSocket:["wss://testnet.rpc.zora.energy"]}},blockExplorers:{default:{name:"Explorer",url:"https://testnet.explorer.zora.energy",apiUrl:"https://testnet.explorer.zora.energy/api"}},contracts:{...Q.contracts,multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:189123},portal:{5:{address:"0xDb9F51790365e7dc196e7D072728df39Be958ACe"}}},sourceId:5,testnet:!0}),te=(0,C.a)({id:1001,name:"Klaytn Baobab Testnet",network:"klaytn-baobab",nativeCurrency:{decimals:18,name:"Baobab Klaytn",symbol:"KLAY"},rpcUrls:{default:{http:["https://public-en-baobab.klaytn.net"]}},blockExplorers:{default:{name:"KlaytnScope",url:"https://baobab.klaytnscope.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:123390593}},testnet:!0}),tt=(0,C.a)({id:1004,name:"Ekta Testnet",nativeCurrency:{decimals:18,name:"EKTA",symbol:"EKTA"},rpcUrls:{default:{http:["https://test.ekta.io:8545"]}},blockExplorers:{default:{name:"Test Ektascan",url:"https://test.ektascan.io",apiUrl:"https://test.ektascan.io/api"}},testnet:!0}),tr=(0,C.a)({id:1017,name:"BNB Greenfield Chain",nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://greenfield-chain.bnbchain.org"]}},blockExplorers:{default:{name:"BNB Greenfield Mainnet Scan",url:"https://greenfieldscan.com"}},testnet:!1}),tn=(0,C.a)({id:1028,name:"BitTorrent Chain Testnet",network:"bittorrent-chain-testnet",nativeCurrency:{name:"BitTorrent",symbol:"BTT",decimals:18},rpcUrls:{default:{http:["https://testrpc.bittorrentchain.io"]},public:{http:["https://testrpc.bittorrentchain.io"]}},blockExplorers:{default:{name:"Bttcscan",url:"https://testnet.bttcscan.com",apiUrl:"https://testnet.bttcscan.com/api"}},testnet:!0}),ta=(0,C.a)({id:1030,name:"Conflux eSpace",nativeCurrency:{name:"Conflux",symbol:"CFX",decimals:18},rpcUrls:{default:{http:["https://evm.confluxrpc.org"],webSocket:["wss://evm.confluxrpc.org/ws"]}},blockExplorers:{default:{name:"ConfluxScan",url:"https://evm.confluxscan.io"}},contracts:{multicall3:{address:"0xEFf0078910f638cd81996cc117bccD3eDf2B072F",blockCreated:68602935}}}),to=(0,C.a)({id:1038,name:"Bronos Testnet",nativeCurrency:{decimals:18,name:"Bronos Coin",symbol:"tBRO"},rpcUrls:{default:{http:["https://evm-testnet.bronos.org"]}},blockExplorers:{default:{name:"BronoScan",url:"https://tbroscan.bronos.org"}},testnet:!0}),ti=(0,C.a)({id:1039,name:"Bronos",nativeCurrency:{decimals:18,name:"BRO",symbol:"BRO"},rpcUrls:{default:{http:["https://evm.bronos.org"]}},blockExplorers:{default:{name:"BronoScan",url:"https://broscan.bronos.org"}}}),ts=(0,C.a)({id:1073,name:"Shimmer Testnet",network:"shimmer-testnet",nativeCurrency:{decimals:18,name:"Shimmer",symbol:"SMR"},rpcUrls:{default:{http:["https://json-rpc.evm.testnet.shimmer.network"]}},blockExplorers:{default:{name:"Shimmer Network Explorer",url:"https://explorer.evm.testnet.shimmer.network",apiUrl:"https://explorer.evm.testnet.shimmer.network/api"}},testnet:!0}),tl=(0,C.a)({id:1088,name:"Metis",nativeCurrency:{decimals:18,name:"Metis",symbol:"METIS"},rpcUrls:{default:{http:["https://andromeda.metis.io/?owner=1088"]}},blockExplorers:{default:{name:"Andromeda Explorer",url:"https://andromeda-explorer.metis.io",apiUrl:"https://andromeda-explorer.metis.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:2338552}}}),tc=(0,C.a)({id:1101,name:"Polygon zkEVM",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://zkevm-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://zkevm.polygonscan.com",apiUrl:"https://api-zkevm.polygonscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:57746}}}),tu=(0,C.a)({id:1111,name:"WEMIX",network:"wemix-mainnet",nativeCurrency:{name:"WEMIX",symbol:"WEMIX",decimals:18},rpcUrls:{default:{http:["https://api.wemix.com"]},public:{http:["https://api.wemix.com"]}},blockExplorers:{default:{name:"wemixExplorer",url:"https://explorer.wemix.com"}}}),td=(0,C.a)({id:1112,name:"WEMIX Testnet",network:"wemix-testnet",nativeCurrency:{name:"WEMIX",symbol:"tWEMIX",decimals:18},rpcUrls:{default:{http:["https://api.test.wemix.com"]},public:{http:["https://api.test.wemix.com"]}},blockExplorers:{default:{name:"wemixExplorer",url:"https://testnet.wemixscan.com",apiUrl:"https://testnet.wemixscan.com/api"}},testnet:!0}),tp=(0,C.a)({id:1116,name:"Core Dao",nativeCurrency:{decimals:18,name:"Core",symbol:"CORE"},rpcUrls:{default:{http:["https://rpc.coredao.org"]}},blockExplorers:{default:{name:"CoreDao",url:"https://scan.coredao.org"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:11907934}},testnet:!1}),th=(0,C.a)({id:1130,network:"defichain-evm",name:"DeFiChain EVM Mainnet",nativeCurrency:{name:"DeFiChain",symbol:"DFI",decimals:8},rpcUrls:{default:{http:["https://eth.mainnet.ocean.jellyfishsdk.com"]},public:{http:["https://eth.mainnet.ocean.jellyfishsdk.com"]}},blockExplorers:{default:{name:"DeFiScan",url:"https://meta.defiscan.live"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:137852}}}),tf=(0,C.a)({id:1131,network:"defichain-evm-testnet",name:"DeFiChain EVM Testnet",nativeCurrency:{name:"DeFiChain",symbol:"DFI",decimals:8},rpcUrls:{default:{http:["https://eth.testnet.ocean.jellyfishsdk.com"]},public:{http:["https://eth.testnet.ocean.jellyfishsdk.com"]}},blockExplorers:{default:{name:"DeFiScan",url:"https://meta.defiscan.live/?network=TestNet"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:156462}},testnet:!0}),tm=(0,C.a)({id:1281,name:"Moonbeam Development Node",nativeCurrency:{decimals:18,name:"DEV",symbol:"DEV"},rpcUrls:{default:{http:["http://127.0.0.1:9944"],webSocket:["wss://127.0.0.1:9944"]}}}),tb=(0,C.a)({id:1284,name:"Moonbeam",nativeCurrency:{decimals:18,name:"GLMR",symbol:"GLMR"},rpcUrls:{default:{http:["https://moonbeam.public.blastapi.io"],webSocket:["wss://moonbeam.public.blastapi.io"]}},blockExplorers:{default:{name:"Moonscan",url:"https://moonscan.io",apiUrl:"https://api-moonbeam.moonscan.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:609002}},testnet:!1}),tg=(0,C.a)({id:1285,name:"Moonriver",nativeCurrency:{decimals:18,name:"MOVR",symbol:"MOVR"},rpcUrls:{default:{http:["https://moonriver.public.blastapi.io"],webSocket:["wss://moonriver.public.blastapi.io"]}},blockExplorers:{default:{name:"Moonscan",url:"https://moonriver.moonscan.io",apiUrl:"https://api-moonriver.moonscan.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1597904}},testnet:!1}),ty=(0,C.a)({id:1287,name:"Moonbase Alpha",nativeCurrency:{decimals:18,name:"DEV",symbol:"DEV"},rpcUrls:{default:{http:["https://rpc.api.moonbase.moonbeam.network"],webSocket:["wss://wss.api.moonbase.moonbeam.network"]}},blockExplorers:{default:{name:"Moonscan",url:"https://moonbase.moonscan.io",apiUrl:"https://moonbase.moonscan.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1850686}},testnet:!0}),tv=(0,C.a)({id:1337,name:"Localhost",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"]}}}),tw=(0,C.a)({id:1442,name:"Polygon zkEVM Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.public.zkevm-test.net"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://testnet-zkevm.polygonscan.com",apiUrl:"https://testnet-zkevm.polygonscan.com/api"}},testnet:!0,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:525686}}}),tC=(0,C.a)({id:1453,name:"MetaChain Istanbul",nativeCurrency:{name:"Metatime Coin",symbol:"MTC",decimals:18},rpcUrls:{default:{http:["https://istanbul-rpc.metachain.dev"]}},blockExplorers:{default:{name:"MetaExplorer",url:"https://istanbul-explorer.metachain.dev"}},contracts:{multicall3:{address:"0x0000000000000000000000000000000000003001",blockCreated:0}},testnet:!0}),tE=(0,C.a)({id:1559,name:"Tenet",network:"tenet-mainnet",nativeCurrency:{name:"TENET",symbol:"TENET",decimals:18},rpcUrls:{default:{http:["https://rpc.tenet.org"]}},blockExplorers:{default:{name:"TenetScan Mainnet",url:"https://tenetscan.io",apiUrl:"https://tenetscan.io/api"}},testnet:!1}),tx=(0,C.a)({id:1663,name:"Horizen Gobi Testnet",nativeCurrency:{decimals:18,name:"Test ZEN",symbol:"tZEN"},rpcUrls:{default:{http:["https://gobi-testnet.horizenlabs.io/ethv1"]}},blockExplorers:{default:{name:"Gobi Explorer",url:"https://gobi-explorer.horizen.io"}},contracts:{},testnet:!0}),tA=(0,C.a)({id:1686,name:"Mint Sepolia Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://testnet-rpc.mintchain.io"]}},blockExplorers:{default:{name:"Mintchain Testnet explorer",url:"https://testnet-explorer.mintchain.io"}},testnet:!0}),tk=(0,C.a)({id:1890,name:"LightLink Phoenix Mainnet",network:"lightlink-phoenix",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://replicator.phoenix.lightlink.io/rpc/v1"]}},blockExplorers:{default:{name:"LightLink Phoenix Explorer",url:"https://phoenix.lightlink.io"}},testnet:!1}),tB=(0,C.a)({id:1891,name:"LightLink Pegasus Testnet",network:"lightlink-pegasus",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://replicator.pegasus.lightlink.io/rpc/v1"]}},blockExplorers:{default:{name:"LightLink Pegasus Explorer",url:"https://pegasus.lightlink.io"}},testnet:!0}),tS=(0,C.a)({id:1994,name:"Ekta",nativeCurrency:{decimals:18,name:"EKTA",symbol:"EKTA"},rpcUrls:{default:{http:["https://main.ekta.io"]}},blockExplorers:{default:{name:"Ektascan",url:"https://ektascan.io",apiUrl:"https://ektascan.io/api"}}}),tI=(0,C.a)({id:2e3,name:"Dogechain",nativeCurrency:{decimals:18,name:"Dogechain",symbol:"DC"},rpcUrls:{default:{http:["https://rpc.dogechain.dog"]}},blockExplorers:{default:{name:"DogeChainExplorer",url:"https://explorer.dogechain.dog",apiUrl:"https://explorer.dogechain.dog/api"}}}),tj=(0,C.a)({id:2020,name:"Ronin",nativeCurrency:{name:"RON",symbol:"RON",decimals:18},rpcUrls:{default:{http:["https://api.roninchain.com/rpc"]}},blockExplorers:{default:{name:"Ronin Explorer",url:"https://app.roninchain.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:26023535}}}),tT=(0,C.a)({id:2021,name:"Edgeware EdgeEVM Mainnet",nativeCurrency:{decimals:18,name:"Edgeware",symbol:"EDG"},rpcUrls:{default:{http:["https://edgeware-evm.jelliedowl.net"]}},blockExplorers:{default:{name:"Edgscan by Bharathcoorg",url:"https://edgscan.live",apiUrl:"https://edgscan.live/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:18117872}}}),tP=(0,C.a)({id:2021,name:"Saigon Testnet",nativeCurrency:{name:"RON",symbol:"RON",decimals:18},rpcUrls:{default:{http:["https://saigon-testnet.roninchain.com/rpc"]}},blockExplorers:{default:{name:"Saigon Explorer",url:"https://saigon-app.roninchain.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:18736871}},testnet:!0}),tM=(0,C.a)({id:2022,name:"Beresheet BereEVM Testnet",nativeCurrency:{decimals:18,name:"Testnet EDG",symbol:"tEDG"},rpcUrls:{default:{http:["https://beresheet-evm.jelliedowl.net"]}},blockExplorers:{default:{name:"Edgscan by Bharathcoorg",url:"https://testnet.edgscan.live",apiUrl:"https://testnet.edgscan.live/api"}}}),tO=(0,C.a)({id:2221,name:"Kava EVM Testnet",network:"kava-testnet",nativeCurrency:{name:"Kava",symbol:"KAVA",decimals:18},rpcUrls:{default:{http:["https://evm.testnet.kava.io"]}},blockExplorers:{default:{name:"Kava EVM Testnet Explorer",url:"https://testnet.kavascan.com/",apiUrl:"https://testnet.kavascan.com/api"}},contracts:{multicall3:{address:"0xDf1D724A7166261eEB015418fe8c7679BBEa7fd6",blockCreated:7242179}},testnet:!0}),tR=(0,C.a)({id:2222,name:"Kava EVM",network:"kava-mainnet",nativeCurrency:{name:"Kava",symbol:"KAVA",decimals:18},rpcUrls:{default:{http:["https://evm.kava.io"]}},blockExplorers:{default:{name:"Kava EVM Explorer",url:"https://kavascan.com",apiUrl:"https://kavascan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:3661165}},testnet:!1}),tU=(0,C.a)({...Q,id:2331,name:"RSS3 VSL Sepolia Testnet",nativeCurrency:{name:"RSS3",symbol:"RSS3",decimals:18},rpcUrls:{default:{http:["https://rpc.testnet.rss3.io"]}},blockExplorers:{default:{name:"RSS3 VSL Sepolia Testnet Scan",url:"https://scan.testnet.rss3.io",apiUrl:"https://scan.testnet.rss3.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0xDb5c46C3Eaa6Ed6aE8b2379785DF7dd029C0dC81"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:55697},portal:{11155111:{address:"0xcBD77E8E1E7F06B25baDe67142cdE82652Da7b57",blockCreated:5345035}},l1StandardBridge:{11155111:{address:"0xdDD29bb63B0839FB1cE0eE439Ff027738595D07B"}}},testnet:!0,sourceId:11155111}),tF=(0,C.a)({id:2358,name:"Kroma Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://api.sepolia.kroma.network"]}},blockExplorers:{default:{name:"Kroma Sepolia Explorer",url:"https://blockscout.sepolia.kroma.network",apiUrl:"https://blockscout.sepolia.kroma.network/api"}},testnet:!0}),tN=(0,C.a)({...Q,id:2522,name:"Fraxtal Testnet",nativeCurrency:{name:"Frax Ether",symbol:"frxETH",decimals:18},rpcUrls:{default:{http:["https://rpc.testnet.frax.com"]}},blockExplorers:{default:{name:"fraxscan testnet",url:"https://holesky.fraxscan.com",apiUrl:"https://api-holesky.fraxscan.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{17e3:{address:"0x715EA64DA13F4d0831ece4Ad3E8c1aa013167F32"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11"},portal:{17e3:{address:"0xB9c64BfA498d5b9a8398Ed6f46eb76d90dE5505d",blockCreated:318416}},l1StandardBridge:{17e3:{address:"0x0BaafC217162f64930909aD9f2B27125121d6332",blockCreated:318416}}},sourceId:17e3}),tD=(0,C.a)({id:2710,name:"Morph Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc-testnet.morphl2.io"]}},blockExplorers:{default:{name:"Morph Testnet Explorer",url:"https://explorer-testnet.morphl2.io",apiUrl:"https://explorer-api-testnet.morphl2.io/api"}},testnet:!0}),t_=(0,C.a)({id:3141,name:"Filecoin Hyperspace",nativeCurrency:{decimals:18,name:"testnet filecoin",symbol:"tFIL"},rpcUrls:{default:{http:["https://api.hyperspace.node.glif.io/rpc/v1"]}},blockExplorers:{default:{name:"Filfox",url:"https://hyperspace.filfox.info/en"}}}),tL=(0,C.a)({id:3737,name:"Crossbell",nativeCurrency:{decimals:18,name:"CSB",symbol:"CSB"},rpcUrls:{default:{http:["https://rpc.crossbell.io"]}},blockExplorers:{default:{name:"CrossScan",url:"https://scan.crossbell.io",apiUrl:"https://scan.crossbell.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:38246031}}}),tz=(0,C.a)({id:3776,name:"Astar zkEVM",network:"AstarZkEVM",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.startale.com/astar-zkevm"]}},blockExplorers:{default:{name:"Astar zkEVM Explorer",url:"https://astar-zkevm.explorer.startale.com"}},contracts:{multicall3:{address:"0x36eabf148272BA81A5225C6a3637972F0EE17771",blockCreated:93528}},testnet:!1}),tq=(0,C.a)({id:3993,name:"APEX Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc-testnet.apexlayer.xyz"]}},blockExplorers:{default:{name:"Blockscout",url:"https://exp-testnet.apexlayer.xyz",apiUrl:"https://exp-testnet.apexlayer.xyz/api"}},contracts:{multicall3:{address:"0xf7642be33a6b18D16a995657adb5a68CD0438aE2",blockCreated:283775}},testnet:!0}),tG=(0,C.a)({id:4002,name:"Fantom Testnet",nativeCurrency:{decimals:18,name:"Fantom",symbol:"FTM"},rpcUrls:{default:{http:["https://rpc.testnet.fantom.network"]}},blockExplorers:{default:{name:"FTMScan",url:"https://testnet.ftmscan.com",apiUrl:"https://testnet.ftmscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:8328688}}}),tW=(0,C.a)({id:4090,network:"oasis-testnet",name:"Oasis Testnet",nativeCurrency:{name:"Fasttoken",symbol:"FTN",decimals:18},rpcUrls:{default:{http:["https://rpc1.oasis.bahamutchain.com"]},public:{http:["https://rpc1.oasis.bahamutchain.com"]}},blockExplorers:{default:{name:"Ftnscan",url:"https://oasis.ftnscan.com",apiUrl:"https://oasis.ftnscan.com/api"}},testnet:!0}),tH=(0,C.a)({id:4200,name:"Merlin",nativeCurrency:{name:"BTC",symbol:"BTC",decimals:18},rpcUrls:{default:{http:["https://rpc.merlinchain.io"]}},blockExplorers:{default:{name:"blockscout",url:"https://scan.merlinchain.io",apiUrl:"https://scan.merlinchain.io/api"}}}),tQ=(0,C.a)({id:4201,name:"LUKSO Testnet",nativeCurrency:{decimals:18,name:"LUKSO Testnet",symbol:"LYXt"},rpcUrls:{default:{http:["https://rpc.testnet.lukso.network"],webSocket:["wss://ws-rpc.testnet.lukso.network"]}},blockExplorers:{default:{name:"LUKSO Testnet Explorer",url:"https://explorer.execution.testnet.lukso.network",apiUrl:"https://api.explorer.execution.testnet.lukso.network/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:605348}},testnet:!0}),tK=(0,C.a)({...Q,id:4202,network:"lisk-sepolia",name:"Lisk Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia-api.lisk.com"]}},blockExplorers:{default:{name:"Blockscout",url:"https://sepolia-blockscout.lisk.com",apiUrl:"https://sepolia-blockscout.lisk.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0xA0E35F56C318DE1bD5D9ca6A94Fe7e37C5663348"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11"},portal:{11155111:{address:"0xe3d90F21490686Ec7eF37BE788E02dfC12787264"}},l1StandardBridge:{11155111:{address:"0x1Fb30e446eA791cd1f011675E5F3f5311b70faF5"}}},testnet:!0,sourceId:11155111}),tV=(0,C.a)({id:4242,name:"Nexi",nativeCurrency:{name:"Nexi",symbol:"NEXI",decimals:18},rpcUrls:{default:{http:["https://rpc.chain.nexi.technology"]}},blockExplorers:{default:{name:"NexiScan",url:"https://www.nexiscan.com",apiUrl:"https://www.nexiscan.com/api"}},contracts:{multicall3:{address:"0x0277A46Cc69A57eE3A6C8c158bA874832F718B8E",blockCreated:25770160}}}),tZ=(0,C.a)({id:4337,name:"Beam",network:"beam",nativeCurrency:{decimals:18,name:"Beam",symbol:"BEAM"},rpcUrls:{public:{http:["https://build.onbeam.com/rpc"],webSocket:["wss://build.onbeam.com/ws"]},default:{http:["https://build.onbeam.com/rpc"],webSocket:["wss://build.onbeam.com/ws"]}},blockExplorers:{default:{name:"Beam Explorer",url:"https://subnets.avax.network/beam"}},contracts:{multicall3:{address:"0x4956f15efdc3dc16645e90cc356eafa65ffc65ec",blockCreated:1}}}),tJ=(0,C.a)({id:4689,name:"IoTeX",nativeCurrency:{decimals:18,name:"IoTeX",symbol:"IOTX"},rpcUrls:{default:{http:["https://babel-api.mainnet.iotex.io"],webSocket:["wss://babel-api.mainnet.iotex.io"]}},blockExplorers:{default:{name:"IoTeXScan",url:"https://iotexscan.io"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:22163670}}}),tX=(0,C.a)({id:4690,name:"IoTeX Testnet",nativeCurrency:{decimals:18,name:"IoTeX",symbol:"IOTX"},rpcUrls:{default:{http:["https://babel-api.testnet.iotex.io"],webSocket:["wss://babel-api.testnet.iotex.io"]}},blockExplorers:{default:{name:"IoTeXScan",url:"https://testnet.iotexscan.io"}},testnet:!0}),tY=(0,C.a)({id:4759,name:"MEVerse Chain Testnet",nativeCurrency:{decimals:18,name:"MEVerse",symbol:"MEV"},rpcUrls:{default:{http:["https://rpc.meversetestnet.io"]}},blockExplorers:{default:{name:"Explorer",url:"https://testnet.meversescan.io/"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:64371115}},testnet:!0}),t$=(0,C.a)({id:4777,name:"BlackFort Exchange Network Testnet",nativeCurrency:{name:"BlackFort Testnet Token",symbol:"TBXN",decimals:18},rpcUrls:{default:{http:["https://testnet.blackfort.network/rpc"]}},blockExplorers:{default:{name:"Blockscout",url:"https://testnet-explorer.blackfort.network",apiUrl:"https://testnet-explorer.blackfort.network/api"}}}),t0=(0,C.a)({id:4999,name:"BlackFort Exchange Network",nativeCurrency:{name:"BlackFort Token",symbol:"BXN",decimals:18},rpcUrls:{default:{http:["https://mainnet.blackfort.network/rpc"]}},blockExplorers:{default:{name:"Blockscout",url:"https://explorer.blackfort.network",apiUrl:"https://explorer.blackfort.network/api"}}}),t1=(0,C.a)({id:5e3,name:"Mantle",nativeCurrency:{decimals:18,name:"MNT",symbol:"MNT"},rpcUrls:{default:{http:["https://rpc.mantle.xyz"]}},blockExplorers:{default:{name:"Mantle Explorer",url:"https://explorer.mantle.xyz",apiUrl:"https://explorer.mantle.xyz/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:304717}}}),t6=(0,C.a)({id:5001,name:"Mantle Testnet",nativeCurrency:{decimals:18,name:"MNT",symbol:"MNT"},rpcUrls:{default:{http:["https://rpc.testnet.mantle.xyz"]}},blockExplorers:{default:{name:"Mantle Testnet Explorer",url:"https://explorer.testnet.mantle.xyz",apiUrl:"https://explorer.testnet.mantle.xyz/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:561333}},testnet:!0}),t3=(0,C.a)({id:5165,network:"bahamut",name:"Bahamut",nativeCurrency:{name:"Fasttoken",symbol:"FTN",decimals:18},rpcUrls:{default:{http:["https://rpc1.bahamut.io","https://bahamut.publicnode.com","https://rpc2.bahamut.io"],webSocket:["wss://ws1.sahara.bahamutchain.com","wss://bahamut.publicnode.com","wss://ws2.sahara.bahamutchain.com"]},public:{http:["https://rpc1.bahamut.io","https://bahamut.publicnode.com","https://rpc2.bahamut.io"],webSocket:["wss://ws1.sahara.bahamutchain.com","wss://bahamut.publicnode.com","wss://ws2.sahara.bahamutchain.com"]}},blockExplorers:{default:{name:"Ftnscan",url:"https://www.ftnscan.com",apiUrl:"https://www.ftnscan.com/api"}}}),t2=(0,C.a)({id:5611,name:"opBNB Testnet",nativeCurrency:{decimals:18,name:"tBNB",symbol:"tBNB"},rpcUrls:{default:{http:["https://opbnb-testnet-rpc.bnbchain.org"]}},blockExplorers:{default:{name:"opbnbscan",url:"https://testnet.opbnbscan.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3705108}},testnet:!0}),t7=(0,C.a)({id:5700,name:"Syscoin Tanenbaum Testnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc.tanenbaum.io"],webSocket:["wss://rpc.tanenbaum.io/wss"]}},blockExplorers:{default:{name:"SyscoinTestnetExplorer",url:"https://tanenbaum.io"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:271288}}}),t8=(0,C.a)({id:7e3,name:"ZetaChain",nativeCurrency:{decimals:18,name:"Zeta",symbol:"ZETA"},rpcUrls:{default:{http:["https://zetachain-evm.blockpi.network/v1/rpc/public"]}},blockExplorers:{default:{name:"ZetaScan",url:"https://explorer.zetachain.com"}},testnet:!1}),t5=(0,C.a)({id:7001,name:"ZetaChain Athens Testnet",nativeCurrency:{decimals:18,name:"Zeta",symbol:"aZETA"},rpcUrls:{default:{http:["https://zetachain-athens-evm.blockpi.network/v1/rpc/public"]}},blockExplorers:{default:{name:"ZetaScan",url:"https://athens3.explorer.zetachain.com"}},testnet:!0}),t4=(0,C.a)({id:7518,name:"MEVerse Chain Mainnet",nativeCurrency:{decimals:18,name:"MEVerse",symbol:"MEV"},rpcUrls:{default:{http:["https://rpc.meversemainnet.io"]}},blockExplorers:{default:{name:"Explorer",url:"https://www.meversescan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:86881340}}}),t9=(0,C.a)({id:7700,name:"Canto",nativeCurrency:{decimals:18,name:"Canto",symbol:"CANTO"},rpcUrls:{default:{http:["https://canto.gravitychain.io"]}},blockExplorers:{default:{name:"Tuber.Build (Blockscout)",url:"https://tuber.build"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:2905789}}}),re=(0,C.a)({id:8082,name:"Shardeum Sphinx",nativeCurrency:{name:"SHARDEUM",symbol:"SHM",decimals:18},rpcUrls:{default:{http:["https://sphinx.shardeum.org"]}},blockExplorers:{default:{name:"Shardeum Explorer",url:"https://explorer-sphinx.shardeum.org"}},testnet:!0}),rt=(0,C.a)({id:8217,name:"Klaytn",nativeCurrency:{decimals:18,name:"Klaytn",symbol:"KLAY"},rpcUrls:{default:{http:["https://public-en-cypress.klaytn.net"]}},blockExplorers:{default:{name:"KlaytnScope",url:"https://scope.klaytn.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:96002415}}}),rr=(0,C.a)({...Q,id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://basescan.org",apiUrl:"https://api.basescan.org/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{1:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{1:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:1}),rn=(0,C.a)({id:8899,name:"JIBCHAIN L1",network:"jbc",nativeCurrency:{name:"JBC",symbol:"JBC",decimals:18},rpcUrls:{default:{http:["https://rpc-l1.jibchain.net"]},public:{http:["https://rpc-l1.jibchain.net"]}},blockExplorers:{default:{name:"Blockscout",url:"https://exp-l1.jibchain.net",apiUrl:"https://exp-l1.jibchain.net/api"}},contracts:{multicall3:{address:"0xc0C8C486D1466C57Efe13C2bf000d4c56F47CBdC",blockCreated:2299048}},testnet:!1}),ra=(0,C.a)({id:9e3,name:"Evmos Testnet",nativeCurrency:{decimals:18,name:"Evmos",symbol:"EVMOS"},rpcUrls:{default:{http:["https://eth.bd.evmos.dev:8545"]}},blockExplorers:{default:{name:"Evmos Testnet Block Explorer",url:"https://evm.evmos.dev/"}}}),ro=(0,C.a)({id:9001,name:"Evmos",nativeCurrency:{decimals:18,name:"Evmos",symbol:"EVMOS"},rpcUrls:{default:{http:["https://eth.bd.evmos.org:8545"]}},blockExplorers:{default:{name:"Evmos Block Explorer",url:"https://escan.live"}}}),ri=(0,C.a)({id:9700,name:"OORT MainnetDev",nativeCurrency:{decimals:18,name:"OORT",symbol:"OORT"},rpcUrls:{default:{http:["https://dev-rpc.oortech.com"]}},blockExplorers:{oort:{name:"OORT MainnetDev Explorer",url:"https://dev-scan.oortech.com"},default:{name:"OORT MainnetDev Explorer",url:"https://dev-scan.oortech.com"}}}),rs=(0,C.a)({id:10200,name:"Gnosis Chiado",nativeCurrency:{decimals:18,name:"Gnosis",symbol:"xDAI"},rpcUrls:{default:{http:["https://rpc.chiadochain.net"],webSocket:["wss://rpc.chiadochain.net/wss"]}},blockExplorers:{default:{name:"Blockscout",url:"https://blockscout.chiadochain.net",apiUrl:"https://blockscout.chiadochain.net/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:4967313}},testnet:!0}),rl=(0,C.a)({id:11235,name:"HAQQ Mainnet",nativeCurrency:{decimals:18,name:"Islamic Coin",symbol:"ISLM"},rpcUrls:{default:{http:["https://rpc.eth.haqq.network"]}},blockExplorers:{default:{name:"HAQQ Explorer",url:"https://explorer.haqq.network",apiUrl:"https://explorer.haqq.network/api"}}}),rc=(0,C.a)({id:12306,name:"Fibo Chain",nativeCurrency:{decimals:18,name:"fibo",symbol:"FIBO"},rpcUrls:{default:{http:["https://network.hzroc.art"]}},blockExplorers:{default:{name:"FiboScan",url:"https://scan.fibochain.org"}}}),ru=(0,C.a)({...Q,id:12553,name:"RSS3 VSL Mainnet",nativeCurrency:{name:"RSS3",symbol:"RSS3",decimals:18},rpcUrls:{default:{http:["https://rpc.rss3.io"]}},blockExplorers:{default:{name:"RSS3 VSL Mainnet Scan",url:"https://scan.rss3.io",apiUrl:"https://scan.rss3.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0xE6f24d2C32B3109B18ed33cF08eFb490b1e09C10"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14193},portal:{1:{address:"0x6A12432491bbbE8d3babf75F759766774C778Db4",blockCreated:19387057}},l1StandardBridge:{1:{address:"0x4cbab69108Aa72151EDa5A3c164eA86845f18438"}}},sourceId:1}),rd=(0,C.a)({id:13337,name:"Beam Testnet",network:"beam",nativeCurrency:{decimals:18,name:"Beam",symbol:"BEAM"},rpcUrls:{public:{http:["https://build.onbeam.com/rpc/testnet"],webSocket:["wss://build.onbeam.com/ws/testnet"]},default:{http:["https://build.onbeam.com/rpc/testnet"],webSocket:["wss://build.onbeam.com/ws/testnet"]}},blockExplorers:{default:{name:"Beam Explorer",url:"https://subnets-test.avax.network/beam"}},contracts:{multicall3:{address:"0x9bf49b704ee2a095b95c1f2d4eb9010510c41c9e",blockCreated:3}},testnet:!0}),rp=(0,C.a)({id:13381,name:"Phoenix Blockchain",nativeCurrency:{name:"Phoenix",symbol:"PHX",decimals:18},rpcUrls:{default:{http:["https://rpc.phoenixplorer.com"]}},blockExplorers:{default:{name:"Phoenixplorer",url:"https://phoenixplorer.com",apiUrl:"https://phoenixplorer.com/api"}},contracts:{multicall3:{address:"0x498cF757a575cFF2c2Ed9f532f56Efa797f86442",blockCreated:5620192}}}),rh=(0,C.a)({id:15557,name:"EOS EVM Testnet",nativeCurrency:{decimals:18,name:"EOS",symbol:"EOS"},rpcUrls:{default:{http:["https://api.testnet.evm.eosnetwork.com"]}},blockExplorers:{default:{name:"EOS EVM Testnet Explorer",url:"https://explorer.testnet.evm.eosnetwork.com",apiUrl:"https://explorer.testnet.evm.eosnetwork.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:9067940}},testnet:!0}),rf=(0,C.a)({id:17e3,name:"Holesky",nativeCurrency:{name:"Holesky Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://ethereum-holesky.publicnode.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://holesky.etherscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:77},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",blockCreated:801613},ensUniversalResolver:{address:"0xa6AC935D4971E3CD133b950aE053bECD16fE7f3b",blockCreated:973484}},testnet:!0}),rm=(0,C.a)({id:17777,name:"EOS EVM",nativeCurrency:{decimals:18,name:"EOS",symbol:"EOS"},rpcUrls:{default:{http:["https://api.evm.eosnetwork.com"]}},blockExplorers:{default:{name:"EOS EVM Explorer",url:"https://explorer.evm.eosnetwork.com",apiUrl:"https://explorer.evm.eosnetwork.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7943933}}}),rb=(0,C.a)({id:23294,name:"Oasis Sapphire",network:"sapphire",nativeCurrency:{name:"Sapphire Rose",symbol:"ROSE",decimals:18},rpcUrls:{default:{http:["https://sapphire.oasis.io"],webSocket:["wss://sapphire.oasis.io/ws"]}},blockExplorers:{default:{name:"Oasis Sapphire Explorer",url:"https://explorer.sapphire.oasis.io",apiUrl:"https://explorer.sapphire.oasis.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:734531}}}),rg=(0,C.a)({id:23295,name:"Oasis Sapphire Testnet",network:"sapphire-testnet",nativeCurrency:{name:"Sapphire Test Rose",symbol:"TEST",decimals:18},rpcUrls:{default:{http:["https://testnet.sapphire.oasis.dev"],webSocket:["wss://testnet.sapphire.oasis.dev/ws"]}},blockExplorers:{default:{name:"Oasis Sapphire Testnet Explorer",url:"https://testnet.explorer.sapphire.oasis.dev",apiUrl:"https://testnet.explorer.sapphire.oasis.dev/api"}},testnet:!0}),ry=(0,C.a)({id:31337,name:"Anvil",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"],webSocket:["ws://127.0.0.1:8545"]}}}),rv=(0,C.a)({id:31337,name:"Foundry",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"],webSocket:["ws://127.0.0.1:8545"]}}}),rw=(0,C.a)({id:32769,name:"Zilliqa",network:"zilliqa",nativeCurrency:{name:"Zilliqa",symbol:"ZIL",decimals:18},rpcUrls:{default:{http:["https://api.zilliqa.com"]}},blockExplorers:{default:{name:"Ethernal",url:"https://evmx.zilliqa.com"}},testnet:!1}),rC=(0,C.a)({id:33101,name:"Zilliqa Testnet",network:"zilliqa-testnet",nativeCurrency:{name:"Zilliqa",symbol:"ZIL",decimals:18},rpcUrls:{default:{http:["https://dev-api.zilliqa.com"]}},blockExplorers:{default:{name:"Ethernal",url:"https://evmx.testnet.zilliqa.com"}},testnet:!0}),rE=(0,C.a)({id:34443,name:"Mode Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.mode.network"]}},blockExplorers:{default:{name:"Mode Explorer",url:"https://explorer.mode.network"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:2465882}}}),rx=(0,C.a)({id:35441,name:"Q Mainnet",nativeCurrency:{decimals:18,name:"Q",symbol:"Q"},rpcUrls:{default:{http:["https://rpc.q.org"]}},blockExplorers:{default:{name:"Q Mainnet Explorer",url:"https://explorer.q.org",apiUrl:"https://explorer.q.org/api"}}}),rA=(0,C.a)({id:35443,name:"Q Testnet",nativeCurrency:{decimals:18,name:"Q",symbol:"Q"},rpcUrls:{default:{http:["https://rpc.qtestnet.org"]}},blockExplorers:{default:{name:"Q Testnet Explorer",url:"https://explorer.qtestnet.org",apiUrl:"https://explorer.qtestnet.org/api"}},testnet:!0}),rk=(0,C.a)({id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io",apiUrl:"https://api.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}}}),rB=(0,C.a)({id:42170,name:"Arbitrum Nova",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://nova.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://nova.arbiscan.io",apiUrl:"https://api-nova.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1746963}}});function isEmpty(e){return 0===e||0n===e||null==e||"0"===e||""===e||"string"==typeof e&&("0x"===(0,z.f)(e).toLowerCase()||"0x00"===(0,z.f)(e).toLowerCase())}function isPresent(e){return!isEmpty(e)}function isEIP1559(e){return void 0!==e.maxFeePerGas&&void 0!==e.maxPriorityFeePerGas}function isCIP42(e){return"cip42"===e.type||isEIP1559(e)&&(isPresent(e.feeCurrency)||isPresent(e.gatewayFeeRecipient)||isPresent(e.gatewayFee))}function isCIP64(e){return"cip64"===e.type||isEIP1559(e)&&isPresent(e.feeCurrency)&&isEmpty(e.gatewayFee)&&isEmpty(e.gatewayFeeRecipient)}let rS={block:(0,B.G)({exclude:["difficulty","gasLimit","mixHash","nonce","uncles"],format(e){let t=e.transactions?.map(e=>"string"==typeof e?e:{...S.Tr(e),feeCurrency:e.feeCurrency,..."0x7b"!==e.type?{gatewayFee:e.gatewayFee?k.y_(e.gatewayFee):null,gatewayFeeRecipient:e.gatewayFeeRecipient||null}:{}});return{randomness:e.randomness,transactions:t}}}),transaction:(0,S.y_)({format(e){let t={feeCurrency:e.feeCurrency};return"0x7b"===e.type?t.type="cip64":("0x7c"===e.type&&(t.type="cip42"),t.gatewayFee=e.gatewayFee?(0,k.y_)(e.gatewayFee):null,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}}),transactionRequest:(0,eF.iy)({format(e){let t={feeCurrency:e.feeCurrency};return isCIP64(e)?t.type="0x7b":(isCIP42(e)&&(t.type="0x7c"),t.gatewayFee=void 0!==e.gatewayFee?(0,O.eC)(e.gatewayFee):void 0,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}})},rI=2n**256n-1n,rj={formatters:rS,serializers:{transaction:function(e,t){return isCIP64(e)?function(e,t){!function(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:o,maxFeePerGas:i,to:s,feeCurrency:l}=e;if(t<=0)throw new q.hJ({chainId:t});if(s&&!(0,P.U)(s))throw new T.b({address:s});if(o)throw new R.G("`gasPrice` is not a valid CIP-64 Transaction attribute.");if(isPresent(i)&&i>rI)throw new G.Hh({maxFeePerGas:i});if(isPresent(n)&&isPresent(i)&&n>i)throw new G.cs({maxFeePerGas:i,maxPriorityFeePerGas:n});if(isPresent(l)&&!(0,P.U)(l))throw new R.G("`feeCurrency` MUST be a token address for CIP-64 transactions.");if(isEmpty(l))throw new R.G("`feeCurrency` must be provided for CIP-64 transactions.")}(e);let{chainId:n,gas:o,nonce:i,to:s,value:l,maxFeePerGas:c,maxPriorityFeePerGas:u,accessList:d,feeCurrency:p,data:f}=e,m=[(0,O.NC)(n),i?(0,O.NC)(i):"0x",u?(0,O.NC)(u):"0x",c?(0,O.NC)(c):"0x",o?(0,O.NC)(o):"0x",s??"0x",l?(0,O.NC)(l):"0x",f??"0x",serializeAccessList(d),p,...toYParitySignatureArray(e,t)];return(0,M.SM)(["0x7b",toRlp(m)])}(e,t):isCIP42(e)?function(e,t){!function(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:o,maxFeePerGas:i,to:s,feeCurrency:l,gatewayFee:c,gatewayFeeRecipient:u}=e;if(t<=0)throw new q.hJ({chainId:t});if(s&&!(0,P.U)(s))throw new T.b({address:s});if(o)throw new R.G("`gasPrice` is not a valid CIP-42 Transaction attribute.");if(isPresent(i)&&i>rI)throw new G.Hh({maxFeePerGas:i});if(isPresent(n)&&isPresent(i)&&n>i)throw new G.cs({maxFeePerGas:i,maxPriorityFeePerGas:n});if(isPresent(c)&&isEmpty(u)||isPresent(u)&&isEmpty(c))throw new R.G("`gatewayFee` and `gatewayFeeRecipient` must be provided together.");if(isPresent(l)&&!(0,P.U)(l))throw new R.G("`feeCurrency` MUST be a token address for CIP-42 transactions.");if(isPresent(u)&&!(0,P.U)(u))throw new T.b(u);if(isEmpty(l)&&isEmpty(u))throw new R.G("Either `feeCurrency` or `gatewayFeeRecipient` must be provided for CIP-42 transactions.")}(e);let{chainId:n,gas:o,nonce:i,to:s,value:l,maxFeePerGas:c,maxPriorityFeePerGas:u,accessList:d,feeCurrency:p,gatewayFeeRecipient:f,gatewayFee:m,data:b}=e,g=[(0,O.NC)(n),i?(0,O.NC)(i):"0x",u?(0,O.NC)(u):"0x",c?(0,O.NC)(c):"0x",o?(0,O.NC)(o):"0x",p??"0x",f??"0x",m?(0,O.NC)(m):"0x",s??"0x",l?(0,O.NC)(l):"0x",b??"0x",serializeAccessList(d),...toYParitySignatureArray(e,t)];return(0,M.SM)(["0x7c",toRlp(g)])}(e,t):serializeTransaction(e,t)}}},rT=(0,C.a)({...rj,id:42220,name:"Celo",nativeCurrency:{decimals:18,name:"CELO",symbol:"CELO"},rpcUrls:{default:{http:["https://forno.celo.org"]}},blockExplorers:{default:{name:"Celo Explorer",url:"https://explorer.celo.org/mainnet",apiUrl:"https://explorer.celo.org/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:13112599}},testnet:!1}),rP=(0,C.a)({id:42766,name:"ZKFair Mainnet",network:"zkfair-mainnet",nativeCurrency:{decimals:18,name:"USD Coin",symbol:"USDC"},rpcUrls:{default:{http:["https://rpc.zkfair.io"]},public:{http:["https://rpc.zkfair.io"]}},blockExplorers:{default:{name:"zkFair Explorer",url:"https://scan.zkfair.io",apiUrl:"https://scan.zkfair.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:6090959}},testnet:!1}),rM=(0,C.a)({id:43113,name:"Avalanche Fuji",nativeCurrency:{decimals:18,name:"Avalanche Fuji",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax-test.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowScan",url:"https://testnet.snowscan.xyz",apiUrl:"https://api-testnet.snowscan.xyz"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7096959}},testnet:!0}),rO=(0,C.a)({id:43114,name:"Avalanche",nativeCurrency:{decimals:18,name:"Avalanche",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowScan",url:"https://snowscan.xyz",apiUrl:"https://api.snowscan.xyz/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}}}),rR=(0,C.a)({id:43851,name:"ZKFair Testnet",network:"zkfair-testnet",nativeCurrency:{decimals:18,name:"USD Coin",symbol:"USDC"},rpcUrls:{default:{http:["https://testnet-rpc.zkfair.io"]},public:{http:["https://testnet-rpc.zkfair.io"]}},blockExplorers:{default:{name:"zkFair Explorer",url:"https://testnet-scan.zkfair.io"}},testnet:!0}),rU=(0,C.a)({...rj,id:44787,name:"Alfajores",nativeCurrency:{decimals:18,name:"CELO",symbol:"A-CELO"},rpcUrls:{default:{http:["https://alfajores-forno.celo-testnet.org"]}},blockExplorers:{default:{name:"Celo Explorer",url:"https://explorer.celo.org/alfajores",apiUrl:"https://explorer.celo.org/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:14569001}},testnet:!0}),rF=(0,C.a)({id:53935,name:"DFK Chain",nativeCurrency:{decimals:18,name:"Jewel",symbol:"JEWEL"},rpcUrls:{default:{http:["https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"]}},blockExplorers:{default:{name:"DFKSubnetScan",url:"https://subnets.avax.network/defi-kingdoms"}}}),rN=(0,C.a)({id:54211,name:"HAQQ Testedge 2",nativeCurrency:{decimals:18,name:"Islamic Coin",symbol:"ISLMT"},rpcUrls:{default:{http:["https://rpc.eth.testedge2.haqq.network"]}},blockExplorers:{default:{name:"HAQQ Explorer",url:"https://explorer.testedge2.haqq.network",apiUrl:"https://explorer.testedge2.haqq.network/api"}}}),rD=(0,C.a)({id:57e3,name:"Rollux Testnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc-tanenbaum.rollux.com/"],webSocket:["wss://rpc-tanenbaum.rollux.com/wss"]}},blockExplorers:{default:{name:"RolluxTestnetExplorer",url:"https://rollux.tanenbaum.io",apiUrl:"https://rollux.tanenbaum.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1813675}}}),r_=(0,C.a)({id:58008,network:"pgn-testnet",name:"PGN ",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.publicgoods.network"]}},blockExplorers:{default:{name:"PGN Testnet Explorer",url:"https://explorer.sepolia.publicgoods.network",apiUrl:"https://explorer.sepolia.publicgoods.network/api"},blocksout:{name:"PGN Testnet Explorer",url:"https://explorer.sepolia.publicgoods.network",apiUrl:"https://explorer.sepolia.publicgoods.network/api"}},contracts:{l2OutputOracle:{11155111:{address:"0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe"}},portal:{11155111:{address:"0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179"}},l1StandardBridge:{11155111:{address:"0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3754925}},formatters:j,sourceId:11155111,testnet:!0}),rL=(0,C.a)({id:59140,name:"Linea Goerli Testnet",nativeCurrency:{name:"Linea Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.goerli.linea.build"],webSocket:["wss://rpc.goerli.linea.build"]}},blockExplorers:{default:{name:"Etherscan",url:"https://goerli.lineascan.build",apiUrl:"https://goerli.lineascan.build/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:498623}},testnet:!0}),rz=(0,C.a)({id:59144,name:"Linea Mainnet",nativeCurrency:{name:"Linea Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.linea.build"],webSocket:["wss://rpc.linea.build"]}},blockExplorers:{default:{name:"Etherscan",url:"https://lineascan.build",apiUrl:"https://api.lineascan.build/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:42}},testnet:!1}),rq=(0,C.a)({id:64240,name:"Fantom Sonic Open Testnet",network:"fantom-sonic-testnet",nativeCurrency:{decimals:18,name:"Fantom",symbol:"FTM"},rpcUrls:{default:{http:["https://rpcapi.sonic.fantom.network"]}},blockExplorers:{default:{name:"Fantom Sonic Open Testnet Explorer",url:"https://public-sonic.fantom.network"}},testnet:!0}),rG=(0,C.a)({id:80001,name:"Polygon Mumbai",nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},rpcUrls:{default:{http:["https://rpc.ankr.com/polygon_mumbai"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://mumbai.polygonscan.com",apiUrl:"https://mumbai.polygonscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}},testnet:!0}),rW=(0,C.a)({id:80002,name:"Polygon Amoy",nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"OK LINK",url:"https://www.oklink.com/amoy"}},testnet:!0}),rH=(0,C.a)({id:80085,name:"Berachain Artio",nativeCurrency:{decimals:18,name:"BERA Token",symbol:"BERA"},rpcUrls:{default:{http:["https://artio.rpc.berachain.com"]}},blockExplorers:{default:{name:"Berachain",url:"https://artio.beratrail.io"}},testnet:!0}),rQ=(0,C.a)({id:81457,name:"Blast",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://rpc.blast.io"]}},blockExplorers:{default:{name:"Blastscan",url:"https://blastscan.io"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:212929}},sourceId:1}),rK=(0,C.a)({...Q,id:84531,name:"Base Goerli",nativeCurrency:{name:"Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://goerli.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://goerli.basescan.org",apiUrl:"https://goerli.basescan.org/api"}},contracts:{...Q.contracts,l2OutputOracle:{5:{address:"0x2A35891ff30313CcFa6CE88dcf3858bb075A2298"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1376988},portal:{5:{address:"0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA"}},l1StandardBridge:{5:{address:"0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a"}}},testnet:!0,sourceId:5}),rV=(0,C.a)({...Q,id:84532,network:"base-sepolia",name:"Base Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://sepolia.basescan.org",apiUrl:"https://api-sepolia.basescan.org/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"}},portal:{11155111:{address:"0x49f53e41452c74589e85ca1677426ba426459e85",blockCreated:4446677}},l1StandardBridge:{11155111:{address:"0xfd0Bf71F60660E2f608ed56e1659C450eB113120",blockCreated:4446677}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1059647}},testnet:!0,sourceId:11155111}),rZ=(0,C.a)({id:88882,name:"Chiliz Spicy Testnet",network:"chiliz-spicy-Testnet",nativeCurrency:{decimals:18,name:"CHZ",symbol:"CHZ"},rpcUrls:{default:{http:["https://spicy-rpc.chiliz.com","https://chiliz-spicy.publicnode.com"],webSocket:["wss://spicy-rpc-ws.chiliz.com","wss://chiliz-spicy.publicnode.com"]}},blockExplorers:{default:{name:"Chiliz Explorer",url:"http://spicy-explorer.chiliz.com",apiUrl:"http://spicy-explorer.chiliz.com/api"}},testnet:!0}),rJ=(0,C.a)({id:88888,name:"Chiliz Chain",network:"chiliz-chain",nativeCurrency:{decimals:18,name:"CHZ",symbol:"CHZ"},rpcUrls:{default:{http:["https://rpc.ankr.com/chiliz","https://chiliz.publicnode.com"]}},blockExplorers:{default:{name:"Chiliz Explorer",url:"https://scan.chiliz.com",apiUrl:"https://scan.chiliz.com/api"}}}),rX=(0,C.a)({id:100009,name:"Vechain",nativeCurrency:{name:"VeChain",symbol:"VET",decimals:18},rpcUrls:{default:{http:["https://mainnet.vechain.org"]}},blockExplorers:{default:{name:"Vechain Explorer",url:"https://explore.vechain.org"},vechainStats:{name:"Vechain Stats",url:"https://vechainstats.com"}}}),rY=(0,C.a)({id:105105,name:"Stratis Mainnet",network:"stratis",nativeCurrency:{name:"Stratis",symbol:"STRAX",decimals:18},rpcUrls:{default:{http:["https://rpc.stratisevm.com"]}},blockExplorers:{default:{name:"Stratis Explorer",url:"https://explorer.stratisevm.com"}}}),r$=(0,C.a)({id:128123,name:"Etherlink Testnet",nativeCurrency:{decimals:18,name:"Tez",symbol:"XTZ"},rpcUrls:{default:{http:["https://node.ghostnet.etherlink.com"]}},blockExplorers:{default:{name:"Etherlink Testnet",url:"https://testnet-explorer.etherlink.com"}},testnet:!0}),r0=(0,C.a)({id:167005,name:"Taiko (Alpha-3 Testnet)",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.test.taiko.xyz"]}},blockExplorers:{default:{name:"blockscout",url:"https://explorer.test.taiko.xyz"}}}),r1=(0,C.a)({id:167007,name:"Taiko Jolnir (Alpha-5 Testnet)",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.jolnir.taiko.xyz"]}},blockExplorers:{default:{name:"blockscout",url:"https://explorer.jolnir.taiko.xyz"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:732706}},testnet:!0}),r6=(0,C.a)({id:167008,name:"Taiko Katla (Alpha-6 Testnet)",network:"tko-katla",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.katla.taiko.xyz"]},public:{http:["https://rpc.katla.taiko.xyz"]}},blockExplorers:{default:{name:"blockscout",url:"https://explorer.katla.taiko.xyz"}}}),r3=(0,C.a)({id:205205,name:"Auroria Testnet",network:"auroria",nativeCurrency:{name:"Auroria Stratis",symbol:"tSTRAX",decimals:18},rpcUrls:{default:{http:["https://auroria.rpc.stratisevm.com"]}},blockExplorers:{default:{name:"Auroria Testnet Explorer",url:"https://auroria.explorer.stratisevm.com"}},testnet:!0}),r2=(0,C.a)({id:314159,name:"Filecoin Calibration",nativeCurrency:{decimals:18,name:"testnet filecoin",symbol:"tFIL"},rpcUrls:{default:{http:["https://api.calibration.node.glif.io/rpc/v1"]}},blockExplorers:{default:{name:"Filscan",url:"https://calibration.filscan.io"}}}),r7=(0,C.a)({id:421613,name:"Arbitrum Goerli",nativeCurrency:{name:"Arbitrum Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://goerli-rollup.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://goerli.arbiscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:88114}},testnet:!0}),r8=(0,C.a)({id:421614,name:"Arbitrum Sepolia",nativeCurrency:{name:"Arbitrum Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rollup.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://sepolia.arbiscan.io",apiUrl:"https://api-sepolia.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:81930}},testnet:!0}),r5=(0,C.a)({id:534351,name:"Scroll Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rpc.scroll.io"]}},blockExplorers:{default:{name:"Blockscout",url:"https://sepolia-blockscout.scroll.io",apiUrl:"https://sepolia-blockscout.scroll.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:9473}},testnet:!0}),r4=(0,C.a)({id:534352,name:"Scroll",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.scroll.io"],webSocket:["wss://wss-rpc.scroll.io/ws"]}},blockExplorers:{default:{name:"Scrollscan",url:"https://scrollscan.com",apiUrl:"https://api.scrollscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14}},testnet:!1}),r9=(0,C.a)({id:534353,name:"Scroll Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://alpha-rpc.scroll.io/l2"],webSocket:["wss://alpha-rpc.scroll.io/l2/ws"]}},blockExplorers:{default:{name:"Blockscout",url:"https://blockscout.scroll.io",apiUrl:"https://blockscout.scroll.io/api"}},testnet:!0}),ne=(0,C.a)({id:641230,name:"Bear Network Chain Mainnet",nativeCurrency:{decimals:18,name:"BearNetworkChain",symbol:"BRNKC"},rpcUrls:{default:{http:["https://brnkc-mainnet.bearnetwork.net"]}},blockExplorers:{default:{name:"BrnkScan",url:"https://brnkscan.bearnetwork.net",apiUrl:"https://brnkscan.bearnetwork.net/api"}}}),nt=(0,C.a)({id:751230,name:"Bear Network Chain Testnet",nativeCurrency:{decimals:18,name:"tBRNKC",symbol:"tBRNKC"},rpcUrls:{default:{http:["https://brnkc-test.bearnetwork.net"]}},blockExplorers:{default:{name:"BrnkTestScan",url:"https://brnktest-scan.bearnetwork.net",apiUrl:"https://brnktest-scan.bearnetwork.net/api"}},testnet:!0}),nr=(0,C.a)({id:1337803,name:"Zhejiang",nativeCurrency:{name:"Zhejiang Ether",symbol:"ZhejETH",decimals:18},rpcUrls:{default:{http:["https://rpc.zhejiang.ethpandaops.io"]}},blockExplorers:{default:{name:"Beaconchain",url:"https://zhejiang.beaconcha.in"}},testnet:!0}),nn=(0,C.a)({id:3441005,name:"Manta Pacific Testnet",network:"manta-testnet",nativeCurrency:{decimals:18,name:"ETH",symbol:"ETH"},rpcUrls:{default:{http:["https://manta-testnet.calderachain.xyz/http"]}},blockExplorers:{default:{name:"Manta Testnet Explorer",url:"https://pacific-explorer.testnet.manta.network",apiUrl:"https://pacific-explorer.testnet.manta.network/api"}},contracts:{multicall3:{address:"0x211B1643b95Fe76f11eD8880EE810ABD9A4cf56C",blockCreated:419915}},testnet:!0}),na=(0,C.a)({id:6038361,name:"Astar zkEVM Testnet zKyoto",network:"zKyoto",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.startale.com/zkyoto"]}},blockExplorers:{default:{name:"zKyoto Explorer",url:"https://astar-zkyoto.blockscout.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:196153}},testnet:!0}),no=(0,C.a)({...Q,id:7777777,name:"Zora",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://rpc.zora.energy"],webSocket:["wss://rpc.zora.energy"]}},blockExplorers:{default:{name:"Explorer",url:"https://explorer.zora.energy",apiUrl:"https://explorer.zora.energy/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0x9E6204F750cD866b299594e2aC9eA824E2e5f95c"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:5882},portal:{1:{address:"0x1a0ad011913A150f69f6A19DF447A0CfD9551054"}},l1StandardBridge:{1:{address:"0x3e2Ea9B92B7E48A52296fD261dc26fd995284631"}}},sourceId:1}),ni=(0,C.a)({id:11155111,name:"Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"SEP",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io",apiUrl:"https://api-sepolia.etherscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:751532},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC",blockCreated:5317080}},testnet:!0}),ns=(0,C.a)({...Q,id:11155420,name:"OP Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.optimism.io"]}},blockExplorers:{default:{name:"Blockscout",url:"https://optimism-sepolia.blockscout.com",apiUrl:"https://optimism-sepolia.blockscout.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1620204},portal:{11155111:{address:"0x16Fc5058F25648194471939df75CF27A2fdC48BC"}},l1StandardBridge:{11155111:{address:"0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1"}}},testnet:!0,sourceId:11155111}),nl=(0,C.a)({...Q,id:28122024,name:"Ancient8 Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpcv2-testnet.ancient8.gg"]}},blockExplorers:{default:{name:"Ancient8 Celestia Testnet explorer",url:"https://scanv2-testnet.ancient8.gg",apiUrl:"https://scanv2-testnet.ancient8.gg/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB"}},portal:{11155111:{address:"0xfa1d9E26A6aCD7b22115D27572c1221B9803c960",blockCreated:4972908}},l1StandardBridge:{11155111:{address:"0xF6Bc0146d3c74D48306e79Ae134A260E418C9335",blockCreated:4972908}}},sourceId:11155111}),nc=(0,C.a)({id:37084624,name:"SKALE Nebula Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/lanky-ill-funny-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:105141}},testnet:!0}),nu=(0,C.a)({id:161221135,name:"Plume Testnet",nativeCurrency:{name:"Plume Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://plume-testnet.rpc.caldera.xyz/http"],webSocket:["wss://plume-testnet.rpc.caldera.xyz/ws"]}},blockExplorers:{default:{name:"Blockscout",url:"https://plume-testnet.explorer.caldera.xyz",apiUrl:"https://plume-testnet.explorer.caldera.xyz/api"}},testnet:!0,sourceId:11155111}),nd=(0,C.a)({id:168587773,name:"Blast Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.blast.io"]}},blockExplorers:{default:{name:"Blastscan",url:"https://testnet.blastscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:756690}},testnet:!0,sourceId:11155111}),np=(0,C.a)({id:245022926,name:"Neon EVM DevNet",nativeCurrency:{name:"NEON",symbol:"NEON",decimals:18},rpcUrls:{default:{http:["https://devnet.neonevm.org"]}},blockExplorers:{default:{name:"Neonscan",url:"https://devnet.neonscan.org"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:205206112}},testnet:!0}),nh=(0,C.a)({id:245022934,network:"neonMainnet",name:"Neon EVM MainNet",nativeCurrency:{name:"NEON",symbol:"NEON",decimals:18},rpcUrls:{default:{http:["https://neon-proxy-mainnet.solana.p2p.org"]}},blockExplorers:{default:{name:"Neonscan",url:"https://neonscan.org"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:206545524}},testnet:!1}),nf=(0,C.a)({id:278611351,name:"SKALE | Razor Network",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/turbulent-unique-scheat"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/turbulent-unique-scheat"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://turbulent-unique-scheat.explorer.mainnet.skalenodes.com"}},contracts:{}}),nm=(0,C.a)({id:391845894,name:"SKALE | Block Brawlers",nativeCurrency:{name:"BRAWL",symbol:"BRAWL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/frayed-decent-antares"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/frayed-decent-antares"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://frayed-decent-antares.explorer.mainnet.skalenodes.com"}},contracts:{}}),nb=(0,C.a)({...Q,id:888888888,name:"Ancient8",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.ancient8.gg"]}},blockExplorers:{default:{name:"Ancient8 explorer",url:"https://scan.ancient8.gg",apiUrl:"https://scan.ancient8.gg/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0xB09DC08428C8b4EFB4ff9C0827386CDF34277996"}},portal:{1:{address:"0x639F2AECE398Aa76b07e59eF6abe2cFe32bacb68",blockCreated:19070571}},l1StandardBridge:{1:{address:"0xd5e3eDf5b68135D559D572E26bF863FBC1950033",blockCreated:19070571}}},sourceId:1}),ng=(0,C.a)({id:974399131,name:"SKALE Calypso Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/giant-half-dual-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/giant-half-dual-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://giant-half-dual-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:103220}},testnet:!0}),ny=(0,C.a)({...Q,id:999999999,name:"Zora Sepolia",network:"zora-sepolia",nativeCurrency:{decimals:18,name:"Zora Sepolia",symbol:"ETH"},rpcUrls:{default:{http:["https://sepolia.rpc.zora.energy"],webSocket:["wss://sepolia.rpc.zora.energy"]}},blockExplorers:{default:{name:"Zora Sepolia Explorer",url:"https://sepolia.explorer.zora.energy/",apiUrl:"https://sepolia.explorer.zora.energy/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:83160},portal:{11155111:{address:"0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f"}},l1StandardBridge:{11155111:{address:"0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB"}}},sourceId:11155111,testnet:!0}),nv=(0,C.a)({id:1020352220,name:"SKALE Titan Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/aware-fake-trim-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/aware-fake-trim-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:104072}},testnet:!0}),nw=(0,C.a)({id:1026062157,name:"SKALE | CryptoBlades",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/affectionate-immediate-pollux"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/affectionate-immediate-pollux"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://affectionate-immediate-pollux.explorer.mainnet.skalenodes.com"}},contracts:{}}),nC=(0,C.a)({id:2046399126,name:"SKALE | Crypto Colosseum",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/haunting-devoted-deneb"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/haunting-devoted-deneb"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://haunting-devoted-deneb.explorer.mainnet.skalenodes.com"}},contracts:{}}),nE=(0,C.a)({id:1273227453,name:"SKALE | Human Protocol",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/wan-red-ain"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/wan-red-ain"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://wan-red-ain.explorer.mainnet.skalenodes.com"}},contracts:{}}),nx=(0,C.a)({id:1313161554,name:"Aurora",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://mainnet.aurora.dev"]}},blockExplorers:{default:{name:"Aurorascan",url:"https://aurorascan.dev",apiUrl:"https://aurorascan.dev/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:62907816}}}),nA=(0,C.a)({id:1313161555,name:"Aurora Testnet",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://testnet.aurora.dev"]}},blockExplorers:{default:{name:"Aurorascan",url:"https://testnet.aurorascan.dev",apiUrl:"https://testnet.aurorascan.dev/api"}},testnet:!0}),nk=(0,C.a)({id:1350216234,name:"SKALE | Titan Community Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/parallel-stormy-spica"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://parallel-stormy-spica.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:2076458}}}),nB=(0,C.a)({id:1444673419,name:"SKALE Europa Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/juicy-low-small-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/juicy-low-small-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://juicy-low-small-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:110858}},testnet:!0}),nS=(0,C.a)({id:1482601649,name:"SKALE | Nebula Gaming Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/green-giddy-denebola"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/green-giddy-denebola"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://green-giddy-denebola.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:2372986}}}),nI=(0,C.a)({id:1564830818,name:"SKALE | Calypso NFT Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/honorable-steel-rasalhague"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3107626}}}),nj=(0,C.a)({id:16666e5,name:"Harmony One",nativeCurrency:{name:"Harmony",symbol:"ONE",decimals:18},rpcUrls:{default:{http:["https://rpc.ankr.com/harmony"]}},blockExplorers:{default:{name:"Harmony Explorer",url:"https://explorer.harmony.one"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:24185753}}}),nT=(0,C.a)({id:2046399126,name:"SKALE | Europa Liquidity Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/elated-tan-skat"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/elated-tan-skat"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://elated-tan-skat.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3113495}}}),nP=(0,C.a)({id:2139927552,name:"SKALE | Exorde",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/light-vast-diphda"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/light-vast-diphda"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://light-vast-diphda.explorer.mainnet.skalenodes.com"}},contracts:{}}),nM=(0,C.a)({id:11297108099,name:"Palm Testnet",nativeCurrency:{decimals:18,name:"PALM",symbol:"PALM"},rpcUrls:{default:{http:["https://palm-mainnet.public.blastapi.io"],webSocket:["wss://palm-mainnet.public.blastapi.io"]}},blockExplorers:{default:{name:"Chainlens",url:"https://palm.chainlens.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15429248}},testnet:!0}),nO=(0,C.a)({id:11297108109,name:"Palm",nativeCurrency:{decimals:18,name:"PALM",symbol:"PALM"},rpcUrls:{default:{http:["https://palm-mainnet.public.blastapi.io"],webSocket:["wss://palm-mainnet.public.blastapi.io"]}},blockExplorers:{default:{name:"Chainlens",url:"https://palm.chainlens.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15429248}}}),nR=(0,C.a)({id:107107114116,name:"Kakarot Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rpc.kakarot.org"]}},blockExplorers:{default:{name:"Kakarot Scan",url:"https://sepolia.kakarotscan.org"}},testnet:!0}),nU={...E,id:8996,name:"Ganache",network:"ganache",rpcUrls:{default:{http:["http://127.0.0.1:8545"]}}},nF=[x.R,A,K,V,Z,J,X,Y,$,ee,et,er,en,ea,eo,ei,es,el,ec,eu,ed,ep,eh,ef,em,eb,eg,ey,ev,ew,eC,eE,ex,eA,ek,eB,eS,eI,ej,eT,eP,eM,eO,eR,e_,eL,ez,eq,eG,eW,eH,eQ,eK,eV,eZ,eJ,eX,eY,e$,e0,e1,e6,e3,e2,e7,e8,e5,e4,e9,te,tt,tr,tn,ta,to,ti,ts,tl,tc,tu,td,tp,th,tf,tm,tb,tg,ty,tv,tw,tC,tE,tx,tA,tk,tB,tS,tI,tj,tT,tP,tM,tO,tR,tU,tF,tN,tD,t_,tL,tz,tq,tG,tW,tH,tQ,tK,tV,tZ,tJ,tX,tY,t$,t0,t1,t6,t3,t2,t7,t8,t5,t4,t9,re,rt,rr,rn,ra,ro,ri,rs,rl,rc,ru,rd,rp,rh,rf,rm,rb,rg,ry,rv,E,rw,rC,rE,rx,rA,rk,rB,rT,rP,rM,rO,rR,rU,rF,rN,rD,r_,rL,rz,rq,rG,rW,rH,rQ,rK,rV,rZ,rJ,rX,rY,r$,r0,r1,r6,r3,r2,r7,r8,r5,r4,r9,ne,nt,nr,nn,na,no,ni,ns,nl,nc,nu,nd,np,nh,nf,nm,nb,ng,ny,nv,nw,nC,nE,nx,nA,nk,nB,nS,nI,nj,nT,nP,nM,nO,nR,nU];var nN=n(27061);function App(e){let{Component:t,pageProps:n}=e,c=(0,s.vX)({appName:"Ocean Node Dashboard",projectId:nN.env.NEXT_PUBLIC_WALLET_CONNECT_ID?nN.env.NEXT_PUBLIC_WALLET_CONNECT_ID:"da267f7e1897e2cf92a7710f92e8f660",chains:nF,ssr:!0}),u=new v;return(0,o.jsx)(l.F,{config:c,children:(0,o.jsx)(w.aH,{client:u,children:(0,o.jsx)(s.pj,{children:(0,o.jsx)(i.I,{children:(0,o.jsx)(t,{...n})})})})})}},56953:function(){},32352:function(){},92592:function(e,t,n){let o=n(47138),i=n(95115),s=n(6907),l=n(93776);function renderCanvas(e,t,n,s,l){let c=[].slice.call(arguments,1),u=c.length,d="function"==typeof c[u-1];if(!d&&!o())throw Error("Callback required as last argument");if(d){if(u<2)throw Error("Too few arguments provided");2===u?(l=n,n=t,t=s=void 0):3===u&&(t.getContext&&void 0===l?(l=s,s=void 0):(l=s,s=n,n=t,t=void 0))}else{if(u<1)throw Error("Too few arguments provided");return 1===u?(n=t,t=s=void 0):2!==u||t.getContext||(s=n,n=t,t=void 0),new Promise(function(o,l){try{let l=i.create(n,s);o(e(l,t,s))}catch(e){l(e)}})}try{let o=i.create(n,s);l(null,e(o,t,s))}catch(e){l(e)}}t.create=i.create,t.toCanvas=renderCanvas.bind(null,s.render),t.toDataURL=renderCanvas.bind(null,s.renderToDataURL),t.toString=renderCanvas.bind(null,function(e,t,n){return l.render(e,n)})},47138:function(e){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},21845:function(e,t,n){let o=n(10242).getSymbolSize;t.getRowColCoords=function(e){if(1===e)return[];let t=Math.floor(e/7)+2,n=o(e),i=145===n?26:2*Math.ceil((n-13)/(2*t-2)),s=[n-7];for(let e=1;e>>7-e%8&1)==1},put:function(e,t){for(let n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},e.exports=BitBuffer},73280:function(e){function BitMatrix(e){if(!e||e<1)throw Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}BitMatrix.prototype.set=function(e,t,n,o){let i=e*this.size+t;this.data[i]=n,o&&(this.reservedBit[i]=!0)},BitMatrix.prototype.get=function(e,t){return this.data[e*this.size+t]},BitMatrix.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},BitMatrix.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},e.exports=BitMatrix},43424:function(e,t,n){let o=n(62378),i=n(76910);function ByteData(e){this.mode=i.BYTE,"string"==typeof e&&(e=o(e)),this.data=new Uint8Array(e)}ByteData.getBitsLength=function(e){return 8*e},ByteData.prototype.getLength=function(){return this.data.length},ByteData.prototype.getBitsLength=function(){return ByteData.getBitsLength(this.data.length)},ByteData.prototype.write=function(e){for(let t=0,n=this.data.length;t=0&&e.bit<4},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw Error("Param is not a string");let n=e.toLowerCase();switch(n){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw Error("Unknown EC Level: "+e)}}(e)}catch(e){return n}}},76526:function(e,t,n){let o=n(10242).getSymbolSize;t.getPositions=function(e){let t=o(e);return[[0,0],[t-7,0],[0,t-7]]}},61642:function(e,t,n){let o=n(10242),i=o.getBCHDigit(1335);t.getEncodedBits=function(e,t){let n=e.bit<<3|t,s=n<<10;for(;o.getBCHDigit(s)-i>=0;)s^=1335<=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");n=(n>>>8&255)*192+(255&n),e.put(n,13)}},e.exports=KanjiData},27126:function(e,t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};let n={N1:3,N2:3,N3:40,N4:10};t.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},t.from=function(e){return t.isValid(e)?parseInt(e,10):void 0},t.getPenaltyN1=function(e){let t=e.size,o=0,i=0,s=0,l=null,c=null;for(let u=0;u=5&&(o+=n.N1+(i-5)),l=t,i=1),(t=e.get(d,u))===c?s++:(s>=5&&(o+=n.N1+(s-5)),c=t,s=1)}i>=5&&(o+=n.N1+(i-5)),s>=5&&(o+=n.N1+(s-5))}return o},t.getPenaltyN2=function(e){let t=e.size,o=0;for(let n=0;n=10&&(1488===i||93===i)&&o++,s=s<<1&2047|e.get(l,n),l>=10&&(1488===s||93===s)&&o++}return o*n.N3},t.getPenaltyN4=function(e){let t=0,o=e.data.length;for(let n=0;n=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},t.getBestModeForData=function(e){return i.testNumeric(e)?t.NUMERIC:i.testAlphanumeric(e)?t.ALPHANUMERIC:i.testKanji(e)?t.KANJI:t.BYTE},t.toString=function(e){if(e&&e.id)return e.id;throw Error("Invalid mode")},t.isValid=function(e){return e&&e.bit&&e.ccBits},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw Error("Param is not a string");let n=e.toLowerCase();switch(n){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw Error("Unknown mode: "+e)}}(e)}catch(e){return n}}},41085:function(e,t,n){let o=n(76910);function NumericData(e){this.mode=o.NUMERIC,this.data=e.toString()}NumericData.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},NumericData.prototype.getLength=function(){return this.data.length},NumericData.prototype.getBitsLength=function(){return NumericData.getBitsLength(this.data.length)},NumericData.prototype.write=function(e){let t,n;for(t=0;t+3<=this.data.length;t+=3)n=parseInt(this.data.substr(t,3),10),e.put(n,10);let o=this.data.length-t;o>0&&(n=parseInt(this.data.substr(t),10),e.put(n,3*o+1))},e.exports=NumericData},26143:function(e,t,n){let o=n(69729);t.mul=function(e,t){let n=new Uint8Array(e.length+t.length-1);for(let i=0;i=0;){let e=n[0];for(let i=0;i>o&1)==1,o<6?e.set(o,8,i,!0):o<8?e.set(o+1,8,i,!0):e.set(s-15+o,8,i,!0),o<8?e.set(8,s-o-1,i,!0):o<9?e.set(8,15-o-1+1,i,!0):e.set(8,15-o-1,i,!0);e.set(s-8,8,1,!0)}t.create=function(e,t){let n,b;if(void 0===e||""===e)throw Error("No input text");let v=i.M;return void 0!==t&&(v=i.from(t.errorCorrectionLevel,i.M),n=m.from(t.version),b=d.from(t.maskPattern),t.toSJISFunc&&o.setToSJISFunction(t.toSJISFunc)),function(e,t,n,i){let b;if(Array.isArray(e))b=y.fromArray(e);else if("string"==typeof e){let o=t;if(!o){let t=y.rawSplit(e);o=m.getBestVersionForData(t,n)}b=y.fromString(e,o||40)}else throw Error("Invalid data");let v=m.getBestVersionForData(b,n);if(!v)throw Error("The amount of data is too big to be stored in a QR Code");if(t){if(t=0&&t<=6&&(0===o||6===o)||o>=0&&o<=6&&(0===t||6===t)||t>=2&&t<=4&&o>=2&&o<=4?e.set(i+t,s+o,!0,!0):e.set(i+t,s+o,!1,!0))}}(E,t),function(e){let t=e.size;for(let n=8;n=7&&function(e,t){let n,o,i;let s=e.size,l=m.getEncodedBits(t);for(let t=0;t<18;t++)n=Math.floor(t/3),o=t%3+s-8-3,i=(l>>t&1)==1,e.set(n,o,i,!0),e.set(o,n,i,!0)}(E,t),function(e,t){let n=e.size,o=-1,i=n-1,s=7,l=0;for(let c=n-1;c>0;c-=2)for(6===c&&c--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,c-n)){let o=!1;l>>s&1)==1),e.set(i,c-n,o),-1==--s&&(l++,s=7)}if((i+=o)<0||n<=i){i-=o,o=-o;break}}}(E,w),isNaN(i)&&(i=d.getBestMask(E,setupFormatInfo.bind(null,E,n))),d.applyMask(i,E),setupFormatInfo(E,n,i),{modules:E,version:t,errorCorrectionLevel:n,maskPattern:i,segments:b}}(e,n,v,b)}},52882:function(e,t,n){let o=n(26143);function ReedSolomonEncoder(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}ReedSolomonEncoder.prototype.initialize=function(e){this.degree=e,this.genPoly=o.generateECPolynomial(this.degree)},ReedSolomonEncoder.prototype.encode=function(e){if(!this.genPoly)throw Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let n=o.mod(t,this.genPoly),i=this.degree-n.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(n,i),e}return n},e.exports=ReedSolomonEncoder},7007:function(e,t){let n="[0-9]+",o="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";o=o.replace(/u/g,"\\u");let i="(?:(?![A-Z0-9 $%*+\\-./:]|"+o+")(?:.|[\r\n]))+";t.KANJI=RegExp(o,"g"),t.BYTE_KANJI=RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),t.BYTE=RegExp(i,"g"),t.NUMERIC=RegExp(n,"g"),t.ALPHANUMERIC=RegExp("[A-Z $%*+\\-./:]+","g");let s=RegExp("^"+o+"$"),l=RegExp("^"+n+"$"),c=RegExp("^[A-Z0-9 $%*+\\-./:]+$");t.testKanji=function(e){return s.test(e)},t.testNumeric=function(e){return l.test(e)},t.testAlphanumeric=function(e){return c.test(e)}},16130:function(e,t,n){let o=n(76910),i=n(41085),s=n(8260),l=n(43424),c=n(35442),u=n(7007),d=n(10242),p=n(65987);function getStringByteLength(e){return unescape(encodeURIComponent(e)).length}function getSegments(e,t,n){let o;let i=[];for(;null!==(o=e.exec(n));)i.push({data:o[0],index:o.index,mode:t,length:o[0].length});return i}function getSegmentsFromString(e){let t,n;let i=getSegments(u.NUMERIC,o.NUMERIC,e),s=getSegments(u.ALPHANUMERIC,o.ALPHANUMERIC,e);d.isKanjiModeEnabled()?(t=getSegments(u.BYTE,o.BYTE,e),n=getSegments(u.KANJI,o.KANJI,e)):(t=getSegments(u.BYTE_KANJI,o.BYTE,e),n=[]);let l=i.concat(s,t,n);return l.sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function getSegmentBitsLength(e,t){switch(t){case o.NUMERIC:return i.getBitsLength(e);case o.ALPHANUMERIC:return s.getBitsLength(e);case o.KANJI:return c.getBitsLength(e);case o.BYTE:return l.getBitsLength(e)}}function buildSingleSegment(e,t){let n;let u=o.getBestModeForData(e);if((n=o.from(t,u))!==o.BYTE&&n.bit=0?e[e.length-1]:null;return n&&n.mode===t.mode?e[e.length-1].data+=t.data:e.push(t),e},[]))},t.rawSplit=function(e){return t.fromArray(getSegmentsFromString(e,d.isKanjiModeEnabled()))}},10242:function(e,t){let n;let o=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];t.getSymbolSize=function(e){if(!e)throw Error('"version" cannot be null or undefined');if(e<1||e>40)throw Error('"version" should be in range from 1 to 40');return 4*e+17},t.getSymbolTotalCodewords=function(e){return o[e]},t.getBCHDigit=function(e){let t=0;for(;0!==e;)t++,e>>>=1;return t},t.setToSJISFunction=function(e){if("function"!=typeof e)throw Error('"toSJISFunc" is not a valid function.');n=e},t.isKanjiModeEnabled=function(){return void 0!==n},t.toSJIS=function(e){return n(e)}},43114:function(e,t){t.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},23103:function(e,t,n){let o=n(10242),i=n(35393),s=n(64908),l=n(76910),c=n(43114),u=o.getBCHDigit(7973);function getReservedBitsCount(e,t){return l.getCharCountIndicator(e,t)+4}t.from=function(e,t){return c.isValid(e)?parseInt(e,10):t},t.getCapacity=function(e,t,n){if(!c.isValid(e))throw Error("Invalid QR Code version");void 0===n&&(n=l.BYTE);let s=o.getSymbolTotalCodewords(e),u=i.getTotalCodewordsCount(e,t),d=(s-u)*8;if(n===l.MIXED)return d;let p=d-getReservedBitsCount(n,e);switch(n){case l.NUMERIC:return Math.floor(p/10*3);case l.ALPHANUMERIC:return Math.floor(p/11*2);case l.KANJI:return Math.floor(p/13);case l.BYTE:default:return Math.floor(p/8)}},t.getBestVersionForData=function(e,n){let o;let i=s.from(n,s.M);if(Array.isArray(e)){if(e.length>1)return function(e,n){for(let o=1;o<=40;o++){let i=function(e,t){let n=0;return e.forEach(function(e){let o=getReservedBitsCount(e.mode,t);n+=o+e.getBitsLength()}),n}(e,o);if(i<=t.getCapacity(o,n,l.MIXED))return o}}(e,i);if(0===e.length)return 1;o=e[0]}else o=e;return function(e,n,o){for(let i=1;i<=40;i++)if(n<=t.getCapacity(i,o,e))return i}(o.mode,o.getLength(),i)},t.getEncodedBits=function(e){if(!c.isValid(e)||e<7)throw Error("Invalid QR Code version");let t=e<<12;for(;o.getBCHDigit(t)-u>=0;)t^=7973<':"",d="0&&u>0&&e[c-1]||(o+=s?svgCmd("M",u+n,.5+d+n):svgCmd("m",i,0),i=0,s=!1),u+1',p=i.width?'width="'+i.width+'" height="'+i.width+'" ':"",f=''+u+d+"\n";return"function"==typeof n&&n(null,f),f}},89653:function(e,t){function hex2rgba(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw Error("Color should be defined as hex string");let t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw Error("Invalid hex color: "+e);(3===t.length||4===t.length)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),6===t.length&&t.push("F","F");let n=parseInt(t.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:255&n,hex:"#"+t.slice(0,6).join("")}}t.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,o=e.scale||4;return{width:n,scale:n?4:o,margin:t,color:{dark:hex2rgba(e.color.dark||"#000000ff"),light:hex2rgba(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},t.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},t.getImageWidth=function(e,n){let o=t.getScale(e,n);return Math.floor((e+2*n.margin)*o)},t.qrToImageData=function(e,n,o){let i=n.modules.size,s=n.modules.data,l=t.getScale(i,o),c=Math.floor((i+2*o.margin)*l),u=o.margin*l,d=[o.color.light,o.color.dark];for(let t=0;t=u&&n>=u&&tt.indexOf(o)&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);it.indexOf(o[i])&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(n[o[i]]=e[o[i]]);return n}function __decorate(e,t,n,o){var i,s=arguments.length,l=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,n,o);else for(var c=e.length-1;c>=0;c--)(i=e[c])&&(l=(s<3?i(l):s>3?i(t,n,l):i(t,n))||l);return s>3&&l&&Object.defineProperty(t,n,l),l}function __param(e,t){return function(n,o){t(n,o,e)}}function __metadata(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function __awaiter(e,t,n,o){return new(n||(n=Promise))(function(i,s){function fulfilled(e){try{step(o.next(e))}catch(e){s(e)}}function rejected(e){try{step(o.throw(e))}catch(e){s(e)}}function step(e){var t;e.done?i(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(fulfilled,rejected)}step((o=o.apply(e,t||[])).next())})}function __generator(e,t){var n,o,i,s,l={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:verb(0),throw:verb(1),return:verb(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function verb(s){return function(c){return function(s){if(n)throw TypeError("Generator is already executing.");for(;l;)try{if(n=1,o&&(i=2&s[0]?o.return:s[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,s[1])).done)return i;switch(o=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return l.label++,{value:s[1],done:!1};case 5:l.label++,o=s[1],s=[0];continue;case 7:s=l.ops.pop(),l.trys.pop();continue;default:if(!(i=(i=l.trys).length>0&&i[i.length-1])&&(6===s[0]||2===s[0])){l=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function __read(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,i,s=n.call(e),l=[];try{for(;(void 0===t||t-- >0)&&!(o=s.next()).done;)l.push(o.value)}catch(e){i={error:e}}finally{try{o&&!o.done&&(n=s.return)&&n.call(s)}finally{if(i)throw i.error}}return l}function __spread(){for(var e=[],t=0;t1||resume(e,t)})})}function resume(e,t){try{var n;(n=i[e](t)).value instanceof __await?Promise.resolve(n.value.v).then(fulfill,reject):settle(s[0][2],n)}catch(e){settle(s[0][3],e)}}function fulfill(e){resume("next",e)}function reject(e){resume("throw",e)}function settle(e,t){e(t),s.shift(),s.length&&resume(s[0][0],s[0][1])}}function __asyncDelegator(e){var t,n;return t={},verb("next"),verb("throw",function(e){throw e}),verb("return"),t[Symbol.iterator]=function(){return this},t;function verb(o,i){t[o]=e[o]?function(t){return(n=!n)?{value:__await(e[o](t)),done:"return"===o}:i?i(t):t}:i}}function __asyncValues(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=__values(e),t={},verb("next"),verb("throw"),verb("return"),t[Symbol.asyncIterator]=function(){return this},t);function verb(n){t[n]=e[n]&&function(t){return new Promise(function(o,i){!function(e,t,n,o){Promise.resolve(o).then(function(t){e({value:t,done:n})},t)}(o,i,(t=e[n](t)).done,t.value)})}}}function __makeTemplateObject(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var i=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function __importStar(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return i(t,e),t}function __importDefault(e){return e&&e.__esModule?e:{default:e}}function __classPrivateFieldGet(e,t,n,o){if("a"===n&&!o)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)}function __classPrivateFieldSet(e,t,n,o,i){if("m"===o)throw TypeError("Private method is not writable");if("a"===o&&!i)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?i.call(e,n):i?i.value=n:t.set(e,n),n}function __classPrivateFieldIn(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},42238:function(e,t,n){var o;!function(i,s){"use strict";var l="function",c="undefined",u="object",d="string",p="major",f="model",m="name",b="type",g="vendor",y="version",v="architecture",w="console",C="mobile",E="tablet",x="smarttv",A="wearable",k="embedded",B="Amazon",S="Apple",I="ASUS",j="BlackBerry",T="Browser",P="Chrome",M="Firefox",O="Google",R="Huawei",U="Microsoft",F="Motorola",N="Opera",D="Samsung",_="Sharp",L="Sony",z="Xiaomi",q="Zebra",G="Facebook",W="Chromium OS",H="Mac OS",extend=function(e,t){var n={};for(var o in e)t[o]&&t[o].length%2==0?n[o]=t[o].concat(e[o]):n[o]=e[o];return n},enumerize=function(e){for(var t={},n=0;n0?2===c.length?typeof c[1]==l?this[c[0]]=c[1].call(this,p):this[c[0]]=c[1]:3===c.length?typeof c[1]!==l||c[1].exec&&c[1].test?this[c[0]]=p?p.replace(c[1],c[2]):s:this[c[0]]=p?c[1].call(this,p,c[2]):s:4===c.length&&(this[c[0]]=p?c[3].call(this,p.replace(c[1],c[2])):s):this[c]=p||s;f+=2}},strMapper=function(e,t){for(var n in t)if(typeof t[n]===u&&t[n].length>0){for(var o=0;o2&&(e[f]="iPad",e[b]=E),e},this.getEngine=function(){var e={};return e[m]=s,e[y]=s,rgxMapper.call(e,o,x.engine),e},this.getOS=function(){var e={};return e[m]=s,e[y]=s,rgxMapper.call(e,o,x.os),A&&!e[m]&&w&&"Unknown"!=w.platform&&(e[m]=w.platform.replace(/chrome os/i,W).replace(/macos/i,H)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return o},this.setUA=function(e){return o=typeof e===d&&e.length>500?trim(e,500):e,this},this.setUA(o),this};UAParser.VERSION="1.0.37",UAParser.BROWSER=enumerize([m,y,p]),UAParser.CPU=enumerize([v]),UAParser.DEVICE=enumerize([f,g,b,w,C,x,E,A,k]),UAParser.ENGINE=UAParser.OS=enumerize([m,y]),typeof t!==c?(e.exports&&(t=e.exports=UAParser),t.UAParser=UAParser):n.amdO?s!==(o=(function(){return UAParser}).call(t,n,t,e))&&(e.exports=o):typeof i!==c&&(i.UAParser=UAParser);var V=typeof i!==c&&(i.jQuery||i.Zepto);if(V&&!V.ua){var Z=new UAParser;V.ua=Z.getResult(),V.ua.get=function(){return Z.getUA()},V.ua.set=function(e){Z.setUA(e);var t=Z.getResult();for(var n in t)V.ua[n]=t[n]}}}("object"==typeof window?window:this)},53250:function(e,t,n){"use strict";/** +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2888],{65987:function(e){"use strict";var t={single_source_shortest_paths:function(e,n,o){var i,s,l,c,u,d,p,f={},m={};m[n]=0;var g=t.PriorityQueue.make();for(g.push(n,0);!g.empty();)for(l in s=(i=g.pop()).value,c=i.cost,u=e[s]||{})u.hasOwnProperty(l)&&(d=c+u[l],p=m[l],(void 0===m[l]||p>d)&&(m[l]=d,g.push(l,d),f[l]=s));if(void 0!==o&&void 0===m[o])throw Error(["Could not find a path from ",n," to ",o,"."].join(""));return f},extract_shortest_path_from_predecessor_list:function(e,t){for(var n=[],o=t;o;)n.push(o),e[o],o=e[o];return n.reverse(),n},find_path:function(e,n,o){var i=t.single_source_shortest_paths(e,n,o);return t.extract_shortest_path_from_predecessor_list(i,o)},PriorityQueue:{make:function(e){var n,o=t.PriorityQueue,i={};for(n in e=e||{},o)o.hasOwnProperty(n)&&(i[n]=o[n]);return i.queue=[],i.sorter=e.sorter||o.default_sorter,i},default_sorter:function(e,t){return e.cost-t.cost},push:function(e,t){this.queue.push({value:e,cost:t}),this.queue.sort(this.sorter)},pop:function(){return this.queue.shift()},empty:function(){return 0===this.queue.length}}};e.exports=t},62378:function(e){"use strict";e.exports=function(e){for(var t=[],n=e.length,o=0;o=55296&&i<=56319&&n>o+1){var s=e.charCodeAt(o+1);s>=56320&&s<=57343&&(i=(i-55296)*1024+s-56320+65536,o+=1)}if(i<128){t.push(i);continue}if(i<2048){t.push(i>>6|192),t.push(63&i|128);continue}if(i<55296||i>=57344&&i<65536){t.push(i>>12|224),t.push(i>>6&63|128),t.push(63&i|128);continue}if(i>=65536&&i<=1114111){t.push(i>>18|240),t.push(i>>12&63|128),t.push(i>>6&63|128),t.push(63&i|128);continue}t.push(239,191,189)}return new Uint8Array(t).buffer}},26729:function(e){"use strict";var t=Object.prototype.hasOwnProperty,n="~";function Events(){}function EE(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function addListener(e,t,o,i,s){if("function"!=typeof o)throw TypeError("The listener must be a function");var l=new EE(o,i||e,s),c=n?n+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],l]:e._events[c].push(l):(e._events[c]=l,e._eventsCount++),e}function clearEvent(e,t){0==--e._eventsCount?e._events=new Events:delete e._events[t]}function EventEmitter(){this._events=new Events,this._eventsCount=0}Object.create&&(Events.prototype=Object.create(null),new Events().__proto__||(n=!1)),EventEmitter.prototype.eventNames=function(){var e,o,i=[];if(0===this._eventsCount)return i;for(o in e=this._events)t.call(e,o)&&i.push(n?o.slice(1):o);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i},EventEmitter.prototype.listeners=function(e){var t=n?n+e:e,o=this._events[t];if(!o)return[];if(o.fn)return[o.fn];for(var i=0,s=o.length,l=Array(s);ie.trim());for(let n=0;n>4]+t[15&e[o]];return n}if("object"==typeof e&&"function"==typeof e.toJSON)return stringify(e.toJSON());switch(typeof e){case"boolean":case"symbol":case"number":return e.toString();case"bigint":return BigInt(e).toString();case"string":return JSON.stringify(e);case"object":{let t=Object.keys(e);return t.sort(),"{ "+t.map(t=>`${stringify(t)}: ${stringify(e[t])}`).join(", ")+" }"}}return"[ COULD NOT SERIALIZE ]"}function errors_assert(e,t,n,o){if(!e)throw function(e,t,n){let o,i=e;{let o=[];if(n){if("message"in n||"code"in n||"name"in n)throw Error(`value will overwrite populated values: ${stringify(n)}`);for(let e in n){if("shortMessage"===e)continue;let t=n[e];o.push(e+"="+stringify(t))}}o.push(`code=${t}`),o.push("version=6.11.1"),o.length&&(e+=" ("+o.join(", ")+")")}switch(t){case"INVALID_ARGUMENT":o=TypeError(e);break;case"NUMERIC_FAULT":case"BUFFER_OVERRUN":o=RangeError(e);break;default:o=Error(e)}return defineProperties(o,{code:t}),n&&Object.assign(o,n),null==o.shortMessage&&defineProperties(o,{shortMessage:i}),o}(t,n,o)}function assertArgument(e,t,n,o){errors_assert(e,t,"INVALID_ARGUMENT",{argument:n,value:o})}let u=["NFD","NFC","NFKD","NFKC"].reduce((e,t)=>{try{if("test"!=="test".normalize(t))throw Error("bad");if("NFD"===t){let e=String.fromCharCode(233).normalize("NFD"),t=String.fromCharCode(101,769);if(e!==t)throw Error("broken")}e.push(t)}catch(e){}return e},[]);function _getBytes(e,t,n){if(e instanceof Uint8Array)return n?new Uint8Array(e):e;if("string"==typeof e&&e.match(/^0x([0-9a-f][0-9a-f])*$/i)){let t=new Uint8Array((e.length-2)/2),n=2;for(let o=0;o>4]+d[15&o]}return n}function concat(e){return"0x"+e.map(e=>data_hexlify(e).substring(2)).join("")}function dataLength(e){return isHexString(e,!0)?(e.length-2)/2:data_getBytes(e).length}let p=!1,_keccak256=function(e){return(0,c.fr)(e)},f=_keccak256;function keccak256(e){let t=data_getBytes(e,"data");return data_hexlify(f(t))}keccak256._=_keccak256,keccak256.lock=function(){p=!0},keccak256.register=function(e){if(p)throw TypeError("keccak256 is locked");f=e},Object.freeze(keccak256);let m=BigInt(0),g=BigInt(36);function getChecksumAddress(e){e=e.toLowerCase();let t=e.substring(2).split(""),n=new Uint8Array(40);for(let e=0;e<40;e++)n[e]=t[e].charCodeAt(0);let o=data_getBytes(keccak256(n));for(let e=0;e<40;e+=2)o[e>>1]>>4>=8&&(t[e]=t[e].toUpperCase()),(15&o[e>>1])>=8&&(t[e+1]=t[e+1].toUpperCase());return"0x"+t.join("")}let b={};for(let e=0;e<10;e++)b[String(e)]=String(e);for(let e=0;e<26;e++)b[String.fromCharCode(65+e)]=String(10+e);let y=function(){let e={};for(let t=0;t<36;t++){let n="0123456789abcdefghijklmnopqrstuvwxyz"[t];e[n]=BigInt(t)}return e}();var v=n(11606),w=n(27499);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */let C=BigInt(0),E=BigInt(1),x=BigInt(2),A=BigInt(3),k=BigInt(4),B=BigInt(5),S=BigInt(8);function modular_mod(e,t){let n=e%t;return n>=C?n:t+n}function pow2(e,t,n){let o=e;for(;t-- >C;)o*=o,o%=n;return o}function invert(e,t){if(e===C||t<=C)throw Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=modular_mod(e,t),o=t,i=C,s=E,l=E,c=C;for(;n!==C;){let e=o/n,t=o%n,u=i-l*e,d=s-c*e;o=n,n=t,i=l,s=c,l=u,c=d}let u=o;if(u!==E)throw Error("invert: does not exist");return modular_mod(i,t)}BigInt(9),BigInt(16);let I=["create","isValid","is0","neg","inv","sqrt","sqr","eql","add","sub","mul","pow","div","addN","subN","mulN","sqrN"];function nLength(e,t){let n=void 0!==t?t:e.toString(2).length;return{nBitLength:n,nByteLength:Math.ceil(n/8)}}function getFieldBytesLength(e){if("bigint"!=typeof e)throw Error("field order must be bigint");let t=e.toString(2).length;return Math.ceil(t/8)}function getMinHashLength(e){let t=getFieldBytesLength(e);return t+Math.ceil(t/2)}var j=n(93527),T=n(66409);let HMAC=class HMAC extends T.kb{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,(0,j.vp)(e);let n=(0,T.O0)(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw Error("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;let o=this.blockLen,i=new Uint8Array(o);i.set(n.length>o?e.create().update(n).digest():n);for(let e=0;enew HMAC(e,t).update(n).digest();hmac.create=(e,t)=>new HMAC(e,t);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */let P=BigInt(0),M=BigInt(1);function validateBasic(e){return!function(e){let t=I.reduce((e,t)=>(e[t]="function",e),{ORDER:"bigint",MASK:"bigint",BYTES:"isSafeInteger",BITS:"isSafeInteger"});(0,w.FF)(e,t)}(e.Fp),(0,w.FF)(e,{n:"bigint",h:"bigint",Gx:"field",Gy:"field"},{nBitLength:"isSafeInteger",nByteLength:"isSafeInteger"}),Object.freeze({...nLength(e.n,e.nBitLength),...e,p:e.Fp.ORDER})}let{bytesToNumberBE:O,hexToBytes:R}=w,U={Err:class extends Error{constructor(e=""){super(e)}},_parseInt(e){let{Err:t}=U;if(e.length<2||2!==e[0])throw new t("Invalid signature integer tag");let n=e[1],o=e.subarray(2,n+2);if(!n||o.length!==n)throw new t("Invalid signature integer: wrong length");if(128&o[0])throw new t("Invalid signature integer: negative");if(0===o[0]&&!(128&o[1]))throw new t("Invalid signature integer: unnecessary leading zero");return{d:O(o),l:e.subarray(n+2)}},toSig(e){let{Err:t}=U,n="string"==typeof e?R(e):e;if(!(n instanceof Uint8Array))throw Error("ui8a expected");let o=n.length;if(o<2||48!=n[0])throw new t("Invalid signature tag");if(n[1]!==o-2)throw new t("Invalid signature: incorrect length");let{d:i,l:s}=U._parseInt(n.subarray(2)),{d:l,l:c}=U._parseInt(s);if(c.length)throw new t("Invalid signature: left bytes after parsing");return{r:i,s:l}},hexFromSig(e){let slice=e=>8&Number.parseInt(e[0],16)?"00"+e:e,h=e=>{let t=e.toString(16);return 1&t.length?`0${t}`:t},t=slice(h(e.s)),n=slice(h(e.r)),o=t.length/2,i=n.length/2,s=h(o),l=h(i);return`30${h(i+o+4)}02${l}${n}02${s}${t}`}},F=BigInt(0),N=BigInt(1),D=(BigInt(2),BigInt(3));BigInt(4);/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */let _=BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),L=BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),z=BigInt(1),q=BigInt(2),divNearest=(e,t)=>(e+t/q)/t,G=function(e,t,n=!1,o={}){if(e<=C)throw Error(`Expected Field ORDER > 0, got ${e}`);let{nBitLength:i,nByteLength:s}=nLength(e,t);if(s>2048)throw Error("Field lengths over 2048 bytes are not supported");let l=function(e){if(e%k===A){let t=(e+E)/k;return function(e,n){let o=e.pow(n,t);if(!e.eql(e.sqr(o),n))throw Error("Cannot find square root");return o}}if(e%S===B){let t=(e-B)/S;return function(e,n){let o=e.mul(n,x),i=e.pow(o,t),s=e.mul(n,i),l=e.mul(e.mul(s,x),i),c=e.mul(s,e.sub(l,e.ONE));if(!e.eql(e.sqr(c),n))throw Error("Cannot find square root");return c}}return function(e){let t,n,o;let i=(e-E)/x;for(t=e-E,n=0;t%x===C;t/=x,n++);for(o=x;o 0");if(n===E)return C;let o=E;for(;t>C;)t&E&&(o=o*e%n),e=e*e%n,t>>=E;return o}(o,i,e)!==e-E;o++);if(1===n){let t=(e+E)/k;return function(e,n){let o=e.pow(n,t);if(!e.eql(e.sqr(o),n))throw Error("Cannot find square root");return o}}let s=(t+E)/x;return function(e,l){if(e.pow(l,i)===e.neg(e.ONE))throw Error("Cannot find square root");let c=n,u=e.pow(e.mul(e.ONE,o),t),d=e.pow(l,s),p=e.pow(l,t);for(;!e.eql(p,e.ONE);){if(e.eql(p,e.ZERO))return e.ZERO;let t=1;for(let n=e.sqr(p);tmodular_mod(t,e),isValid:t=>{if("bigint"!=typeof t)throw Error(`Invalid field element: expected bigint, got ${typeof t}`);return C<=t&&te===C,isOdd:e=>(e&E)===E,neg:t=>modular_mod(-t,e),eql:(e,t)=>e===t,sqr:t=>modular_mod(t*t,e),add:(t,n)=>modular_mod(t+n,e),sub:(t,n)=>modular_mod(t-n,e),mul:(t,n)=>modular_mod(t*n,e),pow:(e,t)=>(function(e,t,n){if(n 0");if(n===C)return e.ONE;if(n===E)return t;let o=e.ONE,i=t;for(;n>C;)n&E&&(o=e.mul(o,i)),i=e.sqr(i),n>>=E;return o})(c,e,t),div:(t,n)=>modular_mod(t*invert(n,e),e),sqrN:e=>e*e,addN:(e,t)=>e+t,subN:(e,t)=>e-t,mulN:(e,t)=>e*t,inv:t=>invert(t,e),sqrt:o.sqrt||(e=>l(c,e)),invertBatch:e=>(function(e,t){let n=Array(t.length),o=t.reduce((t,o,i)=>e.is0(o)?t:(n[i]=t,e.mul(t,o)),e.ONE),i=e.inv(o);return t.reduceRight((t,o,i)=>e.is0(o)?t:(n[i]=e.mul(t,n[i]),e.mul(t,o)),i),n})(c,e),cmov:(e,t,n)=>n?t:e,toBytes:e=>n?(0,w.S5)(e,s):(0,w.tL)(e,s),fromBytes:e=>{if(e.length!==s)throw Error(`Fp.fromBytes: expected ${s}, got ${e.length}`);return n?(0,w.ty)(e):(0,w.bytesToNumberBE)(e)}});return Object.freeze(c)}(_,void 0,void 0,{sqrt:function(e){let t=BigInt(3),n=BigInt(6),o=BigInt(11),i=BigInt(22),s=BigInt(23),l=BigInt(44),c=BigInt(88),u=e*e*e%_,d=u*u*e%_,p=pow2(d,t,_)*d%_,f=pow2(p,t,_)*d%_,m=pow2(f,q,_)*u%_,g=pow2(m,o,_)*m%_,b=pow2(g,i,_)*g%_,y=pow2(b,l,_)*b%_,v=pow2(y,c,_)*y%_,w=pow2(v,l,_)*b%_,C=pow2(w,t,_)*d%_,E=pow2(C,s,_)*g%_,x=pow2(E,n,_)*u%_,A=pow2(x,q,_);if(!G.eql(G.sqr(A),e))throw Error("Cannot find square root");return A}}),W=function(e,t){let create=t=>(function(e){let t=function(e){let t=validateBasic(e);return w.FF(t,{hash:"hash",hmac:"function",randomBytes:"function"},{bits2int:"function",bits2int_modN:"function",lowS:"boolean"}),Object.freeze({lowS:!0,...t})}(e),{Fp:n,n:o}=t,i=n.BYTES+1,s=2*n.BYTES+1;function modN(e){return modular_mod(e,o)}let{ProjectivePoint:l,normPrivateKeyToScalar:c,weierstrassEquation:u,isWithinCurveOrder:d}=function(e){let t=/*! noble-curves - MIT License (c) 2022 Paul Miller (paulmillr.com) */function(e){let t=validateBasic(e);w.FF(t,{a:"field",b:"field"},{allowedPrivateKeyLengths:"array",wrapPrivateKey:"boolean",isTorsionFree:"function",clearCofactor:"function",allowInfinityPoint:"boolean",fromBytes:"function",toBytes:"function"});let{endo:n,Fp:o,a:i}=t;if(n){if(!o.eql(i,o.ZERO))throw Error("Endomorphism can only be defined for Koblitz curves that have a=0");if("object"!=typeof n||"bigint"!=typeof n.beta||"function"!=typeof n.splitScalar)throw Error("Expected endomorphism with beta: bigint and splitScalar: function")}return Object.freeze({...t})}(e),{Fp:n}=t,o=t.toBytes||((e,t,o)=>{let i=t.toAffine();return w.eV(Uint8Array.from([4]),n.toBytes(i.x),n.toBytes(i.y))}),i=t.fromBytes||(e=>{let t=e.subarray(1),o=n.fromBytes(t.subarray(0,n.BYTES)),i=n.fromBytes(t.subarray(n.BYTES,2*n.BYTES));return{x:o,y:i}});function weierstrassEquation(e){let{a:o,b:i}=t,s=n.sqr(e),l=n.mul(s,e);return n.add(n.add(l,n.mul(e,o)),i)}if(!n.eql(n.sqr(t.Gy),weierstrassEquation(t.Gx)))throw Error("bad generator point: equation left != right");function isWithinCurveOrder(e){return"bigint"==typeof e&&Fn.eql(e,n.ZERO);return is0(t)&&is0(o)?Point.ZERO:new Point(t,o,n.ONE)}get x(){return this.toAffine().x}get y(){return this.toAffine().y}static normalizeZ(e){let t=n.invertBatch(e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(Point.fromAffine)}static fromHex(e){let t=Point.fromAffine(i((0,w.ql)("pointHex",e)));return t.assertValidity(),t}static fromPrivateKey(e){return Point.BASE.multiply(normPrivateKeyToScalar(e))}_setWindowSize(e){this._WINDOW_SIZE=e,s.delete(this)}assertValidity(){if(this.is0()){if(t.allowInfinityPoint&&!n.is0(this.py))return;throw Error("bad point: ZERO")}let{x:e,y:o}=this.toAffine();if(!n.isValid(e)||!n.isValid(o))throw Error("bad point: x or y not FE");let i=n.sqr(o),s=weierstrassEquation(e);if(!n.eql(i,s))throw Error("bad point: equation left != right");if(!this.isTorsionFree())throw Error("bad point: not in prime-order subgroup")}hasEvenY(){let{y:e}=this.toAffine();if(n.isOdd)return!n.isOdd(e);throw Error("Field doesn't support isOdd")}equals(e){assertPrjPoint(e);let{px:t,py:o,pz:i}=this,{px:s,py:l,pz:c}=e,u=n.eql(n.mul(t,c),n.mul(s,i)),d=n.eql(n.mul(o,c),n.mul(l,i));return u&&d}negate(){return new Point(this.px,n.neg(this.py),this.pz)}double(){let{a:e,b:o}=t,i=n.mul(o,D),{px:s,py:l,pz:c}=this,u=n.ZERO,d=n.ZERO,p=n.ZERO,f=n.mul(s,s),m=n.mul(l,l),g=n.mul(c,c),b=n.mul(s,l);return b=n.add(b,b),p=n.mul(s,c),p=n.add(p,p),u=n.mul(e,p),d=n.mul(i,g),d=n.add(u,d),u=n.sub(m,d),d=n.add(m,d),d=n.mul(u,d),u=n.mul(b,u),p=n.mul(i,p),g=n.mul(e,g),b=n.sub(f,g),b=n.mul(e,b),b=n.add(b,p),p=n.add(f,f),f=n.add(p,f),f=n.add(f,g),f=n.mul(f,b),d=n.add(d,f),g=n.mul(l,c),g=n.add(g,g),f=n.mul(g,b),u=n.sub(u,f),p=n.mul(g,m),p=n.add(p,p),p=n.add(p,p),new Point(u,d,p)}add(e){assertPrjPoint(e);let{px:o,py:i,pz:s}=this,{px:l,py:c,pz:u}=e,d=n.ZERO,p=n.ZERO,f=n.ZERO,m=t.a,g=n.mul(t.b,D),b=n.mul(o,l),y=n.mul(i,c),v=n.mul(s,u),w=n.add(o,i),C=n.add(l,c);w=n.mul(w,C),C=n.add(b,y),w=n.sub(w,C),C=n.add(o,s);let E=n.add(l,u);return C=n.mul(C,E),E=n.add(b,v),C=n.sub(C,E),E=n.add(i,s),d=n.add(c,u),E=n.mul(E,d),d=n.add(y,v),E=n.sub(E,d),f=n.mul(m,C),d=n.mul(g,v),f=n.add(d,f),d=n.sub(y,f),f=n.add(y,f),p=n.mul(d,f),y=n.add(b,b),y=n.add(y,b),v=n.mul(m,v),C=n.mul(g,C),y=n.add(y,v),v=n.sub(b,v),v=n.mul(m,v),C=n.add(C,v),b=n.mul(y,C),p=n.add(p,b),b=n.mul(E,C),d=n.mul(w,d),d=n.sub(d,b),b=n.mul(w,y),f=n.mul(E,f),f=n.add(f,b),new Point(d,p,f)}subtract(e){return this.add(e.negate())}is0(){return this.equals(Point.ZERO)}wNAF(e){return c.wNAFCached(this,s,e,e=>{let t=n.invertBatch(e.map(e=>e.pz));return e.map((e,n)=>e.toAffine(t[n])).map(Point.fromAffine)})}multiplyUnsafe(e){let o=Point.ZERO;if(e===F)return o;if(assertGE(e),e===N)return this;let{endo:i}=t;if(!i)return c.unsafeLadder(this,e);let{k1neg:s,k1:l,k2neg:u,k2:d}=i.splitScalar(e),p=o,f=o,m=this;for(;l>F||d>F;)l&N&&(p=p.add(m)),d&N&&(f=f.add(m)),m=m.double(),l>>=N,d>>=N;return s&&(p=p.negate()),u&&(f=f.negate()),f=new Point(n.mul(f.px,i.beta),f.py,f.pz),p.add(f)}multiply(e){let o,i;assertGE(e);let{endo:s}=t;if(s){let{k1neg:t,k1:l,k2neg:u,k2:d}=s.splitScalar(e),{p:p,f:f}=this.wNAF(l),{p:m,f:g}=this.wNAF(d);p=c.constTimeNegate(t,p),m=c.constTimeNegate(u,m),m=new Point(n.mul(m.px,s.beta),m.py,m.pz),o=p.add(m),i=f.add(g)}else{let{p:t,f:n}=this.wNAF(e);o=t,i=n}return Point.normalizeZ([o,i])[0]}multiplyAndAddUnsafe(e,t,n){let o=Point.BASE,mul=(e,t)=>t!==F&&t!==N&&e.equals(o)?e.multiply(t):e.multiplyUnsafe(t),i=mul(this,t).add(mul(e,n));return i.is0()?void 0:i}toAffine(e){let{px:t,py:o,pz:i}=this,s=this.is0();null==e&&(e=s?n.ONE:n.inv(i));let l=n.mul(t,e),c=n.mul(o,e),u=n.mul(i,e);if(s)return{x:n.ZERO,y:n.ZERO};if(!n.eql(u,n.ONE))throw Error("invZ was invalid");return{x:l,y:c}}isTorsionFree(){let{h:e,isTorsionFree:n}=t;if(e===N)return!0;if(n)return n(Point,this);throw Error("isTorsionFree() has not been declared for the elliptic curve")}clearCofactor(){let{h:e,clearCofactor:n}=t;return e===N?this:n?n(Point,this):this.multiplyUnsafe(t.h)}toRawBytes(e=!0){return this.assertValidity(),o(Point,this,e)}toHex(e=!0){return w.ci(this.toRawBytes(e))}};Point.BASE=new Point(t.Gx,t.Gy,n.ONE),Point.ZERO=new Point(n.ZERO,n.ONE,n.ZERO);let l=t.nBitLength,c=function(e,t){let constTimeNegate=(e,t)=>{let n=t.negate();return e?n:t},opts=e=>({windows:Math.ceil(t/e)+1,windowSize:2**(e-1)});return{constTimeNegate,unsafeLadder(t,n){let o=e.ZERO,i=t;for(;n>P;)n&M&&(o=o.add(i)),i=i.double(),n>>=M;return o},precomputeWindow(e,t){let{windows:n,windowSize:o}=opts(t),i=[],s=e,l=s;for(let e=0;e>=p,i>s&&(i-=d,o+=M);let f=t+Math.abs(i)-1,m=e%2!=0,g=i<0;0===i?c=c.add(constTimeNegate(m,n[t])):l=l.add(constTimeNegate(g,n[f]))}return{p:l,f:c}},wNAFCached(e,t,n,o){let i=e._WINDOW_SIZE||1,s=t.get(e);return s||(s=this.precomputeWindow(e,i),1!==i&&t.set(e,o(s))),this.wNAF(i,s,n)}}}(Point,t.endo?Math.ceil(l/2):l);return{CURVE:t,ProjectivePoint:Point,normPrivateKeyToScalar,weierstrassEquation,isWithinCurveOrder}}({...t,toBytes(e,t,o){let i=t.toAffine(),s=n.toBytes(i.x),l=w.eV;return o?l(Uint8Array.from([t.hasEvenY()?2:3]),s):l(Uint8Array.from([4]),s,n.toBytes(i.y))},fromBytes(e){let t=e.length,o=e[0],l=e.subarray(1);if(t===i&&(2===o||3===o)){let e=w.bytesToNumberBE(l);if(!(Fw.ci(w.tL(e,t.nByteLength));function isBiggerThanHalfOrder(e){let t=o>>N;return e>t}let slcNum=(e,t,n)=>w.bytesToNumberBE(e.slice(t,n));let Signature=class Signature{constructor(e,t,n){this.r=e,this.s=t,this.recovery=n,this.assertValidity()}static fromCompact(e){let n=t.nByteLength;return e=(0,w.ql)("compactSignature",e,2*n),new Signature(slcNum(e,0,n),slcNum(e,n,2*n))}static fromDER(e){let{r:t,s:n}=U.toSig((0,w.ql)("DER",e));return new Signature(t,n)}assertValidity(){if(!d(this.r))throw Error("r must be 0 < r < CURVE.n");if(!d(this.s))throw Error("s must be 0 < s < CURVE.n")}addRecoveryBit(e){return new Signature(this.r,this.s,e)}recoverPublicKey(e){let{r:i,s,recovery:c}=this,u=f((0,w.ql)("msgHash",e));if(null==c||![0,1,2,3].includes(c))throw Error("recovery id invalid");let d=2===c||3===c?i+t.n:i;if(d>=n.ORDER)throw Error("recovery id 2 or 3 invalid");let p=(1&c)==0?"02":"03",m=l.fromHex(p+numToNByteStr(d)),g=invert(d,o),b=modN(-u*g),y=modN(s*g),v=l.BASE.multiplyAndAddUnsafe(m,b,y);if(!v)throw Error("point at infinify");return v.assertValidity(),v}hasHighS(){return isBiggerThanHalfOrder(this.s)}normalizeS(){return this.hasHighS()?new Signature(this.r,modN(-this.s),this.recovery):this}toDERRawBytes(){return w.hexToBytes(this.toDERHex())}toDERHex(){return U.hexFromSig({r:this.r,s:this.s})}toCompactRawBytes(){return w.hexToBytes(this.toCompactHex())}toCompactHex(){return numToNByteStr(this.r)+numToNByteStr(this.s)}};function isProbPub(e){let t=e instanceof Uint8Array,n="string"==typeof e,o=(t||n)&&e.length;return t?o===i||o===s:n?o===2*i||o===2*s:e instanceof l}let p=t.bits2int||function(e){let n=w.bytesToNumberBE(e),o=8*e.length-t.nBitLength;return o>0?n>>BigInt(o):n},f=t.bits2int_modN||function(e){return modN(p(e))},m=w.dQ(t.nBitLength);function int2octets(e){if("bigint"!=typeof e)throw Error("bigint expected");if(!(F<=e&&ee in s))throw Error("sign() legacy options not supported");let{hash:u,randomBytes:m}=t,{lowS:b,prehash:y,extraEntropy:v}=s;null==b&&(b=!0),e=(0,w.ql)("msgHash",e),y&&(e=(0,w.ql)("prehashed msgHash",u(e)));let C=f(e),E=c(i),x=[int2octets(E),int2octets(C)];if(null!=v){let e=!0===v?m(n.BYTES):v;x.push((0,w.ql)("extraEntropy",e))}let A=w.eV(...x);return{seed:A,k2sig:function(e){let t=p(e);if(!d(t))return;let n=invert(t,o),i=l.BASE.multiply(t).toAffine(),s=modN(i.x);if(s===F)return;let c=modN(n*modN(C+s*E));if(c===F)return;let u=(i.x===s?0:2)|Number(i.y&N),f=c;return b&&isBiggerThanHalfOrder(c)&&(f=isBiggerThanHalfOrder(c)?modN(-c):c,u^=1),new Signature(s,f,u)}}}(e,i,s),b=w.n$(t.hash.outputLen,t.nByteLength,t.hmac);return b(u,m)},verify:function(e,n,i,s=b){let c,u;if(n=(0,w.ql)("msgHash",n),i=(0,w.ql)("publicKey",i),"strict"in s)throw Error("options.strict was renamed to lowS");let{lowS:d,prehash:p}=s;try{if("string"==typeof e||e instanceof Uint8Array)try{u=Signature.fromDER(e)}catch(t){if(!(t instanceof U.Err))throw t;u=Signature.fromCompact(e)}else if("object"==typeof e&&"bigint"==typeof e.r&&"bigint"==typeof e.s){let{r:t,s:n}=e;u=new Signature(t,n)}else throw Error("PARSE");c=l.fromHex(i)}catch(e){if("PARSE"===e.message)throw Error("signature must be Signature instance, Uint8Array or hex string");return!1}if(d&&u.hasHighS())return!1;p&&(n=t.hash(n));let{r:m,s:g}=u,y=f(n),v=invert(g,o),C=modN(y*v),E=modN(m*v),x=l.BASE.multiplyAndAddUnsafe(c,C,E)?.toAffine();if(!x)return!1;let A=modN(x.x);return A===m},ProjectivePoint:l,Signature,utils:{isValidPrivateKey(e){try{return c(e),!0}catch(e){return!1}},normPrivateKeyToScalar:c,randomPrivateKey:()=>{let e=getMinHashLength(t.n);return function(e,t,n=!1){let o=e.length,i=getFieldBytesLength(t),s=getMinHashLength(t);if(o<16||o1024)throw Error(`expected ${s}-1024 bytes of input, got ${o}`);let l=n?(0,w.bytesToNumberBE)(e):(0,w.ty)(e),c=modular_mod(l,t-E)+E;return n?(0,w.S5)(c,i):(0,w.tL)(c,i)}(t.randomBytes(e),t.n)},precompute:(e=8,t=l.BASE)=>(t._setWindowSize(e),t.multiply(BigInt(3)),t)}}})({...e,hash:t,hmac:(e,...n)=>hmac(t,e,(0,T.eV)(...n)),randomBytes:T.O6});return Object.freeze({...create(t),create})}({a:BigInt(0),b:BigInt(7),Fp:G,n:L,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),h:BigInt(1),lowS:!0,endo:{beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee"),splitScalar:e=>{let t=BigInt("0x3086d221a7d46bcde86c90e49284eb15"),n=-z*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),o=BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),i=BigInt("0x100000000000000000000000000000000"),s=divNearest(t*e,L),l=divNearest(-n*e,L),c=modular_mod(e-s*t-l*o,L),u=modular_mod(-s*n-l*t,L),d=c>i,p=u>i;if(d&&(c=L-c),p&&(u=L-u),c>i||u>i)throw Error("splitScalar: Endomorphism failed, k="+e);return{k1neg:d,k1:c,k2neg:p,k2:u}}}},v.J),H=(BigInt(0),W.ProjectivePoint,BigInt(0));function getBigInt(e,t){switch(typeof e){case"bigint":return e;case"number":return assertArgument(Number.isInteger(e),"underflow",t||"value",e),assertArgument(e>=-9007199254740991&&e<=9007199254740991,"overflow",t||"value",e),BigInt(e);case"string":try{if(""===e)throw Error("empty string");if("-"===e[0]&&"-"!==e[1])return-BigInt(e.substring(1));return BigInt(e)}catch(n){assertArgument(!1,`invalid BigNumberish string: ${n.message}`,t||"value",e)}}assertArgument(!1,"invalid BigNumberish value",t||"value",e)}function getUint(e,t){let n=getBigInt(e,t);return errors_assert(n>=H,"unsigned value cannot be negative","NUMERIC_FAULT",{fault:"overflow",operation:"getUint",value:e}),n}function getNumber(e,t){switch(typeof e){case"bigint":return assertArgument(e>=-9007199254740991&&e<=9007199254740991,"overflow",t||"value",e),Number(e);case"number":return assertArgument(Number.isInteger(e),"underflow",t||"value",e),assertArgument(e>=-9007199254740991&&e<=9007199254740991,"overflow",t||"value",e),e;case"string":try{if(""===e)throw Error("empty string");return getNumber(BigInt(e),t)}catch(n){assertArgument(!1,`invalid numeric string: ${n.message}`,t||"value",e)}}assertArgument(!1,"invalid numeric value",t||"value",e)}function toBeHex(e,t){let n=getUint(e,"value"),o=n.toString(16);if(null==t)o.length%2&&(o="0"+o);else{let n=getNumber(t,"width");for(errors_assert(2*n>=o.length,`value exceeds width (${n} bytes)`,"NUMERIC_FAULT",{operation:"toBeHex",fault:"overflow",value:e});o.length<2*n;)o="0"+o}return"0x"+o}BigInt(1);let Q="0x0000000000000000000000000000000000000000000000000000000000000000",K=BigInt(0),V=BigInt(1),Z=BigInt(2),J=BigInt(27),X=BigInt(28),Y=BigInt(35),$={};function toUint256(e){return function(e,t,n){let o=data_getBytes(e);errors_assert(t>=o.length,"padding exceeds data length","BUFFER_OVERRUN",{buffer:new Uint8Array(o),length:t,offset:t+1});let i=new Uint8Array(t);return i.fill(0),n?i.set(o,t-o.length):i.set(o,0),data_hexlify(i)}(function(e){let t=getUint(e,"value");if(t===H)return new Uint8Array([]);let n=t.toString(16);n.length%2&&(n="0"+n);let o=new Uint8Array(n.length/2);for(let e=0;eparseInt(t.substring(0,3)),"non-canonical s","value",t),this.#t=t}get v(){return this.#r}set v(e){let t=getNumber(e,"value");assertArgument(27===t||28===t,"invalid v","v",e),this.#r=t}get networkV(){return this.#n}get legacyChainId(){let e=this.networkV;return null==e?null:Signature.getChainId(e)}get yParity(){return 27===this.v?0:1}get yParityAndS(){let e=data_getBytes(this.s);return this.yParity&&(e[0]|=128),data_hexlify(e)}get compactSerialized(){return concat([this.r,this.yParityAndS])}get serialized(){return concat([this.r,this.s,this.yParity?"0x1c":"0x1b"])}constructor(e,t,n,o){!function(e,t,n){if(null==n&&(n=""),e!==t){let e=n,t="new";n&&(e+=".",t+=" "+n),errors_assert(!1,`private constructor; use ${e}from* methods`,"UNSUPPORTED_OPERATION",{operation:t})}}(e,$,"Signature"),this.#e=t,this.#t=n,this.#r=o,this.#n=null}[Symbol.for("nodejs.util.inspect.custom")](){return`Signature { r: "${this.r}", s: "${this.s}", yParity: ${this.yParity}, networkV: ${this.networkV} }`}clone(){let e=new Signature($,this.r,this.s,this.v);return this.networkV&&(e.#n=this.networkV),e}toJSON(){let e=this.networkV;return{_type:"signature",networkV:null!=e?e.toString():null,r:this.r,s:this.s,v:this.v}}static getChainId(e){let t=getBigInt(e,"v");return t==J||t==X?K:(assertArgument(t>=Y,"invalid EIP-155 v","v",e),(t-Y)/Z)}static getChainIdV(e,t){return getBigInt(e)*Z+BigInt(35+t-27)}static getNormalizedV(e){let t=getBigInt(e);return t===K||t===J?27:t===V||t===X?28:(assertArgument(t>=Y,"invalid v","v",e),t&V?27:28)}static from(e){function assertError(t,n){assertArgument(t,n,"signature",e)}if(null==e)return new Signature($,Q,Q,27);if("string"==typeof e){let t=data_getBytes(e,"signature");if(64===t.length){let e=data_hexlify(t.slice(0,32)),n=t.slice(32,64),o=128&n[0]?28:27;return n[0]&=127,new Signature($,e,data_hexlify(n),o)}if(65===t.length){let e=data_hexlify(t.slice(0,32)),n=t.slice(32,64);assertError((128&n[0])==0,"non-canonical s");let o=Signature.getNormalizedV(t[64]);return new Signature($,e,data_hexlify(n),o)}assertError(!1,"invalid raw signature length")}if(e instanceof Signature)return e.clone();let t=e.r;assertError(null!=t,"missing r");let n=toUint256(t),o=function(e,t){if(null!=e)return toUint256(e);if(null!=t){assertError(isHexString(t,32),"invalid yParityAndS");let e=data_getBytes(t);return e[0]&=127,data_hexlify(e)}assertError(!1,"missing s")}(e.s,e.yParityAndS);assertError((128&data_getBytes(o)[0])==0,"non-canonical s");let{networkV:i,v:s}=function(e,t,n){if(null!=e){let t=getBigInt(e);return{networkV:t>=Y?t:void 0,v:Signature.getNormalizedV(t)}}if(null!=t)return assertError(isHexString(t,32),"invalid yParityAndS"),{v:128&data_getBytes(t)[0]?28:27};if(null!=n){switch(getNumber(n,"sig.yParity")){case 0:return{v:27};case 1:return{v:28}}assertError(!1,"invalid yParity")}assertError(!1,"missing v")}(e.v,e.yParityAndS,e.yParity),l=new Signature($,n,o,s);return i&&(l.#n=i),assertError(null==e.yParity||getNumber(e.yParity,"sig.yParity")===l.yParity,"yParity mismatch"),assertError(null==e.yParityAndS||e.yParityAndS===l.yParityAndS,"yParityAndS mismatch"),l}};let SigningKey=class SigningKey{#a;constructor(e){assertArgument(32===dataLength(e),"invalid private key","privateKey","[REDACTED]"),this.#a=data_hexlify(e)}get privateKey(){return this.#a}get publicKey(){return SigningKey.computePublicKey(this.#a)}get compressedPublicKey(){return SigningKey.computePublicKey(this.#a,!0)}sign(e){assertArgument(32===dataLength(e),"invalid digest length","digest",e);let t=W.sign(getBytesCopy(e),getBytesCopy(this.#a),{lowS:!0});return Signature.from({r:toBeHex(t.r,32),s:toBeHex(t.s,32),v:t.recovery?28:27})}computeSharedSecret(e){let t=SigningKey.computePublicKey(e);return data_hexlify(W.getSharedSecret(getBytesCopy(this.#a),data_getBytes(t),!1))}static computePublicKey(e,t){let n=data_getBytes(e,"key");if(32===n.length){let e=W.getPublicKey(n,!!t);return data_hexlify(e)}if(64===n.length){let e=new Uint8Array(65);e[0]=4,e.set(n,1),n=e}let o=W.ProjectivePoint.fromHex(n);return data_hexlify(o.toRawBytes(t))}static recoverPublicKey(e,t){assertArgument(32===dataLength(e),"invalid digest length","digest",e);let n=Signature.from(t),o=W.Signature.fromCompact(getBytesCopy(concat([n.r,n.s])));o=o.addRecoveryBit(n.yParity);let i=o.recoverPublicKey(getBytesCopy(e));return assertArgument(null!=i,"invalid signautre for digest","signature",t),"0x"+i.toHex(!1)}static addPoints(e,t,n){let o=W.ProjectivePoint.fromHex(SigningKey.computePublicKey(e).substring(2)),i=W.ProjectivePoint.fromHex(SigningKey.computePublicKey(t).substring(2));return"0x"+o.add(i).toHex(!!n)}};function ignoreFunc(e,t,n,o,i){if("BAD_PREFIX"===e||"UNEXPECTED_CONTINUE"===e){let e=0;for(let o=t+1;o>6==2;o++)e++;return e}return"OVERRUN"===e?n.length-t-1:0}function toUtf8Bytes(e,t){assertArgument("string"==typeof e,"invalid string value","str",e),null!=t&&(errors_assert(u.indexOf(t)>=0,"platform missing String.prototype.normalize","UNSUPPORTED_OPERATION",{operation:"String.prototype.normalize",info:{form:t}}),e=e.normalize(t));let n=[];for(let t=0;t>6|192),n.push(63&o|128);else if((64512&o)==55296){t++;let i=e.charCodeAt(t);assertArgument(t>18|240),n.push(s>>12&63|128),n.push(s>>6&63|128),n.push(63&s|128)}else n.push(o>>12|224),n.push(o>>6&63|128),n.push(63&o|128)}return new Uint8Array(n)}Object.freeze({error:function(e,t,n,o,i){assertArgument(!1,`invalid codepoint at offset ${t}; ${e}`,"bytes",n)},ignore:ignoreFunc,replace:function(e,t,n,o,i){return"OVERLONG"===e?(assertArgument("number"==typeof i,"invalid bad code point for replacement","badCodepoint",i),o.push(i),0):(o.push(65533),ignoreFunc(e,t,n,o,i))}});let ee=(0,i.createContext)(void 0),AdminProvider=e=>{let{children:t}=e,{address:n,isConnected:c}=(0,s.m)(),{signMessage:u,data:d}=(0,l.Q)(),[p,f]=(0,i.useState)(!1),[v,w]=(0,i.useState)([]),[C,E]=(0,i.useState)(),[x,A]=(0,i.useState)(),[k,B]=(0,i.useState)(!0),[S,I]=(0,i.useState)([]);return(0,i.useEffect)(()=>{c&&n||(A(void 0),E(void 0))},[n,c]),(0,i.useEffect)(()=>{let e=localStorage.getItem("expiryTimestamp"),t=e?parseInt(e,10):null;if(t&&t>Date.now()){E(t);let e=localStorage.getItem("signature");e&&A(e)}},[n,c]),(0,i.useEffect)(()=>{C&&C>Date.now()&&(localStorage.setItem("expiryTimestamp",C.toString()),x&&localStorage.setItem("signature",x))},[C,x,n,c]),(0,i.useEffect)(()=>{d&&A(d)},[d,n,c]),(0,i.useEffect)(()=>{let e=setInterval(()=>{if(C){let e=Date.now();B(eclearInterval(e)},[C,n,c]),(0,i.useEffect)(()=>{if(C&&x){var e;let t=null===(e=function(e,t){var n,o;let i=("string"==typeof(n=e)&&(n=toUtf8Bytes(n)),keccak256(concat([toUtf8Bytes("\x19Ethereum Signed Message:\n"),toUtf8Bytes(String(n.length)),n])));return function(e){if(assertArgument("string"==typeof e,"invalid address","address",e),e.match(/^(0x)?[0-9a-fA-F]{40}$/)){e.startsWith("0x")||(e="0x"+e);let t=getChecksumAddress(e);return assertArgument(!e.match(/([A-F].*[a-f])|([a-f].*[A-F])/)||t===e,"bad address checksum","address",e),t}if(e.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)){assertArgument(e.substring(2,4)===function(e){let t=(e=(e=e.toUpperCase()).substring(4)+e.substring(0,2)+"00").split("").map(e=>b[e]).join("");for(;t.length>=15;){let e=t.substring(0,15);t=parseInt(e,10)%97+t.substring(e.length)}let n=String(98-parseInt(t,10)%97);for(;n.length<2;)n="0"+n;return n}(e),"bad icap checksum","address",e);let t=(function(e){e=e.toLowerCase();let t=m;for(let n=0;n{let e=v.some(e=>n&&(null==e?void 0:e.toLowerCase())===(null==n?void 0:n.toLowerCase()));f(e)},[n,v,c]),(0,o.jsx)(ee.Provider,{value:{admin:p,setAdmin:f,allAdmins:v,setAllAdmins:w,expiryTimestamp:C,setExpiryTimestamp:E,generateSignature:()=>{let e=Date.now()+432e5;u({message:e.toString()}),E(e)},signature:x,setSignature:A,validTimestamp:k,setValidTimestamp:B,networks:S,setNetworks:I},children:t})},useAdminContext=()=>{let e=(0,i.useContext)(ee);if(void 0===e)throw Error("AdminContext must be used within an AdminProvider");return e}},38492:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return App}});var o=n(85893);n(32352);var i=n(59581);n(56953);var s=n(89192),l=n(99931),c=n(24139),u=n(56888),d=n(27037),p=n(7506),f=class extends p.l{constructor(e={}){super(),this.config=e,this.#o=new Map}#o;build(e,t,n){let o=t.queryKey,i=t.queryHash??(0,c.Rm)(o,t),s=this.get(i);return s||(s=new u.A({cache:this,queryKey:o,queryHash:i,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(o)}),this.add(s)),s}add(e){this.#o.has(e.queryHash)||(this.#o.set(e.queryHash,e),this.notify({type:"added",query:e}))}remove(e){let t=this.#o.get(e.queryHash);t&&(e.destroy(),t===e&&this.#o.delete(e.queryHash),this.notify({type:"removed",query:e}))}clear(){d.V.batch(()=>{this.getAll().forEach(e=>{this.remove(e)})})}get(e){return this.#o.get(e)}getAll(){return[...this.#o.values()]}find(e){let t={exact:!0,...e};return this.getAll().find(e=>(0,c._x)(t,e))}findAll(e={}){let t=this.getAll();return Object.keys(e).length>0?t.filter(t=>(0,c._x)(e,t)):t}notify(e){d.V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}onFocus(){d.V.batch(()=>{this.getAll().forEach(e=>{e.onFocus()})})}onOnline(){d.V.batch(()=>{this.getAll().forEach(e=>{e.onOnline()})})}},m=n(59289),g=class extends p.l{constructor(e={}){super(),this.config=e,this.#i=[],this.#s=0}#i;#s;#l;build(e,t,n){let o=new m.m({mutationCache:this,mutationId:++this.#s,options:e.defaultMutationOptions(t),state:n});return this.add(o),o}add(e){this.#i.push(e),this.notify({type:"added",mutation:e})}remove(e){this.#i=this.#i.filter(t=>t!==e),this.notify({type:"removed",mutation:e})}clear(){d.V.batch(()=>{this.#i.forEach(e=>{this.remove(e)})})}getAll(){return this.#i}find(e){let t={exact:!0,...e};return this.#i.find(e=>(0,c.X7)(t,e))}findAll(e={}){return this.#i.filter(t=>(0,c.X7)(e,t))}notify(e){d.V.batch(()=>{this.listeners.forEach(t=>{t(e)})})}resumePausedMutations(){return this.#l=(this.#l??Promise.resolve()).then(()=>{let e=this.#i.filter(e=>e.state.isPaused);return d.V.batch(()=>e.reduce((e,t)=>e.then(()=>t.continue().catch(c.ZT)),Promise.resolve()))}).then(()=>{this.#l=void 0}),this.#l}},b=n(66474),y=n(14304);function getNextPageParam(e,{pages:t,pageParams:n}){let o=t.length-1;return e.getNextPageParam(t[o],t,n[o],n)}function getPreviousPageParam(e,{pages:t,pageParams:n}){return e.getPreviousPageParam?.(t[0],t,n[0],n)}var v=class{#c;#u;#d;#p;#h;#f;#m;#g;constructor(e={}){this.#c=e.queryCache||new f,this.#u=e.mutationCache||new g,this.#d=e.defaultOptions||{},this.#p=new Map,this.#h=new Map,this.#f=0}mount(){this.#f++,1===this.#f&&(this.#m=b.j.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#c.onFocus())}),this.#g=y.N.subscribe(async e=>{e&&(await this.resumePausedMutations(),this.#c.onOnline())}))}unmount(){this.#f--,0===this.#f&&(this.#m?.(),this.#m=void 0,this.#g?.(),this.#g=void 0)}isFetching(e){return this.#c.findAll({...e,fetchStatus:"fetching"}).length}isMutating(e){return this.#u.findAll({...e,status:"pending"}).length}getQueryData(e){let t=this.defaultQueryOptions({queryKey:e});return this.#c.get(t.queryHash)?.state.data}ensureQueryData(e){let t=this.getQueryData(e.queryKey);if(void 0===t)return this.fetchQuery(e);{let n=this.defaultQueryOptions(e),o=this.#c.build(this,n);return e.revalidateIfStale&&o.isStaleByTime(n.staleTime)&&this.prefetchQuery(n),Promise.resolve(t)}}getQueriesData(e){return this.getQueryCache().findAll(e).map(({queryKey:e,state:t})=>{let n=t.data;return[e,n]})}setQueryData(e,t,n){let o=this.defaultQueryOptions({queryKey:e}),i=this.#c.get(o.queryHash),s=i?.state.data,l=(0,c.SE)(t,s);if(void 0!==l)return this.#c.build(this,o).setData(l,{...n,manual:!0})}setQueriesData(e,t,n){return d.V.batch(()=>this.getQueryCache().findAll(e).map(({queryKey:e})=>[e,this.setQueryData(e,t,n)]))}getQueryState(e){let t=this.defaultQueryOptions({queryKey:e});return this.#c.get(t.queryHash)?.state}removeQueries(e){let t=this.#c;d.V.batch(()=>{t.findAll(e).forEach(e=>{t.remove(e)})})}resetQueries(e,t){let n=this.#c,o={type:"active",...e};return d.V.batch(()=>(n.findAll(e).forEach(e=>{e.reset()}),this.refetchQueries(o,t)))}cancelQueries(e={},t={}){let n={revert:!0,...t},o=d.V.batch(()=>this.#c.findAll(e).map(e=>e.cancel(n)));return Promise.all(o).then(c.ZT).catch(c.ZT)}invalidateQueries(e={},t={}){return d.V.batch(()=>{if(this.#c.findAll(e).forEach(e=>{e.invalidate()}),"none"===e.refetchType)return Promise.resolve();let n={...e,type:e.refetchType??e.type??"active"};return this.refetchQueries(n,t)})}refetchQueries(e={},t){let n={...t,cancelRefetch:t?.cancelRefetch??!0},o=d.V.batch(()=>this.#c.findAll(e).filter(e=>!e.isDisabled()).map(e=>{let t=e.fetch(void 0,n);return n.throwOnError||(t=t.catch(c.ZT)),"paused"===e.state.fetchStatus?Promise.resolve():t}));return Promise.all(o).then(c.ZT)}fetchQuery(e){let t=this.defaultQueryOptions(e);void 0===t.retry&&(t.retry=!1);let n=this.#c.build(this,t);return n.isStaleByTime(t.staleTime)?n.fetch(t):Promise.resolve(n.state.data)}prefetchQuery(e){return this.fetchQuery(e).then(c.ZT).catch(c.ZT)}fetchInfiniteQuery(e){var t;return e.behavior=(t=e.pages,{onFetch:(e,n)=>{let fetchFn=async()=>{let n;let o=e.options,i=e.fetchOptions?.meta?.fetchMore?.direction,s=e.state.data?.pages||[],l=e.state.data?.pageParams||[],u=!1,addSignalProperty=t=>{Object.defineProperty(t,"signal",{enumerable:!0,get:()=>(e.signal.aborted?u=!0:e.signal.addEventListener("abort",()=>{u=!0}),e.signal)})},d=e.options.queryFn&&e.options.queryFn!==c.CN?e.options.queryFn:()=>Promise.reject(Error(`Missing queryFn: '${e.options.queryHash}'`)),fetchPage=async(t,n,o)=>{if(u)return Promise.reject();if(null==n&&t.pages.length)return Promise.resolve(t);let i={queryKey:e.queryKey,pageParam:n,direction:o?"backward":"forward",meta:e.options.meta};addSignalProperty(i);let s=await d(i),{maxPages:l}=e.options,p=o?c.Ht:c.VX;return{pages:p(t.pages,s,l),pageParams:p(t.pageParams,n,l)}};if(i&&s.length){let e="backward"===i,t=e?getPreviousPageParam:getNextPageParam,c={pages:s,pageParams:l},u=t(o,c);n=await fetchPage(c,u,e)}else{n=await fetchPage({pages:[],pageParams:[]},l[0]??o.initialPageParam);let e=t??s.length;for(let t=1;te.options.persister?.(fetchFn,{queryKey:e.queryKey,meta:e.options.meta,signal:e.signal},n):e.fetchFn=fetchFn}}),this.fetchQuery(e)}prefetchInfiniteQuery(e){return this.fetchInfiniteQuery(e).then(c.ZT).catch(c.ZT)}resumePausedMutations(){return y.N.isOnline()?this.#u.resumePausedMutations():Promise.resolve()}getQueryCache(){return this.#c}getMutationCache(){return this.#u}getDefaultOptions(){return this.#d}setDefaultOptions(e){this.#d=e}setQueryDefaults(e,t){this.#p.set((0,c.Ym)(e),{queryKey:e,defaultOptions:t})}getQueryDefaults(e){let t=[...this.#p.values()],n={};return t.forEach(t=>{(0,c.to)(e,t.queryKey)&&(n={...n,...t.defaultOptions})}),n}setMutationDefaults(e,t){this.#h.set((0,c.Ym)(e),{mutationKey:e,defaultOptions:t})}getMutationDefaults(e){let t=[...this.#h.values()],n={};return t.forEach(t=>{(0,c.to)(e,t.mutationKey)&&(n={...n,...t.defaultOptions})}),n}defaultQueryOptions(e){if(e._defaulted)return e;let t={...this.#d.queries,...this.getQueryDefaults(e.queryKey),...e,_defaulted:!0};return t.queryHash||(t.queryHash=(0,c.Rm)(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.throwOnError&&(t.throwOnError=!!t.suspense),!t.networkMode&&t.persister&&(t.networkMode="offlineFirst"),!0!==t.enabled&&t.queryFn===c.CN&&(t.enabled=!1),t}defaultMutationOptions(e){return e?._defaulted?e:{...this.#d.mutations,...e?.mutationKey&&this.getMutationDefaults(e.mutationKey),...e,_defaulted:!0}}clear(){this.#c.clear(),this.#u.clear()}},w=n(30202),C=n(86164);let E=(0,C.a)({id:31337,name:"Hardhat",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"]}}});var x=n(66403);let A=(0,C.a)({id:5,name:"Goerli",nativeCurrency:{name:"Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.ankr.com/eth_goerli"]}},blockExplorers:{default:{name:"Etherscan",url:"https://goerli.etherscan.io",apiUrl:"https://api-goerli.etherscan.io/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xfc4AC75C46C914aF5892d6d3eFFcebD7917293F1",blockCreated:10339206},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:6507670}},testnet:!0});var k=n(95946),B=n(43310),S=n(6073),I=n(30866);let j={block:(0,B.G)({format(e){let t=e.transactions?.map(e=>{if("string"==typeof e)return e;let t=S.Tr(e);return"0x7e"===t.typeHex&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?k.y_(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t});return{transactions:t,stateRoot:e.stateRoot}}}),transaction:(0,S.y_)({format(e){let t={};return"0x7e"===e.type&&(t.isSystemTx=e.isSystemTx,t.mint=e.mint?(0,k.y_)(e.mint):void 0,t.sourceHash=e.sourceHash,t.type="deposit"),t}}),transactionReceipt:(0,I.d)({format:e=>({l1GasPrice:e.l1GasPrice?(0,k.y_)(e.l1GasPrice):null,l1GasUsed:e.l1GasUsed?(0,k.y_)(e.l1GasUsed):null,l1Fee:e.l1Fee?(0,k.y_)(e.l1Fee):null,l1FeeScalar:e.l1FeeScalar?Number(e.l1FeeScalar):null})})};var T=n(26087),P=n(60480),M=n(57040),O=n(92106),R=n(62027),U=n(11221),F=n(11187);function toRlp(e,t="hex"){let n=function getEncodable(e){return Array.isArray(e)?function(e){let t=e.reduce((e,t)=>e+t.length,0),n=getSizeOfLength(t),o=t<=55?1+t:1+n+t;return{length:o,encode(o){for(let{encode:i}of(t<=55?o.pushByte(192+t):(o.pushByte(247+n),1===n?o.pushUint8(t):2===n?o.pushUint16(t):3===n?o.pushUint24(t):o.pushUint32(t)),e))i(o)}}}(e.map(e=>getEncodable(e))):function(e){let t="string"==typeof e?(0,F.nr)(e):e,n=getSizeOfLength(t.length),o=1===t.length&&t[0]<128?1:t.length<=55?1+t.length:1+n+t.length;return{length:o,encode(e){1===t.length&&t[0]<128||(t.length<=55?e.pushByte(128+t.length):(e.pushByte(183+n),1===n?e.pushUint8(t.length):2===n?e.pushUint16(t.length):3===n?e.pushUint24(t.length):e.pushUint32(t.length))),e.pushBytes(t)}}}(e)}(e),o=(0,U.q)(new Uint8Array(n.length));return(n.encode(o),"hex"===t)?(0,O.ci)(o.bytes):o.bytes}function getSizeOfLength(e){if(e<256)return 1;if(e<65536)return 2;if(e<16777216)return 3;if(e<4294967296)return 4;throw new R.G("Length is too large.")}var N=n(33639);function blobsToCommitments(e){let{kzg:t}=e,n=e.to??("string"==typeof e.blobs[0]?"hex":"bytes"),o="string"==typeof e.blobs[0]?e.blobs.map(e=>(0,F.nr)(e)):e.blobs,i=[];for(let e of o)i.push(Uint8Array.from(t.blobToKzgCommitment(e)));return"bytes"===n?i:i.map(e=>(0,O.ci)(e))}function blobsToProofs(e){let{kzg:t}=e,n=e.to??("string"==typeof e.blobs[0]?"hex":"bytes"),o="string"==typeof e.blobs[0]?e.blobs.map(e=>(0,F.nr)(e)):e.blobs,i="string"==typeof e.commitments[0]?e.commitments.map(e=>(0,F.nr)(e)):e.commitments,s=[];for(let e=0;e(0,O.ci)(e))}var D=n(11606),_=n(15102);let BlobSizeTooLargeError=class BlobSizeTooLargeError extends R.G{constructor({maxSize:e,size:t}){super("Blob size is too large.",{metaMessages:[`Max: ${e} bytes`,`Given: ${t} bytes`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BlobSizeTooLargeError"})}};let EmptyBlobError=class EmptyBlobError extends R.G{constructor(){super("Blob data must not be empty."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EmptyBlobError"})}};let InvalidVersionedHashSizeError=class InvalidVersionedHashSizeError extends R.G{constructor({hash:e,size:t}){super(`Versioned hash "${e}" size is invalid.`,{metaMessages:["Expected: 32",`Received: ${t}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidVersionedHashSizeError"})}};let InvalidVersionedHashVersionError=class InvalidVersionedHashVersionError extends R.G{constructor({hash:e,version:t}){super(`Versioned hash "${e}" version is invalid.`,{metaMessages:["Expected: 1",`Received: ${t}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidVersionedHashVersionError"})}};var L=n(39135),z=n(61836),q=n(80377),G=n(26445),W=n(3972);function assertTransactionEIP1559(e){let{chainId:t,maxPriorityFeePerGas:n,maxFeePerGas:o,to:i}=e;if(t<=0)throw new q.hJ({chainId:t});if(i&&!(0,P.U)(i))throw new T.b({address:i});if(o&&o>2n**256n-1n)throw new G.Hh({maxFeePerGas:o});if(n&&o&&n>o)throw new G.cs({maxFeePerGas:o,maxPriorityFeePerGas:n})}var H=n(82994);function serializeAccessList(e){if(!e||0===e.length)return[];let t=[];for(let n=0;n2n**256n-1n)throw new G.Hh({maxFeePerGas:o})}(e);let p=serializeAccessList(u),f=[(0,O.NC)(n),s?(0,O.NC)(s):"0x",d?(0,O.NC)(d):"0x",o?(0,O.NC)(o):"0x",l??"0x",c?(0,O.NC)(c):"0x",i??"0x",p,...toYParitySignatureArray(e,t)];return(0,M.SM)(["0x01",toRlp(f)])}(e,t):"eip4844"===n?function(e,t){let{chainId:n,gas:o,nonce:i,to:s,value:l,maxFeePerBlobGas:c,maxFeePerGas:u,maxPriorityFeePerGas:d,accessList:p,data:f}=e;!function(e){let{blobVersionedHashes:t}=e;if(t){if(0===t.length)throw new EmptyBlobError;for(let e of t){let t=(0,L.d)(e),n=(0,k.ly)((0,W.tP)(e,0,1));if(32!==t)throw new InvalidVersionedHashSizeError({hash:e,size:t});if(1!==n)throw new InvalidVersionedHashVersionError({hash:e,version:n})}}assertTransactionEIP1559(e)}(e);let m=e.blobVersionedHashes,g=e.sidecars;if(e.blobs){let t="string"==typeof e.blobs[0]?e.blobs:e.blobs.map(e=>(0,O.ci)(e)),n=e.kzg,o=blobsToCommitments({blobs:t,kzg:n}),i=blobsToProofs({blobs:t,commitments:o,kzg:n});m=function(e){let{commitments:t,version:n}=e,o=e.to??("string"==typeof t[0]?"hex":"bytes"),i=[];for(let e of t)i.push(function(e){let{commitment:t,version:n=1}=e,o=e.to??("string"==typeof t?"hex":"bytes"),i=function(e,t){let n=(0,D.J)((0,_.v)(e,{strict:!1})?(0,F.O0)(e):e);return"bytes"===(t||"hex")?n:(0,O.NC)(n)}(t,"bytes");return i.set([n],0),"bytes"===o?i:(0,O.ci)(i)}({commitment:e,to:o,version:n}));return i}({commitments:o}),!1!==g&&(g=function(e){let{data:t,kzg:n,to:o}=e,i=e.blobs??function(e){let t=e.to??("string"==typeof e.data?"hex":"bytes"),n="string"==typeof e.data?(0,F.nr)(e.data):e.data,o=(0,L.d)(n);if(!o)throw new EmptyBlobError;if(o>253951)throw new BlobSizeTooLargeError({maxSize:253951,size:o});let i=[],s=!0,l=0;for(;s;){let e=(0,U.q)(new Uint8Array(131072)),t=0;for(;t<4096;){let o=n.slice(l,l+31);if(e.pushByte(0),e.pushBytes(o),o.length<31){e.pushByte(128),s=!1;break}t++,l+=31}i.push(e)}return"bytes"===t?i.map(e=>e.bytes):i.map(e=>(0,O.ci)(e.bytes))}({data:t,to:o}),s=e.commitments??blobsToCommitments({blobs:i,kzg:n,to:o}),l=e.proofs??blobsToProofs({blobs:i,commitments:s,kzg:n,to:o}),c=[];for(let e=0;e2n**256n-1n)throw new G.Hh({maxFeePerGas:o});if(l)throw new R.G("`accessList` is not a valid Legacy Transaction attribute.")}(e);let d=[s?(0,O.NC)(s):"0x",u?(0,O.NC)(u):"0x",o?(0,O.NC)(o):"0x",l??"0x",c?(0,O.NC)(c):"0x",i??"0x"];if(t){let e=(()=>{if(t.v>=35n){let e=(t.v-35n)/2n;return e>0?t.v:27n+(35n===t.v?0n:1n)}if(n>0)return BigInt(2*n)+BigInt(35n+t.v-27n);let e=27n+(27n===t.v?0n:1n);if(t.v!==e)throw new N.vl({v:t.v});return e})();d=[...d,(0,O.NC)(e),t.r,t.s]}else n>0&&(d=[...d,(0,O.NC)(n),"0x","0x"]);return toRlp(d)}(e,t)}function toYParitySignatureArray(e,t){let{r:n,s:o,v:i,yParity:s}=t??e;if(void 0===n||void 0===o||void 0===i&&void 0===s)return[];let l="number"==typeof s?s?(0,O.NC)(1):"0x":0n===i?"0x":1n===i?(0,O.NC)(1):27n===i?"0x":(0,O.NC)(1);return[l,(0,z.f)(n),(0,z.f)(o)]}let Q={contracts:{gasPriceOracle:{address:"0x420000000000000000000000000000000000000F"},l1Block:{address:"0x4200000000000000000000000000000000000015"},l2CrossDomainMessenger:{address:"0x4200000000000000000000000000000000000007"},l2Erc721Bridge:{address:"0x4200000000000000000000000000000000000014"},l2StandardBridge:{address:"0x4200000000000000000000000000000000000010"},l2ToL1MessagePasser:{address:"0x4200000000000000000000000000000000000016"}},formatters:j,serializers:{transaction:function(e,t){return"deposit"===e.type||void 0!==e.sourceHash?function(e){!function(e){let{from:t,to:n}=e;if(t&&!(0,P.U)(t))throw new T.b({address:t});if(n&&!(0,P.U)(n))throw new T.b({address:n})}(e);let{sourceHash:t,data:n,from:o,gas:i,isSystemTx:s,mint:l,to:c,value:u}=e,d=[t,o,c??"0x",l?(0,O.NC)(l):"0x",u?(0,O.NC)(u):"0x",i?(0,O.NC)(i):"0x",s?"0x1":"0x",n??"0x"];return(0,M.SM)(["0x7e",toRlp(d)])}(e):serializeTransaction(e,t)}}},K=(0,C.a)({...Q,id:10,name:"OP Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.optimism.io"]}},blockExplorers:{default:{name:"Optimism Explorer",url:"https://optimistic.etherscan.io",apiUrl:"https://api-optimistic.etherscan.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0xdfe97868233d1aa22e815a266982f2cf17685a27"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:4286263},portal:{1:{address:"0xbEb5Fc579115071764c7423A4f12eDde41f106Ed"}},l1StandardBridge:{1:{address:"0x99C9fc46f92E8a1c0deC1b1747d010903E884bE1"}}},sourceId:1}),V=(0,C.a)({id:14,name:"Flare Mainnet",nativeCurrency:{decimals:18,name:"flare",symbol:"FLR"},rpcUrls:{default:{http:["https://flare-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Flare Explorer",url:"https://flare-explorer.flare.network",apiUrl:"https://flare-explorer.flare.network/api"}}}),Z=(0,C.a)({id:16,name:"Coston",nativeCurrency:{decimals:18,name:"costonflare",symbol:"CFLR"},rpcUrls:{default:{http:["https://coston-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Coston Explorer",url:"https://coston-explorer.flare.network",apiUrl:"https://coston-explorer.flare.network/api"}},testnet:!0}),J=(0,C.a)({id:19,name:"Songbird Mainnet",nativeCurrency:{decimals:18,name:"songbird",symbol:"SGB"},rpcUrls:{default:{http:["https://songbird-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Songbird Explorer",url:"https://songbird-explorer.flare.network",apiUrl:"https://songbird-explorer.flare.network/api"}}}),X=(0,C.a)({id:25,name:"Cronos Mainnet",nativeCurrency:{decimals:18,name:"Cronos",symbol:"CRO"},rpcUrls:{default:{http:["https://evm.cronos.org"]}},blockExplorers:{default:{name:"Cronos Explorer",url:"https://explorer.cronos.org",apiUrl:"https://explorer-api.cronos.org/mainnet/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1963112}}}),Y=(0,C.a)({id:30,name:"Rootstock Mainnet",network:"rootstock",nativeCurrency:{decimals:18,name:"Rootstock Bitcoin",symbol:"RBTC"},rpcUrls:{default:{http:["https://public-node.rsk.co"]}},blockExplorers:{default:{name:"RSK Explorer",url:"https://explorer.rsk.co"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:4249540}}}),$=(0,C.a)({id:40,name:"Telos",nativeCurrency:{decimals:18,name:"Telos",symbol:"TLOS"},rpcUrls:{default:{http:["https://mainnet.telos.net/evm"]}},blockExplorers:{default:{name:"Teloscan",url:"https://www.teloscan.io/"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:246530709}}}),ee=(0,C.a)({id:41,name:"Telos",nativeCurrency:{decimals:18,name:"Telos",symbol:"TLOS"},rpcUrls:{default:{http:["https://testnet.telos.net/evm"]}},blockExplorers:{default:{name:"Teloscan (testnet)",url:"https://testnet.teloscan.io/"}},testnet:!0}),et=(0,C.a)({id:42,network:"lukso",name:"LUKSO",nativeCurrency:{name:"LUKSO",symbol:"LYX",decimals:18},rpcUrls:{default:{http:["https://rpc.mainnet.lukso.network"],webSocket:["wss://ws-rpc.mainnet.lukso.network"]}},blockExplorers:{default:{name:"LUKSO Mainnet Explorer",url:"https://explorer.execution.mainnet.lukso.network",apiUrl:"https://api.explorer.execution.mainnet.lukso.network/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:468183}}}),er=(0,C.a)({id:50,name:"XinFin Network",nativeCurrency:{decimals:18,name:"XDC",symbol:"XDC"},rpcUrls:{default:{http:["https://rpc.xinfin.network"]}},blockExplorers:{xinfin:{name:"XinFin",url:"https://explorer.xinfin.network"},default:{name:"Blocksscan",url:"https://xdc.blocksscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:71542788}}}),en=(0,C.a)({id:51,name:"Apothem Network",nativeCurrency:{decimals:18,name:"TXDC",symbol:"TXDC"},rpcUrls:{default:{http:["https://erpc.apothem.network"]}},blockExplorers:{default:{name:"Blocksscan",url:"https://apothem.blocksscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:59765389}}}),ea=(0,C.a)({id:56,name:"BNB Smart Chain",nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://rpc.ankr.com/bsc"]}},blockExplorers:{default:{name:"BscScan",url:"https://bscscan.com",apiUrl:"https://api.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15921452}}}),eo=(0,C.a)({id:57,name:"Syscoin Mainnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc.syscoin.org"],webSocket:["wss://rpc.syscoin.org/wss"]}},blockExplorers:{default:{name:"SyscoinExplorer",url:"https://explorer.syscoin.org",apiUrl:"https://explorer.syscoin.org/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:287139}}}),ei=(0,C.a)({id:61,name:"Ethereum Classic",nativeCurrency:{decimals:18,name:"ETC",symbol:"ETC"},rpcUrls:{default:{http:["https://etc.rivet.link"]}},blockExplorers:{default:{name:"Blockscout",url:"https://blockscout.com/etc/mainnet"}}}),es=(0,C.a)({id:66,name:"OKC",nativeCurrency:{decimals:18,name:"OKT",symbol:"OKT"},rpcUrls:{default:{http:["https://exchainrpc.okex.org"]}},blockExplorers:{default:{name:"oklink",url:"https://www.oklink.com/okc"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:10364792}}}),el=(0,C.a)({id:71,name:"Conflux eSpace Testnet",network:"cfx-espace-testnet",testnet:!0,nativeCurrency:{name:"Conflux",symbol:"CFX",decimals:18},rpcUrls:{default:{http:["https://evmtestnet.confluxrpc.org"],webSocket:["wss://evmtestnet.confluxrpc.org/ws"]}},blockExplorers:{default:{name:"ConfluxScan",url:"https://evmtestnet.confluxscan.io"}},contracts:{multicall3:{address:"0xEFf0078910f638cd81996cc117bccD3eDf2B072F",blockCreated:117499050}}}),ec=(0,C.a)({id:82,name:"Meter",nativeCurrency:{decimals:18,name:"MTR",symbol:"MTR"},rpcUrls:{default:{http:["https://rpc.meter.io"]}},blockExplorers:{default:{name:"MeterScan",url:"https://scan.meter.io"}}}),eu=(0,C.a)({id:83,name:"Meter Testnet",nativeCurrency:{decimals:18,name:"MTR",symbol:"MTR"},rpcUrls:{default:{http:["https://rpctest.meter.io"]}},blockExplorers:{default:{name:"MeterTestnetScan",url:"https://scan-warringstakes.meter.io"}}}),ed=(0,C.a)({id:97,name:"Binance Smart Chain Testnet",nativeCurrency:{decimals:18,name:"BNB",symbol:"tBNB"},rpcUrls:{default:{http:["https://data-seed-prebsc-1-s1.bnbchain.org:8545"]}},blockExplorers:{default:{name:"BscScan",url:"https://testnet.bscscan.com",apiUrl:"https://testnet.bscscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:17422483}},testnet:!0}),ep=(0,C.a)({id:100,name:"Gnosis",nativeCurrency:{decimals:18,name:"Gnosis",symbol:"xDAI"},rpcUrls:{default:{http:["https://rpc.gnosischain.com"],webSocket:["wss://rpc.gnosischain.com/wss"]}},blockExplorers:{default:{name:"Gnosisscan",url:"https://gnosisscan.io",apiUrl:"https://api.gnosisscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:21022491}}}),eh=(0,C.a)({id:109,name:"Shibarium",network:"shibarium",nativeCurrency:{name:"Bone",symbol:"BONE",decimals:18},rpcUrls:{default:{http:["https://rpc.shibrpc.com"]}},blockExplorers:{default:{name:"Blockscout",url:"https://shibariumscan.io"}},contracts:{multicall3:{address:"0x864Bf681ADD6052395188A89101A1B37d3B4C961",blockCreated:265900}}}),ef=(0,C.a)({id:114,name:"Coston2",nativeCurrency:{decimals:18,name:"coston2flare",symbol:"C2FLR"},rpcUrls:{default:{http:["https://coston2-api.flare.network/ext/C/rpc"]}},blockExplorers:{default:{name:"Coston2 Explorer",url:"https://coston2-explorer.flare.network",apiUrl:"https://coston2-explorer.flare.network/api"}},testnet:!0}),em=(0,C.a)({id:122,name:"Fuse",nativeCurrency:{name:"Fuse",symbol:"FUSE",decimals:18},rpcUrls:{default:{http:["https://rpc.fuse.io"]}},blockExplorers:{default:{name:"Fuse Explorer",url:"https://explorer.fuse.io",apiUrl:"https://explorer.fuse.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:16146628}}}),eg=(0,C.a)({id:123,name:"Fuse Sparknet",nativeCurrency:{name:"Spark",symbol:"SPARK",decimals:18},rpcUrls:{default:{http:["https://rpc.fusespark.io"]}},blockExplorers:{default:{name:"Sparkent Explorer",url:"https://explorer.fusespark.io",apiUrl:"https://explorer.fusespark.io/api"}}}),eb=(0,C.a)({id:137,name:"Polygon",nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},rpcUrls:{default:{http:["https://polygon-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://polygonscan.com",apiUrl:"https://api.polygonscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}}}),ey=(0,C.a)({id:148,name:"Shimmer",network:"shimmer",nativeCurrency:{decimals:18,name:"Shimmer",symbol:"SMR"},rpcUrls:{default:{http:["https://json-rpc.evm.shimmer.network"]}},blockExplorers:{default:{name:"Shimmer Network Explorer",url:"https://explorer.evm.shimmer.network",apiUrl:"https://explorer.evm.shimmer.network/api"}}}),ev=(0,C.a)({id:169,name:"Manta Pacific Mainnet",network:"manta",nativeCurrency:{decimals:18,name:"ETH",symbol:"ETH"},rpcUrls:{default:{http:["https://pacific-rpc.manta.network/http"]}},blockExplorers:{default:{name:"Manta Explorer",url:"https://pacific-explorer.manta.network",apiUrl:"https://pacific-explorer.manta.network/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:332890}}}),ew=(0,C.a)({id:195,name:"X1 Testnet",nativeCurrency:{decimals:18,name:"OKB",symbol:"OKB"},rpcUrls:{default:{http:["https://x1testrpc.okx.com"]}},blockExplorers:{default:{name:"OKLink",url:"https://www.oklink.com/x1-test"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:624344}},testnet:!0}),eC=(0,C.a)({id:199,name:"BitTorrent",network:"bittorrent-chain-mainnet",nativeCurrency:{name:"BitTorrent",symbol:"BTT",decimals:18},rpcUrls:{default:{http:["https://rpc.bittorrentchain.io"]},public:{http:["https://rpc.bittorrentchain.io"]}},blockExplorers:{default:{name:"Bttcscan",url:"https://bttcscan.com",apiUrl:"https://api.bttcscan.com/api"}}}),eE=(0,C.a)({id:204,name:"opBNB",nativeCurrency:{name:"BNB",symbol:"BNB",decimals:18},rpcUrls:{default:{http:["https://opbnb-mainnet-rpc.bnbchain.org"]}},blockExplorers:{default:{name:"opbnbscan",url:"https://mainnet.opbnbscan.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:512881}}}),ex=(0,C.a)({id:240,name:"Nexilix Smart Chain",nativeCurrency:{decimals:18,name:"Nexilix",symbol:"NEXILIX"},rpcUrls:{default:{http:["https://rpcurl.pos.nexilix.com"]}},blockExplorers:{default:{name:"NexilixScan",url:"https://scan.nexilix.com"}},contracts:{multicall3:{address:"0x58381c8e2BF9d0C2C4259cA14BdA9Afe02831244",blockCreated:74448}}}),eA=(0,C.a)({id:242,name:"Plinga",nativeCurrency:{name:"Plinga",symbol:"PLINGA",decimals:18},rpcUrls:{default:{http:["https://rpcurl.mainnet.plgchain.com"]}},blockExplorers:{default:{name:"Plgscan",url:"https://www.plgscan.com"}},contracts:{multicall3:{address:"0x0989576160f2e7092908BB9479631b901060b6e4",blockCreated:204489}}}),ek=(0,C.a)({id:248,name:"Oasys",nativeCurrency:{name:"Oasys",symbol:"OAS",decimals:18},rpcUrls:{default:{http:["https://rpc.mainnet.oasys.games"]}},blockExplorers:{default:{name:"OasysScan",url:"https://scan.oasys.games",apiUrl:"https://scan.oasys.games/api"}}}),eB=(0,C.a)({id:250,name:"Fantom",nativeCurrency:{decimals:18,name:"Fantom",symbol:"FTM"},rpcUrls:{default:{http:["https://rpc.ankr.com/fantom"]}},blockExplorers:{default:{name:"FTMScan",url:"https://ftmscan.com",apiUrl:"https://api.ftmscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:33001987}}}),eS=(0,C.a)({...Q,id:252,name:"Fraxtal",nativeCurrency:{name:"Frax Ether",symbol:"frxETH",decimals:18},rpcUrls:{default:{http:["https://rpc.frax.com"]}},blockExplorers:{default:{name:"fraxscan",url:"https://fraxscan.com",apiUrl:"https://api.fraxscan.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0x66CC916Ed5C6C2FA97014f7D1cD141528Ae171e4"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11"},portal:{1:{address:"0x36cb65c1967A0Fb0EEE11569C51C2f2aA1Ca6f6D",blockCreated:19135323}},l1StandardBridge:{1:{address:"0x34C0bD5877A5Ee7099D0f5688D65F4bB9158BDE2",blockCreated:19135323}}},sourceId:1}),eI=(0,C.a)({id:255,name:"Kroma",nativeCurrency:{name:"ETH",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://api.kroma.network"]}},blockExplorers:{default:{name:"Kroma Explorer",url:"https://blockscout.kroma.network",apiUrl:"https://blockscout.kroma.network/api"}},testnet:!1}),ej=(0,C.a)({id:260,name:"zkSync InMemory Node",network:"zksync-in-memory-node",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["http://localhost:8011"]}},testnet:!0}),eT=(0,C.a)({id:270,name:"zkSync CLI Local Node",network:"zksync-cli-local-node",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["http://localhost:3050"]}},testnet:!0}),eP=(0,C.a)({id:288,name:"Boba Network",nativeCurrency:{decimals:18,name:"Boba",symbol:"BOBA"},rpcUrls:{default:{http:["https://mainnet.boba.network"]}},blockExplorers:{default:{name:"BOBAScan",url:"https://bobascan.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:446859}}}),eM=(0,C.a)({id:295,name:"Hedera Mainnet",network:"hedera-mainnet",nativeCurrency:{symbol:"HBAR",name:"HBAR",decimals:18},rpcUrls:{default:{http:["https://mainnet.hashio.io/api"]}},blockExplorers:{default:{name:"Hashscan",url:"https://hashscan.io/mainnet"}},testnet:!1}),eO=(0,C.a)({id:296,name:"Hedera Testnet",network:"hedera-testnet",nativeCurrency:{symbol:"HBAR",name:"HBAR",decimals:18},rpcUrls:{default:{http:["https://testnet.hashio.io/api"]}},blockExplorers:{default:{name:"Hashscan",url:"https://hashscan.io/testnet"}},testnet:!0}),eR=(0,C.a)({id:297,name:"Hedera Previewnet",network:"hedera-previewnet",nativeCurrency:{symbol:"HBAR",name:"HBAR",decimals:18},rpcUrls:{default:{http:["https://previewnet.hashio.io/api"]}},blockExplorers:{default:{name:"Hashscan",url:"https://hashscan.io/previewnet"}},testnet:!0});var eU=n(53992),eF=n(74688);let eN={block:(0,B.G)({format(e){let t=e.transactions?.map(e=>{if("string"==typeof e)return e;let t=eN.transaction?.format(e);return"0x71"===t.typeHex?t.type="eip712":"0xff"===t.typeHex&&(t.type="priority"),t});return{l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,l1BatchTimestamp:e.l1BatchTimestamp?(0,k.y_)(e.l1BatchTimestamp):null,transactions:t}}}),transaction:(0,S.y_)({format(e){let t={};return"0x71"===e.type?t.type="eip712":"0xff"===e.type&&(t.type="priority"),{...t,l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?(0,k.y_)(e.l1BatchTxIndex):null}}}),transactionReceipt:(0,I.d)({format:e=>({l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,l1BatchTxIndex:e.l1BatchTxIndex?(0,k.y_)(e.l1BatchTxIndex):null,logs:e.logs.map(e=>({...(0,eU.U)(e),l1BatchNumber:e.l1BatchNumber?(0,k.y_)(e.l1BatchNumber):null,transactionLogIndex:(0,k.ly)(e.transactionLogIndex),logType:e.logType})),l2ToL1Logs:e.l2ToL1Logs.map(e=>({blockNumber:(0,k.y_)(e.blockHash),blockHash:e.blockHash,l1BatchNumber:(0,k.y_)(e.l1BatchNumber),transactionIndex:(0,k.y_)(e.transactionIndex),shardId:(0,k.y_)(e.shardId),isService:e.isService,sender:e.sender,key:e.key,value:e.value,transactionHash:e.transactionHash,logIndex:(0,k.y_)(e.logIndex)}))})}),transactionRequest:(0,eF.iy)({exclude:["customSignature","factoryDeps","gasPerPubdata","paymaster","paymasterInput"],format:e=>e.gasPerPubdata||e.paymaster&&e.paymasterInput||e.factoryDeps||e.customSignature?{eip712Meta:{...e.gasPerPubdata?{gasPerPubdata:(0,O.NC)(e.gasPerPubdata)}:{},...e.paymaster&&e.paymasterInput?{paymasterParams:{paymaster:e.paymaster,paymasterInput:Array.from((0,F.nr)(e.paymasterInput))}}:{},...e.factoryDeps?{factoryDeps:e.factoryDeps}:{},...e.customSignature?{customSignature:Array.from((0,F.nr)(e.customSignature))}:{}},type:"0x71"}:{}})};let InvalidEip712TransactionError=class InvalidEip712TransactionError extends R.G{constructor(){super('Transaction is not an EIP712 transaction.\n\nTransaction must:\n - include `type: "eip712"`\n - include one of the following: `customSignature`, `paymaster`, `paymasterInput`, `gasPerPubdata`, `factoryDeps`'),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidEip712TransactionError"})}};function isEIP712Transaction(e){return"eip712"===e.type||"customSignature"in e&&!!e.customSignature||"paymaster"in e&&!!e.paymaster||"paymasterInput"in e&&!!e.paymasterInput||"gasPerPubdata"in e&&"bigint"==typeof e.gasPerPubdata||"factoryDeps"in e&&!!e.factoryDeps}function assertEip712Transaction(e){let{chainId:t,to:n,from:o,paymaster:i,paymasterInput:s}=e;if(!isEIP712Transaction(e))throw new InvalidEip712TransactionError;if(!t||t<=0)throw new q.hJ({chainId:t});if(n&&!(0,P.U)(n))throw new T.b({address:n});if(o&&!(0,P.U)(o))throw new T.b({address:o});if(i&&!(0,P.U)(i))throw new T.b({address:i});if(i&&!s)throw new R.G("`paymasterInput` must be provided when `paymaster` is defined");if(!i&&s)throw new R.G("`paymaster` must be provided when `paymasterInput` is defined")}let eD={formatters:eN,serializers:{transaction:function(e,t){return isEIP712Transaction(e)?function(e){let{chainId:t,gas:n,nonce:o,to:i,from:s,value:l,maxFeePerGas:c,maxPriorityFeePerGas:u,customSignature:d,factoryDeps:p,paymaster:f,paymasterInput:m,gasPerPubdata:g,data:b}=e;assertEip712Transaction(e);let y=[o?(0,O.NC)(o):"0x",u?(0,O.NC)(u):"0x",c?(0,O.NC)(c):"0x",n?(0,O.NC)(n):"0x",i??"0x",l?(0,O.NC)(l):"0x",b??"0x0",(0,O.NC)(t),(0,O.NC)(""),(0,O.NC)(""),(0,O.NC)(t),s??"0x",g?(0,O.NC)(g):"0x",p??[],d??"0x",f&&m?[f,m]:[]];return(0,M.SM)(["0x71",toRlp(y)])}(e):serializeTransaction(e,t)}},custom:{getEip712Domain:e=>{assertEip712Transaction(e);let t=function(e){let{gas:t,nonce:n,to:o,from:i,value:s,maxFeePerGas:l,maxPriorityFeePerGas:c,factoryDeps:u,paymaster:d,paymasterInput:p,gasPerPubdata:f,data:m}=e;return{txType:113n,from:BigInt(i),to:o?BigInt(o):0n,gasLimit:t??0n,gasPerPubdataByteLimit:f??0n,maxFeePerGas:l??0n,maxPriorityFeePerGas:c??0n,paymaster:d?BigInt(d):0n,nonce:n?BigInt(n):0n,value:s??0n,data:m||"0x0",factoryDeps:u??[],paymasterInput:p||"0x0"}}(e);return{domain:{name:"zkSync",version:"2",chainId:e.chainId},types:{Transaction:[{name:"txType",type:"uint256"},{name:"from",type:"uint256"},{name:"to",type:"uint256"},{name:"gasLimit",type:"uint256"},{name:"gasPerPubdataByteLimit",type:"uint256"},{name:"maxFeePerGas",type:"uint256"},{name:"maxPriorityFeePerGas",type:"uint256"},{name:"paymaster",type:"uint256"},{name:"nonce",type:"uint256"},{name:"value",type:"uint256"},{name:"data",type:"bytes"},{name:"factoryDeps",type:"bytes32[]"},{name:"paymasterInput",type:"bytes"}]},primaryType:"Transaction",message:t}}}},e_=(0,C.a)({...eD,id:300,name:"zkSync Sepolia Testnet",network:"zksync-sepolia-testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.era.zksync.dev"],webSocket:["wss://sepolia.era.zksync.dev/ws"]}},blockExplorers:{default:{name:"zkExplorer",url:"https://sepolia.explorer.zksync.io/"}},contracts:{multicall3:{address:"0xF9cda624FBC7e059355ce98a31693d299FACd963"}},testnet:!0}),eL=(0,C.a)({id:314,name:"Filecoin Mainnet",nativeCurrency:{decimals:18,name:"filecoin",symbol:"FIL"},rpcUrls:{default:{http:["https://api.node.glif.io/rpc/v1"]}},blockExplorers:{default:{name:"Filfox",url:"https://filfox.info/en"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3328594}}}),ez=(0,C.a)({id:321,name:"KCC Mainnet",network:"KCC Mainnet",nativeCurrency:{decimals:18,name:"KCS",symbol:"KCS"},rpcUrls:{default:{http:["https://kcc-rpc.com"]},public:{http:["https://kcc-rpc.com"]}},blockExplorers:{default:{name:"KCC Explorer",url:"https://explorer.kcc.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11760430}},testnet:!1}),eq=(0,C.a)({...eD,id:324,name:"zkSync Era",network:"zksync-era",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://mainnet.era.zksync.io"],webSocket:["wss://mainnet.era.zksync.io/ws"]}},blockExplorers:{default:{name:"Etherscan",url:"https://era.zksync.network/",apiUrl:"https://api-era.zksync.network/api"}},contracts:{multicall3:{address:"0xF9cda624FBC7e059355ce98a31693d299FACd963"}}}),eG=(0,C.a)({id:338,name:"Cronos Testnet",nativeCurrency:{decimals:18,name:"CRO",symbol:"tCRO"},rpcUrls:{default:{http:["https://evm-t3.cronos.org"]}},blockExplorers:{default:{name:"Cronos Explorer",url:"https://cronos.org/explorer/testnet3"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:10191251}},testnet:!0}),eW=(0,C.a)({id:369,name:"PulseChain",nativeCurrency:{name:"Pulse",symbol:"PLS",decimals:18},testnet:!1,rpcUrls:{default:{http:["https://rpc.pulsechain.com"],webSocket:["wss://ws.pulsechain.com"]}},blockExplorers:{default:{name:"PulseScan",url:"https://scan.pulsechain.com",apiUrl:"https://api.scan.pulsechain.com/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),eH=(0,C.a)({...Q,id:420,name:"Optimism Goerli",nativeCurrency:{name:"Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://goerli.optimism.io"]}},blockExplorers:{default:{name:"Etherscan",url:"https://goerli-optimism.etherscan.io",apiUrl:"https://goerli-optimism.etherscan.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{5:{address:"0xE6Dfba0953616Bacab0c9A8ecb3a9BBa77FC15c0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:49461},portal:{5:{address:"0x5b47E1A08Ea6d985D6649300584e6722Ec4B1383"}},l1StandardBridge:{5:{address:"0x636Af16bf2f682dD3109e60102b8E1A089FedAa8"}}},testnet:!0,sourceId:5}),eQ=(0,C.a)({id:424,network:"pgn",name:"PGN",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.publicgoods.network"]}},blockExplorers:{default:{name:"PGN Explorer",url:"https://explorer.publicgoods.network",apiUrl:"https://explorer.publicgoods.network/api"},blocksout:{name:"PGN Explorer",url:"https://explorer.publicgoods.network",apiUrl:"https://explorer.publicgoods.network/api"}},contracts:{l2OutputOracle:{1:{address:"0x9E6204F750cD866b299594e2aC9eA824E2e5f95c"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3380209},portal:{1:{address:"0xb26Fd985c5959bBB382BAFdD0b879E149e48116c"}},l1StandardBridge:{1:{address:"0xD0204B9527C1bA7bD765Fa5CCD9355d38338272b"}}},formatters:j,sourceId:1}),eK=(0,C.a)({id:570,name:"Rollux Mainnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc.rollux.com"],webSocket:["wss://rpc.rollux.com/wss"]}},blockExplorers:{default:{name:"RolluxExplorer",url:"https://explorer.rollux.com",apiUrl:"https://explorer.rollux.com/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:119222}}}),eV=(0,C.a)({id:571,name:"MetaChain Mainnet",nativeCurrency:{name:"Metatime Coin",symbol:"MTC",decimals:18},rpcUrls:{default:{http:["https://rpc.metatime.com"]}},blockExplorers:{default:{name:"MetaExplorer",url:"https://explorer.metatime.com"}},contracts:{multicall3:{address:"0x0000000000000000000000000000000000003001",blockCreated:0}}}),eZ=(0,C.a)({id:592,name:"Astar",network:"astar-mainnet",nativeCurrency:{name:"Astar",symbol:"ASTR",decimals:18},rpcUrls:{default:{http:["https://astar.api.onfinality.io/public"]}},blockExplorers:{default:{name:"Astar Subscan",url:"https://astar.subscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:761794}},testnet:!1}),eJ=(0,C.a)({id:595,name:"Mandala TC9",network:"mandala",nativeCurrency:{name:"Mandala",symbol:"mACA",decimals:18},rpcUrls:{public:{http:["https://eth-rpc-tc9.aca-staging.network"],webSocket:["wss://eth-rpc-tc9.aca-staging.network"]},default:{http:["https://eth-rpc-tc9.aca-staging.network"],webSocket:["wss://eth-rpc-tc9.aca-staging.network"]}},blockExplorers:{default:{name:"Mandala Blockscout",url:"https://blockscout.mandala.aca-staging.network",apiUrl:"https://blockscout.mandala.aca-staging.network/api"}},testnet:!0}),eX=(0,C.a)({id:599,name:"Metis Goerli",nativeCurrency:{decimals:18,name:"Metis Goerli",symbol:"METIS"},rpcUrls:{default:{http:["https://goerli.gateway.metisdevops.link"]}},blockExplorers:{default:{name:"Metis Goerli Explorer",url:"https://goerli.explorer.metisdevops.link",apiUrl:"https://goerli.explorer.metisdevops.link/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1006207}}}),eY=(0,C.a)({id:646,name:"FlowEVM Previewnet",nativeCurrency:{decimals:18,name:"Flow",symbol:"FLOW"},rpcUrls:{default:{http:["https://previewnet.evm.nodes.onflow.org"]}},blockExplorers:{default:{name:"Previewnet Explorer",url:"https://previewnet.flowdiver.io"}}}),e$=(0,C.a)({id:686,name:"Karura",network:"karura",nativeCurrency:{name:"Karura",symbol:"KAR",decimals:18},rpcUrls:{public:{http:["https://eth-rpc-karura.aca-api.network"],webSocket:["wss://eth-rpc-karura.aca-api.network"]},default:{http:["https://eth-rpc-karura.aca-api.network"],webSocket:["wss://eth-rpc-karura.aca-api.network"]}},blockExplorers:{default:{name:"Karura Blockscout",url:"https://blockscout.karura.network",apiUrl:"https://blockscout.karura.network/api"}},testnet:!1}),e0=(0,C.a)({id:747,name:"FlowEVM Mainnet",nativeCurrency:{decimals:18,name:"Flow",symbol:"FLOW"},rpcUrls:{default:{http:["https://mainnet.evm.nodes.onflow.org"]}},blockExplorers:{default:{name:"Mainnet Explorer",url:"https://flowdiver.io"}}}),e1=(0,C.a)({id:787,name:"Acala",network:"acala",nativeCurrency:{name:"Acala",symbol:"ACA",decimals:18},rpcUrls:{public:{http:["https://eth-rpc-acala.aca-api.network"],webSocket:["wss://eth-rpc-acala.aca-api.network"]},default:{http:["https://eth-rpc-acala.aca-api.network"],webSocket:["wss://eth-rpc-acala.aca-api.network"]}},blockExplorers:{default:{name:"Acala Blockscout",url:"https://blockscout.acala.network",apiUrl:"https://blockscout.acala.network/api"}},testnet:!1}),e6=(0,C.a)({id:841,name:"Taraxa Mainnet",nativeCurrency:{name:"Tara",symbol:"TARA",decimals:18},rpcUrls:{default:{http:["https://rpc.mainnet.taraxa.io"]}},blockExplorers:{default:{name:"Taraxa Explorer",url:"https://explorer.mainnet.taraxa.io"}}}),e3=(0,C.a)({id:842,name:"Taraxa Testnet",nativeCurrency:{name:"Tara",symbol:"TARA",decimals:18},rpcUrls:{default:{http:["https://rpc.testnet.taraxa.io"]}},blockExplorers:{default:{name:"Taraxa Explorer",url:"https://explorer.testnet.taraxa.io"}},testnet:!0}),e2=(0,C.a)({id:888,name:"Wanchain",nativeCurrency:{name:"WANCHAIN",symbol:"WAN",decimals:18},rpcUrls:{default:{http:["https://gwan-ssl.wandevs.org:56891","https://gwan2-ssl.wandevs.org"]}},blockExplorers:{default:{name:"WanScan",url:"https://wanscan.org"}},contracts:{multicall3:{address:"0xcDF6A1566e78EB4594c86Fe73Fcdc82429e97fbB",blockCreated:25312390}}}),e7=(0,C.a)({id:919,name:"Mode Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.mode.network"]}},blockExplorers:{default:{name:"Blockscout",url:"https://sepolia.explorer.mode.network",apiUrl:"https://sepolia.explorer.mode.network/api"}},contracts:{multicall3:{address:"0xBAba8373113Fb7a68f195deF18732e01aF8eDfCF",blockCreated:3019007}},testnet:!0}),e8=(0,C.a)({id:943,name:"PulseChain V4",testnet:!0,nativeCurrency:{name:"V4 Pulse",symbol:"v4PLS",decimals:18},rpcUrls:{default:{http:["https://rpc.v4.testnet.pulsechain.com"],webSocket:["wss://ws.v4.testnet.pulsechain.com"]}},blockExplorers:{default:{name:"PulseScan",url:"https://scan.v4.testnet.pulsechain.com",apiUrl:"https://scan.v4.testnet.pulsechain.com/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}}),e5=(0,C.a)({id:997,name:"5ireChain Thunder Testnet",nativeCurrency:{name:"5ire Token",symbol:"5IRE",decimals:18},rpcUrls:{default:{http:["https://rpc-testnet.5ire.network"]}},blockExplorers:{default:{name:"5ireChain Explorer",url:"https://explorer.5ire.network"}},testnet:!0}),e4=(0,C.a)({id:999,name:"Wanchain Testnet",nativeCurrency:{name:"WANCHAIN",symbol:"WANt",decimals:18},rpcUrls:{default:{http:["https://gwan-ssl.wandevs.org:46891"]}},blockExplorers:{default:{name:"WanScanTest",url:"https://wanscan.org"}},contracts:{multicall3:{address:"0x11c89bF4496c39FB80535Ffb4c92715839CC5324",blockCreated:24743448}},testnet:!0}),e9=(0,C.a)({...Q,id:999,name:"Zora Goerli Testnet",nativeCurrency:{decimals:18,name:"Zora Goerli",symbol:"ETH"},rpcUrls:{default:{http:["https://testnet.rpc.zora.energy"],webSocket:["wss://testnet.rpc.zora.energy"]}},blockExplorers:{default:{name:"Explorer",url:"https://testnet.explorer.zora.energy",apiUrl:"https://testnet.explorer.zora.energy/api"}},contracts:{...Q.contracts,multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:189123},portal:{5:{address:"0xDb9F51790365e7dc196e7D072728df39Be958ACe"}}},sourceId:5,testnet:!0}),te=(0,C.a)({id:1001,name:"Klaytn Baobab Testnet",network:"klaytn-baobab",nativeCurrency:{decimals:18,name:"Baobab Klaytn",symbol:"KLAY"},rpcUrls:{default:{http:["https://public-en-baobab.klaytn.net"]}},blockExplorers:{default:{name:"KlaytnScope",url:"https://baobab.klaytnscope.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:123390593}},testnet:!0}),tt=(0,C.a)({id:1004,name:"Ekta Testnet",nativeCurrency:{decimals:18,name:"EKTA",symbol:"EKTA"},rpcUrls:{default:{http:["https://test.ekta.io:8545"]}},blockExplorers:{default:{name:"Test Ektascan",url:"https://test.ektascan.io",apiUrl:"https://test.ektascan.io/api"}},testnet:!0}),tr=(0,C.a)({id:1017,name:"BNB Greenfield Chain",nativeCurrency:{decimals:18,name:"BNB",symbol:"BNB"},rpcUrls:{default:{http:["https://greenfield-chain.bnbchain.org"]}},blockExplorers:{default:{name:"BNB Greenfield Mainnet Scan",url:"https://greenfieldscan.com"}},testnet:!1}),tn=(0,C.a)({id:1028,name:"BitTorrent Chain Testnet",network:"bittorrent-chain-testnet",nativeCurrency:{name:"BitTorrent",symbol:"BTT",decimals:18},rpcUrls:{default:{http:["https://testrpc.bittorrentchain.io"]},public:{http:["https://testrpc.bittorrentchain.io"]}},blockExplorers:{default:{name:"Bttcscan",url:"https://testnet.bttcscan.com",apiUrl:"https://testnet.bttcscan.com/api"}},testnet:!0}),ta=(0,C.a)({id:1030,name:"Conflux eSpace",nativeCurrency:{name:"Conflux",symbol:"CFX",decimals:18},rpcUrls:{default:{http:["https://evm.confluxrpc.org"],webSocket:["wss://evm.confluxrpc.org/ws"]}},blockExplorers:{default:{name:"ConfluxScan",url:"https://evm.confluxscan.io"}},contracts:{multicall3:{address:"0xEFf0078910f638cd81996cc117bccD3eDf2B072F",blockCreated:68602935}}}),to=(0,C.a)({id:1038,name:"Bronos Testnet",nativeCurrency:{decimals:18,name:"Bronos Coin",symbol:"tBRO"},rpcUrls:{default:{http:["https://evm-testnet.bronos.org"]}},blockExplorers:{default:{name:"BronoScan",url:"https://tbroscan.bronos.org"}},testnet:!0}),ti=(0,C.a)({id:1039,name:"Bronos",nativeCurrency:{decimals:18,name:"BRO",symbol:"BRO"},rpcUrls:{default:{http:["https://evm.bronos.org"]}},blockExplorers:{default:{name:"BronoScan",url:"https://broscan.bronos.org"}}}),ts=(0,C.a)({id:1073,name:"Shimmer Testnet",network:"shimmer-testnet",nativeCurrency:{decimals:18,name:"Shimmer",symbol:"SMR"},rpcUrls:{default:{http:["https://json-rpc.evm.testnet.shimmer.network"]}},blockExplorers:{default:{name:"Shimmer Network Explorer",url:"https://explorer.evm.testnet.shimmer.network",apiUrl:"https://explorer.evm.testnet.shimmer.network/api"}},testnet:!0}),tl=(0,C.a)({id:1088,name:"Metis",nativeCurrency:{decimals:18,name:"Metis",symbol:"METIS"},rpcUrls:{default:{http:["https://andromeda.metis.io/?owner=1088"]}},blockExplorers:{default:{name:"Andromeda Explorer",url:"https://andromeda-explorer.metis.io",apiUrl:"https://andromeda-explorer.metis.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:2338552}}}),tc=(0,C.a)({id:1101,name:"Polygon zkEVM",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://zkevm-rpc.com"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://zkevm.polygonscan.com",apiUrl:"https://api-zkevm.polygonscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:57746}}}),tu=(0,C.a)({id:1111,name:"WEMIX",network:"wemix-mainnet",nativeCurrency:{name:"WEMIX",symbol:"WEMIX",decimals:18},rpcUrls:{default:{http:["https://api.wemix.com"]},public:{http:["https://api.wemix.com"]}},blockExplorers:{default:{name:"wemixExplorer",url:"https://explorer.wemix.com"}}}),td=(0,C.a)({id:1112,name:"WEMIX Testnet",network:"wemix-testnet",nativeCurrency:{name:"WEMIX",symbol:"tWEMIX",decimals:18},rpcUrls:{default:{http:["https://api.test.wemix.com"]},public:{http:["https://api.test.wemix.com"]}},blockExplorers:{default:{name:"wemixExplorer",url:"https://testnet.wemixscan.com",apiUrl:"https://testnet.wemixscan.com/api"}},testnet:!0}),tp=(0,C.a)({id:1116,name:"Core Dao",nativeCurrency:{decimals:18,name:"Core",symbol:"CORE"},rpcUrls:{default:{http:["https://rpc.coredao.org"]}},blockExplorers:{default:{name:"CoreDao",url:"https://scan.coredao.org"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:11907934}},testnet:!1}),th=(0,C.a)({id:1130,network:"defichain-evm",name:"DeFiChain EVM Mainnet",nativeCurrency:{name:"DeFiChain",symbol:"DFI",decimals:8},rpcUrls:{default:{http:["https://eth.mainnet.ocean.jellyfishsdk.com"]},public:{http:["https://eth.mainnet.ocean.jellyfishsdk.com"]}},blockExplorers:{default:{name:"DeFiScan",url:"https://meta.defiscan.live"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:137852}}}),tf=(0,C.a)({id:1131,network:"defichain-evm-testnet",name:"DeFiChain EVM Testnet",nativeCurrency:{name:"DeFiChain",symbol:"DFI",decimals:8},rpcUrls:{default:{http:["https://eth.testnet.ocean.jellyfishsdk.com"]},public:{http:["https://eth.testnet.ocean.jellyfishsdk.com"]}},blockExplorers:{default:{name:"DeFiScan",url:"https://meta.defiscan.live/?network=TestNet"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:156462}},testnet:!0}),tm=(0,C.a)({id:1281,name:"Moonbeam Development Node",nativeCurrency:{decimals:18,name:"DEV",symbol:"DEV"},rpcUrls:{default:{http:["http://127.0.0.1:9944"],webSocket:["wss://127.0.0.1:9944"]}}}),tg=(0,C.a)({id:1284,name:"Moonbeam",nativeCurrency:{decimals:18,name:"GLMR",symbol:"GLMR"},rpcUrls:{default:{http:["https://moonbeam.public.blastapi.io"],webSocket:["wss://moonbeam.public.blastapi.io"]}},blockExplorers:{default:{name:"Moonscan",url:"https://moonscan.io",apiUrl:"https://api-moonbeam.moonscan.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:609002}},testnet:!1}),tb=(0,C.a)({id:1285,name:"Moonriver",nativeCurrency:{decimals:18,name:"MOVR",symbol:"MOVR"},rpcUrls:{default:{http:["https://moonriver.public.blastapi.io"],webSocket:["wss://moonriver.public.blastapi.io"]}},blockExplorers:{default:{name:"Moonscan",url:"https://moonriver.moonscan.io",apiUrl:"https://api-moonriver.moonscan.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1597904}},testnet:!1}),ty=(0,C.a)({id:1287,name:"Moonbase Alpha",nativeCurrency:{decimals:18,name:"DEV",symbol:"DEV"},rpcUrls:{default:{http:["https://rpc.api.moonbase.moonbeam.network"],webSocket:["wss://wss.api.moonbase.moonbeam.network"]}},blockExplorers:{default:{name:"Moonscan",url:"https://moonbase.moonscan.io",apiUrl:"https://moonbase.moonscan.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1850686}},testnet:!0}),tv=(0,C.a)({id:1337,name:"Localhost",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"]}}}),tw=(0,C.a)({id:1442,name:"Polygon zkEVM Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.public.zkevm-test.net"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://testnet-zkevm.polygonscan.com",apiUrl:"https://testnet-zkevm.polygonscan.com/api"}},testnet:!0,contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:525686}}}),tC=(0,C.a)({id:1453,name:"MetaChain Istanbul",nativeCurrency:{name:"Metatime Coin",symbol:"MTC",decimals:18},rpcUrls:{default:{http:["https://istanbul-rpc.metachain.dev"]}},blockExplorers:{default:{name:"MetaExplorer",url:"https://istanbul-explorer.metachain.dev"}},contracts:{multicall3:{address:"0x0000000000000000000000000000000000003001",blockCreated:0}},testnet:!0}),tE=(0,C.a)({id:1559,name:"Tenet",network:"tenet-mainnet",nativeCurrency:{name:"TENET",symbol:"TENET",decimals:18},rpcUrls:{default:{http:["https://rpc.tenet.org"]}},blockExplorers:{default:{name:"TenetScan Mainnet",url:"https://tenetscan.io",apiUrl:"https://tenetscan.io/api"}},testnet:!1}),tx=(0,C.a)({id:1663,name:"Horizen Gobi Testnet",nativeCurrency:{decimals:18,name:"Test ZEN",symbol:"tZEN"},rpcUrls:{default:{http:["https://gobi-testnet.horizenlabs.io/ethv1"]}},blockExplorers:{default:{name:"Gobi Explorer",url:"https://gobi-explorer.horizen.io"}},contracts:{},testnet:!0}),tA=(0,C.a)({id:1686,name:"Mint Sepolia Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://testnet-rpc.mintchain.io"]}},blockExplorers:{default:{name:"Mintchain Testnet explorer",url:"https://testnet-explorer.mintchain.io"}},testnet:!0}),tk=(0,C.a)({id:1890,name:"LightLink Phoenix Mainnet",network:"lightlink-phoenix",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://replicator.phoenix.lightlink.io/rpc/v1"]}},blockExplorers:{default:{name:"LightLink Phoenix Explorer",url:"https://phoenix.lightlink.io"}},testnet:!1}),tB=(0,C.a)({id:1891,name:"LightLink Pegasus Testnet",network:"lightlink-pegasus",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://replicator.pegasus.lightlink.io/rpc/v1"]}},blockExplorers:{default:{name:"LightLink Pegasus Explorer",url:"https://pegasus.lightlink.io"}},testnet:!0}),tS=(0,C.a)({id:1994,name:"Ekta",nativeCurrency:{decimals:18,name:"EKTA",symbol:"EKTA"},rpcUrls:{default:{http:["https://main.ekta.io"]}},blockExplorers:{default:{name:"Ektascan",url:"https://ektascan.io",apiUrl:"https://ektascan.io/api"}}}),tI=(0,C.a)({id:2e3,name:"Dogechain",nativeCurrency:{decimals:18,name:"Dogechain",symbol:"DC"},rpcUrls:{default:{http:["https://rpc.dogechain.dog"]}},blockExplorers:{default:{name:"DogeChainExplorer",url:"https://explorer.dogechain.dog",apiUrl:"https://explorer.dogechain.dog/api"}}}),tj=(0,C.a)({id:2020,name:"Ronin",nativeCurrency:{name:"RON",symbol:"RON",decimals:18},rpcUrls:{default:{http:["https://api.roninchain.com/rpc"]}},blockExplorers:{default:{name:"Ronin Explorer",url:"https://app.roninchain.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:26023535}}}),tT=(0,C.a)({id:2021,name:"Edgeware EdgeEVM Mainnet",nativeCurrency:{decimals:18,name:"Edgeware",symbol:"EDG"},rpcUrls:{default:{http:["https://edgeware-evm.jelliedowl.net"]}},blockExplorers:{default:{name:"Edgscan by Bharathcoorg",url:"https://edgscan.live",apiUrl:"https://edgscan.live/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:18117872}}}),tP=(0,C.a)({id:2021,name:"Saigon Testnet",nativeCurrency:{name:"RON",symbol:"RON",decimals:18},rpcUrls:{default:{http:["https://saigon-testnet.roninchain.com/rpc"]}},blockExplorers:{default:{name:"Saigon Explorer",url:"https://saigon-app.roninchain.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:18736871}},testnet:!0}),tM=(0,C.a)({id:2022,name:"Beresheet BereEVM Testnet",nativeCurrency:{decimals:18,name:"Testnet EDG",symbol:"tEDG"},rpcUrls:{default:{http:["https://beresheet-evm.jelliedowl.net"]}},blockExplorers:{default:{name:"Edgscan by Bharathcoorg",url:"https://testnet.edgscan.live",apiUrl:"https://testnet.edgscan.live/api"}}}),tO=(0,C.a)({id:2221,name:"Kava EVM Testnet",network:"kava-testnet",nativeCurrency:{name:"Kava",symbol:"KAVA",decimals:18},rpcUrls:{default:{http:["https://evm.testnet.kava.io"]}},blockExplorers:{default:{name:"Kava EVM Testnet Explorer",url:"https://testnet.kavascan.com/",apiUrl:"https://testnet.kavascan.com/api"}},contracts:{multicall3:{address:"0xDf1D724A7166261eEB015418fe8c7679BBEa7fd6",blockCreated:7242179}},testnet:!0}),tR=(0,C.a)({id:2222,name:"Kava EVM",network:"kava-mainnet",nativeCurrency:{name:"Kava",symbol:"KAVA",decimals:18},rpcUrls:{default:{http:["https://evm.kava.io"]}},blockExplorers:{default:{name:"Kava EVM Explorer",url:"https://kavascan.com",apiUrl:"https://kavascan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:3661165}},testnet:!1}),tU=(0,C.a)({...Q,id:2331,name:"RSS3 VSL Sepolia Testnet",nativeCurrency:{name:"RSS3",symbol:"RSS3",decimals:18},rpcUrls:{default:{http:["https://rpc.testnet.rss3.io"]}},blockExplorers:{default:{name:"RSS3 VSL Sepolia Testnet Scan",url:"https://scan.testnet.rss3.io",apiUrl:"https://scan.testnet.rss3.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0xDb5c46C3Eaa6Ed6aE8b2379785DF7dd029C0dC81"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:55697},portal:{11155111:{address:"0xcBD77E8E1E7F06B25baDe67142cdE82652Da7b57",blockCreated:5345035}},l1StandardBridge:{11155111:{address:"0xdDD29bb63B0839FB1cE0eE439Ff027738595D07B"}}},testnet:!0,sourceId:11155111}),tF=(0,C.a)({id:2358,name:"Kroma Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://api.sepolia.kroma.network"]}},blockExplorers:{default:{name:"Kroma Sepolia Explorer",url:"https://blockscout.sepolia.kroma.network",apiUrl:"https://blockscout.sepolia.kroma.network/api"}},testnet:!0}),tN=(0,C.a)({...Q,id:2522,name:"Fraxtal Testnet",nativeCurrency:{name:"Frax Ether",symbol:"frxETH",decimals:18},rpcUrls:{default:{http:["https://rpc.testnet.frax.com"]}},blockExplorers:{default:{name:"fraxscan testnet",url:"https://holesky.fraxscan.com",apiUrl:"https://api-holesky.fraxscan.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{17e3:{address:"0x715EA64DA13F4d0831ece4Ad3E8c1aa013167F32"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11"},portal:{17e3:{address:"0xB9c64BfA498d5b9a8398Ed6f46eb76d90dE5505d",blockCreated:318416}},l1StandardBridge:{17e3:{address:"0x0BaafC217162f64930909aD9f2B27125121d6332",blockCreated:318416}}},sourceId:17e3}),tD=(0,C.a)({id:2710,name:"Morph Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc-testnet.morphl2.io"]}},blockExplorers:{default:{name:"Morph Testnet Explorer",url:"https://explorer-testnet.morphl2.io",apiUrl:"https://explorer-api-testnet.morphl2.io/api"}},testnet:!0}),t_=(0,C.a)({id:3141,name:"Filecoin Hyperspace",nativeCurrency:{decimals:18,name:"testnet filecoin",symbol:"tFIL"},rpcUrls:{default:{http:["https://api.hyperspace.node.glif.io/rpc/v1"]}},blockExplorers:{default:{name:"Filfox",url:"https://hyperspace.filfox.info/en"}}}),tL=(0,C.a)({id:3737,name:"Crossbell",nativeCurrency:{decimals:18,name:"CSB",symbol:"CSB"},rpcUrls:{default:{http:["https://rpc.crossbell.io"]}},blockExplorers:{default:{name:"CrossScan",url:"https://scan.crossbell.io",apiUrl:"https://scan.crossbell.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:38246031}}}),tz=(0,C.a)({id:3776,name:"Astar zkEVM",network:"AstarZkEVM",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.startale.com/astar-zkevm"]}},blockExplorers:{default:{name:"Astar zkEVM Explorer",url:"https://astar-zkevm.explorer.startale.com"}},contracts:{multicall3:{address:"0x36eabf148272BA81A5225C6a3637972F0EE17771",blockCreated:93528}},testnet:!1}),tq=(0,C.a)({id:3993,name:"APEX Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc-testnet.apexlayer.xyz"]}},blockExplorers:{default:{name:"Blockscout",url:"https://exp-testnet.apexlayer.xyz",apiUrl:"https://exp-testnet.apexlayer.xyz/api"}},contracts:{multicall3:{address:"0xf7642be33a6b18D16a995657adb5a68CD0438aE2",blockCreated:283775}},testnet:!0}),tG=(0,C.a)({id:4002,name:"Fantom Testnet",nativeCurrency:{decimals:18,name:"Fantom",symbol:"FTM"},rpcUrls:{default:{http:["https://rpc.testnet.fantom.network"]}},blockExplorers:{default:{name:"FTMScan",url:"https://testnet.ftmscan.com",apiUrl:"https://testnet.ftmscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:8328688}}}),tW=(0,C.a)({id:4090,network:"oasis-testnet",name:"Oasis Testnet",nativeCurrency:{name:"Fasttoken",symbol:"FTN",decimals:18},rpcUrls:{default:{http:["https://rpc1.oasis.bahamutchain.com"]},public:{http:["https://rpc1.oasis.bahamutchain.com"]}},blockExplorers:{default:{name:"Ftnscan",url:"https://oasis.ftnscan.com",apiUrl:"https://oasis.ftnscan.com/api"}},testnet:!0}),tH=(0,C.a)({id:4200,name:"Merlin",nativeCurrency:{name:"BTC",symbol:"BTC",decimals:18},rpcUrls:{default:{http:["https://rpc.merlinchain.io"]}},blockExplorers:{default:{name:"blockscout",url:"https://scan.merlinchain.io",apiUrl:"https://scan.merlinchain.io/api"}}}),tQ=(0,C.a)({id:4201,name:"LUKSO Testnet",nativeCurrency:{decimals:18,name:"LUKSO Testnet",symbol:"LYXt"},rpcUrls:{default:{http:["https://rpc.testnet.lukso.network"],webSocket:["wss://ws-rpc.testnet.lukso.network"]}},blockExplorers:{default:{name:"LUKSO Testnet Explorer",url:"https://explorer.execution.testnet.lukso.network",apiUrl:"https://api.explorer.execution.testnet.lukso.network/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:605348}},testnet:!0}),tK=(0,C.a)({...Q,id:4202,network:"lisk-sepolia",name:"Lisk Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia-api.lisk.com"]}},blockExplorers:{default:{name:"Blockscout",url:"https://sepolia-blockscout.lisk.com",apiUrl:"https://sepolia-blockscout.lisk.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0xA0E35F56C318DE1bD5D9ca6A94Fe7e37C5663348"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11"},portal:{11155111:{address:"0xe3d90F21490686Ec7eF37BE788E02dfC12787264"}},l1StandardBridge:{11155111:{address:"0x1Fb30e446eA791cd1f011675E5F3f5311b70faF5"}}},testnet:!0,sourceId:11155111}),tV=(0,C.a)({id:4242,name:"Nexi",nativeCurrency:{name:"Nexi",symbol:"NEXI",decimals:18},rpcUrls:{default:{http:["https://rpc.chain.nexi.technology"]}},blockExplorers:{default:{name:"NexiScan",url:"https://www.nexiscan.com",apiUrl:"https://www.nexiscan.com/api"}},contracts:{multicall3:{address:"0x0277A46Cc69A57eE3A6C8c158bA874832F718B8E",blockCreated:25770160}}}),tZ=(0,C.a)({id:4337,name:"Beam",network:"beam",nativeCurrency:{decimals:18,name:"Beam",symbol:"BEAM"},rpcUrls:{public:{http:["https://build.onbeam.com/rpc"],webSocket:["wss://build.onbeam.com/ws"]},default:{http:["https://build.onbeam.com/rpc"],webSocket:["wss://build.onbeam.com/ws"]}},blockExplorers:{default:{name:"Beam Explorer",url:"https://subnets.avax.network/beam"}},contracts:{multicall3:{address:"0x4956f15efdc3dc16645e90cc356eafa65ffc65ec",blockCreated:1}}}),tJ=(0,C.a)({id:4689,name:"IoTeX",nativeCurrency:{decimals:18,name:"IoTeX",symbol:"IOTX"},rpcUrls:{default:{http:["https://babel-api.mainnet.iotex.io"],webSocket:["wss://babel-api.mainnet.iotex.io"]}},blockExplorers:{default:{name:"IoTeXScan",url:"https://iotexscan.io"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:22163670}}}),tX=(0,C.a)({id:4690,name:"IoTeX Testnet",nativeCurrency:{decimals:18,name:"IoTeX",symbol:"IOTX"},rpcUrls:{default:{http:["https://babel-api.testnet.iotex.io"],webSocket:["wss://babel-api.testnet.iotex.io"]}},blockExplorers:{default:{name:"IoTeXScan",url:"https://testnet.iotexscan.io"}},testnet:!0}),tY=(0,C.a)({id:4759,name:"MEVerse Chain Testnet",nativeCurrency:{decimals:18,name:"MEVerse",symbol:"MEV"},rpcUrls:{default:{http:["https://rpc.meversetestnet.io"]}},blockExplorers:{default:{name:"Explorer",url:"https://testnet.meversescan.io/"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:64371115}},testnet:!0}),t$=(0,C.a)({id:4777,name:"BlackFort Exchange Network Testnet",nativeCurrency:{name:"BlackFort Testnet Token",symbol:"TBXN",decimals:18},rpcUrls:{default:{http:["https://testnet.blackfort.network/rpc"]}},blockExplorers:{default:{name:"Blockscout",url:"https://testnet-explorer.blackfort.network",apiUrl:"https://testnet-explorer.blackfort.network/api"}}}),t0=(0,C.a)({id:4999,name:"BlackFort Exchange Network",nativeCurrency:{name:"BlackFort Token",symbol:"BXN",decimals:18},rpcUrls:{default:{http:["https://mainnet.blackfort.network/rpc"]}},blockExplorers:{default:{name:"Blockscout",url:"https://explorer.blackfort.network",apiUrl:"https://explorer.blackfort.network/api"}}}),t1=(0,C.a)({id:5e3,name:"Mantle",nativeCurrency:{decimals:18,name:"MNT",symbol:"MNT"},rpcUrls:{default:{http:["https://rpc.mantle.xyz"]}},blockExplorers:{default:{name:"Mantle Explorer",url:"https://explorer.mantle.xyz",apiUrl:"https://explorer.mantle.xyz/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:304717}}}),t6=(0,C.a)({id:5001,name:"Mantle Testnet",nativeCurrency:{decimals:18,name:"MNT",symbol:"MNT"},rpcUrls:{default:{http:["https://rpc.testnet.mantle.xyz"]}},blockExplorers:{default:{name:"Mantle Testnet Explorer",url:"https://explorer.testnet.mantle.xyz",apiUrl:"https://explorer.testnet.mantle.xyz/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:561333}},testnet:!0}),t3=(0,C.a)({id:5165,network:"bahamut",name:"Bahamut",nativeCurrency:{name:"Fasttoken",symbol:"FTN",decimals:18},rpcUrls:{default:{http:["https://rpc1.bahamut.io","https://bahamut.publicnode.com","https://rpc2.bahamut.io"],webSocket:["wss://ws1.sahara.bahamutchain.com","wss://bahamut.publicnode.com","wss://ws2.sahara.bahamutchain.com"]},public:{http:["https://rpc1.bahamut.io","https://bahamut.publicnode.com","https://rpc2.bahamut.io"],webSocket:["wss://ws1.sahara.bahamutchain.com","wss://bahamut.publicnode.com","wss://ws2.sahara.bahamutchain.com"]}},blockExplorers:{default:{name:"Ftnscan",url:"https://www.ftnscan.com",apiUrl:"https://www.ftnscan.com/api"}}}),t2=(0,C.a)({id:5611,name:"opBNB Testnet",nativeCurrency:{decimals:18,name:"tBNB",symbol:"tBNB"},rpcUrls:{default:{http:["https://opbnb-testnet-rpc.bnbchain.org"]}},blockExplorers:{default:{name:"opbnbscan",url:"https://testnet.opbnbscan.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3705108}},testnet:!0}),t7=(0,C.a)({id:5700,name:"Syscoin Tanenbaum Testnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc.tanenbaum.io"],webSocket:["wss://rpc.tanenbaum.io/wss"]}},blockExplorers:{default:{name:"SyscoinTestnetExplorer",url:"https://tanenbaum.io"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:271288}}}),t8=(0,C.a)({id:7e3,name:"ZetaChain",nativeCurrency:{decimals:18,name:"Zeta",symbol:"ZETA"},rpcUrls:{default:{http:["https://zetachain-evm.blockpi.network/v1/rpc/public"]}},blockExplorers:{default:{name:"ZetaScan",url:"https://explorer.zetachain.com"}},testnet:!1}),t5=(0,C.a)({id:7001,name:"ZetaChain Athens Testnet",nativeCurrency:{decimals:18,name:"Zeta",symbol:"aZETA"},rpcUrls:{default:{http:["https://zetachain-athens-evm.blockpi.network/v1/rpc/public"]}},blockExplorers:{default:{name:"ZetaScan",url:"https://athens3.explorer.zetachain.com"}},testnet:!0}),t4=(0,C.a)({id:7518,name:"MEVerse Chain Mainnet",nativeCurrency:{decimals:18,name:"MEVerse",symbol:"MEV"},rpcUrls:{default:{http:["https://rpc.meversemainnet.io"]}},blockExplorers:{default:{name:"Explorer",url:"https://www.meversescan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:86881340}}}),t9=(0,C.a)({id:7700,name:"Canto",nativeCurrency:{decimals:18,name:"Canto",symbol:"CANTO"},rpcUrls:{default:{http:["https://canto.gravitychain.io"]}},blockExplorers:{default:{name:"Tuber.Build (Blockscout)",url:"https://tuber.build"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:2905789}}}),re=(0,C.a)({id:8082,name:"Shardeum Sphinx",nativeCurrency:{name:"SHARDEUM",symbol:"SHM",decimals:18},rpcUrls:{default:{http:["https://sphinx.shardeum.org"]}},blockExplorers:{default:{name:"Shardeum Explorer",url:"https://explorer-sphinx.shardeum.org"}},testnet:!0}),rt=(0,C.a)({id:8217,name:"Klaytn",nativeCurrency:{decimals:18,name:"Klaytn",symbol:"KLAY"},rpcUrls:{default:{http:["https://public-en-cypress.klaytn.net"]}},blockExplorers:{default:{name:"KlaytnScope",url:"https://scope.klaytn.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:96002415}}}),rr=(0,C.a)({...Q,id:8453,name:"Base",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://basescan.org",apiUrl:"https://api.basescan.org/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0x56315b90c40730925ec5485cf004d835058518A0"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:5022},portal:{1:{address:"0x49048044D57e1C92A77f79988d21Fa8fAF74E97e",blockCreated:17482143}},l1StandardBridge:{1:{address:"0x3154Cf16ccdb4C6d922629664174b904d80F2C35",blockCreated:17482143}}},sourceId:1}),rn=(0,C.a)({id:8899,name:"JIBCHAIN L1",network:"jbc",nativeCurrency:{name:"JBC",symbol:"JBC",decimals:18},rpcUrls:{default:{http:["https://rpc-l1.jibchain.net"]},public:{http:["https://rpc-l1.jibchain.net"]}},blockExplorers:{default:{name:"Blockscout",url:"https://exp-l1.jibchain.net",apiUrl:"https://exp-l1.jibchain.net/api"}},contracts:{multicall3:{address:"0xc0C8C486D1466C57Efe13C2bf000d4c56F47CBdC",blockCreated:2299048}},testnet:!1}),ra=(0,C.a)({id:9e3,name:"Evmos Testnet",nativeCurrency:{decimals:18,name:"Evmos",symbol:"EVMOS"},rpcUrls:{default:{http:["https://eth.bd.evmos.dev:8545"]}},blockExplorers:{default:{name:"Evmos Testnet Block Explorer",url:"https://evm.evmos.dev/"}}}),ro=(0,C.a)({id:9001,name:"Evmos",nativeCurrency:{decimals:18,name:"Evmos",symbol:"EVMOS"},rpcUrls:{default:{http:["https://eth.bd.evmos.org:8545"]}},blockExplorers:{default:{name:"Evmos Block Explorer",url:"https://escan.live"}}}),ri=(0,C.a)({id:9700,name:"OORT MainnetDev",nativeCurrency:{decimals:18,name:"OORT",symbol:"OORT"},rpcUrls:{default:{http:["https://dev-rpc.oortech.com"]}},blockExplorers:{oort:{name:"OORT MainnetDev Explorer",url:"https://dev-scan.oortech.com"},default:{name:"OORT MainnetDev Explorer",url:"https://dev-scan.oortech.com"}}}),rs=(0,C.a)({id:10200,name:"Gnosis Chiado",nativeCurrency:{decimals:18,name:"Gnosis",symbol:"xDAI"},rpcUrls:{default:{http:["https://rpc.chiadochain.net"],webSocket:["wss://rpc.chiadochain.net/wss"]}},blockExplorers:{default:{name:"Blockscout",url:"https://blockscout.chiadochain.net",apiUrl:"https://blockscout.chiadochain.net/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:4967313}},testnet:!0}),rl=(0,C.a)({id:11235,name:"HAQQ Mainnet",nativeCurrency:{decimals:18,name:"Islamic Coin",symbol:"ISLM"},rpcUrls:{default:{http:["https://rpc.eth.haqq.network"]}},blockExplorers:{default:{name:"HAQQ Explorer",url:"https://explorer.haqq.network",apiUrl:"https://explorer.haqq.network/api"}}}),rc=(0,C.a)({id:12306,name:"Fibo Chain",nativeCurrency:{decimals:18,name:"fibo",symbol:"FIBO"},rpcUrls:{default:{http:["https://network.hzroc.art"]}},blockExplorers:{default:{name:"FiboScan",url:"https://scan.fibochain.org"}}}),ru=(0,C.a)({...Q,id:12553,name:"RSS3 VSL Mainnet",nativeCurrency:{name:"RSS3",symbol:"RSS3",decimals:18},rpcUrls:{default:{http:["https://rpc.rss3.io"]}},blockExplorers:{default:{name:"RSS3 VSL Mainnet Scan",url:"https://scan.rss3.io",apiUrl:"https://scan.rss3.io/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0xE6f24d2C32B3109B18ed33cF08eFb490b1e09C10"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14193},portal:{1:{address:"0x6A12432491bbbE8d3babf75F759766774C778Db4",blockCreated:19387057}},l1StandardBridge:{1:{address:"0x4cbab69108Aa72151EDa5A3c164eA86845f18438"}}},sourceId:1}),rd=(0,C.a)({id:13337,name:"Beam Testnet",network:"beam",nativeCurrency:{decimals:18,name:"Beam",symbol:"BEAM"},rpcUrls:{public:{http:["https://build.onbeam.com/rpc/testnet"],webSocket:["wss://build.onbeam.com/ws/testnet"]},default:{http:["https://build.onbeam.com/rpc/testnet"],webSocket:["wss://build.onbeam.com/ws/testnet"]}},blockExplorers:{default:{name:"Beam Explorer",url:"https://subnets-test.avax.network/beam"}},contracts:{multicall3:{address:"0x9bf49b704ee2a095b95c1f2d4eb9010510c41c9e",blockCreated:3}},testnet:!0}),rp=(0,C.a)({id:13381,name:"Phoenix Blockchain",nativeCurrency:{name:"Phoenix",symbol:"PHX",decimals:18},rpcUrls:{default:{http:["https://rpc.phoenixplorer.com"]}},blockExplorers:{default:{name:"Phoenixplorer",url:"https://phoenixplorer.com",apiUrl:"https://phoenixplorer.com/api"}},contracts:{multicall3:{address:"0x498cF757a575cFF2c2Ed9f532f56Efa797f86442",blockCreated:5620192}}}),rh=(0,C.a)({id:15557,name:"EOS EVM Testnet",nativeCurrency:{decimals:18,name:"EOS",symbol:"EOS"},rpcUrls:{default:{http:["https://api.testnet.evm.eosnetwork.com"]}},blockExplorers:{default:{name:"EOS EVM Testnet Explorer",url:"https://explorer.testnet.evm.eosnetwork.com",apiUrl:"https://explorer.testnet.evm.eosnetwork.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:9067940}},testnet:!0}),rf=(0,C.a)({id:17e3,name:"Holesky",nativeCurrency:{name:"Holesky Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://ethereum-holesky.publicnode.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://holesky.etherscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:77},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e",blockCreated:801613},ensUniversalResolver:{address:"0xa6AC935D4971E3CD133b950aE053bECD16fE7f3b",blockCreated:973484}},testnet:!0}),rm=(0,C.a)({id:17777,name:"EOS EVM",nativeCurrency:{decimals:18,name:"EOS",symbol:"EOS"},rpcUrls:{default:{http:["https://api.evm.eosnetwork.com"]}},blockExplorers:{default:{name:"EOS EVM Explorer",url:"https://explorer.evm.eosnetwork.com",apiUrl:"https://explorer.evm.eosnetwork.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7943933}}}),rg=(0,C.a)({id:23294,name:"Oasis Sapphire",network:"sapphire",nativeCurrency:{name:"Sapphire Rose",symbol:"ROSE",decimals:18},rpcUrls:{default:{http:["https://sapphire.oasis.io"],webSocket:["wss://sapphire.oasis.io/ws"]}},blockExplorers:{default:{name:"Oasis Sapphire Explorer",url:"https://explorer.sapphire.oasis.io",apiUrl:"https://explorer.sapphire.oasis.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:734531}}}),rb=(0,C.a)({id:23295,name:"Oasis Sapphire Testnet",network:"sapphire-testnet",nativeCurrency:{name:"Sapphire Test Rose",symbol:"TEST",decimals:18},rpcUrls:{default:{http:["https://testnet.sapphire.oasis.dev"],webSocket:["wss://testnet.sapphire.oasis.dev/ws"]}},blockExplorers:{default:{name:"Oasis Sapphire Testnet Explorer",url:"https://testnet.explorer.sapphire.oasis.dev",apiUrl:"https://testnet.explorer.sapphire.oasis.dev/api"}},testnet:!0}),ry=(0,C.a)({id:31337,name:"Anvil",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"],webSocket:["ws://127.0.0.1:8545"]}}}),rv=(0,C.a)({id:31337,name:"Foundry",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["http://127.0.0.1:8545"],webSocket:["ws://127.0.0.1:8545"]}}}),rw=(0,C.a)({id:32769,name:"Zilliqa",network:"zilliqa",nativeCurrency:{name:"Zilliqa",symbol:"ZIL",decimals:18},rpcUrls:{default:{http:["https://api.zilliqa.com"]}},blockExplorers:{default:{name:"Ethernal",url:"https://evmx.zilliqa.com"}},testnet:!1}),rC=(0,C.a)({id:33101,name:"Zilliqa Testnet",network:"zilliqa-testnet",nativeCurrency:{name:"Zilliqa",symbol:"ZIL",decimals:18},rpcUrls:{default:{http:["https://dev-api.zilliqa.com"]}},blockExplorers:{default:{name:"Ethernal",url:"https://evmx.testnet.zilliqa.com"}},testnet:!0}),rE=(0,C.a)({id:34443,name:"Mode Mainnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://mainnet.mode.network"]}},blockExplorers:{default:{name:"Mode Explorer",url:"https://explorer.mode.network"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:2465882}}}),rx=(0,C.a)({id:35441,name:"Q Mainnet",nativeCurrency:{decimals:18,name:"Q",symbol:"Q"},rpcUrls:{default:{http:["https://rpc.q.org"]}},blockExplorers:{default:{name:"Q Mainnet Explorer",url:"https://explorer.q.org",apiUrl:"https://explorer.q.org/api"}}}),rA=(0,C.a)({id:35443,name:"Q Testnet",nativeCurrency:{decimals:18,name:"Q",symbol:"Q"},rpcUrls:{default:{http:["https://rpc.qtestnet.org"]}},blockExplorers:{default:{name:"Q Testnet Explorer",url:"https://explorer.qtestnet.org",apiUrl:"https://explorer.qtestnet.org/api"}},testnet:!0}),rk=(0,C.a)({id:42161,name:"Arbitrum One",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://arb1.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://arbiscan.io",apiUrl:"https://api.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7654707}}}),rB=(0,C.a)({id:42170,name:"Arbitrum Nova",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://nova.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://nova.arbiscan.io",apiUrl:"https://api-nova.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1746963}}});function isEmpty(e){return 0===e||0n===e||null==e||"0"===e||""===e||"string"==typeof e&&("0x"===(0,z.f)(e).toLowerCase()||"0x00"===(0,z.f)(e).toLowerCase())}function isPresent(e){return!isEmpty(e)}function isEIP1559(e){return void 0!==e.maxFeePerGas&&void 0!==e.maxPriorityFeePerGas}function isCIP42(e){return"cip42"===e.type||isEIP1559(e)&&(isPresent(e.feeCurrency)||isPresent(e.gatewayFeeRecipient)||isPresent(e.gatewayFee))}function isCIP64(e){return"cip64"===e.type||isEIP1559(e)&&isPresent(e.feeCurrency)&&isEmpty(e.gatewayFee)&&isEmpty(e.gatewayFeeRecipient)}let rS={block:(0,B.G)({exclude:["difficulty","gasLimit","mixHash","nonce","uncles"],format(e){let t=e.transactions?.map(e=>"string"==typeof e?e:{...S.Tr(e),feeCurrency:e.feeCurrency,..."0x7b"!==e.type?{gatewayFee:e.gatewayFee?k.y_(e.gatewayFee):null,gatewayFeeRecipient:e.gatewayFeeRecipient||null}:{}});return{randomness:e.randomness,transactions:t}}}),transaction:(0,S.y_)({format(e){let t={feeCurrency:e.feeCurrency};return"0x7b"===e.type?t.type="cip64":("0x7c"===e.type&&(t.type="cip42"),t.gatewayFee=e.gatewayFee?(0,k.y_)(e.gatewayFee):null,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}}),transactionRequest:(0,eF.iy)({format(e){let t={feeCurrency:e.feeCurrency};return isCIP64(e)?t.type="0x7b":(isCIP42(e)&&(t.type="0x7c"),t.gatewayFee=void 0!==e.gatewayFee?(0,O.eC)(e.gatewayFee):void 0,t.gatewayFeeRecipient=e.gatewayFeeRecipient),t}})},rI=2n**256n-1n,rj={formatters:rS,serializers:{transaction:function(e,t){return isCIP64(e)?function(e,t){!function(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:o,maxFeePerGas:i,to:s,feeCurrency:l}=e;if(t<=0)throw new q.hJ({chainId:t});if(s&&!(0,P.U)(s))throw new T.b({address:s});if(o)throw new R.G("`gasPrice` is not a valid CIP-64 Transaction attribute.");if(isPresent(i)&&i>rI)throw new G.Hh({maxFeePerGas:i});if(isPresent(n)&&isPresent(i)&&n>i)throw new G.cs({maxFeePerGas:i,maxPriorityFeePerGas:n});if(isPresent(l)&&!(0,P.U)(l))throw new R.G("`feeCurrency` MUST be a token address for CIP-64 transactions.");if(isEmpty(l))throw new R.G("`feeCurrency` must be provided for CIP-64 transactions.")}(e);let{chainId:n,gas:o,nonce:i,to:s,value:l,maxFeePerGas:c,maxPriorityFeePerGas:u,accessList:d,feeCurrency:p,data:f}=e,m=[(0,O.NC)(n),i?(0,O.NC)(i):"0x",u?(0,O.NC)(u):"0x",c?(0,O.NC)(c):"0x",o?(0,O.NC)(o):"0x",s??"0x",l?(0,O.NC)(l):"0x",f??"0x",serializeAccessList(d),p,...toYParitySignatureArray(e,t)];return(0,M.SM)(["0x7b",toRlp(m)])}(e,t):isCIP42(e)?function(e,t){!function(e){let{chainId:t,maxPriorityFeePerGas:n,gasPrice:o,maxFeePerGas:i,to:s,feeCurrency:l,gatewayFee:c,gatewayFeeRecipient:u}=e;if(t<=0)throw new q.hJ({chainId:t});if(s&&!(0,P.U)(s))throw new T.b({address:s});if(o)throw new R.G("`gasPrice` is not a valid CIP-42 Transaction attribute.");if(isPresent(i)&&i>rI)throw new G.Hh({maxFeePerGas:i});if(isPresent(n)&&isPresent(i)&&n>i)throw new G.cs({maxFeePerGas:i,maxPriorityFeePerGas:n});if(isPresent(c)&&isEmpty(u)||isPresent(u)&&isEmpty(c))throw new R.G("`gatewayFee` and `gatewayFeeRecipient` must be provided together.");if(isPresent(l)&&!(0,P.U)(l))throw new R.G("`feeCurrency` MUST be a token address for CIP-42 transactions.");if(isPresent(u)&&!(0,P.U)(u))throw new T.b(u);if(isEmpty(l)&&isEmpty(u))throw new R.G("Either `feeCurrency` or `gatewayFeeRecipient` must be provided for CIP-42 transactions.")}(e);let{chainId:n,gas:o,nonce:i,to:s,value:l,maxFeePerGas:c,maxPriorityFeePerGas:u,accessList:d,feeCurrency:p,gatewayFeeRecipient:f,gatewayFee:m,data:g}=e,b=[(0,O.NC)(n),i?(0,O.NC)(i):"0x",u?(0,O.NC)(u):"0x",c?(0,O.NC)(c):"0x",o?(0,O.NC)(o):"0x",p??"0x",f??"0x",m?(0,O.NC)(m):"0x",s??"0x",l?(0,O.NC)(l):"0x",g??"0x",serializeAccessList(d),...toYParitySignatureArray(e,t)];return(0,M.SM)(["0x7c",toRlp(b)])}(e,t):serializeTransaction(e,t)}}},rT=(0,C.a)({...rj,id:42220,name:"Celo",nativeCurrency:{decimals:18,name:"CELO",symbol:"CELO"},rpcUrls:{default:{http:["https://forno.celo.org"]}},blockExplorers:{default:{name:"Celo Explorer",url:"https://explorer.celo.org/mainnet",apiUrl:"https://explorer.celo.org/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:13112599}},testnet:!1}),rP=(0,C.a)({id:42766,name:"ZKFair Mainnet",network:"zkfair-mainnet",nativeCurrency:{decimals:18,name:"USD Coin",symbol:"USDC"},rpcUrls:{default:{http:["https://rpc.zkfair.io"]},public:{http:["https://rpc.zkfair.io"]}},blockExplorers:{default:{name:"zkFair Explorer",url:"https://scan.zkfair.io",apiUrl:"https://scan.zkfair.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:6090959}},testnet:!1}),rM=(0,C.a)({id:43113,name:"Avalanche Fuji",nativeCurrency:{decimals:18,name:"Avalanche Fuji",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax-test.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowScan",url:"https://testnet.snowscan.xyz",apiUrl:"https://api-testnet.snowscan.xyz"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:7096959}},testnet:!0}),rO=(0,C.a)({id:43114,name:"Avalanche",nativeCurrency:{decimals:18,name:"Avalanche",symbol:"AVAX"},rpcUrls:{default:{http:["https://api.avax.network/ext/bc/C/rpc"]}},blockExplorers:{default:{name:"SnowScan",url:"https://snowscan.xyz",apiUrl:"https://api.snowscan.xyz/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:11907934}}}),rR=(0,C.a)({id:43851,name:"ZKFair Testnet",network:"zkfair-testnet",nativeCurrency:{decimals:18,name:"USD Coin",symbol:"USDC"},rpcUrls:{default:{http:["https://testnet-rpc.zkfair.io"]},public:{http:["https://testnet-rpc.zkfair.io"]}},blockExplorers:{default:{name:"zkFair Explorer",url:"https://testnet-scan.zkfair.io"}},testnet:!0}),rU=(0,C.a)({...rj,id:44787,name:"Alfajores",nativeCurrency:{decimals:18,name:"CELO",symbol:"A-CELO"},rpcUrls:{default:{http:["https://alfajores-forno.celo-testnet.org"]}},blockExplorers:{default:{name:"Celo Explorer",url:"https://explorer.celo.org/alfajores",apiUrl:"https://explorer.celo.org/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:14569001}},testnet:!0}),rF=(0,C.a)({id:53935,name:"DFK Chain",nativeCurrency:{decimals:18,name:"Jewel",symbol:"JEWEL"},rpcUrls:{default:{http:["https://subnets.avax.network/defi-kingdoms/dfk-chain/rpc"]}},blockExplorers:{default:{name:"DFKSubnetScan",url:"https://subnets.avax.network/defi-kingdoms"}}}),rN=(0,C.a)({id:54211,name:"HAQQ Testedge 2",nativeCurrency:{decimals:18,name:"Islamic Coin",symbol:"ISLMT"},rpcUrls:{default:{http:["https://rpc.eth.testedge2.haqq.network"]}},blockExplorers:{default:{name:"HAQQ Explorer",url:"https://explorer.testedge2.haqq.network",apiUrl:"https://explorer.testedge2.haqq.network/api"}}}),rD=(0,C.a)({id:57e3,name:"Rollux Testnet",nativeCurrency:{decimals:18,name:"Syscoin",symbol:"SYS"},rpcUrls:{default:{http:["https://rpc-tanenbaum.rollux.com/"],webSocket:["wss://rpc-tanenbaum.rollux.com/wss"]}},blockExplorers:{default:{name:"RolluxTestnetExplorer",url:"https://rollux.tanenbaum.io",apiUrl:"https://rollux.tanenbaum.io/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:1813675}}}),r_=(0,C.a)({id:58008,network:"pgn-testnet",name:"PGN ",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.publicgoods.network"]}},blockExplorers:{default:{name:"PGN Testnet Explorer",url:"https://explorer.sepolia.publicgoods.network",apiUrl:"https://explorer.sepolia.publicgoods.network/api"},blocksout:{name:"PGN Testnet Explorer",url:"https://explorer.sepolia.publicgoods.network",apiUrl:"https://explorer.sepolia.publicgoods.network/api"}},contracts:{l2OutputOracle:{11155111:{address:"0xD5bAc3152ffC25318F848B3DD5dA6C85171BaEEe"}},portal:{11155111:{address:"0xF04BdD5353Bb0EFF6CA60CfcC78594278eBfE179"}},l1StandardBridge:{11155111:{address:"0xFaE6abCAF30D23e233AC7faF747F2fC3a5a6Bfa3"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3754925}},formatters:j,sourceId:11155111,testnet:!0}),rL=(0,C.a)({id:59140,name:"Linea Goerli Testnet",nativeCurrency:{name:"Linea Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.goerli.linea.build"],webSocket:["wss://rpc.goerli.linea.build"]}},blockExplorers:{default:{name:"Etherscan",url:"https://goerli.lineascan.build",apiUrl:"https://goerli.lineascan.build/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:498623}},testnet:!0}),rz=(0,C.a)({id:59144,name:"Linea Mainnet",nativeCurrency:{name:"Linea Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.linea.build"],webSocket:["wss://rpc.linea.build"]}},blockExplorers:{default:{name:"Etherscan",url:"https://lineascan.build",apiUrl:"https://api.lineascan.build/api"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:42}},testnet:!1}),rq=(0,C.a)({id:64240,name:"Fantom Sonic Open Testnet",network:"fantom-sonic-testnet",nativeCurrency:{decimals:18,name:"Fantom",symbol:"FTM"},rpcUrls:{default:{http:["https://rpcapi.sonic.fantom.network"]}},blockExplorers:{default:{name:"Fantom Sonic Open Testnet Explorer",url:"https://public-sonic.fantom.network"}},testnet:!0}),rG=(0,C.a)({id:80001,name:"Polygon Mumbai",nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},rpcUrls:{default:{http:["https://rpc.ankr.com/polygon_mumbai"]}},blockExplorers:{default:{name:"PolygonScan",url:"https://mumbai.polygonscan.com",apiUrl:"https://mumbai.polygonscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:25770160}},testnet:!0}),rW=(0,C.a)({id:80002,name:"Polygon Amoy",nativeCurrency:{name:"MATIC",symbol:"MATIC",decimals:18},rpcUrls:{default:{http:["https://rpc-amoy.polygon.technology"]}},blockExplorers:{default:{name:"OK LINK",url:"https://www.oklink.com/amoy"}},testnet:!0}),rH=(0,C.a)({id:80085,name:"Berachain Artio",nativeCurrency:{decimals:18,name:"BERA Token",symbol:"BERA"},rpcUrls:{default:{http:["https://artio.rpc.berachain.com"]}},blockExplorers:{default:{name:"Berachain",url:"https://artio.beratrail.io"}},testnet:!0}),rQ=(0,C.a)({id:81457,name:"Blast",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://rpc.blast.io"]}},blockExplorers:{default:{name:"Blastscan",url:"https://blastscan.io"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:212929}},sourceId:1}),rK=(0,C.a)({...Q,id:84531,name:"Base Goerli",nativeCurrency:{name:"Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://goerli.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://goerli.basescan.org",apiUrl:"https://goerli.basescan.org/api"}},contracts:{...Q.contracts,l2OutputOracle:{5:{address:"0x2A35891ff30313CcFa6CE88dcf3858bb075A2298"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1376988},portal:{5:{address:"0xe93c8cD0D409341205A592f8c4Ac1A5fe5585cfA"}},l1StandardBridge:{5:{address:"0xfA6D8Ee5BE770F84FC001D098C4bD604Fe01284a"}}},testnet:!0,sourceId:5}),rV=(0,C.a)({...Q,id:84532,network:"base-sepolia",name:"Base Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.base.org"]}},blockExplorers:{default:{name:"Basescan",url:"https://sepolia.basescan.org",apiUrl:"https://api-sepolia.basescan.org/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x84457ca9D0163FbC4bbfe4Dfbb20ba46e48DF254"}},portal:{11155111:{address:"0x49f53e41452c74589e85ca1677426ba426459e85",blockCreated:4446677}},l1StandardBridge:{11155111:{address:"0xfd0Bf71F60660E2f608ed56e1659C450eB113120",blockCreated:4446677}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1059647}},testnet:!0,sourceId:11155111}),rZ=(0,C.a)({id:88882,name:"Chiliz Spicy Testnet",network:"chiliz-spicy-Testnet",nativeCurrency:{decimals:18,name:"CHZ",symbol:"CHZ"},rpcUrls:{default:{http:["https://spicy-rpc.chiliz.com","https://chiliz-spicy.publicnode.com"],webSocket:["wss://spicy-rpc-ws.chiliz.com","wss://chiliz-spicy.publicnode.com"]}},blockExplorers:{default:{name:"Chiliz Explorer",url:"http://spicy-explorer.chiliz.com",apiUrl:"http://spicy-explorer.chiliz.com/api"}},testnet:!0}),rJ=(0,C.a)({id:88888,name:"Chiliz Chain",network:"chiliz-chain",nativeCurrency:{decimals:18,name:"CHZ",symbol:"CHZ"},rpcUrls:{default:{http:["https://rpc.ankr.com/chiliz","https://chiliz.publicnode.com"]}},blockExplorers:{default:{name:"Chiliz Explorer",url:"https://scan.chiliz.com",apiUrl:"https://scan.chiliz.com/api"}}}),rX=(0,C.a)({id:100009,name:"Vechain",nativeCurrency:{name:"VeChain",symbol:"VET",decimals:18},rpcUrls:{default:{http:["https://mainnet.vechain.org"]}},blockExplorers:{default:{name:"Vechain Explorer",url:"https://explore.vechain.org"},vechainStats:{name:"Vechain Stats",url:"https://vechainstats.com"}}}),rY=(0,C.a)({id:105105,name:"Stratis Mainnet",network:"stratis",nativeCurrency:{name:"Stratis",symbol:"STRAX",decimals:18},rpcUrls:{default:{http:["https://rpc.stratisevm.com"]}},blockExplorers:{default:{name:"Stratis Explorer",url:"https://explorer.stratisevm.com"}}}),r$=(0,C.a)({id:128123,name:"Etherlink Testnet",nativeCurrency:{decimals:18,name:"Tez",symbol:"XTZ"},rpcUrls:{default:{http:["https://node.ghostnet.etherlink.com"]}},blockExplorers:{default:{name:"Etherlink Testnet",url:"https://testnet-explorer.etherlink.com"}},testnet:!0}),r0=(0,C.a)({id:167005,name:"Taiko (Alpha-3 Testnet)",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.test.taiko.xyz"]}},blockExplorers:{default:{name:"blockscout",url:"https://explorer.test.taiko.xyz"}}}),r1=(0,C.a)({id:167007,name:"Taiko Jolnir (Alpha-5 Testnet)",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.jolnir.taiko.xyz"]}},blockExplorers:{default:{name:"blockscout",url:"https://explorer.jolnir.taiko.xyz"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:732706}},testnet:!0}),r6=(0,C.a)({id:167008,name:"Taiko Katla (Alpha-6 Testnet)",network:"tko-katla",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.katla.taiko.xyz"]},public:{http:["https://rpc.katla.taiko.xyz"]}},blockExplorers:{default:{name:"blockscout",url:"https://explorer.katla.taiko.xyz"}}}),r3=(0,C.a)({id:205205,name:"Auroria Testnet",network:"auroria",nativeCurrency:{name:"Auroria Stratis",symbol:"tSTRAX",decimals:18},rpcUrls:{default:{http:["https://auroria.rpc.stratisevm.com"]}},blockExplorers:{default:{name:"Auroria Testnet Explorer",url:"https://auroria.explorer.stratisevm.com"}},testnet:!0}),r2=(0,C.a)({id:314159,name:"Filecoin Calibration",nativeCurrency:{decimals:18,name:"testnet filecoin",symbol:"tFIL"},rpcUrls:{default:{http:["https://api.calibration.node.glif.io/rpc/v1"]}},blockExplorers:{default:{name:"Filscan",url:"https://calibration.filscan.io"}}}),r7=(0,C.a)({id:421613,name:"Arbitrum Goerli",nativeCurrency:{name:"Arbitrum Goerli Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://goerli-rollup.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://goerli.arbiscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:88114}},testnet:!0}),r8=(0,C.a)({id:421614,name:"Arbitrum Sepolia",nativeCurrency:{name:"Arbitrum Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rollup.arbitrum.io/rpc"]}},blockExplorers:{default:{name:"Arbiscan",url:"https://sepolia.arbiscan.io",apiUrl:"https://api-sepolia.arbiscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:81930}},testnet:!0}),r5=(0,C.a)({id:534351,name:"Scroll Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rpc.scroll.io"]}},blockExplorers:{default:{name:"Blockscout",url:"https://sepolia-blockscout.scroll.io",apiUrl:"https://sepolia-blockscout.scroll.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:9473}},testnet:!0}),r4=(0,C.a)({id:534352,name:"Scroll",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.scroll.io"],webSocket:["wss://wss-rpc.scroll.io/ws"]}},blockExplorers:{default:{name:"Scrollscan",url:"https://scrollscan.com",apiUrl:"https://api.scrollscan.com/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14}},testnet:!1}),r9=(0,C.a)({id:534353,name:"Scroll Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://alpha-rpc.scroll.io/l2"],webSocket:["wss://alpha-rpc.scroll.io/l2/ws"]}},blockExplorers:{default:{name:"Blockscout",url:"https://blockscout.scroll.io",apiUrl:"https://blockscout.scroll.io/api"}},testnet:!0}),ne=(0,C.a)({id:641230,name:"Bear Network Chain Mainnet",nativeCurrency:{decimals:18,name:"BearNetworkChain",symbol:"BRNKC"},rpcUrls:{default:{http:["https://brnkc-mainnet.bearnetwork.net"]}},blockExplorers:{default:{name:"BrnkScan",url:"https://brnkscan.bearnetwork.net",apiUrl:"https://brnkscan.bearnetwork.net/api"}}}),nt=(0,C.a)({id:751230,name:"Bear Network Chain Testnet",nativeCurrency:{decimals:18,name:"tBRNKC",symbol:"tBRNKC"},rpcUrls:{default:{http:["https://brnkc-test.bearnetwork.net"]}},blockExplorers:{default:{name:"BrnkTestScan",url:"https://brnktest-scan.bearnetwork.net",apiUrl:"https://brnktest-scan.bearnetwork.net/api"}},testnet:!0}),nr=(0,C.a)({id:1337803,name:"Zhejiang",nativeCurrency:{name:"Zhejiang Ether",symbol:"ZhejETH",decimals:18},rpcUrls:{default:{http:["https://rpc.zhejiang.ethpandaops.io"]}},blockExplorers:{default:{name:"Beaconchain",url:"https://zhejiang.beaconcha.in"}},testnet:!0}),nn=(0,C.a)({id:3441005,name:"Manta Pacific Testnet",network:"manta-testnet",nativeCurrency:{decimals:18,name:"ETH",symbol:"ETH"},rpcUrls:{default:{http:["https://manta-testnet.calderachain.xyz/http"]}},blockExplorers:{default:{name:"Manta Testnet Explorer",url:"https://pacific-explorer.testnet.manta.network",apiUrl:"https://pacific-explorer.testnet.manta.network/api"}},contracts:{multicall3:{address:"0x211B1643b95Fe76f11eD8880EE810ABD9A4cf56C",blockCreated:419915}},testnet:!0}),na=(0,C.a)({id:6038361,name:"Astar zkEVM Testnet zKyoto",network:"zKyoto",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.startale.com/zkyoto"]}},blockExplorers:{default:{name:"zKyoto Explorer",url:"https://astar-zkyoto.blockscout.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:196153}},testnet:!0}),no=(0,C.a)({...Q,id:7777777,name:"Zora",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://rpc.zora.energy"],webSocket:["wss://rpc.zora.energy"]}},blockExplorers:{default:{name:"Explorer",url:"https://explorer.zora.energy",apiUrl:"https://explorer.zora.energy/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0x9E6204F750cD866b299594e2aC9eA824E2e5f95c"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:5882},portal:{1:{address:"0x1a0ad011913A150f69f6A19DF447A0CfD9551054"}},l1StandardBridge:{1:{address:"0x3e2Ea9B92B7E48A52296fD261dc26fd995284631"}}},sourceId:1}),ni=(0,C.a)({id:11155111,name:"Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"SEP",decimals:18},rpcUrls:{default:{http:["https://rpc.sepolia.org"]}},blockExplorers:{default:{name:"Etherscan",url:"https://sepolia.etherscan.io",apiUrl:"https://api-sepolia.etherscan.io/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:751532},ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xc8Af999e38273D658BE1b921b88A9Ddf005769cC",blockCreated:5317080}},testnet:!0}),ns=(0,C.a)({...Q,id:11155420,name:"OP Sepolia",nativeCurrency:{name:"Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.optimism.io"]}},blockExplorers:{default:{name:"Blockscout",url:"https://optimism-sepolia.blockscout.com",apiUrl:"https://optimism-sepolia.blockscout.com/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x90E9c4f8a994a250F6aEfd61CAFb4F2e895D458F"}},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:1620204},portal:{11155111:{address:"0x16Fc5058F25648194471939df75CF27A2fdC48BC"}},l1StandardBridge:{11155111:{address:"0xFBb0621E0B23b5478B630BD55a5f21f67730B0F1"}}},testnet:!0,sourceId:11155111}),nl=(0,C.a)({...Q,id:28122024,name:"Ancient8 Testnet",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpcv2-testnet.ancient8.gg"]}},blockExplorers:{default:{name:"Ancient8 Celestia Testnet explorer",url:"https://scanv2-testnet.ancient8.gg",apiUrl:"https://scanv2-testnet.ancient8.gg/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x942fD5017c0F60575930D8574Eaca13BEcD6e1bB"}},portal:{11155111:{address:"0xfa1d9E26A6aCD7b22115D27572c1221B9803c960",blockCreated:4972908}},l1StandardBridge:{11155111:{address:"0xF6Bc0146d3c74D48306e79Ae134A260E418C9335",blockCreated:4972908}}},sourceId:11155111}),nc=(0,C.a)({id:37084624,name:"SKALE Nebula Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/lanky-ill-funny-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/lanky-ill-funny-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://lanky-ill-funny-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:105141}},testnet:!0}),nu=(0,C.a)({id:161221135,name:"Plume Testnet",nativeCurrency:{name:"Plume Sepolia Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://plume-testnet.rpc.caldera.xyz/http"],webSocket:["wss://plume-testnet.rpc.caldera.xyz/ws"]}},blockExplorers:{default:{name:"Blockscout",url:"https://plume-testnet.explorer.caldera.xyz",apiUrl:"https://plume-testnet.explorer.caldera.xyz/api"}},testnet:!0,sourceId:11155111}),nd=(0,C.a)({id:168587773,name:"Blast Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia.blast.io"]}},blockExplorers:{default:{name:"Blastscan",url:"https://testnet.blastscan.io"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:756690}},testnet:!0,sourceId:11155111}),np=(0,C.a)({id:245022926,name:"Neon EVM DevNet",nativeCurrency:{name:"NEON",symbol:"NEON",decimals:18},rpcUrls:{default:{http:["https://devnet.neonevm.org"]}},blockExplorers:{default:{name:"Neonscan",url:"https://devnet.neonscan.org"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:205206112}},testnet:!0}),nh=(0,C.a)({id:245022934,network:"neonMainnet",name:"Neon EVM MainNet",nativeCurrency:{name:"NEON",symbol:"NEON",decimals:18},rpcUrls:{default:{http:["https://neon-proxy-mainnet.solana.p2p.org"]}},blockExplorers:{default:{name:"Neonscan",url:"https://neonscan.org"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:206545524}},testnet:!1}),nf=(0,C.a)({id:278611351,name:"SKALE | Razor Network",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/turbulent-unique-scheat"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/turbulent-unique-scheat"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://turbulent-unique-scheat.explorer.mainnet.skalenodes.com"}},contracts:{}}),nm=(0,C.a)({id:391845894,name:"SKALE | Block Brawlers",nativeCurrency:{name:"BRAWL",symbol:"BRAWL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/frayed-decent-antares"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/frayed-decent-antares"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://frayed-decent-antares.explorer.mainnet.skalenodes.com"}},contracts:{}}),ng=(0,C.a)({...Q,id:888888888,name:"Ancient8",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://rpc.ancient8.gg"]}},blockExplorers:{default:{name:"Ancient8 explorer",url:"https://scan.ancient8.gg",apiUrl:"https://scan.ancient8.gg/api"}},contracts:{...Q.contracts,l2OutputOracle:{1:{address:"0xB09DC08428C8b4EFB4ff9C0827386CDF34277996"}},portal:{1:{address:"0x639F2AECE398Aa76b07e59eF6abe2cFe32bacb68",blockCreated:19070571}},l1StandardBridge:{1:{address:"0xd5e3eDf5b68135D559D572E26bF863FBC1950033",blockCreated:19070571}}},sourceId:1}),nb=(0,C.a)({id:974399131,name:"SKALE Calypso Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/giant-half-dual-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/giant-half-dual-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://giant-half-dual-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:103220}},testnet:!0}),ny=(0,C.a)({...Q,id:999999999,name:"Zora Sepolia",network:"zora-sepolia",nativeCurrency:{decimals:18,name:"Zora Sepolia",symbol:"ETH"},rpcUrls:{default:{http:["https://sepolia.rpc.zora.energy"],webSocket:["wss://sepolia.rpc.zora.energy"]}},blockExplorers:{default:{name:"Zora Sepolia Explorer",url:"https://sepolia.explorer.zora.energy/",apiUrl:"https://sepolia.explorer.zora.energy/api"}},contracts:{...Q.contracts,l2OutputOracle:{11155111:{address:"0x2615B481Bd3E5A1C0C7Ca3Da1bdc663E8615Ade9"}},multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:83160},portal:{11155111:{address:"0xeffE2C6cA9Ab797D418f0D91eA60807713f3536f"}},l1StandardBridge:{11155111:{address:"0x5376f1D543dcbB5BD416c56C189e4cB7399fCcCB"}}},sourceId:11155111,testnet:!0}),nv=(0,C.a)({id:1020352220,name:"SKALE Titan Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/aware-fake-trim-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/aware-fake-trim-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://aware-fake-trim-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:104072}},testnet:!0}),nw=(0,C.a)({id:1026062157,name:"SKALE | CryptoBlades",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/affectionate-immediate-pollux"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/affectionate-immediate-pollux"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://affectionate-immediate-pollux.explorer.mainnet.skalenodes.com"}},contracts:{}}),nC=(0,C.a)({id:2046399126,name:"SKALE | Crypto Colosseum",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/haunting-devoted-deneb"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/haunting-devoted-deneb"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://haunting-devoted-deneb.explorer.mainnet.skalenodes.com"}},contracts:{}}),nE=(0,C.a)({id:1273227453,name:"SKALE | Human Protocol",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/wan-red-ain"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/wan-red-ain"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://wan-red-ain.explorer.mainnet.skalenodes.com"}},contracts:{}}),nx=(0,C.a)({id:1313161554,name:"Aurora",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://mainnet.aurora.dev"]}},blockExplorers:{default:{name:"Aurorascan",url:"https://aurorascan.dev",apiUrl:"https://aurorascan.dev/api"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:62907816}}}),nA=(0,C.a)({id:1313161555,name:"Aurora Testnet",nativeCurrency:{decimals:18,name:"Ether",symbol:"ETH"},rpcUrls:{default:{http:["https://testnet.aurora.dev"]}},blockExplorers:{default:{name:"Aurorascan",url:"https://testnet.aurorascan.dev",apiUrl:"https://testnet.aurorascan.dev/api"}},testnet:!0}),nk=(0,C.a)({id:1350216234,name:"SKALE | Titan Community Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/parallel-stormy-spica"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/parallel-stormy-spica"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://parallel-stormy-spica.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:2076458}}}),nB=(0,C.a)({id:1444673419,name:"SKALE Europa Testnet",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://testnet.skalenodes.com/v1/juicy-low-small-testnet"],webSocket:["wss://testnet.skalenodes.com/v1/ws/juicy-low-small-testnet"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://juicy-low-small-testnet.explorer.testnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:110858}},testnet:!0}),nS=(0,C.a)({id:1482601649,name:"SKALE | Nebula Gaming Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/green-giddy-denebola"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/green-giddy-denebola"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://green-giddy-denebola.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:2372986}}}),nI=(0,C.a)({id:1564830818,name:"SKALE | Calypso NFT Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/honorable-steel-rasalhague"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/honorable-steel-rasalhague"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://honorable-steel-rasalhague.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3107626}}}),nj=(0,C.a)({id:16666e5,name:"Harmony One",nativeCurrency:{name:"Harmony",symbol:"ONE",decimals:18},rpcUrls:{default:{http:["https://rpc.ankr.com/harmony"]}},blockExplorers:{default:{name:"Harmony Explorer",url:"https://explorer.harmony.one"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:24185753}}}),nT=(0,C.a)({id:2046399126,name:"SKALE | Europa Liquidity Hub",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/elated-tan-skat"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/elated-tan-skat"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://elated-tan-skat.explorer.mainnet.skalenodes.com"}},contracts:{multicall3:{address:"0xcA11bde05977b3631167028862bE2a173976CA11",blockCreated:3113495}}}),nP=(0,C.a)({id:2139927552,name:"SKALE | Exorde",nativeCurrency:{name:"sFUEL",symbol:"sFUEL",decimals:18},rpcUrls:{default:{http:["https://mainnet.skalenodes.com/v1/light-vast-diphda"],webSocket:["wss://mainnet.skalenodes.com/v1/ws/light-vast-diphda"]}},blockExplorers:{default:{name:"SKALE Explorer",url:"https://light-vast-diphda.explorer.mainnet.skalenodes.com"}},contracts:{}}),nM=(0,C.a)({id:11297108099,name:"Palm Testnet",nativeCurrency:{decimals:18,name:"PALM",symbol:"PALM"},rpcUrls:{default:{http:["https://palm-mainnet.public.blastapi.io"],webSocket:["wss://palm-mainnet.public.blastapi.io"]}},blockExplorers:{default:{name:"Chainlens",url:"https://palm.chainlens.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15429248}},testnet:!0}),nO=(0,C.a)({id:11297108109,name:"Palm",nativeCurrency:{decimals:18,name:"PALM",symbol:"PALM"},rpcUrls:{default:{http:["https://palm-mainnet.public.blastapi.io"],webSocket:["wss://palm-mainnet.public.blastapi.io"]}},blockExplorers:{default:{name:"Chainlens",url:"https://palm.chainlens.com"}},contracts:{multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:15429248}}}),nR=(0,C.a)({id:107107114116,name:"Kakarot Sepolia",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://sepolia-rpc.kakarot.org"]}},blockExplorers:{default:{name:"Kakarot Scan",url:"https://sepolia.kakarotscan.org"}},testnet:!0}),nU={...E,id:8996,name:"Ganache",network:"ganache",rpcUrls:{default:{http:["http://127.0.0.1:8545"]}}},nF=[x.R,A,K,V,Z,J,X,Y,$,ee,et,er,en,ea,eo,ei,es,el,ec,eu,ed,ep,eh,ef,em,eg,eb,ey,ev,ew,eC,eE,ex,eA,ek,eB,eS,eI,ej,eT,eP,eM,eO,eR,e_,eL,ez,eq,eG,eW,eH,eQ,eK,eV,eZ,eJ,eX,eY,e$,e0,e1,e6,e3,e2,e7,e8,e5,e4,e9,te,tt,tr,tn,ta,to,ti,ts,tl,tc,tu,td,tp,th,tf,tm,tg,tb,ty,tv,tw,tC,tE,tx,tA,tk,tB,tS,tI,tj,tT,tP,tM,tO,tR,tU,tF,tN,tD,t_,tL,tz,tq,tG,tW,tH,tQ,tK,tV,tZ,tJ,tX,tY,t$,t0,t1,t6,t3,t2,t7,t8,t5,t4,t9,re,rt,rr,rn,ra,ro,ri,rs,rl,rc,ru,rd,rp,rh,rf,rm,rg,rb,ry,rv,E,rw,rC,rE,rx,rA,rk,rB,rT,rP,rM,rO,rR,rU,rF,rN,rD,r_,rL,rz,rq,rG,rW,rH,rQ,rK,rV,rZ,rJ,rX,rY,r$,r0,r1,r6,r3,r2,r7,r8,r5,r4,r9,ne,nt,nr,nn,na,no,ni,ns,nl,nc,nu,nd,np,nh,nf,nm,ng,nb,ny,nv,nw,nC,nE,nx,nA,nk,nB,nS,nI,nj,nT,nP,nM,nO,nR,nU];var nN=n(27061);function App(e){let{Component:t,pageProps:n}=e,c=(0,s.vX)({appName:"Ocean Node Control Panel",projectId:nN.env.NEXT_PUBLIC_WALLET_CONNECT_ID?nN.env.NEXT_PUBLIC_WALLET_CONNECT_ID:"da267f7e1897e2cf92a7710f92e8f660",chains:nF,ssr:!0}),u=new v;return(0,o.jsx)(l.F,{config:c,children:(0,o.jsx)(w.aH,{client:u,children:(0,o.jsx)(s.pj,{children:(0,o.jsx)(i.I,{children:(0,o.jsx)(t,{...n})})})})})}},56953:function(){},32352:function(){},92592:function(e,t,n){let o=n(47138),i=n(95115),s=n(6907),l=n(93776);function renderCanvas(e,t,n,s,l){let c=[].slice.call(arguments,1),u=c.length,d="function"==typeof c[u-1];if(!d&&!o())throw Error("Callback required as last argument");if(d){if(u<2)throw Error("Too few arguments provided");2===u?(l=n,n=t,t=s=void 0):3===u&&(t.getContext&&void 0===l?(l=s,s=void 0):(l=s,s=n,n=t,t=void 0))}else{if(u<1)throw Error("Too few arguments provided");return 1===u?(n=t,t=s=void 0):2!==u||t.getContext||(s=n,n=t,t=void 0),new Promise(function(o,l){try{let l=i.create(n,s);o(e(l,t,s))}catch(e){l(e)}})}try{let o=i.create(n,s);l(null,e(o,t,s))}catch(e){l(e)}}t.create=i.create,t.toCanvas=renderCanvas.bind(null,s.render),t.toDataURL=renderCanvas.bind(null,s.renderToDataURL),t.toString=renderCanvas.bind(null,function(e,t,n){return l.render(e,n)})},47138:function(e){e.exports=function(){return"function"==typeof Promise&&Promise.prototype&&Promise.prototype.then}},21845:function(e,t,n){let o=n(10242).getSymbolSize;t.getRowColCoords=function(e){if(1===e)return[];let t=Math.floor(e/7)+2,n=o(e),i=145===n?26:2*Math.ceil((n-13)/(2*t-2)),s=[n-7];for(let e=1;e>>7-e%8&1)==1},put:function(e,t){for(let n=0;n>>t-n-1&1)==1)},getLengthInBits:function(){return this.length},putBit:function(e){let t=Math.floor(this.length/8);this.buffer.length<=t&&this.buffer.push(0),e&&(this.buffer[t]|=128>>>this.length%8),this.length++}},e.exports=BitBuffer},73280:function(e){function BitMatrix(e){if(!e||e<1)throw Error("BitMatrix size must be defined and greater than 0");this.size=e,this.data=new Uint8Array(e*e),this.reservedBit=new Uint8Array(e*e)}BitMatrix.prototype.set=function(e,t,n,o){let i=e*this.size+t;this.data[i]=n,o&&(this.reservedBit[i]=!0)},BitMatrix.prototype.get=function(e,t){return this.data[e*this.size+t]},BitMatrix.prototype.xor=function(e,t,n){this.data[e*this.size+t]^=n},BitMatrix.prototype.isReserved=function(e,t){return this.reservedBit[e*this.size+t]},e.exports=BitMatrix},43424:function(e,t,n){let o=n(62378),i=n(76910);function ByteData(e){this.mode=i.BYTE,"string"==typeof e&&(e=o(e)),this.data=new Uint8Array(e)}ByteData.getBitsLength=function(e){return 8*e},ByteData.prototype.getLength=function(){return this.data.length},ByteData.prototype.getBitsLength=function(){return ByteData.getBitsLength(this.data.length)},ByteData.prototype.write=function(e){for(let t=0,n=this.data.length;t=0&&e.bit<4},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw Error("Param is not a string");let n=e.toLowerCase();switch(n){case"l":case"low":return t.L;case"m":case"medium":return t.M;case"q":case"quartile":return t.Q;case"h":case"high":return t.H;default:throw Error("Unknown EC Level: "+e)}}(e)}catch(e){return n}}},76526:function(e,t,n){let o=n(10242).getSymbolSize;t.getPositions=function(e){let t=o(e);return[[0,0],[t-7,0],[0,t-7]]}},61642:function(e,t,n){let o=n(10242),i=o.getBCHDigit(1335);t.getEncodedBits=function(e,t){let n=e.bit<<3|t,s=n<<10;for(;o.getBCHDigit(s)-i>=0;)s^=1335<=33088&&n<=40956)n-=33088;else if(n>=57408&&n<=60351)n-=49472;else throw Error("Invalid SJIS character: "+this.data[t]+"\nMake sure your charset is UTF-8");n=(n>>>8&255)*192+(255&n),e.put(n,13)}},e.exports=KanjiData},27126:function(e,t){t.Patterns={PATTERN000:0,PATTERN001:1,PATTERN010:2,PATTERN011:3,PATTERN100:4,PATTERN101:5,PATTERN110:6,PATTERN111:7};let n={N1:3,N2:3,N3:40,N4:10};t.isValid=function(e){return null!=e&&""!==e&&!isNaN(e)&&e>=0&&e<=7},t.from=function(e){return t.isValid(e)?parseInt(e,10):void 0},t.getPenaltyN1=function(e){let t=e.size,o=0,i=0,s=0,l=null,c=null;for(let u=0;u=5&&(o+=n.N1+(i-5)),l=t,i=1),(t=e.get(d,u))===c?s++:(s>=5&&(o+=n.N1+(s-5)),c=t,s=1)}i>=5&&(o+=n.N1+(i-5)),s>=5&&(o+=n.N1+(s-5))}return o},t.getPenaltyN2=function(e){let t=e.size,o=0;for(let n=0;n=10&&(1488===i||93===i)&&o++,s=s<<1&2047|e.get(l,n),l>=10&&(1488===s||93===s)&&o++}return o*n.N3},t.getPenaltyN4=function(e){let t=0,o=e.data.length;for(let n=0;n=1&&t<10?e.ccBits[0]:t<27?e.ccBits[1]:e.ccBits[2]},t.getBestModeForData=function(e){return i.testNumeric(e)?t.NUMERIC:i.testAlphanumeric(e)?t.ALPHANUMERIC:i.testKanji(e)?t.KANJI:t.BYTE},t.toString=function(e){if(e&&e.id)return e.id;throw Error("Invalid mode")},t.isValid=function(e){return e&&e.bit&&e.ccBits},t.from=function(e,n){if(t.isValid(e))return e;try{return function(e){if("string"!=typeof e)throw Error("Param is not a string");let n=e.toLowerCase();switch(n){case"numeric":return t.NUMERIC;case"alphanumeric":return t.ALPHANUMERIC;case"kanji":return t.KANJI;case"byte":return t.BYTE;default:throw Error("Unknown mode: "+e)}}(e)}catch(e){return n}}},41085:function(e,t,n){let o=n(76910);function NumericData(e){this.mode=o.NUMERIC,this.data=e.toString()}NumericData.getBitsLength=function(e){return 10*Math.floor(e/3)+(e%3?e%3*3+1:0)},NumericData.prototype.getLength=function(){return this.data.length},NumericData.prototype.getBitsLength=function(){return NumericData.getBitsLength(this.data.length)},NumericData.prototype.write=function(e){let t,n;for(t=0;t+3<=this.data.length;t+=3)n=parseInt(this.data.substr(t,3),10),e.put(n,10);let o=this.data.length-t;o>0&&(n=parseInt(this.data.substr(t),10),e.put(n,3*o+1))},e.exports=NumericData},26143:function(e,t,n){let o=n(69729);t.mul=function(e,t){let n=new Uint8Array(e.length+t.length-1);for(let i=0;i=0;){let e=n[0];for(let i=0;i>o&1)==1,o<6?e.set(o,8,i,!0):o<8?e.set(o+1,8,i,!0):e.set(s-15+o,8,i,!0),o<8?e.set(8,s-o-1,i,!0):o<9?e.set(8,15-o-1+1,i,!0):e.set(8,15-o-1,i,!0);e.set(s-8,8,1,!0)}t.create=function(e,t){let n,g;if(void 0===e||""===e)throw Error("No input text");let v=i.M;return void 0!==t&&(v=i.from(t.errorCorrectionLevel,i.M),n=m.from(t.version),g=d.from(t.maskPattern),t.toSJISFunc&&o.setToSJISFunction(t.toSJISFunc)),function(e,t,n,i){let g;if(Array.isArray(e))g=y.fromArray(e);else if("string"==typeof e){let o=t;if(!o){let t=y.rawSplit(e);o=m.getBestVersionForData(t,n)}g=y.fromString(e,o||40)}else throw Error("Invalid data");let v=m.getBestVersionForData(g,n);if(!v)throw Error("The amount of data is too big to be stored in a QR Code");if(t){if(t=0&&t<=6&&(0===o||6===o)||o>=0&&o<=6&&(0===t||6===t)||t>=2&&t<=4&&o>=2&&o<=4?e.set(i+t,s+o,!0,!0):e.set(i+t,s+o,!1,!0))}}(E,t),function(e){let t=e.size;for(let n=8;n=7&&function(e,t){let n,o,i;let s=e.size,l=m.getEncodedBits(t);for(let t=0;t<18;t++)n=Math.floor(t/3),o=t%3+s-8-3,i=(l>>t&1)==1,e.set(n,o,i,!0),e.set(o,n,i,!0)}(E,t),function(e,t){let n=e.size,o=-1,i=n-1,s=7,l=0;for(let c=n-1;c>0;c-=2)for(6===c&&c--;;){for(let n=0;n<2;n++)if(!e.isReserved(i,c-n)){let o=!1;l>>s&1)==1),e.set(i,c-n,o),-1==--s&&(l++,s=7)}if((i+=o)<0||n<=i){i-=o,o=-o;break}}}(E,w),isNaN(i)&&(i=d.getBestMask(E,setupFormatInfo.bind(null,E,n))),d.applyMask(i,E),setupFormatInfo(E,n,i),{modules:E,version:t,errorCorrectionLevel:n,maskPattern:i,segments:g}}(e,n,v,g)}},52882:function(e,t,n){let o=n(26143);function ReedSolomonEncoder(e){this.genPoly=void 0,this.degree=e,this.degree&&this.initialize(this.degree)}ReedSolomonEncoder.prototype.initialize=function(e){this.degree=e,this.genPoly=o.generateECPolynomial(this.degree)},ReedSolomonEncoder.prototype.encode=function(e){if(!this.genPoly)throw Error("Encoder not initialized");let t=new Uint8Array(e.length+this.degree);t.set(e);let n=o.mod(t,this.genPoly),i=this.degree-n.length;if(i>0){let e=new Uint8Array(this.degree);return e.set(n,i),e}return n},e.exports=ReedSolomonEncoder},7007:function(e,t){let n="[0-9]+",o="(?:[u3000-u303F]|[u3040-u309F]|[u30A0-u30FF]|[uFF00-uFFEF]|[u4E00-u9FAF]|[u2605-u2606]|[u2190-u2195]|u203B|[u2010u2015u2018u2019u2025u2026u201Cu201Du2225u2260]|[u0391-u0451]|[u00A7u00A8u00B1u00B4u00D7u00F7])+";o=o.replace(/u/g,"\\u");let i="(?:(?![A-Z0-9 $%*+\\-./:]|"+o+")(?:.|[\r\n]))+";t.KANJI=RegExp(o,"g"),t.BYTE_KANJI=RegExp("[^A-Z0-9 $%*+\\-./:]+","g"),t.BYTE=RegExp(i,"g"),t.NUMERIC=RegExp(n,"g"),t.ALPHANUMERIC=RegExp("[A-Z $%*+\\-./:]+","g");let s=RegExp("^"+o+"$"),l=RegExp("^"+n+"$"),c=RegExp("^[A-Z0-9 $%*+\\-./:]+$");t.testKanji=function(e){return s.test(e)},t.testNumeric=function(e){return l.test(e)},t.testAlphanumeric=function(e){return c.test(e)}},16130:function(e,t,n){let o=n(76910),i=n(41085),s=n(8260),l=n(43424),c=n(35442),u=n(7007),d=n(10242),p=n(65987);function getStringByteLength(e){return unescape(encodeURIComponent(e)).length}function getSegments(e,t,n){let o;let i=[];for(;null!==(o=e.exec(n));)i.push({data:o[0],index:o.index,mode:t,length:o[0].length});return i}function getSegmentsFromString(e){let t,n;let i=getSegments(u.NUMERIC,o.NUMERIC,e),s=getSegments(u.ALPHANUMERIC,o.ALPHANUMERIC,e);d.isKanjiModeEnabled()?(t=getSegments(u.BYTE,o.BYTE,e),n=getSegments(u.KANJI,o.KANJI,e)):(t=getSegments(u.BYTE_KANJI,o.BYTE,e),n=[]);let l=i.concat(s,t,n);return l.sort(function(e,t){return e.index-t.index}).map(function(e){return{data:e.data,mode:e.mode,length:e.length}})}function getSegmentBitsLength(e,t){switch(t){case o.NUMERIC:return i.getBitsLength(e);case o.ALPHANUMERIC:return s.getBitsLength(e);case o.KANJI:return c.getBitsLength(e);case o.BYTE:return l.getBitsLength(e)}}function buildSingleSegment(e,t){let n;let u=o.getBestModeForData(e);if((n=o.from(t,u))!==o.BYTE&&n.bit=0?e[e.length-1]:null;return n&&n.mode===t.mode?e[e.length-1].data+=t.data:e.push(t),e},[]))},t.rawSplit=function(e){return t.fromArray(getSegmentsFromString(e,d.isKanjiModeEnabled()))}},10242:function(e,t){let n;let o=[0,26,44,70,100,134,172,196,242,292,346,404,466,532,581,655,733,815,901,991,1085,1156,1258,1364,1474,1588,1706,1828,1921,2051,2185,2323,2465,2611,2761,2876,3034,3196,3362,3532,3706];t.getSymbolSize=function(e){if(!e)throw Error('"version" cannot be null or undefined');if(e<1||e>40)throw Error('"version" should be in range from 1 to 40');return 4*e+17},t.getSymbolTotalCodewords=function(e){return o[e]},t.getBCHDigit=function(e){let t=0;for(;0!==e;)t++,e>>>=1;return t},t.setToSJISFunction=function(e){if("function"!=typeof e)throw Error('"toSJISFunc" is not a valid function.');n=e},t.isKanjiModeEnabled=function(){return void 0!==n},t.toSJIS=function(e){return n(e)}},43114:function(e,t){t.isValid=function(e){return!isNaN(e)&&e>=1&&e<=40}},23103:function(e,t,n){let o=n(10242),i=n(35393),s=n(64908),l=n(76910),c=n(43114),u=o.getBCHDigit(7973);function getReservedBitsCount(e,t){return l.getCharCountIndicator(e,t)+4}t.from=function(e,t){return c.isValid(e)?parseInt(e,10):t},t.getCapacity=function(e,t,n){if(!c.isValid(e))throw Error("Invalid QR Code version");void 0===n&&(n=l.BYTE);let s=o.getSymbolTotalCodewords(e),u=i.getTotalCodewordsCount(e,t),d=(s-u)*8;if(n===l.MIXED)return d;let p=d-getReservedBitsCount(n,e);switch(n){case l.NUMERIC:return Math.floor(p/10*3);case l.ALPHANUMERIC:return Math.floor(p/11*2);case l.KANJI:return Math.floor(p/13);case l.BYTE:default:return Math.floor(p/8)}},t.getBestVersionForData=function(e,n){let o;let i=s.from(n,s.M);if(Array.isArray(e)){if(e.length>1)return function(e,n){for(let o=1;o<=40;o++){let i=function(e,t){let n=0;return e.forEach(function(e){let o=getReservedBitsCount(e.mode,t);n+=o+e.getBitsLength()}),n}(e,o);if(i<=t.getCapacity(o,n,l.MIXED))return o}}(e,i);if(0===e.length)return 1;o=e[0]}else o=e;return function(e,n,o){for(let i=1;i<=40;i++)if(n<=t.getCapacity(i,o,e))return i}(o.mode,o.getLength(),i)},t.getEncodedBits=function(e){if(!c.isValid(e)||e<7)throw Error("Invalid QR Code version");let t=e<<12;for(;o.getBCHDigit(t)-u>=0;)t^=7973<':"",d="0&&u>0&&e[c-1]||(o+=s?svgCmd("M",u+n,.5+d+n):svgCmd("m",i,0),i=0,s=!1),u+1',p=i.width?'width="'+i.width+'" height="'+i.width+'" ':"",f=''+u+d+"\n";return"function"==typeof n&&n(null,f),f}},89653:function(e,t){function hex2rgba(e){if("number"==typeof e&&(e=e.toString()),"string"!=typeof e)throw Error("Color should be defined as hex string");let t=e.slice().replace("#","").split("");if(t.length<3||5===t.length||t.length>8)throw Error("Invalid hex color: "+e);(3===t.length||4===t.length)&&(t=Array.prototype.concat.apply([],t.map(function(e){return[e,e]}))),6===t.length&&t.push("F","F");let n=parseInt(t.join(""),16);return{r:n>>24&255,g:n>>16&255,b:n>>8&255,a:255&n,hex:"#"+t.slice(0,6).join("")}}t.getOptions=function(e){e||(e={}),e.color||(e.color={});let t=void 0===e.margin||null===e.margin||e.margin<0?4:e.margin,n=e.width&&e.width>=21?e.width:void 0,o=e.scale||4;return{width:n,scale:n?4:o,margin:t,color:{dark:hex2rgba(e.color.dark||"#000000ff"),light:hex2rgba(e.color.light||"#ffffffff")},type:e.type,rendererOpts:e.rendererOpts||{}}},t.getScale=function(e,t){return t.width&&t.width>=e+2*t.margin?t.width/(e+2*t.margin):t.scale},t.getImageWidth=function(e,n){let o=t.getScale(e,n);return Math.floor((e+2*n.margin)*o)},t.qrToImageData=function(e,n,o){let i=n.modules.size,s=n.modules.data,l=t.getScale(i,o),c=Math.floor((i+2*o.margin)*l),u=o.margin*l,d=[o.color.light,o.color.dark];for(let t=0;t=u&&n>=u&&tt.indexOf(o)&&(n[o]=e[o]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var i=0,o=Object.getOwnPropertySymbols(e);it.indexOf(o[i])&&Object.prototype.propertyIsEnumerable.call(e,o[i])&&(n[o[i]]=e[o[i]]);return n}function __decorate(e,t,n,o){var i,s=arguments.length,l=s<3?t:null===o?o=Object.getOwnPropertyDescriptor(t,n):o;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)l=Reflect.decorate(e,t,n,o);else for(var c=e.length-1;c>=0;c--)(i=e[c])&&(l=(s<3?i(l):s>3?i(t,n,l):i(t,n))||l);return s>3&&l&&Object.defineProperty(t,n,l),l}function __param(e,t){return function(n,o){t(n,o,e)}}function __metadata(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function __awaiter(e,t,n,o){return new(n||(n=Promise))(function(i,s){function fulfilled(e){try{step(o.next(e))}catch(e){s(e)}}function rejected(e){try{step(o.throw(e))}catch(e){s(e)}}function step(e){var t;e.done?i(e.value):((t=e.value)instanceof n?t:new n(function(e){e(t)})).then(fulfilled,rejected)}step((o=o.apply(e,t||[])).next())})}function __generator(e,t){var n,o,i,s,l={label:0,sent:function(){if(1&i[0])throw i[1];return i[1]},trys:[],ops:[]};return s={next:verb(0),throw:verb(1),return:verb(2)},"function"==typeof Symbol&&(s[Symbol.iterator]=function(){return this}),s;function verb(s){return function(c){return function(s){if(n)throw TypeError("Generator is already executing.");for(;l;)try{if(n=1,o&&(i=2&s[0]?o.return:s[0]?o.throw||((i=o.return)&&i.call(o),0):o.next)&&!(i=i.call(o,s[1])).done)return i;switch(o=0,i&&(s=[2&s[0],i.value]),s[0]){case 0:case 1:i=s;break;case 4:return l.label++,{value:s[1],done:!1};case 5:l.label++,o=s[1],s=[0];continue;case 7:s=l.ops.pop(),l.trys.pop();continue;default:if(!(i=(i=l.trys).length>0&&i[i.length-1])&&(6===s[0]||2===s[0])){l=0;continue}if(3===s[0]&&(!i||s[1]>i[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[o++],done:!e}}};throw TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function __read(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var o,i,s=n.call(e),l=[];try{for(;(void 0===t||t-- >0)&&!(o=s.next()).done;)l.push(o.value)}catch(e){i={error:e}}finally{try{o&&!o.done&&(n=s.return)&&n.call(s)}finally{if(i)throw i.error}}return l}function __spread(){for(var e=[],t=0;t1||resume(e,t)})})}function resume(e,t){try{var n;(n=i[e](t)).value instanceof __await?Promise.resolve(n.value.v).then(fulfill,reject):settle(s[0][2],n)}catch(e){settle(s[0][3],e)}}function fulfill(e){resume("next",e)}function reject(e){resume("throw",e)}function settle(e,t){e(t),s.shift(),s.length&&resume(s[0][0],s[0][1])}}function __asyncDelegator(e){var t,n;return t={},verb("next"),verb("throw",function(e){throw e}),verb("return"),t[Symbol.iterator]=function(){return this},t;function verb(o,i){t[o]=e[o]?function(t){return(n=!n)?{value:__await(e[o](t)),done:"return"===o}:i?i(t):t}:i}}function __asyncValues(e){if(!Symbol.asyncIterator)throw TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=__values(e),t={},verb("next"),verb("throw"),verb("return"),t[Symbol.asyncIterator]=function(){return this},t);function verb(n){t[n]=e[n]&&function(t){return new Promise(function(o,i){!function(e,t,n,o){Promise.resolve(o).then(function(t){e({value:t,done:n})},t)}(o,i,(t=e[n](t)).done,t.value)})}}}function __makeTemplateObject(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var i=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function __importStar(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return i(t,e),t}function __importDefault(e){return e&&e.__esModule?e:{default:e}}function __classPrivateFieldGet(e,t,n,o){if("a"===n&&!o)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)}function __classPrivateFieldSet(e,t,n,o,i){if("m"===o)throw TypeError("Private method is not writable");if("a"===o&&!i)throw TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!i:!t.has(e))throw TypeError("Cannot write private member to an object whose class did not declare it");return"a"===o?i.call(e,n):i?i.value=n:t.set(e,n),n}function __classPrivateFieldIn(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},42238:function(e,t,n){var o;!function(i,s){"use strict";var l="function",c="undefined",u="object",d="string",p="major",f="model",m="name",g="type",b="vendor",y="version",v="architecture",w="console",C="mobile",E="tablet",x="smarttv",A="wearable",k="embedded",B="Amazon",S="Apple",I="ASUS",j="BlackBerry",T="Browser",P="Chrome",M="Firefox",O="Google",R="Huawei",U="Microsoft",F="Motorola",N="Opera",D="Samsung",_="Sharp",L="Sony",z="Xiaomi",q="Zebra",G="Facebook",W="Chromium OS",H="Mac OS",extend=function(e,t){var n={};for(var o in e)t[o]&&t[o].length%2==0?n[o]=t[o].concat(e[o]):n[o]=e[o];return n},enumerize=function(e){for(var t={},n=0;n0?2===c.length?typeof c[1]==l?this[c[0]]=c[1].call(this,p):this[c[0]]=c[1]:3===c.length?typeof c[1]!==l||c[1].exec&&c[1].test?this[c[0]]=p?p.replace(c[1],c[2]):s:this[c[0]]=p?c[1].call(this,p,c[2]):s:4===c.length&&(this[c[0]]=p?c[3].call(this,p.replace(c[1],c[2])):s):this[c]=p||s;f+=2}},strMapper=function(e,t){for(var n in t)if(typeof t[n]===u&&t[n].length>0){for(var o=0;o2&&(e[f]="iPad",e[g]=E),e},this.getEngine=function(){var e={};return e[m]=s,e[y]=s,rgxMapper.call(e,o,x.engine),e},this.getOS=function(){var e={};return e[m]=s,e[y]=s,rgxMapper.call(e,o,x.os),A&&!e[m]&&w&&"Unknown"!=w.platform&&(e[m]=w.platform.replace(/chrome os/i,W).replace(/macos/i,H)),e},this.getResult=function(){return{ua:this.getUA(),browser:this.getBrowser(),engine:this.getEngine(),os:this.getOS(),device:this.getDevice(),cpu:this.getCPU()}},this.getUA=function(){return o},this.setUA=function(e){return o=typeof e===d&&e.length>500?trim(e,500):e,this},this.setUA(o),this};UAParser.VERSION="1.0.37",UAParser.BROWSER=enumerize([m,y,p]),UAParser.CPU=enumerize([v]),UAParser.DEVICE=enumerize([f,b,g,w,C,x,E,A,k]),UAParser.ENGINE=UAParser.OS=enumerize([m,y]),typeof t!==c?(e.exports&&(t=e.exports=UAParser),t.UAParser=UAParser):n.amdO?s!==(o=(function(){return UAParser}).call(t,n,t,e))&&(e.exports=o):typeof i!==c&&(i.UAParser=UAParser);var V=typeof i!==c&&(i.jQuery||i.Zepto);if(V&&!V.ua){var Z=new UAParser;V.ua=Z.getResult(),V.ua.get=function(){return Z.getUA()},V.ua.set=function(e){Z.setUA(e);var t=Z.getResult();for(var n in t)V.ua[n]=t[n]}}}("object"==typeof window?window:this)},53250:function(e,t,n){"use strict";/** * @license React * use-sync-external-store-shim.production.min.js * @@ -14,7 +14,7 @@ * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. - */var o=n(67294),i=n(61688),s="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},l=i.useSyncExternalStore,c=o.useRef,u=o.useEffect,d=o.useMemo,p=o.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,o,i){var f=c(null);if(null===f.current){var m={hasValue:!1,value:null};f.current=m}else m=f.current;var b=l(e,(f=d(function(){function a(t){if(!c){if(c=!0,e=t,t=o(t),void 0!==i&&m.hasValue){var n=m.value;if(i(n,t))return l=n}return l=t}if(n=l,s(e,t))return n;var u=o(t);return void 0!==i&&i(n,u)?n:(e=t,l=u)}var e,l,c=!1,u=void 0===n?null:n;return[function(){return a(t())},null===u?void 0:function(){return a(u())}]},[t,n,o,i]))[0],f[1]);return u(function(){m.hasValue=!0,m.value=b},[b]),p(b),b}},61688:function(e,t,n){"use strict";e.exports=n(53250)},52798:function(e,t,n){"use strict";e.exports=n(50139)},27061:function(e){var t,n,o,i=e.exports={};function defaultSetTimout(){throw Error("setTimeout has not been defined")}function defaultClearTimeout(){throw Error("clearTimeout has not been defined")}function runTimeout(e){if(t===setTimeout)return setTimeout(e,0);if((t===defaultSetTimout||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){t=defaultSetTimout}try{n="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){n=defaultClearTimeout}}();var s=[],l=!1,c=-1;function cleanUpNextTick(){l&&o&&(l=!1,o.length?s=o.concat(s):c=-1,s.length&&drainQueue())}function drainQueue(){if(!l){var e=runTimeout(cleanUpNextTick);l=!0;for(var t=s.length;t;){for(o=s,s=[];++c1)for(var n=1;ne instanceof Uint8Array,s=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function bytesToHex(e){if(!u8a(e))throw Error("Uint8Array expected");let t="";for(let n=0;ne+t.length,0)),n=0;return e.forEach(e=>{if(!u8a(e))throw Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}function equalBytes(e,t){if(e.length!==t.length)return!1;for(let n=0;n(i<new Uint8Array(e),u8fr=e=>Uint8Array.from(e);function createHmacDrbg(e,t,n){if("number"!=typeof e||e<2)throw Error("hashLen must be a number");if("number"!=typeof t||t<2)throw Error("qByteLen must be a number");if("function"!=typeof n)throw Error("hmacFn must be a function");let o=u8n(e),i=u8n(e),s=0,reset=()=>{o.fill(1),i.fill(0),s=0},h=(...e)=>n(i,o,...e),reseed=(e=u8n())=>{i=h(u8fr([0]),e),o=h(),0!==e.length&&(i=h(u8fr([1]),e),o=h())},gen=()=>{if(s++>=1e3)throw Error("drbg: tried 1000 values");let e=0,n=[];for(;e{let n;for(reset(),reseed(e);!(n=t(gen()));)reseed();return reset(),n}}let l={bigint:e=>"bigint"==typeof e,function:e=>"function"==typeof e,boolean:e=>"boolean"==typeof e,string:e=>"string"==typeof e,stringOrUint8Array:e=>"string"==typeof e||e instanceof Uint8Array,isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>"function"==typeof e&&Number.isSafeInteger(e.outputLen)};function validateObject(e,t,n={}){let checkField=(t,n,o)=>{let i=l[n];if("function"!=typeof i)throw Error(`Invalid validator "${n}", expected function`);let s=e[t];if((!o||void 0!==s)&&!i(s,e))throw Error(`Invalid param ${String(t)}=${s} (${typeof s}), expected ${n}`)};for(let[e,n]of Object.entries(t))checkField(e,n,!1);for(let[e,t]of Object.entries(n))checkField(e,t,!0);return e}},93527:function(e,t,n){"use strict";function number(e){if(!Number.isSafeInteger(e)||e<0)throw Error(`Wrong positive integer: ${e}`)}function bytes(e,...t){if(!(e instanceof Uint8Array))throw Error("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}function hash(e){if("function"!=typeof e||"function"!=typeof e.create)throw Error("Hash should be wrapped by utils.wrapConstructor");number(e.outputLen),number(e.blockLen)}function exists(e,t=!0){if(e.destroyed)throw Error("Hash instance has been destroyed");if(t&&e.finished)throw Error("Hash#digest() has already been called")}function output(e,t){bytes(e);let n=t.outputLen;if(e.lengths-c&&(this.process(n,0),c=0);for(let e=c;e>i&s),c=Number(n&s),u=o?4:0,d=o?0:4;e.setUint32(t+u,l,o),e.setUint32(t+d,c,o)}(n,s-8,BigInt(8*this.length),l),this.process(n,0);let u=(0,i.GL)(e),d=this.outputLen;if(d%4)throw Error("_sha2: outputLen should be aligned to 32bit");let p=d/4,f=this.get();if(p>f.length)throw Error("_sha2: outputLen bigger than state");for(let e=0;ee&t^~e&n,Maj=(e,t,n)=>e&t^e&n^t&n,s=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),l=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),c=new Uint32Array(64);let SHA256=class SHA256 extends SHA2{constructor(){super(64,32,8,!1),this.A=0|l[0],this.B=0|l[1],this.C=0|l[2],this.D=0|l[3],this.E=0|l[4],this.F=0|l[5],this.G=0|l[6],this.H=0|l[7]}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:l,H:c}=this;return[e,t,n,o,i,s,l,c]}set(e,t,n,o,i,s,l,c){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|o,this.E=0|i,this.F=0|s,this.G=0|l,this.H=0|c}process(e,t){for(let n=0;n<16;n++,t+=4)c[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=c[e-15],n=c[e-2],o=(0,i.np)(t,7)^(0,i.np)(t,18)^t>>>3,s=(0,i.np)(n,17)^(0,i.np)(n,19)^n>>>10;c[e]=s+c[e-7]+o+c[e-16]|0}let{A:n,B:o,C:l,D:u,E:d,F:p,G:f,H:m}=this;for(let e=0;e<64;e++){let t=(0,i.np)(d,6)^(0,i.np)(d,11)^(0,i.np)(d,25),b=m+t+Chi(d,p,f)+s[e]+c[e]|0,g=(0,i.np)(n,2)^(0,i.np)(n,13)^(0,i.np)(n,22),y=g+Maj(n,o,l)|0;m=f,f=p,p=d,d=u+b|0,u=l,l=o,o=n,n=b+y|0}n=n+this.A|0,o=o+this.B|0,l=l+this.C|0,u=u+this.D|0,d=d+this.E|0,p=p+this.F|0,f=f+this.G|0,m=m+this.H|0,this.set(n,o,l,u,d,p,f,m)}roundClean(){c.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};let u=(0,i.hE)(()=>new SHA256)},22250:function(e,t,n){"use strict";n.d(t,{fr:function(){return C}});var o=n(93527);let i=BigInt(4294967296-1),s=BigInt(32),rotlSH=(e,t,n)=>e<>>32-n,rotlSL=(e,t,n)=>t<>>32-n,rotlBH=(e,t,n)=>t<>>64-n,rotlBL=(e,t,n)=>e<>>64-n;var l=n(66409);let[c,u,d]=[[],[],[]],p=BigInt(0),f=BigInt(1),m=BigInt(2),b=BigInt(7),g=BigInt(256),y=BigInt(113);for(let e=0,t=f,n=1,o=0;e<24;e++){[n,o]=[o,(2*n+3*o)%5],c.push(2*(5*o+n)),u.push((e+1)*(e+2)/2%64);let i=p;for(let e=0;e<7;e++)(t=(t<>b)*y)%g)&m&&(i^=f<<(f<>s&i)}:{h:0|Number(e>>s&i),l:0|Number(e&i)}}(e[l],t);[n[l],o[l]]=[c,u]}return[n,o]}(d,!0),rotlH=(e,t,n)=>n>32?rotlBH(e,t,n):rotlSH(e,t,n),rotlL=(e,t,n)=>n>32?rotlBL(e,t,n):rotlSL(e,t,n);let Keccak=class Keccak extends l.kb{constructor(e,t,n,i=!1,s=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=i,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,o.Rx)(n),0>=this.blockLen||this.blockLen>=200)throw Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,l.Jq)(this.state)}keccak(){!function(e,t=24){let n=new Uint32Array(10);for(let o=24-t;o<24;o++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let o=(t+8)%10,i=(t+2)%10,s=n[i],l=n[i+1],c=rotlH(s,l,1)^n[o],u=rotlL(s,l,1)^n[o+1];for(let n=0;n<50;n+=10)e[t+n]^=c,e[t+n+1]^=u}let t=e[2],i=e[3];for(let n=0;n<24;n++){let o=u[n],s=rotlH(t,i,o),l=rotlL(t,i,o),d=c[n];t=e[d],i=e[d+1],e[d]=s,e[d+1]=l}for(let t=0;t<50;t+=10){for(let o=0;o<10;o++)n[o]=e[t+o];for(let o=0;o<10;o++)e[t+o]^=~n[(o+2)%10]&n[(o+4)%10]}e[0]^=v[o],e[1]^=w[o]}n.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(e){(0,o.Gg)(this);let{blockLen:t,state:n}=this;e=(0,l.O0)(e);let i=e.length;for(let o=0;o=n&&this.keccak();let s=Math.min(n-this.posOut,i-o);e.set(t.subarray(this.posOut,this.posOut+s),o),this.posOut+=s,o+=s}return e}xofInto(e){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return(0,o.Rx)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,o.J8)(e,this),this.finished)throw Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){let{blockLen:t,suffix:n,outputLen:o,rounds:i,enableXOF:s}=this;return e||(e=new Keccak(t,n,o,s,i)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=i,e.suffix=n,e.outputLen=o,e.enableXOF=s,e.destroyed=this.destroyed,e}};let C=(0,l.hE)(()=>new Keccak(136,1,32))},66409:function(e,t,n){"use strict";n.d(t,{kb:function(){return Hash},eV:function(){return concatBytes},GL:function(){return createView},O6:function(){return randomBytes},np:function(){return rotr},O0:function(){return toBytes},Jq:function(){return u32},hE:function(){return wrapConstructor}});let o="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,u8a=e=>e instanceof Uint8Array,u32=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),createView=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),rotr=(e,t)=>e<<32-t|e>>>t,i=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0];if(!i)throw Error("Non little-endian hardware is not supported");function toBytes(e){if("string"==typeof e&&(e=function(e){if("string"!=typeof e)throw Error(`utf8ToBytes expected string, got ${typeof e}`);return new Uint8Array(new TextEncoder().encode(e))}(e)),!u8a(e))throw Error(`expected Uint8Array, got ${typeof e}`);return e}function concatBytes(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;return e.forEach(e=>{if(!u8a(e))throw Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}let Hash=class Hash{clone(){return this._cloneInto()}};function wrapConstructor(e){let hashC=t=>e().update(toBytes(t)).digest(),t=e();return hashC.outputLen=t.outputLen,hashC.blockLen=t.blockLen,hashC.create=()=>e(),hashC}function randomBytes(e=32){if(o&&"function"==typeof o.getRandomValues)return o.getRandomValues(new Uint8Array(e));throw Error("crypto.getRandomValues must be defined")}},93763:function(e,t,n){"use strict";n.d(t,{I:function(){return o}});var o=`{ + */var o=n(67294),i=n(61688),s="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},l=i.useSyncExternalStore,c=o.useRef,u=o.useEffect,d=o.useMemo,p=o.useDebugValue;t.useSyncExternalStoreWithSelector=function(e,t,n,o,i){var f=c(null);if(null===f.current){var m={hasValue:!1,value:null};f.current=m}else m=f.current;var g=l(e,(f=d(function(){function a(t){if(!c){if(c=!0,e=t,t=o(t),void 0!==i&&m.hasValue){var n=m.value;if(i(n,t))return l=n}return l=t}if(n=l,s(e,t))return n;var u=o(t);return void 0!==i&&i(n,u)?n:(e=t,l=u)}var e,l,c=!1,u=void 0===n?null:n;return[function(){return a(t())},null===u?void 0:function(){return a(u())}]},[t,n,o,i]))[0],f[1]);return u(function(){m.hasValue=!0,m.value=g},[g]),p(g),g}},61688:function(e,t,n){"use strict";e.exports=n(53250)},52798:function(e,t,n){"use strict";e.exports=n(50139)},27061:function(e){var t,n,o,i=e.exports={};function defaultSetTimout(){throw Error("setTimeout has not been defined")}function defaultClearTimeout(){throw Error("clearTimeout has not been defined")}function runTimeout(e){if(t===setTimeout)return setTimeout(e,0);if((t===defaultSetTimout||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(n){try{return t.call(null,e,0)}catch(n){return t.call(this,e,0)}}}!function(){try{t="function"==typeof setTimeout?setTimeout:defaultSetTimout}catch(e){t=defaultSetTimout}try{n="function"==typeof clearTimeout?clearTimeout:defaultClearTimeout}catch(e){n=defaultClearTimeout}}();var s=[],l=!1,c=-1;function cleanUpNextTick(){l&&o&&(l=!1,o.length?s=o.concat(s):c=-1,s.length&&drainQueue())}function drainQueue(){if(!l){var e=runTimeout(cleanUpNextTick);l=!0;for(var t=s.length;t;){for(o=s,s=[];++c1)for(var n=1;ne instanceof Uint8Array,s=Array.from({length:256},(e,t)=>t.toString(16).padStart(2,"0"));function bytesToHex(e){if(!u8a(e))throw Error("Uint8Array expected");let t="";for(let n=0;ne+t.length,0)),n=0;return e.forEach(e=>{if(!u8a(e))throw Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}function equalBytes(e,t){if(e.length!==t.length)return!1;for(let n=0;n(i<new Uint8Array(e),u8fr=e=>Uint8Array.from(e);function createHmacDrbg(e,t,n){if("number"!=typeof e||e<2)throw Error("hashLen must be a number");if("number"!=typeof t||t<2)throw Error("qByteLen must be a number");if("function"!=typeof n)throw Error("hmacFn must be a function");let o=u8n(e),i=u8n(e),s=0,reset=()=>{o.fill(1),i.fill(0),s=0},h=(...e)=>n(i,o,...e),reseed=(e=u8n())=>{i=h(u8fr([0]),e),o=h(),0!==e.length&&(i=h(u8fr([1]),e),o=h())},gen=()=>{if(s++>=1e3)throw Error("drbg: tried 1000 values");let e=0,n=[];for(;e{let n;for(reset(),reseed(e);!(n=t(gen()));)reseed();return reset(),n}}let l={bigint:e=>"bigint"==typeof e,function:e=>"function"==typeof e,boolean:e=>"boolean"==typeof e,string:e=>"string"==typeof e,stringOrUint8Array:e=>"string"==typeof e||e instanceof Uint8Array,isSafeInteger:e=>Number.isSafeInteger(e),array:e=>Array.isArray(e),field:(e,t)=>t.Fp.isValid(e),hash:e=>"function"==typeof e&&Number.isSafeInteger(e.outputLen)};function validateObject(e,t,n={}){let checkField=(t,n,o)=>{let i=l[n];if("function"!=typeof i)throw Error(`Invalid validator "${n}", expected function`);let s=e[t];if((!o||void 0!==s)&&!i(s,e))throw Error(`Invalid param ${String(t)}=${s} (${typeof s}), expected ${n}`)};for(let[e,n]of Object.entries(t))checkField(e,n,!1);for(let[e,t]of Object.entries(n))checkField(e,t,!0);return e}},93527:function(e,t,n){"use strict";function number(e){if(!Number.isSafeInteger(e)||e<0)throw Error(`Wrong positive integer: ${e}`)}function bytes(e,...t){if(!(e instanceof Uint8Array))throw Error("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw Error(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}function hash(e){if("function"!=typeof e||"function"!=typeof e.create)throw Error("Hash should be wrapped by utils.wrapConstructor");number(e.outputLen),number(e.blockLen)}function exists(e,t=!0){if(e.destroyed)throw Error("Hash instance has been destroyed");if(t&&e.finished)throw Error("Hash#digest() has already been called")}function output(e,t){bytes(e);let n=t.outputLen;if(e.lengths-c&&(this.process(n,0),c=0);for(let e=c;e>i&s),c=Number(n&s),u=o?4:0,d=o?0:4;e.setUint32(t+u,l,o),e.setUint32(t+d,c,o)}(n,s-8,BigInt(8*this.length),l),this.process(n,0);let u=(0,i.GL)(e),d=this.outputLen;if(d%4)throw Error("_sha2: outputLen should be aligned to 32bit");let p=d/4,f=this.get();if(p>f.length)throw Error("_sha2: outputLen bigger than state");for(let e=0;ee&t^~e&n,Maj=(e,t,n)=>e&t^e&n^t&n,s=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),l=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),c=new Uint32Array(64);let SHA256=class SHA256 extends SHA2{constructor(){super(64,32,8,!1),this.A=0|l[0],this.B=0|l[1],this.C=0|l[2],this.D=0|l[3],this.E=0|l[4],this.F=0|l[5],this.G=0|l[6],this.H=0|l[7]}get(){let{A:e,B:t,C:n,D:o,E:i,F:s,G:l,H:c}=this;return[e,t,n,o,i,s,l,c]}set(e,t,n,o,i,s,l,c){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|o,this.E=0|i,this.F=0|s,this.G=0|l,this.H=0|c}process(e,t){for(let n=0;n<16;n++,t+=4)c[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){let t=c[e-15],n=c[e-2],o=(0,i.np)(t,7)^(0,i.np)(t,18)^t>>>3,s=(0,i.np)(n,17)^(0,i.np)(n,19)^n>>>10;c[e]=s+c[e-7]+o+c[e-16]|0}let{A:n,B:o,C:l,D:u,E:d,F:p,G:f,H:m}=this;for(let e=0;e<64;e++){let t=(0,i.np)(d,6)^(0,i.np)(d,11)^(0,i.np)(d,25),g=m+t+Chi(d,p,f)+s[e]+c[e]|0,b=(0,i.np)(n,2)^(0,i.np)(n,13)^(0,i.np)(n,22),y=b+Maj(n,o,l)|0;m=f,f=p,p=d,d=u+g|0,u=l,l=o,o=n,n=g+y|0}n=n+this.A|0,o=o+this.B|0,l=l+this.C|0,u=u+this.D|0,d=d+this.E|0,p=p+this.F|0,f=f+this.G|0,m=m+this.H|0,this.set(n,o,l,u,d,p,f,m)}roundClean(){c.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}};let u=(0,i.hE)(()=>new SHA256)},22250:function(e,t,n){"use strict";n.d(t,{fr:function(){return C}});var o=n(93527);let i=BigInt(4294967296-1),s=BigInt(32),rotlSH=(e,t,n)=>e<>>32-n,rotlSL=(e,t,n)=>t<>>32-n,rotlBH=(e,t,n)=>t<>>64-n,rotlBL=(e,t,n)=>e<>>64-n;var l=n(66409);let[c,u,d]=[[],[],[]],p=BigInt(0),f=BigInt(1),m=BigInt(2),g=BigInt(7),b=BigInt(256),y=BigInt(113);for(let e=0,t=f,n=1,o=0;e<24;e++){[n,o]=[o,(2*n+3*o)%5],c.push(2*(5*o+n)),u.push((e+1)*(e+2)/2%64);let i=p;for(let e=0;e<7;e++)(t=(t<>g)*y)%b)&m&&(i^=f<<(f<>s&i)}:{h:0|Number(e>>s&i),l:0|Number(e&i)}}(e[l],t);[n[l],o[l]]=[c,u]}return[n,o]}(d,!0),rotlH=(e,t,n)=>n>32?rotlBH(e,t,n):rotlSH(e,t,n),rotlL=(e,t,n)=>n>32?rotlBL(e,t,n):rotlSL(e,t,n);let Keccak=class Keccak extends l.kb{constructor(e,t,n,i=!1,s=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=i,this.rounds=s,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,(0,o.Rx)(n),0>=this.blockLen||this.blockLen>=200)throw Error("Sha3 supports only keccak-f1600 function");this.state=new Uint8Array(200),this.state32=(0,l.Jq)(this.state)}keccak(){!function(e,t=24){let n=new Uint32Array(10);for(let o=24-t;o<24;o++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){let o=(t+8)%10,i=(t+2)%10,s=n[i],l=n[i+1],c=rotlH(s,l,1)^n[o],u=rotlL(s,l,1)^n[o+1];for(let n=0;n<50;n+=10)e[t+n]^=c,e[t+n+1]^=u}let t=e[2],i=e[3];for(let n=0;n<24;n++){let o=u[n],s=rotlH(t,i,o),l=rotlL(t,i,o),d=c[n];t=e[d],i=e[d+1],e[d]=s,e[d+1]=l}for(let t=0;t<50;t+=10){for(let o=0;o<10;o++)n[o]=e[t+o];for(let o=0;o<10;o++)e[t+o]^=~n[(o+2)%10]&n[(o+4)%10]}e[0]^=v[o],e[1]^=w[o]}n.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(e){(0,o.Gg)(this);let{blockLen:t,state:n}=this;e=(0,l.O0)(e);let i=e.length;for(let o=0;o=n&&this.keccak();let s=Math.min(n-this.posOut,i-o);e.set(t.subarray(this.posOut,this.posOut+s),o),this.posOut+=s,o+=s}return e}xofInto(e){if(!this.enableXOF)throw Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return(0,o.Rx)(e),this.xofInto(new Uint8Array(e))}digestInto(e){if((0,o.J8)(e,this),this.finished)throw Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){let{blockLen:t,suffix:n,outputLen:o,rounds:i,enableXOF:s}=this;return e||(e=new Keccak(t,n,o,s,i)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=i,e.suffix=n,e.outputLen=o,e.enableXOF=s,e.destroyed=this.destroyed,e}};let C=(0,l.hE)(()=>new Keccak(136,1,32))},66409:function(e,t,n){"use strict";n.d(t,{kb:function(){return Hash},eV:function(){return concatBytes},GL:function(){return createView},O6:function(){return randomBytes},np:function(){return rotr},O0:function(){return toBytes},Jq:function(){return u32},hE:function(){return wrapConstructor}});let o="object"==typeof globalThis&&"crypto"in globalThis?globalThis.crypto:void 0,u8a=e=>e instanceof Uint8Array,u32=e=>new Uint32Array(e.buffer,e.byteOffset,Math.floor(e.byteLength/4)),createView=e=>new DataView(e.buffer,e.byteOffset,e.byteLength),rotr=(e,t)=>e<<32-t|e>>>t,i=68===new Uint8Array(new Uint32Array([287454020]).buffer)[0];if(!i)throw Error("Non little-endian hardware is not supported");function toBytes(e){if("string"==typeof e&&(e=function(e){if("string"!=typeof e)throw Error(`utf8ToBytes expected string, got ${typeof e}`);return new Uint8Array(new TextEncoder().encode(e))}(e)),!u8a(e))throw Error(`expected Uint8Array, got ${typeof e}`);return e}function concatBytes(...e){let t=new Uint8Array(e.reduce((e,t)=>e+t.length,0)),n=0;return e.forEach(e=>{if(!u8a(e))throw Error("Uint8Array expected");t.set(e,n),n+=e.length}),t}let Hash=class Hash{clone(){return this._cloneInto()}};function wrapConstructor(e){let hashC=t=>e().update(toBytes(t)).digest(),t=e();return hashC.outputLen=t.outputLen,hashC.blockLen=t.blockLen,hashC.create=()=>e(),hashC}function randomBytes(e=32){if(o&&"function"==typeof o.getRandomValues)return o.getRandomValues(new Uint8Array(e));throw Error("crypto.getRandomValues must be defined")}},93763:function(e,t,n){"use strict";n.d(t,{I:function(){return o}});var o=`{ "connect_wallet": { "label": "Connect Wallet", "wrong_network": { @@ -1124,8 +1124,8 @@ } } } -`},89192:function(e,t,n){"use strict";let o,i,s,l,c,u,d,p,f,m,b,g,y,v,w,C,E;n.d(t,{NL:function(){return ConnectButton},pj:function(){return RainbowKitProvider},vX:function(){return getDefaultConfig}});var x,A,k,B,S,I,j,T,P='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',M={rounded:`SFRounded, ui-rounded, "SF Pro Rounded", ${P}`,system:P},O={large:{actionButton:"9999px",connectButton:"12px",modal:"24px",modalMobile:"28px"},medium:{actionButton:"10px",connectButton:"8px",modal:"16px",modalMobile:"18px"},none:{actionButton:"0px",connectButton:"0px",modal:"0px",modalMobile:"0px"},small:{actionButton:"4px",connectButton:"4px",modal:"8px",modalMobile:"8px"}},R={large:{modalOverlay:"blur(20px)"},none:{modalOverlay:"blur(0px)"},small:{modalOverlay:"blur(4px)"}},baseTheme=({borderRadius:e="large",fontStack:t="rounded",overlayBlur:n="none"})=>({blurs:{modalOverlay:R[n].modalOverlay},fonts:{body:M[t]},radii:{actionButton:O[e].actionButton,connectButton:O[e].connectButton,menuButton:O[e].connectButton,modal:O[e].modal,modalMobile:O[e].modalMobile}}),U={blue:{accentColor:"#0E76FD",accentColorForeground:"#FFF"},green:{accentColor:"#1DB847",accentColorForeground:"#FFF"},orange:{accentColor:"#FF801F",accentColorForeground:"#FFF"},pink:{accentColor:"#FF5CA0",accentColorForeground:"#FFF"},purple:{accentColor:"#5F5AFA",accentColorForeground:"#FFF"},red:{accentColor:"#FA423C",accentColorForeground:"#FFF"}},F=U.blue,lightTheme=({accentColor:e=F.accentColor,accentColorForeground:t=F.accentColorForeground,...n}={})=>({...baseTheme(n),colors:{accentColor:e,accentColorForeground:t,actionButtonBorder:"rgba(0, 0, 0, 0.04)",actionButtonBorderMobile:"rgba(0, 0, 0, 0.06)",actionButtonSecondaryBackground:"rgba(0, 0, 0, 0.06)",closeButton:"rgba(60, 66, 66, 0.8)",closeButtonBackground:"rgba(0, 0, 0, 0.06)",connectButtonBackground:"#FFF",connectButtonBackgroundError:"#FF494A",connectButtonInnerBackground:"linear-gradient(0deg, rgba(0, 0, 0, 0.03), rgba(0, 0, 0, 0.06))",connectButtonText:"#25292E",connectButtonTextError:"#FFF",connectionIndicator:"#30E000",downloadBottomCardBackground:"linear-gradient(126deg, rgba(255, 255, 255, 0) 9.49%, rgba(171, 171, 171, 0.04) 71.04%), #FFFFFF",downloadTopCardBackground:"linear-gradient(126deg, rgba(171, 171, 171, 0.2) 9.49%, rgba(255, 255, 255, 0) 71.04%), #FFFFFF",error:"#FF494A",generalBorder:"rgba(0, 0, 0, 0.06)",generalBorderDim:"rgba(0, 0, 0, 0.03)",menuItemBackground:"rgba(60, 66, 66, 0.1)",modalBackdrop:"rgba(0, 0, 0, 0.3)",modalBackground:"#FFF",modalBorder:"transparent",modalText:"#25292E",modalTextDim:"rgba(60, 66, 66, 0.3)",modalTextSecondary:"rgba(60, 66, 66, 0.6)",profileAction:"#FFF",profileActionHover:"rgba(255, 255, 255, 0.5)",profileForeground:"rgba(60, 66, 66, 0.06)",selectedOptionBorder:"rgba(60, 66, 66, 0.1)",standby:"#FFD641"},shadows:{connectButton:"0px 4px 12px rgba(0, 0, 0, 0.1)",dialog:"0px 8px 32px rgba(0, 0, 0, 0.32)",profileDetailsAction:"0px 2px 6px rgba(37, 41, 46, 0.04)",selectedOption:"0px 2px 6px rgba(0, 0, 0, 0.24)",selectedWallet:"0px 2px 6px rgba(0, 0, 0, 0.12)",walletLogo:"0px 2px 16px rgba(0, 0, 0, 0.16)"}});lightTheme.accentColors=U;var N=n(93763),D=n(67294),addRecipe=function(e,t){return Object.defineProperty(e,"__recipe__",{value:t,writable:!1}),e};function createNormalizeValueFn(e){var{conditions:t}=e;if(!t)throw Error("Styles have no conditions");return addRecipe(function(e){if("string"==typeof e||"number"==typeof e||"boolean"==typeof e){if(!t.defaultCondition)throw Error("No default condition");return{[t.defaultCondition]:e}}if(Array.isArray(e)){if(!("responsiveArray"in t))throw Error("Responsive arrays are not supported");var n={};for(var o in t.responsiveArray)null!=e[o]&&(n[t.responsiveArray[o]]=e[o]);return n}return e},{importPath:"@vanilla-extract/sprinkles/createUtils",importName:"createNormalizeValueFn",args:[{conditions:e.conditions}]})}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function _objectSpread2(e){for(var t=1;tfunction(){for(var t=arguments.length,n=Array(t),o=0;oe.styles)),s=Object.keys(i),l=s.filter(e=>"mappings"in i[e]);return Object.assign(t=>{var n=[],o={},s=_objectSpread2({},t),c=!1;for(var u of l){var d=t[u];if(null!=d)for(var p of(c=!0,i[u].mappings))o[p]=d,null==s[p]&&delete s[p]}var f=c?_objectSpread2(_objectSpread2({},o),s):t;for(var m in f)if("continue"===function(){var e=f[m],t=i[m];try{if(t.mappings)return"continue";if("string"==typeof e||"number"==typeof e)n.push(t.values[e].defaultClass);else if(Array.isArray(e))for(var o=0;oe,_=n(92321),L=n(90512),z=n(37122),q=n(97405),G=n(95946),W=n(61836),H=n(15229),Q=n(92106);async function getBalance(e,{address:t,blockNumber:n,blockTag:o="latest"}){let i=n?(0,Q.eC)(n):void 0,s=await e.request({method:"eth_getBalance",params:[t,i||o]});return BigInt(s)}var K=n(81946),V=n(84192);function getUnit(e){return"number"==typeof e?e:"wei"===e?0:Math.abs(V.Bd[e])}var Z=n(16693),J=n(57412),X=n(62027),Y=n(7210),$=n(55629),ee=n(47864),et=n(39028);function getContractError(e,{abi:t,address:n,args:o,docsPath:i,functionName:s,sender:l}){let{code:c,data:u,message:d,shortMessage:p}=e instanceof q.VQ?e:e instanceof X.G?e.walk(e=>"data"in e)||e.walk():{},f=e instanceof J.wb?new q.Dk({functionName:s}):[3,et.XS.code].includes(c)&&(u||d||p)?new q.Lu({abi:t,data:"object"==typeof u?u.data:u,functionName:s,message:p??d}):e;return new q.uq(f,{abi:t,args:o,contractAddress:n,docsPath:i,functionName:s,sender:l})}function getAction_getAction(e,t,n){return o=>e[t.name||n]?.(o)??t(e,o)}var er=n(61376);async function readContract(e,t){let{abi:n,address:o,args:i,functionName:s,...l}=t,c=(0,$.R)({abi:n,args:i,functionName:s});try{let{data:t}=await getAction_getAction(e,er.RE,"call")({...l,data:c,to:o});return(0,Y.k)({abi:n,args:i,functionName:s,data:t||"0x"})}catch(e){throw getContractError(e,{abi:n,address:o,args:i,docsPath:"/docs/contract/readContract",functionName:s})}}async function multicall(e,t){let{allowFailure:n=!0,batchSize:o,blockNumber:i,blockTag:s,multicallAddress:l,stateOverride:c}=t,u=t.contracts,d=o??("object"==typeof e.batch?.multicall&&e.batch.multicall.batchSize||1024),p=l;if(!p){if(!e.chain)throw Error("client chain not configured. multicallAddress is required.");p=(0,ee.L)({blockNumber:i,chain:e.chain,contract:"multicall3"})}let f=[[]],m=0,b=0;for(let e=0;e0&&b>d&&f[m].length>0&&(m++,b=(e.length-2)/2,f[m]=[]),f[m]=[...f[m],{allowFailure:!0,callData:e,target:o}]}catch(l){let e=getContractError(l,{abi:t,address:o,args:i,docsPath:"/docs/contract/multicall",functionName:s});if(!n)throw e;f[m]=[...f[m],{allowFailure:!0,callData:"0x",target:o}]}}let g=await Promise.allSettled(f.map(t=>getAction_getAction(e,readContract,"readContract")({abi:Z.F8,address:p,args:[t],blockNumber:i,blockTag:s,functionName:"aggregate3",stateOverride:c}))),y=[];for(let e=0;e{let i=n.chainId??e.state.chainId;return{...t,[i]:[...t[i]||[],{contract:n,index:o}]}},{}),c=(await Promise.all(Object.entries(t).map(([t,l])=>multicall_multicall(e,{...s,allowFailure:n,blockNumber:o,blockTag:i,chainId:parseInt(t),contracts:l.map(({contract:e})=>e)})))).flat(),u=Object.values(t).flatMap(e=>e.map(({index:e})=>e));return c.reduce((e,t,n)=>(e&&(e[u[n]]=t),e),[])}catch(t){if(t instanceof q.uq)throw t;let promises=()=>l.map(t=>(function(e,t){let{chainId:n,...o}=t,i=e.getClient({chainId:n}),s=(0,K.s)(i,readContract,"readContract");return s(o)})(e,{...t,blockNumber:o,blockTag:i}));if(n)return(await Promise.allSettled(promises())).map(e=>"fulfilled"===e.status?{result:e.value,status:"success"}:{error:e.reason,result:void 0,status:"failure"});return await Promise.all(promises())}}async function getBalance_getBalance(e,t){let{address:n,blockNumber:o,blockTag:i,chainId:s,token:l,unit:c="ether"}=t;if(l)try{return getTokenBalance(e,{balanceAddress:n,chainId:s,symbolType:"string",tokenAddress:l})}catch(t){if(t instanceof q.uq){let t=await getTokenBalance(e,{balanceAddress:n,chainId:s,symbolType:"bytes32",tokenAddress:l}),o=(0,G.rR)((0,W.f)(t.symbol,{dir:"right"}));return{...t,symbol:o}}throw t}let u=e.getClient({chainId:s}),d=(0,K.s)(u,getBalance,"getBalance"),p=await d(o?{address:n,blockNumber:o}:{address:n,blockTag:i}),f=e.chains.find(e=>e.id===s)??u.chain;return{decimals:f.nativeCurrency.decimals,formatted:(0,H.b)(p,getUnit(c)),symbol:f.nativeCurrency.symbol,value:p}}async function getTokenBalance(e,t){let{balanceAddress:n,chainId:o,symbolType:i,tokenAddress:s,unit:l}=t,c={abi:[{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{type:"uint8"}]},{type:"function",name:"symbol",stateMutability:"view",inputs:[],outputs:[{type:i}]}],address:s},[u,d,p]=await readContracts(e,{allowFailure:!1,contracts:[{...c,functionName:"balanceOf",args:[n],chainId:o},{...c,functionName:"decimals",chainId:o},{...c,functionName:"symbol",chainId:o}]}),f=(0,H.b)(u??"0",getUnit(l??d));return{decimals:d,formatted:f,symbol:p,value:u}}function utils_hashFn(e){return JSON.stringify(e,(e,t)=>!function(e){if(!hasObjectPrototype(e))return!1;let t=e.constructor;if(void 0===t)return!0;let n=t.prototype;return!!(hasObjectPrototype(n)&&n.hasOwnProperty("isPrototypeOf"))}(t)?"bigint"==typeof t?t.toString():t:Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}))}function hasObjectPrototype(e){return"[object Object]"===Object.prototype.toString.call(e)}function filterQueryOptions(e){let{_defaulted:t,behavior:n,gcTime:o,initialData:i,initialDataUpdatedAt:s,maxPages:l,meta:c,networkMode:u,queryFn:d,queryHash:p,queryKey:f,queryKeyHashFn:m,retry:b,retryDelay:g,structuralSharing:y,getPreviousPageParam:v,getNextPageParam:w,initialPageParam:C,_optimisticResults:E,enabled:x,notifyOnChangeProps:A,placeholderData:k,refetchInterval:B,refetchIntervalInBackground:S,refetchOnMount:I,refetchOnReconnect:j,refetchOnWindowFocus:T,retryOnMount:P,select:M,staleTime:O,suspense:R,throwOnError:U,config:F,connector:N,query:D,..._}=e;return _}var en=n(24139),ea=n(27037),eo=n(66474),ei=n(7506),es=n(56888),el=class extends ei.l{constructor(e,t){super(),this.options=t,this.#g=e,this.#y=null,this.bindMethods(),this.setOptions(t)}#g;#v=void 0;#w=void 0;#C=void 0;#E;#x;#y;#A;#k;#B;#S;#I;#j;#T=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#v.addObserver(this),shouldFetchOnMount(this.#v,this.options)?this.#P():this.updateResult(),this.#M())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return shouldFetchOn(this.#v,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return shouldFetchOn(this.#v,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#O(),this.#R(),this.#v.removeObserver(this)}setOptions(e,t){let n=this.options,o=this.#v;if(this.options=this.#g.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw Error("Expected enabled to be a boolean");this.#U(),this.#v.setOptions(this.options),n._defaulted&&!(0,en.VS)(this.options,n)&&this.#g.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#v,observer:this});let i=this.hasListeners();i&&shouldFetchOptionally(this.#v,o,this.options,n)&&this.#P(),this.updateResult(t),i&&(this.#v!==o||this.options.enabled!==n.enabled||this.options.staleTime!==n.staleTime)&&this.#F();let s=this.#N();i&&(this.#v!==o||this.options.enabled!==n.enabled||s!==this.#j)&&this.#D(s)}getOptimisticResult(e){let t=this.#g.getQueryCache().build(this.#g,e),n=this.createResult(t,e);return(0,en.VS)(this.getCurrentResult(),n)||(this.#C=n,this.#x=this.options,this.#E=this.#v.state),n}getCurrentResult(){return this.#C}trackResult(e,t){let n={};return Object.keys(e).forEach(o=>{Object.defineProperty(n,o,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(o),t?.(o),e[o])})}),n}trackProp(e){this.#T.add(e)}getCurrentQuery(){return this.#v}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#g.defaultQueryOptions(e),n=this.#g.getQueryCache().build(this.#g,t);return n.isFetchingOptimistic=!0,n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#P({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#C))}#P(e){this.#U();let t=this.#v.fetch(this.options,e);return e?.throwOnError||(t=t.catch(en.ZT)),t}#F(){if(this.#O(),en.sk||this.#C.isStale||!(0,en.PN)(this.options.staleTime))return;let e=(0,en.Kp)(this.#C.dataUpdatedAt,this.options.staleTime);this.#S=setTimeout(()=>{this.#C.isStale||this.updateResult()},e+1)}#N(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#v):this.options.refetchInterval)??!1}#D(e){this.#R(),this.#j=e,!en.sk&&!1!==this.options.enabled&&(0,en.PN)(this.#j)&&0!==this.#j&&(this.#I=setInterval(()=>{(this.options.refetchIntervalInBackground||eo.j.isFocused())&&this.#P()},this.#j))}#M(){this.#F(),this.#D(this.#N())}#O(){this.#S&&(clearTimeout(this.#S),this.#S=void 0)}#R(){this.#I&&(clearInterval(this.#I),this.#I=void 0)}createResult(e,t){let n;let o=this.#v,i=this.options,s=this.#C,l=this.#E,c=this.#x,u=e!==o,d=u?e.state:this.#w,{state:p}=e,f={...p},m=!1;if(t._optimisticResults){let n=this.hasListeners(),s=!n&&shouldFetchOnMount(e,t),l=n&&shouldFetchOptionally(e,o,t,i);(s||l)&&(f={...f,...(0,es.z)(p.data,e.options)}),"isRestoring"===t._optimisticResults&&(f.fetchStatus="idle")}let{error:b,errorUpdatedAt:g,status:y}=f;if(t.select&&void 0!==f.data){if(s&&f.data===l?.data&&t.select===this.#A)n=this.#k;else try{this.#A=t.select,n=t.select(f.data),n=(0,en.oE)(s?.data,n,t),this.#k=n,this.#y=null}catch(e){this.#y=e}}else n=f.data;if(void 0!==t.placeholderData&&void 0===n&&"pending"===y){let e;if(s?.isPlaceholderData&&t.placeholderData===c?.placeholderData)e=s.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#B?.state.data,this.#B):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#y=null}catch(e){this.#y=e}void 0!==e&&(y="success",n=(0,en.oE)(s?.data,e,t),m=!0)}this.#y&&(b=this.#y,n=this.#k,g=Date.now(),y="error");let v="fetching"===f.fetchStatus,w="pending"===y,C="error"===y,E=w&&v,x=void 0!==n,A={status:y,fetchStatus:f.fetchStatus,isPending:w,isSuccess:"success"===y,isError:C,isInitialLoading:E,isLoading:E,data:n,dataUpdatedAt:f.dataUpdatedAt,error:b,errorUpdatedAt:g,failureCount:f.fetchFailureCount,failureReason:f.fetchFailureReason,errorUpdateCount:f.errorUpdateCount,isFetched:f.dataUpdateCount>0||f.errorUpdateCount>0,isFetchedAfterMount:f.dataUpdateCount>d.dataUpdateCount||f.errorUpdateCount>d.errorUpdateCount,isFetching:v,isRefetching:v&&!w,isLoadingError:C&&!x,isPaused:"paused"===f.fetchStatus,isPlaceholderData:m,isRefetchError:C&&x,isStale:isStale(e,t),refetch:this.refetch};return A}updateResult(e){let t=this.#C,n=this.createResult(this.#v,this.options);if(this.#E=this.#v.state,this.#x=this.options,void 0!==this.#E.data&&(this.#B=this.#v),(0,en.VS)(n,t))return;this.#C=n;let o={};e?.listeners!==!1&&(()=>{if(!t)return!0;let{notifyOnChangeProps:e}=this.options,n="function"==typeof e?e():e;if("all"===n||!n&&!this.#T.size)return!0;let o=new Set(n??this.#T);return this.options.throwOnError&&o.add("error"),Object.keys(this.#C).some(e=>{let n=this.#C[e]!==t[e];return n&&o.has(e)})})()&&(o.listeners=!0),this.#_({...o,...e})}#U(){let e=this.#g.getQueryCache().build(this.#g,this.options);if(e===this.#v)return;let t=this.#v;this.#v=e,this.#w=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#M()}#_(e){ea.V.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#C)}),this.#g.getQueryCache().notify({query:this.#v,type:"observerResultsUpdated"})})}};function shouldFetchOnMount(e,t){return!1!==t.enabled&&void 0===e.state.data&&!("error"===e.state.status&&!1===t.retryOnMount)||void 0!==e.state.data&&shouldFetchOn(e,t,t.refetchOnMount)}function shouldFetchOn(e,t,n){if(!1!==t.enabled){let o="function"==typeof n?n(e):n;return"always"===o||!1!==o&&isStale(e,t)}return!1}function shouldFetchOptionally(e,t,n,o){return(e!==t||!1===o.enabled)&&(!n.suspense||"error"!==e.state.status)&&isStale(e,n)}function isStale(e,t){return!1!==t.enabled&&e.isStaleByTime(t.staleTime)}n(85893);var ec=D.createContext((E=!1,{clearReset:()=>{E=!1},reset:()=>{E=!0},isReset:()=>E})),useQueryErrorResetBoundary=()=>D.useContext(ec),eu=n(30202),ed=D.createContext(!1),useIsRestoring=()=>D.useContext(ed);ed.Provider;var ep=n(86290),ensurePreventErrorBoundaryRetry=(e,t)=>{(e.suspense||e.throwOnError)&&!t.isReset()&&(e.retryOnMount=!1)},useClearResetErrorBoundary=e=>{D.useEffect(()=>{e.clearReset()},[e])},getHasError=({result:e,errorResetBoundary:t,throwOnError:n,query:o})=>e.isError&&!t.isReset()&&!e.isFetching&&o&&(0,ep.L)(n,[e.error,o]),ensureStaleTime=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},shouldSuspend=(e,t)=>e?.suspense&&t.isPending,fetchOptimistic=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function query_useQuery(e){let t=function(e,t,n){let o=(0,eu.NL)(n),i=useIsRestoring(),s=useQueryErrorResetBoundary(),l=o.defaultQueryOptions(e);l._optimisticResults=i?"isRestoring":"optimistic",ensureStaleTime(l),ensurePreventErrorBoundaryRetry(l,s),useClearResetErrorBoundary(s);let[c]=D.useState(()=>new t(o,l)),u=c.getOptimisticResult(l);if(D.useSyncExternalStore(D.useCallback(e=>{let t=i?()=>void 0:c.subscribe(ea.V.batchCalls(e));return c.updateResult(),t},[c,i]),()=>c.getCurrentResult(),()=>c.getCurrentResult()),D.useEffect(()=>{c.setOptions(l,{listeners:!1})},[l,c]),shouldSuspend(l,u))throw fetchOptimistic(l,c,s);if(getHasError({result:u,errorResetBoundary:s,throwOnError:l.throwOnError,query:o.getQueryCache().get(l.queryHash)}))throw u.error;return l.notifyOnChangeProps?u:c.trackResult(u)}({...e,queryKeyHashFn:utils_hashFn},el,void 0);return t.queryKey=e.queryKey,t}function getChainId(e){return e.state.chainId}function useChainId(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e.subscribe(e=>e.chainId,n)})(t,{onChange:e}),()=>getChainId(t),()=>getChainId(t))}function useBalance(e={}){let{address:t,query:n={}}=e,o=(0,z.Z)(e),i=useChainId(),s=function(e,t={}){return{async queryFn({queryKey:t}){let{address:n,scopeKey:o,...i}=t[1];if(!n)throw Error("address is required");let s=await getBalance_getBalance(e,{...i,address:n});return s??null},queryKey:function(e={}){return["balance",filterQueryOptions(e)]}(t)}}(o,{...e,chainId:e.chainId??i}),l=!!(t&&(n.enabled??!0));return query_useQuery({...n,...s,enabled:l})}let eh=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function read_compressed_payload(e){var t;let n;return t=function(e){let t=0;function u16(){return e[t++]<<8|e[t++]}let n=u16(),o=1,i=[0,1];for(let e=1;e>--c&1}let d=2147483648-1,p=0;for(let e=0;e<31;e++)p=p<<1|read_bit();let f=[],m=0,b=2147483648;for(;;){let e=Math.floor(((p-m+1)*o-1)/b),t=0,s=n;for(;s-t>1;){let n=t+s>>>1;e>>1|read_bit(),l=l<<1^1073741824,c=(1073741824^c)<<1|1073741825;m=l,b=1+c-l}let g=n-4;return f.map(t=>{switch(t-g){case 3:return g+65792+(e[l++]<<16|e[l++]<<8|e[l++]);case 2:return g+256+(e[l++]<<8|e[l++]);case 1:return g+e[l++];default:return t-1}})}(function(e){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((e,n)=>t[e.charCodeAt(0)]=n);let n=e.length,o=new Uint8Array(6*n>>3);for(let i=0,s=0,l=0,c=0;i=8&&(o[s++]=c>>(l-=8));return o}(e)),n=0,()=>t[n++]}function read_sorted(e,t=0){let n=[];for(;;){let o=e(),i=e();if(!i)break;t+=o;for(let e=0;e{let t=read_sorted(e);if(t.length)return t})}function read_mapped(e){let t=[];for(;;){let n=e();if(0==n)break;t.push(function(e,t){let n=1+t(),o=t(),i=read_array_while(t);return read_transposed(i.length,1+e,t).flatMap((e,t)=>{let[s,...l]=e;return Array(i[t]).fill().map((e,t)=>{let i=t*o;return[s+t*n,l.map(e=>e+i)]})})}(n,e))}for(;;){let n=e()-1;if(n<0)break;t.push(read_transposed(1+e(),1+n,e).map(e=>[e[0],e.slice(1)]))}return t.flat()}function read_array_while(e){let t=[];for(;;){let n=e(t.length);if(!n)break;t.push(n)}return t}function read_transposed(e,t,n){let o=Array(e).fill().map(()=>[]);for(let i=0;i>1:o>>1}return n})(e,n).forEach((e,t)=>o[t].push(e));return o}function quote_cp(e){return`{${e.toString(16).toUpperCase().padStart(2,"0")}}`}function str_from_cps(e){let t=e.length;if(t<4096)return String.fromCodePoint(...e);let n=[];for(let o=0;o>24&255}function unpack_cp(e){return 16777215&e}function is_hangul(e){return e>=44032&&e<55204}function decomposed(e){o||function(){let e=read_compressed_payload("AEUDTAHBCFQATQDRADAAcgAgADQAFAAsABQAHwAOACQADQARAAoAFwAHABIACAAPAAUACwAFAAwABAAQAAMABwAEAAoABQAIAAIACgABAAQAFAALAAIACwABAAIAAQAHAAMAAwAEAAsADAAMAAwACgANAA0AAwAKAAkABAAdAAYAZwDSAdsDJgC0CkMB8xhZAqfoC190UGcThgBurwf7PT09Pb09AjgJum8OjDllxHYUKXAPxzq6tABAxgK8ysUvWAgMPT09PT09PSs6LT2HcgWXWwFLoSMEEEl5RFVMKvO0XQ8ExDdJMnIgsj26PTQyy8FfEQ8AY8IPAGcEbwRwBHEEcgRzBHQEdQR2BHcEeAR6BHsEfAR+BIAEgfndBQoBYgULAWIFDAFiBNcE2ATZBRAFEQUvBdALFAsVDPcNBw13DYcOMA4xDjMB4BllHI0B2grbAMDpHLkQ7QHVAPRNQQFnGRUEg0yEB2uaJF8AJpIBpob5AERSMAKNoAXqaQLUBMCzEiACnwRZEkkVsS7tANAsBG0RuAQLEPABv9HICTUBXigPZwRBApMDOwAamhtaABqEAY8KvKx3LQ4ArAB8UhwEBAVSagD8AEFZADkBIadVj2UMUgx5Il4ANQC9AxIB1BlbEPMAs30CGxlXAhwZKQIECBc6EbsCoxngzv7UzRQA8M0BawL6ZwkN7wABAD33OQRcsgLJCjMCjqUChtw/km+NAsXPAoP2BT84PwURAK0RAvptb6cApQS/OMMey5HJS84UdxpxTPkCogVFITaTOwERAK5pAvkNBOVyA7q3BKlOJSALAgUIBRcEdASpBXqzABXFSWZOawLCOqw//AolCZdvv3dSBkEQGyelEPcMMwG1ATsN7UvYBPEGOwTJH30ZGQ/NlZwIpS3dDO0m4y6hgFoj9SqDBe1L9DzdC01RaA9ZC2UJ4zpjgU4DIQENIosK3Q05CG0Q8wrJaw3lEUUHOQPVSZoApQcBCxEdNRW1JhBirAsJOXcG+xr2C48mrxMpevwF0xohBk0BKRr/AM8u54WwWjFcHE9fBgMLJSPHFKhQIA0lQLd4SBobBxUlqQKRQ3BKh1E2HpMh9jw9DWYuE1F8B/U8BRlPC4E8nkarRQ4R0j6NPUgiSUwsBDV/LC8niwnPD4UMuXxyAVkJIQmxDHETMREXN8UIOQcZLZckJxUIIUaVYJoE958D8xPRAwsFPwlBBxMDtRwtEy4VKQUNgSTXAvM21S6zAo9WgAEXBcsPJR/fEFBH4A7pCJsCZQODJesALRUhABcimwhDYwBfj9hTBS7LCMdqbCN0A2cU52ERcweRDlcHpxwzFb8c4XDIXguGCCijrwlbAXUJmQFfBOMICTVbjKAgQWdTi1gYmyBhQT9d/AIxDGUVn0S9h3gCiw9rEhsBNQFzBzkNAQJ3Ee0RaxCVCOuGBDW1M/g6JQRPIYMgEQonA09szgsnJvkM+GkBoxJiAww0PXfuZ6tgtiQX/QcZMsVBYCHxC5JPzQycGsEYQlQuGeQHvwPzGvMn6kFXBf8DowMTOk0z7gS9C2kIiwk/AEkOoxcH1xhqCnGM0AExiwG3mQNXkYMCb48GNwcLAGcLhwV55QAdAqcIowAFAM8DVwA5Aq0HnQAZAIVBAT0DJy8BIeUCjwOTCDHLAZUvAfMpBBvDDBUA9zduSgLDsQKAamaiBd1YAo4CSTUBTSUEBU5HUQOvceEA2wBLBhPfRwEVq0rLGuNDAd9vKwDHAPsABTUHBUEBzQHzbQC3AV8LMQmis7UBTekpAIMAFWsB1wKJAN0ANQB/8QFTAE0FWfkF0wJPSQERMRgrV2EBuwMfATMBDQB5BsuNpckHHwRtB9MCEBsV4QLvLge1AQMi3xPNQsUCvd5VoWACZIECYkJbTa9bNyACofcCaJgCZgkCn4Q4GwsCZjsCZiYEbgR/A38TA36SOQY5dxc5gjojIwJsHQIyNjgKAm3HAm2u74ozZ0UrAWcA3gDhAEoFB5gMjQD+C8IADbUCdy8CdqI/AnlLQwJ4uh1c20WuRtcCfD8CesgCfQkCfPAFWQUgSABIfWMkAoFtAoAAAoAFAn+uSVhKWxUXSswC0QEC0MxLJwOITwOH5kTFkTIC8qFdAwMDrkvOTC0lA89NTE2vAos/AorYwRsHHUNnBbcCjjcCjlxAl4ECjtkCjlx4UbRTNQpS1FSFApP7ApMMAOkAHFUeVa9V0AYsGymVhjLheGZFOzkCl58C77JYIagAWSUClo8ClnycAKlZrFoJgU0AOwKWtQKWTlxEXNECmcsCmWRcyl0HGQKcmznCOp0CnBYCn5sCnriKAB0PMSoPAp3xAp6SALU9YTRh7wKe0wKgbgGpAp6fHwKeTqVjyGQnJSsCJ68CJn4CoPsCoEwCot0CocQCpi8Cpc4Cp/8AfQKn8mh8aLEAA0lqHGrRAqzjAqyuAq1nAq0CAlcdAlXcArHh1wMfTmyXArK9DQKy6Bds4G1jbUhfAyXNArZcOz9ukAMpRQK4XgK5RxUCuSp3cDZw4QK9GQK72nCWAzIRAr6IcgIDM3ECvhpzInNPAsPLAsMEc4J0SzVFdOADPKcDPJoDPb8CxXwCxkcCxhCJAshpUQLIRALJTwLJLgJknQLd0nh5YXiueSVL0AMYo2cCAmH0GfOVJHsLXpJeuxECz2sCz2wvS1PS8xOfAMatAs9zASnqA04SfksFAtwnAtuKAtJPA1JcA1NfAQEDVYyAiT8AyxbtYEWCHILTgs6DjQLaxwLZ3oQQhEmnPAOGpQAvA2QOhnFZ+QBVAt9lAt64c3cC4i/tFAHzMCcB9JsB8tKHAuvzAulweQLq+QLq5AD5RwG5Au6JAuuclqqXAwLuPwOF4Jh5cOBxoQLzAwBpA44WmZMC9xMDkW4DkocC95gC+dkC+GaaHJqruzebHgOdgwL++gEbADmfHJ+zAwWNA6ZqA6bZANHFAwZqoYiiBQkDDEkCwAA/AwDhQRdTARHzA2sHl2cFAJMtK7evvdsBiZkUfxEEOQH7KQUhDp0JnwCS/SlXxQL3AZ0AtwW5AG8LbUEuFCaNLgFDAYD8AbUmAHUDDgRtACwCFgyhAAAKAj0CagPdA34EkQEgRQUhfAoABQBEABMANhICdwEABdUDa+8KxQIA9wqfJ7+xt+UBkSFBQgHpFH8RNMCJAAQAGwBaAkUChIsABjpTOpSNbQC4Oo860ACNOME63AClAOgAywE6gTo7Ofw5+Tt2iTpbO56JOm85GAFWATMBbAUvNV01njWtNWY1dTW2NcU1gjWRNdI14TWeNa017jX9NbI1wTYCNhE1xjXVNhY2JzXeNe02LjY9Ni41LSE2OjY9Njw2yTcIBJA8VzY4Nt03IDcPNsogN4k3MAoEsDxnNiQ3GTdsOo03IULUQwdC4EMLHA8PCZsobShRVQYA6X8A6bABFCnXAukBowC9BbcAbwNzBL8MDAMMAQgDAAkKCwsLCQoGBAVVBI/DvwDz9b29kaUCb0QtsRTNLt4eGBcSHAMZFhYZEhYEARAEBUEcQRxBHEEcQRxBHEEaQRxBHEFCSTxBPElISUhBNkM2QTYbNklISVmBVIgBFLWZAu0BhQCjBcEAbykBvwGJAaQcEZ0ePCklMAAhMvAIMAL54gC7Bm8EescjzQMpARQpKgDUABavAj626xQAJP0A3etzuf4NNRA7efy2Z9NQrCnC0OSyANz5BBIbJ5IFDR6miIavYS6tprjjmuKebxm5C74Q225X1pkaYYPb6f1DK4k3xMEBb9S2WMjEibTNWhsRJIA+vwNVEiXTE5iXs/wezV66oFLfp9NZGYW+Gk19J2+bCT6Ye2w6LDYdgzKMUabk595eLBCXANz9HUpWbATq9vqXVx9XDg+Pc9Xp4+bsS005SVM/BJBM4687WUuf+Uj9dEi8aDNaPxtpbDxcG1THTImUMZq4UCaaNYpsVqraNyKLJXDYsFZ/5jl7bLRtO88t7P3xZaAxhb5OdPMXqsSkp1WCieG8jXm1U99+blvLlXzPCS+M93VnJCiK+09LfaSaBAVBomyDgJua8dfUzR7ga34IvR2Nvj+A9heJ6lsl1KG4NkI1032Cnff1m1wof2B9oHJK4bi6JkEdSqeNeiuo6QoZZincoc73/TH9SXF8sCE7XyuYyW8WSgbGFCjPV0ihLKhdPs08Tx82fYAkLLc4I2wdl4apY7GU5lHRFzRWJep7Ww3wbeA3qmd59/86P4xuNaqDpygXt6M85glSBHOCGgJDnt+pN9bK7HApMguX6+06RZNjzVmcZJ+wcUrJ9//bpRNxNuKpNl9uFds+S9tdx7LaM5ZkIrPj6nIU9mnbFtVbs9s/uLgl8MVczAwet+iOEzzBlYW7RCMgE6gyNLeq6+1tIx4dpgZnd0DksJS5f+JNDpwwcPNXaaVspq1fbQajOrJgK0ofKtJ1Ne90L6VO4MOl5S886p7u6xo7OLjG8TGL+HU1JXGJgppg4nNbNJ5nlzSpuPYy21JUEcUA94PoFiZfjZue+QnyQ80ekOuZVkxx4g+cvhJfHgNl4hy1/a6+RKcKlar/J29y//EztlbVPHVUeQ1zX86eQVAjR/M3dA9w4W8LfaXp4EgM85wOWasli837PzVMOnsLzR+k3o75/lRPAJSE1xAKQzEi5v10ke+VBvRt1cwQRMd+U5mLCTGVd6XiZtgBG5cDi0w22GKcVNvHiu5LQbZEDVtz0onn7k5+heuKXVsZtSzilkLRAUmjMXEMB3J9YC50XBxPiz53SC+EhnPl9WsKCv92SM/OFFIMJZYfl0WW8tIO3UxYcwdMAj7FSmgrsZ2aAZO03BOhP1bNNZItyXYQFTpC3SG1VuPDqH9GkiCDmE+JwxyIVSO5siDErAOpEXFgjy6PQtOVDj+s6e1r8heWVvmZnTciuf4EiNZzCAd7SOMhXERIOlsHIMG399i9aLTy3m2hRLZjJVDNLS53iGIK11dPqQt0zBDyg6qc7YqkDm2M5Ve6dCWCaCbTXX2rToaIgz6+zh4lYUi/+6nqcFMAkQJKHYLK0wYk5N9szV6xihDbDDFr45lN1K4aCXBq/FitPSud9gLt5ZVn+ZqGX7cwm2z5EGMgfFpIFyhGGuDPmso6TItTMwny+7uPnLCf4W6goFQFV0oQSsc9VfMmVLcLr6ZetDZbaSFTLqnSO/bIPjA3/zAUoqgGFAEQS4IhuMzEp2I3jJzbzkk/IEmyax+rhZTwd6f+CGtwPixu8IvzACquPWPREu9ZvGkUzpRwvRRuaNN6cr0W1wWits9ICdYJ7ltbgMiSL3sTPeufgNcVqMVWFkCPDH4jG2jA0XcVgQj62Cb29v9f/z/+2KbYvIv/zzjpQAPkliaVDzNrW57TZ/ZOyZD0nlfMmAIBIAGAI0D3k/mdN4xr9v85ZbZbbqfH2jGd5hUqNZWwl5SPfoGmfElmazUIeNL1j/mkF7VNAzTq4jNt8JoQ11NQOcmhprXoxSxfRGJ9LDEOAQ+dmxAQH90iti9e2u/MoeuaGcDTHoC+xsmEeWmxEKefQuIzHbpw5Tc5cEocboAD09oipWQhtTO1wivf/O+DRe2rpl/E9wlrzBorjJsOeG1B/XPW4EaJEFdNlECEZga5ZoGRHXgYouGRuVkm8tDESiEyFNo+3s5M5puSdTyUL2llnINVHEt91XUNW4ewdMgJ4boJfEyt/iY5WXqbA+A2Fkt5Z0lutiWhe9nZIyIUjyXDC3UsaG1t+eNx6z4W/OYoTB7A6x+dNSTOi9AInctbESqm5gvOLww7OWXPrmHwVZasrl4eD113pm+JtT7JVOvnCXqdzzdTRHgJ0PiGTFYW5Gvt9R9LD6Lzfs0v/TZZHSmyVNq7viIHE6DBK7Qp07Iz55EM8SYtQvZf/obBniTWi5C2/ovHfw4VndkE5XYdjOhCMRjDeOEfXeN/CwfGduiUIfsoFeUxXeQXba7c7972XNv8w+dTjjUM0QeNAReW+J014dKAD/McQYXT7c0GQPIkn3Ll6R7gGjuiQoZD0TEeEqQpKoZ15g/0OPQI17QiSv9AUROa/V/TQN3dvLArec3RrsYlvBm1b8LWzltdugsC50lNKYLEp2a+ZZYqPejULRlOJh5zj/LVMyTDvwKhMxxwuDkxJ1QpoNI0OTWLom4Z71SNzI9TV1iXJrIu9Wcnd+MCaAw8o1jSXd94YU/1gnkrC9BUEOtQvEIQ7g0i6h+KL2JKk8Ydl7HruvgWMSAmNe+LshGhV4qnWHhO9/RIPQzY1tHRj2VqOyNsDpK0cww+56AdDC4gsWwY0XxoucIWIqs/GcwnWqlaT0KPr8mbK5U94/301i1WLt4YINTVvCFBrFZbIbY8eycOdeJ2teD5IfPLCRg7jjcFTwlMFNl9zdh/o3E/hHPwj7BWg0MU09pPrBLbrCgm54A6H+I6v27+jL5gkjWg/iYdks9jbfVP5y/n0dlgWEMlKasl7JvFZd56LfybW1eeaVO0gxTfXZwD8G4SI116yx7UKVRgui6Ya1YpixqXeNLc8IxtAwCU5IhwQgn+NqHnRaDv61CxKhOq4pOX7M6pkA+Pmpd4j1vn6ACUALoLLc4vpXci8VidLxzm7qFBe7s+quuJs6ETYmnpgS3LwSZxPIltgBDXz8M1k/W2ySNv2f9/NPhxLGK2D21dkHeSGmenRT3Yqcdl0m/h3OYr8V+lXNYGf8aCCpd4bWjE4QIPj7vUKN4Nrfs7ML6Y2OyS830JCnofg/k7lpFpt4SqZc5HGg1HCOrHvOdC8bP6FGDbE/VV0mX4IakzbdS/op+Kt3G24/8QbBV7y86sGSQ/vZzU8FXs7u6jIvwchsEP2BpIhW3G8uWNwa3HmjfH/ZjhhCWvluAcF+nMf14ClKg5hGgtPLJ98ueNAkc5Hs2WZlk2QHvfreCK1CCGO6nMZVSb99VM/ajr8WHTte9JSmkXq/i/U943HEbdzW6Re/S88dKgg8pGOLlAeNiqrcLkUR3/aClFpMXcOUP3rmETcWSfMXZE3TUOi8i+fqRnTYLflVx/Vb/6GJ7eIRZUA6k3RYR3iFSK9c4iDdNwJuZL2FKz/IK5VimcNWEqdXjSoxSgmF0UPlDoUlNrPcM7ftmA8Y9gKiqKEHuWN+AZRIwtVSxye2Kf8rM3lhJ5XcBXU9n4v0Oy1RU2M+4qM8AQPVwse8ErNSob5oFPWxuqZnVzo1qB/IBxkM3EVUKFUUlO3e51259GgNcJbCmlvrdjtoTW7rChm1wyCKzpCTwozUUEOIcWLneRLgMXh+SjGSFkAllzbGS5HK7LlfCMRNRDSvbQPjcXaenNYxCvu2Qyznz6StuxVj66SgI0T8B6/sfHAJYZaZ78thjOSIFumNWLQbeZixDCCC+v0YBtkxiBB3jefHqZ/dFHU+crbj6OvS1x/JDD7vlm7zOVPwpUC01nhxZuY/63E7g");for(let[t,n]of(o=new Map(read_sorted_arrays(e).flatMap((e,t)=>e.map(e=>[e,t+1<<24]))),i=new Set(read_sorted(e)),s=new Map,l=new Map,read_mapped(e))){if(!i.has(t)&&2==n.length){let[e,o]=n,i=l.get(e);i||(i=new Map,l.set(e,i)),i.set(o,t)}s.set(t,n.reverse())}}();let t=[],n=[],c=!1;function add(e){let n=o.get(e);n&&(c=!0,e|=n),t.push(e)}for(let o of e)for(;;){if(o<128)t.push(o);else if(is_hangul(o)){let e=o-44032,t=e/588|0,n=e%588/28|0,i=e%28;add(4352+t),add(4449+n),i>0&&add(4519+i)}else{let e=s.get(o);e?n.push(...e):add(o)}if(!n.length)break;o=n.pop()}if(c&&t.length>1){let e=unpack_cc(t[0]);for(let n=1;n0&&i>=e)0==e?(t.push(o,...n),n.length=0,o=c):n.push(c),i=e;else{let s=function(e,t){if(e>=4352&&e<4371&&t>=4449&&t<4470)return 44032+(e-4352)*588+(t-4449)*28;if(is_hangul(e)&&t>4519&&t<4547&&(e-44032)%28==0)return e+(t-4519);{let n=l.get(e);return n&&(n=n.get(t))?n:-1}}(o,c);s>=0?o=s:0==i&&0==e?(t.push(o),o=c):(n.push(c),i=e)}}return o>=0&&t.push(o,...n),t}(decomposed(e))}let Array_from=e=>Array.from(e);function group_has_cp(e,t){return e.P.has(t)||e.Q.has(t)}let Emoji=class Emoji extends Array{get is_emoji(){return!0}};function init(){let e,t;if(c)return;let n=read_compressed_payload("AEEUdwmgDS8BxQKKAP4BOgDjATAAngDUAIMAoABoAOAAagCOAEQAhABMAHIAOwA9ACsANgAmAGIAHgAuACgAJwAXAC0AGgAjAB8ALwAUACkAEgAeAAkAGwARABkAFgA5ACgALQArADcAFQApABAAHgAiABAAGgAeABMAGAUhBe8BFxREN8sF2wC5AK5HAW8ArQkDzQCuhzc3NzcBP68NEfMABQdHBuw5BV8FYAA9MzkI9r4ZBg7QyQAWA9CeOwLNCjcCjqkChuA/lm+RAsXTAoP6ASfnEQDytQFJAjWVCkeXAOsA6godAB/cwdAUE0WlBCN/AQUCQRjFD/MRBjHxDQSJbw0jBzUAswBxme+tnIcAYwabAysG8QAjAEMMmxcDqgPKQyDXCMMxA7kUQwD3NXOrAKmFIAAfBC0D3x4BJQDBGdUFAhEgVD8JnwmQJiNWYUzrg0oAGwAUAB0AFnNcACkAFgBP9h3gPfsDOWDKneY2ChglX1UDYD30ABsAFAAdABZzIGRAnwDD8wAjAEEMzRbDqgMB2sAFYwXqAtCnAsS4AwpUJKRtFHsadUz9AMMVbwLpABM1NJEX0ZkCgYMBEyMAxRVvAukAEzUBUFAtmUwSAy4DBTER33EftQHfSwB5MxJ/AjkWKQLzL8E/cwBB6QH9LQDPDtO9ASNriQC5DQANAwCK21EFI91zHwCoL9kBqQcHBwcHKzUDowBvAQohPvU3fAQgHwCyAc8CKQMA5zMSezr7ULgFmDp/LzVQBgEGAi8FYQVgt8AFcTtlQhpCWEmfe5tmZ6IAExsDzQ8t+X8rBKtTAltbAn0jsy8Bl6utPWMDTR8Ei2kRANkDBrNHNysDBzECQWUAcwFpJ3kAiyUhAJ0BUb8AL3EfAbfNAz81KUsFWwF3YQZtAm0A+VEfAzEJDQBRSQCzAQBlAHsAM70GD/v3IZWHBwARKQAxALsjTwHZAeMPEzmXgIHwABIAGQA8AEUAQDt3gdvIEGcQZAkGTRFMdEIVEwK0D64L7REdDNkq09PgADSxB/MDWwfzA1sDWwfzB/MDWwfzA1sDWwNbA1scEvAi28gQZw9QBHUFlgWTBN4IiyZREYkHMAjaVBV0JhxPA00BBCMtSSQ7mzMTJUpMFE0LCAQ2SmyvfUADTzGzVP2QqgPTMlc5dAkGHnkSqAAyD3skNb1OhnpPcagKU0+2tYdJak5vAsY6sEAACikJm2/Dd1YGRRAfJ6kQ+ww3AbkBPw3xS9wE9QY/BM0fgRkdD9GVoAipLeEM8SbnLqWAXiP5KocF8Uv4POELUVFsD10LaQnnOmeBUgMlAREijwrhDT0IcRD3Cs1vDekRSQc9A9lJngCpBwULFR05FbkmFGKwCw05ewb/GvoLkyazEy17AAXXGiUGUQEtGwMA0y7rhbRaNVwgT2MGBwspI8sUrFAkDSlAu3hMGh8HGSWtApVDdEqLUToelyH6PEENai4XUYAH+TwJGVMLhTyiRq9FEhHWPpE9TCJNTDAEOYMsMyePCdMPiQy9fHYBXQklCbUMdRM1ERs3yQg9Bx0xlygnGQglRplgngT7owP3E9UDDwVDCUUHFwO5HDETMhUtBRGBKNsC9zbZLrcCk1aEARsFzw8pH+MQVEfkDu0InwJpA4cl7wAxFSUAGyKfCEdnAGOP3FMJLs8Iy2pwI3gDaxTrZRF3B5UOWwerHDcVwxzlcMxeD4YMKKezCV8BeQmdAWME5wgNNV+MpCBFZ1eLXBifIGVBQ14AAjUMaRWjRMGHfAKPD28SHwE5AXcHPQ0FAnsR8RFvEJkI74YINbkz/DopBFMhhyAVCisDU2zSCysm/Qz8bQGnEmYDEDRBd/Jnr2C6KBgBBx0yyUFkIfULlk/RDKAaxRhGVDIZ6AfDA/ca9yfuQVsGAwOnBxc6UTPyBMELbQiPCUMATQ6nGwfbGG4KdYzUATWPAbudA1uVhwJzkwY7Bw8Aaw+LBX3pACECqwinAAkA0wNbAD0CsQehAB0AiUUBQQMrMwEl6QKTA5cINc8BmTMB9y0EH8cMGQD7O25OAsO1AoBuZqYF4VwCkgJNOQFRKQQJUktVA7N15QDfAE8GF+NLARmvTs8e50cB43MvAMsA/wAJOQcJRQHRAfdxALsBYws1Caa3uQFR7S0AhwAZbwHbAo0A4QA5AIP1AVcAUQVd/QXXAlNNARU1HC9bZQG/AyMBNwERAH0Gz5GpzQsjBHEH1wIQHxXlAu8yB7kFAyLjE9FCyQK94lkAMhoKPAqrCqpgX2Q3CjV2PVQAEh+sPss/UgVVO1c7XDtXO1w7VztcO1c7XDtXO1wDm8Pmw+YKcF9JYe8Mqg3YRMw6TRPfYFVgNhPMLbsUxRXSJVoZQRrAJwkl6FUNDwgt12Y0CDA0eRfAAEMpbINFY4oeNApPHOtTlVT8LR8AtUumM7MNsBsZREQFS3XxYi4WEgomAmSFAmJGX1GzAV83JAKh+wJonAJmDQKfiDgfDwJmPwJmKgRyBIMDfxcDfpY5Cjl7GzmGOicnAmwhAjI6OA4CbcsCbbLzjgM3a0kvAWsA4gDlAE4JB5wMkQECD8YAEbkCdzMCdqZDAnlPRwJ4viFg30WyRvcCfEMCeswCfQ0CfPRIBEiBZygALxlJXEpfGRtK0ALRBQLQ0EsrA4hTA4fqRMmRNgLypV0HAwOyS9JMMSkH001QTbMCi0MCitzFHwshR2sJuwKOOwKOYESbhQKO3QKOYHxRuFM5AQ5S2FSJApP/ApMQAO0AIFUiVbNV1AosHymZijLleGpFPz0Cl6MC77ZYJawAXSkClpMCloCgAK1ZsFoNhVEAPwKWuQKWUlxIXNUCmc8CmWhczl0LHQKcnznGOqECnBoCn58CnryOACETNS4TAp31Ap6WALlBYThh8wKe1wKgcgGtAp6jIwKeUqljzGQrKS8CJ7MCJoICoP8CoFDbAqYzAqXSAqgDAIECp/ZogGi1AAdNaiBq1QKs5wKssgKtawKtBgJXIQJV4AKx5dsDH1JsmwKywRECsuwbbORtZ21MYwMl0QK2YD9DbpQDKUkCuGICuUsZArkue3A6cOUCvR0DLbYDMhUCvoxyBgMzdQK+HnMmc1MCw88CwwhzhnRPOUl05AM8qwEDPJ4DPcMCxYACxksCxhSNAshtVQLISALJUwLJMgJkoQLd1nh9ZXiyeSlL1AMYp2cGAmH4GfeVKHsPXpZevxUCz28Cz3AzT1fW9xejAMqxAs93AS3uA04Wfk8JAtwrAtuOAtJTA1JgA1NjAQUDVZCAjUMEzxrxZEl5A4LSg5EC2ssC2eKEFIRNp0ADhqkAMwNkEoZ1Xf0AWQLfaQLevHd7AuIz7RgB8zQrAfSfAfLWiwLr9wLpdH0DAur9AuroAP1LAb0C7o0C66CWrpcHAu5DA4XkmH1w5HGlAvMHAG0DjhqZlwL3FwORcgOSiwL3nAL53QL4apogmq+/O5siA52HAv7+AR8APZ8gAZ+3AwWRA6ZuA6bdANXJAwZuoYyiCQ0DDE0BEwEjB3EGZb1rCQC/BG/DFY8etxEAG3k9ACcDNxJRA42DAWcrJQCM8wAlAOanC6OVCLsGI6fJBgCvBRnDBvElRUYFFoAFcD9GSDNCKUK8X3kZX8QAls0FOgCQVCGbwTsuYDoZutcONxjOGJHJ/gVfBWAFXwVgBWsFYAVfBWAFXwVgBV8FYAVfBWBOHQjfjW8KCgoKbF7xMwTRA7kGN8PDAMMEr8MA70gxFroFTj5xPnhCR0K+X30/X/AAWBkzswCNBsxzzASm70aCRS4rDDMeLz49fnXfcsH5GcoscQFz13Y4HwVnBXLJycnACNdRYwgICAqEXoWTxgA7P4kACxbZBu21Kw0AjMsTAwkVAOVtJUUsJ1JCuULESUArXy9gPi9AKwnJRQYKTD9LPoA+iT54PnkCkULEUUpDX9NWV3JVEjQAc1w3A3IBE3YnX+g7QiMJb6MKaiszRCUuQrNCxDPMCcwEX9EWJzYREBEEBwIHKn6l33JCNVIfybPJtAltydPUCmhBZw/tEKsZAJOVJU1CLRuxbUHOQAo7P0s+eEJHHA8SJVRPdGM0NVrpvBoKhfUlM0JHHGUQUhEWO1xLSj8MO0ucNAqJIzVCRxv9EFsqKyA4OQgNj2nwZgp5ZNFgE2A1K3YHS2AhQQojJmC7DgpzGG1WYFUZCQYHZO9gHWCdYIVgu2BTYJlwFh8GvRbcXbG8YgtDHrMBwzPVyQonHQgkCyYBgQJ0Ajc4nVqIAwGSCsBPIgDsK3SWEtIVBa5N8gGjAo+kVwVIZwD/AEUSCDweX4ITrRQsJ8K3TwBXFDwEAB0TvzVcAtoTS20RIwDgVgZ9BBImYgA5AL4Coi8LFnezOkCnIQFjAY4KBAPh9RcGsgZSBsEAJctdsWIRu2kTkQstRw7DAcMBKgpPBGIGMDAwKCYnKTQaLg4AKRSVAFwCdl+YUZ0JdicFD3lPAdt1F9ZZKCGxuE3yBxkFVGcA/wBFEgiCBwAOLHQSjxOtQDg1z7deFRMAZ8QTAGtKb1ApIiPHADkAvgKiLy1DFtYCmBiDAlDDWNB0eo7fpaMO/aEVRRv0ATEQZBIODyMEAc8JQhCbDRgzFD4TAEMAu9YBCgCsAOkAm5I3ABwAYxvONnR+MhXJAxgKQyxL2+kkJhMbhQKDBMkSsvF0AD9BNQ6uQC7WqSQHwxEAEEIu1hkhAH2z4iQPwyJPHNWpdyYBRSpnJALzoBAEVPPsH20MxA0CCEQKRgAFyAtFAlMNwwjEDUQJRArELtapMg7DDZgJIw+TGukEIwvDFkMAqAtDEMMMBhioe+QAO3MMRAACrgnEBSPY9Q0FDnbSBoMAB8MSYxkSxAEJAPIJAAB8FWMOFtMc/HcXwxhDAC7DAvOowwAewwJdKDKHAAHDAALrFUQVwwAbwyvzpWMWv8wA/ABpAy++bcYDUKPD0KhDCwKmJ1MAAmMA5+UZwxAagwipBRL/eADfw6fDGOMCGsOjk3l6BwOpo4sAEsMOGxMAA5sAbcMOAAvDp0MJGkMDwgipnNIPAwfIqUMGAOGDAAPzABXDAAcDAAnDAGmTABrDAA7DChjDjnEWAwABYwAOcwAuUyYABsMAF8MIKQANUgC6wy4AA8MADqMq8wCyYgAcIwAB8wqpAAXOCx0V4wAHowBCwwEKAGnDAAuDAB3DAAjDCakABdIAbqcZ3QCZCCkABdIAAAFDAAfjAB2jCCkABqIACYMAGzMAbSMA5sOIAAhjAAhDABTDBAkpAAbSAOOTAAlDC6kOzPtnAAdDAG6kQFAATwAKwwwAA0MACbUDPwAHIwAZgwACE6cDAAojAApDAAoDp/MGwwAJIwADEwAQQwgAFEMAEXMAD5MADfMADcMAGRMOFiMAFUMAbqMWuwHDAMIAE0MLAGkzEgDhUwACQwAEWgAXgwUjAAbYABjDBSYBgzBaAEFNALcQBxUMegAwMngBrA0IZgJ0KxQHBREPd1N0ZzKRJwaIHAZqNT4DqQq8BwngAB4DAwt2AX56T1ocKQNXAh1GATQGC3tOxYNagkgAMQA5CQADAQEAWxLjAIOYNAEzAH7tFRk6TglSAF8NAAlYAQ+S1ACAQwQorQBiAN4dAJ1wPyeTANVzuQDX3AIeEMp9eyMgXiUAEdkBkJizKltbVVAaRMqRAAEAhyQ/SDEz6BmfVwB6ATEsOClKIRcDOF0E/832AFNt5AByAnkCRxGCOs94NjXdAwINGBonDBwPALW2AwICAgAAAAAAAAYDBQMDARrUAwAtAAAAAgEGBgYGBgYFBQUFBQUEBQYHCAkEBQUFBQQAAAICAAAAIgCNAJAAlT0A6gC7ANwApEQAwgCyAK0AqADuAKYA2gCjAOcBCAEDAMcAgQBiANIA1AEDAN4A8gCQAKkBMQDqAN8A3AsBCQ8yO9ra2tq8xuLT1tRJOB0BUgFcNU0BWgFpAWgBWwFMUUlLbhMBUxsNEAs6PhMOACcUKy0vMj5AQENDQ0RFFEYGJFdXV1dZWVhZL1pbXVxcI2NnZ2ZoZypsbnZ1eHh4eHh4enp6enp6enp6enp8fH18e2IARPIASQCaAHgAMgBm+ACOAFcAVwA3AnbvAIsABfj4AGQAk/IAnwBPAGIAZP//sACFAIUAaQBWALEAJAC2AIMCQAJDAPwA5wD+AP4A6AD/AOkA6QDoAOYALwJ7AVEBQAE+AVQBPgE+AT4BOQE4ATgBOAEcAVgXADEQCAEAUx8SHgsdHhYAjgCWAKYAUQBqIAIxAHYAbwCXAxUDJzIDIUlGTzEAkQJPAMcCVwKkAMAClgKWApYClgKWApYCiwKWApYClgKWApYClgKVApUCmAKgApcClgKWApQClAKUApQCkgKVAnUB1AKXAp8ClgKWApUeAIETBQD+DQOfAmECOh8BVBg9AuIZEjMbAU4/G1WZAXusRAFpYQEFA0FPAQYAmTEeIJdyADFoAHEANgCRA5zMk/C2jGINwjMWygIZCaXdfDILBCs5dAE7YnQBugDlhoiHhoiGiYqKhouOjIaNkI6Ij4qQipGGkoaThpSSlYaWhpeKmIaZhpqGm4aci52QnoqfhuIC4XTpAt90AIp0LHSoAIsAdHQEQwRABEIERQRDBEkERgRBBEcESQRIBEQERgRJAJ5udACrA490ALxuAQ10ANFZdHQA13QCFHQA/mJ0AP4BIQD+APwA/AD9APwDhGZ03ASMK23HAP4A/AD8AP0A/CR0dACRYnQA/gCRASEA/gCRAvQA/gCRA4RmdNwEjCttxyR0AP9idAEhAP4A/gD8APwA/QD8AP8A/AD8AP0A/AOEZnTcBIwrbcckdHQAkWJ0ASEA/gCRAP4AkQL0AP4AkQOEZnTcBIwrbcckdAJLAT50AlIBQXQCU8l0dAJfdHQDpgL0A6YDpgOnA6cDpwOnA4RmdNwEjCttxyR0dACRYnQBIQOmAJEDpgCRAvQDpgCRA4RmdNwEjCttxyR0BDh0AJEEOQCRDpU5dSgCADR03gV2CwArdAEFAM5iCnR0AF1iAAYcOgp0dACRCnQAXAEIwWZ0CnRmdHQAkWZ0CnRmdEXgAFF03gp0dEY0tlT2u3SOAQTwscwhjZZKrhYcBSfFp9XNbKiVDOD2b+cpe4/Z17mQnbtzzhaeQtE2GGj0IDNTjRUSyTxxw/RPHW/+vS7d1NfRt9z9QPZg4X7QFfhCnkvgNPIItOsC2eV6hPannZNHlZ9xrwZXIMOlu3jSoQSq78WEjwLjw1ELSlF1aBvfzwk5ZX7AUvQzjPQKbDuQ+sm4wNOp4A6AdVuRS0t1y/DZpg4R6m7FNjM9HgvW7Bi88zaMjOo6lM8wtBBdj8LP4ylv3zCXPhebMKJc066o9sF71oFW/8JXu86HJbwDID5lzw5GWLR/LhT0Qqnp2JQxNZNfcbLIzPy+YypqRm/lBmGmex+82+PisxUumSeJkALIT6rJezxMH+CTJmQtt5uwTVbL3ptmjDUQzlSIvWi8Tl7ng1NpuRn1Ng4n14Qc+3Iil7OwkvNWogLSPkn3pihIFytyIGmMhOe3n1tWsuMy9BdKyqF4Z3v2SgggTL9KVvMXPnCbRe+oOuFFP3HejBG/w9gvmfNYvg6JuWia2lcSSN1uIjBktzoIazOHPJZ7kKHPz8mRWVdW3lA8WGF9dQF6Bm673boov3BUWDU2JNcahR23GtfHKLOz/viZ+rYnZFaIznXO67CYEJ1fXuTRpZhYZkKe54xeoagkNGLs+NTZHE0rX45/XvQ2RGADX6vcAvdxIUBV27wxGm2zjZo4X3ILgAlrOFheuZ6wtsvaIj4yLY7qqawlliaIcrz2G+c3vscAnCkCuMzMmZvMfu9lLwTvfX+3cVSyPdN9ZwgDZhfjRgNJcLiJ67b9xx8JHswprbiE3v9UphotAPIgnXVIN5KmMc0piXhc6cChPnN+MRhG9adtdttQTTwSIpl8I4/j//d3sz1326qTBTpPRM/Hgh3kzqEXs8ZAk4ErQhNO8hzrQ0DLkWMA/N+91tn2MdOJnWC2FCZehkQrwzwbKOjhvZsbM95QoeL9skYyMf4srVPVJSgg7pOLUtr/n9eT99oe9nLtFRpjA9okV2Kj8h9k5HaC0oivRD8VyXkJ81tcd4fHNXPCfloIQasxsuO18/46dR2jgul/UIet2G0kRvnyONMKhHs6J26FEoqSqd+rfYjeEGwHWVDpX1fh1jBBcKGMqRepju9Y00mDVHC+Xdij/j44rKfvfjGinNs1jO/0F3jB83XCDINN/HB84axlP+3E/klktRo+vl3U/aiyMJbIodE1XSsDn6UAzIoMtUObY2+k/4gY/l+AkZJ5Sj2vQrkyLm3FoxjhDX+31UXBFf9XrAH31fFqoBmDEZvhvvpnZ87N+oZEu7U9O/nnk+QWj3x8uyoRbEnf+O5UMr9i0nHP38IF5AvzrBW8YWBUR0mIAzIvndQq9N3v/Jto3aPjPXUPl8ASdPPyAp7jENf8bk7VMM9ol9XGmlBmeDMuGqt+WzuL6CXAxXjIhCPM5vACchgMJ/8XBGLO/D1isVvGhwwHHr1DLaI5mn2Jr/b1pUD90uciDaS8cXNDzCWvNmT/PhQe5e8nTnnnkt8Ds/SIjibcum/fqDhKopxAY8AkSrPn+IGDEKOO+U3XOP6djFs2H5N9+orhOahiQk5KnEUWa+CzkVzhp8bMHRbg81qhjjXuIKbHjSLSIBKWqockGtKinY+z4/RdBUF6pcc3JmnlxVcNgrI4SEzKUZSwcD2QCyxzKve+gAmg6ZuSRkpPFa6mfThu7LJNu3H5K42uCpNvPAsoedolKV/LHe/eJ+BbaG5MG0NaSGVPRUmNFMFFSSpXEcXwbVh7UETOZZtoVNRGOIbbkig3McEtR68cG0RZAoJevWYo7Dg/lZ1CQzblWeUvVHmr8fY4Nqd9JJiH/zEX24mJviH60fAyFr0A3c4bC1j3yZU60VgJxXn8JgJXLUIsiBnmKmMYz+7yBQFBvqb2eYnuW59joZBf56/wXvWIR4R8wTmV80i1mZy+S4+BUES+hzjk0uXpC///z/IlqHZ1monzlXp8aCfhGKMti73FI1KbL1q6IKO4fuBuZ59gagjn5xU79muMpHXg6S+e+gDM/U9BKLHbl9l6o8czQKl4RUkJJiqftQG2i3BMg/TQlUYFkJDYBOOvAugYuzYSDnZbDDd/aSd9x0Oe6F+bJcHfl9+gp6L5/TgA+BdFFovbfCrQ40s5vMPw8866pNX8zyFGeFWdxIpPVp9Rg1UPOVFbFZrvaFq/YAzHQgqMWpahMYfqHpmwXfHL1/kpYmGuHFwT55mQu0dylfNuq2Oq0hTMCPwqfxnuBIPLXfci4Y1ANy+1CUipQxld/izVh16WyG2Q0CQQ9NqtAnx1HCHwDj7sYxOSB0wopZSnOzxQOcExmxrVTF2BkOthVpGfuhaGECfCJpJKpjnihY+xOT2QJxN61+9K6QSqtv2Shr82I3jgJrqBg0wELFZPjvHpvzTtaJnLK6Vb97Yn933koO/saN7fsjwNKzp4l2lJVx2orjCGzC/4ZL4zCver6aQYtC5sdoychuFE6ufOiog+VWi5UDkbmvmtah/3aArEBIi39s5ILUnlFLgilcGuz9CQshEY7fw2ouoILAYPVT/gyAIq3TFAIwVsl+ktkRz/qGfnCDGrm5gsl/l9QdvCWGsjPz3dU7XuqKfdUrr/6XIgjp4rey6AJBmCmUJMjITHVdFb5m1p+dLMCL8t55zD42cmftmLEJC0Da04YiRCVUBLLa8D071/N5UBNBXDh0LFsmhV/5B5ExOB4j3WVG/S3lfK5o+V6ELHvy6RR9n4ac+VsK4VE4yphPvV+kG9FegTBH4ZRXL2HytUHCduJazB/KykjfetYxOXTLws267aGOd+I+JhKP//+VnXmS90OD/jvLcVu0asyqcuYN1mSb6XTlCkqv1vigZPIYwNF/zpWcT1GR/6aEIRjkh0yhg4LXJfaGobYJTY4JI58KiAKgmmgAKWdl5nYCeLqavRJGQNuYuZtZFGx+IkI4w4NS2xwbetNMunOjBu/hmKCI/w7tfiiyUd//4rbTeWt4izBY8YvGIN6vyKYmP/8X8wHKCeN+WRcKM70+tXKNGyevU9H2Dg5BsljnTf8YbsJ1TmMs74Ce2XlHisleguhyeg44rQOHZuw/6HTkhnnurK2d62q6yS7210SsAIaR+jXMQA+svkrLpsUY+F30Uw89uOdGAR6vo4FIME0EfVVeHTu6eKicfhSqOeXJhbftcd08sWEnNUL1C9fnprTgd83IMut8onVUF0hvqzZfHduPjbjwEXIcoYmy+P6tcJZHmeOv6VrvEdkHDJecjHuHeWANe79VG662qTjA/HCvumVv3qL+LrOcpqGps2ZGwQdFJ7PU4iuyRlBrwfO+xnPyr47s2cXVbWzAyznDiBGjCM3ksxjjqM62GE9C8f5U38kB3VjtabKp/nRdvMESPGDG90bWRLAt1Qk5DyLuazRR1YzdC1c+hZXvAWV8xA72S4A8B67vjVhbba3MMop293FeEXpe7zItMWrJG/LOH9ByOXmYnNJfjmfuX9KbrpgLOba4nZ+fl8Gbdv/ihv+6wFGKHCYrVwmhFC0J3V2bn2tIB1wCc1CST3d3X2OyxhguXcs4sm679UngzofuSeBewMFJboIQHbUh/m2JhW2hG9DIvG2t7yZIzKBTz9wBtnNC+2pCRYhSIuQ1j8xsz5VvqnyUIthvuoyyu7fNIrg/KQUVmGQaqkqZk/Vx5b33/gsEs8yX7SC1J+NV4icz6bvIE7C5G6McBaI8rVg56q5QBJWxn/87Q1sPK4+sQa8fLU5gXo4paaq4cOcQ4wR0VBHPGjKh+UlPCbA1nLXyEUX45qZ8J7/Ln4FPJE2TdzD0Z8MLSNQiykMMmSyOCiFfy84Rq60emYB2vD09KjYwsoIpeDcBDTElBbXxND72yhd9pC/1CMid/5HUMvAL27OtcIJDzNKpRPNqPOpyt2aPGz9QWIs9hQ9LiX5s8m9hjTUu/f7MyIatjjd+tSfQ3ufZxPpmJhTaBtZtKLUcfOCUqADuO+QoH8B9v6U+P0HV1GLQmtoNFTb3s74ivZgjES0qfK+8RdGgBbcCMSy8eBvh98+et1KIFqSe1KQPyXULBMTsIYnysIwiZBJYdI20vseV+wuJkcqGemehKjaAb9L57xZm3g2zX0bZ2xk/fU+bCo7TlnbW7JuF1YdURo/2Gw7VclDG1W7LOtas2LX4upifZ/23rzpsnY/ALfRgrcWP5hYmV9VxVOQA1fZvp9F2UNU+7d7xRyVm5wiLp3/0dlV7vdw1PMiZrbDAYzIVqEjRY2YU03sJhPnlwIPcZUG5ltL6S8XCxU1eYS5cjr34veBmXAvy7yN4ZjArIG0dfD/5UpBNlX1ZPoxJOwyqRi3wQWtOzd4oNKh0LkoTm8cwqgIfKhqqGOhwo71I+zXnMemTv2B2AUzABWyFztGgGULjDDzWYwJUVBTjKCn5K2QGMK1CQT7SzziOjo+BhAmqBjzuc3xYym2eedGeOIRJVyTwDw37iCMe4g5Vbnsb5ZBdxOAnMT7HU4DHpxWGuQ7GeiY30Cpbvzss55+5Km1YsbD5ea3NI9QNYIXol5apgSu9dZ8f8xS5dtHpido5BclDuLWY4lhik0tbJa07yJhH0BOyEut/GRbYTS6RfiTYWGMCkNpfSHi7HvdiTglEVHKZXaVhezH4kkXiIvKopYAlPusftpE4a5IZwvw1x/eLvoDIh/zpo9FiQInsTb2SAkKHV42XYBjpJDg4374XiVb3ws4qM0s9eSQ5HzsMU4OZJKuopFjBM+dAZEl8RUMx5uU2N486Kr141tVsGQfGjORYMCJAMsxELeNT4RmWjRcpdTGBwcx6XN9drWqPmJzcrGrH4+DRc7+n1w3kPZwu0BkNr6hQrqgo7JTB9A5kdJ/H7P4cWBMwsmuixAzJB3yrQpnGIq90lxAXLzDCdn1LPibsRt7rHNjgQBklRgPZ8vTbjXdgXrTWQsK5MdrXXQVPp0Rinq3frzZKJ0qD6Qhc40VzAraUXlob1gvkhK3vpmHgI6FRlQZNx6eRqkp0zy4AQlX813fAPtL3jMRaitGFFjo0zmErloC+h+YYdVQ6k4F/epxAoF0BmqEoKNTt6j4vQZNQ2BoqF9Vj53TOIoNmDiu9Xp15RkIgQIGcoLpfoIbenzpGUAtqFJp5W+LLnx38jHeECTJ/navKY1NWfN0sY1T8/pB8kIH3DU3DX+u6W3YwpypBMYOhbSxGjq84RZ84fWJow8pyHqn4S/9J15EcCMsXqrfwyd9mhiu3+rEo9pPpoJkdZqHjra4NvzFwuThNKy6hao/SlLw3ZADUcUp3w3SRVfW2rhl80zOgTYnKE0Hs2qp1J6H3xqPqIkvUDRMFDYyRbsFI3M9MEyovPk8rlw7/0a81cDVLmBsR2ze2pBuKb23fbeZC0uXoIvDppfTwIDxk1Oq2dGesGc+oJXWJLGkOha3CX+DUnzgAp9HGH9RsPZN63Hn4RMA5eSVhPHO+9RcRb/IOgtW31V1Q5IPGtoxPjC+MEJbVlIMYADd9aHYWUIQKopuPOHmoqSkubnAKnzgKHqgIOfW5RdAgotN6BN+O2ZYHkuemLnvQ8U9THVrS1RtLmKbcC7PeeDsYznvqzeg6VCNwmr0Yyx1wnLjyT84BZz3EJyCptD3yeueAyDWIs0L2qs/VQ3HUyqfrja0V1LdDzqAikeWuV4sc7RLIB69jEIBjCkyZedoUHqCrOvShVzyd73OdrJW0hPOuQv2qOoHDc9xVb6Yu6uq3Xqp2ZaH46A7lzevbxQEmfrzvAYSJuZ4WDk1Hz3QX1LVdiUK0EvlAGAYlG3Md30r7dcPN63yqBCIj25prpvZP0nI4+EgWoFG95V596CurXpKRBGRjQlHCvy5Ib/iW8nZJWwrET3mgd6mEhfP4KCuaLjopWs7h+MdXFdIv8dHQJgg1xi1eYqB0uDYjxwVmri0Sv5XKut/onqapC+FQiC2C1lvYJ9MVco6yDYsS3AANUfMtvtbYI2hfwZatiSsnoUeMZd34GVjkMMKA+XnjJpXgRW2SHTZplVowPmJsvXy6w3cfO1AK2dvtZEKTkC/TY9LFiKHCG0DnrMQdGm2lzlBHM9iEYynH2UcVMhUEjsc0oDBTgo2ZSQ1gzkAHeWeBXYFjYLuuf8yzTCy7/RFR81WDjXMbq2BOH5dURnxo6oivmxL3cKzKInlZkD31nvpHB9Kk7GfcfE1t+1V64b9LtgeJGlpRFxQCAqWJ5DoY77ski8gsOEOr2uywZaoO/NGa0X0y1pNQHBi3b2SUGNpcZxDT7rLbBf1FSnQ8guxGW3W+36BW0gBje4DOz6Ba6SVk0xiKgt+q2JOFyr4SYfnu+Ic1QZYIuwHBrgzr6UvOcSCzPTOo7D6IC4ISeS7zkl4h+2VoeHpnG/uWR3+ysNgPcOIXQbv0n4mr3BwQcdKJxgPSeyuP/z1Jjg4e9nUvoXegqQVIE30EHx5GHv+FAVUNTowYDJgyFhf5IvlYmEqRif6+WN1MkEJmDcQITx9FX23a4mxy1AQRsOHO/+eImX9l8EMJI3oPWzVXxSOeHU1dUWYr2uAA7AMb+vAEZSbU3qob9ibCyXeypEMpZ6863o6QPqlqGHZkuWABSTVNd4cOh9hv3qEpSx2Zy/DJMP6cItEmiBJ5PFqQnDEIt3NrA3COlOSgz43D7gpNFNJ5MBh4oFzhDPiglC2ypsNU4ISywY2erkyb1NC3Qh/IfWj0eDgZI4/ln8WPfBsT3meTjq1Uqt1E7Zl/qftqkx6aM9KueMCekSnMrcHj1CqTWWzEzPsZGcDe3Ue4Ws+XFYVxNbOFF8ezkvQGR6ZOtOLU2lQEnMBStx47vE6Pb7AYMBRj2OOfZXfisjJnpTfSNjo6sZ6qSvNxZNmDeS7Gk3yYyCk1HtKN2UnhMIjOXUzAqDv90lx9O/q/AT1ZMnit5XQe9wmQxnE/WSH0CqZ9/2Hy+Sfmpeg8RwsHI5Z8kC8H293m/LHVVM/BA7HaTJYg5Enk7M/xWpq0192ACfBai2LA/qrCjCr6Dh1BIMzMXINBmX96MJ5Hn2nxln/RXPFhwHxUmSV0EV2V0jm86/dxxuYSU1W7sVkEbN9EzkG0QFwPhyHKyb3t+Fj5WoUUTErcazE/N6EW6Lvp0d//SDPj7EV9UdJN+Amnf3Wwk3A0SlJ9Z00yvXZ7n3z70G47Hfsow8Wq1JXcfwnA+Yxa5mFsgV464KKP4T31wqIgzFPd3eCe3j5ory5fBF2hgCFyVFrLzI9eetNXvM7oQqyFgDo4CTp/hDV9NMX9JDHQ/nyHTLvZLNLF6ftn2OxjGm8+PqOwhxnPHWipkE/8wbtyri80Sr7pMNkQGMfo4ZYK9OcCC4ESVFFbLMIvlxSoRqWie0wxqnLfcLSXMSpMMQEJYDVObYsXIQNv4TGNwjq1kvT1UOkicTrG3IaBZ3XdScS3u8sgeZPVpOLkbiF940FjbCeNRINNvDbd01EPBrTCPpm12m43ze1bBB59Ia6Ovhnur/Nvx3IxwSWol+3H2qfCJR8df6aQf4v6WiONxkK+IqT4pKQrZK/LplgDI/PJZbOep8dtbV7oCr6CgfpWa8NczOkPx81iSHbsNhVSJBOtrLIMrL31LK9TqHqAbAHe0RLmmV806kRLDLNEhUEJfm9u0sxpkL93Zgd6rw+tqBfTMi59xqXHLXSHwSbSBl0EK0+loECOPtrl+/nsaFe197di4yUgoe4jKoAJDXc6DGDjrQOoFDWZJ9HXwt8xDrQP+7aRwWKWI1GF8s8O4KzxWBBcwnl3vnl1Oez3oh6Ea1vjR7/z7DDTrFtqU2W/KAEzAuXDNZ7MY73MF216dzdSbWmUp4lcm7keJfWaMHgut9x5C9mj66Z0lJ+yhsjVvyiWrfk1lzPOTdhG15Y7gQlXtacvI7qv/XNSscDwqkgwHT/gUsD5yB7LdRRvJxQGYINn9hTpodKFVSTPrtGvyQw+HlRFXIkodErAGu9Iy1YpfSPc3jkFh5CX3lPxv7aqjE/JAfTIpEjGb/H7MO0e2vsViSW1qa/Lmi4/n4DEI3g7lYrcanspDfEpKkdV1OjSLOy0BCUqVoECaB55vs06rXl4jqmLsPsFM/7vYJ0vrBhDCm/00A/H81l1uekJ/6Lml3Hb9+NKiLqATJmDpyzfYZFHumEjC662L0Bwkxi7E9U4cQA0XMVDuMYAIeLMPgQaMVOd8fmt5SflFIfuBoszeAw7ow5gXPE2Y/yBc/7jExARUf/BxIHQBF5Sn3i61w4z5xJdCyO1F1X3+3ax+JSvMeZ7S6QSKp1Fp/sjYz6Z+VgCZzibGeEoujryfMulH7Rai5kAft9ebcW50DyJr2uo2z97mTWIu45YsSnNSMrrNUuG1XsYBtD9TDYzQffKB87vWbkM4EbPAFgoBV4GQS+vtFDUqOFAoi1nTtmIOvg38N4hT2Sn8r8clmBCXspBlMBYTnrqFJGBT3wZOzAyJDre9dHH7+x7qaaKDOB4UQALD5ecS0DE4obubQEiuJZ0EpBVpLuYcce8Aa4PYd/V4DLDAJBYKQPCWTcrEaZ5HYbJi11Gd6hjGom1ii18VHYnG28NKpkz2UKVPxlhYSp8uZr367iOmoy7zsxehW9wzcy2zG0a80PBMCRQMb32hnaHeOR8fnNDzZhaNYhkOdDsBUZ3loDMa1YP0uS0cjUP3b/6DBlqmZOeNABDsLl5BI5QJups8uxAuWJdkUB/pO6Zax6tsg7fN5mjjDgMGngO+DPcKqiHIDbFIGudxtPTIyDi9SFMKBDcfdGQRv41q1AqmxgkVfJMnP8w/Bc7N9/TR6C7mGObFqFkIEom8sKi2xYqJLTCHK7cxzaZvqODo22c3wisBCP4HeAgcRbNPAsBkNRhSmD48dHupdBRw4mIvtS5oeF6zeT1KMCyhMnmhpkFAGWnGscoNkwvQ8ZM5lE/vgTHFYL99OuNxdFBxTEDd5v2qLR8y9WkXsWgG6kZNndFG+pO/UAkOCipqIhL3hq7cRSdrCq7YhUsTocEcnaFa6nVkhnSeRYUA1YO0z5itF9Sly3VlxYDw239TJJH6f3EUfYO5lb7bcFcz8Bp7Oo8QmnsUHOz/fagVUBtKEw1iT88j+aKkv8cscKNkMxjYr8344D1kFoZ7/td1W6LCNYN594301tUGRmFjAzeRg5vyoM1F6+bJZ/Q54jN/k8SFd3DxPTYaAUsivsBfgTn7Mx8H2SpPt4GOdYRnEJOH6jHM2p6SgB0gzIRq6fHxGMmSmqaPCmlfwxiuloaVIitLGN8wie2CDWhkzLoCJcODh7KIOAqbHEvXdUxaS4TTTs07Clzj/6GmVs9kiZDerMxEnhUB6QQPlcfqkG9882RqHoLiHGBoHfQuXIsAG8GTAtao2KVwRnvvam8jo1e312GQAKWEa4sUVEAMG4G6ckcONDwRcg1e2D3+ohXgY4UAWF8wHKQMrSnzCgfFpsxh+aHXMGtPQroQasRY4U6UdG0rz1Vjbka0MekOGRZQEvqQFlxseFor8zWFgHek3v29+WqN6gaK5gZOTOMZzpQIC1201LkMCXild3vWXSc5UX9xcFYfbRPzGFa1FDcPfPB/jUEq/FeGt419CI3YmBlVoHsa4KdcwQP5ZSwHHhFJ7/Ph/Rap/4vmG91eDwPP0lDfCDRCLszTqfzM71xpmiKi2HwS4WlqvGNwtvwF5Dqpn6KTq8ax00UMPkxDcZrEEEsIvHiUXXEphdb4GB4FymlPwBz4Gperqq5pW7TQ6/yNRhW8VT5NhuP0udlxo4gILq5ZxAZk8ZGh3g4CqxJlPKY7AQxupfUcVpWT5VItp1+30UqoyP4wWsRo3olRRgkWZZ2ZN6VC3OZFeXB8NbnUrSdikNptD1QiGuKkr8EmSR/AK9Rw+FF3s5uwuPbvHGiPeFOViltMK7AUaOsq9+x9cndk3iJEE5LKZRlWJbKOZweROzmPNVPkjE3K/TyA57Rs68TkZ3MR8akKpm7cFjnjPd/DdkWjgYoKHSr5Wu5ssoBYU4acRs5g2DHxUmdq8VXOXRbunD8QN0LhgkssgahcdoYsNvuXGUK/KXD/7oFb+VGdhqIn02veuM5bLudJOc2Ky0GMaG4W/xWBxIJcL7yliJOXOpx0AkBqUgzlDczmLT4iILXDxxtRR1oZa2JWFgiAb43obrJnG/TZC2KSK2wqOzRZTXavZZFMb1f3bXvVaNaK828w9TO610gk8JNf3gMfETzXXsbcvRGCG9JWQZ6+cDPqc4466Yo2RcKH+PILeKOqtnlbInR3MmBeGG3FH10yzkybuqEC2HSQwpA0An7d9+73BkDUTm30bZmoP/RGbgFN+GrCOfADgqr0WbI1a1okpFms8iHYw9hm0zUvlEMivBRxModrbJJ+9/p3jUdQQ9BCtQdxnOGrT5dzRUmw0593/mbRSdBg0nRvRZM5/E16m7ZHmDEtWhwvfdZCZ8J8M12W0yRMszXamWfQTwIZ4ayYktrnscQuWr8idp3PjT2eF/jmtdhIfcpMnb+IfZY2FebW6UY/AK3jP4u3Tu4zE4qlnQgLFbM19EBIsNf7KhjdbqQ/D6yiDb+NlEi2SKD+ivXVUK8ib0oBo366gXkR8ZxGjpJIDcEgZPa9TcYe0TIbiPl/rPUQDu3XBJ9X/GNq3FAUsKsll57DzaGMrjcT+gctp+9MLYXCq+sqP81eVQ0r9lt+gcQfZbACRbEjvlMskztZG8gbC8Qn9tt26Q7y7nDrbZq/LEz7kR6Jc6pg3N9rVX8Y5MJrGlML9p9lU4jbTkKqCveeZUJjHB03m2KRKR2TytoFkTXOLg7keU1s1lrPMQJpoOKLuAAC+y1HlJucU6ysB5hsXhvSPPLq5J7JtnqHKZ4vYjC4Vy8153QY+6780xDuGARsGbOs1WqzH0QS765rnSKEbbKlkO8oI/VDwUd0is13tKpqILu1mDJFNy/iJAWcvDgjxvusIT+PGz3ST/J9r9Mtfd0jpaGeiLYIqXc7DiHSS8TcjFVksi66PEkxW1z6ujbLLUGNNYnzOWpH8BZGK4bCK7iR+MbIv8ncDAz1u4StN3vTTzewr9IQjk9wxFxn+6N1ddKs0vffJiS08N3a4G1SVrlZ97Q/M+8G9fe5AP6d9/Qq4WRnORVhofPIKEdCr3llspUfE0oKIIYoByBRPh+bX1HLS3JWGJRhIvE1aW4NTd8ePi4Z+kXb+Z8snYfSNcqijhAgVsx4RCM54cXUiYkjeBmmC4ajOHrChoELscJJC7+9jjMjw5BagZKlgRMiSNYz7h7vvZIoQqbtQmspc0cUk1G/73iXtSpROl5wtLgQi0mW2Ex8i3WULhcggx6E1LMVHUsdc9GHI1PH3U2Ko0PyGdn9KdVOLm7FPBui0i9a0HpA60MsewVE4z8CAt5d401Gv6zXlIT5Ybit1VIA0FCs7wtvYreru1fUyW3oLAZ/+aTnZrOcYRNVA8spoRtlRoWflsRClFcgzkqiHOrf0/SVw+EpVaFlJ0g4Kxq1MMOmiQdpMNpte8lMMQqm6cIFXlnGbfJllysKDi+0JJMotkqgIxOSQgU9dn/lWkeVf8nUm3iwX2Nl3WDw9i6AUK3vBAbZZrcJpDQ/N64AVwjT07Jef30GSSmtNu2WlW7YoyW2FlWfZFQUwk867EdLYKk9VG6JgEnBiBxkY7LMo4YLQJJlAo9l/oTvJkSARDF/XtyAzM8O2t3eT/iXa6wDN3WewNmQHdPfsxChU/KtLG2Mn8i4ZqKdSlIaBZadxJmRzVS/o4yA65RTSViq60oa395Lqw0pzY4SipwE0SXXsKV+GZraGSkr/RW08wPRvqvSUkYBMA9lPx4m24az+IHmCbXA+0faxTRE9wuGeO06DIXa6QlKJ3puIyiuAVfPr736vzo2pBirS+Vxel3TMm3JKhz9o2ZoRvaFVpIkykb0Hcm4oHFBMcNSNj7/4GJt43ogonY2Vg4nsDQIWxAcorpXACzgBqQPjYsE/VUpXpwNManEru4NwMCFPkXvMoqvoeLN3qyu/N1eWEHttMD65v19l/0kH2mR35iv/FI+yjoHJ9gPMz67af3Mq/BoWXqu3rphiWMXVkmnPSEkpGpUI2h1MThideGFEOK6YZHPwYzMBvpNC7+ZHxPb7epfefGyIB4JzO9DTNEYnDLVVHdQyvOEVefrk6Uv5kTQYVYWWdqrdcIl7yljwwIWdfQ/y+2QB3eR/qxYObuYyB4gTbo2in4PzarU1sO9nETkmj9/AoxDA+JM3GMqQtJR4jtduHtnoCLxd1gQUscHRB/MoRYIEsP2pDZ9KvHgtlk1iTbWWbHhohwFEYX7y51fUV2nuUmnoUcqnWIQAAgl9LTVX+Bc0QGNEhChxHR4YjfE51PUdGfsSFE6ck7BL3/hTf9jLq4G1IafINxOLKeAtO7quulYvH5YOBc+zX7CrMgWnW47/jfRsWnJjYYoE7xMfWV2HN2iyIqLI"),read_sorted_array=()=>read_sorted(n),read_sorted_set=()=>new Set(read_sorted_array());c=new Map(read_mapped(n)),u=read_sorted_set(),d=read_sorted_array(),p=new Set(read_sorted_array().map(e=>d[e])),d=new Set(d),f=read_sorted_set(),read_sorted_set();let o=read_sorted_arrays(n),i=n(),read_chunked=()=>new Set(read_sorted_array().flatMap(e=>o[e]).concat(read_sorted_array()));m=read_array_while(e=>{let t=read_array_while(n).map(e=>e+96);if(t.length){let o=e>=i;return t[0]-=32,t=str_from_cps(t),o&&(t=`Restricted[${t}]`),{N:t,P:read_chunked(),Q:read_chunked(),M:!n(),R:o}}}),b=read_sorted_set(),g=new Map;let s=read_sorted_array().concat(Array_from(b)).sort((e,t)=>e-t);for(let{V:e,M:t}of(s.forEach((e,t)=>{let o=n(),i=s[t]=o?s[t-o]:{V:[],M:new Map};i.V.push(e),b.has(e)||g.set(e,i)}),new Set(g.values()))){let n=[];for(let t of e){let e=m.filter(e=>group_has_cp(e,t)),o=n.find(({G:t})=>e.some(e=>t.has(e)));o||(o={G:new Set,V:[]},n.push(o)),o.V.push(t),e.forEach(e=>o.G.add(e))}let o=n.flatMap(e=>Array_from(e.G));for(let{G:e,V:i}of n){let n=new Set(o.filter(t=>!e.has(t)));for(let e of i)t.set(e,n)}}let l=new Set,C=new Set,add_to_union=e=>l.has(e)?C.add(e):l.add(e);for(let e of m){for(let t of e.P)add_to_union(t);for(let t of e.Q)add_to_union(t)}for(let e of l)g.has(e)||C.has(e)||g.set(e,1);for(let o of(y=new Set(Array_from(l).concat(Array_from(decomposed(l).map(unpack_cp)))),v=(e=[],t=read_sorted(n),function expand({S:t,B:n},o,i){if(!(4&t)||i!==o[o.length-1])for(let s of(2&t&&(i=o[o.length-1]),1&t&&e.push(o),n))for(let e of s.Q)expand(s,[...o,e],i)}(function decode(e){return{S:n(),B:read_array_while(()=>{let e=read_sorted(n).map(e=>t[e]);if(e.length)return decode(e)}),Q:e}}([]),[]),e).map(e=>Emoji.from(e)).sort(compare_arrays),w=new Map,v)){let e=[w];for(let t of o){let n=e.map(e=>{let n=e.get(t);return n||(n=new Map,e.set(t,n)),n});65039===t?e.push(...n):e=n}for(let t of e)t.V=o}}function quoted_cp(e){return(should_escape(e)?"":`${bidi_qq(safe_str_from_cps([e]))} `)+quote_cp(e)}function bidi_qq(e){return`"${e}"\u200E`}function safe_str_from_cps(e,t=quote_cp){var n;let o=[];n=e[0],init(),d.has(n)&&o.push("◌");let i=0,s=e.length;for(let n=0;ne.P.has(t));return o&&(n=`${o.N} ${n}`),Error(`illegal mixture: ${e.N} + ${n}`)}function error_placement(e){return Error(`illegal placement: ${e}`)}function filter_fe0f(e){return e.filter(e=>65039!=e)}let EnsAvatarInvalidMetadataError=class EnsAvatarInvalidMetadataError extends X.G{constructor({data:e}){super("Unable to extract image from metadata. The metadata may be malformed or invalid.",{metaMessages:["- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.","",`Provided data: ${JSON.stringify(e)}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarInvalidMetadataError"})}};let EnsAvatarInvalidNftUriError=class EnsAvatarInvalidNftUriError extends X.G{constructor({reason:e}){super(`ENS NFT avatar URI is invalid. ${e}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarInvalidNftUriError"})}};let EnsAvatarUriResolutionError=class EnsAvatarUriResolutionError extends X.G{constructor({uri:e}){super(`Unable to resolve ENS avatar URI "${e}". The URI may be malformed, invalid, or does not respond with a valid image.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarUriResolutionError"})}};let EnsAvatarUnsupportedNamespaceError=class EnsAvatarUnsupportedNamespaceError extends X.G{constructor({namespace:e}){super(`ENS NFT avatar namespace "${e}" is not supported. Must be "erc721" or "erc1155".`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarUnsupportedNamespaceError"})}};let ef=/(?https?:\/\/[^\/]*|ipfs:\/|ipns:\/|ar:\/)?(?\/)?(?ipfs\/|ipns\/)?(?[\w\-.]+)(?\/.*)?/,em=/^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?[\w\-.]+))?(?\/.*)?$/,eb=/^data:([a-zA-Z\-/+]*);base64,([^"].*)/,eg=/^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;async function isImageUri(e){try{let t=await fetch(e,{method:"HEAD"});if(200===t.status){let e=t.headers.get("content-type");return e?.startsWith("image/")}return!1}catch(t){if("object"==typeof t&&void 0!==t.response||!globalThis.hasOwnProperty("Image"))return!1;return new Promise(t=>{let n=new Image;n.onload=()=>{t(!0)},n.onerror=()=>{t(!1)},n.src=e})}}function getGateway(e,t){return e?e.endsWith("/")?e.slice(0,-1):e:t}function resolveAvatarUri({uri:e,gatewayUrls:t}){let n=eb.test(e);if(n)return{uri:e,isOnChain:!0,isEncoded:n};let o=getGateway(t?.ipfs,"https://ipfs.io"),i=getGateway(t?.arweave,"https://arweave.net"),s=e.match(ef),{protocol:l,subpath:c,target:u,subtarget:d=""}=s?.groups||{},p="ipns:/"===l||"ipns/"===c,f="ipfs:/"===l||"ipfs/"===c||em.test(e);if(e.startsWith("http")&&!p&&!f){let n=e;return t?.arweave&&(n=e.replace(/https:\/\/arweave.net/g,t?.arweave)),{uri:n,isOnChain:!1,isEncoded:!1}}if((p||f)&&u)return{uri:`${o}/${p?"ipns":"ipfs"}/${u}${d}`,isOnChain:!1,isEncoded:!1};if("ar:/"===l&&u)return{uri:`${i}/${u}${d||""}`,isOnChain:!1,isEncoded:!1};let m=e.replace(eg,"");if(m.startsWith("e.json()),o=await parseAvatarUri({gatewayUrls:e,uri:getJsonImage(n)});return o}catch{throw new EnsAvatarUriResolutionError({uri:t})}}async function parseAvatarUri({gatewayUrls:e,uri:t}){let{uri:n,isOnChain:o}=resolveAvatarUri({uri:t,gatewayUrls:e});if(o)return n;let i=await isImageUri(n);if(i)return n;throw new EnsAvatarUriResolutionError({uri:t})}async function getNftTokenUri(e,{nft:t}){if("erc721"===t.namespace)return readContract(e,{address:t.contractAddress,abi:[{name:"tokenURI",type:"function",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"tokenURI",args:[BigInt(t.tokenID)]});if("erc1155"===t.namespace)return readContract(e,{address:t.contractAddress,abi:[{name:"uri",type:"function",stateMutability:"view",inputs:[{name:"_id",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"uri",args:[BigInt(t.tokenID)]});throw new EnsAvatarUnsupportedNamespaceError({namespace:t.namespace})}async function parseAvatarRecord(e,{gatewayUrls:t,record:n}){return/eip155:/i.test(n)?parseNftAvatarUri(e,{gatewayUrls:t,record:n}):parseAvatarUri({uri:n,gatewayUrls:t})}async function parseNftAvatarUri(e,{gatewayUrls:t,record:n}){let o=function(e){let t=e;t.startsWith("did:nft:")&&(t=t.replace("did:nft:","").replace(/_/g,"/"));let[n,o,i]=t.split("/"),[s,l]=n.split(":"),[c,u]=o.split(":");if(!s||"eip155"!==s.toLowerCase())throw new EnsAvatarInvalidNftUriError({reason:"Only EIP-155 supported"});if(!l)throw new EnsAvatarInvalidNftUriError({reason:"Chain ID not found"});if(!u)throw new EnsAvatarInvalidNftUriError({reason:"Contract address not found"});if(!i)throw new EnsAvatarInvalidNftUriError({reason:"Token ID not found"});if(!c)throw new EnsAvatarInvalidNftUriError({reason:"ERC namespace not found"});return{chainID:parseInt(l),namespace:c.toLowerCase(),contractAddress:u,tokenID:i}}(n),i=await getNftTokenUri(e,{nft:o}),{uri:s,isOnChain:l,isEncoded:c}=resolveAvatarUri({uri:i,gatewayUrls:t});if(l&&(s.includes("data:application/json;base64,")||s.startsWith("{"))){let e=c?atob(s.replace("data:application/json;base64,","")):s,n=JSON.parse(e);return parseAvatarUri({uri:getJsonImage(n),gatewayUrls:t})}let u=o.tokenID;return"erc1155"===o.namespace&&(u=u.replace("0x","").padStart(64,"0")),getMetadataAvatarUri({gatewayUrls:t,uri:s.replace(/(?:0x)?{id}/,u)})}var ey=n(21746);function isNullUniversalResolverError(e,t){if(!(e instanceof X.G))return!1;let n=e.walk(e=>e instanceof q.Lu);return n instanceof q.Lu&&(!!(n.data?.errorName==="ResolverNotFound"||n.data?.errorName==="ResolverWildcardNotSupported"||n.data?.errorName==="ResolverNotContract"||n.data?.errorName==="ResolverError"||n.data?.errorName==="HttpError"||n.reason?.includes("Wildcard on non-extended resolvers is not supported"))||"reverse"===t&&n.reason===ey.$[50])}var ev=n(57040),ew=n(11187),eC=n(49550),eE=n(15102);function encodedLabelToLabelhash(e){if(66!==e.length||0!==e.indexOf("[")||65!==e.indexOf("]"))return null;let t=`0x${e.slice(1,65)}`;return(0,eE.v)(t)?t:null}function namehash(e){let t=new Uint8Array(32).fill(0);if(!e)return(0,Q.ci)(t);let n=e.split(".");for(let e=n.length-1;e>=0;e-=1){let o=encodedLabelToLabelhash(n[e]),i=o?(0,ew.O0)(o):(0,eC.w)((0,ew.qX)(n[e]),"bytes");t=(0,eC.w)((0,ev.zo)([t,i]),"bytes")}return(0,Q.ci)(t)}function packetToBytes(e){let t=e.replace(/^\.|\.$/gm,"");if(0===t.length)return new Uint8Array(1);let n=new Uint8Array((0,ew.qX)(t).byteLength+2),o=0,i=t.split(".");for(let e=0;e255){var s;t=(0,ew.qX)((s=function(e){let t=new Uint8Array(32).fill(0);return e?encodedLabelToLabelhash(e)||(0,eC.w)((0,ew.qX)(e)):(0,Q.ci)(t)}(i[e]),`[${s.slice(2)}]`))}n[o]=t.length,n.set(t,o+1),o+=t.length+1}return n.byteLength!==o+1?n.slice(0,o+1):n}async function getEnsText(e,{blockNumber:t,blockTag:n,name:o,key:i,gatewayUrls:s,strict:l,universalResolverAddress:c}){let u=c;if(!u){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");u=(0,ee.L)({blockNumber:t,chain:e.chain,contract:"ensUniversalResolver"})}try{let l={address:u,abi:Z.k3,functionName:"resolve",args:[(0,Q.NC)(packetToBytes(o)),(0,$.R)({abi:Z.nZ,functionName:"text",args:[namehash(o),i]})],blockNumber:t,blockTag:n},c=getAction_getAction(e,readContract,"readContract"),d=s?await c({...l,args:[...l.args,s]}):await c(l);if("0x"===d[0])return null;let p=(0,Y.k)({abi:Z.nZ,functionName:"text",data:d[0]});return""===p?null:p}catch(e){if(l)throw e;if(isNullUniversalResolverError(e,"resolve"))return null;throw e}}async function getEnsAvatar(e,{blockNumber:t,blockTag:n,assetGatewayUrls:o,name:i,gatewayUrls:s,strict:l,universalResolverAddress:c}){let u=await getAction_getAction(e,getEnsText,"getEnsText")({blockNumber:t,blockTag:n,key:"avatar",name:i,universalResolverAddress:c,gatewayUrls:s,strict:l});if(!u)return null;try{return await parseAvatarRecord(e,{record:u,gatewayUrls:o})}catch{return null}}var ex=n(66403);async function getEnsName(e,{address:t,blockNumber:n,blockTag:o,gatewayUrls:i,strict:s,universalResolverAddress:l}){let c=l;if(!c){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");c=(0,ee.L)({blockNumber:n,chain:e.chain,contract:"ensUniversalResolver"})}let u=`${t.toLowerCase().substring(2)}.addr.reverse`;try{let s={address:c,abi:Z.du,functionName:"reverse",args:[(0,Q.NC)(packetToBytes(u))],blockNumber:n,blockTag:o},l=getAction_getAction(e,readContract,"readContract"),[d,p]=i?await l({...s,args:[...s.args,i]}):await l(s);if(t.toLowerCase()!==p.toLowerCase())return null;return d}catch(e){if(s)throw e;if(isNullUniversalResolverError(e,"reverse"))return null;throw e}}async function getEnsAddress(e,{blockNumber:t,blockTag:n,coinType:o,name:i,gatewayUrls:s,strict:l,universalResolverAddress:c}){let u=c;if(!u){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");u=(0,ee.L)({blockNumber:t,chain:e.chain,contract:"ensUniversalResolver"})}try{let l=(0,$.R)({abi:Z.X$,functionName:"addr",...null!=o?{args:[namehash(i),BigInt(o)]}:{args:[namehash(i)]}}),c={address:u,abi:Z.k3,functionName:"resolve",args:[(0,Q.NC)(packetToBytes(i)),l],blockNumber:t,blockTag:n},d=getAction_getAction(e,readContract,"readContract"),p=s?await d({...c,args:[...c.args,s]}):await d(c);if("0x"===p[0])return null;let f=(0,Y.k)({abi:Z.X$,args:null!=o?[namehash(i),BigInt(o)]:void 0,functionName:"addr",data:p[0]});if("0x"===f||"0x00"===(0,W.f)(f))return null;return f}catch(e){if(l)throw e;if(isNullUniversalResolverError(e,"resolve"))return null;throw e}}async function getEnsResolver(e,{blockNumber:t,blockTag:n,name:o,universalResolverAddress:i}){let s=i;if(!s){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");s=(0,ee.L)({blockNumber:t,chain:e.chain,contract:"ensUniversalResolver"})}let[l]=await getAction_getAction(e,readContract,"readContract")({address:s,abi:[{inputs:[{type:"bytes"}],name:"findResolver",outputs:[{type:"address"},{type:"bytes32"}],stateMutability:"view",type:"function"}],functionName:"findResolver",args:[(0,Q.NC)(packetToBytes(o))],blockNumber:t,blockTag:n});return l}function createFilterRequestScope(e,{method:t}){let n={};return"fallback"===e.transport.type&&e.transport.onResponse?.(({method:e,response:o,status:i,transport:s})=>{"success"===i&&t===e&&(n[o]=s.request)}),t=>n[t]||e.request}async function createBlockFilter(e){let t=createFilterRequestScope(e,{method:"eth_newBlockFilter"}),n=await e.request({method:"eth_newBlockFilter"});return{id:n,request:t(n),type:"block"}}let FilterTypeNotSupportedError=class FilterTypeNotSupportedError extends X.G{constructor(e){super(`Filter type "${e}" is not supported.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FilterTypeNotSupportedError"})}};var eA=n(96005),ek=n(45444),eB=n(80522),eS=n(40840);let eI="/docs/contract/encodeEventTopics";function encodeEventTopics(e){let{abi:t,eventName:n,args:o}=e,i=t[0];if(n){let e=(0,eS.mE)({abi:t,name:n});if(!e)throw new J.mv(n,{docsPath:eI});i=e}if("event"!==i.type)throw new J.mv(void 0,{docsPath:eI});let s=(0,eB.t)(i),l=(0,eA.n)(s),c=[];if(o&&"inputs"in i){let e=i.inputs?.filter(e=>"indexed"in e&&e.indexed),t=Array.isArray(o)?o:Object.values(o).length>0?e?.map(e=>o[e.name])??[]:[];t.length>0&&(c=e?.map((e,n)=>Array.isArray(t[n])?t[n].map((o,i)=>encodeArg({param:e,value:t[n][i]})):t[n]?encodeArg({param:e,value:t[n]}):null)??[])}return[l,...c]}function encodeArg({param:e,value:t}){if("string"===e.type||"bytes"===e.type)return(0,eC.w)((0,ew.O0)(t));if("tuple"===e.type||e.type.match(/^(.*)\[(\d+)?\]$/))throw new FilterTypeNotSupportedError(e.type);return(0,ek.E)([e],[t])}async function createContractEventFilter(e,t){let{address:n,abi:o,args:i,eventName:s,fromBlock:l,strict:c,toBlock:u}=t,d=createFilterRequestScope(e,{method:"eth_newFilter"}),p=s?encodeEventTopics({abi:o,args:i,eventName:s}):void 0,f=await e.request({method:"eth_newFilter",params:[{address:n,fromBlock:"bigint"==typeof l?(0,Q.eC)(l):l,toBlock:"bigint"==typeof u?(0,Q.eC)(u):u,topics:p}]});return{abi:o,args:i,eventName:s,id:f,request:d(f),strict:!!c,type:"event"}}async function createEventFilter(e,{address:t,args:n,event:o,events:i,fromBlock:s,strict:l,toBlock:c}={}){let u=i??(o?[o]:void 0),d=createFilterRequestScope(e,{method:"eth_newFilter"}),p=[];u&&(p=[u.flatMap(e=>encodeEventTopics({abi:[e],eventName:e.name,args:n}))],o&&(p=p[0]));let f=await e.request({method:"eth_newFilter",params:[{address:t,fromBlock:"bigint"==typeof s?(0,Q.eC)(s):s,toBlock:"bigint"==typeof c?(0,Q.eC)(c):c,...p.length?{topics:p}:{}}]});return{abi:u,args:n,eventName:o?o.name:void 0,fromBlock:s,id:f,request:d(f),strict:!!l,toBlock:c,type:"event"}}async function createPendingTransactionFilter(e){let t=createFilterRequestScope(e,{method:"eth_newPendingTransactionFilter"}),n=await e.request({method:"eth_newPendingTransactionFilter"});return{id:n,request:t(n),type:"transaction"}}var ej=n(14503),eT=n(39625),eP=n(67795),eM=n(33639);let EstimateGasExecutionError=class EstimateGasExecutionError extends X.G{constructor(e,{account:t,docsPath:n,chain:o,data:i,gas:s,gasPrice:l,maxFeePerGas:c,maxPriorityFeePerGas:u,nonce:d,to:p,value:f}){let m=(0,eM.xr)({from:t?.address,to:p,value:void 0!==f&&`${(0,eT.d)(f)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:i,gas:s,gasPrice:void 0!==l&&`${(0,eP.o)(l)} gwei`,maxFeePerGas:void 0!==c&&`${(0,eP.o)(c)} gwei`,maxPriorityFeePerGas:void 0!==u&&`${(0,eP.o)(u)} gwei`,nonce:d});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",m].filter(Boolean)}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EstimateGasExecutionError"}),this.cause=e}};var eO=n(26445),eR=n(87469),eU=n(61163),eF=n(74688),eN=n(47531);let BaseFeeScalarError=class BaseFeeScalarError extends X.G{constructor(){super("`baseFeeMultiplier` must be greater than 1."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseFeeScalarError"})}};let Eip1559FeesNotSupportedError=class Eip1559FeesNotSupportedError extends X.G{constructor(){super("Chain does not support EIP-1559 fees."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Eip1559FeesNotSupportedError"})}};let MaxFeePerGasTooLowError=class MaxFeePerGasTooLowError extends X.G{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${(0,eP.o)(e)} gwei).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"MaxFeePerGasTooLowError"})}};let BlockNotFoundError=class BlockNotFoundError extends X.G{constructor({blockHash:e,blockNumber:t}){let n="Block";e&&(n=`Block at hash "${e}"`),t&&(n=`Block at number "${t}"`),super(`${n} could not be found.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BlockNotFoundError"})}};var eD=n(43310);async function getBlock(e,{blockHash:t,blockNumber:n,blockTag:o,includeTransactions:i}={}){let s=i??!1,l=void 0!==n?(0,Q.eC)(n):void 0,c=null;if(!(c=t?await e.request({method:"eth_getBlockByHash",params:[t,s]}):await e.request({method:"eth_getBlockByNumber",params:[l||(o??"latest"),s]})))throw new BlockNotFoundError({blockHash:t,blockNumber:n});let u=e.chain?.formatters?.block?.format||eD.Z;return u(c)}async function getGasPrice(e){let t=await e.request({method:"eth_gasPrice"});return BigInt(t)}async function estimateMaxPriorityFeePerGas(e,t){return internal_estimateMaxPriorityFeePerGas(e,t)}async function internal_estimateMaxPriorityFeePerGas(e,t){let{block:n,chain:o=e.chain,request:i}=t||{};if("function"==typeof o?.fees?.defaultPriorityFee){let t=n||await getAction_getAction(e,getBlock,"getBlock")({});return o.fees.defaultPriorityFee({block:t,client:e,request:i})}if(void 0!==o?.fees?.defaultPriorityFee)return o?.fees?.defaultPriorityFee;try{let t=await e.request({method:"eth_maxPriorityFeePerGas"});return(0,G.y_)(t)}catch{let[t,o]=await Promise.all([n?Promise.resolve(n):getAction_getAction(e,getBlock,"getBlock")({}),getAction_getAction(e,getGasPrice,"getGasPrice")({})]);if("bigint"!=typeof t.baseFeePerGas)throw new Eip1559FeesNotSupportedError;let i=o-t.baseFeePerGas;if(i<0n)return 0n;return i}}async function estimateFeesPerGas(e,t){return internal_estimateFeesPerGas(e,t)}async function internal_estimateFeesPerGas(e,t){let{block:n,chain:o=e.chain,request:i,type:s="eip1559"}=t||{},l=await (async()=>"function"==typeof o?.fees?.baseFeeMultiplier?o.fees.baseFeeMultiplier({block:n,client:e,request:i}):o?.fees?.baseFeeMultiplier??1.2)();if(l<1)throw new BaseFeeScalarError;let c=l.toString().split(".")[1]?.length??0,u=10**c,multiply=e=>e*BigInt(Math.ceil(l*u))/BigInt(u),d=n||await getAction_getAction(e,getBlock,"getBlock")({});if("function"==typeof o?.fees?.estimateFeesPerGas)return o.fees.estimateFeesPerGas({block:n,client:e,multiply,request:i,type:s});if("eip1559"===s){if("bigint"!=typeof d.baseFeePerGas)throw new Eip1559FeesNotSupportedError;let t="bigint"==typeof i?.maxPriorityFeePerGas?i.maxPriorityFeePerGas:await internal_estimateMaxPriorityFeePerGas(e,{block:d,chain:o,request:i}),n=multiply(d.baseFeePerGas),s=i?.maxFeePerGas??n+t;return{maxFeePerGas:s,maxPriorityFeePerGas:t}}let p=i?.gasPrice??multiply(await getAction_getAction(e,getGasPrice,"getGasPrice")({}));return{gasPrice:p}}async function getTransactionCount(e,{address:t,blockTag:n="latest",blockNumber:o}){let i=await e.request({method:"eth_getTransactionCount",params:[t,o?(0,Q.eC)(o):n]});return(0,G.ly)(i)}var e_=n(82994);async function getChainId_getChainId(e){let t=await e.request({method:"eth_chainId"});return(0,G.ly)(t)}async function prepareTransactionRequest(e,t){let{account:n=e.account,chain:o,chainId:i,gas:s,nonce:l,parameters:c=["chainId","fees","gas","nonce","type"],type:u}=t,d=n?(0,ej.T)(n):void 0,p=await getAction_getAction(e,getBlock,"getBlock")({blockTag:"latest"}),f={...t,...d?{from:d?.address}:{}};if(c.includes("chainId")&&(o?f.chainId=o.id:void 0!==i?f.chainId=i:f.chainId=await getAction_getAction(e,getChainId_getChainId,"getChainId")({})),c.includes("nonce")&&void 0===l&&d&&(f.nonce=await getAction_getAction(e,getTransactionCount,"getTransactionCount")({address:d.address,blockTag:"pending"})),(c.includes("fees")||c.includes("type"))&&void 0===u)try{f.type=(0,e_.l)(f)}catch{f.type="bigint"==typeof p.baseFeePerGas?"eip1559":"legacy"}if(c.includes("fees")){if("eip1559"===f.type||"eip4844"===f.type){let{maxFeePerGas:n,maxPriorityFeePerGas:i}=await internal_estimateFeesPerGas(e,{block:p,chain:o,request:f});if(void 0===t.maxPriorityFeePerGas&&t.maxFeePerGas&&t.maxFeePerGas{let t=(0,eR.k)(e,n);return t instanceof eO.cj?e:t})();return new EstimateGasExecutionError(o,{docsPath:t,...n})}(n,{...t,account:o,chain:e.chain})}}async function estimateContractGas(e,t){let{abi:n,address:o,args:i,functionName:s,...l}=t,c=(0,$.R)({abi:n,args:i,functionName:s});try{let t=await getAction_getAction(e,estimateGas,"estimateGas")({data:c,to:o,...l});return t}catch(t){let e=l.account?(0,ej.T)(l.account):void 0;throw getContractError(t,{abi:n,address:o,args:i,docsPath:"/docs/contract/estimateContractGas",functionName:s,sender:e?.address})}}async function getBlobBaseFee(e){let t=await e.request({method:"eth_blobBaseFee"});return BigInt(t)}let eL=new Map,ez=new Map;async function withCache(e,{cacheKey:t,cacheTime:n=1/0}){let o=function(e){let buildCache=(e,t)=>({clear:()=>t.delete(e),get:()=>t.get(e),set:n=>t.set(e,n)}),t=buildCache(e,eL),n=buildCache(e,ez);return{clear:()=>{t.clear(),n.clear()},promise:t,response:n}}(t),i=o.response.get();if(i&&n>0){let e=new Date().getTime()-i.created.getTime();if(e`blockNumber.${e}`;async function getBlockNumber(e,{cacheTime:t=e.cacheTime}={}){let n=await withCache(()=>e.request({method:"eth_blockNumber"}),{cacheKey:cacheKey(e.uid),cacheTime:t});return BigInt(n)}async function getBlockTransactionCount(e,{blockHash:t,blockNumber:n,blockTag:o="latest"}={}){let i;let s=void 0!==n?(0,Q.eC)(n):void 0;return i=t?await e.request({method:"eth_getBlockTransactionCountByHash",params:[t]}):await e.request({method:"eth_getBlockTransactionCountByNumber",params:[s||o]}),(0,G.ly)(i)}async function getBytecode(e,{address:t,blockNumber:n,blockTag:o="latest"}){let i=void 0!==n?(0,Q.eC)(n):void 0,s=await e.request({method:"eth_getCode",params:[t,i||o]});if("0x"!==s)return s}var eq=n(39135),eG=n(66238),eW=n(78398);let eH="/docs/contract/decodeEventLog";function decodeEventLog(e){let{abi:t,data:n,strict:o,topics:i}=e,s=o??!0,[l,...c]=i;if(!l)throw new J.FM({docsPath:eH});let u=t.find(e=>"event"===e.type&&l===(0,eA.n)((0,eB.t)(e)));if(!(u&&"name"in u)||"event"!==u.type)throw new J.lC(l,{docsPath:eH});let{name:d,inputs:p}=u,f=p?.some(e=>!("name"in e&&e.name)),m=f?[]:{},b=p.filter(e=>"indexed"in e&&e.indexed);for(let e=0;e!("indexed"in e&&e.indexed));if(g.length>0){if(n&&"0x"!==n)try{let e=(0,eW.r)(g,n);if(e){if(f)m=[...m,...e];else for(let t=0;t0?m:void 0}}function parseEventLogs({abi:e,eventName:t,logs:n,strict:o=!0}){return n.map(n=>{try{let i=decodeEventLog({...n,abi:e,strict:o});if(t&&!t.includes(i.eventName))return null;return{...i,...n}}catch(i){let e,t;if(i instanceof J.lC)return null;if(i instanceof J.SM||i instanceof J.Gy){if(o)return null;e=i.abiItem.name,t=i.abiItem.inputs?.some(e=>!("name"in e&&e.name))}return{...n,args:t?[]:{},eventName:e}}}).filter(Boolean)}var eQ=n(53992);async function getLogs(e,{address:t,blockHash:n,fromBlock:o,toBlock:i,event:s,events:l,args:c,strict:u}={}){let d;let p=u??!1,f=l??(s?[s]:void 0),m=[];f&&(m=[f.flatMap(e=>encodeEventTopics({abi:[e],eventName:e.name,args:c}))],s&&(m=m[0])),d=n?await e.request({method:"eth_getLogs",params:[{address:t,topics:m,blockHash:n}]}):await e.request({method:"eth_getLogs",params:[{address:t,topics:m,fromBlock:"bigint"==typeof o?(0,Q.eC)(o):o,toBlock:"bigint"==typeof i?(0,Q.eC)(i):i}]});let b=d.map(e=>(0,eQ.U)(e));return f?parseEventLogs({abi:f,logs:b,strict:p}):b}async function getContractEvents(e,t){let{abi:n,address:o,args:i,blockHash:s,eventName:l,fromBlock:c,toBlock:u,strict:d}=t,p=l?(0,eS.mE)({abi:n,name:l}):void 0,f=p?void 0:n.filter(e=>"event"===e.type);return getAction_getAction(e,getLogs,"getLogs")({address:o,args:i,blockHash:s,event:p,events:f,fromBlock:c,toBlock:u,strict:d})}async function getFeeHistory(e,{blockCount:t,blockNumber:n,blockTag:o="latest",rewardPercentiles:i}){let s=n?(0,Q.eC)(n):void 0,l=await e.request({method:"eth_feeHistory",params:[(0,Q.eC)(t),s||o,i]});return{baseFeePerGas:l.baseFeePerGas.map(e=>BigInt(e)),gasUsedRatio:l.gasUsedRatio,oldestBlock:BigInt(l.oldestBlock),reward:l.reward?.map(e=>e.map(e=>BigInt(e)))}}async function getFilterChanges(e,{filter:t}){let n="strict"in t&&t.strict,o=await t.request({method:"eth_getFilterChanges",params:[t.id]});if("string"==typeof o[0])return o;let i=o.map(e=>(0,eQ.U)(e));return"abi"in t&&t.abi?parseEventLogs({abi:t.abi,logs:i,strict:n}):i}async function getFilterLogs(e,{filter:t}){let n=t.strict??!1,o=await t.request({method:"eth_getFilterLogs",params:[t.id]}),i=o.map(e=>(0,eQ.U)(e));return t.abi?parseEventLogs({abi:t.abi,logs:i,strict:n}):i}async function getProof(e,{address:t,blockNumber:n,blockTag:o,storageKeys:i}){let s=void 0!==n?(0,Q.eC)(n):void 0,l=await e.request({method:"eth_getProof",params:[t,i,s||(o??"latest")]});return{...l,balance:l.balance?BigInt(l.balance):void 0,nonce:l.nonce?(0,G.ly)(l.nonce):void 0,storageProof:l.storageProof?l.storageProof.map(e=>({...e,value:BigInt(e.value)})):void 0}}async function getStorageAt(e,{address:t,blockNumber:n,blockTag:o="latest",slot:i}){let s=void 0!==n?(0,Q.eC)(n):void 0,l=await e.request({method:"eth_getStorageAt",params:[t,i,s||o]});return l}var eK=n(6073);async function getTransaction(e,{blockHash:t,blockNumber:n,blockTag:o,hash:i,index:s}){let l=o||"latest",c=void 0!==n?(0,Q.eC)(n):void 0,u=null;if(i?u=await e.request({method:"eth_getTransactionByHash",params:[i]}):t?u=await e.request({method:"eth_getTransactionByBlockHashAndIndex",params:[t,(0,Q.eC)(s)]}):(c||l)&&(u=await e.request({method:"eth_getTransactionByBlockNumberAndIndex",params:[c||l,(0,Q.eC)(s)]})),!u)throw new eM.Bh({blockHash:t,blockNumber:n,blockTag:l,hash:i,index:s});let d=e.chain?.formatters?.transaction?.format||eK.Tr;return d(u)}async function getTransactionConfirmations(e,{hash:t,transactionReceipt:n}){let[o,i]=await Promise.all([getAction_getAction(e,getBlockNumber,"getBlockNumber")({}),t?getAction_getAction(e,getTransaction,"getBlockNumber")({hash:t}):void 0]),s=n?.blockNumber||i?.blockNumber;return s?o-s+1n:0n}var eV=n(30866);async function getTransactionReceipt(e,{hash:t}){let n=await e.request({method:"eth_getTransactionReceipt",params:[t]});if(!n)throw new eM.Yb({hash:t});let o=e.chain?.formatters?.transactionReceipt?.format||eV.f;return o(n)}async function simulateContract(e,t){let{abi:n,address:o,args:i,dataSuffix:s,functionName:l,...c}=t,u=c.account?(0,ej.T)(c.account):e.account,d=(0,$.R)({abi:n,args:i,functionName:l});try{let{data:p}=await getAction_getAction(e,er.RE,"call")({batch:!1,data:`${d}${s?s.replace("0x",""):""}`,to:o,...c,account:u}),f=(0,Y.k)({abi:n,args:i,functionName:l,data:p||"0x"}),m=n.filter(e=>"name"in e&&e.name===t.functionName);return{result:f,request:{abi:m,address:o,args:i,dataSuffix:s,functionName:l,...c,account:u}}}catch(e){throw getContractError(e,{abi:n,address:o,args:i,docsPath:"/docs/contract/simulateContract",functionName:l,sender:u?.address})}}async function uninstallFilter(e,{filter:t}){return t.request({method:"eth_uninstallFilter",params:[t.id]})}var eZ=n(27499);let eJ="/docs/contract/encodeDeployData";async function verifyHash(e,{address:t,hash:n,signature:o,...i}){let s=(0,eE.v)(o)?o:(0,Q.NC)(o);try{let{data:o}=await getAction_getAction(e,er.RE,"call")({data:function(e){let{abi:t,args:n,bytecode:o}=e;if(!n||0===n.length)return o;let i=t.find(e=>"type"in e&&"constructor"===e.type);if(!i)throw new J.fM({docsPath:eJ});if(!("inputs"in i)||!i.inputs||0===i.inputs.length)throw new J.cO({docsPath:eJ});let s=(0,ek.E)(i.inputs,n);return(0,ev.SM)([o,s])}({abi:Z.$o,args:[t,n,s],bytecode:"0x60806040523480156200001157600080fd5b50604051620007003803806200070083398101604081905262000034916200056f565b6000620000438484846200004f565b9050806000526001601ff35b600080846001600160a01b0316803b806020016040519081016040528181526000908060200190933c90507f6492649264926492649264926492649264926492649264926492649264926492620000a68462000451565b036200021f57600060608085806020019051810190620000c79190620005ce565b8651929550909350915060000362000192576000836001600160a01b031683604051620000f5919062000643565b6000604051808303816000865af19150503d806000811462000134576040519150601f19603f3d011682016040523d82523d6000602084013e62000139565b606091505b5050905080620001905760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b505b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90620001c4908b90869060040162000661565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200069d565b6001600160e01b031916149450505050506200044a565b805115620002b157604051630b135d3f60e11b808252906001600160a01b03871690631626ba7e9062000259908890889060040162000661565b602060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d91906200069d565b6001600160e01b031916149150506200044a565b8251604114620003195760405162461bcd60e51b815260206004820152603a6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e677468000000000000606482015260840162000187565b620003236200046b565b506020830151604080850151855186939260009185919081106200034b576200034b620006c9565b016020015160f81c9050601b81148015906200036b57508060ff16601c14155b15620003cf5760405162461bcd60e51b815260206004820152603b6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c75650000000000606482015260840162000187565b6040805160008152602081018083528a905260ff83169181019190915260608101849052608081018390526001600160a01b038a169060019060a0016020604051602081039080840390855afa1580156200042e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614955050505050505b9392505050565b60006020825110156200046357600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146200049f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004d5578181015183820152602001620004bb565b50506000910152565b600082601f830112620004f057600080fd5b81516001600160401b03808211156200050d576200050d620004a2565b604051601f8301601f19908116603f01168101908282118183101715620005385762000538620004a2565b816040528381528660208588010111156200055257600080fd5b62000565846020830160208901620004b8565b9695505050505050565b6000806000606084860312156200058557600080fd5b8351620005928162000489565b6020850151604086015191945092506001600160401b03811115620005b657600080fd5b620005c486828701620004de565b9150509250925092565b600080600060608486031215620005e457600080fd5b8351620005f18162000489565b60208501519093506001600160401b03808211156200060f57600080fd5b6200061d87838801620004de565b935060408601519150808211156200063457600080fd5b50620005c486828701620004de565b6000825162000657818460208701620004b8565b9190910192915050565b828152604060208201526000825180604084015262000688816060850160208701620004b8565b601f01601f1916919091016060019392505050565b600060208284031215620006b057600080fd5b81516001600160e01b0319811681146200044a57600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572"}),...i});return function(e,t){let n=(0,eE.v)(e)?(0,ew.O0)(e):e,o=(0,eE.v)(t)?(0,ew.O0)(t):t;return(0,eZ.Wd)(n,o)}(o??"0x0","0x1")}catch(e){if(e instanceof q.cg)return!1;throw e}}async function verifyMessage(e,{address:t,message:n,signature:o,...i}){let s=function(e,t){let n="string"==typeof e?(0,ew.qX)(e):e.raw instanceof Uint8Array?e.raw:(0,ew.O0)(e.raw),o=(0,ew.qX)(`Ethereum Signed Message: -${n.length}`);return(0,eC.w)((0,ev.zo)([o,n]),void 0)}(n);return verifyHash(e,{address:t,hash:s,signature:o,...i})}var eX=n(26087),eY=n(60480);let e$=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,e0=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function hashStruct({data:e,primaryType:t,types:n}){let o=function encodeData({data:e,primaryType:t,types:n}){let o=[{type:"bytes32"}],i=[function({primaryType:e,types:t}){let n=(0,Q.NC)(function({primaryType:e,types:t}){let n="",o=function findTypeDependencies({primaryType:e,types:t},n=new Set){let o=e.match(/^\w*/u),i=o?.[0];if(n.has(i)||void 0===t[i])return n;for(let e of(n.add(i),t[i]))findTypeDependencies({primaryType:e.type,types:t},n);return n}({primaryType:e,types:t});o.delete(e);let i=[e,...Array.from(o).sort()];for(let e of i)n+=`${e}(${t[e].map(({name:e,type:t})=>`${t} ${e}`).join(",")})`;return n}({primaryType:e,types:t}));return(0,eC.w)(n)}({primaryType:t,types:n})];for(let s of n[t]){let[t,l]=function encodeField({types:e,name:t,type:n,value:o}){if(void 0!==e[n])return[{type:"bytes32"},(0,eC.w)(encodeData({data:o,primaryType:n,types:e}))];if("bytes"===n){let e=o.length%2?"0":"";return o=`0x${e+o.slice(2)}`,[{type:"bytes32"},(0,eC.w)(o)]}if("string"===n)return[{type:"bytes32"},(0,eC.w)((0,Q.NC)(o))];if(n.lastIndexOf("]")===n.length-1){let i=n.slice(0,n.lastIndexOf("[")),s=o.map(n=>encodeField({name:t,type:i,types:e,value:n}));return[{type:"bytes32"},(0,eC.w)((0,ek.E)(s.map(([e])=>e),s.map(([,e])=>e)))]}return[{type:n},o]}({types:n,name:s.name,type:s.type,value:e[s.name]});o.push(t),i.push(l)}return(0,ek.E)(o,i)}({data:e,primaryType:t,types:n});return(0,eC.w)(o)}async function verifyTypedData(e,t){let{address:n,signature:o,message:i,primaryType:s,types:l,domain:c,...u}=t,d=function(e){let{domain:t={},message:n,primaryType:o}=e,i={EIP712Domain:function({domain:e}){return["string"==typeof e?.name&&{name:"name",type:"string"},e?.version&&{name:"version",type:"string"},"number"==typeof e?.chainId&&{name:"chainId",type:"uint256"},e?.verifyingContract&&{name:"verifyingContract",type:"address"},e?.salt&&{name:"salt",type:"bytes32"}].filter(Boolean)}({domain:t}),...e.types};!function(e){let{domain:t,message:n,primaryType:o,types:i}=e,validateData=(e,t)=>{for(let n of e){let{name:e,type:o}=n,s=t[e],l=o.match(e0);if(l&&("number"==typeof s||"bigint"==typeof s)){let[e,t,n]=l;(0,Q.eC)(s,{signed:"int"===t,size:parseInt(n)/8})}if("address"===o&&"string"==typeof s&&!(0,eY.U)(s))throw new eX.b({address:s});let c=o.match(e$);if(c){let[e,t]=c;if(t&&(0,eq.d)(s)!==parseInt(t))throw new J.KY({expectedSize:parseInt(t),givenSize:(0,eq.d)(s)})}let u=i[o];u&&validateData(u,s)}};if(i.EIP712Domain&&t&&validateData(i.EIP712Domain,t),"EIP712Domain"!==o){let e=i[o];validateData(e,n)}}({domain:t,message:n,primaryType:o,types:i});let s=["0x1901"];return t&&s.push(function({domain:e,types:t}){return hashStruct({data:e,primaryType:"EIP712Domain",types:t})}({domain:t,types:i})),"EIP712Domain"!==o&&s.push(hashStruct({data:n,primaryType:o,types:i})),(0,eC.w)((0,ev.zo)(s))}({message:i,primaryType:s,types:l,domain:c});return verifyHash(e,{address:n,hash:d,signature:o,...u})}let e1=new Map,e6=new Map,e3=0;function observe(e,t,n){let o=++e3,getListeners=()=>e1.get(e)||[],unsubscribe=()=>{let t=getListeners();e1.set(e,t.filter(e=>e.id!==o))},unwatch=()=>{let t=e6.get(e);1===getListeners().length&&t&&t(),unsubscribe()},i=getListeners();if(e1.set(e,[...i,{id:o,fns:t}]),i&&i.length>0)return unwatch;let s={};for(let e in t)s[e]=(...t)=>{let n=getListeners();if(0!==n.length)for(let o of n)o.fns[e]?.(...t)};let l=n(s);return"function"==typeof l&&e6.set(e,l),unwatch}var e2=n(7760),e7=n(96070),e8=n(62914);function poll(e,{emitOnBegin:t,initialWaitTime:n,interval:o}){let i=!0,unwatch=()=>i=!1,watch=async()=>{let s;t&&(s=await e({unpoll:unwatch}));let l=await n?.(s)??o;await (0,e8.D)(l);let poll=async()=>{i&&(await e({unpoll:unwatch}),await (0,e8.D)(o),poll())};poll()};return watch(),unwatch}function watchBlockNumber(e,{emitOnBegin:t=!1,emitMissed:n=!1,onBlockNumber:o,onError:i,poll:s,pollingInterval:l=e.pollingInterval}){let c;let u=void 0!==s?s:"webSocket"!==e.transport.type;return u?(()=>{let s=(0,e7.P)(["watchBlockNumber",e.uid,t,n,l]);return observe(s,{onBlockNumber:o,onError:i},o=>poll(async()=>{try{let t=await getAction_getAction(e,getBlockNumber,"getBlockNumber")({cacheTime:0});if(c){if(t===c)return;if(t-c>1&&n)for(let e=c+1n;ec)&&(o.onBlockNumber(t,c),c=t)}catch(e){o.onError?.(e)}},{emitOnBegin:t,interval:l}))})():(()=>{let s=(0,e7.P)(["watchBlockNumber",e.uid,t,n]);return observe(s,{onBlockNumber:o,onError:i},t=>{let n=!0,unsubscribe=()=>n=!1;return(async()=>{try{let{unsubscribe:o}=await e.transport.subscribe({params:["newHeads"],onData(e){if(!n)return;let o=(0,G.y_)(e.result?.number);t.onBlockNumber(o,c),c=o},onError(e){t.onError?.(e)}});unsubscribe=o,n||unsubscribe()}catch(e){i?.(e)}})(),()=>unsubscribe()})})()}async function waitForTransactionReceipt(e,{confirmations:t=1,hash:n,onReplaced:o,pollingInterval:i=e.pollingInterval,retryCount:s=6,retryDelay:l=({count:e})=>200*~~(1<{c&&setTimeout(()=>g(new eM.mc({hash:n})),c);let y=observe(f,{onReplaced:o,resolve:b,reject:g},o=>{let c=getAction_getAction(e,watchBlockNumber,"watchBlockNumber")({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:i,async onBlockNumber(i){if(m)return;let f=i,done=e=>{c(),e(),y()};try{if(p){if(t>1&&(!p.blockNumber||f-p.blockNumber+1no.resolve(p));return}if(u||(m=!0,await (0,e2.J)(async()=>{(u=await getAction_getAction(e,getTransaction,"getTransaction")({hash:n})).blockNumber&&(f=u.blockNumber)},{delay:l,retryCount:s}),m=!1),p=await getAction_getAction(e,getTransactionReceipt,"getTransactionReceipt")({hash:n}),t>1&&(!p.blockNumber||f-p.blockNumber+1no.resolve(p))}catch(n){if(n instanceof eM.Bh||n instanceof eM.Yb){if(!u){m=!1;return}try{d=u,m=!0;let n=await (0,e2.J)(()=>getAction_getAction(e,getBlock,"getBlock")({blockNumber:f,includeTransactions:!0}),{delay:l,retryCount:s,shouldRetry:({error:e})=>e instanceof BlockNotFoundError});m=!1;let i=n.transactions.find(({from:e,nonce:t})=>e===d.from&&t===d.nonce);if(!i||(p=await getAction_getAction(e,getTransactionReceipt,"getTransactionReceipt")({hash:i.hash}),t>1&&(!p.blockNumber||f-p.blockNumber+1n{o.onReplaced?.({reason:c,replacedTransaction:d,transaction:i,transactionReceipt:p}),o.resolve(p)})}catch(e){done(()=>o.reject(e))}}else done(()=>o.reject(n))}}})})})}async function sendRawTransaction(e,{serializedTransaction:t}){return e.request({method:"eth_sendRawTransaction",params:[t]},{retryCount:0})}function publicActions(e){return{call:t=>(0,er.RE)(e,t),createBlockFilter:()=>createBlockFilter(e),createContractEventFilter:t=>createContractEventFilter(e,t),createEventFilter:t=>createEventFilter(e,t),createPendingTransactionFilter:()=>createPendingTransactionFilter(e),estimateContractGas:t=>estimateContractGas(e,t),estimateGas:t=>estimateGas(e,t),getBalance:t=>getBalance(e,t),getBlobBaseFee:()=>getBlobBaseFee(e),getBlock:t=>getBlock(e,t),getBlockNumber:t=>getBlockNumber(e,t),getBlockTransactionCount:t=>getBlockTransactionCount(e,t),getBytecode:t=>getBytecode(e,t),getChainId:()=>getChainId_getChainId(e),getContractEvents:t=>getContractEvents(e,t),getEnsAddress:t=>getEnsAddress(e,t),getEnsAvatar:t=>getEnsAvatar(e,t),getEnsName:t=>getEnsName(e,t),getEnsResolver:t=>getEnsResolver(e,t),getEnsText:t=>getEnsText(e,t),getFeeHistory:t=>getFeeHistory(e,t),estimateFeesPerGas:t=>estimateFeesPerGas(e,t),getFilterChanges:t=>getFilterChanges(e,t),getFilterLogs:t=>getFilterLogs(e,t),getGasPrice:()=>getGasPrice(e),getLogs:t=>getLogs(e,t),getProof:t=>getProof(e,t),estimateMaxPriorityFeePerGas:t=>estimateMaxPriorityFeePerGas(e,t),getStorageAt:t=>getStorageAt(e,t),getTransaction:t=>getTransaction(e,t),getTransactionConfirmations:t=>getTransactionConfirmations(e,t),getTransactionCount:t=>getTransactionCount(e,t),getTransactionReceipt:t=>getTransactionReceipt(e,t),multicall:t=>multicall(e,t),prepareTransactionRequest:t=>prepareTransactionRequest(e,t),readContract:t=>readContract(e,t),sendRawTransaction:t=>sendRawTransaction(e,t),simulateContract:t=>simulateContract(e,t),verifyMessage:t=>verifyMessage(e,t),verifyTypedData:t=>verifyTypedData(e,t),uninstallFilter:t=>uninstallFilter(e,t),waitForTransactionReceipt:t=>waitForTransactionReceipt(e,t),watchBlocks:t=>(function(e,{blockTag:t="latest",emitMissed:n=!1,emitOnBegin:o=!1,onBlock:i,onError:s,includeTransactions:l,poll:c,pollingInterval:u=e.pollingInterval}){let d,p,f;let m=void 0!==c?c:"webSocket"!==e.transport.type,b=l??!1;return m?(()=>{let l=(0,e7.P)(["watchBlocks",e.uid,n,o,b,u]);return observe(l,{onBlock:i,onError:s},i=>poll(async()=>{try{let o=await getAction_getAction(e,getBlock,"getBlock")({blockTag:t,includeTransactions:b});if(o.number&&d?.number){if(o.number===d.number)return;if(o.number-d.number>1&&n)for(let t=d?.number+1n;td.number)&&(i.onBlock(o,d),d=o)}catch(e){i.onError?.(e)}},{emitOnBegin:o,interval:u}))})():(p=!0,f=()=>p=!1,(async()=>{try{let{unsubscribe:t}=await e.transport.subscribe({params:["newHeads"],onData(t){if(!p)return;let n=e.chain?.formatters?.block?.format||eD.Z,o=n(t.result);i(o,d),d=o},onError(e){s?.(e)}});f=t,p||f()}catch(e){s?.(e)}})(),()=>f())})(e,t),watchBlockNumber:t=>watchBlockNumber(e,t),watchContractEvent:t=>(function(e,t){let{abi:n,address:o,args:i,batch:s=!0,eventName:l,onError:c,onLogs:u,poll:d,pollingInterval:p=e.pollingInterval,strict:f}=t,m=void 0!==d?d:"webSocket"!==e.transport.type;return m?(()=>{let t=f??!1,d=(0,e7.P)(["watchContractEvent",o,i,s,e.uid,l,p,t]);return observe(d,{onLogs:u,onError:c},c=>{let u,d;let f=!1,m=poll(async()=>{if(!f){try{d=await getAction_getAction(e,createContractEventFilter,"createContractEventFilter")({abi:n,address:o,args:i,eventName:l,strict:t})}catch{}f=!0;return}try{let p;if(d)p=await getAction_getAction(e,getFilterChanges,"getFilterChanges")({filter:d});else{let s=await getAction_getAction(e,getBlockNumber,"getBlockNumber")({});p=u&&u!==s?await getAction_getAction(e,getContractEvents,"getContractEvents")({abi:n,address:o,args:i,eventName:l,fromBlock:u+1n,toBlock:s,strict:t}):[],u=s}if(0===p.length)return;if(s)c.onLogs(p);else for(let e of p)c.onLogs([e])}catch(e){d&&e instanceof et.yR&&(f=!1),c.onError?.(e)}},{emitOnBegin:!0,interval:p});return async()=>{d&&await getAction_getAction(e,uninstallFilter,"uninstallFilter")({filter:d}),m()}})})():(()=>{let t=(0,e7.P)(["watchContractEvent",o,i,s,e.uid,l,p,f??!1]),d=!0,unsubscribe=()=>d=!1;return observe(t,{onLogs:u,onError:c},t=>((async()=>{try{let s=l?encodeEventTopics({abi:n,eventName:l,args:i}):[],{unsubscribe:c}=await e.transport.subscribe({params:["logs",{address:o,topics:s}],onData(e){if(!d)return;let o=e.result;try{let{eventName:e,args:i}=decodeEventLog({abi:n,data:o.data,topics:o.topics,strict:f}),s=(0,eQ.U)(o,{args:i,eventName:e});t.onLogs([s])}catch(s){let e,n;if(s instanceof J.SM||s instanceof J.Gy){if(f)return;e=s.abiItem.name,n=s.abiItem.inputs?.some(e=>!("name"in e&&e.name))}let i=(0,eQ.U)(o,{args:n?[]:{},eventName:e});t.onLogs([i])}},onError(e){t.onError?.(e)}});unsubscribe=c,d||unsubscribe()}catch(e){c?.(e)}})(),()=>unsubscribe()))})()})(e,t),watchEvent:t=>(function(e,{address:t,args:n,batch:o=!0,event:i,events:s,onError:l,onLogs:c,poll:u,pollingInterval:d=e.pollingInterval,strict:p}){let f,m;let b=void 0!==u?u:"webSocket"!==e.transport.type,g=p??!1;return b?(()=>{let u=(0,e7.P)(["watchEvent",t,n,o,e.uid,i,d]);return observe(u,{onLogs:c,onError:l},l=>{let c,u;let p=!1,f=poll(async()=>{if(!p){try{u=await getAction_getAction(e,createEventFilter,"createEventFilter")({address:t,args:n,event:i,events:s,strict:g})}catch{}p=!0;return}try{let d;if(u)d=await getAction_getAction(e,getFilterChanges,"getFilterChanges")({filter:u});else{let o=await getAction_getAction(e,getBlockNumber,"getBlockNumber")({});d=c&&c!==o?await getAction_getAction(e,getLogs,"getLogs")({address:t,args:n,event:i,events:s,fromBlock:c+1n,toBlock:o}):[],c=o}if(0===d.length)return;if(o)l.onLogs(d);else for(let e of d)l.onLogs([e])}catch(e){u&&e instanceof et.yR&&(p=!1),l.onError?.(e)}},{emitOnBegin:!0,interval:d});return async()=>{u&&await getAction_getAction(e,uninstallFilter,"uninstallFilter")({filter:u}),f()}})})():(f=!0,m=()=>f=!1,(async()=>{try{let o=s??(i?[i]:void 0),u=[];o&&(u=[o.flatMap(e=>encodeEventTopics({abi:[e],eventName:e.name,args:n}))],i&&(u=u[0]));let{unsubscribe:d}=await e.transport.subscribe({params:["logs",{address:t,topics:u}],onData(e){if(!f)return;let t=e.result;try{let{eventName:e,args:n}=decodeEventLog({abi:o??[],data:t.data,topics:t.topics,strict:g}),i=(0,eQ.U)(t,{args:n,eventName:e});c([i])}catch(i){let e,n;if(i instanceof J.SM||i instanceof J.Gy){if(p)return;e=i.abiItem.name,n=i.abiItem.inputs?.some(e=>!("name"in e&&e.name))}let o=(0,eQ.U)(t,{args:n?[]:{},eventName:e});c([o])}},onError(e){l?.(e)}});m=d,f||m()}catch(e){l?.(e)}})(),()=>m())})(e,t),watchPendingTransactions:t=>(function(e,{batch:t=!0,onError:n,onTransactions:o,poll:i,pollingInterval:s=e.pollingInterval}){let l,c;let u=void 0!==i?i:"webSocket"!==e.transport.type;return u?(()=>{let i=(0,e7.P)(["watchPendingTransactions",e.uid,t,s]);return observe(i,{onTransactions:o,onError:n},n=>{let o;let i=poll(async()=>{try{if(!o)try{o=await getAction_getAction(e,createPendingTransactionFilter,"createPendingTransactionFilter")({});return}catch(e){throw i(),e}let s=await getAction_getAction(e,getFilterChanges,"getFilterChanges")({filter:o});if(0===s.length)return;if(t)n.onTransactions(s);else for(let e of s)n.onTransactions([e])}catch(e){n.onError?.(e)}},{emitOnBegin:!0,interval:s});return async()=>{o&&await getAction_getAction(e,uninstallFilter,"uninstallFilter")({filter:o}),i()}})})():(l=!0,c=()=>l=!1,(async()=>{try{let{unsubscribe:t}=await e.transport.subscribe({params:["newPendingTransactions"],onData(e){if(!l)return;let t=e.result;o([t])},onError(e){n?.(e)}});c=t,l||c()}catch(e){n?.(e)}})(),()=>c())})(e,t)}}function getPublicClient(e,t={}){let n=function(e,t={}){let n;try{n=e.getClient(t)}catch{}return n}(e,t);return n?.extend(publicActions)}var e5=n(52798),e4=n(33397);function useAccountEffect_useAccountEffect(e={}){let{onConnect:t,onDisconnect:n}=e,o=(0,z.Z)(e);(0,D.useEffect)(()=>(0,e4.u)(o,{onChange(e,o){if(("reconnecting"===o.status||"connecting"===o.status&&void 0===o.address)&&"connected"===e.status){let{address:n,addresses:i,chain:s,chainId:l,connector:c}=e,u="reconnecting"===o.status||void 0===o.status;t?.({address:n,addresses:i,chain:s,chainId:l,connector:c,isReconnected:u})}else"connected"===o.status&&"disconnected"===e.status&&n?.()}}),[o,t,n])}var e9=n(98029);async function disconnect(e,t={}){let n;if(t.connector)n=t.connector;else{let{connections:t,current:o}=e.state,i=t.get(o);n=i?.connector}let o=e.state.connections;n&&(await n.disconnect(),n.emitter.off("change",e._internal.events.change),n.emitter.off("disconnect",e._internal.events.disconnect),n.emitter.on("connect",e._internal.events.connect),o.delete(n.uid)),e.setState(e=>{if(0===o.size)return{...e,connections:new Map,current:void 0,status:"disconnected"};let t=o.values().next().value;return{...e,connections:new Map(o),current:t.connector.uid}});{let t=e.state.current;if(!t)return;let n=e.state.connections.get(t)?.connector;if(!n)return;await e.storage?.setItem("recentConnectorId",n.id)}}var te=n(74751);let tt=[];function getConnections(e){let t=[...e.state.connections.values()];return"reconnecting"===e.state.status||(0,te.v)(tt,t)?tt:(tt=t,t)}function useDisconnect(e={}){let{mutation:t}=e,n=(0,z.Z)(e),{mutate:o,mutateAsync:i,...s}=(0,e9.D)({...t,mutationFn:e=>disconnect(n,e),mutationKey:["disconnect"]});return{...s,connectors:(function(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e.subscribe(()=>getConnections(e),n,{equalityFn:te.v})})(t,{onChange:e}),()=>getConnections(t),()=>getConnections(t))})({config:n}).map(e=>e.connector),disconnect:o,disconnectAsync:i}}var tr=n(73935),tn=n(70655),ta="right-scroll-bar-position",to="width-before-scroll-bar";function assignRef(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var ti="undefined"!=typeof window?D.useLayoutEffect:D.useEffect,ts=new WeakMap,tl=(void 0===x&&(x={}),(void 0===A&&(A=function(e){return e}),k=[],B=!1,S={read:function(){if(B)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return k.length?k[k.length-1]:null},useMedium:function(e){var t=A(e,B);return k.push(t),function(){k=k.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(B=!0;k.length;){var t=k;k=[],t.forEach(e)}k={push:function(t){return e(t)},filter:function(){return k}}},assignMedium:function(e){B=!0;var t=[];if(k.length){var n=k;k=[],n.forEach(e),t=k}var executeQueue=function(){var n=t;t=[],n.forEach(e)},cycle=function(){return Promise.resolve().then(executeQueue)};cycle(),k={push:function(e){t.push(e),cycle()},filter:function(e){return t=t.filter(e),k}}}}).options=(0,tn.__assign)({async:!0,ssr:!1},x),S),nothing=function(){},tc=D.forwardRef(function(e,t){var n,o,i,s,l=D.useRef(null),c=D.useState({onScrollCapture:nothing,onWheelCapture:nothing,onTouchMoveCapture:nothing}),u=c[0],d=c[1],p=e.forwardProps,f=e.children,m=e.className,b=e.removeScrollBar,g=e.enabled,y=e.shards,v=e.sideCar,w=e.noIsolation,C=e.inert,E=e.allowPinchZoom,x=e.as,A=void 0===x?"div":x,k=e.gapMode,B=(0,tn.__rest)(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),S=(n=[l,t],o=function(e){return n.forEach(function(t){return assignRef(t,e)})},(i=(0,D.useState)(function(){return{value:null,callback:o,facade:{get current(){return i.value},set current(value){var e=i.value;e!==value&&(i.value=value,i.callback(value,e))}}}})[0]).callback=o,s=i.facade,ti(function(){var e=ts.get(s);if(e){var t=new Set(e),o=new Set(n),i=s.current;t.forEach(function(e){o.has(e)||assignRef(e,null)}),o.forEach(function(e){t.has(e)||assignRef(e,i)})}ts.set(s,n)},[n]),s),I=(0,tn.__assign)((0,tn.__assign)({},B),u);return D.createElement(D.Fragment,null,g&&D.createElement(v,{sideCar:tl,removeScrollBar:b,shards:y,noIsolation:w,inert:C,setCallbacks:d,allowPinchZoom:!!E,lockRef:l,gapMode:k}),p?D.cloneElement(D.Children.only(f),(0,tn.__assign)((0,tn.__assign)({},I),{ref:S})):D.createElement(A,(0,tn.__assign)({},I,{className:m,ref:S}),f))});tc.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},tc.classNames={fullWidth:to,zeroRight:ta};var SideCar=function(e){var t=e.sideCar,n=(0,tn.__rest)(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var o=t.read();if(!o)throw Error("Sidecar medium not found");return D.createElement(o,(0,tn.__assign)({},n))};SideCar.isSideCarExport=!0;var stylesheetSingleton=function(){var e=0,t=null;return{add:function(o){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=I||n.nc;return t&&e.setAttribute("nonce",t),e}())){var i,s;(i=t).styleSheet?i.styleSheet.cssText=o:i.appendChild(document.createTextNode(o)),s=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(s)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},styleHookSingleton=function(){var e=stylesheetSingleton();return function(t,n){D.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},styleSingleton=function(){var e=styleHookSingleton();return function(t){return e(t.styles,t.dynamic),null}},tu={left:0,top:0,right:0,gap:0},parse=function(e){return parseInt(e||"",10)||0},getOffset=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],o=t["padding"===e?"paddingTop":"marginTop"],i=t["padding"===e?"paddingRight":"marginRight"];return[parse(n),parse(o),parse(i)]},getGapWidth=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return tu;var t=getOffset(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-n+t[2]-t[0])}},td=styleSingleton(),tp="data-scroll-locked",getStyles=function(e,t,n,o){var i=e.left,s=e.top,l=e.right,c=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(o,";\n padding-right: ").concat(c,"px ").concat(o,";\n }\n body[").concat(tp,"] {\n overflow: hidden ").concat(o,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(o,";"),"margin"===n&&"\n padding-left: ".concat(i,"px;\n padding-top: ").concat(s,"px;\n padding-right: ").concat(l,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(c,"px ").concat(o,";\n "),"padding"===n&&"padding-right: ".concat(c,"px ").concat(o,";")].filter(Boolean).join(""),"\n }\n \n .").concat(ta," {\n right: ").concat(c,"px ").concat(o,";\n }\n \n .").concat(to," {\n margin-right: ").concat(c,"px ").concat(o,";\n }\n \n .").concat(ta," .").concat(ta," {\n right: 0 ").concat(o,";\n }\n \n .").concat(to," .").concat(to," {\n margin-right: 0 ").concat(o,";\n }\n \n body[").concat(tp,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(c,"px;\n }\n")},getCurrentUseCounter=function(){var e=parseInt(document.body.getAttribute(tp)||"0",10);return isFinite(e)?e:0},useLockAttribute=function(){D.useEffect(function(){return document.body.setAttribute(tp,(getCurrentUseCounter()+1).toString()),function(){var e=getCurrentUseCounter()-1;e<=0?document.body.removeAttribute(tp):document.body.setAttribute(tp,e.toString())}},[])},RemoveScrollBar=function(e){var t=e.noRelative,n=e.noImportant,o=e.gapMode,i=void 0===o?"margin":o;useLockAttribute();var s=D.useMemo(function(){return getGapWidth(i)},[i]);return D.createElement(td,{styles:getStyles(s,!t,i,n?"":"!important")})},th=!1;if("undefined"!=typeof window)try{var tf=Object.defineProperty({},"passive",{get:function(){return th=!0,!0}});window.addEventListener("test",tf,tf),window.removeEventListener("test",tf,tf)}catch(e){th=!1}var tm=!!th&&{passive:!1},elementCanBeScrolled=function(e,t){var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&"TEXTAREA"!==e.tagName&&"visible"===n[t])},locationCouldBeScrolled=function(e,t){var n=t.ownerDocument,o=t;do{if("undefined"!=typeof ShadowRoot&&o instanceof ShadowRoot&&(o=o.host),elementCouldBeScrolled(e,o)){var i=getScrollVariables(e,o);if(i[1]>i[2])return!0}o=o.parentNode}while(o&&o!==n.body);return!1},elementCouldBeScrolled=function(e,t){return"v"===e?elementCanBeScrolled(t,"overflowY"):elementCanBeScrolled(t,"overflowX")},getScrollVariables=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},handleScroll=function(e,t,n,o,i){var s,l=(s=window.getComputedStyle(t).direction,"h"===e&&"rtl"===s?-1:1),c=l*o,u=n.target,d=t.contains(u),p=!1,f=c>0,m=0,b=0;do{var g=getScrollVariables(e,u),y=g[0],v=g[1]-g[2]-l*y;(y||v)&&elementCouldBeScrolled(e,u)&&(m+=v,b+=y),u=u instanceof ShadowRoot?u.host:u.parentNode}while(!d&&u!==document.body||d&&(t.contains(u)||t===u));return f&&(i&&1>Math.abs(m)||!i&&c>m)?p=!0:!f&&(i&&1>Math.abs(b)||!i&&-c>b)&&(p=!0),p},getTouchXY=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},getDeltaXY=function(e){return[e.deltaX,e.deltaY]},extractRef=function(e){return e&&"current"in e?e.current:e},tb=0,tg=[],ty=(tl.useMedium(function(e){var t=D.useRef([]),n=D.useRef([0,0]),o=D.useRef(),i=D.useState(tb++)[0],s=D.useState(styleSingleton)[0],l=D.useRef(e);D.useEffect(function(){l.current=e},[e]),D.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var t=(0,tn.__spreadArray)([e.lockRef.current],(e.shards||[]).map(extractRef),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var c=D.useCallback(function(e,t){if("touches"in e&&2===e.touches.length)return!l.current.allowPinchZoom;var i,s=getTouchXY(e),c=n.current,u="deltaX"in e?e.deltaX:c[0]-s[0],d="deltaY"in e?e.deltaY:c[1]-s[1],p=e.target,f=Math.abs(u)>Math.abs(d)?"h":"v";if("touches"in e&&"h"===f&&"range"===p.type)return!1;var m=locationCouldBeScrolled(f,p);if(!m)return!0;if(m?i=f:(i="v"===f?"h":"v",m=locationCouldBeScrolled(f,p)),!m)return!1;if(!o.current&&"changedTouches"in e&&(u||d)&&(o.current=i),!i)return!0;var b=o.current||i;return handleScroll(b,t,e,"h"===b?u:d,!0)},[]),u=D.useCallback(function(e){if(tg.length&&tg[tg.length-1]===s){var n="deltaY"in e?getDeltaXY(e):getTouchXY(e),o=t.current.filter(function(t){var o;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(o=t.delta)[0]===n[0]&&o[1]===n[1]})[0];if(o&&o.should){e.cancelable&&e.preventDefault();return}if(!o){var i=(l.current.shards||[]).map(extractRef).filter(Boolean).filter(function(t){return t.contains(e.target)});(i.length>0?c(e,i[0]):!l.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),d=D.useCallback(function(e,n,o,i){var s={name:e,delta:n,target:o,should:i,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(o)};t.current.push(s),setTimeout(function(){t.current=t.current.filter(function(e){return e!==s})},1)},[]),p=D.useCallback(function(e){n.current=getTouchXY(e),o.current=void 0},[]),f=D.useCallback(function(t){d(t.type,getDeltaXY(t),t.target,c(t,e.lockRef.current))},[]),m=D.useCallback(function(t){d(t.type,getTouchXY(t),t.target,c(t,e.lockRef.current))},[]);D.useEffect(function(){return tg.push(s),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:m}),document.addEventListener("wheel",u,tm),document.addEventListener("touchmove",u,tm),document.addEventListener("touchstart",p,tm),function(){tg=tg.filter(function(e){return e!==s}),document.removeEventListener("wheel",u,tm),document.removeEventListener("touchmove",u,tm),document.removeEventListener("touchstart",p,tm)}},[]);var b=e.removeScrollBar,g=e.inert;return D.createElement(D.Fragment,null,g?D.createElement(s,{styles:"\n .block-interactivity-".concat(i," {pointer-events: none;}\n .allow-interactivity-").concat(i," {pointer-events: all;}\n")}):null,b?D.createElement(RemoveScrollBar,{gapMode:e.gapMode}):null)}),SideCar),tv=D.forwardRef(function(e,t){return D.createElement(tc,(0,tn.__assign)({},e,{ref:t,sideCar:ty}))});function vanilla_extract_private_esm_getVarName(e){var t=e.match(/^var\((.*)\)$/);return t?t[1]:e}function assignInlineVars(e,t){var n={};if("object"==typeof t)!function vanilla_extract_private_esm_walkObject(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=e.constructor();for(var i in e){var s=e[i],l=[...n,i];"string"==typeof s||"number"==typeof s||null==s?o[i]=t(s,l):"object"!=typeof s||Array.isArray(s)?console.warn('Skipping invalid key "'.concat(l.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(s)?"Array":typeof s,'"')):o[i]=vanilla_extract_private_esm_walkObject(s,t,l)}return o}(t,(t,o)=>{null!=t&&(n[vanilla_extract_private_esm_getVarName(function(e,t){var n=e;for(var o of t){if(!(o in n))throw Error("Path ".concat(t.join(" -> ")," does not exist in object"));n=n[o]}return n}(e,o))]=String(t))});else for(var o in e){var i=e[o];null!=i&&(n[vanilla_extract_private_esm_getVarName(o)]=i)}return Object.defineProperty(n,"toString",{value:function(){return Object.keys(this).map(e=>"".concat(e,":").concat(this[e])).join(";")},writable:!1}),n}tv.classNames=tc.classNames;var tw=n(87675);async function connect(e,t){let n;if((n="function"==typeof t.connector?e._internal.connectors.setup(t.connector):t.connector).uid===e.state.current)throw new tw.wi;try{e.setState(e=>({...e,status:"connecting"})),n.emitter.emit("message",{type:"connecting"});let o=await n.connect({chainId:t.chainId}),i=o.accounts;return n.emitter.off("connect",e._internal.events.connect),n.emitter.on("change",e._internal.events.change),n.emitter.on("disconnect",e._internal.events.disconnect),await e.storage?.setItem("recentConnectorId",n.id),e.setState(e=>({...e,connections:new Map(e.connections).set(n.uid,{accounts:i,chainId:o.chainId,connector:n}),current:n.uid,status:"connected"})),{accounts:i,chainId:o.chainId}}catch(t){throw e.setState(e=>({...e,status:e.current?"connected":"disconnected"})),t}}let tC=[];function getConnectors(e){let t=e.connectors;return(0,te.v)(tC,t)?tC:(tC=t,t)}var tE=n(42238),tx=n(55585),tA=n(7066);let ProviderNotFoundError=class ProviderNotFoundError extends tA.G{constructor(){super("Provider not found."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ProviderNotFoundError"})}};let SwitchChainNotSupportedError=class SwitchChainNotSupportedError extends tA.G{constructor({connector:e}){super(`"${e.name}" does not support programmatic chain switching.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SwitchChainNotSupportedError"})}};async function switchChain(e,t){let{chainId:n}=t,o=e.state.connections.get(t.connector?.uid??e.state.current);if(o){let e=o.connector;if(!e.switchChain)throw new SwitchChainNotSupportedError({connector:e});let t=await e.switchChain({chainId:n});return t}let i=e.chains.find(e=>e.id===n);if(!i)throw new tw.X4;return e.setState(e=>({...e,chainId:n})),i}let tk=[];function getChains(e){let t=e.chains;return(0,te.v)(tk,t)?tk:(tk=t,t)}var tB=n(92592),tS=n(78863);let UrlRequiredError=class UrlRequiredError extends X.G{constructor(){super("No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.",{docsPath:"/docs/clients/intro"})}};var tI=n(32357);function withTimeout(e,{errorInstance:t=Error("timed out"),timeout:n,signal:o}){return new Promise((i,s)=>{(async()=>{let l;try{let c=new AbortController;n>0&&(l=setTimeout(()=>{o?c.abort():s(t)},n)),i(await e({signal:c?.signal||null}))}catch(e){"AbortError"===e.name&&s(t),s(e)}finally{clearTimeout(l)}})()})}let tj={current:0,take(){return this.current++},reset(){this.current=0}};var tT=n(91628),tP=n(16189);let subscribeWithSelector=e=>(t,n,o)=>{let i=o.subscribe;o.subscribe=(e,t,n)=>{let s=e;if(t){let i=(null==n?void 0:n.equalityFn)||Object.is,l=e(o.getState());s=n=>{let o=e(n);if(!i(l,o)){let e=l;t(l=o,e)}},(null==n?void 0:n.fireImmediately)&&t(l,l)}return i(s)};let s=e(t,n,o);return s},toThenable=e=>t=>{try{let n=e(t);if(n instanceof Promise)return n;return{then:e=>toThenable(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>toThenable(t)(e)}}},oldImpl=(e,t)=>(n,o,i)=>{let s,l,c={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},u=!1,d=new Set,p=new Set;try{s=c.getStorage()}catch(e){}if(!s)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${c.name}', the given storage is currently unavailable.`),n(...e)},o,i);let f=toThenable(c.serialize),setItem=()=>{let e;let t=c.partialize({...o()}),n=f({state:t,version:c.version}).then(e=>s.setItem(c.name,e)).catch(t=>{e=t});if(e)throw e;return n},m=i.setState;i.setState=(e,t)=>{m(e,t),setItem()};let b=e((...e)=>{n(...e),setItem()},o,i),hydrate=()=>{var e;if(!s)return;u=!1,d.forEach(e=>e(o()));let t=(null==(e=c.onRehydrateStorage)?void 0:e.call(c,o()))||void 0;return toThenable(s.getItem.bind(s))(c.name).then(e=>{if(e)return c.deserialize(e)}).then(e=>{if(e){if("number"!=typeof e.version||e.version===c.version)return e.state;if(c.migrate)return c.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return n(l=c.merge(e,null!=(t=o())?t:b),!0),setItem()}).then(()=>{null==t||t(l,void 0),u=!0,p.forEach(e=>e(l))}).catch(e=>{null==t||t(void 0,e)})};return i.persist={setOptions:e=>{c={...c,...e},e.getStorage&&(s=e.getStorage())},clearStorage:()=>{null==s||s.removeItem(c.name)},getOptions:()=>c,rehydrate:()=>hydrate(),hasHydrated:()=>u,onHydrate:e=>(d.add(e),()=>{d.delete(e)}),onFinishHydration:e=>(p.add(e),()=>{p.delete(e)})},hydrate(),l||b},newImpl=(e,t)=>(n,o,i)=>{let s,l={storage:function(e,t){let n;try{n=e()}catch(e){return}return{getItem:e=>{var o;let parse=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),i=null!=(o=n.getItem(e))?o:null;return i instanceof Promise?i.then(parse):parse(i)},setItem:(e,o)=>n.setItem(e,JSON.stringify(o,null==t?void 0:t.replacer)),removeItem:e=>n.removeItem(e)}}(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},c=!1,u=new Set,d=new Set,p=l.storage;if(!p)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),n(...e)},o,i);let setItem=()=>{let e=l.partialize({...o()});return p.setItem(l.name,{state:e,version:l.version})},f=i.setState;i.setState=(e,t)=>{f(e,t),setItem()};let m=e((...e)=>{n(...e),setItem()},o,i),hydrate=()=>{var e,t;if(!p)return;c=!1,u.forEach(e=>{var t;return e(null!=(t=o())?t:m)});let i=(null==(t=l.onRehydrateStorage)?void 0:t.call(l,null!=(e=o())?e:m))||void 0;return toThenable(p.getItem.bind(p))(l.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===l.version)return e.state;if(l.migrate)return l.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return n(s=l.merge(e,null!=(t=o())?t:m),!0),setItem()}).then(()=>{null==i||i(s,void 0),s=o(),c=!0,d.forEach(e=>e(s))}).catch(e=>{null==i||i(void 0,e)})};return i.persist={setOptions:e=>{l={...l,...e},e.storage&&(p=e.storage)},clearStorage:()=>{null==p||p.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>hydrate(),hasHydrated:()=>c,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},l.skipHydration||hydrate(),s||m},persist=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?(console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),oldImpl(e,t)):newImpl(e,t),createStoreImpl=e=>{let t;let n=new Set,setState=(e,o)=>{let i="function"==typeof e?e(t):e;if(!Object.is(i,t)){let e=t;t=(null!=o?o:"object"!=typeof i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},getState=()=>t,o={setState,getState,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}};return t=e(setState,getState,o),o},vanilla_createStore=e=>e?createStoreImpl(e):createStoreImpl;var tM=n(45775);function normalizeChainId(e){if("string"==typeof e)return Number.parseInt(e,"0x"===e.trim().substring(0,2)?16:10);if("bigint"==typeof e)return Number(e);if("number"==typeof e)return e;throw Error(`Cannot normalize chainId "${e}" of type "${typeof e}"`)}let tO={coinbaseWallet:{id:"coinbaseWallet",name:"Coinbase Wallet",provider:e=>e?.coinbaseWalletExtension?e.coinbaseWalletExtension:findProvider(e,"isCoinbaseWallet")},metaMask:{id:"metaMask",name:"MetaMask",provider:e=>findProvider(e,e=>{if(!e.isMetaMask||e.isBraveWallet&&!e._events&&!e._state)return!1;for(let t of["isApexWallet","isAvalanche","isBitKeep","isBlockWallet","isKuCoinWallet","isMathWallet","isOkxWallet","isOKExWallet","isOneInchIOSWallet","isOneInchAndroidWallet","isOpera","isPortal","isRabby","isTokenPocket","isTokenary","isZerion"])if(e[t])return!1;return!0})},phantom:{id:"phantom",name:"Phantom",provider:e=>e?.phantom?.ethereum?e.phantom?.ethereum:findProvider(e,"isPhantom")}};function injected(e={}){let{shimDisconnect:t=!0,unstable_shimAsyncInject:n}=e;function getTarget(){let t=e.target;if("function"==typeof t){let e=t();if(e)return e}return"object"==typeof t?t:"string"==typeof t?{...tO[t]??{id:t,name:`${t[0].toUpperCase()}${t.slice(1)}`,provider:`is${t[0].toUpperCase()}${t.slice(1)}`}}:{id:"injected",name:"Injected",provider:e=>e?.ethereum}}return o=>({get icon(){return getTarget().icon},get id(){return getTarget().id},get name(){return getTarget().name},type:injected.type,async setup(){let t=await this.getProvider();t&&e.target&&t.on("connect",this.onConnect.bind(this))},async connect({chainId:n,isReconnecting:i}={}){let s=await this.getProvider();if(!s)throw new ProviderNotFoundError;let l=null;if(!i){l=await this.getAccounts().catch(()=>null);let e=!!l?.length;if(e)try{let e=await s.request({method:"wallet_requestPermissions",params:[{eth_accounts:{}}]});l=e[0]?.caveats?.[0]?.value?.map(e=>tM.K(e))}catch(e){if(e.code===et.ab.code)throw new et.ab(e);if(e.code===et.pT.code)throw e}}try{if(!l?.length){let e=await s.request({method:"eth_requestAccounts"});l=e.map(e=>(0,tM.K)(e))}s.removeListener("connect",this.onConnect.bind(this)),s.on("accountsChanged",this.onAccountsChanged.bind(this)),s.on("chainChanged",this.onChainChanged),s.on("disconnect",this.onDisconnect.bind(this));let i=await this.getChainId();if(n&&i!==n){let e=await this.switchChain({chainId:n}).catch(e=>{if(e.code===et.ab.code)throw e;return{id:i}});i=e?.id??i}return t&&(await o.storage?.removeItem(`${this.id}.disconnected`),e.target||await o.storage?.setItem("injected.connected",!0)),{accounts:l,chainId:i}}catch(e){if(e.code===et.ab.code)throw new et.ab(e);if(e.code===et.pT.code)throw new et.pT(e);throw e}},async disconnect(){let n=await this.getProvider();if(!n)throw new ProviderNotFoundError;n.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),n.removeListener("chainChanged",this.onChainChanged),n.removeListener("disconnect",this.onDisconnect.bind(this)),n.on("connect",this.onConnect.bind(this)),t&&(await o.storage?.setItem(`${this.id}.disconnected`,!0),e.target||await o.storage?.removeItem("injected.connected"))},async getAccounts(){let e=await this.getProvider();if(!e)throw new ProviderNotFoundError;let t=await e.request({method:"eth_accounts"});return t.map(e=>(0,tM.K)(e))},async getChainId(){let e=await this.getProvider();if(!e)throw new ProviderNotFoundError;let t=await e.request({method:"eth_chainId"});return normalizeChainId(t)},async getProvider(){let e;if("undefined"==typeof window)return;let t=getTarget();return(e="function"==typeof t.provider?t.provider(window):"string"==typeof t.provider?findProvider(window,t.provider):t.provider)&&!e.removeListener&&("off"in e&&"function"==typeof e.off?e.removeListener=e.off:e.removeListener=()=>{}),e},async isAuthorized(){try{let i=t&&await o.storage?.getItem(`${this.id}.disconnected`);if(i)return!1;if(!e.target){let e=await o.storage?.getItem("injected.connected");if(!e)return!1}let s=await this.getProvider();if(!s){if(void 0!==n&&!1!==n){let handleEthereum=async()=>{"undefined"!=typeof window&&window.removeEventListener("ethereum#initialized",handleEthereum);let e=await this.getProvider();return!!e},e="number"==typeof n?n:1e3,t=await Promise.race([..."undefined"!=typeof window?[new Promise(e=>window.addEventListener("ethereum#initialized",()=>e(handleEthereum()),{once:!0}))]:[],new Promise(t=>setTimeout(()=>t(handleEthereum()),e))]);if(t)return!0}throw new ProviderNotFoundError}let l=await (0,e2.J)(()=>withTimeout(()=>this.getAccounts(),{timeout:100}));return!!l.length}catch{return!1}},async switchChain({chainId:e}){let t=await this.getProvider();if(!t)throw new ProviderNotFoundError;let n=o.chains.find(t=>t.id===e);if(!n)throw new et.x3(new tw.X4);try{return await Promise.all([t.request({method:"wallet_switchEthereumChain",params:[{chainId:(0,Q.eC)(e)}]}),new Promise(t=>o.emitter.once("change",({chainId:n})=>{n===e&&t()}))]),n}catch(o){if(4902===o.code||o?.data?.originalError?.code===4902)try{let o;let{default:i,...s}=n.blockExplorers??{};i&&(o=[i.url,...Object.values(s).map(e=>e.url)]),await t.request({method:"wallet_addEthereumChain",params:[{chainId:(0,Q.eC)(e),chainName:n.name,nativeCurrency:n.nativeCurrency,rpcUrls:[n.rpcUrls.default?.http[0]??""],blockExplorerUrls:o}]});let l=await this.getChainId();if(l!==e)throw new et.ab(Error("User rejected switch after adding network."));return n}catch(e){throw new et.ab(e)}if(o.code===et.ab.code)throw new et.ab(o);throw new et.x3(o)}},async onAccountsChanged(e){if(0===e.length)this.onDisconnect();else if(o.emitter.listenerCount("connect")){let e=(await this.getChainId()).toString();this.onConnect({chainId:e}),t&&await o.storage?.removeItem(`${this.id}.disconnected`)}else o.emitter.emit("change",{accounts:e.map(e=>(0,tM.K)(e))})},onChainChanged(e){let t=normalizeChainId(e);o.emitter.emit("change",{chainId:t})},async onConnect(e){let t=await this.getAccounts();if(0===t.length)return;let n=normalizeChainId(e.chainId);o.emitter.emit("connect",{accounts:t,chainId:n});let i=await this.getProvider();i&&(i.removeListener("connect",this.onConnect.bind(this)),i.on("accountsChanged",this.onAccountsChanged.bind(this)),i.on("chainChanged",this.onChainChanged),i.on("disconnect",this.onDisconnect.bind(this)))},async onDisconnect(e){let t=await this.getProvider();e&&1013===e.code&&t&&(await this.getAccounts()).length||(o.emitter.emit("disconnect"),t&&(t.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),t.removeListener("chainChanged",this.onChainChanged),t.removeListener("disconnect",this.onDisconnect.bind(this)),t.on("connect",this.onConnect.bind(this))))}})}function findProvider(e,t){function isProvider(e){return"function"==typeof t?t(e):"string"!=typeof t||e[t]}let n=e.ethereum;return n?.providers?n.providers.find(e=>isProvider(e)):n&&isProvider(n)?n:void 0}injected.type="injected";var tR=n(26729),__classPrivateFieldGet=function(e,t,n,o){if("a"===n&&!o)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)};let Emitter=class Emitter{constructor(e){Object.defineProperty(this,"uid",{enumerable:!0,configurable:!0,writable:!0,value:e}),j.set(this,new tR)}on(e,t){__classPrivateFieldGet(this,j,"f").on(e,t)}once(e,t){__classPrivateFieldGet(this,j,"f").once(e,t)}off(e,t){__classPrivateFieldGet(this,j,"f").off(e,t)}emit(e,...t){let n=t[0];__classPrivateFieldGet(this,j,"f").emit(e,{uid:this.uid,...n})}listenerCount(e){return __classPrivateFieldGet(this,j,"f").listenerCount(e)}};function deserialize_deserialize(e,t){return JSON.parse(e,(e,n)=>{let o=n;return o?.__type==="bigint"&&(o=BigInt(o.value)),o?.__type==="Map"&&(o=new Map(o.value)),t?.(e,o)??o})}function getReferenceKey(e,t){return e.slice(0,t).join(".")||"."}function getCutoff(e,t){let{length:n}=e;for(let o=0;o{let o=n;return"bigint"==typeof o&&(o={__type:"bigint",value:n.toString()}),o instanceof Map&&(o={__type:"Map",value:Array.from(n.entries())}),t?.(e,o)??o},o),n??void 0)}j=new WeakMap;let tU={getItem:()=>null,setItem:()=>{},removeItem:()=>{}},tF=256;var tN=n(79983);function walletConnect(e){let t,o;let i=e.isNewChainsStale??!0,s="eip155";return l=>({id:"walletConnect",name:"WalletConnect",type:walletConnect.type,async setup(){let e=await this.getProvider().catch(()=>null);e&&(e.on("connect",this.onConnect.bind(this)),e.on("session_delete",this.onSessionDelete.bind(this)))},async connect({chainId:e,...t}={}){try{let n=await this.getProvider();if(!n)throw new ProviderNotFoundError;n.on("display_uri",this.onDisplayUri);let o=e;if(!o){let e=await l.storage?.getItem("state")??{},t=l.chains.some(t=>t.id===e.chainId);o=t?e.chainId:l.chains[0]?.id}if(!o)throw Error("No chains found on connector.");let i=await this.isChainsStale();if(n.session&&i&&await n.disconnect(),!n.session||i){let e=l.chains.filter(e=>e.id!==o).map(e=>e.id);await n.connect({optionalChains:[o,...e],..."pairingTopic"in t?{pairingTopic:t.pairingTopic}:{}}),this.setRequestedChainsIds(l.chains.map(e=>e.id))}let s=(await n.enable()).map(e=>(0,tM.K)(e)),c=await this.getChainId();return n.removeListener("display_uri",this.onDisplayUri),n.removeListener("connect",this.onConnect.bind(this)),n.on("accountsChanged",this.onAccountsChanged.bind(this)),n.on("chainChanged",this.onChainChanged),n.on("disconnect",this.onDisconnect.bind(this)),n.on("session_delete",this.onSessionDelete.bind(this)),{accounts:s,chainId:c}}catch(e){if(/(user rejected|connection request reset)/i.test(e?.message))throw new et.ab(e);throw e}},async disconnect(){let e=await this.getProvider();try{await e?.disconnect()}catch(e){if(!/No matching key/i.test(e.message))throw e}finally{e?.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),e?.removeListener("chainChanged",this.onChainChanged),e?.removeListener("disconnect",this.onDisconnect.bind(this)),e?.removeListener("session_delete",this.onSessionDelete.bind(this)),e?.on("connect",this.onConnect.bind(this)),this.setRequestedChainsIds([])}},async getAccounts(){let e=await this.getProvider();return e.accounts.map(e=>(0,tM.K)(e))},async getProvider({chainId:i}={}){async function initProvider(){let t=l.chains.map(e=>e.id);if(!t.length)return;let{EthereumProvider:o}=await Promise.all([n.e(1194),n.e(3138),n.e(5883)]).then(n.bind(n,33138));return await o.init({...e,disableProviderPing:!0,optionalChains:t,projectId:e.projectId,rpcMap:Object.fromEntries(l.chains.map(e=>[e.id,e.rpcUrls.default.http[0]])),showQrModal:e.showQrModal??!0})}return t||(o||(o=initProvider()),t=await o,t?.events.setMaxListeners(1/0)),i&&await this.switchChain?.({chainId:i}),t},async getChainId(){let e=await this.getProvider();return e.chainId},async isAuthorized(){try{let[e,t]=await Promise.all([this.getAccounts(),this.getProvider()]);if(!e.length)return!1;let n=await this.isChainsStale();if(n&&t.session)return await t.disconnect().catch(()=>{}),!1;return!0}catch{return!1}},async switchChain({chainId:e}){let t=l.chains.find(t=>t.id===e);if(!t)throw new et.x3(new tw.X4);try{let n=await this.getProvider(),o=this.getNamespaceChainsIds(),i=this.getNamespaceMethods(),s=o.includes(e);if(!s&&i.includes("wallet_addEthereumChain")){await n.request({method:"wallet_addEthereumChain",params:[{chainId:(0,Q.eC)(t.id),blockExplorerUrls:[t.blockExplorers?.default.url],chainName:t.name,nativeCurrency:t.nativeCurrency,rpcUrls:[...t.rpcUrls.default.http]}]});let o=await this.getRequestedChainsIds();this.setRequestedChainsIds([...o,e])}return await n.request({method:"wallet_switchEthereumChain",params:[{chainId:(0,Q.eC)(e)}]}),t}catch(t){let e="string"==typeof t?t:t?.message;if(/user rejected request/i.test(e))throw new et.ab(t);throw new et.x3(t)}},onAccountsChanged(e){0===e.length?this.onDisconnect():l.emitter.emit("change",{accounts:e.map(e=>(0,tM.K)(e))})},onChainChanged(e){let t=normalizeChainId(e);l.emitter.emit("change",{chainId:t})},async onConnect(e){let t=normalizeChainId(e.chainId),n=await this.getAccounts();l.emitter.emit("connect",{accounts:n,chainId:t})},async onDisconnect(e){this.setRequestedChainsIds([]),l.emitter.emit("disconnect");let t=await this.getProvider();t.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),t.removeListener("chainChanged",this.onChainChanged),t.removeListener("disconnect",this.onDisconnect.bind(this)),t.removeListener("session_delete",this.onSessionDelete.bind(this)),t.on("connect",this.onConnect.bind(this))},onDisplayUri(e){l.emitter.emit("message",{type:"display_uri",data:e})},onSessionDelete(){this.onDisconnect()},getNamespaceChainsIds(){if(!t)return[];let e=t.session?.namespaces[s]?.chains?.map(e=>parseInt(e.split(":")[1]||""));return e??[]},getNamespaceMethods(){if(!t)return[];let e=t.session?.namespaces[s]?.methods;return e??[]},async getRequestedChainsIds(){return await l.storage?.getItem(this.requestedChainsStorageKey)??[]},async isChainsStale(){let e=this.getNamespaceMethods();if(e.includes("wallet_addEthereumChain")||!i)return!1;let t=l.chains.map(e=>e.id),n=this.getNamespaceChainsIds();if(n.length&&!n.some(e=>t.includes(e)))return!1;let o=await this.getRequestedChainsIds();return!t.every(e=>o.includes(e))},async setRequestedChainsIds(e){await l.storage?.setItem(this.requestedChainsStorageKey,e)},get requestedChainsStorageKey(){return`${this.id}.requestedChains`}})}function coinbaseWallet(e){let t,o;return i=>({id:"coinbaseWalletSDK",name:"Coinbase Wallet",type:coinbaseWallet.type,async connect({chainId:e}={}){try{let t=await this.getProvider(),n=(await t.request({method:"eth_requestAccounts"})).map(e=>(0,tM.K)(e));t.on("accountsChanged",this.onAccountsChanged),t.on("chainChanged",this.onChainChanged),t.on("disconnect",this.onDisconnect.bind(this));let o=await this.getChainId();if(e&&o!==e){let t=await this.switchChain({chainId:e}).catch(e=>{if(e.code===et.ab.code)throw e;return{id:o}});o=t?.id??o}return{accounts:n,chainId:o}}catch(e){if(/(user closed modal|accounts received is empty|user denied account)/i.test(e.message))throw new et.ab(e);throw e}},async disconnect(){let e=await this.getProvider();e.removeListener("accountsChanged",this.onAccountsChanged),e.removeListener("chainChanged",this.onChainChanged),e.removeListener("disconnect",this.onDisconnect.bind(this)),e.disconnect(),e.close()},async getAccounts(){let e=await this.getProvider();return(await e.request({method:"eth_accounts"})).map(e=>(0,tM.K)(e))},async getChainId(){let e=await this.getProvider(),t=await e.request({method:"eth_chainId"});return normalizeChainId(t)},async getProvider(){if(!o){let{default:s}=await Promise.all([n.e(1194),n.e(5811),n.e(6878)]).then(n.t.bind(n,45811,19));t=new("function"!=typeof s&&"function"==typeof s.default?s.default:s)({reloadOnDisconnect:!1,...e});let l=t.walletExtension?.getChainId(),c=i.chains.find(t=>e.chainId?t.id===e.chainId:t.id===l)||i.chains[0],u=e.chainId||c?.id,d=e.jsonRpcUrl||c?.rpcUrls.default.http[0];o=t.makeWeb3Provider(d,u)}return o},async isAuthorized(){try{let e=await this.getAccounts();return!!e.length}catch{return!1}},async switchChain({chainId:e}){let t=i.chains.find(t=>t.id===e);if(!t)throw new et.x3(new tw.X4);let n=await this.getProvider(),o=(0,Q.eC)(t.id);try{return await n.request({method:"wallet_switchEthereumChain",params:[{chainId:o}]}),t}catch(e){if(4902===e.code)try{return await n.request({method:"wallet_addEthereumChain",params:[{chainId:o,chainName:t.name,nativeCurrency:t.nativeCurrency,rpcUrls:[t.rpcUrls.default?.http[0]??""],blockExplorerUrls:[t.blockExplorers?.default.url]}]}),t}catch(e){throw new et.ab(e)}throw new et.x3(e)}},onAccountsChanged(e){0===e.length?i.emitter.emit("disconnect"):i.emitter.emit("change",{accounts:e.map(e=>(0,tM.K)(e))})},onChainChanged(e){let t=normalizeChainId(e);i.emitter.emit("change",{chainId:t})},async onDisconnect(e){i.emitter.emit("disconnect");let t=await this.getProvider();t.removeListener("accountsChanged",this.onAccountsChanged),t.removeListener("chainChanged",this.onChainChanged),t.removeListener("disconnect",this.onDisconnect.bind(this))}})}walletConnect.type="walletConnect",coinbaseWallet.type="coinbaseWallet";var tD=function(e){var{conditions:t}=e;if(!t)throw Error("Styles have no conditions");var n=createNormalizeValueFn(e);return addRecipe(function(e,o){if("string"==typeof e||"number"==typeof e||"boolean"==typeof e){if(!t.defaultCondition)throw Error("No default condition");return o(e,t.defaultCondition)}var i=Array.isArray(e)?n(e):e,s={};for(var l in i)null!=i[l]&&(s[l]=o(i[l],l));return s},{importPath:"@vanilla-extract/sprinkles/createUtils",importName:"createMapValueFn",args:[{conditions:e.conditions}]})}({conditions:{defaultCondition:"smallScreen",conditionNames:["smallScreen","largeScreen"],responsiveArray:void 0}}),t_=createNormalizeValueFn({conditions:{defaultCondition:"smallScreen",conditionNames:["smallScreen","largeScreen"],responsiveArray:void 0}}),tL=function(){return createSprinkles_c8550e00_esm_createSprinkles(composeStyles)(...arguments)}({conditions:{defaultCondition:"base",conditionNames:["base","hover","active"],responsiveArray:void 0},styles:{background:{values:{accentColor:{conditions:{base:"ju367v9i",hover:"ju367v9j",active:"ju367v9k"},defaultClass:"ju367v9i"},accentColorForeground:{conditions:{base:"ju367v9l",hover:"ju367v9m",active:"ju367v9n"},defaultClass:"ju367v9l"},actionButtonBorder:{conditions:{base:"ju367v9o",hover:"ju367v9p",active:"ju367v9q"},defaultClass:"ju367v9o"},actionButtonBorderMobile:{conditions:{base:"ju367v9r",hover:"ju367v9s",active:"ju367v9t"},defaultClass:"ju367v9r"},actionButtonSecondaryBackground:{conditions:{base:"ju367v9u",hover:"ju367v9v",active:"ju367v9w"},defaultClass:"ju367v9u"},closeButton:{conditions:{base:"ju367v9x",hover:"ju367v9y",active:"ju367v9z"},defaultClass:"ju367v9x"},closeButtonBackground:{conditions:{base:"ju367va0",hover:"ju367va1",active:"ju367va2"},defaultClass:"ju367va0"},connectButtonBackground:{conditions:{base:"ju367va3",hover:"ju367va4",active:"ju367va5"},defaultClass:"ju367va3"},connectButtonBackgroundError:{conditions:{base:"ju367va6",hover:"ju367va7",active:"ju367va8"},defaultClass:"ju367va6"},connectButtonInnerBackground:{conditions:{base:"ju367va9",hover:"ju367vaa",active:"ju367vab"},defaultClass:"ju367va9"},connectButtonText:{conditions:{base:"ju367vac",hover:"ju367vad",active:"ju367vae"},defaultClass:"ju367vac"},connectButtonTextError:{conditions:{base:"ju367vaf",hover:"ju367vag",active:"ju367vah"},defaultClass:"ju367vaf"},connectionIndicator:{conditions:{base:"ju367vai",hover:"ju367vaj",active:"ju367vak"},defaultClass:"ju367vai"},downloadBottomCardBackground:{conditions:{base:"ju367val",hover:"ju367vam",active:"ju367van"},defaultClass:"ju367val"},downloadTopCardBackground:{conditions:{base:"ju367vao",hover:"ju367vap",active:"ju367vaq"},defaultClass:"ju367vao"},error:{conditions:{base:"ju367var",hover:"ju367vas",active:"ju367vat"},defaultClass:"ju367var"},generalBorder:{conditions:{base:"ju367vau",hover:"ju367vav",active:"ju367vaw"},defaultClass:"ju367vau"},generalBorderDim:{conditions:{base:"ju367vax",hover:"ju367vay",active:"ju367vaz"},defaultClass:"ju367vax"},menuItemBackground:{conditions:{base:"ju367vb0",hover:"ju367vb1",active:"ju367vb2"},defaultClass:"ju367vb0"},modalBackdrop:{conditions:{base:"ju367vb3",hover:"ju367vb4",active:"ju367vb5"},defaultClass:"ju367vb3"},modalBackground:{conditions:{base:"ju367vb6",hover:"ju367vb7",active:"ju367vb8"},defaultClass:"ju367vb6"},modalBorder:{conditions:{base:"ju367vb9",hover:"ju367vba",active:"ju367vbb"},defaultClass:"ju367vb9"},modalText:{conditions:{base:"ju367vbc",hover:"ju367vbd",active:"ju367vbe"},defaultClass:"ju367vbc"},modalTextDim:{conditions:{base:"ju367vbf",hover:"ju367vbg",active:"ju367vbh"},defaultClass:"ju367vbf"},modalTextSecondary:{conditions:{base:"ju367vbi",hover:"ju367vbj",active:"ju367vbk"},defaultClass:"ju367vbi"},profileAction:{conditions:{base:"ju367vbl",hover:"ju367vbm",active:"ju367vbn"},defaultClass:"ju367vbl"},profileActionHover:{conditions:{base:"ju367vbo",hover:"ju367vbp",active:"ju367vbq"},defaultClass:"ju367vbo"},profileForeground:{conditions:{base:"ju367vbr",hover:"ju367vbs",active:"ju367vbt"},defaultClass:"ju367vbr"},selectedOptionBorder:{conditions:{base:"ju367vbu",hover:"ju367vbv",active:"ju367vbw"},defaultClass:"ju367vbu"},standby:{conditions:{base:"ju367vbx",hover:"ju367vby",active:"ju367vbz"},defaultClass:"ju367vbx"}}},borderColor:{values:{accentColor:{conditions:{base:"ju367vc0",hover:"ju367vc1",active:"ju367vc2"},defaultClass:"ju367vc0"},accentColorForeground:{conditions:{base:"ju367vc3",hover:"ju367vc4",active:"ju367vc5"},defaultClass:"ju367vc3"},actionButtonBorder:{conditions:{base:"ju367vc6",hover:"ju367vc7",active:"ju367vc8"},defaultClass:"ju367vc6"},actionButtonBorderMobile:{conditions:{base:"ju367vc9",hover:"ju367vca",active:"ju367vcb"},defaultClass:"ju367vc9"},actionButtonSecondaryBackground:{conditions:{base:"ju367vcc",hover:"ju367vcd",active:"ju367vce"},defaultClass:"ju367vcc"},closeButton:{conditions:{base:"ju367vcf",hover:"ju367vcg",active:"ju367vch"},defaultClass:"ju367vcf"},closeButtonBackground:{conditions:{base:"ju367vci",hover:"ju367vcj",active:"ju367vck"},defaultClass:"ju367vci"},connectButtonBackground:{conditions:{base:"ju367vcl",hover:"ju367vcm",active:"ju367vcn"},defaultClass:"ju367vcl"},connectButtonBackgroundError:{conditions:{base:"ju367vco",hover:"ju367vcp",active:"ju367vcq"},defaultClass:"ju367vco"},connectButtonInnerBackground:{conditions:{base:"ju367vcr",hover:"ju367vcs",active:"ju367vct"},defaultClass:"ju367vcr"},connectButtonText:{conditions:{base:"ju367vcu",hover:"ju367vcv",active:"ju367vcw"},defaultClass:"ju367vcu"},connectButtonTextError:{conditions:{base:"ju367vcx",hover:"ju367vcy",active:"ju367vcz"},defaultClass:"ju367vcx"},connectionIndicator:{conditions:{base:"ju367vd0",hover:"ju367vd1",active:"ju367vd2"},defaultClass:"ju367vd0"},downloadBottomCardBackground:{conditions:{base:"ju367vd3",hover:"ju367vd4",active:"ju367vd5"},defaultClass:"ju367vd3"},downloadTopCardBackground:{conditions:{base:"ju367vd6",hover:"ju367vd7",active:"ju367vd8"},defaultClass:"ju367vd6"},error:{conditions:{base:"ju367vd9",hover:"ju367vda",active:"ju367vdb"},defaultClass:"ju367vd9"},generalBorder:{conditions:{base:"ju367vdc",hover:"ju367vdd",active:"ju367vde"},defaultClass:"ju367vdc"},generalBorderDim:{conditions:{base:"ju367vdf",hover:"ju367vdg",active:"ju367vdh"},defaultClass:"ju367vdf"},menuItemBackground:{conditions:{base:"ju367vdi",hover:"ju367vdj",active:"ju367vdk"},defaultClass:"ju367vdi"},modalBackdrop:{conditions:{base:"ju367vdl",hover:"ju367vdm",active:"ju367vdn"},defaultClass:"ju367vdl"},modalBackground:{conditions:{base:"ju367vdo",hover:"ju367vdp",active:"ju367vdq"},defaultClass:"ju367vdo"},modalBorder:{conditions:{base:"ju367vdr",hover:"ju367vds",active:"ju367vdt"},defaultClass:"ju367vdr"},modalText:{conditions:{base:"ju367vdu",hover:"ju367vdv",active:"ju367vdw"},defaultClass:"ju367vdu"},modalTextDim:{conditions:{base:"ju367vdx",hover:"ju367vdy",active:"ju367vdz"},defaultClass:"ju367vdx"},modalTextSecondary:{conditions:{base:"ju367ve0",hover:"ju367ve1",active:"ju367ve2"},defaultClass:"ju367ve0"},profileAction:{conditions:{base:"ju367ve3",hover:"ju367ve4",active:"ju367ve5"},defaultClass:"ju367ve3"},profileActionHover:{conditions:{base:"ju367ve6",hover:"ju367ve7",active:"ju367ve8"},defaultClass:"ju367ve6"},profileForeground:{conditions:{base:"ju367ve9",hover:"ju367vea",active:"ju367veb"},defaultClass:"ju367ve9"},selectedOptionBorder:{conditions:{base:"ju367vec",hover:"ju367ved",active:"ju367vee"},defaultClass:"ju367vec"},standby:{conditions:{base:"ju367vef",hover:"ju367veg",active:"ju367veh"},defaultClass:"ju367vef"}}},boxShadow:{values:{connectButton:{conditions:{base:"ju367vei",hover:"ju367vej",active:"ju367vek"},defaultClass:"ju367vei"},dialog:{conditions:{base:"ju367vel",hover:"ju367vem",active:"ju367ven"},defaultClass:"ju367vel"},profileDetailsAction:{conditions:{base:"ju367veo",hover:"ju367vep",active:"ju367veq"},defaultClass:"ju367veo"},selectedOption:{conditions:{base:"ju367ver",hover:"ju367ves",active:"ju367vet"},defaultClass:"ju367ver"},selectedWallet:{conditions:{base:"ju367veu",hover:"ju367vev",active:"ju367vew"},defaultClass:"ju367veu"},walletLogo:{conditions:{base:"ju367vex",hover:"ju367vey",active:"ju367vez"},defaultClass:"ju367vex"}}},color:{values:{accentColor:{conditions:{base:"ju367vf0",hover:"ju367vf1",active:"ju367vf2"},defaultClass:"ju367vf0"},accentColorForeground:{conditions:{base:"ju367vf3",hover:"ju367vf4",active:"ju367vf5"},defaultClass:"ju367vf3"},actionButtonBorder:{conditions:{base:"ju367vf6",hover:"ju367vf7",active:"ju367vf8"},defaultClass:"ju367vf6"},actionButtonBorderMobile:{conditions:{base:"ju367vf9",hover:"ju367vfa",active:"ju367vfb"},defaultClass:"ju367vf9"},actionButtonSecondaryBackground:{conditions:{base:"ju367vfc",hover:"ju367vfd",active:"ju367vfe"},defaultClass:"ju367vfc"},closeButton:{conditions:{base:"ju367vff",hover:"ju367vfg",active:"ju367vfh"},defaultClass:"ju367vff"},closeButtonBackground:{conditions:{base:"ju367vfi",hover:"ju367vfj",active:"ju367vfk"},defaultClass:"ju367vfi"},connectButtonBackground:{conditions:{base:"ju367vfl",hover:"ju367vfm",active:"ju367vfn"},defaultClass:"ju367vfl"},connectButtonBackgroundError:{conditions:{base:"ju367vfo",hover:"ju367vfp",active:"ju367vfq"},defaultClass:"ju367vfo"},connectButtonInnerBackground:{conditions:{base:"ju367vfr",hover:"ju367vfs",active:"ju367vft"},defaultClass:"ju367vfr"},connectButtonText:{conditions:{base:"ju367vfu",hover:"ju367vfv",active:"ju367vfw"},defaultClass:"ju367vfu"},connectButtonTextError:{conditions:{base:"ju367vfx",hover:"ju367vfy",active:"ju367vfz"},defaultClass:"ju367vfx"},connectionIndicator:{conditions:{base:"ju367vg0",hover:"ju367vg1",active:"ju367vg2"},defaultClass:"ju367vg0"},downloadBottomCardBackground:{conditions:{base:"ju367vg3",hover:"ju367vg4",active:"ju367vg5"},defaultClass:"ju367vg3"},downloadTopCardBackground:{conditions:{base:"ju367vg6",hover:"ju367vg7",active:"ju367vg8"},defaultClass:"ju367vg6"},error:{conditions:{base:"ju367vg9",hover:"ju367vga",active:"ju367vgb"},defaultClass:"ju367vg9"},generalBorder:{conditions:{base:"ju367vgc",hover:"ju367vgd",active:"ju367vge"},defaultClass:"ju367vgc"},generalBorderDim:{conditions:{base:"ju367vgf",hover:"ju367vgg",active:"ju367vgh"},defaultClass:"ju367vgf"},menuItemBackground:{conditions:{base:"ju367vgi",hover:"ju367vgj",active:"ju367vgk"},defaultClass:"ju367vgi"},modalBackdrop:{conditions:{base:"ju367vgl",hover:"ju367vgm",active:"ju367vgn"},defaultClass:"ju367vgl"},modalBackground:{conditions:{base:"ju367vgo",hover:"ju367vgp",active:"ju367vgq"},defaultClass:"ju367vgo"},modalBorder:{conditions:{base:"ju367vgr",hover:"ju367vgs",active:"ju367vgt"},defaultClass:"ju367vgr"},modalText:{conditions:{base:"ju367vgu",hover:"ju367vgv",active:"ju367vgw"},defaultClass:"ju367vgu"},modalTextDim:{conditions:{base:"ju367vgx",hover:"ju367vgy",active:"ju367vgz"},defaultClass:"ju367vgx"},modalTextSecondary:{conditions:{base:"ju367vh0",hover:"ju367vh1",active:"ju367vh2"},defaultClass:"ju367vh0"},profileAction:{conditions:{base:"ju367vh3",hover:"ju367vh4",active:"ju367vh5"},defaultClass:"ju367vh3"},profileActionHover:{conditions:{base:"ju367vh6",hover:"ju367vh7",active:"ju367vh8"},defaultClass:"ju367vh6"},profileForeground:{conditions:{base:"ju367vh9",hover:"ju367vha",active:"ju367vhb"},defaultClass:"ju367vh9"},selectedOptionBorder:{conditions:{base:"ju367vhc",hover:"ju367vhd",active:"ju367vhe"},defaultClass:"ju367vhc"},standby:{conditions:{base:"ju367vhf",hover:"ju367vhg",active:"ju367vhh"},defaultClass:"ju367vhf"}}}}},{conditions:{defaultCondition:"smallScreen",conditionNames:["smallScreen","largeScreen"],responsiveArray:void 0},styles:{alignItems:{values:{"flex-start":{conditions:{smallScreen:"ju367v0",largeScreen:"ju367v1"},defaultClass:"ju367v0"},"flex-end":{conditions:{smallScreen:"ju367v2",largeScreen:"ju367v3"},defaultClass:"ju367v2"},center:{conditions:{smallScreen:"ju367v4",largeScreen:"ju367v5"},defaultClass:"ju367v4"}}},display:{values:{none:{conditions:{smallScreen:"ju367v6",largeScreen:"ju367v7"},defaultClass:"ju367v6"},block:{conditions:{smallScreen:"ju367v8",largeScreen:"ju367v9"},defaultClass:"ju367v8"},flex:{conditions:{smallScreen:"ju367va",largeScreen:"ju367vb"},defaultClass:"ju367va"},inline:{conditions:{smallScreen:"ju367vc",largeScreen:"ju367vd"},defaultClass:"ju367vc"}}}}},{conditions:void 0,styles:{margin:{mappings:["marginTop","marginBottom","marginLeft","marginRight"]},marginX:{mappings:["marginLeft","marginRight"]},marginY:{mappings:["marginTop","marginBottom"]},padding:{mappings:["paddingTop","paddingBottom","paddingLeft","paddingRight"]},paddingX:{mappings:["paddingLeft","paddingRight"]},paddingY:{mappings:["paddingTop","paddingBottom"]},alignSelf:{values:{"flex-start":{defaultClass:"ju367ve"},"flex-end":{defaultClass:"ju367vf"},center:{defaultClass:"ju367vg"}}},backgroundSize:{values:{cover:{defaultClass:"ju367vh"}}},borderRadius:{values:{1:{defaultClass:"ju367vi"},6:{defaultClass:"ju367vj"},10:{defaultClass:"ju367vk"},13:{defaultClass:"ju367vl"},actionButton:{defaultClass:"ju367vm"},connectButton:{defaultClass:"ju367vn"},menuButton:{defaultClass:"ju367vo"},modal:{defaultClass:"ju367vp"},modalMobile:{defaultClass:"ju367vq"},"25%":{defaultClass:"ju367vr"},full:{defaultClass:"ju367vs"}}},borderStyle:{values:{solid:{defaultClass:"ju367vt"}}},borderWidth:{values:{0:{defaultClass:"ju367vu"},1:{defaultClass:"ju367vv"},2:{defaultClass:"ju367vw"},4:{defaultClass:"ju367vx"}}},cursor:{values:{pointer:{defaultClass:"ju367vy"},none:{defaultClass:"ju367vz"}}},pointerEvents:{values:{none:{defaultClass:"ju367v10"},all:{defaultClass:"ju367v11"}}},minHeight:{values:{8:{defaultClass:"ju367v12"},44:{defaultClass:"ju367v13"}}},flexDirection:{values:{row:{defaultClass:"ju367v14"},column:{defaultClass:"ju367v15"}}},fontFamily:{values:{body:{defaultClass:"ju367v16"}}},fontSize:{values:{12:{defaultClass:"ju367v17"},13:{defaultClass:"ju367v18"},14:{defaultClass:"ju367v19"},16:{defaultClass:"ju367v1a"},18:{defaultClass:"ju367v1b"},20:{defaultClass:"ju367v1c"},23:{defaultClass:"ju367v1d"}}},fontWeight:{values:{regular:{defaultClass:"ju367v1e"},medium:{defaultClass:"ju367v1f"},semibold:{defaultClass:"ju367v1g"},bold:{defaultClass:"ju367v1h"},heavy:{defaultClass:"ju367v1i"}}},gap:{values:{0:{defaultClass:"ju367v1j"},1:{defaultClass:"ju367v1k"},2:{defaultClass:"ju367v1l"},3:{defaultClass:"ju367v1m"},4:{defaultClass:"ju367v1n"},5:{defaultClass:"ju367v1o"},6:{defaultClass:"ju367v1p"},8:{defaultClass:"ju367v1q"},10:{defaultClass:"ju367v1r"},12:{defaultClass:"ju367v1s"},14:{defaultClass:"ju367v1t"},16:{defaultClass:"ju367v1u"},18:{defaultClass:"ju367v1v"},20:{defaultClass:"ju367v1w"},24:{defaultClass:"ju367v1x"},28:{defaultClass:"ju367v1y"},32:{defaultClass:"ju367v1z"},36:{defaultClass:"ju367v20"},44:{defaultClass:"ju367v21"},64:{defaultClass:"ju367v22"},"-1":{defaultClass:"ju367v23"}}},height:{values:{1:{defaultClass:"ju367v24"},2:{defaultClass:"ju367v25"},4:{defaultClass:"ju367v26"},8:{defaultClass:"ju367v27"},12:{defaultClass:"ju367v28"},20:{defaultClass:"ju367v29"},24:{defaultClass:"ju367v2a"},28:{defaultClass:"ju367v2b"},30:{defaultClass:"ju367v2c"},32:{defaultClass:"ju367v2d"},34:{defaultClass:"ju367v2e"},36:{defaultClass:"ju367v2f"},40:{defaultClass:"ju367v2g"},44:{defaultClass:"ju367v2h"},48:{defaultClass:"ju367v2i"},54:{defaultClass:"ju367v2j"},60:{defaultClass:"ju367v2k"},200:{defaultClass:"ju367v2l"},full:{defaultClass:"ju367v2m"},max:{defaultClass:"ju367v2n"}}},justifyContent:{values:{"flex-start":{defaultClass:"ju367v2o"},"flex-end":{defaultClass:"ju367v2p"},center:{defaultClass:"ju367v2q"},"space-between":{defaultClass:"ju367v2r"},"space-around":{defaultClass:"ju367v2s"}}},textAlign:{values:{left:{defaultClass:"ju367v2t"},center:{defaultClass:"ju367v2u"},inherit:{defaultClass:"ju367v2v"}}},marginBottom:{values:{0:{defaultClass:"ju367v2w"},1:{defaultClass:"ju367v2x"},2:{defaultClass:"ju367v2y"},3:{defaultClass:"ju367v2z"},4:{defaultClass:"ju367v30"},5:{defaultClass:"ju367v31"},6:{defaultClass:"ju367v32"},8:{defaultClass:"ju367v33"},10:{defaultClass:"ju367v34"},12:{defaultClass:"ju367v35"},14:{defaultClass:"ju367v36"},16:{defaultClass:"ju367v37"},18:{defaultClass:"ju367v38"},20:{defaultClass:"ju367v39"},24:{defaultClass:"ju367v3a"},28:{defaultClass:"ju367v3b"},32:{defaultClass:"ju367v3c"},36:{defaultClass:"ju367v3d"},44:{defaultClass:"ju367v3e"},64:{defaultClass:"ju367v3f"},"-1":{defaultClass:"ju367v3g"}}},marginLeft:{values:{0:{defaultClass:"ju367v3h"},1:{defaultClass:"ju367v3i"},2:{defaultClass:"ju367v3j"},3:{defaultClass:"ju367v3k"},4:{defaultClass:"ju367v3l"},5:{defaultClass:"ju367v3m"},6:{defaultClass:"ju367v3n"},8:{defaultClass:"ju367v3o"},10:{defaultClass:"ju367v3p"},12:{defaultClass:"ju367v3q"},14:{defaultClass:"ju367v3r"},16:{defaultClass:"ju367v3s"},18:{defaultClass:"ju367v3t"},20:{defaultClass:"ju367v3u"},24:{defaultClass:"ju367v3v"},28:{defaultClass:"ju367v3w"},32:{defaultClass:"ju367v3x"},36:{defaultClass:"ju367v3y"},44:{defaultClass:"ju367v3z"},64:{defaultClass:"ju367v40"},"-1":{defaultClass:"ju367v41"}}},marginRight:{values:{0:{defaultClass:"ju367v42"},1:{defaultClass:"ju367v43"},2:{defaultClass:"ju367v44"},3:{defaultClass:"ju367v45"},4:{defaultClass:"ju367v46"},5:{defaultClass:"ju367v47"},6:{defaultClass:"ju367v48"},8:{defaultClass:"ju367v49"},10:{defaultClass:"ju367v4a"},12:{defaultClass:"ju367v4b"},14:{defaultClass:"ju367v4c"},16:{defaultClass:"ju367v4d"},18:{defaultClass:"ju367v4e"},20:{defaultClass:"ju367v4f"},24:{defaultClass:"ju367v4g"},28:{defaultClass:"ju367v4h"},32:{defaultClass:"ju367v4i"},36:{defaultClass:"ju367v4j"},44:{defaultClass:"ju367v4k"},64:{defaultClass:"ju367v4l"},"-1":{defaultClass:"ju367v4m"}}},marginTop:{values:{0:{defaultClass:"ju367v4n"},1:{defaultClass:"ju367v4o"},2:{defaultClass:"ju367v4p"},3:{defaultClass:"ju367v4q"},4:{defaultClass:"ju367v4r"},5:{defaultClass:"ju367v4s"},6:{defaultClass:"ju367v4t"},8:{defaultClass:"ju367v4u"},10:{defaultClass:"ju367v4v"},12:{defaultClass:"ju367v4w"},14:{defaultClass:"ju367v4x"},16:{defaultClass:"ju367v4y"},18:{defaultClass:"ju367v4z"},20:{defaultClass:"ju367v50"},24:{defaultClass:"ju367v51"},28:{defaultClass:"ju367v52"},32:{defaultClass:"ju367v53"},36:{defaultClass:"ju367v54"},44:{defaultClass:"ju367v55"},64:{defaultClass:"ju367v56"},"-1":{defaultClass:"ju367v57"}}},maxWidth:{values:{1:{defaultClass:"ju367v58"},2:{defaultClass:"ju367v59"},4:{defaultClass:"ju367v5a"},8:{defaultClass:"ju367v5b"},12:{defaultClass:"ju367v5c"},20:{defaultClass:"ju367v5d"},24:{defaultClass:"ju367v5e"},28:{defaultClass:"ju367v5f"},30:{defaultClass:"ju367v5g"},32:{defaultClass:"ju367v5h"},34:{defaultClass:"ju367v5i"},36:{defaultClass:"ju367v5j"},40:{defaultClass:"ju367v5k"},44:{defaultClass:"ju367v5l"},48:{defaultClass:"ju367v5m"},54:{defaultClass:"ju367v5n"},60:{defaultClass:"ju367v5o"},200:{defaultClass:"ju367v5p"},full:{defaultClass:"ju367v5q"},max:{defaultClass:"ju367v5r"}}},minWidth:{values:{1:{defaultClass:"ju367v5s"},2:{defaultClass:"ju367v5t"},4:{defaultClass:"ju367v5u"},8:{defaultClass:"ju367v5v"},12:{defaultClass:"ju367v5w"},20:{defaultClass:"ju367v5x"},24:{defaultClass:"ju367v5y"},28:{defaultClass:"ju367v5z"},30:{defaultClass:"ju367v60"},32:{defaultClass:"ju367v61"},34:{defaultClass:"ju367v62"},36:{defaultClass:"ju367v63"},40:{defaultClass:"ju367v64"},44:{defaultClass:"ju367v65"},48:{defaultClass:"ju367v66"},54:{defaultClass:"ju367v67"},60:{defaultClass:"ju367v68"},200:{defaultClass:"ju367v69"},full:{defaultClass:"ju367v6a"},max:{defaultClass:"ju367v6b"}}},overflow:{values:{hidden:{defaultClass:"ju367v6c"}}},paddingBottom:{values:{0:{defaultClass:"ju367v6d"},1:{defaultClass:"ju367v6e"},2:{defaultClass:"ju367v6f"},3:{defaultClass:"ju367v6g"},4:{defaultClass:"ju367v6h"},5:{defaultClass:"ju367v6i"},6:{defaultClass:"ju367v6j"},8:{defaultClass:"ju367v6k"},10:{defaultClass:"ju367v6l"},12:{defaultClass:"ju367v6m"},14:{defaultClass:"ju367v6n"},16:{defaultClass:"ju367v6o"},18:{defaultClass:"ju367v6p"},20:{defaultClass:"ju367v6q"},24:{defaultClass:"ju367v6r"},28:{defaultClass:"ju367v6s"},32:{defaultClass:"ju367v6t"},36:{defaultClass:"ju367v6u"},44:{defaultClass:"ju367v6v"},64:{defaultClass:"ju367v6w"},"-1":{defaultClass:"ju367v6x"}}},paddingLeft:{values:{0:{defaultClass:"ju367v6y"},1:{defaultClass:"ju367v6z"},2:{defaultClass:"ju367v70"},3:{defaultClass:"ju367v71"},4:{defaultClass:"ju367v72"},5:{defaultClass:"ju367v73"},6:{defaultClass:"ju367v74"},8:{defaultClass:"ju367v75"},10:{defaultClass:"ju367v76"},12:{defaultClass:"ju367v77"},14:{defaultClass:"ju367v78"},16:{defaultClass:"ju367v79"},18:{defaultClass:"ju367v7a"},20:{defaultClass:"ju367v7b"},24:{defaultClass:"ju367v7c"},28:{defaultClass:"ju367v7d"},32:{defaultClass:"ju367v7e"},36:{defaultClass:"ju367v7f"},44:{defaultClass:"ju367v7g"},64:{defaultClass:"ju367v7h"},"-1":{defaultClass:"ju367v7i"}}},paddingRight:{values:{0:{defaultClass:"ju367v7j"},1:{defaultClass:"ju367v7k"},2:{defaultClass:"ju367v7l"},3:{defaultClass:"ju367v7m"},4:{defaultClass:"ju367v7n"},5:{defaultClass:"ju367v7o"},6:{defaultClass:"ju367v7p"},8:{defaultClass:"ju367v7q"},10:{defaultClass:"ju367v7r"},12:{defaultClass:"ju367v7s"},14:{defaultClass:"ju367v7t"},16:{defaultClass:"ju367v7u"},18:{defaultClass:"ju367v7v"},20:{defaultClass:"ju367v7w"},24:{defaultClass:"ju367v7x"},28:{defaultClass:"ju367v7y"},32:{defaultClass:"ju367v7z"},36:{defaultClass:"ju367v80"},44:{defaultClass:"ju367v81"},64:{defaultClass:"ju367v82"},"-1":{defaultClass:"ju367v83"}}},paddingTop:{values:{0:{defaultClass:"ju367v84"},1:{defaultClass:"ju367v85"},2:{defaultClass:"ju367v86"},3:{defaultClass:"ju367v87"},4:{defaultClass:"ju367v88"},5:{defaultClass:"ju367v89"},6:{defaultClass:"ju367v8a"},8:{defaultClass:"ju367v8b"},10:{defaultClass:"ju367v8c"},12:{defaultClass:"ju367v8d"},14:{defaultClass:"ju367v8e"},16:{defaultClass:"ju367v8f"},18:{defaultClass:"ju367v8g"},20:{defaultClass:"ju367v8h"},24:{defaultClass:"ju367v8i"},28:{defaultClass:"ju367v8j"},32:{defaultClass:"ju367v8k"},36:{defaultClass:"ju367v8l"},44:{defaultClass:"ju367v8m"},64:{defaultClass:"ju367v8n"},"-1":{defaultClass:"ju367v8o"}}},position:{values:{absolute:{defaultClass:"ju367v8p"},fixed:{defaultClass:"ju367v8q"},relative:{defaultClass:"ju367v8r"}}},WebkitUserSelect:{values:{none:{defaultClass:"ju367v8s"}}},right:{values:{0:{defaultClass:"ju367v8t"}}},transition:{values:{default:{defaultClass:"ju367v8u"},transform:{defaultClass:"ju367v8v"}}},userSelect:{values:{none:{defaultClass:"ju367v8w"}}},width:{values:{1:{defaultClass:"ju367v8x"},2:{defaultClass:"ju367v8y"},4:{defaultClass:"ju367v8z"},8:{defaultClass:"ju367v90"},12:{defaultClass:"ju367v91"},20:{defaultClass:"ju367v92"},24:{defaultClass:"ju367v93"},28:{defaultClass:"ju367v94"},30:{defaultClass:"ju367v95"},32:{defaultClass:"ju367v96"},34:{defaultClass:"ju367v97"},36:{defaultClass:"ju367v98"},40:{defaultClass:"ju367v99"},44:{defaultClass:"ju367v9a"},48:{defaultClass:"ju367v9b"},54:{defaultClass:"ju367v9c"},60:{defaultClass:"ju367v9d"},200:{defaultClass:"ju367v9e"},full:{defaultClass:"ju367v9f"},max:{defaultClass:"ju367v9g"}}},backdropFilter:{values:{modalOverlay:{defaultClass:"ju367v9h"}}}}}),tz={colors:{accentColor:"var(--rk-colors-accentColor)",accentColorForeground:"var(--rk-colors-accentColorForeground)",actionButtonBorder:"var(--rk-colors-actionButtonBorder)",actionButtonBorderMobile:"var(--rk-colors-actionButtonBorderMobile)",actionButtonSecondaryBackground:"var(--rk-colors-actionButtonSecondaryBackground)",closeButton:"var(--rk-colors-closeButton)",closeButtonBackground:"var(--rk-colors-closeButtonBackground)",connectButtonBackground:"var(--rk-colors-connectButtonBackground)",connectButtonBackgroundError:"var(--rk-colors-connectButtonBackgroundError)",connectButtonInnerBackground:"var(--rk-colors-connectButtonInnerBackground)",connectButtonText:"var(--rk-colors-connectButtonText)",connectButtonTextError:"var(--rk-colors-connectButtonTextError)",connectionIndicator:"var(--rk-colors-connectionIndicator)",downloadBottomCardBackground:"var(--rk-colors-downloadBottomCardBackground)",downloadTopCardBackground:"var(--rk-colors-downloadTopCardBackground)",error:"var(--rk-colors-error)",generalBorder:"var(--rk-colors-generalBorder)",generalBorderDim:"var(--rk-colors-generalBorderDim)",menuItemBackground:"var(--rk-colors-menuItemBackground)",modalBackdrop:"var(--rk-colors-modalBackdrop)",modalBackground:"var(--rk-colors-modalBackground)",modalBorder:"var(--rk-colors-modalBorder)",modalText:"var(--rk-colors-modalText)",modalTextDim:"var(--rk-colors-modalTextDim)",modalTextSecondary:"var(--rk-colors-modalTextSecondary)",profileAction:"var(--rk-colors-profileAction)",profileActionHover:"var(--rk-colors-profileActionHover)",profileForeground:"var(--rk-colors-profileForeground)",selectedOptionBorder:"var(--rk-colors-selectedOptionBorder)",standby:"var(--rk-colors-standby)"},fonts:{body:"var(--rk-fonts-body)"},radii:{actionButton:"var(--rk-radii-actionButton)",connectButton:"var(--rk-radii-connectButton)",menuButton:"var(--rk-radii-menuButton)",modal:"var(--rk-radii-modal)",modalMobile:"var(--rk-radii-modalMobile)"},shadows:{connectButton:"var(--rk-shadows-connectButton)",dialog:"var(--rk-shadows-dialog)",profileDetailsAction:"var(--rk-shadows-profileDetailsAction)",selectedOption:"var(--rk-shadows-selectedOption)",selectedWallet:"var(--rk-shadows-selectedWallet)",walletLogo:"var(--rk-shadows-walletLogo)"},blurs:{modalOverlay:"var(--rk-blurs-modalOverlay)"}},tq={shrink:"_12cbo8i6",shrinkSm:"_12cbo8i7"},tG={grow:"_12cbo8i4",growLg:"_12cbo8i5"};function touchableStyles({active:e,hover:t}){return["_12cbo8i3 ju367v8r",t&&tG[t],tq[e]]}var tW=(0,D.createContext)(null);function useAuthenticationStatus(){var e;let t=(0,D.useContext)(tW);return null!=(e=null==t?void 0:t.status)?e:null}function useConnectionStatus(){let e=useAuthenticationStatus(),{isConnected:t}=(0,_.m)();return t?e&&("loading"===e||"unauthenticated"===e)?e:"connected":"disconnected"}function isAndroid(){return"undefined"!=typeof navigator&&/android/i.test(navigator.userAgent)}function isIOS(){return"undefined"!=typeof navigator&&/iPhone|iPod/.test(navigator.userAgent)||"undefined"!=typeof navigator&&(/iPad/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)}function isMobile(){return isAndroid()||isIOS()}var tH={a:"iekbcca",blockquote:"iekbcc2",button:"iekbcc9",input:"iekbcc8 iekbcc5 iekbcc4",mark:"iekbcc6",ol:"iekbcc1",q:"iekbcc2",select:"iekbcc7 iekbcc5 iekbcc4",table:"iekbcc3",textarea:"iekbcc5 iekbcc4",ul:"iekbcc1"},atoms=({reset:e,...t})=>{if(!e)return tL(t);let n=tH[e],o=tL(t);return(0,L.Z)("iekbcc0",n,o)},tQ=D.forwardRef(({as:e="div",className:t,testId:n,...o},i)=>{let s={},l={};for(let e in o)tL.properties.has(e)?s[e]=o[e]:l[e]=o[e];let c=atoms({reset:"string"==typeof e?e:"div",...s});return D.createElement(e,{className:(0,L.Z)(c,t),...l,"data-testid":n?`rk-${n.replace(/^rk-/,"")}`:void 0,ref:i})});tQ.displayName="Box";var tK=new Map,tV=new Map;async function loadAsyncImage(e){let t=tV.get(e);if(t)return t;let load=async()=>e().then(async t=>(tK.set(e,t),t)),n=load().catch(t=>load().catch(t=>{tV.delete(e)}));return tV.set(e,n),n}async function loadImages(...e){return await Promise.all(e.map(e=>"function"==typeof e?loadAsyncImage(e):e))}function useAsyncImage(e){let t="function"==typeof e?tK.get(e):void 0,n=function(){let[,e]=(0,D.useReducer)(e=>e+1,0);return e}();return(0,D.useEffect)(()=>{"function"!=typeof e||t||loadAsyncImage(e).then(n)},[e,t,n]),"function"==typeof e?t:e}function AsyncImage({alt:e,background:t,borderColor:n,borderRadius:o,useAsImage:i,boxShadow:s,height:l,src:c,width:u,testId:d}){let p=isIOS(),f=useAsyncImage(c),m=f&&/^http/.test(f),[b,g]=(0,D.useReducer)(()=>!0,!1);return D.createElement(tQ,{"aria-label":e,borderRadius:o,boxShadow:s,height:"string"==typeof l?l:void 0,overflow:"hidden",position:"relative",role:"img",style:{background:t,height:"number"==typeof l?l:void 0,width:"number"==typeof u?u:void 0},width:"string"==typeof u?u:void 0,testId:d},D.createElement(tQ,{...i?{"aria-hidden":!0,as:"img",src:f}:m?{"aria-hidden":!0,as:"img",onLoad:g,src:f}:{backgroundSize:"cover"},height:"full",position:"absolute",...p?{WebkitUserSelect:"none"}:{},style:{WebkitTouchCallout:"none",transition:"opacity .15s linear",userSelect:"none",...i?{}:m?{opacity:b?1:0}:{backgroundImage:f?`url(${f})`:void 0,backgroundRepeat:"no-repeat",opacity:f?1:0}},width:"full"}),n?D.createElement(tQ,{..."object"==typeof n&&"custom"in n?{style:{borderColor:n.custom}}:{borderColor:n},borderRadius:o,borderStyle:"solid",borderWidth:"1",height:"full",position:"relative",width:"full"}):null)}var useRandomId=e=>(0,D.useMemo)(()=>`${e}_${Math.round(1e9*Math.random())}`,[e]),SpinnerIcon=({height:e=21,width:t=21})=>{let n=useRandomId("spinner");return D.createElement("svg",{className:"_1luule42",fill:"none",height:e,viewBox:"0 0 21 21",width:t,xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Loading"),D.createElement("clipPath",{id:n},D.createElement("path",{d:"M10.5 3C6.35786 3 3 6.35786 3 10.5C3 14.6421 6.35786 18 10.5 18C11.3284 18 12 18.6716 12 19.5C12 20.3284 11.3284 21 10.5 21C4.70101 21 0 16.299 0 10.5C0 4.70101 4.70101 0 10.5 0C16.299 0 21 4.70101 21 10.5C21 11.3284 20.3284 12 19.5 12C18.6716 12 18 11.3284 18 10.5C18 6.35786 14.6421 3 10.5 3Z"})),D.createElement("foreignObject",{clipPath:`url(#${n})`,height:"21",width:"21",x:"0",y:"0"},D.createElement("div",{className:"_1luule43"})))},tZ=[{color:"#FC5C54",emoji:"\uD83C\uDF36"},{color:"#FFD95A",emoji:"\uD83E\uDD11"},{color:"#E95D72",emoji:"\uD83D\uDC19"},{color:"#6A87C8",emoji:"\uD83E\uDED0"},{color:"#5FD0F3",emoji:"\uD83D\uDC33"},{color:"#FC5C54",emoji:"\uD83E\uDD36"},{color:"#75C06B",emoji:"\uD83C\uDF32"},{color:"#FFDD86",emoji:"\uD83C\uDF1E"},{color:"#5FC6D4",emoji:"\uD83D\uDC12"},{color:"#FF949A",emoji:"\uD83D\uDC35"},{color:"#FF8024",emoji:"\uD83E\uDD8A"},{color:"#9BA1A4",emoji:"\uD83D\uDC3C"},{color:"#EC66FF",emoji:"\uD83E\uDD84"},{color:"#FF8CBC",emoji:"\uD83D\uDC37"},{color:"#FF9A23",emoji:"\uD83D\uDC27"},{color:"#FF949A",emoji:"\uD83E\uDDA9"},{color:"#C5DADB",emoji:"\uD83D\uDC7D"},{color:"#FC5C54",emoji:"\uD83C\uDF88"},{color:"#FF949A",emoji:"\uD83C\uDF49"},{color:"#FFD95A",emoji:"\uD83C\uDF89"},{color:"#A8CE63",emoji:"\uD83D\uDC32"},{color:"#71ABFF",emoji:"\uD83C\uDF0E"},{color:"#FFE279",emoji:"\uD83C\uDF4A"},{color:"#B6B1B6",emoji:"\uD83D\uDC2D"},{color:"#FF6780",emoji:"\uD83C\uDF63"},{color:"#FFD95A",emoji:"\uD83D\uDC25"},{color:"#A575FF",emoji:"\uD83D\uDC7E"},{color:"#A8CE63",emoji:"\uD83E\uDD66"},{color:"#FC5C54",emoji:"\uD83D\uDC79"},{color:"#FFE279",emoji:"\uD83D\uDE40"},{color:"#5FD0F3",emoji:"⛱"},{color:"#4D82FF",emoji:"⛵️"},{color:"#FFE279",emoji:"\uD83E\uDD73"},{color:"#FF949A",emoji:"\uD83E\uDD2F"},{color:"#FFB35A",emoji:"\uD83E\uDD20"}],defaultAvatar=({address:e,ensImage:t,size:n})=>{let[o,i]=(0,D.useState)(!1);(0,D.useEffect)(()=>{if(t){let e=new Image;e.src=t,e.onload=()=>i(!0)}},[t]);let{color:s,emoji:l}=(0,D.useMemo)(()=>(function(e){let t=Math.abs(function(e){let t=0;if(0===e.length)return t;for(let n=0;nD.createElement("svg",{fill:"none",height:"7",width:"14",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Dropdown"),D.createElement("path",{d:"M12.75 1.54001L8.51647 5.0038C7.77974 5.60658 6.72026 5.60658 5.98352 5.0038L1.75 1.54001",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2.5",xmlns:"http://www.w3.org/2000/svg"})),tX=new class{constructor(e){for(let[t,n]of(this.listeners=new Set,this.defaultLocale="en",this.enableFallback=!1,this.locale="en",this.cachedLocales=[],this.translations={},Object.entries(e)))this.cachedLocales=[...this.cachedLocales,t],this.translations={...this.translations,...this.flattenTranslation(n,t)}}missingMessage(e){return`[missing: "${this.locale}.${e}" translation]`}flattenTranslation(e,t){let n={},flatten=(e,t)=>{for(let o of Object.keys(e)){let i=`${t}.${o}`,s=e[o];"object"==typeof s&&null!==s?flatten(s,i):n[i]=s}};return flatten(e,t),n}translateWithReplacements(e,t={}){let n=e;for(let e in t){let o=t[e];n=n.replace(`%{${e}}`,o)}return n}t(e,t,n){let o=`${this.locale}.${e}`,i=this.translations[o];if(!i){if(this.enableFallback){let n=`${this.defaultLocale}.${e}`,o=this.translations[n];if(o)return this.translateWithReplacements(o,t)}return(null==n?void 0:n.rawKeyIfTranslationMissing)?e:this.missingMessage(e)}return this.translateWithReplacements(i,t)}isLocaleCached(e){return this.cachedLocales.includes(e)}updateLocale(e){this.locale=e,this.notifyListeners()}setTranslations(e,t){let n=this.isLocaleCached(e);n||(this.cachedLocales=[...this.cachedLocales,e],this.translations={...this.translations,...this.flattenTranslation(t,e)}),this.locale=e,this.notifyListeners()}notifyListeners(){for(let e of this.listeners)e()}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}}({en:JSON.parse(N.I),"en-US":JSON.parse(N.I)});tX.defaultLocale="en-US",tX.locale="en-US",tX.enableFallback=!0;var fetchTranslations=async e=>{switch(e){case"ar":case"ar-AR":return(await n.e(4507).then(n.bind(n,24507))).default;case"en":case"en-US":default:return(await n.e(3688).then(n.bind(n,93688))).default;case"es":case"es-419":return(await n.e(2499).then(n.bind(n,32499))).default;case"fr":case"fr-FR":return(await n.e(8989).then(n.bind(n,78989))).default;case"hi":case"hi-IN":return(await n.e(9212).then(n.bind(n,19212))).default;case"id":case"id-ID":return(await n.e(2840).then(n.bind(n,52840))).default;case"ja":case"ja-JP":return(await n.e(6210).then(n.bind(n,96210))).default;case"ko":case"ko-KR":return(await n.e(1961).then(n.bind(n,61961))).default;case"pt":case"pt-BR":return(await n.e(5850).then(n.bind(n,75850))).default;case"ru":case"ru-RU":return(await n.e(6626).then(n.bind(n,46626))).default;case"th":case"th-TH":return(await n.e(5515).then(n.bind(n,25515))).default;case"tr":case"tr-TR":return(await n.e(499).then(n.bind(n,60499))).default;case"ua":case"uk-UA":return(await n.e(3760).then(n.bind(n,3760))).default;case"zh":case"zh-CN":return(await n.e(2896).then(n.bind(n,72896))).default}};async function setLocale(e){let t=tX.isLocaleCached(e);if(t){tX.updateLocale(e);return}let n=await fetchTranslations(e);tX.setTranslations(e,JSON.parse(n))}var detectedBrowserLocale=()=>{var e;if("undefined"!=typeof window&&"undefined"!=typeof navigator){if(null==(e=navigator.languages)?void 0:e.length)return navigator.languages[0];if(navigator.language)return navigator.language}},tY=(0,D.createContext)({i18n:tX}),I18nProvider=({children:e,locale:t})=>{let[n,o]=(0,D.useState)(0),i=(0,D.useMemo)(()=>detectedBrowserLocale(),[]);(0,D.useEffect)(()=>{let e=tX.onChange(()=>{o(e=>e+1)});return e},[]),(0,D.useEffect)(()=>{t&&t!==tX.locale?setLocale(t):!t&&i&&i!==tX.locale&&setLocale(i)},[t,i]);let s=(0,D.useMemo)(()=>({t:(e,t)=>tX.t(e,t),i18n:tX}),[n]);return D.createElement(tY.Provider,{value:s},e)};function isNotNullish(e){return null!=e}var t$={iconBackground:"#96bedc",iconUrl:async()=>(await n.e(1727).then(n.bind(n,1727))).default},t0={iconBackground:"#e84141",iconUrl:async()=>(await n.e(6237).then(n.bind(n,36237))).default},t1={iconBackground:"#0052ff",iconUrl:async()=>(await n.e(1711).then(n.bind(n,41711))).default},t6={iconBackground:"#ebac0e",iconUrl:async()=>(await n.e(4253).then(n.bind(n,84253))).default},t3={iconBackground:"#002D74",iconUrl:async()=>(await n.e(5939).then(n.bind(n,95939))).default},t2={iconBackground:"#484c50",iconUrl:async()=>(await n.e(5488).then(n.bind(n,85488))).default},t7={iconBackground:"#ff5a57",iconUrl:async()=>(await n.e(704).then(n.bind(n,60704))).default},t8={iconBackground:"#9f71ec",iconUrl:async()=>(await n.e(8881).then(n.bind(n,48881))).default},t5={iconBackground:"#f9f7ec",iconUrl:async()=>(await n.e(135).then(n.bind(n,70135))).default},t4={iconBackground:"#f9f7ec",iconUrl:async()=>(await n.e(4583).then(n.bind(n,94583))).default},t9={iconBackground:"#000000",iconUrl:async()=>(await n.e(5119).then(n.bind(n,65119))).default},re=Object.fromEntries(Object.values({arbitrum:{chainId:42161,name:"Arbitrum",...t$},arbitrumGoerli:{chainId:421613,...t$},arbitrumSepolia:{chainId:421614,...t$},avalanche:{chainId:43114,...t0},avalancheFuji:{chainId:43113,...t0},base:{chainId:8453,name:"Base",...t1},baseGoerli:{chainId:84531,...t1},baseSepolia:{chainId:84532,...t1},bsc:{chainId:56,name:"BSC",...t6},bscTestnet:{chainId:97,...t6},cronos:{chainId:25,...t3},cronosTestnet:{chainId:338,...t3},goerli:{chainId:5,...t2},hardhat:{chainId:31337,iconBackground:"#f9f7ec",iconUrl:async()=>(await n.e(6253).then(n.bind(n,26253))).default},holesky:{chainId:17e3,...t2},kovan:{chainId:42,...t2},localhost:{chainId:1337,...t2},mainnet:{chainId:1,name:"Ethereum",...t2},optimism:{chainId:10,name:"Optimism",...t7},optimismGoerli:{chainId:420,...t7},optimismKovan:{chainId:69,...t7},optimismSepolia:{chainId:11155420,...t7},polygon:{chainId:137,name:"Polygon",...t8},polygonMumbai:{chainId:80001,...t8},rinkeby:{chainId:4,...t2},ropsten:{chainId:3,...t2},ronin:{chainId:2020,iconBackground:"#1273EA",iconUrl:async()=>(await n.e(1424).then(n.bind(n,81424))).default},sepolia:{chainId:11155111,...t2},xdc:{chainId:50,name:"XinFin",...t5},xdcTestnet:{chainId:51,...t5},zkSync:{chainId:324,name:"zkSync",...t4},zkSyncTestnet:{chainId:280,...t4},zora:{chainId:7777777,name:"Zora",...t9},zoraSepolia:{chainId:999999999,...t9},zoraTestnet:{chainId:999,...t9}}).filter(isNotNullish).map(({chainId:e,...t})=>[e,t])),provideRainbowKitChains=e=>e.map(e=>{var t,n,o,i;let s=null!=(t=re[e.id])?t:{};return{...e,name:null!=(n=s.name)?n:e.name,iconUrl:null!=(o=e.iconUrl)?o:s.iconUrl,iconBackground:null!=(i=e.iconBackground)?i:s.iconBackground}}),rt=(0,D.createContext)({chains:[]});function RainbowKitChainProvider({children:e,initialChain:t}){let{chains:n}=(0,z.Z)();return D.createElement(rt.Provider,{value:(0,D.useMemo)(()=>({chains:provideRainbowKitChains(n),initialChainId:"number"==typeof t?t:null==t?void 0:t.id}),[n,t])},e)}var useRainbowKitChains=()=>(0,D.useContext)(rt).chains,useInitialChainId=()=>(0,D.useContext)(rt).initialChainId,useRainbowKitChainsById=()=>{let e=useRainbowKitChains();return(0,D.useMemo)(()=>{let t={};for(let n of e)t[n.id]=n;return t},[e])},rr=(0,D.createContext)({showBalance:void 0,setShowBalance:()=>{}});function ShowBalanceProvider({children:e}){let[t,n]=(0,D.useState)();return D.createElement(rr.Provider,{value:{showBalance:t,setShowBalance:n}},e)}var useShowBalance=()=>(0,D.useContext)(rr);function useIsMainnetConfigured(){let e=useRainbowKitChains(),t=ex.R.id,n=e.some(e=>e.id===t);return n}function useMainnetEnsAvatar(e){var t;let n=useIsMainnetConfigured(),{data:o}=function(e={}){let{name:t,query:n={}}=e,o=(0,z.Z)(e),i=useChainId(),s=function(e,t={}){return{async queryFn({queryKey:t}){let{name:n,scopeKey:o,...i}=t[1];if(!n)throw Error("name is required");return function(e,t){let{chainId:n,...o}=t,i=e.getClient({chainId:n}),s=(0,K.s)(i,getEnsAvatar,"getEnsAvatar");return s(o)}(e,{...i,name:n})},queryKey:function(e={}){return["ensAvatar",filterQueryOptions(e)]}(t)}}(o,{...e,chainId:e.chainId??i}),l=!!(t&&(n.enabled??!0));return query_useQuery({...n,...s,enabled:l})}({chainId:ex.R.id,name:e?(t=function(e,t,n){if(!e)return[];init();let o=0;return e.split(".").map(e=>{let i=function(e){let t=[];for(let n=0,o=e.length;n0;)if(95!==e[--t])throw Error("underscore allowed only at start")}(f),!(s.emoji=l>1||o[0].is_emoji)&&f.every(e=>e<128))!function(e){if(e.length>=4&&45==e[2]&&45==e[3])throw Error(`invalid label extension: "${str_from_cps(e.slice(0,4))}"`)}(f),e="ASCII";else{let t=o.flatMap(e=>e.is_emoji?[]:e);if(t.length){if(d.has(f[0]))throw error_placement("leading combining mark");for(let e=1;egroup_has_cp(e,n));if(!e.length){if(m.some(e=>group_has_cp(e,n)))throw error_group_member(t[0],n);throw error_disallowed(n)}if(t=e,1==e.length)break}return t}(n);(function(e,t){for(let n of t)if(!group_has_cp(e,n))throw error_group_member(e,n);if(e.M){let e=decomposed(t).map(unpack_cp);for(let t=1,n=e.length;t4)throw Error(`excessive non-spacing marks: ${bidi_qq(safe_str_from_cps(e.slice(t-1,o)))} (${o-t}/4)`);t=o}}})(i,t),function(e,t){let n;let o=[];for(let e of t){let t=g.get(e);if(1===t)return;if(t){let o=t.M.get(e);if(!(n=n?n.filter(e=>o.has(e)):Array_from(o)).length)return}else o.push(e)}if(n){for(let t of n)if(o.every(e=>group_has_cp(t,e)))throw Error(`whole-script confusable: ${e.N}/${t.N}`)}}(i,n),e=i.N}else e="Emoji"}s.type=e}catch(e){s.error=e}return s})}(e,nfc,filter_fe0f)).map(({input:e,error:n,output:o})=>{if(n){let o=n.message;throw Error(1==t.length?o:`Invalid label ${bidi_qq(safe_str_from_cps(e))}: ${o}`)}return str_from_cps(o)}).join("."):void 0,query:{enabled:n}});return o}function useMainnetEnsName(e){let t=useIsMainnetConfigured(),{data:n}=function(e={}){let{address:t,query:n={}}=e,o=(0,z.Z)(e),i=useChainId(),s=function(e,t={}){return{async queryFn({queryKey:t}){let{address:n,scopeKey:o,...i}=t[1];if(!n)throw Error("address is required");return function(e,t){let{chainId:n,...o}=t,i=e.getClient({chainId:n}),s=(0,K.s)(i,getEnsName,"getEnsName");return s(o)}(e,{...i,address:n})},queryKey:function(e={}){return["ensName",filterQueryOptions(e)]}(t)}}(o,{...e,chainId:e.chainId??i}),l=!!(t&&(n.enabled??!0));return query_useQuery({...n,...s,enabled:l})}({chainId:ex.R.id,address:e,query:{enabled:t}});return n}function dist_useChainId(){var e;let{chain:t}=(0,_.m)();return null!=(e=null==t?void 0:t.id)?e:null}var rn="rk-transactions";function loadData(){return function(e){try{let t=e?JSON.parse(e):{};return"object"==typeof t?t:{}}catch{return{}}}("undefined"!=typeof localStorage?localStorage.getItem(rn):null)}var ra=/^0x([A-Fa-f0-9]{64})$/,ro=(0,D.createContext)(null);function TransactionStoreProvider({children:e}){let t=function(e={}){let t=(0,z.Z)(e);return(0,e5.useSyncExternalStoreWithSelector)(e=>(function(e,t){let{onChange:n}=t;return e.subscribe(()=>getPublicClient(e),n,{equalityFn:(e,t)=>e?.uid===t?.uid})})(t,{onChange:e}),()=>getPublicClient(t,e),()=>getPublicClient(t,e),e=>e,(e,t)=>e?.uid===t?.uid)}(),{address:n}=(0,_.m)(),o=dist_useChainId(),[i]=(0,D.useState)(()=>null!=T?T:T=function({provider:e}){let t=loadData(),n=e,o=new Set,i=new Map;function getTransactions(e,n){var o,i;return null!=(i=null==(o=t[e])?void 0:o[n])?i:[]}function setTransactionStatus(e,t,n,o){updateTransactions(e,t,e=>e.map(e=>e.hash===n?{...e,status:o}:e))}async function waitForPendingTransactions(e,t){await Promise.all(getTransactions(e,t).filter(e=>"pending"===e.status).map(async o=>{let{confirmations:s,hash:l}=o,c=i.get(l);if(c)return await c;let u=n.waitForTransactionReceipt({confirmations:s,hash:l,timeout:3e5}).then(({status:n})=>{i.delete(l),void 0!==n&&setTransactionStatus(e,t,l,0===n||"reverted"===n?"failed":"confirmed")}).catch(()=>{setTransactionStatus(e,t,l,"failed")});return i.set(l,u),await u}))}function updateTransactions(e,n,i){var s,l;(t=loadData())[e]=null!=(s=t[e])?s:{};let c=0,u=i(null!=(l=t[e][n])?l:[]).filter(({status:e})=>"pending"===e||c++<=10);t[e][n]=u.length>0?u:void 0,localStorage.setItem(rn,JSON.stringify(t)),function(){for(let e of o)e()}(),waitForPendingTransactions(e,n)}return{addTransaction:function(e,t,n){let o=function(e){let t=[];return ra.test(e.hash)||t.push("Invalid transaction hash"),"string"!=typeof e.description&&t.push("Transaction must have a description"),void 0!==e.confirmations&&(!Number.isInteger(e.confirmations)||e.confirmations<1)&&t.push("Transaction confirmations must be a positiver integer"),t}(n);if(o.length>0)throw Error(["Unable to add transaction",...o].join("\n"));updateTransactions(e,t,e=>[{...n,status:"pending"},...e.filter(({hash:e})=>e!==n.hash)])},clearTransactions:function(e,t){updateTransactions(e,t,()=>[])},getTransactions,onChange:function(e){return o.add(e),()=>{o.delete(e)}},setProvider:function(e){n=e},waitForPendingTransactions}}({provider:t}));return(0,D.useEffect)(()=>{i.setProvider(t)},[i,t]),(0,D.useEffect)(()=>{n&&o&&i.waitForPendingTransactions(n,o)},[i,n,o]),D.createElement(ro.Provider,{value:i},e)}function useTransactionStore(){let e=(0,D.useContext)(ro);if(!e)throw Error("Transaction hooks must be used within RainbowKitProvider");return e}function useRecentTransactions(){let e=useTransactionStore(),{address:t}=(0,_.m)(),n=dist_useChainId(),[o,i]=(0,D.useState)(()=>e&&t&&n?e.getTransactions(t,n):[]);return(0,D.useEffect)(()=>{if(e&&t&&n)return i(e.getTransactions(t,n)),e.onChange(()=>{i(e.getTransactions(t,n))})},[e,t,n]),o}var resolveThemeVars=e=>"function"==typeof e?e():e;function cssStringFromTheme(e,t={}){return Object.entries(function(e,{extends:t}={}){let n={...assignInlineVars(tz,resolveThemeVars(e))};if(!t)return n;let o=assignInlineVars(tz,resolveThemeVars(t)),i=Object.fromEntries(Object.entries(n).filter(([e,t])=>t!==o[e]));return i}(e,t)).map(([e,t])=>`${e}:${t.replace(/[:;{}]/g,"")};`).join("")}var ri={appName:void 0,disclaimer:void 0,learnMoreUrl:"https://learn.rainbow.me/understanding-web3?utm_source=rainbowkit&utm_campaign=learnmore"},rs=(0,D.createContext)(ri),rl=(0,D.createContext)(!1),useWindowSize=()=>{let[e,t]=(0,D.useState)({height:void 0,width:void 0});return(0,D.useEffect)(()=>{var e;let n;let o=(e=()=>{t({height:window.innerHeight,width:window.innerWidth})},()=>{n&&clearTimeout(n),n=setTimeout(()=>{n=null,e()},500)});return window.addEventListener("resize",o),o(),()=>window.removeEventListener("resize",o)},[]),e},rc=(0,D.createContext)({connector:null,setConnector:()=>{}});function WalletButtonProvider({children:e}){let[t,n]=(0,D.useState)(null);return D.createElement(rc.Provider,{value:(0,D.useMemo)(()=>({connector:t,setConnector:n}),[t])},e)}var ru={COMPACT:"compact",WIDE:"wide"},rd=(0,D.createContext)(ru.WIDE);function ModalSizeProvider({children:e,modalSize:t}){let{width:n}=useWindowSize(),{connector:o}=(0,D.useContext)(rc);return D.createElement(rd.Provider,{value:n&&n<768||o?ru.COMPACT:t},e)}var rp=(0,D.createContext)(!1);function isSafari(){return"undefined"!=typeof navigator&&/Version\/([0-9._]+).*Safari/.test(navigator.userAgent)}function getBrowser(){var e;if("undefined"==typeof navigator)return"Browser";let t=navigator.userAgent.toLowerCase();return(null==(e=navigator.brave)?void 0:e.isBrave)?"Brave":t.indexOf("edg/")>-1?"Edge":t.indexOf("op")>-1?"Opera":"undefined"!=typeof document&&""!==getComputedStyle(document.body).getPropertyValue("--arc-palette-focus")?"Arc":t.indexOf("chrome")>-1?"Chrome":t.indexOf("firefox")>-1?"Firefox":isSafari()?"Safari":"Browser"}var{os:rh}=(0,tE.UAParser)();function getPlatform(){return"Windows"===rh.name?"Windows":"Mac OS"===rh.name?"macOS":["Ubuntu","Mint","Fedora","Debian","Arch","Linux"].includes(rh.name)?"Linux":"Desktop"}var getExtensionDownloadUrl=e=>{var t,n,o,i,s,l,c,u,d,p,f,m;let b=getBrowser();return null!=(m=({Arc:null==(t=null==e?void 0:e.downloadUrls)?void 0:t.chrome,Brave:null==(n=null==e?void 0:e.downloadUrls)?void 0:n.chrome,Chrome:null==(o=null==e?void 0:e.downloadUrls)?void 0:o.chrome,Edge:(null==(i=null==e?void 0:e.downloadUrls)?void 0:i.edge)||(null==(s=null==e?void 0:e.downloadUrls)?void 0:s.chrome),Firefox:null==(l=null==e?void 0:e.downloadUrls)?void 0:l.firefox,Opera:(null==(c=null==e?void 0:e.downloadUrls)?void 0:c.opera)||(null==(u=null==e?void 0:e.downloadUrls)?void 0:u.chrome),Safari:null==(d=null==e?void 0:e.downloadUrls)?void 0:d.safari,Browser:null==(p=null==e?void 0:e.downloadUrls)?void 0:p.browserExtension})[b])?m:null==(f=null==e?void 0:e.downloadUrls)?void 0:f.browserExtension},getMobileDownloadUrl=e=>{var t,n,o,i;let s=isIOS();return null!=(i=s?null==(t=null==e?void 0:e.downloadUrls)?void 0:t.ios:null==(n=null==e?void 0:e.downloadUrls)?void 0:n.android)?i:null==(o=null==e?void 0:e.downloadUrls)?void 0:o.mobile},getDesktopDownloadUrl=e=>{var t,n,o,i,s,l;let c=getPlatform();return null!=(l=({Windows:null==(t=null==e?void 0:e.downloadUrls)?void 0:t.windows,macOS:null==(n=null==e?void 0:e.downloadUrls)?void 0:n.macos,Linux:null==(o=null==e?void 0:e.downloadUrls)?void 0:o.linux,Desktop:null==(i=null==e?void 0:e.downloadUrls)?void 0:i.desktop})[c])?l:null==(s=null==e?void 0:e.downloadUrls)?void 0:s.desktop},isRecentWallet=(e,t)=>e.some(e=>e.id===t),isRainbowKitConnector=e=>!!e.isRainbowKitConnector,isEIP6963Connector=e=>{var t;return!!(!e.isRainbowKitConnector&&(null==(t=e.icon)?void 0:t.startsWith("data:image"))&&e.uid&&e.name)},rainbowKitConnectorWithWalletConnect=(e,t)=>{let n="walletConnect"===e.id&&t;return n?{...e,walletConnectModalConnector:t}:e},connectorsWithRecentWallets=({wallets:e,recentWallets:t})=>[...t,...e.filter(e=>!isRecentWallet(t,e.id))],rf="rk-recent";function getRecentWalletIds(){return"undefined"!=typeof localStorage?function(e){try{let t=e?JSON.parse(e):[];return Array.isArray(t)?t:[]}catch{return[]}}(localStorage.getItem(rf)):[]}function useWalletConnectors(e=!1){var t,n,o,i;let s=useRainbowKitChains(),l=useInitialChainId(),{connectAsync:c,connectors:u}=function(e={}){let{mutation:t}=e,n=(0,z.Z)(e),o=function(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e._internal.connectors.subscribe((e,t)=>{n(Object.values(e),t)})})(t,{onChange:e}),()=>getConnectors(t),()=>getConnectors(t))}({config:n}),{mutate:i,mutateAsync:s,...l}=(0,e9.D)({...t,mutationFn:e=>connect(n,e),mutationKey:["connect"]});return(0,D.useEffect)(()=>n.subscribe(({status:e})=>e,(e,t)=>{"connected"===t&&"disconnected"===e&&l.reset()}),[n,l]),{...l,connect:i,connectAsync:s,connectors:o}}(),{setIsWalletConnectModalOpen:d}=useWalletConnectOpenState(),p=u.map(e=>({...e,...e.rkDetails||{}}));async function connectWallet(e){var t,n,o;let i=await e.getChainId(),u=await c({chainId:null!=(o=null!=l?l:null==(t=s.find(({id:e})=>e===i))?void 0:t.id)?o:null==(n=s[0])?void 0:n.id,connector:e});return u&&function(e){var t;let n=(t=[e,...getRecentWalletIds()],[...new Set(t)]);localStorage.setItem(rf,JSON.stringify(n))}(e.id),u}async function connectToWalletConnectModal(e){try{d(!0),await connectWallet(e),d(!1)}catch(t){let e="UserRejectedRequestError"===t.name||"Connection request reset. Please try again."===t.message;if(d(!1),!e)throw t}}let getWalletConnectUri=async(e,t)=>{let n=await e.getProvider();return"coinbase"===e.id?n.qrUrl:new Promise(e=>n.once("display_uri",n=>{e(t(n))}))},f=p.find(e=>"walletConnect"===e.id&&e.isWalletConnectModalConnector),m=p.filter(isEIP6963Connector).map(e=>({...e,groupIndex:0})),b=p.filter(isRainbowKitConnector).filter(e=>!e.isWalletConnectModalConnector).filter(t=>{if(!e)return!0;let n=m.some(e=>e.id===t.rdns);return!n}).map(e=>rainbowKitConnectorWithWalletConnect(e,f)),g=[...m,...b],y=function(e,t){let n={};for(let o of e){let e=t(o);e&&(n[e]=o)}return n}(g,e=>e.id),v=getRecentWalletIds().map(e=>y[e]).filter(Boolean).slice(0,3),w=[],C=connectorsWithRecentWallets({wallets:g,recentWallets:v});for(let e of C){if(!e)continue;let s=isEIP6963Connector(e),l=isRecentWallet(v,e.id);if(s){w.push({...e,iconUrl:e.icon,ready:!0,connect:()=>connectWallet(e),groupName:"Installed",recent:l});continue}w.push({...e,ready:null==(t=e.installed)||t,connect:()=>connectWallet(e),desktopDownloadUrl:getDesktopDownloadUrl(e),extensionDownloadUrl:getExtensionDownloadUrl(e),groupName:e.groupName,mobileDownloadUrl:getMobileDownloadUrl(e),getQrCodeUri:(null==(n=e.qrCode)?void 0:n.getUri)?()=>getWalletConnectUri(e,e.qrCode.getUri):void 0,getDesktopUri:(null==(o=e.desktop)?void 0:o.getUri)?()=>getWalletConnectUri(e,e.desktop.getUri):void 0,getMobileUri:(null==(i=e.mobile)?void 0:i.getUri)?()=>{var t;return getWalletConnectUri(e,null==(t=e.mobile)?void 0:t.getUri)}:void 0,recent:l,showWalletConnectModal:e.walletConnectModalConnector?()=>connectToWalletConnectModal(e.walletConnectModalConnector):void 0})}return w}var src=async()=>(await n.e(794).then(n.bind(n,20794))).default,preloadAssetsIcon=()=>loadImages(src),AssetsIcon=()=>D.createElement(AsyncImage,{background:"#d0d5de",borderRadius:"10",height:"48",src,width:"48"}),src2=async()=>(await n.e(3200).then(n.bind(n,3200))).default,preloadLoginIcon=()=>loadImages(src2),LoginIcon=()=>D.createElement(AsyncImage,{background:"#d0d5de",borderRadius:"10",height:"48",src:src2,width:"48"}),rm=D.forwardRef(({as:e="div",children:t,className:n,color:o,display:i,font:s="body",id:l,size:c="16",style:u,tabIndex:d,textAlign:p="inherit",weight:f="regular",testId:m},b)=>D.createElement(tQ,{as:e,className:n,color:o,display:i,fontFamily:s,fontSize:c,fontWeight:f,id:l,ref:b,style:u,tabIndex:d,textAlign:p,testId:m},t));rm.displayName="Text";var rb={large:{fontSize:"16",paddingX:"24",paddingY:"10"},medium:{fontSize:"14",height:"28",paddingX:"12",paddingY:"4"},small:{fontSize:"14",paddingX:"10",paddingY:"5"}};function ActionButton({disabled:e=!1,href:t,label:n,onClick:o,rel:i="noreferrer noopener",size:s="medium",target:l="_blank",testId:c,type:u="primary"}){let d="primary"===u,p="large"!==s,f=isMobile(),m=e?"actionButtonSecondaryBackground":d?"accentColor":p?"actionButtonSecondaryBackground":null,{fontSize:b,height:g,paddingX:y,paddingY:v}=rb[s];return D.createElement(tQ,{...t?e?{}:{as:"a",href:t,rel:i,target:l}:{as:"button",type:"button"},onClick:e?void 0:o,...f&&p?{}:{borderColor:!f||p||d?"actionButtonBorder":"actionButtonBorderMobile",borderStyle:"solid",borderWidth:"1"},borderRadius:"actionButton",className:!e&&touchableStyles({active:"shrinkSm",hover:"grow"}),display:"block",paddingX:y,paddingY:v,style:{willChange:"transform"},testId:c,textAlign:"center",transition:"transform",...m?{background:m}:{},...g?{height:g}:{}},D.createElement(rm,{color:e?"modalTextSecondary":d?"accentColorForeground":"accentColor",size:b,weight:"bold"},n))}var CloseIcon=()=>isMobile()?D.createElement("svg",{"aria-hidden":!0,fill:"none",height:"11.5",viewBox:"0 0 11.5 11.5",width:"11.5",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Close"),D.createElement("path",{d:"M2.13388 0.366117C1.64573 -0.122039 0.854272 -0.122039 0.366117 0.366117C-0.122039 0.854272 -0.122039 1.64573 0.366117 2.13388L3.98223 5.75L0.366117 9.36612C-0.122039 9.85427 -0.122039 10.6457 0.366117 11.1339C0.854272 11.622 1.64573 11.622 2.13388 11.1339L5.75 7.51777L9.36612 11.1339C9.85427 11.622 10.6457 11.622 11.1339 11.1339C11.622 10.6457 11.622 9.85427 11.1339 9.36612L7.51777 5.75L11.1339 2.13388C11.622 1.64573 11.622 0.854272 11.1339 0.366117C10.6457 -0.122039 9.85427 -0.122039 9.36612 0.366117L5.75 3.98223L2.13388 0.366117Z",fill:"currentColor"})):D.createElement("svg",{"aria-hidden":!0,fill:"none",height:"10",viewBox:"0 0 10 10",width:"10",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Close"),D.createElement("path",{d:"M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L3.58579 5L0.292893 8.29289C-0.0976311 8.68342 -0.0976311 9.31658 0.292893 9.70711C0.683417 10.0976 1.31658 10.0976 1.70711 9.70711L5 6.41421L8.29289 9.70711C8.68342 10.0976 9.31658 10.0976 9.70711 9.70711C10.0976 9.31658 10.0976 8.68342 9.70711 8.29289L6.41421 5L9.70711 1.70711C10.0976 1.31658 10.0976 0.683417 9.70711 0.292893C9.31658 -0.0976311 8.68342 -0.0976311 8.29289 0.292893L5 3.58579L1.70711 0.292893Z",fill:"currentColor"})),CloseButton=({"aria-label":e="Close",onClose:t})=>{let n=isMobile();return D.createElement(tQ,{alignItems:"center","aria-label":e,as:"button",background:"closeButtonBackground",borderColor:"actionButtonBorder",borderRadius:"full",borderStyle:"solid",borderWidth:n?"0":"1",className:touchableStyles({active:"shrinkSm",hover:"growLg"}),color:"closeButton",display:"flex",height:n?"30":"28",justifyContent:"center",onClick:t,style:{willChange:"transform"},transition:"default",type:"button",width:n?"30":"28"},D.createElement(CloseIcon,null))},signInIcon=async()=>(await n.e(2898).then(n.bind(n,92898))).default;function SignIn({onClose:e,onCloseModal:t}){let{i18n:n}=(0,D.useContext)(tY),[{status:o,...i},s]=D.useState({status:"idle"}),l=function(){var e;let{adapter:t}=null!=(e=(0,D.useContext)(tW))?e:{};if(!t)throw Error("No authentication adapter found");return t}(),c=(0,D.useCallback)(async()=>{try{let e=await l.getNonce();s(t=>({...t,nonce:e}))}catch{s(e=>({...e,errorMessage:n.t("sign_in.message.preparing_error"),status:"idle"}))}},[l,n.t]),u=(0,D.useRef)(!1);D.useEffect(()=>{u.current||(u.current=!0,c())},[c]);let d=isMobile(),{address:p,chain:f}=(0,_.m)(),{signMessageAsync:m}=(0,tx.Q)(),signIn=async()=>{try{let e;let o=null==f?void 0:f.id,{nonce:c}=i;if(!p||!o||!c)return;s(e=>({...e,errorMessage:void 0,status:"signing"}));let u=l.createMessage({address:p,chainId:o,nonce:c});try{e=await m({message:l.getMessageBody({message:u})})}catch(e){if(e instanceof et.ab)return s(e=>({...e,status:"idle"}));return s(e=>({...e,errorMessage:n.t("sign_in.signature.signing_error"),status:"idle"}))}s(e=>({...e,status:"verifying"}));try{let n=await l.verify({message:u,signature:e});if(n){t();return}throw Error()}catch{return s(e=>({...e,errorMessage:n.t("sign_in.signature.verifying_error"),status:"idle"}))}}catch{s({errorMessage:n.t("sign_in.signature.oops_error"),status:"idle"})}};return D.createElement(tQ,{position:"relative"},D.createElement(tQ,{display:"flex",paddingRight:"16",paddingTop:"16",position:"absolute",right:"0"},D.createElement(CloseButton,{onClose:e})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"32":"24",padding:"24",paddingX:"18",style:{paddingTop:d?"60px":"36px"}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"6":"4",style:{maxWidth:d?320:280}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"32":"16"},D.createElement(AsyncImage,{height:40,src:signInIcon,width:40}),D.createElement(rm,{color:"modalText",size:d?"20":"18",textAlign:"center",weight:"heavy"},n.t("sign_in.label"))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"16":"12"},D.createElement(rm,{color:"modalTextSecondary",size:d?"16":"14",textAlign:"center"},n.t("sign_in.description")),"idle"===o&&i.errorMessage?D.createElement(rm,{color:"error",size:d?"16":"14",textAlign:"center",weight:"bold"},i.errorMessage):null)),D.createElement(tQ,{alignItems:d?void 0:"center",display:"flex",flexDirection:"column",gap:"8",width:"full"},D.createElement(ActionButton,{disabled:!i.nonce||"signing"===o||"verifying"===o,label:i.nonce?"signing"===o?n.t("sign_in.signature.waiting"):"verifying"===o?n.t("sign_in.signature.verifying"):n.t("sign_in.message.send"):n.t("sign_in.message.preparing"),onClick:signIn,size:d?"large":"medium",testId:"auth-message-button"}),d?D.createElement(ActionButton,{label:"Cancel",onClick:e,size:"large",type:"secondary"}):D.createElement(tQ,{as:"button",borderRadius:"full",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",onClick:e,paddingX:"10",paddingY:"5",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"closeButton",size:d?"16":"14",weight:"bold"},n.t("sign_in.message.cancel"))))))}var rg="WALLETCONNECT_DEEPLINK_CHOICE";function clearWalletConnectDeepLink(){localStorage.removeItem(rg)}var ry=(0,D.createContext)(void 0),rv="data-rk",createThemeRootProps=e=>({[rv]:e||""}),createThemeRootSelector=e=>{if(e&&!/^[a-zA-Z0-9_]+$/.test(e))throw Error(`Invalid ID: ${e}`);return e?`[${rv}="${e}"]`:`[${rv}]`},useThemeRootProps=()=>{let e=(0,D.useContext)(ry);return createThemeRootProps(e)},rw=lightTheme();function RainbowKitProvider({appInfo:e,avatar:t,children:n,coolMode:o=!1,id:i,initialChain:s,locale:l,modalSize:c=ru.WIDE,showRecentTransactions:u=!1,theme:d=rw}){if(!function(){let e=useRainbowKitChains(),t=useWalletConnectors(),n="unauthenticated"===useAuthenticationStatus(),o=(0,D.useCallback)(()=>{loadImages(...t.map(e=>e.iconUrl),...e.map(e=>e.iconUrl).filter(isNotNullish)),isMobile()||(preloadAssetsIcon(),preloadLoginIcon()),n&&loadImages(signInIcon)},[t,e,n]);(0,D.useEffect)(()=>{o()},[o])}(),!function(){let e=(0,D.useCallback)(()=>{!function({version:e}){localStorage.setItem("rk-version",e)}({version:"2.0.2"})},[]);(0,D.useEffect)(()=>{e()},[e])}(),useAccountEffect_useAccountEffect({onDisconnect:clearWalletConnectDeepLink}),"function"==typeof d)throw Error('A theme function was provided to the "theme" prop instead of a theme object. You must execute this function to get the resulting theme object.');let p=createThemeRootSelector(i),f={...ri,...e},m=null!=t?t:defaultAvatar;return D.createElement(RainbowKitChainProvider,{initialChain:s},D.createElement(WalletButtonProvider,null,D.createElement(I18nProvider,{locale:l},D.createElement(rl.Provider,{value:o},D.createElement(ModalSizeProvider,{modalSize:c},D.createElement(rp.Provider,{value:u},D.createElement(TransactionStoreProvider,null,D.createElement(tJ.Provider,{value:m},D.createElement(rs.Provider,{value:f},D.createElement(ry.Provider,{value:i},D.createElement(ShowBalanceProvider,null,D.createElement(ModalProvider,null,d?D.createElement("div",{...createThemeRootProps(i)},D.createElement("style",{dangerouslySetInnerHTML:{__html:[`${p}{${cssStringFromTheme("lightMode"in d?d.lightMode:d)}}`,"darkMode"in d?`@media(prefers-color-scheme:dark){${p}{${cssStringFromTheme(d.darkMode,{extends:d.lightMode})}}}`:null].join("")}}),n):n))))))))))))}var moveFocusWithin=(e,t)=>{let n=e.querySelectorAll("button:not(:disabled), a[href]");0!==n.length&&n["end"===t?n.length-1:0].focus()};function FocusTrap(e){let t=(0,D.useRef)(null);return(0,D.useEffect)(()=>{let e=document.activeElement;return()=>{var t;null==(t=e.focus)||t.call(e)}},[]),(0,D.useEffect)(()=>{if(t.current){let e=t.current.querySelector("[data-auto-focus]");e?e.focus():t.current.focus()}},[]),D.createElement(D.Fragment,null,D.createElement("div",{onFocus:(0,D.useCallback)(()=>t.current&&moveFocusWithin(t.current,"end"),[]),tabIndex:0}),D.createElement("div",{ref:t,style:{outline:"none"},tabIndex:-1,...e}),D.createElement("div",{onFocus:(0,D.useCallback)(()=>t.current&&moveFocusWithin(t.current,"start"),[]),tabIndex:0}))}var stopPropagation=e=>e.stopPropagation();function Dialog({children:e,onClose:t,open:n,titleId:o}){(0,D.useEffect)(()=>{let handleEscape=e=>n&&"Escape"===e.key&&t();return document.addEventListener("keydown",handleEscape),()=>document.removeEventListener("keydown",handleEscape)},[n,t]);let[i,s]=(0,D.useState)(!0);(0,D.useEffect)(()=>{s("hidden"!==getComputedStyle(window.document.body).overflow)},[]);let l=(0,D.useCallback)(()=>t(),[t]),c=useThemeRootProps(),u=isMobile();return D.createElement(D.Fragment,null,n?(0,tr.createPortal)(D.createElement(tv,{enabled:i},D.createElement(tQ,{...c},D.createElement(tQ,{...c,alignItems:u?"flex-end":"center","aria-labelledby":o,"aria-modal":!0,className:"_9pm4ki3 ju367v9h ju367vb3 ju367va ju367v2q ju367v8q",onClick:l,position:"fixed",role:"dialog"},D.createElement(FocusTrap,{className:"_9pm4ki5 ju367va ju367v15 ju367v8r",onClick:stopPropagation,role:"document"},e)))),document.body):null)}function DialogContent({bottomSheetOnMobile:e=!1,children:t,marginTop:n,padding:o="16",paddingBottom:i,wide:s=!1}){let l=isMobile(),c=(0,D.useContext)(rd),u=c===ru.COMPACT;return D.createElement(tQ,{marginTop:n},D.createElement(tQ,{className:[s?l?"_1ckjpok2 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r":u?"_1ckjpok4 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r":"_1ckjpok3 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r":"_1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r",l?"_1ckjpok6 ju367vq":null,l&&e?"_1ckjpok7":null].join(" ")},D.createElement(tQ,{padding:o,paddingBottom:null!=i?i:o},t)))}var rC=["k","m","b","t"];function toPrecision(e,t=1){return e.toString().replace(RegExp(`(.+\\.\\d{${t}})\\d+`),"$1").replace(/(\.[1-9]*)0+$/,"$1").replace(/\.$/,"")}function abbreviateETHBalance(e){if(e<1)return toPrecision(e,3);if(e<100)return toPrecision(e,2);if(e<1e4)return new Intl.NumberFormat().format(parseFloat(toPrecision(e,1)));let t=String(e);for(let n=rC.length-1;n>=0;n--){let o=10**((n+1)*3);if(o<=e){t=toPrecision(e=10*e/o/10,1)+rC[n];break}}return t}function formatAddress(e){return e.length<8?e:`${e.substring(0,4)}\u2026${e.substring(e.length-4)}`}function formatENS(e){if(!e)return"";let t=e.split("."),n=t.pop();return t.join(".").length>24?`${t.join(".").substring(0,24)}...`:`${t.join(".")}.${n}`}var CopiedIcon=()=>D.createElement("svg",{fill:"none",height:"13",viewBox:"0 0 13 13",width:"13",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Copied"),D.createElement("path",{d:"M4.94568 12.2646C5.41052 12.2646 5.77283 12.0869 6.01892 11.7109L12.39 1.96973C12.5677 1.69629 12.6429 1.44336 12.6429 1.2041C12.6429 0.561523 12.1644 0.0966797 11.5082 0.0966797C11.057 0.0966797 10.7767 0.260742 10.5033 0.691406L4.9115 9.50977L2.07458 5.98926C1.82166 5.68848 1.54822 5.55176 1.16541 5.55176C0.502319 5.55176 0.0238037 6.02344 0.0238037 6.66602C0.0238037 6.95312 0.112671 7.20605 0.358765 7.48633L3.88611 11.7588C4.18005 12.1074 4.50818 12.2646 4.94568 12.2646Z",fill:"currentColor"})),CopyIcon=()=>D.createElement("svg",{fill:"none",height:"16",viewBox:"0 0 17 16",width:"17",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Copy"),D.createElement("path",{d:"M3.04236 12.3027H4.18396V13.3008C4.18396 14.8525 5.03845 15.7002 6.59705 15.7002H13.6244C15.183 15.7002 16.0375 14.8525 16.0375 13.3008V6.24609C16.0375 4.69434 15.183 3.84668 13.6244 3.84668H12.4828V2.8418C12.4828 1.29688 11.6283 0.442383 10.0697 0.442383H3.04236C1.48376 0.442383 0.629272 1.29004 0.629272 2.8418V9.90332C0.629272 11.4551 1.48376 12.3027 3.04236 12.3027ZM3.23376 10.5391C2.68689 10.5391 2.39294 10.2656 2.39294 9.68457V3.06055C2.39294 2.47949 2.68689 2.21289 3.23376 2.21289H9.8783C10.4252 2.21289 10.7191 2.47949 10.7191 3.06055V3.84668H6.59705C5.03845 3.84668 4.18396 4.69434 4.18396 6.24609V10.5391H3.23376ZM6.78845 13.9365C6.24158 13.9365 5.94763 13.6699 5.94763 13.0889V6.45801C5.94763 5.87695 6.24158 5.61035 6.78845 5.61035H13.433C13.9799 5.61035 14.2738 5.87695 14.2738 6.45801V13.0889C14.2738 13.6699 13.9799 13.9365 13.433 13.9365H6.78845Z",fill:"currentColor"})),DisconnectIcon=()=>D.createElement("svg",{fill:"none",height:"16",viewBox:"0 0 18 16",width:"18",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Disconnect"),D.createElement("path",{d:"M2.67834 15.5908H9.99963C11.5514 15.5908 12.399 14.7432 12.399 13.1777V10.2656H10.6354V12.9863C10.6354 13.5332 10.3688 13.8271 9.78772 13.8271H2.89026C2.3092 13.8271 2.0426 13.5332 2.0426 12.9863V3.15625C2.0426 2.60254 2.3092 2.30859 2.89026 2.30859H9.78772C10.3688 2.30859 10.6354 2.60254 10.6354 3.15625V5.89746H12.399V2.95801C12.399 1.39941 11.5514 0.544922 9.99963 0.544922H2.67834C1.12659 0.544922 0.278931 1.39941 0.278931 2.95801V13.1777C0.278931 14.7432 1.12659 15.5908 2.67834 15.5908ZM7.43616 8.85059H14.0875L15.0924 8.78906L14.566 9.14453L13.6842 9.96484C13.5406 10.1016 13.4586 10.2861 13.4586 10.4844C13.4586 10.8398 13.7321 11.168 14.1217 11.168C14.3199 11.168 14.4635 11.0928 14.6002 10.9561L16.7809 8.68652C16.986 8.48145 17.0543 8.27637 17.0543 8.06445C17.0543 7.85254 16.986 7.64746 16.7809 7.43555L14.6002 5.17285C14.4635 5.03613 14.3199 4.9541 14.1217 4.9541C13.7321 4.9541 13.4586 5.27539 13.4586 5.6377C13.4586 5.83594 13.5406 6.02734 13.6842 6.15723L14.566 6.98438L15.0924 7.33984L14.0875 7.27148H7.43616C7.01917 7.27148 6.65686 7.62012 6.65686 8.06445C6.65686 8.50195 7.01917 8.85059 7.43616 8.85059Z",fill:"currentColor"})),chainToExplorerUrl=e=>{var t,n;return null==(n=null==(t=null==e?void 0:e.blockExplorers)?void 0:t.default)?void 0:n.url},ExternalLinkIcon=()=>D.createElement("svg",{fill:"none",height:"19",viewBox:"0 0 20 19",width:"20",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Link"),D.createElement("path",{d:"M10 18.9443C15.0977 18.9443 19.2812 14.752 19.2812 9.6543C19.2812 4.56543 15.0889 0.373047 10 0.373047C4.90234 0.373047 0.71875 4.56543 0.71875 9.6543C0.71875 14.752 4.91113 18.9443 10 18.9443ZM10 16.6328C6.1416 16.6328 3.03906 13.5215 3.03906 9.6543C3.03906 5.7959 6.13281 2.68457 10 2.68457C13.8584 2.68457 16.9697 5.7959 16.9697 9.6543C16.9785 13.5215 13.8672 16.6328 10 16.6328ZM12.7158 12.1416C13.2432 12.1416 13.5684 11.7549 13.5684 11.1836V7.19336C13.5684 6.44629 13.1377 6.05957 12.417 6.05957H8.40918C7.8291 6.05957 7.45117 6.38477 7.45117 6.91211C7.45117 7.43945 7.8291 7.77344 8.40918 7.77344H9.69238L10.7207 7.63281L9.53418 8.67871L6.73047 11.4912C6.53711 11.6758 6.41406 11.9395 6.41406 12.2031C6.41406 12.7832 6.85352 13.1699 7.39844 13.1699C7.68848 13.1699 7.92578 13.0732 8.1543 12.8623L10.9316 10.0762L11.9775 8.89844L11.8545 9.98828V11.1836C11.8545 11.7725 12.1885 12.1416 12.7158 12.1416Z",fill:"currentColor"})),CancelIcon=()=>D.createElement("svg",{fill:"none",height:"19",viewBox:"0 0 20 19",width:"20",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Cancel"),D.createElement("path",{d:"M10 18.9443C15.0977 18.9443 19.2812 14.752 19.2812 9.6543C19.2812 4.56543 15.0889 0.373047 10 0.373047C4.90234 0.373047 0.71875 4.56543 0.71875 9.6543C0.71875 14.752 4.91113 18.9443 10 18.9443ZM10 16.6328C6.1416 16.6328 3.03906 13.5215 3.03906 9.6543C3.03906 5.7959 6.13281 2.68457 10 2.68457C13.8584 2.68457 16.9697 5.7959 16.9697 9.6543C16.9785 13.5215 13.8672 16.6328 10 16.6328ZM7.29297 13.3018C7.58301 13.3018 7.81152 13.2139 7.99609 13.0205L10 11.0166L12.0127 13.0205C12.1973 13.2051 12.4258 13.3018 12.707 13.3018C13.2432 13.3018 13.6562 12.8887 13.6562 12.3525C13.6562 12.0977 13.5508 11.8691 13.3662 11.6934L11.3535 9.67188L13.375 7.6416C13.5596 7.44824 13.6562 7.22852 13.6562 6.98242C13.6562 6.44629 13.2432 6.0332 12.7158 6.0332C12.4346 6.0332 12.2148 6.12109 12.0215 6.31445L10 8.32715L7.9873 6.32324C7.80273 6.12988 7.58301 6.04199 7.29297 6.04199C6.76562 6.04199 6.35254 6.45508 6.35254 6.99121C6.35254 7.2373 6.44922 7.46582 6.63379 7.6416L8.65527 9.67188L6.63379 11.6934C6.44922 11.8691 6.35254 12.1064 6.35254 12.3525C6.35254 12.8887 6.76562 13.3018 7.29297 13.3018Z",fill:"currentColor"})),SuccessIcon=()=>D.createElement("svg",{fill:"none",height:"20",viewBox:"0 0 20 20",width:"20",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Success"),D.createElement("path",{d:"M10 19.4443C15.0977 19.4443 19.2812 15.252 19.2812 10.1543C19.2812 5.06543 15.0889 0.873047 10 0.873047C4.90234 0.873047 0.71875 5.06543 0.71875 10.1543C0.71875 15.252 4.91113 19.4443 10 19.4443ZM10 17.1328C6.1416 17.1328 3.03906 14.0215 3.03906 10.1543C3.03906 6.2959 6.13281 3.18457 10 3.18457C13.8584 3.18457 16.9697 6.2959 16.9697 10.1543C16.9785 14.0215 13.8672 17.1328 10 17.1328ZM9.07715 14.3379C9.4375 14.3379 9.7627 14.1533 9.97363 13.8369L13.7441 8.00977C13.8848 7.79883 13.9814 7.5791 13.9814 7.36816C13.9814 6.84961 13.5244 6.48926 13.0322 6.48926C12.707 6.48926 12.4258 6.66504 12.2148 7.0166L9.05957 12.0967L7.5918 10.2949C7.37207 10.0225 7.13477 9.9082 6.84473 9.9082C6.33496 9.9082 5.92188 10.3125 5.92188 10.8223C5.92188 11.0684 6.00098 11.2793 6.18555 11.5078L8.1543 13.8545C8.40918 14.1709 8.70801 14.3379 9.07715 14.3379Z",fill:"currentColor"})),getTxStatusIcon=e=>{switch(e){case"pending":default:return SpinnerIcon;case"confirmed":return SuccessIcon;case"failed":return CancelIcon}};function TxItem({tx:e}){let t=isMobile(),n=getTxStatusIcon(e.status),o="failed"===e.status?"error":"accentColor",{chain:i}=(0,_.m)(),s="confirmed"===e.status?"Confirmed":"failed"===e.status?"Failed":"Pending",l=chainToExplorerUrl(i);return D.createElement(D.Fragment,null,D.createElement(tQ,{...l?{as:"a",background:{hover:"profileForeground"},borderRadius:"menuButton",className:touchableStyles({active:"shrink"}),href:`${l}/tx/${e.hash}`,rel:"noreferrer noopener",target:"_blank",transition:"default"}:{},color:"modalText",display:"flex",flexDirection:"row",justifyContent:"space-between",padding:"8",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:t?"16":"14"},D.createElement(tQ,{color:o},D.createElement(n,null)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:t?"3":"1"},D.createElement(tQ,null,D.createElement(rm,{color:"modalText",font:"body",size:t?"16":"14",weight:"bold"},null==e?void 0:e.description)),D.createElement(tQ,null,D.createElement(rm,{color:"pending"===e.status?"modalTextSecondary":o,font:"body",size:"14",weight:t?"medium":"regular"},s)))),l&&D.createElement(tQ,{alignItems:"center",color:"modalTextDim",display:"flex"},D.createElement(ExternalLinkIcon,null))))}function TxList({address:e}){let t=useRecentTransactions(),n=function(){let e=useTransactionStore(),{address:t}=(0,_.m)(),n=dist_useChainId();return(0,D.useCallback)(()=>{if(!t||!n)throw Error("No address or chain ID found");e.clearTransactions(t,n)},[e,t,n])}(),{chain:o}=(0,_.m)(),i=chainToExplorerUrl(o),s=t.slice(0,3),l=s.length>0,c=isMobile(),{appName:u}=(0,D.useContext)(rs),{i18n:d}=(0,D.useContext)(tY);return D.createElement(D.Fragment,null,D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"10",paddingBottom:"2",paddingTop:"16",paddingX:c?"8":"18"},l&&D.createElement(tQ,{paddingBottom:c?"4":"0",paddingTop:"8",paddingX:c?"12":"6"},D.createElement(tQ,{display:"flex",justifyContent:"space-between"},D.createElement(rm,{color:"modalTextSecondary",size:c?"16":"14",weight:"semibold"},d.t("profile.transactions.recent.title")),D.createElement(tQ,{style:{marginBottom:-6,marginLeft:-10,marginRight:-10,marginTop:-6}},D.createElement(tQ,{as:"button",background:{hover:"profileForeground"},borderRadius:"actionButton",className:touchableStyles({active:"shrink"}),onClick:n,paddingX:c?"8":"12",paddingY:c?"4":"5",transition:"default",type:"button"},D.createElement(rm,{color:"modalTextSecondary",size:c?"16":"14",weight:"semibold"},d.t("profile.transactions.clear.label")))))),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},l?s.map(e=>D.createElement(TxItem,{key:e.hash,tx:e})):D.createElement(D.Fragment,null,D.createElement(tQ,{padding:c?"12":"8"},D.createElement(rm,{color:"modalTextDim",size:c?"16":"14",weight:c?"medium":"bold"},u?d.t("profile.transactions.description",{appName:u}):d.t("profile.transactions.description_fallback"))),c&&D.createElement(tQ,{background:"generalBorderDim",height:"1",marginX:"12",marginY:"8"})))),i&&D.createElement(tQ,{paddingBottom:"18",paddingX:c?"8":"18"},D.createElement(tQ,{alignItems:"center",as:"a",background:{hover:"profileForeground"},borderRadius:"menuButton",className:touchableStyles({active:"shrink"}),color:"modalTextDim",display:"flex",flexDirection:"row",href:`${i}/address/${e}`,justifyContent:"space-between",paddingX:"8",paddingY:"12",rel:"noreferrer noopener",style:{willChange:"transform"},target:"_blank",transition:"default",width:"full",...c?{paddingLeft:"12"}:{}},D.createElement(rm,{color:"modalText",font:"body",size:c?"16":"14",weight:c?"semibold":"bold"},d.t("profile.explorer.label")),D.createElement(ExternalLinkIcon,null))))}function ProfileDetailsAction({action:e,icon:t,label:n,testId:o,url:i}){let s=isMobile();return D.createElement(tQ,{...i?{as:"a",href:i,rel:"noreferrer noopener",target:"_blank"}:{as:"button",type:"button"},background:{base:"profileAction",...s?{}:{hover:"profileActionHover"}},borderRadius:"menuButton",boxShadow:"profileDetailsAction",className:touchableStyles({active:"shrinkSm",hover:s?void 0:"grow"}),display:"flex",onClick:e,padding:s?"6":"8",style:{willChange:"transform"},testId:o,transition:"default",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"1",justifyContent:"center",paddingTop:"2",width:"full"},D.createElement(tQ,{color:"modalText",height:"max"},t),D.createElement(tQ,null,D.createElement(rm,{color:"modalText",size:s?"12":"13",weight:"semibold"},n))))}function ProfileDetails({address:e,ensAvatar:t,ensName:n,onClose:o,onDisconnect:i}){let s=(0,D.useContext)(rp),{data:l}=useBalance({address:e}),[c,u]=(0,D.useState)(!1),d=(0,D.useCallback)(()=>{e&&(navigator.clipboard.writeText(e),u(!0))},[e]);if((0,D.useEffect)(()=>{if(c){let e=setTimeout(()=>{u(!1)},1500);return()=>clearTimeout(e)}},[c]),!e)return null;let p=n?formatENS(n):formatAddress(e),f=null==l?void 0:l.formatted,m=f?abbreviateETHBalance(parseFloat(f)):void 0,b="rk_profile_title",g=isMobile(),{i18n:y}=(0,D.useContext)(tY);return D.createElement(D.Fragment,null,D.createElement(tQ,{display:"flex",flexDirection:"column"},D.createElement(tQ,{background:"profileForeground",padding:"16"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:g?"16":"12",justifyContent:"center",margin:"8",style:{textAlign:"center"}},D.createElement(tQ,{style:{position:"absolute",right:16,top:16,willChange:"transform"}},D.createElement(CloseButton,{onClose:o}))," ",D.createElement(tQ,{marginTop:g?"24":"0"},D.createElement(Avatar,{address:e,imageUrl:t,size:g?82:74})),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:g?"4":"0",textAlign:"center"},D.createElement(tQ,{textAlign:"center"},D.createElement(rm,{as:"h1",color:"modalText",id:b,size:g?"20":"18",weight:"heavy"},p)),!!l&&D.createElement(tQ,{textAlign:"center"},D.createElement(rm,{as:"h1",color:"modalTextSecondary",id:b,size:g?"16":"14",weight:"semibold"},m," ",l.symbol)))),D.createElement(tQ,{display:"flex",flexDirection:"row",gap:"8",margin:"2",marginTop:"16"},D.createElement(ProfileDetailsAction,{action:d,icon:c?D.createElement(CopiedIcon,null):D.createElement(CopyIcon,null),label:c?y.t("profile.copy_address.copied"):y.t("profile.copy_address.label")}),D.createElement(ProfileDetailsAction,{action:i,icon:D.createElement(DisconnectIcon,null),label:y.t("profile.disconnect.label"),testId:"disconnect-button"}))),s&&D.createElement(D.Fragment,null,D.createElement(tQ,{background:"generalBorder",height:"1",marginTop:"-1"}),D.createElement(tQ,null,D.createElement(TxList,{address:e})))))}function AccountModal({onClose:e,open:t}){let{address:n}=(0,_.m)(),o=useMainnetEnsName(n),i=useMainnetEnsAvatar(o),{disconnect:s}=useDisconnect();return n?D.createElement(D.Fragment,null,n&&D.createElement(Dialog,{onClose:e,open:t,titleId:"rk_account_modal_title"},D.createElement(DialogContent,{bottomSheetOnMobile:!0,padding:"0"},D.createElement(ProfileDetails,{address:n,ensAvatar:i,ensName:o,onClose:e,onDisconnect:s})))):null}var DisconnectSqIcon=({size:e})=>D.createElement("svg",{fill:"none",height:e,viewBox:"0 0 28 28",width:e,xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Disconnect"),D.createElement("path",{d:"M6.742 22.195h8.367c1.774 0 2.743-.968 2.743-2.758V16.11h-2.016v3.11c0 .625-.305.96-.969.96H6.984c-.664 0-.968-.335-.968-.96V7.984c0-.632.304-.968.968-.968h7.883c.664 0 .969.336.969.968v3.133h2.016v-3.36c0-1.78-.97-2.757-2.743-2.757H6.742C4.97 5 4 5.977 4 7.758v11.68c0 1.789.969 2.757 2.742 2.757Zm5.438-7.703h7.601l1.149-.07-.602.406-1.008.938a.816.816 0 0 0-.258.593c0 .407.313.782.758.782.227 0 .39-.086.547-.243l2.492-2.593c.235-.235.313-.47.313-.711 0-.242-.078-.477-.313-.719l-2.492-2.586c-.156-.156-.32-.25-.547-.25-.445 0-.758.367-.758.781 0 .227.094.446.258.594l1.008.945.602.407-1.149-.079H12.18a.904.904 0 0 0 0 1.805Z",fill:"currentColor"})),rE=D.forwardRef(({children:e,currentlySelected:t=!1,onClick:n,testId:o,...i},s)=>{let l=isMobile();return D.createElement(tQ,{as:"button",borderRadius:"menuButton",disabled:t,display:"flex",onClick:n,ref:s,testId:o,type:"button"},D.createElement(tQ,{borderRadius:"menuButton",className:[l?"v9horb0":void 0,!t&&touchableStyles({active:"shrink"})],padding:l?"8":"6",transition:"default",width:"full",...t?{background:"accentColor",borderColor:"selectedOptionBorder",borderStyle:"solid",borderWidth:"1",boxShadow:"selectedOption",color:"accentColorForeground"}:{background:{hover:"menuItemBackground"},color:"modalText",transition:"default"},...i},e))});rE.displayName="MenuButton";var Chain_default=({chainId:e,currentChainId:t,switchChain:n,chainIconSize:o,isLoading:i,src:s,name:l,iconBackground:c,idx:u})=>{let d=isMobile(),{i18n:p}=(0,D.useContext)(tY),f=useRainbowKitChains(),m=t===e;return D.createElement(D.Fragment,null,D.createElement(rE,{currentlySelected:m,onClick:m?void 0:()=>n({chainId:e}),testId:`chain-option-${e}`},D.createElement(tQ,{fontFamily:"body",fontSize:"16",fontWeight:"bold"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",justifyContent:"space-between"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"4",height:o},s&&D.createElement(tQ,{height:"full",marginRight:"8"},D.createElement(AsyncImage,{alt:l,background:c,borderRadius:"full",height:o,src:s,width:o,testId:`chain-option-${e}-icon`})),D.createElement("div",null,l)),m&&D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",marginRight:"6"},D.createElement(rm,{color:"accentColorForeground",size:"14",weight:"medium"},p.t("chains.connected")),D.createElement(tQ,{background:"connectionIndicator",borderColor:"selectedOptionBorder",borderRadius:"full",borderStyle:"solid",borderWidth:"1",height:"8",marginLeft:"8",width:"8"})),i&&D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",marginRight:"6"},D.createElement(rm,{color:"modalText",size:"14",weight:"medium"},p.t("chains.confirm")),D.createElement(tQ,{background:"standby",borderRadius:"full",height:"8",marginLeft:"8",width:"8"}))))),d&&uswitchChain(n,e),mutationKey:["switchChain"]});return{...s,chains:function(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e._internal.chains.subscribe((e,t)=>{n(e,t)})})(t,{onChange:e}),()=>getChains(t),()=>getChains(t))}({config:n}),switchChain:o,switchChainAsync:i}}({mutation:{onMutate:({chainId:e})=>{s(e)},onSuccess:()=>{i&&s(null)},onError:()=>{i&&s(null)},onSettled:()=>{e()}}}),{i18n:c}=(0,D.useContext)(tY),{disconnect:u}=useDisconnect(),d="rk_chain_modal_title",p=isMobile(),f=o.some(e=>e.id===n),m=p?"36":"28",b=useRainbowKitChains();return n?D.createElement(Dialog,{onClose:e,open:t,titleId:d},D.createElement(DialogContent,{bottomSheetOnMobile:!0,paddingBottom:"0"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"14"},D.createElement(tQ,{display:"flex",flexDirection:"row",justifyContent:"space-between"},p&&D.createElement(tQ,{width:"30"}),D.createElement(tQ,{paddingBottom:"0",paddingLeft:"8",paddingTop:"4"},D.createElement(rm,{as:"h1",color:"modalText",id:d,size:p?"20":"18",weight:"heavy"},c.t("chains.title"))),D.createElement(CloseButton,{onClose:e})),!f&&D.createElement(tQ,{marginX:"8",textAlign:p?"center":"left"},D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},c.t("chains.wrong_network"))),D.createElement(tQ,{className:p?"_18dqw9x1":"_18dqw9x0",display:"flex",flexDirection:"column",gap:"4",padding:"2",paddingBottom:"16"},b.map(({iconBackground:e,iconUrl:t,id:o,name:s},c)=>D.createElement(Chain_default,{key:o,chainId:o,currentChainId:n,switchChain:l,chainIconSize:m,isLoading:i===o,src:t,name:s,iconBackground:e,idx:c})),!f&&D.createElement(D.Fragment,null,D.createElement(tQ,{background:"generalBorderDim",height:"1",marginX:"8"}),D.createElement(rE,{onClick:()=>u(),testId:"chain-option-disconnect"},D.createElement(tQ,{color:"error",fontFamily:"body",fontSize:"16",fontWeight:"bold"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",justifyContent:"space-between"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"4",height:m},D.createElement(tQ,{alignItems:"center",color:"error",height:m,justifyContent:"center",marginRight:"8"},D.createElement(DisconnectSqIcon,{size:Number(m)})),D.createElement("div",null,c.t("chains.disconnect"))))))))))):null}var DisclaimerLink=({children:e,href:t})=>D.createElement(tQ,{as:"a",color:"accentColor",href:t,rel:"noreferrer",target:"_blank"},e),DisclaimerText=({children:e})=>D.createElement(rm,{color:"modalTextSecondary",size:"12",weight:"medium"},e);function ConnectModalIntro({compactModeEnabled:e=!1,getWallet:t}){let{disclaimer:n,learnMoreUrl:o}=(0,D.useContext)(rs),{i18n:i}=(0,D.useContext)(tY);return D.createElement(D.Fragment,null,D.createElement(tQ,{alignItems:"center",color:"accentColor",display:"flex",flexDirection:"column",height:"full",justifyContent:"space-around"},D.createElement(tQ,{marginBottom:"10"},!e&&D.createElement(rm,{color:"modalText",size:"18",weight:"heavy"},i.t("intro.title"))),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"32",justifyContent:"center",marginY:"20",style:{maxWidth:312}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16"},D.createElement(tQ,{borderRadius:"6",height:"48",minWidth:"48",width:"48"},D.createElement(AssetsIcon,null)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},i.t("intro.digital_asset.title")),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},i.t("intro.digital_asset.description")))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16"},D.createElement(tQ,{borderRadius:"6",height:"48",minWidth:"48",width:"48"},D.createElement(LoginIcon,null)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},i.t("intro.login.title")),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},i.t("intro.login.description"))))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",margin:"10"},D.createElement(ActionButton,{label:i.t("intro.get.label"),onClick:t}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:o,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},i.t("intro.learn_more.label")))),n&&!e&&D.createElement(tQ,{marginBottom:"8",marginTop:"12",textAlign:"center"},D.createElement(n,{Link:DisclaimerLink,Text:DisclaimerText}))))}var BackIcon=()=>D.createElement("svg",{fill:"none",height:"17",viewBox:"0 0 11 17",width:"11",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Back"),D.createElement("path",{d:"M0.99707 8.6543C0.99707 9.08496 1.15527 9.44531 1.51562 9.79688L8.16016 16.3096C8.43262 16.5732 8.74902 16.7051 9.13574 16.7051C9.90918 16.7051 10.5508 16.0811 10.5508 15.3076C10.5508 14.9121 10.3838 14.5605 10.0938 14.2705L4.30176 8.64551L10.0938 3.0293C10.3838 2.74805 10.5508 2.3877 10.5508 2.00098C10.5508 1.23633 9.90918 0.603516 9.13574 0.603516C8.74902 0.603516 8.43262 0.735352 8.16016 0.999023L1.51562 7.51172C1.15527 7.85449 1.00586 8.21484 0.99707 8.6543Z",fill:"currentColor"})),InfoIcon=()=>D.createElement("svg",{fill:"none",height:"12",viewBox:"0 0 8 12",width:"8",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Info"),D.createElement("path",{d:"M3.64258 7.99609C4.19336 7.99609 4.5625 7.73828 4.68555 7.24609C4.69141 7.21094 4.70312 7.16406 4.70898 7.13477C4.80859 6.60742 5.05469 6.35547 6.04492 5.76367C7.14648 5.10156 7.67969 4.3457 7.67969 3.24414C7.67969 1.39844 6.17383 0.255859 3.95898 0.255859C2.32422 0.255859 1.05859 0.894531 0.548828 1.86719C0.396484 2.14844 0.320312 2.44727 0.320312 2.74023C0.314453 3.37305 0.742188 3.79492 1.42188 3.79492C1.91406 3.79492 2.33594 3.54883 2.53516 3.11523C2.78711 2.47656 3.23242 2.21289 3.83594 2.21289C4.55664 2.21289 5.10742 2.65234 5.10742 3.29102C5.10742 3.9707 4.7793 4.29883 3.81836 4.87891C3.02148 5.36523 2.50586 5.92773 2.50586 6.76562V6.90039C2.50586 7.55664 2.96289 7.99609 3.64258 7.99609ZM3.67188 11.4473C4.42773 11.4473 5.04297 10.8672 5.04297 10.1406C5.04297 9.41406 4.42773 8.83984 3.67188 8.83984C2.91602 8.83984 2.30664 9.41406 2.30664 10.1406C2.30664 10.8672 2.91602 11.4473 3.67188 11.4473Z",fill:"currentColor"})),InfoButton=({"aria-label":e="Info",onClick:t})=>{let n=isMobile();return D.createElement(tQ,{alignItems:"center","aria-label":e,as:"button",background:"closeButtonBackground",borderColor:"actionButtonBorder",borderRadius:"full",borderStyle:"solid",borderWidth:n?"0":"1",className:touchableStyles({active:"shrinkSm",hover:"growLg"}),color:"closeButton",display:"flex",height:n?"30":"28",justifyContent:"center",onClick:t,style:{willChange:"transform"},transition:"default",type:"button",width:n?"30":"28"},D.createElement(InfoIcon,null))},useCoolMode=e=>{let t=(0,D.useRef)(null),n=(0,D.useContext)(rl),o=useAsyncImage(e);return(0,D.useEffect)(()=>{if(n&&t.current&&o)return function(e,t){let n;rx++;let o=[15,20,25,35,45],i=[],s=!1,l=0,c=0,u=getContainer();!function loop(){s&&i.length<35&&function(){let e=o[Math.floor(Math.random()*o.length)],n=360*Math.random(),s=c-e/2,d=l-e/2,p=document.createElement("div");p.innerHTML=``,p.setAttribute("style",`position:absolute;will-change:transform;top:${s}px;left:${d}px;transform:rotate(${n}deg)`),u.appendChild(p),i.push({direction:.5>=Math.random()?-1:1,element:p,left:d,size:e,speedHorz:10*Math.random(),speedUp:25*Math.random(),spinSpeed:35*Math.random()*(.5>=Math.random()?-1:1),spinVal:n,top:s})}(),function(){for(let e of i)e.left=e.left-e.speedHorz*e.direction,e.top=e.top-e.speedUp,e.speedUp=Math.min(e.size,e.speedUp-1),e.spinVal=e.spinVal+e.spinSpeed,e.top>=Math.max(window.innerHeight,document.body.clientHeight)+e.size&&(i=i.filter(t=>t!==e),e.element.remove()),e.element.setAttribute("style",`position:absolute;will-change:transform;top:${e.top}px;left:${e.left}px;transform:rotate(${e.spinVal}deg)`)}(),n=requestAnimationFrame(loop)}();let d="ontouchstart"in window||navigator.msMaxTouchPoints,p=d?"touchstart":"mousedown",f=d?"touchend":"mouseup",m=d?"touchmove":"mousemove",updateMousePosition=e=>{var t,n;"touches"in e?(l=null==(t=e.touches)?void 0:t[0].clientX,c=null==(n=e.touches)?void 0:n[0].clientY):(l=e.clientX,c=e.clientY)},tapHandler=e=>{updateMousePosition(e),s=!0},disableAutoAddParticle=()=>{s=!1};return e.addEventListener(m,updateMousePosition,{passive:!1}),e.addEventListener(p,tapHandler),e.addEventListener(f,disableAutoAddParticle),e.addEventListener("mouseleave",disableAutoAddParticle),()=>{e.removeEventListener(m,updateMousePosition),e.removeEventListener(p,tapHandler),e.removeEventListener(f,disableAutoAddParticle),e.removeEventListener("mouseleave",disableAutoAddParticle);let t=setInterval(()=>{n&&0===i.length&&(cancelAnimationFrame(n),clearInterval(t),0==--rx&&u.remove())},500)}}(t.current,o)},[n,o]),t},getContainer=()=>{let e="_rk_coolMode",t=document.getElementById(e);if(t)return t;let n=document.createElement("div");return n.setAttribute("id",e),n.setAttribute("style","overflow:hidden;position:fixed;height:100%;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:2147483647"),document.body.appendChild(n),n},rx=0,ModalSelection=({as:e="button",currentlySelected:t=!1,iconBackground:n,iconUrl:o,name:i,onClick:s,ready:l,recent:c,testId:u,isRainbowKitConnector:d,...p})=>{let f=useCoolMode(o),[m,b]=(0,D.useState)(!1),{i18n:g}=(0,D.useContext)(tY);return D.createElement(tQ,{display:"flex",flexDirection:"column",onMouseEnter:()=>b(!0),onMouseLeave:()=>b(!1),ref:f},D.createElement(tQ,{as:e,borderRadius:"menuButton",borderStyle:"solid",borderWidth:"1",className:t?void 0:["g5kl0l0",touchableStyles({active:"shrink"})],disabled:t,onClick:s,padding:"5",style:{willChange:"transform"},testId:u,transition:"default",width:"full",...t?{background:"accentColor",borderColor:"selectedOptionBorder",boxShadow:"selectedWallet"}:{background:{hover:"menuItemBackground"}},...p},D.createElement(tQ,{color:t?"accentColorForeground":"modalText",disabled:!l,fontFamily:"body",fontSize:"16",fontWeight:"bold",transition:"default"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"12"},D.createElement(AsyncImage,{background:n,...!m&&d?{borderColor:"actionButtonBorder"}:{},useAsImage:!d,borderRadius:"6",height:"28",src:o,width:"28"}),D.createElement(tQ,null,D.createElement(tQ,{style:{marginTop:c?-2:void 0},maxWidth:"200"},i),c&&D.createElement(rm,{color:t?"accentColorForeground":"accentColor",size:"12",style:{lineHeight:1,marginTop:-1},weight:"medium"},g.t("connect.recent")))))))};ModalSelection.displayName="ModalSelection";var rA="rk-latest-id",convertHexToRGBA=(e,t=1)=>{let n=e.replace("#","");3===n.length&&(n=`${n[0]}${n[0]}${n[1]}${n[1]}${n[2]}${n[2]}`);let o=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),s=parseInt(n.substring(4,6),16);return t>1&&t<=100&&(t/=100),`rgba(${o},${i},${s},${t})`},getGradientRGBAs=e=>e?[convertHexToRGBA(e,.2),convertHexToRGBA(e,.14),convertHexToRGBA(e,.1)]:null,isHexString=e=>/^#([0-9a-f]{3}){1,2}$/i.test(e),src3=async()=>(await n.e(9600).then(n.bind(n,99600))).default,preloadConnectIcon=()=>loadImages(src3),ConnectIcon=()=>D.createElement(AsyncImage,{background:"#515a70",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src3,width:"48"}),src4=async()=>(await n.e(8137).then(n.bind(n,68137))).default,preloadCreateIcon=()=>loadImages(src4),CreateIcon=()=>D.createElement(AsyncImage,{background:"#e3a5e8",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src4,width:"48"}),src5=async()=>(await n.e(1748).then(n.bind(n,31748))).default,preloadRefreshIcon=()=>loadImages(src5),RefreshIcon=()=>D.createElement(AsyncImage,{background:"#515a70",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src5,width:"48"}),src6=async()=>(await n.e(5806).then(n.bind(n,75806))).default,preloadScanIcon=()=>loadImages(src6),ScanIcon=()=>D.createElement(AsyncImage,{background:"#515a70",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src6,width:"48"}),generateMatrix=(e,t)=>{let n=Array.prototype.slice.call(tB.create(e,{errorCorrectionLevel:t}).modules.data,0),o=Math.sqrt(n.length);return n.reduce((e,t,n)=>(n%o==0?e.push([t]):e[e.length-1].push(t))&&e,[])};function QRCode({ecl:e="M",logoBackground:t,logoMargin:n=10,logoSize:o=50,logoUrl:i,size:s=200,uri:l}){let c=s-2*parseInt("20",10),u=(0,D.useMemo)(()=>{let t=[],n=generateMatrix(l,e),i=c/n.length;[{x:0,y:0},{x:1,y:0},{x:0,y:1}].forEach(({x:e,y:o})=>{let s=(n.length-7)*i*e,l=(n.length-7)*i*o;for(let n=0;n<3;n++)t.push(D.createElement("rect",{fill:n%2!=0?"white":"black",height:i*(7-2*n),key:`${n}-${e}-${o}`,rx:-((n-2)*5)+(0===n?2:0),ry:-((n-2)*5)+(0===n?2:0),width:i*(7-2*n),x:s+i*n,y:l+i*n}))});let s=Math.floor((o+25)/i),u=n.length/2-s/2,d=n.length/2+s/2-1;return n.forEach((e,o)=>{e.forEach((e,s)=>{!n[o][s]||o<7&&s<7||o>n.length-8&&s<7||o<7&&s>n.length-8||o>u&&ou&&s{let e=getBrowser();switch(e){case"Arc":return(await n.e(6328).then(n.bind(n,76328))).default;case"Brave":return(await n.e(6551).then(n.bind(n,86551))).default;case"Chrome":return(await n.e(7682).then(n.bind(n,57682))).default;case"Edge":return(await n.e(934).then(n.bind(n,60934))).default;case"Firefox":return(await n.e(9223).then(n.bind(n,99223))).default;case"Opera":return(await n.e(9941).then(n.bind(n,89941))).default;case"Safari":return(await n.e(2604).then(n.bind(n,62604))).default;default:return(await n.e(2746).then(n.bind(n,92746))).default}},preloadBrowserIcon=()=>loadImages(getBrowserSrc),getPlatformSrc=async()=>{let e=getPlatform();switch(e){case"Windows":return(await n.e(5710).then(n.bind(n,35710))).default;case"macOS":return(await n.e(8906).then(n.bind(n,8906))).default;default:return(await n.e(8366).then(n.bind(n,78366))).default}},preloadPlatformIcon=()=>loadImages(getPlatformSrc);function GetDetail({getWalletDownload:e,compactModeEnabled:t}){let n=useWalletConnectors().filter(e=>e.isRainbowKitConnector),o=n.splice(0,5),{i18n:i}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",marginTop:"18",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"28",height:"full",width:"full"},null==o?void 0:o.filter(e=>{var t;return e.extensionDownloadUrl||e.desktopDownloadUrl||e.qrCode&&(null==(t=e.downloadUrls)?void 0:t.qrCode)}).map(t=>{let{downloadUrls:n,iconBackground:o,iconUrl:s,id:l,name:c,qrCode:u}=t,d=(null==n?void 0:n.qrCode)&&u,p=!!t.extensionDownloadUrl,f=(null==n?void 0:n.qrCode)&&p,m=(null==n?void 0:n.qrCode)&&!!t.desktopDownloadUrl;return D.createElement(tQ,{alignItems:"center",display:"flex",gap:"16",justifyContent:"space-between",key:t.id,width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16"},D.createElement(AsyncImage,{background:o,borderColor:"actionButtonBorder",borderRadius:"10",height:"48",src:s,width:"48"}),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"2"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},c),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},f?i.t("get.mobile_and_extension.description"):m?i.t("get.mobile_and_desktop.description"):d?i.t("get.mobile.description"):p?i.t("get.extension.description"):null))),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(ActionButton,{label:i.t("get.action.label"),onClick:()=>e(l),type:"secondary"})))})),D.createElement(tQ,{alignItems:"center",borderRadius:"10",display:"flex",flexDirection:"column",gap:"8",justifyContent:"space-between",marginBottom:"4",paddingY:"8",style:{maxWidth:275,textAlign:"center"}},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},i.t("get.looking_for.title")),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},t?i.t("get.looking_for.desktop.compact_description"):i.t("get.looking_for.desktop.wide_description"))))}function ConnectDetail({changeWalletStep:e,compactModeEnabled:t,connectionError:n,onClose:o,qrCodeUri:i,reconnect:s,wallet:l}){let{downloadUrls:c,iconBackground:u,iconUrl:d,name:p,qrCode:f,ready:m,showWalletConnectModal:b,getDesktopUri:g}=l,y=!!g,v=isSafari(),{i18n:w}=(0,D.useContext)(tY),C=!!l.extensionDownloadUrl,E=(null==c?void 0:c.qrCode)&&C,x=(null==c?void 0:c.qrCode)&&!!l.desktopDownloadUrl,A=f&&i,onDesktopUri=async()=>{let e=await (null==g?void 0:g());window.open(e,v?"_blank":"_self")},k=b?{description:t?w.t("connect.walletconnect.description.compact"):w.t("connect.walletconnect.description.full"),label:w.t("connect.walletconnect.open.label"),onClick:()=>{o(),b()}}:A?{description:w.t("connect.secondary_action.get.description",{wallet:p}),label:w.t("connect.secondary_action.get.label"),onClick:()=>e(E||x?"DOWNLOAD_OPTIONS":"DOWNLOAD")}:null,{width:B}=useWindowSize();return(0,D.useEffect)(()=>{preloadBrowserIcon(),preloadPlatformIcon()},[]),D.createElement(tQ,{display:"flex",flexDirection:"column",height:"full",width:"full"},A?D.createElement(tQ,{alignItems:"center",display:"flex",height:"full",justifyContent:"center"},D.createElement(QRCode,{logoBackground:u,logoSize:t?60:72,logoUrl:d,size:t?318:B&&B<768?Math.max(280,Math.min(B-308,382)):382,uri:i})):D.createElement(tQ,{alignItems:"center",display:"flex",justifyContent:"center",style:{flexGrow:1}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"8"},D.createElement(tQ,{borderRadius:"10",height:"44",overflow:"hidden"},D.createElement(AsyncImage,{useAsImage:!l.isRainbowKitConnector,height:"44",src:d,width:"44"})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"4",paddingX:"32",style:{textAlign:"center"}},D.createElement(rm,{color:"modalText",size:"18",weight:"bold"},m?w.t("connect.status.opening",{wallet:p}):C?w.t("connect.status.not_installed",{wallet:p}):w.t("connect.status.not_available",{wallet:p})),!m&&C?D.createElement(tQ,{paddingTop:"20"},D.createElement(ActionButton,{href:l.extensionDownloadUrl,label:w.t("connect.secondary_action.install.label"),type:"secondary"})):null,m&&!A&&D.createElement(D.Fragment,null,D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",justifyContent:"center"},D.createElement(rm,{color:"modalTextSecondary",size:"14",textAlign:"center",weight:"medium"},w.t("connect.status.confirm"))),D.createElement(tQ,{alignItems:"center",color:"modalText",display:"flex",flexDirection:"row",height:"32",marginTop:"8"},n?D.createElement(ActionButton,{label:w.t("connect.secondary_action.retry.label"),onClick:async()=>{y&&onDesktopUri(),s(l)}}):D.createElement(tQ,{color:"modalTextSecondary"},D.createElement(SpinnerIcon,null))))))),D.createElement(tQ,{alignItems:"center",borderRadius:"10",display:"flex",flexDirection:"row",gap:"8",height:"28",justifyContent:"space-between",marginTop:"12"},m&&k&&D.createElement(D.Fragment,null,D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},k.description),D.createElement(ActionButton,{label:k.label,onClick:k.onClick,type:"secondary"}))))}var DownloadOptionsBox=({actionLabel:e,description:t,iconAccent:n,iconBackground:o,iconUrl:i,isCompact:s,onAction:l,title:c,url:u,variant:d})=>{let p="browser"===d,f=!p&&n&&getGradientRGBAs(n);return D.createElement(tQ,{alignItems:"center",borderRadius:"13",display:"flex",justifyContent:"center",overflow:"hidden",paddingX:s?"18":"44",position:"relative",style:{flex:1,isolation:"isolate"},width:"full"},D.createElement(tQ,{borderColor:"actionButtonBorder",borderRadius:"13",borderStyle:"solid",borderWidth:"1",style:{bottom:"0",left:"0",position:"absolute",right:"0",top:"0",zIndex:1}}),p&&D.createElement(tQ,{background:"downloadTopCardBackground",height:"full",position:"absolute",style:{zIndex:0},width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"row",justifyContent:"space-between",style:{bottom:"0",filter:"blur(20px)",left:"0",position:"absolute",right:"0",top:"0",transform:"translate3d(0, 0, 0)"}},D.createElement(tQ,{style:{filter:"blur(100px)",marginLeft:-27,marginTop:-20,opacity:.6,transform:"translate3d(0, 0, 0)"}},D.createElement(AsyncImage,{borderRadius:"full",height:"200",src:i,width:"200"})),D.createElement(tQ,{style:{filter:"blur(100px)",marginRight:0,marginTop:105,opacity:.6,overflow:"auto",transform:"translate3d(0, 0, 0)"}},D.createElement(AsyncImage,{borderRadius:"full",height:"200",src:i,width:"200"})))),!p&&f&&D.createElement(tQ,{background:"downloadBottomCardBackground",style:{bottom:"0",left:"0",position:"absolute",right:"0",top:"0"}},D.createElement(tQ,{position:"absolute",style:{background:`radial-gradient(50% 50% at 50% 50%, ${f[0]} 0%, ${f[1]} 25%, rgba(0,0,0,0) 100%)`,height:564,left:-215,top:-197,transform:"translate3d(0, 0, 0)",width:564}}),D.createElement(tQ,{position:"absolute",style:{background:`radial-gradient(50% 50% at 50% 50%, ${f[2]} 0%, rgba(0, 0, 0, 0) 100%)`,height:564,left:-1,top:-76,transform:"translate3d(0, 0, 0)",width:564}})),D.createElement(tQ,{alignItems:"flex-start",display:"flex",flexDirection:"row",gap:"24",height:"max",justifyContent:"center",style:{zIndex:1}},D.createElement(tQ,null,D.createElement(AsyncImage,{height:"60",src:i,width:"60",...o?{background:o,borderColor:"generalBorder",borderRadius:"10"}:null})),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4",style:{flex:1},width:"full"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},c),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},t),D.createElement(tQ,{marginTop:"14",width:"max"},D.createElement(ActionButton,{href:u,label:e,onClick:l,size:"medium"})))))};function DownloadOptionsDetail({changeWalletStep:e,wallet:t}){let n=getBrowser(),o=getPlatform(),i=(0,D.useContext)(rd),s="compact"===i,{desktop:l,desktopDownloadUrl:c,extension:u,extensionDownloadUrl:d,mobileDownloadUrl:p}=t,{i18n:f}=(0,D.useContext)(tY);return(0,D.useEffect)(()=>{preloadCreateIcon(),preloadScanIcon(),preloadRefreshIcon(),preloadConnectIcon()},[]),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"24",height:"full",marginBottom:"8",marginTop:"4",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"8",height:"full",justifyContent:"center",width:"full"},d&&D.createElement(DownloadOptionsBox,{actionLabel:f.t("get_options.extension.download.label",{browser:n}),description:f.t("get_options.extension.description"),iconUrl:getBrowserSrc,isCompact:s,onAction:()=>e((null==u?void 0:u.instructions)?"INSTRUCTIONS_EXTENSION":"CONNECT"),title:f.t("get_options.extension.title",{wallet:t.name,browser:n}),url:d,variant:"browser"}),c&&D.createElement(DownloadOptionsBox,{actionLabel:f.t("get_options.desktop.download.label",{platform:o}),description:f.t("get_options.desktop.description"),iconUrl:getPlatformSrc,isCompact:s,onAction:()=>e((null==l?void 0:l.instructions)?"INSTRUCTIONS_DESKTOP":"CONNECT"),title:f.t("get_options.desktop.title",{wallet:t.name,platform:o}),url:c,variant:"desktop"}),p&&D.createElement(DownloadOptionsBox,{actionLabel:f.t("get_options.mobile.download.label",{wallet:t.name}),description:f.t("get_options.mobile.description"),iconAccent:t.iconAccent,iconBackground:t.iconBackground,iconUrl:t.iconUrl,isCompact:s,onAction:()=>{e("DOWNLOAD")},title:f.t("get_options.mobile.title",{wallet:t.name}),variant:"app"})))}function DownloadDetail({changeWalletStep:e,wallet:t}){let{downloadUrls:n,qrCode:o}=t,{i18n:i}=(0,D.useContext)(tY);return(0,D.useEffect)(()=>{preloadCreateIcon(),preloadScanIcon()},[]),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"24",height:"full",width:"full"},D.createElement(tQ,{style:{maxWidth:220,textAlign:"center"}},D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"semibold"},i.t("get_mobile.description"))),D.createElement(tQ,{height:"full"},(null==n?void 0:n.qrCode)?D.createElement(QRCode,{logoSize:0,size:268,uri:n.qrCode}):null),D.createElement(tQ,{alignItems:"center",borderRadius:"10",display:"flex",flexDirection:"row",gap:"8",height:"34",justifyContent:"space-between",marginBottom:"12",paddingY:"8"},D.createElement(ActionButton,{label:i.t("get_mobile.continue.label"),onClick:()=>e((null==o?void 0:o.instructions)?"INSTRUCTIONS_MOBILE":"CONNECT")})))}var rk={connect:()=>D.createElement(ConnectIcon,null),create:()=>D.createElement(CreateIcon,null),install:e=>D.createElement(AsyncImage,{background:e.iconBackground,borderColor:"generalBorder",borderRadius:"10",height:"48",src:e.iconUrl,width:"48"}),refresh:()=>D.createElement(RefreshIcon,null),scan:()=>D.createElement(ScanIcon,null)};function InstructionMobileDetail({connectWallet:e,wallet:t}){var n,o,i,s;let{i18n:l}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"28",height:"full",justifyContent:"center",paddingY:"32",style:{maxWidth:320}},null==(o=null==(n=null==t?void 0:t.qrCode)?void 0:n.instructions)?void 0:o.steps.map((e,n)=>{var o;return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16",key:n},D.createElement(tQ,{borderRadius:"10",height:"48",minWidth:"48",overflow:"hidden",position:"relative",width:"48"},null==(o=rk[e.step])?void 0:o.call(rk,t)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},l.t(e.title,void 0,{rawKeyIfTranslationMissing:!0})),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},l.t(e.description,void 0,{rawKeyIfTranslationMissing:!0}))))})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",marginBottom:"16"},D.createElement(ActionButton,{label:l.t("get_instructions.mobile.connect.label"),onClick:()=>e(t)}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:null==(s=null==(i=null==t?void 0:t.qrCode)?void 0:i.instructions)?void 0:s.learnMoreUrl,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},l.t("get_instructions.mobile.learn_more.label")))))}function InstructionExtensionDetail({wallet:e}){var t,n,o,i;let{i18n:s}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"28",height:"full",justifyContent:"center",paddingY:"32",style:{maxWidth:320}},null==(n=null==(t=null==e?void 0:e.extension)?void 0:t.instructions)?void 0:n.steps.map((t,n)=>{var o;return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16",key:n},D.createElement(tQ,{borderRadius:"10",height:"48",minWidth:"48",overflow:"hidden",position:"relative",width:"48"},null==(o=rk[t.step])?void 0:o.call(rk,e)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},s.t(t.title,void 0,{rawKeyIfTranslationMissing:!0})),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},s.t(t.description,void 0,{rawKeyIfTranslationMissing:!0}))))})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",marginBottom:"16"},D.createElement(ActionButton,{label:s.t("get_instructions.extension.refresh.label"),onClick:window.location.reload.bind(window.location)}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:null==(i=null==(o=null==e?void 0:e.extension)?void 0:o.instructions)?void 0:i.learnMoreUrl,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},s.t("get_instructions.extension.learn_more.label")))))}function InstructionDesktopDetail({connectWallet:e,wallet:t}){var n,o,i,s;let{i18n:l}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"28",height:"full",justifyContent:"center",paddingY:"32",style:{maxWidth:320}},null==(o=null==(n=null==t?void 0:t.desktop)?void 0:n.instructions)?void 0:o.steps.map((e,n)=>{var o;return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16",key:n},D.createElement(tQ,{borderRadius:"10",height:"48",minWidth:"48",overflow:"hidden",position:"relative",width:"48"},null==(o=rk[e.step])?void 0:o.call(rk,t)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},l.t(e.title,void 0,{rawKeyIfTranslationMissing:!0})),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},l.t(e.description,void 0,{rawKeyIfTranslationMissing:!0}))))})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",marginBottom:"16"},D.createElement(ActionButton,{label:l.t("get_instructions.desktop.connect.label"),onClick:()=>e(t)}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:null==(s=null==(i=null==t?void 0:t.desktop)?void 0:i.instructions)?void 0:s.learnMoreUrl,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},l.t("get_instructions.desktop.learn_more.label")))))}function DesktopOptions({onClose:e}){let t;let[n,o]=(0,D.useState)(),[i,s]=(0,D.useState)(),[l,c]=(0,D.useState)(),u=!!(null==i?void 0:i.qrCode)&&l,[d,p]=(0,D.useState)(!1),f=(0,D.useContext)(rd),m=f===ru.COMPACT,{disclaimer:b}=(0,D.useContext)(rs),{i18n:g}=(0,D.useContext)(tY),y=isSafari(),v=(0,D.useRef)(!1),{connector:w}=(0,D.useContext)(rc),C=!w,E=useWalletConnectors(C).filter(e=>e.ready||!!e.extensionDownloadUrl).sort((e,t)=>e.groupIndex-t.groupIndex),x=function(e,t){let n={};for(let o of e){let e=t(o);e&&(n[e]||(n[e]=[]),n[e].push(o))}return n}(E,e=>e.groupName),A=["Recommended","Other","Popular","More","Others","Installed"];(0,D.useEffect)(()=>{w&&!v.current&&(changeWalletStep("CONNECT"),selectWallet(w),v.current=!0)},[w]);let connectToWallet=e=>{var t,n;p(!1),e.ready&&(null==(n=null==(t=null==e?void 0:e.connect)?void 0:t.call(e))||n.catch(()=>{p(!0)}))},onDesktopUri=async e=>{let t=E.find(t=>e.id===t.id);(null==t?void 0:t.getDesktopUri)&&setTimeout(async()=>{var e;let n=await (null==(e=null==t?void 0:t.getDesktopUri)?void 0:e.call(t));n&&window.open(n,y?"_blank":"_self")},0)},onQrCode=async e=>{var t;let n=E.find(t=>e.id===t.id),o=await (null==(t=null==n?void 0:n.getQrCodeUri)?void 0:t.call(n));c(o),setTimeout(()=>{s(n),changeWalletStep("CONNECT")},o?0:50)},selectWallet=async e=>{var t;t=e.id,localStorage.setItem(rA,t),e.ready&&(onQrCode(e),onDesktopUri(e)),connectToWallet(e),o(e.id),e.ready||(s(e),changeWalletStep((null==e?void 0:e.extensionDownloadUrl)?"DOWNLOAD_OPTIONS":"CONNECT"))},clearSelectedWallet=()=>{o(void 0),s(void 0),c(void 0)},changeWalletStep=(e,t=!1)=>{t&&"GET"===e&&"GET"===k?clearSelectedWallet():t||"GET"!==e?t||"CONNECT"!==e||B("CONNECT"):B("GET"),I(e)},[k,B]=(0,D.useState)("NONE"),[S,I]=(0,D.useState)("NONE"),j=null,T=null,P=null;(0,D.useEffect)(()=>{p(!1)},[S,i]);let M=!!(null==i?void 0:i.extensionDownloadUrl),O=!!(M&&(null==i?void 0:i.mobileDownloadUrl));switch(S){case"NONE":j=D.createElement(ConnectModalIntro,{getWallet:()=>changeWalletStep("GET")});break;case"LEARN_COMPACT":j=D.createElement(ConnectModalIntro,{compactModeEnabled:m,getWallet:()=>changeWalletStep("GET")}),T=g.t("intro.title"),P="NONE";break;case"GET":j=D.createElement(GetDetail,{getWalletDownload:e=>{var t;o(e);let n=E.find(t=>e===t.id),i=null==(t=null==n?void 0:n.downloadUrls)?void 0:t.qrCode,l=!!(null==n?void 0:n.desktopDownloadUrl),c=!!(null==n?void 0:n.extensionDownloadUrl);s(n),i&&(c||l)?changeWalletStep("DOWNLOAD_OPTIONS"):i?changeWalletStep("DOWNLOAD"):l?changeWalletStep("INSTRUCTIONS_DESKTOP"):changeWalletStep("INSTRUCTIONS_EXTENSION")},compactModeEnabled:m}),T=g.t("get.title"),P=m?"LEARN_COMPACT":"NONE";break;case"CONNECT":j=i&&D.createElement(ConnectDetail,{changeWalletStep,compactModeEnabled:m,connectionError:d,onClose:e,qrCodeUri:l,reconnect:connectToWallet,wallet:i}),T=u&&("WalletConnect"===i.name?g.t("connect_scan.fallback_title"):g.t("connect_scan.title",{wallet:i.name})),P=m?w?null:"NONE":null,t=m?w?()=>{}:clearSelectedWallet:()=>{};break;case"DOWNLOAD_OPTIONS":j=i&&D.createElement(DownloadOptionsDetail,{changeWalletStep,wallet:i}),T=i&&g.t("get_options.short_title",{wallet:i.name}),P=w?"CONNECT":m?"NONE":null;break;case"DOWNLOAD":j=i&&D.createElement(DownloadDetail,{changeWalletStep,wallet:i}),T=i&&g.t("get_mobile.title",{wallet:i.name}),P=O?"DOWNLOAD_OPTIONS":k;break;case"INSTRUCTIONS_MOBILE":j=i&&D.createElement(InstructionMobileDetail,{connectWallet:selectWallet,wallet:i}),T=i&&g.t("get_options.title",{wallet:m&&i.shortName||i.name}),P="DOWNLOAD";break;case"INSTRUCTIONS_EXTENSION":j=i&&D.createElement(InstructionExtensionDetail,{wallet:i}),T=i&&g.t("get_options.title",{wallet:m&&i.shortName||i.name}),P="DOWNLOAD_OPTIONS";break;case"INSTRUCTIONS_DESKTOP":j=i&&D.createElement(InstructionDesktopDetail,{connectWallet:selectWallet,wallet:i}),T=i&&g.t("get_options.title",{wallet:m&&i.shortName||i.name}),P="DOWNLOAD_OPTIONS"}return D.createElement(tQ,{display:"flex",flexDirection:"row",style:{maxHeight:m?468:504}},(!m||"NONE"===S)&&D.createElement(tQ,{className:m?"_1vwt0cg4":"_1vwt0cg3",display:"flex",flexDirection:"column",marginTop:"16"},D.createElement(tQ,{display:"flex",justifyContent:"space-between"},m&&b&&D.createElement(tQ,{marginLeft:"16",width:"28"},D.createElement(InfoButton,{onClick:()=>changeWalletStep("LEARN_COMPACT")})),m&&!b&&D.createElement(tQ,{marginLeft:"16",width:"28"}),D.createElement(tQ,{marginLeft:m?"0":"6",paddingBottom:"8",paddingTop:"2",paddingX:"18"},D.createElement(rm,{as:"h1",color:"modalText",id:"rk_connect_title",size:"18",weight:"heavy",testId:"connect-header-label"},g.t("connect.title"))),m&&D.createElement(tQ,{marginRight:"16"},D.createElement(CloseButton,{onClose:e}))),D.createElement(tQ,{className:"_1vwt0cg2 ju367v7a ju367v7v",paddingBottom:"18"},Object.entries(x).map(([e,t],o)=>t.length>0&&D.createElement(D.Fragment,{key:o},e?D.createElement(tQ,{marginBottom:"8",marginTop:"16",marginX:"6"},D.createElement(rm,{color:"Installed"===e?"accentColor":"modalTextSecondary",size:"14",weight:"bold"},A.includes(e)?g.t(`connector_group.${e.toLowerCase()}`):e)):null,D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},t.map(e=>D.createElement(ModalSelection,{currentlySelected:e.id===n,iconBackground:e.iconBackground,iconUrl:e.iconUrl,key:e.id,name:e.name,onClick:()=>selectWallet(e),ready:e.ready,recent:e.recent,testId:`wallet-option-${e.id}`,isRainbowKitConnector:e.isRainbowKitConnector})))))),m&&D.createElement(D.Fragment,null,D.createElement(tQ,{background:"generalBorder",height:"1",marginTop:"-1"}),b?D.createElement(tQ,{paddingX:"24",paddingY:"16",textAlign:"center"},D.createElement(b,{Link:DisclaimerLink,Text:DisclaimerText})):D.createElement(tQ,{alignItems:"center",display:"flex",justifyContent:"space-between",paddingX:"24",paddingY:"16"},D.createElement(tQ,{paddingY:"4"},D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},g.t("connect.new_to_ethereum.description"))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"4",justifyContent:"center"},D.createElement(tQ,{className:touchableStyles({active:"shrink",hover:"grow"}),cursor:"pointer",onClick:()=>changeWalletStep("LEARN_COMPACT"),paddingY:"4",style:{willChange:"transform"},transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},g.t("connect.new_to_ethereum.learn_more.label"))))))),(!m||"NONE"!==S)&&D.createElement(D.Fragment,null,!m&&D.createElement(tQ,{background:"generalBorder",minWidth:"1",width:"1"}),D.createElement(tQ,{display:"flex",flexDirection:"column",margin:"16",style:{flexGrow:1}},D.createElement(tQ,{alignItems:"center",display:"flex",justifyContent:"space-between",marginBottom:"12"},D.createElement(tQ,{width:"28"},P&&D.createElement(tQ,{as:"button",className:touchableStyles({active:"shrinkSm",hover:"growLg"}),color:"accentColor",onClick:()=>{P&&changeWalletStep(P,!0),null==t||t()},paddingX:"8",paddingY:"4",style:{boxSizing:"content-box",height:17,willChange:"transform"},transition:"default",type:"button"},D.createElement(BackIcon,null))),D.createElement(tQ,{display:"flex",justifyContent:"center",style:{flexGrow:1}},T&&D.createElement(rm,{color:"modalText",size:"18",textAlign:"center",weight:"heavy"},T)),D.createElement(CloseButton,{onClose:e})),D.createElement(tQ,{display:"flex",flexDirection:"column",style:{minHeight:m?396:432}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"6",height:"full",justifyContent:"center",marginX:"8"},j)))))}var LoadingSpinner=({wallet:e})=>D.createElement("svg",{className:"_1am14413",viewBox:"0 0 86 86",width:"86",height:"86"},D.createElement("title",null,"Loading"),D.createElement("rect",{x:"3",y:"3",width:80,height:80,rx:20,ry:20,strokeDasharray:"53.333333333333336 "+320/3,strokeDashoffset:160,className:"_1am14412",style:{stroke:(null==e?void 0:e.iconAccent)||"#0D3887"}}));function WalletButton({onClose:e,wallet:t,connecting:n}){let{connect:o,iconBackground:i,iconUrl:s,id:l,name:c,getMobileUri:u,ready:d,shortName:p,showWalletConnectModal:f}=t,m=useCoolMode(s),b=(0,D.useRef)(!1),{i18n:g}=(0,D.useContext)(tY),y=(0,D.useCallback)(async()=>{let onMobileUri=async()=>{let e=await (null==u?void 0:u());if(e){if(e&&function({mobileUri:e,name:t}){localStorage.setItem(rg,JSON.stringify({href:e.split("?")[0],name:t}))}({mobileUri:e,name:c}),e.startsWith("http")){let t=document.createElement("a");t.href=e,t.target="_blank",t.rel="noreferrer noopener",t.click()}else window.location.href=e}};if("walletConnect"!==l&&onMobileUri(),f){f(),null==e||e();return}null==o||o()},[o,u,f,e,c,l]);return(0,D.useEffect)(()=>{n&&!b.current&&(y(),b.current=!0)},[n,y]),D.createElement(tQ,{as:"button",color:d?"modalText":"modalTextSecondary",disabled:!d,fontFamily:"body",key:l,onClick:y,ref:m,style:{overflow:"visible",textAlign:"center"},testId:`wallet-option-${l}`,type:"button",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",justifyContent:"center"},D.createElement(tQ,{display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:"8",paddingTop:"10",position:"relative"},n?D.createElement(LoadingSpinner,{wallet:t}):null,D.createElement(AsyncImage,{background:i,borderRadius:"13",boxShadow:"walletLogo",height:"60",src:s,width:"60"})),n?null:D.createElement(tQ,{display:"flex",flexDirection:"column",textAlign:"center"},D.createElement(rm,{as:"h2",color:t.ready?"modalText":"modalTextSecondary",size:"13",weight:"medium"},D.createElement(tQ,{as:"span",position:"relative"},null!=p?p:c,!t.ready&&" (unsupported)")),t.recent&&D.createElement(rm,{color:"accentColor",size:"12",weight:"medium"},g.t("connect.recent")))))}function MobileOptions({onClose:e}){var t;let n=useWalletConnectors().filter(e=>e.isRainbowKitConnector),{disclaimer:o,learnMoreUrl:i}=(0,D.useContext)(rs),s=null,l=null,c=!1,u=null,[d,p]=(0,D.useState)("CONNECT"),{i18n:f}=(0,D.useContext)(tY),m=isIOS();switch(d){case"CONNECT":s=f.t("connect.title"),c=!0,l=D.createElement(tQ,null,D.createElement(tQ,{background:"profileForeground",className:"_1am14410",display:"flex",paddingBottom:"20",paddingTop:"6"},D.createElement(tQ,{display:"flex",style:{margin:"0 auto"}},n.filter(e=>e.ready).map(t=>D.createElement(tQ,{key:t.id,paddingX:"20"},D.createElement(tQ,{width:"60"},D.createElement(WalletButton,{onClose:e,wallet:t})))))),D.createElement(tQ,{background:"generalBorder",height:"1",marginBottom:"32",marginTop:"-1"}),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"32",paddingX:"32",style:{textAlign:"center"}},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"8",textAlign:"center"},D.createElement(rm,{color:"modalText",size:"16",weight:"bold"},f.t("intro.title")),D.createElement(rm,{color:"modalTextSecondary",size:"16"},f.t("intro.description")))),D.createElement(tQ,{paddingTop:"32",paddingX:"20"},D.createElement(tQ,{display:"flex",gap:"14",justifyContent:"center"},D.createElement(ActionButton,{label:f.t("intro.get.label"),onClick:()=>p("GET"),size:"large",type:"secondary"}),D.createElement(ActionButton,{href:i,label:f.t("intro.learn_more.label"),size:"large",type:"secondary"}))),o&&D.createElement(tQ,{marginTop:"28",marginX:"32",textAlign:"center"},D.createElement(o,{Link:DisclaimerLink,Text:DisclaimerText})));break;case"GET":{s=f.t("get.title"),u="CONNECT";let e=null==(t=null==n?void 0:n.filter(e=>{var t,n,o;return(null==(t=e.downloadUrls)?void 0:t.ios)||(null==(n=e.downloadUrls)?void 0:n.android)||(null==(o=e.downloadUrls)?void 0:o.mobile)}))?void 0:t.splice(0,3);l=D.createElement(tQ,null,D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",marginBottom:"36",marginTop:"5",paddingTop:"12",width:"full"},e.map((t,n)=>{let{downloadUrls:o,iconBackground:i,iconUrl:s,name:l}=t;return(null==o?void 0:o.ios)||(null==o?void 0:o.android)||(null==o?void 0:o.mobile)?D.createElement(tQ,{display:"flex",gap:"16",key:t.id,paddingX:"20",width:"full"},D.createElement(tQ,{style:{minHeight:48,minWidth:48}},D.createElement(AsyncImage,{background:i,borderColor:"generalBorder",borderRadius:"10",height:"48",src:s,width:"48"})),D.createElement(tQ,{display:"flex",flexDirection:"column",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",height:"48"},D.createElement(tQ,{width:"full"},D.createElement(rm,{color:"modalText",size:"18",weight:"bold"},l)),D.createElement(ActionButton,{href:(m?null==o?void 0:o.ios:null==o?void 0:o.android)||(null==o?void 0:o.mobile),label:f.t("get.action.label"),size:"small",type:"secondary"})),np(u),padding:"16",style:{height:17,willChange:"transform"},transition:"default",type:"button"},D.createElement(BackIcon,null))),D.createElement(tQ,{marginTop:"4",textAlign:"center",width:"full"},D.createElement(rm,{as:"h1",color:"modalText",id:"rk_connect_title",size:"20",weight:"bold"},s)),D.createElement(tQ,{alignItems:"center",display:"flex",height:"32",paddingRight:"14",position:"absolute",right:"0"},D.createElement(tQ,{style:{marginBottom:-20,marginTop:-20}},D.createElement(CloseButton,{onClose:e}))))),D.createElement(tQ,{display:"flex",flexDirection:"column"},l))}var MobileStatus=({onClose:e})=>{let{connector:t}=(0,D.useContext)(rc),{i18n:n}=(0,D.useContext)(tY),o=(null==t?void 0:t.name)||"";return D.createElement(tQ,null,D.createElement(tQ,{display:"flex",paddingBottom:"32",justifyContent:"center",alignItems:"center",background:"profileForeground",flexDirection:"column"},D.createElement(tQ,{width:"full",display:"flex",justifyContent:"flex-end",marginTop:"18",marginRight:"24"},D.createElement(CloseButton,{onClose:e})),D.createElement(tQ,{width:"60"},D.createElement(WalletButton,{onClose:e,wallet:t,connecting:!0})),D.createElement(tQ,{marginTop:"20"},D.createElement(rm,{textAlign:"center",color:"modalText",size:"18",weight:"semibold"},n.t("connect.status.connect_mobile",{wallet:o}))),D.createElement(tQ,{maxWidth:"full",marginTop:"8"},D.createElement(rm,{textAlign:"center",color:"modalText",size:"16",weight:"medium"},n.t("connect.status.confirm_mobile",{wallet:o})))))};function ConnectOptions({onClose:e}){let{connector:t}=(0,D.useContext)(rc);return isMobile()?t?D.createElement(MobileStatus,{onClose:e}):D.createElement(MobileOptions,{onClose:e}):D.createElement(DesktopOptions,{onClose:e})}function ConnectModal({onClose:e,open:t}){let n="rk_connect_title",o=useConnectionStatus(),{disconnect:i}=useDisconnect(),{isConnecting:s}=(0,_.m)(),l=D.useCallback(()=>{e(),i()},[e,i]),c=D.useCallback(()=>{s&&i(),e()},[e,i,s]);return"disconnected"===o?D.createElement(Dialog,{onClose:c,open:t,titleId:n},D.createElement(DialogContent,{bottomSheetOnMobile:!0,padding:"0",wide:!0},D.createElement(ConnectOptions,{onClose:c}))):"unauthenticated"===o?D.createElement(Dialog,{onClose:l,open:t,titleId:n},D.createElement(DialogContent,{bottomSheetOnMobile:!0,padding:"0"},D.createElement(SignIn,{onClose:l,onCloseModal:e}))):null}function useModalStateValue(){let[e,t]=(0,D.useState)(!1);return{closeModal:(0,D.useCallback)(()=>t(!1),[]),isModalOpen:e,openModal:(0,D.useCallback)(()=>t(!0),[])}}var rB=(0,D.createContext)({accountModalOpen:!1,chainModalOpen:!1,connectModalOpen:!1,isWalletConnectModalOpen:!1,setIsWalletConnectModalOpen:()=>{}});function ModalProvider({children:e}){let{closeModal:t,isModalOpen:n,openModal:o}=useModalStateValue(),{closeModal:i,isModalOpen:s,openModal:l}=useModalStateValue(),{closeModal:c,isModalOpen:u,openModal:d}=useModalStateValue(),[p,f]=(0,D.useState)(!1),m=useConnectionStatus(),{chainId:b}=(0,_.m)(),{chains:g}=(0,z.Z)(),y=g.some(e=>e.id===b);function closeModals({keepConnectModalOpen:e=!1}={}){e||t(),i(),c()}let v="unauthenticated"===useAuthenticationStatus();return useAccountEffect_useAccountEffect({onConnect:()=>closeModals({keepConnectModalOpen:v}),onDisconnect:()=>closeModals()}),(0,D.useEffect)(()=>{v&&closeModals()},[v]),D.createElement(rB.Provider,{value:(0,D.useMemo)(()=>({accountModalOpen:s,chainModalOpen:u,connectModalOpen:n,isWalletConnectModalOpen:p,openAccountModal:y&&"connected"===m?l:void 0,openChainModal:"connected"===m?d:void 0,openConnectModal:"disconnected"===m||"unauthenticated"===m?o:void 0,setIsWalletConnectModalOpen:f}),[m,s,u,n,l,d,o,y,p])},e,D.createElement(ConnectModal,{onClose:t,open:n}),D.createElement(AccountModal,{onClose:i,open:s}),D.createElement(ChainModal,{onClose:c,open:u}))}function useWalletConnectOpenState(){let{isWalletConnectModalOpen:e,setIsWalletConnectModalOpen:t}=(0,D.useContext)(rB);return{isWalletConnectModalOpen:e,setIsWalletConnectModalOpen:t}}var noop=()=>{};function ConnectButtonRenderer({children:e}){var t,n,o,i;let s=function(){let[e,t]=(0,D.useState)(!1);return(0,D.useEffect)(()=>(t(!0),()=>{t(!1)}),[]),(0,D.useCallback)(()=>e,[e])}(),{address:l}=(0,_.m)(),c=useMainnetEnsName(l),u=useMainnetEnsAvatar(c),{chainId:d}=(0,_.m)(),{chains:p}=(0,z.Z)(),f=p.some(e=>e.id===d),m=useRainbowKitChainsById(),b=null!=(t=useAuthenticationStatus())?t:void 0,g=d?m[d]:void 0,y=null!=(n=null==g?void 0:g.name)?n:void 0,v=null!=(o=null==g?void 0:g.iconUrl)?o:void 0,w=null!=(i=null==g?void 0:g.iconBackground)?i:void 0,C=useAsyncImage(v),E=(0,D.useContext)(rp),x=useRecentTransactions().some(({status:e})=>"pending"===e)&&E,{showBalance:A}=useShowBalance(),k="boolean"==typeof A?A:!A||t_(A)[isMobile()?"smallScreen":"largeScreen"],{data:B}=useBalance({address:k?l:void 0}),S=B?`${abbreviateETHBalance(parseFloat(B.formatted))} ${B.symbol}`:void 0,{openConnectModal:I}=function(){let{connectModalOpen:e,openConnectModal:t}=(0,D.useContext)(rB),{isWalletConnectModalOpen:n}=useWalletConnectOpenState();return{connectModalOpen:e||n,openConnectModal:t}}(),{openChainModal:j}=function(){let{chainModalOpen:e,openChainModal:t}=(0,D.useContext)(rB);return{chainModalOpen:e,openChainModal:t}}(),{openAccountModal:T}=function(){let{accountModalOpen:e,openAccountModal:t}=(0,D.useContext)(rB);return{accountModalOpen:e,openAccountModal:t}}(),{accountModalOpen:P,chainModalOpen:M,connectModalOpen:O}=function(){let{accountModalOpen:e,chainModalOpen:t,connectModalOpen:n}=(0,D.useContext)(rB);return{accountModalOpen:e,chainModalOpen:t,connectModalOpen:n}}();return D.createElement(D.Fragment,null,e({account:l?{address:l,balanceDecimals:null==B?void 0:B.decimals,balanceFormatted:null==B?void 0:B.formatted,balanceSymbol:null==B?void 0:B.symbol,displayBalance:S,displayName:c?formatENS(c):formatAddress(l),ensAvatar:null!=u?u:void 0,ensName:null!=c?c:void 0,hasPendingTransactions:x}:void 0,accountModalOpen:P,authenticationStatus:b,chain:d?{hasIcon:!!v,iconBackground:w,iconUrl:C,id:d,name:y,unsupported:!f}:void 0,chainModalOpen:M,connectModalOpen:O,mounted:s(),openAccountModal:null!=T?T:noop,openChainModal:null!=j?j:noop,openConnectModal:null!=I?I:noop}))}ConnectButtonRenderer.displayName="ConnectButton.Custom";var rS={accountStatus:"full",chainStatus:{largeScreen:"full",smallScreen:"icon"},label:"Connect Wallet",showBalance:{largeScreen:!0,smallScreen:!1}};function ConnectButton({accountStatus:e=rS.accountStatus,chainStatus:t=rS.chainStatus,label:n=rS.label,showBalance:o=rS.showBalance}){let i=useRainbowKitChains(),s=useConnectionStatus(),{setShowBalance:l}=useShowBalance(),[c,u]=(0,D.useState)(!1),{i18n:d}=(0,D.useContext)(tY);return(0,D.useEffect)(()=>{l(o),c||u(!0)},[o,l]),c?D.createElement(ConnectButtonRenderer,null,({account:l,chain:c,mounted:u,openAccountModal:p,openChainModal:f,openConnectModal:m})=>{var b,g,y;let v=u&&"loading"!==s,w=null!=(b=null==c?void 0:c.unsupported)&&b;return D.createElement(tQ,{display:"flex",gap:"12",...!v&&{"aria-hidden":!0,style:{opacity:0,pointerEvents:"none",userSelect:"none"}}},v&&l&&"connected"===s?D.createElement(D.Fragment,null,c&&(i.length>1||w)&&D.createElement(tQ,{alignItems:"center","aria-label":"Chain Selector",as:"button",background:w?"connectButtonBackgroundError":"connectButtonBackground",borderRadius:"connectButton",boxShadow:"connectButton",className:touchableStyles({active:"shrink",hover:"grow"}),color:w?"connectButtonTextError":"connectButtonText",display:tD(t,e=>"none"===e?"none":"flex"),fontFamily:"body",fontWeight:"bold",gap:"6",key:w?"unsupported":"supported",onClick:f,paddingX:"10",paddingY:"8",testId:w?"wrong-network-button":"chain-button",transition:"default",type:"button"},w?D.createElement(tQ,{alignItems:"center",display:"flex",height:"24",paddingX:"4"},d.t("connect_wallet.wrong_network.label")):D.createElement(tQ,{alignItems:"center",display:"flex",gap:"6"},c.hasIcon?D.createElement(tQ,{display:tD(t,e=>"full"===e||"icon"===e?"block":"none"),height:"24",width:"24"},D.createElement(AsyncImage,{alt:null!=(g=c.name)?g:"Chain icon",background:c.iconBackground,borderRadius:"full",height:"24",src:c.iconUrl,width:"24"})):null,D.createElement(tQ,{display:tD(t,e=>"icon"!==e||c.iconUrl?"full"===e||"name"===e?"block":"none":"block")},null!=(y=c.name)?y:c.id)),D.createElement(DropdownIcon,null)),!w&&D.createElement(tQ,{alignItems:"center",as:"button",background:"connectButtonBackground",borderRadius:"connectButton",boxShadow:"connectButton",className:touchableStyles({active:"shrink",hover:"grow"}),color:"connectButtonText",display:"flex",fontFamily:"body",fontWeight:"bold",onClick:p,testId:"account-button",transition:"default",type:"button"},l.displayBalance&&D.createElement(tQ,{display:tD(o,e=>e?"block":"none"),padding:"8",paddingLeft:"12"},l.displayBalance),D.createElement(tQ,{background:t_(o)[isMobile()?"smallScreen":"largeScreen"]?"connectButtonInnerBackground":"connectButtonBackground",borderColor:"connectButtonBackground",borderRadius:"connectButton",borderStyle:"solid",borderWidth:"2",color:"connectButtonText",fontFamily:"body",fontWeight:"bold",paddingX:"8",paddingY:"6",transition:"default"},D.createElement(tQ,{alignItems:"center",display:"flex",gap:"6",height:"24"},D.createElement(tQ,{display:tD(e,e=>"full"===e||"avatar"===e?"block":"none")},D.createElement(Avatar,{address:l.address,imageUrl:l.ensAvatar,loading:l.hasPendingTransactions,size:24})),D.createElement(tQ,{alignItems:"center",display:"flex",gap:"6"},D.createElement(tQ,{display:tD(e,e=>"full"===e||"address"===e?"block":"none")},l.displayName),D.createElement(DropdownIcon,null)))))):D.createElement(tQ,{as:"button",background:"accentColor",borderRadius:"connectButton",boxShadow:"connectButton",className:touchableStyles({active:"shrink",hover:"grow"}),color:"accentColorForeground",fontFamily:"body",fontWeight:"bold",height:"40",key:"connect",onClick:m,paddingX:"14",testId:"connect-button",transition:"default",type:"button"},u&&"Connect Wallet"===n?d.t("connect_wallet.label"):n))}):D.createElement(D.Fragment,null)}ConnectButton.__defaultProps=rS,ConnectButton.Custom=ConnectButtonRenderer;var computeWalletConnectMetaData=({appName:e,appDescription:t,appUrl:n,appIcon:o})=>({name:e,description:null!=t?t:e,url:null!=n?n:"undefined"!=typeof window?window.location.href:"",icons:[...o?[o]:[]]}),connectorsForWallets=(e,{projectId:t,walletConnectParameters:n,appName:o,appDescription:i,appUrl:s,appIcon:l})=>{let c=-1,u=[],d=[],p=[],f=computeWalletConnectMetaData({appName:o,appDescription:i,appUrl:s,appIcon:l});e.forEach(({groupName:e,wallets:i},s)=>{i.forEach(i=>{c++;let u=i({projectId:t,appName:o,appIcon:l,options:{metadata:f,...n},walletConnectParameters:{metadata:f,...n}});if((null==u?void 0:u.iconAccent)&&!isHexString(null==u?void 0:u.iconAccent))throw Error(`Property \`iconAccent\` is not a hex value for wallet: ${u.name}`);let m={...u,groupIndex:s+1,groupName:e,index:c};"function"==typeof u.hidden?p.push(m):d.push(m)})});let m=[...d,...p];for(let{createConnector:e,groupIndex:t,groupName:n,hidden:o,...i}of m){if("function"==typeof o){let e=o();if(e)continue}let walletMetaData=e=>({rkDetails:Object.fromEntries(Object.entries({...i,groupIndex:t,groupName:n,isRainbowKitConnector:!0,...e||{}}).filter(([e,t])=>void 0!==t))}),s="walletConnect"===i.id;s&&u.push(e(walletMetaData({isWalletConnectModalConnector:!0,showQrModal:!0})));let l=e(walletMetaData());u.push(l)}return u},rI=new Map,getOrCreateWalletConnectInstance=({projectId:e,walletConnectParameters:t,rkDetailsShowQrModal:n})=>{let o={...t||{},projectId:e,showQrModal:!1};n&&(o={...o,showQrModal:!0});let i=JSON.stringify(o),s=rI.get(i);if(s)return s;let l=walletConnect(o);return rI.set(i,l),l};function getWalletConnectConnector({projectId:e,walletConnectParameters:t}){if(!e||""===e)throw Error("No projectId found. Every dApp must now provide a WalletConnect Cloud projectId to enable WalletConnect v2 https://www.rainbowkit.com/docs/installation#configure");return"YOUR_PROJECT_ID"===e&&(e="21fef48091f12692cad574a6f7753643"),n=>(function({projectId:e,walletDetails:t,walletConnectParameters:n}){return o=>({...getOrCreateWalletConnectInstance({projectId:e,walletConnectParameters:n,rkDetailsShowQrModal:t.rkDetails.showQrModal})(o),...t})})({projectId:e,walletDetails:n,walletConnectParameters:t})}function getExplicitInjectedProvider(e){if("undefined"==typeof window||void 0===window.ethereum)return;let t=window.ethereum.providers;return t?t.find(t=>t[e]):window.ethereum[e]?window.ethereum:void 0}function getWindowProviderNamespace(e){let providerSearch=(e,t)=>{let[n,...o]=t.split("."),i=e[n];if(i)return 0===o.length?i:providerSearch(i,o.join("."))};if("undefined"!=typeof window)return providerSearch(window,e)}function hasInjectedProvider({flag:e,namespace:t}){return!!t&&void 0!==getWindowProviderNamespace(t)||!!e&&void 0!==getExplicitInjectedProvider(e)}function getInjectedConnector({flag:e,namespace:t,target:n}){let o=n||function({flag:e,namespace:t}){var n;if("undefined"==typeof window)return;if(t){let e=getWindowProviderNamespace(t);if(e)return e}let o=null==(n=window.ethereum)?void 0:n.providers;if(e){let t=getExplicitInjectedProvider(e);if(t)return t}return void 0!==o&&o.length>0?o[0]:window.ethereum}({flag:e,namespace:t});return e=>{let t=o?{target:()=>({id:e.rkDetails.id,name:e.rkDetails.name,provider:o})}:{};return n=>({...injected(t)(n),...e})}}var dist_coinbaseWallet=({appName:e,appIcon:t})=>{let o=hasInjectedProvider({flag:"isCoinbaseWallet"}),i=isIOS();return{id:"coinbase",name:"Coinbase Wallet",shortName:"Coinbase",rdns:"com.coinbase.wallet",iconUrl:async()=>(await n.e(1950).then(n.bind(n,41950))).default,iconAccent:"#2c5ff6",iconBackground:"#2c5ff6",installed:o||void 0,downloadUrls:{android:"https://play.google.com/store/apps/details?id=org.toshi",ios:"https://apps.apple.com/us/app/coinbase-wallet-store-crypto/id1278383455",mobile:"https://coinbase.com/wallet/downloads",qrCode:"https://coinbase-wallet.onelink.me/q5Sx/fdb9b250",chrome:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",browserExtension:"https://coinbase.com/wallet"},...i?{}:{qrCode:{getUri:e=>e,instructions:{learnMoreUrl:"https://coinbase.com/wallet/articles/getting-started-mobile",steps:[{description:"wallet_connectors.coinbase.qr_code.step1.description",step:"install",title:"wallet_connectors.coinbase.qr_code.step1.title"},{description:"wallet_connectors.coinbase.qr_code.step2.description",step:"create",title:"wallet_connectors.coinbase.qr_code.step2.title"},{description:"wallet_connectors.coinbase.qr_code.step3.description",step:"scan",title:"wallet_connectors.coinbase.qr_code.step3.title"}]}},extension:{instructions:{learnMoreUrl:"https://coinbase.com/wallet/articles/getting-started-extension",steps:[{description:"wallet_connectors.coinbase.extension.step1.description",step:"install",title:"wallet_connectors.coinbase.extension.step1.title"},{description:"wallet_connectors.coinbase.extension.step2.description",step:"create",title:"wallet_connectors.coinbase.extension.step2.title"},{description:"wallet_connectors.coinbase.extension.step3.description",step:"refresh",title:"wallet_connectors.coinbase.extension.step3.title"}]}}},createConnector:n=>o=>({...coinbaseWallet({appName:e,appLogoUrl:t,headlessMode:!0})(o),...n})}};function isMetaMask(e){return!!(null==e?void 0:e.isMetaMask)&&(!e.isBraveWallet||!!e._events||!!e._state)&&!e.isApexWallet&&!e.isAvalanche&&!e.isBackpack&&!e.isBifrost&&!e.isBitKeep&&!e.isBitski&&!e.isBlockWallet&&!e.isCoinbaseWallet&&!e.isDawn&&!e.isEnkrypt&&!e.isExodus&&!e.isFrame&&!e.isFrontier&&!e.isGamestop&&!e.isHyperPay&&!e.isImToken&&!e.isKuCoinWallet&&!e.isMathWallet&&!e.isOkxWallet&&!e.isOKExWallet&&!e.isOneInchIOSWallet&&!e.isOneInchAndroidWallet&&!e.isOpera&&!e.isPhantom&&!e.isPortal&&!e.isRabby&&!e.isRainbow&&!e.isStatus&&!e.isTalisman&&!e.isTally&&!e.isTokenPocket&&!e.isTokenary&&!e.isTrust&&!e.isTrustWallet&&!e.isXDEFI&&!e.isZeal&&!e.isZerion}var metaMaskWallet=({projectId:e,walletConnectParameters:t})=>{var o,i,s;let l=hasInjectedProvider({flag:"isMetaMask"}),c=!l,getUri=e=>isAndroid()?e:isIOS()?`metamask://wc?uri=${encodeURIComponent(e)}`:`https://metamask.app.link/wc?uri=${encodeURIComponent(e)}`;return{id:"metaMask",name:"MetaMask",rdns:"io.metamask",iconUrl:async()=>(await n.e(4419).then(n.bind(n,84419))).default,iconAccent:"#f6851a",iconBackground:"#fff",installed:c?void 0:l,downloadUrls:{android:"https://play.google.com/store/apps/details?id=io.metamask",ios:"https://apps.apple.com/us/app/metamask/id1438144202",mobile:"https://metamask.io/download",qrCode:"https://metamask.io/download",chrome:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn",edge:"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm",firefox:"https://addons.mozilla.org/firefox/addon/ether-metamask",opera:"https://addons.opera.com/extensions/details/metamask-10",browserExtension:"https://metamask.io/download"},mobile:{getUri:c?getUri:void 0},qrCode:c?{getUri,instructions:{learnMoreUrl:"https://metamask.io/faqs/",steps:[{description:"wallet_connectors.metamask.qr_code.step1.description",step:"install",title:"wallet_connectors.metamask.qr_code.step1.title"},{description:"wallet_connectors.metamask.qr_code.step2.description",step:"create",title:"wallet_connectors.metamask.qr_code.step2.title"},{description:"wallet_connectors.metamask.qr_code.step3.description",step:"refresh",title:"wallet_connectors.metamask.qr_code.step3.title"}]}}:void 0,extension:{instructions:{learnMoreUrl:"https://metamask.io/faqs/",steps:[{description:"wallet_connectors.metamask.extension.step1.description",step:"install",title:"wallet_connectors.metamask.extension.step1.title"},{description:"wallet_connectors.metamask.extension.step2.description",step:"create",title:"wallet_connectors.metamask.extension.step2.title"},{description:"wallet_connectors.metamask.extension.step3.description",step:"refresh",title:"wallet_connectors.metamask.extension.step3.title"}]}},createConnector:c?getWalletConnectConnector({projectId:e,walletConnectParameters:t}):getInjectedConnector({target:"undefined"!=typeof window?null!=(s=null==(i=null==(o=window.ethereum)?void 0:o.providers)?void 0:i.find(isMetaMask))?s:window.ethereum:void 0})}},rainbowWallet=({projectId:e,walletConnectParameters:t})=>{let o=hasInjectedProvider({flag:"isRainbow"}),i=!o,getUri=e=>isAndroid()?e:isIOS()?`rainbow://wc?uri=${encodeURIComponent(e)}&connector=rainbowkit`:`https://rnbwapp.com/wc?uri=${encodeURIComponent(e)}&connector=rainbowkit`;return{id:"rainbow",name:"Rainbow",rdns:"me.rainbow",iconUrl:async()=>(await n.e(1608).then(n.bind(n,31608))).default,iconBackground:"#0c2f78",installed:i?void 0:o,downloadUrls:{android:"https://play.google.com/store/apps/details?id=me.rainbow&referrer=utm_source%3Drainbowkit&utm_source=rainbowkit",ios:"https://apps.apple.com/app/apple-store/id1457119021?pt=119997837&ct=rainbowkit&mt=8",mobile:"https://rainbow.download?utm_source=rainbowkit",qrCode:"https://rainbow.download?utm_source=rainbowkit&utm_medium=qrcode",browserExtension:"https://rainbow.me/extension?utm_source=rainbowkit"},mobile:{getUri:i?getUri:void 0},qrCode:i?{getUri,instructions:{learnMoreUrl:"https://learn.rainbow.me/connect-to-a-website-or-app?utm_source=rainbowkit&utm_medium=connector&utm_campaign=learnmore",steps:[{description:"wallet_connectors.rainbow.qr_code.step1.description",step:"install",title:"wallet_connectors.rainbow.qr_code.step1.title"},{description:"wallet_connectors.rainbow.qr_code.step2.description",step:"create",title:"wallet_connectors.rainbow.qr_code.step2.title"},{description:"wallet_connectors.rainbow.qr_code.step3.description",step:"scan",title:"wallet_connectors.rainbow.qr_code.step3.title"}]}}:void 0,createConnector:i?getWalletConnectConnector({projectId:e,walletConnectParameters:t}):getInjectedConnector({flag:"isRainbow"})}},walletConnectWallet=({projectId:e,options:t})=>({id:"walletConnect",name:"WalletConnect",installed:void 0,iconUrl:async()=>(await n.e(3525).then(n.bind(n,33525))).default,iconBackground:"#3b99fc",qrCode:{getUri:e=>e},createConnector:getWalletConnectConnector({projectId:e,walletConnectParameters:t})}),createDefaultTransports=e=>{let t=e.reduce((e,t)=>{let n=t.id;return e[n]=function(e,t={}){let{batch:n,fetchOptions:o,key:i="http",name:s="HTTP JSON-RPC",onFetchResponse:l,retryDelay:c}=t;return({chain:u,retryCount:d,timeout:p})=>{let{batchSize:f=1e3,wait:m=0}="object"==typeof n?n:{},b=t.retryCount??d,g=p??t.timeout??1e4,y=e||u?.rpcUrls.default.http[0];if(!y)throw new UrlRequiredError;let v=function(e,t={}){return{async request(n){let{body:o,fetchOptions:i={},onResponse:s=t.onResponse,timeout:l=t.timeout??1e4}=n,{headers:c,method:u,signal:d}={...t.fetchOptions,...i};try{let t;let n=await withTimeout(async({signal:t})=>{let n=await fetch(e,{...i,body:Array.isArray(o)?(0,e7.P)(o.map(e=>({jsonrpc:"2.0",id:e.id??tj.take(),...e}))):(0,e7.P)({jsonrpc:"2.0",id:o.id??tj.take(),...o}),headers:{...c,"Content-Type":"application/json"},method:u||"POST",signal:d||(l>0?t:null)});return n},{errorInstance:new tS.W5({body:o,url:e}),timeout:l,signal:!0});if(s&&await s(n),t=n.headers.get("Content-Type")?.startsWith("application/json")?await n.json():await n.text(),!n.ok)throw new tS.Gg({body:o,details:(0,e7.P)(t.error)||n.statusText,headers:n.headers,status:n.status,url:e});return t}catch(t){if(t instanceof tS.Gg||t instanceof tS.W5)throw t;throw new tS.Gg({body:o,details:t.message,url:e})}}}}(y,{fetchOptions:o,onResponse:l,timeout:g});return(0,tT.q)({key:i,name:s,async request({method:t,params:o}){let i={method:t,params:o},{schedule:s}=(0,tI.S)({id:`${e}`,wait:m,shouldSplitBatch:e=>e.length>f,fn:e=>v.request({body:e}),sort:(e,t)=>e.id-t.id}),fn=async e=>n?s(e):[await v.request({body:e})],[{error:l,result:c}]=await fn(i);if(l)throw new tS.bs({body:i,error:l,url:y});return c},retryCount:b,retryDelay:c,timeout:g,type:"http"},{fetchOptions:o,url:y})}}(),e},{});return t},getDefaultConfig=({appName:e,appDescription:t,appUrl:n,appIcon:o,wallets:i,projectId:s,...l})=>{let{transports:c,chains:u,...d}=l,p=computeWalletConnectMetaData({appName:e,appDescription:t,appUrl:n,appIcon:o}),f=connectorsForWallets(i||[{groupName:"Popular",wallets:[rainbowWallet,dist_coinbaseWallet,metaMaskWallet,walletConnectWallet]}],{projectId:s,appName:e,appDescription:t,appUrl:n,appIcon:o,walletConnectParameters:{metadata:p}});return c||(c=createDefaultTransports(u)),function(e){let t;let{multiInjectedProviderDiscovery:n=!0,storage:o=function(e){let{deserialize:t=deserialize_deserialize,key:n="wagmi",serialize:o=serialize_serialize,storage:i=tU}=e;function unwrap(e){return e instanceof Promise?e.then(e=>e).catch(()=>null):e}return{...i,key:n,async getItem(e,o){let s=i.getItem(`${n}.${e}`),l=await unwrap(s);return l?t(l)??null:o??null},async setItem(e,t){let s=`${n}.${e}`;null===t?await unwrap(i.removeItem(s)):await unwrap(i.setItem(s,o(t)))},async removeItem(e){await unwrap(i.removeItem(`${n}.${e}`))}}}({storage:"undefined"!=typeof window&&window.localStorage?window.localStorage:tU}),syncConnectedChain:i=!0,ssr:s,...l}=e,c="undefined"!=typeof window&&n?function(){let e=new Set,t=[],request=()=>(function(e){let handler=t=>e(t.detail);return window.addEventListener("eip6963:announceProvider",handler),window.dispatchEvent(new CustomEvent("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",handler)})(n=>{t.some(({info:e})=>e.uuid===n.info.uuid)||(t=[...t,n],e.forEach(e=>e(t,{added:[n]})))}),n=request();return{_listeners:()=>e,clear(){e.forEach(e=>e([],{removed:[...t]})),t=[]},destroy(){this.clear(),e.clear(),n()},findProvider:({rdns:e})=>t.find(t=>t.info.rdns===e),getProviders:()=>t,reset(){this.clear(),n(),n=request()},subscribe:(n,{emitImmediately:o}={})=>(e.add(n),o&&n(t,{added:t}),()=>e.delete(n))}}():void 0,u=vanilla_createStore(()=>l.chains),d=vanilla_createStore(()=>[...l.connectors??[],...s?[]:c?.getProviders().map(providerDetailToConnector)??[]].map(setup));function setup(e){var t;let n=(t=function(e=11){if(!C||tF+e>512){C="",tF=0;for(let e=0;e<256;e++)C+=(256+256*Math.random()|0).toString(16).substring(1)}return C.substring(tF,tF+++e)}(),new Emitter(t)),i={...e({emitter:n,chains:u.getState(),storage:o}),emitter:n,uid:n.uid};return n.on("connect",connect),i.setup?.(),i}function providerDetailToConnector(e){let{info:t}=e,n=e.provider;return injected({target:{...t,id:t.rdns,provider:n}})}let p=new Map;function getInitialState(){return{chainId:u.getState()[0].id,connections:new Map,current:void 0,status:"disconnected"}}let f="0.0.0-canary-";t=tN.i.startsWith(f)?parseInt(tN.i.replace(f,"")):parseInt(tN.i.split(".")[0]??"0");let m=vanilla_createStore(subscribeWithSelector(o?persist(getInitialState,{migrate(e,n){if(n===t)return e;let o=getInitialState(),i=e&&"object"==typeof e&&"chainId"in e&&"number"==typeof e.chainId?e.chainId:o.chainId;return{...o,chainId:i}},name:"store",partialize:e=>({connections:{__type:"Map",value:Array.from(e.connections.entries()).map(([e,t])=>{let{id:n,name:o,type:i,uid:s}=t.connector;return[e,{...t,connector:{id:n,name:o,type:i,uid:s}}]})},chainId:e.chainId,current:e.current}),skipHydration:s,storage:o,version:t}):getInitialState));function change(e){m.setState(t=>{let n=t.connections.get(e.uid);return n?{...t,connections:new Map(t.connections).set(e.uid,{accounts:e.accounts??n.accounts,chainId:e.chainId??n.chainId,connector:n.connector})}:t})}function connect(e){"connecting"!==m.getState().status&&"reconnecting"!==m.getState().status&&m.setState(t=>{let n=d.getState().find(t=>t.uid===e.uid);return n?{...t,connections:new Map(t.connections).set(e.uid,{accounts:e.accounts,chainId:e.chainId,connector:n}),current:e.uid,status:"connected"}:t})}return i&&m.subscribe(({connections:e,current:t})=>t?e.get(t)?.chainId:void 0,e=>{let t=u.getState().some(t=>t.id===e);if(t)return m.setState(t=>({...t,chainId:e??t.chainId}))}),c?.subscribe(e=>{let t=new Map;for(let e of d.getState())t.set(e.id,!0);let n=[];for(let o of e){let e=setup(providerDetailToConnector(o));t.has(e.id)||n.push(e)}d.setState(e=>[...e,...n],!0)}),{get chains(){return u.getState()},get connectors(){return d.getState()},storage:o,getClient:function(e={}){let t;let n=e.chainId??m.getState().chainId,o=u.getState().find(e=>e.id===n);if(e.chainId&&!o)throw new tw.X4;{let e=p.get(m.getState().chainId);if(e&&!o)return e;if(!o)throw new tw.X4}{let e=p.get(n);if(e)return e}if(l.client)t=l.client({chain:o});else{let e=o.id,n=u.getState().map(e=>e.id),i={},s=Object.entries(l);for(let[t,o]of s)if("chains"!==t&&"client"!==t&&"connectors"!==t&&"transports"!==t){if("object"==typeof o){if(e in o)i[t]=o[e];else{let e=n.some(e=>e in o);if(e)continue;i[t]=o}}else i[t]=o}t=(0,tP.e)({...i,chain:o,batch:i.batch??{multicall:!0},transport:t=>l.transports[e]({...t,connectors:d})})}return p.set(n,t),t},get state(){return m.getState()},setState(e){let t;t="function"==typeof e?e(m.getState()):e;let n=getInitialState();"object"!=typeof t&&(t=n);let o=Object.keys(n).some(e=>!(e in t));o&&(t=n),m.setState(t,!0)},subscribe:(e,t,n)=>m.subscribe(e,t,n?{...n,fireImmediately:n.emitImmediately}:void 0),_internal:{mipd:c,store:m,ssr:!!s,syncConnectedChain:i,transports:l.transports,chains:{setState(e){let t="function"==typeof e?e(u.getState()):e;if(0!==t.length)return u.setState(t,!0)},subscribe:e=>u.subscribe(e)},connectors:{providerDetailToConnector,setup,setState:e=>d.setState("function"==typeof e?e(d.getState()):e,!0),subscribe:e=>d.subscribe(e)},events:{change,connect,disconnect:function disconnect(e){m.setState(t=>{let n=t.connections.get(e.uid);if(n&&(n.connector.emitter.off("change",change),n.connector.emitter.off("disconnect",disconnect),n.connector.emitter.on("connect",connect)),t.connections.delete(e.uid),0===t.connections.size)return{...t,connections:new Map,current:void 0,status:"disconnected"};let o=t.connections.values().next().value;return{...t,connections:new Map(t.connections),current:o.connector.uid}})}}}}}({connectors:f,chains:u,transports:c,...d})}},66474:function(e,t,n){"use strict";n.d(t,{j:function(){return s}});var o=n(7506),i=n(24139),s=new class extends o.l{#L;#z;#q;constructor(){super(),this.#q=e=>{if(!i.sk&&window.addEventListener){let listener=()=>e();return window.addEventListener("visibilitychange",listener,!1),()=>{window.removeEventListener("visibilitychange",listener)}}}}onSubscribe(){this.#z||this.setEventListener(this.#q)}onUnsubscribe(){this.hasListeners()||(this.#z?.(),this.#z=void 0)}setEventListener(e){this.#q=e,this.#z?.(),this.#z=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){let t=this.#L!==e;t&&(this.#L=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#L?this.#L:globalThis.document?.visibilityState!=="hidden"}}},59289:function(e,t,n){"use strict";n.d(t,{R:function(){return getDefaultState},m:function(){return l}});var o=n(27037),i=n(48907),s=n(72008),l=class extends i.F{#G;#d;#u;#W;constructor(e){super(),this.mutationId=e.mutationId,this.#d=e.defaultOptions,this.#u=e.mutationCache,this.#G=[],this.state=e.state||getDefaultState(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#G.includes(e)||(this.#G.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#G=this.#G.filter(t=>t!==e),this.scheduleGc(),this.#u.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#G.length||("pending"===this.state.status?this.scheduleGc():this.#u.remove(this))}continue(){return this.#W?.continue()??this.execute(this.state.variables)}async execute(e){let t="pending"===this.state.status;try{if(!t){this.#H({type:"pending",variables:e}),await this.#u.config.onMutate?.(e,this);let t=await this.options.onMutate?.(e);t!==this.state.context&&this.#H({type:"pending",context:t,variables:e})}let n=await (this.#W=(0,s.Mz)({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#H({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#H({type:"pause"})},onContinue:()=>{this.#H({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.#W.promise);return await this.#u.config.onSuccess?.(n,e,this.state.context,this),await this.options.onSuccess?.(n,e,this.state.context),await this.#u.config.onSettled?.(n,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(n,null,e,this.state.context),this.#H({type:"success",data:n}),n}catch(t){try{throw await this.#u.config.onError?.(t,e,this.state.context,this),await this.options.onError?.(t,e,this.state.context),await this.#u.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,t,e,this.state.context),t}finally{this.#H({type:"error",error:t})}}}#H(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!(0,s.Kw)(this.options.networkMode),status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),o.V.batch(()=>{this.#G.forEach(t=>{t.onMutationUpdate(e)}),this.#u.notify({mutation:this,type:"updated",action:e})})}};function getDefaultState(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}},27037:function(e,t,n){"use strict";n.d(t,{V:function(){return o}});var o=function(){let e=[],t=0,notifyFn=e=>{e()},batchNotifyFn=e=>{e()},scheduleFn=e=>setTimeout(e,0),schedule=n=>{t?e.push(n):scheduleFn(()=>{notifyFn(n)})},flush=()=>{let t=e;e=[],t.length&&scheduleFn(()=>{batchNotifyFn(()=>{t.forEach(e=>{notifyFn(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{--t||flush()}return n},batchCalls:e=>(...t)=>{schedule(()=>{e(...t)})},schedule,setNotifyFunction:e=>{notifyFn=e},setBatchNotifyFunction:e=>{batchNotifyFn=e},setScheduler:e=>{scheduleFn=e}}}()},14304:function(e,t,n){"use strict";n.d(t,{N:function(){return s}});var o=n(7506),i=n(24139),s=new class extends o.l{#Q=!0;#z;#q;constructor(){super(),this.#q=e=>{if(!i.sk&&window.addEventListener){let onlineListener=()=>e(!0),offlineListener=()=>e(!1);return window.addEventListener("online",onlineListener,!1),window.addEventListener("offline",offlineListener,!1),()=>{window.removeEventListener("online",onlineListener),window.removeEventListener("offline",offlineListener)}}}}onSubscribe(){this.#z||this.setEventListener(this.#q)}onUnsubscribe(){this.hasListeners()||(this.#z?.(),this.#z=void 0)}setEventListener(e){this.#q=e,this.#z?.(),this.#z=e(this.setOnline.bind(this))}setOnline(e){let t=this.#Q!==e;t&&(this.#Q=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#Q}}},56888:function(e,t,n){"use strict";n.d(t,{A:function(){return c},z:function(){return fetchState}});var o=n(24139),i=n(27037),s=n(72008),l=n(48907),c=class extends l.F{#K;#V;#Z;#W;#G;#d;#J;constructor(e){super(),this.#J=!1,this.#d=e.defaultOptions,this.setOptions(e.options),this.#G=[],this.#Z=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#K=e.state||function(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,o=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?o??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#K,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.#G.length||"idle"!==this.state.fetchStatus||this.#Z.remove(this)}setData(e,t){let n=(0,o.oE)(this.state.data,e,this.options);return this.#H({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#H({type:"setState",state:e,setStateOptions:t})}cancel(e){let t=this.#W?.promise;return this.#W?.cancel(e),t?t.then(o.ZT).catch(o.ZT):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#K)}isActive(){return this.#G.some(e=>!1!==e.options.enabled)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return!!this.state.isInvalidated||(this.getObserversCount()>0?this.#G.some(e=>e.getCurrentResult().isStale):void 0===this.state.data)}isStaleByTime(e=0){return this.state.isInvalidated||void 0===this.state.data||!(0,o.Kp)(this.state.dataUpdatedAt,e)}onFocus(){let e=this.#G.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#W?.continue()}onOnline(){let e=this.#G.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#W?.continue()}addObserver(e){this.#G.includes(e)||(this.#G.push(e),this.clearGcTimeout(),this.#Z.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.#G.includes(e)&&(this.#G=this.#G.filter(t=>t!==e),this.#G.length||(this.#W&&(this.#J?this.#W.cancel({revert:!0}):this.#W.cancelRetry()),this.scheduleGc()),this.#Z.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.#G.length}invalidate(){this.state.isInvalidated||this.#H({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus){if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#W)return this.#W.continueRetry(),this.#W.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.#G.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,i={queryKey:this.queryKey,meta:this.meta},addSignalProperty=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#J=!0,n.signal)})};addSignalProperty(i);let l={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn&&this.options.queryFn!==o.CN?(this.#J=!1,this.options.persister)?this.options.persister(this.options.queryFn,i,this):this.options.queryFn(i):Promise.reject(Error(`Missing queryFn: '${this.options.queryHash}'`))};addSignalProperty(l),this.options.behavior?.onFetch(l,this),this.#V=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==l.fetchOptions?.meta)&&this.#H({type:"fetch",meta:l.fetchOptions?.meta});let onError=e=>{(0,s.DV)(e)&&e.silent||this.#H({type:"error",error:e}),(0,s.DV)(e)||(this.#Z.config.onError?.(e,this),this.#Z.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#W=(0,s.Mz)({fn:l.fetchFn,abort:n.abort.bind(n),onSuccess:e=>{if(void 0===e){onError(Error(`${this.queryHash} data is undefined`));return}this.setData(e),this.#Z.config.onSuccess?.(e,this),this.#Z.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError,onFail:(e,t)=>{this.#H({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#H({type:"pause"})},onContinue:()=>{this.#H({type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode}),this.#W.promise}#H(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...fetchState(t.data,this.options),fetchMeta:e.meta??null};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":let n=e.error;if((0,s.DV)(n)&&n.revert&&this.#V)return{...this.#V,fetchStatus:"idle"};return{...t,error:n,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),i.V.batch(()=>{this.#G.forEach(e=>{e.onQueryUpdate()}),this.#Z.notify({query:this,type:"updated",action:e})})}};function fetchState(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:(0,s.Kw)(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}},48907:function(e,t,n){"use strict";n.d(t,{F:function(){return i}});var o=n(24139),i=class{#X;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,o.PN)(this.gcTime)&&(this.#X=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(o.sk?1/0:3e5))}clearGcTimeout(){this.#X&&(clearTimeout(this.#X),this.#X=void 0)}}},72008:function(e,t,n){"use strict";n.d(t,{DV:function(){return isCancelledError},Kw:function(){return canFetch},Mz:function(){return createRetryer}});var o=n(66474),i=n(14304),s=n(24139);function defaultRetryDelay(e){return Math.min(1e3*2**e,3e4)}function canFetch(e){return(e??"online")!=="online"||i.N.isOnline()}var l=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function isCancelledError(e){return e instanceof l}function createRetryer(e){let t,n,c,u=!1,d=0,p=!1,f=new Promise((e,t)=>{n=e,c=t}),shouldPause=()=>!o.j.isFocused()||"always"!==e.networkMode&&!i.N.isOnline(),resolve=o=>{p||(p=!0,e.onSuccess?.(o),t?.(),n(o))},reject=n=>{p||(p=!0,e.onError?.(n),t?.(),c(n))},pause=()=>new Promise(n=>{t=e=>{let t=p||!shouldPause();return t&&n(e),t},e.onPause?.()}).then(()=>{t=void 0,p||e.onContinue?.()}),run=()=>{let t;if(!p){try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(resolve).catch(t=>{if(p)return;let n=e.retry??(s.sk?0:3),o=e.retryDelay??defaultRetryDelay,i="function"==typeof o?o(d,t):o,l=!0===n||"number"==typeof n&&d{if(shouldPause())return pause()}).then(()=>{u?reject(t):run()})})}};return canFetch(e.networkMode)?run():pause().then(run),{promise:f,cancel:t=>{p||(reject(new l(t)),e.abort?.())},continue:()=>{let e=t?.();return e?f:Promise.resolve()},cancelRetry:()=>{u=!0},continueRetry:()=>{u=!1}}}},7506:function(e,t,n){"use strict";n.d(t,{l:function(){return o}});var o=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},24139:function(e,t,n){"use strict";n.d(t,{CN:function(){return i},Ht:function(){return addToStart},Kp:function(){return timeUntilStale},PN:function(){return isValidTimeout},Rm:function(){return hashQueryKeyByOptions},SE:function(){return functionalUpdate},VS:function(){return shallowEqualObjects},VX:function(){return addToEnd},X7:function(){return matchMutation},Ym:function(){return hashKey},ZT:function(){return noop},_v:function(){return sleep},_x:function(){return matchQuery},oE:function(){return replaceData},sk:function(){return o},to:function(){return partialMatchKey}});var o="undefined"==typeof window||"Deno"in globalThis;function noop(){}function functionalUpdate(e,t){return"function"==typeof e?e(t):e}function isValidTimeout(e){return"number"==typeof e&&e>=0&&e!==1/0}function timeUntilStale(e,t){return Math.max(e+(t||0)-Date.now(),0)}function matchQuery(e,t){let{type:n="all",exact:o,fetchStatus:i,predicate:s,queryKey:l,stale:c}=e;if(l){if(o){if(t.queryHash!==hashQueryKeyByOptions(l,t.options))return!1}else if(!partialMatchKey(t.queryKey,l))return!1}if("all"!==n){let e=t.isActive();if("active"===n&&!e||"inactive"===n&&e)return!1}return("boolean"!=typeof c||t.isStale()===c)&&(!i||i===t.state.fetchStatus)&&(!s||!!s(t))}function matchMutation(e,t){let{exact:n,status:o,predicate:i,mutationKey:s}=e;if(s){if(!t.options.mutationKey)return!1;if(n){if(hashKey(t.options.mutationKey)!==hashKey(s))return!1}else if(!partialMatchKey(t.options.mutationKey,s))return!1}return(!o||t.state.status===o)&&(!i||!!i(t))}function hashQueryKeyByOptions(e,t){let n=t?.queryKeyHashFn||hashKey;return n(e)}function hashKey(e){return JSON.stringify(e,(e,t)=>isPlainObject(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function partialMatchKey(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&!Object.keys(t).some(n=>!partialMatchKey(e[n],t[n]))}function shallowEqualObjects(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function isPlainArray(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function isPlainObject(e){if(!hasObjectPrototype(e))return!1;let t=e.constructor;if(void 0===t)return!0;let n=t.prototype;return!!(hasObjectPrototype(n)&&n.hasOwnProperty("isPrototypeOf"))}function hasObjectPrototype(e){return"[object Object]"===Object.prototype.toString.call(e)}function sleep(e){return new Promise(t=>{setTimeout(t,e)})}function replaceData(e,t,n){return"function"==typeof n.structuralSharing?n.structuralSharing(e,t):!1!==n.structuralSharing?function replaceEqualDeep(e,t){if(e===t)return e;let n=isPlainArray(e)&&isPlainArray(t);if(n||isPlainObject(e)&&isPlainObject(t)){let o=n?e:Object.keys(e),i=o.length,s=n?t:Object.keys(t),l=s.length,c=n?[]:{},u=0;for(let i=0;in?o.slice(1):o}function addToStart(e,t,n=0){let o=[t,...e];return n&&o.length>n?o.slice(0,-1):o}var i=Symbol()},30202:function(e,t,n){"use strict";n.d(t,{NL:function(){return useQueryClient},aH:function(){return QueryClientProvider}});var o=n(67294),i=n(85893),s=o.createContext(void 0),useQueryClient=e=>{let t=o.useContext(s);if(e)return e;if(!t)throw Error("No QueryClient set, use QueryClientProvider to set one");return t},QueryClientProvider=({client:e,children:t})=>(o.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,i.jsx)(s.Provider,{value:e,children:t}))},98029:function(e,t,n){"use strict";n.d(t,{D:function(){return useMutation}});var o=n(67294),i=n(59289),s=n(27037),l=n(7506),c=n(24139),u=class extends l.l{#g;#C=void 0;#Y;#$;constructor(e,t){super(),this.#g=e,this.setOptions(t),this.bindMethods(),this.#ee()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#g.defaultMutationOptions(e),(0,c.VS)(this.options,t)||this.#g.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#Y,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,c.Ym)(t.mutationKey)!==(0,c.Ym)(this.options.mutationKey)?this.reset():this.#Y?.state.status==="pending"&&this.#Y.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#Y?.removeObserver(this)}onMutationUpdate(e){this.#ee(),this.#_(e)}getCurrentResult(){return this.#C}reset(){this.#Y?.removeObserver(this),this.#Y=void 0,this.#ee(),this.#_()}mutate(e,t){return this.#$=t,this.#Y?.removeObserver(this),this.#Y=this.#g.getMutationCache().build(this.#g,this.options),this.#Y.addObserver(this),this.#Y.execute(e)}#ee(){let e=this.#Y?.state??(0,i.R)();this.#C={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#_(e){s.V.batch(()=>{if(this.#$&&this.hasListeners()){let t=this.#C.variables,n=this.#C.context;e?.type==="success"?(this.#$.onSuccess?.(e.data,t,n),this.#$.onSettled?.(e.data,null,t,n)):e?.type==="error"&&(this.#$.onError?.(e.error,t,n),this.#$.onSettled?.(void 0,e.error,t,n))}this.listeners.forEach(e=>{e(this.#C)})})}},d=n(30202),p=n(86290);function useMutation(e,t){let n=(0,d.NL)(t),[i]=o.useState(()=>new u(n,e));o.useEffect(()=>{i.setOptions(e)},[i,e]);let l=o.useSyncExternalStore(o.useCallback(e=>i.subscribe(s.V.batchCalls(e)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),c=o.useCallback((e,t)=>{i.mutate(e,t).catch(p.Z)},[i]);if(l.error&&(0,p.L)(i.options.throwOnError,[l.error]))throw l.error;return{...l,mutate:c,mutateAsync:l.mutate}}},86290:function(e,t,n){"use strict";function shouldThrowError(e,t){return"function"==typeof e?e(...t):!!e}function noop(){}n.d(t,{L:function(){return shouldThrowError},Z:function(){return noop}})},52425:function(e,t,n){"use strict";function getAccount(e){let t=e.state.current,n=e.state.connections.get(t),o=n?.accounts,i=o?.[0],s=e.chains.find(e=>e.id===n?.chainId),l=e.state.status;switch(l){case"connected":return{address:i,addresses:o,chain:s,chainId:n?.chainId,connector:n?.connector,isConnected:!0,isConnecting:!1,isDisconnected:!1,isReconnecting:!1,status:l};case"reconnecting":return{address:i,addresses:o,chain:s,chainId:n?.chainId,connector:n?.connector,isConnected:!!i,isConnecting:!1,isDisconnected:!1,isReconnecting:!0,status:l};case"connecting":return{address:i,addresses:o,chain:s,chainId:n?.chainId,connector:n?.connector,isConnected:!1,isConnecting:!0,isDisconnected:!1,isReconnecting:!1,status:l};case"disconnected":return{address:void 0,addresses:void 0,chain:void 0,chainId:void 0,connector:void 0,isConnected:!1,isConnecting:!1,isDisconnected:!0,isReconnecting:!1,status:l}}}n.d(t,{D:function(){return getAccount}})},33397:function(e,t,n){"use strict";n.d(t,{u:function(){return watchAccount}});var o=n(74751),i=n(52425);function watchAccount(e,t){let{onChange:n}=t;return e.subscribe(()=>(0,i.D)(e),n,{equalityFn(e,t){let{connector:n,...i}=e,{connector:s,...l}=t;return(0,o.v)(i,l)&&n?.id===s?.id&&n?.uid===s?.uid}})}},7066:function(e,t,n){"use strict";n.d(t,{G:function(){return BaseError}});var o,i,s=n(79983);let getVersion=()=>`@wagmi/core@${s.i}`;var __classPrivateFieldGet=function(e,t,n,o){if("a"===n&&!o)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)};let BaseError=class BaseError extends Error{get docsBaseUrl(){return"https://wagmi.sh/core"}get version(){return getVersion()}constructor(e,t={}){super(),o.add(this),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WagmiCoreError"});let n=t.cause instanceof BaseError?t.cause.details:t.cause?.message?t.cause.message:t.details,i=t.cause instanceof BaseError&&t.cause.docsPath||t.docsPath;this.message=[e||"An error occurred.","",...t.metaMessages?[...t.metaMessages,""]:[],...i?[`Docs: ${this.docsBaseUrl}${i}.html${t.docsSlug?`#${t.docsSlug}`:""}`]:[],...n?[`Details: ${n}`]:[],`Version: ${this.version}`].join("\n"),t.cause&&(this.cause=t.cause),this.details=n,this.docsPath=i,this.metaMessages=t.metaMessages,this.shortMessage=e}walk(e){return __classPrivateFieldGet(this,o,"m",i).call(this,this,e)}};o=new WeakSet,i=function _BaseError_walk(e,t){return t?.(e)?e:e.cause?__classPrivateFieldGet(this,o,"m",_BaseError_walk).call(this,e.cause,t):e}},87675:function(e,t,n){"use strict";n.d(t,{JK:function(){return ConnectorAccountNotFoundError},X4:function(){return ChainNotConfiguredError},aH:function(){return ConnectorNotConnectedError},wi:function(){return ConnectorAlreadyConnectedError}});var o=n(7066);let ChainNotConfiguredError=class ChainNotConfiguredError extends o.G{constructor(){super("Chain not configured."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ChainNotConfiguredError"})}};let ConnectorAlreadyConnectedError=class ConnectorAlreadyConnectedError extends o.G{constructor(){super("Connector already connected."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ConnectorAlreadyConnectedError"})}};let ConnectorNotConnectedError=class ConnectorNotConnectedError extends o.G{constructor(){super("Connector not connected."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ConnectorNotConnectedError"})}};let ConnectorAccountNotFoundError=class ConnectorAccountNotFoundError extends o.G{constructor({address:e,connector:t}){super(`Account "${e}" not found for connector "${t.name}".`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ConnectorAccountNotFoundError"})}}},74751:function(e,t,n){"use strict";n.d(t,{v:function(){return function deepEqual(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){let n,o;if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t)){if((n=e.length)!==t.length)return!1;for(o=n;0!=o--;)if(!deepEqual(e[o],t[o]))return!1;return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();let i=Object.keys(e);if((n=i.length)!==Object.keys(t).length)return!1;for(o=n;0!=o--;)if(!Object.prototype.hasOwnProperty.call(t,i[o]))return!1;for(o=n;0!=o--;){let n=i[o];if(n&&!deepEqual(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}}})},81946:function(e,t,n){"use strict";function getAction(e,t,n){let o=e[t.name];if("function"==typeof o)return o;let i=e[n];return"function"==typeof i?i:n=>t(e,n)}n.d(t,{s:function(){return getAction}})},79983:function(e,t,n){"use strict";n.d(t,{i:function(){return o}});let o="2.6.9"},90512:function(e,t,n){"use strict";t.Z=function(){for(var e,t,n=0,o="",i=arguments.length;nvoid 0!==e).length>0)}({request:v})&&!i)try{return await scheduleMulticall(e,{...v,blockNumber:f,blockTag:m})}catch(e){if(!(e instanceof c.pZ)&&!(e instanceof c.mm))throw e}let w=await e.request({method:"eth_call",params:i?[v,o,i]:[v,o]});if("0x"===w)return{data:void 0};return{data:w}}catch(c){let o=function(e){if(!(e instanceof l.G))return;let t=e.walk();return"object"==typeof t?.data?t.data?.data:t.data}(c),{offchainLookup:i,offchainLookupSignature:s}=await n.e(422).then(n.bind(n,10422));if(o?.slice(0,10)===s&&M)return{data:await i(e,{data:o,to:M})};throw function(e,{docsPath:t,...n}){let o=(()=>{let t=(0,w.k)(e,n);return t instanceof v.cj?e:t})();return new u.cg(o,{docsPath:t,...n})}(c,{...t,account:F,chain:e.chain})}}async function scheduleMulticall(e,t){let{batchSize:n=1024,wait:o=0}="object"==typeof e.batch?.multicall?e.batch.multicall:{},{blockNumber:s,blockTag:l="latest",data:d,multicallAddress:p,to:b}=t,v=p;if(!v){if(!e.chain)throw new c.pZ;v=(0,g.L)({blockNumber:s,chain:e.chain,contract:"multicall3"})}let w=s?(0,y.eC)(s):void 0,C=w||l,{schedule:E}=(0,x.S)({id:`${e.uid}.${C}`,wait:o,shouldSplitBatch(e){let t=e.reduce((e,{data:t})=>e+(t.length-2),0);return t>2*n},fn:async t=>{let n=t.map(e=>({allowFailure:!0,callData:e.data,target:e.to})),o=(0,m.R)({abi:i.F8,args:[n],functionName:"aggregate3"}),s=await e.request({method:"eth_call",params:[{data:o,to:v},C]});return(0,f.k)({abi:i.F8,args:[n],functionName:"aggregate3",data:s||"0x"})}}),[{returnData:A,success:k}]=await E({data:d,to:b});if(!k)throw new u.VQ({data:A});return"0x"===A?{data:void 0}:{data:A}}function parseStateMapping(e){if(e&&0!==e.length)return e.reduce((e,{slot:t,value:n})=>{if(66!==t.length)throw new d.W_({size:t.length,targetSize:66,type:"hex"});if(66!==n.length)throw new d.W_({size:n.length,targetSize:66,type:"hex"});return e[t]=n,e},{})}},66403:function(e,t,n){"use strict";n.d(t,{R:function(){return i}});var o=n(86164);let i=(0,o.a)({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://cloudflare-eth.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xce01f8eee7E479C928F8919abD53E553a36CeF67",blockCreated:19258213},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}})},16189:function(e,t,n){"use strict";let o;n.d(t,{e:function(){return createClient}});var i=n(14503);let s=256;function createClient(e){let{batch:t,cacheTime:n=e.pollingInterval??4e3,key:l="base",name:c="Base Client",pollingInterval:u=4e3,type:d="base"}=e,p=e.chain,f=e.account?(0,i.T)(e.account):void 0,{config:m,request:b,value:g}=e.transport({chain:p,pollingInterval:u}),y={...m,...g},v={account:f,batch:t,cacheTime:n,chain:p,key:l,name:c,pollingInterval:u,request:b,transport:y,type:d,uid:function(e=11){if(!o||s+e>512){o="",s=0;for(let e=0;e<256;e++)o+=(256+256*Math.random()|0).toString(16).substring(1)}return o.substring(s,s+++e)}()};return Object.assign(v,{extend:function extend(e){return t=>{let n=t(e);for(let e in v)delete n[e];let o={...e,...n};return Object.assign(o,{extend:extend(o)})}}(v)})}},91628:function(e,t,n){"use strict";n.d(t,{q:function(){return createTransport}});var o=n(62027),i=n(78863),s=n(39028),l=n(7760);function createTransport({key:e,name:t,request:n,retryCount:c=3,retryDelay:u=150,timeout:d,type:p},f){return{config:{key:e,name:t,request:n,retryCount:c,retryDelay:u,timeout:d,type:p},request:function(e,t={}){return async(n,c={})=>{let{retryDelay:u=150,retryCount:d=3}={...t,...c};return(0,l.J)(async()=>{try{return await e(n)}catch(e){switch(e.code){case s.s7.code:throw new s.s7(e);case s.B.code:throw new s.B(e);case s.LX.code:throw new s.LX(e);case s.nY.code:throw new s.nY(e);case s.XS.code:throw new s.XS(e);case s.yR.code:throw new s.yR(e);case s.Og.code:throw new s.Og(e);case s.pT.code:throw new s.pT(e);case s.KB.code:throw new s.KB(e);case s.gS.code:throw new s.gS(e);case s.Pv.code:throw new s.Pv(e);case s.GD.code:throw new s.GD(e);case s.ab.code:throw new s.ab(e);case s.PE.code:throw new s.PE(e);case s.Ts.code:throw new s.Ts(e);case s.u5.code:throw new s.u5(e);case s.I0.code:throw new s.I0(e);case s.x3.code:throw new s.x3(e);case 5e3:throw new s.ab(e);default:if(e instanceof o.G)throw e;throw new s.ir(e)}}},{delay:({count:e,error:t})=>{if(t&&t instanceof i.Gg){let e=t?.headers?.get("Retry-After");if(e?.match(/\d/))return 1e3*parseInt(e)}return~~(1<"code"in e&&"number"==typeof e.code?-1===e.code||e.code===s.Pv.code||e.code===s.XS.code:!(e instanceof i.Gg)||!e.status||403===e.status||408===e.status||413===e.status||429===e.status||500===e.status||502===e.status||503===e.status||504===e.status})}}(n,{retryCount:c,retryDelay:u}),value:f}}},16693:function(e,t,n){"use strict";n.d(t,{$o:function(){return d},F8:function(){return o},X$:function(){return u},du:function(){return l},k3:function(){return s},nZ:function(){return c}});let o=[{inputs:[{components:[{name:"target",type:"address"},{name:"allowFailure",type:"bool"},{name:"callData",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"aggregate3",outputs:[{components:[{name:"success",type:"bool"},{name:"returnData",type:"bytes"}],name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"}],i=[{inputs:[],name:"ResolverNotFound",type:"error"},{inputs:[],name:"ResolverWildcardNotSupported",type:"error"},{inputs:[],name:"ResolverNotContract",type:"error"},{inputs:[{name:"returnData",type:"bytes"}],name:"ResolverError",type:"error"},{inputs:[{components:[{name:"status",type:"uint16"},{name:"message",type:"string"}],name:"errors",type:"tuple[]"}],name:"HttpError",type:"error"}],s=[...i,{name:"resolve",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes"},{name:"data",type:"bytes"}],outputs:[{name:"",type:"bytes"},{name:"address",type:"address"}]},{name:"resolve",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes"},{name:"data",type:"bytes"},{name:"gateways",type:"string[]"}],outputs:[{name:"",type:"bytes"},{name:"address",type:"address"}]}],l=[...i,{name:"reverse",type:"function",stateMutability:"view",inputs:[{type:"bytes",name:"reverseName"}],outputs:[{type:"string",name:"resolvedName"},{type:"address",name:"resolvedAddress"},{type:"address",name:"reverseResolver"},{type:"address",name:"resolver"}]},{name:"reverse",type:"function",stateMutability:"view",inputs:[{type:"bytes",name:"reverseName"},{type:"string[]",name:"gateways"}],outputs:[{type:"string",name:"resolvedName"},{type:"address",name:"resolvedAddress"},{type:"address",name:"reverseResolver"},{type:"address",name:"resolver"}]}],c=[{name:"text",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"key",type:"string"}],outputs:[{name:"",type:"string"}]}],u=[{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"}],outputs:[{name:"",type:"address"}]},{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"coinType",type:"uint256"}],outputs:[{name:"",type:"bytes"}]}],d=[{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],stateMutability:"nonpayable",type:"constructor"}]},21746:function(e,t,n){"use strict";n.d(t,{$:function(){return o},Up:function(){return i},hZ:function(){return s}});let o={1:"An `assert` condition failed.",17:"Arithmetic operation resulted in underflow or overflow.",18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:"Attempted to convert to an invalid type.",34:"Attempted to access a storage byte array that is incorrectly encoded.",49:"Performed `.pop()` on an empty array",50:"Array index is out of bounds.",65:"Allocated too much memory or created an array which is too large.",81:"Attempted to call a zero-initialized variable of internal function type."},i={inputs:[{name:"message",type:"string"}],name:"Error",type:"error"},s={inputs:[{name:"reason",type:"uint256"}],name:"Panic",type:"error"}},84192:function(e,t,n){"use strict";n.d(t,{Bd:function(){return s},Zn:function(){return i},ez:function(){return o}});let o={gwei:9,wei:18},i={ether:-9,wei:9},s={ether:-18,gwei:-9}},57412:function(e,t,n){"use strict";n.d(t,{CI:function(){return InvalidAbiDecodingTypeError},FM:function(){return AbiEventSignatureEmptyTopicsError},Gy:function(){return DecodeLogTopicsMismatch},KY:function(){return BytesSizeMismatchError},M4:function(){return AbiEncodingBytesSizeMismatchError},MX:function(){return AbiFunctionOutputsNotFoundError},S4:function(){return AbiItemAmbiguityError},SM:function(){return DecodeLogDataMismatch},cO:function(){return AbiConstructorParamsNotFoundError},dh:function(){return InvalidAbiEncodingTypeError},fM:function(){return AbiConstructorNotFoundError},fs:function(){return AbiEncodingLengthMismatchError},gr:function(){return AbiEncodingArrayLengthMismatchError},hn:function(){return InvalidArrayError},lC:function(){return AbiEventSignatureNotFoundError},mv:function(){return AbiEventNotFoundError},wM:function(){return InvalidDefinitionTypeError},wb:function(){return AbiDecodingZeroDataError},xB:function(){return AbiDecodingDataSizeTooSmallError},xL:function(){return AbiFunctionNotFoundError},yP:function(){return AbiErrorSignatureNotFoundError}});var o=n(80522),i=n(39135),s=n(62027);let AbiConstructorNotFoundError=class AbiConstructorNotFoundError extends s.G{constructor({docsPath:e}){super("A constructor was not found on the ABI.\nMake sure you are using the correct ABI and that the constructor exists on it.",{docsPath:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiConstructorNotFoundError"})}};let AbiConstructorParamsNotFoundError=class AbiConstructorParamsNotFoundError extends s.G{constructor({docsPath:e}){super("Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.\nMake sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.",{docsPath:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiConstructorParamsNotFoundError"})}};let AbiDecodingDataSizeTooSmallError=class AbiDecodingDataSizeTooSmallError extends s.G{constructor({data:e,params:t,size:n}){super(`Data size of ${n} bytes is too small for given parameters.`,{metaMessages:[`Params: (${(0,o.h)(t,{includeName:!0})})`,`Data: ${e} (${n} bytes)`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiDecodingDataSizeTooSmallError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e,this.params=t,this.size=n}};let AbiDecodingZeroDataError=class AbiDecodingZeroDataError extends s.G{constructor(){super('Cannot decode zero data ("0x") with ABI parameters.'),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiDecodingZeroDataError"})}};let AbiEncodingArrayLengthMismatchError=class AbiEncodingArrayLengthMismatchError extends s.G{constructor({expectedLength:e,givenLength:t,type:n}){super(`ABI encoding array length mismatch for type ${n}. +`},89192:function(e,t,n){"use strict";let o,i,s,l,c,u,d,p,f,m,g,b,y,v,w,C,E;n.d(t,{NL:function(){return ConnectButton},pj:function(){return RainbowKitProvider},vX:function(){return getDefaultConfig}});var x,A,k,B,S,I,j,T,P='-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"',M={rounded:`SFRounded, ui-rounded, "SF Pro Rounded", ${P}`,system:P},O={large:{actionButton:"9999px",connectButton:"12px",modal:"24px",modalMobile:"28px"},medium:{actionButton:"10px",connectButton:"8px",modal:"16px",modalMobile:"18px"},none:{actionButton:"0px",connectButton:"0px",modal:"0px",modalMobile:"0px"},small:{actionButton:"4px",connectButton:"4px",modal:"8px",modalMobile:"8px"}},R={large:{modalOverlay:"blur(20px)"},none:{modalOverlay:"blur(0px)"},small:{modalOverlay:"blur(4px)"}},baseTheme=({borderRadius:e="large",fontStack:t="rounded",overlayBlur:n="none"})=>({blurs:{modalOverlay:R[n].modalOverlay},fonts:{body:M[t]},radii:{actionButton:O[e].actionButton,connectButton:O[e].connectButton,menuButton:O[e].connectButton,modal:O[e].modal,modalMobile:O[e].modalMobile}}),U={blue:{accentColor:"#0E76FD",accentColorForeground:"#FFF"},green:{accentColor:"#1DB847",accentColorForeground:"#FFF"},orange:{accentColor:"#FF801F",accentColorForeground:"#FFF"},pink:{accentColor:"#FF5CA0",accentColorForeground:"#FFF"},purple:{accentColor:"#5F5AFA",accentColorForeground:"#FFF"},red:{accentColor:"#FA423C",accentColorForeground:"#FFF"}},F=U.blue,lightTheme=({accentColor:e=F.accentColor,accentColorForeground:t=F.accentColorForeground,...n}={})=>({...baseTheme(n),colors:{accentColor:e,accentColorForeground:t,actionButtonBorder:"rgba(0, 0, 0, 0.04)",actionButtonBorderMobile:"rgba(0, 0, 0, 0.06)",actionButtonSecondaryBackground:"rgba(0, 0, 0, 0.06)",closeButton:"rgba(60, 66, 66, 0.8)",closeButtonBackground:"rgba(0, 0, 0, 0.06)",connectButtonBackground:"#FFF",connectButtonBackgroundError:"#FF494A",connectButtonInnerBackground:"linear-gradient(0deg, rgba(0, 0, 0, 0.03), rgba(0, 0, 0, 0.06))",connectButtonText:"#25292E",connectButtonTextError:"#FFF",connectionIndicator:"#30E000",downloadBottomCardBackground:"linear-gradient(126deg, rgba(255, 255, 255, 0) 9.49%, rgba(171, 171, 171, 0.04) 71.04%), #FFFFFF",downloadTopCardBackground:"linear-gradient(126deg, rgba(171, 171, 171, 0.2) 9.49%, rgba(255, 255, 255, 0) 71.04%), #FFFFFF",error:"#FF494A",generalBorder:"rgba(0, 0, 0, 0.06)",generalBorderDim:"rgba(0, 0, 0, 0.03)",menuItemBackground:"rgba(60, 66, 66, 0.1)",modalBackdrop:"rgba(0, 0, 0, 0.3)",modalBackground:"#FFF",modalBorder:"transparent",modalText:"#25292E",modalTextDim:"rgba(60, 66, 66, 0.3)",modalTextSecondary:"rgba(60, 66, 66, 0.6)",profileAction:"#FFF",profileActionHover:"rgba(255, 255, 255, 0.5)",profileForeground:"rgba(60, 66, 66, 0.06)",selectedOptionBorder:"rgba(60, 66, 66, 0.1)",standby:"#FFD641"},shadows:{connectButton:"0px 4px 12px rgba(0, 0, 0, 0.1)",dialog:"0px 8px 32px rgba(0, 0, 0, 0.32)",profileDetailsAction:"0px 2px 6px rgba(37, 41, 46, 0.04)",selectedOption:"0px 2px 6px rgba(0, 0, 0, 0.24)",selectedWallet:"0px 2px 6px rgba(0, 0, 0, 0.12)",walletLogo:"0px 2px 16px rgba(0, 0, 0, 0.16)"}});lightTheme.accentColors=U;var N=n(93763),D=n(67294),addRecipe=function(e,t){return Object.defineProperty(e,"__recipe__",{value:t,writable:!1}),e};function createNormalizeValueFn(e){var{conditions:t}=e;if(!t)throw Error("Styles have no conditions");return addRecipe(function(e){if("string"==typeof e||"number"==typeof e||"boolean"==typeof e){if(!t.defaultCondition)throw Error("No default condition");return{[t.defaultCondition]:e}}if(Array.isArray(e)){if(!("responsiveArray"in t))throw Error("Responsive arrays are not supported");var n={};for(var o in t.responsiveArray)null!=e[o]&&(n[t.responsiveArray[o]]=e[o]);return n}return e},{importPath:"@vanilla-extract/sprinkles/createUtils",importName:"createNormalizeValueFn",args:[{conditions:e.conditions}]})}function ownKeys(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);t&&(o=o.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,o)}return n}function _objectSpread2(e){for(var t=1;tfunction(){for(var t=arguments.length,n=Array(t),o=0;oe.styles)),s=Object.keys(i),l=s.filter(e=>"mappings"in i[e]);return Object.assign(t=>{var n=[],o={},s=_objectSpread2({},t),c=!1;for(var u of l){var d=t[u];if(null!=d)for(var p of(c=!0,i[u].mappings))o[p]=d,null==s[p]&&delete s[p]}var f=c?_objectSpread2(_objectSpread2({},o),s):t;for(var m in f)if("continue"===function(){var e=f[m],t=i[m];try{if(t.mappings)return"continue";if("string"==typeof e||"number"==typeof e)n.push(t.values[e].defaultClass);else if(Array.isArray(e))for(var o=0;oe,_=n(92321),L=n(90512),z=n(37122),q=n(97405),G=n(95946),W=n(61836),H=n(15229),Q=n(92106);async function getBalance(e,{address:t,blockNumber:n,blockTag:o="latest"}){let i=n?(0,Q.eC)(n):void 0,s=await e.request({method:"eth_getBalance",params:[t,i||o]});return BigInt(s)}var K=n(81946),V=n(84192);function getUnit(e){return"number"==typeof e?e:"wei"===e?0:Math.abs(V.Bd[e])}var Z=n(16693),J=n(57412),X=n(62027),Y=n(7210),$=n(55629),ee=n(47864),et=n(39028);function getContractError(e,{abi:t,address:n,args:o,docsPath:i,functionName:s,sender:l}){let{code:c,data:u,message:d,shortMessage:p}=e instanceof q.VQ?e:e instanceof X.G?e.walk(e=>"data"in e)||e.walk():{},f=e instanceof J.wb?new q.Dk({functionName:s}):[3,et.XS.code].includes(c)&&(u||d||p)?new q.Lu({abi:t,data:"object"==typeof u?u.data:u,functionName:s,message:p??d}):e;return new q.uq(f,{abi:t,args:o,contractAddress:n,docsPath:i,functionName:s,sender:l})}function getAction_getAction(e,t,n){return o=>e[t.name||n]?.(o)??t(e,o)}var er=n(61376);async function readContract(e,t){let{abi:n,address:o,args:i,functionName:s,...l}=t,c=(0,$.R)({abi:n,args:i,functionName:s});try{let{data:t}=await getAction_getAction(e,er.RE,"call")({...l,data:c,to:o});return(0,Y.k)({abi:n,args:i,functionName:s,data:t||"0x"})}catch(e){throw getContractError(e,{abi:n,address:o,args:i,docsPath:"/docs/contract/readContract",functionName:s})}}async function multicall(e,t){let{allowFailure:n=!0,batchSize:o,blockNumber:i,blockTag:s,multicallAddress:l,stateOverride:c}=t,u=t.contracts,d=o??("object"==typeof e.batch?.multicall&&e.batch.multicall.batchSize||1024),p=l;if(!p){if(!e.chain)throw Error("client chain not configured. multicallAddress is required.");p=(0,ee.L)({blockNumber:i,chain:e.chain,contract:"multicall3"})}let f=[[]],m=0,g=0;for(let e=0;e0&&g>d&&f[m].length>0&&(m++,g=(e.length-2)/2,f[m]=[]),f[m]=[...f[m],{allowFailure:!0,callData:e,target:o}]}catch(l){let e=getContractError(l,{abi:t,address:o,args:i,docsPath:"/docs/contract/multicall",functionName:s});if(!n)throw e;f[m]=[...f[m],{allowFailure:!0,callData:"0x",target:o}]}}let b=await Promise.allSettled(f.map(t=>getAction_getAction(e,readContract,"readContract")({abi:Z.F8,address:p,args:[t],blockNumber:i,blockTag:s,functionName:"aggregate3",stateOverride:c}))),y=[];for(let e=0;e{let i=n.chainId??e.state.chainId;return{...t,[i]:[...t[i]||[],{contract:n,index:o}]}},{}),c=(await Promise.all(Object.entries(t).map(([t,l])=>multicall_multicall(e,{...s,allowFailure:n,blockNumber:o,blockTag:i,chainId:parseInt(t),contracts:l.map(({contract:e})=>e)})))).flat(),u=Object.values(t).flatMap(e=>e.map(({index:e})=>e));return c.reduce((e,t,n)=>(e&&(e[u[n]]=t),e),[])}catch(t){if(t instanceof q.uq)throw t;let promises=()=>l.map(t=>(function(e,t){let{chainId:n,...o}=t,i=e.getClient({chainId:n}),s=(0,K.s)(i,readContract,"readContract");return s(o)})(e,{...t,blockNumber:o,blockTag:i}));if(n)return(await Promise.allSettled(promises())).map(e=>"fulfilled"===e.status?{result:e.value,status:"success"}:{error:e.reason,result:void 0,status:"failure"});return await Promise.all(promises())}}async function getBalance_getBalance(e,t){let{address:n,blockNumber:o,blockTag:i,chainId:s,token:l,unit:c="ether"}=t;if(l)try{return getTokenBalance(e,{balanceAddress:n,chainId:s,symbolType:"string",tokenAddress:l})}catch(t){if(t instanceof q.uq){let t=await getTokenBalance(e,{balanceAddress:n,chainId:s,symbolType:"bytes32",tokenAddress:l}),o=(0,G.rR)((0,W.f)(t.symbol,{dir:"right"}));return{...t,symbol:o}}throw t}let u=e.getClient({chainId:s}),d=(0,K.s)(u,getBalance,"getBalance"),p=await d(o?{address:n,blockNumber:o}:{address:n,blockTag:i}),f=e.chains.find(e=>e.id===s)??u.chain;return{decimals:f.nativeCurrency.decimals,formatted:(0,H.b)(p,getUnit(c)),symbol:f.nativeCurrency.symbol,value:p}}async function getTokenBalance(e,t){let{balanceAddress:n,chainId:o,symbolType:i,tokenAddress:s,unit:l}=t,c={abi:[{type:"function",name:"balanceOf",stateMutability:"view",inputs:[{type:"address"}],outputs:[{type:"uint256"}]},{type:"function",name:"decimals",stateMutability:"view",inputs:[],outputs:[{type:"uint8"}]},{type:"function",name:"symbol",stateMutability:"view",inputs:[],outputs:[{type:i}]}],address:s},[u,d,p]=await readContracts(e,{allowFailure:!1,contracts:[{...c,functionName:"balanceOf",args:[n],chainId:o},{...c,functionName:"decimals",chainId:o},{...c,functionName:"symbol",chainId:o}]}),f=(0,H.b)(u??"0",getUnit(l??d));return{decimals:d,formatted:f,symbol:p,value:u}}function utils_hashFn(e){return JSON.stringify(e,(e,t)=>!function(e){if(!hasObjectPrototype(e))return!1;let t=e.constructor;if(void 0===t)return!0;let n=t.prototype;return!!(hasObjectPrototype(n)&&n.hasOwnProperty("isPrototypeOf"))}(t)?"bigint"==typeof t?t.toString():t:Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}))}function hasObjectPrototype(e){return"[object Object]"===Object.prototype.toString.call(e)}function filterQueryOptions(e){let{_defaulted:t,behavior:n,gcTime:o,initialData:i,initialDataUpdatedAt:s,maxPages:l,meta:c,networkMode:u,queryFn:d,queryHash:p,queryKey:f,queryKeyHashFn:m,retry:g,retryDelay:b,structuralSharing:y,getPreviousPageParam:v,getNextPageParam:w,initialPageParam:C,_optimisticResults:E,enabled:x,notifyOnChangeProps:A,placeholderData:k,refetchInterval:B,refetchIntervalInBackground:S,refetchOnMount:I,refetchOnReconnect:j,refetchOnWindowFocus:T,retryOnMount:P,select:M,staleTime:O,suspense:R,throwOnError:U,config:F,connector:N,query:D,..._}=e;return _}var en=n(24139),ea=n(27037),eo=n(66474),ei=n(7506),es=n(56888),el=class extends ei.l{constructor(e,t){super(),this.options=t,this.#b=e,this.#y=null,this.bindMethods(),this.setOptions(t)}#b;#v=void 0;#w=void 0;#C=void 0;#E;#x;#y;#A;#k;#B;#S;#I;#j;#T=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.#v.addObserver(this),shouldFetchOnMount(this.#v,this.options)?this.#P():this.updateResult(),this.#M())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return shouldFetchOn(this.#v,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return shouldFetchOn(this.#v,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#O(),this.#R(),this.#v.removeObserver(this)}setOptions(e,t){let n=this.options,o=this.#v;if(this.options=this.#b.defaultQueryOptions(e),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw Error("Expected enabled to be a boolean");this.#U(),this.#v.setOptions(this.options),n._defaulted&&!(0,en.VS)(this.options,n)&&this.#b.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#v,observer:this});let i=this.hasListeners();i&&shouldFetchOptionally(this.#v,o,this.options,n)&&this.#P(),this.updateResult(t),i&&(this.#v!==o||this.options.enabled!==n.enabled||this.options.staleTime!==n.staleTime)&&this.#F();let s=this.#N();i&&(this.#v!==o||this.options.enabled!==n.enabled||s!==this.#j)&&this.#D(s)}getOptimisticResult(e){let t=this.#b.getQueryCache().build(this.#b,e),n=this.createResult(t,e);return(0,en.VS)(this.getCurrentResult(),n)||(this.#C=n,this.#x=this.options,this.#E=this.#v.state),n}getCurrentResult(){return this.#C}trackResult(e,t){let n={};return Object.keys(e).forEach(o=>{Object.defineProperty(n,o,{configurable:!1,enumerable:!0,get:()=>(this.trackProp(o),t?.(o),e[o])})}),n}trackProp(e){this.#T.add(e)}getCurrentQuery(){return this.#v}refetch({...e}={}){return this.fetch({...e})}fetchOptimistic(e){let t=this.#b.defaultQueryOptions(e),n=this.#b.getQueryCache().build(this.#b,t);return n.isFetchingOptimistic=!0,n.fetch().then(()=>this.createResult(n,t))}fetch(e){return this.#P({...e,cancelRefetch:e.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#C))}#P(e){this.#U();let t=this.#v.fetch(this.options,e);return e?.throwOnError||(t=t.catch(en.ZT)),t}#F(){if(this.#O(),en.sk||this.#C.isStale||!(0,en.PN)(this.options.staleTime))return;let e=(0,en.Kp)(this.#C.dataUpdatedAt,this.options.staleTime);this.#S=setTimeout(()=>{this.#C.isStale||this.updateResult()},e+1)}#N(){return("function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.#v):this.options.refetchInterval)??!1}#D(e){this.#R(),this.#j=e,!en.sk&&!1!==this.options.enabled&&(0,en.PN)(this.#j)&&0!==this.#j&&(this.#I=setInterval(()=>{(this.options.refetchIntervalInBackground||eo.j.isFocused())&&this.#P()},this.#j))}#M(){this.#F(),this.#D(this.#N())}#O(){this.#S&&(clearTimeout(this.#S),this.#S=void 0)}#R(){this.#I&&(clearInterval(this.#I),this.#I=void 0)}createResult(e,t){let n;let o=this.#v,i=this.options,s=this.#C,l=this.#E,c=this.#x,u=e!==o,d=u?e.state:this.#w,{state:p}=e,f={...p},m=!1;if(t._optimisticResults){let n=this.hasListeners(),s=!n&&shouldFetchOnMount(e,t),l=n&&shouldFetchOptionally(e,o,t,i);(s||l)&&(f={...f,...(0,es.z)(p.data,e.options)}),"isRestoring"===t._optimisticResults&&(f.fetchStatus="idle")}let{error:g,errorUpdatedAt:b,status:y}=f;if(t.select&&void 0!==f.data){if(s&&f.data===l?.data&&t.select===this.#A)n=this.#k;else try{this.#A=t.select,n=t.select(f.data),n=(0,en.oE)(s?.data,n,t),this.#k=n,this.#y=null}catch(e){this.#y=e}}else n=f.data;if(void 0!==t.placeholderData&&void 0===n&&"pending"===y){let e;if(s?.isPlaceholderData&&t.placeholderData===c?.placeholderData)e=s.data;else if(e="function"==typeof t.placeholderData?t.placeholderData(this.#B?.state.data,this.#B):t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.#y=null}catch(e){this.#y=e}void 0!==e&&(y="success",n=(0,en.oE)(s?.data,e,t),m=!0)}this.#y&&(g=this.#y,n=this.#k,b=Date.now(),y="error");let v="fetching"===f.fetchStatus,w="pending"===y,C="error"===y,E=w&&v,x=void 0!==n,A={status:y,fetchStatus:f.fetchStatus,isPending:w,isSuccess:"success"===y,isError:C,isInitialLoading:E,isLoading:E,data:n,dataUpdatedAt:f.dataUpdatedAt,error:g,errorUpdatedAt:b,failureCount:f.fetchFailureCount,failureReason:f.fetchFailureReason,errorUpdateCount:f.errorUpdateCount,isFetched:f.dataUpdateCount>0||f.errorUpdateCount>0,isFetchedAfterMount:f.dataUpdateCount>d.dataUpdateCount||f.errorUpdateCount>d.errorUpdateCount,isFetching:v,isRefetching:v&&!w,isLoadingError:C&&!x,isPaused:"paused"===f.fetchStatus,isPlaceholderData:m,isRefetchError:C&&x,isStale:isStale(e,t),refetch:this.refetch};return A}updateResult(e){let t=this.#C,n=this.createResult(this.#v,this.options);if(this.#E=this.#v.state,this.#x=this.options,void 0!==this.#E.data&&(this.#B=this.#v),(0,en.VS)(n,t))return;this.#C=n;let o={};e?.listeners!==!1&&(()=>{if(!t)return!0;let{notifyOnChangeProps:e}=this.options,n="function"==typeof e?e():e;if("all"===n||!n&&!this.#T.size)return!0;let o=new Set(n??this.#T);return this.options.throwOnError&&o.add("error"),Object.keys(this.#C).some(e=>{let n=this.#C[e]!==t[e];return n&&o.has(e)})})()&&(o.listeners=!0),this.#_({...o,...e})}#U(){let e=this.#b.getQueryCache().build(this.#b,this.options);if(e===this.#v)return;let t=this.#v;this.#v=e,this.#w=e.state,this.hasListeners()&&(t?.removeObserver(this),e.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#M()}#_(e){ea.V.batch(()=>{e.listeners&&this.listeners.forEach(e=>{e(this.#C)}),this.#b.getQueryCache().notify({query:this.#v,type:"observerResultsUpdated"})})}};function shouldFetchOnMount(e,t){return!1!==t.enabled&&void 0===e.state.data&&!("error"===e.state.status&&!1===t.retryOnMount)||void 0!==e.state.data&&shouldFetchOn(e,t,t.refetchOnMount)}function shouldFetchOn(e,t,n){if(!1!==t.enabled){let o="function"==typeof n?n(e):n;return"always"===o||!1!==o&&isStale(e,t)}return!1}function shouldFetchOptionally(e,t,n,o){return(e!==t||!1===o.enabled)&&(!n.suspense||"error"!==e.state.status)&&isStale(e,n)}function isStale(e,t){return!1!==t.enabled&&e.isStaleByTime(t.staleTime)}n(85893);var ec=D.createContext((E=!1,{clearReset:()=>{E=!1},reset:()=>{E=!0},isReset:()=>E})),useQueryErrorResetBoundary=()=>D.useContext(ec),eu=n(30202),ed=D.createContext(!1),useIsRestoring=()=>D.useContext(ed);ed.Provider;var ep=n(86290),ensurePreventErrorBoundaryRetry=(e,t)=>{(e.suspense||e.throwOnError)&&!t.isReset()&&(e.retryOnMount=!1)},useClearResetErrorBoundary=e=>{D.useEffect(()=>{e.clearReset()},[e])},getHasError=({result:e,errorResetBoundary:t,throwOnError:n,query:o})=>e.isError&&!t.isReset()&&!e.isFetching&&o&&(0,ep.L)(n,[e.error,o]),ensureStaleTime=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},shouldSuspend=(e,t)=>e?.suspense&&t.isPending,fetchOptimistic=(e,t,n)=>t.fetchOptimistic(e).catch(()=>{n.clearReset()});function query_useQuery(e){let t=function(e,t,n){let o=(0,eu.NL)(n),i=useIsRestoring(),s=useQueryErrorResetBoundary(),l=o.defaultQueryOptions(e);l._optimisticResults=i?"isRestoring":"optimistic",ensureStaleTime(l),ensurePreventErrorBoundaryRetry(l,s),useClearResetErrorBoundary(s);let[c]=D.useState(()=>new t(o,l)),u=c.getOptimisticResult(l);if(D.useSyncExternalStore(D.useCallback(e=>{let t=i?()=>void 0:c.subscribe(ea.V.batchCalls(e));return c.updateResult(),t},[c,i]),()=>c.getCurrentResult(),()=>c.getCurrentResult()),D.useEffect(()=>{c.setOptions(l,{listeners:!1})},[l,c]),shouldSuspend(l,u))throw fetchOptimistic(l,c,s);if(getHasError({result:u,errorResetBoundary:s,throwOnError:l.throwOnError,query:o.getQueryCache().get(l.queryHash)}))throw u.error;return l.notifyOnChangeProps?u:c.trackResult(u)}({...e,queryKeyHashFn:utils_hashFn},el,void 0);return t.queryKey=e.queryKey,t}function getChainId(e){return e.state.chainId}function useChainId(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e.subscribe(e=>e.chainId,n)})(t,{onChange:e}),()=>getChainId(t),()=>getChainId(t))}function useBalance(e={}){let{address:t,query:n={}}=e,o=(0,z.Z)(e),i=useChainId(),s=function(e,t={}){return{async queryFn({queryKey:t}){let{address:n,scopeKey:o,...i}=t[1];if(!n)throw Error("address is required");let s=await getBalance_getBalance(e,{...i,address:n});return s??null},queryKey:function(e={}){return["balance",filterQueryOptions(e)]}(t)}}(o,{...e,chainId:e.chainId??i}),l=!!(t&&(n.enabled??!0));return query_useQuery({...n,...s,enabled:l})}let eh=new Map([[8217,"apostrophe"],[8260,"fraction slash"],[12539,"middle dot"]]);function read_compressed_payload(e){var t;let n;return t=function(e){let t=0;function u16(){return e[t++]<<8|e[t++]}let n=u16(),o=1,i=[0,1];for(let e=1;e>--c&1}let d=2147483648-1,p=0;for(let e=0;e<31;e++)p=p<<1|read_bit();let f=[],m=0,g=2147483648;for(;;){let e=Math.floor(((p-m+1)*o-1)/g),t=0,s=n;for(;s-t>1;){let n=t+s>>>1;e>>1|read_bit(),l=l<<1^1073741824,c=(1073741824^c)<<1|1073741825;m=l,g=1+c-l}let b=n-4;return f.map(t=>{switch(t-b){case 3:return b+65792+(e[l++]<<16|e[l++]<<8|e[l++]);case 2:return b+256+(e[l++]<<8|e[l++]);case 1:return b+e[l++];default:return t-1}})}(function(e){let t=[];[..."ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"].forEach((e,n)=>t[e.charCodeAt(0)]=n);let n=e.length,o=new Uint8Array(6*n>>3);for(let i=0,s=0,l=0,c=0;i=8&&(o[s++]=c>>(l-=8));return o}(e)),n=0,()=>t[n++]}function read_sorted(e,t=0){let n=[];for(;;){let o=e(),i=e();if(!i)break;t+=o;for(let e=0;e{let t=read_sorted(e);if(t.length)return t})}function read_mapped(e){let t=[];for(;;){let n=e();if(0==n)break;t.push(function(e,t){let n=1+t(),o=t(),i=read_array_while(t);return read_transposed(i.length,1+e,t).flatMap((e,t)=>{let[s,...l]=e;return Array(i[t]).fill().map((e,t)=>{let i=t*o;return[s+t*n,l.map(e=>e+i)]})})}(n,e))}for(;;){let n=e()-1;if(n<0)break;t.push(read_transposed(1+e(),1+n,e).map(e=>[e[0],e.slice(1)]))}return t.flat()}function read_array_while(e){let t=[];for(;;){let n=e(t.length);if(!n)break;t.push(n)}return t}function read_transposed(e,t,n){let o=Array(e).fill().map(()=>[]);for(let i=0;i>1:o>>1}return n})(e,n).forEach((e,t)=>o[t].push(e));return o}function quote_cp(e){return`{${e.toString(16).toUpperCase().padStart(2,"0")}}`}function str_from_cps(e){let t=e.length;if(t<4096)return String.fromCodePoint(...e);let n=[];for(let o=0;o>24&255}function unpack_cp(e){return 16777215&e}function is_hangul(e){return e>=44032&&e<55204}function decomposed(e){o||function(){let e=read_compressed_payload("AEUDTAHBCFQATQDRADAAcgAgADQAFAAsABQAHwAOACQADQARAAoAFwAHABIACAAPAAUACwAFAAwABAAQAAMABwAEAAoABQAIAAIACgABAAQAFAALAAIACwABAAIAAQAHAAMAAwAEAAsADAAMAAwACgANAA0AAwAKAAkABAAdAAYAZwDSAdsDJgC0CkMB8xhZAqfoC190UGcThgBurwf7PT09Pb09AjgJum8OjDllxHYUKXAPxzq6tABAxgK8ysUvWAgMPT09PT09PSs6LT2HcgWXWwFLoSMEEEl5RFVMKvO0XQ8ExDdJMnIgsj26PTQyy8FfEQ8AY8IPAGcEbwRwBHEEcgRzBHQEdQR2BHcEeAR6BHsEfAR+BIAEgfndBQoBYgULAWIFDAFiBNcE2ATZBRAFEQUvBdALFAsVDPcNBw13DYcOMA4xDjMB4BllHI0B2grbAMDpHLkQ7QHVAPRNQQFnGRUEg0yEB2uaJF8AJpIBpob5AERSMAKNoAXqaQLUBMCzEiACnwRZEkkVsS7tANAsBG0RuAQLEPABv9HICTUBXigPZwRBApMDOwAamhtaABqEAY8KvKx3LQ4ArAB8UhwEBAVSagD8AEFZADkBIadVj2UMUgx5Il4ANQC9AxIB1BlbEPMAs30CGxlXAhwZKQIECBc6EbsCoxngzv7UzRQA8M0BawL6ZwkN7wABAD33OQRcsgLJCjMCjqUChtw/km+NAsXPAoP2BT84PwURAK0RAvptb6cApQS/OMMey5HJS84UdxpxTPkCogVFITaTOwERAK5pAvkNBOVyA7q3BKlOJSALAgUIBRcEdASpBXqzABXFSWZOawLCOqw//AolCZdvv3dSBkEQGyelEPcMMwG1ATsN7UvYBPEGOwTJH30ZGQ/NlZwIpS3dDO0m4y6hgFoj9SqDBe1L9DzdC01RaA9ZC2UJ4zpjgU4DIQENIosK3Q05CG0Q8wrJaw3lEUUHOQPVSZoApQcBCxEdNRW1JhBirAsJOXcG+xr2C48mrxMpevwF0xohBk0BKRr/AM8u54WwWjFcHE9fBgMLJSPHFKhQIA0lQLd4SBobBxUlqQKRQ3BKh1E2HpMh9jw9DWYuE1F8B/U8BRlPC4E8nkarRQ4R0j6NPUgiSUwsBDV/LC8niwnPD4UMuXxyAVkJIQmxDHETMREXN8UIOQcZLZckJxUIIUaVYJoE958D8xPRAwsFPwlBBxMDtRwtEy4VKQUNgSTXAvM21S6zAo9WgAEXBcsPJR/fEFBH4A7pCJsCZQODJesALRUhABcimwhDYwBfj9hTBS7LCMdqbCN0A2cU52ERcweRDlcHpxwzFb8c4XDIXguGCCijrwlbAXUJmQFfBOMICTVbjKAgQWdTi1gYmyBhQT9d/AIxDGUVn0S9h3gCiw9rEhsBNQFzBzkNAQJ3Ee0RaxCVCOuGBDW1M/g6JQRPIYMgEQonA09szgsnJvkM+GkBoxJiAww0PXfuZ6tgtiQX/QcZMsVBYCHxC5JPzQycGsEYQlQuGeQHvwPzGvMn6kFXBf8DowMTOk0z7gS9C2kIiwk/AEkOoxcH1xhqCnGM0AExiwG3mQNXkYMCb48GNwcLAGcLhwV55QAdAqcIowAFAM8DVwA5Aq0HnQAZAIVBAT0DJy8BIeUCjwOTCDHLAZUvAfMpBBvDDBUA9zduSgLDsQKAamaiBd1YAo4CSTUBTSUEBU5HUQOvceEA2wBLBhPfRwEVq0rLGuNDAd9vKwDHAPsABTUHBUEBzQHzbQC3AV8LMQmis7UBTekpAIMAFWsB1wKJAN0ANQB/8QFTAE0FWfkF0wJPSQERMRgrV2EBuwMfATMBDQB5BsuNpckHHwRtB9MCEBsV4QLvLge1AQMi3xPNQsUCvd5VoWACZIECYkJbTa9bNyACofcCaJgCZgkCn4Q4GwsCZjsCZiYEbgR/A38TA36SOQY5dxc5gjojIwJsHQIyNjgKAm3HAm2u74ozZ0UrAWcA3gDhAEoFB5gMjQD+C8IADbUCdy8CdqI/AnlLQwJ4uh1c20WuRtcCfD8CesgCfQkCfPAFWQUgSABIfWMkAoFtAoAAAoAFAn+uSVhKWxUXSswC0QEC0MxLJwOITwOH5kTFkTIC8qFdAwMDrkvOTC0lA89NTE2vAos/AorYwRsHHUNnBbcCjjcCjlxAl4ECjtkCjlx4UbRTNQpS1FSFApP7ApMMAOkAHFUeVa9V0AYsGymVhjLheGZFOzkCl58C77JYIagAWSUClo8ClnycAKlZrFoJgU0AOwKWtQKWTlxEXNECmcsCmWRcyl0HGQKcmznCOp0CnBYCn5sCnriKAB0PMSoPAp3xAp6SALU9YTRh7wKe0wKgbgGpAp6fHwKeTqVjyGQnJSsCJ68CJn4CoPsCoEwCot0CocQCpi8Cpc4Cp/8AfQKn8mh8aLEAA0lqHGrRAqzjAqyuAq1nAq0CAlcdAlXcArHh1wMfTmyXArK9DQKy6Bds4G1jbUhfAyXNArZcOz9ukAMpRQK4XgK5RxUCuSp3cDZw4QK9GQK72nCWAzIRAr6IcgIDM3ECvhpzInNPAsPLAsMEc4J0SzVFdOADPKcDPJoDPb8CxXwCxkcCxhCJAshpUQLIRALJTwLJLgJknQLd0nh5YXiueSVL0AMYo2cCAmH0GfOVJHsLXpJeuxECz2sCz2wvS1PS8xOfAMatAs9zASnqA04SfksFAtwnAtuKAtJPA1JcA1NfAQEDVYyAiT8AyxbtYEWCHILTgs6DjQLaxwLZ3oQQhEmnPAOGpQAvA2QOhnFZ+QBVAt9lAt64c3cC4i/tFAHzMCcB9JsB8tKHAuvzAulweQLq+QLq5AD5RwG5Au6JAuuclqqXAwLuPwOF4Jh5cOBxoQLzAwBpA44WmZMC9xMDkW4DkocC95gC+dkC+GaaHJqruzebHgOdgwL++gEbADmfHJ+zAwWNA6ZqA6bZANHFAwZqoYiiBQkDDEkCwAA/AwDhQRdTARHzA2sHl2cFAJMtK7evvdsBiZkUfxEEOQH7KQUhDp0JnwCS/SlXxQL3AZ0AtwW5AG8LbUEuFCaNLgFDAYD8AbUmAHUDDgRtACwCFgyhAAAKAj0CagPdA34EkQEgRQUhfAoABQBEABMANhICdwEABdUDa+8KxQIA9wqfJ7+xt+UBkSFBQgHpFH8RNMCJAAQAGwBaAkUChIsABjpTOpSNbQC4Oo860ACNOME63AClAOgAywE6gTo7Ofw5+Tt2iTpbO56JOm85GAFWATMBbAUvNV01njWtNWY1dTW2NcU1gjWRNdI14TWeNa017jX9NbI1wTYCNhE1xjXVNhY2JzXeNe02LjY9Ni41LSE2OjY9Njw2yTcIBJA8VzY4Nt03IDcPNsogN4k3MAoEsDxnNiQ3GTdsOo03IULUQwdC4EMLHA8PCZsobShRVQYA6X8A6bABFCnXAukBowC9BbcAbwNzBL8MDAMMAQgDAAkKCwsLCQoGBAVVBI/DvwDz9b29kaUCb0QtsRTNLt4eGBcSHAMZFhYZEhYEARAEBUEcQRxBHEEcQRxBHEEaQRxBHEFCSTxBPElISUhBNkM2QTYbNklISVmBVIgBFLWZAu0BhQCjBcEAbykBvwGJAaQcEZ0ePCklMAAhMvAIMAL54gC7Bm8EescjzQMpARQpKgDUABavAj626xQAJP0A3etzuf4NNRA7efy2Z9NQrCnC0OSyANz5BBIbJ5IFDR6miIavYS6tprjjmuKebxm5C74Q225X1pkaYYPb6f1DK4k3xMEBb9S2WMjEibTNWhsRJIA+vwNVEiXTE5iXs/wezV66oFLfp9NZGYW+Gk19J2+bCT6Ye2w6LDYdgzKMUabk595eLBCXANz9HUpWbATq9vqXVx9XDg+Pc9Xp4+bsS005SVM/BJBM4687WUuf+Uj9dEi8aDNaPxtpbDxcG1THTImUMZq4UCaaNYpsVqraNyKLJXDYsFZ/5jl7bLRtO88t7P3xZaAxhb5OdPMXqsSkp1WCieG8jXm1U99+blvLlXzPCS+M93VnJCiK+09LfaSaBAVBomyDgJua8dfUzR7ga34IvR2Nvj+A9heJ6lsl1KG4NkI1032Cnff1m1wof2B9oHJK4bi6JkEdSqeNeiuo6QoZZincoc73/TH9SXF8sCE7XyuYyW8WSgbGFCjPV0ihLKhdPs08Tx82fYAkLLc4I2wdl4apY7GU5lHRFzRWJep7Ww3wbeA3qmd59/86P4xuNaqDpygXt6M85glSBHOCGgJDnt+pN9bK7HApMguX6+06RZNjzVmcZJ+wcUrJ9//bpRNxNuKpNl9uFds+S9tdx7LaM5ZkIrPj6nIU9mnbFtVbs9s/uLgl8MVczAwet+iOEzzBlYW7RCMgE6gyNLeq6+1tIx4dpgZnd0DksJS5f+JNDpwwcPNXaaVspq1fbQajOrJgK0ofKtJ1Ne90L6VO4MOl5S886p7u6xo7OLjG8TGL+HU1JXGJgppg4nNbNJ5nlzSpuPYy21JUEcUA94PoFiZfjZue+QnyQ80ekOuZVkxx4g+cvhJfHgNl4hy1/a6+RKcKlar/J29y//EztlbVPHVUeQ1zX86eQVAjR/M3dA9w4W8LfaXp4EgM85wOWasli837PzVMOnsLzR+k3o75/lRPAJSE1xAKQzEi5v10ke+VBvRt1cwQRMd+U5mLCTGVd6XiZtgBG5cDi0w22GKcVNvHiu5LQbZEDVtz0onn7k5+heuKXVsZtSzilkLRAUmjMXEMB3J9YC50XBxPiz53SC+EhnPl9WsKCv92SM/OFFIMJZYfl0WW8tIO3UxYcwdMAj7FSmgrsZ2aAZO03BOhP1bNNZItyXYQFTpC3SG1VuPDqH9GkiCDmE+JwxyIVSO5siDErAOpEXFgjy6PQtOVDj+s6e1r8heWVvmZnTciuf4EiNZzCAd7SOMhXERIOlsHIMG399i9aLTy3m2hRLZjJVDNLS53iGIK11dPqQt0zBDyg6qc7YqkDm2M5Ve6dCWCaCbTXX2rToaIgz6+zh4lYUi/+6nqcFMAkQJKHYLK0wYk5N9szV6xihDbDDFr45lN1K4aCXBq/FitPSud9gLt5ZVn+ZqGX7cwm2z5EGMgfFpIFyhGGuDPmso6TItTMwny+7uPnLCf4W6goFQFV0oQSsc9VfMmVLcLr6ZetDZbaSFTLqnSO/bIPjA3/zAUoqgGFAEQS4IhuMzEp2I3jJzbzkk/IEmyax+rhZTwd6f+CGtwPixu8IvzACquPWPREu9ZvGkUzpRwvRRuaNN6cr0W1wWits9ICdYJ7ltbgMiSL3sTPeufgNcVqMVWFkCPDH4jG2jA0XcVgQj62Cb29v9f/z/+2KbYvIv/zzjpQAPkliaVDzNrW57TZ/ZOyZD0nlfMmAIBIAGAI0D3k/mdN4xr9v85ZbZbbqfH2jGd5hUqNZWwl5SPfoGmfElmazUIeNL1j/mkF7VNAzTq4jNt8JoQ11NQOcmhprXoxSxfRGJ9LDEOAQ+dmxAQH90iti9e2u/MoeuaGcDTHoC+xsmEeWmxEKefQuIzHbpw5Tc5cEocboAD09oipWQhtTO1wivf/O+DRe2rpl/E9wlrzBorjJsOeG1B/XPW4EaJEFdNlECEZga5ZoGRHXgYouGRuVkm8tDESiEyFNo+3s5M5puSdTyUL2llnINVHEt91XUNW4ewdMgJ4boJfEyt/iY5WXqbA+A2Fkt5Z0lutiWhe9nZIyIUjyXDC3UsaG1t+eNx6z4W/OYoTB7A6x+dNSTOi9AInctbESqm5gvOLww7OWXPrmHwVZasrl4eD113pm+JtT7JVOvnCXqdzzdTRHgJ0PiGTFYW5Gvt9R9LD6Lzfs0v/TZZHSmyVNq7viIHE6DBK7Qp07Iz55EM8SYtQvZf/obBniTWi5C2/ovHfw4VndkE5XYdjOhCMRjDeOEfXeN/CwfGduiUIfsoFeUxXeQXba7c7972XNv8w+dTjjUM0QeNAReW+J014dKAD/McQYXT7c0GQPIkn3Ll6R7gGjuiQoZD0TEeEqQpKoZ15g/0OPQI17QiSv9AUROa/V/TQN3dvLArec3RrsYlvBm1b8LWzltdugsC50lNKYLEp2a+ZZYqPejULRlOJh5zj/LVMyTDvwKhMxxwuDkxJ1QpoNI0OTWLom4Z71SNzI9TV1iXJrIu9Wcnd+MCaAw8o1jSXd94YU/1gnkrC9BUEOtQvEIQ7g0i6h+KL2JKk8Ydl7HruvgWMSAmNe+LshGhV4qnWHhO9/RIPQzY1tHRj2VqOyNsDpK0cww+56AdDC4gsWwY0XxoucIWIqs/GcwnWqlaT0KPr8mbK5U94/301i1WLt4YINTVvCFBrFZbIbY8eycOdeJ2teD5IfPLCRg7jjcFTwlMFNl9zdh/o3E/hHPwj7BWg0MU09pPrBLbrCgm54A6H+I6v27+jL5gkjWg/iYdks9jbfVP5y/n0dlgWEMlKasl7JvFZd56LfybW1eeaVO0gxTfXZwD8G4SI116yx7UKVRgui6Ya1YpixqXeNLc8IxtAwCU5IhwQgn+NqHnRaDv61CxKhOq4pOX7M6pkA+Pmpd4j1vn6ACUALoLLc4vpXci8VidLxzm7qFBe7s+quuJs6ETYmnpgS3LwSZxPIltgBDXz8M1k/W2ySNv2f9/NPhxLGK2D21dkHeSGmenRT3Yqcdl0m/h3OYr8V+lXNYGf8aCCpd4bWjE4QIPj7vUKN4Nrfs7ML6Y2OyS830JCnofg/k7lpFpt4SqZc5HGg1HCOrHvOdC8bP6FGDbE/VV0mX4IakzbdS/op+Kt3G24/8QbBV7y86sGSQ/vZzU8FXs7u6jIvwchsEP2BpIhW3G8uWNwa3HmjfH/ZjhhCWvluAcF+nMf14ClKg5hGgtPLJ98ueNAkc5Hs2WZlk2QHvfreCK1CCGO6nMZVSb99VM/ajr8WHTte9JSmkXq/i/U943HEbdzW6Re/S88dKgg8pGOLlAeNiqrcLkUR3/aClFpMXcOUP3rmETcWSfMXZE3TUOi8i+fqRnTYLflVx/Vb/6GJ7eIRZUA6k3RYR3iFSK9c4iDdNwJuZL2FKz/IK5VimcNWEqdXjSoxSgmF0UPlDoUlNrPcM7ftmA8Y9gKiqKEHuWN+AZRIwtVSxye2Kf8rM3lhJ5XcBXU9n4v0Oy1RU2M+4qM8AQPVwse8ErNSob5oFPWxuqZnVzo1qB/IBxkM3EVUKFUUlO3e51259GgNcJbCmlvrdjtoTW7rChm1wyCKzpCTwozUUEOIcWLneRLgMXh+SjGSFkAllzbGS5HK7LlfCMRNRDSvbQPjcXaenNYxCvu2Qyznz6StuxVj66SgI0T8B6/sfHAJYZaZ78thjOSIFumNWLQbeZixDCCC+v0YBtkxiBB3jefHqZ/dFHU+crbj6OvS1x/JDD7vlm7zOVPwpUC01nhxZuY/63E7g");for(let[t,n]of(o=new Map(read_sorted_arrays(e).flatMap((e,t)=>e.map(e=>[e,t+1<<24]))),i=new Set(read_sorted(e)),s=new Map,l=new Map,read_mapped(e))){if(!i.has(t)&&2==n.length){let[e,o]=n,i=l.get(e);i||(i=new Map,l.set(e,i)),i.set(o,t)}s.set(t,n.reverse())}}();let t=[],n=[],c=!1;function add(e){let n=o.get(e);n&&(c=!0,e|=n),t.push(e)}for(let o of e)for(;;){if(o<128)t.push(o);else if(is_hangul(o)){let e=o-44032,t=e/588|0,n=e%588/28|0,i=e%28;add(4352+t),add(4449+n),i>0&&add(4519+i)}else{let e=s.get(o);e?n.push(...e):add(o)}if(!n.length)break;o=n.pop()}if(c&&t.length>1){let e=unpack_cc(t[0]);for(let n=1;n0&&i>=e)0==e?(t.push(o,...n),n.length=0,o=c):n.push(c),i=e;else{let s=function(e,t){if(e>=4352&&e<4371&&t>=4449&&t<4470)return 44032+(e-4352)*588+(t-4449)*28;if(is_hangul(e)&&t>4519&&t<4547&&(e-44032)%28==0)return e+(t-4519);{let n=l.get(e);return n&&(n=n.get(t))?n:-1}}(o,c);s>=0?o=s:0==i&&0==e?(t.push(o),o=c):(n.push(c),i=e)}}return o>=0&&t.push(o,...n),t}(decomposed(e))}let Array_from=e=>Array.from(e);function group_has_cp(e,t){return e.P.has(t)||e.Q.has(t)}let Emoji=class Emoji extends Array{get is_emoji(){return!0}};function init(){let e,t;if(c)return;let n=read_compressed_payload("AEEUdwmgDS8BxQKKAP4BOgDjATAAngDUAIMAoABoAOAAagCOAEQAhABMAHIAOwA9ACsANgAmAGIAHgAuACgAJwAXAC0AGgAjAB8ALwAUACkAEgAeAAkAGwARABkAFgA5ACgALQArADcAFQApABAAHgAiABAAGgAeABMAGAUhBe8BFxREN8sF2wC5AK5HAW8ArQkDzQCuhzc3NzcBP68NEfMABQdHBuw5BV8FYAA9MzkI9r4ZBg7QyQAWA9CeOwLNCjcCjqkChuA/lm+RAsXTAoP6ASfnEQDytQFJAjWVCkeXAOsA6godAB/cwdAUE0WlBCN/AQUCQRjFD/MRBjHxDQSJbw0jBzUAswBxme+tnIcAYwabAysG8QAjAEMMmxcDqgPKQyDXCMMxA7kUQwD3NXOrAKmFIAAfBC0D3x4BJQDBGdUFAhEgVD8JnwmQJiNWYUzrg0oAGwAUAB0AFnNcACkAFgBP9h3gPfsDOWDKneY2ChglX1UDYD30ABsAFAAdABZzIGRAnwDD8wAjAEEMzRbDqgMB2sAFYwXqAtCnAsS4AwpUJKRtFHsadUz9AMMVbwLpABM1NJEX0ZkCgYMBEyMAxRVvAukAEzUBUFAtmUwSAy4DBTER33EftQHfSwB5MxJ/AjkWKQLzL8E/cwBB6QH9LQDPDtO9ASNriQC5DQANAwCK21EFI91zHwCoL9kBqQcHBwcHKzUDowBvAQohPvU3fAQgHwCyAc8CKQMA5zMSezr7ULgFmDp/LzVQBgEGAi8FYQVgt8AFcTtlQhpCWEmfe5tmZ6IAExsDzQ8t+X8rBKtTAltbAn0jsy8Bl6utPWMDTR8Ei2kRANkDBrNHNysDBzECQWUAcwFpJ3kAiyUhAJ0BUb8AL3EfAbfNAz81KUsFWwF3YQZtAm0A+VEfAzEJDQBRSQCzAQBlAHsAM70GD/v3IZWHBwARKQAxALsjTwHZAeMPEzmXgIHwABIAGQA8AEUAQDt3gdvIEGcQZAkGTRFMdEIVEwK0D64L7REdDNkq09PgADSxB/MDWwfzA1sDWwfzB/MDWwfzA1sDWwNbA1scEvAi28gQZw9QBHUFlgWTBN4IiyZREYkHMAjaVBV0JhxPA00BBCMtSSQ7mzMTJUpMFE0LCAQ2SmyvfUADTzGzVP2QqgPTMlc5dAkGHnkSqAAyD3skNb1OhnpPcagKU0+2tYdJak5vAsY6sEAACikJm2/Dd1YGRRAfJ6kQ+ww3AbkBPw3xS9wE9QY/BM0fgRkdD9GVoAipLeEM8SbnLqWAXiP5KocF8Uv4POELUVFsD10LaQnnOmeBUgMlAREijwrhDT0IcRD3Cs1vDekRSQc9A9lJngCpBwULFR05FbkmFGKwCw05ewb/GvoLkyazEy17AAXXGiUGUQEtGwMA0y7rhbRaNVwgT2MGBwspI8sUrFAkDSlAu3hMGh8HGSWtApVDdEqLUToelyH6PEENai4XUYAH+TwJGVMLhTyiRq9FEhHWPpE9TCJNTDAEOYMsMyePCdMPiQy9fHYBXQklCbUMdRM1ERs3yQg9Bx0xlygnGQglRplgngT7owP3E9UDDwVDCUUHFwO5HDETMhUtBRGBKNsC9zbZLrcCk1aEARsFzw8pH+MQVEfkDu0InwJpA4cl7wAxFSUAGyKfCEdnAGOP3FMJLs8Iy2pwI3gDaxTrZRF3B5UOWwerHDcVwxzlcMxeD4YMKKezCV8BeQmdAWME5wgNNV+MpCBFZ1eLXBifIGVBQ14AAjUMaRWjRMGHfAKPD28SHwE5AXcHPQ0FAnsR8RFvEJkI74YINbkz/DopBFMhhyAVCisDU2zSCysm/Qz8bQGnEmYDEDRBd/Jnr2C6KBgBBx0yyUFkIfULlk/RDKAaxRhGVDIZ6AfDA/ca9yfuQVsGAwOnBxc6UTPyBMELbQiPCUMATQ6nGwfbGG4KdYzUATWPAbudA1uVhwJzkwY7Bw8Aaw+LBX3pACECqwinAAkA0wNbAD0CsQehAB0AiUUBQQMrMwEl6QKTA5cINc8BmTMB9y0EH8cMGQD7O25OAsO1AoBuZqYF4VwCkgJNOQFRKQQJUktVA7N15QDfAE8GF+NLARmvTs8e50cB43MvAMsA/wAJOQcJRQHRAfdxALsBYws1Caa3uQFR7S0AhwAZbwHbAo0A4QA5AIP1AVcAUQVd/QXXAlNNARU1HC9bZQG/AyMBNwERAH0Gz5GpzQsjBHEH1wIQHxXlAu8yB7kFAyLjE9FCyQK94lkAMhoKPAqrCqpgX2Q3CjV2PVQAEh+sPss/UgVVO1c7XDtXO1w7VztcO1c7XDtXO1wDm8Pmw+YKcF9JYe8Mqg3YRMw6TRPfYFVgNhPMLbsUxRXSJVoZQRrAJwkl6FUNDwgt12Y0CDA0eRfAAEMpbINFY4oeNApPHOtTlVT8LR8AtUumM7MNsBsZREQFS3XxYi4WEgomAmSFAmJGX1GzAV83JAKh+wJonAJmDQKfiDgfDwJmPwJmKgRyBIMDfxcDfpY5Cjl7GzmGOicnAmwhAjI6OA4CbcsCbbLzjgM3a0kvAWsA4gDlAE4JB5wMkQECD8YAEbkCdzMCdqZDAnlPRwJ4viFg30WyRvcCfEMCeswCfQ0CfPRIBEiBZygALxlJXEpfGRtK0ALRBQLQ0EsrA4hTA4fqRMmRNgLypV0HAwOyS9JMMSkH001QTbMCi0MCitzFHwshR2sJuwKOOwKOYESbhQKO3QKOYHxRuFM5AQ5S2FSJApP/ApMQAO0AIFUiVbNV1AosHymZijLleGpFPz0Cl6MC77ZYJawAXSkClpMCloCgAK1ZsFoNhVEAPwKWuQKWUlxIXNUCmc8CmWhczl0LHQKcnznGOqECnBoCn58CnryOACETNS4TAp31Ap6WALlBYThh8wKe1wKgcgGtAp6jIwKeUqljzGQrKS8CJ7MCJoICoP8CoFDbAqYzAqXSAqgDAIECp/ZogGi1AAdNaiBq1QKs5wKssgKtawKtBgJXIQJV4AKx5dsDH1JsmwKywRECsuwbbORtZ21MYwMl0QK2YD9DbpQDKUkCuGICuUsZArkue3A6cOUCvR0DLbYDMhUCvoxyBgMzdQK+HnMmc1MCw88CwwhzhnRPOUl05AM8qwEDPJ4DPcMCxYACxksCxhSNAshtVQLISALJUwLJMgJkoQLd1nh9ZXiyeSlL1AMYp2cGAmH4GfeVKHsPXpZevxUCz28Cz3AzT1fW9xejAMqxAs93AS3uA04Wfk8JAtwrAtuOAtJTA1JgA1NjAQUDVZCAjUMEzxrxZEl5A4LSg5EC2ssC2eKEFIRNp0ADhqkAMwNkEoZ1Xf0AWQLfaQLevHd7AuIz7RgB8zQrAfSfAfLWiwLr9wLpdH0DAur9AuroAP1LAb0C7o0C66CWrpcHAu5DA4XkmH1w5HGlAvMHAG0DjhqZlwL3FwORcgOSiwL3nAL53QL4apogmq+/O5siA52HAv7+AR8APZ8gAZ+3AwWRA6ZuA6bdANXJAwZuoYyiCQ0DDE0BEwEjB3EGZb1rCQC/BG/DFY8etxEAG3k9ACcDNxJRA42DAWcrJQCM8wAlAOanC6OVCLsGI6fJBgCvBRnDBvElRUYFFoAFcD9GSDNCKUK8X3kZX8QAls0FOgCQVCGbwTsuYDoZutcONxjOGJHJ/gVfBWAFXwVgBWsFYAVfBWAFXwVgBV8FYAVfBWBOHQjfjW8KCgoKbF7xMwTRA7kGN8PDAMMEr8MA70gxFroFTj5xPnhCR0K+X30/X/AAWBkzswCNBsxzzASm70aCRS4rDDMeLz49fnXfcsH5GcoscQFz13Y4HwVnBXLJycnACNdRYwgICAqEXoWTxgA7P4kACxbZBu21Kw0AjMsTAwkVAOVtJUUsJ1JCuULESUArXy9gPi9AKwnJRQYKTD9LPoA+iT54PnkCkULEUUpDX9NWV3JVEjQAc1w3A3IBE3YnX+g7QiMJb6MKaiszRCUuQrNCxDPMCcwEX9EWJzYREBEEBwIHKn6l33JCNVIfybPJtAltydPUCmhBZw/tEKsZAJOVJU1CLRuxbUHOQAo7P0s+eEJHHA8SJVRPdGM0NVrpvBoKhfUlM0JHHGUQUhEWO1xLSj8MO0ucNAqJIzVCRxv9EFsqKyA4OQgNj2nwZgp5ZNFgE2A1K3YHS2AhQQojJmC7DgpzGG1WYFUZCQYHZO9gHWCdYIVgu2BTYJlwFh8GvRbcXbG8YgtDHrMBwzPVyQonHQgkCyYBgQJ0Ajc4nVqIAwGSCsBPIgDsK3SWEtIVBa5N8gGjAo+kVwVIZwD/AEUSCDweX4ITrRQsJ8K3TwBXFDwEAB0TvzVcAtoTS20RIwDgVgZ9BBImYgA5AL4Coi8LFnezOkCnIQFjAY4KBAPh9RcGsgZSBsEAJctdsWIRu2kTkQstRw7DAcMBKgpPBGIGMDAwKCYnKTQaLg4AKRSVAFwCdl+YUZ0JdicFD3lPAdt1F9ZZKCGxuE3yBxkFVGcA/wBFEgiCBwAOLHQSjxOtQDg1z7deFRMAZ8QTAGtKb1ApIiPHADkAvgKiLy1DFtYCmBiDAlDDWNB0eo7fpaMO/aEVRRv0ATEQZBIODyMEAc8JQhCbDRgzFD4TAEMAu9YBCgCsAOkAm5I3ABwAYxvONnR+MhXJAxgKQyxL2+kkJhMbhQKDBMkSsvF0AD9BNQ6uQC7WqSQHwxEAEEIu1hkhAH2z4iQPwyJPHNWpdyYBRSpnJALzoBAEVPPsH20MxA0CCEQKRgAFyAtFAlMNwwjEDUQJRArELtapMg7DDZgJIw+TGukEIwvDFkMAqAtDEMMMBhioe+QAO3MMRAACrgnEBSPY9Q0FDnbSBoMAB8MSYxkSxAEJAPIJAAB8FWMOFtMc/HcXwxhDAC7DAvOowwAewwJdKDKHAAHDAALrFUQVwwAbwyvzpWMWv8wA/ABpAy++bcYDUKPD0KhDCwKmJ1MAAmMA5+UZwxAagwipBRL/eADfw6fDGOMCGsOjk3l6BwOpo4sAEsMOGxMAA5sAbcMOAAvDp0MJGkMDwgipnNIPAwfIqUMGAOGDAAPzABXDAAcDAAnDAGmTABrDAA7DChjDjnEWAwABYwAOcwAuUyYABsMAF8MIKQANUgC6wy4AA8MADqMq8wCyYgAcIwAB8wqpAAXOCx0V4wAHowBCwwEKAGnDAAuDAB3DAAjDCakABdIAbqcZ3QCZCCkABdIAAAFDAAfjAB2jCCkABqIACYMAGzMAbSMA5sOIAAhjAAhDABTDBAkpAAbSAOOTAAlDC6kOzPtnAAdDAG6kQFAATwAKwwwAA0MACbUDPwAHIwAZgwACE6cDAAojAApDAAoDp/MGwwAJIwADEwAQQwgAFEMAEXMAD5MADfMADcMAGRMOFiMAFUMAbqMWuwHDAMIAE0MLAGkzEgDhUwACQwAEWgAXgwUjAAbYABjDBSYBgzBaAEFNALcQBxUMegAwMngBrA0IZgJ0KxQHBREPd1N0ZzKRJwaIHAZqNT4DqQq8BwngAB4DAwt2AX56T1ocKQNXAh1GATQGC3tOxYNagkgAMQA5CQADAQEAWxLjAIOYNAEzAH7tFRk6TglSAF8NAAlYAQ+S1ACAQwQorQBiAN4dAJ1wPyeTANVzuQDX3AIeEMp9eyMgXiUAEdkBkJizKltbVVAaRMqRAAEAhyQ/SDEz6BmfVwB6ATEsOClKIRcDOF0E/832AFNt5AByAnkCRxGCOs94NjXdAwINGBonDBwPALW2AwICAgAAAAAAAAYDBQMDARrUAwAtAAAAAgEGBgYGBgYFBQUFBQUEBQYHCAkEBQUFBQQAAAICAAAAIgCNAJAAlT0A6gC7ANwApEQAwgCyAK0AqADuAKYA2gCjAOcBCAEDAMcAgQBiANIA1AEDAN4A8gCQAKkBMQDqAN8A3AsBCQ8yO9ra2tq8xuLT1tRJOB0BUgFcNU0BWgFpAWgBWwFMUUlLbhMBUxsNEAs6PhMOACcUKy0vMj5AQENDQ0RFFEYGJFdXV1dZWVhZL1pbXVxcI2NnZ2ZoZypsbnZ1eHh4eHh4enp6enp6enp6enp8fH18e2IARPIASQCaAHgAMgBm+ACOAFcAVwA3AnbvAIsABfj4AGQAk/IAnwBPAGIAZP//sACFAIUAaQBWALEAJAC2AIMCQAJDAPwA5wD+AP4A6AD/AOkA6QDoAOYALwJ7AVEBQAE+AVQBPgE+AT4BOQE4ATgBOAEcAVgXADEQCAEAUx8SHgsdHhYAjgCWAKYAUQBqIAIxAHYAbwCXAxUDJzIDIUlGTzEAkQJPAMcCVwKkAMAClgKWApYClgKWApYCiwKWApYClgKWApYClgKVApUCmAKgApcClgKWApQClAKUApQCkgKVAnUB1AKXAp8ClgKWApUeAIETBQD+DQOfAmECOh8BVBg9AuIZEjMbAU4/G1WZAXusRAFpYQEFA0FPAQYAmTEeIJdyADFoAHEANgCRA5zMk/C2jGINwjMWygIZCaXdfDILBCs5dAE7YnQBugDlhoiHhoiGiYqKhouOjIaNkI6Ij4qQipGGkoaThpSSlYaWhpeKmIaZhpqGm4aci52QnoqfhuIC4XTpAt90AIp0LHSoAIsAdHQEQwRABEIERQRDBEkERgRBBEcESQRIBEQERgRJAJ5udACrA490ALxuAQ10ANFZdHQA13QCFHQA/mJ0AP4BIQD+APwA/AD9APwDhGZ03ASMK23HAP4A/AD8AP0A/CR0dACRYnQA/gCRASEA/gCRAvQA/gCRA4RmdNwEjCttxyR0AP9idAEhAP4A/gD8APwA/QD8AP8A/AD8AP0A/AOEZnTcBIwrbcckdHQAkWJ0ASEA/gCRAP4AkQL0AP4AkQOEZnTcBIwrbcckdAJLAT50AlIBQXQCU8l0dAJfdHQDpgL0A6YDpgOnA6cDpwOnA4RmdNwEjCttxyR0dACRYnQBIQOmAJEDpgCRAvQDpgCRA4RmdNwEjCttxyR0BDh0AJEEOQCRDpU5dSgCADR03gV2CwArdAEFAM5iCnR0AF1iAAYcOgp0dACRCnQAXAEIwWZ0CnRmdHQAkWZ0CnRmdEXgAFF03gp0dEY0tlT2u3SOAQTwscwhjZZKrhYcBSfFp9XNbKiVDOD2b+cpe4/Z17mQnbtzzhaeQtE2GGj0IDNTjRUSyTxxw/RPHW/+vS7d1NfRt9z9QPZg4X7QFfhCnkvgNPIItOsC2eV6hPannZNHlZ9xrwZXIMOlu3jSoQSq78WEjwLjw1ELSlF1aBvfzwk5ZX7AUvQzjPQKbDuQ+sm4wNOp4A6AdVuRS0t1y/DZpg4R6m7FNjM9HgvW7Bi88zaMjOo6lM8wtBBdj8LP4ylv3zCXPhebMKJc066o9sF71oFW/8JXu86HJbwDID5lzw5GWLR/LhT0Qqnp2JQxNZNfcbLIzPy+YypqRm/lBmGmex+82+PisxUumSeJkALIT6rJezxMH+CTJmQtt5uwTVbL3ptmjDUQzlSIvWi8Tl7ng1NpuRn1Ng4n14Qc+3Iil7OwkvNWogLSPkn3pihIFytyIGmMhOe3n1tWsuMy9BdKyqF4Z3v2SgggTL9KVvMXPnCbRe+oOuFFP3HejBG/w9gvmfNYvg6JuWia2lcSSN1uIjBktzoIazOHPJZ7kKHPz8mRWVdW3lA8WGF9dQF6Bm673boov3BUWDU2JNcahR23GtfHKLOz/viZ+rYnZFaIznXO67CYEJ1fXuTRpZhYZkKe54xeoagkNGLs+NTZHE0rX45/XvQ2RGADX6vcAvdxIUBV27wxGm2zjZo4X3ILgAlrOFheuZ6wtsvaIj4yLY7qqawlliaIcrz2G+c3vscAnCkCuMzMmZvMfu9lLwTvfX+3cVSyPdN9ZwgDZhfjRgNJcLiJ67b9xx8JHswprbiE3v9UphotAPIgnXVIN5KmMc0piXhc6cChPnN+MRhG9adtdttQTTwSIpl8I4/j//d3sz1326qTBTpPRM/Hgh3kzqEXs8ZAk4ErQhNO8hzrQ0DLkWMA/N+91tn2MdOJnWC2FCZehkQrwzwbKOjhvZsbM95QoeL9skYyMf4srVPVJSgg7pOLUtr/n9eT99oe9nLtFRpjA9okV2Kj8h9k5HaC0oivRD8VyXkJ81tcd4fHNXPCfloIQasxsuO18/46dR2jgul/UIet2G0kRvnyONMKhHs6J26FEoqSqd+rfYjeEGwHWVDpX1fh1jBBcKGMqRepju9Y00mDVHC+Xdij/j44rKfvfjGinNs1jO/0F3jB83XCDINN/HB84axlP+3E/klktRo+vl3U/aiyMJbIodE1XSsDn6UAzIoMtUObY2+k/4gY/l+AkZJ5Sj2vQrkyLm3FoxjhDX+31UXBFf9XrAH31fFqoBmDEZvhvvpnZ87N+oZEu7U9O/nnk+QWj3x8uyoRbEnf+O5UMr9i0nHP38IF5AvzrBW8YWBUR0mIAzIvndQq9N3v/Jto3aPjPXUPl8ASdPPyAp7jENf8bk7VMM9ol9XGmlBmeDMuGqt+WzuL6CXAxXjIhCPM5vACchgMJ/8XBGLO/D1isVvGhwwHHr1DLaI5mn2Jr/b1pUD90uciDaS8cXNDzCWvNmT/PhQe5e8nTnnnkt8Ds/SIjibcum/fqDhKopxAY8AkSrPn+IGDEKOO+U3XOP6djFs2H5N9+orhOahiQk5KnEUWa+CzkVzhp8bMHRbg81qhjjXuIKbHjSLSIBKWqockGtKinY+z4/RdBUF6pcc3JmnlxVcNgrI4SEzKUZSwcD2QCyxzKve+gAmg6ZuSRkpPFa6mfThu7LJNu3H5K42uCpNvPAsoedolKV/LHe/eJ+BbaG5MG0NaSGVPRUmNFMFFSSpXEcXwbVh7UETOZZtoVNRGOIbbkig3McEtR68cG0RZAoJevWYo7Dg/lZ1CQzblWeUvVHmr8fY4Nqd9JJiH/zEX24mJviH60fAyFr0A3c4bC1j3yZU60VgJxXn8JgJXLUIsiBnmKmMYz+7yBQFBvqb2eYnuW59joZBf56/wXvWIR4R8wTmV80i1mZy+S4+BUES+hzjk0uXpC///z/IlqHZ1monzlXp8aCfhGKMti73FI1KbL1q6IKO4fuBuZ59gagjn5xU79muMpHXg6S+e+gDM/U9BKLHbl9l6o8czQKl4RUkJJiqftQG2i3BMg/TQlUYFkJDYBOOvAugYuzYSDnZbDDd/aSd9x0Oe6F+bJcHfl9+gp6L5/TgA+BdFFovbfCrQ40s5vMPw8866pNX8zyFGeFWdxIpPVp9Rg1UPOVFbFZrvaFq/YAzHQgqMWpahMYfqHpmwXfHL1/kpYmGuHFwT55mQu0dylfNuq2Oq0hTMCPwqfxnuBIPLXfci4Y1ANy+1CUipQxld/izVh16WyG2Q0CQQ9NqtAnx1HCHwDj7sYxOSB0wopZSnOzxQOcExmxrVTF2BkOthVpGfuhaGECfCJpJKpjnihY+xOT2QJxN61+9K6QSqtv2Shr82I3jgJrqBg0wELFZPjvHpvzTtaJnLK6Vb97Yn933koO/saN7fsjwNKzp4l2lJVx2orjCGzC/4ZL4zCver6aQYtC5sdoychuFE6ufOiog+VWi5UDkbmvmtah/3aArEBIi39s5ILUnlFLgilcGuz9CQshEY7fw2ouoILAYPVT/gyAIq3TFAIwVsl+ktkRz/qGfnCDGrm5gsl/l9QdvCWGsjPz3dU7XuqKfdUrr/6XIgjp4rey6AJBmCmUJMjITHVdFb5m1p+dLMCL8t55zD42cmftmLEJC0Da04YiRCVUBLLa8D071/N5UBNBXDh0LFsmhV/5B5ExOB4j3WVG/S3lfK5o+V6ELHvy6RR9n4ac+VsK4VE4yphPvV+kG9FegTBH4ZRXL2HytUHCduJazB/KykjfetYxOXTLws267aGOd+I+JhKP//+VnXmS90OD/jvLcVu0asyqcuYN1mSb6XTlCkqv1vigZPIYwNF/zpWcT1GR/6aEIRjkh0yhg4LXJfaGobYJTY4JI58KiAKgmmgAKWdl5nYCeLqavRJGQNuYuZtZFGx+IkI4w4NS2xwbetNMunOjBu/hmKCI/w7tfiiyUd//4rbTeWt4izBY8YvGIN6vyKYmP/8X8wHKCeN+WRcKM70+tXKNGyevU9H2Dg5BsljnTf8YbsJ1TmMs74Ce2XlHisleguhyeg44rQOHZuw/6HTkhnnurK2d62q6yS7210SsAIaR+jXMQA+svkrLpsUY+F30Uw89uOdGAR6vo4FIME0EfVVeHTu6eKicfhSqOeXJhbftcd08sWEnNUL1C9fnprTgd83IMut8onVUF0hvqzZfHduPjbjwEXIcoYmy+P6tcJZHmeOv6VrvEdkHDJecjHuHeWANe79VG662qTjA/HCvumVv3qL+LrOcpqGps2ZGwQdFJ7PU4iuyRlBrwfO+xnPyr47s2cXVbWzAyznDiBGjCM3ksxjjqM62GE9C8f5U38kB3VjtabKp/nRdvMESPGDG90bWRLAt1Qk5DyLuazRR1YzdC1c+hZXvAWV8xA72S4A8B67vjVhbba3MMop293FeEXpe7zItMWrJG/LOH9ByOXmYnNJfjmfuX9KbrpgLOba4nZ+fl8Gbdv/ihv+6wFGKHCYrVwmhFC0J3V2bn2tIB1wCc1CST3d3X2OyxhguXcs4sm679UngzofuSeBewMFJboIQHbUh/m2JhW2hG9DIvG2t7yZIzKBTz9wBtnNC+2pCRYhSIuQ1j8xsz5VvqnyUIthvuoyyu7fNIrg/KQUVmGQaqkqZk/Vx5b33/gsEs8yX7SC1J+NV4icz6bvIE7C5G6McBaI8rVg56q5QBJWxn/87Q1sPK4+sQa8fLU5gXo4paaq4cOcQ4wR0VBHPGjKh+UlPCbA1nLXyEUX45qZ8J7/Ln4FPJE2TdzD0Z8MLSNQiykMMmSyOCiFfy84Rq60emYB2vD09KjYwsoIpeDcBDTElBbXxND72yhd9pC/1CMid/5HUMvAL27OtcIJDzNKpRPNqPOpyt2aPGz9QWIs9hQ9LiX5s8m9hjTUu/f7MyIatjjd+tSfQ3ufZxPpmJhTaBtZtKLUcfOCUqADuO+QoH8B9v6U+P0HV1GLQmtoNFTb3s74ivZgjES0qfK+8RdGgBbcCMSy8eBvh98+et1KIFqSe1KQPyXULBMTsIYnysIwiZBJYdI20vseV+wuJkcqGemehKjaAb9L57xZm3g2zX0bZ2xk/fU+bCo7TlnbW7JuF1YdURo/2Gw7VclDG1W7LOtas2LX4upifZ/23rzpsnY/ALfRgrcWP5hYmV9VxVOQA1fZvp9F2UNU+7d7xRyVm5wiLp3/0dlV7vdw1PMiZrbDAYzIVqEjRY2YU03sJhPnlwIPcZUG5ltL6S8XCxU1eYS5cjr34veBmXAvy7yN4ZjArIG0dfD/5UpBNlX1ZPoxJOwyqRi3wQWtOzd4oNKh0LkoTm8cwqgIfKhqqGOhwo71I+zXnMemTv2B2AUzABWyFztGgGULjDDzWYwJUVBTjKCn5K2QGMK1CQT7SzziOjo+BhAmqBjzuc3xYym2eedGeOIRJVyTwDw37iCMe4g5Vbnsb5ZBdxOAnMT7HU4DHpxWGuQ7GeiY30Cpbvzss55+5Km1YsbD5ea3NI9QNYIXol5apgSu9dZ8f8xS5dtHpido5BclDuLWY4lhik0tbJa07yJhH0BOyEut/GRbYTS6RfiTYWGMCkNpfSHi7HvdiTglEVHKZXaVhezH4kkXiIvKopYAlPusftpE4a5IZwvw1x/eLvoDIh/zpo9FiQInsTb2SAkKHV42XYBjpJDg4374XiVb3ws4qM0s9eSQ5HzsMU4OZJKuopFjBM+dAZEl8RUMx5uU2N486Kr141tVsGQfGjORYMCJAMsxELeNT4RmWjRcpdTGBwcx6XN9drWqPmJzcrGrH4+DRc7+n1w3kPZwu0BkNr6hQrqgo7JTB9A5kdJ/H7P4cWBMwsmuixAzJB3yrQpnGIq90lxAXLzDCdn1LPibsRt7rHNjgQBklRgPZ8vTbjXdgXrTWQsK5MdrXXQVPp0Rinq3frzZKJ0qD6Qhc40VzAraUXlob1gvkhK3vpmHgI6FRlQZNx6eRqkp0zy4AQlX813fAPtL3jMRaitGFFjo0zmErloC+h+YYdVQ6k4F/epxAoF0BmqEoKNTt6j4vQZNQ2BoqF9Vj53TOIoNmDiu9Xp15RkIgQIGcoLpfoIbenzpGUAtqFJp5W+LLnx38jHeECTJ/navKY1NWfN0sY1T8/pB8kIH3DU3DX+u6W3YwpypBMYOhbSxGjq84RZ84fWJow8pyHqn4S/9J15EcCMsXqrfwyd9mhiu3+rEo9pPpoJkdZqHjra4NvzFwuThNKy6hao/SlLw3ZADUcUp3w3SRVfW2rhl80zOgTYnKE0Hs2qp1J6H3xqPqIkvUDRMFDYyRbsFI3M9MEyovPk8rlw7/0a81cDVLmBsR2ze2pBuKb23fbeZC0uXoIvDppfTwIDxk1Oq2dGesGc+oJXWJLGkOha3CX+DUnzgAp9HGH9RsPZN63Hn4RMA5eSVhPHO+9RcRb/IOgtW31V1Q5IPGtoxPjC+MEJbVlIMYADd9aHYWUIQKopuPOHmoqSkubnAKnzgKHqgIOfW5RdAgotN6BN+O2ZYHkuemLnvQ8U9THVrS1RtLmKbcC7PeeDsYznvqzeg6VCNwmr0Yyx1wnLjyT84BZz3EJyCptD3yeueAyDWIs0L2qs/VQ3HUyqfrja0V1LdDzqAikeWuV4sc7RLIB69jEIBjCkyZedoUHqCrOvShVzyd73OdrJW0hPOuQv2qOoHDc9xVb6Yu6uq3Xqp2ZaH46A7lzevbxQEmfrzvAYSJuZ4WDk1Hz3QX1LVdiUK0EvlAGAYlG3Md30r7dcPN63yqBCIj25prpvZP0nI4+EgWoFG95V596CurXpKRBGRjQlHCvy5Ib/iW8nZJWwrET3mgd6mEhfP4KCuaLjopWs7h+MdXFdIv8dHQJgg1xi1eYqB0uDYjxwVmri0Sv5XKut/onqapC+FQiC2C1lvYJ9MVco6yDYsS3AANUfMtvtbYI2hfwZatiSsnoUeMZd34GVjkMMKA+XnjJpXgRW2SHTZplVowPmJsvXy6w3cfO1AK2dvtZEKTkC/TY9LFiKHCG0DnrMQdGm2lzlBHM9iEYynH2UcVMhUEjsc0oDBTgo2ZSQ1gzkAHeWeBXYFjYLuuf8yzTCy7/RFR81WDjXMbq2BOH5dURnxo6oivmxL3cKzKInlZkD31nvpHB9Kk7GfcfE1t+1V64b9LtgeJGlpRFxQCAqWJ5DoY77ski8gsOEOr2uywZaoO/NGa0X0y1pNQHBi3b2SUGNpcZxDT7rLbBf1FSnQ8guxGW3W+36BW0gBje4DOz6Ba6SVk0xiKgt+q2JOFyr4SYfnu+Ic1QZYIuwHBrgzr6UvOcSCzPTOo7D6IC4ISeS7zkl4h+2VoeHpnG/uWR3+ysNgPcOIXQbv0n4mr3BwQcdKJxgPSeyuP/z1Jjg4e9nUvoXegqQVIE30EHx5GHv+FAVUNTowYDJgyFhf5IvlYmEqRif6+WN1MkEJmDcQITx9FX23a4mxy1AQRsOHO/+eImX9l8EMJI3oPWzVXxSOeHU1dUWYr2uAA7AMb+vAEZSbU3qob9ibCyXeypEMpZ6863o6QPqlqGHZkuWABSTVNd4cOh9hv3qEpSx2Zy/DJMP6cItEmiBJ5PFqQnDEIt3NrA3COlOSgz43D7gpNFNJ5MBh4oFzhDPiglC2ypsNU4ISywY2erkyb1NC3Qh/IfWj0eDgZI4/ln8WPfBsT3meTjq1Uqt1E7Zl/qftqkx6aM9KueMCekSnMrcHj1CqTWWzEzPsZGcDe3Ue4Ws+XFYVxNbOFF8ezkvQGR6ZOtOLU2lQEnMBStx47vE6Pb7AYMBRj2OOfZXfisjJnpTfSNjo6sZ6qSvNxZNmDeS7Gk3yYyCk1HtKN2UnhMIjOXUzAqDv90lx9O/q/AT1ZMnit5XQe9wmQxnE/WSH0CqZ9/2Hy+Sfmpeg8RwsHI5Z8kC8H293m/LHVVM/BA7HaTJYg5Enk7M/xWpq0192ACfBai2LA/qrCjCr6Dh1BIMzMXINBmX96MJ5Hn2nxln/RXPFhwHxUmSV0EV2V0jm86/dxxuYSU1W7sVkEbN9EzkG0QFwPhyHKyb3t+Fj5WoUUTErcazE/N6EW6Lvp0d//SDPj7EV9UdJN+Amnf3Wwk3A0SlJ9Z00yvXZ7n3z70G47Hfsow8Wq1JXcfwnA+Yxa5mFsgV464KKP4T31wqIgzFPd3eCe3j5ory5fBF2hgCFyVFrLzI9eetNXvM7oQqyFgDo4CTp/hDV9NMX9JDHQ/nyHTLvZLNLF6ftn2OxjGm8+PqOwhxnPHWipkE/8wbtyri80Sr7pMNkQGMfo4ZYK9OcCC4ESVFFbLMIvlxSoRqWie0wxqnLfcLSXMSpMMQEJYDVObYsXIQNv4TGNwjq1kvT1UOkicTrG3IaBZ3XdScS3u8sgeZPVpOLkbiF940FjbCeNRINNvDbd01EPBrTCPpm12m43ze1bBB59Ia6Ovhnur/Nvx3IxwSWol+3H2qfCJR8df6aQf4v6WiONxkK+IqT4pKQrZK/LplgDI/PJZbOep8dtbV7oCr6CgfpWa8NczOkPx81iSHbsNhVSJBOtrLIMrL31LK9TqHqAbAHe0RLmmV806kRLDLNEhUEJfm9u0sxpkL93Zgd6rw+tqBfTMi59xqXHLXSHwSbSBl0EK0+loECOPtrl+/nsaFe197di4yUgoe4jKoAJDXc6DGDjrQOoFDWZJ9HXwt8xDrQP+7aRwWKWI1GF8s8O4KzxWBBcwnl3vnl1Oez3oh6Ea1vjR7/z7DDTrFtqU2W/KAEzAuXDNZ7MY73MF216dzdSbWmUp4lcm7keJfWaMHgut9x5C9mj66Z0lJ+yhsjVvyiWrfk1lzPOTdhG15Y7gQlXtacvI7qv/XNSscDwqkgwHT/gUsD5yB7LdRRvJxQGYINn9hTpodKFVSTPrtGvyQw+HlRFXIkodErAGu9Iy1YpfSPc3jkFh5CX3lPxv7aqjE/JAfTIpEjGb/H7MO0e2vsViSW1qa/Lmi4/n4DEI3g7lYrcanspDfEpKkdV1OjSLOy0BCUqVoECaB55vs06rXl4jqmLsPsFM/7vYJ0vrBhDCm/00A/H81l1uekJ/6Lml3Hb9+NKiLqATJmDpyzfYZFHumEjC662L0Bwkxi7E9U4cQA0XMVDuMYAIeLMPgQaMVOd8fmt5SflFIfuBoszeAw7ow5gXPE2Y/yBc/7jExARUf/BxIHQBF5Sn3i61w4z5xJdCyO1F1X3+3ax+JSvMeZ7S6QSKp1Fp/sjYz6Z+VgCZzibGeEoujryfMulH7Rai5kAft9ebcW50DyJr2uo2z97mTWIu45YsSnNSMrrNUuG1XsYBtD9TDYzQffKB87vWbkM4EbPAFgoBV4GQS+vtFDUqOFAoi1nTtmIOvg38N4hT2Sn8r8clmBCXspBlMBYTnrqFJGBT3wZOzAyJDre9dHH7+x7qaaKDOB4UQALD5ecS0DE4obubQEiuJZ0EpBVpLuYcce8Aa4PYd/V4DLDAJBYKQPCWTcrEaZ5HYbJi11Gd6hjGom1ii18VHYnG28NKpkz2UKVPxlhYSp8uZr367iOmoy7zsxehW9wzcy2zG0a80PBMCRQMb32hnaHeOR8fnNDzZhaNYhkOdDsBUZ3loDMa1YP0uS0cjUP3b/6DBlqmZOeNABDsLl5BI5QJups8uxAuWJdkUB/pO6Zax6tsg7fN5mjjDgMGngO+DPcKqiHIDbFIGudxtPTIyDi9SFMKBDcfdGQRv41q1AqmxgkVfJMnP8w/Bc7N9/TR6C7mGObFqFkIEom8sKi2xYqJLTCHK7cxzaZvqODo22c3wisBCP4HeAgcRbNPAsBkNRhSmD48dHupdBRw4mIvtS5oeF6zeT1KMCyhMnmhpkFAGWnGscoNkwvQ8ZM5lE/vgTHFYL99OuNxdFBxTEDd5v2qLR8y9WkXsWgG6kZNndFG+pO/UAkOCipqIhL3hq7cRSdrCq7YhUsTocEcnaFa6nVkhnSeRYUA1YO0z5itF9Sly3VlxYDw239TJJH6f3EUfYO5lb7bcFcz8Bp7Oo8QmnsUHOz/fagVUBtKEw1iT88j+aKkv8cscKNkMxjYr8344D1kFoZ7/td1W6LCNYN594301tUGRmFjAzeRg5vyoM1F6+bJZ/Q54jN/k8SFd3DxPTYaAUsivsBfgTn7Mx8H2SpPt4GOdYRnEJOH6jHM2p6SgB0gzIRq6fHxGMmSmqaPCmlfwxiuloaVIitLGN8wie2CDWhkzLoCJcODh7KIOAqbHEvXdUxaS4TTTs07Clzj/6GmVs9kiZDerMxEnhUB6QQPlcfqkG9882RqHoLiHGBoHfQuXIsAG8GTAtao2KVwRnvvam8jo1e312GQAKWEa4sUVEAMG4G6ckcONDwRcg1e2D3+ohXgY4UAWF8wHKQMrSnzCgfFpsxh+aHXMGtPQroQasRY4U6UdG0rz1Vjbka0MekOGRZQEvqQFlxseFor8zWFgHek3v29+WqN6gaK5gZOTOMZzpQIC1201LkMCXild3vWXSc5UX9xcFYfbRPzGFa1FDcPfPB/jUEq/FeGt419CI3YmBlVoHsa4KdcwQP5ZSwHHhFJ7/Ph/Rap/4vmG91eDwPP0lDfCDRCLszTqfzM71xpmiKi2HwS4WlqvGNwtvwF5Dqpn6KTq8ax00UMPkxDcZrEEEsIvHiUXXEphdb4GB4FymlPwBz4Gperqq5pW7TQ6/yNRhW8VT5NhuP0udlxo4gILq5ZxAZk8ZGh3g4CqxJlPKY7AQxupfUcVpWT5VItp1+30UqoyP4wWsRo3olRRgkWZZ2ZN6VC3OZFeXB8NbnUrSdikNptD1QiGuKkr8EmSR/AK9Rw+FF3s5uwuPbvHGiPeFOViltMK7AUaOsq9+x9cndk3iJEE5LKZRlWJbKOZweROzmPNVPkjE3K/TyA57Rs68TkZ3MR8akKpm7cFjnjPd/DdkWjgYoKHSr5Wu5ssoBYU4acRs5g2DHxUmdq8VXOXRbunD8QN0LhgkssgahcdoYsNvuXGUK/KXD/7oFb+VGdhqIn02veuM5bLudJOc2Ky0GMaG4W/xWBxIJcL7yliJOXOpx0AkBqUgzlDczmLT4iILXDxxtRR1oZa2JWFgiAb43obrJnG/TZC2KSK2wqOzRZTXavZZFMb1f3bXvVaNaK828w9TO610gk8JNf3gMfETzXXsbcvRGCG9JWQZ6+cDPqc4466Yo2RcKH+PILeKOqtnlbInR3MmBeGG3FH10yzkybuqEC2HSQwpA0An7d9+73BkDUTm30bZmoP/RGbgFN+GrCOfADgqr0WbI1a1okpFms8iHYw9hm0zUvlEMivBRxModrbJJ+9/p3jUdQQ9BCtQdxnOGrT5dzRUmw0593/mbRSdBg0nRvRZM5/E16m7ZHmDEtWhwvfdZCZ8J8M12W0yRMszXamWfQTwIZ4ayYktrnscQuWr8idp3PjT2eF/jmtdhIfcpMnb+IfZY2FebW6UY/AK3jP4u3Tu4zE4qlnQgLFbM19EBIsNf7KhjdbqQ/D6yiDb+NlEi2SKD+ivXVUK8ib0oBo366gXkR8ZxGjpJIDcEgZPa9TcYe0TIbiPl/rPUQDu3XBJ9X/GNq3FAUsKsll57DzaGMrjcT+gctp+9MLYXCq+sqP81eVQ0r9lt+gcQfZbACRbEjvlMskztZG8gbC8Qn9tt26Q7y7nDrbZq/LEz7kR6Jc6pg3N9rVX8Y5MJrGlML9p9lU4jbTkKqCveeZUJjHB03m2KRKR2TytoFkTXOLg7keU1s1lrPMQJpoOKLuAAC+y1HlJucU6ysB5hsXhvSPPLq5J7JtnqHKZ4vYjC4Vy8153QY+6780xDuGARsGbOs1WqzH0QS765rnSKEbbKlkO8oI/VDwUd0is13tKpqILu1mDJFNy/iJAWcvDgjxvusIT+PGz3ST/J9r9Mtfd0jpaGeiLYIqXc7DiHSS8TcjFVksi66PEkxW1z6ujbLLUGNNYnzOWpH8BZGK4bCK7iR+MbIv8ncDAz1u4StN3vTTzewr9IQjk9wxFxn+6N1ddKs0vffJiS08N3a4G1SVrlZ97Q/M+8G9fe5AP6d9/Qq4WRnORVhofPIKEdCr3llspUfE0oKIIYoByBRPh+bX1HLS3JWGJRhIvE1aW4NTd8ePi4Z+kXb+Z8snYfSNcqijhAgVsx4RCM54cXUiYkjeBmmC4ajOHrChoELscJJC7+9jjMjw5BagZKlgRMiSNYz7h7vvZIoQqbtQmspc0cUk1G/73iXtSpROl5wtLgQi0mW2Ex8i3WULhcggx6E1LMVHUsdc9GHI1PH3U2Ko0PyGdn9KdVOLm7FPBui0i9a0HpA60MsewVE4z8CAt5d401Gv6zXlIT5Ybit1VIA0FCs7wtvYreru1fUyW3oLAZ/+aTnZrOcYRNVA8spoRtlRoWflsRClFcgzkqiHOrf0/SVw+EpVaFlJ0g4Kxq1MMOmiQdpMNpte8lMMQqm6cIFXlnGbfJllysKDi+0JJMotkqgIxOSQgU9dn/lWkeVf8nUm3iwX2Nl3WDw9i6AUK3vBAbZZrcJpDQ/N64AVwjT07Jef30GSSmtNu2WlW7YoyW2FlWfZFQUwk867EdLYKk9VG6JgEnBiBxkY7LMo4YLQJJlAo9l/oTvJkSARDF/XtyAzM8O2t3eT/iXa6wDN3WewNmQHdPfsxChU/KtLG2Mn8i4ZqKdSlIaBZadxJmRzVS/o4yA65RTSViq60oa395Lqw0pzY4SipwE0SXXsKV+GZraGSkr/RW08wPRvqvSUkYBMA9lPx4m24az+IHmCbXA+0faxTRE9wuGeO06DIXa6QlKJ3puIyiuAVfPr736vzo2pBirS+Vxel3TMm3JKhz9o2ZoRvaFVpIkykb0Hcm4oHFBMcNSNj7/4GJt43ogonY2Vg4nsDQIWxAcorpXACzgBqQPjYsE/VUpXpwNManEru4NwMCFPkXvMoqvoeLN3qyu/N1eWEHttMD65v19l/0kH2mR35iv/FI+yjoHJ9gPMz67af3Mq/BoWXqu3rphiWMXVkmnPSEkpGpUI2h1MThideGFEOK6YZHPwYzMBvpNC7+ZHxPb7epfefGyIB4JzO9DTNEYnDLVVHdQyvOEVefrk6Uv5kTQYVYWWdqrdcIl7yljwwIWdfQ/y+2QB3eR/qxYObuYyB4gTbo2in4PzarU1sO9nETkmj9/AoxDA+JM3GMqQtJR4jtduHtnoCLxd1gQUscHRB/MoRYIEsP2pDZ9KvHgtlk1iTbWWbHhohwFEYX7y51fUV2nuUmnoUcqnWIQAAgl9LTVX+Bc0QGNEhChxHR4YjfE51PUdGfsSFE6ck7BL3/hTf9jLq4G1IafINxOLKeAtO7quulYvH5YOBc+zX7CrMgWnW47/jfRsWnJjYYoE7xMfWV2HN2iyIqLI"),read_sorted_array=()=>read_sorted(n),read_sorted_set=()=>new Set(read_sorted_array());c=new Map(read_mapped(n)),u=read_sorted_set(),d=read_sorted_array(),p=new Set(read_sorted_array().map(e=>d[e])),d=new Set(d),f=read_sorted_set(),read_sorted_set();let o=read_sorted_arrays(n),i=n(),read_chunked=()=>new Set(read_sorted_array().flatMap(e=>o[e]).concat(read_sorted_array()));m=read_array_while(e=>{let t=read_array_while(n).map(e=>e+96);if(t.length){let o=e>=i;return t[0]-=32,t=str_from_cps(t),o&&(t=`Restricted[${t}]`),{N:t,P:read_chunked(),Q:read_chunked(),M:!n(),R:o}}}),g=read_sorted_set(),b=new Map;let s=read_sorted_array().concat(Array_from(g)).sort((e,t)=>e-t);for(let{V:e,M:t}of(s.forEach((e,t)=>{let o=n(),i=s[t]=o?s[t-o]:{V:[],M:new Map};i.V.push(e),g.has(e)||b.set(e,i)}),new Set(b.values()))){let n=[];for(let t of e){let e=m.filter(e=>group_has_cp(e,t)),o=n.find(({G:t})=>e.some(e=>t.has(e)));o||(o={G:new Set,V:[]},n.push(o)),o.V.push(t),e.forEach(e=>o.G.add(e))}let o=n.flatMap(e=>Array_from(e.G));for(let{G:e,V:i}of n){let n=new Set(o.filter(t=>!e.has(t)));for(let e of i)t.set(e,n)}}let l=new Set,C=new Set,add_to_union=e=>l.has(e)?C.add(e):l.add(e);for(let e of m){for(let t of e.P)add_to_union(t);for(let t of e.Q)add_to_union(t)}for(let e of l)b.has(e)||C.has(e)||b.set(e,1);for(let o of(y=new Set(Array_from(l).concat(Array_from(decomposed(l).map(unpack_cp)))),v=(e=[],t=read_sorted(n),function expand({S:t,B:n},o,i){if(!(4&t)||i!==o[o.length-1])for(let s of(2&t&&(i=o[o.length-1]),1&t&&e.push(o),n))for(let e of s.Q)expand(s,[...o,e],i)}(function decode(e){return{S:n(),B:read_array_while(()=>{let e=read_sorted(n).map(e=>t[e]);if(e.length)return decode(e)}),Q:e}}([]),[]),e).map(e=>Emoji.from(e)).sort(compare_arrays),w=new Map,v)){let e=[w];for(let t of o){let n=e.map(e=>{let n=e.get(t);return n||(n=new Map,e.set(t,n)),n});65039===t?e.push(...n):e=n}for(let t of e)t.V=o}}function quoted_cp(e){return(should_escape(e)?"":`${bidi_qq(safe_str_from_cps([e]))} `)+quote_cp(e)}function bidi_qq(e){return`"${e}"\u200E`}function safe_str_from_cps(e,t=quote_cp){var n;let o=[];n=e[0],init(),d.has(n)&&o.push("◌");let i=0,s=e.length;for(let n=0;ne.P.has(t));return o&&(n=`${o.N} ${n}`),Error(`illegal mixture: ${e.N} + ${n}`)}function error_placement(e){return Error(`illegal placement: ${e}`)}function filter_fe0f(e){return e.filter(e=>65039!=e)}let EnsAvatarInvalidMetadataError=class EnsAvatarInvalidMetadataError extends X.G{constructor({data:e}){super("Unable to extract image from metadata. The metadata may be malformed or invalid.",{metaMessages:["- Metadata must be a JSON object with at least an `image`, `image_url` or `image_data` property.","",`Provided data: ${JSON.stringify(e)}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarInvalidMetadataError"})}};let EnsAvatarInvalidNftUriError=class EnsAvatarInvalidNftUriError extends X.G{constructor({reason:e}){super(`ENS NFT avatar URI is invalid. ${e}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarInvalidNftUriError"})}};let EnsAvatarUriResolutionError=class EnsAvatarUriResolutionError extends X.G{constructor({uri:e}){super(`Unable to resolve ENS avatar URI "${e}". The URI may be malformed, invalid, or does not respond with a valid image.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarUriResolutionError"})}};let EnsAvatarUnsupportedNamespaceError=class EnsAvatarUnsupportedNamespaceError extends X.G{constructor({namespace:e}){super(`ENS NFT avatar namespace "${e}" is not supported. Must be "erc721" or "erc1155".`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EnsAvatarUnsupportedNamespaceError"})}};let ef=/(?https?:\/\/[^\/]*|ipfs:\/|ipns:\/|ar:\/)?(?\/)?(?ipfs\/|ipns\/)?(?[\w\-.]+)(?\/.*)?/,em=/^(Qm[1-9A-HJ-NP-Za-km-z]{44,}|b[A-Za-z2-7]{58,}|B[A-Z2-7]{58,}|z[1-9A-HJ-NP-Za-km-z]{48,}|F[0-9A-F]{50,})(\/(?[\w\-.]+))?(?\/.*)?$/,eg=/^data:([a-zA-Z\-/+]*);base64,([^"].*)/,eb=/^data:([a-zA-Z\-/+]*)?(;[a-zA-Z0-9].*?)?(,)/;async function isImageUri(e){try{let t=await fetch(e,{method:"HEAD"});if(200===t.status){let e=t.headers.get("content-type");return e?.startsWith("image/")}return!1}catch(t){if("object"==typeof t&&void 0!==t.response||!globalThis.hasOwnProperty("Image"))return!1;return new Promise(t=>{let n=new Image;n.onload=()=>{t(!0)},n.onerror=()=>{t(!1)},n.src=e})}}function getGateway(e,t){return e?e.endsWith("/")?e.slice(0,-1):e:t}function resolveAvatarUri({uri:e,gatewayUrls:t}){let n=eg.test(e);if(n)return{uri:e,isOnChain:!0,isEncoded:n};let o=getGateway(t?.ipfs,"https://ipfs.io"),i=getGateway(t?.arweave,"https://arweave.net"),s=e.match(ef),{protocol:l,subpath:c,target:u,subtarget:d=""}=s?.groups||{},p="ipns:/"===l||"ipns/"===c,f="ipfs:/"===l||"ipfs/"===c||em.test(e);if(e.startsWith("http")&&!p&&!f){let n=e;return t?.arweave&&(n=e.replace(/https:\/\/arweave.net/g,t?.arweave)),{uri:n,isOnChain:!1,isEncoded:!1}}if((p||f)&&u)return{uri:`${o}/${p?"ipns":"ipfs"}/${u}${d}`,isOnChain:!1,isEncoded:!1};if("ar:/"===l&&u)return{uri:`${i}/${u}${d||""}`,isOnChain:!1,isEncoded:!1};let m=e.replace(eb,"");if(m.startsWith("e.json()),o=await parseAvatarUri({gatewayUrls:e,uri:getJsonImage(n)});return o}catch{throw new EnsAvatarUriResolutionError({uri:t})}}async function parseAvatarUri({gatewayUrls:e,uri:t}){let{uri:n,isOnChain:o}=resolveAvatarUri({uri:t,gatewayUrls:e});if(o)return n;let i=await isImageUri(n);if(i)return n;throw new EnsAvatarUriResolutionError({uri:t})}async function getNftTokenUri(e,{nft:t}){if("erc721"===t.namespace)return readContract(e,{address:t.contractAddress,abi:[{name:"tokenURI",type:"function",stateMutability:"view",inputs:[{name:"tokenId",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"tokenURI",args:[BigInt(t.tokenID)]});if("erc1155"===t.namespace)return readContract(e,{address:t.contractAddress,abi:[{name:"uri",type:"function",stateMutability:"view",inputs:[{name:"_id",type:"uint256"}],outputs:[{name:"",type:"string"}]}],functionName:"uri",args:[BigInt(t.tokenID)]});throw new EnsAvatarUnsupportedNamespaceError({namespace:t.namespace})}async function parseAvatarRecord(e,{gatewayUrls:t,record:n}){return/eip155:/i.test(n)?parseNftAvatarUri(e,{gatewayUrls:t,record:n}):parseAvatarUri({uri:n,gatewayUrls:t})}async function parseNftAvatarUri(e,{gatewayUrls:t,record:n}){let o=function(e){let t=e;t.startsWith("did:nft:")&&(t=t.replace("did:nft:","").replace(/_/g,"/"));let[n,o,i]=t.split("/"),[s,l]=n.split(":"),[c,u]=o.split(":");if(!s||"eip155"!==s.toLowerCase())throw new EnsAvatarInvalidNftUriError({reason:"Only EIP-155 supported"});if(!l)throw new EnsAvatarInvalidNftUriError({reason:"Chain ID not found"});if(!u)throw new EnsAvatarInvalidNftUriError({reason:"Contract address not found"});if(!i)throw new EnsAvatarInvalidNftUriError({reason:"Token ID not found"});if(!c)throw new EnsAvatarInvalidNftUriError({reason:"ERC namespace not found"});return{chainID:parseInt(l),namespace:c.toLowerCase(),contractAddress:u,tokenID:i}}(n),i=await getNftTokenUri(e,{nft:o}),{uri:s,isOnChain:l,isEncoded:c}=resolveAvatarUri({uri:i,gatewayUrls:t});if(l&&(s.includes("data:application/json;base64,")||s.startsWith("{"))){let e=c?atob(s.replace("data:application/json;base64,","")):s,n=JSON.parse(e);return parseAvatarUri({uri:getJsonImage(n),gatewayUrls:t})}let u=o.tokenID;return"erc1155"===o.namespace&&(u=u.replace("0x","").padStart(64,"0")),getMetadataAvatarUri({gatewayUrls:t,uri:s.replace(/(?:0x)?{id}/,u)})}var ey=n(21746);function isNullUniversalResolverError(e,t){if(!(e instanceof X.G))return!1;let n=e.walk(e=>e instanceof q.Lu);return n instanceof q.Lu&&(!!(n.data?.errorName==="ResolverNotFound"||n.data?.errorName==="ResolverWildcardNotSupported"||n.data?.errorName==="ResolverNotContract"||n.data?.errorName==="ResolverError"||n.data?.errorName==="HttpError"||n.reason?.includes("Wildcard on non-extended resolvers is not supported"))||"reverse"===t&&n.reason===ey.$[50])}var ev=n(57040),ew=n(11187),eC=n(49550),eE=n(15102);function encodedLabelToLabelhash(e){if(66!==e.length||0!==e.indexOf("[")||65!==e.indexOf("]"))return null;let t=`0x${e.slice(1,65)}`;return(0,eE.v)(t)?t:null}function namehash(e){let t=new Uint8Array(32).fill(0);if(!e)return(0,Q.ci)(t);let n=e.split(".");for(let e=n.length-1;e>=0;e-=1){let o=encodedLabelToLabelhash(n[e]),i=o?(0,ew.O0)(o):(0,eC.w)((0,ew.qX)(n[e]),"bytes");t=(0,eC.w)((0,ev.zo)([t,i]),"bytes")}return(0,Q.ci)(t)}function packetToBytes(e){let t=e.replace(/^\.|\.$/gm,"");if(0===t.length)return new Uint8Array(1);let n=new Uint8Array((0,ew.qX)(t).byteLength+2),o=0,i=t.split(".");for(let e=0;e255){var s;t=(0,ew.qX)((s=function(e){let t=new Uint8Array(32).fill(0);return e?encodedLabelToLabelhash(e)||(0,eC.w)((0,ew.qX)(e)):(0,Q.ci)(t)}(i[e]),`[${s.slice(2)}]`))}n[o]=t.length,n.set(t,o+1),o+=t.length+1}return n.byteLength!==o+1?n.slice(0,o+1):n}async function getEnsText(e,{blockNumber:t,blockTag:n,name:o,key:i,gatewayUrls:s,strict:l,universalResolverAddress:c}){let u=c;if(!u){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");u=(0,ee.L)({blockNumber:t,chain:e.chain,contract:"ensUniversalResolver"})}try{let l={address:u,abi:Z.k3,functionName:"resolve",args:[(0,Q.NC)(packetToBytes(o)),(0,$.R)({abi:Z.nZ,functionName:"text",args:[namehash(o),i]})],blockNumber:t,blockTag:n},c=getAction_getAction(e,readContract,"readContract"),d=s?await c({...l,args:[...l.args,s]}):await c(l);if("0x"===d[0])return null;let p=(0,Y.k)({abi:Z.nZ,functionName:"text",data:d[0]});return""===p?null:p}catch(e){if(l)throw e;if(isNullUniversalResolverError(e,"resolve"))return null;throw e}}async function getEnsAvatar(e,{blockNumber:t,blockTag:n,assetGatewayUrls:o,name:i,gatewayUrls:s,strict:l,universalResolverAddress:c}){let u=await getAction_getAction(e,getEnsText,"getEnsText")({blockNumber:t,blockTag:n,key:"avatar",name:i,universalResolverAddress:c,gatewayUrls:s,strict:l});if(!u)return null;try{return await parseAvatarRecord(e,{record:u,gatewayUrls:o})}catch{return null}}var ex=n(66403);async function getEnsName(e,{address:t,blockNumber:n,blockTag:o,gatewayUrls:i,strict:s,universalResolverAddress:l}){let c=l;if(!c){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");c=(0,ee.L)({blockNumber:n,chain:e.chain,contract:"ensUniversalResolver"})}let u=`${t.toLowerCase().substring(2)}.addr.reverse`;try{let s={address:c,abi:Z.du,functionName:"reverse",args:[(0,Q.NC)(packetToBytes(u))],blockNumber:n,blockTag:o},l=getAction_getAction(e,readContract,"readContract"),[d,p]=i?await l({...s,args:[...s.args,i]}):await l(s);if(t.toLowerCase()!==p.toLowerCase())return null;return d}catch(e){if(s)throw e;if(isNullUniversalResolverError(e,"reverse"))return null;throw e}}async function getEnsAddress(e,{blockNumber:t,blockTag:n,coinType:o,name:i,gatewayUrls:s,strict:l,universalResolverAddress:c}){let u=c;if(!u){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");u=(0,ee.L)({blockNumber:t,chain:e.chain,contract:"ensUniversalResolver"})}try{let l=(0,$.R)({abi:Z.X$,functionName:"addr",...null!=o?{args:[namehash(i),BigInt(o)]}:{args:[namehash(i)]}}),c={address:u,abi:Z.k3,functionName:"resolve",args:[(0,Q.NC)(packetToBytes(i)),l],blockNumber:t,blockTag:n},d=getAction_getAction(e,readContract,"readContract"),p=s?await d({...c,args:[...c.args,s]}):await d(c);if("0x"===p[0])return null;let f=(0,Y.k)({abi:Z.X$,args:null!=o?[namehash(i),BigInt(o)]:void 0,functionName:"addr",data:p[0]});if("0x"===f||"0x00"===(0,W.f)(f))return null;return f}catch(e){if(l)throw e;if(isNullUniversalResolverError(e,"resolve"))return null;throw e}}async function getEnsResolver(e,{blockNumber:t,blockTag:n,name:o,universalResolverAddress:i}){let s=i;if(!s){if(!e.chain)throw Error("client chain not configured. universalResolverAddress is required.");s=(0,ee.L)({blockNumber:t,chain:e.chain,contract:"ensUniversalResolver"})}let[l]=await getAction_getAction(e,readContract,"readContract")({address:s,abi:[{inputs:[{type:"bytes"}],name:"findResolver",outputs:[{type:"address"},{type:"bytes32"}],stateMutability:"view",type:"function"}],functionName:"findResolver",args:[(0,Q.NC)(packetToBytes(o))],blockNumber:t,blockTag:n});return l}function createFilterRequestScope(e,{method:t}){let n={};return"fallback"===e.transport.type&&e.transport.onResponse?.(({method:e,response:o,status:i,transport:s})=>{"success"===i&&t===e&&(n[o]=s.request)}),t=>n[t]||e.request}async function createBlockFilter(e){let t=createFilterRequestScope(e,{method:"eth_newBlockFilter"}),n=await e.request({method:"eth_newBlockFilter"});return{id:n,request:t(n),type:"block"}}let FilterTypeNotSupportedError=class FilterTypeNotSupportedError extends X.G{constructor(e){super(`Filter type "${e}" is not supported.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FilterTypeNotSupportedError"})}};var eA=n(96005),ek=n(45444),eB=n(80522),eS=n(40840);let eI="/docs/contract/encodeEventTopics";function encodeEventTopics(e){let{abi:t,eventName:n,args:o}=e,i=t[0];if(n){let e=(0,eS.mE)({abi:t,name:n});if(!e)throw new J.mv(n,{docsPath:eI});i=e}if("event"!==i.type)throw new J.mv(void 0,{docsPath:eI});let s=(0,eB.t)(i),l=(0,eA.n)(s),c=[];if(o&&"inputs"in i){let e=i.inputs?.filter(e=>"indexed"in e&&e.indexed),t=Array.isArray(o)?o:Object.values(o).length>0?e?.map(e=>o[e.name])??[]:[];t.length>0&&(c=e?.map((e,n)=>Array.isArray(t[n])?t[n].map((o,i)=>encodeArg({param:e,value:t[n][i]})):t[n]?encodeArg({param:e,value:t[n]}):null)??[])}return[l,...c]}function encodeArg({param:e,value:t}){if("string"===e.type||"bytes"===e.type)return(0,eC.w)((0,ew.O0)(t));if("tuple"===e.type||e.type.match(/^(.*)\[(\d+)?\]$/))throw new FilterTypeNotSupportedError(e.type);return(0,ek.E)([e],[t])}async function createContractEventFilter(e,t){let{address:n,abi:o,args:i,eventName:s,fromBlock:l,strict:c,toBlock:u}=t,d=createFilterRequestScope(e,{method:"eth_newFilter"}),p=s?encodeEventTopics({abi:o,args:i,eventName:s}):void 0,f=await e.request({method:"eth_newFilter",params:[{address:n,fromBlock:"bigint"==typeof l?(0,Q.eC)(l):l,toBlock:"bigint"==typeof u?(0,Q.eC)(u):u,topics:p}]});return{abi:o,args:i,eventName:s,id:f,request:d(f),strict:!!c,type:"event"}}async function createEventFilter(e,{address:t,args:n,event:o,events:i,fromBlock:s,strict:l,toBlock:c}={}){let u=i??(o?[o]:void 0),d=createFilterRequestScope(e,{method:"eth_newFilter"}),p=[];u&&(p=[u.flatMap(e=>encodeEventTopics({abi:[e],eventName:e.name,args:n}))],o&&(p=p[0]));let f=await e.request({method:"eth_newFilter",params:[{address:t,fromBlock:"bigint"==typeof s?(0,Q.eC)(s):s,toBlock:"bigint"==typeof c?(0,Q.eC)(c):c,...p.length?{topics:p}:{}}]});return{abi:u,args:n,eventName:o?o.name:void 0,fromBlock:s,id:f,request:d(f),strict:!!l,toBlock:c,type:"event"}}async function createPendingTransactionFilter(e){let t=createFilterRequestScope(e,{method:"eth_newPendingTransactionFilter"}),n=await e.request({method:"eth_newPendingTransactionFilter"});return{id:n,request:t(n),type:"transaction"}}var ej=n(14503),eT=n(39625),eP=n(67795),eM=n(33639);let EstimateGasExecutionError=class EstimateGasExecutionError extends X.G{constructor(e,{account:t,docsPath:n,chain:o,data:i,gas:s,gasPrice:l,maxFeePerGas:c,maxPriorityFeePerGas:u,nonce:d,to:p,value:f}){let m=(0,eM.xr)({from:t?.address,to:p,value:void 0!==f&&`${(0,eT.d)(f)} ${o?.nativeCurrency?.symbol||"ETH"}`,data:i,gas:s,gasPrice:void 0!==l&&`${(0,eP.o)(l)} gwei`,maxFeePerGas:void 0!==c&&`${(0,eP.o)(c)} gwei`,maxPriorityFeePerGas:void 0!==u&&`${(0,eP.o)(u)} gwei`,nonce:d});super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Estimate Gas Arguments:",m].filter(Boolean)}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"EstimateGasExecutionError"}),this.cause=e}};var eO=n(26445),eR=n(87469),eU=n(61163),eF=n(74688),eN=n(47531);let BaseFeeScalarError=class BaseFeeScalarError extends X.G{constructor(){super("`baseFeeMultiplier` must be greater than 1."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BaseFeeScalarError"})}};let Eip1559FeesNotSupportedError=class Eip1559FeesNotSupportedError extends X.G{constructor(){super("Chain does not support EIP-1559 fees."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"Eip1559FeesNotSupportedError"})}};let MaxFeePerGasTooLowError=class MaxFeePerGasTooLowError extends X.G{constructor({maxPriorityFeePerGas:e}){super(`\`maxFeePerGas\` cannot be less than the \`maxPriorityFeePerGas\` (${(0,eP.o)(e)} gwei).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"MaxFeePerGasTooLowError"})}};let BlockNotFoundError=class BlockNotFoundError extends X.G{constructor({blockHash:e,blockNumber:t}){let n="Block";e&&(n=`Block at hash "${e}"`),t&&(n=`Block at number "${t}"`),super(`${n} could not be found.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BlockNotFoundError"})}};var eD=n(43310);async function getBlock(e,{blockHash:t,blockNumber:n,blockTag:o,includeTransactions:i}={}){let s=i??!1,l=void 0!==n?(0,Q.eC)(n):void 0,c=null;if(!(c=t?await e.request({method:"eth_getBlockByHash",params:[t,s]}):await e.request({method:"eth_getBlockByNumber",params:[l||(o??"latest"),s]})))throw new BlockNotFoundError({blockHash:t,blockNumber:n});let u=e.chain?.formatters?.block?.format||eD.Z;return u(c)}async function getGasPrice(e){let t=await e.request({method:"eth_gasPrice"});return BigInt(t)}async function estimateMaxPriorityFeePerGas(e,t){return internal_estimateMaxPriorityFeePerGas(e,t)}async function internal_estimateMaxPriorityFeePerGas(e,t){let{block:n,chain:o=e.chain,request:i}=t||{};if("function"==typeof o?.fees?.defaultPriorityFee){let t=n||await getAction_getAction(e,getBlock,"getBlock")({});return o.fees.defaultPriorityFee({block:t,client:e,request:i})}if(void 0!==o?.fees?.defaultPriorityFee)return o?.fees?.defaultPriorityFee;try{let t=await e.request({method:"eth_maxPriorityFeePerGas"});return(0,G.y_)(t)}catch{let[t,o]=await Promise.all([n?Promise.resolve(n):getAction_getAction(e,getBlock,"getBlock")({}),getAction_getAction(e,getGasPrice,"getGasPrice")({})]);if("bigint"!=typeof t.baseFeePerGas)throw new Eip1559FeesNotSupportedError;let i=o-t.baseFeePerGas;if(i<0n)return 0n;return i}}async function estimateFeesPerGas(e,t){return internal_estimateFeesPerGas(e,t)}async function internal_estimateFeesPerGas(e,t){let{block:n,chain:o=e.chain,request:i,type:s="eip1559"}=t||{},l=await (async()=>"function"==typeof o?.fees?.baseFeeMultiplier?o.fees.baseFeeMultiplier({block:n,client:e,request:i}):o?.fees?.baseFeeMultiplier??1.2)();if(l<1)throw new BaseFeeScalarError;let c=l.toString().split(".")[1]?.length??0,u=10**c,multiply=e=>e*BigInt(Math.ceil(l*u))/BigInt(u),d=n||await getAction_getAction(e,getBlock,"getBlock")({});if("function"==typeof o?.fees?.estimateFeesPerGas)return o.fees.estimateFeesPerGas({block:n,client:e,multiply,request:i,type:s});if("eip1559"===s){if("bigint"!=typeof d.baseFeePerGas)throw new Eip1559FeesNotSupportedError;let t="bigint"==typeof i?.maxPriorityFeePerGas?i.maxPriorityFeePerGas:await internal_estimateMaxPriorityFeePerGas(e,{block:d,chain:o,request:i}),n=multiply(d.baseFeePerGas),s=i?.maxFeePerGas??n+t;return{maxFeePerGas:s,maxPriorityFeePerGas:t}}let p=i?.gasPrice??multiply(await getAction_getAction(e,getGasPrice,"getGasPrice")({}));return{gasPrice:p}}async function getTransactionCount(e,{address:t,blockTag:n="latest",blockNumber:o}){let i=await e.request({method:"eth_getTransactionCount",params:[t,o?(0,Q.eC)(o):n]});return(0,G.ly)(i)}var e_=n(82994);async function getChainId_getChainId(e){let t=await e.request({method:"eth_chainId"});return(0,G.ly)(t)}async function prepareTransactionRequest(e,t){let{account:n=e.account,chain:o,chainId:i,gas:s,nonce:l,parameters:c=["chainId","fees","gas","nonce","type"],type:u}=t,d=n?(0,ej.T)(n):void 0,p=await getAction_getAction(e,getBlock,"getBlock")({blockTag:"latest"}),f={...t,...d?{from:d?.address}:{}};if(c.includes("chainId")&&(o?f.chainId=o.id:void 0!==i?f.chainId=i:f.chainId=await getAction_getAction(e,getChainId_getChainId,"getChainId")({})),c.includes("nonce")&&void 0===l&&d&&(f.nonce=await getAction_getAction(e,getTransactionCount,"getTransactionCount")({address:d.address,blockTag:"pending"})),(c.includes("fees")||c.includes("type"))&&void 0===u)try{f.type=(0,e_.l)(f)}catch{f.type="bigint"==typeof p.baseFeePerGas?"eip1559":"legacy"}if(c.includes("fees")){if("eip1559"===f.type||"eip4844"===f.type){let{maxFeePerGas:n,maxPriorityFeePerGas:i}=await internal_estimateFeesPerGas(e,{block:p,chain:o,request:f});if(void 0===t.maxPriorityFeePerGas&&t.maxFeePerGas&&t.maxFeePerGas{let t=(0,eR.k)(e,n);return t instanceof eO.cj?e:t})();return new EstimateGasExecutionError(o,{docsPath:t,...n})}(n,{...t,account:o,chain:e.chain})}}async function estimateContractGas(e,t){let{abi:n,address:o,args:i,functionName:s,...l}=t,c=(0,$.R)({abi:n,args:i,functionName:s});try{let t=await getAction_getAction(e,estimateGas,"estimateGas")({data:c,to:o,...l});return t}catch(t){let e=l.account?(0,ej.T)(l.account):void 0;throw getContractError(t,{abi:n,address:o,args:i,docsPath:"/docs/contract/estimateContractGas",functionName:s,sender:e?.address})}}async function getBlobBaseFee(e){let t=await e.request({method:"eth_blobBaseFee"});return BigInt(t)}let eL=new Map,ez=new Map;async function withCache(e,{cacheKey:t,cacheTime:n=1/0}){let o=function(e){let buildCache=(e,t)=>({clear:()=>t.delete(e),get:()=>t.get(e),set:n=>t.set(e,n)}),t=buildCache(e,eL),n=buildCache(e,ez);return{clear:()=>{t.clear(),n.clear()},promise:t,response:n}}(t),i=o.response.get();if(i&&n>0){let e=new Date().getTime()-i.created.getTime();if(e`blockNumber.${e}`;async function getBlockNumber(e,{cacheTime:t=e.cacheTime}={}){let n=await withCache(()=>e.request({method:"eth_blockNumber"}),{cacheKey:cacheKey(e.uid),cacheTime:t});return BigInt(n)}async function getBlockTransactionCount(e,{blockHash:t,blockNumber:n,blockTag:o="latest"}={}){let i;let s=void 0!==n?(0,Q.eC)(n):void 0;return i=t?await e.request({method:"eth_getBlockTransactionCountByHash",params:[t]}):await e.request({method:"eth_getBlockTransactionCountByNumber",params:[s||o]}),(0,G.ly)(i)}async function getBytecode(e,{address:t,blockNumber:n,blockTag:o="latest"}){let i=void 0!==n?(0,Q.eC)(n):void 0,s=await e.request({method:"eth_getCode",params:[t,i||o]});if("0x"!==s)return s}var eq=n(39135),eG=n(66238),eW=n(78398);let eH="/docs/contract/decodeEventLog";function decodeEventLog(e){let{abi:t,data:n,strict:o,topics:i}=e,s=o??!0,[l,...c]=i;if(!l)throw new J.FM({docsPath:eH});let u=t.find(e=>"event"===e.type&&l===(0,eA.n)((0,eB.t)(e)));if(!(u&&"name"in u)||"event"!==u.type)throw new J.lC(l,{docsPath:eH});let{name:d,inputs:p}=u,f=p?.some(e=>!("name"in e&&e.name)),m=f?[]:{},g=p.filter(e=>"indexed"in e&&e.indexed);for(let e=0;e!("indexed"in e&&e.indexed));if(b.length>0){if(n&&"0x"!==n)try{let e=(0,eW.r)(b,n);if(e){if(f)m=[...m,...e];else for(let t=0;t0?m:void 0}}function parseEventLogs({abi:e,eventName:t,logs:n,strict:o=!0}){return n.map(n=>{try{let i=decodeEventLog({...n,abi:e,strict:o});if(t&&!t.includes(i.eventName))return null;return{...i,...n}}catch(i){let e,t;if(i instanceof J.lC)return null;if(i instanceof J.SM||i instanceof J.Gy){if(o)return null;e=i.abiItem.name,t=i.abiItem.inputs?.some(e=>!("name"in e&&e.name))}return{...n,args:t?[]:{},eventName:e}}}).filter(Boolean)}var eQ=n(53992);async function getLogs(e,{address:t,blockHash:n,fromBlock:o,toBlock:i,event:s,events:l,args:c,strict:u}={}){let d;let p=u??!1,f=l??(s?[s]:void 0),m=[];f&&(m=[f.flatMap(e=>encodeEventTopics({abi:[e],eventName:e.name,args:c}))],s&&(m=m[0])),d=n?await e.request({method:"eth_getLogs",params:[{address:t,topics:m,blockHash:n}]}):await e.request({method:"eth_getLogs",params:[{address:t,topics:m,fromBlock:"bigint"==typeof o?(0,Q.eC)(o):o,toBlock:"bigint"==typeof i?(0,Q.eC)(i):i}]});let g=d.map(e=>(0,eQ.U)(e));return f?parseEventLogs({abi:f,logs:g,strict:p}):g}async function getContractEvents(e,t){let{abi:n,address:o,args:i,blockHash:s,eventName:l,fromBlock:c,toBlock:u,strict:d}=t,p=l?(0,eS.mE)({abi:n,name:l}):void 0,f=p?void 0:n.filter(e=>"event"===e.type);return getAction_getAction(e,getLogs,"getLogs")({address:o,args:i,blockHash:s,event:p,events:f,fromBlock:c,toBlock:u,strict:d})}async function getFeeHistory(e,{blockCount:t,blockNumber:n,blockTag:o="latest",rewardPercentiles:i}){let s=n?(0,Q.eC)(n):void 0,l=await e.request({method:"eth_feeHistory",params:[(0,Q.eC)(t),s||o,i]});return{baseFeePerGas:l.baseFeePerGas.map(e=>BigInt(e)),gasUsedRatio:l.gasUsedRatio,oldestBlock:BigInt(l.oldestBlock),reward:l.reward?.map(e=>e.map(e=>BigInt(e)))}}async function getFilterChanges(e,{filter:t}){let n="strict"in t&&t.strict,o=await t.request({method:"eth_getFilterChanges",params:[t.id]});if("string"==typeof o[0])return o;let i=o.map(e=>(0,eQ.U)(e));return"abi"in t&&t.abi?parseEventLogs({abi:t.abi,logs:i,strict:n}):i}async function getFilterLogs(e,{filter:t}){let n=t.strict??!1,o=await t.request({method:"eth_getFilterLogs",params:[t.id]}),i=o.map(e=>(0,eQ.U)(e));return t.abi?parseEventLogs({abi:t.abi,logs:i,strict:n}):i}async function getProof(e,{address:t,blockNumber:n,blockTag:o,storageKeys:i}){let s=void 0!==n?(0,Q.eC)(n):void 0,l=await e.request({method:"eth_getProof",params:[t,i,s||(o??"latest")]});return{...l,balance:l.balance?BigInt(l.balance):void 0,nonce:l.nonce?(0,G.ly)(l.nonce):void 0,storageProof:l.storageProof?l.storageProof.map(e=>({...e,value:BigInt(e.value)})):void 0}}async function getStorageAt(e,{address:t,blockNumber:n,blockTag:o="latest",slot:i}){let s=void 0!==n?(0,Q.eC)(n):void 0,l=await e.request({method:"eth_getStorageAt",params:[t,i,s||o]});return l}var eK=n(6073);async function getTransaction(e,{blockHash:t,blockNumber:n,blockTag:o,hash:i,index:s}){let l=o||"latest",c=void 0!==n?(0,Q.eC)(n):void 0,u=null;if(i?u=await e.request({method:"eth_getTransactionByHash",params:[i]}):t?u=await e.request({method:"eth_getTransactionByBlockHashAndIndex",params:[t,(0,Q.eC)(s)]}):(c||l)&&(u=await e.request({method:"eth_getTransactionByBlockNumberAndIndex",params:[c||l,(0,Q.eC)(s)]})),!u)throw new eM.Bh({blockHash:t,blockNumber:n,blockTag:l,hash:i,index:s});let d=e.chain?.formatters?.transaction?.format||eK.Tr;return d(u)}async function getTransactionConfirmations(e,{hash:t,transactionReceipt:n}){let[o,i]=await Promise.all([getAction_getAction(e,getBlockNumber,"getBlockNumber")({}),t?getAction_getAction(e,getTransaction,"getBlockNumber")({hash:t}):void 0]),s=n?.blockNumber||i?.blockNumber;return s?o-s+1n:0n}var eV=n(30866);async function getTransactionReceipt(e,{hash:t}){let n=await e.request({method:"eth_getTransactionReceipt",params:[t]});if(!n)throw new eM.Yb({hash:t});let o=e.chain?.formatters?.transactionReceipt?.format||eV.f;return o(n)}async function simulateContract(e,t){let{abi:n,address:o,args:i,dataSuffix:s,functionName:l,...c}=t,u=c.account?(0,ej.T)(c.account):e.account,d=(0,$.R)({abi:n,args:i,functionName:l});try{let{data:p}=await getAction_getAction(e,er.RE,"call")({batch:!1,data:`${d}${s?s.replace("0x",""):""}`,to:o,...c,account:u}),f=(0,Y.k)({abi:n,args:i,functionName:l,data:p||"0x"}),m=n.filter(e=>"name"in e&&e.name===t.functionName);return{result:f,request:{abi:m,address:o,args:i,dataSuffix:s,functionName:l,...c,account:u}}}catch(e){throw getContractError(e,{abi:n,address:o,args:i,docsPath:"/docs/contract/simulateContract",functionName:l,sender:u?.address})}}async function uninstallFilter(e,{filter:t}){return t.request({method:"eth_uninstallFilter",params:[t.id]})}var eZ=n(27499);let eJ="/docs/contract/encodeDeployData";async function verifyHash(e,{address:t,hash:n,signature:o,...i}){let s=(0,eE.v)(o)?o:(0,Q.NC)(o);try{let{data:o}=await getAction_getAction(e,er.RE,"call")({data:function(e){let{abi:t,args:n,bytecode:o}=e;if(!n||0===n.length)return o;let i=t.find(e=>"type"in e&&"constructor"===e.type);if(!i)throw new J.fM({docsPath:eJ});if(!("inputs"in i)||!i.inputs||0===i.inputs.length)throw new J.cO({docsPath:eJ});let s=(0,ek.E)(i.inputs,n);return(0,ev.SM)([o,s])}({abi:Z.$o,args:[t,n,s],bytecode:"0x60806040523480156200001157600080fd5b50604051620007003803806200070083398101604081905262000034916200056f565b6000620000438484846200004f565b9050806000526001601ff35b600080846001600160a01b0316803b806020016040519081016040528181526000908060200190933c90507f6492649264926492649264926492649264926492649264926492649264926492620000a68462000451565b036200021f57600060608085806020019051810190620000c79190620005ce565b8651929550909350915060000362000192576000836001600160a01b031683604051620000f5919062000643565b6000604051808303816000865af19150503d806000811462000134576040519150601f19603f3d011682016040523d82523d6000602084013e62000139565b606091505b5050905080620001905760405162461bcd60e51b815260206004820152601e60248201527f5369676e617475726556616c696461746f723a206465706c6f796d656e74000060448201526064015b60405180910390fd5b505b604051630b135d3f60e11b808252906001600160a01b038a1690631626ba7e90620001c4908b90869060040162000661565b602060405180830381865afa158015620001e2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200020891906200069d565b6001600160e01b031916149450505050506200044a565b805115620002b157604051630b135d3f60e11b808252906001600160a01b03871690631626ba7e9062000259908890889060040162000661565b602060405180830381865afa15801562000277573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906200029d91906200069d565b6001600160e01b031916149150506200044a565b8251604114620003195760405162461bcd60e51b815260206004820152603a6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e6174757265206c656e677468000000000000606482015260840162000187565b620003236200046b565b506020830151604080850151855186939260009185919081106200034b576200034b620006c9565b016020015160f81c9050601b81148015906200036b57508060ff16601c14155b15620003cf5760405162461bcd60e51b815260206004820152603b6024820152600080516020620006e083398151915260448201527f3a20696e76616c6964207369676e617475726520762076616c75650000000000606482015260840162000187565b6040805160008152602081018083528a905260ff83169181019190915260608101849052608081018390526001600160a01b038a169060019060a0016020604051602081039080840390855afa1580156200042e573d6000803e3d6000fd5b505050602060405103516001600160a01b031614955050505050505b9392505050565b60006020825110156200046357600080fd5b508051015190565b60405180606001604052806003906020820280368337509192915050565b6001600160a01b03811681146200049f57600080fd5b50565b634e487b7160e01b600052604160045260246000fd5b60005b83811015620004d5578181015183820152602001620004bb565b50506000910152565b600082601f830112620004f057600080fd5b81516001600160401b03808211156200050d576200050d620004a2565b604051601f8301601f19908116603f01168101908282118183101715620005385762000538620004a2565b816040528381528660208588010111156200055257600080fd5b62000565846020830160208901620004b8565b9695505050505050565b6000806000606084860312156200058557600080fd5b8351620005928162000489565b6020850151604086015191945092506001600160401b03811115620005b657600080fd5b620005c486828701620004de565b9150509250925092565b600080600060608486031215620005e457600080fd5b8351620005f18162000489565b60208501519093506001600160401b03808211156200060f57600080fd5b6200061d87838801620004de565b935060408601519150808211156200063457600080fd5b50620005c486828701620004de565b6000825162000657818460208701620004b8565b9190910192915050565b828152604060208201526000825180604084015262000688816060850160208701620004b8565b601f01601f1916919091016060019392505050565b600060208284031215620006b057600080fd5b81516001600160e01b0319811681146200044a57600080fd5b634e487b7160e01b600052603260045260246000fdfe5369676e617475726556616c696461746f72237265636f7665725369676e6572"}),...i});return function(e,t){let n=(0,eE.v)(e)?(0,ew.O0)(e):e,o=(0,eE.v)(t)?(0,ew.O0)(t):t;return(0,eZ.Wd)(n,o)}(o??"0x0","0x1")}catch(e){if(e instanceof q.cg)return!1;throw e}}async function verifyMessage(e,{address:t,message:n,signature:o,...i}){let s=function(e,t){let n="string"==typeof e?(0,ew.qX)(e):e.raw instanceof Uint8Array?e.raw:(0,ew.O0)(e.raw),o=(0,ew.qX)(`Ethereum Signed Message: +${n.length}`);return(0,eC.w)((0,ev.zo)([o,n]),void 0)}(n);return verifyHash(e,{address:t,hash:s,signature:o,...i})}var eX=n(26087),eY=n(60480);let e$=/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/,e0=/^(u?int)(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/;function hashStruct({data:e,primaryType:t,types:n}){let o=function encodeData({data:e,primaryType:t,types:n}){let o=[{type:"bytes32"}],i=[function({primaryType:e,types:t}){let n=(0,Q.NC)(function({primaryType:e,types:t}){let n="",o=function findTypeDependencies({primaryType:e,types:t},n=new Set){let o=e.match(/^\w*/u),i=o?.[0];if(n.has(i)||void 0===t[i])return n;for(let e of(n.add(i),t[i]))findTypeDependencies({primaryType:e.type,types:t},n);return n}({primaryType:e,types:t});o.delete(e);let i=[e,...Array.from(o).sort()];for(let e of i)n+=`${e}(${t[e].map(({name:e,type:t})=>`${t} ${e}`).join(",")})`;return n}({primaryType:e,types:t}));return(0,eC.w)(n)}({primaryType:t,types:n})];for(let s of n[t]){let[t,l]=function encodeField({types:e,name:t,type:n,value:o}){if(void 0!==e[n])return[{type:"bytes32"},(0,eC.w)(encodeData({data:o,primaryType:n,types:e}))];if("bytes"===n){let e=o.length%2?"0":"";return o=`0x${e+o.slice(2)}`,[{type:"bytes32"},(0,eC.w)(o)]}if("string"===n)return[{type:"bytes32"},(0,eC.w)((0,Q.NC)(o))];if(n.lastIndexOf("]")===n.length-1){let i=n.slice(0,n.lastIndexOf("[")),s=o.map(n=>encodeField({name:t,type:i,types:e,value:n}));return[{type:"bytes32"},(0,eC.w)((0,ek.E)(s.map(([e])=>e),s.map(([,e])=>e)))]}return[{type:n},o]}({types:n,name:s.name,type:s.type,value:e[s.name]});o.push(t),i.push(l)}return(0,ek.E)(o,i)}({data:e,primaryType:t,types:n});return(0,eC.w)(o)}async function verifyTypedData(e,t){let{address:n,signature:o,message:i,primaryType:s,types:l,domain:c,...u}=t,d=function(e){let{domain:t={},message:n,primaryType:o}=e,i={EIP712Domain:function({domain:e}){return["string"==typeof e?.name&&{name:"name",type:"string"},e?.version&&{name:"version",type:"string"},"number"==typeof e?.chainId&&{name:"chainId",type:"uint256"},e?.verifyingContract&&{name:"verifyingContract",type:"address"},e?.salt&&{name:"salt",type:"bytes32"}].filter(Boolean)}({domain:t}),...e.types};!function(e){let{domain:t,message:n,primaryType:o,types:i}=e,validateData=(e,t)=>{for(let n of e){let{name:e,type:o}=n,s=t[e],l=o.match(e0);if(l&&("number"==typeof s||"bigint"==typeof s)){let[e,t,n]=l;(0,Q.eC)(s,{signed:"int"===t,size:parseInt(n)/8})}if("address"===o&&"string"==typeof s&&!(0,eY.U)(s))throw new eX.b({address:s});let c=o.match(e$);if(c){let[e,t]=c;if(t&&(0,eq.d)(s)!==parseInt(t))throw new J.KY({expectedSize:parseInt(t),givenSize:(0,eq.d)(s)})}let u=i[o];u&&validateData(u,s)}};if(i.EIP712Domain&&t&&validateData(i.EIP712Domain,t),"EIP712Domain"!==o){let e=i[o];validateData(e,n)}}({domain:t,message:n,primaryType:o,types:i});let s=["0x1901"];return t&&s.push(function({domain:e,types:t}){return hashStruct({data:e,primaryType:"EIP712Domain",types:t})}({domain:t,types:i})),"EIP712Domain"!==o&&s.push(hashStruct({data:n,primaryType:o,types:i})),(0,eC.w)((0,ev.zo)(s))}({message:i,primaryType:s,types:l,domain:c});return verifyHash(e,{address:n,hash:d,signature:o,...u})}let e1=new Map,e6=new Map,e3=0;function observe(e,t,n){let o=++e3,getListeners=()=>e1.get(e)||[],unsubscribe=()=>{let t=getListeners();e1.set(e,t.filter(e=>e.id!==o))},unwatch=()=>{let t=e6.get(e);1===getListeners().length&&t&&t(),unsubscribe()},i=getListeners();if(e1.set(e,[...i,{id:o,fns:t}]),i&&i.length>0)return unwatch;let s={};for(let e in t)s[e]=(...t)=>{let n=getListeners();if(0!==n.length)for(let o of n)o.fns[e]?.(...t)};let l=n(s);return"function"==typeof l&&e6.set(e,l),unwatch}var e2=n(7760),e7=n(96070),e8=n(62914);function poll(e,{emitOnBegin:t,initialWaitTime:n,interval:o}){let i=!0,unwatch=()=>i=!1,watch=async()=>{let s;t&&(s=await e({unpoll:unwatch}));let l=await n?.(s)??o;await (0,e8.D)(l);let poll=async()=>{i&&(await e({unpoll:unwatch}),await (0,e8.D)(o),poll())};poll()};return watch(),unwatch}function watchBlockNumber(e,{emitOnBegin:t=!1,emitMissed:n=!1,onBlockNumber:o,onError:i,poll:s,pollingInterval:l=e.pollingInterval}){let c;let u=void 0!==s?s:"webSocket"!==e.transport.type;return u?(()=>{let s=(0,e7.P)(["watchBlockNumber",e.uid,t,n,l]);return observe(s,{onBlockNumber:o,onError:i},o=>poll(async()=>{try{let t=await getAction_getAction(e,getBlockNumber,"getBlockNumber")({cacheTime:0});if(c){if(t===c)return;if(t-c>1&&n)for(let e=c+1n;ec)&&(o.onBlockNumber(t,c),c=t)}catch(e){o.onError?.(e)}},{emitOnBegin:t,interval:l}))})():(()=>{let s=(0,e7.P)(["watchBlockNumber",e.uid,t,n]);return observe(s,{onBlockNumber:o,onError:i},t=>{let n=!0,unsubscribe=()=>n=!1;return(async()=>{try{let{unsubscribe:o}=await e.transport.subscribe({params:["newHeads"],onData(e){if(!n)return;let o=(0,G.y_)(e.result?.number);t.onBlockNumber(o,c),c=o},onError(e){t.onError?.(e)}});unsubscribe=o,n||unsubscribe()}catch(e){i?.(e)}})(),()=>unsubscribe()})})()}async function waitForTransactionReceipt(e,{confirmations:t=1,hash:n,onReplaced:o,pollingInterval:i=e.pollingInterval,retryCount:s=6,retryDelay:l=({count:e})=>200*~~(1<{c&&setTimeout(()=>b(new eM.mc({hash:n})),c);let y=observe(f,{onReplaced:o,resolve:g,reject:b},o=>{let c=getAction_getAction(e,watchBlockNumber,"watchBlockNumber")({emitMissed:!0,emitOnBegin:!0,poll:!0,pollingInterval:i,async onBlockNumber(i){if(m)return;let f=i,done=e=>{c(),e(),y()};try{if(p){if(t>1&&(!p.blockNumber||f-p.blockNumber+1no.resolve(p));return}if(u||(m=!0,await (0,e2.J)(async()=>{(u=await getAction_getAction(e,getTransaction,"getTransaction")({hash:n})).blockNumber&&(f=u.blockNumber)},{delay:l,retryCount:s}),m=!1),p=await getAction_getAction(e,getTransactionReceipt,"getTransactionReceipt")({hash:n}),t>1&&(!p.blockNumber||f-p.blockNumber+1no.resolve(p))}catch(n){if(n instanceof eM.Bh||n instanceof eM.Yb){if(!u){m=!1;return}try{d=u,m=!0;let n=await (0,e2.J)(()=>getAction_getAction(e,getBlock,"getBlock")({blockNumber:f,includeTransactions:!0}),{delay:l,retryCount:s,shouldRetry:({error:e})=>e instanceof BlockNotFoundError});m=!1;let i=n.transactions.find(({from:e,nonce:t})=>e===d.from&&t===d.nonce);if(!i||(p=await getAction_getAction(e,getTransactionReceipt,"getTransactionReceipt")({hash:i.hash}),t>1&&(!p.blockNumber||f-p.blockNumber+1n{o.onReplaced?.({reason:c,replacedTransaction:d,transaction:i,transactionReceipt:p}),o.resolve(p)})}catch(e){done(()=>o.reject(e))}}else done(()=>o.reject(n))}}})})})}async function sendRawTransaction(e,{serializedTransaction:t}){return e.request({method:"eth_sendRawTransaction",params:[t]},{retryCount:0})}function publicActions(e){return{call:t=>(0,er.RE)(e,t),createBlockFilter:()=>createBlockFilter(e),createContractEventFilter:t=>createContractEventFilter(e,t),createEventFilter:t=>createEventFilter(e,t),createPendingTransactionFilter:()=>createPendingTransactionFilter(e),estimateContractGas:t=>estimateContractGas(e,t),estimateGas:t=>estimateGas(e,t),getBalance:t=>getBalance(e,t),getBlobBaseFee:()=>getBlobBaseFee(e),getBlock:t=>getBlock(e,t),getBlockNumber:t=>getBlockNumber(e,t),getBlockTransactionCount:t=>getBlockTransactionCount(e,t),getBytecode:t=>getBytecode(e,t),getChainId:()=>getChainId_getChainId(e),getContractEvents:t=>getContractEvents(e,t),getEnsAddress:t=>getEnsAddress(e,t),getEnsAvatar:t=>getEnsAvatar(e,t),getEnsName:t=>getEnsName(e,t),getEnsResolver:t=>getEnsResolver(e,t),getEnsText:t=>getEnsText(e,t),getFeeHistory:t=>getFeeHistory(e,t),estimateFeesPerGas:t=>estimateFeesPerGas(e,t),getFilterChanges:t=>getFilterChanges(e,t),getFilterLogs:t=>getFilterLogs(e,t),getGasPrice:()=>getGasPrice(e),getLogs:t=>getLogs(e,t),getProof:t=>getProof(e,t),estimateMaxPriorityFeePerGas:t=>estimateMaxPriorityFeePerGas(e,t),getStorageAt:t=>getStorageAt(e,t),getTransaction:t=>getTransaction(e,t),getTransactionConfirmations:t=>getTransactionConfirmations(e,t),getTransactionCount:t=>getTransactionCount(e,t),getTransactionReceipt:t=>getTransactionReceipt(e,t),multicall:t=>multicall(e,t),prepareTransactionRequest:t=>prepareTransactionRequest(e,t),readContract:t=>readContract(e,t),sendRawTransaction:t=>sendRawTransaction(e,t),simulateContract:t=>simulateContract(e,t),verifyMessage:t=>verifyMessage(e,t),verifyTypedData:t=>verifyTypedData(e,t),uninstallFilter:t=>uninstallFilter(e,t),waitForTransactionReceipt:t=>waitForTransactionReceipt(e,t),watchBlocks:t=>(function(e,{blockTag:t="latest",emitMissed:n=!1,emitOnBegin:o=!1,onBlock:i,onError:s,includeTransactions:l,poll:c,pollingInterval:u=e.pollingInterval}){let d,p,f;let m=void 0!==c?c:"webSocket"!==e.transport.type,g=l??!1;return m?(()=>{let l=(0,e7.P)(["watchBlocks",e.uid,n,o,g,u]);return observe(l,{onBlock:i,onError:s},i=>poll(async()=>{try{let o=await getAction_getAction(e,getBlock,"getBlock")({blockTag:t,includeTransactions:g});if(o.number&&d?.number){if(o.number===d.number)return;if(o.number-d.number>1&&n)for(let t=d?.number+1n;td.number)&&(i.onBlock(o,d),d=o)}catch(e){i.onError?.(e)}},{emitOnBegin:o,interval:u}))})():(p=!0,f=()=>p=!1,(async()=>{try{let{unsubscribe:t}=await e.transport.subscribe({params:["newHeads"],onData(t){if(!p)return;let n=e.chain?.formatters?.block?.format||eD.Z,o=n(t.result);i(o,d),d=o},onError(e){s?.(e)}});f=t,p||f()}catch(e){s?.(e)}})(),()=>f())})(e,t),watchBlockNumber:t=>watchBlockNumber(e,t),watchContractEvent:t=>(function(e,t){let{abi:n,address:o,args:i,batch:s=!0,eventName:l,onError:c,onLogs:u,poll:d,pollingInterval:p=e.pollingInterval,strict:f}=t,m=void 0!==d?d:"webSocket"!==e.transport.type;return m?(()=>{let t=f??!1,d=(0,e7.P)(["watchContractEvent",o,i,s,e.uid,l,p,t]);return observe(d,{onLogs:u,onError:c},c=>{let u,d;let f=!1,m=poll(async()=>{if(!f){try{d=await getAction_getAction(e,createContractEventFilter,"createContractEventFilter")({abi:n,address:o,args:i,eventName:l,strict:t})}catch{}f=!0;return}try{let p;if(d)p=await getAction_getAction(e,getFilterChanges,"getFilterChanges")({filter:d});else{let s=await getAction_getAction(e,getBlockNumber,"getBlockNumber")({});p=u&&u!==s?await getAction_getAction(e,getContractEvents,"getContractEvents")({abi:n,address:o,args:i,eventName:l,fromBlock:u+1n,toBlock:s,strict:t}):[],u=s}if(0===p.length)return;if(s)c.onLogs(p);else for(let e of p)c.onLogs([e])}catch(e){d&&e instanceof et.yR&&(f=!1),c.onError?.(e)}},{emitOnBegin:!0,interval:p});return async()=>{d&&await getAction_getAction(e,uninstallFilter,"uninstallFilter")({filter:d}),m()}})})():(()=>{let t=(0,e7.P)(["watchContractEvent",o,i,s,e.uid,l,p,f??!1]),d=!0,unsubscribe=()=>d=!1;return observe(t,{onLogs:u,onError:c},t=>((async()=>{try{let s=l?encodeEventTopics({abi:n,eventName:l,args:i}):[],{unsubscribe:c}=await e.transport.subscribe({params:["logs",{address:o,topics:s}],onData(e){if(!d)return;let o=e.result;try{let{eventName:e,args:i}=decodeEventLog({abi:n,data:o.data,topics:o.topics,strict:f}),s=(0,eQ.U)(o,{args:i,eventName:e});t.onLogs([s])}catch(s){let e,n;if(s instanceof J.SM||s instanceof J.Gy){if(f)return;e=s.abiItem.name,n=s.abiItem.inputs?.some(e=>!("name"in e&&e.name))}let i=(0,eQ.U)(o,{args:n?[]:{},eventName:e});t.onLogs([i])}},onError(e){t.onError?.(e)}});unsubscribe=c,d||unsubscribe()}catch(e){c?.(e)}})(),()=>unsubscribe()))})()})(e,t),watchEvent:t=>(function(e,{address:t,args:n,batch:o=!0,event:i,events:s,onError:l,onLogs:c,poll:u,pollingInterval:d=e.pollingInterval,strict:p}){let f,m;let g=void 0!==u?u:"webSocket"!==e.transport.type,b=p??!1;return g?(()=>{let u=(0,e7.P)(["watchEvent",t,n,o,e.uid,i,d]);return observe(u,{onLogs:c,onError:l},l=>{let c,u;let p=!1,f=poll(async()=>{if(!p){try{u=await getAction_getAction(e,createEventFilter,"createEventFilter")({address:t,args:n,event:i,events:s,strict:b})}catch{}p=!0;return}try{let d;if(u)d=await getAction_getAction(e,getFilterChanges,"getFilterChanges")({filter:u});else{let o=await getAction_getAction(e,getBlockNumber,"getBlockNumber")({});d=c&&c!==o?await getAction_getAction(e,getLogs,"getLogs")({address:t,args:n,event:i,events:s,fromBlock:c+1n,toBlock:o}):[],c=o}if(0===d.length)return;if(o)l.onLogs(d);else for(let e of d)l.onLogs([e])}catch(e){u&&e instanceof et.yR&&(p=!1),l.onError?.(e)}},{emitOnBegin:!0,interval:d});return async()=>{u&&await getAction_getAction(e,uninstallFilter,"uninstallFilter")({filter:u}),f()}})})():(f=!0,m=()=>f=!1,(async()=>{try{let o=s??(i?[i]:void 0),u=[];o&&(u=[o.flatMap(e=>encodeEventTopics({abi:[e],eventName:e.name,args:n}))],i&&(u=u[0]));let{unsubscribe:d}=await e.transport.subscribe({params:["logs",{address:t,topics:u}],onData(e){if(!f)return;let t=e.result;try{let{eventName:e,args:n}=decodeEventLog({abi:o??[],data:t.data,topics:t.topics,strict:b}),i=(0,eQ.U)(t,{args:n,eventName:e});c([i])}catch(i){let e,n;if(i instanceof J.SM||i instanceof J.Gy){if(p)return;e=i.abiItem.name,n=i.abiItem.inputs?.some(e=>!("name"in e&&e.name))}let o=(0,eQ.U)(t,{args:n?[]:{},eventName:e});c([o])}},onError(e){l?.(e)}});m=d,f||m()}catch(e){l?.(e)}})(),()=>m())})(e,t),watchPendingTransactions:t=>(function(e,{batch:t=!0,onError:n,onTransactions:o,poll:i,pollingInterval:s=e.pollingInterval}){let l,c;let u=void 0!==i?i:"webSocket"!==e.transport.type;return u?(()=>{let i=(0,e7.P)(["watchPendingTransactions",e.uid,t,s]);return observe(i,{onTransactions:o,onError:n},n=>{let o;let i=poll(async()=>{try{if(!o)try{o=await getAction_getAction(e,createPendingTransactionFilter,"createPendingTransactionFilter")({});return}catch(e){throw i(),e}let s=await getAction_getAction(e,getFilterChanges,"getFilterChanges")({filter:o});if(0===s.length)return;if(t)n.onTransactions(s);else for(let e of s)n.onTransactions([e])}catch(e){n.onError?.(e)}},{emitOnBegin:!0,interval:s});return async()=>{o&&await getAction_getAction(e,uninstallFilter,"uninstallFilter")({filter:o}),i()}})})():(l=!0,c=()=>l=!1,(async()=>{try{let{unsubscribe:t}=await e.transport.subscribe({params:["newPendingTransactions"],onData(e){if(!l)return;let t=e.result;o([t])},onError(e){n?.(e)}});c=t,l||c()}catch(e){n?.(e)}})(),()=>c())})(e,t)}}function getPublicClient(e,t={}){let n=function(e,t={}){let n;try{n=e.getClient(t)}catch{}return n}(e,t);return n?.extend(publicActions)}var e5=n(52798),e4=n(33397);function useAccountEffect_useAccountEffect(e={}){let{onConnect:t,onDisconnect:n}=e,o=(0,z.Z)(e);(0,D.useEffect)(()=>(0,e4.u)(o,{onChange(e,o){if(("reconnecting"===o.status||"connecting"===o.status&&void 0===o.address)&&"connected"===e.status){let{address:n,addresses:i,chain:s,chainId:l,connector:c}=e,u="reconnecting"===o.status||void 0===o.status;t?.({address:n,addresses:i,chain:s,chainId:l,connector:c,isReconnected:u})}else"connected"===o.status&&"disconnected"===e.status&&n?.()}}),[o,t,n])}var e9=n(98029);async function disconnect(e,t={}){let n;if(t.connector)n=t.connector;else{let{connections:t,current:o}=e.state,i=t.get(o);n=i?.connector}let o=e.state.connections;n&&(await n.disconnect(),n.emitter.off("change",e._internal.events.change),n.emitter.off("disconnect",e._internal.events.disconnect),n.emitter.on("connect",e._internal.events.connect),o.delete(n.uid)),e.setState(e=>{if(0===o.size)return{...e,connections:new Map,current:void 0,status:"disconnected"};let t=o.values().next().value;return{...e,connections:new Map(o),current:t.connector.uid}});{let t=e.state.current;if(!t)return;let n=e.state.connections.get(t)?.connector;if(!n)return;await e.storage?.setItem("recentConnectorId",n.id)}}var te=n(74751);let tt=[];function getConnections(e){let t=[...e.state.connections.values()];return"reconnecting"===e.state.status||(0,te.v)(tt,t)?tt:(tt=t,t)}function useDisconnect(e={}){let{mutation:t}=e,n=(0,z.Z)(e),{mutate:o,mutateAsync:i,...s}=(0,e9.D)({...t,mutationFn:e=>disconnect(n,e),mutationKey:["disconnect"]});return{...s,connectors:(function(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e.subscribe(()=>getConnections(e),n,{equalityFn:te.v})})(t,{onChange:e}),()=>getConnections(t),()=>getConnections(t))})({config:n}).map(e=>e.connector),disconnect:o,disconnectAsync:i}}var tr=n(73935),tn=n(70655),ta="right-scroll-bar-position",to="width-before-scroll-bar";function assignRef(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var ti="undefined"!=typeof window?D.useLayoutEffect:D.useEffect,ts=new WeakMap,tl=(void 0===x&&(x={}),(void 0===A&&(A=function(e){return e}),k=[],B=!1,S={read:function(){if(B)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return k.length?k[k.length-1]:null},useMedium:function(e){var t=A(e,B);return k.push(t),function(){k=k.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(B=!0;k.length;){var t=k;k=[],t.forEach(e)}k={push:function(t){return e(t)},filter:function(){return k}}},assignMedium:function(e){B=!0;var t=[];if(k.length){var n=k;k=[],n.forEach(e),t=k}var executeQueue=function(){var n=t;t=[],n.forEach(e)},cycle=function(){return Promise.resolve().then(executeQueue)};cycle(),k={push:function(e){t.push(e),cycle()},filter:function(e){return t=t.filter(e),k}}}}).options=(0,tn.__assign)({async:!0,ssr:!1},x),S),nothing=function(){},tc=D.forwardRef(function(e,t){var n,o,i,s,l=D.useRef(null),c=D.useState({onScrollCapture:nothing,onWheelCapture:nothing,onTouchMoveCapture:nothing}),u=c[0],d=c[1],p=e.forwardProps,f=e.children,m=e.className,g=e.removeScrollBar,b=e.enabled,y=e.shards,v=e.sideCar,w=e.noIsolation,C=e.inert,E=e.allowPinchZoom,x=e.as,A=void 0===x?"div":x,k=e.gapMode,B=(0,tn.__rest)(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),S=(n=[l,t],o=function(e){return n.forEach(function(t){return assignRef(t,e)})},(i=(0,D.useState)(function(){return{value:null,callback:o,facade:{get current(){return i.value},set current(value){var e=i.value;e!==value&&(i.value=value,i.callback(value,e))}}}})[0]).callback=o,s=i.facade,ti(function(){var e=ts.get(s);if(e){var t=new Set(e),o=new Set(n),i=s.current;t.forEach(function(e){o.has(e)||assignRef(e,null)}),o.forEach(function(e){t.has(e)||assignRef(e,i)})}ts.set(s,n)},[n]),s),I=(0,tn.__assign)((0,tn.__assign)({},B),u);return D.createElement(D.Fragment,null,b&&D.createElement(v,{sideCar:tl,removeScrollBar:g,shards:y,noIsolation:w,inert:C,setCallbacks:d,allowPinchZoom:!!E,lockRef:l,gapMode:k}),p?D.cloneElement(D.Children.only(f),(0,tn.__assign)((0,tn.__assign)({},I),{ref:S})):D.createElement(A,(0,tn.__assign)({},I,{className:m,ref:S}),f))});tc.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},tc.classNames={fullWidth:to,zeroRight:ta};var SideCar=function(e){var t=e.sideCar,n=(0,tn.__rest)(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var o=t.read();if(!o)throw Error("Sidecar medium not found");return D.createElement(o,(0,tn.__assign)({},n))};SideCar.isSideCarExport=!0;var stylesheetSingleton=function(){var e=0,t=null;return{add:function(o){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=I||n.nc;return t&&e.setAttribute("nonce",t),e}())){var i,s;(i=t).styleSheet?i.styleSheet.cssText=o:i.appendChild(document.createTextNode(o)),s=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(s)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},styleHookSingleton=function(){var e=stylesheetSingleton();return function(t,n){D.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},styleSingleton=function(){var e=styleHookSingleton();return function(t){return e(t.styles,t.dynamic),null}},tu={left:0,top:0,right:0,gap:0},parse=function(e){return parseInt(e||"",10)||0},getOffset=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],o=t["padding"===e?"paddingTop":"marginTop"],i=t["padding"===e?"paddingRight":"marginRight"];return[parse(n),parse(o),parse(i)]},getGapWidth=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return tu;var t=getOffset(e),n=document.documentElement.clientWidth,o=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,o-n+t[2]-t[0])}},td=styleSingleton(),tp="data-scroll-locked",getStyles=function(e,t,n,o){var i=e.left,s=e.top,l=e.right,c=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(o,";\n padding-right: ").concat(c,"px ").concat(o,";\n }\n body[").concat(tp,"] {\n overflow: hidden ").concat(o,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(o,";"),"margin"===n&&"\n padding-left: ".concat(i,"px;\n padding-top: ").concat(s,"px;\n padding-right: ").concat(l,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(c,"px ").concat(o,";\n "),"padding"===n&&"padding-right: ".concat(c,"px ").concat(o,";")].filter(Boolean).join(""),"\n }\n \n .").concat(ta," {\n right: ").concat(c,"px ").concat(o,";\n }\n \n .").concat(to," {\n margin-right: ").concat(c,"px ").concat(o,";\n }\n \n .").concat(ta," .").concat(ta," {\n right: 0 ").concat(o,";\n }\n \n .").concat(to," .").concat(to," {\n margin-right: 0 ").concat(o,";\n }\n \n body[").concat(tp,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(c,"px;\n }\n")},getCurrentUseCounter=function(){var e=parseInt(document.body.getAttribute(tp)||"0",10);return isFinite(e)?e:0},useLockAttribute=function(){D.useEffect(function(){return document.body.setAttribute(tp,(getCurrentUseCounter()+1).toString()),function(){var e=getCurrentUseCounter()-1;e<=0?document.body.removeAttribute(tp):document.body.setAttribute(tp,e.toString())}},[])},RemoveScrollBar=function(e){var t=e.noRelative,n=e.noImportant,o=e.gapMode,i=void 0===o?"margin":o;useLockAttribute();var s=D.useMemo(function(){return getGapWidth(i)},[i]);return D.createElement(td,{styles:getStyles(s,!t,i,n?"":"!important")})},th=!1;if("undefined"!=typeof window)try{var tf=Object.defineProperty({},"passive",{get:function(){return th=!0,!0}});window.addEventListener("test",tf,tf),window.removeEventListener("test",tf,tf)}catch(e){th=!1}var tm=!!th&&{passive:!1},elementCanBeScrolled=function(e,t){var n=window.getComputedStyle(e);return"hidden"!==n[t]&&!(n.overflowY===n.overflowX&&"TEXTAREA"!==e.tagName&&"visible"===n[t])},locationCouldBeScrolled=function(e,t){var n=t.ownerDocument,o=t;do{if("undefined"!=typeof ShadowRoot&&o instanceof ShadowRoot&&(o=o.host),elementCouldBeScrolled(e,o)){var i=getScrollVariables(e,o);if(i[1]>i[2])return!0}o=o.parentNode}while(o&&o!==n.body);return!1},elementCouldBeScrolled=function(e,t){return"v"===e?elementCanBeScrolled(t,"overflowY"):elementCanBeScrolled(t,"overflowX")},getScrollVariables=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},handleScroll=function(e,t,n,o,i){var s,l=(s=window.getComputedStyle(t).direction,"h"===e&&"rtl"===s?-1:1),c=l*o,u=n.target,d=t.contains(u),p=!1,f=c>0,m=0,g=0;do{var b=getScrollVariables(e,u),y=b[0],v=b[1]-b[2]-l*y;(y||v)&&elementCouldBeScrolled(e,u)&&(m+=v,g+=y),u=u instanceof ShadowRoot?u.host:u.parentNode}while(!d&&u!==document.body||d&&(t.contains(u)||t===u));return f&&(i&&1>Math.abs(m)||!i&&c>m)?p=!0:!f&&(i&&1>Math.abs(g)||!i&&-c>g)&&(p=!0),p},getTouchXY=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},getDeltaXY=function(e){return[e.deltaX,e.deltaY]},extractRef=function(e){return e&&"current"in e?e.current:e},tg=0,tb=[],ty=(tl.useMedium(function(e){var t=D.useRef([]),n=D.useRef([0,0]),o=D.useRef(),i=D.useState(tg++)[0],s=D.useState(styleSingleton)[0],l=D.useRef(e);D.useEffect(function(){l.current=e},[e]),D.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(i));var t=(0,tn.__spreadArray)([e.lockRef.current],(e.shards||[]).map(extractRef),!0).filter(Boolean);return t.forEach(function(e){return e.classList.add("allow-interactivity-".concat(i))}),function(){document.body.classList.remove("block-interactivity-".concat(i)),t.forEach(function(e){return e.classList.remove("allow-interactivity-".concat(i))})}}},[e.inert,e.lockRef.current,e.shards]);var c=D.useCallback(function(e,t){if("touches"in e&&2===e.touches.length)return!l.current.allowPinchZoom;var i,s=getTouchXY(e),c=n.current,u="deltaX"in e?e.deltaX:c[0]-s[0],d="deltaY"in e?e.deltaY:c[1]-s[1],p=e.target,f=Math.abs(u)>Math.abs(d)?"h":"v";if("touches"in e&&"h"===f&&"range"===p.type)return!1;var m=locationCouldBeScrolled(f,p);if(!m)return!0;if(m?i=f:(i="v"===f?"h":"v",m=locationCouldBeScrolled(f,p)),!m)return!1;if(!o.current&&"changedTouches"in e&&(u||d)&&(o.current=i),!i)return!0;var g=o.current||i;return handleScroll(g,t,e,"h"===g?u:d,!0)},[]),u=D.useCallback(function(e){if(tb.length&&tb[tb.length-1]===s){var n="deltaY"in e?getDeltaXY(e):getTouchXY(e),o=t.current.filter(function(t){var o;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(o=t.delta)[0]===n[0]&&o[1]===n[1]})[0];if(o&&o.should){e.cancelable&&e.preventDefault();return}if(!o){var i=(l.current.shards||[]).map(extractRef).filter(Boolean).filter(function(t){return t.contains(e.target)});(i.length>0?c(e,i[0]):!l.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),d=D.useCallback(function(e,n,o,i){var s={name:e,delta:n,target:o,should:i,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(o)};t.current.push(s),setTimeout(function(){t.current=t.current.filter(function(e){return e!==s})},1)},[]),p=D.useCallback(function(e){n.current=getTouchXY(e),o.current=void 0},[]),f=D.useCallback(function(t){d(t.type,getDeltaXY(t),t.target,c(t,e.lockRef.current))},[]),m=D.useCallback(function(t){d(t.type,getTouchXY(t),t.target,c(t,e.lockRef.current))},[]);D.useEffect(function(){return tb.push(s),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:m}),document.addEventListener("wheel",u,tm),document.addEventListener("touchmove",u,tm),document.addEventListener("touchstart",p,tm),function(){tb=tb.filter(function(e){return e!==s}),document.removeEventListener("wheel",u,tm),document.removeEventListener("touchmove",u,tm),document.removeEventListener("touchstart",p,tm)}},[]);var g=e.removeScrollBar,b=e.inert;return D.createElement(D.Fragment,null,b?D.createElement(s,{styles:"\n .block-interactivity-".concat(i," {pointer-events: none;}\n .allow-interactivity-").concat(i," {pointer-events: all;}\n")}):null,g?D.createElement(RemoveScrollBar,{gapMode:e.gapMode}):null)}),SideCar),tv=D.forwardRef(function(e,t){return D.createElement(tc,(0,tn.__assign)({},e,{ref:t,sideCar:ty}))});function vanilla_extract_private_esm_getVarName(e){var t=e.match(/^var\((.*)\)$/);return t?t[1]:e}function assignInlineVars(e,t){var n={};if("object"==typeof t)!function vanilla_extract_private_esm_walkObject(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:[],o=e.constructor();for(var i in e){var s=e[i],l=[...n,i];"string"==typeof s||"number"==typeof s||null==s?o[i]=t(s,l):"object"!=typeof s||Array.isArray(s)?console.warn('Skipping invalid key "'.concat(l.join("."),'". Should be a string, number, null or object. Received: "').concat(Array.isArray(s)?"Array":typeof s,'"')):o[i]=vanilla_extract_private_esm_walkObject(s,t,l)}return o}(t,(t,o)=>{null!=t&&(n[vanilla_extract_private_esm_getVarName(function(e,t){var n=e;for(var o of t){if(!(o in n))throw Error("Path ".concat(t.join(" -> ")," does not exist in object"));n=n[o]}return n}(e,o))]=String(t))});else for(var o in e){var i=e[o];null!=i&&(n[vanilla_extract_private_esm_getVarName(o)]=i)}return Object.defineProperty(n,"toString",{value:function(){return Object.keys(this).map(e=>"".concat(e,":").concat(this[e])).join(";")},writable:!1}),n}tv.classNames=tc.classNames;var tw=n(87675);async function connect(e,t){let n;if((n="function"==typeof t.connector?e._internal.connectors.setup(t.connector):t.connector).uid===e.state.current)throw new tw.wi;try{e.setState(e=>({...e,status:"connecting"})),n.emitter.emit("message",{type:"connecting"});let o=await n.connect({chainId:t.chainId}),i=o.accounts;return n.emitter.off("connect",e._internal.events.connect),n.emitter.on("change",e._internal.events.change),n.emitter.on("disconnect",e._internal.events.disconnect),await e.storage?.setItem("recentConnectorId",n.id),e.setState(e=>({...e,connections:new Map(e.connections).set(n.uid,{accounts:i,chainId:o.chainId,connector:n}),current:n.uid,status:"connected"})),{accounts:i,chainId:o.chainId}}catch(t){throw e.setState(e=>({...e,status:e.current?"connected":"disconnected"})),t}}let tC=[];function getConnectors(e){let t=e.connectors;return(0,te.v)(tC,t)?tC:(tC=t,t)}var tE=n(42238),tx=n(55585),tA=n(7066);let ProviderNotFoundError=class ProviderNotFoundError extends tA.G{constructor(){super("Provider not found."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ProviderNotFoundError"})}};let SwitchChainNotSupportedError=class SwitchChainNotSupportedError extends tA.G{constructor({connector:e}){super(`"${e.name}" does not support programmatic chain switching.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SwitchChainNotSupportedError"})}};async function switchChain(e,t){let{chainId:n}=t,o=e.state.connections.get(t.connector?.uid??e.state.current);if(o){let e=o.connector;if(!e.switchChain)throw new SwitchChainNotSupportedError({connector:e});let t=await e.switchChain({chainId:n});return t}let i=e.chains.find(e=>e.id===n);if(!i)throw new tw.X4;return e.setState(e=>({...e,chainId:n})),i}let tk=[];function getChains(e){let t=e.chains;return(0,te.v)(tk,t)?tk:(tk=t,t)}var tB=n(92592),tS=n(78863);let UrlRequiredError=class UrlRequiredError extends X.G{constructor(){super("No URL was provided to the Transport. Please provide a valid RPC URL to the Transport.",{docsPath:"/docs/clients/intro"})}};var tI=n(32357);function withTimeout(e,{errorInstance:t=Error("timed out"),timeout:n,signal:o}){return new Promise((i,s)=>{(async()=>{let l;try{let c=new AbortController;n>0&&(l=setTimeout(()=>{o?c.abort():s(t)},n)),i(await e({signal:c?.signal||null}))}catch(e){"AbortError"===e.name&&s(t),s(e)}finally{clearTimeout(l)}})()})}let tj={current:0,take(){return this.current++},reset(){this.current=0}};var tT=n(91628),tP=n(16189);let subscribeWithSelector=e=>(t,n,o)=>{let i=o.subscribe;o.subscribe=(e,t,n)=>{let s=e;if(t){let i=(null==n?void 0:n.equalityFn)||Object.is,l=e(o.getState());s=n=>{let o=e(n);if(!i(l,o)){let e=l;t(l=o,e)}},(null==n?void 0:n.fireImmediately)&&t(l,l)}return i(s)};let s=e(t,n,o);return s},toThenable=e=>t=>{try{let n=e(t);if(n instanceof Promise)return n;return{then:e=>toThenable(e)(n),catch(e){return this}}}catch(e){return{then(e){return this},catch:t=>toThenable(t)(e)}}},oldImpl=(e,t)=>(n,o,i)=>{let s,l,c={getStorage:()=>localStorage,serialize:JSON.stringify,deserialize:JSON.parse,partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},u=!1,d=new Set,p=new Set;try{s=c.getStorage()}catch(e){}if(!s)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${c.name}', the given storage is currently unavailable.`),n(...e)},o,i);let f=toThenable(c.serialize),setItem=()=>{let e;let t=c.partialize({...o()}),n=f({state:t,version:c.version}).then(e=>s.setItem(c.name,e)).catch(t=>{e=t});if(e)throw e;return n},m=i.setState;i.setState=(e,t)=>{m(e,t),setItem()};let g=e((...e)=>{n(...e),setItem()},o,i),hydrate=()=>{var e;if(!s)return;u=!1,d.forEach(e=>e(o()));let t=(null==(e=c.onRehydrateStorage)?void 0:e.call(c,o()))||void 0;return toThenable(s.getItem.bind(s))(c.name).then(e=>{if(e)return c.deserialize(e)}).then(e=>{if(e){if("number"!=typeof e.version||e.version===c.version)return e.state;if(c.migrate)return c.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return n(l=c.merge(e,null!=(t=o())?t:g),!0),setItem()}).then(()=>{null==t||t(l,void 0),u=!0,p.forEach(e=>e(l))}).catch(e=>{null==t||t(void 0,e)})};return i.persist={setOptions:e=>{c={...c,...e},e.getStorage&&(s=e.getStorage())},clearStorage:()=>{null==s||s.removeItem(c.name)},getOptions:()=>c,rehydrate:()=>hydrate(),hasHydrated:()=>u,onHydrate:e=>(d.add(e),()=>{d.delete(e)}),onFinishHydration:e=>(p.add(e),()=>{p.delete(e)})},hydrate(),l||g},newImpl=(e,t)=>(n,o,i)=>{let s,l={storage:function(e,t){let n;try{n=e()}catch(e){return}return{getItem:e=>{var o;let parse=e=>null===e?null:JSON.parse(e,null==t?void 0:t.reviver),i=null!=(o=n.getItem(e))?o:null;return i instanceof Promise?i.then(parse):parse(i)},setItem:(e,o)=>n.setItem(e,JSON.stringify(o,null==t?void 0:t.replacer)),removeItem:e=>n.removeItem(e)}}(()=>localStorage),partialize:e=>e,version:0,merge:(e,t)=>({...t,...e}),...t},c=!1,u=new Set,d=new Set,p=l.storage;if(!p)return e((...e)=>{console.warn(`[zustand persist middleware] Unable to update item '${l.name}', the given storage is currently unavailable.`),n(...e)},o,i);let setItem=()=>{let e=l.partialize({...o()});return p.setItem(l.name,{state:e,version:l.version})},f=i.setState;i.setState=(e,t)=>{f(e,t),setItem()};let m=e((...e)=>{n(...e),setItem()},o,i),hydrate=()=>{var e,t;if(!p)return;c=!1,u.forEach(e=>{var t;return e(null!=(t=o())?t:m)});let i=(null==(t=l.onRehydrateStorage)?void 0:t.call(l,null!=(e=o())?e:m))||void 0;return toThenable(p.getItem.bind(p))(l.name).then(e=>{if(e){if("number"!=typeof e.version||e.version===l.version)return e.state;if(l.migrate)return l.migrate(e.state,e.version);console.error("State loaded from storage couldn't be migrated since no migrate function was provided")}}).then(e=>{var t;return n(s=l.merge(e,null!=(t=o())?t:m),!0),setItem()}).then(()=>{null==i||i(s,void 0),s=o(),c=!0,d.forEach(e=>e(s))}).catch(e=>{null==i||i(void 0,e)})};return i.persist={setOptions:e=>{l={...l,...e},e.storage&&(p=e.storage)},clearStorage:()=>{null==p||p.removeItem(l.name)},getOptions:()=>l,rehydrate:()=>hydrate(),hasHydrated:()=>c,onHydrate:e=>(u.add(e),()=>{u.delete(e)}),onFinishHydration:e=>(d.add(e),()=>{d.delete(e)})},l.skipHydration||hydrate(),s||m},persist=(e,t)=>"getStorage"in t||"serialize"in t||"deserialize"in t?(console.warn("[DEPRECATED] `getStorage`, `serialize` and `deserialize` options are deprecated. Use `storage` option instead."),oldImpl(e,t)):newImpl(e,t),createStoreImpl=e=>{let t;let n=new Set,setState=(e,o)=>{let i="function"==typeof e?e(t):e;if(!Object.is(i,t)){let e=t;t=(null!=o?o:"object"!=typeof i)?i:Object.assign({},t,i),n.forEach(n=>n(t,e))}},getState=()=>t,o={setState,getState,subscribe:e=>(n.add(e),()=>n.delete(e)),destroy:()=>{console.warn("[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected."),n.clear()}};return t=e(setState,getState,o),o},vanilla_createStore=e=>e?createStoreImpl(e):createStoreImpl;var tM=n(45775);function normalizeChainId(e){if("string"==typeof e)return Number.parseInt(e,"0x"===e.trim().substring(0,2)?16:10);if("bigint"==typeof e)return Number(e);if("number"==typeof e)return e;throw Error(`Cannot normalize chainId "${e}" of type "${typeof e}"`)}let tO={coinbaseWallet:{id:"coinbaseWallet",name:"Coinbase Wallet",provider:e=>e?.coinbaseWalletExtension?e.coinbaseWalletExtension:findProvider(e,"isCoinbaseWallet")},metaMask:{id:"metaMask",name:"MetaMask",provider:e=>findProvider(e,e=>{if(!e.isMetaMask||e.isBraveWallet&&!e._events&&!e._state)return!1;for(let t of["isApexWallet","isAvalanche","isBitKeep","isBlockWallet","isKuCoinWallet","isMathWallet","isOkxWallet","isOKExWallet","isOneInchIOSWallet","isOneInchAndroidWallet","isOpera","isPortal","isRabby","isTokenPocket","isTokenary","isZerion"])if(e[t])return!1;return!0})},phantom:{id:"phantom",name:"Phantom",provider:e=>e?.phantom?.ethereum?e.phantom?.ethereum:findProvider(e,"isPhantom")}};function injected(e={}){let{shimDisconnect:t=!0,unstable_shimAsyncInject:n}=e;function getTarget(){let t=e.target;if("function"==typeof t){let e=t();if(e)return e}return"object"==typeof t?t:"string"==typeof t?{...tO[t]??{id:t,name:`${t[0].toUpperCase()}${t.slice(1)}`,provider:`is${t[0].toUpperCase()}${t.slice(1)}`}}:{id:"injected",name:"Injected",provider:e=>e?.ethereum}}return o=>({get icon(){return getTarget().icon},get id(){return getTarget().id},get name(){return getTarget().name},type:injected.type,async setup(){let t=await this.getProvider();t&&e.target&&t.on("connect",this.onConnect.bind(this))},async connect({chainId:n,isReconnecting:i}={}){let s=await this.getProvider();if(!s)throw new ProviderNotFoundError;let l=null;if(!i){l=await this.getAccounts().catch(()=>null);let e=!!l?.length;if(e)try{let e=await s.request({method:"wallet_requestPermissions",params:[{eth_accounts:{}}]});l=e[0]?.caveats?.[0]?.value?.map(e=>tM.K(e))}catch(e){if(e.code===et.ab.code)throw new et.ab(e);if(e.code===et.pT.code)throw e}}try{if(!l?.length){let e=await s.request({method:"eth_requestAccounts"});l=e.map(e=>(0,tM.K)(e))}s.removeListener("connect",this.onConnect.bind(this)),s.on("accountsChanged",this.onAccountsChanged.bind(this)),s.on("chainChanged",this.onChainChanged),s.on("disconnect",this.onDisconnect.bind(this));let i=await this.getChainId();if(n&&i!==n){let e=await this.switchChain({chainId:n}).catch(e=>{if(e.code===et.ab.code)throw e;return{id:i}});i=e?.id??i}return t&&(await o.storage?.removeItem(`${this.id}.disconnected`),e.target||await o.storage?.setItem("injected.connected",!0)),{accounts:l,chainId:i}}catch(e){if(e.code===et.ab.code)throw new et.ab(e);if(e.code===et.pT.code)throw new et.pT(e);throw e}},async disconnect(){let n=await this.getProvider();if(!n)throw new ProviderNotFoundError;n.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),n.removeListener("chainChanged",this.onChainChanged),n.removeListener("disconnect",this.onDisconnect.bind(this)),n.on("connect",this.onConnect.bind(this)),t&&(await o.storage?.setItem(`${this.id}.disconnected`,!0),e.target||await o.storage?.removeItem("injected.connected"))},async getAccounts(){let e=await this.getProvider();if(!e)throw new ProviderNotFoundError;let t=await e.request({method:"eth_accounts"});return t.map(e=>(0,tM.K)(e))},async getChainId(){let e=await this.getProvider();if(!e)throw new ProviderNotFoundError;let t=await e.request({method:"eth_chainId"});return normalizeChainId(t)},async getProvider(){let e;if("undefined"==typeof window)return;let t=getTarget();return(e="function"==typeof t.provider?t.provider(window):"string"==typeof t.provider?findProvider(window,t.provider):t.provider)&&!e.removeListener&&("off"in e&&"function"==typeof e.off?e.removeListener=e.off:e.removeListener=()=>{}),e},async isAuthorized(){try{let i=t&&await o.storage?.getItem(`${this.id}.disconnected`);if(i)return!1;if(!e.target){let e=await o.storage?.getItem("injected.connected");if(!e)return!1}let s=await this.getProvider();if(!s){if(void 0!==n&&!1!==n){let handleEthereum=async()=>{"undefined"!=typeof window&&window.removeEventListener("ethereum#initialized",handleEthereum);let e=await this.getProvider();return!!e},e="number"==typeof n?n:1e3,t=await Promise.race([..."undefined"!=typeof window?[new Promise(e=>window.addEventListener("ethereum#initialized",()=>e(handleEthereum()),{once:!0}))]:[],new Promise(t=>setTimeout(()=>t(handleEthereum()),e))]);if(t)return!0}throw new ProviderNotFoundError}let l=await (0,e2.J)(()=>withTimeout(()=>this.getAccounts(),{timeout:100}));return!!l.length}catch{return!1}},async switchChain({chainId:e}){let t=await this.getProvider();if(!t)throw new ProviderNotFoundError;let n=o.chains.find(t=>t.id===e);if(!n)throw new et.x3(new tw.X4);try{return await Promise.all([t.request({method:"wallet_switchEthereumChain",params:[{chainId:(0,Q.eC)(e)}]}),new Promise(t=>o.emitter.once("change",({chainId:n})=>{n===e&&t()}))]),n}catch(o){if(4902===o.code||o?.data?.originalError?.code===4902)try{let o;let{default:i,...s}=n.blockExplorers??{};i&&(o=[i.url,...Object.values(s).map(e=>e.url)]),await t.request({method:"wallet_addEthereumChain",params:[{chainId:(0,Q.eC)(e),chainName:n.name,nativeCurrency:n.nativeCurrency,rpcUrls:[n.rpcUrls.default?.http[0]??""],blockExplorerUrls:o}]});let l=await this.getChainId();if(l!==e)throw new et.ab(Error("User rejected switch after adding network."));return n}catch(e){throw new et.ab(e)}if(o.code===et.ab.code)throw new et.ab(o);throw new et.x3(o)}},async onAccountsChanged(e){if(0===e.length)this.onDisconnect();else if(o.emitter.listenerCount("connect")){let e=(await this.getChainId()).toString();this.onConnect({chainId:e}),t&&await o.storage?.removeItem(`${this.id}.disconnected`)}else o.emitter.emit("change",{accounts:e.map(e=>(0,tM.K)(e))})},onChainChanged(e){let t=normalizeChainId(e);o.emitter.emit("change",{chainId:t})},async onConnect(e){let t=await this.getAccounts();if(0===t.length)return;let n=normalizeChainId(e.chainId);o.emitter.emit("connect",{accounts:t,chainId:n});let i=await this.getProvider();i&&(i.removeListener("connect",this.onConnect.bind(this)),i.on("accountsChanged",this.onAccountsChanged.bind(this)),i.on("chainChanged",this.onChainChanged),i.on("disconnect",this.onDisconnect.bind(this)))},async onDisconnect(e){let t=await this.getProvider();e&&1013===e.code&&t&&(await this.getAccounts()).length||(o.emitter.emit("disconnect"),t&&(t.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),t.removeListener("chainChanged",this.onChainChanged),t.removeListener("disconnect",this.onDisconnect.bind(this)),t.on("connect",this.onConnect.bind(this))))}})}function findProvider(e,t){function isProvider(e){return"function"==typeof t?t(e):"string"!=typeof t||e[t]}let n=e.ethereum;return n?.providers?n.providers.find(e=>isProvider(e)):n&&isProvider(n)?n:void 0}injected.type="injected";var tR=n(26729),__classPrivateFieldGet=function(e,t,n,o){if("a"===n&&!o)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)};let Emitter=class Emitter{constructor(e){Object.defineProperty(this,"uid",{enumerable:!0,configurable:!0,writable:!0,value:e}),j.set(this,new tR)}on(e,t){__classPrivateFieldGet(this,j,"f").on(e,t)}once(e,t){__classPrivateFieldGet(this,j,"f").once(e,t)}off(e,t){__classPrivateFieldGet(this,j,"f").off(e,t)}emit(e,...t){let n=t[0];__classPrivateFieldGet(this,j,"f").emit(e,{uid:this.uid,...n})}listenerCount(e){return __classPrivateFieldGet(this,j,"f").listenerCount(e)}};function deserialize_deserialize(e,t){return JSON.parse(e,(e,n)=>{let o=n;return o?.__type==="bigint"&&(o=BigInt(o.value)),o?.__type==="Map"&&(o=new Map(o.value)),t?.(e,o)??o})}function getReferenceKey(e,t){return e.slice(0,t).join(".")||"."}function getCutoff(e,t){let{length:n}=e;for(let o=0;o{let o=n;return"bigint"==typeof o&&(o={__type:"bigint",value:n.toString()}),o instanceof Map&&(o={__type:"Map",value:Array.from(n.entries())}),t?.(e,o)??o},o),n??void 0)}j=new WeakMap;let tU={getItem:()=>null,setItem:()=>{},removeItem:()=>{}},tF=256;var tN=n(79983);function walletConnect(e){let t,o;let i=e.isNewChainsStale??!0,s="eip155";return l=>({id:"walletConnect",name:"WalletConnect",type:walletConnect.type,async setup(){let e=await this.getProvider().catch(()=>null);e&&(e.on("connect",this.onConnect.bind(this)),e.on("session_delete",this.onSessionDelete.bind(this)))},async connect({chainId:e,...t}={}){try{let n=await this.getProvider();if(!n)throw new ProviderNotFoundError;n.on("display_uri",this.onDisplayUri);let o=e;if(!o){let e=await l.storage?.getItem("state")??{},t=l.chains.some(t=>t.id===e.chainId);o=t?e.chainId:l.chains[0]?.id}if(!o)throw Error("No chains found on connector.");let i=await this.isChainsStale();if(n.session&&i&&await n.disconnect(),!n.session||i){let e=l.chains.filter(e=>e.id!==o).map(e=>e.id);await n.connect({optionalChains:[o,...e],..."pairingTopic"in t?{pairingTopic:t.pairingTopic}:{}}),this.setRequestedChainsIds(l.chains.map(e=>e.id))}let s=(await n.enable()).map(e=>(0,tM.K)(e)),c=await this.getChainId();return n.removeListener("display_uri",this.onDisplayUri),n.removeListener("connect",this.onConnect.bind(this)),n.on("accountsChanged",this.onAccountsChanged.bind(this)),n.on("chainChanged",this.onChainChanged),n.on("disconnect",this.onDisconnect.bind(this)),n.on("session_delete",this.onSessionDelete.bind(this)),{accounts:s,chainId:c}}catch(e){if(/(user rejected|connection request reset)/i.test(e?.message))throw new et.ab(e);throw e}},async disconnect(){let e=await this.getProvider();try{await e?.disconnect()}catch(e){if(!/No matching key/i.test(e.message))throw e}finally{e?.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),e?.removeListener("chainChanged",this.onChainChanged),e?.removeListener("disconnect",this.onDisconnect.bind(this)),e?.removeListener("session_delete",this.onSessionDelete.bind(this)),e?.on("connect",this.onConnect.bind(this)),this.setRequestedChainsIds([])}},async getAccounts(){let e=await this.getProvider();return e.accounts.map(e=>(0,tM.K)(e))},async getProvider({chainId:i}={}){async function initProvider(){let t=l.chains.map(e=>e.id);if(!t.length)return;let{EthereumProvider:o}=await Promise.all([n.e(1194),n.e(3138),n.e(5883)]).then(n.bind(n,33138));return await o.init({...e,disableProviderPing:!0,optionalChains:t,projectId:e.projectId,rpcMap:Object.fromEntries(l.chains.map(e=>[e.id,e.rpcUrls.default.http[0]])),showQrModal:e.showQrModal??!0})}return t||(o||(o=initProvider()),t=await o,t?.events.setMaxListeners(1/0)),i&&await this.switchChain?.({chainId:i}),t},async getChainId(){let e=await this.getProvider();return e.chainId},async isAuthorized(){try{let[e,t]=await Promise.all([this.getAccounts(),this.getProvider()]);if(!e.length)return!1;let n=await this.isChainsStale();if(n&&t.session)return await t.disconnect().catch(()=>{}),!1;return!0}catch{return!1}},async switchChain({chainId:e}){let t=l.chains.find(t=>t.id===e);if(!t)throw new et.x3(new tw.X4);try{let n=await this.getProvider(),o=this.getNamespaceChainsIds(),i=this.getNamespaceMethods(),s=o.includes(e);if(!s&&i.includes("wallet_addEthereumChain")){await n.request({method:"wallet_addEthereumChain",params:[{chainId:(0,Q.eC)(t.id),blockExplorerUrls:[t.blockExplorers?.default.url],chainName:t.name,nativeCurrency:t.nativeCurrency,rpcUrls:[...t.rpcUrls.default.http]}]});let o=await this.getRequestedChainsIds();this.setRequestedChainsIds([...o,e])}return await n.request({method:"wallet_switchEthereumChain",params:[{chainId:(0,Q.eC)(e)}]}),t}catch(t){let e="string"==typeof t?t:t?.message;if(/user rejected request/i.test(e))throw new et.ab(t);throw new et.x3(t)}},onAccountsChanged(e){0===e.length?this.onDisconnect():l.emitter.emit("change",{accounts:e.map(e=>(0,tM.K)(e))})},onChainChanged(e){let t=normalizeChainId(e);l.emitter.emit("change",{chainId:t})},async onConnect(e){let t=normalizeChainId(e.chainId),n=await this.getAccounts();l.emitter.emit("connect",{accounts:n,chainId:t})},async onDisconnect(e){this.setRequestedChainsIds([]),l.emitter.emit("disconnect");let t=await this.getProvider();t.removeListener("accountsChanged",this.onAccountsChanged.bind(this)),t.removeListener("chainChanged",this.onChainChanged),t.removeListener("disconnect",this.onDisconnect.bind(this)),t.removeListener("session_delete",this.onSessionDelete.bind(this)),t.on("connect",this.onConnect.bind(this))},onDisplayUri(e){l.emitter.emit("message",{type:"display_uri",data:e})},onSessionDelete(){this.onDisconnect()},getNamespaceChainsIds(){if(!t)return[];let e=t.session?.namespaces[s]?.chains?.map(e=>parseInt(e.split(":")[1]||""));return e??[]},getNamespaceMethods(){if(!t)return[];let e=t.session?.namespaces[s]?.methods;return e??[]},async getRequestedChainsIds(){return await l.storage?.getItem(this.requestedChainsStorageKey)??[]},async isChainsStale(){let e=this.getNamespaceMethods();if(e.includes("wallet_addEthereumChain")||!i)return!1;let t=l.chains.map(e=>e.id),n=this.getNamespaceChainsIds();if(n.length&&!n.some(e=>t.includes(e)))return!1;let o=await this.getRequestedChainsIds();return!t.every(e=>o.includes(e))},async setRequestedChainsIds(e){await l.storage?.setItem(this.requestedChainsStorageKey,e)},get requestedChainsStorageKey(){return`${this.id}.requestedChains`}})}function coinbaseWallet(e){let t,o;return i=>({id:"coinbaseWalletSDK",name:"Coinbase Wallet",type:coinbaseWallet.type,async connect({chainId:e}={}){try{let t=await this.getProvider(),n=(await t.request({method:"eth_requestAccounts"})).map(e=>(0,tM.K)(e));t.on("accountsChanged",this.onAccountsChanged),t.on("chainChanged",this.onChainChanged),t.on("disconnect",this.onDisconnect.bind(this));let o=await this.getChainId();if(e&&o!==e){let t=await this.switchChain({chainId:e}).catch(e=>{if(e.code===et.ab.code)throw e;return{id:o}});o=t?.id??o}return{accounts:n,chainId:o}}catch(e){if(/(user closed modal|accounts received is empty|user denied account)/i.test(e.message))throw new et.ab(e);throw e}},async disconnect(){let e=await this.getProvider();e.removeListener("accountsChanged",this.onAccountsChanged),e.removeListener("chainChanged",this.onChainChanged),e.removeListener("disconnect",this.onDisconnect.bind(this)),e.disconnect(),e.close()},async getAccounts(){let e=await this.getProvider();return(await e.request({method:"eth_accounts"})).map(e=>(0,tM.K)(e))},async getChainId(){let e=await this.getProvider(),t=await e.request({method:"eth_chainId"});return normalizeChainId(t)},async getProvider(){if(!o){let{default:s}=await Promise.all([n.e(1194),n.e(5811),n.e(6878)]).then(n.t.bind(n,45811,19));t=new("function"!=typeof s&&"function"==typeof s.default?s.default:s)({reloadOnDisconnect:!1,...e});let l=t.walletExtension?.getChainId(),c=i.chains.find(t=>e.chainId?t.id===e.chainId:t.id===l)||i.chains[0],u=e.chainId||c?.id,d=e.jsonRpcUrl||c?.rpcUrls.default.http[0];o=t.makeWeb3Provider(d,u)}return o},async isAuthorized(){try{let e=await this.getAccounts();return!!e.length}catch{return!1}},async switchChain({chainId:e}){let t=i.chains.find(t=>t.id===e);if(!t)throw new et.x3(new tw.X4);let n=await this.getProvider(),o=(0,Q.eC)(t.id);try{return await n.request({method:"wallet_switchEthereumChain",params:[{chainId:o}]}),t}catch(e){if(4902===e.code)try{return await n.request({method:"wallet_addEthereumChain",params:[{chainId:o,chainName:t.name,nativeCurrency:t.nativeCurrency,rpcUrls:[t.rpcUrls.default?.http[0]??""],blockExplorerUrls:[t.blockExplorers?.default.url]}]}),t}catch(e){throw new et.ab(e)}throw new et.x3(e)}},onAccountsChanged(e){0===e.length?i.emitter.emit("disconnect"):i.emitter.emit("change",{accounts:e.map(e=>(0,tM.K)(e))})},onChainChanged(e){let t=normalizeChainId(e);i.emitter.emit("change",{chainId:t})},async onDisconnect(e){i.emitter.emit("disconnect");let t=await this.getProvider();t.removeListener("accountsChanged",this.onAccountsChanged),t.removeListener("chainChanged",this.onChainChanged),t.removeListener("disconnect",this.onDisconnect.bind(this))}})}walletConnect.type="walletConnect",coinbaseWallet.type="coinbaseWallet";var tD=function(e){var{conditions:t}=e;if(!t)throw Error("Styles have no conditions");var n=createNormalizeValueFn(e);return addRecipe(function(e,o){if("string"==typeof e||"number"==typeof e||"boolean"==typeof e){if(!t.defaultCondition)throw Error("No default condition");return o(e,t.defaultCondition)}var i=Array.isArray(e)?n(e):e,s={};for(var l in i)null!=i[l]&&(s[l]=o(i[l],l));return s},{importPath:"@vanilla-extract/sprinkles/createUtils",importName:"createMapValueFn",args:[{conditions:e.conditions}]})}({conditions:{defaultCondition:"smallScreen",conditionNames:["smallScreen","largeScreen"],responsiveArray:void 0}}),t_=createNormalizeValueFn({conditions:{defaultCondition:"smallScreen",conditionNames:["smallScreen","largeScreen"],responsiveArray:void 0}}),tL=function(){return createSprinkles_c8550e00_esm_createSprinkles(composeStyles)(...arguments)}({conditions:{defaultCondition:"base",conditionNames:["base","hover","active"],responsiveArray:void 0},styles:{background:{values:{accentColor:{conditions:{base:"ju367v9i",hover:"ju367v9j",active:"ju367v9k"},defaultClass:"ju367v9i"},accentColorForeground:{conditions:{base:"ju367v9l",hover:"ju367v9m",active:"ju367v9n"},defaultClass:"ju367v9l"},actionButtonBorder:{conditions:{base:"ju367v9o",hover:"ju367v9p",active:"ju367v9q"},defaultClass:"ju367v9o"},actionButtonBorderMobile:{conditions:{base:"ju367v9r",hover:"ju367v9s",active:"ju367v9t"},defaultClass:"ju367v9r"},actionButtonSecondaryBackground:{conditions:{base:"ju367v9u",hover:"ju367v9v",active:"ju367v9w"},defaultClass:"ju367v9u"},closeButton:{conditions:{base:"ju367v9x",hover:"ju367v9y",active:"ju367v9z"},defaultClass:"ju367v9x"},closeButtonBackground:{conditions:{base:"ju367va0",hover:"ju367va1",active:"ju367va2"},defaultClass:"ju367va0"},connectButtonBackground:{conditions:{base:"ju367va3",hover:"ju367va4",active:"ju367va5"},defaultClass:"ju367va3"},connectButtonBackgroundError:{conditions:{base:"ju367va6",hover:"ju367va7",active:"ju367va8"},defaultClass:"ju367va6"},connectButtonInnerBackground:{conditions:{base:"ju367va9",hover:"ju367vaa",active:"ju367vab"},defaultClass:"ju367va9"},connectButtonText:{conditions:{base:"ju367vac",hover:"ju367vad",active:"ju367vae"},defaultClass:"ju367vac"},connectButtonTextError:{conditions:{base:"ju367vaf",hover:"ju367vag",active:"ju367vah"},defaultClass:"ju367vaf"},connectionIndicator:{conditions:{base:"ju367vai",hover:"ju367vaj",active:"ju367vak"},defaultClass:"ju367vai"},downloadBottomCardBackground:{conditions:{base:"ju367val",hover:"ju367vam",active:"ju367van"},defaultClass:"ju367val"},downloadTopCardBackground:{conditions:{base:"ju367vao",hover:"ju367vap",active:"ju367vaq"},defaultClass:"ju367vao"},error:{conditions:{base:"ju367var",hover:"ju367vas",active:"ju367vat"},defaultClass:"ju367var"},generalBorder:{conditions:{base:"ju367vau",hover:"ju367vav",active:"ju367vaw"},defaultClass:"ju367vau"},generalBorderDim:{conditions:{base:"ju367vax",hover:"ju367vay",active:"ju367vaz"},defaultClass:"ju367vax"},menuItemBackground:{conditions:{base:"ju367vb0",hover:"ju367vb1",active:"ju367vb2"},defaultClass:"ju367vb0"},modalBackdrop:{conditions:{base:"ju367vb3",hover:"ju367vb4",active:"ju367vb5"},defaultClass:"ju367vb3"},modalBackground:{conditions:{base:"ju367vb6",hover:"ju367vb7",active:"ju367vb8"},defaultClass:"ju367vb6"},modalBorder:{conditions:{base:"ju367vb9",hover:"ju367vba",active:"ju367vbb"},defaultClass:"ju367vb9"},modalText:{conditions:{base:"ju367vbc",hover:"ju367vbd",active:"ju367vbe"},defaultClass:"ju367vbc"},modalTextDim:{conditions:{base:"ju367vbf",hover:"ju367vbg",active:"ju367vbh"},defaultClass:"ju367vbf"},modalTextSecondary:{conditions:{base:"ju367vbi",hover:"ju367vbj",active:"ju367vbk"},defaultClass:"ju367vbi"},profileAction:{conditions:{base:"ju367vbl",hover:"ju367vbm",active:"ju367vbn"},defaultClass:"ju367vbl"},profileActionHover:{conditions:{base:"ju367vbo",hover:"ju367vbp",active:"ju367vbq"},defaultClass:"ju367vbo"},profileForeground:{conditions:{base:"ju367vbr",hover:"ju367vbs",active:"ju367vbt"},defaultClass:"ju367vbr"},selectedOptionBorder:{conditions:{base:"ju367vbu",hover:"ju367vbv",active:"ju367vbw"},defaultClass:"ju367vbu"},standby:{conditions:{base:"ju367vbx",hover:"ju367vby",active:"ju367vbz"},defaultClass:"ju367vbx"}}},borderColor:{values:{accentColor:{conditions:{base:"ju367vc0",hover:"ju367vc1",active:"ju367vc2"},defaultClass:"ju367vc0"},accentColorForeground:{conditions:{base:"ju367vc3",hover:"ju367vc4",active:"ju367vc5"},defaultClass:"ju367vc3"},actionButtonBorder:{conditions:{base:"ju367vc6",hover:"ju367vc7",active:"ju367vc8"},defaultClass:"ju367vc6"},actionButtonBorderMobile:{conditions:{base:"ju367vc9",hover:"ju367vca",active:"ju367vcb"},defaultClass:"ju367vc9"},actionButtonSecondaryBackground:{conditions:{base:"ju367vcc",hover:"ju367vcd",active:"ju367vce"},defaultClass:"ju367vcc"},closeButton:{conditions:{base:"ju367vcf",hover:"ju367vcg",active:"ju367vch"},defaultClass:"ju367vcf"},closeButtonBackground:{conditions:{base:"ju367vci",hover:"ju367vcj",active:"ju367vck"},defaultClass:"ju367vci"},connectButtonBackground:{conditions:{base:"ju367vcl",hover:"ju367vcm",active:"ju367vcn"},defaultClass:"ju367vcl"},connectButtonBackgroundError:{conditions:{base:"ju367vco",hover:"ju367vcp",active:"ju367vcq"},defaultClass:"ju367vco"},connectButtonInnerBackground:{conditions:{base:"ju367vcr",hover:"ju367vcs",active:"ju367vct"},defaultClass:"ju367vcr"},connectButtonText:{conditions:{base:"ju367vcu",hover:"ju367vcv",active:"ju367vcw"},defaultClass:"ju367vcu"},connectButtonTextError:{conditions:{base:"ju367vcx",hover:"ju367vcy",active:"ju367vcz"},defaultClass:"ju367vcx"},connectionIndicator:{conditions:{base:"ju367vd0",hover:"ju367vd1",active:"ju367vd2"},defaultClass:"ju367vd0"},downloadBottomCardBackground:{conditions:{base:"ju367vd3",hover:"ju367vd4",active:"ju367vd5"},defaultClass:"ju367vd3"},downloadTopCardBackground:{conditions:{base:"ju367vd6",hover:"ju367vd7",active:"ju367vd8"},defaultClass:"ju367vd6"},error:{conditions:{base:"ju367vd9",hover:"ju367vda",active:"ju367vdb"},defaultClass:"ju367vd9"},generalBorder:{conditions:{base:"ju367vdc",hover:"ju367vdd",active:"ju367vde"},defaultClass:"ju367vdc"},generalBorderDim:{conditions:{base:"ju367vdf",hover:"ju367vdg",active:"ju367vdh"},defaultClass:"ju367vdf"},menuItemBackground:{conditions:{base:"ju367vdi",hover:"ju367vdj",active:"ju367vdk"},defaultClass:"ju367vdi"},modalBackdrop:{conditions:{base:"ju367vdl",hover:"ju367vdm",active:"ju367vdn"},defaultClass:"ju367vdl"},modalBackground:{conditions:{base:"ju367vdo",hover:"ju367vdp",active:"ju367vdq"},defaultClass:"ju367vdo"},modalBorder:{conditions:{base:"ju367vdr",hover:"ju367vds",active:"ju367vdt"},defaultClass:"ju367vdr"},modalText:{conditions:{base:"ju367vdu",hover:"ju367vdv",active:"ju367vdw"},defaultClass:"ju367vdu"},modalTextDim:{conditions:{base:"ju367vdx",hover:"ju367vdy",active:"ju367vdz"},defaultClass:"ju367vdx"},modalTextSecondary:{conditions:{base:"ju367ve0",hover:"ju367ve1",active:"ju367ve2"},defaultClass:"ju367ve0"},profileAction:{conditions:{base:"ju367ve3",hover:"ju367ve4",active:"ju367ve5"},defaultClass:"ju367ve3"},profileActionHover:{conditions:{base:"ju367ve6",hover:"ju367ve7",active:"ju367ve8"},defaultClass:"ju367ve6"},profileForeground:{conditions:{base:"ju367ve9",hover:"ju367vea",active:"ju367veb"},defaultClass:"ju367ve9"},selectedOptionBorder:{conditions:{base:"ju367vec",hover:"ju367ved",active:"ju367vee"},defaultClass:"ju367vec"},standby:{conditions:{base:"ju367vef",hover:"ju367veg",active:"ju367veh"},defaultClass:"ju367vef"}}},boxShadow:{values:{connectButton:{conditions:{base:"ju367vei",hover:"ju367vej",active:"ju367vek"},defaultClass:"ju367vei"},dialog:{conditions:{base:"ju367vel",hover:"ju367vem",active:"ju367ven"},defaultClass:"ju367vel"},profileDetailsAction:{conditions:{base:"ju367veo",hover:"ju367vep",active:"ju367veq"},defaultClass:"ju367veo"},selectedOption:{conditions:{base:"ju367ver",hover:"ju367ves",active:"ju367vet"},defaultClass:"ju367ver"},selectedWallet:{conditions:{base:"ju367veu",hover:"ju367vev",active:"ju367vew"},defaultClass:"ju367veu"},walletLogo:{conditions:{base:"ju367vex",hover:"ju367vey",active:"ju367vez"},defaultClass:"ju367vex"}}},color:{values:{accentColor:{conditions:{base:"ju367vf0",hover:"ju367vf1",active:"ju367vf2"},defaultClass:"ju367vf0"},accentColorForeground:{conditions:{base:"ju367vf3",hover:"ju367vf4",active:"ju367vf5"},defaultClass:"ju367vf3"},actionButtonBorder:{conditions:{base:"ju367vf6",hover:"ju367vf7",active:"ju367vf8"},defaultClass:"ju367vf6"},actionButtonBorderMobile:{conditions:{base:"ju367vf9",hover:"ju367vfa",active:"ju367vfb"},defaultClass:"ju367vf9"},actionButtonSecondaryBackground:{conditions:{base:"ju367vfc",hover:"ju367vfd",active:"ju367vfe"},defaultClass:"ju367vfc"},closeButton:{conditions:{base:"ju367vff",hover:"ju367vfg",active:"ju367vfh"},defaultClass:"ju367vff"},closeButtonBackground:{conditions:{base:"ju367vfi",hover:"ju367vfj",active:"ju367vfk"},defaultClass:"ju367vfi"},connectButtonBackground:{conditions:{base:"ju367vfl",hover:"ju367vfm",active:"ju367vfn"},defaultClass:"ju367vfl"},connectButtonBackgroundError:{conditions:{base:"ju367vfo",hover:"ju367vfp",active:"ju367vfq"},defaultClass:"ju367vfo"},connectButtonInnerBackground:{conditions:{base:"ju367vfr",hover:"ju367vfs",active:"ju367vft"},defaultClass:"ju367vfr"},connectButtonText:{conditions:{base:"ju367vfu",hover:"ju367vfv",active:"ju367vfw"},defaultClass:"ju367vfu"},connectButtonTextError:{conditions:{base:"ju367vfx",hover:"ju367vfy",active:"ju367vfz"},defaultClass:"ju367vfx"},connectionIndicator:{conditions:{base:"ju367vg0",hover:"ju367vg1",active:"ju367vg2"},defaultClass:"ju367vg0"},downloadBottomCardBackground:{conditions:{base:"ju367vg3",hover:"ju367vg4",active:"ju367vg5"},defaultClass:"ju367vg3"},downloadTopCardBackground:{conditions:{base:"ju367vg6",hover:"ju367vg7",active:"ju367vg8"},defaultClass:"ju367vg6"},error:{conditions:{base:"ju367vg9",hover:"ju367vga",active:"ju367vgb"},defaultClass:"ju367vg9"},generalBorder:{conditions:{base:"ju367vgc",hover:"ju367vgd",active:"ju367vge"},defaultClass:"ju367vgc"},generalBorderDim:{conditions:{base:"ju367vgf",hover:"ju367vgg",active:"ju367vgh"},defaultClass:"ju367vgf"},menuItemBackground:{conditions:{base:"ju367vgi",hover:"ju367vgj",active:"ju367vgk"},defaultClass:"ju367vgi"},modalBackdrop:{conditions:{base:"ju367vgl",hover:"ju367vgm",active:"ju367vgn"},defaultClass:"ju367vgl"},modalBackground:{conditions:{base:"ju367vgo",hover:"ju367vgp",active:"ju367vgq"},defaultClass:"ju367vgo"},modalBorder:{conditions:{base:"ju367vgr",hover:"ju367vgs",active:"ju367vgt"},defaultClass:"ju367vgr"},modalText:{conditions:{base:"ju367vgu",hover:"ju367vgv",active:"ju367vgw"},defaultClass:"ju367vgu"},modalTextDim:{conditions:{base:"ju367vgx",hover:"ju367vgy",active:"ju367vgz"},defaultClass:"ju367vgx"},modalTextSecondary:{conditions:{base:"ju367vh0",hover:"ju367vh1",active:"ju367vh2"},defaultClass:"ju367vh0"},profileAction:{conditions:{base:"ju367vh3",hover:"ju367vh4",active:"ju367vh5"},defaultClass:"ju367vh3"},profileActionHover:{conditions:{base:"ju367vh6",hover:"ju367vh7",active:"ju367vh8"},defaultClass:"ju367vh6"},profileForeground:{conditions:{base:"ju367vh9",hover:"ju367vha",active:"ju367vhb"},defaultClass:"ju367vh9"},selectedOptionBorder:{conditions:{base:"ju367vhc",hover:"ju367vhd",active:"ju367vhe"},defaultClass:"ju367vhc"},standby:{conditions:{base:"ju367vhf",hover:"ju367vhg",active:"ju367vhh"},defaultClass:"ju367vhf"}}}}},{conditions:{defaultCondition:"smallScreen",conditionNames:["smallScreen","largeScreen"],responsiveArray:void 0},styles:{alignItems:{values:{"flex-start":{conditions:{smallScreen:"ju367v0",largeScreen:"ju367v1"},defaultClass:"ju367v0"},"flex-end":{conditions:{smallScreen:"ju367v2",largeScreen:"ju367v3"},defaultClass:"ju367v2"},center:{conditions:{smallScreen:"ju367v4",largeScreen:"ju367v5"},defaultClass:"ju367v4"}}},display:{values:{none:{conditions:{smallScreen:"ju367v6",largeScreen:"ju367v7"},defaultClass:"ju367v6"},block:{conditions:{smallScreen:"ju367v8",largeScreen:"ju367v9"},defaultClass:"ju367v8"},flex:{conditions:{smallScreen:"ju367va",largeScreen:"ju367vb"},defaultClass:"ju367va"},inline:{conditions:{smallScreen:"ju367vc",largeScreen:"ju367vd"},defaultClass:"ju367vc"}}}}},{conditions:void 0,styles:{margin:{mappings:["marginTop","marginBottom","marginLeft","marginRight"]},marginX:{mappings:["marginLeft","marginRight"]},marginY:{mappings:["marginTop","marginBottom"]},padding:{mappings:["paddingTop","paddingBottom","paddingLeft","paddingRight"]},paddingX:{mappings:["paddingLeft","paddingRight"]},paddingY:{mappings:["paddingTop","paddingBottom"]},alignSelf:{values:{"flex-start":{defaultClass:"ju367ve"},"flex-end":{defaultClass:"ju367vf"},center:{defaultClass:"ju367vg"}}},backgroundSize:{values:{cover:{defaultClass:"ju367vh"}}},borderRadius:{values:{1:{defaultClass:"ju367vi"},6:{defaultClass:"ju367vj"},10:{defaultClass:"ju367vk"},13:{defaultClass:"ju367vl"},actionButton:{defaultClass:"ju367vm"},connectButton:{defaultClass:"ju367vn"},menuButton:{defaultClass:"ju367vo"},modal:{defaultClass:"ju367vp"},modalMobile:{defaultClass:"ju367vq"},"25%":{defaultClass:"ju367vr"},full:{defaultClass:"ju367vs"}}},borderStyle:{values:{solid:{defaultClass:"ju367vt"}}},borderWidth:{values:{0:{defaultClass:"ju367vu"},1:{defaultClass:"ju367vv"},2:{defaultClass:"ju367vw"},4:{defaultClass:"ju367vx"}}},cursor:{values:{pointer:{defaultClass:"ju367vy"},none:{defaultClass:"ju367vz"}}},pointerEvents:{values:{none:{defaultClass:"ju367v10"},all:{defaultClass:"ju367v11"}}},minHeight:{values:{8:{defaultClass:"ju367v12"},44:{defaultClass:"ju367v13"}}},flexDirection:{values:{row:{defaultClass:"ju367v14"},column:{defaultClass:"ju367v15"}}},fontFamily:{values:{body:{defaultClass:"ju367v16"}}},fontSize:{values:{12:{defaultClass:"ju367v17"},13:{defaultClass:"ju367v18"},14:{defaultClass:"ju367v19"},16:{defaultClass:"ju367v1a"},18:{defaultClass:"ju367v1b"},20:{defaultClass:"ju367v1c"},23:{defaultClass:"ju367v1d"}}},fontWeight:{values:{regular:{defaultClass:"ju367v1e"},medium:{defaultClass:"ju367v1f"},semibold:{defaultClass:"ju367v1g"},bold:{defaultClass:"ju367v1h"},heavy:{defaultClass:"ju367v1i"}}},gap:{values:{0:{defaultClass:"ju367v1j"},1:{defaultClass:"ju367v1k"},2:{defaultClass:"ju367v1l"},3:{defaultClass:"ju367v1m"},4:{defaultClass:"ju367v1n"},5:{defaultClass:"ju367v1o"},6:{defaultClass:"ju367v1p"},8:{defaultClass:"ju367v1q"},10:{defaultClass:"ju367v1r"},12:{defaultClass:"ju367v1s"},14:{defaultClass:"ju367v1t"},16:{defaultClass:"ju367v1u"},18:{defaultClass:"ju367v1v"},20:{defaultClass:"ju367v1w"},24:{defaultClass:"ju367v1x"},28:{defaultClass:"ju367v1y"},32:{defaultClass:"ju367v1z"},36:{defaultClass:"ju367v20"},44:{defaultClass:"ju367v21"},64:{defaultClass:"ju367v22"},"-1":{defaultClass:"ju367v23"}}},height:{values:{1:{defaultClass:"ju367v24"},2:{defaultClass:"ju367v25"},4:{defaultClass:"ju367v26"},8:{defaultClass:"ju367v27"},12:{defaultClass:"ju367v28"},20:{defaultClass:"ju367v29"},24:{defaultClass:"ju367v2a"},28:{defaultClass:"ju367v2b"},30:{defaultClass:"ju367v2c"},32:{defaultClass:"ju367v2d"},34:{defaultClass:"ju367v2e"},36:{defaultClass:"ju367v2f"},40:{defaultClass:"ju367v2g"},44:{defaultClass:"ju367v2h"},48:{defaultClass:"ju367v2i"},54:{defaultClass:"ju367v2j"},60:{defaultClass:"ju367v2k"},200:{defaultClass:"ju367v2l"},full:{defaultClass:"ju367v2m"},max:{defaultClass:"ju367v2n"}}},justifyContent:{values:{"flex-start":{defaultClass:"ju367v2o"},"flex-end":{defaultClass:"ju367v2p"},center:{defaultClass:"ju367v2q"},"space-between":{defaultClass:"ju367v2r"},"space-around":{defaultClass:"ju367v2s"}}},textAlign:{values:{left:{defaultClass:"ju367v2t"},center:{defaultClass:"ju367v2u"},inherit:{defaultClass:"ju367v2v"}}},marginBottom:{values:{0:{defaultClass:"ju367v2w"},1:{defaultClass:"ju367v2x"},2:{defaultClass:"ju367v2y"},3:{defaultClass:"ju367v2z"},4:{defaultClass:"ju367v30"},5:{defaultClass:"ju367v31"},6:{defaultClass:"ju367v32"},8:{defaultClass:"ju367v33"},10:{defaultClass:"ju367v34"},12:{defaultClass:"ju367v35"},14:{defaultClass:"ju367v36"},16:{defaultClass:"ju367v37"},18:{defaultClass:"ju367v38"},20:{defaultClass:"ju367v39"},24:{defaultClass:"ju367v3a"},28:{defaultClass:"ju367v3b"},32:{defaultClass:"ju367v3c"},36:{defaultClass:"ju367v3d"},44:{defaultClass:"ju367v3e"},64:{defaultClass:"ju367v3f"},"-1":{defaultClass:"ju367v3g"}}},marginLeft:{values:{0:{defaultClass:"ju367v3h"},1:{defaultClass:"ju367v3i"},2:{defaultClass:"ju367v3j"},3:{defaultClass:"ju367v3k"},4:{defaultClass:"ju367v3l"},5:{defaultClass:"ju367v3m"},6:{defaultClass:"ju367v3n"},8:{defaultClass:"ju367v3o"},10:{defaultClass:"ju367v3p"},12:{defaultClass:"ju367v3q"},14:{defaultClass:"ju367v3r"},16:{defaultClass:"ju367v3s"},18:{defaultClass:"ju367v3t"},20:{defaultClass:"ju367v3u"},24:{defaultClass:"ju367v3v"},28:{defaultClass:"ju367v3w"},32:{defaultClass:"ju367v3x"},36:{defaultClass:"ju367v3y"},44:{defaultClass:"ju367v3z"},64:{defaultClass:"ju367v40"},"-1":{defaultClass:"ju367v41"}}},marginRight:{values:{0:{defaultClass:"ju367v42"},1:{defaultClass:"ju367v43"},2:{defaultClass:"ju367v44"},3:{defaultClass:"ju367v45"},4:{defaultClass:"ju367v46"},5:{defaultClass:"ju367v47"},6:{defaultClass:"ju367v48"},8:{defaultClass:"ju367v49"},10:{defaultClass:"ju367v4a"},12:{defaultClass:"ju367v4b"},14:{defaultClass:"ju367v4c"},16:{defaultClass:"ju367v4d"},18:{defaultClass:"ju367v4e"},20:{defaultClass:"ju367v4f"},24:{defaultClass:"ju367v4g"},28:{defaultClass:"ju367v4h"},32:{defaultClass:"ju367v4i"},36:{defaultClass:"ju367v4j"},44:{defaultClass:"ju367v4k"},64:{defaultClass:"ju367v4l"},"-1":{defaultClass:"ju367v4m"}}},marginTop:{values:{0:{defaultClass:"ju367v4n"},1:{defaultClass:"ju367v4o"},2:{defaultClass:"ju367v4p"},3:{defaultClass:"ju367v4q"},4:{defaultClass:"ju367v4r"},5:{defaultClass:"ju367v4s"},6:{defaultClass:"ju367v4t"},8:{defaultClass:"ju367v4u"},10:{defaultClass:"ju367v4v"},12:{defaultClass:"ju367v4w"},14:{defaultClass:"ju367v4x"},16:{defaultClass:"ju367v4y"},18:{defaultClass:"ju367v4z"},20:{defaultClass:"ju367v50"},24:{defaultClass:"ju367v51"},28:{defaultClass:"ju367v52"},32:{defaultClass:"ju367v53"},36:{defaultClass:"ju367v54"},44:{defaultClass:"ju367v55"},64:{defaultClass:"ju367v56"},"-1":{defaultClass:"ju367v57"}}},maxWidth:{values:{1:{defaultClass:"ju367v58"},2:{defaultClass:"ju367v59"},4:{defaultClass:"ju367v5a"},8:{defaultClass:"ju367v5b"},12:{defaultClass:"ju367v5c"},20:{defaultClass:"ju367v5d"},24:{defaultClass:"ju367v5e"},28:{defaultClass:"ju367v5f"},30:{defaultClass:"ju367v5g"},32:{defaultClass:"ju367v5h"},34:{defaultClass:"ju367v5i"},36:{defaultClass:"ju367v5j"},40:{defaultClass:"ju367v5k"},44:{defaultClass:"ju367v5l"},48:{defaultClass:"ju367v5m"},54:{defaultClass:"ju367v5n"},60:{defaultClass:"ju367v5o"},200:{defaultClass:"ju367v5p"},full:{defaultClass:"ju367v5q"},max:{defaultClass:"ju367v5r"}}},minWidth:{values:{1:{defaultClass:"ju367v5s"},2:{defaultClass:"ju367v5t"},4:{defaultClass:"ju367v5u"},8:{defaultClass:"ju367v5v"},12:{defaultClass:"ju367v5w"},20:{defaultClass:"ju367v5x"},24:{defaultClass:"ju367v5y"},28:{defaultClass:"ju367v5z"},30:{defaultClass:"ju367v60"},32:{defaultClass:"ju367v61"},34:{defaultClass:"ju367v62"},36:{defaultClass:"ju367v63"},40:{defaultClass:"ju367v64"},44:{defaultClass:"ju367v65"},48:{defaultClass:"ju367v66"},54:{defaultClass:"ju367v67"},60:{defaultClass:"ju367v68"},200:{defaultClass:"ju367v69"},full:{defaultClass:"ju367v6a"},max:{defaultClass:"ju367v6b"}}},overflow:{values:{hidden:{defaultClass:"ju367v6c"}}},paddingBottom:{values:{0:{defaultClass:"ju367v6d"},1:{defaultClass:"ju367v6e"},2:{defaultClass:"ju367v6f"},3:{defaultClass:"ju367v6g"},4:{defaultClass:"ju367v6h"},5:{defaultClass:"ju367v6i"},6:{defaultClass:"ju367v6j"},8:{defaultClass:"ju367v6k"},10:{defaultClass:"ju367v6l"},12:{defaultClass:"ju367v6m"},14:{defaultClass:"ju367v6n"},16:{defaultClass:"ju367v6o"},18:{defaultClass:"ju367v6p"},20:{defaultClass:"ju367v6q"},24:{defaultClass:"ju367v6r"},28:{defaultClass:"ju367v6s"},32:{defaultClass:"ju367v6t"},36:{defaultClass:"ju367v6u"},44:{defaultClass:"ju367v6v"},64:{defaultClass:"ju367v6w"},"-1":{defaultClass:"ju367v6x"}}},paddingLeft:{values:{0:{defaultClass:"ju367v6y"},1:{defaultClass:"ju367v6z"},2:{defaultClass:"ju367v70"},3:{defaultClass:"ju367v71"},4:{defaultClass:"ju367v72"},5:{defaultClass:"ju367v73"},6:{defaultClass:"ju367v74"},8:{defaultClass:"ju367v75"},10:{defaultClass:"ju367v76"},12:{defaultClass:"ju367v77"},14:{defaultClass:"ju367v78"},16:{defaultClass:"ju367v79"},18:{defaultClass:"ju367v7a"},20:{defaultClass:"ju367v7b"},24:{defaultClass:"ju367v7c"},28:{defaultClass:"ju367v7d"},32:{defaultClass:"ju367v7e"},36:{defaultClass:"ju367v7f"},44:{defaultClass:"ju367v7g"},64:{defaultClass:"ju367v7h"},"-1":{defaultClass:"ju367v7i"}}},paddingRight:{values:{0:{defaultClass:"ju367v7j"},1:{defaultClass:"ju367v7k"},2:{defaultClass:"ju367v7l"},3:{defaultClass:"ju367v7m"},4:{defaultClass:"ju367v7n"},5:{defaultClass:"ju367v7o"},6:{defaultClass:"ju367v7p"},8:{defaultClass:"ju367v7q"},10:{defaultClass:"ju367v7r"},12:{defaultClass:"ju367v7s"},14:{defaultClass:"ju367v7t"},16:{defaultClass:"ju367v7u"},18:{defaultClass:"ju367v7v"},20:{defaultClass:"ju367v7w"},24:{defaultClass:"ju367v7x"},28:{defaultClass:"ju367v7y"},32:{defaultClass:"ju367v7z"},36:{defaultClass:"ju367v80"},44:{defaultClass:"ju367v81"},64:{defaultClass:"ju367v82"},"-1":{defaultClass:"ju367v83"}}},paddingTop:{values:{0:{defaultClass:"ju367v84"},1:{defaultClass:"ju367v85"},2:{defaultClass:"ju367v86"},3:{defaultClass:"ju367v87"},4:{defaultClass:"ju367v88"},5:{defaultClass:"ju367v89"},6:{defaultClass:"ju367v8a"},8:{defaultClass:"ju367v8b"},10:{defaultClass:"ju367v8c"},12:{defaultClass:"ju367v8d"},14:{defaultClass:"ju367v8e"},16:{defaultClass:"ju367v8f"},18:{defaultClass:"ju367v8g"},20:{defaultClass:"ju367v8h"},24:{defaultClass:"ju367v8i"},28:{defaultClass:"ju367v8j"},32:{defaultClass:"ju367v8k"},36:{defaultClass:"ju367v8l"},44:{defaultClass:"ju367v8m"},64:{defaultClass:"ju367v8n"},"-1":{defaultClass:"ju367v8o"}}},position:{values:{absolute:{defaultClass:"ju367v8p"},fixed:{defaultClass:"ju367v8q"},relative:{defaultClass:"ju367v8r"}}},WebkitUserSelect:{values:{none:{defaultClass:"ju367v8s"}}},right:{values:{0:{defaultClass:"ju367v8t"}}},transition:{values:{default:{defaultClass:"ju367v8u"},transform:{defaultClass:"ju367v8v"}}},userSelect:{values:{none:{defaultClass:"ju367v8w"}}},width:{values:{1:{defaultClass:"ju367v8x"},2:{defaultClass:"ju367v8y"},4:{defaultClass:"ju367v8z"},8:{defaultClass:"ju367v90"},12:{defaultClass:"ju367v91"},20:{defaultClass:"ju367v92"},24:{defaultClass:"ju367v93"},28:{defaultClass:"ju367v94"},30:{defaultClass:"ju367v95"},32:{defaultClass:"ju367v96"},34:{defaultClass:"ju367v97"},36:{defaultClass:"ju367v98"},40:{defaultClass:"ju367v99"},44:{defaultClass:"ju367v9a"},48:{defaultClass:"ju367v9b"},54:{defaultClass:"ju367v9c"},60:{defaultClass:"ju367v9d"},200:{defaultClass:"ju367v9e"},full:{defaultClass:"ju367v9f"},max:{defaultClass:"ju367v9g"}}},backdropFilter:{values:{modalOverlay:{defaultClass:"ju367v9h"}}}}}),tz={colors:{accentColor:"var(--rk-colors-accentColor)",accentColorForeground:"var(--rk-colors-accentColorForeground)",actionButtonBorder:"var(--rk-colors-actionButtonBorder)",actionButtonBorderMobile:"var(--rk-colors-actionButtonBorderMobile)",actionButtonSecondaryBackground:"var(--rk-colors-actionButtonSecondaryBackground)",closeButton:"var(--rk-colors-closeButton)",closeButtonBackground:"var(--rk-colors-closeButtonBackground)",connectButtonBackground:"var(--rk-colors-connectButtonBackground)",connectButtonBackgroundError:"var(--rk-colors-connectButtonBackgroundError)",connectButtonInnerBackground:"var(--rk-colors-connectButtonInnerBackground)",connectButtonText:"var(--rk-colors-connectButtonText)",connectButtonTextError:"var(--rk-colors-connectButtonTextError)",connectionIndicator:"var(--rk-colors-connectionIndicator)",downloadBottomCardBackground:"var(--rk-colors-downloadBottomCardBackground)",downloadTopCardBackground:"var(--rk-colors-downloadTopCardBackground)",error:"var(--rk-colors-error)",generalBorder:"var(--rk-colors-generalBorder)",generalBorderDim:"var(--rk-colors-generalBorderDim)",menuItemBackground:"var(--rk-colors-menuItemBackground)",modalBackdrop:"var(--rk-colors-modalBackdrop)",modalBackground:"var(--rk-colors-modalBackground)",modalBorder:"var(--rk-colors-modalBorder)",modalText:"var(--rk-colors-modalText)",modalTextDim:"var(--rk-colors-modalTextDim)",modalTextSecondary:"var(--rk-colors-modalTextSecondary)",profileAction:"var(--rk-colors-profileAction)",profileActionHover:"var(--rk-colors-profileActionHover)",profileForeground:"var(--rk-colors-profileForeground)",selectedOptionBorder:"var(--rk-colors-selectedOptionBorder)",standby:"var(--rk-colors-standby)"},fonts:{body:"var(--rk-fonts-body)"},radii:{actionButton:"var(--rk-radii-actionButton)",connectButton:"var(--rk-radii-connectButton)",menuButton:"var(--rk-radii-menuButton)",modal:"var(--rk-radii-modal)",modalMobile:"var(--rk-radii-modalMobile)"},shadows:{connectButton:"var(--rk-shadows-connectButton)",dialog:"var(--rk-shadows-dialog)",profileDetailsAction:"var(--rk-shadows-profileDetailsAction)",selectedOption:"var(--rk-shadows-selectedOption)",selectedWallet:"var(--rk-shadows-selectedWallet)",walletLogo:"var(--rk-shadows-walletLogo)"},blurs:{modalOverlay:"var(--rk-blurs-modalOverlay)"}},tq={shrink:"_12cbo8i6",shrinkSm:"_12cbo8i7"},tG={grow:"_12cbo8i4",growLg:"_12cbo8i5"};function touchableStyles({active:e,hover:t}){return["_12cbo8i3 ju367v8r",t&&tG[t],tq[e]]}var tW=(0,D.createContext)(null);function useAuthenticationStatus(){var e;let t=(0,D.useContext)(tW);return null!=(e=null==t?void 0:t.status)?e:null}function useConnectionStatus(){let e=useAuthenticationStatus(),{isConnected:t}=(0,_.m)();return t?e&&("loading"===e||"unauthenticated"===e)?e:"connected":"disconnected"}function isAndroid(){return"undefined"!=typeof navigator&&/android/i.test(navigator.userAgent)}function isIOS(){return"undefined"!=typeof navigator&&/iPhone|iPod/.test(navigator.userAgent)||"undefined"!=typeof navigator&&(/iPad/.test(navigator.userAgent)||"MacIntel"===navigator.platform&&navigator.maxTouchPoints>1)}function isMobile(){return isAndroid()||isIOS()}var tH={a:"iekbcca",blockquote:"iekbcc2",button:"iekbcc9",input:"iekbcc8 iekbcc5 iekbcc4",mark:"iekbcc6",ol:"iekbcc1",q:"iekbcc2",select:"iekbcc7 iekbcc5 iekbcc4",table:"iekbcc3",textarea:"iekbcc5 iekbcc4",ul:"iekbcc1"},atoms=({reset:e,...t})=>{if(!e)return tL(t);let n=tH[e],o=tL(t);return(0,L.Z)("iekbcc0",n,o)},tQ=D.forwardRef(({as:e="div",className:t,testId:n,...o},i)=>{let s={},l={};for(let e in o)tL.properties.has(e)?s[e]=o[e]:l[e]=o[e];let c=atoms({reset:"string"==typeof e?e:"div",...s});return D.createElement(e,{className:(0,L.Z)(c,t),...l,"data-testid":n?`rk-${n.replace(/^rk-/,"")}`:void 0,ref:i})});tQ.displayName="Box";var tK=new Map,tV=new Map;async function loadAsyncImage(e){let t=tV.get(e);if(t)return t;let load=async()=>e().then(async t=>(tK.set(e,t),t)),n=load().catch(t=>load().catch(t=>{tV.delete(e)}));return tV.set(e,n),n}async function loadImages(...e){return await Promise.all(e.map(e=>"function"==typeof e?loadAsyncImage(e):e))}function useAsyncImage(e){let t="function"==typeof e?tK.get(e):void 0,n=function(){let[,e]=(0,D.useReducer)(e=>e+1,0);return e}();return(0,D.useEffect)(()=>{"function"!=typeof e||t||loadAsyncImage(e).then(n)},[e,t,n]),"function"==typeof e?t:e}function AsyncImage({alt:e,background:t,borderColor:n,borderRadius:o,useAsImage:i,boxShadow:s,height:l,src:c,width:u,testId:d}){let p=isIOS(),f=useAsyncImage(c),m=f&&/^http/.test(f),[g,b]=(0,D.useReducer)(()=>!0,!1);return D.createElement(tQ,{"aria-label":e,borderRadius:o,boxShadow:s,height:"string"==typeof l?l:void 0,overflow:"hidden",position:"relative",role:"img",style:{background:t,height:"number"==typeof l?l:void 0,width:"number"==typeof u?u:void 0},width:"string"==typeof u?u:void 0,testId:d},D.createElement(tQ,{...i?{"aria-hidden":!0,as:"img",src:f}:m?{"aria-hidden":!0,as:"img",onLoad:b,src:f}:{backgroundSize:"cover"},height:"full",position:"absolute",...p?{WebkitUserSelect:"none"}:{},style:{WebkitTouchCallout:"none",transition:"opacity .15s linear",userSelect:"none",...i?{}:m?{opacity:g?1:0}:{backgroundImage:f?`url(${f})`:void 0,backgroundRepeat:"no-repeat",opacity:f?1:0}},width:"full"}),n?D.createElement(tQ,{..."object"==typeof n&&"custom"in n?{style:{borderColor:n.custom}}:{borderColor:n},borderRadius:o,borderStyle:"solid",borderWidth:"1",height:"full",position:"relative",width:"full"}):null)}var useRandomId=e=>(0,D.useMemo)(()=>`${e}_${Math.round(1e9*Math.random())}`,[e]),SpinnerIcon=({height:e=21,width:t=21})=>{let n=useRandomId("spinner");return D.createElement("svg",{className:"_1luule42",fill:"none",height:e,viewBox:"0 0 21 21",width:t,xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Loading"),D.createElement("clipPath",{id:n},D.createElement("path",{d:"M10.5 3C6.35786 3 3 6.35786 3 10.5C3 14.6421 6.35786 18 10.5 18C11.3284 18 12 18.6716 12 19.5C12 20.3284 11.3284 21 10.5 21C4.70101 21 0 16.299 0 10.5C0 4.70101 4.70101 0 10.5 0C16.299 0 21 4.70101 21 10.5C21 11.3284 20.3284 12 19.5 12C18.6716 12 18 11.3284 18 10.5C18 6.35786 14.6421 3 10.5 3Z"})),D.createElement("foreignObject",{clipPath:`url(#${n})`,height:"21",width:"21",x:"0",y:"0"},D.createElement("div",{className:"_1luule43"})))},tZ=[{color:"#FC5C54",emoji:"\uD83C\uDF36"},{color:"#FFD95A",emoji:"\uD83E\uDD11"},{color:"#E95D72",emoji:"\uD83D\uDC19"},{color:"#6A87C8",emoji:"\uD83E\uDED0"},{color:"#5FD0F3",emoji:"\uD83D\uDC33"},{color:"#FC5C54",emoji:"\uD83E\uDD36"},{color:"#75C06B",emoji:"\uD83C\uDF32"},{color:"#FFDD86",emoji:"\uD83C\uDF1E"},{color:"#5FC6D4",emoji:"\uD83D\uDC12"},{color:"#FF949A",emoji:"\uD83D\uDC35"},{color:"#FF8024",emoji:"\uD83E\uDD8A"},{color:"#9BA1A4",emoji:"\uD83D\uDC3C"},{color:"#EC66FF",emoji:"\uD83E\uDD84"},{color:"#FF8CBC",emoji:"\uD83D\uDC37"},{color:"#FF9A23",emoji:"\uD83D\uDC27"},{color:"#FF949A",emoji:"\uD83E\uDDA9"},{color:"#C5DADB",emoji:"\uD83D\uDC7D"},{color:"#FC5C54",emoji:"\uD83C\uDF88"},{color:"#FF949A",emoji:"\uD83C\uDF49"},{color:"#FFD95A",emoji:"\uD83C\uDF89"},{color:"#A8CE63",emoji:"\uD83D\uDC32"},{color:"#71ABFF",emoji:"\uD83C\uDF0E"},{color:"#FFE279",emoji:"\uD83C\uDF4A"},{color:"#B6B1B6",emoji:"\uD83D\uDC2D"},{color:"#FF6780",emoji:"\uD83C\uDF63"},{color:"#FFD95A",emoji:"\uD83D\uDC25"},{color:"#A575FF",emoji:"\uD83D\uDC7E"},{color:"#A8CE63",emoji:"\uD83E\uDD66"},{color:"#FC5C54",emoji:"\uD83D\uDC79"},{color:"#FFE279",emoji:"\uD83D\uDE40"},{color:"#5FD0F3",emoji:"⛱"},{color:"#4D82FF",emoji:"⛵️"},{color:"#FFE279",emoji:"\uD83E\uDD73"},{color:"#FF949A",emoji:"\uD83E\uDD2F"},{color:"#FFB35A",emoji:"\uD83E\uDD20"}],defaultAvatar=({address:e,ensImage:t,size:n})=>{let[o,i]=(0,D.useState)(!1);(0,D.useEffect)(()=>{if(t){let e=new Image;e.src=t,e.onload=()=>i(!0)}},[t]);let{color:s,emoji:l}=(0,D.useMemo)(()=>(function(e){let t=Math.abs(function(e){let t=0;if(0===e.length)return t;for(let n=0;nD.createElement("svg",{fill:"none",height:"7",width:"14",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Dropdown"),D.createElement("path",{d:"M12.75 1.54001L8.51647 5.0038C7.77974 5.60658 6.72026 5.60658 5.98352 5.0038L1.75 1.54001",stroke:"currentColor",strokeLinecap:"round",strokeLinejoin:"round",strokeWidth:"2.5",xmlns:"http://www.w3.org/2000/svg"})),tX=new class{constructor(e){for(let[t,n]of(this.listeners=new Set,this.defaultLocale="en",this.enableFallback=!1,this.locale="en",this.cachedLocales=[],this.translations={},Object.entries(e)))this.cachedLocales=[...this.cachedLocales,t],this.translations={...this.translations,...this.flattenTranslation(n,t)}}missingMessage(e){return`[missing: "${this.locale}.${e}" translation]`}flattenTranslation(e,t){let n={},flatten=(e,t)=>{for(let o of Object.keys(e)){let i=`${t}.${o}`,s=e[o];"object"==typeof s&&null!==s?flatten(s,i):n[i]=s}};return flatten(e,t),n}translateWithReplacements(e,t={}){let n=e;for(let e in t){let o=t[e];n=n.replace(`%{${e}}`,o)}return n}t(e,t,n){let o=`${this.locale}.${e}`,i=this.translations[o];if(!i){if(this.enableFallback){let n=`${this.defaultLocale}.${e}`,o=this.translations[n];if(o)return this.translateWithReplacements(o,t)}return(null==n?void 0:n.rawKeyIfTranslationMissing)?e:this.missingMessage(e)}return this.translateWithReplacements(i,t)}isLocaleCached(e){return this.cachedLocales.includes(e)}updateLocale(e){this.locale=e,this.notifyListeners()}setTranslations(e,t){let n=this.isLocaleCached(e);n||(this.cachedLocales=[...this.cachedLocales,e],this.translations={...this.translations,...this.flattenTranslation(t,e)}),this.locale=e,this.notifyListeners()}notifyListeners(){for(let e of this.listeners)e()}onChange(e){return this.listeners.add(e),()=>{this.listeners.delete(e)}}}({en:JSON.parse(N.I),"en-US":JSON.parse(N.I)});tX.defaultLocale="en-US",tX.locale="en-US",tX.enableFallback=!0;var fetchTranslations=async e=>{switch(e){case"ar":case"ar-AR":return(await n.e(4507).then(n.bind(n,24507))).default;case"en":case"en-US":default:return(await n.e(3688).then(n.bind(n,93688))).default;case"es":case"es-419":return(await n.e(2499).then(n.bind(n,32499))).default;case"fr":case"fr-FR":return(await n.e(8989).then(n.bind(n,78989))).default;case"hi":case"hi-IN":return(await n.e(9212).then(n.bind(n,19212))).default;case"id":case"id-ID":return(await n.e(2840).then(n.bind(n,52840))).default;case"ja":case"ja-JP":return(await n.e(6210).then(n.bind(n,96210))).default;case"ko":case"ko-KR":return(await n.e(1961).then(n.bind(n,61961))).default;case"pt":case"pt-BR":return(await n.e(5850).then(n.bind(n,75850))).default;case"ru":case"ru-RU":return(await n.e(6626).then(n.bind(n,46626))).default;case"th":case"th-TH":return(await n.e(5515).then(n.bind(n,25515))).default;case"tr":case"tr-TR":return(await n.e(499).then(n.bind(n,60499))).default;case"ua":case"uk-UA":return(await n.e(3760).then(n.bind(n,3760))).default;case"zh":case"zh-CN":return(await n.e(2896).then(n.bind(n,72896))).default}};async function setLocale(e){let t=tX.isLocaleCached(e);if(t){tX.updateLocale(e);return}let n=await fetchTranslations(e);tX.setTranslations(e,JSON.parse(n))}var detectedBrowserLocale=()=>{var e;if("undefined"!=typeof window&&"undefined"!=typeof navigator){if(null==(e=navigator.languages)?void 0:e.length)return navigator.languages[0];if(navigator.language)return navigator.language}},tY=(0,D.createContext)({i18n:tX}),I18nProvider=({children:e,locale:t})=>{let[n,o]=(0,D.useState)(0),i=(0,D.useMemo)(()=>detectedBrowserLocale(),[]);(0,D.useEffect)(()=>{let e=tX.onChange(()=>{o(e=>e+1)});return e},[]),(0,D.useEffect)(()=>{t&&t!==tX.locale?setLocale(t):!t&&i&&i!==tX.locale&&setLocale(i)},[t,i]);let s=(0,D.useMemo)(()=>({t:(e,t)=>tX.t(e,t),i18n:tX}),[n]);return D.createElement(tY.Provider,{value:s},e)};function isNotNullish(e){return null!=e}var t$={iconBackground:"#96bedc",iconUrl:async()=>(await n.e(1727).then(n.bind(n,1727))).default},t0={iconBackground:"#e84141",iconUrl:async()=>(await n.e(6237).then(n.bind(n,36237))).default},t1={iconBackground:"#0052ff",iconUrl:async()=>(await n.e(1711).then(n.bind(n,41711))).default},t6={iconBackground:"#ebac0e",iconUrl:async()=>(await n.e(4253).then(n.bind(n,84253))).default},t3={iconBackground:"#002D74",iconUrl:async()=>(await n.e(5939).then(n.bind(n,95939))).default},t2={iconBackground:"#484c50",iconUrl:async()=>(await n.e(5488).then(n.bind(n,85488))).default},t7={iconBackground:"#ff5a57",iconUrl:async()=>(await n.e(704).then(n.bind(n,60704))).default},t8={iconBackground:"#9f71ec",iconUrl:async()=>(await n.e(8881).then(n.bind(n,48881))).default},t5={iconBackground:"#f9f7ec",iconUrl:async()=>(await n.e(135).then(n.bind(n,70135))).default},t4={iconBackground:"#f9f7ec",iconUrl:async()=>(await n.e(4583).then(n.bind(n,94583))).default},t9={iconBackground:"#000000",iconUrl:async()=>(await n.e(5119).then(n.bind(n,65119))).default},re=Object.fromEntries(Object.values({arbitrum:{chainId:42161,name:"Arbitrum",...t$},arbitrumGoerli:{chainId:421613,...t$},arbitrumSepolia:{chainId:421614,...t$},avalanche:{chainId:43114,...t0},avalancheFuji:{chainId:43113,...t0},base:{chainId:8453,name:"Base",...t1},baseGoerli:{chainId:84531,...t1},baseSepolia:{chainId:84532,...t1},bsc:{chainId:56,name:"BSC",...t6},bscTestnet:{chainId:97,...t6},cronos:{chainId:25,...t3},cronosTestnet:{chainId:338,...t3},goerli:{chainId:5,...t2},hardhat:{chainId:31337,iconBackground:"#f9f7ec",iconUrl:async()=>(await n.e(6253).then(n.bind(n,26253))).default},holesky:{chainId:17e3,...t2},kovan:{chainId:42,...t2},localhost:{chainId:1337,...t2},mainnet:{chainId:1,name:"Ethereum",...t2},optimism:{chainId:10,name:"Optimism",...t7},optimismGoerli:{chainId:420,...t7},optimismKovan:{chainId:69,...t7},optimismSepolia:{chainId:11155420,...t7},polygon:{chainId:137,name:"Polygon",...t8},polygonMumbai:{chainId:80001,...t8},rinkeby:{chainId:4,...t2},ropsten:{chainId:3,...t2},ronin:{chainId:2020,iconBackground:"#1273EA",iconUrl:async()=>(await n.e(1424).then(n.bind(n,81424))).default},sepolia:{chainId:11155111,...t2},xdc:{chainId:50,name:"XinFin",...t5},xdcTestnet:{chainId:51,...t5},zkSync:{chainId:324,name:"zkSync",...t4},zkSyncTestnet:{chainId:280,...t4},zora:{chainId:7777777,name:"Zora",...t9},zoraSepolia:{chainId:999999999,...t9},zoraTestnet:{chainId:999,...t9}}).filter(isNotNullish).map(({chainId:e,...t})=>[e,t])),provideRainbowKitChains=e=>e.map(e=>{var t,n,o,i;let s=null!=(t=re[e.id])?t:{};return{...e,name:null!=(n=s.name)?n:e.name,iconUrl:null!=(o=e.iconUrl)?o:s.iconUrl,iconBackground:null!=(i=e.iconBackground)?i:s.iconBackground}}),rt=(0,D.createContext)({chains:[]});function RainbowKitChainProvider({children:e,initialChain:t}){let{chains:n}=(0,z.Z)();return D.createElement(rt.Provider,{value:(0,D.useMemo)(()=>({chains:provideRainbowKitChains(n),initialChainId:"number"==typeof t?t:null==t?void 0:t.id}),[n,t])},e)}var useRainbowKitChains=()=>(0,D.useContext)(rt).chains,useInitialChainId=()=>(0,D.useContext)(rt).initialChainId,useRainbowKitChainsById=()=>{let e=useRainbowKitChains();return(0,D.useMemo)(()=>{let t={};for(let n of e)t[n.id]=n;return t},[e])},rr=(0,D.createContext)({showBalance:void 0,setShowBalance:()=>{}});function ShowBalanceProvider({children:e}){let[t,n]=(0,D.useState)();return D.createElement(rr.Provider,{value:{showBalance:t,setShowBalance:n}},e)}var useShowBalance=()=>(0,D.useContext)(rr);function useIsMainnetConfigured(){let e=useRainbowKitChains(),t=ex.R.id,n=e.some(e=>e.id===t);return n}function useMainnetEnsAvatar(e){var t;let n=useIsMainnetConfigured(),{data:o}=function(e={}){let{name:t,query:n={}}=e,o=(0,z.Z)(e),i=useChainId(),s=function(e,t={}){return{async queryFn({queryKey:t}){let{name:n,scopeKey:o,...i}=t[1];if(!n)throw Error("name is required");return function(e,t){let{chainId:n,...o}=t,i=e.getClient({chainId:n}),s=(0,K.s)(i,getEnsAvatar,"getEnsAvatar");return s(o)}(e,{...i,name:n})},queryKey:function(e={}){return["ensAvatar",filterQueryOptions(e)]}(t)}}(o,{...e,chainId:e.chainId??i}),l=!!(t&&(n.enabled??!0));return query_useQuery({...n,...s,enabled:l})}({chainId:ex.R.id,name:e?(t=function(e,t,n){if(!e)return[];init();let o=0;return e.split(".").map(e=>{let i=function(e){let t=[];for(let n=0,o=e.length;n0;)if(95!==e[--t])throw Error("underscore allowed only at start")}(f),!(s.emoji=l>1||o[0].is_emoji)&&f.every(e=>e<128))!function(e){if(e.length>=4&&45==e[2]&&45==e[3])throw Error(`invalid label extension: "${str_from_cps(e.slice(0,4))}"`)}(f),e="ASCII";else{let t=o.flatMap(e=>e.is_emoji?[]:e);if(t.length){if(d.has(f[0]))throw error_placement("leading combining mark");for(let e=1;egroup_has_cp(e,n));if(!e.length){if(m.some(e=>group_has_cp(e,n)))throw error_group_member(t[0],n);throw error_disallowed(n)}if(t=e,1==e.length)break}return t}(n);(function(e,t){for(let n of t)if(!group_has_cp(e,n))throw error_group_member(e,n);if(e.M){let e=decomposed(t).map(unpack_cp);for(let t=1,n=e.length;t4)throw Error(`excessive non-spacing marks: ${bidi_qq(safe_str_from_cps(e.slice(t-1,o)))} (${o-t}/4)`);t=o}}})(i,t),function(e,t){let n;let o=[];for(let e of t){let t=b.get(e);if(1===t)return;if(t){let o=t.M.get(e);if(!(n=n?n.filter(e=>o.has(e)):Array_from(o)).length)return}else o.push(e)}if(n){for(let t of n)if(o.every(e=>group_has_cp(t,e)))throw Error(`whole-script confusable: ${e.N}/${t.N}`)}}(i,n),e=i.N}else e="Emoji"}s.type=e}catch(e){s.error=e}return s})}(e,nfc,filter_fe0f)).map(({input:e,error:n,output:o})=>{if(n){let o=n.message;throw Error(1==t.length?o:`Invalid label ${bidi_qq(safe_str_from_cps(e))}: ${o}`)}return str_from_cps(o)}).join("."):void 0,query:{enabled:n}});return o}function useMainnetEnsName(e){let t=useIsMainnetConfigured(),{data:n}=function(e={}){let{address:t,query:n={}}=e,o=(0,z.Z)(e),i=useChainId(),s=function(e,t={}){return{async queryFn({queryKey:t}){let{address:n,scopeKey:o,...i}=t[1];if(!n)throw Error("address is required");return function(e,t){let{chainId:n,...o}=t,i=e.getClient({chainId:n}),s=(0,K.s)(i,getEnsName,"getEnsName");return s(o)}(e,{...i,address:n})},queryKey:function(e={}){return["ensName",filterQueryOptions(e)]}(t)}}(o,{...e,chainId:e.chainId??i}),l=!!(t&&(n.enabled??!0));return query_useQuery({...n,...s,enabled:l})}({chainId:ex.R.id,address:e,query:{enabled:t}});return n}function dist_useChainId(){var e;let{chain:t}=(0,_.m)();return null!=(e=null==t?void 0:t.id)?e:null}var rn="rk-transactions";function loadData(){return function(e){try{let t=e?JSON.parse(e):{};return"object"==typeof t?t:{}}catch{return{}}}("undefined"!=typeof localStorage?localStorage.getItem(rn):null)}var ra=/^0x([A-Fa-f0-9]{64})$/,ro=(0,D.createContext)(null);function TransactionStoreProvider({children:e}){let t=function(e={}){let t=(0,z.Z)(e);return(0,e5.useSyncExternalStoreWithSelector)(e=>(function(e,t){let{onChange:n}=t;return e.subscribe(()=>getPublicClient(e),n,{equalityFn:(e,t)=>e?.uid===t?.uid})})(t,{onChange:e}),()=>getPublicClient(t,e),()=>getPublicClient(t,e),e=>e,(e,t)=>e?.uid===t?.uid)}(),{address:n}=(0,_.m)(),o=dist_useChainId(),[i]=(0,D.useState)(()=>null!=T?T:T=function({provider:e}){let t=loadData(),n=e,o=new Set,i=new Map;function getTransactions(e,n){var o,i;return null!=(i=null==(o=t[e])?void 0:o[n])?i:[]}function setTransactionStatus(e,t,n,o){updateTransactions(e,t,e=>e.map(e=>e.hash===n?{...e,status:o}:e))}async function waitForPendingTransactions(e,t){await Promise.all(getTransactions(e,t).filter(e=>"pending"===e.status).map(async o=>{let{confirmations:s,hash:l}=o,c=i.get(l);if(c)return await c;let u=n.waitForTransactionReceipt({confirmations:s,hash:l,timeout:3e5}).then(({status:n})=>{i.delete(l),void 0!==n&&setTransactionStatus(e,t,l,0===n||"reverted"===n?"failed":"confirmed")}).catch(()=>{setTransactionStatus(e,t,l,"failed")});return i.set(l,u),await u}))}function updateTransactions(e,n,i){var s,l;(t=loadData())[e]=null!=(s=t[e])?s:{};let c=0,u=i(null!=(l=t[e][n])?l:[]).filter(({status:e})=>"pending"===e||c++<=10);t[e][n]=u.length>0?u:void 0,localStorage.setItem(rn,JSON.stringify(t)),function(){for(let e of o)e()}(),waitForPendingTransactions(e,n)}return{addTransaction:function(e,t,n){let o=function(e){let t=[];return ra.test(e.hash)||t.push("Invalid transaction hash"),"string"!=typeof e.description&&t.push("Transaction must have a description"),void 0!==e.confirmations&&(!Number.isInteger(e.confirmations)||e.confirmations<1)&&t.push("Transaction confirmations must be a positiver integer"),t}(n);if(o.length>0)throw Error(["Unable to add transaction",...o].join("\n"));updateTransactions(e,t,e=>[{...n,status:"pending"},...e.filter(({hash:e})=>e!==n.hash)])},clearTransactions:function(e,t){updateTransactions(e,t,()=>[])},getTransactions,onChange:function(e){return o.add(e),()=>{o.delete(e)}},setProvider:function(e){n=e},waitForPendingTransactions}}({provider:t}));return(0,D.useEffect)(()=>{i.setProvider(t)},[i,t]),(0,D.useEffect)(()=>{n&&o&&i.waitForPendingTransactions(n,o)},[i,n,o]),D.createElement(ro.Provider,{value:i},e)}function useTransactionStore(){let e=(0,D.useContext)(ro);if(!e)throw Error("Transaction hooks must be used within RainbowKitProvider");return e}function useRecentTransactions(){let e=useTransactionStore(),{address:t}=(0,_.m)(),n=dist_useChainId(),[o,i]=(0,D.useState)(()=>e&&t&&n?e.getTransactions(t,n):[]);return(0,D.useEffect)(()=>{if(e&&t&&n)return i(e.getTransactions(t,n)),e.onChange(()=>{i(e.getTransactions(t,n))})},[e,t,n]),o}var resolveThemeVars=e=>"function"==typeof e?e():e;function cssStringFromTheme(e,t={}){return Object.entries(function(e,{extends:t}={}){let n={...assignInlineVars(tz,resolveThemeVars(e))};if(!t)return n;let o=assignInlineVars(tz,resolveThemeVars(t)),i=Object.fromEntries(Object.entries(n).filter(([e,t])=>t!==o[e]));return i}(e,t)).map(([e,t])=>`${e}:${t.replace(/[:;{}]/g,"")};`).join("")}var ri={appName:void 0,disclaimer:void 0,learnMoreUrl:"https://learn.rainbow.me/understanding-web3?utm_source=rainbowkit&utm_campaign=learnmore"},rs=(0,D.createContext)(ri),rl=(0,D.createContext)(!1),useWindowSize=()=>{let[e,t]=(0,D.useState)({height:void 0,width:void 0});return(0,D.useEffect)(()=>{var e;let n;let o=(e=()=>{t({height:window.innerHeight,width:window.innerWidth})},()=>{n&&clearTimeout(n),n=setTimeout(()=>{n=null,e()},500)});return window.addEventListener("resize",o),o(),()=>window.removeEventListener("resize",o)},[]),e},rc=(0,D.createContext)({connector:null,setConnector:()=>{}});function WalletButtonProvider({children:e}){let[t,n]=(0,D.useState)(null);return D.createElement(rc.Provider,{value:(0,D.useMemo)(()=>({connector:t,setConnector:n}),[t])},e)}var ru={COMPACT:"compact",WIDE:"wide"},rd=(0,D.createContext)(ru.WIDE);function ModalSizeProvider({children:e,modalSize:t}){let{width:n}=useWindowSize(),{connector:o}=(0,D.useContext)(rc);return D.createElement(rd.Provider,{value:n&&n<768||o?ru.COMPACT:t},e)}var rp=(0,D.createContext)(!1);function isSafari(){return"undefined"!=typeof navigator&&/Version\/([0-9._]+).*Safari/.test(navigator.userAgent)}function getBrowser(){var e;if("undefined"==typeof navigator)return"Browser";let t=navigator.userAgent.toLowerCase();return(null==(e=navigator.brave)?void 0:e.isBrave)?"Brave":t.indexOf("edg/")>-1?"Edge":t.indexOf("op")>-1?"Opera":"undefined"!=typeof document&&""!==getComputedStyle(document.body).getPropertyValue("--arc-palette-focus")?"Arc":t.indexOf("chrome")>-1?"Chrome":t.indexOf("firefox")>-1?"Firefox":isSafari()?"Safari":"Browser"}var{os:rh}=(0,tE.UAParser)();function getPlatform(){return"Windows"===rh.name?"Windows":"Mac OS"===rh.name?"macOS":["Ubuntu","Mint","Fedora","Debian","Arch","Linux"].includes(rh.name)?"Linux":"Desktop"}var getExtensionDownloadUrl=e=>{var t,n,o,i,s,l,c,u,d,p,f,m;let g=getBrowser();return null!=(m=({Arc:null==(t=null==e?void 0:e.downloadUrls)?void 0:t.chrome,Brave:null==(n=null==e?void 0:e.downloadUrls)?void 0:n.chrome,Chrome:null==(o=null==e?void 0:e.downloadUrls)?void 0:o.chrome,Edge:(null==(i=null==e?void 0:e.downloadUrls)?void 0:i.edge)||(null==(s=null==e?void 0:e.downloadUrls)?void 0:s.chrome),Firefox:null==(l=null==e?void 0:e.downloadUrls)?void 0:l.firefox,Opera:(null==(c=null==e?void 0:e.downloadUrls)?void 0:c.opera)||(null==(u=null==e?void 0:e.downloadUrls)?void 0:u.chrome),Safari:null==(d=null==e?void 0:e.downloadUrls)?void 0:d.safari,Browser:null==(p=null==e?void 0:e.downloadUrls)?void 0:p.browserExtension})[g])?m:null==(f=null==e?void 0:e.downloadUrls)?void 0:f.browserExtension},getMobileDownloadUrl=e=>{var t,n,o,i;let s=isIOS();return null!=(i=s?null==(t=null==e?void 0:e.downloadUrls)?void 0:t.ios:null==(n=null==e?void 0:e.downloadUrls)?void 0:n.android)?i:null==(o=null==e?void 0:e.downloadUrls)?void 0:o.mobile},getDesktopDownloadUrl=e=>{var t,n,o,i,s,l;let c=getPlatform();return null!=(l=({Windows:null==(t=null==e?void 0:e.downloadUrls)?void 0:t.windows,macOS:null==(n=null==e?void 0:e.downloadUrls)?void 0:n.macos,Linux:null==(o=null==e?void 0:e.downloadUrls)?void 0:o.linux,Desktop:null==(i=null==e?void 0:e.downloadUrls)?void 0:i.desktop})[c])?l:null==(s=null==e?void 0:e.downloadUrls)?void 0:s.desktop},isRecentWallet=(e,t)=>e.some(e=>e.id===t),isRainbowKitConnector=e=>!!e.isRainbowKitConnector,isEIP6963Connector=e=>{var t;return!!(!e.isRainbowKitConnector&&(null==(t=e.icon)?void 0:t.startsWith("data:image"))&&e.uid&&e.name)},rainbowKitConnectorWithWalletConnect=(e,t)=>{let n="walletConnect"===e.id&&t;return n?{...e,walletConnectModalConnector:t}:e},connectorsWithRecentWallets=({wallets:e,recentWallets:t})=>[...t,...e.filter(e=>!isRecentWallet(t,e.id))],rf="rk-recent";function getRecentWalletIds(){return"undefined"!=typeof localStorage?function(e){try{let t=e?JSON.parse(e):[];return Array.isArray(t)?t:[]}catch{return[]}}(localStorage.getItem(rf)):[]}function useWalletConnectors(e=!1){var t,n,o,i;let s=useRainbowKitChains(),l=useInitialChainId(),{connectAsync:c,connectors:u}=function(e={}){let{mutation:t}=e,n=(0,z.Z)(e),o=function(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e._internal.connectors.subscribe((e,t)=>{n(Object.values(e),t)})})(t,{onChange:e}),()=>getConnectors(t),()=>getConnectors(t))}({config:n}),{mutate:i,mutateAsync:s,...l}=(0,e9.D)({...t,mutationFn:e=>connect(n,e),mutationKey:["connect"]});return(0,D.useEffect)(()=>n.subscribe(({status:e})=>e,(e,t)=>{"connected"===t&&"disconnected"===e&&l.reset()}),[n,l]),{...l,connect:i,connectAsync:s,connectors:o}}(),{setIsWalletConnectModalOpen:d}=useWalletConnectOpenState(),p=u.map(e=>({...e,...e.rkDetails||{}}));async function connectWallet(e){var t,n,o;let i=await e.getChainId(),u=await c({chainId:null!=(o=null!=l?l:null==(t=s.find(({id:e})=>e===i))?void 0:t.id)?o:null==(n=s[0])?void 0:n.id,connector:e});return u&&function(e){var t;let n=(t=[e,...getRecentWalletIds()],[...new Set(t)]);localStorage.setItem(rf,JSON.stringify(n))}(e.id),u}async function connectToWalletConnectModal(e){try{d(!0),await connectWallet(e),d(!1)}catch(t){let e="UserRejectedRequestError"===t.name||"Connection request reset. Please try again."===t.message;if(d(!1),!e)throw t}}let getWalletConnectUri=async(e,t)=>{let n=await e.getProvider();return"coinbase"===e.id?n.qrUrl:new Promise(e=>n.once("display_uri",n=>{e(t(n))}))},f=p.find(e=>"walletConnect"===e.id&&e.isWalletConnectModalConnector),m=p.filter(isEIP6963Connector).map(e=>({...e,groupIndex:0})),g=p.filter(isRainbowKitConnector).filter(e=>!e.isWalletConnectModalConnector).filter(t=>{if(!e)return!0;let n=m.some(e=>e.id===t.rdns);return!n}).map(e=>rainbowKitConnectorWithWalletConnect(e,f)),b=[...m,...g],y=function(e,t){let n={};for(let o of e){let e=t(o);e&&(n[e]=o)}return n}(b,e=>e.id),v=getRecentWalletIds().map(e=>y[e]).filter(Boolean).slice(0,3),w=[],C=connectorsWithRecentWallets({wallets:b,recentWallets:v});for(let e of C){if(!e)continue;let s=isEIP6963Connector(e),l=isRecentWallet(v,e.id);if(s){w.push({...e,iconUrl:e.icon,ready:!0,connect:()=>connectWallet(e),groupName:"Installed",recent:l});continue}w.push({...e,ready:null==(t=e.installed)||t,connect:()=>connectWallet(e),desktopDownloadUrl:getDesktopDownloadUrl(e),extensionDownloadUrl:getExtensionDownloadUrl(e),groupName:e.groupName,mobileDownloadUrl:getMobileDownloadUrl(e),getQrCodeUri:(null==(n=e.qrCode)?void 0:n.getUri)?()=>getWalletConnectUri(e,e.qrCode.getUri):void 0,getDesktopUri:(null==(o=e.desktop)?void 0:o.getUri)?()=>getWalletConnectUri(e,e.desktop.getUri):void 0,getMobileUri:(null==(i=e.mobile)?void 0:i.getUri)?()=>{var t;return getWalletConnectUri(e,null==(t=e.mobile)?void 0:t.getUri)}:void 0,recent:l,showWalletConnectModal:e.walletConnectModalConnector?()=>connectToWalletConnectModal(e.walletConnectModalConnector):void 0})}return w}var src=async()=>(await n.e(794).then(n.bind(n,20794))).default,preloadAssetsIcon=()=>loadImages(src),AssetsIcon=()=>D.createElement(AsyncImage,{background:"#d0d5de",borderRadius:"10",height:"48",src,width:"48"}),src2=async()=>(await n.e(3200).then(n.bind(n,3200))).default,preloadLoginIcon=()=>loadImages(src2),LoginIcon=()=>D.createElement(AsyncImage,{background:"#d0d5de",borderRadius:"10",height:"48",src:src2,width:"48"}),rm=D.forwardRef(({as:e="div",children:t,className:n,color:o,display:i,font:s="body",id:l,size:c="16",style:u,tabIndex:d,textAlign:p="inherit",weight:f="regular",testId:m},g)=>D.createElement(tQ,{as:e,className:n,color:o,display:i,fontFamily:s,fontSize:c,fontWeight:f,id:l,ref:g,style:u,tabIndex:d,textAlign:p,testId:m},t));rm.displayName="Text";var rg={large:{fontSize:"16",paddingX:"24",paddingY:"10"},medium:{fontSize:"14",height:"28",paddingX:"12",paddingY:"4"},small:{fontSize:"14",paddingX:"10",paddingY:"5"}};function ActionButton({disabled:e=!1,href:t,label:n,onClick:o,rel:i="noreferrer noopener",size:s="medium",target:l="_blank",testId:c,type:u="primary"}){let d="primary"===u,p="large"!==s,f=isMobile(),m=e?"actionButtonSecondaryBackground":d?"accentColor":p?"actionButtonSecondaryBackground":null,{fontSize:g,height:b,paddingX:y,paddingY:v}=rg[s];return D.createElement(tQ,{...t?e?{}:{as:"a",href:t,rel:i,target:l}:{as:"button",type:"button"},onClick:e?void 0:o,...f&&p?{}:{borderColor:!f||p||d?"actionButtonBorder":"actionButtonBorderMobile",borderStyle:"solid",borderWidth:"1"},borderRadius:"actionButton",className:!e&&touchableStyles({active:"shrinkSm",hover:"grow"}),display:"block",paddingX:y,paddingY:v,style:{willChange:"transform"},testId:c,textAlign:"center",transition:"transform",...m?{background:m}:{},...b?{height:b}:{}},D.createElement(rm,{color:e?"modalTextSecondary":d?"accentColorForeground":"accentColor",size:g,weight:"bold"},n))}var CloseIcon=()=>isMobile()?D.createElement("svg",{"aria-hidden":!0,fill:"none",height:"11.5",viewBox:"0 0 11.5 11.5",width:"11.5",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Close"),D.createElement("path",{d:"M2.13388 0.366117C1.64573 -0.122039 0.854272 -0.122039 0.366117 0.366117C-0.122039 0.854272 -0.122039 1.64573 0.366117 2.13388L3.98223 5.75L0.366117 9.36612C-0.122039 9.85427 -0.122039 10.6457 0.366117 11.1339C0.854272 11.622 1.64573 11.622 2.13388 11.1339L5.75 7.51777L9.36612 11.1339C9.85427 11.622 10.6457 11.622 11.1339 11.1339C11.622 10.6457 11.622 9.85427 11.1339 9.36612L7.51777 5.75L11.1339 2.13388C11.622 1.64573 11.622 0.854272 11.1339 0.366117C10.6457 -0.122039 9.85427 -0.122039 9.36612 0.366117L5.75 3.98223L2.13388 0.366117Z",fill:"currentColor"})):D.createElement("svg",{"aria-hidden":!0,fill:"none",height:"10",viewBox:"0 0 10 10",width:"10",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Close"),D.createElement("path",{d:"M1.70711 0.292893C1.31658 -0.0976311 0.683417 -0.0976311 0.292893 0.292893C-0.0976311 0.683417 -0.0976311 1.31658 0.292893 1.70711L3.58579 5L0.292893 8.29289C-0.0976311 8.68342 -0.0976311 9.31658 0.292893 9.70711C0.683417 10.0976 1.31658 10.0976 1.70711 9.70711L5 6.41421L8.29289 9.70711C8.68342 10.0976 9.31658 10.0976 9.70711 9.70711C10.0976 9.31658 10.0976 8.68342 9.70711 8.29289L6.41421 5L9.70711 1.70711C10.0976 1.31658 10.0976 0.683417 9.70711 0.292893C9.31658 -0.0976311 8.68342 -0.0976311 8.29289 0.292893L5 3.58579L1.70711 0.292893Z",fill:"currentColor"})),CloseButton=({"aria-label":e="Close",onClose:t})=>{let n=isMobile();return D.createElement(tQ,{alignItems:"center","aria-label":e,as:"button",background:"closeButtonBackground",borderColor:"actionButtonBorder",borderRadius:"full",borderStyle:"solid",borderWidth:n?"0":"1",className:touchableStyles({active:"shrinkSm",hover:"growLg"}),color:"closeButton",display:"flex",height:n?"30":"28",justifyContent:"center",onClick:t,style:{willChange:"transform"},transition:"default",type:"button",width:n?"30":"28"},D.createElement(CloseIcon,null))},signInIcon=async()=>(await n.e(2898).then(n.bind(n,92898))).default;function SignIn({onClose:e,onCloseModal:t}){let{i18n:n}=(0,D.useContext)(tY),[{status:o,...i},s]=D.useState({status:"idle"}),l=function(){var e;let{adapter:t}=null!=(e=(0,D.useContext)(tW))?e:{};if(!t)throw Error("No authentication adapter found");return t}(),c=(0,D.useCallback)(async()=>{try{let e=await l.getNonce();s(t=>({...t,nonce:e}))}catch{s(e=>({...e,errorMessage:n.t("sign_in.message.preparing_error"),status:"idle"}))}},[l,n.t]),u=(0,D.useRef)(!1);D.useEffect(()=>{u.current||(u.current=!0,c())},[c]);let d=isMobile(),{address:p,chain:f}=(0,_.m)(),{signMessageAsync:m}=(0,tx.Q)(),signIn=async()=>{try{let e;let o=null==f?void 0:f.id,{nonce:c}=i;if(!p||!o||!c)return;s(e=>({...e,errorMessage:void 0,status:"signing"}));let u=l.createMessage({address:p,chainId:o,nonce:c});try{e=await m({message:l.getMessageBody({message:u})})}catch(e){if(e instanceof et.ab)return s(e=>({...e,status:"idle"}));return s(e=>({...e,errorMessage:n.t("sign_in.signature.signing_error"),status:"idle"}))}s(e=>({...e,status:"verifying"}));try{let n=await l.verify({message:u,signature:e});if(n){t();return}throw Error()}catch{return s(e=>({...e,errorMessage:n.t("sign_in.signature.verifying_error"),status:"idle"}))}}catch{s({errorMessage:n.t("sign_in.signature.oops_error"),status:"idle"})}};return D.createElement(tQ,{position:"relative"},D.createElement(tQ,{display:"flex",paddingRight:"16",paddingTop:"16",position:"absolute",right:"0"},D.createElement(CloseButton,{onClose:e})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"32":"24",padding:"24",paddingX:"18",style:{paddingTop:d?"60px":"36px"}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"6":"4",style:{maxWidth:d?320:280}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"32":"16"},D.createElement(AsyncImage,{height:40,src:signInIcon,width:40}),D.createElement(rm,{color:"modalText",size:d?"20":"18",textAlign:"center",weight:"heavy"},n.t("sign_in.label"))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:d?"16":"12"},D.createElement(rm,{color:"modalTextSecondary",size:d?"16":"14",textAlign:"center"},n.t("sign_in.description")),"idle"===o&&i.errorMessage?D.createElement(rm,{color:"error",size:d?"16":"14",textAlign:"center",weight:"bold"},i.errorMessage):null)),D.createElement(tQ,{alignItems:d?void 0:"center",display:"flex",flexDirection:"column",gap:"8",width:"full"},D.createElement(ActionButton,{disabled:!i.nonce||"signing"===o||"verifying"===o,label:i.nonce?"signing"===o?n.t("sign_in.signature.waiting"):"verifying"===o?n.t("sign_in.signature.verifying"):n.t("sign_in.message.send"):n.t("sign_in.message.preparing"),onClick:signIn,size:d?"large":"medium",testId:"auth-message-button"}),d?D.createElement(ActionButton,{label:"Cancel",onClick:e,size:"large",type:"secondary"}):D.createElement(tQ,{as:"button",borderRadius:"full",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",onClick:e,paddingX:"10",paddingY:"5",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"closeButton",size:d?"16":"14",weight:"bold"},n.t("sign_in.message.cancel"))))))}var rb="WALLETCONNECT_DEEPLINK_CHOICE";function clearWalletConnectDeepLink(){localStorage.removeItem(rb)}var ry=(0,D.createContext)(void 0),rv="data-rk",createThemeRootProps=e=>({[rv]:e||""}),createThemeRootSelector=e=>{if(e&&!/^[a-zA-Z0-9_]+$/.test(e))throw Error(`Invalid ID: ${e}`);return e?`[${rv}="${e}"]`:`[${rv}]`},useThemeRootProps=()=>{let e=(0,D.useContext)(ry);return createThemeRootProps(e)},rw=lightTheme();function RainbowKitProvider({appInfo:e,avatar:t,children:n,coolMode:o=!1,id:i,initialChain:s,locale:l,modalSize:c=ru.WIDE,showRecentTransactions:u=!1,theme:d=rw}){if(!function(){let e=useRainbowKitChains(),t=useWalletConnectors(),n="unauthenticated"===useAuthenticationStatus(),o=(0,D.useCallback)(()=>{loadImages(...t.map(e=>e.iconUrl),...e.map(e=>e.iconUrl).filter(isNotNullish)),isMobile()||(preloadAssetsIcon(),preloadLoginIcon()),n&&loadImages(signInIcon)},[t,e,n]);(0,D.useEffect)(()=>{o()},[o])}(),!function(){let e=(0,D.useCallback)(()=>{!function({version:e}){localStorage.setItem("rk-version",e)}({version:"2.0.2"})},[]);(0,D.useEffect)(()=>{e()},[e])}(),useAccountEffect_useAccountEffect({onDisconnect:clearWalletConnectDeepLink}),"function"==typeof d)throw Error('A theme function was provided to the "theme" prop instead of a theme object. You must execute this function to get the resulting theme object.');let p=createThemeRootSelector(i),f={...ri,...e},m=null!=t?t:defaultAvatar;return D.createElement(RainbowKitChainProvider,{initialChain:s},D.createElement(WalletButtonProvider,null,D.createElement(I18nProvider,{locale:l},D.createElement(rl.Provider,{value:o},D.createElement(ModalSizeProvider,{modalSize:c},D.createElement(rp.Provider,{value:u},D.createElement(TransactionStoreProvider,null,D.createElement(tJ.Provider,{value:m},D.createElement(rs.Provider,{value:f},D.createElement(ry.Provider,{value:i},D.createElement(ShowBalanceProvider,null,D.createElement(ModalProvider,null,d?D.createElement("div",{...createThemeRootProps(i)},D.createElement("style",{dangerouslySetInnerHTML:{__html:[`${p}{${cssStringFromTheme("lightMode"in d?d.lightMode:d)}}`,"darkMode"in d?`@media(prefers-color-scheme:dark){${p}{${cssStringFromTheme(d.darkMode,{extends:d.lightMode})}}}`:null].join("")}}),n):n))))))))))))}var moveFocusWithin=(e,t)=>{let n=e.querySelectorAll("button:not(:disabled), a[href]");0!==n.length&&n["end"===t?n.length-1:0].focus()};function FocusTrap(e){let t=(0,D.useRef)(null);return(0,D.useEffect)(()=>{let e=document.activeElement;return()=>{var t;null==(t=e.focus)||t.call(e)}},[]),(0,D.useEffect)(()=>{if(t.current){let e=t.current.querySelector("[data-auto-focus]");e?e.focus():t.current.focus()}},[]),D.createElement(D.Fragment,null,D.createElement("div",{onFocus:(0,D.useCallback)(()=>t.current&&moveFocusWithin(t.current,"end"),[]),tabIndex:0}),D.createElement("div",{ref:t,style:{outline:"none"},tabIndex:-1,...e}),D.createElement("div",{onFocus:(0,D.useCallback)(()=>t.current&&moveFocusWithin(t.current,"start"),[]),tabIndex:0}))}var stopPropagation=e=>e.stopPropagation();function Dialog({children:e,onClose:t,open:n,titleId:o}){(0,D.useEffect)(()=>{let handleEscape=e=>n&&"Escape"===e.key&&t();return document.addEventListener("keydown",handleEscape),()=>document.removeEventListener("keydown",handleEscape)},[n,t]);let[i,s]=(0,D.useState)(!0);(0,D.useEffect)(()=>{s("hidden"!==getComputedStyle(window.document.body).overflow)},[]);let l=(0,D.useCallback)(()=>t(),[t]),c=useThemeRootProps(),u=isMobile();return D.createElement(D.Fragment,null,n?(0,tr.createPortal)(D.createElement(tv,{enabled:i},D.createElement(tQ,{...c},D.createElement(tQ,{...c,alignItems:u?"flex-end":"center","aria-labelledby":o,"aria-modal":!0,className:"_9pm4ki3 ju367v9h ju367vb3 ju367va ju367v2q ju367v8q",onClick:l,position:"fixed",role:"dialog"},D.createElement(FocusTrap,{className:"_9pm4ki5 ju367va ju367v15 ju367v8r",onClick:stopPropagation,role:"document"},e)))),document.body):null)}function DialogContent({bottomSheetOnMobile:e=!1,children:t,marginTop:n,padding:o="16",paddingBottom:i,wide:s=!1}){let l=isMobile(),c=(0,D.useContext)(rd),u=c===ru.COMPACT;return D.createElement(tQ,{marginTop:n},D.createElement(tQ,{className:[s?l?"_1ckjpok2 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r":u?"_1ckjpok4 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r":"_1ckjpok3 _1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r":"_1ckjpok1 ju367vb6 ju367vdr ju367vp ju367vt ju367vv ju367vel ju367va ju367v15 ju367v6c ju367v8r",l?"_1ckjpok6 ju367vq":null,l&&e?"_1ckjpok7":null].join(" ")},D.createElement(tQ,{padding:o,paddingBottom:null!=i?i:o},t)))}var rC=["k","m","b","t"];function toPrecision(e,t=1){return e.toString().replace(RegExp(`(.+\\.\\d{${t}})\\d+`),"$1").replace(/(\.[1-9]*)0+$/,"$1").replace(/\.$/,"")}function abbreviateETHBalance(e){if(e<1)return toPrecision(e,3);if(e<100)return toPrecision(e,2);if(e<1e4)return new Intl.NumberFormat().format(parseFloat(toPrecision(e,1)));let t=String(e);for(let n=rC.length-1;n>=0;n--){let o=10**((n+1)*3);if(o<=e){t=toPrecision(e=10*e/o/10,1)+rC[n];break}}return t}function formatAddress(e){return e.length<8?e:`${e.substring(0,4)}\u2026${e.substring(e.length-4)}`}function formatENS(e){if(!e)return"";let t=e.split("."),n=t.pop();return t.join(".").length>24?`${t.join(".").substring(0,24)}...`:`${t.join(".")}.${n}`}var CopiedIcon=()=>D.createElement("svg",{fill:"none",height:"13",viewBox:"0 0 13 13",width:"13",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Copied"),D.createElement("path",{d:"M4.94568 12.2646C5.41052 12.2646 5.77283 12.0869 6.01892 11.7109L12.39 1.96973C12.5677 1.69629 12.6429 1.44336 12.6429 1.2041C12.6429 0.561523 12.1644 0.0966797 11.5082 0.0966797C11.057 0.0966797 10.7767 0.260742 10.5033 0.691406L4.9115 9.50977L2.07458 5.98926C1.82166 5.68848 1.54822 5.55176 1.16541 5.55176C0.502319 5.55176 0.0238037 6.02344 0.0238037 6.66602C0.0238037 6.95312 0.112671 7.20605 0.358765 7.48633L3.88611 11.7588C4.18005 12.1074 4.50818 12.2646 4.94568 12.2646Z",fill:"currentColor"})),CopyIcon=()=>D.createElement("svg",{fill:"none",height:"16",viewBox:"0 0 17 16",width:"17",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Copy"),D.createElement("path",{d:"M3.04236 12.3027H4.18396V13.3008C4.18396 14.8525 5.03845 15.7002 6.59705 15.7002H13.6244C15.183 15.7002 16.0375 14.8525 16.0375 13.3008V6.24609C16.0375 4.69434 15.183 3.84668 13.6244 3.84668H12.4828V2.8418C12.4828 1.29688 11.6283 0.442383 10.0697 0.442383H3.04236C1.48376 0.442383 0.629272 1.29004 0.629272 2.8418V9.90332C0.629272 11.4551 1.48376 12.3027 3.04236 12.3027ZM3.23376 10.5391C2.68689 10.5391 2.39294 10.2656 2.39294 9.68457V3.06055C2.39294 2.47949 2.68689 2.21289 3.23376 2.21289H9.8783C10.4252 2.21289 10.7191 2.47949 10.7191 3.06055V3.84668H6.59705C5.03845 3.84668 4.18396 4.69434 4.18396 6.24609V10.5391H3.23376ZM6.78845 13.9365C6.24158 13.9365 5.94763 13.6699 5.94763 13.0889V6.45801C5.94763 5.87695 6.24158 5.61035 6.78845 5.61035H13.433C13.9799 5.61035 14.2738 5.87695 14.2738 6.45801V13.0889C14.2738 13.6699 13.9799 13.9365 13.433 13.9365H6.78845Z",fill:"currentColor"})),DisconnectIcon=()=>D.createElement("svg",{fill:"none",height:"16",viewBox:"0 0 18 16",width:"18",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Disconnect"),D.createElement("path",{d:"M2.67834 15.5908H9.99963C11.5514 15.5908 12.399 14.7432 12.399 13.1777V10.2656H10.6354V12.9863C10.6354 13.5332 10.3688 13.8271 9.78772 13.8271H2.89026C2.3092 13.8271 2.0426 13.5332 2.0426 12.9863V3.15625C2.0426 2.60254 2.3092 2.30859 2.89026 2.30859H9.78772C10.3688 2.30859 10.6354 2.60254 10.6354 3.15625V5.89746H12.399V2.95801C12.399 1.39941 11.5514 0.544922 9.99963 0.544922H2.67834C1.12659 0.544922 0.278931 1.39941 0.278931 2.95801V13.1777C0.278931 14.7432 1.12659 15.5908 2.67834 15.5908ZM7.43616 8.85059H14.0875L15.0924 8.78906L14.566 9.14453L13.6842 9.96484C13.5406 10.1016 13.4586 10.2861 13.4586 10.4844C13.4586 10.8398 13.7321 11.168 14.1217 11.168C14.3199 11.168 14.4635 11.0928 14.6002 10.9561L16.7809 8.68652C16.986 8.48145 17.0543 8.27637 17.0543 8.06445C17.0543 7.85254 16.986 7.64746 16.7809 7.43555L14.6002 5.17285C14.4635 5.03613 14.3199 4.9541 14.1217 4.9541C13.7321 4.9541 13.4586 5.27539 13.4586 5.6377C13.4586 5.83594 13.5406 6.02734 13.6842 6.15723L14.566 6.98438L15.0924 7.33984L14.0875 7.27148H7.43616C7.01917 7.27148 6.65686 7.62012 6.65686 8.06445C6.65686 8.50195 7.01917 8.85059 7.43616 8.85059Z",fill:"currentColor"})),chainToExplorerUrl=e=>{var t,n;return null==(n=null==(t=null==e?void 0:e.blockExplorers)?void 0:t.default)?void 0:n.url},ExternalLinkIcon=()=>D.createElement("svg",{fill:"none",height:"19",viewBox:"0 0 20 19",width:"20",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Link"),D.createElement("path",{d:"M10 18.9443C15.0977 18.9443 19.2812 14.752 19.2812 9.6543C19.2812 4.56543 15.0889 0.373047 10 0.373047C4.90234 0.373047 0.71875 4.56543 0.71875 9.6543C0.71875 14.752 4.91113 18.9443 10 18.9443ZM10 16.6328C6.1416 16.6328 3.03906 13.5215 3.03906 9.6543C3.03906 5.7959 6.13281 2.68457 10 2.68457C13.8584 2.68457 16.9697 5.7959 16.9697 9.6543C16.9785 13.5215 13.8672 16.6328 10 16.6328ZM12.7158 12.1416C13.2432 12.1416 13.5684 11.7549 13.5684 11.1836V7.19336C13.5684 6.44629 13.1377 6.05957 12.417 6.05957H8.40918C7.8291 6.05957 7.45117 6.38477 7.45117 6.91211C7.45117 7.43945 7.8291 7.77344 8.40918 7.77344H9.69238L10.7207 7.63281L9.53418 8.67871L6.73047 11.4912C6.53711 11.6758 6.41406 11.9395 6.41406 12.2031C6.41406 12.7832 6.85352 13.1699 7.39844 13.1699C7.68848 13.1699 7.92578 13.0732 8.1543 12.8623L10.9316 10.0762L11.9775 8.89844L11.8545 9.98828V11.1836C11.8545 11.7725 12.1885 12.1416 12.7158 12.1416Z",fill:"currentColor"})),CancelIcon=()=>D.createElement("svg",{fill:"none",height:"19",viewBox:"0 0 20 19",width:"20",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Cancel"),D.createElement("path",{d:"M10 18.9443C15.0977 18.9443 19.2812 14.752 19.2812 9.6543C19.2812 4.56543 15.0889 0.373047 10 0.373047C4.90234 0.373047 0.71875 4.56543 0.71875 9.6543C0.71875 14.752 4.91113 18.9443 10 18.9443ZM10 16.6328C6.1416 16.6328 3.03906 13.5215 3.03906 9.6543C3.03906 5.7959 6.13281 2.68457 10 2.68457C13.8584 2.68457 16.9697 5.7959 16.9697 9.6543C16.9785 13.5215 13.8672 16.6328 10 16.6328ZM7.29297 13.3018C7.58301 13.3018 7.81152 13.2139 7.99609 13.0205L10 11.0166L12.0127 13.0205C12.1973 13.2051 12.4258 13.3018 12.707 13.3018C13.2432 13.3018 13.6562 12.8887 13.6562 12.3525C13.6562 12.0977 13.5508 11.8691 13.3662 11.6934L11.3535 9.67188L13.375 7.6416C13.5596 7.44824 13.6562 7.22852 13.6562 6.98242C13.6562 6.44629 13.2432 6.0332 12.7158 6.0332C12.4346 6.0332 12.2148 6.12109 12.0215 6.31445L10 8.32715L7.9873 6.32324C7.80273 6.12988 7.58301 6.04199 7.29297 6.04199C6.76562 6.04199 6.35254 6.45508 6.35254 6.99121C6.35254 7.2373 6.44922 7.46582 6.63379 7.6416L8.65527 9.67188L6.63379 11.6934C6.44922 11.8691 6.35254 12.1064 6.35254 12.3525C6.35254 12.8887 6.76562 13.3018 7.29297 13.3018Z",fill:"currentColor"})),SuccessIcon=()=>D.createElement("svg",{fill:"none",height:"20",viewBox:"0 0 20 20",width:"20",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Success"),D.createElement("path",{d:"M10 19.4443C15.0977 19.4443 19.2812 15.252 19.2812 10.1543C19.2812 5.06543 15.0889 0.873047 10 0.873047C4.90234 0.873047 0.71875 5.06543 0.71875 10.1543C0.71875 15.252 4.91113 19.4443 10 19.4443ZM10 17.1328C6.1416 17.1328 3.03906 14.0215 3.03906 10.1543C3.03906 6.2959 6.13281 3.18457 10 3.18457C13.8584 3.18457 16.9697 6.2959 16.9697 10.1543C16.9785 14.0215 13.8672 17.1328 10 17.1328ZM9.07715 14.3379C9.4375 14.3379 9.7627 14.1533 9.97363 13.8369L13.7441 8.00977C13.8848 7.79883 13.9814 7.5791 13.9814 7.36816C13.9814 6.84961 13.5244 6.48926 13.0322 6.48926C12.707 6.48926 12.4258 6.66504 12.2148 7.0166L9.05957 12.0967L7.5918 10.2949C7.37207 10.0225 7.13477 9.9082 6.84473 9.9082C6.33496 9.9082 5.92188 10.3125 5.92188 10.8223C5.92188 11.0684 6.00098 11.2793 6.18555 11.5078L8.1543 13.8545C8.40918 14.1709 8.70801 14.3379 9.07715 14.3379Z",fill:"currentColor"})),getTxStatusIcon=e=>{switch(e){case"pending":default:return SpinnerIcon;case"confirmed":return SuccessIcon;case"failed":return CancelIcon}};function TxItem({tx:e}){let t=isMobile(),n=getTxStatusIcon(e.status),o="failed"===e.status?"error":"accentColor",{chain:i}=(0,_.m)(),s="confirmed"===e.status?"Confirmed":"failed"===e.status?"Failed":"Pending",l=chainToExplorerUrl(i);return D.createElement(D.Fragment,null,D.createElement(tQ,{...l?{as:"a",background:{hover:"profileForeground"},borderRadius:"menuButton",className:touchableStyles({active:"shrink"}),href:`${l}/tx/${e.hash}`,rel:"noreferrer noopener",target:"_blank",transition:"default"}:{},color:"modalText",display:"flex",flexDirection:"row",justifyContent:"space-between",padding:"8",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:t?"16":"14"},D.createElement(tQ,{color:o},D.createElement(n,null)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:t?"3":"1"},D.createElement(tQ,null,D.createElement(rm,{color:"modalText",font:"body",size:t?"16":"14",weight:"bold"},null==e?void 0:e.description)),D.createElement(tQ,null,D.createElement(rm,{color:"pending"===e.status?"modalTextSecondary":o,font:"body",size:"14",weight:t?"medium":"regular"},s)))),l&&D.createElement(tQ,{alignItems:"center",color:"modalTextDim",display:"flex"},D.createElement(ExternalLinkIcon,null))))}function TxList({address:e}){let t=useRecentTransactions(),n=function(){let e=useTransactionStore(),{address:t}=(0,_.m)(),n=dist_useChainId();return(0,D.useCallback)(()=>{if(!t||!n)throw Error("No address or chain ID found");e.clearTransactions(t,n)},[e,t,n])}(),{chain:o}=(0,_.m)(),i=chainToExplorerUrl(o),s=t.slice(0,3),l=s.length>0,c=isMobile(),{appName:u}=(0,D.useContext)(rs),{i18n:d}=(0,D.useContext)(tY);return D.createElement(D.Fragment,null,D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"10",paddingBottom:"2",paddingTop:"16",paddingX:c?"8":"18"},l&&D.createElement(tQ,{paddingBottom:c?"4":"0",paddingTop:"8",paddingX:c?"12":"6"},D.createElement(tQ,{display:"flex",justifyContent:"space-between"},D.createElement(rm,{color:"modalTextSecondary",size:c?"16":"14",weight:"semibold"},d.t("profile.transactions.recent.title")),D.createElement(tQ,{style:{marginBottom:-6,marginLeft:-10,marginRight:-10,marginTop:-6}},D.createElement(tQ,{as:"button",background:{hover:"profileForeground"},borderRadius:"actionButton",className:touchableStyles({active:"shrink"}),onClick:n,paddingX:c?"8":"12",paddingY:c?"4":"5",transition:"default",type:"button"},D.createElement(rm,{color:"modalTextSecondary",size:c?"16":"14",weight:"semibold"},d.t("profile.transactions.clear.label")))))),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},l?s.map(e=>D.createElement(TxItem,{key:e.hash,tx:e})):D.createElement(D.Fragment,null,D.createElement(tQ,{padding:c?"12":"8"},D.createElement(rm,{color:"modalTextDim",size:c?"16":"14",weight:c?"medium":"bold"},u?d.t("profile.transactions.description",{appName:u}):d.t("profile.transactions.description_fallback"))),c&&D.createElement(tQ,{background:"generalBorderDim",height:"1",marginX:"12",marginY:"8"})))),i&&D.createElement(tQ,{paddingBottom:"18",paddingX:c?"8":"18"},D.createElement(tQ,{alignItems:"center",as:"a",background:{hover:"profileForeground"},borderRadius:"menuButton",className:touchableStyles({active:"shrink"}),color:"modalTextDim",display:"flex",flexDirection:"row",href:`${i}/address/${e}`,justifyContent:"space-between",paddingX:"8",paddingY:"12",rel:"noreferrer noopener",style:{willChange:"transform"},target:"_blank",transition:"default",width:"full",...c?{paddingLeft:"12"}:{}},D.createElement(rm,{color:"modalText",font:"body",size:c?"16":"14",weight:c?"semibold":"bold"},d.t("profile.explorer.label")),D.createElement(ExternalLinkIcon,null))))}function ProfileDetailsAction({action:e,icon:t,label:n,testId:o,url:i}){let s=isMobile();return D.createElement(tQ,{...i?{as:"a",href:i,rel:"noreferrer noopener",target:"_blank"}:{as:"button",type:"button"},background:{base:"profileAction",...s?{}:{hover:"profileActionHover"}},borderRadius:"menuButton",boxShadow:"profileDetailsAction",className:touchableStyles({active:"shrinkSm",hover:s?void 0:"grow"}),display:"flex",onClick:e,padding:s?"6":"8",style:{willChange:"transform"},testId:o,transition:"default",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"1",justifyContent:"center",paddingTop:"2",width:"full"},D.createElement(tQ,{color:"modalText",height:"max"},t),D.createElement(tQ,null,D.createElement(rm,{color:"modalText",size:s?"12":"13",weight:"semibold"},n))))}function ProfileDetails({address:e,ensAvatar:t,ensName:n,onClose:o,onDisconnect:i}){let s=(0,D.useContext)(rp),{data:l}=useBalance({address:e}),[c,u]=(0,D.useState)(!1),d=(0,D.useCallback)(()=>{e&&(navigator.clipboard.writeText(e),u(!0))},[e]);if((0,D.useEffect)(()=>{if(c){let e=setTimeout(()=>{u(!1)},1500);return()=>clearTimeout(e)}},[c]),!e)return null;let p=n?formatENS(n):formatAddress(e),f=null==l?void 0:l.formatted,m=f?abbreviateETHBalance(parseFloat(f)):void 0,g="rk_profile_title",b=isMobile(),{i18n:y}=(0,D.useContext)(tY);return D.createElement(D.Fragment,null,D.createElement(tQ,{display:"flex",flexDirection:"column"},D.createElement(tQ,{background:"profileForeground",padding:"16"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:b?"16":"12",justifyContent:"center",margin:"8",style:{textAlign:"center"}},D.createElement(tQ,{style:{position:"absolute",right:16,top:16,willChange:"transform"}},D.createElement(CloseButton,{onClose:o}))," ",D.createElement(tQ,{marginTop:b?"24":"0"},D.createElement(Avatar,{address:e,imageUrl:t,size:b?82:74})),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:b?"4":"0",textAlign:"center"},D.createElement(tQ,{textAlign:"center"},D.createElement(rm,{as:"h1",color:"modalText",id:g,size:b?"20":"18",weight:"heavy"},p)),!!l&&D.createElement(tQ,{textAlign:"center"},D.createElement(rm,{as:"h1",color:"modalTextSecondary",id:g,size:b?"16":"14",weight:"semibold"},m," ",l.symbol)))),D.createElement(tQ,{display:"flex",flexDirection:"row",gap:"8",margin:"2",marginTop:"16"},D.createElement(ProfileDetailsAction,{action:d,icon:c?D.createElement(CopiedIcon,null):D.createElement(CopyIcon,null),label:c?y.t("profile.copy_address.copied"):y.t("profile.copy_address.label")}),D.createElement(ProfileDetailsAction,{action:i,icon:D.createElement(DisconnectIcon,null),label:y.t("profile.disconnect.label"),testId:"disconnect-button"}))),s&&D.createElement(D.Fragment,null,D.createElement(tQ,{background:"generalBorder",height:"1",marginTop:"-1"}),D.createElement(tQ,null,D.createElement(TxList,{address:e})))))}function AccountModal({onClose:e,open:t}){let{address:n}=(0,_.m)(),o=useMainnetEnsName(n),i=useMainnetEnsAvatar(o),{disconnect:s}=useDisconnect();return n?D.createElement(D.Fragment,null,n&&D.createElement(Dialog,{onClose:e,open:t,titleId:"rk_account_modal_title"},D.createElement(DialogContent,{bottomSheetOnMobile:!0,padding:"0"},D.createElement(ProfileDetails,{address:n,ensAvatar:i,ensName:o,onClose:e,onDisconnect:s})))):null}var DisconnectSqIcon=({size:e})=>D.createElement("svg",{fill:"none",height:e,viewBox:"0 0 28 28",width:e,xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Disconnect"),D.createElement("path",{d:"M6.742 22.195h8.367c1.774 0 2.743-.968 2.743-2.758V16.11h-2.016v3.11c0 .625-.305.96-.969.96H6.984c-.664 0-.968-.335-.968-.96V7.984c0-.632.304-.968.968-.968h7.883c.664 0 .969.336.969.968v3.133h2.016v-3.36c0-1.78-.97-2.757-2.743-2.757H6.742C4.97 5 4 5.977 4 7.758v11.68c0 1.789.969 2.757 2.742 2.757Zm5.438-7.703h7.601l1.149-.07-.602.406-1.008.938a.816.816 0 0 0-.258.593c0 .407.313.782.758.782.227 0 .39-.086.547-.243l2.492-2.593c.235-.235.313-.47.313-.711 0-.242-.078-.477-.313-.719l-2.492-2.586c-.156-.156-.32-.25-.547-.25-.445 0-.758.367-.758.781 0 .227.094.446.258.594l1.008.945.602.407-1.149-.079H12.18a.904.904 0 0 0 0 1.805Z",fill:"currentColor"})),rE=D.forwardRef(({children:e,currentlySelected:t=!1,onClick:n,testId:o,...i},s)=>{let l=isMobile();return D.createElement(tQ,{as:"button",borderRadius:"menuButton",disabled:t,display:"flex",onClick:n,ref:s,testId:o,type:"button"},D.createElement(tQ,{borderRadius:"menuButton",className:[l?"v9horb0":void 0,!t&&touchableStyles({active:"shrink"})],padding:l?"8":"6",transition:"default",width:"full",...t?{background:"accentColor",borderColor:"selectedOptionBorder",borderStyle:"solid",borderWidth:"1",boxShadow:"selectedOption",color:"accentColorForeground"}:{background:{hover:"menuItemBackground"},color:"modalText",transition:"default"},...i},e))});rE.displayName="MenuButton";var Chain_default=({chainId:e,currentChainId:t,switchChain:n,chainIconSize:o,isLoading:i,src:s,name:l,iconBackground:c,idx:u})=>{let d=isMobile(),{i18n:p}=(0,D.useContext)(tY),f=useRainbowKitChains(),m=t===e;return D.createElement(D.Fragment,null,D.createElement(rE,{currentlySelected:m,onClick:m?void 0:()=>n({chainId:e}),testId:`chain-option-${e}`},D.createElement(tQ,{fontFamily:"body",fontSize:"16",fontWeight:"bold"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",justifyContent:"space-between"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"4",height:o},s&&D.createElement(tQ,{height:"full",marginRight:"8"},D.createElement(AsyncImage,{alt:l,background:c,borderRadius:"full",height:o,src:s,width:o,testId:`chain-option-${e}-icon`})),D.createElement("div",null,l)),m&&D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",marginRight:"6"},D.createElement(rm,{color:"accentColorForeground",size:"14",weight:"medium"},p.t("chains.connected")),D.createElement(tQ,{background:"connectionIndicator",borderColor:"selectedOptionBorder",borderRadius:"full",borderStyle:"solid",borderWidth:"1",height:"8",marginLeft:"8",width:"8"})),i&&D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",marginRight:"6"},D.createElement(rm,{color:"modalText",size:"14",weight:"medium"},p.t("chains.confirm")),D.createElement(tQ,{background:"standby",borderRadius:"full",height:"8",marginLeft:"8",width:"8"}))))),d&&uswitchChain(n,e),mutationKey:["switchChain"]});return{...s,chains:function(e={}){let t=(0,z.Z)(e);return(0,D.useSyncExternalStore)(e=>(function(e,t){let{onChange:n}=t;return e._internal.chains.subscribe((e,t)=>{n(e,t)})})(t,{onChange:e}),()=>getChains(t),()=>getChains(t))}({config:n}),switchChain:o,switchChainAsync:i}}({mutation:{onMutate:({chainId:e})=>{s(e)},onSuccess:()=>{i&&s(null)},onError:()=>{i&&s(null)},onSettled:()=>{e()}}}),{i18n:c}=(0,D.useContext)(tY),{disconnect:u}=useDisconnect(),d="rk_chain_modal_title",p=isMobile(),f=o.some(e=>e.id===n),m=p?"36":"28",g=useRainbowKitChains();return n?D.createElement(Dialog,{onClose:e,open:t,titleId:d},D.createElement(DialogContent,{bottomSheetOnMobile:!0,paddingBottom:"0"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"14"},D.createElement(tQ,{display:"flex",flexDirection:"row",justifyContent:"space-between"},p&&D.createElement(tQ,{width:"30"}),D.createElement(tQ,{paddingBottom:"0",paddingLeft:"8",paddingTop:"4"},D.createElement(rm,{as:"h1",color:"modalText",id:d,size:p?"20":"18",weight:"heavy"},c.t("chains.title"))),D.createElement(CloseButton,{onClose:e})),!f&&D.createElement(tQ,{marginX:"8",textAlign:p?"center":"left"},D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},c.t("chains.wrong_network"))),D.createElement(tQ,{className:p?"_18dqw9x1":"_18dqw9x0",display:"flex",flexDirection:"column",gap:"4",padding:"2",paddingBottom:"16"},g.map(({iconBackground:e,iconUrl:t,id:o,name:s},c)=>D.createElement(Chain_default,{key:o,chainId:o,currentChainId:n,switchChain:l,chainIconSize:m,isLoading:i===o,src:t,name:s,iconBackground:e,idx:c})),!f&&D.createElement(D.Fragment,null,D.createElement(tQ,{background:"generalBorderDim",height:"1",marginX:"8"}),D.createElement(rE,{onClick:()=>u(),testId:"chain-option-disconnect"},D.createElement(tQ,{color:"error",fontFamily:"body",fontSize:"16",fontWeight:"bold"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",justifyContent:"space-between"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"4",height:m},D.createElement(tQ,{alignItems:"center",color:"error",height:m,justifyContent:"center",marginRight:"8"},D.createElement(DisconnectSqIcon,{size:Number(m)})),D.createElement("div",null,c.t("chains.disconnect"))))))))))):null}var DisclaimerLink=({children:e,href:t})=>D.createElement(tQ,{as:"a",color:"accentColor",href:t,rel:"noreferrer",target:"_blank"},e),DisclaimerText=({children:e})=>D.createElement(rm,{color:"modalTextSecondary",size:"12",weight:"medium"},e);function ConnectModalIntro({compactModeEnabled:e=!1,getWallet:t}){let{disclaimer:n,learnMoreUrl:o}=(0,D.useContext)(rs),{i18n:i}=(0,D.useContext)(tY);return D.createElement(D.Fragment,null,D.createElement(tQ,{alignItems:"center",color:"accentColor",display:"flex",flexDirection:"column",height:"full",justifyContent:"space-around"},D.createElement(tQ,{marginBottom:"10"},!e&&D.createElement(rm,{color:"modalText",size:"18",weight:"heavy"},i.t("intro.title"))),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"32",justifyContent:"center",marginY:"20",style:{maxWidth:312}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16"},D.createElement(tQ,{borderRadius:"6",height:"48",minWidth:"48",width:"48"},D.createElement(AssetsIcon,null)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},i.t("intro.digital_asset.title")),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},i.t("intro.digital_asset.description")))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16"},D.createElement(tQ,{borderRadius:"6",height:"48",minWidth:"48",width:"48"},D.createElement(LoginIcon,null)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},i.t("intro.login.title")),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},i.t("intro.login.description"))))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",margin:"10"},D.createElement(ActionButton,{label:i.t("intro.get.label"),onClick:t}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:o,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},i.t("intro.learn_more.label")))),n&&!e&&D.createElement(tQ,{marginBottom:"8",marginTop:"12",textAlign:"center"},D.createElement(n,{Link:DisclaimerLink,Text:DisclaimerText}))))}var BackIcon=()=>D.createElement("svg",{fill:"none",height:"17",viewBox:"0 0 11 17",width:"11",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Back"),D.createElement("path",{d:"M0.99707 8.6543C0.99707 9.08496 1.15527 9.44531 1.51562 9.79688L8.16016 16.3096C8.43262 16.5732 8.74902 16.7051 9.13574 16.7051C9.90918 16.7051 10.5508 16.0811 10.5508 15.3076C10.5508 14.9121 10.3838 14.5605 10.0938 14.2705L4.30176 8.64551L10.0938 3.0293C10.3838 2.74805 10.5508 2.3877 10.5508 2.00098C10.5508 1.23633 9.90918 0.603516 9.13574 0.603516C8.74902 0.603516 8.43262 0.735352 8.16016 0.999023L1.51562 7.51172C1.15527 7.85449 1.00586 8.21484 0.99707 8.6543Z",fill:"currentColor"})),InfoIcon=()=>D.createElement("svg",{fill:"none",height:"12",viewBox:"0 0 8 12",width:"8",xmlns:"http://www.w3.org/2000/svg"},D.createElement("title",null,"Info"),D.createElement("path",{d:"M3.64258 7.99609C4.19336 7.99609 4.5625 7.73828 4.68555 7.24609C4.69141 7.21094 4.70312 7.16406 4.70898 7.13477C4.80859 6.60742 5.05469 6.35547 6.04492 5.76367C7.14648 5.10156 7.67969 4.3457 7.67969 3.24414C7.67969 1.39844 6.17383 0.255859 3.95898 0.255859C2.32422 0.255859 1.05859 0.894531 0.548828 1.86719C0.396484 2.14844 0.320312 2.44727 0.320312 2.74023C0.314453 3.37305 0.742188 3.79492 1.42188 3.79492C1.91406 3.79492 2.33594 3.54883 2.53516 3.11523C2.78711 2.47656 3.23242 2.21289 3.83594 2.21289C4.55664 2.21289 5.10742 2.65234 5.10742 3.29102C5.10742 3.9707 4.7793 4.29883 3.81836 4.87891C3.02148 5.36523 2.50586 5.92773 2.50586 6.76562V6.90039C2.50586 7.55664 2.96289 7.99609 3.64258 7.99609ZM3.67188 11.4473C4.42773 11.4473 5.04297 10.8672 5.04297 10.1406C5.04297 9.41406 4.42773 8.83984 3.67188 8.83984C2.91602 8.83984 2.30664 9.41406 2.30664 10.1406C2.30664 10.8672 2.91602 11.4473 3.67188 11.4473Z",fill:"currentColor"})),InfoButton=({"aria-label":e="Info",onClick:t})=>{let n=isMobile();return D.createElement(tQ,{alignItems:"center","aria-label":e,as:"button",background:"closeButtonBackground",borderColor:"actionButtonBorder",borderRadius:"full",borderStyle:"solid",borderWidth:n?"0":"1",className:touchableStyles({active:"shrinkSm",hover:"growLg"}),color:"closeButton",display:"flex",height:n?"30":"28",justifyContent:"center",onClick:t,style:{willChange:"transform"},transition:"default",type:"button",width:n?"30":"28"},D.createElement(InfoIcon,null))},useCoolMode=e=>{let t=(0,D.useRef)(null),n=(0,D.useContext)(rl),o=useAsyncImage(e);return(0,D.useEffect)(()=>{if(n&&t.current&&o)return function(e,t){let n;rx++;let o=[15,20,25,35,45],i=[],s=!1,l=0,c=0,u=getContainer();!function loop(){s&&i.length<35&&function(){let e=o[Math.floor(Math.random()*o.length)],n=360*Math.random(),s=c-e/2,d=l-e/2,p=document.createElement("div");p.innerHTML=``,p.setAttribute("style",`position:absolute;will-change:transform;top:${s}px;left:${d}px;transform:rotate(${n}deg)`),u.appendChild(p),i.push({direction:.5>=Math.random()?-1:1,element:p,left:d,size:e,speedHorz:10*Math.random(),speedUp:25*Math.random(),spinSpeed:35*Math.random()*(.5>=Math.random()?-1:1),spinVal:n,top:s})}(),function(){for(let e of i)e.left=e.left-e.speedHorz*e.direction,e.top=e.top-e.speedUp,e.speedUp=Math.min(e.size,e.speedUp-1),e.spinVal=e.spinVal+e.spinSpeed,e.top>=Math.max(window.innerHeight,document.body.clientHeight)+e.size&&(i=i.filter(t=>t!==e),e.element.remove()),e.element.setAttribute("style",`position:absolute;will-change:transform;top:${e.top}px;left:${e.left}px;transform:rotate(${e.spinVal}deg)`)}(),n=requestAnimationFrame(loop)}();let d="ontouchstart"in window||navigator.msMaxTouchPoints,p=d?"touchstart":"mousedown",f=d?"touchend":"mouseup",m=d?"touchmove":"mousemove",updateMousePosition=e=>{var t,n;"touches"in e?(l=null==(t=e.touches)?void 0:t[0].clientX,c=null==(n=e.touches)?void 0:n[0].clientY):(l=e.clientX,c=e.clientY)},tapHandler=e=>{updateMousePosition(e),s=!0},disableAutoAddParticle=()=>{s=!1};return e.addEventListener(m,updateMousePosition,{passive:!1}),e.addEventListener(p,tapHandler),e.addEventListener(f,disableAutoAddParticle),e.addEventListener("mouseleave",disableAutoAddParticle),()=>{e.removeEventListener(m,updateMousePosition),e.removeEventListener(p,tapHandler),e.removeEventListener(f,disableAutoAddParticle),e.removeEventListener("mouseleave",disableAutoAddParticle);let t=setInterval(()=>{n&&0===i.length&&(cancelAnimationFrame(n),clearInterval(t),0==--rx&&u.remove())},500)}}(t.current,o)},[n,o]),t},getContainer=()=>{let e="_rk_coolMode",t=document.getElementById(e);if(t)return t;let n=document.createElement("div");return n.setAttribute("id",e),n.setAttribute("style","overflow:hidden;position:fixed;height:100%;top:0;left:0;right:0;bottom:0;pointer-events:none;z-index:2147483647"),document.body.appendChild(n),n},rx=0,ModalSelection=({as:e="button",currentlySelected:t=!1,iconBackground:n,iconUrl:o,name:i,onClick:s,ready:l,recent:c,testId:u,isRainbowKitConnector:d,...p})=>{let f=useCoolMode(o),[m,g]=(0,D.useState)(!1),{i18n:b}=(0,D.useContext)(tY);return D.createElement(tQ,{display:"flex",flexDirection:"column",onMouseEnter:()=>g(!0),onMouseLeave:()=>g(!1),ref:f},D.createElement(tQ,{as:e,borderRadius:"menuButton",borderStyle:"solid",borderWidth:"1",className:t?void 0:["g5kl0l0",touchableStyles({active:"shrink"})],disabled:t,onClick:s,padding:"5",style:{willChange:"transform"},testId:u,transition:"default",width:"full",...t?{background:"accentColor",borderColor:"selectedOptionBorder",boxShadow:"selectedWallet"}:{background:{hover:"menuItemBackground"}},...p},D.createElement(tQ,{color:t?"accentColorForeground":"modalText",disabled:!l,fontFamily:"body",fontSize:"16",fontWeight:"bold",transition:"default"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"12"},D.createElement(AsyncImage,{background:n,...!m&&d?{borderColor:"actionButtonBorder"}:{},useAsImage:!d,borderRadius:"6",height:"28",src:o,width:"28"}),D.createElement(tQ,null,D.createElement(tQ,{style:{marginTop:c?-2:void 0},maxWidth:"200"},i),c&&D.createElement(rm,{color:t?"accentColorForeground":"accentColor",size:"12",style:{lineHeight:1,marginTop:-1},weight:"medium"},b.t("connect.recent")))))))};ModalSelection.displayName="ModalSelection";var rA="rk-latest-id",convertHexToRGBA=(e,t=1)=>{let n=e.replace("#","");3===n.length&&(n=`${n[0]}${n[0]}${n[1]}${n[1]}${n[2]}${n[2]}`);let o=parseInt(n.substring(0,2),16),i=parseInt(n.substring(2,4),16),s=parseInt(n.substring(4,6),16);return t>1&&t<=100&&(t/=100),`rgba(${o},${i},${s},${t})`},getGradientRGBAs=e=>e?[convertHexToRGBA(e,.2),convertHexToRGBA(e,.14),convertHexToRGBA(e,.1)]:null,isHexString=e=>/^#([0-9a-f]{3}){1,2}$/i.test(e),src3=async()=>(await n.e(9600).then(n.bind(n,99600))).default,preloadConnectIcon=()=>loadImages(src3),ConnectIcon=()=>D.createElement(AsyncImage,{background:"#515a70",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src3,width:"48"}),src4=async()=>(await n.e(8137).then(n.bind(n,68137))).default,preloadCreateIcon=()=>loadImages(src4),CreateIcon=()=>D.createElement(AsyncImage,{background:"#e3a5e8",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src4,width:"48"}),src5=async()=>(await n.e(1748).then(n.bind(n,31748))).default,preloadRefreshIcon=()=>loadImages(src5),RefreshIcon=()=>D.createElement(AsyncImage,{background:"#515a70",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src5,width:"48"}),src6=async()=>(await n.e(5806).then(n.bind(n,75806))).default,preloadScanIcon=()=>loadImages(src6),ScanIcon=()=>D.createElement(AsyncImage,{background:"#515a70",borderColor:"generalBorder",borderRadius:"10",height:"48",src:src6,width:"48"}),generateMatrix=(e,t)=>{let n=Array.prototype.slice.call(tB.create(e,{errorCorrectionLevel:t}).modules.data,0),o=Math.sqrt(n.length);return n.reduce((e,t,n)=>(n%o==0?e.push([t]):e[e.length-1].push(t))&&e,[])};function QRCode({ecl:e="M",logoBackground:t,logoMargin:n=10,logoSize:o=50,logoUrl:i,size:s=200,uri:l}){let c=s-2*parseInt("20",10),u=(0,D.useMemo)(()=>{let t=[],n=generateMatrix(l,e),i=c/n.length;[{x:0,y:0},{x:1,y:0},{x:0,y:1}].forEach(({x:e,y:o})=>{let s=(n.length-7)*i*e,l=(n.length-7)*i*o;for(let n=0;n<3;n++)t.push(D.createElement("rect",{fill:n%2!=0?"white":"black",height:i*(7-2*n),key:`${n}-${e}-${o}`,rx:-((n-2)*5)+(0===n?2:0),ry:-((n-2)*5)+(0===n?2:0),width:i*(7-2*n),x:s+i*n,y:l+i*n}))});let s=Math.floor((o+25)/i),u=n.length/2-s/2,d=n.length/2+s/2-1;return n.forEach((e,o)=>{e.forEach((e,s)=>{!n[o][s]||o<7&&s<7||o>n.length-8&&s<7||o<7&&s>n.length-8||o>u&&ou&&s{let e=getBrowser();switch(e){case"Arc":return(await n.e(6328).then(n.bind(n,76328))).default;case"Brave":return(await n.e(6551).then(n.bind(n,86551))).default;case"Chrome":return(await n.e(7682).then(n.bind(n,57682))).default;case"Edge":return(await n.e(934).then(n.bind(n,60934))).default;case"Firefox":return(await n.e(9223).then(n.bind(n,99223))).default;case"Opera":return(await n.e(9941).then(n.bind(n,89941))).default;case"Safari":return(await n.e(2604).then(n.bind(n,62604))).default;default:return(await n.e(2746).then(n.bind(n,92746))).default}},preloadBrowserIcon=()=>loadImages(getBrowserSrc),getPlatformSrc=async()=>{let e=getPlatform();switch(e){case"Windows":return(await n.e(5710).then(n.bind(n,35710))).default;case"macOS":return(await n.e(8906).then(n.bind(n,8906))).default;default:return(await n.e(8366).then(n.bind(n,78366))).default}},preloadPlatformIcon=()=>loadImages(getPlatformSrc);function GetDetail({getWalletDownload:e,compactModeEnabled:t}){let n=useWalletConnectors().filter(e=>e.isRainbowKitConnector),o=n.splice(0,5),{i18n:i}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",marginTop:"18",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"28",height:"full",width:"full"},null==o?void 0:o.filter(e=>{var t;return e.extensionDownloadUrl||e.desktopDownloadUrl||e.qrCode&&(null==(t=e.downloadUrls)?void 0:t.qrCode)}).map(t=>{let{downloadUrls:n,iconBackground:o,iconUrl:s,id:l,name:c,qrCode:u}=t,d=(null==n?void 0:n.qrCode)&&u,p=!!t.extensionDownloadUrl,f=(null==n?void 0:n.qrCode)&&p,m=(null==n?void 0:n.qrCode)&&!!t.desktopDownloadUrl;return D.createElement(tQ,{alignItems:"center",display:"flex",gap:"16",justifyContent:"space-between",key:t.id,width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16"},D.createElement(AsyncImage,{background:o,borderColor:"actionButtonBorder",borderRadius:"10",height:"48",src:s,width:"48"}),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"2"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},c),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},f?i.t("get.mobile_and_extension.description"):m?i.t("get.mobile_and_desktop.description"):d?i.t("get.mobile.description"):p?i.t("get.extension.description"):null))),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(ActionButton,{label:i.t("get.action.label"),onClick:()=>e(l),type:"secondary"})))})),D.createElement(tQ,{alignItems:"center",borderRadius:"10",display:"flex",flexDirection:"column",gap:"8",justifyContent:"space-between",marginBottom:"4",paddingY:"8",style:{maxWidth:275,textAlign:"center"}},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},i.t("get.looking_for.title")),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},t?i.t("get.looking_for.desktop.compact_description"):i.t("get.looking_for.desktop.wide_description"))))}function ConnectDetail({changeWalletStep:e,compactModeEnabled:t,connectionError:n,onClose:o,qrCodeUri:i,reconnect:s,wallet:l}){let{downloadUrls:c,iconBackground:u,iconUrl:d,name:p,qrCode:f,ready:m,showWalletConnectModal:g,getDesktopUri:b}=l,y=!!b,v=isSafari(),{i18n:w}=(0,D.useContext)(tY),C=!!l.extensionDownloadUrl,E=(null==c?void 0:c.qrCode)&&C,x=(null==c?void 0:c.qrCode)&&!!l.desktopDownloadUrl,A=f&&i,onDesktopUri=async()=>{let e=await (null==b?void 0:b());window.open(e,v?"_blank":"_self")},k=g?{description:t?w.t("connect.walletconnect.description.compact"):w.t("connect.walletconnect.description.full"),label:w.t("connect.walletconnect.open.label"),onClick:()=>{o(),g()}}:A?{description:w.t("connect.secondary_action.get.description",{wallet:p}),label:w.t("connect.secondary_action.get.label"),onClick:()=>e(E||x?"DOWNLOAD_OPTIONS":"DOWNLOAD")}:null,{width:B}=useWindowSize();return(0,D.useEffect)(()=>{preloadBrowserIcon(),preloadPlatformIcon()},[]),D.createElement(tQ,{display:"flex",flexDirection:"column",height:"full",width:"full"},A?D.createElement(tQ,{alignItems:"center",display:"flex",height:"full",justifyContent:"center"},D.createElement(QRCode,{logoBackground:u,logoSize:t?60:72,logoUrl:d,size:t?318:B&&B<768?Math.max(280,Math.min(B-308,382)):382,uri:i})):D.createElement(tQ,{alignItems:"center",display:"flex",justifyContent:"center",style:{flexGrow:1}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"8"},D.createElement(tQ,{borderRadius:"10",height:"44",overflow:"hidden"},D.createElement(AsyncImage,{useAsImage:!l.isRainbowKitConnector,height:"44",src:d,width:"44"})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"4",paddingX:"32",style:{textAlign:"center"}},D.createElement(rm,{color:"modalText",size:"18",weight:"bold"},m?w.t("connect.status.opening",{wallet:p}):C?w.t("connect.status.not_installed",{wallet:p}):w.t("connect.status.not_available",{wallet:p})),!m&&C?D.createElement(tQ,{paddingTop:"20"},D.createElement(ActionButton,{href:l.extensionDownloadUrl,label:w.t("connect.secondary_action.install.label"),type:"secondary"})):null,m&&!A&&D.createElement(D.Fragment,null,D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",justifyContent:"center"},D.createElement(rm,{color:"modalTextSecondary",size:"14",textAlign:"center",weight:"medium"},w.t("connect.status.confirm"))),D.createElement(tQ,{alignItems:"center",color:"modalText",display:"flex",flexDirection:"row",height:"32",marginTop:"8"},n?D.createElement(ActionButton,{label:w.t("connect.secondary_action.retry.label"),onClick:async()=>{y&&onDesktopUri(),s(l)}}):D.createElement(tQ,{color:"modalTextSecondary"},D.createElement(SpinnerIcon,null))))))),D.createElement(tQ,{alignItems:"center",borderRadius:"10",display:"flex",flexDirection:"row",gap:"8",height:"28",justifyContent:"space-between",marginTop:"12"},m&&k&&D.createElement(D.Fragment,null,D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},k.description),D.createElement(ActionButton,{label:k.label,onClick:k.onClick,type:"secondary"}))))}var DownloadOptionsBox=({actionLabel:e,description:t,iconAccent:n,iconBackground:o,iconUrl:i,isCompact:s,onAction:l,title:c,url:u,variant:d})=>{let p="browser"===d,f=!p&&n&&getGradientRGBAs(n);return D.createElement(tQ,{alignItems:"center",borderRadius:"13",display:"flex",justifyContent:"center",overflow:"hidden",paddingX:s?"18":"44",position:"relative",style:{flex:1,isolation:"isolate"},width:"full"},D.createElement(tQ,{borderColor:"actionButtonBorder",borderRadius:"13",borderStyle:"solid",borderWidth:"1",style:{bottom:"0",left:"0",position:"absolute",right:"0",top:"0",zIndex:1}}),p&&D.createElement(tQ,{background:"downloadTopCardBackground",height:"full",position:"absolute",style:{zIndex:0},width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"row",justifyContent:"space-between",style:{bottom:"0",filter:"blur(20px)",left:"0",position:"absolute",right:"0",top:"0",transform:"translate3d(0, 0, 0)"}},D.createElement(tQ,{style:{filter:"blur(100px)",marginLeft:-27,marginTop:-20,opacity:.6,transform:"translate3d(0, 0, 0)"}},D.createElement(AsyncImage,{borderRadius:"full",height:"200",src:i,width:"200"})),D.createElement(tQ,{style:{filter:"blur(100px)",marginRight:0,marginTop:105,opacity:.6,overflow:"auto",transform:"translate3d(0, 0, 0)"}},D.createElement(AsyncImage,{borderRadius:"full",height:"200",src:i,width:"200"})))),!p&&f&&D.createElement(tQ,{background:"downloadBottomCardBackground",style:{bottom:"0",left:"0",position:"absolute",right:"0",top:"0"}},D.createElement(tQ,{position:"absolute",style:{background:`radial-gradient(50% 50% at 50% 50%, ${f[0]} 0%, ${f[1]} 25%, rgba(0,0,0,0) 100%)`,height:564,left:-215,top:-197,transform:"translate3d(0, 0, 0)",width:564}}),D.createElement(tQ,{position:"absolute",style:{background:`radial-gradient(50% 50% at 50% 50%, ${f[2]} 0%, rgba(0, 0, 0, 0) 100%)`,height:564,left:-1,top:-76,transform:"translate3d(0, 0, 0)",width:564}})),D.createElement(tQ,{alignItems:"flex-start",display:"flex",flexDirection:"row",gap:"24",height:"max",justifyContent:"center",style:{zIndex:1}},D.createElement(tQ,null,D.createElement(AsyncImage,{height:"60",src:i,width:"60",...o?{background:o,borderColor:"generalBorder",borderRadius:"10"}:null})),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4",style:{flex:1},width:"full"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},c),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},t),D.createElement(tQ,{marginTop:"14",width:"max"},D.createElement(ActionButton,{href:u,label:e,onClick:l,size:"medium"})))))};function DownloadOptionsDetail({changeWalletStep:e,wallet:t}){let n=getBrowser(),o=getPlatform(),i=(0,D.useContext)(rd),s="compact"===i,{desktop:l,desktopDownloadUrl:c,extension:u,extensionDownloadUrl:d,mobileDownloadUrl:p}=t,{i18n:f}=(0,D.useContext)(tY);return(0,D.useEffect)(()=>{preloadCreateIcon(),preloadScanIcon(),preloadRefreshIcon(),preloadConnectIcon()},[]),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"24",height:"full",marginBottom:"8",marginTop:"4",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"8",height:"full",justifyContent:"center",width:"full"},d&&D.createElement(DownloadOptionsBox,{actionLabel:f.t("get_options.extension.download.label",{browser:n}),description:f.t("get_options.extension.description"),iconUrl:getBrowserSrc,isCompact:s,onAction:()=>e((null==u?void 0:u.instructions)?"INSTRUCTIONS_EXTENSION":"CONNECT"),title:f.t("get_options.extension.title",{wallet:t.name,browser:n}),url:d,variant:"browser"}),c&&D.createElement(DownloadOptionsBox,{actionLabel:f.t("get_options.desktop.download.label",{platform:o}),description:f.t("get_options.desktop.description"),iconUrl:getPlatformSrc,isCompact:s,onAction:()=>e((null==l?void 0:l.instructions)?"INSTRUCTIONS_DESKTOP":"CONNECT"),title:f.t("get_options.desktop.title",{wallet:t.name,platform:o}),url:c,variant:"desktop"}),p&&D.createElement(DownloadOptionsBox,{actionLabel:f.t("get_options.mobile.download.label",{wallet:t.name}),description:f.t("get_options.mobile.description"),iconAccent:t.iconAccent,iconBackground:t.iconBackground,iconUrl:t.iconUrl,isCompact:s,onAction:()=>{e("DOWNLOAD")},title:f.t("get_options.mobile.title",{wallet:t.name}),variant:"app"})))}function DownloadDetail({changeWalletStep:e,wallet:t}){let{downloadUrls:n,qrCode:o}=t,{i18n:i}=(0,D.useContext)(tY);return(0,D.useEffect)(()=>{preloadCreateIcon(),preloadScanIcon()},[]),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"24",height:"full",width:"full"},D.createElement(tQ,{style:{maxWidth:220,textAlign:"center"}},D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"semibold"},i.t("get_mobile.description"))),D.createElement(tQ,{height:"full"},(null==n?void 0:n.qrCode)?D.createElement(QRCode,{logoSize:0,size:268,uri:n.qrCode}):null),D.createElement(tQ,{alignItems:"center",borderRadius:"10",display:"flex",flexDirection:"row",gap:"8",height:"34",justifyContent:"space-between",marginBottom:"12",paddingY:"8"},D.createElement(ActionButton,{label:i.t("get_mobile.continue.label"),onClick:()=>e((null==o?void 0:o.instructions)?"INSTRUCTIONS_MOBILE":"CONNECT")})))}var rk={connect:()=>D.createElement(ConnectIcon,null),create:()=>D.createElement(CreateIcon,null),install:e=>D.createElement(AsyncImage,{background:e.iconBackground,borderColor:"generalBorder",borderRadius:"10",height:"48",src:e.iconUrl,width:"48"}),refresh:()=>D.createElement(RefreshIcon,null),scan:()=>D.createElement(ScanIcon,null)};function InstructionMobileDetail({connectWallet:e,wallet:t}){var n,o,i,s;let{i18n:l}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"28",height:"full",justifyContent:"center",paddingY:"32",style:{maxWidth:320}},null==(o=null==(n=null==t?void 0:t.qrCode)?void 0:n.instructions)?void 0:o.steps.map((e,n)=>{var o;return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16",key:n},D.createElement(tQ,{borderRadius:"10",height:"48",minWidth:"48",overflow:"hidden",position:"relative",width:"48"},null==(o=rk[e.step])?void 0:o.call(rk,t)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},l.t(e.title,void 0,{rawKeyIfTranslationMissing:!0})),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},l.t(e.description,void 0,{rawKeyIfTranslationMissing:!0}))))})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",marginBottom:"16"},D.createElement(ActionButton,{label:l.t("get_instructions.mobile.connect.label"),onClick:()=>e(t)}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:null==(s=null==(i=null==t?void 0:t.qrCode)?void 0:i.instructions)?void 0:s.learnMoreUrl,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},l.t("get_instructions.mobile.learn_more.label")))))}function InstructionExtensionDetail({wallet:e}){var t,n,o,i;let{i18n:s}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"28",height:"full",justifyContent:"center",paddingY:"32",style:{maxWidth:320}},null==(n=null==(t=null==e?void 0:e.extension)?void 0:t.instructions)?void 0:n.steps.map((t,n)=>{var o;return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16",key:n},D.createElement(tQ,{borderRadius:"10",height:"48",minWidth:"48",overflow:"hidden",position:"relative",width:"48"},null==(o=rk[t.step])?void 0:o.call(rk,e)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},s.t(t.title,void 0,{rawKeyIfTranslationMissing:!0})),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},s.t(t.description,void 0,{rawKeyIfTranslationMissing:!0}))))})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",marginBottom:"16"},D.createElement(ActionButton,{label:s.t("get_instructions.extension.refresh.label"),onClick:window.location.reload.bind(window.location)}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:null==(i=null==(o=null==e?void 0:e.extension)?void 0:o.instructions)?void 0:i.learnMoreUrl,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},s.t("get_instructions.extension.learn_more.label")))))}function InstructionDesktopDetail({connectWallet:e,wallet:t}){var n,o,i,s;let{i18n:l}=(0,D.useContext)(tY);return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",width:"full"},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"28",height:"full",justifyContent:"center",paddingY:"32",style:{maxWidth:320}},null==(o=null==(n=null==t?void 0:t.desktop)?void 0:n.instructions)?void 0:o.steps.map((e,n)=>{var o;return D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"16",key:n},D.createElement(tQ,{borderRadius:"10",height:"48",minWidth:"48",overflow:"hidden",position:"relative",width:"48"},null==(o=rk[e.step])?void 0:o.call(rk,t)),D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},D.createElement(rm,{color:"modalText",size:"14",weight:"bold"},l.t(e.title,void 0,{rawKeyIfTranslationMissing:!0})),D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},l.t(e.description,void 0,{rawKeyIfTranslationMissing:!0}))))})),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"12",justifyContent:"center",marginBottom:"16"},D.createElement(ActionButton,{label:l.t("get_instructions.desktop.connect.label"),onClick:()=>e(t)}),D.createElement(tQ,{as:"a",className:touchableStyles({active:"shrink",hover:"grow"}),display:"block",href:null==(s=null==(i=null==t?void 0:t.desktop)?void 0:i.instructions)?void 0:s.learnMoreUrl,paddingX:"12",paddingY:"4",rel:"noreferrer",style:{willChange:"transform"},target:"_blank",transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},l.t("get_instructions.desktop.learn_more.label")))))}function DesktopOptions({onClose:e}){let t;let[n,o]=(0,D.useState)(),[i,s]=(0,D.useState)(),[l,c]=(0,D.useState)(),u=!!(null==i?void 0:i.qrCode)&&l,[d,p]=(0,D.useState)(!1),f=(0,D.useContext)(rd),m=f===ru.COMPACT,{disclaimer:g}=(0,D.useContext)(rs),{i18n:b}=(0,D.useContext)(tY),y=isSafari(),v=(0,D.useRef)(!1),{connector:w}=(0,D.useContext)(rc),C=!w,E=useWalletConnectors(C).filter(e=>e.ready||!!e.extensionDownloadUrl).sort((e,t)=>e.groupIndex-t.groupIndex),x=function(e,t){let n={};for(let o of e){let e=t(o);e&&(n[e]||(n[e]=[]),n[e].push(o))}return n}(E,e=>e.groupName),A=["Recommended","Other","Popular","More","Others","Installed"];(0,D.useEffect)(()=>{w&&!v.current&&(changeWalletStep("CONNECT"),selectWallet(w),v.current=!0)},[w]);let connectToWallet=e=>{var t,n;p(!1),e.ready&&(null==(n=null==(t=null==e?void 0:e.connect)?void 0:t.call(e))||n.catch(()=>{p(!0)}))},onDesktopUri=async e=>{let t=E.find(t=>e.id===t.id);(null==t?void 0:t.getDesktopUri)&&setTimeout(async()=>{var e;let n=await (null==(e=null==t?void 0:t.getDesktopUri)?void 0:e.call(t));n&&window.open(n,y?"_blank":"_self")},0)},onQrCode=async e=>{var t;let n=E.find(t=>e.id===t.id),o=await (null==(t=null==n?void 0:n.getQrCodeUri)?void 0:t.call(n));c(o),setTimeout(()=>{s(n),changeWalletStep("CONNECT")},o?0:50)},selectWallet=async e=>{var t;t=e.id,localStorage.setItem(rA,t),e.ready&&(onQrCode(e),onDesktopUri(e)),connectToWallet(e),o(e.id),e.ready||(s(e),changeWalletStep((null==e?void 0:e.extensionDownloadUrl)?"DOWNLOAD_OPTIONS":"CONNECT"))},clearSelectedWallet=()=>{o(void 0),s(void 0),c(void 0)},changeWalletStep=(e,t=!1)=>{t&&"GET"===e&&"GET"===k?clearSelectedWallet():t||"GET"!==e?t||"CONNECT"!==e||B("CONNECT"):B("GET"),I(e)},[k,B]=(0,D.useState)("NONE"),[S,I]=(0,D.useState)("NONE"),j=null,T=null,P=null;(0,D.useEffect)(()=>{p(!1)},[S,i]);let M=!!(null==i?void 0:i.extensionDownloadUrl),O=!!(M&&(null==i?void 0:i.mobileDownloadUrl));switch(S){case"NONE":j=D.createElement(ConnectModalIntro,{getWallet:()=>changeWalletStep("GET")});break;case"LEARN_COMPACT":j=D.createElement(ConnectModalIntro,{compactModeEnabled:m,getWallet:()=>changeWalletStep("GET")}),T=b.t("intro.title"),P="NONE";break;case"GET":j=D.createElement(GetDetail,{getWalletDownload:e=>{var t;o(e);let n=E.find(t=>e===t.id),i=null==(t=null==n?void 0:n.downloadUrls)?void 0:t.qrCode,l=!!(null==n?void 0:n.desktopDownloadUrl),c=!!(null==n?void 0:n.extensionDownloadUrl);s(n),i&&(c||l)?changeWalletStep("DOWNLOAD_OPTIONS"):i?changeWalletStep("DOWNLOAD"):l?changeWalletStep("INSTRUCTIONS_DESKTOP"):changeWalletStep("INSTRUCTIONS_EXTENSION")},compactModeEnabled:m}),T=b.t("get.title"),P=m?"LEARN_COMPACT":"NONE";break;case"CONNECT":j=i&&D.createElement(ConnectDetail,{changeWalletStep,compactModeEnabled:m,connectionError:d,onClose:e,qrCodeUri:l,reconnect:connectToWallet,wallet:i}),T=u&&("WalletConnect"===i.name?b.t("connect_scan.fallback_title"):b.t("connect_scan.title",{wallet:i.name})),P=m?w?null:"NONE":null,t=m?w?()=>{}:clearSelectedWallet:()=>{};break;case"DOWNLOAD_OPTIONS":j=i&&D.createElement(DownloadOptionsDetail,{changeWalletStep,wallet:i}),T=i&&b.t("get_options.short_title",{wallet:i.name}),P=w?"CONNECT":m?"NONE":null;break;case"DOWNLOAD":j=i&&D.createElement(DownloadDetail,{changeWalletStep,wallet:i}),T=i&&b.t("get_mobile.title",{wallet:i.name}),P=O?"DOWNLOAD_OPTIONS":k;break;case"INSTRUCTIONS_MOBILE":j=i&&D.createElement(InstructionMobileDetail,{connectWallet:selectWallet,wallet:i}),T=i&&b.t("get_options.title",{wallet:m&&i.shortName||i.name}),P="DOWNLOAD";break;case"INSTRUCTIONS_EXTENSION":j=i&&D.createElement(InstructionExtensionDetail,{wallet:i}),T=i&&b.t("get_options.title",{wallet:m&&i.shortName||i.name}),P="DOWNLOAD_OPTIONS";break;case"INSTRUCTIONS_DESKTOP":j=i&&D.createElement(InstructionDesktopDetail,{connectWallet:selectWallet,wallet:i}),T=i&&b.t("get_options.title",{wallet:m&&i.shortName||i.name}),P="DOWNLOAD_OPTIONS"}return D.createElement(tQ,{display:"flex",flexDirection:"row",style:{maxHeight:m?468:504}},(!m||"NONE"===S)&&D.createElement(tQ,{className:m?"_1vwt0cg4":"_1vwt0cg3",display:"flex",flexDirection:"column",marginTop:"16"},D.createElement(tQ,{display:"flex",justifyContent:"space-between"},m&&g&&D.createElement(tQ,{marginLeft:"16",width:"28"},D.createElement(InfoButton,{onClick:()=>changeWalletStep("LEARN_COMPACT")})),m&&!g&&D.createElement(tQ,{marginLeft:"16",width:"28"}),D.createElement(tQ,{marginLeft:m?"0":"6",paddingBottom:"8",paddingTop:"2",paddingX:"18"},D.createElement(rm,{as:"h1",color:"modalText",id:"rk_connect_title",size:"18",weight:"heavy",testId:"connect-header-label"},b.t("connect.title"))),m&&D.createElement(tQ,{marginRight:"16"},D.createElement(CloseButton,{onClose:e}))),D.createElement(tQ,{className:"_1vwt0cg2 ju367v7a ju367v7v",paddingBottom:"18"},Object.entries(x).map(([e,t],o)=>t.length>0&&D.createElement(D.Fragment,{key:o},e?D.createElement(tQ,{marginBottom:"8",marginTop:"16",marginX:"6"},D.createElement(rm,{color:"Installed"===e?"accentColor":"modalTextSecondary",size:"14",weight:"bold"},A.includes(e)?b.t(`connector_group.${e.toLowerCase()}`):e)):null,D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"4"},t.map(e=>D.createElement(ModalSelection,{currentlySelected:e.id===n,iconBackground:e.iconBackground,iconUrl:e.iconUrl,key:e.id,name:e.name,onClick:()=>selectWallet(e),ready:e.ready,recent:e.recent,testId:`wallet-option-${e.id}`,isRainbowKitConnector:e.isRainbowKitConnector})))))),m&&D.createElement(D.Fragment,null,D.createElement(tQ,{background:"generalBorder",height:"1",marginTop:"-1"}),g?D.createElement(tQ,{paddingX:"24",paddingY:"16",textAlign:"center"},D.createElement(g,{Link:DisclaimerLink,Text:DisclaimerText})):D.createElement(tQ,{alignItems:"center",display:"flex",justifyContent:"space-between",paddingX:"24",paddingY:"16"},D.createElement(tQ,{paddingY:"4"},D.createElement(rm,{color:"modalTextSecondary",size:"14",weight:"medium"},b.t("connect.new_to_ethereum.description"))),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"row",gap:"4",justifyContent:"center"},D.createElement(tQ,{className:touchableStyles({active:"shrink",hover:"grow"}),cursor:"pointer",onClick:()=>changeWalletStep("LEARN_COMPACT"),paddingY:"4",style:{willChange:"transform"},transition:"default"},D.createElement(rm,{color:"accentColor",size:"14",weight:"bold"},b.t("connect.new_to_ethereum.learn_more.label"))))))),(!m||"NONE"!==S)&&D.createElement(D.Fragment,null,!m&&D.createElement(tQ,{background:"generalBorder",minWidth:"1",width:"1"}),D.createElement(tQ,{display:"flex",flexDirection:"column",margin:"16",style:{flexGrow:1}},D.createElement(tQ,{alignItems:"center",display:"flex",justifyContent:"space-between",marginBottom:"12"},D.createElement(tQ,{width:"28"},P&&D.createElement(tQ,{as:"button",className:touchableStyles({active:"shrinkSm",hover:"growLg"}),color:"accentColor",onClick:()=>{P&&changeWalletStep(P,!0),null==t||t()},paddingX:"8",paddingY:"4",style:{boxSizing:"content-box",height:17,willChange:"transform"},transition:"default",type:"button"},D.createElement(BackIcon,null))),D.createElement(tQ,{display:"flex",justifyContent:"center",style:{flexGrow:1}},T&&D.createElement(rm,{color:"modalText",size:"18",textAlign:"center",weight:"heavy"},T)),D.createElement(CloseButton,{onClose:e})),D.createElement(tQ,{display:"flex",flexDirection:"column",style:{minHeight:m?396:432}},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"6",height:"full",justifyContent:"center",marginX:"8"},j)))))}var LoadingSpinner=({wallet:e})=>D.createElement("svg",{className:"_1am14413",viewBox:"0 0 86 86",width:"86",height:"86"},D.createElement("title",null,"Loading"),D.createElement("rect",{x:"3",y:"3",width:80,height:80,rx:20,ry:20,strokeDasharray:"53.333333333333336 "+320/3,strokeDashoffset:160,className:"_1am14412",style:{stroke:(null==e?void 0:e.iconAccent)||"#0D3887"}}));function WalletButton({onClose:e,wallet:t,connecting:n}){let{connect:o,iconBackground:i,iconUrl:s,id:l,name:c,getMobileUri:u,ready:d,shortName:p,showWalletConnectModal:f}=t,m=useCoolMode(s),g=(0,D.useRef)(!1),{i18n:b}=(0,D.useContext)(tY),y=(0,D.useCallback)(async()=>{let onMobileUri=async()=>{let e=await (null==u?void 0:u());if(e){if(e&&function({mobileUri:e,name:t}){localStorage.setItem(rb,JSON.stringify({href:e.split("?")[0],name:t}))}({mobileUri:e,name:c}),e.startsWith("http")){let t=document.createElement("a");t.href=e,t.target="_blank",t.rel="noreferrer noopener",t.click()}else window.location.href=e}};if("walletConnect"!==l&&onMobileUri(),f){f(),null==e||e();return}null==o||o()},[o,u,f,e,c,l]);return(0,D.useEffect)(()=>{n&&!g.current&&(y(),g.current=!0)},[n,y]),D.createElement(tQ,{as:"button",color:d?"modalText":"modalTextSecondary",disabled:!d,fontFamily:"body",key:l,onClick:y,ref:m,style:{overflow:"visible",textAlign:"center"},testId:`wallet-option-${l}`,type:"button",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",justifyContent:"center"},D.createElement(tQ,{display:"flex",alignItems:"center",justifyContent:"center",paddingBottom:"8",paddingTop:"10",position:"relative"},n?D.createElement(LoadingSpinner,{wallet:t}):null,D.createElement(AsyncImage,{background:i,borderRadius:"13",boxShadow:"walletLogo",height:"60",src:s,width:"60"})),n?null:D.createElement(tQ,{display:"flex",flexDirection:"column",textAlign:"center"},D.createElement(rm,{as:"h2",color:t.ready?"modalText":"modalTextSecondary",size:"13",weight:"medium"},D.createElement(tQ,{as:"span",position:"relative"},null!=p?p:c,!t.ready&&" (unsupported)")),t.recent&&D.createElement(rm,{color:"accentColor",size:"12",weight:"medium"},b.t("connect.recent")))))}function MobileOptions({onClose:e}){var t;let n=useWalletConnectors().filter(e=>e.isRainbowKitConnector),{disclaimer:o,learnMoreUrl:i}=(0,D.useContext)(rs),s=null,l=null,c=!1,u=null,[d,p]=(0,D.useState)("CONNECT"),{i18n:f}=(0,D.useContext)(tY),m=isIOS();switch(d){case"CONNECT":s=f.t("connect.title"),c=!0,l=D.createElement(tQ,null,D.createElement(tQ,{background:"profileForeground",className:"_1am14410",display:"flex",paddingBottom:"20",paddingTop:"6"},D.createElement(tQ,{display:"flex",style:{margin:"0 auto"}},n.filter(e=>e.ready).map(t=>D.createElement(tQ,{key:t.id,paddingX:"20"},D.createElement(tQ,{width:"60"},D.createElement(WalletButton,{onClose:e,wallet:t})))))),D.createElement(tQ,{background:"generalBorder",height:"1",marginBottom:"32",marginTop:"-1"}),D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",gap:"32",paddingX:"32",style:{textAlign:"center"}},D.createElement(tQ,{display:"flex",flexDirection:"column",gap:"8",textAlign:"center"},D.createElement(rm,{color:"modalText",size:"16",weight:"bold"},f.t("intro.title")),D.createElement(rm,{color:"modalTextSecondary",size:"16"},f.t("intro.description")))),D.createElement(tQ,{paddingTop:"32",paddingX:"20"},D.createElement(tQ,{display:"flex",gap:"14",justifyContent:"center"},D.createElement(ActionButton,{label:f.t("intro.get.label"),onClick:()=>p("GET"),size:"large",type:"secondary"}),D.createElement(ActionButton,{href:i,label:f.t("intro.learn_more.label"),size:"large",type:"secondary"}))),o&&D.createElement(tQ,{marginTop:"28",marginX:"32",textAlign:"center"},D.createElement(o,{Link:DisclaimerLink,Text:DisclaimerText})));break;case"GET":{s=f.t("get.title"),u="CONNECT";let e=null==(t=null==n?void 0:n.filter(e=>{var t,n,o;return(null==(t=e.downloadUrls)?void 0:t.ios)||(null==(n=e.downloadUrls)?void 0:n.android)||(null==(o=e.downloadUrls)?void 0:o.mobile)}))?void 0:t.splice(0,3);l=D.createElement(tQ,null,D.createElement(tQ,{alignItems:"center",display:"flex",flexDirection:"column",height:"full",marginBottom:"36",marginTop:"5",paddingTop:"12",width:"full"},e.map((t,n)=>{let{downloadUrls:o,iconBackground:i,iconUrl:s,name:l}=t;return(null==o?void 0:o.ios)||(null==o?void 0:o.android)||(null==o?void 0:o.mobile)?D.createElement(tQ,{display:"flex",gap:"16",key:t.id,paddingX:"20",width:"full"},D.createElement(tQ,{style:{minHeight:48,minWidth:48}},D.createElement(AsyncImage,{background:i,borderColor:"generalBorder",borderRadius:"10",height:"48",src:s,width:"48"})),D.createElement(tQ,{display:"flex",flexDirection:"column",width:"full"},D.createElement(tQ,{alignItems:"center",display:"flex",height:"48"},D.createElement(tQ,{width:"full"},D.createElement(rm,{color:"modalText",size:"18",weight:"bold"},l)),D.createElement(ActionButton,{href:(m?null==o?void 0:o.ios:null==o?void 0:o.android)||(null==o?void 0:o.mobile),label:f.t("get.action.label"),size:"small",type:"secondary"})),np(u),padding:"16",style:{height:17,willChange:"transform"},transition:"default",type:"button"},D.createElement(BackIcon,null))),D.createElement(tQ,{marginTop:"4",textAlign:"center",width:"full"},D.createElement(rm,{as:"h1",color:"modalText",id:"rk_connect_title",size:"20",weight:"bold"},s)),D.createElement(tQ,{alignItems:"center",display:"flex",height:"32",paddingRight:"14",position:"absolute",right:"0"},D.createElement(tQ,{style:{marginBottom:-20,marginTop:-20}},D.createElement(CloseButton,{onClose:e}))))),D.createElement(tQ,{display:"flex",flexDirection:"column"},l))}var MobileStatus=({onClose:e})=>{let{connector:t}=(0,D.useContext)(rc),{i18n:n}=(0,D.useContext)(tY),o=(null==t?void 0:t.name)||"";return D.createElement(tQ,null,D.createElement(tQ,{display:"flex",paddingBottom:"32",justifyContent:"center",alignItems:"center",background:"profileForeground",flexDirection:"column"},D.createElement(tQ,{width:"full",display:"flex",justifyContent:"flex-end",marginTop:"18",marginRight:"24"},D.createElement(CloseButton,{onClose:e})),D.createElement(tQ,{width:"60"},D.createElement(WalletButton,{onClose:e,wallet:t,connecting:!0})),D.createElement(tQ,{marginTop:"20"},D.createElement(rm,{textAlign:"center",color:"modalText",size:"18",weight:"semibold"},n.t("connect.status.connect_mobile",{wallet:o}))),D.createElement(tQ,{maxWidth:"full",marginTop:"8"},D.createElement(rm,{textAlign:"center",color:"modalText",size:"16",weight:"medium"},n.t("connect.status.confirm_mobile",{wallet:o})))))};function ConnectOptions({onClose:e}){let{connector:t}=(0,D.useContext)(rc);return isMobile()?t?D.createElement(MobileStatus,{onClose:e}):D.createElement(MobileOptions,{onClose:e}):D.createElement(DesktopOptions,{onClose:e})}function ConnectModal({onClose:e,open:t}){let n="rk_connect_title",o=useConnectionStatus(),{disconnect:i}=useDisconnect(),{isConnecting:s}=(0,_.m)(),l=D.useCallback(()=>{e(),i()},[e,i]),c=D.useCallback(()=>{s&&i(),e()},[e,i,s]);return"disconnected"===o?D.createElement(Dialog,{onClose:c,open:t,titleId:n},D.createElement(DialogContent,{bottomSheetOnMobile:!0,padding:"0",wide:!0},D.createElement(ConnectOptions,{onClose:c}))):"unauthenticated"===o?D.createElement(Dialog,{onClose:l,open:t,titleId:n},D.createElement(DialogContent,{bottomSheetOnMobile:!0,padding:"0"},D.createElement(SignIn,{onClose:l,onCloseModal:e}))):null}function useModalStateValue(){let[e,t]=(0,D.useState)(!1);return{closeModal:(0,D.useCallback)(()=>t(!1),[]),isModalOpen:e,openModal:(0,D.useCallback)(()=>t(!0),[])}}var rB=(0,D.createContext)({accountModalOpen:!1,chainModalOpen:!1,connectModalOpen:!1,isWalletConnectModalOpen:!1,setIsWalletConnectModalOpen:()=>{}});function ModalProvider({children:e}){let{closeModal:t,isModalOpen:n,openModal:o}=useModalStateValue(),{closeModal:i,isModalOpen:s,openModal:l}=useModalStateValue(),{closeModal:c,isModalOpen:u,openModal:d}=useModalStateValue(),[p,f]=(0,D.useState)(!1),m=useConnectionStatus(),{chainId:g}=(0,_.m)(),{chains:b}=(0,z.Z)(),y=b.some(e=>e.id===g);function closeModals({keepConnectModalOpen:e=!1}={}){e||t(),i(),c()}let v="unauthenticated"===useAuthenticationStatus();return useAccountEffect_useAccountEffect({onConnect:()=>closeModals({keepConnectModalOpen:v}),onDisconnect:()=>closeModals()}),(0,D.useEffect)(()=>{v&&closeModals()},[v]),D.createElement(rB.Provider,{value:(0,D.useMemo)(()=>({accountModalOpen:s,chainModalOpen:u,connectModalOpen:n,isWalletConnectModalOpen:p,openAccountModal:y&&"connected"===m?l:void 0,openChainModal:"connected"===m?d:void 0,openConnectModal:"disconnected"===m||"unauthenticated"===m?o:void 0,setIsWalletConnectModalOpen:f}),[m,s,u,n,l,d,o,y,p])},e,D.createElement(ConnectModal,{onClose:t,open:n}),D.createElement(AccountModal,{onClose:i,open:s}),D.createElement(ChainModal,{onClose:c,open:u}))}function useWalletConnectOpenState(){let{isWalletConnectModalOpen:e,setIsWalletConnectModalOpen:t}=(0,D.useContext)(rB);return{isWalletConnectModalOpen:e,setIsWalletConnectModalOpen:t}}var noop=()=>{};function ConnectButtonRenderer({children:e}){var t,n,o,i;let s=function(){let[e,t]=(0,D.useState)(!1);return(0,D.useEffect)(()=>(t(!0),()=>{t(!1)}),[]),(0,D.useCallback)(()=>e,[e])}(),{address:l}=(0,_.m)(),c=useMainnetEnsName(l),u=useMainnetEnsAvatar(c),{chainId:d}=(0,_.m)(),{chains:p}=(0,z.Z)(),f=p.some(e=>e.id===d),m=useRainbowKitChainsById(),g=null!=(t=useAuthenticationStatus())?t:void 0,b=d?m[d]:void 0,y=null!=(n=null==b?void 0:b.name)?n:void 0,v=null!=(o=null==b?void 0:b.iconUrl)?o:void 0,w=null!=(i=null==b?void 0:b.iconBackground)?i:void 0,C=useAsyncImage(v),E=(0,D.useContext)(rp),x=useRecentTransactions().some(({status:e})=>"pending"===e)&&E,{showBalance:A}=useShowBalance(),k="boolean"==typeof A?A:!A||t_(A)[isMobile()?"smallScreen":"largeScreen"],{data:B}=useBalance({address:k?l:void 0}),S=B?`${abbreviateETHBalance(parseFloat(B.formatted))} ${B.symbol}`:void 0,{openConnectModal:I}=function(){let{connectModalOpen:e,openConnectModal:t}=(0,D.useContext)(rB),{isWalletConnectModalOpen:n}=useWalletConnectOpenState();return{connectModalOpen:e||n,openConnectModal:t}}(),{openChainModal:j}=function(){let{chainModalOpen:e,openChainModal:t}=(0,D.useContext)(rB);return{chainModalOpen:e,openChainModal:t}}(),{openAccountModal:T}=function(){let{accountModalOpen:e,openAccountModal:t}=(0,D.useContext)(rB);return{accountModalOpen:e,openAccountModal:t}}(),{accountModalOpen:P,chainModalOpen:M,connectModalOpen:O}=function(){let{accountModalOpen:e,chainModalOpen:t,connectModalOpen:n}=(0,D.useContext)(rB);return{accountModalOpen:e,chainModalOpen:t,connectModalOpen:n}}();return D.createElement(D.Fragment,null,e({account:l?{address:l,balanceDecimals:null==B?void 0:B.decimals,balanceFormatted:null==B?void 0:B.formatted,balanceSymbol:null==B?void 0:B.symbol,displayBalance:S,displayName:c?formatENS(c):formatAddress(l),ensAvatar:null!=u?u:void 0,ensName:null!=c?c:void 0,hasPendingTransactions:x}:void 0,accountModalOpen:P,authenticationStatus:g,chain:d?{hasIcon:!!v,iconBackground:w,iconUrl:C,id:d,name:y,unsupported:!f}:void 0,chainModalOpen:M,connectModalOpen:O,mounted:s(),openAccountModal:null!=T?T:noop,openChainModal:null!=j?j:noop,openConnectModal:null!=I?I:noop}))}ConnectButtonRenderer.displayName="ConnectButton.Custom";var rS={accountStatus:"full",chainStatus:{largeScreen:"full",smallScreen:"icon"},label:"Connect Wallet",showBalance:{largeScreen:!0,smallScreen:!1}};function ConnectButton({accountStatus:e=rS.accountStatus,chainStatus:t=rS.chainStatus,label:n=rS.label,showBalance:o=rS.showBalance}){let i=useRainbowKitChains(),s=useConnectionStatus(),{setShowBalance:l}=useShowBalance(),[c,u]=(0,D.useState)(!1),{i18n:d}=(0,D.useContext)(tY);return(0,D.useEffect)(()=>{l(o),c||u(!0)},[o,l]),c?D.createElement(ConnectButtonRenderer,null,({account:l,chain:c,mounted:u,openAccountModal:p,openChainModal:f,openConnectModal:m})=>{var g,b,y;let v=u&&"loading"!==s,w=null!=(g=null==c?void 0:c.unsupported)&&g;return D.createElement(tQ,{display:"flex",gap:"12",...!v&&{"aria-hidden":!0,style:{opacity:0,pointerEvents:"none",userSelect:"none"}}},v&&l&&"connected"===s?D.createElement(D.Fragment,null,c&&(i.length>1||w)&&D.createElement(tQ,{alignItems:"center","aria-label":"Chain Selector",as:"button",background:w?"connectButtonBackgroundError":"connectButtonBackground",borderRadius:"connectButton",boxShadow:"connectButton",className:touchableStyles({active:"shrink",hover:"grow"}),color:w?"connectButtonTextError":"connectButtonText",display:tD(t,e=>"none"===e?"none":"flex"),fontFamily:"body",fontWeight:"bold",gap:"6",key:w?"unsupported":"supported",onClick:f,paddingX:"10",paddingY:"8",testId:w?"wrong-network-button":"chain-button",transition:"default",type:"button"},w?D.createElement(tQ,{alignItems:"center",display:"flex",height:"24",paddingX:"4"},d.t("connect_wallet.wrong_network.label")):D.createElement(tQ,{alignItems:"center",display:"flex",gap:"6"},c.hasIcon?D.createElement(tQ,{display:tD(t,e=>"full"===e||"icon"===e?"block":"none"),height:"24",width:"24"},D.createElement(AsyncImage,{alt:null!=(b=c.name)?b:"Chain icon",background:c.iconBackground,borderRadius:"full",height:"24",src:c.iconUrl,width:"24"})):null,D.createElement(tQ,{display:tD(t,e=>"icon"!==e||c.iconUrl?"full"===e||"name"===e?"block":"none":"block")},null!=(y=c.name)?y:c.id)),D.createElement(DropdownIcon,null)),!w&&D.createElement(tQ,{alignItems:"center",as:"button",background:"connectButtonBackground",borderRadius:"connectButton",boxShadow:"connectButton",className:touchableStyles({active:"shrink",hover:"grow"}),color:"connectButtonText",display:"flex",fontFamily:"body",fontWeight:"bold",onClick:p,testId:"account-button",transition:"default",type:"button"},l.displayBalance&&D.createElement(tQ,{display:tD(o,e=>e?"block":"none"),padding:"8",paddingLeft:"12"},l.displayBalance),D.createElement(tQ,{background:t_(o)[isMobile()?"smallScreen":"largeScreen"]?"connectButtonInnerBackground":"connectButtonBackground",borderColor:"connectButtonBackground",borderRadius:"connectButton",borderStyle:"solid",borderWidth:"2",color:"connectButtonText",fontFamily:"body",fontWeight:"bold",paddingX:"8",paddingY:"6",transition:"default"},D.createElement(tQ,{alignItems:"center",display:"flex",gap:"6",height:"24"},D.createElement(tQ,{display:tD(e,e=>"full"===e||"avatar"===e?"block":"none")},D.createElement(Avatar,{address:l.address,imageUrl:l.ensAvatar,loading:l.hasPendingTransactions,size:24})),D.createElement(tQ,{alignItems:"center",display:"flex",gap:"6"},D.createElement(tQ,{display:tD(e,e=>"full"===e||"address"===e?"block":"none")},l.displayName),D.createElement(DropdownIcon,null)))))):D.createElement(tQ,{as:"button",background:"accentColor",borderRadius:"connectButton",boxShadow:"connectButton",className:touchableStyles({active:"shrink",hover:"grow"}),color:"accentColorForeground",fontFamily:"body",fontWeight:"bold",height:"40",key:"connect",onClick:m,paddingX:"14",testId:"connect-button",transition:"default",type:"button"},u&&"Connect Wallet"===n?d.t("connect_wallet.label"):n))}):D.createElement(D.Fragment,null)}ConnectButton.__defaultProps=rS,ConnectButton.Custom=ConnectButtonRenderer;var computeWalletConnectMetaData=({appName:e,appDescription:t,appUrl:n,appIcon:o})=>({name:e,description:null!=t?t:e,url:null!=n?n:"undefined"!=typeof window?window.location.href:"",icons:[...o?[o]:[]]}),connectorsForWallets=(e,{projectId:t,walletConnectParameters:n,appName:o,appDescription:i,appUrl:s,appIcon:l})=>{let c=-1,u=[],d=[],p=[],f=computeWalletConnectMetaData({appName:o,appDescription:i,appUrl:s,appIcon:l});e.forEach(({groupName:e,wallets:i},s)=>{i.forEach(i=>{c++;let u=i({projectId:t,appName:o,appIcon:l,options:{metadata:f,...n},walletConnectParameters:{metadata:f,...n}});if((null==u?void 0:u.iconAccent)&&!isHexString(null==u?void 0:u.iconAccent))throw Error(`Property \`iconAccent\` is not a hex value for wallet: ${u.name}`);let m={...u,groupIndex:s+1,groupName:e,index:c};"function"==typeof u.hidden?p.push(m):d.push(m)})});let m=[...d,...p];for(let{createConnector:e,groupIndex:t,groupName:n,hidden:o,...i}of m){if("function"==typeof o){let e=o();if(e)continue}let walletMetaData=e=>({rkDetails:Object.fromEntries(Object.entries({...i,groupIndex:t,groupName:n,isRainbowKitConnector:!0,...e||{}}).filter(([e,t])=>void 0!==t))}),s="walletConnect"===i.id;s&&u.push(e(walletMetaData({isWalletConnectModalConnector:!0,showQrModal:!0})));let l=e(walletMetaData());u.push(l)}return u},rI=new Map,getOrCreateWalletConnectInstance=({projectId:e,walletConnectParameters:t,rkDetailsShowQrModal:n})=>{let o={...t||{},projectId:e,showQrModal:!1};n&&(o={...o,showQrModal:!0});let i=JSON.stringify(o),s=rI.get(i);if(s)return s;let l=walletConnect(o);return rI.set(i,l),l};function getWalletConnectConnector({projectId:e,walletConnectParameters:t}){if(!e||""===e)throw Error("No projectId found. Every dApp must now provide a WalletConnect Cloud projectId to enable WalletConnect v2 https://www.rainbowkit.com/docs/installation#configure");return"YOUR_PROJECT_ID"===e&&(e="21fef48091f12692cad574a6f7753643"),n=>(function({projectId:e,walletDetails:t,walletConnectParameters:n}){return o=>({...getOrCreateWalletConnectInstance({projectId:e,walletConnectParameters:n,rkDetailsShowQrModal:t.rkDetails.showQrModal})(o),...t})})({projectId:e,walletDetails:n,walletConnectParameters:t})}function getExplicitInjectedProvider(e){if("undefined"==typeof window||void 0===window.ethereum)return;let t=window.ethereum.providers;return t?t.find(t=>t[e]):window.ethereum[e]?window.ethereum:void 0}function getWindowProviderNamespace(e){let providerSearch=(e,t)=>{let[n,...o]=t.split("."),i=e[n];if(i)return 0===o.length?i:providerSearch(i,o.join("."))};if("undefined"!=typeof window)return providerSearch(window,e)}function hasInjectedProvider({flag:e,namespace:t}){return!!t&&void 0!==getWindowProviderNamespace(t)||!!e&&void 0!==getExplicitInjectedProvider(e)}function getInjectedConnector({flag:e,namespace:t,target:n}){let o=n||function({flag:e,namespace:t}){var n;if("undefined"==typeof window)return;if(t){let e=getWindowProviderNamespace(t);if(e)return e}let o=null==(n=window.ethereum)?void 0:n.providers;if(e){let t=getExplicitInjectedProvider(e);if(t)return t}return void 0!==o&&o.length>0?o[0]:window.ethereum}({flag:e,namespace:t});return e=>{let t=o?{target:()=>({id:e.rkDetails.id,name:e.rkDetails.name,provider:o})}:{};return n=>({...injected(t)(n),...e})}}var dist_coinbaseWallet=({appName:e,appIcon:t})=>{let o=hasInjectedProvider({flag:"isCoinbaseWallet"}),i=isIOS();return{id:"coinbase",name:"Coinbase Wallet",shortName:"Coinbase",rdns:"com.coinbase.wallet",iconUrl:async()=>(await n.e(1950).then(n.bind(n,41950))).default,iconAccent:"#2c5ff6",iconBackground:"#2c5ff6",installed:o||void 0,downloadUrls:{android:"https://play.google.com/store/apps/details?id=org.toshi",ios:"https://apps.apple.com/us/app/coinbase-wallet-store-crypto/id1278383455",mobile:"https://coinbase.com/wallet/downloads",qrCode:"https://coinbase-wallet.onelink.me/q5Sx/fdb9b250",chrome:"https://chrome.google.com/webstore/detail/coinbase-wallet-extension/hnfanknocfeofbddgcijnmhnfnkdnaad",browserExtension:"https://coinbase.com/wallet"},...i?{}:{qrCode:{getUri:e=>e,instructions:{learnMoreUrl:"https://coinbase.com/wallet/articles/getting-started-mobile",steps:[{description:"wallet_connectors.coinbase.qr_code.step1.description",step:"install",title:"wallet_connectors.coinbase.qr_code.step1.title"},{description:"wallet_connectors.coinbase.qr_code.step2.description",step:"create",title:"wallet_connectors.coinbase.qr_code.step2.title"},{description:"wallet_connectors.coinbase.qr_code.step3.description",step:"scan",title:"wallet_connectors.coinbase.qr_code.step3.title"}]}},extension:{instructions:{learnMoreUrl:"https://coinbase.com/wallet/articles/getting-started-extension",steps:[{description:"wallet_connectors.coinbase.extension.step1.description",step:"install",title:"wallet_connectors.coinbase.extension.step1.title"},{description:"wallet_connectors.coinbase.extension.step2.description",step:"create",title:"wallet_connectors.coinbase.extension.step2.title"},{description:"wallet_connectors.coinbase.extension.step3.description",step:"refresh",title:"wallet_connectors.coinbase.extension.step3.title"}]}}},createConnector:n=>o=>({...coinbaseWallet({appName:e,appLogoUrl:t,headlessMode:!0})(o),...n})}};function isMetaMask(e){return!!(null==e?void 0:e.isMetaMask)&&(!e.isBraveWallet||!!e._events||!!e._state)&&!e.isApexWallet&&!e.isAvalanche&&!e.isBackpack&&!e.isBifrost&&!e.isBitKeep&&!e.isBitski&&!e.isBlockWallet&&!e.isCoinbaseWallet&&!e.isDawn&&!e.isEnkrypt&&!e.isExodus&&!e.isFrame&&!e.isFrontier&&!e.isGamestop&&!e.isHyperPay&&!e.isImToken&&!e.isKuCoinWallet&&!e.isMathWallet&&!e.isOkxWallet&&!e.isOKExWallet&&!e.isOneInchIOSWallet&&!e.isOneInchAndroidWallet&&!e.isOpera&&!e.isPhantom&&!e.isPortal&&!e.isRabby&&!e.isRainbow&&!e.isStatus&&!e.isTalisman&&!e.isTally&&!e.isTokenPocket&&!e.isTokenary&&!e.isTrust&&!e.isTrustWallet&&!e.isXDEFI&&!e.isZeal&&!e.isZerion}var metaMaskWallet=({projectId:e,walletConnectParameters:t})=>{var o,i,s;let l=hasInjectedProvider({flag:"isMetaMask"}),c=!l,getUri=e=>isAndroid()?e:isIOS()?`metamask://wc?uri=${encodeURIComponent(e)}`:`https://metamask.app.link/wc?uri=${encodeURIComponent(e)}`;return{id:"metaMask",name:"MetaMask",rdns:"io.metamask",iconUrl:async()=>(await n.e(4419).then(n.bind(n,84419))).default,iconAccent:"#f6851a",iconBackground:"#fff",installed:c?void 0:l,downloadUrls:{android:"https://play.google.com/store/apps/details?id=io.metamask",ios:"https://apps.apple.com/us/app/metamask/id1438144202",mobile:"https://metamask.io/download",qrCode:"https://metamask.io/download",chrome:"https://chrome.google.com/webstore/detail/metamask/nkbihfbeogaeaoehlefnkodbefgpgknn",edge:"https://microsoftedge.microsoft.com/addons/detail/metamask/ejbalbakoplchlghecdalmeeeajnimhm",firefox:"https://addons.mozilla.org/firefox/addon/ether-metamask",opera:"https://addons.opera.com/extensions/details/metamask-10",browserExtension:"https://metamask.io/download"},mobile:{getUri:c?getUri:void 0},qrCode:c?{getUri,instructions:{learnMoreUrl:"https://metamask.io/faqs/",steps:[{description:"wallet_connectors.metamask.qr_code.step1.description",step:"install",title:"wallet_connectors.metamask.qr_code.step1.title"},{description:"wallet_connectors.metamask.qr_code.step2.description",step:"create",title:"wallet_connectors.metamask.qr_code.step2.title"},{description:"wallet_connectors.metamask.qr_code.step3.description",step:"refresh",title:"wallet_connectors.metamask.qr_code.step3.title"}]}}:void 0,extension:{instructions:{learnMoreUrl:"https://metamask.io/faqs/",steps:[{description:"wallet_connectors.metamask.extension.step1.description",step:"install",title:"wallet_connectors.metamask.extension.step1.title"},{description:"wallet_connectors.metamask.extension.step2.description",step:"create",title:"wallet_connectors.metamask.extension.step2.title"},{description:"wallet_connectors.metamask.extension.step3.description",step:"refresh",title:"wallet_connectors.metamask.extension.step3.title"}]}},createConnector:c?getWalletConnectConnector({projectId:e,walletConnectParameters:t}):getInjectedConnector({target:"undefined"!=typeof window?null!=(s=null==(i=null==(o=window.ethereum)?void 0:o.providers)?void 0:i.find(isMetaMask))?s:window.ethereum:void 0})}},rainbowWallet=({projectId:e,walletConnectParameters:t})=>{let o=hasInjectedProvider({flag:"isRainbow"}),i=!o,getUri=e=>isAndroid()?e:isIOS()?`rainbow://wc?uri=${encodeURIComponent(e)}&connector=rainbowkit`:`https://rnbwapp.com/wc?uri=${encodeURIComponent(e)}&connector=rainbowkit`;return{id:"rainbow",name:"Rainbow",rdns:"me.rainbow",iconUrl:async()=>(await n.e(1608).then(n.bind(n,31608))).default,iconBackground:"#0c2f78",installed:i?void 0:o,downloadUrls:{android:"https://play.google.com/store/apps/details?id=me.rainbow&referrer=utm_source%3Drainbowkit&utm_source=rainbowkit",ios:"https://apps.apple.com/app/apple-store/id1457119021?pt=119997837&ct=rainbowkit&mt=8",mobile:"https://rainbow.download?utm_source=rainbowkit",qrCode:"https://rainbow.download?utm_source=rainbowkit&utm_medium=qrcode",browserExtension:"https://rainbow.me/extension?utm_source=rainbowkit"},mobile:{getUri:i?getUri:void 0},qrCode:i?{getUri,instructions:{learnMoreUrl:"https://learn.rainbow.me/connect-to-a-website-or-app?utm_source=rainbowkit&utm_medium=connector&utm_campaign=learnmore",steps:[{description:"wallet_connectors.rainbow.qr_code.step1.description",step:"install",title:"wallet_connectors.rainbow.qr_code.step1.title"},{description:"wallet_connectors.rainbow.qr_code.step2.description",step:"create",title:"wallet_connectors.rainbow.qr_code.step2.title"},{description:"wallet_connectors.rainbow.qr_code.step3.description",step:"scan",title:"wallet_connectors.rainbow.qr_code.step3.title"}]}}:void 0,createConnector:i?getWalletConnectConnector({projectId:e,walletConnectParameters:t}):getInjectedConnector({flag:"isRainbow"})}},walletConnectWallet=({projectId:e,options:t})=>({id:"walletConnect",name:"WalletConnect",installed:void 0,iconUrl:async()=>(await n.e(3525).then(n.bind(n,33525))).default,iconBackground:"#3b99fc",qrCode:{getUri:e=>e},createConnector:getWalletConnectConnector({projectId:e,walletConnectParameters:t})}),createDefaultTransports=e=>{let t=e.reduce((e,t)=>{let n=t.id;return e[n]=function(e,t={}){let{batch:n,fetchOptions:o,key:i="http",name:s="HTTP JSON-RPC",onFetchResponse:l,retryDelay:c}=t;return({chain:u,retryCount:d,timeout:p})=>{let{batchSize:f=1e3,wait:m=0}="object"==typeof n?n:{},g=t.retryCount??d,b=p??t.timeout??1e4,y=e||u?.rpcUrls.default.http[0];if(!y)throw new UrlRequiredError;let v=function(e,t={}){return{async request(n){let{body:o,fetchOptions:i={},onResponse:s=t.onResponse,timeout:l=t.timeout??1e4}=n,{headers:c,method:u,signal:d}={...t.fetchOptions,...i};try{let t;let n=await withTimeout(async({signal:t})=>{let n=await fetch(e,{...i,body:Array.isArray(o)?(0,e7.P)(o.map(e=>({jsonrpc:"2.0",id:e.id??tj.take(),...e}))):(0,e7.P)({jsonrpc:"2.0",id:o.id??tj.take(),...o}),headers:{...c,"Content-Type":"application/json"},method:u||"POST",signal:d||(l>0?t:null)});return n},{errorInstance:new tS.W5({body:o,url:e}),timeout:l,signal:!0});if(s&&await s(n),t=n.headers.get("Content-Type")?.startsWith("application/json")?await n.json():await n.text(),!n.ok)throw new tS.Gg({body:o,details:(0,e7.P)(t.error)||n.statusText,headers:n.headers,status:n.status,url:e});return t}catch(t){if(t instanceof tS.Gg||t instanceof tS.W5)throw t;throw new tS.Gg({body:o,details:t.message,url:e})}}}}(y,{fetchOptions:o,onResponse:l,timeout:b});return(0,tT.q)({key:i,name:s,async request({method:t,params:o}){let i={method:t,params:o},{schedule:s}=(0,tI.S)({id:`${e}`,wait:m,shouldSplitBatch:e=>e.length>f,fn:e=>v.request({body:e}),sort:(e,t)=>e.id-t.id}),fn=async e=>n?s(e):[await v.request({body:e})],[{error:l,result:c}]=await fn(i);if(l)throw new tS.bs({body:i,error:l,url:y});return c},retryCount:g,retryDelay:c,timeout:b,type:"http"},{fetchOptions:o,url:y})}}(),e},{});return t},getDefaultConfig=({appName:e,appDescription:t,appUrl:n,appIcon:o,wallets:i,projectId:s,...l})=>{let{transports:c,chains:u,...d}=l,p=computeWalletConnectMetaData({appName:e,appDescription:t,appUrl:n,appIcon:o}),f=connectorsForWallets(i||[{groupName:"Popular",wallets:[rainbowWallet,dist_coinbaseWallet,metaMaskWallet,walletConnectWallet]}],{projectId:s,appName:e,appDescription:t,appUrl:n,appIcon:o,walletConnectParameters:{metadata:p}});return c||(c=createDefaultTransports(u)),function(e){let t;let{multiInjectedProviderDiscovery:n=!0,storage:o=function(e){let{deserialize:t=deserialize_deserialize,key:n="wagmi",serialize:o=serialize_serialize,storage:i=tU}=e;function unwrap(e){return e instanceof Promise?e.then(e=>e).catch(()=>null):e}return{...i,key:n,async getItem(e,o){let s=i.getItem(`${n}.${e}`),l=await unwrap(s);return l?t(l)??null:o??null},async setItem(e,t){let s=`${n}.${e}`;null===t?await unwrap(i.removeItem(s)):await unwrap(i.setItem(s,o(t)))},async removeItem(e){await unwrap(i.removeItem(`${n}.${e}`))}}}({storage:"undefined"!=typeof window&&window.localStorage?window.localStorage:tU}),syncConnectedChain:i=!0,ssr:s,...l}=e,c="undefined"!=typeof window&&n?function(){let e=new Set,t=[],request=()=>(function(e){let handler=t=>e(t.detail);return window.addEventListener("eip6963:announceProvider",handler),window.dispatchEvent(new CustomEvent("eip6963:requestProvider")),()=>window.removeEventListener("eip6963:announceProvider",handler)})(n=>{t.some(({info:e})=>e.uuid===n.info.uuid)||(t=[...t,n],e.forEach(e=>e(t,{added:[n]})))}),n=request();return{_listeners:()=>e,clear(){e.forEach(e=>e([],{removed:[...t]})),t=[]},destroy(){this.clear(),e.clear(),n()},findProvider:({rdns:e})=>t.find(t=>t.info.rdns===e),getProviders:()=>t,reset(){this.clear(),n(),n=request()},subscribe:(n,{emitImmediately:o}={})=>(e.add(n),o&&n(t,{added:t}),()=>e.delete(n))}}():void 0,u=vanilla_createStore(()=>l.chains),d=vanilla_createStore(()=>[...l.connectors??[],...s?[]:c?.getProviders().map(providerDetailToConnector)??[]].map(setup));function setup(e){var t;let n=(t=function(e=11){if(!C||tF+e>512){C="",tF=0;for(let e=0;e<256;e++)C+=(256+256*Math.random()|0).toString(16).substring(1)}return C.substring(tF,tF+++e)}(),new Emitter(t)),i={...e({emitter:n,chains:u.getState(),storage:o}),emitter:n,uid:n.uid};return n.on("connect",connect),i.setup?.(),i}function providerDetailToConnector(e){let{info:t}=e,n=e.provider;return injected({target:{...t,id:t.rdns,provider:n}})}let p=new Map;function getInitialState(){return{chainId:u.getState()[0].id,connections:new Map,current:void 0,status:"disconnected"}}let f="0.0.0-canary-";t=tN.i.startsWith(f)?parseInt(tN.i.replace(f,"")):parseInt(tN.i.split(".")[0]??"0");let m=vanilla_createStore(subscribeWithSelector(o?persist(getInitialState,{migrate(e,n){if(n===t)return e;let o=getInitialState(),i=e&&"object"==typeof e&&"chainId"in e&&"number"==typeof e.chainId?e.chainId:o.chainId;return{...o,chainId:i}},name:"store",partialize:e=>({connections:{__type:"Map",value:Array.from(e.connections.entries()).map(([e,t])=>{let{id:n,name:o,type:i,uid:s}=t.connector;return[e,{...t,connector:{id:n,name:o,type:i,uid:s}}]})},chainId:e.chainId,current:e.current}),skipHydration:s,storage:o,version:t}):getInitialState));function change(e){m.setState(t=>{let n=t.connections.get(e.uid);return n?{...t,connections:new Map(t.connections).set(e.uid,{accounts:e.accounts??n.accounts,chainId:e.chainId??n.chainId,connector:n.connector})}:t})}function connect(e){"connecting"!==m.getState().status&&"reconnecting"!==m.getState().status&&m.setState(t=>{let n=d.getState().find(t=>t.uid===e.uid);return n?{...t,connections:new Map(t.connections).set(e.uid,{accounts:e.accounts,chainId:e.chainId,connector:n}),current:e.uid,status:"connected"}:t})}return i&&m.subscribe(({connections:e,current:t})=>t?e.get(t)?.chainId:void 0,e=>{let t=u.getState().some(t=>t.id===e);if(t)return m.setState(t=>({...t,chainId:e??t.chainId}))}),c?.subscribe(e=>{let t=new Map;for(let e of d.getState())t.set(e.id,!0);let n=[];for(let o of e){let e=setup(providerDetailToConnector(o));t.has(e.id)||n.push(e)}d.setState(e=>[...e,...n],!0)}),{get chains(){return u.getState()},get connectors(){return d.getState()},storage:o,getClient:function(e={}){let t;let n=e.chainId??m.getState().chainId,o=u.getState().find(e=>e.id===n);if(e.chainId&&!o)throw new tw.X4;{let e=p.get(m.getState().chainId);if(e&&!o)return e;if(!o)throw new tw.X4}{let e=p.get(n);if(e)return e}if(l.client)t=l.client({chain:o});else{let e=o.id,n=u.getState().map(e=>e.id),i={},s=Object.entries(l);for(let[t,o]of s)if("chains"!==t&&"client"!==t&&"connectors"!==t&&"transports"!==t){if("object"==typeof o){if(e in o)i[t]=o[e];else{let e=n.some(e=>e in o);if(e)continue;i[t]=o}}else i[t]=o}t=(0,tP.e)({...i,chain:o,batch:i.batch??{multicall:!0},transport:t=>l.transports[e]({...t,connectors:d})})}return p.set(n,t),t},get state(){return m.getState()},setState(e){let t;t="function"==typeof e?e(m.getState()):e;let n=getInitialState();"object"!=typeof t&&(t=n);let o=Object.keys(n).some(e=>!(e in t));o&&(t=n),m.setState(t,!0)},subscribe:(e,t,n)=>m.subscribe(e,t,n?{...n,fireImmediately:n.emitImmediately}:void 0),_internal:{mipd:c,store:m,ssr:!!s,syncConnectedChain:i,transports:l.transports,chains:{setState(e){let t="function"==typeof e?e(u.getState()):e;if(0!==t.length)return u.setState(t,!0)},subscribe:e=>u.subscribe(e)},connectors:{providerDetailToConnector,setup,setState:e=>d.setState("function"==typeof e?e(d.getState()):e,!0),subscribe:e=>d.subscribe(e)},events:{change,connect,disconnect:function disconnect(e){m.setState(t=>{let n=t.connections.get(e.uid);if(n&&(n.connector.emitter.off("change",change),n.connector.emitter.off("disconnect",disconnect),n.connector.emitter.on("connect",connect)),t.connections.delete(e.uid),0===t.connections.size)return{...t,connections:new Map,current:void 0,status:"disconnected"};let o=t.connections.values().next().value;return{...t,connections:new Map(t.connections),current:o.connector.uid}})}}}}}({connectors:f,chains:u,transports:c,...d})}},66474:function(e,t,n){"use strict";n.d(t,{j:function(){return s}});var o=n(7506),i=n(24139),s=new class extends o.l{#L;#z;#q;constructor(){super(),this.#q=e=>{if(!i.sk&&window.addEventListener){let listener=()=>e();return window.addEventListener("visibilitychange",listener,!1),()=>{window.removeEventListener("visibilitychange",listener)}}}}onSubscribe(){this.#z||this.setEventListener(this.#q)}onUnsubscribe(){this.hasListeners()||(this.#z?.(),this.#z=void 0)}setEventListener(e){this.#q=e,this.#z?.(),this.#z=e(e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()})}setFocused(e){let t=this.#L!==e;t&&(this.#L=e,this.onFocus())}onFocus(){let e=this.isFocused();this.listeners.forEach(t=>{t(e)})}isFocused(){return"boolean"==typeof this.#L?this.#L:globalThis.document?.visibilityState!=="hidden"}}},59289:function(e,t,n){"use strict";n.d(t,{R:function(){return getDefaultState},m:function(){return l}});var o=n(27037),i=n(48907),s=n(72008),l=class extends i.F{#G;#d;#u;#W;constructor(e){super(),this.mutationId=e.mutationId,this.#d=e.defaultOptions,this.#u=e.mutationCache,this.#G=[],this.state=e.state||getDefaultState(),this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime)}get meta(){return this.options.meta}addObserver(e){this.#G.includes(e)||(this.#G.push(e),this.clearGcTimeout(),this.#u.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.#G=this.#G.filter(t=>t!==e),this.scheduleGc(),this.#u.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.#G.length||("pending"===this.state.status?this.scheduleGc():this.#u.remove(this))}continue(){return this.#W?.continue()??this.execute(this.state.variables)}async execute(e){let t="pending"===this.state.status;try{if(!t){this.#H({type:"pending",variables:e}),await this.#u.config.onMutate?.(e,this);let t=await this.options.onMutate?.(e);t!==this.state.context&&this.#H({type:"pending",context:t,variables:e})}let n=await (this.#W=(0,s.Mz)({fn:()=>this.options.mutationFn?this.options.mutationFn(e):Promise.reject(Error("No mutationFn found")),onFail:(e,t)=>{this.#H({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#H({type:"pause"})},onContinue:()=>{this.#H({type:"continue"})},retry:this.options.retry??0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.#W.promise);return await this.#u.config.onSuccess?.(n,e,this.state.context,this),await this.options.onSuccess?.(n,e,this.state.context),await this.#u.config.onSettled?.(n,null,this.state.variables,this.state.context,this),await this.options.onSettled?.(n,null,e,this.state.context),this.#H({type:"success",data:n}),n}catch(t){try{throw await this.#u.config.onError?.(t,e,this.state.context,this),await this.options.onError?.(t,e,this.state.context),await this.#u.config.onSettled?.(void 0,t,this.state.variables,this.state.context,this),await this.options.onSettled?.(void 0,t,e,this.state.context),t}finally{this.#H({type:"error",error:t})}}}#H(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"pending":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!(0,s.Kw)(this.options.networkMode),status:"pending",variables:e.variables,submittedAt:Date.now()};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"}}})(this.state),o.V.batch(()=>{this.#G.forEach(t=>{t.onMutationUpdate(e)}),this.#u.notify({mutation:this,type:"updated",action:e})})}};function getDefaultState(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0,submittedAt:0}}},27037:function(e,t,n){"use strict";n.d(t,{V:function(){return o}});var o=function(){let e=[],t=0,notifyFn=e=>{e()},batchNotifyFn=e=>{e()},scheduleFn=e=>setTimeout(e,0),schedule=n=>{t?e.push(n):scheduleFn(()=>{notifyFn(n)})},flush=()=>{let t=e;e=[],t.length&&scheduleFn(()=>{batchNotifyFn(()=>{t.forEach(e=>{notifyFn(e)})})})};return{batch:e=>{let n;t++;try{n=e()}finally{--t||flush()}return n},batchCalls:e=>(...t)=>{schedule(()=>{e(...t)})},schedule,setNotifyFunction:e=>{notifyFn=e},setBatchNotifyFunction:e=>{batchNotifyFn=e},setScheduler:e=>{scheduleFn=e}}}()},14304:function(e,t,n){"use strict";n.d(t,{N:function(){return s}});var o=n(7506),i=n(24139),s=new class extends o.l{#Q=!0;#z;#q;constructor(){super(),this.#q=e=>{if(!i.sk&&window.addEventListener){let onlineListener=()=>e(!0),offlineListener=()=>e(!1);return window.addEventListener("online",onlineListener,!1),window.addEventListener("offline",offlineListener,!1),()=>{window.removeEventListener("online",onlineListener),window.removeEventListener("offline",offlineListener)}}}}onSubscribe(){this.#z||this.setEventListener(this.#q)}onUnsubscribe(){this.hasListeners()||(this.#z?.(),this.#z=void 0)}setEventListener(e){this.#q=e,this.#z?.(),this.#z=e(this.setOnline.bind(this))}setOnline(e){let t=this.#Q!==e;t&&(this.#Q=e,this.listeners.forEach(t=>{t(e)}))}isOnline(){return this.#Q}}},56888:function(e,t,n){"use strict";n.d(t,{A:function(){return c},z:function(){return fetchState}});var o=n(24139),i=n(27037),s=n(72008),l=n(48907),c=class extends l.F{#K;#V;#Z;#W;#G;#d;#J;constructor(e){super(),this.#J=!1,this.#d=e.defaultOptions,this.setOptions(e.options),this.#G=[],this.#Z=e.cache,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.#K=e.state||function(e){let t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,o=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?o??Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"pending",fetchStatus:"idle"}}(this.options),this.state=this.#K,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.#d,...e},this.updateGcTime(this.options.gcTime)}optionalRemove(){this.#G.length||"idle"!==this.state.fetchStatus||this.#Z.remove(this)}setData(e,t){let n=(0,o.oE)(this.state.data,e,this.options);return this.#H({data:n,type:"success",dataUpdatedAt:t?.updatedAt,manual:t?.manual}),n}setState(e,t){this.#H({type:"setState",state:e,setStateOptions:t})}cancel(e){let t=this.#W?.promise;return this.#W?.cancel(e),t?t.then(o.ZT).catch(o.ZT):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.#K)}isActive(){return this.#G.some(e=>!1!==e.options.enabled)}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return!!this.state.isInvalidated||(this.getObserversCount()>0?this.#G.some(e=>e.getCurrentResult().isStale):void 0===this.state.data)}isStaleByTime(e=0){return this.state.isInvalidated||void 0===this.state.data||!(0,o.Kp)(this.state.dataUpdatedAt,e)}onFocus(){let e=this.#G.find(e=>e.shouldFetchOnWindowFocus());e?.refetch({cancelRefetch:!1}),this.#W?.continue()}onOnline(){let e=this.#G.find(e=>e.shouldFetchOnReconnect());e?.refetch({cancelRefetch:!1}),this.#W?.continue()}addObserver(e){this.#G.includes(e)||(this.#G.push(e),this.clearGcTimeout(),this.#Z.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){this.#G.includes(e)&&(this.#G=this.#G.filter(t=>t!==e),this.#G.length||(this.#W&&(this.#J?this.#W.cancel({revert:!0}):this.#W.cancelRetry()),this.scheduleGc()),this.#Z.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.#G.length}invalidate(){this.state.isInvalidated||this.#H({type:"invalidate"})}fetch(e,t){if("idle"!==this.state.fetchStatus){if(void 0!==this.state.data&&t?.cancelRefetch)this.cancel({silent:!0});else if(this.#W)return this.#W.continueRetry(),this.#W.promise}if(e&&this.setOptions(e),!this.options.queryFn){let e=this.#G.find(e=>e.options.queryFn);e&&this.setOptions(e.options)}let n=new AbortController,i={queryKey:this.queryKey,meta:this.meta},addSignalProperty=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>(this.#J=!0,n.signal)})};addSignalProperty(i);let l={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn&&this.options.queryFn!==o.CN?(this.#J=!1,this.options.persister)?this.options.persister(this.options.queryFn,i,this):this.options.queryFn(i):Promise.reject(Error(`Missing queryFn: '${this.options.queryHash}'`))};addSignalProperty(l),this.options.behavior?.onFetch(l,this),this.#V=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==l.fetchOptions?.meta)&&this.#H({type:"fetch",meta:l.fetchOptions?.meta});let onError=e=>{(0,s.DV)(e)&&e.silent||this.#H({type:"error",error:e}),(0,s.DV)(e)||(this.#Z.config.onError?.(e,this),this.#Z.config.onSettled?.(this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.#W=(0,s.Mz)({fn:l.fetchFn,abort:n.abort.bind(n),onSuccess:e=>{if(void 0===e){onError(Error(`${this.queryHash} data is undefined`));return}this.setData(e),this.#Z.config.onSuccess?.(e,this),this.#Z.config.onSettled?.(e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1},onError,onFail:(e,t)=>{this.#H({type:"failed",failureCount:e,error:t})},onPause:()=>{this.#H({type:"pause"})},onContinue:()=>{this.#H({type:"continue"})},retry:l.options.retry,retryDelay:l.options.retryDelay,networkMode:l.options.networkMode}),this.#W.promise}#H(e){this.state=(t=>{switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,...fetchState(t.data,this.options),fetchMeta:e.meta??null};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:e.dataUpdatedAt??Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":let n=e.error;if((0,s.DV)(n)&&n.revert&&this.#V)return{...this.#V,fetchStatus:"idle"};return{...t,error:n,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:n,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),i.V.batch(()=>{this.#G.forEach(e=>{e.onQueryUpdate()}),this.#Z.notify({query:this,type:"updated",action:e})})}};function fetchState(e,t){return{fetchFailureCount:0,fetchFailureReason:null,fetchStatus:(0,s.Kw)(t.networkMode)?"fetching":"paused",...void 0===e&&{error:null,status:"pending"}}}},48907:function(e,t,n){"use strict";n.d(t,{F:function(){return i}});var o=n(24139),i=class{#X;destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),(0,o.PN)(this.gcTime)&&(this.#X=setTimeout(()=>{this.optionalRemove()},this.gcTime))}updateGcTime(e){this.gcTime=Math.max(this.gcTime||0,e??(o.sk?1/0:3e5))}clearGcTimeout(){this.#X&&(clearTimeout(this.#X),this.#X=void 0)}}},72008:function(e,t,n){"use strict";n.d(t,{DV:function(){return isCancelledError},Kw:function(){return canFetch},Mz:function(){return createRetryer}});var o=n(66474),i=n(14304),s=n(24139);function defaultRetryDelay(e){return Math.min(1e3*2**e,3e4)}function canFetch(e){return(e??"online")!=="online"||i.N.isOnline()}var l=class{constructor(e){this.revert=e?.revert,this.silent=e?.silent}};function isCancelledError(e){return e instanceof l}function createRetryer(e){let t,n,c,u=!1,d=0,p=!1,f=new Promise((e,t)=>{n=e,c=t}),shouldPause=()=>!o.j.isFocused()||"always"!==e.networkMode&&!i.N.isOnline(),resolve=o=>{p||(p=!0,e.onSuccess?.(o),t?.(),n(o))},reject=n=>{p||(p=!0,e.onError?.(n),t?.(),c(n))},pause=()=>new Promise(n=>{t=e=>{let t=p||!shouldPause();return t&&n(e),t},e.onPause?.()}).then(()=>{t=void 0,p||e.onContinue?.()}),run=()=>{let t;if(!p){try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(resolve).catch(t=>{if(p)return;let n=e.retry??(s.sk?0:3),o=e.retryDelay??defaultRetryDelay,i="function"==typeof o?o(d,t):o,l=!0===n||"number"==typeof n&&d{if(shouldPause())return pause()}).then(()=>{u?reject(t):run()})})}};return canFetch(e.networkMode)?run():pause().then(run),{promise:f,cancel:t=>{p||(reject(new l(t)),e.abort?.())},continue:()=>{let e=t?.();return e?f:Promise.resolve()},cancelRetry:()=>{u=!0},continueRetry:()=>{u=!1}}}},7506:function(e,t,n){"use strict";n.d(t,{l:function(){return o}});var o=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){return this.listeners.add(e),this.onSubscribe(),()=>{this.listeners.delete(e),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},24139:function(e,t,n){"use strict";n.d(t,{CN:function(){return i},Ht:function(){return addToStart},Kp:function(){return timeUntilStale},PN:function(){return isValidTimeout},Rm:function(){return hashQueryKeyByOptions},SE:function(){return functionalUpdate},VS:function(){return shallowEqualObjects},VX:function(){return addToEnd},X7:function(){return matchMutation},Ym:function(){return hashKey},ZT:function(){return noop},_v:function(){return sleep},_x:function(){return matchQuery},oE:function(){return replaceData},sk:function(){return o},to:function(){return partialMatchKey}});var o="undefined"==typeof window||"Deno"in globalThis;function noop(){}function functionalUpdate(e,t){return"function"==typeof e?e(t):e}function isValidTimeout(e){return"number"==typeof e&&e>=0&&e!==1/0}function timeUntilStale(e,t){return Math.max(e+(t||0)-Date.now(),0)}function matchQuery(e,t){let{type:n="all",exact:o,fetchStatus:i,predicate:s,queryKey:l,stale:c}=e;if(l){if(o){if(t.queryHash!==hashQueryKeyByOptions(l,t.options))return!1}else if(!partialMatchKey(t.queryKey,l))return!1}if("all"!==n){let e=t.isActive();if("active"===n&&!e||"inactive"===n&&e)return!1}return("boolean"!=typeof c||t.isStale()===c)&&(!i||i===t.state.fetchStatus)&&(!s||!!s(t))}function matchMutation(e,t){let{exact:n,status:o,predicate:i,mutationKey:s}=e;if(s){if(!t.options.mutationKey)return!1;if(n){if(hashKey(t.options.mutationKey)!==hashKey(s))return!1}else if(!partialMatchKey(t.options.mutationKey,s))return!1}return(!o||t.state.status===o)&&(!i||!!i(t))}function hashQueryKeyByOptions(e,t){let n=t?.queryKeyHashFn||hashKey;return n(e)}function hashKey(e){return JSON.stringify(e,(e,t)=>isPlainObject(t)?Object.keys(t).sort().reduce((e,n)=>(e[n]=t[n],e),{}):t)}function partialMatchKey(e,t){return e===t||typeof e==typeof t&&!!e&&!!t&&"object"==typeof e&&"object"==typeof t&&!Object.keys(t).some(n=>!partialMatchKey(e[n],t[n]))}function shallowEqualObjects(e,t){if(!t||Object.keys(e).length!==Object.keys(t).length)return!1;for(let n in e)if(e[n]!==t[n])return!1;return!0}function isPlainArray(e){return Array.isArray(e)&&e.length===Object.keys(e).length}function isPlainObject(e){if(!hasObjectPrototype(e))return!1;let t=e.constructor;if(void 0===t)return!0;let n=t.prototype;return!!(hasObjectPrototype(n)&&n.hasOwnProperty("isPrototypeOf"))}function hasObjectPrototype(e){return"[object Object]"===Object.prototype.toString.call(e)}function sleep(e){return new Promise(t=>{setTimeout(t,e)})}function replaceData(e,t,n){return"function"==typeof n.structuralSharing?n.structuralSharing(e,t):!1!==n.structuralSharing?function replaceEqualDeep(e,t){if(e===t)return e;let n=isPlainArray(e)&&isPlainArray(t);if(n||isPlainObject(e)&&isPlainObject(t)){let o=n?e:Object.keys(e),i=o.length,s=n?t:Object.keys(t),l=s.length,c=n?[]:{},u=0;for(let i=0;in?o.slice(1):o}function addToStart(e,t,n=0){let o=[t,...e];return n&&o.length>n?o.slice(0,-1):o}var i=Symbol()},30202:function(e,t,n){"use strict";n.d(t,{NL:function(){return useQueryClient},aH:function(){return QueryClientProvider}});var o=n(67294),i=n(85893),s=o.createContext(void 0),useQueryClient=e=>{let t=o.useContext(s);if(e)return e;if(!t)throw Error("No QueryClient set, use QueryClientProvider to set one");return t},QueryClientProvider=({client:e,children:t})=>(o.useEffect(()=>(e.mount(),()=>{e.unmount()}),[e]),(0,i.jsx)(s.Provider,{value:e,children:t}))},98029:function(e,t,n){"use strict";n.d(t,{D:function(){return useMutation}});var o=n(67294),i=n(59289),s=n(27037),l=n(7506),c=n(24139),u=class extends l.l{#b;#C=void 0;#Y;#$;constructor(e,t){super(),this.#b=e,this.setOptions(t),this.bindMethods(),this.#ee()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){let t=this.options;this.options=this.#b.defaultMutationOptions(e),(0,c.VS)(this.options,t)||this.#b.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.#Y,observer:this}),t?.mutationKey&&this.options.mutationKey&&(0,c.Ym)(t.mutationKey)!==(0,c.Ym)(this.options.mutationKey)?this.reset():this.#Y?.state.status==="pending"&&this.#Y.setOptions(this.options)}onUnsubscribe(){this.hasListeners()||this.#Y?.removeObserver(this)}onMutationUpdate(e){this.#ee(),this.#_(e)}getCurrentResult(){return this.#C}reset(){this.#Y?.removeObserver(this),this.#Y=void 0,this.#ee(),this.#_()}mutate(e,t){return this.#$=t,this.#Y?.removeObserver(this),this.#Y=this.#b.getMutationCache().build(this.#b,this.options),this.#Y.addObserver(this),this.#Y.execute(e)}#ee(){let e=this.#Y?.state??(0,i.R)();this.#C={...e,isPending:"pending"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset}}#_(e){s.V.batch(()=>{if(this.#$&&this.hasListeners()){let t=this.#C.variables,n=this.#C.context;e?.type==="success"?(this.#$.onSuccess?.(e.data,t,n),this.#$.onSettled?.(e.data,null,t,n)):e?.type==="error"&&(this.#$.onError?.(e.error,t,n),this.#$.onSettled?.(void 0,e.error,t,n))}this.listeners.forEach(e=>{e(this.#C)})})}},d=n(30202),p=n(86290);function useMutation(e,t){let n=(0,d.NL)(t),[i]=o.useState(()=>new u(n,e));o.useEffect(()=>{i.setOptions(e)},[i,e]);let l=o.useSyncExternalStore(o.useCallback(e=>i.subscribe(s.V.batchCalls(e)),[i]),()=>i.getCurrentResult(),()=>i.getCurrentResult()),c=o.useCallback((e,t)=>{i.mutate(e,t).catch(p.Z)},[i]);if(l.error&&(0,p.L)(i.options.throwOnError,[l.error]))throw l.error;return{...l,mutate:c,mutateAsync:l.mutate}}},86290:function(e,t,n){"use strict";function shouldThrowError(e,t){return"function"==typeof e?e(...t):!!e}function noop(){}n.d(t,{L:function(){return shouldThrowError},Z:function(){return noop}})},52425:function(e,t,n){"use strict";function getAccount(e){let t=e.state.current,n=e.state.connections.get(t),o=n?.accounts,i=o?.[0],s=e.chains.find(e=>e.id===n?.chainId),l=e.state.status;switch(l){case"connected":return{address:i,addresses:o,chain:s,chainId:n?.chainId,connector:n?.connector,isConnected:!0,isConnecting:!1,isDisconnected:!1,isReconnecting:!1,status:l};case"reconnecting":return{address:i,addresses:o,chain:s,chainId:n?.chainId,connector:n?.connector,isConnected:!!i,isConnecting:!1,isDisconnected:!1,isReconnecting:!0,status:l};case"connecting":return{address:i,addresses:o,chain:s,chainId:n?.chainId,connector:n?.connector,isConnected:!1,isConnecting:!0,isDisconnected:!1,isReconnecting:!1,status:l};case"disconnected":return{address:void 0,addresses:void 0,chain:void 0,chainId:void 0,connector:void 0,isConnected:!1,isConnecting:!1,isDisconnected:!0,isReconnecting:!1,status:l}}}n.d(t,{D:function(){return getAccount}})},33397:function(e,t,n){"use strict";n.d(t,{u:function(){return watchAccount}});var o=n(74751),i=n(52425);function watchAccount(e,t){let{onChange:n}=t;return e.subscribe(()=>(0,i.D)(e),n,{equalityFn(e,t){let{connector:n,...i}=e,{connector:s,...l}=t;return(0,o.v)(i,l)&&n?.id===s?.id&&n?.uid===s?.uid}})}},7066:function(e,t,n){"use strict";n.d(t,{G:function(){return BaseError}});var o,i,s=n(79983);let getVersion=()=>`@wagmi/core@${s.i}`;var __classPrivateFieldGet=function(e,t,n,o){if("a"===n&&!o)throw TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!o:!t.has(e))throw TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?o:"a"===n?o.call(e):o?o.value:t.get(e)};let BaseError=class BaseError extends Error{get docsBaseUrl(){return"https://wagmi.sh/core"}get version(){return getVersion()}constructor(e,t={}){super(),o.add(this),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WagmiCoreError"});let n=t.cause instanceof BaseError?t.cause.details:t.cause?.message?t.cause.message:t.details,i=t.cause instanceof BaseError&&t.cause.docsPath||t.docsPath;this.message=[e||"An error occurred.","",...t.metaMessages?[...t.metaMessages,""]:[],...i?[`Docs: ${this.docsBaseUrl}${i}.html${t.docsSlug?`#${t.docsSlug}`:""}`]:[],...n?[`Details: ${n}`]:[],`Version: ${this.version}`].join("\n"),t.cause&&(this.cause=t.cause),this.details=n,this.docsPath=i,this.metaMessages=t.metaMessages,this.shortMessage=e}walk(e){return __classPrivateFieldGet(this,o,"m",i).call(this,this,e)}};o=new WeakSet,i=function _BaseError_walk(e,t){return t?.(e)?e:e.cause?__classPrivateFieldGet(this,o,"m",_BaseError_walk).call(this,e.cause,t):e}},87675:function(e,t,n){"use strict";n.d(t,{JK:function(){return ConnectorAccountNotFoundError},X4:function(){return ChainNotConfiguredError},aH:function(){return ConnectorNotConnectedError},wi:function(){return ConnectorAlreadyConnectedError}});var o=n(7066);let ChainNotConfiguredError=class ChainNotConfiguredError extends o.G{constructor(){super("Chain not configured."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ChainNotConfiguredError"})}};let ConnectorAlreadyConnectedError=class ConnectorAlreadyConnectedError extends o.G{constructor(){super("Connector already connected."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ConnectorAlreadyConnectedError"})}};let ConnectorNotConnectedError=class ConnectorNotConnectedError extends o.G{constructor(){super("Connector not connected."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ConnectorNotConnectedError"})}};let ConnectorAccountNotFoundError=class ConnectorAccountNotFoundError extends o.G{constructor({address:e,connector:t}){super(`Account "${e}" not found for connector "${t.name}".`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ConnectorAccountNotFoundError"})}}},74751:function(e,t,n){"use strict";n.d(t,{v:function(){return function deepEqual(e,t){if(e===t)return!0;if(e&&t&&"object"==typeof e&&"object"==typeof t){let n,o;if(e.constructor!==t.constructor)return!1;if(Array.isArray(e)&&Array.isArray(t)){if((n=e.length)!==t.length)return!1;for(o=n;0!=o--;)if(!deepEqual(e[o],t[o]))return!1;return!0}if(e.valueOf!==Object.prototype.valueOf)return e.valueOf()===t.valueOf();if(e.toString!==Object.prototype.toString)return e.toString()===t.toString();let i=Object.keys(e);if((n=i.length)!==Object.keys(t).length)return!1;for(o=n;0!=o--;)if(!Object.prototype.hasOwnProperty.call(t,i[o]))return!1;for(o=n;0!=o--;){let n=i[o];if(n&&!deepEqual(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}}})},81946:function(e,t,n){"use strict";function getAction(e,t,n){let o=e[t.name];if("function"==typeof o)return o;let i=e[n];return"function"==typeof i?i:n=>t(e,n)}n.d(t,{s:function(){return getAction}})},79983:function(e,t,n){"use strict";n.d(t,{i:function(){return o}});let o="2.6.9"},90512:function(e,t,n){"use strict";t.Z=function(){for(var e,t,n=0,o="",i=arguments.length;nvoid 0!==e).length>0)}({request:v})&&!i)try{return await scheduleMulticall(e,{...v,blockNumber:f,blockTag:m})}catch(e){if(!(e instanceof c.pZ)&&!(e instanceof c.mm))throw e}let w=await e.request({method:"eth_call",params:i?[v,o,i]:[v,o]});if("0x"===w)return{data:void 0};return{data:w}}catch(c){let o=function(e){if(!(e instanceof l.G))return;let t=e.walk();return"object"==typeof t?.data?t.data?.data:t.data}(c),{offchainLookup:i,offchainLookupSignature:s}=await n.e(422).then(n.bind(n,10422));if(o?.slice(0,10)===s&&M)return{data:await i(e,{data:o,to:M})};throw function(e,{docsPath:t,...n}){let o=(()=>{let t=(0,w.k)(e,n);return t instanceof v.cj?e:t})();return new u.cg(o,{docsPath:t,...n})}(c,{...t,account:F,chain:e.chain})}}async function scheduleMulticall(e,t){let{batchSize:n=1024,wait:o=0}="object"==typeof e.batch?.multicall?e.batch.multicall:{},{blockNumber:s,blockTag:l="latest",data:d,multicallAddress:p,to:g}=t,v=p;if(!v){if(!e.chain)throw new c.pZ;v=(0,b.L)({blockNumber:s,chain:e.chain,contract:"multicall3"})}let w=s?(0,y.eC)(s):void 0,C=w||l,{schedule:E}=(0,x.S)({id:`${e.uid}.${C}`,wait:o,shouldSplitBatch(e){let t=e.reduce((e,{data:t})=>e+(t.length-2),0);return t>2*n},fn:async t=>{let n=t.map(e=>({allowFailure:!0,callData:e.data,target:e.to})),o=(0,m.R)({abi:i.F8,args:[n],functionName:"aggregate3"}),s=await e.request({method:"eth_call",params:[{data:o,to:v},C]});return(0,f.k)({abi:i.F8,args:[n],functionName:"aggregate3",data:s||"0x"})}}),[{returnData:A,success:k}]=await E({data:d,to:g});if(!k)throw new u.VQ({data:A});return"0x"===A?{data:void 0}:{data:A}}function parseStateMapping(e){if(e&&0!==e.length)return e.reduce((e,{slot:t,value:n})=>{if(66!==t.length)throw new d.W_({size:t.length,targetSize:66,type:"hex"});if(66!==n.length)throw new d.W_({size:n.length,targetSize:66,type:"hex"});return e[t]=n,e},{})}},66403:function(e,t,n){"use strict";n.d(t,{R:function(){return i}});var o=n(86164);let i=(0,o.a)({id:1,name:"Ethereum",nativeCurrency:{name:"Ether",symbol:"ETH",decimals:18},rpcUrls:{default:{http:["https://cloudflare-eth.com"]}},blockExplorers:{default:{name:"Etherscan",url:"https://etherscan.io",apiUrl:"https://api.etherscan.io/api"}},contracts:{ensRegistry:{address:"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e"},ensUniversalResolver:{address:"0xce01f8eee7E479C928F8919abD53E553a36CeF67",blockCreated:19258213},multicall3:{address:"0xca11bde05977b3631167028862be2a173976ca11",blockCreated:14353601}}})},16189:function(e,t,n){"use strict";let o;n.d(t,{e:function(){return createClient}});var i=n(14503);let s=256;function createClient(e){let{batch:t,cacheTime:n=e.pollingInterval??4e3,key:l="base",name:c="Base Client",pollingInterval:u=4e3,type:d="base"}=e,p=e.chain,f=e.account?(0,i.T)(e.account):void 0,{config:m,request:g,value:b}=e.transport({chain:p,pollingInterval:u}),y={...m,...b},v={account:f,batch:t,cacheTime:n,chain:p,key:l,name:c,pollingInterval:u,request:g,transport:y,type:d,uid:function(e=11){if(!o||s+e>512){o="",s=0;for(let e=0;e<256;e++)o+=(256+256*Math.random()|0).toString(16).substring(1)}return o.substring(s,s+++e)}()};return Object.assign(v,{extend:function extend(e){return t=>{let n=t(e);for(let e in v)delete n[e];let o={...e,...n};return Object.assign(o,{extend:extend(o)})}}(v)})}},91628:function(e,t,n){"use strict";n.d(t,{q:function(){return createTransport}});var o=n(62027),i=n(78863),s=n(39028),l=n(7760);function createTransport({key:e,name:t,request:n,retryCount:c=3,retryDelay:u=150,timeout:d,type:p},f){return{config:{key:e,name:t,request:n,retryCount:c,retryDelay:u,timeout:d,type:p},request:function(e,t={}){return async(n,c={})=>{let{retryDelay:u=150,retryCount:d=3}={...t,...c};return(0,l.J)(async()=>{try{return await e(n)}catch(e){switch(e.code){case s.s7.code:throw new s.s7(e);case s.B.code:throw new s.B(e);case s.LX.code:throw new s.LX(e);case s.nY.code:throw new s.nY(e);case s.XS.code:throw new s.XS(e);case s.yR.code:throw new s.yR(e);case s.Og.code:throw new s.Og(e);case s.pT.code:throw new s.pT(e);case s.KB.code:throw new s.KB(e);case s.gS.code:throw new s.gS(e);case s.Pv.code:throw new s.Pv(e);case s.GD.code:throw new s.GD(e);case s.ab.code:throw new s.ab(e);case s.PE.code:throw new s.PE(e);case s.Ts.code:throw new s.Ts(e);case s.u5.code:throw new s.u5(e);case s.I0.code:throw new s.I0(e);case s.x3.code:throw new s.x3(e);case 5e3:throw new s.ab(e);default:if(e instanceof o.G)throw e;throw new s.ir(e)}}},{delay:({count:e,error:t})=>{if(t&&t instanceof i.Gg){let e=t?.headers?.get("Retry-After");if(e?.match(/\d/))return 1e3*parseInt(e)}return~~(1<"code"in e&&"number"==typeof e.code?-1===e.code||e.code===s.Pv.code||e.code===s.XS.code:!(e instanceof i.Gg)||!e.status||403===e.status||408===e.status||413===e.status||429===e.status||500===e.status||502===e.status||503===e.status||504===e.status})}}(n,{retryCount:c,retryDelay:u}),value:f}}},16693:function(e,t,n){"use strict";n.d(t,{$o:function(){return d},F8:function(){return o},X$:function(){return u},du:function(){return l},k3:function(){return s},nZ:function(){return c}});let o=[{inputs:[{components:[{name:"target",type:"address"},{name:"allowFailure",type:"bool"},{name:"callData",type:"bytes"}],name:"calls",type:"tuple[]"}],name:"aggregate3",outputs:[{components:[{name:"success",type:"bool"},{name:"returnData",type:"bytes"}],name:"returnData",type:"tuple[]"}],stateMutability:"view",type:"function"}],i=[{inputs:[],name:"ResolverNotFound",type:"error"},{inputs:[],name:"ResolverWildcardNotSupported",type:"error"},{inputs:[],name:"ResolverNotContract",type:"error"},{inputs:[{name:"returnData",type:"bytes"}],name:"ResolverError",type:"error"},{inputs:[{components:[{name:"status",type:"uint16"},{name:"message",type:"string"}],name:"errors",type:"tuple[]"}],name:"HttpError",type:"error"}],s=[...i,{name:"resolve",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes"},{name:"data",type:"bytes"}],outputs:[{name:"",type:"bytes"},{name:"address",type:"address"}]},{name:"resolve",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes"},{name:"data",type:"bytes"},{name:"gateways",type:"string[]"}],outputs:[{name:"",type:"bytes"},{name:"address",type:"address"}]}],l=[...i,{name:"reverse",type:"function",stateMutability:"view",inputs:[{type:"bytes",name:"reverseName"}],outputs:[{type:"string",name:"resolvedName"},{type:"address",name:"resolvedAddress"},{type:"address",name:"reverseResolver"},{type:"address",name:"resolver"}]},{name:"reverse",type:"function",stateMutability:"view",inputs:[{type:"bytes",name:"reverseName"},{type:"string[]",name:"gateways"}],outputs:[{type:"string",name:"resolvedName"},{type:"address",name:"resolvedAddress"},{type:"address",name:"reverseResolver"},{type:"address",name:"resolver"}]}],c=[{name:"text",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"key",type:"string"}],outputs:[{name:"",type:"string"}]}],u=[{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"}],outputs:[{name:"",type:"address"}]},{name:"addr",type:"function",stateMutability:"view",inputs:[{name:"name",type:"bytes32"},{name:"coinType",type:"uint256"}],outputs:[{name:"",type:"bytes"}]}],d=[{inputs:[{internalType:"address",name:"_signer",type:"address"},{internalType:"bytes32",name:"_hash",type:"bytes32"},{internalType:"bytes",name:"_signature",type:"bytes"}],stateMutability:"nonpayable",type:"constructor"}]},21746:function(e,t,n){"use strict";n.d(t,{$:function(){return o},Up:function(){return i},hZ:function(){return s}});let o={1:"An `assert` condition failed.",17:"Arithmetic operation resulted in underflow or overflow.",18:"Division or modulo by zero (e.g. `5 / 0` or `23 % 0`).",33:"Attempted to convert to an invalid type.",34:"Attempted to access a storage byte array that is incorrectly encoded.",49:"Performed `.pop()` on an empty array",50:"Array index is out of bounds.",65:"Allocated too much memory or created an array which is too large.",81:"Attempted to call a zero-initialized variable of internal function type."},i={inputs:[{name:"message",type:"string"}],name:"Error",type:"error"},s={inputs:[{name:"reason",type:"uint256"}],name:"Panic",type:"error"}},84192:function(e,t,n){"use strict";n.d(t,{Bd:function(){return s},Zn:function(){return i},ez:function(){return o}});let o={gwei:9,wei:18},i={ether:-9,wei:9},s={ether:-18,gwei:-9}},57412:function(e,t,n){"use strict";n.d(t,{CI:function(){return InvalidAbiDecodingTypeError},FM:function(){return AbiEventSignatureEmptyTopicsError},Gy:function(){return DecodeLogTopicsMismatch},KY:function(){return BytesSizeMismatchError},M4:function(){return AbiEncodingBytesSizeMismatchError},MX:function(){return AbiFunctionOutputsNotFoundError},S4:function(){return AbiItemAmbiguityError},SM:function(){return DecodeLogDataMismatch},cO:function(){return AbiConstructorParamsNotFoundError},dh:function(){return InvalidAbiEncodingTypeError},fM:function(){return AbiConstructorNotFoundError},fs:function(){return AbiEncodingLengthMismatchError},gr:function(){return AbiEncodingArrayLengthMismatchError},hn:function(){return InvalidArrayError},lC:function(){return AbiEventSignatureNotFoundError},mv:function(){return AbiEventNotFoundError},wM:function(){return InvalidDefinitionTypeError},wb:function(){return AbiDecodingZeroDataError},xB:function(){return AbiDecodingDataSizeTooSmallError},xL:function(){return AbiFunctionNotFoundError},yP:function(){return AbiErrorSignatureNotFoundError}});var o=n(80522),i=n(39135),s=n(62027);let AbiConstructorNotFoundError=class AbiConstructorNotFoundError extends s.G{constructor({docsPath:e}){super("A constructor was not found on the ABI.\nMake sure you are using the correct ABI and that the constructor exists on it.",{docsPath:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiConstructorNotFoundError"})}};let AbiConstructorParamsNotFoundError=class AbiConstructorParamsNotFoundError extends s.G{constructor({docsPath:e}){super("Constructor arguments were provided (`args`), but a constructor parameters (`inputs`) were not found on the ABI.\nMake sure you are using the correct ABI, and that the `inputs` attribute on the constructor exists.",{docsPath:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiConstructorParamsNotFoundError"})}};let AbiDecodingDataSizeTooSmallError=class AbiDecodingDataSizeTooSmallError extends s.G{constructor({data:e,params:t,size:n}){super(`Data size of ${n} bytes is too small for given parameters.`,{metaMessages:[`Params: (${(0,o.h)(t,{includeName:!0})})`,`Data: ${e} (${n} bytes)`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiDecodingDataSizeTooSmallError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e,this.params=t,this.size=n}};let AbiDecodingZeroDataError=class AbiDecodingZeroDataError extends s.G{constructor(){super('Cannot decode zero data ("0x") with ABI parameters.'),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiDecodingZeroDataError"})}};let AbiEncodingArrayLengthMismatchError=class AbiEncodingArrayLengthMismatchError extends s.G{constructor({expectedLength:e,givenLength:t,type:n}){super(`ABI encoding array length mismatch for type ${n}. Expected length: ${e} Given length: ${t}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiEncodingArrayLengthMismatchError"})}};let AbiEncodingBytesSizeMismatchError=class AbiEncodingBytesSizeMismatchError extends s.G{constructor({expectedSize:e,value:t}){super(`Size of bytes "${t}" (bytes${(0,i.d)(t)}) does not match expected size (bytes${e}).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiEncodingBytesSizeMismatchError"})}};let AbiEncodingLengthMismatchError=class AbiEncodingLengthMismatchError extends s.G{constructor({expectedLength:e,givenLength:t}){super(`ABI encoding params/values length mismatch. Expected length (params): ${e} @@ -1140,11 +1140,11 @@ Cannot decode function result without knowing what the parameter types are. Make sure you are using the correct ABI and that the function exists on it.`,{docsPath:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiFunctionOutputsNotFoundError"})}};let AbiItemAmbiguityError=class AbiItemAmbiguityError extends s.G{constructor(e,t){super("Found ambiguous types in overloaded ABI items.",{metaMessages:[`\`${e.type}\` in \`${(0,o.t)(e.abiItem)}\`, and`,`\`${t.type}\` in \`${(0,o.t)(t.abiItem)}\``,"","These types encode differently and cannot be distinguished at runtime.","Remove one of the ambiguous items in the ABI."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AbiItemAmbiguityError"})}};let BytesSizeMismatchError=class BytesSizeMismatchError extends s.G{constructor({expectedSize:e,givenSize:t}){super(`Expected bytes${e}, got bytes${t}.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"BytesSizeMismatchError"})}};let DecodeLogDataMismatch=class DecodeLogDataMismatch extends s.G{constructor({abiItem:e,data:t,params:n,size:i}){super(`Data size of ${i} bytes is too small for non-indexed event parameters.`,{metaMessages:[`Params: (${(0,o.h)(n,{includeName:!0})})`,`Data: ${t} (${i} bytes)`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"DecodeLogDataMismatch"}),Object.defineProperty(this,"abiItem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"params",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"size",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiItem=e,this.data=t,this.params=n,this.size=i}};let DecodeLogTopicsMismatch=class DecodeLogTopicsMismatch extends s.G{constructor({abiItem:e,param:t}){super(`Expected a topic for indexed event parameter${t.name?` "${t.name}"`:""} on event "${(0,o.t)(e,{includeName:!0})}".`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"DecodeLogTopicsMismatch"}),Object.defineProperty(this,"abiItem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.abiItem=e}};let InvalidAbiEncodingTypeError=class InvalidAbiEncodingTypeError extends s.G{constructor(e,{docsPath:t}){super(`Type "${e}" is not a valid encoding type. Please provide a valid ABI type.`,{docsPath:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiEncodingType"})}};let InvalidAbiDecodingTypeError=class InvalidAbiDecodingTypeError extends s.G{constructor(e,{docsPath:t}){super(`Type "${e}" is not a valid decoding type. Please provide a valid ABI type.`,{docsPath:t}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAbiDecodingType"})}};let InvalidArrayError=class InvalidArrayError extends s.G{constructor(e){super(`Value "${e}" is not a valid array.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidArrayError"})}};let InvalidDefinitionTypeError=class InvalidDefinitionTypeError extends s.G{constructor(e){super(`"${e}" is not a valid definition type. -Valid types: "function", "event", "error"`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidDefinitionTypeError"})}}},26087:function(e,t,n){"use strict";n.d(t,{b:function(){return InvalidAddressError}});var o=n(62027);let InvalidAddressError=class InvalidAddressError extends o.G{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAddressError"})}}},62027:function(e,t,n){"use strict";n.d(t,{G:function(){return BaseError}});var o=n(35280);let BaseError=class BaseError extends Error{constructor(e,t={}){super(),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ViemError"}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:(0,o.bo)()});let n=t.cause instanceof BaseError?t.cause.details:t.cause?.message?t.cause.message:t.details,i=t.cause instanceof BaseError&&t.cause.docsPath||t.docsPath;this.message=[e||"An error occurred.","",...t.metaMessages?[...t.metaMessages,""]:[],...i?[`Docs: https://viem.sh${i}${t.docsSlug?`#${t.docsSlug}`:""}`]:[],...n?[`Details: ${n}`]:[],`Version: ${this.version}`].join("\n"),t.cause&&(this.cause=t.cause),this.details=n,this.docsPath=i,this.metaMessages=t.metaMessages,this.shortMessage=e}walk(e){return function walk(e,t){return t?.(e)?e:e&&"object"==typeof e&&"cause"in e?walk(e.cause,t):t?null:e}(this,e)}}},80377:function(e,t,n){"use strict";n.d(t,{hJ:function(){return InvalidChainIdError},mm:function(){return ChainDoesNotSupportContract},pZ:function(){return ClientChainNotConfiguredError}});var o=n(62027);let ChainDoesNotSupportContract=class ChainDoesNotSupportContract extends o.G{constructor({blockNumber:e,chain:t,contract:n}){super(`Chain "${t.name}" does not support contract "${n.name}".`,{metaMessages:["This could be due to any of the following:",...e&&n.blockCreated&&n.blockCreated>e?[`- The contract "${n.name}" was not deployed until block ${n.blockCreated} (current block ${e}).`]:[`- The chain does not have the contract "${n.name}" configured.`]]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ChainDoesNotSupportContract"})}};let ClientChainNotConfiguredError=class ClientChainNotConfiguredError extends o.G{constructor(){super("No chain was provided to the Client."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ClientChainNotConfiguredError"})}};let InvalidChainIdError=class InvalidChainIdError extends o.G{constructor({chainId:e}){super("number"==typeof e?`Chain ID "${e}" is invalid.`:"Chain ID is invalid."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidChainIdError"})}}},97405:function(e,t,n){"use strict";n.d(t,{cg:function(){return CallExecutionError},uq:function(){return ContractFunctionExecutionError},Lu:function(){return ContractFunctionRevertedError},Dk:function(){return ContractFunctionZeroDataError},VQ:function(){return RawContractError}});var o=n(14503),i=n(21746),s=n(86899),l=n(80522),c=n(96070);function formatAbiItemWithArgs({abiItem:e,args:t,includeFunctionName:n=!0,includeName:o=!1}){if("name"in e&&"inputs"in e&&e.inputs)return`${n?e.name:""}(${e.inputs.map((e,n)=>`${o&&e.name?`${e.name}: `:""}${"object"==typeof t[n]?(0,c.P)(t[n]):t[n]}`).join(", ")})`}var u=n(40840),d=n(39625),p=n(67795),f=n(57412),m=n(62027),b=n(20443),g=n(33639),y=n(35280);let CallExecutionError=class CallExecutionError extends m.G{constructor(e,{account:t,docsPath:n,chain:i,data:s,gas:l,gasPrice:c,maxFeePerGas:u,maxPriorityFeePerGas:f,nonce:m,to:y,value:v,stateOverride:w}){let C=t?(0,o.T)(t):void 0,E=(0,g.xr)({from:C?.address,to:y,value:void 0!==v&&`${(0,d.d)(v)} ${i?.nativeCurrency?.symbol||"ETH"}`,data:s,gas:l,gasPrice:void 0!==c&&`${(0,p.o)(c)} gwei`,maxFeePerGas:void 0!==u&&`${(0,p.o)(u)} gwei`,maxPriorityFeePerGas:void 0!==f&&`${(0,p.o)(f)} gwei`,nonce:m});w&&(E+=` -${(0,b.Bj)(w)}`),super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Raw Call Arguments:",E].filter(Boolean)}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"CallExecutionError"}),this.cause=e}};let ContractFunctionExecutionError=class ContractFunctionExecutionError extends m.G{constructor(e,{abi:t,args:n,contractAddress:o,docsPath:i,functionName:s,sender:c}){let d=(0,u.mE)({abi:t,args:n,name:s}),p=d?formatAbiItemWithArgs({abiItem:d,args:n,includeFunctionName:!1,includeName:!1}):void 0,f=d?(0,l.t)(d,{includeName:!0}):void 0,m=(0,g.xr)({address:o&&(0,y.CR)(o),function:f,args:p&&"()"!==p&&`${[...Array(s?.length??0).keys()].map(()=>" ").join("")}${p}`,sender:c});super(e.shortMessage||`An unknown error occurred while executing the contract function "${s}".`,{cause:e,docsPath:i,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Contract Call:",m].filter(Boolean)}),Object.defineProperty(this,"abi",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"args",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"contractAddress",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"formattedArgs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"functionName",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sender",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ContractFunctionExecutionError"}),this.abi=t,this.args=n,this.cause=e,this.contractAddress=o,this.functionName=s,this.sender=c}};let ContractFunctionRevertedError=class ContractFunctionRevertedError extends m.G{constructor({abi:e,data:t,functionName:n,message:o}){let c,u,d,p,m;if(t&&"0x"!==t)try{m=(0,s.p)({abi:e,data:t});let{abiItem:n,errorName:o,args:c}=m;if("Error"===o)d=c[0];else if("Panic"===o){let[e]=c;d=i.$[e]}else{let e=n?(0,l.t)(n,{includeName:!0}):void 0,t=n&&c?formatAbiItemWithArgs({abiItem:n,args:c,includeFunctionName:!1,includeName:!1}):void 0;u=[e?`Error: ${e}`:"",t&&"()"!==t?` ${[...Array(o?.length??0).keys()].map(()=>" ").join("")}${t}`:""]}}catch(e){c=e}else o&&(d=o);c instanceof f.yP&&(p=c.signature,u=[`Unable to decode signature "${p}" as it was not found on the provided ABI.`,"Make sure you are using the correct ABI and that the error exists on it.",`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${p}.`]),super(d&&"execution reverted"!==d||p?[`The contract function "${n}" reverted with the following ${p?"signature":"reason"}:`,d||p].join("\n"):`The contract function "${n}" reverted.`,{cause:c,metaMessages:u}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ContractFunctionRevertedError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"reason",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"signature",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=m,this.reason=d,this.signature=p}};let ContractFunctionZeroDataError=class ContractFunctionZeroDataError extends m.G{constructor({functionName:e}){super(`The contract function "${e}" returned no data ("0x").`,{metaMessages:["This could be due to any of the following:",` - The contract does not have the function "${e}",`," - The parameters passed to the contract function may be invalid, or"," - The address is not a contract."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ContractFunctionZeroDataError"})}};let RawContractError=class RawContractError extends m.G{constructor({data:e,message:t}){super(t||""),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RawContractError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e}}},66238:function(e,t,n){"use strict";n.d(t,{KD:function(){return RecursiveReadLimitExceededError},T_:function(){return NegativeOffsetError},lQ:function(){return PositionOutOfBoundsError}});var o=n(62027);let NegativeOffsetError=class NegativeOffsetError extends o.G{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"NegativeOffsetError"})}};let PositionOutOfBoundsError=class PositionOutOfBoundsError extends o.G{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PositionOutOfBoundsError"})}};let RecursiveReadLimitExceededError=class RecursiveReadLimitExceededError extends o.G{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RecursiveReadLimitExceededError"})}}},69760:function(e,t,n){"use strict";n.d(t,{$s:function(){return SizeExceedsPaddingSizeError},W_:function(){return InvalidBytesLengthError},mV:function(){return SliceOffsetOutOfBoundsError}});var o=n(62027);let SliceOffsetOutOfBoundsError=class SliceOffsetOutOfBoundsError extends o.G{constructor({offset:e,position:t,size:n}){super(`Slice ${"start"===t?"starting":"ending"} at offset "${e}" is out-of-bounds (size: ${n}).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SliceOffsetOutOfBoundsError"})}};let SizeExceedsPaddingSizeError=class SizeExceedsPaddingSizeError extends o.G{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${e}) exceeds padding size (${t}).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SizeExceedsPaddingSizeError"})}};let InvalidBytesLengthError=class InvalidBytesLengthError extends o.G{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is expected to be ${t} ${n} long, but is ${e} ${n} long.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidBytesLengthError"})}}},87788:function(e,t,n){"use strict";n.d(t,{J5:function(){return IntegerOutOfRangeError},M6:function(){return SizeOverflowError},yr:function(){return InvalidBytesBooleanError}});var o=n(62027);let IntegerOutOfRangeError=class IntegerOutOfRangeError extends o.G{constructor({max:e,min:t,signed:n,size:o,value:i}){super(`Number "${i}" is not in safe ${o?`${8*o}-bit ${n?"signed":"unsigned"} `:""}integer range ${e?`(${t} to ${e})`:`(above ${t})`}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"IntegerOutOfRangeError"})}};let InvalidBytesBooleanError=class InvalidBytesBooleanError extends o.G{constructor(e){super(`Bytes value "${e}" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidBytesBooleanError"})}};let SizeOverflowError=class SizeOverflowError extends o.G{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed ${t} bytes. Given size: ${e} bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SizeOverflowError"})}}},26445:function(e,t,n){"use strict";n.d(t,{C_:function(){return InsufficientFundsError},G$:function(){return FeeCapTooLowError},Hh:function(){return FeeCapTooHighError},M_:function(){return ExecutionRevertedError},WF:function(){return IntrinsicGasTooHighError},ZI:function(){return NonceTooHighError},cj:function(){return UnknownNodeError},cs:function(){return TipAboveFeeCapError},dR:function(){return IntrinsicGasTooLowError},pZ:function(){return TransactionTypeNotSupportedError},se:function(){return NonceMaxValueError},vU:function(){return NonceTooLowError}});var o=n(67795),i=n(62027);let ExecutionRevertedError=class ExecutionRevertedError extends i.G{constructor({cause:e,message:t}={}){let n=t?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${n?`with reason: ${n}`:"for an unknown reason"}.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ExecutionRevertedError"})}};Object.defineProperty(ExecutionRevertedError,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(ExecutionRevertedError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});let FeeCapTooHighError=class FeeCapTooHighError extends i.G{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${(0,o.o)(t)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FeeCapTooHigh"})}};Object.defineProperty(FeeCapTooHighError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});let FeeCapTooLowError=class FeeCapTooLowError extends i.G{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${(0,o.o)(t)}`:""} gwei) cannot be lower than the block base fee.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FeeCapTooLow"})}};Object.defineProperty(FeeCapTooLowError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});let NonceTooHighError=class NonceTooHighError extends i.G{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:""}is higher than the next one expected.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"NonceTooHighError"})}};Object.defineProperty(NonceTooHighError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});let NonceTooLowError=class NonceTooLowError extends i.G{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:""}is lower than the current nonce of the account. +Valid types: "function", "event", "error"`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidDefinitionTypeError"})}}},26087:function(e,t,n){"use strict";n.d(t,{b:function(){return InvalidAddressError}});var o=n(62027);let InvalidAddressError=class InvalidAddressError extends o.G{constructor({address:e}){super(`Address "${e}" is invalid.`,{metaMessages:["- Address must be a hex value of 20 bytes (40 hex characters).","- Address must match its checksum counterpart."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidAddressError"})}}},62027:function(e,t,n){"use strict";n.d(t,{G:function(){return BaseError}});var o=n(35280);let BaseError=class BaseError extends Error{constructor(e,t={}){super(),Object.defineProperty(this,"details",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"docsPath",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"metaMessages",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"shortMessage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ViemError"}),Object.defineProperty(this,"version",{enumerable:!0,configurable:!0,writable:!0,value:(0,o.bo)()});let n=t.cause instanceof BaseError?t.cause.details:t.cause?.message?t.cause.message:t.details,i=t.cause instanceof BaseError&&t.cause.docsPath||t.docsPath;this.message=[e||"An error occurred.","",...t.metaMessages?[...t.metaMessages,""]:[],...i?[`Docs: https://viem.sh${i}${t.docsSlug?`#${t.docsSlug}`:""}`]:[],...n?[`Details: ${n}`]:[],`Version: ${this.version}`].join("\n"),t.cause&&(this.cause=t.cause),this.details=n,this.docsPath=i,this.metaMessages=t.metaMessages,this.shortMessage=e}walk(e){return function walk(e,t){return t?.(e)?e:e&&"object"==typeof e&&"cause"in e?walk(e.cause,t):t?null:e}(this,e)}}},80377:function(e,t,n){"use strict";n.d(t,{hJ:function(){return InvalidChainIdError},mm:function(){return ChainDoesNotSupportContract},pZ:function(){return ClientChainNotConfiguredError}});var o=n(62027);let ChainDoesNotSupportContract=class ChainDoesNotSupportContract extends o.G{constructor({blockNumber:e,chain:t,contract:n}){super(`Chain "${t.name}" does not support contract "${n.name}".`,{metaMessages:["This could be due to any of the following:",...e&&n.blockCreated&&n.blockCreated>e?[`- The contract "${n.name}" was not deployed until block ${n.blockCreated} (current block ${e}).`]:[`- The chain does not have the contract "${n.name}" configured.`]]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ChainDoesNotSupportContract"})}};let ClientChainNotConfiguredError=class ClientChainNotConfiguredError extends o.G{constructor(){super("No chain was provided to the Client."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ClientChainNotConfiguredError"})}};let InvalidChainIdError=class InvalidChainIdError extends o.G{constructor({chainId:e}){super("number"==typeof e?`Chain ID "${e}" is invalid.`:"Chain ID is invalid."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidChainIdError"})}}},97405:function(e,t,n){"use strict";n.d(t,{cg:function(){return CallExecutionError},uq:function(){return ContractFunctionExecutionError},Lu:function(){return ContractFunctionRevertedError},Dk:function(){return ContractFunctionZeroDataError},VQ:function(){return RawContractError}});var o=n(14503),i=n(21746),s=n(86899),l=n(80522),c=n(96070);function formatAbiItemWithArgs({abiItem:e,args:t,includeFunctionName:n=!0,includeName:o=!1}){if("name"in e&&"inputs"in e&&e.inputs)return`${n?e.name:""}(${e.inputs.map((e,n)=>`${o&&e.name?`${e.name}: `:""}${"object"==typeof t[n]?(0,c.P)(t[n]):t[n]}`).join(", ")})`}var u=n(40840),d=n(39625),p=n(67795),f=n(57412),m=n(62027),g=n(20443),b=n(33639),y=n(35280);let CallExecutionError=class CallExecutionError extends m.G{constructor(e,{account:t,docsPath:n,chain:i,data:s,gas:l,gasPrice:c,maxFeePerGas:u,maxPriorityFeePerGas:f,nonce:m,to:y,value:v,stateOverride:w}){let C=t?(0,o.T)(t):void 0,E=(0,b.xr)({from:C?.address,to:y,value:void 0!==v&&`${(0,d.d)(v)} ${i?.nativeCurrency?.symbol||"ETH"}`,data:s,gas:l,gasPrice:void 0!==c&&`${(0,p.o)(c)} gwei`,maxFeePerGas:void 0!==u&&`${(0,p.o)(u)} gwei`,maxPriorityFeePerGas:void 0!==f&&`${(0,p.o)(f)} gwei`,nonce:m});w&&(E+=` +${(0,g.Bj)(w)}`),super(e.shortMessage,{cause:e,docsPath:n,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Raw Call Arguments:",E].filter(Boolean)}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"CallExecutionError"}),this.cause=e}};let ContractFunctionExecutionError=class ContractFunctionExecutionError extends m.G{constructor(e,{abi:t,args:n,contractAddress:o,docsPath:i,functionName:s,sender:c}){let d=(0,u.mE)({abi:t,args:n,name:s}),p=d?formatAbiItemWithArgs({abiItem:d,args:n,includeFunctionName:!1,includeName:!1}):void 0,f=d?(0,l.t)(d,{includeName:!0}):void 0,m=(0,b.xr)({address:o&&(0,y.CR)(o),function:f,args:p&&"()"!==p&&`${[...Array(s?.length??0).keys()].map(()=>" ").join("")}${p}`,sender:c});super(e.shortMessage||`An unknown error occurred while executing the contract function "${s}".`,{cause:e,docsPath:i,metaMessages:[...e.metaMessages?[...e.metaMessages," "]:[],"Contract Call:",m].filter(Boolean)}),Object.defineProperty(this,"abi",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"args",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"contractAddress",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"formattedArgs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"functionName",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"sender",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ContractFunctionExecutionError"}),this.abi=t,this.args=n,this.cause=e,this.contractAddress=o,this.functionName=s,this.sender=c}};let ContractFunctionRevertedError=class ContractFunctionRevertedError extends m.G{constructor({abi:e,data:t,functionName:n,message:o}){let c,u,d,p,m;if(t&&"0x"!==t)try{m=(0,s.p)({abi:e,data:t});let{abiItem:n,errorName:o,args:c}=m;if("Error"===o)d=c[0];else if("Panic"===o){let[e]=c;d=i.$[e]}else{let e=n?(0,l.t)(n,{includeName:!0}):void 0,t=n&&c?formatAbiItemWithArgs({abiItem:n,args:c,includeFunctionName:!1,includeName:!1}):void 0;u=[e?`Error: ${e}`:"",t&&"()"!==t?` ${[...Array(o?.length??0).keys()].map(()=>" ").join("")}${t}`:""]}}catch(e){c=e}else o&&(d=o);c instanceof f.yP&&(p=c.signature,u=[`Unable to decode signature "${p}" as it was not found on the provided ABI.`,"Make sure you are using the correct ABI and that the error exists on it.",`You can look up the decoded signature here: https://openchain.xyz/signatures?query=${p}.`]),super(d&&"execution reverted"!==d||p?[`The contract function "${n}" reverted with the following ${p?"signature":"reason"}:`,d||p].join("\n"):`The contract function "${n}" reverted.`,{cause:c,metaMessages:u}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ContractFunctionRevertedError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"reason",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"signature",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=m,this.reason=d,this.signature=p}};let ContractFunctionZeroDataError=class ContractFunctionZeroDataError extends m.G{constructor({functionName:e}){super(`The contract function "${e}" returned no data ("0x").`,{metaMessages:["This could be due to any of the following:",` - The contract does not have the function "${e}",`," - The parameters passed to the contract function may be invalid, or"," - The address is not a contract."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ContractFunctionZeroDataError"})}};let RawContractError=class RawContractError extends m.G{constructor({data:e,message:t}){super(t||""),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RawContractError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=e}}},66238:function(e,t,n){"use strict";n.d(t,{KD:function(){return RecursiveReadLimitExceededError},T_:function(){return NegativeOffsetError},lQ:function(){return PositionOutOfBoundsError}});var o=n(62027);let NegativeOffsetError=class NegativeOffsetError extends o.G{constructor({offset:e}){super(`Offset \`${e}\` cannot be negative.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"NegativeOffsetError"})}};let PositionOutOfBoundsError=class PositionOutOfBoundsError extends o.G{constructor({length:e,position:t}){super(`Position \`${t}\` is out of bounds (\`0 < position < ${e}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"PositionOutOfBoundsError"})}};let RecursiveReadLimitExceededError=class RecursiveReadLimitExceededError extends o.G{constructor({count:e,limit:t}){super(`Recursive read limit of \`${t}\` exceeded (recursive read count: \`${e}\`).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RecursiveReadLimitExceededError"})}}},69760:function(e,t,n){"use strict";n.d(t,{$s:function(){return SizeExceedsPaddingSizeError},W_:function(){return InvalidBytesLengthError},mV:function(){return SliceOffsetOutOfBoundsError}});var o=n(62027);let SliceOffsetOutOfBoundsError=class SliceOffsetOutOfBoundsError extends o.G{constructor({offset:e,position:t,size:n}){super(`Slice ${"start"===t?"starting":"ending"} at offset "${e}" is out-of-bounds (size: ${n}).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SliceOffsetOutOfBoundsError"})}};let SizeExceedsPaddingSizeError=class SizeExceedsPaddingSizeError extends o.G{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} size (${e}) exceeds padding size (${t}).`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SizeExceedsPaddingSizeError"})}};let InvalidBytesLengthError=class InvalidBytesLengthError extends o.G{constructor({size:e,targetSize:t,type:n}){super(`${n.charAt(0).toUpperCase()}${n.slice(1).toLowerCase()} is expected to be ${t} ${n} long, but is ${e} ${n} long.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidBytesLengthError"})}}},87788:function(e,t,n){"use strict";n.d(t,{J5:function(){return IntegerOutOfRangeError},M6:function(){return SizeOverflowError},yr:function(){return InvalidBytesBooleanError}});var o=n(62027);let IntegerOutOfRangeError=class IntegerOutOfRangeError extends o.G{constructor({max:e,min:t,signed:n,size:o,value:i}){super(`Number "${i}" is not in safe ${o?`${8*o}-bit ${n?"signed":"unsigned"} `:""}integer range ${e?`(${t} to ${e})`:`(above ${t})`}`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"IntegerOutOfRangeError"})}};let InvalidBytesBooleanError=class InvalidBytesBooleanError extends o.G{constructor(e){super(`Bytes value "${e}" is not a valid boolean. The bytes array must contain a single byte of either a 0 or 1 value.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidBytesBooleanError"})}};let SizeOverflowError=class SizeOverflowError extends o.G{constructor({givenSize:e,maxSize:t}){super(`Size cannot exceed ${t} bytes. Given size: ${e} bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SizeOverflowError"})}}},26445:function(e,t,n){"use strict";n.d(t,{C_:function(){return InsufficientFundsError},G$:function(){return FeeCapTooLowError},Hh:function(){return FeeCapTooHighError},M_:function(){return ExecutionRevertedError},WF:function(){return IntrinsicGasTooHighError},ZI:function(){return NonceTooHighError},cj:function(){return UnknownNodeError},cs:function(){return TipAboveFeeCapError},dR:function(){return IntrinsicGasTooLowError},pZ:function(){return TransactionTypeNotSupportedError},se:function(){return NonceMaxValueError},vU:function(){return NonceTooLowError}});var o=n(67795),i=n(62027);let ExecutionRevertedError=class ExecutionRevertedError extends i.G{constructor({cause:e,message:t}={}){let n=t?.replace("execution reverted: ","")?.replace("execution reverted","");super(`Execution reverted ${n?`with reason: ${n}`:"for an unknown reason"}.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ExecutionRevertedError"})}};Object.defineProperty(ExecutionRevertedError,"code",{enumerable:!0,configurable:!0,writable:!0,value:3}),Object.defineProperty(ExecutionRevertedError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/execution reverted/});let FeeCapTooHighError=class FeeCapTooHighError extends i.G{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${(0,o.o)(t)} gwei`:""}) cannot be higher than the maximum allowed value (2^256-1).`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FeeCapTooHigh"})}};Object.defineProperty(FeeCapTooHighError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas higher than 2\^256-1|fee cap higher than 2\^256-1/});let FeeCapTooLowError=class FeeCapTooLowError extends i.G{constructor({cause:e,maxFeePerGas:t}={}){super(`The fee cap (\`maxFeePerGas\`${t?` = ${(0,o.o)(t)}`:""} gwei) cannot be lower than the block base fee.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FeeCapTooLow"})}};Object.defineProperty(FeeCapTooLowError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max fee per gas less than block base fee|fee cap less than block base fee|transaction is outdated/});let NonceTooHighError=class NonceTooHighError extends i.G{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:""}is higher than the next one expected.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"NonceTooHighError"})}};Object.defineProperty(NonceTooHighError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too high/});let NonceTooLowError=class NonceTooLowError extends i.G{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:""}is lower than the current nonce of the account. Try increasing the nonce or find the latest nonce with \`getTransactionCount\`.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"NonceTooLowError"})}};Object.defineProperty(NonceTooLowError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce too low|transaction already imported|already known/});let NonceMaxValueError=class NonceMaxValueError extends i.G{constructor({cause:e,nonce:t}={}){super(`Nonce provided for the transaction ${t?`(${t}) `:""}exceeds the maximum allowed nonce.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"NonceMaxValueError"})}};Object.defineProperty(NonceMaxValueError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/nonce has max value/});let InsufficientFundsError=class InsufficientFundsError extends i.G{constructor({cause:e}={}){super("The total cost (gas * gas fee + value) of executing this transaction exceeds the balance of the account.",{cause:e,metaMessages:["This error could arise when the account does not have enough funds to:"," - pay for the total gas fee,"," - pay for the value to send."," ","The cost of the transaction is calculated as `gas * gas fee + value`, where:"," - `gas` is the amount of gas needed for transaction to execute,"," - `gas fee` is the gas fee,"," - `value` is the amount of ether to send to the recipient."]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InsufficientFundsError"})}};Object.defineProperty(InsufficientFundsError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/insufficient funds/});let IntrinsicGasTooHighError=class IntrinsicGasTooHighError extends i.G{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:""}provided for the transaction exceeds the limit allowed for the block.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"IntrinsicGasTooHighError"})}};Object.defineProperty(IntrinsicGasTooHighError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too high|gas limit reached/});let IntrinsicGasTooLowError=class IntrinsicGasTooLowError extends i.G{constructor({cause:e,gas:t}={}){super(`The amount of gas ${t?`(${t}) `:""}provided for the transaction is too low.`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"IntrinsicGasTooLowError"})}};Object.defineProperty(IntrinsicGasTooLowError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/intrinsic gas too low/});let TransactionTypeNotSupportedError=class TransactionTypeNotSupportedError extends i.G{constructor({cause:e}){super("The transaction type is not supported for this chain.",{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TransactionTypeNotSupportedError"})}};Object.defineProperty(TransactionTypeNotSupportedError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/transaction type not valid/});let TipAboveFeeCapError=class TipAboveFeeCapError extends i.G{constructor({cause:e,maxPriorityFeePerGas:t,maxFeePerGas:n}={}){super(`The provided tip (\`maxPriorityFeePerGas\`${t?` = ${(0,o.o)(t)} gwei`:""}) cannot be higher than the fee cap (\`maxFeePerGas\`${n?` = ${(0,o.o)(n)} gwei`:""}).`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TipAboveFeeCapError"})}};Object.defineProperty(TipAboveFeeCapError,"nodeMessage",{enumerable:!0,configurable:!0,writable:!0,value:/max priority fee per gas higher than max fee per gas|tip higher than fee cap/});let UnknownNodeError=class UnknownNodeError extends i.G{constructor({cause:e}){super(`An error occurred while executing: ${e?.shortMessage}`,{cause:e}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownNodeError"})}}},78863:function(e,t,n){"use strict";n.d(t,{Gg:function(){return HttpRequestError},W5:function(){return TimeoutError},bs:function(){return RpcRequestError}});var o=n(96070),i=n(62027),s=n(35280);let HttpRequestError=class HttpRequestError extends i.G{constructor({body:e,details:t,headers:n,status:i,url:l}){super("HTTP request failed.",{details:t,metaMessages:[i&&`Status: ${i}`,`URL: ${(0,s.Gr)(l)}`,e&&`Request body: ${(0,o.P)(e)}`].filter(Boolean)}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"HttpRequestError"}),Object.defineProperty(this,"body",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"headers",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"url",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.body=e,this.headers=n,this.status=i,this.url=l}};let RpcRequestError=class RpcRequestError extends i.G{constructor({body:e,error:t,url:n}){super("RPC Request failed.",{cause:t,details:t.message,metaMessages:[`URL: ${(0,s.Gr)(n)}`,`Request body: ${(0,o.P)(e)}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcRequestError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.code=t.code}};let TimeoutError=class TimeoutError extends i.G{constructor({body:e,url:t}){super("The request took too long to respond.",{details:"The request timed out.",metaMessages:[`URL: ${(0,s.Gr)(t)}`,`Request body: ${(0,o.P)(e)}`]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TimeoutError"})}}},39028:function(e,t,n){"use strict";n.d(t,{B:function(){return InvalidRequestRpcError},GD:function(){return JsonRpcVersionUnsupportedError},I0:function(){return ChainDisconnectedError},KB:function(){return TransactionRejectedRpcError},LX:function(){return MethodNotFoundRpcError},Og:function(){return ResourceNotFoundRpcError},PE:function(){return UnauthorizedProviderError},Pv:function(){return LimitExceededRpcError},Ts:function(){return UnsupportedProviderMethodError},XS:function(){return InternalRpcError},ab:function(){return UserRejectedRequestError},gS:function(){return MethodNotSupportedRpcError},ir:function(){return UnknownRpcError},nY:function(){return InvalidParamsRpcError},pT:function(){return ResourceUnavailableRpcError},s7:function(){return ParseRpcError},u5:function(){return ProviderDisconnectedError},x3:function(){return SwitchChainError},yR:function(){return InvalidInputRpcError}});var o=n(62027),i=n(78863);let RpcError=class RpcError extends o.G{constructor(e,{code:t,docsPath:n,metaMessages:o,shortMessage:s}){super(s,{cause:e,docsPath:n,metaMessages:o||e?.metaMessages}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"RpcError"}),Object.defineProperty(this,"code",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.name=e.name,this.code=e instanceof i.bs?e.code:t??-1}};let ProviderRpcError=class ProviderRpcError extends RpcError{constructor(e,t){super(e,t),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ProviderRpcError"}),Object.defineProperty(this,"data",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.data=t.data}};let ParseRpcError=class ParseRpcError extends RpcError{constructor(e){super(e,{code:ParseRpcError.code,shortMessage:"Invalid JSON was received by the server. An error occurred on the server while parsing the JSON text."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ParseRpcError"})}};Object.defineProperty(ParseRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32700});let InvalidRequestRpcError=class InvalidRequestRpcError extends RpcError{constructor(e){super(e,{code:InvalidRequestRpcError.code,shortMessage:"JSON is not a valid request object."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidRequestRpcError"})}};Object.defineProperty(InvalidRequestRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32600});let MethodNotFoundRpcError=class MethodNotFoundRpcError extends RpcError{constructor(e){super(e,{code:MethodNotFoundRpcError.code,shortMessage:"The method does not exist / is not available."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"MethodNotFoundRpcError"})}};Object.defineProperty(MethodNotFoundRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32601});let InvalidParamsRpcError=class InvalidParamsRpcError extends RpcError{constructor(e){super(e,{code:InvalidParamsRpcError.code,shortMessage:"Invalid parameters were provided to the RPC method.\nDouble check you have provided the correct parameters."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidParamsRpcError"})}};Object.defineProperty(InvalidParamsRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32602});let InternalRpcError=class InternalRpcError extends RpcError{constructor(e){super(e,{code:InternalRpcError.code,shortMessage:"An internal error was received."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InternalRpcError"})}};Object.defineProperty(InternalRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32603});let InvalidInputRpcError=class InvalidInputRpcError extends RpcError{constructor(e){super(e,{code:InvalidInputRpcError.code,shortMessage:"Missing or invalid parameters.\nDouble check you have provided the correct parameters."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidInputRpcError"})}};Object.defineProperty(InvalidInputRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32e3});let ResourceNotFoundRpcError=class ResourceNotFoundRpcError extends RpcError{constructor(e){super(e,{code:ResourceNotFoundRpcError.code,shortMessage:"Requested resource not found."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ResourceNotFoundRpcError"})}};Object.defineProperty(ResourceNotFoundRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32001});let ResourceUnavailableRpcError=class ResourceUnavailableRpcError extends RpcError{constructor(e){super(e,{code:ResourceUnavailableRpcError.code,shortMessage:"Requested resource not available."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ResourceUnavailableRpcError"})}};Object.defineProperty(ResourceUnavailableRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32002});let TransactionRejectedRpcError=class TransactionRejectedRpcError extends RpcError{constructor(e){super(e,{code:TransactionRejectedRpcError.code,shortMessage:"Transaction creation failed."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TransactionRejectedRpcError"})}};Object.defineProperty(TransactionRejectedRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32003});let MethodNotSupportedRpcError=class MethodNotSupportedRpcError extends RpcError{constructor(e){super(e,{code:MethodNotSupportedRpcError.code,shortMessage:"Method is not implemented."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"MethodNotSupportedRpcError"})}};Object.defineProperty(MethodNotSupportedRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32004});let LimitExceededRpcError=class LimitExceededRpcError extends RpcError{constructor(e){super(e,{code:LimitExceededRpcError.code,shortMessage:"Request exceeds defined limit."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"LimitExceededRpcError"})}};Object.defineProperty(LimitExceededRpcError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32005});let JsonRpcVersionUnsupportedError=class JsonRpcVersionUnsupportedError extends RpcError{constructor(e){super(e,{code:JsonRpcVersionUnsupportedError.code,shortMessage:"Version of JSON-RPC protocol is not supported."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"JsonRpcVersionUnsupportedError"})}};Object.defineProperty(JsonRpcVersionUnsupportedError,"code",{enumerable:!0,configurable:!0,writable:!0,value:-32006});let UserRejectedRequestError=class UserRejectedRequestError extends ProviderRpcError{constructor(e){super(e,{code:UserRejectedRequestError.code,shortMessage:"User rejected the request."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UserRejectedRequestError"})}};Object.defineProperty(UserRejectedRequestError,"code",{enumerable:!0,configurable:!0,writable:!0,value:4001});let UnauthorizedProviderError=class UnauthorizedProviderError extends ProviderRpcError{constructor(e){super(e,{code:UnauthorizedProviderError.code,shortMessage:"The requested method and/or account has not been authorized by the user."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnauthorizedProviderError"})}};Object.defineProperty(UnauthorizedProviderError,"code",{enumerable:!0,configurable:!0,writable:!0,value:4100});let UnsupportedProviderMethodError=class UnsupportedProviderMethodError extends ProviderRpcError{constructor(e){super(e,{code:UnsupportedProviderMethodError.code,shortMessage:"The Provider does not support the requested method."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnsupportedProviderMethodError"})}};Object.defineProperty(UnsupportedProviderMethodError,"code",{enumerable:!0,configurable:!0,writable:!0,value:4200});let ProviderDisconnectedError=class ProviderDisconnectedError extends ProviderRpcError{constructor(e){super(e,{code:ProviderDisconnectedError.code,shortMessage:"The Provider is disconnected from all chains."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ProviderDisconnectedError"})}};Object.defineProperty(ProviderDisconnectedError,"code",{enumerable:!0,configurable:!0,writable:!0,value:4900});let ChainDisconnectedError=class ChainDisconnectedError extends ProviderRpcError{constructor(e){super(e,{code:ChainDisconnectedError.code,shortMessage:"The Provider is not connected to the requested chain."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"ChainDisconnectedError"})}};Object.defineProperty(ChainDisconnectedError,"code",{enumerable:!0,configurable:!0,writable:!0,value:4901});let SwitchChainError=class SwitchChainError extends ProviderRpcError{constructor(e){super(e,{code:SwitchChainError.code,shortMessage:"An error occurred when attempting to switch chain."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"SwitchChainError"})}};Object.defineProperty(SwitchChainError,"code",{enumerable:!0,configurable:!0,writable:!0,value:4902});let UnknownRpcError=class UnknownRpcError extends RpcError{constructor(e){super(e,{shortMessage:"An unknown RPC error occurred."}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"UnknownRpcError"})}}},20443:function(e,t,n){"use strict";n.d(t,{Bj:function(){return prettyStateOverride},Nc:function(){return AccountStateConflictError},Z8:function(){return StateAssignmentConflictError}});var o=n(62027);let AccountStateConflictError=class AccountStateConflictError extends o.G{constructor({address:e}){super(`State for account "${e}" is set multiple times.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AccountStateConflictError"})}};let StateAssignmentConflictError=class StateAssignmentConflictError extends o.G{constructor(){super("state and stateDiff are set on the same account."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"StateAssignmentConflictError"})}};function prettyStateMapping(e){return e.reduce((e,{slot:t,value:n})=>`${e} ${t}: ${n} `,"")}function prettyStateOverride(e){return e.reduce((e,{address:t,...n})=>{let o=`${e} ${t}: `;return n.nonce&&(o+=` nonce: ${n.nonce} `),n.balance&&(o+=` balance: ${n.balance} `),n.code&&(o+=` code: ${n.code} -`),n.state&&(o+=" state:\n"+prettyStateMapping(n.state)),n.stateDiff&&(o+=" stateDiff:\n"+prettyStateMapping(n.stateDiff)),o}," State Override:\n").slice(0,-1)}},33639:function(e,t,n){"use strict";n.d(t,{Bh:function(){return TransactionNotFoundError},JC:function(){return InvalidStorageKeySizeError},Yb:function(){return TransactionReceiptNotFoundError},j3:function(){return InvalidSerializableTransactionError},mc:function(){return WaitForTransactionReceiptTimeoutError},vl:function(){return InvalidLegacyVError},xY:function(){return FeeConflictError},xr:function(){return prettyPrint}});var o=n(62027);function prettyPrint(e){let t=Object.entries(e).map(([e,t])=>void 0===t||!1===t?null:[e,t]).filter(Boolean),n=t.reduce((e,[t])=>Math.max(e,t.length),0);return t.map(([e,t])=>` ${`${e}:`.padEnd(n+1)} ${t}`).join("\n")}let FeeConflictError=class FeeConflictError extends o.G{constructor(){super("Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.\nUse `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FeeConflictError"})}};let InvalidLegacyVError=class InvalidLegacyVError extends o.G{constructor({v:e}){super(`Invalid \`v\` value "${e}". Expected 27 or 28.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidLegacyVError"})}};let InvalidSerializableTransactionError=class InvalidSerializableTransactionError extends o.G{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",prettyPrint(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- a Legacy Transaction with `gasPrice`"]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidSerializableTransactionError"})}};let InvalidStorageKeySizeError=class InvalidStorageKeySizeError extends o.G{constructor({storageKey:e}){super(`Size for storage key "${e}" is invalid. Expected 32 bytes. Got ${Math.floor((e.length-2)/2)} bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidStorageKeySizeError"})}};let TransactionNotFoundError=class TransactionNotFoundError extends o.G{constructor({blockHash:e,blockNumber:t,blockTag:n,hash:o,index:i}){let s="Transaction";n&&void 0!==i&&(s=`Transaction at block time "${n}" at index "${i}"`),e&&void 0!==i&&(s=`Transaction at block hash "${e}" at index "${i}"`),t&&void 0!==i&&(s=`Transaction at block number "${t}" at index "${i}"`),o&&(s=`Transaction with hash "${o}"`),super(`${s} could not be found.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TransactionNotFoundError"})}};let TransactionReceiptNotFoundError=class TransactionReceiptNotFoundError extends o.G{constructor({hash:e}){super(`Transaction receipt with hash "${e}" could not be found. The Transaction may not be processed on a block yet.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TransactionReceiptNotFoundError"})}};let WaitForTransactionReceiptTimeoutError=class WaitForTransactionReceiptTimeoutError extends o.G{constructor({hash:e}){super(`Timed out while waiting for transaction with hash "${e}" to be confirmed.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WaitForTransactionReceiptTimeoutError"})}}},35280:function(e,t,n){"use strict";n.d(t,{CR:function(){return getContractAddress},Gr:function(){return getUrl},bo:function(){return getVersion}});let getContractAddress=e=>e,getUrl=e=>e,getVersion=()=>"viem@2.8.14"},78398:function(e,t,n){"use strict";n.d(t,{r:function(){return decodeAbiParameters}});var o=n(57412),i=n(45775),s=n(11221),l=n(39135),c=n(3972),u=n(61836),d=n(87788),p=n(95946),f=n(92106);function bytesToNumber(e,t={}){void 0!==t.size&&(0,p.Yf)(e,{size:t.size});let n=(0,f.ci)(e,t);return(0,p.ly)(n,t)}var m=n(11187),b=n(45444);function decodeAbiParameters(e,t){let n="string"==typeof t?(0,m.nr)(t):t,g=(0,s.q)(n);if(0===(0,l.d)(n)&&e.length>0)throw new o.wb;if((0,l.d)(t)&&32>(0,l.d)(t))throw new o.xB({data:"string"==typeof t?t:(0,f.ci)(t),params:e,size:(0,l.d)(t)});let y=0,v=[];for(let t=0;t!e),i=o?[]:{},s=0;if(hasDynamicChild(t)){let l=bytesToNumber(e.readBytes(32)),c=n+l;for(let n=0;n1||n[0]>1)throw new d.yr(n);return!!n[0]}(e.readBytes(32),{size:32}),32];if(t.type.startsWith("bytes"))return function(e,t,{staticPosition:n}){let[o,i]=t.type.split("bytes");if(!i){let t=bytesToNumber(e.readBytes(32));e.setPosition(n+t);let o=bytesToNumber(e.readBytes(32));if(0===o)return e.setPosition(n+32),["0x",32];let i=e.readBytes(o);return e.setPosition(n+32),[(0,f.ci)(i),32]}let s=(0,f.ci)(e.readBytes(parseInt(i),32));return[s,32]}(e,t,{staticPosition:n});if(t.type.startsWith("uint")||t.type.startsWith("int"))return function(e,t){let n=t.type.startsWith("int"),o=parseInt(t.type.split("int")[1]||"256"),i=e.readBytes(32);return[o>48?function(e,t={}){void 0!==t.size&&(0,p.Yf)(e,{size:t.size});let n=(0,f.ci)(e,t);return(0,p.y_)(n,t)}(i,{signed:n}):bytesToNumber(i,{signed:n}),32]}(e,t);if("string"===t.type)return function(e,{staticPosition:t}){let n=bytesToNumber(e.readBytes(32)),o=t+n;e.setPosition(o);let i=bytesToNumber(e.readBytes(32));if(0===i)return e.setPosition(t+32),["",32];let s=e.readBytes(i,32),l=function(e,t={}){let n=e;return void 0!==t.size&&((0,p.Yf)(n,{size:t.size}),n=(0,u.f)(n,{dir:"right"})),new TextDecoder().decode(n)}((0,u.f)(s));return e.setPosition(t+32),[l,32]}(e,{staticPosition:n});throw new o.CI(t.type,{docsPath:"/docs/contract/decodeAbiParameters"})}(g,n,{staticPosition:0});y+=l,v.push(s)}return v}function hasDynamicChild(e){let{type:t}=e;if("string"===t||"bytes"===t||t.endsWith("[]"))return!0;if("tuple"===t)return e.components?.some(hasDynamicChild);let n=(0,b.S)(e.type);return!!(n&&hasDynamicChild({...e,type:n[1]}))}},86899:function(e,t,n){"use strict";n.d(t,{p:function(){return decodeErrorResult}});var o=n(21746),i=n(57412),s=n(3972),l=n(58034),c=n(78398),u=n(80522);function decodeErrorResult(e){let{abi:t,data:n}=e,d=(0,s.tP)(n,0,4);if("0x"===d)throw new i.wb;let p=[...t||[],o.Up,o.hZ],f=p.find(e=>"error"===e.type&&d===(0,l.C)((0,u.t)(e)));if(!f)throw new i.yP(d,{docsPath:"/docs/contract/decodeErrorResult"});return{abiItem:f,args:"inputs"in f&&f.inputs&&f.inputs.length>0?(0,c.r)(f.inputs,(0,s.tP)(n,4)):void 0,errorName:f.name}}},7210:function(e,t,n){"use strict";n.d(t,{k:function(){return decodeFunctionResult}});var o=n(57412),i=n(78398),s=n(40840);let l="/docs/contract/decodeFunctionResult";function decodeFunctionResult(e){let{abi:t,args:n,functionName:c,data:u}=e,d=t[0];if(c){let e=(0,s.mE)({abi:t,args:n,name:c});if(!e)throw new o.xL(c,{docsPath:l});d=e}if("function"!==d.type)throw new o.xL(void 0,{docsPath:l});if(!d.outputs)throw new o.MX(d.name,{docsPath:l});let p=(0,i.r)(d.outputs,u);return p&&p.length>1?p:p&&1===p.length?p[0]:void 0}},45444:function(e,t,n){"use strict";n.d(t,{E:function(){return encodeAbiParameters},S:function(){return getArrayComponents}});var o=n(57412),i=n(26087),s=n(62027),l=n(60480),c=n(57040),u=n(61769),d=n(39135),p=n(3972),f=n(92106);function encodeAbiParameters(e,t){if(e.length!==t.length)throw new o.fs({expectedLength:e.length,givenLength:t.length});let n=function({params:e,values:t}){let n=[];for(let m=0;m0?(0,c.zo)([t,e]):t}}if(s)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:(0,c.zo)(l.map(({encoded:e})=>e))}}(t,{length:i,param:{...e,type:s}})}if("tuple"===e.type)return function(e,{param:t}){let n=!1,o=[];for(let i=0;ie))}}(t,{param:e});if("address"===e.type)return function(e){if(!(0,l.U)(e))throw new i.b({address:e});return{dynamic:!1,encoded:(0,u.gc)(e.toLowerCase())}}(t);if("bool"===e.type)return function(e){if("boolean"!=typeof e)throw new s.G(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:(0,u.gc)((0,f.C4)(e))}}(t);if(e.type.startsWith("uint")||e.type.startsWith("int")){let n=e.type.startsWith("int");return function(e,{signed:t}){return{dynamic:!1,encoded:(0,f.eC)(e,{size:32,signed:t})}}(t,{signed:n})}if(e.type.startsWith("bytes"))return function(e,{param:t}){let[,n]=t.type.split("bytes"),i=(0,d.d)(e);if(!n){let t=e;return i%32!=0&&(t=(0,u.gc)(t,{dir:"right",size:32*Math.ceil((e.length-2)/2/32)})),{dynamic:!0,encoded:(0,c.zo)([(0,u.gc)((0,f.eC)(i,{size:32})),t])}}if(i!==parseInt(n))throw new o.M4({expectedSize:parseInt(n),value:e});return{dynamic:!1,encoded:(0,u.gc)(e,{dir:"right"})}}(t,{param:e});if("string"===e.type)return function(e){let t=(0,f.$G)(e),n=Math.ceil((0,d.d)(t)/32),o=[];for(let e=0;e(function(e,{includeName:t}){return e.type.startsWith("tuple")?`(${formatAbiParams(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:"")})(e,{includeName:t})).join(t?", ":","):""}},40840:function(e,t,n){"use strict";n.d(t,{mE:function(){return getAbiItem}});var o=n(57412),i=n(15102),s=n(60480),l=n(96005),c=n(58034);function getAbiItem(e){let t;let{abi:n,args:u=[],name:d}=e,p=(0,i.v)(d,{strict:!1}),f=n.filter(e=>p?"function"===e.type?(0,c.C)(e)===d:"event"===e.type&&(0,l.n)(e)===d:"name"in e&&e.name===d);if(0!==f.length){if(1===f.length)return f[0];for(let e of f){if(!("inputs"in e))continue;if(!u||0===u.length){if(!e.inputs||0===e.inputs.length)return e;continue}if(!e.inputs||0===e.inputs.length||e.inputs.length!==u.length)continue;let n=u.every((t,n)=>{let o="inputs"in e&&e.inputs[n];return!!o&&function isArgOfType(e,t){let n=typeof e,o=t.type;switch(o){case"address":return(0,s.U)(e,{strict:!1});case"bool":return"boolean"===n;case"function":case"string":return"string"===n;default:if("tuple"===o&&"components"in t)return Object.values(t.components).every((t,n)=>isArgOfType(Object.values(e)[n],t));if(/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(o))return"number"===n||"bigint"===n;if(/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(o))return"string"===n||e instanceof Uint8Array;if(/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(o))return Array.isArray(e)&&e.every(e=>isArgOfType(e,{...t,type:o.replace(/(\[[0-9]{0,}\])$/,"")}));return!1}}(t,o)});if(n){if(t&&"inputs"in t&&t.inputs){let n=function getAmbiguousTypes(e,t,n){for(let o in e){let i=e[o],l=t[o];if("tuple"===i.type&&"tuple"===l.type&&"components"in i&&"components"in l)return getAmbiguousTypes(i.components,l.components,n[o]);let c=[i.type,l.type],u=!!(c.includes("address")&&c.includes("bytes20"))||!!(c.includes("address")&&c.includes("string")||c.includes("address")&&c.includes("bytes"))&&(0,s.U)(n[o],{strict:!1});if(u)return c}}(e.inputs,t.inputs,u);if(n)throw new o.S4({abiItem:e,type:n[0]},{abiItem:t,type:n[1]})}t=e}}return t||f[0]}}},45775:function(e,t,n){"use strict";n.d(t,{K:function(){return getAddress},x:function(){return checksumAddress}});var o=n(26087),i=n(11187),s=n(49550),l=n(60480);function checksumAddress(e,t){let n=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),o=(0,s.w)((0,i.qX)(n),"bytes"),l=(t?n.substring(`${t}0x`.length):n).split("");for(let e=0;e<40;e+=2)o[e>>1]>>4>=8&&l[e]&&(l[e]=l[e].toUpperCase()),(15&o[e>>1])>=8&&l[e+1]&&(l[e+1]=l[e+1].toUpperCase());return`0x${l.join("")}`}function getAddress(e,t){if(!(0,l.U)(e))throw new o.b({address:e});return checksumAddress(e,t)}},60480:function(e,t,n){"use strict";n.d(t,{U:function(){return isAddress}});let LruMap=class LruMap extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}set(e,t){return super.set(e,t),this.maxSize&&this.size>this.maxSize&&this.delete(this.keys().next().value),this}};var o=n(45775);let i=/^0x[a-fA-F0-9]{40}$/,s=new LruMap(8192);function isAddress(e,{strict:t=!0}={}){if(s.has(e))return s.get(e);let n=!!i.test(e)&&(e.toLowerCase()===e||!t||(0,o.x)(e)===e);return s.set(e,n),n}},86164:function(e,t,n){"use strict";function defineChain(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}n.d(t,{a:function(){return defineChain}})},47864:function(e,t,n){"use strict";n.d(t,{L:function(){return getChainContractAddress}});var o=n(80377);function getChainContractAddress({blockNumber:e,chain:t,contract:n}){let i=t?.contracts?.[n];if(!i)throw new o.mm({chain:t,contract:{name:n}});if(e&&i.blockCreated&&i.blockCreated>e)throw new o.mm({blockNumber:e,chain:t,contract:{name:n,blockCreated:i.blockCreated}});return i.address}},11221:function(e,t,n){"use strict";n.d(t,{q:function(){return createCursor}});var o=n(66238);let i={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new o.KD({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new o.lQ({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new o.T_({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new o.T_({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,255&e),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function createCursor(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(i);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}},57040:function(e,t,n){"use strict";function concat(e){return"string"==typeof e[0]?concatHex(e):function(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),o=0;for(let t of e)n.set(t,o),o+=t.length;return n}(e)}function concatHex(e){return`0x${e.reduce((e,t)=>e+t.replace("0x",""),"")}`}n.d(t,{SM:function(){return concatHex},zo:function(){return concat}})},15102:function(e,t,n){"use strict";function isHex(e,{strict:t=!0}={}){return!!e&&"string"==typeof e&&(t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith("0x"))}n.d(t,{v:function(){return isHex}})},61769:function(e,t,n){"use strict";n.d(t,{gc:function(){return padHex},vk:function(){return pad}});var o=n(69760);function pad(e,{dir:t,size:n=32}={}){return"string"==typeof e?padHex(e,{dir:t,size:n}):function(e,{dir:t,size:n=32}={}){if(null===n)return e;if(e.length>n)throw new o.$s({size:e.length,targetSize:n,type:"bytes"});let i=new Uint8Array(n);for(let o=0;o2*n)throw new o.$s({size:Math.ceil(i.length/2),targetSize:n,type:"hex"});return`0x${i["right"===t?"padEnd":"padStart"](2*n,"0")}`}},39135:function(e,t,n){"use strict";n.d(t,{d:function(){return size}});var o=n(15102);function size(e){return(0,o.v)(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}},3972:function(e,t,n){"use strict";n.d(t,{T4:function(){return sliceBytes},tP:function(){return slice}});var o=n(69760),i=n(15102),s=n(39135);function slice(e,t,n,{strict:o}={}){return(0,i.v)(e,{strict:!1})?function(e,t,n,{strict:o}={}){assertStartOffset(e,t);let i=`0x${e.replace("0x","").slice((t??0)*2,(n??e.length)*2)}`;return o&&assertEndOffset(i,t,n),i}(e,t,n,{strict:o}):sliceBytes(e,t,n,{strict:o})}function assertStartOffset(e,t){if("number"==typeof t&&t>0&&t>(0,s.d)(e)-1)throw new o.mV({offset:t,position:"start",size:(0,s.d)(e)})}function assertEndOffset(e,t,n){if("number"==typeof t&&"number"==typeof n&&(0,s.d)(e)!==n-t)throw new o.mV({offset:n,position:"end",size:(0,s.d)(e)})}function sliceBytes(e,t,n,{strict:o}={}){assertStartOffset(e,t);let i=e.slice(t,n);return o&&assertEndOffset(i,t,n),i}},61836:function(e,t,n){"use strict";function trim(e,{dir:t="left"}={}){let n="string"==typeof e?e.replace("0x",""):e,o=0;for(let e=0;et)throw new o.M6({givenSize:(0,i.d)(e),maxSize:t})}function hexToBigInt(e,t={}){let{signed:n}=t;t.size&&assertSize(e,{size:t.size});let o=BigInt(e);if(!n)return o;let i=(e.length-2)/2,s=(1n<<8n*BigInt(i)-1n)-1n;return o<=s?o:o-BigInt(`0x${"f".padStart(2*i,"f")}`)-1n}function hexToNumber(e,t={}){return Number(hexToBigInt(e,t))}function hexToString(e,t={}){let n=(0,l.nr)(e);return t.size&&(assertSize(n,{size:t.size}),n=(0,s.f)(n,{dir:"right"})),new TextDecoder().decode(n)}},11187:function(e,t,n){"use strict";n.d(t,{O0:function(){return toBytes},nr:function(){return hexToBytes},qX:function(){return stringToBytes}});var o=n(62027),i=n(15102),s=n(61769),l=n(95946),c=n(92106);let u=new TextEncoder;function toBytes(e,t={}){return"number"==typeof e||"bigint"==typeof e?function(e,t){let n=(0,c.eC)(e,t);return hexToBytes(n)}(e,t):"boolean"==typeof e?function(e,t={}){let n=new Uint8Array(1);return(n[0]=Number(e),"number"==typeof t.size)?((0,l.Yf)(n,{size:t.size}),(0,s.vk)(n,{size:t.size})):n}(e,t):(0,i.v)(e)?hexToBytes(e,t):stringToBytes(e,t)}let d={zero:48,nine:57,A:65,F:70,a:97,f:102};function charCodeToBase16(e){return e>=d.zero&&e<=d.nine?e-d.zero:e>=d.A&&e<=d.F?e-(d.A-10):e>=d.a&&e<=d.f?e-(d.a-10):void 0}function hexToBytes(e,t={}){let n=e;t.size&&((0,l.Yf)(n,{size:t.size}),n=(0,s.vk)(n,{dir:"right",size:t.size}));let i=n.slice(2);i.length%2&&(i=`0${i}`);let c=i.length/2,u=new Uint8Array(c);for(let e=0,t=0;et.toString(16).padStart(2,"0"));function toHex(e,t={}){return"number"==typeof e||"bigint"==typeof e?numberToHex(e,t):"string"==typeof e?stringToHex(e,t):"boolean"==typeof e?boolToHex(e,t):bytesToHex(e,t)}function boolToHex(e,t={}){let n=`0x${Number(e)}`;return"number"==typeof t.size?((0,s.Yf)(n,{size:t.size}),(0,i.vk)(n,{size:t.size})):n}function bytesToHex(e,t={}){let n="";for(let t=0;tn||ce.code===i.M_.code):e;return s instanceof o.G?new i.M_({cause:e,message:s.details}):i.M_.nodeMessage.test(n)?new i.M_({cause:e,message:e.details}):i.Hh.nodeMessage.test(n)?new i.Hh({cause:e,maxFeePerGas:t?.maxFeePerGas}):i.G$.nodeMessage.test(n)?new i.G$({cause:e,maxFeePerGas:t?.maxFeePerGas}):i.ZI.nodeMessage.test(n)?new i.ZI({cause:e,nonce:t?.nonce}):i.vU.nodeMessage.test(n)?new i.vU({cause:e,nonce:t?.nonce}):i.se.nodeMessage.test(n)?new i.se({cause:e,nonce:t?.nonce}):i.C_.nodeMessage.test(n)?new i.C_({cause:e}):i.WF.nodeMessage.test(n)?new i.WF({cause:e,gas:t?.gas}):i.dR.nodeMessage.test(n)?new i.dR({cause:e,gas:t?.gas}):i.pZ.nodeMessage.test(n)?new i.pZ({cause:e}):i.cs.nodeMessage.test(n)?new i.cs({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new i.cj({cause:e})}},43310:function(e,t,n){"use strict";n.d(t,{G:function(){return s},Z:function(){return formatBlock}});var o=n(21366),i=n(6073);function formatBlock(e){let t=e.transactions?.map(e=>"string"==typeof e?e:i.Tr(e));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:t,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}let s=(0,o.$)("block",formatBlock)},61163:function(e,t,n){"use strict";function extract(e,{format:t}){if(!t)return{};let n={},o=t(e||{});return!function extract_(t){let o=Object.keys(t);for(let i of o)i in e&&(n[i]=e[i]),t[i]&&"object"==typeof t[i]&&!Array.isArray(t[i])&&extract_(t[i])}(o),n}n.d(t,{K:function(){return extract}})},21366:function(e,t,n){"use strict";function defineFormatter(e,t){return({exclude:n,format:o})=>({exclude:n,format:e=>{let i=t(e);if(n)for(let e of n)delete i[e];return{...i,...o(e)}},type:e})}n.d(t,{$:function(){return defineFormatter}})},53992:function(e,t,n){"use strict";function formatLog(e,{args:t,eventName:n}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...n?{args:t,eventName:n}:{}}}n.d(t,{U:function(){return formatLog}})},6073:function(e,t,n){"use strict";n.d(t,{Tr:function(){return formatTransaction},c8:function(){return s},y_:function(){return l}});var o=n(95946),i=n(21366);let s={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844"};function formatTransaction(e){let t={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?(0,o.ly)(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?(0,o.ly)(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?s[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return t.yParity=(()=>{if(e.yParity)return Number(e.yParity);if("bigint"==typeof t.v){if(0n===t.v||27n===t.v)return 0;if(1n===t.v||28n===t.v)return 1;if(t.v>=35n)return t.v%2n===0n?1:0}})(),"legacy"===t.type&&(delete t.accessList,delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas,delete t.yParity),"eip2930"===t.type&&(delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas),"eip1559"===t.type&&delete t.maxFeePerBlobGas,t}let l=(0,i.$)("transaction",formatTransaction)},30866:function(e,t,n){"use strict";n.d(t,{d:function(){return u},f:function(){return formatTransactionReceipt}});var o=n(95946),i=n(21366),s=n(53992),l=n(6073);let c={"0x0":"reverted","0x1":"success"};function formatTransactionReceipt(e){let t={...e,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,contractAddress:e.contractAddress?e.contractAddress:null,cumulativeGasUsed:e.cumulativeGasUsed?BigInt(e.cumulativeGasUsed):null,effectiveGasPrice:e.effectiveGasPrice?BigInt(e.effectiveGasPrice):null,gasUsed:e.gasUsed?BigInt(e.gasUsed):null,logs:e.logs?e.logs.map(e=>(0,s.U)(e)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?(0,o.ly)(e.transactionIndex):null,status:e.status?c[e.status]:null,type:e.type?l.c8[e.type]||e.type:null};return e.blobGasPrice&&(t.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(t.blobGasUsed=BigInt(e.blobGasUsed)),t}let u=(0,i.$)("transactionReceipt",formatTransactionReceipt)},74688:function(e,t,n){"use strict";n.d(t,{iy:function(){return l},tG:function(){return formatTransactionRequest}});var o=n(92106),i=n(21366);let s={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3"};function formatTransactionRequest(e){let t={...e};return void 0!==e.blobs&&"string"!=typeof e.blobs[0]&&(t.blobs=e.blobs.map(e=>(0,o.ci)(e))),void 0!==e.gas&&(t.gas=(0,o.eC)(e.gas)),void 0!==e.gasPrice&&(t.gasPrice=(0,o.eC)(e.gasPrice)),void 0!==e.maxFeePerBlobGas&&(t.maxFeePerBlobGas=(0,o.eC)(e.maxFeePerBlobGas)),void 0!==e.maxFeePerGas&&(t.maxFeePerGas=(0,o.eC)(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=(0,o.eC)(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(t.nonce=(0,o.eC)(e.nonce)),void 0!==e.type&&(t.type=s[e.type]),void 0!==e.value&&(t.value=(0,o.eC)(e.value)),t}let l=(0,i.$)("transactionRequest",formatTransactionRequest)},49550:function(e,t,n){"use strict";n.d(t,{w:function(){return keccak256}});var o=n(22250),i=n(15102),s=n(11187),l=n(92106);function keccak256(e,t){let n=(0,o.fr)((0,i.v)(e,{strict:!1})?(0,s.O0)(e):e);return"bytes"===(t||"hex")?n:(0,l.NC)(n)}},96005:function(e,t,n){"use strict";n.d(t,{n:function(){return i}});var o=n(67684);let i=o.r},58034:function(e,t,n){"use strict";n.d(t,{C:function(){return toFunctionSelector}});var o=n(3972),i=n(67684);let toFunctionSelector=e=>(0,o.tP)((0,i.r)(e),0,4)},67684:function(e,t,n){"use strict";n.d(t,{r:function(){return toSignatureHash}});var o=n(11187),i=n(49550);let hash=e=>(0,i.w)((0,o.O0)(e)),s=/^tuple(?(\[(\d*)\])*)$/;function formatAbiParameters(e){let t="",n=e.length;for(let o=0;o{var t;let n="string"==typeof e?e:"function"===(t=e).type?`function ${t.name}(${formatAbiParameters(t.inputs)})${t.stateMutability&&"nonpayable"!==t.stateMutability?` ${t.stateMutability}`:""}${t.outputs.length?` returns (${formatAbiParameters(t.outputs)})`:""}`:"event"===t.type?`event ${t.name}(${formatAbiParameters(t.inputs)})`:"error"===t.type?`error ${t.name}(${formatAbiParameters(t.inputs)})`:"constructor"===t.type?`constructor(${formatAbiParameters(t.inputs)})${"payable"===t.stateMutability?" payable":""}`:"fallback"===t.type?"fallback()":"receive() external payable";return function(e){let t=!0,n="",o=0,i="",s=!1;for(let l=0;l{let t=getScheduler();flush();let n=t.map(({args:e})=>e);0!==n.length&&e(n).then(e=>{s&&Array.isArray(e)&&e.sort(s);for(let n=0;n{for(let n=0;no.delete(t),getBatchedArgs=()=>getScheduler().map(({args:e})=>e),getScheduler=()=>o.get(t)||[],setScheduler=e=>o.set(t,[...getScheduler(),e]);return{flush,async schedule(e){let t={},o=new Promise((e,n)=>{t.resolve=e,t.reject=n}),s=n?.([...getBatchedArgs(),e]);s&&exec();let l=getScheduler().length>0;return l?setScheduler({args:e,pendingPromise:t}):(setScheduler({args:e,pendingPromise:t}),setTimeout(exec,i)),o}}}},7760:function(e,t,n){"use strict";n.d(t,{J:function(){return withRetry}});var o=n(62914);function withRetry(e,{delay:t=100,retryCount:n=2,shouldRetry:i=()=>!0}={}){return new Promise((s,l)=>{let attemptRetry=async({count:c=0}={})=>{let retry=async({error:e})=>{let n="function"==typeof t?t({count:c,error:e}):t;n&&await (0,o.D)(n),attemptRetry({count:c+1})};try{let t=await e();s(t)}catch(e){if(cJSON.stringify(e,(e,n)=>{let o="bigint"==typeof n?n.toString():n;return"function"==typeof t?t(e,o):o},n)},47531:function(e,t,n){"use strict";n.d(t,{F:function(){return assertRequest}});var o=n(14503),i=n(26087),s=n(26445),l=n(33639),c=n(60480);function assertRequest(e){let{account:t,gasPrice:n,maxFeePerGas:u,maxPriorityFeePerGas:d,to:p}=e,f=t?(0,o.T)(t):void 0;if(f&&!(0,c.U)(f.address))throw new i.b({address:f.address});if(p&&!(0,c.U)(p))throw new i.b({address:p});if(void 0!==n&&(void 0!==u||void 0!==d))throw new l.xY;if(u&&u>2n**256n-1n)throw new s.Hh({maxFeePerGas:u});if(d&&u&&d>u)throw new s.cs({maxFeePerGas:u,maxPriorityFeePerGas:d})}},82994:function(e,t,n){"use strict";n.d(t,{l:function(){return getTransactionType}});var o=n(33639);function getTransactionType(e){if(e.type)return e.type;if(void 0!==e.blobs||void 0!==e.blobVersionedHashes||void 0!==e.maxFeePerBlobGas||void 0!==e.sidecars)return"eip4844";if(void 0!==e.maxFeePerGas||void 0!==e.maxPriorityFeePerGas)return"eip1559";if(void 0!==e.gasPrice)return void 0!==e.accessList?"eip2930":"legacy";throw new o.j3({transaction:e})}},39625:function(e,t,n){"use strict";n.d(t,{d:function(){return formatEther}});var o=n(84192),i=n(15229);function formatEther(e,t="wei"){return(0,i.b)(e,o.ez[t])}},67795:function(e,t,n){"use strict";n.d(t,{o:function(){return formatGwei}});var o=n(84192),i=n(15229);function formatGwei(e,t="wei"){return(0,i.b)(e,o.Zn[t])}},15229:function(e,t,n){"use strict";function formatUnits(e,t){let n=e.toString(),o=n.startsWith("-");o&&(n=n.slice(1));let[i,s]=[(n=n.padStart(t,"0")).slice(0,n.length-t),n.slice(n.length-t)];return s=s.replace(/(0+)$/,""),`${o?"-":""}${i||"0"}${s?`.${s}`:""}`}n.d(t,{b:function(){return formatUnits}})},62914:function(e,t,n){"use strict";async function wait(e){return new Promise(t=>setTimeout(t,e))}n.d(t,{D:function(){return wait}})},99931:function(e,t,n){"use strict";n.d(t,{V:function(){return s},F:function(){return WagmiProvider}});var o=n(67294);let i=!1;async function reconnect(e,t={}){let n;if(i)return[];i=!0,e.setState(e=>({...e,status:e.current?"reconnecting":"connecting"}));let o=[];if(t.connectors?.length)for(let n of t.connectors){let t;t="function"==typeof n?e._internal.connectors.setup(n):n,o.push(t)}else o.push(...e.connectors);try{n=await e.storage?.getItem("recentConnectorId")}catch{}let s={};for(let[,t]of e.state.connections)s[t.connector.id]=1;n&&(s[n]=0);let l=Object.keys(s).length>0?[...o].sort((e,t)=>(s[e.id]??10)-(s[t.id]??10)):o,c=!1,u=[],d=[];for(let t of l){let n=await t.getProvider();if(!n||d.some(e=>e===n))continue;let o=await t.isAuthorized();if(!o)continue;let i=await t.connect({isReconnecting:!0}).catch(()=>null);i&&(t.emitter.off("connect",e._internal.events.connect),t.emitter.on("change",e._internal.events.change),t.emitter.on("disconnect",e._internal.events.disconnect),e.setState(e=>{let n=new Map(c?e.connections:new Map).set(t.uid,{accounts:i.accounts,chainId:i.chainId,connector:t});return{...e,current:c?e.current:t.uid,connections:n}}),u.push({accounts:i.accounts,chainId:i.chainId,connector:t}),d.push(n),c=!0)}return("reconnecting"===e.state.status||"connecting"===e.state.status)&&(c?e.setState(e=>({...e,status:"connected"})):e.setState(e=>({...e,connections:new Map,current:void 0,status:"disconnected"}))),i=!1,u}function Hydrate(e){let{children:t,config:n,initialState:i,reconnectOnMount:s=!0}=e,{onMount:l}=function(e,t){let{initialState:n,reconnectOnMount:o}=t;return n&&!e._internal.store.persist.hasHydrated()&&e.setState({...n,connections:o?n.connections:new Map,status:o?"reconnecting":"disconnected"}),{async onMount(){if(e._internal.ssr){await e._internal.store.persist.rehydrate();let t=e._internal.mipd?.getProviders().map(e._internal.connectors.providerDetailToConnector).map(e._internal.connectors.setup);e._internal.connectors.setState(e=>[...e,...t??[]])}o?reconnect(e):e.storage&&e.setState(e=>({...e,connections:new Map}))}}}(n,{initialState:i,reconnectOnMount:s});n._internal.ssr||l();let c=(0,o.useRef)(!0);return(0,o.useEffect)(()=>{if(c.current&&n._internal.ssr)return l(),()=>{c.current=!1}},[]),t}let s=(0,o.createContext)(void 0);function WagmiProvider(e){let{children:t,config:n}=e;return(0,o.createElement)(Hydrate,e,(0,o.createElement)(s.Provider,{value:n},t))}},92321:function(e,t,n){"use strict";n.d(t,{m:function(){return useAccount}});var o=n(33397),i=n(52425),s=n(37122),l=n(74751),c=n(67294),u=n(52798);let isPlainObject=e=>"object"==typeof e&&!Array.isArray(e);function useAccount(e={}){let t=(0,s.Z)(e);return function(e,t,n=t,o=l.v){let i=(0,c.useRef)([]),s=(0,u.useSyncExternalStoreWithSelector)(e,t,n,e=>e,(e,t)=>{if(isPlainObject(e)&&isPlainObject(t)&&i.current.length){for(let n of i.current){let i=o(e[n],t[n]);if(!i)return!1}return!0}return o(e,t)});if(isPlainObject(s)){let e={...s};return Object.defineProperties(e,Object.entries(e).reduce((e,[t,n])=>({...e,[t]:{configurable:!1,enumerable:!0,get:()=>(i.current.includes(t)||i.current.push(t),n)}}),{})),e}return s}(e=>(0,o.u)(t,{onChange:e}),()=>(0,i.D)(t))}},37122:function(e,t,n){"use strict";n.d(t,{Z:function(){return useConfig}});var o=n(67294),i=n(99931),s=n(7066);let getVersion=()=>"wagmi@2.5.11";let BaseError=class BaseError extends s.G{constructor(){super(...arguments),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WagmiError"})}get docsBaseUrl(){return"https://wagmi.sh/react"}get version(){return getVersion()}};let WagmiProviderNotFoundError=class WagmiProviderNotFoundError extends BaseError{constructor(){super("`useConfig` must be used within `WagmiProvider`.",{docsPath:"https://wagmi.sh/react/api/WagmiProvider"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WagmiProviderNotFoundError"})}};function useConfig(e={}){let t=e.config??(0,o.useContext)(i.V);if(!t)throw new WagmiProviderNotFoundError;return t}},55585:function(e,t,n){"use strict";n.d(t,{Q:function(){return useSignMessage}});var o=n(98029),i=n(14503),s=n(62027);let AccountNotFoundError=class AccountNotFoundError extends s.G{constructor({docsPath:e}={}){super("Could not find an Account to execute with this Action.\nPlease provide an Account with the `account` argument on the Action, or by supplying an `account` to the WalletClient.",{docsPath:e,docsSlug:"account"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AccountNotFoundError"})}};var l=n(92106);async function signMessage(e,{account:t=e.account,message:n}){if(!t)throw new AccountNotFoundError({docsPath:"/docs/actions/wallet/signMessage"});let o=(0,i.T)(t);if("local"===o.type)return o.signMessage({message:n});let s="string"==typeof n?(0,l.$G)(n):n.raw instanceof Uint8Array?(0,l.NC)(n.raw):n.raw;return e.request({method:"personal_sign",params:[s,o.address]},{retryCount:0})}var c=n(81946),u=n(16189),d=n(91628),p=n(87675);async function getConnectorClient(e,t={}){let n;if(t.connector){let{connector:e}=t,[o,i]=await Promise.all([e.getAccounts(),e.getChainId()]);n={accounts:o,chainId:i,connector:e}}else n=e.state.connections.get(e.state.current);if(!n)throw new p.aH;let o=t.chainId??n.chainId,s=n.connector;if(s.getClient)return s.getClient({chainId:o});let l=(0,i.T)(t.account??n.accounts[0]),c=e.chains.find(e=>e.id===o),f=await n.connector.getProvider({chainId:o});if(t.account&&!n.accounts.includes(l.address))throw new p.JK({address:l.address,connector:s});return(0,u.e)({account:l,chain:c,name:"Connector Client",transport:e=>(function(e,t={}){let{key:n="custom",name:o="Custom Provider",retryDelay:i}=t;return({retryCount:s})=>(0,d.q)({key:n,name:o,request:e.request.bind(e),retryCount:t.retryCount??s,retryDelay:i,type:"custom"})})(f)({...e,retryCount:0})})}async function signMessage_signMessage(e,t){let n;let{account:o,connector:i,...s}=t;n="object"==typeof o&&"local"===o.type?e.getClient():await getConnectorClient(e,{account:o,connector:i});let l=(0,c.s)(n,signMessage,"signMessage");return l({...s,...o?{account:o}:{}})}var f=n(37122);function useSignMessage(e={}){let{mutation:t}=e,n=(0,f.Z)(e),{mutate:i,mutateAsync:s,...l}=(0,o.D)({...t,mutationFn:e=>signMessage_signMessage(n,e),mutationKey:["signMessage"]});return{...l,signMessage:i,signMessageAsync:s}}}},function(e){var __webpack_exec__=function(t){return e(e.s=t)};e.O(0,[9774,179],function(){return __webpack_exec__(6840),__webpack_exec__(59974)}),_N_E=e.O()}]); \ No newline at end of file +`),n.state&&(o+=" state:\n"+prettyStateMapping(n.state)),n.stateDiff&&(o+=" stateDiff:\n"+prettyStateMapping(n.stateDiff)),o}," State Override:\n").slice(0,-1)}},33639:function(e,t,n){"use strict";n.d(t,{Bh:function(){return TransactionNotFoundError},JC:function(){return InvalidStorageKeySizeError},Yb:function(){return TransactionReceiptNotFoundError},j3:function(){return InvalidSerializableTransactionError},mc:function(){return WaitForTransactionReceiptTimeoutError},vl:function(){return InvalidLegacyVError},xY:function(){return FeeConflictError},xr:function(){return prettyPrint}});var o=n(62027);function prettyPrint(e){let t=Object.entries(e).map(([e,t])=>void 0===t||!1===t?null:[e,t]).filter(Boolean),n=t.reduce((e,[t])=>Math.max(e,t.length),0);return t.map(([e,t])=>` ${`${e}:`.padEnd(n+1)} ${t}`).join("\n")}let FeeConflictError=class FeeConflictError extends o.G{constructor(){super("Cannot specify both a `gasPrice` and a `maxFeePerGas`/`maxPriorityFeePerGas`.\nUse `maxFeePerGas`/`maxPriorityFeePerGas` for EIP-1559 compatible networks, and `gasPrice` for others."),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"FeeConflictError"})}};let InvalidLegacyVError=class InvalidLegacyVError extends o.G{constructor({v:e}){super(`Invalid \`v\` value "${e}". Expected 27 or 28.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidLegacyVError"})}};let InvalidSerializableTransactionError=class InvalidSerializableTransactionError extends o.G{constructor({transaction:e}){super("Cannot infer a transaction type from provided transaction.",{metaMessages:["Provided Transaction:","{",prettyPrint(e),"}","","To infer the type, either provide:","- a `type` to the Transaction, or","- an EIP-1559 Transaction with `maxFeePerGas`, or","- an EIP-2930 Transaction with `gasPrice` & `accessList`, or","- an EIP-4844 Transaction with `blobs`, `blobVersionedHashes`, `sidecars`, or","- a Legacy Transaction with `gasPrice`"]}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidSerializableTransactionError"})}};let InvalidStorageKeySizeError=class InvalidStorageKeySizeError extends o.G{constructor({storageKey:e}){super(`Size for storage key "${e}" is invalid. Expected 32 bytes. Got ${Math.floor((e.length-2)/2)} bytes.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"InvalidStorageKeySizeError"})}};let TransactionNotFoundError=class TransactionNotFoundError extends o.G{constructor({blockHash:e,blockNumber:t,blockTag:n,hash:o,index:i}){let s="Transaction";n&&void 0!==i&&(s=`Transaction at block time "${n}" at index "${i}"`),e&&void 0!==i&&(s=`Transaction at block hash "${e}" at index "${i}"`),t&&void 0!==i&&(s=`Transaction at block number "${t}" at index "${i}"`),o&&(s=`Transaction with hash "${o}"`),super(`${s} could not be found.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TransactionNotFoundError"})}};let TransactionReceiptNotFoundError=class TransactionReceiptNotFoundError extends o.G{constructor({hash:e}){super(`Transaction receipt with hash "${e}" could not be found. The Transaction may not be processed on a block yet.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"TransactionReceiptNotFoundError"})}};let WaitForTransactionReceiptTimeoutError=class WaitForTransactionReceiptTimeoutError extends o.G{constructor({hash:e}){super(`Timed out while waiting for transaction with hash "${e}" to be confirmed.`),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WaitForTransactionReceiptTimeoutError"})}}},35280:function(e,t,n){"use strict";n.d(t,{CR:function(){return getContractAddress},Gr:function(){return getUrl},bo:function(){return getVersion}});let getContractAddress=e=>e,getUrl=e=>e,getVersion=()=>"viem@2.8.14"},78398:function(e,t,n){"use strict";n.d(t,{r:function(){return decodeAbiParameters}});var o=n(57412),i=n(45775),s=n(11221),l=n(39135),c=n(3972),u=n(61836),d=n(87788),p=n(95946),f=n(92106);function bytesToNumber(e,t={}){void 0!==t.size&&(0,p.Yf)(e,{size:t.size});let n=(0,f.ci)(e,t);return(0,p.ly)(n,t)}var m=n(11187),g=n(45444);function decodeAbiParameters(e,t){let n="string"==typeof t?(0,m.nr)(t):t,b=(0,s.q)(n);if(0===(0,l.d)(n)&&e.length>0)throw new o.wb;if((0,l.d)(t)&&32>(0,l.d)(t))throw new o.xB({data:"string"==typeof t?t:(0,f.ci)(t),params:e,size:(0,l.d)(t)});let y=0,v=[];for(let t=0;t!e),i=o?[]:{},s=0;if(hasDynamicChild(t)){let l=bytesToNumber(e.readBytes(32)),c=n+l;for(let n=0;n1||n[0]>1)throw new d.yr(n);return!!n[0]}(e.readBytes(32),{size:32}),32];if(t.type.startsWith("bytes"))return function(e,t,{staticPosition:n}){let[o,i]=t.type.split("bytes");if(!i){let t=bytesToNumber(e.readBytes(32));e.setPosition(n+t);let o=bytesToNumber(e.readBytes(32));if(0===o)return e.setPosition(n+32),["0x",32];let i=e.readBytes(o);return e.setPosition(n+32),[(0,f.ci)(i),32]}let s=(0,f.ci)(e.readBytes(parseInt(i),32));return[s,32]}(e,t,{staticPosition:n});if(t.type.startsWith("uint")||t.type.startsWith("int"))return function(e,t){let n=t.type.startsWith("int"),o=parseInt(t.type.split("int")[1]||"256"),i=e.readBytes(32);return[o>48?function(e,t={}){void 0!==t.size&&(0,p.Yf)(e,{size:t.size});let n=(0,f.ci)(e,t);return(0,p.y_)(n,t)}(i,{signed:n}):bytesToNumber(i,{signed:n}),32]}(e,t);if("string"===t.type)return function(e,{staticPosition:t}){let n=bytesToNumber(e.readBytes(32)),o=t+n;e.setPosition(o);let i=bytesToNumber(e.readBytes(32));if(0===i)return e.setPosition(t+32),["",32];let s=e.readBytes(i,32),l=function(e,t={}){let n=e;return void 0!==t.size&&((0,p.Yf)(n,{size:t.size}),n=(0,u.f)(n,{dir:"right"})),new TextDecoder().decode(n)}((0,u.f)(s));return e.setPosition(t+32),[l,32]}(e,{staticPosition:n});throw new o.CI(t.type,{docsPath:"/docs/contract/decodeAbiParameters"})}(b,n,{staticPosition:0});y+=l,v.push(s)}return v}function hasDynamicChild(e){let{type:t}=e;if("string"===t||"bytes"===t||t.endsWith("[]"))return!0;if("tuple"===t)return e.components?.some(hasDynamicChild);let n=(0,g.S)(e.type);return!!(n&&hasDynamicChild({...e,type:n[1]}))}},86899:function(e,t,n){"use strict";n.d(t,{p:function(){return decodeErrorResult}});var o=n(21746),i=n(57412),s=n(3972),l=n(58034),c=n(78398),u=n(80522);function decodeErrorResult(e){let{abi:t,data:n}=e,d=(0,s.tP)(n,0,4);if("0x"===d)throw new i.wb;let p=[...t||[],o.Up,o.hZ],f=p.find(e=>"error"===e.type&&d===(0,l.C)((0,u.t)(e)));if(!f)throw new i.yP(d,{docsPath:"/docs/contract/decodeErrorResult"});return{abiItem:f,args:"inputs"in f&&f.inputs&&f.inputs.length>0?(0,c.r)(f.inputs,(0,s.tP)(n,4)):void 0,errorName:f.name}}},7210:function(e,t,n){"use strict";n.d(t,{k:function(){return decodeFunctionResult}});var o=n(57412),i=n(78398),s=n(40840);let l="/docs/contract/decodeFunctionResult";function decodeFunctionResult(e){let{abi:t,args:n,functionName:c,data:u}=e,d=t[0];if(c){let e=(0,s.mE)({abi:t,args:n,name:c});if(!e)throw new o.xL(c,{docsPath:l});d=e}if("function"!==d.type)throw new o.xL(void 0,{docsPath:l});if(!d.outputs)throw new o.MX(d.name,{docsPath:l});let p=(0,i.r)(d.outputs,u);return p&&p.length>1?p:p&&1===p.length?p[0]:void 0}},45444:function(e,t,n){"use strict";n.d(t,{E:function(){return encodeAbiParameters},S:function(){return getArrayComponents}});var o=n(57412),i=n(26087),s=n(62027),l=n(60480),c=n(57040),u=n(61769),d=n(39135),p=n(3972),f=n(92106);function encodeAbiParameters(e,t){if(e.length!==t.length)throw new o.fs({expectedLength:e.length,givenLength:t.length});let n=function({params:e,values:t}){let n=[];for(let m=0;m0?(0,c.zo)([t,e]):t}}if(s)return{dynamic:!0,encoded:e}}return{dynamic:!1,encoded:(0,c.zo)(l.map(({encoded:e})=>e))}}(t,{length:i,param:{...e,type:s}})}if("tuple"===e.type)return function(e,{param:t}){let n=!1,o=[];for(let i=0;ie))}}(t,{param:e});if("address"===e.type)return function(e){if(!(0,l.U)(e))throw new i.b({address:e});return{dynamic:!1,encoded:(0,u.gc)(e.toLowerCase())}}(t);if("bool"===e.type)return function(e){if("boolean"!=typeof e)throw new s.G(`Invalid boolean value: "${e}" (type: ${typeof e}). Expected: \`true\` or \`false\`.`);return{dynamic:!1,encoded:(0,u.gc)((0,f.C4)(e))}}(t);if(e.type.startsWith("uint")||e.type.startsWith("int")){let n=e.type.startsWith("int");return function(e,{signed:t}){return{dynamic:!1,encoded:(0,f.eC)(e,{size:32,signed:t})}}(t,{signed:n})}if(e.type.startsWith("bytes"))return function(e,{param:t}){let[,n]=t.type.split("bytes"),i=(0,d.d)(e);if(!n){let t=e;return i%32!=0&&(t=(0,u.gc)(t,{dir:"right",size:32*Math.ceil((e.length-2)/2/32)})),{dynamic:!0,encoded:(0,c.zo)([(0,u.gc)((0,f.eC)(i,{size:32})),t])}}if(i!==parseInt(n))throw new o.M4({expectedSize:parseInt(n),value:e});return{dynamic:!1,encoded:(0,u.gc)(e,{dir:"right"})}}(t,{param:e});if("string"===e.type)return function(e){let t=(0,f.$G)(e),n=Math.ceil((0,d.d)(t)/32),o=[];for(let e=0;e(function(e,{includeName:t}){return e.type.startsWith("tuple")?`(${formatAbiParams(e.components,{includeName:t})})${e.type.slice(5)}`:e.type+(t&&e.name?` ${e.name}`:"")})(e,{includeName:t})).join(t?", ":","):""}},40840:function(e,t,n){"use strict";n.d(t,{mE:function(){return getAbiItem}});var o=n(57412),i=n(15102),s=n(60480),l=n(96005),c=n(58034);function getAbiItem(e){let t;let{abi:n,args:u=[],name:d}=e,p=(0,i.v)(d,{strict:!1}),f=n.filter(e=>p?"function"===e.type?(0,c.C)(e)===d:"event"===e.type&&(0,l.n)(e)===d:"name"in e&&e.name===d);if(0!==f.length){if(1===f.length)return f[0];for(let e of f){if(!("inputs"in e))continue;if(!u||0===u.length){if(!e.inputs||0===e.inputs.length)return e;continue}if(!e.inputs||0===e.inputs.length||e.inputs.length!==u.length)continue;let n=u.every((t,n)=>{let o="inputs"in e&&e.inputs[n];return!!o&&function isArgOfType(e,t){let n=typeof e,o=t.type;switch(o){case"address":return(0,s.U)(e,{strict:!1});case"bool":return"boolean"===n;case"function":case"string":return"string"===n;default:if("tuple"===o&&"components"in t)return Object.values(t.components).every((t,n)=>isArgOfType(Object.values(e)[n],t));if(/^u?int(8|16|24|32|40|48|56|64|72|80|88|96|104|112|120|128|136|144|152|160|168|176|184|192|200|208|216|224|232|240|248|256)?$/.test(o))return"number"===n||"bigint"===n;if(/^bytes([1-9]|1[0-9]|2[0-9]|3[0-2])?$/.test(o))return"string"===n||e instanceof Uint8Array;if(/[a-z]+[1-9]{0,3}(\[[0-9]{0,}\])+$/.test(o))return Array.isArray(e)&&e.every(e=>isArgOfType(e,{...t,type:o.replace(/(\[[0-9]{0,}\])$/,"")}));return!1}}(t,o)});if(n){if(t&&"inputs"in t&&t.inputs){let n=function getAmbiguousTypes(e,t,n){for(let o in e){let i=e[o],l=t[o];if("tuple"===i.type&&"tuple"===l.type&&"components"in i&&"components"in l)return getAmbiguousTypes(i.components,l.components,n[o]);let c=[i.type,l.type],u=!!(c.includes("address")&&c.includes("bytes20"))||!!(c.includes("address")&&c.includes("string")||c.includes("address")&&c.includes("bytes"))&&(0,s.U)(n[o],{strict:!1});if(u)return c}}(e.inputs,t.inputs,u);if(n)throw new o.S4({abiItem:e,type:n[0]},{abiItem:t,type:n[1]})}t=e}}return t||f[0]}}},45775:function(e,t,n){"use strict";n.d(t,{K:function(){return getAddress},x:function(){return checksumAddress}});var o=n(26087),i=n(11187),s=n(49550),l=n(60480);function checksumAddress(e,t){let n=t?`${t}${e.toLowerCase()}`:e.substring(2).toLowerCase(),o=(0,s.w)((0,i.qX)(n),"bytes"),l=(t?n.substring(`${t}0x`.length):n).split("");for(let e=0;e<40;e+=2)o[e>>1]>>4>=8&&l[e]&&(l[e]=l[e].toUpperCase()),(15&o[e>>1])>=8&&l[e+1]&&(l[e+1]=l[e+1].toUpperCase());return`0x${l.join("")}`}function getAddress(e,t){if(!(0,l.U)(e))throw new o.b({address:e});return checksumAddress(e,t)}},60480:function(e,t,n){"use strict";n.d(t,{U:function(){return isAddress}});let LruMap=class LruMap extends Map{constructor(e){super(),Object.defineProperty(this,"maxSize",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.maxSize=e}set(e,t){return super.set(e,t),this.maxSize&&this.size>this.maxSize&&this.delete(this.keys().next().value),this}};var o=n(45775);let i=/^0x[a-fA-F0-9]{40}$/,s=new LruMap(8192);function isAddress(e,{strict:t=!0}={}){if(s.has(e))return s.get(e);let n=!!i.test(e)&&(e.toLowerCase()===e||!t||(0,o.x)(e)===e);return s.set(e,n),n}},86164:function(e,t,n){"use strict";function defineChain(e){return{formatters:void 0,fees:void 0,serializers:void 0,...e}}n.d(t,{a:function(){return defineChain}})},47864:function(e,t,n){"use strict";n.d(t,{L:function(){return getChainContractAddress}});var o=n(80377);function getChainContractAddress({blockNumber:e,chain:t,contract:n}){let i=t?.contracts?.[n];if(!i)throw new o.mm({chain:t,contract:{name:n}});if(e&&i.blockCreated&&i.blockCreated>e)throw new o.mm({blockNumber:e,chain:t,contract:{name:n,blockCreated:i.blockCreated}});return i.address}},11221:function(e,t,n){"use strict";n.d(t,{q:function(){return createCursor}});var o=n(66238);let i={bytes:new Uint8Array,dataView:new DataView(new ArrayBuffer(0)),position:0,positionReadCount:new Map,recursiveReadCount:0,recursiveReadLimit:1/0,assertReadLimit(){if(this.recursiveReadCount>=this.recursiveReadLimit)throw new o.KD({count:this.recursiveReadCount+1,limit:this.recursiveReadLimit})},assertPosition(e){if(e<0||e>this.bytes.length-1)throw new o.lQ({length:this.bytes.length,position:e})},decrementPosition(e){if(e<0)throw new o.T_({offset:e});let t=this.position-e;this.assertPosition(t),this.position=t},getReadCount(e){return this.positionReadCount.get(e||this.position)||0},incrementPosition(e){if(e<0)throw new o.T_({offset:e});let t=this.position+e;this.assertPosition(t),this.position=t},inspectByte(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectBytes(e,t){let n=t??this.position;return this.assertPosition(n+e-1),this.bytes.subarray(n,n+e)},inspectUint8(e){let t=e??this.position;return this.assertPosition(t),this.bytes[t]},inspectUint16(e){let t=e??this.position;return this.assertPosition(t+1),this.dataView.getUint16(t)},inspectUint24(e){let t=e??this.position;return this.assertPosition(t+2),(this.dataView.getUint16(t)<<8)+this.dataView.getUint8(t+2)},inspectUint32(e){let t=e??this.position;return this.assertPosition(t+3),this.dataView.getUint32(t)},pushByte(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushBytes(e){this.assertPosition(this.position+e.length-1),this.bytes.set(e,this.position),this.position+=e.length},pushUint8(e){this.assertPosition(this.position),this.bytes[this.position]=e,this.position++},pushUint16(e){this.assertPosition(this.position+1),this.dataView.setUint16(this.position,e),this.position+=2},pushUint24(e){this.assertPosition(this.position+2),this.dataView.setUint16(this.position,e>>8),this.dataView.setUint8(this.position+2,255&e),this.position+=3},pushUint32(e){this.assertPosition(this.position+3),this.dataView.setUint32(this.position,e),this.position+=4},readByte(){this.assertReadLimit(),this._touch();let e=this.inspectByte();return this.position++,e},readBytes(e,t){this.assertReadLimit(),this._touch();let n=this.inspectBytes(e);return this.position+=t??e,n},readUint8(){this.assertReadLimit(),this._touch();let e=this.inspectUint8();return this.position+=1,e},readUint16(){this.assertReadLimit(),this._touch();let e=this.inspectUint16();return this.position+=2,e},readUint24(){this.assertReadLimit(),this._touch();let e=this.inspectUint24();return this.position+=3,e},readUint32(){this.assertReadLimit(),this._touch();let e=this.inspectUint32();return this.position+=4,e},setPosition(e){let t=this.position;return this.assertPosition(e),this.position=e,()=>this.position=t},_touch(){if(this.recursiveReadLimit===1/0)return;let e=this.getReadCount();this.positionReadCount.set(this.position,e+1),e>0&&this.recursiveReadCount++}};function createCursor(e,{recursiveReadLimit:t=8192}={}){let n=Object.create(i);return n.bytes=e,n.dataView=new DataView(e.buffer,e.byteOffset,e.byteLength),n.positionReadCount=new Map,n.recursiveReadLimit=t,n}},57040:function(e,t,n){"use strict";function concat(e){return"string"==typeof e[0]?concatHex(e):function(e){let t=0;for(let n of e)t+=n.length;let n=new Uint8Array(t),o=0;for(let t of e)n.set(t,o),o+=t.length;return n}(e)}function concatHex(e){return`0x${e.reduce((e,t)=>e+t.replace("0x",""),"")}`}n.d(t,{SM:function(){return concatHex},zo:function(){return concat}})},15102:function(e,t,n){"use strict";function isHex(e,{strict:t=!0}={}){return!!e&&"string"==typeof e&&(t?/^0x[0-9a-fA-F]*$/.test(e):e.startsWith("0x"))}n.d(t,{v:function(){return isHex}})},61769:function(e,t,n){"use strict";n.d(t,{gc:function(){return padHex},vk:function(){return pad}});var o=n(69760);function pad(e,{dir:t,size:n=32}={}){return"string"==typeof e?padHex(e,{dir:t,size:n}):function(e,{dir:t,size:n=32}={}){if(null===n)return e;if(e.length>n)throw new o.$s({size:e.length,targetSize:n,type:"bytes"});let i=new Uint8Array(n);for(let o=0;o2*n)throw new o.$s({size:Math.ceil(i.length/2),targetSize:n,type:"hex"});return`0x${i["right"===t?"padEnd":"padStart"](2*n,"0")}`}},39135:function(e,t,n){"use strict";n.d(t,{d:function(){return size}});var o=n(15102);function size(e){return(0,o.v)(e,{strict:!1})?Math.ceil((e.length-2)/2):e.length}},3972:function(e,t,n){"use strict";n.d(t,{T4:function(){return sliceBytes},tP:function(){return slice}});var o=n(69760),i=n(15102),s=n(39135);function slice(e,t,n,{strict:o}={}){return(0,i.v)(e,{strict:!1})?function(e,t,n,{strict:o}={}){assertStartOffset(e,t);let i=`0x${e.replace("0x","").slice((t??0)*2,(n??e.length)*2)}`;return o&&assertEndOffset(i,t,n),i}(e,t,n,{strict:o}):sliceBytes(e,t,n,{strict:o})}function assertStartOffset(e,t){if("number"==typeof t&&t>0&&t>(0,s.d)(e)-1)throw new o.mV({offset:t,position:"start",size:(0,s.d)(e)})}function assertEndOffset(e,t,n){if("number"==typeof t&&"number"==typeof n&&(0,s.d)(e)!==n-t)throw new o.mV({offset:n,position:"end",size:(0,s.d)(e)})}function sliceBytes(e,t,n,{strict:o}={}){assertStartOffset(e,t);let i=e.slice(t,n);return o&&assertEndOffset(i,t,n),i}},61836:function(e,t,n){"use strict";function trim(e,{dir:t="left"}={}){let n="string"==typeof e?e.replace("0x",""):e,o=0;for(let e=0;et)throw new o.M6({givenSize:(0,i.d)(e),maxSize:t})}function hexToBigInt(e,t={}){let{signed:n}=t;t.size&&assertSize(e,{size:t.size});let o=BigInt(e);if(!n)return o;let i=(e.length-2)/2,s=(1n<<8n*BigInt(i)-1n)-1n;return o<=s?o:o-BigInt(`0x${"f".padStart(2*i,"f")}`)-1n}function hexToNumber(e,t={}){return Number(hexToBigInt(e,t))}function hexToString(e,t={}){let n=(0,l.nr)(e);return t.size&&(assertSize(n,{size:t.size}),n=(0,s.f)(n,{dir:"right"})),new TextDecoder().decode(n)}},11187:function(e,t,n){"use strict";n.d(t,{O0:function(){return toBytes},nr:function(){return hexToBytes},qX:function(){return stringToBytes}});var o=n(62027),i=n(15102),s=n(61769),l=n(95946),c=n(92106);let u=new TextEncoder;function toBytes(e,t={}){return"number"==typeof e||"bigint"==typeof e?function(e,t){let n=(0,c.eC)(e,t);return hexToBytes(n)}(e,t):"boolean"==typeof e?function(e,t={}){let n=new Uint8Array(1);return(n[0]=Number(e),"number"==typeof t.size)?((0,l.Yf)(n,{size:t.size}),(0,s.vk)(n,{size:t.size})):n}(e,t):(0,i.v)(e)?hexToBytes(e,t):stringToBytes(e,t)}let d={zero:48,nine:57,A:65,F:70,a:97,f:102};function charCodeToBase16(e){return e>=d.zero&&e<=d.nine?e-d.zero:e>=d.A&&e<=d.F?e-(d.A-10):e>=d.a&&e<=d.f?e-(d.a-10):void 0}function hexToBytes(e,t={}){let n=e;t.size&&((0,l.Yf)(n,{size:t.size}),n=(0,s.vk)(n,{dir:"right",size:t.size}));let i=n.slice(2);i.length%2&&(i=`0${i}`);let c=i.length/2,u=new Uint8Array(c);for(let e=0,t=0;et.toString(16).padStart(2,"0"));function toHex(e,t={}){return"number"==typeof e||"bigint"==typeof e?numberToHex(e,t):"string"==typeof e?stringToHex(e,t):"boolean"==typeof e?boolToHex(e,t):bytesToHex(e,t)}function boolToHex(e,t={}){let n=`0x${Number(e)}`;return"number"==typeof t.size?((0,s.Yf)(n,{size:t.size}),(0,i.vk)(n,{size:t.size})):n}function bytesToHex(e,t={}){let n="";for(let t=0;tn||ce.code===i.M_.code):e;return s instanceof o.G?new i.M_({cause:e,message:s.details}):i.M_.nodeMessage.test(n)?new i.M_({cause:e,message:e.details}):i.Hh.nodeMessage.test(n)?new i.Hh({cause:e,maxFeePerGas:t?.maxFeePerGas}):i.G$.nodeMessage.test(n)?new i.G$({cause:e,maxFeePerGas:t?.maxFeePerGas}):i.ZI.nodeMessage.test(n)?new i.ZI({cause:e,nonce:t?.nonce}):i.vU.nodeMessage.test(n)?new i.vU({cause:e,nonce:t?.nonce}):i.se.nodeMessage.test(n)?new i.se({cause:e,nonce:t?.nonce}):i.C_.nodeMessage.test(n)?new i.C_({cause:e}):i.WF.nodeMessage.test(n)?new i.WF({cause:e,gas:t?.gas}):i.dR.nodeMessage.test(n)?new i.dR({cause:e,gas:t?.gas}):i.pZ.nodeMessage.test(n)?new i.pZ({cause:e}):i.cs.nodeMessage.test(n)?new i.cs({cause:e,maxFeePerGas:t?.maxFeePerGas,maxPriorityFeePerGas:t?.maxPriorityFeePerGas}):new i.cj({cause:e})}},43310:function(e,t,n){"use strict";n.d(t,{G:function(){return s},Z:function(){return formatBlock}});var o=n(21366),i=n(6073);function formatBlock(e){let t=e.transactions?.map(e=>"string"==typeof e?e:i.Tr(e));return{...e,baseFeePerGas:e.baseFeePerGas?BigInt(e.baseFeePerGas):null,blobGasUsed:e.blobGasUsed?BigInt(e.blobGasUsed):void 0,difficulty:e.difficulty?BigInt(e.difficulty):void 0,excessBlobGas:e.excessBlobGas?BigInt(e.excessBlobGas):void 0,gasLimit:e.gasLimit?BigInt(e.gasLimit):void 0,gasUsed:e.gasUsed?BigInt(e.gasUsed):void 0,hash:e.hash?e.hash:null,logsBloom:e.logsBloom?e.logsBloom:null,nonce:e.nonce?e.nonce:null,number:e.number?BigInt(e.number):null,size:e.size?BigInt(e.size):void 0,timestamp:e.timestamp?BigInt(e.timestamp):void 0,transactions:t,totalDifficulty:e.totalDifficulty?BigInt(e.totalDifficulty):null}}let s=(0,o.$)("block",formatBlock)},61163:function(e,t,n){"use strict";function extract(e,{format:t}){if(!t)return{};let n={},o=t(e||{});return!function extract_(t){let o=Object.keys(t);for(let i of o)i in e&&(n[i]=e[i]),t[i]&&"object"==typeof t[i]&&!Array.isArray(t[i])&&extract_(t[i])}(o),n}n.d(t,{K:function(){return extract}})},21366:function(e,t,n){"use strict";function defineFormatter(e,t){return({exclude:n,format:o})=>({exclude:n,format:e=>{let i=t(e);if(n)for(let e of n)delete i[e];return{...i,...o(e)}},type:e})}n.d(t,{$:function(){return defineFormatter}})},53992:function(e,t,n){"use strict";function formatLog(e,{args:t,eventName:n}={}){return{...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,logIndex:e.logIndex?Number(e.logIndex):null,transactionHash:e.transactionHash?e.transactionHash:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,...n?{args:t,eventName:n}:{}}}n.d(t,{U:function(){return formatLog}})},6073:function(e,t,n){"use strict";n.d(t,{Tr:function(){return formatTransaction},c8:function(){return s},y_:function(){return l}});var o=n(95946),i=n(21366);let s={"0x0":"legacy","0x1":"eip2930","0x2":"eip1559","0x3":"eip4844"};function formatTransaction(e){let t={...e,blockHash:e.blockHash?e.blockHash:null,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,chainId:e.chainId?(0,o.ly)(e.chainId):void 0,gas:e.gas?BigInt(e.gas):void 0,gasPrice:e.gasPrice?BigInt(e.gasPrice):void 0,maxFeePerBlobGas:e.maxFeePerBlobGas?BigInt(e.maxFeePerBlobGas):void 0,maxFeePerGas:e.maxFeePerGas?BigInt(e.maxFeePerGas):void 0,maxPriorityFeePerGas:e.maxPriorityFeePerGas?BigInt(e.maxPriorityFeePerGas):void 0,nonce:e.nonce?(0,o.ly)(e.nonce):void 0,to:e.to?e.to:null,transactionIndex:e.transactionIndex?Number(e.transactionIndex):null,type:e.type?s[e.type]:void 0,typeHex:e.type?e.type:void 0,value:e.value?BigInt(e.value):void 0,v:e.v?BigInt(e.v):void 0};return t.yParity=(()=>{if(e.yParity)return Number(e.yParity);if("bigint"==typeof t.v){if(0n===t.v||27n===t.v)return 0;if(1n===t.v||28n===t.v)return 1;if(t.v>=35n)return t.v%2n===0n?1:0}})(),"legacy"===t.type&&(delete t.accessList,delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas,delete t.yParity),"eip2930"===t.type&&(delete t.maxFeePerBlobGas,delete t.maxFeePerGas,delete t.maxPriorityFeePerGas),"eip1559"===t.type&&delete t.maxFeePerBlobGas,t}let l=(0,i.$)("transaction",formatTransaction)},30866:function(e,t,n){"use strict";n.d(t,{d:function(){return u},f:function(){return formatTransactionReceipt}});var o=n(95946),i=n(21366),s=n(53992),l=n(6073);let c={"0x0":"reverted","0x1":"success"};function formatTransactionReceipt(e){let t={...e,blockNumber:e.blockNumber?BigInt(e.blockNumber):null,contractAddress:e.contractAddress?e.contractAddress:null,cumulativeGasUsed:e.cumulativeGasUsed?BigInt(e.cumulativeGasUsed):null,effectiveGasPrice:e.effectiveGasPrice?BigInt(e.effectiveGasPrice):null,gasUsed:e.gasUsed?BigInt(e.gasUsed):null,logs:e.logs?e.logs.map(e=>(0,s.U)(e)):null,to:e.to?e.to:null,transactionIndex:e.transactionIndex?(0,o.ly)(e.transactionIndex):null,status:e.status?c[e.status]:null,type:e.type?l.c8[e.type]||e.type:null};return e.blobGasPrice&&(t.blobGasPrice=BigInt(e.blobGasPrice)),e.blobGasUsed&&(t.blobGasUsed=BigInt(e.blobGasUsed)),t}let u=(0,i.$)("transactionReceipt",formatTransactionReceipt)},74688:function(e,t,n){"use strict";n.d(t,{iy:function(){return l},tG:function(){return formatTransactionRequest}});var o=n(92106),i=n(21366);let s={legacy:"0x0",eip2930:"0x1",eip1559:"0x2",eip4844:"0x3"};function formatTransactionRequest(e){let t={...e};return void 0!==e.blobs&&"string"!=typeof e.blobs[0]&&(t.blobs=e.blobs.map(e=>(0,o.ci)(e))),void 0!==e.gas&&(t.gas=(0,o.eC)(e.gas)),void 0!==e.gasPrice&&(t.gasPrice=(0,o.eC)(e.gasPrice)),void 0!==e.maxFeePerBlobGas&&(t.maxFeePerBlobGas=(0,o.eC)(e.maxFeePerBlobGas)),void 0!==e.maxFeePerGas&&(t.maxFeePerGas=(0,o.eC)(e.maxFeePerGas)),void 0!==e.maxPriorityFeePerGas&&(t.maxPriorityFeePerGas=(0,o.eC)(e.maxPriorityFeePerGas)),void 0!==e.nonce&&(t.nonce=(0,o.eC)(e.nonce)),void 0!==e.type&&(t.type=s[e.type]),void 0!==e.value&&(t.value=(0,o.eC)(e.value)),t}let l=(0,i.$)("transactionRequest",formatTransactionRequest)},49550:function(e,t,n){"use strict";n.d(t,{w:function(){return keccak256}});var o=n(22250),i=n(15102),s=n(11187),l=n(92106);function keccak256(e,t){let n=(0,o.fr)((0,i.v)(e,{strict:!1})?(0,s.O0)(e):e);return"bytes"===(t||"hex")?n:(0,l.NC)(n)}},96005:function(e,t,n){"use strict";n.d(t,{n:function(){return i}});var o=n(67684);let i=o.r},58034:function(e,t,n){"use strict";n.d(t,{C:function(){return toFunctionSelector}});var o=n(3972),i=n(67684);let toFunctionSelector=e=>(0,o.tP)((0,i.r)(e),0,4)},67684:function(e,t,n){"use strict";n.d(t,{r:function(){return toSignatureHash}});var o=n(11187),i=n(49550);let hash=e=>(0,i.w)((0,o.O0)(e)),s=/^tuple(?(\[(\d*)\])*)$/;function formatAbiParameters(e){let t="",n=e.length;for(let o=0;o{var t;let n="string"==typeof e?e:"function"===(t=e).type?`function ${t.name}(${formatAbiParameters(t.inputs)})${t.stateMutability&&"nonpayable"!==t.stateMutability?` ${t.stateMutability}`:""}${t.outputs.length?` returns (${formatAbiParameters(t.outputs)})`:""}`:"event"===t.type?`event ${t.name}(${formatAbiParameters(t.inputs)})`:"error"===t.type?`error ${t.name}(${formatAbiParameters(t.inputs)})`:"constructor"===t.type?`constructor(${formatAbiParameters(t.inputs)})${"payable"===t.stateMutability?" payable":""}`:"fallback"===t.type?"fallback()":"receive() external payable";return function(e){let t=!0,n="",o=0,i="",s=!1;for(let l=0;l{let t=getScheduler();flush();let n=t.map(({args:e})=>e);0!==n.length&&e(n).then(e=>{s&&Array.isArray(e)&&e.sort(s);for(let n=0;n{for(let n=0;no.delete(t),getBatchedArgs=()=>getScheduler().map(({args:e})=>e),getScheduler=()=>o.get(t)||[],setScheduler=e=>o.set(t,[...getScheduler(),e]);return{flush,async schedule(e){let t={},o=new Promise((e,n)=>{t.resolve=e,t.reject=n}),s=n?.([...getBatchedArgs(),e]);s&&exec();let l=getScheduler().length>0;return l?setScheduler({args:e,pendingPromise:t}):(setScheduler({args:e,pendingPromise:t}),setTimeout(exec,i)),o}}}},7760:function(e,t,n){"use strict";n.d(t,{J:function(){return withRetry}});var o=n(62914);function withRetry(e,{delay:t=100,retryCount:n=2,shouldRetry:i=()=>!0}={}){return new Promise((s,l)=>{let attemptRetry=async({count:c=0}={})=>{let retry=async({error:e})=>{let n="function"==typeof t?t({count:c,error:e}):t;n&&await (0,o.D)(n),attemptRetry({count:c+1})};try{let t=await e();s(t)}catch(e){if(cJSON.stringify(e,(e,n)=>{let o="bigint"==typeof n?n.toString():n;return"function"==typeof t?t(e,o):o},n)},47531:function(e,t,n){"use strict";n.d(t,{F:function(){return assertRequest}});var o=n(14503),i=n(26087),s=n(26445),l=n(33639),c=n(60480);function assertRequest(e){let{account:t,gasPrice:n,maxFeePerGas:u,maxPriorityFeePerGas:d,to:p}=e,f=t?(0,o.T)(t):void 0;if(f&&!(0,c.U)(f.address))throw new i.b({address:f.address});if(p&&!(0,c.U)(p))throw new i.b({address:p});if(void 0!==n&&(void 0!==u||void 0!==d))throw new l.xY;if(u&&u>2n**256n-1n)throw new s.Hh({maxFeePerGas:u});if(d&&u&&d>u)throw new s.cs({maxFeePerGas:u,maxPriorityFeePerGas:d})}},82994:function(e,t,n){"use strict";n.d(t,{l:function(){return getTransactionType}});var o=n(33639);function getTransactionType(e){if(e.type)return e.type;if(void 0!==e.blobs||void 0!==e.blobVersionedHashes||void 0!==e.maxFeePerBlobGas||void 0!==e.sidecars)return"eip4844";if(void 0!==e.maxFeePerGas||void 0!==e.maxPriorityFeePerGas)return"eip1559";if(void 0!==e.gasPrice)return void 0!==e.accessList?"eip2930":"legacy";throw new o.j3({transaction:e})}},39625:function(e,t,n){"use strict";n.d(t,{d:function(){return formatEther}});var o=n(84192),i=n(15229);function formatEther(e,t="wei"){return(0,i.b)(e,o.ez[t])}},67795:function(e,t,n){"use strict";n.d(t,{o:function(){return formatGwei}});var o=n(84192),i=n(15229);function formatGwei(e,t="wei"){return(0,i.b)(e,o.Zn[t])}},15229:function(e,t,n){"use strict";function formatUnits(e,t){let n=e.toString(),o=n.startsWith("-");o&&(n=n.slice(1));let[i,s]=[(n=n.padStart(t,"0")).slice(0,n.length-t),n.slice(n.length-t)];return s=s.replace(/(0+)$/,""),`${o?"-":""}${i||"0"}${s?`.${s}`:""}`}n.d(t,{b:function(){return formatUnits}})},62914:function(e,t,n){"use strict";async function wait(e){return new Promise(t=>setTimeout(t,e))}n.d(t,{D:function(){return wait}})},99931:function(e,t,n){"use strict";n.d(t,{V:function(){return s},F:function(){return WagmiProvider}});var o=n(67294);let i=!1;async function reconnect(e,t={}){let n;if(i)return[];i=!0,e.setState(e=>({...e,status:e.current?"reconnecting":"connecting"}));let o=[];if(t.connectors?.length)for(let n of t.connectors){let t;t="function"==typeof n?e._internal.connectors.setup(n):n,o.push(t)}else o.push(...e.connectors);try{n=await e.storage?.getItem("recentConnectorId")}catch{}let s={};for(let[,t]of e.state.connections)s[t.connector.id]=1;n&&(s[n]=0);let l=Object.keys(s).length>0?[...o].sort((e,t)=>(s[e.id]??10)-(s[t.id]??10)):o,c=!1,u=[],d=[];for(let t of l){let n=await t.getProvider();if(!n||d.some(e=>e===n))continue;let o=await t.isAuthorized();if(!o)continue;let i=await t.connect({isReconnecting:!0}).catch(()=>null);i&&(t.emitter.off("connect",e._internal.events.connect),t.emitter.on("change",e._internal.events.change),t.emitter.on("disconnect",e._internal.events.disconnect),e.setState(e=>{let n=new Map(c?e.connections:new Map).set(t.uid,{accounts:i.accounts,chainId:i.chainId,connector:t});return{...e,current:c?e.current:t.uid,connections:n}}),u.push({accounts:i.accounts,chainId:i.chainId,connector:t}),d.push(n),c=!0)}return("reconnecting"===e.state.status||"connecting"===e.state.status)&&(c?e.setState(e=>({...e,status:"connected"})):e.setState(e=>({...e,connections:new Map,current:void 0,status:"disconnected"}))),i=!1,u}function Hydrate(e){let{children:t,config:n,initialState:i,reconnectOnMount:s=!0}=e,{onMount:l}=function(e,t){let{initialState:n,reconnectOnMount:o}=t;return n&&!e._internal.store.persist.hasHydrated()&&e.setState({...n,connections:o?n.connections:new Map,status:o?"reconnecting":"disconnected"}),{async onMount(){if(e._internal.ssr){await e._internal.store.persist.rehydrate();let t=e._internal.mipd?.getProviders().map(e._internal.connectors.providerDetailToConnector).map(e._internal.connectors.setup);e._internal.connectors.setState(e=>[...e,...t??[]])}o?reconnect(e):e.storage&&e.setState(e=>({...e,connections:new Map}))}}}(n,{initialState:i,reconnectOnMount:s});n._internal.ssr||l();let c=(0,o.useRef)(!0);return(0,o.useEffect)(()=>{if(c.current&&n._internal.ssr)return l(),()=>{c.current=!1}},[]),t}let s=(0,o.createContext)(void 0);function WagmiProvider(e){let{children:t,config:n}=e;return(0,o.createElement)(Hydrate,e,(0,o.createElement)(s.Provider,{value:n},t))}},92321:function(e,t,n){"use strict";n.d(t,{m:function(){return useAccount}});var o=n(33397),i=n(52425),s=n(37122),l=n(74751),c=n(67294),u=n(52798);let isPlainObject=e=>"object"==typeof e&&!Array.isArray(e);function useAccount(e={}){let t=(0,s.Z)(e);return function(e,t,n=t,o=l.v){let i=(0,c.useRef)([]),s=(0,u.useSyncExternalStoreWithSelector)(e,t,n,e=>e,(e,t)=>{if(isPlainObject(e)&&isPlainObject(t)&&i.current.length){for(let n of i.current){let i=o(e[n],t[n]);if(!i)return!1}return!0}return o(e,t)});if(isPlainObject(s)){let e={...s};return Object.defineProperties(e,Object.entries(e).reduce((e,[t,n])=>({...e,[t]:{configurable:!1,enumerable:!0,get:()=>(i.current.includes(t)||i.current.push(t),n)}}),{})),e}return s}(e=>(0,o.u)(t,{onChange:e}),()=>(0,i.D)(t))}},37122:function(e,t,n){"use strict";n.d(t,{Z:function(){return useConfig}});var o=n(67294),i=n(99931),s=n(7066);let getVersion=()=>"wagmi@2.5.11";let BaseError=class BaseError extends s.G{constructor(){super(...arguments),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WagmiError"})}get docsBaseUrl(){return"https://wagmi.sh/react"}get version(){return getVersion()}};let WagmiProviderNotFoundError=class WagmiProviderNotFoundError extends BaseError{constructor(){super("`useConfig` must be used within `WagmiProvider`.",{docsPath:"https://wagmi.sh/react/api/WagmiProvider"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"WagmiProviderNotFoundError"})}};function useConfig(e={}){let t=e.config??(0,o.useContext)(i.V);if(!t)throw new WagmiProviderNotFoundError;return t}},55585:function(e,t,n){"use strict";n.d(t,{Q:function(){return useSignMessage}});var o=n(98029),i=n(14503),s=n(62027);let AccountNotFoundError=class AccountNotFoundError extends s.G{constructor({docsPath:e}={}){super("Could not find an Account to execute with this Action.\nPlease provide an Account with the `account` argument on the Action, or by supplying an `account` to the WalletClient.",{docsPath:e,docsSlug:"account"}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:"AccountNotFoundError"})}};var l=n(92106);async function signMessage(e,{account:t=e.account,message:n}){if(!t)throw new AccountNotFoundError({docsPath:"/docs/actions/wallet/signMessage"});let o=(0,i.T)(t);if("local"===o.type)return o.signMessage({message:n});let s="string"==typeof n?(0,l.$G)(n):n.raw instanceof Uint8Array?(0,l.NC)(n.raw):n.raw;return e.request({method:"personal_sign",params:[s,o.address]},{retryCount:0})}var c=n(81946),u=n(16189),d=n(91628),p=n(87675);async function getConnectorClient(e,t={}){let n;if(t.connector){let{connector:e}=t,[o,i]=await Promise.all([e.getAccounts(),e.getChainId()]);n={accounts:o,chainId:i,connector:e}}else n=e.state.connections.get(e.state.current);if(!n)throw new p.aH;let o=t.chainId??n.chainId,s=n.connector;if(s.getClient)return s.getClient({chainId:o});let l=(0,i.T)(t.account??n.accounts[0]),c=e.chains.find(e=>e.id===o),f=await n.connector.getProvider({chainId:o});if(t.account&&!n.accounts.includes(l.address))throw new p.JK({address:l.address,connector:s});return(0,u.e)({account:l,chain:c,name:"Connector Client",transport:e=>(function(e,t={}){let{key:n="custom",name:o="Custom Provider",retryDelay:i}=t;return({retryCount:s})=>(0,d.q)({key:n,name:o,request:e.request.bind(e),retryCount:t.retryCount??s,retryDelay:i,type:"custom"})})(f)({...e,retryCount:0})})}async function signMessage_signMessage(e,t){let n;let{account:o,connector:i,...s}=t;n="object"==typeof o&&"local"===o.type?e.getClient():await getConnectorClient(e,{account:o,connector:i});let l=(0,c.s)(n,signMessage,"signMessage");return l({...s,...o?{account:o}:{}})}var f=n(37122);function useSignMessage(e={}){let{mutation:t}=e,n=(0,f.Z)(e),{mutate:i,mutateAsync:s,...l}=(0,o.D)({...t,mutationFn:e=>signMessage_signMessage(n,e),mutationKey:["signMessage"]});return{...l,signMessage:i,signMessageAsync:s}}}},function(e){var __webpack_exec__=function(t){return e(e.s=t)};e.O(0,[9774,179],function(){return __webpack_exec__(6840),__webpack_exec__(59974)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/dist/dashboard/_next/static/chunks/pages/_error-e4216aab802f5810.js b/dist/controlpanel/_next/static/chunks/pages/_error-e4216aab802f5810.js similarity index 100% rename from dist/dashboard/_next/static/chunks/pages/_error-e4216aab802f5810.js rename to dist/controlpanel/_next/static/chunks/pages/_error-e4216aab802f5810.js diff --git a/dist/controlpanel/_next/static/chunks/pages/index-68352c78cef0caeb.js b/dist/controlpanel/_next/static/chunks/pages/index-68352c78cef0caeb.js new file mode 100644 index 000000000..fef030a2a --- /dev/null +++ b/dist/controlpanel/_next/static/chunks/pages/index-68352c78cef0caeb.js @@ -0,0 +1 @@ +(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5405],{48312:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return t(87540)}])},87540:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return Home}});var a,r,l=t(85893),s=t(9008),o=t.n(s),i=t(25675),d=t.n(i),c={src:"/_next/static/media/logo-nodes.249ea9ed.svg",height:283,width:425,blurWidth:0,blurHeight:0},u=t(30378),h=t.n(u),x=t(89192),Navigation=()=>(0,l.jsxs)("div",{className:h().navbarParent,children:[(0,l.jsx)("div",{className:h().logoWrapper,children:(0,l.jsx)(d(),{src:c,alt:"Ocean Node Logo",height:70})}),(0,l.jsx)("div",{className:h().connectButtonWrapper,children:(0,l.jsx)(x.NL,{})})]}),j=t(94428),m=t.n(j),components_Footer=()=>{let e=new Date().getFullYear();return(0,l.jsxs)("div",{className:m().footerContainer,children:[(0,l.jsxs)("p",{children:["@ ",e,", Ocean Nodes"]}),(0,l.jsxs)("div",{className:m().footerLinks,children:[(0,l.jsx)("a",{href:"https://oceanprotocol.com/",target:"_blank",children:"Website"}),(0,l.jsx)("a",{href:"https://github.com/oceanprotocol/ocean-node",target:"_blank",children:"GitHub"}),(0,l.jsx)("a",{href:"https://discord.com/invite/TnXjkR5",target:"_blank",children:"Discord"})]})]})},p=t(67294),v=t(73301),f=t.n(v),_=t(59581),b=t(46085),g=t.n(b),N=t(69417),y=t(94054),C=t(50135),S=t(33841),Z=t(30638),I=t(23599),w=t(10586),P=t(50720),T=t(67971),k=t(27484),E=t.n(k),A={src:"/_next/static/media/download.0a4876ec.svg",height:30,width:30,blurWidth:0,blurHeight:0};function DownloadButton(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[r,s]=(0,p.useState)(E()()),[o,i]=(0,p.useState)(E()()),[c,u]=(0,p.useState)(""),[h,x]=(0,p.useState)(""),[j,m]=(0,p.useState)(""),{signature:v,expiryTimestamp:f}=(0,_.O)(),b=(0,p.useCallback)(async()=>{let e=r?"&startTime=".concat(r.toISOString()):"",n=o?"&endTime=".concat(o.toISOString()):"",t=c?"&maxLogs=".concat(c):"",l=h&&"all"!==h?"&moduleName=".concat(h):"",s=j&&"all"!==j?'&level="'.concat(j,'"'):"";a(!0);try{if(!f||!v){console.error("Missing expiryTimestamp or signature");return}let r=await fetch("/logs?".concat(e).concat(n).concat(t).concat(l).concat(s),{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({expiryTimestamp:f,signature:v})}),o=await r.json();if(o){let e="data:application/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(o)),n=document.createElement("a");n.setAttribute("href",e),n.setAttribute("download","LogsData.json"),document.body.appendChild(n),n.click(),n.remove()}a(!1)}catch(e){console.error(e),a(!1)}},[r,o,c,h,j]);return(0,l.jsxs)("div",{className:g().column,children:[(0,l.jsx)(N.Z,{type:"button",onClick:()=>n(!e),children:"Download Logs"}),e&&(0,l.jsxs)("div",{className:g().filters,children:[(0,l.jsxs)(P._,{dateAdapter:w.y,children:[(0,l.jsx)(y.Z,{fullWidth:!0,margin:"normal",children:(0,l.jsx)(T.x,{label:"Start Date",value:r,onChange:e=>s(e)})}),(0,l.jsx)(y.Z,{fullWidth:!0,margin:"normal",children:(0,l.jsx)(T.x,{label:"End Date",value:o,onChange:e=>i(e)})})]}),(0,l.jsx)(C.Z,{label:"Max Logs",type:"number",value:c,onChange:e=>u(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),(0,l.jsxs)(y.Z,{fullWidth:!0,margin:"normal",children:[(0,l.jsx)(S.Z,{id:"select-module-name-label",children:"Module Name"}),(0,l.jsxs)(Z.Z,{labelId:"select-module-name-label",label:"Module Name",id:"module-name",value:h,onChange:e=>x(e.target.value),children:[(0,l.jsx)(I.Z,{value:"all",children:"all"}),(0,l.jsx)(I.Z,{value:"http",children:"http"}),(0,l.jsx)(I.Z,{value:"p2p",children:"p2p"}),(0,l.jsx)(I.Z,{value:"indexer",children:"indexer"}),(0,l.jsx)(I.Z,{value:"reindexer",children:"reindexer"}),(0,l.jsx)(I.Z,{value:"provider",children:"provider"}),(0,l.jsx)(I.Z,{value:"database",children:"database"}),(0,l.jsx)(I.Z,{value:"config",children:"config"}),(0,l.jsx)(I.Z,{value:"core",children:"core"}),(0,l.jsx)(I.Z,{value:"OceanNode",children:"OceanNode"})]})]}),(0,l.jsxs)(y.Z,{fullWidth:!0,margin:"normal",children:[(0,l.jsx)(S.Z,{id:"select-level-label",children:"Level"}),(0,l.jsxs)(Z.Z,{labelId:"select-level-label",label:"Level",id:"level",value:j,onChange:e=>m(e.target.value),children:[(0,l.jsx)(I.Z,{value:"all",children:"all"}),(0,l.jsx)(I.Z,{value:"error",children:"error"}),(0,l.jsx)(I.Z,{value:"warn",children:"warn"}),(0,l.jsx)(I.Z,{value:"info",children:"info"}),(0,l.jsx)(I.Z,{value:"http",children:"http"}),(0,l.jsx)(I.Z,{value:"verbose",children:"verbose"}),(0,l.jsx)(I.Z,{value:"debug",children:"debug"}),(0,l.jsx)(I.Z,{value:"silly",children:"silly"})]})]}),(0,l.jsx)(N.Z,{type:"button",onClick:b,variant:"outlined",startIcon:(0,l.jsx)(d(),{src:A,alt:"download button",width:24,height:24}),disabled:t,children:"Download"})]})]})}function StopNode(){let[e,n]=(0,p.useState)(!1),{signature:t,expiryTimestamp:a}=(0,_.O)();async function stopNode(){n(!0);try{a&&t&&await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"stopNode",expiryTimestamp:a,signature:t})}),alert("The node has been stopped. The control panel will no longer be displayed."),window.location.reload()}catch(e){console.error("error",e)}finally{n(!1)}}return(0,l.jsx)(N.Z,{onClick:stopNode,variant:"outlined",color:"error",children:e?(0,l.jsx)(()=>(0,l.jsx)("span",{className:g().loader}),{}):(0,l.jsx)("div",{children:"Stop Node"})})}var O=t(92321),D=t(31536);function NetworkSelector(e){let{chainId:n,setChainId:t}=e,{networks:a}=(0,_.O)();return(0,l.jsxs)(y.Z,{fullWidth:!0,margin:"normal",variant:"outlined",children:[(0,l.jsx)(S.Z,{id:"network-select-label",children:"Network"}),(0,l.jsx)(Z.Z,{labelId:"network-select-label",id:"network-select",value:n||"",onChange:e=>t(e.target.value),label:"Network",children:Object.values(a).map(e=>(0,l.jsx)(I.Z,{value:e.chainId.toString(),children:e.network},e.chainId))})]})}(a=r||(r={})).DELIVERED="DELIVERED",a.PENDING="PENDING",a.FAILURE="FAILURE",a.SUCCESS="SUCCESS";let checkJobPool=async function(e){try{let n=await fetch("/api/services/jobs/"+(e||""),{headers:{Accept:"application/json","Content-Type":"application/json"},method:"GET"}),t=await n.json();return t.jobs}catch(e){console.error(e)}return[]};function getSeverityFromStatus(e){switch(e){case r.DELIVERED:return"info";case r.SUCCESS:return"success";case r.PENDING:return"warning";default:return"error"}}function isJobDone(e){return[r.SUCCESS,r.FAILURE].includes(e)}var R=t(8434);function JobStatusPanel(e){let n=e.job?function(e){switch(e){case r.DELIVERED:return"DodgerBlue";case r.PENDING:return"LightSlateGrey";case r.SUCCESS:return"ForestGreen";case r.FAILURE:return"OrangeRed";default:return"black"}}(e.job.status):"black";return(0,l.jsx)("div",{children:null!==e.job&&(0,l.jsxs)(R.Z,{sx:{bgcolor:n},variant:"filled",severity:e.severity,onClose:()=>{},children:["Job with id ",(0,l.jsx)("strong",{children:e.job.jobId})," has status"," ",(0,l.jsx)("strong",{children:e.job.status})]})})}var W=t(602);function ReIndexChain(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[s,o]=(0,p.useState)(),{signature:i,expiryTimestamp:d}=(0,_.O)(),[c,u]=(0,p.useState)("info"),[h,x]=(0,p.useState)(null),j=null;async function reIndex(){a(!0);try{if(d&&i&&s){let e=await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"reindexChain",chainId:s,expiryTimestamp:d,signature:i})});if(200===e.status){let t=await e.json();u(t.status===r.DELIVERED?"info":"error"),x(t),alert("Chain with ID ".concat(s," is now being reindexed."));let a=!1;j=setInterval(async()=>{let e=await checkJobPool(t.jobId);if(1===e.length){let n=e[0];u(getSeverityFromStatus(n.status)),a=isJobDone(n.status),x(n)}else x(null)},3e3),a&&j&&(0,W.clearInterval)(j),n(!1)}else alert("Error reindexing chain. Please try again.")}}catch(e){console.error("error",e)}finally{a(!1)}}return(0,l.jsxs)("div",{className:g().column,children:[(0,l.jsx)(N.Z,{type:"button",onClick:()=>n(!e),children:"ReIndex Chain"}),e&&(0,l.jsxs)("div",{className:g().filters,children:[(0,l.jsx)(NetworkSelector,{chainId:s,setChainId:o}),(0,l.jsx)(N.Z,{type:"button",onClick:reIndex,variant:"outlined",disabled:t,children:"ReIndex Chain"})]}),(0,l.jsx)(JobStatusPanel,{job:h,severity:c})]})}function ReIndexTransaction(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[s,o]=(0,p.useState)(),[i,d]=(0,p.useState)(),{signature:c,expiryTimestamp:u}=(0,_.O)(),[h,x]=(0,p.useState)("info"),[j,m]=(0,p.useState)(null),v=null;async function reIndexTx(){a(!0);try{if(u&&c&&s&&i){let e=await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"reindexTx",chainId:s,txId:i,expiryTimestamp:u,signature:c})});if(200===e.status){let t=await e.json();x(t.status===r.DELIVERED?"info":"error"),m(t),alert("Transaction with TX ID ".concat(i," on chain ").concat(s," is now being reindexed."));let a=!1;v=setInterval(async()=>{let e=await checkJobPool(t.jobId);if(1===e.length){let n=e[0];x(getSeverityFromStatus(n.status)),a=isJobDone(n.status),m(n)}else m(null)},3e3),a&&v&&clearInterval(v),n(!1)}else alert("Error reindexing transaction. Please try again.")}}catch(e){console.error("error",e)}finally{a(!1)}}return(0,l.jsxs)("div",{className:g().column,children:[(0,l.jsx)(N.Z,{type:"button",onClick:()=>n(!e),children:"ReIndex Transaction"}),e&&(0,l.jsxs)("div",{className:g().filters,children:[(0,l.jsx)(NetworkSelector,{chainId:s,setChainId:o}),(0,l.jsx)(C.Z,{label:"Transaction ID",value:i,onChange:e=>d(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),(0,l.jsx)(N.Z,{type:"button",onClick:reIndexTx,variant:"outlined",disabled:t,children:"ReIndex Transaction"})]}),(0,l.jsx)(JobStatusPanel,{job:j,severity:h})]})}var L=t(58703),F=t(64666),B=t(37645),J=t(6514),H=t(58951),U=t(31425);function TransferFees(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[r,s]=(0,p.useState)(""),[o,i]=(0,p.useState)(""),[d,c]=(0,p.useState)(""),[u,h]=(0,p.useState)(""),{signature:x,expiryTimestamp:j}=(0,_.O)(),[m,v]=(0,p.useState)(null),[f,b]=(0,p.useState)(!1),[y,S]=(0,p.useState)(!1),[Z,I]=(0,p.useState)(null),[w,P]=(0,p.useState)(null),validateInputs=()=>r&&o&&d&&u?isNaN(Number(d))?(v("Token amount must be a number."),!1):(v(null),!0):(v("All fields are required."),!1);async function transferFees(){if(validateInputs()){a(!0);try{let e=await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"collectFees",chainId:r,tokenAddress:o,tokenAmount:d,destinationAddress:u,expiryTimestamp:j,signature:x})});if(200===e.status){let t=await e.json();(null==t?void 0:t.tx)&&(null==t?void 0:t.message)&&(P(t.tx),I(t.message),S(!0),b(!0),n(!1))}else v(e.statusText?e.statusText:"Error transferring fees. Please try again.")}catch(e){console.error("error",e),v("Error transferring fees. Please try again.")}finally{a(!1)}}}let handleDialogClose=()=>{S(!1)};return(0,l.jsxs)("div",{className:g().column,children:[(0,l.jsx)(N.Z,{variant:"text",onClick:()=>n(!e),children:"Transfer Fees"}),e&&(0,l.jsxs)("div",{className:g().filters,children:[(0,l.jsx)(C.Z,{label:"Chain ID",value:r,onChange:e=>s(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined",type:"number"}),(0,l.jsx)(C.Z,{label:"Token Address",value:o,onChange:e=>i(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),(0,l.jsx)(C.Z,{label:"Token Amount",value:d,onChange:e=>c(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined",type:"number"}),(0,l.jsx)(C.Z,{label:"Destination Address",value:u,onChange:e=>h(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),m&&(0,l.jsx)(R.Z,{severity:"error",children:m}),(0,l.jsx)(N.Z,{type:"button",onClick:transferFees,variant:"outlined",disabled:t,fullWidth:!0,children:"Transfer Fees"})]}),(0,l.jsx)(L.Z,{open:f,autoHideDuration:6e3,onClose:()=>b(!1),message:"Fees successfully transferred!"}),(0,l.jsxs)(F.Z,{open:y,onClose:handleDialogClose,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[(0,l.jsx)(B.Z,{id:"alert-dialog-title",children:"Transfer Successful"}),(0,l.jsx)(J.Z,{children:(0,l.jsx)(H.Z,{id:"alert-dialog-description",children:Z&&(0,l.jsxs)("span",{children:[Z," ",(0,l.jsx)("br",{}),(0,l.jsx)("strong",{style:{marginTop:"10px",display:"block"},children:"Transaction Hash:"})," ",w]})})}),(0,l.jsx)(U.Z,{children:(0,l.jsx)(N.Z,{onClick:handleDialogClose,autoFocus:!0,children:"Close"})})]})]})}function AdminActions(){let{generateSignature:e,signature:n,validTimestamp:t,admin:a}=(0,_.O)(),{isConnected:r}=(0,O.m)();return(0,l.jsxs)("div",{className:g().root,children:[(0,l.jsx)("div",{className:g().title,children:"ADMIN ACTIONS"}),!r&&(0,l.jsx)(x.NL,{}),r&&!a&&(0,l.jsx)("div",{className:g().unauthorised,children:"Your account does not have admin access"}),(!n||!t)&&r&&a&&(0,l.jsx)("button",{type:"button",className:g().unlockButton,onClick:e,children:"Unlock"}),r&&n&&t&&r&&a&&(0,l.jsxs)(D.Z,{spacing:2,direction:"column",children:[(0,l.jsx)(DownloadButton,{}),(0,l.jsx)(ReIndexChain,{}),(0,l.jsx)(ReIndexTransaction,{}),(0,l.jsx)(TransferFees,{}),(0,l.jsx)(StopNode,{})]})]})}var Q=t(17044),G=t.n(Q);function Spinner(){return(0,l.jsx)("span",{className:G().loader})}var M=t(85108),q=t.n(M),V=t(75368),X=t.n(V),K={src:"/_next/static/media/copy.63713a04.svg",height:16,width:15,blurWidth:0,blurHeight:0};function Copy(e){let{text:n}=e,[t,a]=(0,p.useState)(!1),copyToClipboard=e=>{let n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)};return(0,p.useEffect)(()=>{if(!t)return;let e=setTimeout(()=>{a(!1)},1e3);return()=>clearTimeout(e)},[t]),(0,l.jsxs)("div",{className:X().action,onClick:()=>{copyToClipboard(n),a(!0)},children:[(0,l.jsx)(d(),{src:K,alt:"icont-copy",className:X().icon}),t&&(0,l.jsx)("div",{className:X().feedback,children:"Copied!"})]})}var z=t(15861);function NodePeers(){let[e,n]=(0,p.useState)([]),[t,a]=(0,p.useState)(!0),[r,s]=(0,p.useState)(!1),fetchNodePeers=async()=>{a(!0);try{let e=await fetch("/getOceanPeers",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"GET"}),t=await e.json();n(t)}catch(e){console.error("error",e)}finally{a(!1)}};(0,p.useEffect)(()=>{fetchNodePeers();let e=setInterval(()=>{fetchNodePeers()},12e4);return()=>clearInterval(e)},[]);let o=r?e:e.slice(0,10);return(0,l.jsxs)("div",{className:q().nodes,children:[(0,l.jsxs)("div",{className:q().title24,children:["Connected Nodes (Total ",e.length,")"]}),t?(0,l.jsx)("div",{className:q().loaderContainer,children:(0,l.jsx)(Spinner,{})}):(0,l.jsxs)(l.Fragment,{children:[e.length>0?o.map(e=>(0,l.jsxs)("div",{className:q().nodeAddress,children:[e," ",(0,l.jsx)(Copy,{text:e})]},e)):(0,l.jsx)(z.Z,{variant:"body1",children:"There are no nodes connected"}),!r&&e.length>10&&(0,l.jsx)(N.Z,{onClick:()=>s(!0),variant:"text",color:"primary",children:"Show All"}),r&&e.length>10&&(0,l.jsx)(N.Z,{onClick:()=>s(!1),variant:"text",color:"primary",children:"Show Less"})]})]})}function SupportedStorage(e){let{data:n}=e;return(0,l.jsxs)("div",{className:f().indexer,children:[(0,l.jsx)("div",{className:f().title29,children:"SUPPORTED STORAGE"}),(0,l.jsxs)("div",{className:f().provider,children:[(0,l.jsxs)("div",{className:f().providerRow,children:[(0,l.jsx)("div",{className:f().providerTitle,children:(0,l.jsx)("b",{children:"arwave:"})}),(0,l.jsxs)("div",{children:[null==n?void 0:n.supportedStorage.arwave.toString()," "]})]}),(0,l.jsxs)("div",{className:f().providerRow,children:[(0,l.jsx)("div",{className:f().providerTitle,children:(0,l.jsx)("b",{children:"ipfs:"})}),(0,l.jsxs)("div",{children:[null==n?void 0:n.supportedStorage.ipfs.toString()," "]})]}),(0,l.jsxs)("div",{className:f().providerRow,children:[(0,l.jsx)("div",{className:f().providerTitle,children:(0,l.jsx)("b",{children:"url:"})}),(0,l.jsxs)("div",{children:[null==n?void 0:n.supportedStorage.url.toString()," "]})]})]})]})}function SupportedNetworks_SupportedStorage(e){let{data:n}=e;return(0,l.jsxs)("div",{className:f().indexer,children:[(0,l.jsx)("div",{className:f().title29,children:"SUPPORTED Networks"}),(0,l.jsx)("div",{className:f().provider,children:null==n?void 0:n.provider.map(e=>(0,l.jsxs)("div",{className:f().providerRow,children:[(0,l.jsx)("div",{className:f().providerTitle,children:(0,l.jsx)("b",{children:e.chainId})}),(0,l.jsxs)("div",{children:[e.network," "]})]}))})]})}var Y=t(93967),$=t.n(Y),ee=t(72882),en=t(7906),et=t(53184),ea=t(53816),er=t(53252),el=t(295),es=t(27061);function IndexQueue(){let[e,n]=(0,p.useState)([]),{networks:t}=(0,_.O)(),[a,r]=(0,p.useState)(!1),s=null;return(0,p.useEffect)(()=>{let fetchQueue=()=>{fetch("/api/services/indexQueue").then(e=>{400===e.status?(console.warn("Cannot fetch queue: Node is not running Indexer"),r(!0),s&&clearInterval(s)):e.json().then(e=>{let a=e.queue.map(e=>{let n=t.find(n=>n.chainId===e.chainId);return{txId:e.txId,chainId:e.chainId,chain:n?n.network:"Unknown Network"}});n(a)})}).catch(e=>{console.error("Error fetching queue:",e)})};fetchQueue();let e=1e4;return es.env.INDEXER_INTERVAL&&(e=Number(es.env.INDEXER_INTERVAL)),s=setInterval(fetchQueue,e),()=>{s&&clearInterval(s)}},[]),(0,l.jsxs)("div",{children:[(0,l.jsx)("div",{className:f().title24,style:{paddingTop:"55px",paddingBottom:"55px"},children:"Indexing Queue"}),e.length>0?(0,l.jsx)(ee.Z,{children:(0,l.jsxs)(en.Z,{"aria-label":"simple table",children:[(0,l.jsx)(et.Z,{children:(0,l.jsxs)(ea.Z,{children:[(0,l.jsx)(er.Z,{children:(0,l.jsx)("b",{children:"Transaction ID"})}),(0,l.jsx)(er.Z,{align:"right",children:(0,l.jsx)("b",{children:"Network"})})]})}),(0,l.jsx)(el.Z,{children:e.map((e,n)=>(0,l.jsxs)(ea.Z,{children:[(0,l.jsx)(er.Z,{component:"th",scope:"row",children:e.txId}),(0,l.jsx)(er.Z,{align:"right",children:e.chain})]},n))})]})}):(0,l.jsx)("p",{children:"Indexing queue is empty."}),a&&(0,l.jsx)(R.Z,{className:f().indexerQueueAlert,severity:"warning",onClose:()=>{r(!1)},children:"Node is not running Indexer. No need to get queue at this point!"})]})}var eo=t(86886),ei=t(66242);function Indexer(e){let{data:n}=e;return(0,l.jsxs)("div",{className:$()([f().indexer,f().borderBottom]),children:[(0,l.jsx)("div",{className:f().title29,children:"INDEXER"}),(0,l.jsx)(eo.ZP,{container:!0,spacing:2,children:null==n?void 0:n.indexer.map(e=>(0,l.jsx)(eo.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,l.jsxs)(ei.Z,{className:$()([f().indexBlock,e.delayed&&f().delayed]),sx:{marginBottom:4,borderRadius:"8px",position:"relative"},children:[(0,l.jsx)("h5",{children:e.network}),(0,l.jsxs)("div",{children:["ChainID: ",e.chainId]}),(0,l.jsxs)("div",{children:["BLOCK: ",e.block]})]},e.block)},e.block))}),(0,l.jsx)(IndexQueue,{})]})}function AdminAccounts(){let{allAdmins:e}=(0,_.O)();return(0,l.jsxs)("div",{className:f().indexer,children:[(0,l.jsx)("div",{className:f().title29,children:"Admin Accounts"}),(0,l.jsx)("div",{className:f().provider,children:e.map((e,n)=>(0,l.jsx)("div",{className:f().providerRow,children:e},n))})]})}function NodePlatform(e){let{platformData:n}=e;return(0,l.jsxs)("div",{className:f().indexer,children:[(0,l.jsx)("div",{className:f().title29,children:"PLATFORM"}),(0,l.jsx)("div",{className:f().provider,children:n.map(e=>(0,l.jsxs)("div",{className:f().providerRow,children:[(0,l.jsx)("div",{className:f().providerTitle,children:(0,l.jsxs)("b",{children:[e.key,":"]})}),(0,l.jsxs)("div",{children:[e.value," "]})]},e.value))})]})}var ed=t(5616),ec=t(67720);function ControlPanel(){let[e,n]=(0,p.useState)(),[t,a]=(0,p.useState)(!0),[r,s]=(0,p.useState)(""),{setAllAdmins:o,setNetworks:i}=(0,_.O)();(0,p.useEffect)(()=>{a(!0);try{fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"status"})}).then(e=>e.json()).then(e=>{n(e),o(e.allowedAdmins),i(e.indexer),a(!1)})}catch(e){a(!1),console.error("error",e)}},[]),(0,p.useEffect)(()=>{fetch("https://api.ipify.org?format=json").then(e=>e.json()).then(e=>{s(e.ip)}).catch(e=>{console.error("Failed to fetch IP address:",e)})},[]);let d=[{id:null==e?void 0:e.id,ip:r,indexerData:null==e?void 0:e.indexer}],c=[];return e&&Object.keys(null==e?void 0:e.platform).forEach(n=>{let t={key:n,value:JSON.stringify(null==e?void 0:e.platform[n])};c.push(t)}),(0,l.jsxs)("div",{className:f().root,children:[(0,l.jsx)(AdminActions,{}),(0,l.jsx)("div",{className:f().bodyContainer,children:t?(0,l.jsx)("div",{className:f().loaderContainer,children:(0,l.jsx)(Spinner,{})}):(0,l.jsxs)("div",{className:f().body,children:[(0,l.jsx)(()=>(0,l.jsxs)(ed.Z,{p:2,children:[(0,l.jsx)(z.Z,{variant:"h5",gutterBottom:!0,children:"NETWORK"}),(0,l.jsx)(ec.Z,{}),(0,l.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,l.jsx)(z.Z,{variant:"h6",children:"HTTP Status"}),(0,l.jsxs)(z.Z,{variant:"body1",children:["HTTP - ",(null==e?void 0:e.http)?"UP":"DOWN"]})]}),(0,l.jsx)(ec.Z,{}),(0,l.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,l.jsx)(z.Z,{variant:"h6",children:"P2P Status"}),(0,l.jsxs)(z.Z,{variant:"body1",children:["P2P - ",(null==e?void 0:e.p2p)?"UP":"DOWN"]})]}),(0,l.jsx)(ec.Z,{}),(0,l.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,l.jsx)(z.Z,{variant:"h6",children:"NODE ID"}),d.map(e=>(0,l.jsxs)(ed.Z,{display:"flex",alignItems:"center",mb:1,children:[(0,l.jsx)(z.Z,{variant:"body1",className:f().node,children:e.id}),(0,l.jsx)(Copy,{text:null==e?void 0:e.id})]},e.id))]}),(0,l.jsx)(ec.Z,{}),(0,l.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,l.jsx)(z.Z,{variant:"h6",children:"Address"}),(0,l.jsxs)(ed.Z,{display:"flex",alignItems:"center",children:[(0,l.jsx)(z.Z,{variant:"body1",className:f().node,children:null==e?void 0:e.address}),(0,l.jsx)(Copy,{text:null==e?void 0:e.address})]})]}),(0,l.jsx)(ec.Z,{}),(0,l.jsx)(ed.Z,{mt:2,children:(0,l.jsx)(NodePeers,{})})]}),{}),(0,l.jsx)(Indexer,{data:e}),(0,l.jsx)(SupportedNetworks_SupportedStorage,{data:e}),(0,l.jsx)(SupportedStorage,{data:e}),(0,l.jsx)(AdminAccounts,{}),(0,l.jsx)(NodePlatform,{platformData:c})]})})]})}function Home(){return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsxs)(o(),{children:[(0,l.jsx)("title",{children:"Ocean Node Control Panel"}),(0,l.jsx)("meta",{name:"description",content:"Ocean Node Control Panel"}),(0,l.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,l.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,l.jsx)("header",{children:(0,l.jsx)(Navigation,{})}),(0,l.jsx)("main",{children:(0,l.jsx)(ControlPanel,{})}),(0,l.jsx)("footer",{children:(0,l.jsx)(components_Footer,{})})]})}},46085:function(e){e.exports={download:"Admin_download__ZZ4G0",unlockButton:"Admin_unlockButton__ke4Fn",buttonIcon:"Admin_buttonIcon___M4VS",loader:"Admin_loader__3WuLo",rotation:"Admin_rotation__lknWO",rotationBack:"Admin_rotationBack__qlWG_",root:"Admin_root__Q70by",title:"Admin_title__Xr7QQ",unauthorised:"Admin_unauthorised__6u5Bb"}},73301:function(e){e.exports={root:"ControlPanel_root__xgSoz",bodyContainer:"ControlPanel_bodyContainer__3gJmO",body:"ControlPanel_body__eJ4pu",details:"ControlPanel_details__FsHZf",columnP2P:"ControlPanel_columnP2P__E9d_w",columnHTTP:"ControlPanel_columnHTTP__H98wo",nodes:"ControlPanel_nodes__7wMOb",indexerQueueAlert:"ControlPanel_indexerQueueAlert__jqHbA",borderBottom:"ControlPanel_borderBottom__oU9PK",title29:"ControlPanel_title29__gz68F",title24:"ControlPanel_title24__7IKGZ",nodeAddress:"ControlPanel_nodeAddress__ZeK2z",node:"ControlPanel_node__zZlAF",indexer:"ControlPanel_indexer__TQbAJ",indexBlock:"ControlPanel_indexBlock__hRwv5",delayed:"ControlPanel_delayed__Y0IkO",provider:"ControlPanel_provider__AiLH1",providerRow:"ControlPanel_providerRow__iMvo9",providerTitle:"ControlPanel_providerTitle__aVYme",loaderContainer:"ControlPanel_loaderContainer__pvP_d",loader:"ControlPanel_loader__bbp5M",rotation:"ControlPanel_rotation__oC0WX"}},75368:function(e){e.exports={icon:"Copy_icon__BB7bs",feedback:"Copy_feedback__Wse_F",action:"Copy_action__IlKRq",button:"Copy_button__zsJoM"}},94428:function(e){e.exports={footerContainer:"style_footerContainer___mKsH",footerLinks:"style_footerLinks__1vBvO"}},30378:function(e){e.exports={navbarParent:"style_navbarParent__OgqE_",logoWrapper:"style_logoWrapper__ARfWA",connectButtonWrapper:"style_connectButtonWrapper__G4TF7"}},85108:function(e){e.exports={title24:"style_title24__8ssRQ",loaderContainer:"style_loaderContainer__dYPch",nodes:"style_nodes__ioZOx",nodeAddress:"style_nodeAddress__t2M8E"}},17044:function(e){e.exports={loader:"style_loader__s3fCW",rotation:"style_rotation__wALkg"}}},function(e){e.O(0,[5679,9774,2888,179],function(){return e(e.s=48312)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/dist/dashboard/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js b/dist/controlpanel/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js similarity index 100% rename from dist/dashboard/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js rename to dist/controlpanel/_next/static/chunks/polyfills-c67a75d1b6f99dc8.js diff --git a/dist/dashboard/_next/static/chunks/webpack-fe817b75e2ea8908.js b/dist/controlpanel/_next/static/chunks/webpack-ec2fc339f6558e23.js similarity index 98% rename from dist/dashboard/_next/static/chunks/webpack-fe817b75e2ea8908.js rename to dist/controlpanel/_next/static/chunks/webpack-ec2fc339f6558e23.js index 51cd06ec5..f37260e70 100644 --- a/dist/dashboard/_next/static/chunks/webpack-fe817b75e2ea8908.js +++ b/dist/controlpanel/_next/static/chunks/webpack-ec2fc339f6558e23.js @@ -1 +1 @@ -!function(){"use strict";var e,r,_,t,c,a,n,u,i,f={},b={};function __webpack_require__(e){var r=b[e];if(void 0!==r)return r.exports;var _=b[e]={id:e,loaded:!1,exports:{}},t=!0;try{f[e].call(_.exports,_,_.exports,__webpack_require__),t=!1}finally{t&&delete b[e]}return _.loaded=!0,_.exports}__webpack_require__.m=f,__webpack_require__.amdO={},e=[],__webpack_require__.O=function(r,_,t,c){if(_){c=c||0;for(var a=e.length;a>0&&e[a-1][2]>c;a--)e[a]=e[a-1];e[a]=[_,t,c];return}for(var n=1/0,a=0;a=c&&Object.keys(__webpack_require__.O).every(function(e){return __webpack_require__.O[e](_[i])})?_.splice(i--,1):(u=!1,c0&&e[a-1][2]>c;a--)e[a]=e[a-1];e[a]=[_,t,c];return}for(var n=1/0,a=0;a=c&&Object.keys(__webpack_require__.O).every(function(e){return __webpack_require__.O[e](_[i])})?_.splice(i--,1):(u=!1,ch5{color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:150%;min-width:55px}.Dashboard_root__SCu4R{display:flex;flex-direction:row;gap:28px;position:relative;min-height:550px}.Dashboard_bodyContainer__Fs5NF{position:relative;width:100%}.Dashboard_body__kpkou{padding:40px 72px;border-radius:12px;background:#fff;width:100%}.Dashboard_details__TI_cX{display:flex;flex-direction:row;width:100%}.Dashboard_columnP2P__0zKqU{border-right:1.5px solid #eef1f5}.Dashboard_columnHTTP__lhw_5,.Dashboard_columnP2P__0zKqU{border-bottom:1.5px solid #eef1f5;width:50%}.Dashboard_columnP2P__0zKqU>div{padding:18px 18px 18px 0}.Dashboard_columnHTTP__lhw_5>div{padding:18px}.Dashboard_nodes__7r0Ge{display:flex;flex-direction:column;gap:15px;color:var(--Gray-Gray-500,#718096);font-family:Helvetica;font-size:18px;font-style:normal;font-weight:400;line-height:140%}.Dashboard_indexerQueueAlert__iCMHE{width:640}.Dashboard_borderBottom__5pTDi{border-bottom:1.5px solid #eef1f5}.Dashboard_title29__TBf_2{font-size:20px;margin-bottom:38px}.Dashboard_title24__q5w52,.Dashboard_title29__TBf_2{color:#3d4551;font-family:Helvetica;font-style:normal;font-weight:700;line-height:140%}.Dashboard_title24__q5w52{font-size:18px}.Dashboard_nodeAddress__jgxgu{display:flex;flex-direction:row;gap:18px}.Dashboard_nodeAddress__jgxgu>h5{color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:150%;min-width:55px}.Dashboard_node__UCu0_{display:flex;flex-direction:row;gap:18px}.Dashboard_node__UCu0_:hover{color:#333;cursor:pointer}.Dashboard_indexer__PpMWp{padding-bottom:55px;padding-top:55px}.Dashboard_indexBlock__Ng0C_{display:flex;flex-direction:column;gap:9px;padding:24px 28px;border-radius:8px;border:1px solid rgba(78,203,113,.7);border-top:10px solid rgba(38,194,81,.7);min-width:240px;color:#3d4551;font-family:Helvetica;font-size:16px;font-style:normal;font-weight:400;line-height:140%}.Dashboard_indexBlock__Ng0C_ h5{margin-bottom:18px;color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:150%}.Dashboard_delayed__3Tj7O{border:1px solid rgba(234,89,47,.9);border-top:10px solid rgba(234,89,47,.9)}.Dashboard_provider__wMZ4i{display:flex;flex-direction:column;gap:10px}.Dashboard_providerRow__k2QJ8{display:flex;flex-direction:row;gap:4px;font-weight:500}.Dashboard_providerTitle__5DXbm{min-width:100px}.Dashboard_loaderContainer__CAGjT{position:absolute;width:100%;height:100%;background-color:rgba(51,51,51,.2);display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:12px}.Dashboard_loader__p4KHC{width:48px;height:48px;border:2px solid #fff;border-radius:50%;display:inline-block;position:relative;box-sizing:border-box;animation:Dashboard_rotation__RIDl3 1s linear infinite}.Dashboard_loader__p4KHC:after,.Dashboard_loader__p4KHC:before{content:"";box-sizing:border-box;position:absolute;left:0;top:0;background:#ff3d00;width:6px;height:6px;transform:translate(150%,150%);border-radius:50%}.Dashboard_loader__p4KHC:before{left:auto;top:auto;right:0;bottom:0;transform:translate(-150%,-150%)}@keyframes Dashboard_rotation__RIDl3{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media screen and (max-width:700px){.Dashboard_root__SCu4R{flex-direction:column}.Dashboard_body__kpkou{max-width:none;width:90vw;margin:0 auto;padding:20px}.Dashboard_details__TI_cX{flex-direction:column}.Dashboard_columnHTTP__lhw_5{width:100%}.Dashboard_columnP2P__0zKqU{width:100%;border-right:0}} \ No newline at end of file +.style_navbarParent__OgqE_{display:flex;justify-content:space-between;align-items:center;color:var(--gray-700);background-color:#fff;border-radius:15px;box-shadow:0 7px 23px 0 rgba(0,0,0,.05);-webkit-backdrop-filter:blur(10.5px);backdrop-filter:blur(10.5px);padding:11px 24px;width:100%;margin:0 auto}.style_logoWrapper__ARfWA{flex-shrink:0;min-width:108px}.style_connectButtonWrapper__G4TF7{flex-shrink:0}@media screen and (max-width:700px){.style_navbarParent__OgqE_{width:90vw;margin:0 auto}}.style_footerContainer___mKsH{max-width:1244px;margin:0 auto}.style_footerContainer___mKsH,.style_footerLinks__1vBvO{display:flex;justify-content:space-between;align-items:center}.style_footerLinks__1vBvO{gap:60px}@media screen and (max-width:700px){.style_footerContainer___mKsH{flex-direction:column}.style_footerLinks__1vBvO{flex-direction:column;margin-top:12px;gap:12px}}.Admin_download__ZZ4G0{display:flex;flex-direction:row;justify-content:center;flex-wrap:nowrap;align-items:center;width:100%;gap:4px;color:#4a5360;font-family:Helvetica;font-size:16px;font-style:normal;font-weight:500;line-height:140%;text-align:left;background:transparent;border:transparent}.Admin_unlockButton__ke4Fn{padding:10px 20px;background-color:#007bff;border:none;color:#fff;text-transform:uppercase;font-weight:700;cursor:pointer;transition:background-color .3s,transform .2s;border-radius:4px;outline:none}.Admin_unlockButton__ke4Fn:hover{background-color:#0056b3;transform:scale(1.05)}.Admin_unlockButton__ke4Fn:active{transform:scale(.95)}.Admin_unlockButton__ke4Fn:focus{box-shadow:0 0 0 2px rgba(0,123,255,.5)}.Admin_buttonIcon___M4VS{color:#a0aec0}.Admin_download__ZZ4G0:hover{background-color:transparent;color:#000}.Admin_loader__3WuLo{width:48px;height:48px;border-color:#fff;border-style:solid solid dotted dotted;border-width:3px;border-radius:50%;display:inline-block;position:relative;box-sizing:border-box;animation:Admin_rotation__lknWO 2s linear infinite}.Admin_loader__3WuLo:after{content:"";box-sizing:border-box;position:absolute;left:0;right:0;top:0;bottom:0;margin:auto;border:3px #ff3d00;border-style:solid solid dotted;width:24px;height:24px;border-radius:50%;animation:Admin_rotationBack__qlWG_ 1s linear infinite;transform-origin:center center}@keyframes Admin_rotation__lknWO{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@keyframes Admin_rotationBack__qlWG_{0%{transform:rotate(0deg)}to{transform:rotate(-1turn)}}.Admin_root__Q70by{border-radius:12px;background:#fff;max-width:320px;min-width:245px;display:flex;flex-direction:column;padding:20px}.Admin_title__Xr7QQ{color:#3d4551;font-family:Helvetica;font-size:20px;font-style:normal;font-weight:700;line-height:140%;margin-bottom:47px}.Admin_unauthorised__6u5Bb{color:#ff3d00}@media screen and (max-width:700px){.Admin_root__Q70by{max-width:none;width:90vw;margin:0 auto;padding:20px}}.style_loader__s3fCW{width:48px;height:48px;border:2px solid #fff;border-radius:50%;display:inline-block;position:relative;box-sizing:border-box;animation:style_rotation__wALkg 1s linear infinite}.style_loader__s3fCW:after,.style_loader__s3fCW:before{content:"";box-sizing:border-box;position:absolute;left:0;top:0;background:#ff3d00;width:6px;height:6px;transform:translate(150%,150%);border-radius:50%}.style_loader__s3fCW:before{left:auto;top:auto;right:0;bottom:0;transform:translate(-150%,-150%)}@keyframes style_rotation__wALkg{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.Copy_icon__BB7bs{background-color:transparent}.Copy_feedback__Wse_F{color:#000;font-size:10px}.Copy_action__IlKRq{display:flex;flex-direction:row;align-items:center;gap:10px}.Copy_action__IlKRq:hover{cursor:pointer}.Copy_button__zsJoM{background-color:transparent;border:none}.style_title24__8ssRQ{color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:140%}.style_loaderContainer__dYPch{position:absolute;width:100%;height:100%;background-color:rgba(51,51,51,.2);display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:12px}.style_nodes__ioZOx{display:flex;flex-direction:column;gap:15px;position:relative;color:var(--Gray-Gray-500,#718096);font-family:Helvetica;font-size:18px;font-style:normal;font-weight:400;line-height:140%}.style_nodeAddress__t2M8E{display:flex;flex-direction:row;gap:18px}.style_nodeAddress__t2M8E:hover{color:#333;cursor:pointer}.style_nodeAddress__t2M8E>h5{color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:150%;min-width:55px}.ControlPanel_root__xgSoz{display:flex;flex-direction:row;gap:28px;position:relative;min-height:550px}.ControlPanel_bodyContainer__3gJmO{position:relative;width:100%}.ControlPanel_body__eJ4pu{padding:40px 72px;border-radius:12px;background:#fff;width:100%}.ControlPanel_details__FsHZf{display:flex;flex-direction:row;width:100%}.ControlPanel_columnP2P__E9d_w{border-right:1.5px solid #eef1f5}.ControlPanel_columnHTTP__H98wo,.ControlPanel_columnP2P__E9d_w{border-bottom:1.5px solid #eef1f5;width:50%}.ControlPanel_columnP2P__E9d_w>div{padding:18px 18px 18px 0}.ControlPanel_columnHTTP__H98wo>div{padding:18px}.ControlPanel_nodes__7wMOb{display:flex;flex-direction:column;gap:15px;color:var(--Gray-Gray-500,#718096);font-family:Helvetica;font-size:18px;font-style:normal;font-weight:400;line-height:140%}.ControlPanel_indexerQueueAlert__jqHbA{width:640}.ControlPanel_borderBottom__oU9PK{border-bottom:1.5px solid #eef1f5}.ControlPanel_title29__gz68F{font-size:20px;margin-bottom:38px}.ControlPanel_title24__7IKGZ,.ControlPanel_title29__gz68F{color:#3d4551;font-family:Helvetica;font-style:normal;font-weight:700;line-height:140%}.ControlPanel_title24__7IKGZ{font-size:18px}.ControlPanel_nodeAddress__ZeK2z{display:flex;flex-direction:row;gap:18px}.ControlPanel_nodeAddress__ZeK2z>h5{color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:150%;min-width:55px}.ControlPanel_node__zZlAF{display:flex;flex-direction:row;gap:18px}.ControlPanel_node__zZlAF:hover{color:#333;cursor:pointer}.ControlPanel_indexer__TQbAJ{padding-bottom:55px;padding-top:55px}.ControlPanel_indexBlock__hRwv5{display:flex;flex-direction:column;gap:9px;padding:24px 28px;border-radius:8px;border:1px solid rgba(78,203,113,.7);border-top:10px solid rgba(38,194,81,.7);min-width:240px;color:#3d4551;font-family:Helvetica;font-size:16px;font-style:normal;font-weight:400;line-height:140%}.ControlPanel_indexBlock__hRwv5 h5{margin-bottom:18px;color:#3d4551;font-family:Helvetica;font-size:18px;font-style:normal;font-weight:700;line-height:150%}.ControlPanel_delayed__Y0IkO{border:1px solid rgba(234,89,47,.9);border-top:10px solid rgba(234,89,47,.9)}.ControlPanel_provider__AiLH1{display:flex;flex-direction:column;gap:10px}.ControlPanel_providerRow__iMvo9{display:flex;flex-direction:row;gap:4px;font-weight:500}.ControlPanel_providerTitle__aVYme{min-width:100px}.ControlPanel_loaderContainer__pvP_d{position:absolute;width:100%;height:100%;background-color:rgba(51,51,51,.2);display:flex;flex-direction:row;justify-content:center;align-items:center;border-radius:12px}.ControlPanel_loader__bbp5M{width:48px;height:48px;border:2px solid #fff;border-radius:50%;display:inline-block;position:relative;box-sizing:border-box;animation:ControlPanel_rotation__oC0WX 1s linear infinite}.ControlPanel_loader__bbp5M:after,.ControlPanel_loader__bbp5M:before{content:"";box-sizing:border-box;position:absolute;left:0;top:0;background:#ff3d00;width:6px;height:6px;transform:translate(150%,150%);border-radius:50%}.ControlPanel_loader__bbp5M:before{left:auto;top:auto;right:0;bottom:0;transform:translate(-150%,-150%)}@keyframes ControlPanel_rotation__oC0WX{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media screen and (max-width:700px){.ControlPanel_root__xgSoz{flex-direction:column}.ControlPanel_body__eJ4pu{max-width:none;width:90vw;margin:0 auto;padding:20px}.ControlPanel_details__FsHZf{flex-direction:column}.ControlPanel_columnHTTP__H98wo{width:100%}.ControlPanel_columnP2P__E9d_w{width:100%;border-right:0}} \ No newline at end of file diff --git a/dist/dashboard/_next/static/dWTZat63Weh2kEqjHUkGv/_buildManifest.js b/dist/controlpanel/_next/static/dbdm9KL_uDQpXQXjY0ctm/_buildManifest.js similarity index 64% rename from dist/dashboard/_next/static/dWTZat63Weh2kEqjHUkGv/_buildManifest.js rename to dist/controlpanel/_next/static/dbdm9KL_uDQpXQXjY0ctm/_buildManifest.js index 3019a6c81..cc4ded36e 100644 --- a/dist/dashboard/_next/static/dWTZat63Weh2kEqjHUkGv/_buildManifest.js +++ b/dist/controlpanel/_next/static/dbdm9KL_uDQpXQXjY0ctm/_buildManifest.js @@ -1 +1 @@ -self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/5679-bec633b225238aa1.js","static/css/a66f1c922ed6fd7f.css","static/chunks/pages/index-2dd5da6078999ac1.js"],"/_error":["static/chunks/pages/_error-e4216aab802f5810.js"],sortedPages:["/","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file +self.__BUILD_MANIFEST={__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},"/":["static/chunks/5679-bec633b225238aa1.js","static/css/8b9f4a8789776f9a.css","static/chunks/pages/index-68352c78cef0caeb.js"],"/_error":["static/chunks/pages/_error-e4216aab802f5810.js"],sortedPages:["/","/_app","/_error"]},self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/dist/dashboard/_next/static/dWTZat63Weh2kEqjHUkGv/_ssgManifest.js b/dist/controlpanel/_next/static/dbdm9KL_uDQpXQXjY0ctm/_ssgManifest.js similarity index 100% rename from dist/dashboard/_next/static/dWTZat63Weh2kEqjHUkGv/_ssgManifest.js rename to dist/controlpanel/_next/static/dbdm9KL_uDQpXQXjY0ctm/_ssgManifest.js diff --git a/dist/dashboard/_next/static/media/copy.63713a04.svg b/dist/controlpanel/_next/static/media/copy.63713a04.svg similarity index 100% rename from dist/dashboard/_next/static/media/copy.63713a04.svg rename to dist/controlpanel/_next/static/media/copy.63713a04.svg diff --git a/dist/dashboard/_next/static/media/download.0a4876ec.svg b/dist/controlpanel/_next/static/media/download.0a4876ec.svg similarity index 100% rename from dist/dashboard/_next/static/media/download.0a4876ec.svg rename to dist/controlpanel/_next/static/media/download.0a4876ec.svg diff --git a/dist/dashboard/_next/static/media/logo-nodes.249ea9ed.svg b/dist/controlpanel/_next/static/media/logo-nodes.249ea9ed.svg similarity index 100% rename from dist/dashboard/_next/static/media/logo-nodes.249ea9ed.svg rename to dist/controlpanel/_next/static/media/logo-nodes.249ea9ed.svg diff --git a/dist/controlpanel/index.html b/dist/controlpanel/index.html new file mode 100644 index 000000000..d72efd16f --- /dev/null +++ b/dist/controlpanel/index.html @@ -0,0 +1 @@ +Ocean Node Control Panel
Ocean Node Logo
ADMIN ACTIONS
\ No newline at end of file diff --git a/dist/dashboard/_next/static/chunks/pages/index-2dd5da6078999ac1.js b/dist/dashboard/_next/static/chunks/pages/index-2dd5da6078999ac1.js deleted file mode 100644 index f6395e505..000000000 --- a/dist/dashboard/_next/static/chunks/pages/index-2dd5da6078999ac1.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[5405],{48312:function(e,n,t){(window.__NEXT_P=window.__NEXT_P||[]).push(["/",function(){return t(30431)}])},30431:function(e,n,t){"use strict";t.r(n),t.d(n,{default:function(){return Home}});var a,r,s=t(85893),i=t(9008),l=t.n(i),o=t(25675),d=t.n(o),c={src:"/_next/static/media/logo-nodes.249ea9ed.svg",height:283,width:425,blurWidth:0,blurHeight:0},u=t(30378),h=t.n(u),x=t(89192),Navigation=()=>(0,s.jsxs)("div",{className:h().navbarParent,children:[(0,s.jsx)("div",{className:h().logoWrapper,children:(0,s.jsx)(d(),{src:c,alt:"Ocean Node Logo",height:70})}),(0,s.jsx)("div",{className:h().connectButtonWrapper,children:(0,s.jsx)(x.NL,{})})]}),j=t(94428),m=t.n(j),components_Footer=()=>{let e=new Date().getFullYear();return(0,s.jsxs)("div",{className:m().footerContainer,children:[(0,s.jsxs)("p",{children:["@ ",e,", Ocean Nodes"]}),(0,s.jsxs)("div",{className:m().footerLinks,children:[(0,s.jsx)("a",{href:"https://oceanprotocol.com/",target:"_blank",children:"Website"}),(0,s.jsx)("a",{href:"https://github.com/oceanprotocol/ocean-node",target:"_blank",children:"GitHub"}),(0,s.jsx)("a",{href:"https://discord.com/invite/TnXjkR5",target:"_blank",children:"Discord"})]})]})},p=t(67294),v=t(11706),b=t.n(v),_=t(59581),f=t(46085),g=t.n(f),N=t(69417),y=t(94054),S=t(50135),C=t(33841),Z=t(30638),I=t(23599),w=t(10586),T=t(50720),D=t(67971),k=t(27484),E=t.n(k),A={src:"/_next/static/media/download.0a4876ec.svg",height:30,width:30,blurWidth:0,blurHeight:0};function DownloadButton(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[r,i]=(0,p.useState)(E()()),[l,o]=(0,p.useState)(E()()),[c,u]=(0,p.useState)(""),[h,x]=(0,p.useState)(""),[j,m]=(0,p.useState)(""),{signature:v,expiryTimestamp:b}=(0,_.O)(),f=(0,p.useCallback)(async()=>{let e=r?"&startTime=".concat(r.toISOString()):"",n=l?"&endTime=".concat(l.toISOString()):"",t=c?"&maxLogs=".concat(c):"",s=h&&"all"!==h?"&moduleName=".concat(h):"",i=j&&"all"!==j?'&level="'.concat(j,'"'):"";a(!0);try{if(!b||!v){console.error("Missing expiryTimestamp or signature");return}let r=await fetch("/logs?".concat(e).concat(n).concat(t).concat(s).concat(i),{headers:{"Content-Type":"application/json"},method:"POST",body:JSON.stringify({expiryTimestamp:b,signature:v})}),l=await r.json();if(l){let e="data:application/json;charset=utf-8,"+encodeURIComponent(JSON.stringify(l)),n=document.createElement("a");n.setAttribute("href",e),n.setAttribute("download","LogsData.json"),document.body.appendChild(n),n.click(),n.remove()}a(!1)}catch(e){console.error(e),a(!1)}},[r,l,c,h,j]);return(0,s.jsxs)("div",{className:g().column,children:[(0,s.jsx)(N.Z,{type:"button",onClick:()=>n(!e),children:"Download Logs"}),e&&(0,s.jsxs)("div",{className:g().filters,children:[(0,s.jsxs)(T._,{dateAdapter:w.y,children:[(0,s.jsx)(y.Z,{fullWidth:!0,margin:"normal",children:(0,s.jsx)(D.x,{label:"Start Date",value:r,onChange:e=>i(e)})}),(0,s.jsx)(y.Z,{fullWidth:!0,margin:"normal",children:(0,s.jsx)(D.x,{label:"End Date",value:l,onChange:e=>o(e)})})]}),(0,s.jsx)(S.Z,{label:"Max Logs",type:"number",value:c,onChange:e=>u(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),(0,s.jsxs)(y.Z,{fullWidth:!0,margin:"normal",children:[(0,s.jsx)(C.Z,{id:"select-module-name-label",children:"Module Name"}),(0,s.jsxs)(Z.Z,{labelId:"select-module-name-label",label:"Module Name",id:"module-name",value:h,onChange:e=>x(e.target.value),children:[(0,s.jsx)(I.Z,{value:"all",children:"all"}),(0,s.jsx)(I.Z,{value:"http",children:"http"}),(0,s.jsx)(I.Z,{value:"p2p",children:"p2p"}),(0,s.jsx)(I.Z,{value:"indexer",children:"indexer"}),(0,s.jsx)(I.Z,{value:"reindexer",children:"reindexer"}),(0,s.jsx)(I.Z,{value:"provider",children:"provider"}),(0,s.jsx)(I.Z,{value:"database",children:"database"}),(0,s.jsx)(I.Z,{value:"config",children:"config"}),(0,s.jsx)(I.Z,{value:"core",children:"core"}),(0,s.jsx)(I.Z,{value:"OceanNode",children:"OceanNode"})]})]}),(0,s.jsxs)(y.Z,{fullWidth:!0,margin:"normal",children:[(0,s.jsx)(C.Z,{id:"select-level-label",children:"Level"}),(0,s.jsxs)(Z.Z,{labelId:"select-level-label",label:"Level",id:"level",value:j,onChange:e=>m(e.target.value),children:[(0,s.jsx)(I.Z,{value:"all",children:"all"}),(0,s.jsx)(I.Z,{value:"error",children:"error"}),(0,s.jsx)(I.Z,{value:"warn",children:"warn"}),(0,s.jsx)(I.Z,{value:"info",children:"info"}),(0,s.jsx)(I.Z,{value:"http",children:"http"}),(0,s.jsx)(I.Z,{value:"verbose",children:"verbose"}),(0,s.jsx)(I.Z,{value:"debug",children:"debug"}),(0,s.jsx)(I.Z,{value:"silly",children:"silly"})]})]}),(0,s.jsx)(N.Z,{type:"button",onClick:f,variant:"outlined",startIcon:(0,s.jsx)(d(),{src:A,alt:"download button",width:24,height:24}),disabled:t,children:"Download"})]})]})}function StopNode(){let[e,n]=(0,p.useState)(!1),{signature:t,expiryTimestamp:a}=(0,_.O)();async function stopNode(){n(!0);try{a&&t&&await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"stopNode",expiryTimestamp:a,signature:t})}),alert("The node has been stopped. The dashboard will no longer be displayed."),window.location.reload()}catch(e){console.error("error",e)}finally{n(!1)}}return(0,s.jsx)(N.Z,{onClick:stopNode,variant:"outlined",color:"error",children:e?(0,s.jsx)(()=>(0,s.jsx)("span",{className:g().loader}),{}):(0,s.jsx)("div",{children:"Stop Node"})})}var P=t(92321),O=t(31536);function NetworkSelector(e){let{chainId:n,setChainId:t}=e,{networks:a}=(0,_.O)();return(0,s.jsxs)(y.Z,{fullWidth:!0,margin:"normal",variant:"outlined",children:[(0,s.jsx)(C.Z,{id:"network-select-label",children:"Network"}),(0,s.jsx)(Z.Z,{labelId:"network-select-label",id:"network-select",value:n||"",onChange:e=>t(e.target.value),label:"Network",children:Object.values(a).map(e=>(0,s.jsx)(I.Z,{value:e.chainId.toString(),children:e.network},e.chainId))})]})}(a=r||(r={})).DELIVERED="DELIVERED",a.PENDING="PENDING",a.FAILURE="FAILURE",a.SUCCESS="SUCCESS";let checkJobPool=async function(e){try{let n=await fetch("/api/services/jobs/"+(e||""),{headers:{Accept:"application/json","Content-Type":"application/json"},method:"GET"}),t=await n.json();return t.jobs}catch(e){console.error(e)}return[]};function getSeverityFromStatus(e){switch(e){case r.DELIVERED:return"info";case r.SUCCESS:return"success";case r.PENDING:return"warning";default:return"error"}}function isJobDone(e){return[r.SUCCESS,r.FAILURE].includes(e)}var R=t(8434);function JobStatusPanel(e){let n=e.job?function(e){switch(e){case r.DELIVERED:return"DodgerBlue";case r.PENDING:return"LightSlateGrey";case r.SUCCESS:return"ForestGreen";case r.FAILURE:return"OrangeRed";default:return"black"}}(e.job.status):"black";return(0,s.jsx)("div",{children:null!==e.job&&(0,s.jsxs)(R.Z,{sx:{bgcolor:n},variant:"filled",severity:e.severity,onClose:()=>{},children:["Job with id ",(0,s.jsx)("strong",{children:e.job.jobId})," has status"," ",(0,s.jsx)("strong",{children:e.job.status})]})})}var W=t(602);function ReIndexChain(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[i,l]=(0,p.useState)(),{signature:o,expiryTimestamp:d}=(0,_.O)(),[c,u]=(0,p.useState)("info"),[h,x]=(0,p.useState)(null),j=null;async function reIndex(){a(!0);try{if(d&&o&&i){let e=await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"reindexChain",chainId:i,expiryTimestamp:d,signature:o})});if(200===e.status){let t=await e.json();u(t.status===r.DELIVERED?"info":"error"),x(t),alert("Chain with ID ".concat(i," is now being reindexed."));let a=!1;j=setInterval(async()=>{let e=await checkJobPool(t.jobId);if(1===e.length){let n=e[0];u(getSeverityFromStatus(n.status)),a=isJobDone(n.status),x(n)}else x(null)},3e3),a&&j&&(0,W.clearInterval)(j),n(!1)}else alert("Error reindexing chain. Please try again.")}}catch(e){console.error("error",e)}finally{a(!1)}}return(0,s.jsxs)("div",{className:g().column,children:[(0,s.jsx)(N.Z,{type:"button",onClick:()=>n(!e),children:"ReIndex Chain"}),e&&(0,s.jsxs)("div",{className:g().filters,children:[(0,s.jsx)(NetworkSelector,{chainId:i,setChainId:l}),(0,s.jsx)(N.Z,{type:"button",onClick:reIndex,variant:"outlined",disabled:t,children:"ReIndex Chain"})]}),(0,s.jsx)(JobStatusPanel,{job:h,severity:c})]})}function ReIndexTransaction(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[i,l]=(0,p.useState)(),[o,d]=(0,p.useState)(),{signature:c,expiryTimestamp:u}=(0,_.O)(),[h,x]=(0,p.useState)("info"),[j,m]=(0,p.useState)(null),v=null;async function reIndexTx(){a(!0);try{if(u&&c&&i&&o){let e=await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"reindexTx",chainId:i,txId:o,expiryTimestamp:u,signature:c})});if(200===e.status){let t=await e.json();x(t.status===r.DELIVERED?"info":"error"),m(t),alert("Transaction with TX ID ".concat(o," on chain ").concat(i," is now being reindexed."));let a=!1;v=setInterval(async()=>{let e=await checkJobPool(t.jobId);if(1===e.length){let n=e[0];x(getSeverityFromStatus(n.status)),a=isJobDone(n.status),m(n)}else m(null)},3e3),a&&v&&clearInterval(v),n(!1)}else alert("Error reindexing transaction. Please try again.")}}catch(e){console.error("error",e)}finally{a(!1)}}return(0,s.jsxs)("div",{className:g().column,children:[(0,s.jsx)(N.Z,{type:"button",onClick:()=>n(!e),children:"ReIndex Transaction"}),e&&(0,s.jsxs)("div",{className:g().filters,children:[(0,s.jsx)(NetworkSelector,{chainId:i,setChainId:l}),(0,s.jsx)(S.Z,{label:"Transaction ID",value:o,onChange:e=>d(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),(0,s.jsx)(N.Z,{type:"button",onClick:reIndexTx,variant:"outlined",disabled:t,children:"ReIndex Transaction"})]}),(0,s.jsx)(JobStatusPanel,{job:j,severity:h})]})}var L=t(58703),F=t(64666),B=t(37645),J=t(6514),U=t(58951),G=t(31425);function TransferFees(){let[e,n]=(0,p.useState)(!1),[t,a]=(0,p.useState)(!1),[r,i]=(0,p.useState)(""),[l,o]=(0,p.useState)(""),[d,c]=(0,p.useState)(""),[u,h]=(0,p.useState)(""),{signature:x,expiryTimestamp:j}=(0,_.O)(),[m,v]=(0,p.useState)(null),[b,f]=(0,p.useState)(!1),[y,C]=(0,p.useState)(!1),[Z,I]=(0,p.useState)(null),[w,T]=(0,p.useState)(null),validateInputs=()=>r&&l&&d&&u?isNaN(Number(d))?(v("Token amount must be a number."),!1):(v(null),!0):(v("All fields are required."),!1);async function transferFees(){if(validateInputs()){a(!0);try{let e=await fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"collectFees",chainId:r,tokenAddress:l,tokenAmount:d,destinationAddress:u,expiryTimestamp:j,signature:x})});if(200===e.status){let t=await e.json();(null==t?void 0:t.tx)&&(null==t?void 0:t.message)&&(T(t.tx),I(t.message),C(!0),f(!0),n(!1))}else v(e.statusText?e.statusText:"Error transferring fees. Please try again.")}catch(e){console.error("error",e),v("Error transferring fees. Please try again.")}finally{a(!1)}}}let handleDialogClose=()=>{C(!1)};return(0,s.jsxs)("div",{className:g().column,children:[(0,s.jsx)(N.Z,{variant:"text",onClick:()=>n(!e),children:"Transfer Fees"}),e&&(0,s.jsxs)("div",{className:g().filters,children:[(0,s.jsx)(S.Z,{label:"Chain ID",value:r,onChange:e=>i(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined",type:"number"}),(0,s.jsx)(S.Z,{label:"Token Address",value:l,onChange:e=>o(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),(0,s.jsx)(S.Z,{label:"Token Amount",value:d,onChange:e=>c(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined",type:"number"}),(0,s.jsx)(S.Z,{label:"Destination Address",value:u,onChange:e=>h(e.target.value),fullWidth:!0,margin:"normal",variant:"outlined"}),m&&(0,s.jsx)(R.Z,{severity:"error",children:m}),(0,s.jsx)(N.Z,{type:"button",onClick:transferFees,variant:"outlined",disabled:t,fullWidth:!0,children:"Transfer Fees"})]}),(0,s.jsx)(L.Z,{open:b,autoHideDuration:6e3,onClose:()=>f(!1),message:"Fees successfully transferred!"}),(0,s.jsxs)(F.Z,{open:y,onClose:handleDialogClose,"aria-labelledby":"alert-dialog-title","aria-describedby":"alert-dialog-description",children:[(0,s.jsx)(B.Z,{id:"alert-dialog-title",children:"Transfer Successful"}),(0,s.jsx)(J.Z,{children:(0,s.jsx)(U.Z,{id:"alert-dialog-description",children:Z&&(0,s.jsxs)("span",{children:[Z," ",(0,s.jsx)("br",{}),(0,s.jsx)("strong",{style:{marginTop:"10px",display:"block"},children:"Transaction Hash:"})," ",w]})})}),(0,s.jsx)(G.Z,{children:(0,s.jsx)(N.Z,{onClick:handleDialogClose,autoFocus:!0,children:"Close"})})]})]})}function AdminActions(){let{generateSignature:e,signature:n,validTimestamp:t,admin:a}=(0,_.O)(),{isConnected:r}=(0,P.m)();return(0,s.jsxs)("div",{className:g().root,children:[(0,s.jsx)("div",{className:g().title,children:"ADMIN ACTIONS"}),!r&&(0,s.jsx)(x.NL,{}),r&&!a&&(0,s.jsx)("div",{className:g().unauthorised,children:"Your account does not have admin access"}),(!n||!t)&&r&&a&&(0,s.jsx)("button",{type:"button",className:g().unlockButton,onClick:e,children:"Unlock"}),r&&n&&t&&r&&a&&(0,s.jsxs)(O.Z,{spacing:2,direction:"column",children:[(0,s.jsx)(DownloadButton,{}),(0,s.jsx)(ReIndexChain,{}),(0,s.jsx)(ReIndexTransaction,{}),(0,s.jsx)(TransferFees,{}),(0,s.jsx)(StopNode,{})]})]})}var H=t(17044),Q=t.n(H);function Spinner(){return(0,s.jsx)("span",{className:Q().loader})}var M=t(85108),q=t.n(M),X=t(75368),V=t.n(X),K={src:"/_next/static/media/copy.63713a04.svg",height:16,width:15,blurWidth:0,blurHeight:0};function Copy(e){let{text:n}=e,[t,a]=(0,p.useState)(!1),copyToClipboard=e=>{let n=document.createElement("textarea");n.value=e,document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)};return(0,p.useEffect)(()=>{if(!t)return;let e=setTimeout(()=>{a(!1)},1e3);return()=>clearTimeout(e)},[t]),(0,s.jsxs)("div",{className:V().action,onClick:()=>{copyToClipboard(n),a(!0)},children:[(0,s.jsx)(d(),{src:K,alt:"icont-copy",className:V().icon}),t&&(0,s.jsx)("div",{className:V().feedback,children:"Copied!"})]})}var Y=t(15861);function NodePeers(){let[e,n]=(0,p.useState)([]),[t,a]=(0,p.useState)(!0),[r,i]=(0,p.useState)(!1),fetchNodePeers=async()=>{a(!0);try{let e=await fetch("/getOceanPeers",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"GET"}),t=await e.json();n(t)}catch(e){console.error("error",e)}finally{a(!1)}};(0,p.useEffect)(()=>{fetchNodePeers();let e=setInterval(()=>{fetchNodePeers()},12e4);return()=>clearInterval(e)},[]);let l=r?e:e.slice(0,10);return(0,s.jsxs)("div",{className:q().nodes,children:[(0,s.jsxs)("div",{className:q().title24,children:["Connected Nodes (Total ",e.length,")"]}),t?(0,s.jsx)("div",{className:q().loaderContainer,children:(0,s.jsx)(Spinner,{})}):(0,s.jsxs)(s.Fragment,{children:[e.length>0?l.map(e=>(0,s.jsxs)("div",{className:q().nodeAddress,children:[e," ",(0,s.jsx)(Copy,{text:e})]},e)):(0,s.jsx)(Y.Z,{variant:"body1",children:"There are no nodes connected"}),!r&&e.length>10&&(0,s.jsx)(N.Z,{onClick:()=>i(!0),variant:"text",color:"primary",children:"Show All"}),r&&e.length>10&&(0,s.jsx)(N.Z,{onClick:()=>i(!1),variant:"text",color:"primary",children:"Show Less"})]})]})}function SupportedStorage(e){let{data:n}=e;return(0,s.jsxs)("div",{className:b().indexer,children:[(0,s.jsx)("div",{className:b().title29,children:"SUPPORTED STORAGE"}),(0,s.jsxs)("div",{className:b().provider,children:[(0,s.jsxs)("div",{className:b().providerRow,children:[(0,s.jsx)("div",{className:b().providerTitle,children:(0,s.jsx)("b",{children:"arwave:"})}),(0,s.jsxs)("div",{children:[null==n?void 0:n.supportedStorage.arwave.toString()," "]})]}),(0,s.jsxs)("div",{className:b().providerRow,children:[(0,s.jsx)("div",{className:b().providerTitle,children:(0,s.jsx)("b",{children:"ipfs:"})}),(0,s.jsxs)("div",{children:[null==n?void 0:n.supportedStorage.ipfs.toString()," "]})]}),(0,s.jsxs)("div",{className:b().providerRow,children:[(0,s.jsx)("div",{className:b().providerTitle,children:(0,s.jsx)("b",{children:"url:"})}),(0,s.jsxs)("div",{children:[null==n?void 0:n.supportedStorage.url.toString()," "]})]})]})]})}function SupportedNetworks_SupportedStorage(e){let{data:n}=e;return(0,s.jsxs)("div",{className:b().indexer,children:[(0,s.jsx)("div",{className:b().title29,children:"SUPPORTED Networks"}),(0,s.jsx)("div",{className:b().provider,children:null==n?void 0:n.provider.map(e=>(0,s.jsxs)("div",{className:b().providerRow,children:[(0,s.jsx)("div",{className:b().providerTitle,children:(0,s.jsx)("b",{children:e.chainId})}),(0,s.jsxs)("div",{children:[e.network," "]})]}))})]})}var z=t(93967),$=t.n(z),ee=t(72882),en=t(7906),et=t(53184),ea=t(53816),er=t(53252),es=t(295),ei=t(27061);function IndexQueue(){let[e,n]=(0,p.useState)([]),{networks:t}=(0,_.O)(),[a,r]=(0,p.useState)(!1),i=null;return(0,p.useEffect)(()=>{let fetchQueue=()=>{fetch("/api/services/indexQueue").then(e=>{400===e.status?(console.warn("Cannot fetch queue: Node is not running Indexer"),r(!0),i&&clearInterval(i)):e.json().then(e=>{let a=e.queue.map(e=>{let n=t.find(n=>n.chainId===e.chainId);return{txId:e.txId,chainId:e.chainId,chain:n?n.network:"Unknown Network"}});n(a)})}).catch(e=>{console.error("Error fetching queue:",e)})};fetchQueue();let e=1e4;return ei.env.INDEXER_INTERVAL&&(e=Number(ei.env.INDEXER_INTERVAL)),i=setInterval(fetchQueue,e),()=>{i&&clearInterval(i)}},[]),(0,s.jsxs)("div",{children:[(0,s.jsx)("div",{className:b().title24,style:{paddingTop:"55px",paddingBottom:"55px"},children:"Indexing Queue"}),e.length>0?(0,s.jsx)(ee.Z,{children:(0,s.jsxs)(en.Z,{"aria-label":"simple table",children:[(0,s.jsx)(et.Z,{children:(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(er.Z,{children:(0,s.jsx)("b",{children:"Transaction ID"})}),(0,s.jsx)(er.Z,{align:"right",children:(0,s.jsx)("b",{children:"Network"})})]})}),(0,s.jsx)(es.Z,{children:e.map((e,n)=>(0,s.jsxs)(ea.Z,{children:[(0,s.jsx)(er.Z,{component:"th",scope:"row",children:e.txId}),(0,s.jsx)(er.Z,{align:"right",children:e.chain})]},n))})]})}):(0,s.jsx)("p",{children:"Indexing queue is empty."}),a&&(0,s.jsx)(R.Z,{className:b().indexerQueueAlert,severity:"warning",onClose:()=>{r(!1)},children:"Node is not running Indexer. No need to get queue at this point!"})]})}var el=t(86886),eo=t(66242);function Indexer(e){let{data:n}=e;return(0,s.jsxs)("div",{className:$()([b().indexer,b().borderBottom]),children:[(0,s.jsx)("div",{className:b().title29,children:"INDEXER"}),(0,s.jsx)(el.ZP,{container:!0,spacing:2,children:null==n?void 0:n.indexer.map(e=>(0,s.jsx)(el.ZP,{item:!0,xs:12,sm:6,md:4,children:(0,s.jsxs)(eo.Z,{className:$()([b().indexBlock,e.delayed&&b().delayed]),sx:{marginBottom:4,borderRadius:"8px",position:"relative"},children:[(0,s.jsx)("h5",{children:e.network}),(0,s.jsxs)("div",{children:["ChainID: ",e.chainId]}),(0,s.jsxs)("div",{children:["BLOCK: ",e.block]})]},e.block)},e.block))}),(0,s.jsx)(IndexQueue,{})]})}function AdminAccounts(){let{allAdmins:e}=(0,_.O)();return(0,s.jsxs)("div",{className:b().indexer,children:[(0,s.jsx)("div",{className:b().title29,children:"Admin Accounts"}),(0,s.jsx)("div",{className:b().provider,children:e.map((e,n)=>(0,s.jsx)("div",{className:b().providerRow,children:e},n))})]})}function NodePlatform(e){let{platformData:n}=e;return(0,s.jsxs)("div",{className:b().indexer,children:[(0,s.jsx)("div",{className:b().title29,children:"PLATFORM"}),(0,s.jsx)("div",{className:b().provider,children:n.map(e=>(0,s.jsxs)("div",{className:b().providerRow,children:[(0,s.jsx)("div",{className:b().providerTitle,children:(0,s.jsxs)("b",{children:[e.key,":"]})}),(0,s.jsxs)("div",{children:[e.value," "]})]},e.value))})]})}var ed=t(5616),ec=t(67720);function Dashboard(){let[e,n]=(0,p.useState)(),[t,a]=(0,p.useState)(!0),[r,i]=(0,p.useState)(""),{setAllAdmins:l,setNetworks:o}=(0,_.O)();(0,p.useEffect)(()=>{a(!0);try{fetch("/directCommand",{headers:{Accept:"application/json","Content-Type":"application/json"},method:"POST",body:JSON.stringify({command:"status"})}).then(e=>e.json()).then(e=>{n(e),l(e.allowedAdmins),o(e.indexer),a(!1)})}catch(e){a(!1),console.error("error",e)}},[]),(0,p.useEffect)(()=>{fetch("https://api.ipify.org?format=json").then(e=>e.json()).then(e=>{i(e.ip)}).catch(e=>{console.error("Failed to fetch IP address:",e)})},[]);let d=[{id:null==e?void 0:e.id,ip:r,indexerData:null==e?void 0:e.indexer}],c=[];return e&&Object.keys(null==e?void 0:e.platform).forEach(n=>{let t={key:n,value:JSON.stringify(null==e?void 0:e.platform[n])};c.push(t)}),(0,s.jsxs)("div",{className:b().root,children:[(0,s.jsx)(AdminActions,{}),(0,s.jsx)("div",{className:b().bodyContainer,children:t?(0,s.jsx)("div",{className:b().loaderContainer,children:(0,s.jsx)(Spinner,{})}):(0,s.jsxs)("div",{className:b().body,children:[(0,s.jsx)(()=>(0,s.jsxs)(ed.Z,{p:2,children:[(0,s.jsx)(Y.Z,{variant:"h5",gutterBottom:!0,children:"NETWORK"}),(0,s.jsx)(ec.Z,{}),(0,s.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,s.jsx)(Y.Z,{variant:"h6",children:"HTTP Status"}),(0,s.jsxs)(Y.Z,{variant:"body1",children:["HTTP - ",(null==e?void 0:e.http)?"UP":"DOWN"]})]}),(0,s.jsx)(ec.Z,{}),(0,s.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,s.jsx)(Y.Z,{variant:"h6",children:"P2P Status"}),(0,s.jsxs)(Y.Z,{variant:"body1",children:["P2P - ",(null==e?void 0:e.p2p)?"UP":"DOWN"]})]}),(0,s.jsx)(ec.Z,{}),(0,s.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,s.jsx)(Y.Z,{variant:"h6",children:"NODE ID"}),d.map(e=>(0,s.jsxs)(ed.Z,{display:"flex",alignItems:"center",mb:1,children:[(0,s.jsx)(Y.Z,{variant:"body1",className:b().node,children:e.id}),(0,s.jsx)(Copy,{text:null==e?void 0:e.id})]},e.id))]}),(0,s.jsx)(ec.Z,{}),(0,s.jsxs)(ed.Z,{mt:2,mb:2,children:[(0,s.jsx)(Y.Z,{variant:"h6",children:"Address"}),(0,s.jsxs)(ed.Z,{display:"flex",alignItems:"center",children:[(0,s.jsx)(Y.Z,{variant:"body1",className:b().node,children:null==e?void 0:e.address}),(0,s.jsx)(Copy,{text:null==e?void 0:e.address})]})]}),(0,s.jsx)(ec.Z,{}),(0,s.jsx)(ed.Z,{mt:2,children:(0,s.jsx)(NodePeers,{})})]}),{}),(0,s.jsx)(Indexer,{data:e}),(0,s.jsx)(SupportedNetworks_SupportedStorage,{data:e}),(0,s.jsx)(SupportedStorage,{data:e}),(0,s.jsx)(AdminAccounts,{}),(0,s.jsx)(NodePlatform,{platformData:c})]})})]})}function Home(){return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)(l(),{children:[(0,s.jsx)("title",{children:"Ocean nodes"}),(0,s.jsx)("meta",{name:"description",content:"Ocean nodes dashboard"}),(0,s.jsx)("meta",{name:"viewport",content:"width=device-width, initial-scale=1"}),(0,s.jsx)("link",{rel:"icon",href:"/favicon.ico"})]}),(0,s.jsx)("header",{children:(0,s.jsx)(Navigation,{})}),(0,s.jsx)("main",{children:(0,s.jsx)(Dashboard,{})}),(0,s.jsx)("footer",{children:(0,s.jsx)(components_Footer,{})})]})}},46085:function(e){e.exports={download:"Admin_download__ZZ4G0",unlockButton:"Admin_unlockButton__ke4Fn",buttonIcon:"Admin_buttonIcon___M4VS",loader:"Admin_loader__3WuLo",rotation:"Admin_rotation__lknWO",rotationBack:"Admin_rotationBack__qlWG_",root:"Admin_root__Q70by",title:"Admin_title__Xr7QQ",unauthorised:"Admin_unauthorised__6u5Bb"}},75368:function(e){e.exports={icon:"Copy_icon__BB7bs",feedback:"Copy_feedback__Wse_F",action:"Copy_action__IlKRq",button:"Copy_button__zsJoM"}},11706:function(e){e.exports={root:"Dashboard_root__SCu4R",bodyContainer:"Dashboard_bodyContainer__Fs5NF",body:"Dashboard_body__kpkou",details:"Dashboard_details__TI_cX",columnP2P:"Dashboard_columnP2P__0zKqU",columnHTTP:"Dashboard_columnHTTP__lhw_5",nodes:"Dashboard_nodes__7r0Ge",indexerQueueAlert:"Dashboard_indexerQueueAlert__iCMHE",borderBottom:"Dashboard_borderBottom__5pTDi",title29:"Dashboard_title29__TBf_2",title24:"Dashboard_title24__q5w52",nodeAddress:"Dashboard_nodeAddress__jgxgu",node:"Dashboard_node__UCu0_",indexer:"Dashboard_indexer__PpMWp",indexBlock:"Dashboard_indexBlock__Ng0C_",delayed:"Dashboard_delayed__3Tj7O",provider:"Dashboard_provider__wMZ4i",providerRow:"Dashboard_providerRow__k2QJ8",providerTitle:"Dashboard_providerTitle__5DXbm",loaderContainer:"Dashboard_loaderContainer__CAGjT",loader:"Dashboard_loader__p4KHC",rotation:"Dashboard_rotation__RIDl3"}},94428:function(e){e.exports={footerContainer:"style_footerContainer___mKsH",footerLinks:"style_footerLinks__1vBvO"}},30378:function(e){e.exports={navbarParent:"style_navbarParent__OgqE_",logoWrapper:"style_logoWrapper__ARfWA",connectButtonWrapper:"style_connectButtonWrapper__G4TF7"}},85108:function(e){e.exports={title24:"style_title24__8ssRQ",loaderContainer:"style_loaderContainer__dYPch",nodes:"style_nodes__ioZOx",nodeAddress:"style_nodeAddress__t2M8E"}},17044:function(e){e.exports={loader:"style_loader__s3fCW",rotation:"style_rotation__wALkg"}}},function(e){e.O(0,[5679,9774,2888,179],function(){return e(e.s=48312)}),_N_E=e.O()}]); \ No newline at end of file diff --git a/dist/dashboard/index.html b/dist/dashboard/index.html deleted file mode 100644 index 0215a33c6..000000000 --- a/dist/dashboard/index.html +++ /dev/null @@ -1 +0,0 @@ -Ocean nodes
Ocean Node Logo
ADMIN ACTIONS
\ No newline at end of file diff --git a/docs/API.md b/docs/API.md index fa68702d5..935990ca4 100644 --- a/docs/API.md +++ b/docs/API.md @@ -449,42 +449,58 @@ returns P2P peer --- -## Get P2P Peers +## find peer multiaddress -### `HTTP` GET /getP2PPeers +### `HTTP` GET /findPeer/? #### Description -returns list of all P2P peers +returns P2P peer multiaddresses if found in DHT + +#### Query Parameters + +| name | type | required | description | +| ------- | ------ | -------- | ----------- | +| peerId | string | v | peer id | +| timeout | int | optional | timeout | #### Response ``` -[ - { - "id": "PeerId", - "addresses": [{ multiaddr: "123", isCertified: true }], - "protocols": ["123", "123", "123"], - "metadata": {}, - "tags": {} - } -] +{ + "id": "16Uiu2HAmLhRDqfufZiQnxvQs2XHhd6hwkLSPfjAQg1gH8wgRixiP", + "multiaddrs": [ + "/ip4/127.0.0.1/tcp/9000", + "/ip4/127.0.0.1/tcp/9001/ws", + "/ip4/172.18.0.2/tcp/9000", + "/ip4/172.18.0.2/tcp/9001/ws", + "/ip6/::1/tcp/9002" + ] +} ``` --- -## Get Ocean Peers +## Get P2P Peers -### `HTTP` GET /getOceanPeers +### `HTTP` GET /getP2PPeers #### Description -returns list of ocean node peers +returns list of all P2P peers #### Response ``` -["PeerId", "PeerId", "PeerId"] +[ + { + "id": "PeerId", + "addresses": [{ multiaddr: "123", isCertified: true }], + "protocols": ["123", "123", "123"], + "metadata": {}, + "tags": {} + } +] ``` --- @@ -501,13 +517,14 @@ returns an empty object if it is valid otherwise an array with error #### Parameters -| name | type | required | description | -| ---------- | ------ | -------- | ------------------------------------------------- | -| command | string | v | command name | -| node | string | | if not present it means current node | -| id | string | v | document id or did | -| chainId | number | v | chain id of network on which document is provided | -| nftAddress | string | v | address of nft token | +| name | type | required | description | +| ---------- | -------- | -------- | ------------------------------------------------- | +| command | string | v | command name | +| node | string | | if not present it means current node | +| multiAddrs | string[] | | if passed, use this instead of peerStore & DHT | +| id | string | v | document id or did | +| chainId | number | v | chain id of network on which document is provided | +| nftAddress | string | v | address of nft token | #### Request @@ -1078,38 +1095,6 @@ byte array --- -## Echo - -### `HTTP` POST /directCommand - -### `P2P` command: echo - -#### Description - -returns OK - -#### Parameters - -| name | type | required | description | -| ------- | ------ | -------- | ------------------------------------ | -| command | string | v | command name | -| node | string | | if not present it means current node | - -#### Request - -```json -{ - "command": "echo", - "node": "PeerId" -} -``` - -#### Response - -``` -OK -``` - ## Get indexing queue ### `HTTP` GET /api/services/indexQueue @@ -1173,3 +1158,249 @@ Forwards request to PolicyServer (if any) } } ``` + +# Compute + +For starters, you can find a list of algorithms in the [Ocean Algorithms repository](https://github.com/oceanprotocol/algo_dockers) and the docker images in the [Algo Dockerhub](https://hub.docker.com/r/oceanprotocol/algo_dockers/tags). + +## Compute object definitions + +### Dataset (`ComputeAsset` Interface) + +The `ComputeAsset` interface defines the structure of a compute asset in the Ocean Node. It can include information about the file object, document ID, service ID, transfer transaction ID, and user data. + +#### Properties + +- **fileObject**: Optional. An object of type `BaseFileObject` representing the file associated with the compute asset. +- **documentId**: Optional. A string representing the document ID of the compute asset. +- **serviceId**: Optional. A string representing the service ID associated with the compute asset. +- **transferTxId**: Optional. A string representing the transaction ID for the transfer of the compute asset. +- **userdata**: Optional. An object containing additional user-defined data related to the compute asset. + +```typescript +export interface ComputeAsset { + fileObject?: BaseFileObject + documentId?: string + serviceId?: string + transferTxId?: string + userdata?: { [key: string]: any } +} +``` + +This interface is used to encapsulate the details of a compute asset, which can be utilized in various compute-related operations within the Ocean Node. + +### `ComputeAlgorithm` Interface + +The `ComputeAlgorithm` interface defines the structure of a compute algorithm in the Ocean Node. +It can include information about the file object, document ID, service ID, transfer transaction ID, algorithm custom data, metadata and user data. + +#### Properties + +- **documentId**: Optional. A string representing the document ID of the compute algorithm. +- **serviceId**: Optional. A string representing the service ID associated with the compute algorithm. +- **fileObject**: Optional. An object of type `BaseFileObject` representing the file associated with the compute algorithm. +- **meta**: Optional. An object of type `MetadataAlgorithm` containing metadata related to the compute algorithm. +- **transferTxId**: Optional. A string representing the transaction ID for the transfer of the compute algorithm. +- **algocustomdata**: Optional. An object containing additional custom data related to the compute algorithm. +- **userdata**: Optional. An object containing additional user-defined data related to the compute algorithm. + +```typescript +export interface ComputeAlgorithm { + documentId?: string + serviceId?: string + fileObject?: BaseFileObject + meta?: MetadataAlgorithm + transferTxId?: string + algocustomdata?: { [key: string]: any } + userdata?: { [key: string]: any } +} +``` + +This interface is used to encapsulate the details of a compute algorithm, which can be utilized in various compute-related operations within the Ocean Node. + +## Compute commands + +### `HTTP` GET /api/services/computeEnvironments + +### `P2P` command: getComputeEnvironments + +#### Description + +fetch all compute environments + +#### Response + +```json +[ + { + "id": "0x7d187e4c751367be694497ead35e2937ece3c7f3b325dcb4f7571e5972d092bd-0xf173fdc0a9c7cc1c34f8aaf6b3aafe866795851b567436e1d4fbab17b0e26ca1", + "runningJobs": 0, + "consumerAddress": "0xf9C5B7eE7708efAc6dC6Bc7d4b0455eBbf22b519", + "platform": { "architecture": "x86_64", "os": "Ubuntu 22.04.3 LTS" }, + "fees": { "1": [[{ "feeToken": "0x123", "prices": [{ "id": "cpu", "price": 1 }] }]] }, + "storageExpiry": 604800, + "maxJobDuration": 3600, + "resources": [ + { "id": "cpu", "total": 16, "max": 16, "min": 1, "inUse": 0 }, + { + "id": "ram", + "total": 33617674240, + "max": 33617674240, + "min": 1000000000, + "inUse": 0 + }, + { "id": "disk", "total": 1000000000, "max": 1000000000, "min": 0, "inUse": 0 } + ], + "free": { + "maxJobDuration": 60, + "maxJobs": 3, + "resources": [ + { "id": "cpu", "max": 1, "inUse": 0 }, + { "id": "ram", "max": 1000000000, "inUse": 0 }, + { "id": "disk", "max": 1000000000, "inUse": 0 } + ] + }, + "runningfreeJobs": 0 + } +] +``` + +### `HTTP` POST /api/services/freeCompute + +### `P2P` command: freeStartCompute + +#### Description + +starts a free compute job and returns jobId if succesfull + +#### Parameters + +| name | type | required | description | +| --------------- | ------ | -------- | ----------------------------------------- | +| command | string | v | command name | +| node | string | | if not present it means current node | +| consumerAddress | string | v | consumer address | +| signature | string | v | signature (msg=String(nonce) ) | +| nonce | string | v | nonce for the request | +| datasets | object | | list of ComputeAsset to be used as inputs | +| algorithm | object | | ComputeAlgorithm definition | +| environment | string | v | compute environment to use | +| resources | object | | optional list of required resources | + +#### Request + +```json +{ + "command": "freeStartCompute", + "datasets": [], + "algorithm": { + "meta": { "container": { "image": "ubuntu", "entrypoint": "/bin/bash'" } } + }, + "consumerAddress": "0xC7EC1970B09224B317c52d92f37F5e1E4fF6B687", + "signature": "123", + "nonce": 1, + "environment": "0x7d187e4c751367be694497ead35e2937ece3c7f3b325dcb4f7571e5972d092bd-0xbeaf12703d708f39ef98c3d8939ce458553254176dbb69fe83d535883c4cee38", + "resources": [{ "id": "cpu", "amount": 1 }] +} +``` + +#### Response + +```json +[ + { + "owner": "0xC7EC1970B09224B317c52d92f37F5e1E4fF6B687", + "jobId": "0x7d187e4c751367be694497ead35e2937ece3c7f3b325dcb4f7571e5972d092bd-a4ad237d-dfd8-404c-a5d6-b8fc3a1f66d3", + "dateCreated": "1742291065.119", + "dateFinished": null, + "status": 0, + "statusText": "Job started", + "results": [], + "agreementId": null, + "expireTimestamp": 1742291065.119, + "environment": "0x7d187e4c751367be694497ead35e2937ece3c7f3b325dcb4f7571e5972d092bd-0xf173fdc0a9c7cc1c34f8aaf6b3aafe866795851b567436e1d4fbab17b0e26ca1", + "resources": [ + { "id": "cpu", "amount": 1 }, + { "id": "ram", "amount": 1000000000 }, + { "id": "disk", "amount": 0 } + ], + "isFree": true + } +] +``` + +### `HTTP` GET /api/services/compute + +### `P2P` command: getComputeStatus + +#### Description + +returns job status + +#### Parameters +Required at least one of the following parameters: + +| name | type | required | description | +| --------------- | ------ | -------- | ------------------------------------ | +| consumerAddress | string | | consumer address to use as filter | +| jobId | string | | jobId address to use as filter | +| agreementId | string | | agreementId address to use as filter | + +#### Response + +```json +[ + { + "owner": "0xC7EC1970B09224B317c52d92f37F5e1E4fF6B687", + "did": null, + "jobId": "a4ad237d-dfd8-404c-a5d6-b8fc3a1f66d3", + "dateCreated": "1742291065.119", + "dateFinished": null, + "status": 0, + "statusText": "Job started", + "results": [], + "inputDID": null, + "algoDID": null, + "agreementId": null, + "expireTimestamp": 1742291065.119, + "environment": "0x7d187e4c751367be694497ead35e2937ece3c7f3b325dcb4f7571e5972d092bd-0xf173fdc0a9c7cc1c34f8aaf6b3aafe866795851b567436e1d4fbab17b0e26ca1", + "resources": [ + { + "id": "cpu", + "amount": 1 + }, + { + "id": "ram", + "amount": 1000000000 + }, + { + "id": "disk", + "amount": 1000000000 + } + ], + "isFree": true + } +] +``` + +### `HTTP` GET /api/services/computeResult + +### `P2P` command: getComputeResult + +#### Description + +returns job result + +#### Parameters + +| name | type | required | description | +| --------------- | ------ | -------- | -------------------------------------------------------------- | +| consumerAddress | string | v | consumer address to use as filter | +| jobId | string | v | jobId address to use as filter | +| signature | string | v | signature (consumerAddress + jobId + index.toString() + nonce) | +| nonce | string | v | nonce for the request | +| index | number | v | index of result (0 for main result, 1 for logs) | + +#### Response + +File content diff --git a/docs/C2DV2.md b/docs/C2DV2.md deleted file mode 100644 index 1a835f81b..000000000 --- a/docs/C2DV2.md +++ /dev/null @@ -1,186 +0,0 @@ -# C2D V2 ARHITECTURE - -C2Dv2 continues the concept of bringing algo to the data, allowing both public and private use of datasets for use with algorithms. -Although the previous versions was relying on external components (Provider -> Operator Service (running in k8) -> multiple Operator-Engines (each running in it's own k8 namespace)), C2DV2 is embedded entirely in ocean-node. - -It has a modular approach, allowing multiple compute engines to be connected to the same ocean-node engine. This compute engines can be internal (docker or k8 (if ocean-node runs in a k8 env)), or external (in future, we could integrate projects like Bachalau, iExec, etc (TBD)) - -### Additional features - -- allow multiple c2d engines connected to same ocean-node -- allow multiple jobs(stages) in a workflow -- a job can depend(or not) on a previous stage -> parallel/serial jobs - -![No image](imgs/c2dv2-modules.png 'Arhitecture') - -## Workflows - -A workflow defines one or more jobs to be executed. Each job may have dependencies from a previous job - -``` -[ - index: number - jobId: generated by orchestrator - runAfter: if defined, wait for specific jobId to finish - input: [ - index: number - did?: string - serviceId?: string, - files?: filesObject - ], - algorithm: { - did?: string - serviceId?: string - files?: filesObject - rawcode?: string - container?: { - entrypoint: string - image: string - tag: string - } - } -] -``` - -## Orchestration layer - -Former known as "operator-service", this layer handles interactions between ocean-node core layer and different execution environments. - -In a nutshell, it should: - -- exposing list of compute environments for all engines -- exposing list of running jobs and limits (max concurrent jobs, etc) -- take a new job (created by startJob core handler) -- determine which module to use (docker, k8, Bachalau, etc) -- insert workflow in database -- signal engine handler to take over the job execution -- read workflow status when c2d getStatus core is called -- serve job results when c2d getJobResult is called - -Since, due to technical constrains, both internal modules (docker and k8) will use docker images for data provisioning (old pod-configuration) and results publishing (old pod-publishing), orchestration layer will also expose two new core commands: - -- c2dJobStatusUpdate (called by both pod-config and pob-publishing to update job status) -- c2dJobPublishResult (called by pod-publishing when results have to be uploaded) - -When any of pod-\*\* will call one of those endpoints, we must verify the signature and respond accordingly - -### Payment flow in Orchestration - -Will be based on a escrow contract. -Orchestrator will: - -- compute sum(maxDuration) from all jobs in the workflow -- calculate required fee (depend on previous step, token, environment, etc) -- lock amount in escrow contract -- wait until all jobs are finished (success or not) -- calculate actual duration spent -- compute proof -- withdraw payment & put proof and release the difference back to the customer. - -## C2D Engines - -A C2D Engine is a piece of code that handles c2d jobs that are running on a specific orchestration implementation. - -This documents focuses on internal compute engines: - Docker based (host with docker environment installed) - K8 based (if ocean-node runs inside a k8 cluster) - -An engine that uses external services (like Bachalau) has the same logic, but mostly likely will interact with remote APIs - -An engine is responsible for: - -- store workflows and each job status (so, on restart we can resume flows or continue running flow) -- queue new jobs - -### Docker engine - -This module requires docker service installed at the host level. - -It will leverage Docker API to: - -- create job volume (with quotas) -- start provisioning container (aka pod-configuration) -- monitor it's status -- create yml for algo, with hw constrains (cpu,ram) -- pass devices for gpu envs -- start algorithm container -- monitor algo health & timeout constrains -- stop algo if quota is exceeded -- start publishing container -- delete job volume - -``` -title C2Dv2 message flow for docker module -User -> Ocean-node: start c2d job -Ocean-node -> Orchestration-class: start c2d job -Orchestration-class -> Orchestration-class: determinte module and insert workflow, random private key in db -Orchestration-class -> Docker-engine: queue job -Docker-engine -> Docker_host_api: create job volume -Docker-engine -> Docker-engine: create yaml for pod-configuration, set private key -Docker-engine -> Docker_host_api: start pod-configuration -Pod_configuration -> Pod_configuration: starts ocean-node as pod-config -Pod_configuration -> Ocean-node: call c2dJobProvision -Ocean-node -> Pod_configuration: return workflow -Pod_configuration -> Pod_configuration : download inputs & algo -Pod_configuration -> Ocean-node: call c2dJobStatusUpdate -Ocean-node -> Docker-engine: download success, start algo -Docker-engine -> Docker-engine: create yaml for algo -Docker-engine -> Docker_host_api: start algo container -Docker-engine -> Docker-engine: monitor algo container, stop if timeout -Docker-engine -> Docker-engine: create yaml for pod-publishing, set private key -Docker-engine -> Docker_host_api: start pod-publishing -Docker_host_api -> Pod-Publishing: start as docker container -Pod-Publishing -> Pod-Publishing : prepare output -Pod-Publishing -> Ocean-node: call c2dJobPublishResult -Pod-Publishing -> Ocean-node: call c2dJobStatusUpdate - - -``` - -![No image](imgs/C2Dv2_message_flow_for_docker_module.png 'Arhitecture') - -### kubernetes engine - -This module requires access to k8 credentials (or autodetect them if ocean-node already runs in a k8 cluster). - -It will leverage K8 API to: - -- create job volume (with quotas) -- start provisioning container (aka pod-configuration) -- monitor it's status -- create yml for algo, with hw constrains (cpu,ram) -- pass devices for gpu envs -- start algorithm container -- monitor algo health & timeout constrains -- stop algo if quota is exceeded -- start publishing container -- delete job volume - -## POD-\* common description - -For a efficient communication between ocean-node and the two containers, the easiest way is to use p2p/http api. -Thus, all pod-\* will run a ocean-node instance (each will have a job generated random key), and they will connect to the main ocean-node instance. Main ocean-node instance peerNodeId or http API endpoint will be inserted in yaml. -Each pod-\*\* will use a private key, also exposed in yaml. - -So, each yml of pod-\* will contain the following envs: - nodePeerId ? - nodeHttpApi ? - privateKey - -### Pod-configuration - -In the past, pod-configuration was a standalone repo, built as docker image. -In this implementation, it will be ocean-node, with a different entrypoint (entry_configuration.js) - -Implementation: - -- call ocean-node/c2dJobProvision and get workflow's input section -- download all assets -- call ocean-node/c2dJobStatusUpdate core command to update status (provision finished or errors) - -### Pod-publishing - -In the past, pod-publishing was a standalone repo, built as docker image. -In this implementation, it will be ocean-node, with a different entrypoint (entry_publishing.js) - -Implementation: - -- read output folder -- if multiples files or folders are detected, create a zip with all those files/folders -- call ocean-node/c2dJobPublishResult core command and let ocean-node handle storage -- call ocean-node/c2dJobStatusUpdate core command to update job as done diff --git a/docs/dockerDeployment.md b/docs/dockerDeployment.md index ef1d675d9..5110c8b52 100644 --- a/docs/dockerDeployment.md +++ b/docs/dockerDeployment.md @@ -62,6 +62,23 @@ CONTAINER ID IMAGE COMMAND CREATE 858a59502302 typesense/typesense:26.0 "/opt/typesense-serv…" 17 seconds ago Up 10 seconds 0.0.0.0:8108->8108/tcp, :::8108->8108/tcp typesense ``` +## Upgrade Ocean Node + +Ocean Node container image is updated regularly. To upgrade to the latest version, run the following script. Required updated will be notified through our communication channels. + +```shell +$ ./scripts/ocean-node-update.sh +``` + +If script is not executed you can change permissions and execute it. + +```shell +$ chmod +x scripts/ocean-node-update.sh +$ ./scripts/ocean-node-update.sh +``` + +--- + Additional notes: - the docker compose file generated will have the following format. For all available configurations, refer to the [Environment Variables](https://github.com/oceanprotocol/ocean-node/blob/main/docs/env.md) documentation @@ -91,15 +108,16 @@ services: # ADDRESS_FILE: '' # NODE_ENV: '' # AUTHORIZED_DECRYPTERS: '' + # AUTHORIZED_DECRYPTERS_LIST: '' # OPERATOR_SERVICE_URL: '' INTERFACES: '["HTTP","P2P"]' # ALLOWED_VALIDATORS: '' # INDEXER_NETWORKS: '[]' ALLOWED_ADMINS: '["<>"]' # INDEXER_INTERVAL: '' - DASHBOARD: 'true' + CONTROL_PANEL: 'true' # RATE_DENY_LIST: '' - # MAX_REQ_PER_SECOND: '' + # MAX_REQ_PER_MINUTE: '' # MAX_CHECKSUM_LENGTH: '' # LOG_LEVEL: '' HTTP_API_PORT: '8000' diff --git a/docs/env.md b/docs/env.md index a20500736..aba2718d6 100644 --- a/docs/env.md +++ b/docs/env.md @@ -15,16 +15,28 @@ Environmental variables are also tracked in `ENVIRONMENT_VARIABLES` within `src/ - `ADDRESS_FILE`: File location where Ocean contract addresses are saved. Example: `"ADDRESS_FILE=${HOME}/.ocean/ocean-contracts/artifacts/address.json"` - `NODE_ENV`: Typically used to specify the environment (e.g., development, production) the node is running in. Example: `'development'` - `AUTHORIZED_DECRYPTERS`: A JSON array of addresses that are authorized to decrypt data. Example: `"['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']"` +- `AUTHORIZED_DECRYPTERS_LIST`: AccessList contract addresses (per chain). If present, only accounts present on the given access lists can decrypt data. Example: `"{ \"8996\": [\"0x967da4048cD07aB37855c090aAF366e4ce1b9F48\",\"0x388C818CA8B9251b393131C08a736A67ccB19297\"] }"` - `OPERATOR_SERVICE_URL`: Configures C2D cluster URLs for the node. Example: `"[\"http://example.c2d.cluster1.com\",\"http://example.cd2.cluster2.com\"]"` - `INTERFACES`: Network interfaces the node supports, e.g., HTTP and P2P. By default, if not specified, both are supported. Example: `"[\"HTTP\",\"P2P\"]"` - `ALLOWED_VALIDATORS`: Array of addresses for allowed validators to verify asset signatures before indexing. Example: `"[\"0x123\",\"0x456\"]"` +- `ALLOWED_VALIDATORS_LIST`: Array of access list addresses (per chain) for allowed validators to verify asset signatures before indexing. Example: `"{ \"8996\": [\"0x123\",\"0x456\"]"` - `INDEXER_INTERVAL`: Sets the interval in milliseconds for the indexer to crawl. The default is 30 seconds if not set. Example: `10000` - `INDEXER_NETWORKS`: Specifies the networks the Indexer will crawl. If not set, the Indexer will index all networks defined in the RPCS environment variable. If set to an empty string, indexing will be disabled. Example: `[1, 137]` - `ALLOWED_ADMINS`: Sets the public address of accounts which have access to admin endpoints e.g. shutting down the node. Example: `"[\"0x967da4048cD07aB37855c090aAF366e4ce1b9F48\",\"0x388C818CA8B9251b393131C08a736A67ccB19297\"]"` -- `DASHBOARD`: If `false` the dashboard will not run. If not set or `true` the dashboard will start with the node. Example: `false` +- `ALLOWED_ADMINS_LIST`: Array of access list addresses (per chain) for accounts that have access to admin endpoints. Example: `"{ \"8996\": [\"0x123\",\"0x456\"]"` +- `CONTROL_PANEL`: If `false` the control panel will not run. If not set or `true` the control panel will start with the node. Example: `false` - `RATE_DENY_LIST`: Blocked list of IPs and peer IDs. Example: `"{ \"peers\": [\"16Uiu2HAkuYfgjXoGcSSLSpRPD6XtUgV71t5RqmTmcqdbmrWY9MJo\"], \"ips\": [\"127.0.0.1\"] }"` -- `MAX_REQ_PER_SECOND`: Number of requests per second allowed by the same client. Example: `3` +- `MAX_REQ_PER_MINUTE`: Number of requests per minute allowed by the same client (IP or Peer id). Example: `30` +- `MAX_CONNECTIONS_PER_MINUTE`: Max number of requests allowed per minute (all clients). Example: `120` - `MAX_CHECKSUM_LENGTH`: Define the maximum length for a file if checksum is required (Mb). Example: `10` +- `IS_BOOTSTRAP`: Is this node to be used as bootstrap node or not. Default is `false`. +- `AUTHORIZED_PUBLISHERS`: Authorized list of publishers. If present, Node will only index assets published by the accounts in the list. Example: `"[\"0x967da4048cD07aB37855c090aAF366e4ce1b9F48\",\"0x388C818CA8B9251b393131C08a736A67ccB19297\"]"` +- `AUTHORIZED_PUBLISHERS_LIST`: AccessList contract addresses (per chain). If present, Node will only index assets published by the accounts present on the given access lists. Example: `"{ \"8996\": [\"0x967da4048cD07aB37855c090aAF366e4ce1b9F48\",\"0x388C818CA8B9251b393131C08a736A67ccB19297\"] }"` +- `VALIDATE_UNSIGNED_DDO`: If set to `false`, the node will not validate unsigned DDOs and will request a signed message with the publisher address, nonce and signature. Default is `true`. Example: `false` + +## Payments + +- `ESCROW_CLAIM_TIMEOUT`: Amount of time reserved to claim a escrow payment, in seconds. Defaults to `600`. Example: `600` ## Logs @@ -53,7 +65,7 @@ Environmental variables are also tracked in `ENVIRONMENT_VARIABLES` within `src/ - `P2P_pubsubPeerDiscoveryInterval`: Interval (in ms) for discovery using pubsub. Defaults to `10000` (three seconds). Example: `10000` - `P2P_dhtMaxInboundStreams`: Maximum number of DHT inbound streams. Defaults to `500`. Example: `500` - `P2P_dhtMaxOutboundStreams`: Maximum number of DHT outbound streams. Defaults to `500`. Example: `500` -- `P2P_ENABLE_DHT_SERVER`: Enable DHT server mode. This should be enabled for bootstrapers & well established nodes. Default: `false` +- `P2P_DHT_FILTER`: Filter address in DHT. 0 = (Default) No filter 1. Filter private ddresses. 2. Filter public addresses - `P2P_mDNSInterval`: Interval (in ms) for discovery using mDNS. Defaults to `20000` (20 seconds). Example: `20000` - `P2P_connectionsMaxParallelDials`: Maximum number of parallel dials. Defaults to `150`. Example: `150` - `P2P_connectionsDialTimeout`: Timeout for dial commands. Defaults to `10000` (10 seconds). Example: `10000` @@ -83,3 +95,87 @@ Environmental variables are also tracked in `ENVIRONMENT_VARIABLES` within `src/ - `NODE1_PRIVATE_KEY`: Used on test environments, specifically CI, represents the private key for node 1. Example: `"0xfd5c1ccea015b6d663618850824154a3b3fb2882c46cefb05b9a93fea8c3d215"` - `NODE2_PRIVATE_KEY`: Used on test environments, specifically CI, represents the private key for node 2. Example: `"0x1263dc73bef43a9da06149c7e598f52025bf4027f1d6c13896b71e81bb9233fb"` + +## Cron Jobs + +- `CRON_DELETE_DB_LOGS`: Delete old logs from database Cron expression. Example: `0 0 * * *` (runs every day at midnight) +- `CRON_CLEANUP_C2D_STORAGE`: Clear c2d expired resources/storage and delete old jobs. Example: `*/5 * * * *` (runs every 5 minutes) + +## Compute + +The `DOCKER_COMPUTE_ENVIRONMENTS` environment variable is used to configure Docker-based compute environments in Ocean Node. This guide will walk you through the options available for defining `DOCKER_COMPUTE_ENVIRONMENTS` and how to set it up correctly. + +Example Configuration +The `DOCKER_COMPUTE_ENVIRONMENTS` environment variable should be a JSON array of objects, where each object represents a Docker compute environment configuration. Below is an example configuration: + +```json +[ + { + "socketPath": "/var/run/docker.sock", + "resources": [ + { + "id": "disk", + "total": 1000000000 + } + ], + "storageExpiry": 604800, + "maxJobDuration": 3600, + "fees": { + "1": [ + { + "feeToken": "0x123", + "prices": [ + { + "id": "cpu", + "price": 1 + } + ] + } + ] + }, + "free": { + "maxJobDuration": 60, + "maxJobs": 3, + "resources": [ + { + "id": "cpu", + "max": 1 + }, + { + "id": "ram", + "max": 1000000000 + }, + { + "id": "disk", + "max": 1000000000 + } + ] + } + } +] +``` + +#### Configuration Options + +- **socketPath**: Path to the Docker socket (e.g., docker.sock). +- **storageExpiry**: Amount of seconds for storage expiry.(Mandatory) +- **maxJobDuration**: Maximum duration in seconds for a job.(Mandatory) +- **fees**: Fee structure for the compute environment. + - **feeToken**: Token address for the fee. + - **prices**: Array of resource pricing information. + - **id**: Resource type (e.g., `cpu`, `ram`, `disk`). + - **price**: Price per unit of the resource. +- **resources**: Array of resources available in the compute environment. + - **id**: Resource type (e.g., `cpu`, `ram`, `disk`). + - **total**: Total number of the resource available. + - **min**: Minimum number of the resource needed for a job. + - **max**: Maximum number of the resource for a job. +- **free**: Optional configuration for free jobs. + - **storageExpiry**: Amount of seconds for storage expiry for free jobs. + - **maxJobDuration**: Maximum duration in seconds for a free job. + - **maxJobs**: Maximum number of simultaneous free jobs. + - **resources**: Array of resources available for free jobs. + - **id**: Resource type (e.g., `cpu`, `ram`, `disk`). + - **total**: Total number of the resource available. + - **min**: Minimum number of the resource needed for a job. + - **max**: Maximum number of the resource for a job. diff --git a/docs/imgs/C2Dv2_message_flow_for_docker_module.png b/docs/imgs/C2Dv2_message_flow_for_docker_module.png deleted file mode 100644 index 889088aa0..000000000 Binary files a/docs/imgs/C2Dv2_message_flow_for_docker_module.png and /dev/null differ diff --git a/docs/imgs/c2dv2-modules.png b/docs/imgs/c2dv2-modules.png deleted file mode 100644 index 1bb7e2da6..000000000 Binary files a/docs/imgs/c2dv2-modules.png and /dev/null differ diff --git a/package-lock.json b/package-lock.json index d96c581ca..648a2cda9 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { "name": "ocean-node", - "version": "0.2.0", + "version": "0.2.3", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "ocean-node", - "version": "0.2.0", + "version": "0.2.3", "license": "Apache-2.0", "dependencies": { "@aws-sdk/client-s3": "^3.554.0", @@ -34,25 +34,16 @@ "@libp2p/upnp-nat": "^1.2.1", "@libp2p/websockets": "^8.1.1", "@multiformats/multiaddr": "^10.2.0", - "@oceanprotocol/contracts": "^2.2.0", - "@oceanprotocol/ddo-js": "^0.0.1-next.7", - "@rdfjs/dataset": "^2.0.1", - "@rdfjs/types": "^1.1.0", + "@oceanprotocol/contracts": "^2.3.0", + "@oceanprotocol/ddo-js": "^0.1.1", "@types/lodash.clonedeep": "^4.5.7", - "@types/n3": "^1.16.4", - "@types/rdf-ext": "^2.2.5", - "@types/rdf-utils-fs": "^2.1.5", - "@types/rdfjs__data-model": "^2.0.7", - "@types/rdfjs__dataset": "^2.0.7", - "@types/rdfjs__parser-jsonld": "^2.1.6", - "@types/rdfjs__to-ntriples": "^2.0.6", - "@zazuko/env-node": "^2.1.3", - "aegir": "^37.3.0", "aws-sdk": "^2.1591.0", - "axios": "^1.7.4", + "axios": "^1.8.4", "base58-js": "^2.0.0", "cors": "^2.8.5", "delay": "^5.0.0", + "docker-registry-client": "^3.4.0", + "dockerode": "^4.0.5", "dotenv": "^16.3.1", "eciesjs": "^0.4.5", "eth-crypto": "^2.6.0", @@ -64,20 +55,16 @@ "libp2p": "^1.8.0", "lodash.clonedeep": "^4.5.0", "lzma-purejs-requirejs": "^1.0.0", - "n3": "^1.17.2", "node-cron": "^3.0.3", "private-ip": "^3.0.2", - "rdf-utils-fs": "^3.0.0", - "rdf-validate-shacl": "^0.5.5", - "rdflib": "^2.2.33", - "shacl-engine": "^0.1.2", - "sinon": "^17.0.1", "sqlite3": "^5.1.7", "stream-concat": "^1.0.0", + "tar": "^7.4.3", "ts-node": "^10.9.1", "tsoa": "^5.1.1", "uint8arrays": "^4.0.6", "url-join": "^5.0.0", + "uuid": "^11.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1", "winston-transport": "^4.6.0" @@ -85,13 +72,15 @@ "devDependencies": { "@types/chai": "^4.3.10", "@types/cors": "^2.8.17", + "@types/dockerode": "^3.3.31", "@types/express": "^4.17.17", "@types/ip": "^1.1.3", "@types/lzma-native": "^4.0.4", - "@types/mocha": "^10.0.4", + "@types/mocha": "^10.0.10", "@types/node": "^20.14.2", "@types/node-cron": "^3.0.11", "@types/rdfjs__formats-common": "^3.1.5", + "@types/sinon": "^17.0.4", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", "auto-changelog": "^2.4.0", @@ -102,10 +91,12 @@ "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-promise": "^6.1.1", - "mocha": "^10.2.0", + "mocha": "^11.1.0", + "nyc": "^17.1.0", "prettier": "^3.0.3", "release-it": "^17.6.0", - "tsx": "^3.12.8" + "sinon": "^19.0.2", + "tsx": "^4.19.3" } }, "node_modules/@achingbrain/nat-port-mapper": { @@ -146,6 +137,7 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, "license": "Apache-2.0", "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", @@ -155,15 +147,6 @@ "node": ">=6.0.0" } }, - "node_modules/@arr/every": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@arr/every/-/every-1.0.1.tgz", - "integrity": "sha512-UQFQ6SgyJ6LX42W8rHCs8KVc0JS0tzVL9ct4XYedJukskYVWTo49tNiMEK9C2HTyarbNiT/RVIRSY82vH+6sTg==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/@aws-crypto/crc32": { "version": "5.2.0", "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", @@ -1066,6 +1049,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.24.7", @@ -1079,6 +1063,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.2.tgz", "integrity": "sha512-bYcppcpKBvX4znYaPEeFau03bp89ShqNMLs+rmdptMw+heSZh9+z84d2YG+K7cYLbWwzdjtDoW/uqZmPjulClQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1088,6 +1073,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, "license": "MIT", "dependencies": { "@ampproject/remapping": "^2.2.0", @@ -1118,12 +1104,14 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, "license": "MIT" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1133,6 +1121,7 @@ "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.0.tgz", "integrity": "sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.0", @@ -1144,35 +1133,11 @@ "node": ">=6.9.0" } }, - "node_modules/@babel/helper-annotate-as-pure": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.24.7.tgz", - "integrity": "sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.24.7.tgz", - "integrity": "sha512-xZeCVVdwb4MsDBkkyZ64tReWYrLRHlMN72vP7Bdm3OUOuyFZExhsHUUnuWnm2/XOlAJzR0LfPpB56WXZn0X/lA==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-compilation-targets": { "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/compat-data": "^7.25.2", @@ -1189,6 +1154,7 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, "license": "ISC", "dependencies": { "yallist": "^3.0.2" @@ -1198,6 +1164,7 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", "bin": { "semver": "bin/semver.js" @@ -1207,109 +1174,14 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, "license": "ISC" }, - "node_modules/@babel/helper-create-class-features-plugin": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.25.0.tgz", - "integrity": "sha512-GYM6BxeQsETc9mnct+nIIpf63SAyzvyYN7UB/IlTyd+MBg06afFGp0mIeUqGyWgS2mxad6vqbMrHVlaL3m70sQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/traverse": "^7.25.0", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-class-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.25.2.tgz", - "integrity": "sha512-+wqVGP+DFmqwFD3EH6TMTfUNeqDehV3E/dl+Sd54eaXqm17tEUNbEIn4sVivVowbvUpOtIGxdo3GoXyDH9N/9g==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "regexpu-core": "^5.3.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-create-regexp-features-plugin/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/helper-define-polyfill-provider": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.6.2.tgz", - "integrity": "sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==", - "license": "MIT", - "dependencies": { - "@babel/helper-compilation-targets": "^7.22.6", - "@babel/helper-plugin-utils": "^7.22.5", - "debug": "^4.1.1", - "lodash.debounce": "^4.0.8", - "resolve": "^1.14.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/@babel/helper-environment-visitor": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.24.7.tgz", - "integrity": "sha512-DoiN84+4Gnd0ncbBOM9AZENV4a5ZiL39HYMyZJGZ/AZEykHYdJw0wW3kdcsh9/Kn+BRXHLkkklZ51ecPKmI1CQ==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-member-expression-to-functions": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.24.8.tgz", - "integrity": "sha512-LABppdt+Lp/RlBxqrh4qgf1oEH/WxdzQNDJIu5gC/W1GyvPVrOBiItmmM8wan2fm4oYqFuFfkXmlGpLQhPY8CA==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.8", - "@babel/types": "^7.24.8" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helper-module-imports": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", @@ -1323,6 +1195,7 @@ "version": "7.25.2", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.24.7", @@ -1337,78 +1210,11 @@ "@babel/core": "^7.0.0" } }, - "node_modules/@babel/helper-optimise-call-expression": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.24.7.tgz", - "integrity": "sha512-jKiTsW2xmWwxT1ixIdfXUZp+P5yURx2suzLZr5Hi64rURpDYdMW0pv+Uf17EYk2Rd428Lx4tLsnjGJzYKDM/6A==", - "license": "MIT", - "dependencies": { - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-plugin-utils": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", - "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-remap-async-to-generator": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.25.0.tgz", - "integrity": "sha512-NhavI2eWEIz/H9dbrG0TuOicDhNexze43i5z7lEqwYm0WEZVTwnPpA0EafUTP7+6/W79HWIP2cTe3Z5NiSTVpw==", - "license": "MIT", - "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-wrap-function": "^7.25.0", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, - "node_modules/@babel/helper-replace-supers": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.25.0.tgz", - "integrity": "sha512-q688zIvQVYtZu+i2PsdIu/uWGRpfxzr5WESsfpShfZECkO+d2o+WROWezCi/Q6kJ0tfPa5+pUGUlfx2HhrA3Bg==", - "license": "MIT", - "dependencies": { - "@babel/helper-member-expression-to-functions": "^7.24.8", - "@babel/helper-optimise-call-expression": "^7.24.7", - "@babel/traverse": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0" - } - }, "node_modules/@babel/helper-simple-access": { "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", - "license": "MIT", - "dependencies": { - "@babel/traverse": "^7.24.7", - "@babel/types": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-skip-transparent-expression-wrappers": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.24.7.tgz", - "integrity": "sha512-IO+DLT3LQUElMbpzlatRASEyQtfhSE0+m465v++3jyyXeBTBUjtVZg28/gHeV5mrTJqvEKhKroBGAvhW+qPHiQ==", + "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.24.7", @@ -1422,6 +1228,7 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1431,6 +1238,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -1440,29 +1248,17 @@ "version": "7.24.8", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" } }, - "node_modules/@babel/helper-wrap-function": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.25.0.tgz", - "integrity": "sha512-s6Q1ebqutSiZnEjaofc/UKDyC4SbzV5n5SrA2Gq8UawLycr3i04f1dX4OzoQVnexm6aOCh37SQNYlJ/8Ku+PMQ==", - "license": "MIT", - "dependencies": { - "@babel/template": "^7.25.0", - "@babel/traverse": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, "node_modules/@babel/helpers": { "version": "7.25.0", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.0.tgz", "integrity": "sha512-MjgLZ42aCm0oGjJj8CtSM3DB8NOOf8h2l7DCTePJs29u+v7yO/RBX9nShlKMgFnRks/Q4tBAe7Hxnov9VkGwLw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/template": "^7.25.0", @@ -1476,6 +1272,7 @@ "version": "7.24.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.24.7", @@ -1491,6 +1288,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -1503,6 +1301,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -1517,6 +1316,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -1526,12 +1326,14 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, "license": "MIT" }, "node_modules/@babel/highlight/node_modules/escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -1541,6 +1343,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -1550,6 +1353,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -1562,6 +1366,7 @@ "version": "7.25.3", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.3.tgz", "integrity": "sha512-iLTJKDbJ4hMvFPgQwwsVoxtHyWpKKPBrxkANrSYewDPaPpT5py5yeVkgPIJ7XYXhndxJpaA3PyALSXQ7u8e/Dw==", + "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.2" @@ -1573,19985 +1378,7913 @@ "node": ">=6.0.0" } }, - "node_modules/@babel/plugin-proposal-async-generator-functions": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", - "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", + "node_modules/@babel/runtime": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", + "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-environment-visitor": "^7.18.9", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-remap-async-to-generator": "^7.18.9", - "@babel/plugin-syntax-async-generators": "^7.8.4" + "regenerator-runtime": "^0.14.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-class-properties": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", - "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-create-class-features-plugin": "^7.18.6", - "@babel/helper-plugin-utils": "^7.18.6" + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-export-default-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.24.7.tgz", - "integrity": "sha512-CcmFwUJ3tKhLjPdt4NP+SHMshebytF8ZTYOv5ZDpkzq2sin80Wb5vJrGt8fhPrORQCfoSa0LAxC/DW+GAC5+Hw==", + "node_modules/@babel/traverse": { + "version": "7.25.3", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", + "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/plugin-syntax-export-default-from": "^7.24.7" + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/parser": "^7.25.3", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.2", + "debug": "^4.3.1", + "globals": "^11.1.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", - "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=4" } }, - "node_modules/@babel/plugin-proposal-object-rest-spread": { - "version": "7.20.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", - "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", + "node_modules/@babel/types": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", + "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/compat-data": "^7.20.5", - "@babel/helper-compilation-targets": "^7.20.7", - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-transform-parameters": "^7.20.7" + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" }, "engines": { "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" } }, - "node_modules/@babel/plugin-proposal-optional-catch-binding": { - "version": "7.18.6", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", - "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.18.6", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@balena/dockerignore": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@balena/dockerignore/-/dockerignore-1.0.2.tgz", + "integrity": "sha512-wMue2Sy4GAVTk6Ic4tJVcnfdau+gx2EnG7S+uAEe+TWJFqE4YoWN4/H8MSLj4eYJKxGg26lZwboEniNiNwZQ6Q==" }, - "node_modules/@babel/plugin-proposal-optional-chaining": { - "version": "7.21.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", - "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", - "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", + "node_modules/@bergos/jsonparse": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.2.tgz", + "integrity": "sha512-qUt0QNJjvg4s1zk+AuLM6s/zcsQ8MvGn7+1f0vPuxvpCYa08YtTryuDInngbEyW5fNGGYe2znKt61RMGd5HnXg==", + "engines": [ + "node >= 0.2.0" + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.20.2", - "@babel/helper-skip-transparent-expression-wrappers": "^7.20.0", - "@babel/plugin-syntax-optional-chaining": "^7.8.3" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "buffer": "^6.0.3" } }, - "node_modules/@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "node_modules/@chainsafe/as-chacha20poly1305": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@chainsafe/as-chacha20poly1305/-/as-chacha20poly1305-0.1.0.tgz", + "integrity": "sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew==", + "license": "Apache-2.0" + }, + "node_modules/@chainsafe/as-sha256": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz", + "integrity": "sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==", + "license": "Apache-2.0" + }, + "node_modules/@chainsafe/is-ip": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz", + "integrity": "sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==", + "license": "MIT" + }, + "node_modules/@chainsafe/libp2p-gossipsub": { + "version": "13.1.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-13.1.1.tgz", + "integrity": "sha512-4/9M6N6kUy4Ek/mynRp251fIJdhM0PTKZzUDH4DvSJsmciGenEOUgXQkyYh9Ui1dbuI6dmU/vVLKqmIkaRCtqg==", + "license": "Apache-2.0", + "dependencies": { + "@libp2p/crypto": "^4.0.1", + "@libp2p/interface": "^1.5.0", + "@libp2p/interface-internal": "^1.0.7", + "@libp2p/peer-id": "^4.0.5", + "@libp2p/pubsub": "^9.0.8", + "@multiformats/multiaddr": "^12.1.14", + "denque": "^2.1.0", + "it-length-prefixed": "^9.0.4", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "multiformats": "^13.0.1", + "protons-runtime": "5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.0.1" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "npm": ">=8.7.0" } }, - "node_modules/@babel/plugin-syntax-dynamic-import": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", - "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", - "license": "MIT", + "node_modules/@chainsafe/libp2p-gossipsub/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/@babel/plugin-syntax-export-default-from": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.24.7.tgz", - "integrity": "sha512-bTPz4/635WQ9WhwsyPdxUJDVpsi/X9BMmy/8Rf/UAlOO4jSql4CxUCjWI5PiM+jG+c4LVPTScoTw80geFj9+Bw==", - "license": "MIT", + "node_modules/@chainsafe/libp2p-gossipsub/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "multiformats": "^13.0.0" } }, - "node_modules/@babel/plugin-syntax-flow": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.24.7.tgz", - "integrity": "sha512-9G8GYT/dxn/D1IIKOUBmGX0mnmj46mGH9NnZyJLwtCpgh5f7D2VbuKodb+2s9m1Yavh1s7ASQN8lf0eqrb1LTw==", - "license": "MIT", + "node_modules/@chainsafe/libp2p-noise": { + "version": "15.1.1", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.1.tgz", + "integrity": "sha512-66EPS8gFTkb1jVCiJoY3+ulG/ZTef7kiNZZZvUOUzsLIZYQTi+7pIDBpgmolzSXdsFb8I2hl5mZsvcbzVZB5gg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "@chainsafe/as-chacha20poly1305": "^0.1.0", + "@chainsafe/as-sha256": "^0.4.1", + "@libp2p/crypto": "^4.0.0", + "@libp2p/interface": "^1.5.0", + "@libp2p/peer-id": "^4.0.0", + "@noble/ciphers": "^0.6.0", + "@noble/curves": "^1.1.0", + "@noble/hashes": "^1.3.1", + "it-length-prefixed": "^9.0.1", + "it-length-prefixed-stream": "^1.0.0", + "it-pair": "^2.0.6", + "it-pipe": "^3.0.1", + "it-stream-types": "^2.0.1", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^5.0.0", + "wherearewe": "^2.0.1" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/@babel/plugin-syntax-jsx": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", - "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", - "license": "MIT", + "node_modules/@chainsafe/libp2p-noise/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "multiformats": "^13.0.0" } }, - "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "license": "MIT", + "node_modules/@chainsafe/libp2p-yamux": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz", + "integrity": "sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@libp2p/interface": "^1.1.3", + "@libp2p/utils": "^5.2.5", + "get-iterator": "^2.0.1", + "it-foreach": "^2.0.6", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "uint8arraylist": "^2.4.8" } }, - "node_modules/@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "node_modules/@chainsafe/netmask": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz", + "integrity": "sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@chainsafe/is-ip": "^2.0.1" } }, - "node_modules/@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "node_modules/@cspotcode/source-map-support": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", + "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" + "@jridgewell/trace-mapping": "0.3.9" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "engines": { + "node": ">=12" } }, - "node_modules/@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", + "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.8.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@jridgewell/resolve-uri": "^3.0.3", + "@jridgewell/sourcemap-codec": "^1.4.10" } }, - "node_modules/@babel/plugin-syntax-typescript": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.24.7.tgz", - "integrity": "sha512-c/+fVeJBB0FeKsFvwytYiUD+LBvhHjGSI0g446PRGdSVGZLRNArBUno2PETbAly3tpiNAQR5XaZ+JslxkotsbA==", + "node_modules/@dabh/diagnostics": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", + "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "colorspace": "1.1.x", + "enabled": "2.0.x", + "kuler": "^2.0.0" } }, - "node_modules/@babel/plugin-transform-arrow-functions": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.24.7.tgz", - "integrity": "sha512-Dt9LQs6iEY++gXUwY03DNFat5C2NbO48jj+j/bSAz6b3HgPs39qcPiYt77fDObIcFwj3/C2ICX9YMwGflUoSHQ==", - "license": "MIT", + "node_modules/@digitalbazaar/http-client": { + "version": "3.4.1", + "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", + "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", + "license": "BSD-3-Clause", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" + "ky": "^0.33.3", + "ky-universal": "^0.11.0", + "undici": "^5.21.2" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=14.0" } }, - "node_modules/@babel/plugin-transform-block-scoping": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.25.0.tgz", - "integrity": "sha512-yBQjYoOjXlFv9nlXb3f1casSHOZkWr29NX+zChVanLg5Nc157CrbEX9D7hxxtTpuFy7Q0YzmmWfJxzvps4kXrQ==", - "license": "MIT", + "node_modules/@elastic/elasticsearch": { + "version": "8.16.1", + "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.1.tgz", + "integrity": "sha512-ddBaY9ITag4egeYNY+uGWi7QZSX2x+SWTEum1bvfspbEU/G5Q3g6sdlBAkg29NWIpINH6FEnaanGeO7XjNvSHQ==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" + "@elastic/transport": "^8.9.1", + "apache-arrow": "^18.0.0", + "tslib": "^2.4.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-classes": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.25.0.tgz", - "integrity": "sha512-xyi6qjr/fYU304fiRwFbekzkqVJZ6A7hOjWZd+89FVcBqPV3S9Wuozz82xdpLspckeaafntbzglaW4pqpzvtSw==", - "license": "MIT", + "node_modules/@elastic/transport": { + "version": "8.9.1", + "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.9.1.tgz", + "integrity": "sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw==", + "license": "Apache-2.0", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-replace-supers": "^7.25.0", - "@babel/traverse": "^7.25.0", - "globals": "^11.1.0" + "@opentelemetry/api": "1.x", + "debug": "^4.3.4", + "hpagent": "^1.0.0", + "ms": "^2.1.3", + "secure-json-parse": "^2.4.0", + "tslib": "^2.4.0", + "undici": "^6.12.0" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": ">=18" } }, - "node_modules/@babel/plugin-transform-classes/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "node_modules/@elastic/transport/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/@elastic/transport/node_modules/undici": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", + "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">=18.17" } }, - "node_modules/@babel/plugin-transform-computed-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.24.7.tgz", - "integrity": "sha512-25cS7v+707Gu6Ds2oY6tCkUwsJ9YIDbggd9+cu9jzzDgiNq7hR/8dkzxWfKWnTic26vsI3EsCXNd4iEB6e8esQ==", + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/template": "^7.24.7" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@babel/core": "^7.0.0-0" + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@babel/plugin-transform-destructuring": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.24.8.tgz", - "integrity": "sha512-36e87mfY8TnRxc7yc6M9g9gOB7rKgSahqkIKwLpz4Ppk2+zC2Cy1is0uwtuSG6AE4zlTOUa+7JGz9jCJGLqQFQ==", + "node_modules/@eslint-community/regexpp": { + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-exponentiation-operator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.24.7.tgz", - "integrity": "sha512-Rqe/vSc9OYgDajNIK35u7ot+KeCoetqQYFXM4Epf7M7ez3lWlOjrDjrwMei6caCVhfdw+mIKD4cgdGNy5JQotQ==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-builder-binary-assignment-operator-visitor": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } - }, - "node_modules/@babel/plugin-transform-flow-strip-types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.25.2.tgz", - "integrity": "sha512-InBZ0O8tew5V0K6cHcQ+wgxlrjOw1W4wDXLkOTjLRD8GYhTSkxTVBtdy3MMtvYBrbAWa1Qm3hNoTc1620Yj+Mg==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-flow": "^7.24.7" + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" }, "engines": { - "node": ">=6.9.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@babel/plugin-transform-for-of": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.24.7.tgz", - "integrity": "sha512-wo9ogrDG1ITTTBsy46oGiN1dS9A7MROBTcYsfS8DtsImMkHk9JXJ3EWQM6X2SUw4x80uGPlwj0o00Uoc6nEE3g==", + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/@babel/plugin-transform-function-name": { - "version": "7.25.1", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.25.1.tgz", - "integrity": "sha512-TVVJVdW9RKMNgJJlLtHsKDTydjZAbwIsn6ySBPQaEAUU5+gVvlJt/9nRmqVbsV/IBanRjzWoaAQKLoamWVOUuA==", - "license": "MIT", + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/helper-compilation-targets": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/traverse": "^7.25.1" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "*" } }, - "node_modules/@babel/plugin-transform-literals": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.25.2.tgz", - "integrity": "sha512-HQI+HcTbm9ur3Z2DkO+jgESMAMcYLuN/A7NRw9juzxAezN9AvqvUTnpKP/9kkYANz6u7dFlAyOu44ejuGySlfw==", + "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.8" - }, "engines": { - "node": ">=6.9.0" + "node": ">=8" }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@babel/plugin-transform-modules-commonjs": { - "version": "7.24.8", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.24.8.tgz", - "integrity": "sha512-WHsk9H8XxRs3JXKWFiqtQebdh9b/pTk4EgueygFzYlTKAg0Ud985mSevdNjdXdFBATSKVJGQXP1tv6aGbssLKA==", + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, "license": "MIT", - "dependencies": { - "@babel/helper-module-transforms": "^7.24.8", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-simple-access": "^7.24.7" - }, "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@babel/plugin-transform-object-assign": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-assign/-/plugin-transform-object-assign-7.24.7.tgz", - "integrity": "sha512-DOzAi77P9jSyPijHS7Z8vH0wLRcZH6wWxuIZgLAiy8FWOkcKMJmnyHjy2JM94k6A0QxlA/hlLh+R9T3GEryjNQ==", + "node_modules/@ethereumjs/common": { + "version": "2.6.5", + "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", + "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "crc-32": "^1.2.0", + "ethereumjs-util": "^7.1.5" } }, - "node_modules/@babel/plugin-transform-parameters": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.24.7.tgz", - "integrity": "sha512-yGWW5Rr+sQOhK0Ot8hjDJuxU3XLRQGflvT4lhlSY0DFvdb3TwKaY26CJzHtYllU0vT9j58hc37ndFPsqT1SrzA==", - "license": "MIT", + "node_modules/@ethereumjs/tx": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", + "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", + "license": "MPL-2.0", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethereumjs/common": "^2.6.4", + "ethereumjs-util": "^7.1.5" } }, - "node_modules/@babel/plugin-transform-react-display-name": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.24.7.tgz", - "integrity": "sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==", + "node_modules/@ethersproject/abi": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", + "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-react-jsx": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.25.2.tgz", - "integrity": "sha512-KQsqEAVBpU82NM/B/N9j9WOdphom1SZH3R+2V7INrQUH+V9EBFwZsEJl8eBIVeQE62FxJCc70jzEZwqU7RcVqA==", + "node_modules/@ethersproject/abstract-provider": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", + "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/plugin-syntax-jsx": "^7.24.7", - "@babel/types": "^7.25.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-react-jsx-self": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.24.7.tgz", - "integrity": "sha512-fOPQYbGSgH0HUp4UJO4sMBFjY6DuWq+2i8rixyUMb3CdGixs/gccURvYOAhajBdKDoGajFr3mUq5rH3phtkGzw==", + "node_modules/@ethersproject/abstract-signer": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", + "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-react-jsx-source": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.24.7.tgz", - "integrity": "sha512-J2z+MWzZHVOemyLweMqngXrgGC42jQ//R0KdxqkIz/OrbVIIlhFI3WigZ5fO+nwFvBlncr4MGapd8vTyc7RPNQ==", + "node_modules/@ethersproject/address": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", + "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/rlp": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.24.7.tgz", - "integrity": "sha512-lq3fvXPdimDrlg6LWBoqj+r/DEWgONuwjuOuQCSYgRroXDH/IdM1C0IZf59fL5cHLpjEH/O6opIRBbqv7ELnuA==", + "node_modules/@ethersproject/base64": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", + "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "regenerator-transform": "^0.15.2" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/bytes": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-runtime": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.24.7.tgz", - "integrity": "sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==", + "node_modules/@ethersproject/basex": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", + "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-module-imports": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7", - "babel-plugin-polyfill-corejs2": "^0.4.10", - "babel-plugin-polyfill-corejs3": "^0.10.1", - "babel-plugin-polyfill-regenerator": "^0.6.1", - "semver": "^6.3.1" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/properties": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@babel/plugin-transform-shorthand-properties": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.24.7.tgz", - "integrity": "sha512-KsDsevZMDsigzbA09+vacnLpmPH4aWjcZjXdyFKGzpplxhbeB4wYtury3vglQkg6KM/xEPKt73eCjPPf1PgXBA==", + "node_modules/@ethersproject/bignumber": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", + "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "bn.js": "^5.2.1" } }, - "node_modules/@babel/plugin-transform-spread": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.24.7.tgz", - "integrity": "sha512-x96oO0I09dgMDxJaANcRyD4ellXFLLiWhuwDxKZX5g2rWP1bTPkBSwCYv96VDXVT1bD9aPj8tppr5ITIh8hBng==", - "license": "MIT", - "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" - } + "node_modules/@ethersproject/bignumber/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, - "node_modules/@babel/plugin-transform-sticky-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.24.7.tgz", - "integrity": "sha512-kHPSIJc9v24zEml5geKg9Mjx5ULpfncj0wRpYtxbvKyTtHCYDkVE3aHQ03FrpEo4gEe2vrJJS1Y9CJTaThA52g==", + "node_modules/@ethersproject/bytes": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", + "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-template-literals": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.24.7.tgz", - "integrity": "sha512-AfDTQmClklHCOLxtGoP7HkeMw56k1/bTQjwsfhL6pppo/M4TOBSq+jjBUBLmV/4oeFg4GWMavIl44ZeCtmmZTw==", + "node_modules/@ethersproject/constants": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", + "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/bignumber": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-typescript": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.25.2.tgz", - "integrity": "sha512-lBwRvjSmqiMYe/pS0+1gggjJleUJi7NzjvQ1Fkqtt69hBa/0t1YuW/MLQMAPixfwaQOHUXsd6jeU3Z+vdGv3+A==", + "node_modules/@ethersproject/contracts": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", + "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-annotate-as-pure": "^7.24.7", - "@babel/helper-create-class-features-plugin": "^7.25.0", - "@babel/helper-plugin-utils": "^7.24.8", - "@babel/helper-skip-transparent-expression-wrappers": "^7.24.7", - "@babel/plugin-syntax-typescript": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/abi": "^5.7.0", + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/transactions": "^5.7.0" } }, - "node_modules/@babel/plugin-transform-unicode-regex": { - "version": "7.24.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.24.7.tgz", - "integrity": "sha512-hlQ96MBZSAXUq7ltkjtu3FJCCSMx/j629ns3hA3pXnBXjanNP0LHi+JpPeA81zaWgVK1VGH95Xuy7u0RyQ8kMg==", + "node_modules/@ethersproject/hash": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", + "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/helper-create-regexp-features-plugin": "^7.24.7", - "@babel/helper-plugin-utils": "^7.24.7" - }, - "engines": { - "node": ">=6.9.0" - }, - "peerDependencies": { - "@babel/core": "^7.0.0-0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/@babel/regjsgen": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/@babel/regjsgen/-/regjsgen-0.8.0.tgz", - "integrity": "sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==", - "license": "MIT" - }, - "node_modules/@babel/runtime": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.0.tgz", - "integrity": "sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==", + "node_modules/@ethersproject/hdnode": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", + "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "regenerator-runtime": "^0.14.0" - }, - "engines": { - "node": ">=6.9.0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, - "node_modules/@babel/template": { - "version": "7.25.0", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", - "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "node_modules/@ethersproject/json-wallets": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", + "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/parser": "^7.25.0", - "@babel/types": "^7.25.0" - }, - "engines": { - "node": ">=6.9.0" + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/pbkdf2": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, - "node_modules/@babel/traverse": { - "version": "7.25.3", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.3.tgz", - "integrity": "sha512-HefgyP1x754oGCsKmV5reSmtV7IXj/kpaE1XYY+D9G5PvKKoFfSbiS4M77MdjuwlZKDIKFCffq9rPU+H/s3ZdQ==", + "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", + "license": "MIT" + }, + "node_modules/@ethersproject/keccak256": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", + "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.24.7", - "@babel/generator": "^7.25.0", - "@babel/parser": "^7.25.3", - "@babel/template": "^7.25.0", - "@babel/types": "^7.25.2", - "debug": "^4.3.1", - "globals": "^11.1.0" - }, - "engines": { - "node": ">=6.9.0" + "@ethersproject/bytes": "^5.7.0", + "js-sha3": "0.8.0" } }, - "node_modules/@babel/traverse/node_modules/globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@babel/types": { - "version": "7.25.2", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.2.tgz", - "integrity": "sha512-YTnYtra7W9e6/oAZEHj0bJehPRUlLH9/fbpT5LfB0NhQXyALCRkRs3zH9v07IYhkgpqX6Z78FnuccZr/l4Fs4Q==", - "license": "MIT", - "dependencies": { - "@babel/helper-string-parser": "^7.24.8", - "@babel/helper-validator-identifier": "^7.24.7", - "to-fast-properties": "^2.0.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "license": "MIT" - }, - "node_modules/@bergos/jsonparse": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/@bergos/jsonparse/-/jsonparse-1.4.1.tgz", - "integrity": "sha512-vXIT0nzZGX/+yMD5bx2VhTzc92H55tPoehh1BW/FZHOndWGFddrH3MAfdx39FRc7irABirW6EQaGxIJYV6CGuA==", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3" - } - }, - "node_modules/@chainsafe/as-chacha20poly1305": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/@chainsafe/as-chacha20poly1305/-/as-chacha20poly1305-0.1.0.tgz", - "integrity": "sha512-BpNcL8/lji/GM3+vZ/bgRWqJ1q5kwvTFmGPk7pxm/QQZDbaMI98waOHjEymTjq2JmdD/INdNBFOVSyJofXg7ew==", - "license": "Apache-2.0" - }, - "node_modules/@chainsafe/as-sha256": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@chainsafe/as-sha256/-/as-sha256-0.4.2.tgz", - "integrity": "sha512-HJ8GZBRjLeWtRsAXf3EbNsNzmTGpzTFjfpSf4yHkLYC+E52DhT6hwz+7qpj6I/EmFzSUm5tYYvT9K8GZokLQCQ==", - "license": "Apache-2.0" - }, - "node_modules/@chainsafe/is-ip": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@chainsafe/is-ip/-/is-ip-2.0.2.tgz", - "integrity": "sha512-ndGqEMG1W5WkGagaqOZHpPU172AGdxr+LD15sv3WIUvT5oCFUrG1Y0CW/v2Egwj4JXEvSibaIIIqImsm98y1nA==", - "license": "MIT" - }, - "node_modules/@chainsafe/libp2p-gossipsub": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-gossipsub/-/libp2p-gossipsub-13.1.1.tgz", - "integrity": "sha512-4/9M6N6kUy4Ek/mynRp251fIJdhM0PTKZzUDH4DvSJsmciGenEOUgXQkyYh9Ui1dbuI6dmU/vVLKqmIkaRCtqg==", - "license": "Apache-2.0", - "dependencies": { - "@libp2p/crypto": "^4.0.1", - "@libp2p/interface": "^1.5.0", - "@libp2p/interface-internal": "^1.0.7", - "@libp2p/peer-id": "^4.0.5", - "@libp2p/pubsub": "^9.0.8", - "@multiformats/multiaddr": "^12.1.14", - "denque": "^2.1.0", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "multiformats": "^13.0.1", - "protons-runtime": "5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.0.1" - }, - "engines": { - "npm": ">=8.7.0" - } - }, - "node_modules/@chainsafe/libp2p-gossipsub/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@chainsafe/libp2p-gossipsub/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@chainsafe/libp2p-noise": { - "version": "15.1.1", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-noise/-/libp2p-noise-15.1.1.tgz", - "integrity": "sha512-66EPS8gFTkb1jVCiJoY3+ulG/ZTef7kiNZZZvUOUzsLIZYQTi+7pIDBpgmolzSXdsFb8I2hl5mZsvcbzVZB5gg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/as-chacha20poly1305": "^0.1.0", - "@chainsafe/as-sha256": "^0.4.1", - "@libp2p/crypto": "^4.0.0", - "@libp2p/interface": "^1.5.0", - "@libp2p/peer-id": "^4.0.0", - "@noble/ciphers": "^0.6.0", - "@noble/curves": "^1.1.0", - "@noble/hashes": "^1.3.1", - "it-length-prefixed": "^9.0.1", - "it-length-prefixed-stream": "^1.0.0", - "it-pair": "^2.0.6", - "it-pipe": "^3.0.1", - "it-stream-types": "^2.0.1", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^5.0.0", - "wherearewe": "^2.0.1" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@chainsafe/libp2p-noise/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@chainsafe/libp2p-yamux": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/@chainsafe/libp2p-yamux/-/libp2p-yamux-6.0.2.tgz", - "integrity": "sha512-S5OkLHqYhEVMQQ4BTgnRANEIbGTQhaC23glCgBwGdeoTRtMpIozwDiPfljFLCm0RYWdCRJw9oFztO95KUHjptA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.1.3", - "@libp2p/utils": "^5.2.5", - "get-iterator": "^2.0.1", - "it-foreach": "^2.0.6", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@chainsafe/netmask": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@chainsafe/netmask/-/netmask-2.0.0.tgz", - "integrity": "sha512-I3Z+6SWUoaljh3TBzCnCxjlUyN8tA+NAk5L6m9IxvCf1BENQTePzPMis97CoN/iMW1St3WN+AWCCRp+TTBRiDg==", - "license": "MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1" - } - }, - "node_modules/@colors/colors": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", - "integrity": "sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", - "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@cspotcode/source-map-support/node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", - "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz", - "integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==", - "license": "MIT", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "node_modules/@digitalbazaar/http-client": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/@digitalbazaar/http-client/-/http-client-3.4.1.tgz", - "integrity": "sha512-Ahk1N+s7urkgj7WvvUND5f8GiWEPfUw0D41hdElaqLgu8wZScI8gdI0q+qWw5N1d35x7GCRH2uk9mi+Uzo9M3g==", - "license": "BSD-3-Clause", - "dependencies": { - "ky": "^0.33.3", - "ky-universal": "^0.11.0", - "undici": "^5.21.2" - }, - "engines": { - "node": ">=14.0" - } - }, - "node_modules/@elastic/elasticsearch": { - "version": "8.16.1", - "resolved": "https://registry.npmjs.org/@elastic/elasticsearch/-/elasticsearch-8.16.1.tgz", - "integrity": "sha512-ddBaY9ITag4egeYNY+uGWi7QZSX2x+SWTEum1bvfspbEU/G5Q3g6sdlBAkg29NWIpINH6FEnaanGeO7XjNvSHQ==", - "license": "Apache-2.0", - "dependencies": { - "@elastic/transport": "^8.9.1", - "apache-arrow": "^18.0.0", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@elastic/transport": { - "version": "8.9.1", - "resolved": "https://registry.npmjs.org/@elastic/transport/-/transport-8.9.1.tgz", - "integrity": "sha512-jasKNQeOb1vNf9aEYg+8zXmetaFjApDTSCC4QTl6aTixvyiRiSLcCiB8P6Q0lY9JIII/BhqNl8WbpFnsKitntw==", - "license": "Apache-2.0", - "dependencies": { - "@opentelemetry/api": "1.x", - "debug": "^4.3.4", - "hpagent": "^1.0.0", - "ms": "^2.1.3", - "secure-json-parse": "^2.4.0", - "tslib": "^2.4.0", - "undici": "^6.12.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@elastic/transport/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/@elastic/transport/node_modules/undici": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici/-/undici-6.21.0.tgz", - "integrity": "sha512-BUgJXc752Kou3oOIuU1i+yZZypyZRqNPW0vqoMPl8VaoalSfeR0D8/t4iAS3yirs79SSMTxTag+ZC86uswv+Cw==", - "license": "MIT", - "engines": { - "node": ">=18.17" - } - }, - "node_modules/@electron/get": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@electron/get/-/get-2.0.3.tgz", - "integrity": "sha512-Qkzpg2s9GnVV2I2BjRksUi43U5e6+zaQMcjoJy0C+C5oxaKl+fmckGDQFtRpZpZV0NQekuZZ+tGz7EA9TVnQtQ==", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "env-paths": "^2.2.0", - "fs-extra": "^8.1.0", - "got": "^11.8.5", - "progress": "^2.0.3", - "semver": "^6.2.0", - "sumchecker": "^3.0.1" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "global-agent": "^3.0.0" - } - }, - "node_modules/@electron/get/node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@electron/get/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/@electron/get/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/@electron/get/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/@electron/get/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/@es-joy/jsdoccomment": { - "version": "0.10.8", - "resolved": "https://registry.npmjs.org/@es-joy/jsdoccomment/-/jsdoccomment-0.10.8.tgz", - "integrity": "sha512-3P1JiGL4xaR9PoTKUHa2N/LKwa2/eUdRqGwijMWWgBqbFEqJUVpmaOi2TcjcemrsRMgFLBzQCK4ToPhrSVDiFQ==", - "license": "MIT", - "dependencies": { - "comment-parser": "1.2.4", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "1.1.1" - }, - "engines": { - "node": "^12 || ^14 || ^16" - } - }, - "node_modules/@es-joy/jsdoccomment/node_modules/jsdoc-type-pratt-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.1.1.tgz", - "integrity": "sha512-uelRmpghNwPBuZScwgBG/OzodaFk5RbO5xaivBdsAY70icWfShwZ7PCMO0x1zSkOa8T1FzHThmrdoyg/0AwV5g==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.16.17.tgz", - "integrity": "sha512-y+EHuSchhL7FjHgvQL/0fnnFmO4T1bhvWANX6gcnqTjtnKWbTvUMCpGnv2+t+31d7RzyEAYAd4u2fnIhHL6N/Q==", - "cpu": [ - "x64" - ], - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=12" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.11.0", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", - "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", - "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@eslint/eslintrc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@eslint/js": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", - "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/@ethereumjs/common": { - "version": "2.6.5", - "resolved": "https://registry.npmjs.org/@ethereumjs/common/-/common-2.6.5.tgz", - "integrity": "sha512-lRyVQOeCDaIVtgfbowla32pzeDv2Obr8oR8Put5RdUBNRGr1VGPGQNGP6elWIpgK3YdpzqTOh4GyUGOureVeeA==", - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethereumjs/tx": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/@ethereumjs/tx/-/tx-3.5.2.tgz", - "integrity": "sha512-gQDNJWKrSDGu2w7w0PzVXVBNMzb7wwdDOmOqczmhNjqFxFuIbhVJDwiGEnxFNC2/b8ifcZzY7MLcluizohRzNw==", - "license": "MPL-2.0", - "dependencies": { - "@ethereumjs/common": "^2.6.4", - "ethereumjs-util": "^7.1.5" - } - }, - "node_modules/@ethersproject/abi": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.7.0.tgz", - "integrity": "sha512-351ktp42TiRcYB3H1OP8yajPeAQstMW/yCFokj/AthP9bLHzQFPlOrxOcwYEDkUAICmOHljvN4K39OMTMUa9RA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-provider": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.7.0.tgz", - "integrity": "sha512-R41c9UkchKCpAqStMYUpdunjo3pkEvZC3FAwZn5S5MGbXoMQOHIdHItezTETxAO5bevtMApSyEhn9+CHcDsWBw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0" - } - }, - "node_modules/@ethersproject/abstract-signer": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.7.0.tgz", - "integrity": "sha512-a16V8bq1/Cz+TGCkE2OPMTOUDLS3grCpdjoJCYNnVBbdYEMSgKrU0+B90s8b6H+ByYTBZN7a3g76jdIJi7UfKQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/address": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.7.0.tgz", - "integrity": "sha512-9wYhYt7aghVGo758POM5nqcOMaE168Q6aRLJZwUmiqSrAungkG74gSSeKEIR7ukixesdRZGPgVqme6vmxs1fkA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/rlp": "^5.7.0" - } - }, - "node_modules/@ethersproject/base64": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.7.0.tgz", - "integrity": "sha512-Dr8tcHt2mEbsZr/mwTPIQAf3Ai0Bks/7gTw9dSqk1mQvhW3XvRlmDJr/4n+wg1JmCl16NZue17CDh8xb/vZ0sQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0" - } - }, - "node_modules/@ethersproject/basex": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.7.0.tgz", - "integrity": "sha512-ywlh43GwZLv2Voc2gQVTKBoVQ1mti3d8HK5aMxsfu/nRDnMmNqaSJ3r3n85HBByT8OpoY96SXM1FogC533T4zw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/properties": "^5.7.0" - } - }, - "node_modules/@ethersproject/bignumber": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.7.0.tgz", - "integrity": "sha512-n1CAdIHRWjSucQO3MC1zPSVgV/6dy/fjL9pMrPP9peL+QxEg9wOsVqwD4+818B6LUEtaXzVHQiuivzRoxPxUGw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "bn.js": "^5.2.1" - } - }, - "node_modules/@ethersproject/bignumber/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/@ethersproject/bytes": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.7.0.tgz", - "integrity": "sha512-nsbxwgFXWh9NyYWo+U8atvmMsSdKJprTcICAkvbBffT75qDocbuggBU0SJiVK2MuTrp0q+xvLkTnGMPK1+uA9A==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/constants": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.7.0.tgz", - "integrity": "sha512-DHI+y5dBNvkpYUMiRQyxRBYBefZkJfo70VUkUAsRjcPs47muV9evftfZ0PJVCXYbAiCgght0DtcF9srFQmIgWA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0" - } - }, - "node_modules/@ethersproject/contracts": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.7.0.tgz", - "integrity": "sha512-5GJbzEU3X+d33CdfPhcyS+z8MzsTrBGk/sc+G+59+tPa9yFkl6HQ9D6L0QMgNTA9q8dT0XKxxkyp883XsQvbbg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abi": "^5.7.0", - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/transactions": "^5.7.0" - } - }, - "node_modules/@ethersproject/hash": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.7.0.tgz", - "integrity": "sha512-qX5WrQfnah1EFnO5zJv1v46a8HW0+E5xuBBDTwMFZLuVTx0tbU2kkx15NqdjxecrLGatQN9FGQKpb1FKdHCt+g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/hdnode": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.7.0.tgz", - "integrity": "sha512-OmyYo9EENBPPf4ERhR7oj6uAtUAhYGqOnIS+jE5pTXvdKBS99ikzq1E7Iv0ZQZ5V36Lqx1qZLeak0Ra16qpeOg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/json-wallets": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.7.0.tgz", - "integrity": "sha512-8oee5Xgu6+RKgJTkvEMl2wDgSPSAQ9MB/3JYjFV9jlKvcYHUXZC+cQp0njgmxdHkYWn8s6/IqIZYm0YWCjO/0g==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/pbkdf2": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "aes-js": "3.0.0", - "scrypt-js": "3.0.1" - } - }, - "node_modules/@ethersproject/json-wallets/node_modules/aes-js": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", - "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", - "license": "MIT" - }, - "node_modules/@ethersproject/keccak256": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.7.0.tgz", - "integrity": "sha512-2UcPboeL/iW+pSg6vZ6ydF8tCnv3Iu/8tUmLLzWWGzxWKFFqOBQFLo6uLUv6BDrLgCDfN28RJ/wtByx+jZ4KBg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "js-sha3": "0.8.0" - } - }, - "node_modules/@ethersproject/logger": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", - "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT" - }, - "node_modules/@ethersproject/networks": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", - "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/pbkdf2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", - "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/sha2": "^5.7.0" - } - }, - "node_modules/@ethersproject/properties": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", - "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/providers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", - "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/base64": "^5.7.0", - "@ethersproject/basex": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/networks": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/web": "^5.7.0", - "bech32": "1.1.4", - "ws": "7.4.6" - } - }, - "node_modules/@ethersproject/providers/node_modules/ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "license": "MIT", - "engines": { - "node": ">=8.3.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": "^5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/@ethersproject/random": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", - "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/rlp": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", - "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/sha2": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", - "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", - "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "bn.js": "^5.2.1", - "elliptic": "6.5.4", - "hash.js": "1.1.7" - } - }, - "node_modules/@ethersproject/signing-key/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" - }, - "node_modules/@ethersproject/solidity": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", - "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/sha2": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/strings": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", - "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/transactions": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", - "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/rlp": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0" - } - }, - "node_modules/@ethersproject/units": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", - "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/constants": "^5.7.0", - "@ethersproject/logger": "^5.7.0" - } - }, - "node_modules/@ethersproject/wallet": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", - "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/abstract-provider": "^5.7.0", - "@ethersproject/abstract-signer": "^5.7.0", - "@ethersproject/address": "^5.7.0", - "@ethersproject/bignumber": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/hdnode": "^5.7.0", - "@ethersproject/json-wallets": "^5.7.0", - "@ethersproject/keccak256": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/random": "^5.7.0", - "@ethersproject/signing-key": "^5.7.0", - "@ethersproject/transactions": "^5.7.0", - "@ethersproject/wordlists": "^5.7.0" - } - }, - "node_modules/@ethersproject/web": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", - "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/base64": "^5.7.0", - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@ethersproject/wordlists": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", - "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", - "dependencies": { - "@ethersproject/bytes": "^5.7.0", - "@ethersproject/hash": "^5.7.0", - "@ethersproject/logger": "^5.7.0", - "@ethersproject/properties": "^5.7.0", - "@ethersproject/strings": "^5.7.0" - } - }, - "node_modules/@fastify/busboy": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", - "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", - "license": "MIT", - "engines": { - "node": ">=14" - } - }, - "node_modules/@frogcat/ttl2jsonld": { - "version": "0.0.9", - "resolved": "https://registry.npmjs.org/@frogcat/ttl2jsonld/-/ttl2jsonld-0.0.9.tgz", - "integrity": "sha512-oT3Abc9sEnwcCx9cTgRCTbz+Y/9fvbqfW22A5V4ChoQ8/P++2eAvlWgUghFoNm2V9U3/CCDSP9HTGJ51D+n1Uw==", - "license": "MIT", - "bin": { - "ttl2jsonld": "bin/cli.js" - } - }, - "node_modules/@gar/promisify": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", - "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", - "license": "MIT", - "optional": true - }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.14", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", - "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", - "deprecated": "Use @eslint/config-array instead", - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^2.0.2", - "debug": "^4.3.1", - "minimatch": "^3.0.5" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/object-schema": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", - "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", - "deprecated": "Use @eslint/object-schema instead", - "license": "BSD-3-Clause" - }, - "node_modules/@iarna/toml": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", - "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", - "dev": true, - "license": "ISC" - }, - "node_modules/@inquirer/figures": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", - "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@jclem/logfmt2": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/@jclem/logfmt2/-/logfmt2-2.4.3.tgz", - "integrity": "sha512-d7zluLlx+JRtVICF0+ghcrVdXBdE3eXrpIuFdcCcWxA3ABOyemkTySG4ha2AdsWFwAnh8tkB1vtyeZsWAbLumg==", - "license": "MIT", - "engines": { - "node": ">= 14.x", - "npm": ">= 7.x" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "license": "MIT", - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", - "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@kikobeats/time-span": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@kikobeats/time-span/-/time-span-1.0.5.tgz", - "integrity": "sha512-txRAdmi35N1wnsLS1AO5mTlbY5Cv5/61WXqek2y3L9Q7u4mgdUVq819so5xe753hL5gYeLzlWoJ/VJfXg9nx8g==", - "license": "MIT", - "engines": { - "node": ">= 18" - } - }, - "node_modules/@leichtgewicht/ip-codec": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", - "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", - "license": "MIT" - }, - "node_modules/@libp2p/autonat": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-1.1.4.tgz", - "integrity": "sha512-yt/sUisqBLZPM/0lvpRo0enIEIbdyuSraIu4xRlGkdqqAXSo9T6CJppXxNi9VKTmlmD39WYYNP41Ilt3SvQhRQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/multiaddr": "^12.2.3", - "it-first": "^3.0.6", - "it-length-prefixed": "^9.0.4", - "it-map": "^3.1.0", - "it-parallel": "^3.0.7", - "it-pipe": "^3.0.1", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/autonat/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/bootstrap": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.1.4.tgz", - "integrity": "sha512-bt4Tz/DMKnlvZhF4d9Nkv/K7qgnoDBM/N0zwjA/aQg1vSq54/Szc2K3cIDAv9/r9dM4ckDRmIZZENr/bwcIIKw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/peer-id": "^4.2.3", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3" - } - }, - "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.1.4.tgz", - "integrity": "sha512-WLiisIvRWVSJLzb4MO1aqDOD2A7s99OgpfeKKt9nxSaq34WeQS9aGN9YxSczYkum9hBTdnLJZZDQrd6SId6NbQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/peer-collections": "^5.2.8", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/peer-record": "^7.0.24", - "@libp2p/utils": "^5.4.8", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "any-signal": "^4.1.1", - "it-protobuf-stream": "^1.1.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.4.0", - "race-signal": "^1.0.2", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/crypto": { - "version": "4.1.8", - "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.8.tgz", - "integrity": "sha512-j8d1gOS6ypt6CSYgBTJKSTGsht3SFPkhfOkGND6sUCl1w9pRslDlvFnU9UrNHLMiaNmVHaeS9B2IKzKMbLX92Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0", - "asn1js": "^3.0.5", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/crypto/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/dcutr": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.1.4.tgz", - "integrity": "sha512-NjIiAoi5q2Y2q0eON+VCdm8ec2Be1Q9q1vcL6z7RyBWwIkk6PPy8RvBaI6GcGKjk251jLrN6vz2yoL7vWRht2A==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "delay": "^6.0.0", - "it-protobuf-stream": "^1.1.3", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/dcutr/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/dcutr/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/floodsub": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/floodsub/-/floodsub-9.1.4.tgz", - "integrity": "sha512-epH/OUYkKzQv3o1PX7mveWQMLAy/ImQ5ep823wwuRhIDFKUsNBSROIBHjEbBO6F7twDs59nDxTfNOhKJzcTzAQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/pubsub": "^9.0.25", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/floodsub/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/identify": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-2.1.4.tgz", - "integrity": "sha512-w2JkmoZkXT3OJnTuyBPlEBicj1J1n90pcusZbs+YIiJ+mhsOvNKnQhJgCG8Q6wnTimcBjinqhRRp0hiaHqX7VQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/peer-record": "^7.0.24", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "it-drain": "^3.0.7", - "it-parallel": "^3.0.7", - "it-protobuf-stream": "^1.1.3", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0", - "wherearewe": "^2.0.1" - } - }, - "node_modules/@libp2p/identify/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/identify/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/interface": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.6.3.tgz", - "integrity": "sha512-Tm8W5Q2FsjcSdeA5BvP/GTUq/lp3SjeW6GPmWbbIasBJdv67UGHahu8YDFTME90IxTijnikkfGNkOPsd/4UuvA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.2.3", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "multiformats": "^13.1.0", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/interface-address-manager": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@libp2p/interface-address-manager/-/interface-address-manager-3.0.1.tgz", - "integrity": "sha512-8N1nfOtZ/CnZ/cL0Bnj59fhcSs7orI4evmNVsv2DM1VaNHXqc9tPy8JmQE2HRjrUXeUPwtzzG2eoP7l0ZYdC0g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@libp2p/interface-address-manager/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/interface-address-manager/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/interface-internal": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.3.tgz", - "integrity": "sha512-xng1cBGDhSZmCu0kUEv3363oSgpoPmvpDr11wumhKNEgGOwBVbEr0v7serYcrlORxFmyUBW8y98CkPRJxskPLA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/peer-collections": "^5.2.8", - "@multiformats/multiaddr": "^12.2.3", - "progress-events": "^1.0.0", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/@libp2p/interface-internal/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/interface-internal/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/interface/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/kad-dht": { - "version": "12.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.1.4.tgz", - "integrity": "sha512-TWg3WB/Ghqz2vVOBxZz3PD0gDw1j24GlcQiJw5AieXMY1va8ZxkYyJtpHluhPpjLnlI4zxNLbE30A05Tp6XD4w==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/peer-collections": "^5.2.8", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/record": "^4.0.4", - "@libp2p/utils": "^5.4.8", - "@multiformats/multiaddr": "^12.2.3", - "any-signal": "^4.1.1", - "hashlru": "^2.3.0", - "interface-datastore": "^8.2.11", - "it-drain": "^3.0.7", - "it-length": "^3.0.6", - "it-length-prefixed": "^9.0.4", - "it-map": "^3.1.0", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "it-pipe": "^3.0.1", - "it-protobuf-stream": "^1.1.3", - "it-take": "^3.0.5", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "p-event": "^6.0.1", - "p-queue": "^8.0.1", - "progress-events": "^1.0.0", - "protons-runtime": "^5.4.0", - "race-signal": "^1.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/kad-dht/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/kad-dht/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/logger": { - "version": "4.0.19", - "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.19.tgz", - "integrity": "sha512-VKpIMbjzs60AaTezh55iEDPJ0W2icbkJkBXSlAMycCT4C+RYxOTRgevasw3mDB6+Lj9etM0nfa4vutoG4fsYCw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "multiformats": "^13.1.0", - "weald": "^1.0.2" - } - }, - "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/logger/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/mdns": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.1.4.tgz", - "integrity": "sha512-OlvfOGdNw9jPpTwgS9TYskNNn8kiqVDAIT42XOL9aLIXlX6Uqx1LlKphoWUxL01TsSIBUX5asKdnbGPpV/qqLA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/multiaddr": "^12.2.3", - "@types/multicast-dns": "^7.2.4", - "dns-packet": "^5.6.1", - "multicast-dns": "^7.2.5" - } - }, - "node_modules/@libp2p/mdns/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/mdns/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/multistream-select": { - "version": "5.1.16", - "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.16.tgz", - "integrity": "sha512-0IUecYYu++gimGRzG324A6+NE9Vk/6Wvmp2xegfLjUZRegpFbHup3UvFEGxTkpHmsoswJMMTPHQyCNJFga+Z7Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "it-length-prefixed": "^9.0.4", - "it-length-prefixed-stream": "^1.1.7", - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.1", - "race-signal": "^1.0.2", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/multistream-select/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/peer-collections": { - "version": "5.2.8", - "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.8.tgz", - "integrity": "sha512-dIakIFms3GgFYg4lVgl9afAm+OAxGTofz4KdFnVrlNW1z6VFhTbnRtvTweR6woSr2es1+Fu6WutmZ+62Fn0iOQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/utils": "^5.4.8" - } - }, - "node_modules/@libp2p/peer-id": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.3.tgz", - "integrity": "sha512-hRqPzcYOz/5q6QvHYdmPMGeFZCjC/9qxQ/+jstSDMnY1DuKEXCre2+tCpG9OeRAFyPBbs5isfaqbY3zNZV2pqA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "multiformats": "^13.1.0", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/peer-id-factory": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.3.tgz", - "integrity": "sha512-4ryh3M4UH+nwlM1o3y3iCpW2jTxjj+Hgb6UNI1nFxZGLA6MI+En8kKiroa970xiVvsA+Xmas8B9gWeMFrZKBKg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/peer-id": "^4.2.3", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/peer-id-factory/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/peer-id/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/peer-record": { - "version": "7.0.24", - "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.24.tgz", - "integrity": "sha512-2LYvLqr3XDjA5u2LGD/3IvdgdrwOYdMzQnzr612/Q+yVS+36CN0dAIqU74OEWx+XeeUJSBQnQ0ryBQq/arbXuA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/multiaddr": "^12.2.3", - "protons-runtime": "^5.4.0", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/peer-record/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/peer-record/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/peer-store": { - "version": "10.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.1.4.tgz", - "integrity": "sha512-D/lqEaWZV8xEBQ7b0ZEFYtaa6+LjXjs+PRrFpmnvyuz86o9KQedVoJPufT4g0nKIeQZUtdRfkzWNnwD+fru64g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/peer-collections": "^5.2.8", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/peer-record": "^7.0.24", - "@multiformats/multiaddr": "^12.2.3", - "interface-datastore": "^8.2.11", - "it-all": "^3.0.6", - "mortice": "^3.0.4", - "multiformats": "^13.1.0", - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/peer-store/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/peer-store/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/ping": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-1.1.4.tgz", - "integrity": "sha512-biwYtLaEHky2hsLzVZnPzrwME2WwaMu2MG+poKepxS36Ib9EM7XPGVUjpoafCQBM+Z67AMiFpKVtk3k9Kb24Gw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@multiformats/multiaddr": "^12.2.3", - "it-first": "^3.0.6", - "it-pipe": "^3.0.1", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/ping/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/ping/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/pubsub": { - "version": "9.0.25", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.25.tgz", - "integrity": "sha512-IpAN2O/Xcqk0hXDv37zLGvzyQtR4o0xiZl3IC/P7QFikFf+mrmh80Zz447LhmHdRI/BpAwES0NYYCfjBDHu5+Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/peer-collections": "^5.2.8", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/utils": "^5.4.8", - "it-length-prefixed": "^9.0.4", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "multiformats": "^13.1.0", - "p-queue": "^8.0.1", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/pubsub-peer-discovery": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-10.0.2.tgz", - "integrity": "sha512-7DLasMSo443nxPJ+X95tXazXgO96K2/TafoexDxi4QVWIKgkmK+HyoFRcmwog2pjhA1/KQUsPu8S8wH6Ns9Oow==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.0.1", - "@libp2p/interface-internal": "^1.0.1", - "@libp2p/peer-id": "^4.0.1", - "@multiformats/multiaddr": "^12.0.0", - "protons-runtime": "^5.0.0", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^4.0.9" - } - }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/pubsub/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/record": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.4.tgz", - "integrity": "sha512-wEEeHXGNIcc8HtGbgGMuSHbboUWMxKG7OxALFwkE+KACgfRJZTESOp6XIdZnyC0r9lfEFsjF01pFKBTzoBmWEQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "protons-runtime": "^5.4.0", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/record/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/tcp": { - "version": "9.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.1.4.tgz", - "integrity": "sha512-0j/aYdMFLhLWUodtyuBt5+smzkmXCiczOxNOwKyTVUuoMMcAPCLxACqCy8213qiwpJ3qP5ZTTTs/JJMgWRC7ag==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "@types/sinon": "^17.0.3", - "progress-events": "^1.0.0", - "stream-to-it": "^1.0.1" - } - }, - "node_modules/@libp2p/tcp/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/tcp/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/upnp-nat": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.2.4.tgz", - "integrity": "sha512-oI0yAg7GKpiPy4u2u/34wYPJ/CLBraIA5dUh21ZGy3TH88eaTOYfyHSfGw9AI0IT/012xxkpqbA+h5+V+qDoBQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@achingbrain/nat-port-mapper": "^1.0.13", - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/multiaddr": "^12.2.3", - "wherearewe": "^2.0.1" - } - }, - "node_modules/@libp2p/upnp-nat/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/upnp-nat/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/utils": { - "version": "5.4.8", - "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.4.8.tgz", - "integrity": "sha512-3ysAjrheDvcrUd8RWOCwa6Hm+5FMsYOlPq9IPllfD0jOyHO2RHc/huvAmjBg/PWrTdUyx1nWQf9wmdQFgTDUDQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.2", - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/logger": "^4.0.19", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "@sindresorhus/fnv1a": "^3.1.0", - "@types/murmurhash3js-revisited": "^3.0.3", - "any-signal": "^4.1.1", - "delay": "^6.0.0", - "get-iterator": "^2.0.1", - "is-loopback-addr": "^2.0.2", - "it-pushable": "^3.2.3", - "it-stream-types": "^2.0.1", - "murmurhash3js-revisited": "^3.0.0", - "netmask": "^2.0.2", - "p-defer": "^4.0.1", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", - "uint8arraylist": "^2.4.8", - "uint8arrays": "^5.1.0" - } - }, - "node_modules/@libp2p/utils/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/utils/node_modules/delay": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", - "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@libp2p/utils/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@libp2p/websockets": { - "version": "8.1.4", - "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.1.4.tgz", - "integrity": "sha512-VWVgIo8t4VTzTI+orfGQxeHSXNWQL6dF//nH2p3nI5Z0saR6lrv5pNTsXbIhrZukGRFGgSwqGsd8bGhEohKNrQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/interface": "^1.6.3", - "@libp2p/utils": "^5.4.8", - "@multiformats/mafmt": "^12.1.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-to-uri": "^10.0.1", - "@types/ws": "^8.5.10", - "it-ws": "^6.1.1", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "race-signal": "^1.0.2", - "wherearewe": "^2.0.1", - "ws": "^8.17.0" - } - }, - "node_modules/@libp2p/websockets/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@libp2p/websockets/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@ljharb/resumer": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@ljharb/resumer/-/resumer-0.1.3.tgz", - "integrity": "sha512-d+tsDgfkj9X5QTriqM4lKesCkMMJC3IrbPKHvayP00ELx2axdXvDfWkqjxrLXIzGcQzmj7VAUT1wopqARTvafw==", - "license": "MIT", - "dependencies": { - "@ljharb/through": "^2.3.13", - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@ljharb/through": { - "version": "2.3.13", - "resolved": "https://registry.npmjs.org/@ljharb/through/-/through-2.3.13.tgz", - "integrity": "sha512-/gKJun8NNiWGZJkGzI/Ragc53cOdcLNdzjLaIa+GEjguQs0ulsurx8WN0jijdK9yPqDvziX995sMRLyLt1uZMQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/@multiformats/dns": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.6.tgz", - "integrity": "sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@types/dns-packet": "^5.6.5", - "buffer": "^6.0.3", - "dns-packet": "^5.6.1", - "hashlru": "^2.3.0", - "p-queue": "^8.0.1", - "progress-events": "^1.0.0", - "uint8arrays": "^5.0.2" - } - }, - "node_modules/@multiformats/dns/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@multiformats/mafmt": { - "version": "12.1.6", - "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz", - "integrity": "sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.0.0" - } - }, - "node_modules/@multiformats/mafmt/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@multiformats/mafmt/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@multiformats/multiaddr": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-10.5.0.tgz", - "integrity": "sha512-u4qHMyv25iAqCb9twJROoN1M8UDm8bureOCIzwz03fVhwJzV6DpgH1eFz9UAzDn7CpSShQ9SLS5MiC4hJjTfig==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "dns-over-http-resolver": "^2.1.0", - "err-code": "^3.0.1", - "is-ip": "^5.0.0", - "multiformats": "^9.4.5", - "uint8arrays": "^3.0.0", - "varint": "^6.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/@multiformats/multiaddr-matcher": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.2.4.tgz", - "integrity": "sha512-GgpqzQFL4Mj8t7cLNHC5nuYUuSm0kTtSUyYswiyWwTSUY3XwRAMx0UiFWQg+ETk0u+/IvFaHxfnyEoH3tasvwg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@multiformats/multiaddr": "^12.0.0", - "multiformats": "^13.0.0" - } - }, - "node_modules/@multiformats/multiaddr-matcher/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@multiformats/multiaddr-matcher/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@multiformats/multiaddr-to-uri": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.1.0.tgz", - "integrity": "sha512-ZNwSAx3ssBWwd4y0LKrOsq9xG7LBHboQxnUdSduNc2fTh/NS1UjA2slgUy6KHxH5k9S2DSus0iU2CoyJyN0/pg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@multiformats/multiaddr": "^12.3.0" - } - }, - "node_modules/@multiformats/multiaddr-to-uri/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" - } - }, - "node_modules/@multiformats/multiaddr-to-uri/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" - } - }, - "node_modules/@multiformats/multiaddr/node_modules/multiformats": { - "version": "9.9.0", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", - "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", - "license": "(Apache-2.0 AND MIT)" - }, - "node_modules/@multiformats/multiaddr/node_modules/uint8arrays": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", - "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", - "license": "MIT", - "dependencies": { - "multiformats": "^9.4.2" - } - }, - "node_modules/@noble/ciphers": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", - "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/curves": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.5.0.tgz", - "integrity": "sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A==", - "license": "MIT", - "dependencies": { - "@noble/hashes": "1.4.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@noble/hashes": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", - "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "license": "MIT", - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/@npmcli/fs": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", - "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "@gar/promisify": "^1.0.1", - "semver": "^7.3.5" - } - }, - "node_modules/@npmcli/move-file": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", - "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", - "deprecated": "This functionality has been moved to @npmcli/fs", - "license": "MIT", - "optional": true, - "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@oceanprotocol/contracts": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.2.1.tgz", - "integrity": "sha512-ub+CuN61seLtUvdTm/iFCyF6+wG5iCovhLaDQywKJw3RuM4gzSnxeOkBf0n0sf1ZJOGuhVcPZXHOfybtUPqVjA==", - "license": "Apache-2.0" - }, - "node_modules/@oceanprotocol/ddo-js": { - "version": "0.0.1-next.7", - "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.0.1-next.7.tgz", - "integrity": "sha512-H6h89h2z4Sjc5Sx62hy0msOvI0yV3xO+i3l3f7KZU0Ore1mm2C9m1PfFkAIKrC2a2sLG5/B2mcAhi7pZJ9ja1g==", - "dependencies": { - "@rdfjs/dataset": "^2.0.2", - "@rdfjs/formats-common": "^3.1.0", - "@rdfjs/types": "^1.1.2", - "@types/rdfjs__data-model": "^2.0.8", - "@types/rdfjs__dataset": "^2.0.7", - "@types/rdfjs__formats-common": "^3.1.5", - "@types/rdfjs__parser-jsonld": "^2.1.7", - "@types/rdfjs__to-ntriples": "^3.0.0", - "@zazuko/env-node": "^2.1.4", - "axios": "^1.7.9", - "chai": "^5.1.2", - "crypto": "^1.0.1", - "ethers": "^5.7.2", - "jose": "^5.9.6", - "lodash": "^4.17.21", - "rdf-validate-shacl": "^0.5.6" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/@types/rdfjs__to-ntriples": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/rdfjs__to-ntriples/-/rdfjs__to-ntriples-3.0.0.tgz", - "integrity": "sha512-3qZGpe2L3s2fAwmLvDDrcPCVDQmmEsg1KpwDd6bLPcCWQ7BISWHIQX/k/l1VU9EZB8uNoEAcmRmeVJY2jnu7wA==", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "engines": { - "node": ">=12" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/chai": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", - "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/check-error": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", - "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", - "engines": { - "node": ">= 16" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" - } - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/loupe": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", - "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==" - }, - "node_modules/@oceanprotocol/ddo-js/node_modules/pathval": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", - "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/@octokit/auth-token": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.5.0.tgz", - "integrity": "sha512-r5FVUJCOLl19AxiuZD2VRZ/ORjp/4IN98Of6YJoJOkY75CIBuYfmiNHGrDwXr+aLGG55igl9QrxX3hbiXlLb+g==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3" - } - }, - "node_modules/@octokit/core": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-3.6.0.tgz", - "integrity": "sha512-7RKRKuA4xTjMhY+eG3jthb3hlZCsOwg3rztWh75Xc+ShDWOfDDATWbeZpAHBNRpm4Tv9WgBMOy1zEJYXG6NJ7Q==", - "license": "MIT", - "dependencies": { - "@octokit/auth-token": "^2.4.4", - "@octokit/graphql": "^4.5.8", - "@octokit/request": "^5.6.3", - "@octokit/request-error": "^2.0.5", - "@octokit/types": "^6.0.3", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/endpoint": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.12.tgz", - "integrity": "sha512-lF3puPwkQWGfkMClXb4k/eUT/nZKQfxinRWJrdZaJO85Dqwo/G0yOC434Jr2ojwafWJMYqFGFa5ms4jJUgujdA==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/graphql": { - "version": "4.8.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-4.8.0.tgz", - "integrity": "sha512-0gv+qLSBLKF0z8TKaSKTsS39scVKF9dbMxJpj3U0vC7wjNWFuIpL/z76Qe2fiuCbDRcJSavkXsVtMS6/dtQQsg==", - "license": "MIT", - "dependencies": { - "@octokit/request": "^5.6.0", - "@octokit/types": "^6.0.3", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/openapi-types": { - "version": "12.11.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-12.11.0.tgz", - "integrity": "sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==", - "license": "MIT" - }, - "node_modules/@octokit/plugin-paginate-rest": { - "version": "2.21.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-2.21.3.tgz", - "integrity": "sha512-aCZTEf0y2h3OLbrgKkrfFdjRL6eSOo8komneVQJnYecAxIej7Bafor2xhuDJOIFau4pk0i/P28/XgtbyPF0ZHw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.40.0" - }, - "peerDependencies": { - "@octokit/core": ">=2" - } - }, - "node_modules/@octokit/plugin-request-log": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.4.tgz", - "integrity": "sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==", - "license": "MIT", - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-5.16.2.tgz", - "integrity": "sha512-8QFz29Fg5jDuTPXVtey05BLm7OB+M8fnvE64RNegzX7U+5NUXcOcnpTIK0YfSHBg8gYd0oxIq3IZTe9SfPZiRw==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.39.0", - "deprecation": "^2.3.1" - }, - "peerDependencies": { - "@octokit/core": ">=3" - } - }, - "node_modules/@octokit/plugin-retry": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-3.0.9.tgz", - "integrity": "sha512-r+fArdP5+TG6l1Rv/C9hVoty6tldw6cE2pRHNGmFPdyfrc696R6JjrQ3d7HdVqGwuzfyrcaLAKD7K8TX8aehUQ==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "bottleneck": "^2.15.3" - } - }, - "node_modules/@octokit/plugin-throttling": { - "version": "3.7.0", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-3.7.0.tgz", - "integrity": "sha512-qrKT1Yl/KuwGSC6/oHpLBot3ooC9rq0/ryDYBCpkRtoj+R8T47xTMDT6Tk2CxWopFota/8Pi/2SqArqwC0JPow==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.1", - "bottleneck": "^2.15.3" - }, - "peerDependencies": { - "@octokit/core": "^3.5.0" - } - }, - "node_modules/@octokit/request": { - "version": "5.6.3", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.6.3.tgz", - "integrity": "sha512-bFJl0I1KVc9jYTe9tdGGpAMPy32dLBXXo1dS/YwSCTL/2nd9XeHsY616RE3HPXDVk+a+dBuzyz5YdlXwcDTr2A==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^6.0.1", - "@octokit/request-error": "^2.1.0", - "@octokit/types": "^6.16.1", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - } - }, - "node_modules/@octokit/request-error": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.1.0.tgz", - "integrity": "sha512-1VIvgXxs9WHSjicsRwq8PlR2LR2x6DwsJAaFgzdi0JfJoGSO8mYI/cHJQ+9FbN21aa+DrgNLnwObmyeSC8Rmpg==", - "license": "MIT", - "dependencies": { - "@octokit/types": "^6.0.3", - "deprecation": "^2.0.0", - "once": "^1.4.0" - } - }, - "node_modules/@octokit/rest": { - "version": "18.12.0", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-18.12.0.tgz", - "integrity": "sha512-gDPiOHlyGavxr72y0guQEhLsemgVjwRePayJ+FcKc2SJqKUbxbkvf5kAZEWA/MKvsfYlQAMVzNJE3ezQcxMJ2Q==", - "license": "MIT", - "dependencies": { - "@octokit/core": "^3.5.1", - "@octokit/plugin-paginate-rest": "^2.16.8", - "@octokit/plugin-request-log": "^1.0.4", - "@octokit/plugin-rest-endpoint-methods": "^5.12.0" - } - }, - "node_modules/@octokit/tsconfig": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@octokit/tsconfig/-/tsconfig-1.0.2.tgz", - "integrity": "sha512-I0vDR0rdtP8p2lGMzvsJzbhdOWy405HcGovrspJ8RRibHnyRgggUSNO5AIox5LmqiwmatHKYsvj6VGFHkqS7lA==", - "license": "MIT" - }, - "node_modules/@octokit/types": { - "version": "6.41.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-6.41.0.tgz", - "integrity": "sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==", - "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^12.11.0" - } - }, - "node_modules/@opentelemetry/api": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", - "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@phenomnomnominal/tsquery": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/@phenomnomnominal/tsquery/-/tsquery-4.2.0.tgz", - "integrity": "sha512-hR2U3uVcrrdkuG30ItQ+uFDs4ncZAybxWG0OjTE8ptPzVoU7GVeXpy+vMU8zX9EbmjGeITPw/su5HjYQyAH8bA==", - "license": "MIT", - "dependencies": { - "esquery": "^1.0.1" - }, - "peerDependencies": { - "typescript": "^3 || ^4" - } - }, - "node_modules/@pkgr/core": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", - "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/unts" - } - }, - "node_modules/@pnpm/config.env-replace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", - "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", - "license": "MIT", - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", - "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", - "license": "MIT", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", - "license": "ISC" - }, - "node_modules/@pnpm/npm-conf": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", - "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", - "license": "MIT", - "dependencies": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@polka/send-type": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/@polka/send-type/-/send-type-0.5.2.tgz", - "integrity": "sha512-jGXalKihnhGQmMQ+xxfxrRfI2cWs38TIZuwgYpnbQDD4r9TkOiU3ocjAS+6CqqMNQNAu9Ul2iHU5YFRDODak2w==", - "license": "MIT" - }, - "node_modules/@polka/url": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-0.5.0.tgz", - "integrity": "sha512-oZLYFEAzUKyi3SKnXvj32ZCEGH6RDnao7COuCVhDydMS9NrCSVXhM79VaKyP5+Zc33m0QXEd2DN3UkU7OsHcfw==", - "license": "MIT" - }, - "node_modules/@rdfjs/data-model": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-2.0.2.tgz", - "integrity": "sha512-v5LRNkLRJazMCGU7VtEzhz5wKwz/IrOdJEKapCtd35HuFbQfeGpoJP6QOXGyFHhWwKmtG+UMlZzYFyNDVE1m6g==", - "license": "MIT", - "bin": { - "rdfjs-data-model-test": "bin/test.js" - } - }, - "node_modules/@rdfjs/dataset": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", - "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==", - "license": "MIT", - "bin": { - "rdfjs-dataset-test": "bin/test.js" - } - }, - "node_modules/@rdfjs/environment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", - "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==", - "license": "MIT" - }, - "node_modules/@rdfjs/fetch-lite": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/@rdfjs/fetch-lite/-/fetch-lite-3.2.3.tgz", - "integrity": "sha512-CZfUsBekFIDYCoXBW59ehgYctIluqatWB0YqCJoA8scENuo5IHPXdPMiLt1YVqUnxQ4STwEBOUoIiaCVxwfOFg==", - "license": "MIT", - "dependencies": { - "is-stream": "^4.0.1", - "nodeify-fetch": "^3.1.0", - "readable-stream": "^4.5.2" - } - }, - "node_modules/@rdfjs/formats": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@rdfjs/formats/-/formats-4.0.0.tgz", - "integrity": "sha512-9e0DX+iWi8d958Px6Ggb1otl/EhfyvlfWcop+lS0aZlsGV2YK9Phl5lzCUYTfTefSyyQk8tJd5XN52hhDLb5Wg==", - "license": "MIT", - "dependencies": { - "@rdfjs/parser-jsonld": "^2.1.0", - "@rdfjs/parser-n3": "^2.0.1", - "@rdfjs/serializer-jsonld": "^2.0.0", - "@rdfjs/serializer-jsonld-ext": "^4.0.0", - "@rdfjs/serializer-ntriples": "^2.0.0", - "@rdfjs/serializer-turtle": "^1.1.1", - "@rdfjs/sink-map": "^2.0.0", - "rdfxml-streaming-parser": "^2.3.0" - } - }, - "node_modules/@rdfjs/formats-common": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@rdfjs/formats-common/-/formats-common-3.1.0.tgz", - "integrity": "sha512-wgz5za/Uls+pttLdLl/aH0m0LQNgjqpWwk9exNs2Smmb2CosynRo4S0+CxeNOVZh4zeUm7oAlr1CK/tyg4Ff6g==", - "license": "MIT", - "dependencies": { - "@rdfjs/parser-jsonld": "^2.0.0", - "@rdfjs/parser-n3": "^2.0.0", - "@rdfjs/serializer-jsonld": "^2.0.0", - "@rdfjs/serializer-ntriples": "^2.0.0", - "@rdfjs/sink-map": "^2.0.0", - "rdfxml-streaming-parser": "^2.2.0" - } - }, - "node_modules/@rdfjs/namespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-2.0.1.tgz", - "integrity": "sha512-U85NWVGnL3gWvOZ4eXwUcv3/bom7PAcutSBQqmVWvOaslPy+kDzAJCH1WYBLpdQd4yMmJ+bpJcDl9rcHtXeixg==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.1" - } - }, - "node_modules/@rdfjs/parser-jsonld": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@rdfjs/parser-jsonld/-/parser-jsonld-2.1.1.tgz", - "integrity": "sha512-bddq04r/p7booWk+5IqcTlWpDljy8Sv1cdFynpzawNruZTD99n3eSj7LCHPBUzqnpXc1Dnt8tgXiqB02WSYtiw==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.2", - "@rdfjs/sink": "^2.0.1", - "duplex-to": "^2.0.0", - "jsonld-streaming-parser": "^3.3.0", - "readable-stream": "^4.5.2" - } - }, - "node_modules/@rdfjs/parser-n3": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.0.2.tgz", - "integrity": "sha512-rrrvyh+kkj9ndwep2h6nYmugIfggDOC9uGpmDAHn/I/z52K7dHxi7xOkPPrezTsIbgNvFhV3zS7mzyObRxcLWA==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.2", - "@rdfjs/sink": "^2.0.1", - "duplex-to": "^2.0.0", - "n3": "^1.17.2", - "readable-stream": "^4.5.2" - } - }, - "node_modules/@rdfjs/prefix-map": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/@rdfjs/prefix-map/-/prefix-map-0.1.2.tgz", - "integrity": "sha512-qapFYVPYyYepg0sFy7T512667iZsN9a3RNcyNBTBV+O8wrU3v/URQZOipCTNrEm1BXzZ7KCK1Yi8HrE1y+uRuQ==", - "license": "MIT", - "dependencies": { - "readable-stream": "^4.3.0" - } - }, - "node_modules/@rdfjs/serializer-jsonld": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld/-/serializer-jsonld-2.0.1.tgz", - "integrity": "sha512-O8WzdY7THsse/nMsrMLd2e51ADHO2SIUrkiZ9Va/8W3lXeeeiwDRPMppWy/i9yL4q6EM8iMW1riV7E0mK3fsBQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/sink": "^2.0.1", - "readable-stream": "^4.5.2" - } - }, - "node_modules/@rdfjs/serializer-jsonld-ext": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld-ext/-/serializer-jsonld-ext-4.0.0.tgz", - "integrity": "sha512-HP5DCmhyfVuQuk58AO5vzNY+dIFVHe2oHY8NX2K+3XmrTmu/yzrFzPbDeU9Cwr71XC4RifEMoksIg+8jnhxmfQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/sink": "^2.0.0", - "jsonld": "^8.1.0", - "readable-stream": "^4.3.0", - "stream-chunks": "^1.0.0" - } - }, - "node_modules/@rdfjs/serializer-ntriples": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/serializer-ntriples/-/serializer-ntriples-2.0.1.tgz", - "integrity": "sha512-G1ZI0qaN/MUHxeCwr59JscO2LdyIb6MNQdXOv7NFBZuodyHsxxhJRFmMVn+3SEXeNJbVeEEbWBrLglCUgJ8XjQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/sink": "^2.0.1", - "@rdfjs/to-ntriples": "^3.0.1", - "duplex-to": "^2.0.0", - "readable-stream": "^4.5.2" - } - }, - "node_modules/@rdfjs/serializer-turtle": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@rdfjs/serializer-turtle/-/serializer-turtle-1.1.4.tgz", - "integrity": "sha512-fw58pfAuIZblNzf8Gwl6mxfNkPH+/4Q1GwF0GFaSHg9yT0sQ1S+EzaqEVXl0MLPquEKTAMJFBs1fkdwUNq8Qww==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.1", - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/prefix-map": "^0.1.1", - "@rdfjs/sink": "^2.0.0", - "@rdfjs/term-map": "^2.0.0", - "@rdfjs/to-ntriples": "^3.0.1", - "@rdfjs/tree": "^0.2.1", - "readable-stream": "^4.3.0", - "stream-chunks": "^1.0.0" - } - }, - "node_modules/@rdfjs/sink": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", - "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==", - "license": "MIT" - }, - "node_modules/@rdfjs/sink-map": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/sink-map/-/sink-map-2.0.1.tgz", - "integrity": "sha512-BwCTTsMN/tfQl6QzD2oHn9A08e4af+hlzAz/d5XXrlOkYMEDUAqFuh2Odj9EbayhAEeN4wA743Mj2yC0/s69rg==", - "license": "MIT" - }, - "node_modules/@rdfjs/term-map": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@rdfjs/term-map/-/term-map-2.0.2.tgz", - "integrity": "sha512-EJ2FmmdEUsSR/tU1nrizRLWzH24YzhuvesrbUWxC3Fs0ilYNdtTbg0RaFJDUnJF3HkbNBQe8Zrt/uvU/hcKnHg==", - "license": "MIT", - "dependencies": { - "@rdfjs/to-ntriples": "^3.0.1" - } - }, - "node_modules/@rdfjs/term-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@rdfjs/term-set/-/term-set-2.0.3.tgz", - "integrity": "sha512-DyXrKWEx+mtAFUZVU7bc3Va6/KZ8PsIp0RVdyWT9jfDgI/HCvNisZaBtAcm+SYTC45o+7WLkbudkk1bfaKVB0A==", - "license": "MIT", - "dependencies": { - "@rdfjs/to-ntriples": "^3.0.1" - } - }, - "node_modules/@rdfjs/to-ntriples": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-3.0.1.tgz", - "integrity": "sha512-gjoPAvh4j7AbGMjcDn/8R4cW+d/FPtbfbMM0uQXkyfBFtNUW2iVgrqsgJ65roLc54Y9A2TTFaeeTGSvY9a0HCQ==", - "license": "MIT" - }, - "node_modules/@rdfjs/traverser": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/@rdfjs/traverser/-/traverser-0.1.4.tgz", - "integrity": "sha512-53QYlxiQIxH8k4jutjet1EjdZfyKCDSsfqnj2YejAJ1X8mLDMSOsneMM5savBwBR0ROfAhKVtZVb+pego+JLiw==", - "license": "MIT", - "dependencies": { - "@rdfjs/to-ntriples": "^3.0.1" - } - }, - "node_modules/@rdfjs/tree": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/@rdfjs/tree/-/tree-0.2.1.tgz", - "integrity": "sha512-J70CQ7R8Ivfs1FFUxtFN7ADb5wTMgbhn0O558NXSXQHItmSavT6cXmQlIokbmboU+grhu56iR/8Bl9do8LCq+w==", - "license": "MIT", - "dependencies": { - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-map": "^2.0.0", - "@rdfjs/term-set": "^2.0.1" - } - }, - "node_modules/@rdfjs/types": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", - "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@rubensworks/saxes": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", - "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", - "license": "ISC", - "dependencies": { - "xmlchars": "^2.2.0" - }, - "engines": { - "node": ">=v12.22.12" - } - }, - "node_modules/@samverschueren/stream-to-observable": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@samverschueren/stream-to-observable/-/stream-to-observable-0.3.1.tgz", - "integrity": "sha512-c/qwwcHyafOQuVQJj0IlBjf5yYgBI7YPJ77k4fOJYesb41jio65eaJODRUmfYKhTOFBrIZ66kgvGPlNbjuoRdQ==", - "license": "MIT", - "dependencies": { - "any-observable": "^0.3.0" - }, - "engines": { - "node": ">=6" - }, - "peerDependenciesMeta": { - "rxjs": { - "optional": true - }, - "zen-observable": { - "optional": true - } - } - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "license": "MIT" - }, - "node_modules/@semantic-release/changelog": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/changelog/-/changelog-6.0.3.tgz", - "integrity": "sha512-dZuR5qByyfe3Y03TpmCvAxCyTnp7r5XwtHRf/8vD9EAn4ZWbavUX8adMtXYzE86EVh0gyLA7lm5yW4IV30XUag==", - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.4" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0" - } - }, - "node_modules/@semantic-release/commit-analyzer": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/commit-analyzer/-/commit-analyzer-9.0.2.tgz", - "integrity": "sha512-E+dr6L+xIHZkX4zNMe6Rnwg4YQrWNXK+rNsvwOPpdFppvZO1olE2fIgWhv89TkQErygevbjsZFSIxp+u6w2e5g==", - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "import-from": "^4.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.2" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "node_modules/@semantic-release/error": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-3.0.0.tgz", - "integrity": "sha512-5hiM4Un+tpl4cKw3lV4UgzJj+SmfNIDCLLw0TepzQxz9ZGV5ixnqkzIVF+3tp0ZHgcMKE+VNGHJjEeyFG2dcSw==", - "license": "MIT", - "engines": { - "node": ">=14.17" - } - }, - "node_modules/@semantic-release/git": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@semantic-release/git/-/git-10.0.1.tgz", - "integrity": "sha512-eWrx5KguUcU2wUPaO6sfvZI0wPafUKAMNC18aXY4EnNcrZL86dEmpNVnC9uMpGZkmZJ9EfCVJBQx4pV4EMGT1w==", - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "execa": "^5.0.0", - "lodash": "^4.17.4", - "micromatch": "^4.0.0", - "p-reduce": "^2.0.0" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0" - } - }, - "node_modules/@semantic-release/git/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@semantic-release/git/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/git/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/@semantic-release/git/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/git/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@semantic-release/git/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/git/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/git/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@semantic-release/github": { - "name": "@achingbrain/semantic-release-github", - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/@achingbrain/semantic-release-github/-/semantic-release-github-0.0.0.tgz", - "integrity": "sha512-HES6WrXTaPpIvsABCn3aM12AjqgV6aEPDMw8oaXGD702T6ZqQ98dQGlq1wt3IzX2yBQbNcFrwK8eVC0M1nz4uw==", - "license": "MIT", - "dependencies": { - "@octokit/plugin-retry": "^3.0.9", - "@octokit/plugin-throttling": "^3.6.2", - "@octokit/rest": "^18.0.0", - "@semantic-release/error": "^2.2.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^10.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "url-join": "^4.0.0" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "node_modules/@semantic-release/github/node_modules/@semantic-release/error": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@semantic-release/error/-/error-2.2.0.tgz", - "integrity": "sha512-9Tj/qn+y2j+sjCI3Jd+qseGtHjOAeg7dU2/lVcqIQ9TV3QDaDXDYXcoOHU+7o2Hwh8L8ymL4gfuO7KxDs3q2zg==", - "license": "MIT" - }, - "node_modules/@semantic-release/github/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@semantic-release/github/node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", - "license": "MIT" - }, - "node_modules/@semantic-release/npm": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/@semantic-release/npm/-/npm-9.0.2.tgz", - "integrity": "sha512-zgsynF6McdzxPnFet+a4iO9HpAlARXOM5adz7VGVCvj0ne8wtL2ZOQoDV2wZPDmdEotDIbVeJjafhelZjs9j6g==", - "license": "MIT", - "dependencies": { - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "execa": "^5.0.0", - "fs-extra": "^11.0.0", - "lodash": "^4.17.15", - "nerf-dart": "^1.0.0", - "normalize-url": "^6.0.0", - "npm": "^8.3.0", - "rc": "^1.2.8", - "read-pkg": "^5.0.0", - "registry-auth-token": "^5.0.0", - "semver": "^7.1.2", - "tempy": "^1.0.0" - }, - "engines": { - "node": ">=16 || ^14.17" - }, - "peerDependencies": { - "semantic-release": ">=19.0.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/@semantic-release/npm/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/@semantic-release/npm/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@semantic-release/npm/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/npm/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/@semantic-release/npm/node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", - "license": "MIT", - "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/npm/node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/release-notes-generator": { - "version": "10.0.3", - "resolved": "https://registry.npmjs.org/@semantic-release/release-notes-generator/-/release-notes-generator-10.0.3.tgz", - "integrity": "sha512-k4x4VhIKneOWoBGHkx0qZogNjCldLPRiAjnIpMnlUh6PtaWXp/T+C9U7/TaNDDtgDa5HMbHl4WlREdxHio6/3w==", - "license": "MIT", - "dependencies": { - "conventional-changelog-angular": "^5.0.0", - "conventional-changelog-writer": "^5.0.0", - "conventional-commits-filter": "^2.0.0", - "conventional-commits-parser": "^3.2.3", - "debug": "^4.0.0", - "get-stream": "^6.0.0", - "import-from": "^4.0.0", - "into-stream": "^6.0.0", - "lodash": "^4.17.4", - "read-pkg-up": "^7.0.0" - }, - "engines": { - "node": ">=14.17" - }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "license": "MIT", - "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@semantic-release/release-notes-generator/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" - } - }, - "node_modules/@sindresorhus/fnv1a": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/fnv1a/-/fnv1a-3.1.0.tgz", - "integrity": "sha512-KV321z5m/0nuAg83W1dPLy85HpHDk7Sdi4fJbwvacWsEhAh+rZUW4ZfGcXmUIvjZg4ss2bcwNlRhJ7GBEUG08w==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", - "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@sinonjs/commons": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", - "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/commons/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sinonjs/fake-timers": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", - "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^3.0.0" - } - }, - "node_modules/@sinonjs/samsam": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.0.tgz", - "integrity": "sha512-Bp8KUVlLp8ibJZrnvq2foVhP0IVX2CIprMJPK0vqGqgrDa0OHVKeZyBykqskkrdxV6yKBPmGasO8LVjAKR3Gew==", - "license": "BSD-3-Clause", - "dependencies": { - "@sinonjs/commons": "^2.0.0", - "lodash.get": "^4.4.2", - "type-detect": "^4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/@sinonjs/commons": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-2.0.0.tgz", - "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", - "license": "BSD-3-Clause", - "dependencies": { - "type-detect": "4.0.8" - } - }, - "node_modules/@sinonjs/samsam/node_modules/type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/@sinonjs/text-encoding": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", - "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==", - "license": "(Unlicense OR Apache-2.0)" - }, - "node_modules/@smithy/abort-controller": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", - "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", - "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", - "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", - "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/util-config-provider": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz", - "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-retry": "^3.0.14", - "@smithy/middleware-serde": "^3.0.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", - "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", - "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^3.3.0", - "@smithy/util-hex-encoding": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz", - "integrity": "sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.5", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", - "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz", - "integrity": "sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^3.0.5", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz", - "integrity": "sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^3.1.2", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", - "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^4.1.0", - "@smithy/querystring-builder": "^3.0.3", - "@smithy/types": "^3.3.0", - "@smithy/util-base64": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", - "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/chunked-blob-reader": "^3.0.0", - "@smithy/chunked-blob-reader-native": "^3.0.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/hash-node": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", - "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/hash-stream-node": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", - "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", - "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", - "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/md5-js": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", - "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", - "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", - "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-serde": "^3.0.3", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/url-parser": "^3.0.3", - "@smithy/util-middleware": "^3.0.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz", - "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/protocol-http": "^4.1.0", - "@smithy/service-error-classification": "^3.0.3", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-retry": "^3.0.3", - "tslib": "^2.6.2", - "uuid": "^9.0.1" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", - "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", - "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", - "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^3.1.3", - "@smithy/shared-ini-file-loader": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", - "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^3.1.1", - "@smithy/protocol-http": "^4.1.0", - "@smithy/querystring-builder": "^3.0.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", - "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", - "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", - "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "@smithy/util-uri-escape": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", - "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", - "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", - "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", - "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-middleware": "^3.0.3", - "@smithy/util-uri-escape": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "3.1.12", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz", - "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-endpoint": "^3.1.0", - "@smithy/middleware-stack": "^3.0.3", - "@smithy/protocol-http": "^4.1.0", - "@smithy/types": "^3.3.0", - "@smithy/util-stream": "^3.1.3", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", - "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", - "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^3.0.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/util-base64": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", - "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", - "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", - "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", - "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", - "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz", - "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "3.0.14", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz", - "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^3.0.5", - "@smithy/credential-provider-imds": "^3.2.0", - "@smithy/node-config-provider": "^3.1.4", - "@smithy/property-provider": "^3.1.3", - "@smithy/smithy-client": "^3.1.12", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", - "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^3.1.4", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", - "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", - "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", - "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^3.0.3", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", - "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^3.2.4", - "@smithy/node-http-handler": "^3.1.4", - "@smithy/types": "^3.3.0", - "@smithy/util-base64": "^3.0.0", - "@smithy/util-buffer-from": "^3.0.0", - "@smithy/util-hex-encoding": "^3.0.0", - "@smithy/util-utf8": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", - "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", - "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^3.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", - "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^3.1.1", - "@smithy/types": "^3.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tootallnate/once": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", - "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/@tootallnate/quickjs-emscripten": { - "version": "0.23.0", - "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", - "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@tpluscode/rdf-ns-builders": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-4.3.0.tgz", - "integrity": "sha512-x3uh9mYwAU+PrALaDKhVjml1TCCWWduo6J8rybd9SMEEAoooXq1MYb13MRputjRT/kYaFyCND7LMobzhxZ/+bg==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2", - "@rdfjs/namespace": "^2", - "@rdfjs/types": "*", - "@types/rdfjs__namespace": "^2.0.2", - "@zazuko/prefixes": "^2.0.1" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", - "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", - "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", - "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", - "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "license": "MIT" - }, - "node_modules/@tsoa/cli": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@tsoa/cli/-/cli-5.1.1.tgz", - "integrity": "sha512-krvp6Qr2yPUfj6bJRs0vwQhLANeINzyusNnzgSoerDfBBBnjZ+VhvR4rWguAcLc1kgP/kFAJz5kIp4iqLFmILQ==", - "license": "MIT", - "dependencies": { - "@tsoa/runtime": "^5.0.0", - "deepmerge": "^4.2.2", - "fs-extra": "^10.1.0", - "glob": "^8.0.3", - "handlebars": "^4.7.7", - "merge": "^2.1.1", - "minimatch": "^5.1.0", - "typescript": "^4.9.5", - "validator": "^13.7.0", - "yamljs": "^0.3.0", - "yargs": "^17.5.1" - }, - "bin": { - "tsoa": "dist/cli.js" - }, - "engines": { - "node": ">=12.0.0", - "yarn": ">=1.9.4" - } - }, - "node_modules/@tsoa/cli/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@tsoa/cli/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tsoa/runtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/@tsoa/runtime/-/runtime-5.0.0.tgz", - "integrity": "sha512-DY0x7ZhNRF9FcwCZXQQbQhVj3bfZe0LScNyqp0c8PhDTj0gRMjY4ESVpihopRzhQtamReJoDRg3FhEu4BlSVtA==", - "license": "MIT", - "dependencies": { - "@types/multer": "^1.4.7", - "promise.any": "^2.0.5", - "reflect-metadata": "^0.1.13", - "validator": "^13.7.0" - }, - "engines": { - "node": ">=12.0.0", - "yarn": ">=1.9.4" - } - }, - "node_modules/@types/bn.js": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", - "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/body-parser": { - "version": "1.19.5", - "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", - "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", - "license": "MIT", - "dependencies": { - "@types/connect": "*", - "@types/node": "*" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "node_modules/@types/chai": { - "version": "4.3.17", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", - "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", - "license": "MIT" - }, - "node_modules/@types/chai-as-promised": { - "version": "7.1.8", - "resolved": "https://registry.npmjs.org/@types/chai-as-promised/-/chai-as-promised-7.1.8.tgz", - "integrity": "sha512-ThlRVIJhr69FLlh6IctTXFkmhtP3NpMZ2QGq69StYLyKZFp/HOp1VdKZj7RvfNWYYcJ1xlbLGLLWj1UvP5u/Gw==", - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/chai-string": { - "version": "1.4.5", - "resolved": "https://registry.npmjs.org/@types/chai-string/-/chai-string-1.4.5.tgz", - "integrity": "sha512-IecXRMSnpUvRnTztdpSdjcmcW7EdNme65bfDCQMi7XrSEPGmyDYYTEfc5fcactWDA6ioSm8o7NUqg9QxjBCCEw==", - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/chai-subset": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/chai-subset/-/chai-subset-1.3.5.tgz", - "integrity": "sha512-c2mPnw+xHtXDoHmdtcCXGwyLMiauiAyxWMzhGpqHC4nqI/Y5G2XhTampslK2rb59kpcuHon03UH8W6iYUzw88A==", - "license": "MIT", - "dependencies": { - "@types/chai": "*" - } - }, - "node_modules/@types/clownface": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/clownface/-/clownface-2.0.8.tgz", - "integrity": "sha512-vomfitsRIuvw9zp/Xph8/AHPRBQ+7Ji/OnQUC3TOem+KzG/z2rCeEjpZH23wP7t0gjXZHPiZU1syFkf/oP3v8w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/rdfjs__environment": "*" - } - }, - "node_modules/@types/command-line-args": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", - "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", - "license": "MIT" - }, - "node_modules/@types/command-line-usage": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz", - "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==", - "license": "MIT" - }, - "node_modules/@types/connect": { - "version": "3.4.38", - "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", - "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/cors": { - "version": "2.8.17", - "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", - "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/dns-packet": { - "version": "5.6.5", - "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz", - "integrity": "sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/express": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", - "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", - "license": "MIT", - "dependencies": { - "@types/body-parser": "*", - "@types/express-serve-static-core": "^4.17.33", - "@types/qs": "*", - "@types/serve-static": "*" - } - }, - "node_modules/@types/express-serve-static-core": { - "version": "4.19.5", - "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", - "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/qs": "*", - "@types/range-parser": "*", - "@types/send": "*" - } - }, - "node_modules/@types/extend": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/extend/-/extend-3.0.4.tgz", - "integrity": "sha512-ArMouDUTJEz1SQRpFsT2rIw7DeqICFv5aaVzLSIYMYQSLcwcGOfT3VyglQs/p7K3F7fT4zxr0NWxYZIdifD6dA==", - "license": "MIT" - }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", - "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", - "license": "MIT" - }, - "node_modules/@types/http-errors": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", - "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", - "license": "MIT" - }, - "node_modules/@types/http-link-header": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.7.tgz", - "integrity": "sha512-snm5oLckop0K3cTDAiBnZDy6ncx9DJ3mCRDvs42C884MbVYPP74Tiq2hFsSDRTyjK6RyDYDIulPiW23ge+g5Lw==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/ip": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.3.tgz", - "integrity": "sha512-64waoJgkXFTYnCYDUWgSATJ/dXEBanVkaP5d4Sbk7P6U7cTTMhxVyROTckc6JKdwCrgnAjZMn0k3177aQxtDEA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/istanbul-lib-coverage": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", - "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "license": "MIT" - }, - "node_modules/@types/json5": { - "version": "0.0.29", - "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", - "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", - "license": "MIT" - }, - "node_modules/@types/jsonld": { - "version": "1.5.15", - "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.15.tgz", - "integrity": "sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==", - "license": "MIT" - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/lodash": { - "version": "4.17.7", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", - "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", - "license": "MIT" - }, - "node_modules/@types/lodash.clonedeep": { - "version": "4.5.9", - "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz", - "integrity": "sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==", - "license": "MIT", - "dependencies": { - "@types/lodash": "*" - } - }, - "node_modules/@types/lzma-native": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/lzma-native/-/lzma-native-4.0.4.tgz", - "integrity": "sha512-9nwec86WAT3wUhjx9iV0AQ06xyDyiN/D9CAk3ZzNLb8zFjjo4EDBliN2uo7CFcBDJ64oXfX4sa+p6fpGpzy/4A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mdast": { - "version": "3.0.15", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", - "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2" - } - }, - "node_modules/@types/mime": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", - "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", - "license": "MIT" - }, - "node_modules/@types/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==", - "license": "MIT" - }, - "node_modules/@types/minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", - "license": "MIT" - }, - "node_modules/@types/mocha": { - "version": "10.0.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.7.tgz", - "integrity": "sha512-GN8yJ1mNTcFcah/wKEFIJckJx9iJLoMSzWcfRRuxz/Jk+U6KQNnml+etbtxFK8lPjzOw3zp4Ha/kjSst9fsHYw==", - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "0.7.34", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", - "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", - "license": "MIT" - }, - "node_modules/@types/multer": { - "version": "1.4.11", - "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz", - "integrity": "sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==", - "license": "MIT", - "dependencies": { - "@types/express": "*" - } - }, - "node_modules/@types/multicast-dns": { - "version": "7.2.4", - "resolved": "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.4.tgz", - "integrity": "sha512-ib5K4cIDR4Ro5SR3Sx/LROkMDa0BHz0OPaCBL/OSPDsAXEGZ3/KQeS6poBKYVN7BfjXDL9lWNwzyHVgt/wkyCw==", - "license": "MIT", - "dependencies": { - "@types/dns-packet": "*", - "@types/node": "*" - } - }, - "node_modules/@types/murmurhash3js-revisited": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.3.tgz", - "integrity": "sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==", - "license": "MIT" - }, - "node_modules/@types/n3": { - "version": "1.16.4", - "resolved": "https://registry.npmjs.org/@types/n3/-/n3-1.16.4.tgz", - "integrity": "sha512-6PmHRYCCdjbbBV2UVC/HjtL6/5Orx9ku2CQjuojucuHvNvPmnm6+02B18YGhHfvU25qmX2jPXyYPHsMNkn+w2w==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "^1.1.0", - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "20.14.15", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz", - "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/node-cron": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/node-cron/-/node-cron-3.0.11.tgz", - "integrity": "sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/normalize-package-data": { - "version": "2.4.4", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", - "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", - "license": "MIT" - }, - "node_modules/@types/parse-json": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", - "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", - "license": "MIT" - }, - "node_modules/@types/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/qs": { - "version": "6.9.15", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", - "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", - "license": "MIT" - }, - "node_modules/@types/range-parser": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", - "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", - "license": "MIT" - }, - "node_modules/@types/rdf-dataset-ext": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/rdf-dataset-ext/-/rdf-dataset-ext-1.0.8.tgz", - "integrity": "sha512-ngMGOzAm+yvrfTzFhlmPNa9lfWO72IkdqYRR+HNIPX3x+RPLf6qRpAi8GAZCg0rkpGt2JJqDQF3FgVxE6ykr/w==", - "license": "MIT", - "peer": true, - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/readable-stream": "*" - } - }, - "node_modules/@types/rdf-ext": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@types/rdf-ext/-/rdf-ext-2.5.0.tgz", - "integrity": "sha512-d+O6WnpKTHULLYZ/EeHfCnpt38J+w5QmAQ3Bsijdk0p+RIbEhoVh9XvXzs/H6Os3rxltiQOUm2Bg/+JqLmQcEg==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*", - "@types/rdfjs__data-model": "*", - "@types/rdfjs__dataset": "*", - "@types/rdfjs__environment": "*", - "@types/rdfjs__fetch-lite": "*", - "@types/rdfjs__formats": "*", - "@types/rdfjs__namespace": "*", - "@types/rdfjs__prefix-map": "*", - "@types/rdfjs__score": "*", - "@types/rdfjs__term-map": "*", - "@types/rdfjs__term-set": "*", - "@types/rdfjs__traverser": "*" - } - }, - "node_modules/@types/rdf-utils-fs": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@types/rdf-utils-fs/-/rdf-utils-fs-2.1.5.tgz", - "integrity": "sha512-JE4GrR0whgLZWYQakjxGxWwHgxNmRO1hI7TgDs6Ry4tMM7CDlAexaAF6zcrz7RGjKXmNsZjXWs430AVtuESfRQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, - "node_modules/@types/rdfjs__data-model": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/@types/rdfjs__data-model/-/rdfjs__data-model-2.0.8.tgz", - "integrity": "sha512-7OVjhmA8QPEdRReHFieKuqn2mbYx3ndEIEmh/6FkeJC8QCMJGVeSuRKEUVXbZGwP0rDKZuhQGozaRv3O1z1gPQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "^1.0.1" - } - }, - "node_modules/@types/rdfjs__dataset": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-2.0.7.tgz", - "integrity": "sha512-+GaYIL9C7N1N0HyH+obU4IXuL7DX+fXuf827aUQ2Vx2UghO47+OTxo2v3seEQj/1YHoHBfQFk5Y4P6Q7Ht4Hqw==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__environment": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/rdfjs__environment/-/rdfjs__environment-1.0.0.tgz", - "integrity": "sha512-MDcnv3qfJvbHoEpUQXj5muT8g3e+xz1D8sGevrq3+Q4TzeEvQf5ijGX5l8485XFYrN/OBApgzXkHMZC04/kd5w==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*", - "@types/node": "*" - } - }, - "node_modules/@types/rdfjs__fetch-lite": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/rdfjs__fetch-lite/-/rdfjs__fetch-lite-3.0.10.tgz", - "integrity": "sha512-5EokVEj3eJGBknxM3pFV8y6w/ZVMAqZkmHKFLz6zgLxonCmC/bHHXeCTZGE1+5Heji/4vc84vinZMaQ1+n7t6Q==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*", - "@types/node": "*", - "@types/rdfjs__formats": "*" - } - }, - "node_modules/@types/rdfjs__formats": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/rdfjs__formats/-/rdfjs__formats-4.0.1.tgz", - "integrity": "sha512-Zj7hQEn5HeCj+pJCWshY2gqBcdBdwyc2j20Ht3PH91pkdRuG2AlGDD3N9PQ1oZ3+J6Q96rAlhxUbjQUp9+s3FQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/node": "*", - "@types/rdfjs__parser-jsonld": "*", - "@types/rdfjs__parser-n3": "*", - "@types/rdfjs__serializer-jsonld": "*", - "@types/rdfjs__serializer-jsonld-ext": "*", - "@types/rdfjs__serializer-ntriples": "*", - "@types/rdfjs__serializer-turtle": "*", - "@types/rdfjs__sink-map": "*", - "rdfxml-streaming-parser": ">=2" - } - }, - "node_modules/@types/rdfjs__formats-common": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/@types/rdfjs__formats-common/-/rdfjs__formats-common-3.1.5.tgz", - "integrity": "sha512-Zt74nSd9NemOq90/2cMrBVwnHJIXHFFDS7tkY4Slei1eRoQJpws059Lx9O+mqaFspkD3r81Enu/5CiNfQg9V7g==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/node": "*", - "@types/rdfjs__parser-jsonld": "*", - "@types/rdfjs__parser-n3": "*", - "@types/rdfjs__serializer-jsonld": "*", - "@types/rdfjs__serializer-ntriples": "*", - "@types/rdfjs__sink-map": "*", - "rdfxml-streaming-parser": ">=2" - } - }, - "node_modules/@types/rdfjs__namespace": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/rdfjs__namespace/-/rdfjs__namespace-2.0.10.tgz", - "integrity": "sha512-xoVzEIOxcpyteEmzaj94MSBbrBFs+vqv05joMhzLEiPRwsBBDnhkdBCaaDxR1Tf7wOW0kB2R1IYe4C3vEBFPgA==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__parser-jsonld": { - "version": "2.1.7", - "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-jsonld/-/rdfjs__parser-jsonld-2.1.7.tgz", - "integrity": "sha512-n35K+c1Y95580N202Jxly6xjFE953FF+Y2mwxok6zLfMo4rgIfgMBElnNwpja0IeYXTuzGm1tEz7va3lItGrTg==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/jsonld": "*" - } - }, - "node_modules/@types/rdfjs__parser-n3": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-n3/-/rdfjs__parser-n3-2.0.6.tgz", - "integrity": "sha512-VHfdq7BDV6iMCtHkzTFSOuUWnqGlMUmEF0UZyK4+g9SzLWvc6TMcU5TYwQPQIz/e0s7dZ+xomxx6mVtIzsRQ/A==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, - "node_modules/@types/rdfjs__prefix-map": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@types/rdfjs__prefix-map/-/rdfjs__prefix-map-0.1.5.tgz", - "integrity": "sha512-RAwyS/2dT9X79QwM0F8KLweTfuBoe6xtiAlU7wKPB+/t/sfk6A50LYtAWaDVP5qBjcu50UkKkZT+VR47CiLkfg==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__score": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/@types/rdfjs__score/-/rdfjs__score-0.1.6.tgz", - "integrity": "sha512-TZZaI0PntOUnfA6vKsVlgeYuyiGvtlMygu0ycmmFn5quldbDWzIIxadciTIaBQBcPXmJHcnXiS8/mbZ9FkX4hQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__serializer-jsonld": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld/-/rdfjs__serializer-jsonld-2.0.5.tgz", - "integrity": "sha512-ubdLD9QgZzAt+65NSPzh2qWCPWcGYlHEWgkP6uRwfm7JC48Xh/QjzwOTG13MTomOkQqcN4R7PIG0j3Ca8iyNWQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, - "node_modules/@types/rdfjs__serializer-jsonld-ext": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld-ext/-/rdfjs__serializer-jsonld-ext-4.0.1.tgz", - "integrity": "sha512-jgbQ/1kV7nESKG7SY8FJED6K4OFznr6Sz3ybF1ncpBR7TUBTuy3InpZOVRK4Wjpy2zi84iIAzJ1CIIo9NZh2Xw==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/jsonld": "*", - "@types/node": "*" - } - }, - "node_modules/@types/rdfjs__serializer-ntriples": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-ntriples/-/rdfjs__serializer-ntriples-2.0.6.tgz", - "integrity": "sha512-Nn3e3eyuymLvbI5MFzI7ODD/X6ZGpbB9fLaWOB00RtFHd2vttk3wQL2fzzsZZQPJ/ihC/xlFE4cNQkO6SoHa7w==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, - "node_modules/@types/rdfjs__serializer-turtle": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-turtle/-/rdfjs__serializer-turtle-1.1.0.tgz", - "integrity": "sha512-NGHnbz5985UwS/YS6WL/FkS94B+QiVTdsfvJCqPwLmY3E7UeClw91c2KbiphZUR/uh7uwLwxeKKhV2T1gYgT5Q==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0", - "@types/node": "*", - "@types/rdfjs__prefix-map": "*" - } - }, - "node_modules/@types/rdfjs__sink-map": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@types/rdfjs__sink-map/-/rdfjs__sink-map-2.0.5.tgz", - "integrity": "sha512-ycUBlOMbp9YpjrBrMwGv3uiqulOWgodess06cinYLxomOTc2ET9rEQklgM5rJqnu5WMsVP8SFG3fFw36/5hADQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__term-map": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/rdfjs__term-map/-/rdfjs__term-map-2.0.10.tgz", - "integrity": "sha512-YlpYkya+Xq9fmcw+BMi1SCh+w2sBu7G0/qd2+ZhB4QIK3V1xq2o3EOAZnlahyQdwrW9t5+Ihw8IVVvZsJvDOTA==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__term-set": { - "version": "2.0.9", - "resolved": "https://registry.npmjs.org/@types/rdfjs__term-set/-/rdfjs__term-set-2.0.9.tgz", - "integrity": "sha512-RRXs5DwFGanZyT705f7KLSiN68gUVUtGWTp508CXJhLfD7AWmilqc1BLgLUoac48h3pnh9w5lRhwFm6fj1ZE5Q==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/rdfjs__to-ntriples": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@types/rdfjs__to-ntriples/-/rdfjs__to-ntriples-2.0.6.tgz", - "integrity": "sha512-6Y7iNDU93ORX5vNqnEM/CefOsxl2di8ZyaHw3Q0U1nqtCijmubUzXAqd4AIHIGiWQfi1v+bi9bNk5ztVeMAyLg==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": ">=1.0.0" - } - }, - "node_modules/@types/rdfjs__traverser": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@types/rdfjs__traverser/-/rdfjs__traverser-0.1.5.tgz", - "integrity": "sha512-tTpiM6lAddw+bGRDjhzwdpo1EQK73m8gYgMVNfO4OsevnuLZvQJeCJBckpuDC4H5HVAEwCapI0UlH9dVnZ9u5g==", - "license": "MIT", - "dependencies": { - "@rdfjs/types": "*" - } - }, - "node_modules/@types/readable-stream": { - "version": "4.0.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.15.tgz", - "integrity": "sha512-oAZ3kw+kJFkEqyh7xORZOku1YAKvsFTogRY8kVl4vHpEKiDkfnSA/My8haRE7fvmix5Zyy+1pwzOi7yycGLBJw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" - } - }, - "node_modules/@types/responselike": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.3.tgz", - "integrity": "sha512-H/+L+UkTV33uf49PH5pCAUBVPNj2nDBXTN+qS1dOwyyg24l3CcicicCA7ca+HMvJBZcFgl5r8e+RR6elsb4Lyw==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/retry": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.1.tgz", - "integrity": "sha512-xoDlM2S4ortawSWORYqsdU+2rxdh4LRW9ytc3zmT37RIKQh6IHyKwwtKhKis9ah8ol07DCkZxPt8BBvPjC6v4g==", - "license": "MIT" - }, - "node_modules/@types/secp256k1": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", - "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.5.8", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", - "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", - "license": "MIT" - }, - "node_modules/@types/send": { - "version": "0.17.4", - "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", - "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", - "license": "MIT", - "dependencies": { - "@types/mime": "^1", - "@types/node": "*" - } - }, - "node_modules/@types/serve-static": { - "version": "1.15.7", - "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", - "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", - "license": "MIT", - "dependencies": { - "@types/http-errors": "*", - "@types/node": "*", - "@types/send": "*" - } - }, - "node_modules/@types/sinon": { - "version": "17.0.3", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.3.tgz", - "integrity": "sha512-j3uovdn8ewky9kRBG19bOwaZbexJu/XjtkHyjvUgt4xfPFz18dcORIMqnYh66Fx3Powhcr85NT5+er3+oViapw==", - "license": "MIT", - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/@types/sinonjs__fake-timers": { - "version": "8.1.5", - "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", - "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", - "license": "MIT" - }, - "node_modules/@types/triple-beam": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", - "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", - "license": "MIT" - }, - "node_modules/@types/unist": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", - "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==", - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", - "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/yargs": { - "version": "17.0.33", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", - "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", - "license": "MIT", - "dependencies": { - "@types/yargs-parser": "*" - } - }, - "node_modules/@types/yargs-parser": { - "version": "21.0.3", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", - "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", - "license": "MIT" - }, - "node_modules/@types/yauzl": { - "version": "2.10.3", - "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", - "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", - "license": "MIT", - "optional": true, - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", - "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/type-utils": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.33.0.tgz", - "integrity": "sha512-zeQjOoES5JFjTnAhI5QY7ZviczMzDptls15GFsI6jyUOq0kOf9+WonkhtlIhh0RgHRnqj5gdNxW5j1EvAyYg6Q==", - "license": "MIT", - "dependencies": { - "@types/json-schema": "^7.0.7", - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^3.0.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "license": "MIT", - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/@typescript-eslint/experimental-utils/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", - "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", - "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", - "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "6.21.0", - "@typescript-eslint/utils": "6.21.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", - "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", - "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/visitor-keys": "6.21.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "minimatch": "9.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", - "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.21.0", - "@typescript-eslint/types": "6.21.0", - "@typescript-eslint/typescript-estree": "6.21.0", - "semver": "^7.5.4" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", - "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "6.21.0", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@ungap/promise-all-settled": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@ungap/promise-all-settled/-/promise-all-settled-1.1.2.tgz", - "integrity": "sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==", - "license": "ISC" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", - "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", - "license": "ISC" - }, - "node_modules/@vocabulary/sh": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@vocabulary/sh/-/sh-1.1.5.tgz", - "integrity": "sha512-8R4uxHLpwmp6l6szZdCtfQx0wRy64OHuOsYTDfhCsbJ773Uv6nCM2bYBtjjirZHN+2m3uHQWgtWOdvuu1jwmOA==", - "license": "MIT", - "peerDependencies": { - "@rdfjs/types": "^1.0.0" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/@yarnpkg/lockfile": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@yarnpkg/lockfile/-/lockfile-1.1.0.tgz", - "integrity": "sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==", - "license": "BSD-2-Clause" - }, - "node_modules/@zazuko/env": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/@zazuko/env/-/env-2.2.1.tgz", - "integrity": "sha512-GqM/461f50Px1a8Sx3tfViZkACY9gZGe3iOizF9pIeRd7Ilx+xH+VNk9rmMlKPnk600m1LixrxGuirT28zQxVQ==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.1", - "@rdfjs/dataset": "^2.0.1", - "@rdfjs/formats": "^4.0.0", - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-map": "^2.0.0", - "@rdfjs/term-set": "^2.0.1", - "@rdfjs/traverser": "^0.1.2", - "@tpluscode/rdf-ns-builders": "^4.1.0", - "@zazuko/env-core": "^1.1.2", - "@zazuko/prefixes": "^2.1.0", - "clownface": "^2.0.2", - "get-stream": "^9.0.1", - "rdf-dataset-ext": "^1.1.0" - }, - "peerDependencies": { - "@rdfjs/types": "^1.1.0", - "@types/clownface": "^2.0.0", - "@types/rdf-dataset-ext": "^1", - "@types/rdfjs__data-model": "^2.0.7", - "@types/rdfjs__dataset": "^2.0.7", - "@types/rdfjs__environment": "^1.0.0", - "@types/rdfjs__formats": "^4.0.0", - "@types/rdfjs__namespace": "^2.0.10", - "@types/rdfjs__term-map": "^2.0.9", - "@types/rdfjs__term-set": "^2.0.8", - "@types/rdfjs__traverser": "^0.1.3" - } - }, - "node_modules/@zazuko/env-core": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@zazuko/env-core/-/env-core-1.1.2.tgz", - "integrity": "sha512-mnLG40utuT7jPBPLs6fJ0puhfagnXSj+S8t9+zUGs3YlrOq/7b2zr64Hi3p3etwDdApaQ0VgQuNIY9doaruS1Q==", - "dependencies": { - "@rdfjs/environment": "^1.0.0" - }, - "peerDependencies": { - "@types/rdfjs__environment": "^1.0.0" - } - }, - "node_modules/@zazuko/env-node": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/@zazuko/env-node/-/env-node-2.1.4.tgz", - "integrity": "sha512-D3pw3T3SpC6lI3D5Akio/63lWaI9VKWazVGcjWP0gC598JQ60V7T+4QSCUcxT0ZGTDOkNdT3loYR9P+JK96KeQ==", - "dependencies": { - "@rdfjs/fetch-lite": "^3.2.2", - "@rdfjs/formats": "^4.0.0", - "@zazuko/env": "^2.1.1", - "@zazuko/rdf-utils-fs": "^3.3.0" - }, - "peerDependencies": { - "@types/rdfjs__fetch-lite": "^3.0.6", - "@types/rdfjs__formats": "^4" - } - }, - "node_modules/@zazuko/prefixes": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@zazuko/prefixes/-/prefixes-2.2.0.tgz", - "integrity": "sha512-mmRS+urGVMcAP5edzFq0V+B2PbbpEklP7BZGVF0+82ClczTwgpIL1tZy2mRfudwRYoAe+WkyWXDnlArPpdzLIg==", - "license": "MIT" - }, - "node_modules/@zazuko/rdf-utils-fs": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/@zazuko/rdf-utils-fs/-/rdf-utils-fs-3.3.1.tgz", - "integrity": "sha512-4HjTbJUwiCFanMMcaaZkLIkWUdVjXSQstAyxnfzsUOmh8Q43iVBL+mYAl17zoi47III0POL6hitRsN1JJ5tUFg==", - "license": "MIT", - "dependencies": { - "readable-stream": ">=3.6.0" - }, - "peerDependencies": { - "@rdfjs/types": "*", - "@types/rdfjs__environment": "0 - 1", - "@types/rdfjs__formats": "^4" - } - }, - "node_modules/abbrev": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", - "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", - "license": "ISC", - "optional": true - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/accepts": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", - "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", - "license": "MIT", - "dependencies": { - "mime-types": "~2.1.34", - "negotiator": "0.6.3" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/acorn": { - "version": "8.12.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", - "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.3", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", - "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aegir": { - "version": "37.12.1", - "resolved": "https://registry.npmjs.org/aegir/-/aegir-37.12.1.tgz", - "integrity": "sha512-ZvINVE3tBeKkgoWw2kXYfCP728MY1N13DP+qap13opXs59SJpxPYKE4P1WJ5y3+acqVftK+1FhpJTVVJb/FhcQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@electron/get": "^2.0.0", - "@polka/send-type": "^0.5.2", - "@semantic-release/changelog": "^6.0.1", - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/git": "^10.0.1", - "@semantic-release/github": "https://registry.npmjs.org/@achingbrain/semantic-release-github/-/semantic-release-github-0.0.0.tgz", - "@semantic-release/npm": "^9.0.1", - "@semantic-release/release-notes-generator": "^10.0.3", - "@types/chai": "^4.2.16", - "@types/chai-as-promised": "^7.1.3", - "@types/chai-string": "^1.4.2", - "@types/chai-subset": "^1.3.3", - "@types/mocha": "^10.0.0", - "@types/node": "^18.11.15", - "@types/sinon": "^10.0.0", - "@typescript-eslint/eslint-plugin": "^5.18.0", - "buffer": "^6.0.3", - "bytes": "^3.1.0", - "c8": "^7.7.0", - "chai": "^4.3.4", - "chai-as-promised": "^7.1.1", - "chai-bites": "^0.1.2", - "chai-parentheses": "^0.0.2", - "chai-string": "^1.5.0", - "chai-subset": "^1.6.0", - "conventional-changelog-conventionalcommits": "^5.0.0", - "cors": "^2.8.5", - "dependency-check": "^5.0.0-2", - "detective-cjs": "^4.0.0", - "detective-es6": "^3.0.0", - "diff": "^5.1.0", - "electron-mocha-main": "^11.0.3", - "env-paths": "^3.0.0", - "esbuild": "^0.16.1", - "eslint": "^7.32.0", - "eslint-config-ipfs": "^2.1.0", - "eslint-plugin-etc": "^1.1.7", - "eslint-plugin-import": "^2.18.0", - "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0", - "execa": "^6.1.0", - "extract-zip": "^2.0.1", - "fs-extra": "^11.1.0", - "gh-pages": "^4.0.0", - "globby": "^13.1.1", - "it-glob": "^1.0.1", - "kleur": "^4.1.4", - "lilconfig": "^2.0.5", - "listr": "~0.14.2", - "mdast-util-from-markdown": "^1.2.0", - "mdast-util-gfm": "^2.0.1", - "mdast-util-gfm-footnote": "^1.0.1", - "mdast-util-gfm-strikethrough": "^1.0.1", - "mdast-util-gfm-table": "^1.0.4", - "mdast-util-gfm-task-list-item": "^1.0.1", - "mdast-util-to-markdown": "^1.3.0", - "mdast-util-toc": "^6.1.0", - "merge-options": "^3.0.4", - "micromark-extension-gfm": "^2.0.1", - "micromark-extension-gfm-footnote": "^1.0.4", - "micromark-extension-gfm-strikethrough": "^1.0.4", - "micromark-extension-gfm-table": "^1.0.5", - "micromark-extension-gfm-task-list-item": "^1.0.3", - "mocha": "^10.0.0", - "npm-package-json-lint": "^6.3.0", - "nyc": "^15.1.0", - "p-map": "^5.3.0", - "p-retry": "^5.1.2", - "pascalcase": "^2.0.0", - "path": "^0.12.7", - "playwright-test": "^8.1.0", - "polka": "^0.5.2", - "premove": "^4.0.0", - "prompt": "^1.2.2", - "proper-lockfile": "^4.1.2", - "react-native-test-runner": "^5.0.0", - "read-pkg-up": "^9.1.0", - "rimraf": "^3.0.2", - "semantic-release": "^19.0.2", - "semantic-release-monorepo": "^7.0.5", - "semver": "^7.3.8", - "source-map-support": "^0.5.20", - "strip-bom": "^5.0.0", - "strip-json-comments": "^5.0.0", - "tempy": "^2.0.0", - "typedoc": "^0.23.21", - "typedoc-plugin-mdn-links": "^2.0.0", - "typedoc-plugin-missing-exports": "^1.0.0", - "typescript": "^4.6.3", - "uint8arrays": "^4.0.2", - "undici": "^5.0.0", - "update-notifier": "^6.0.2", - "wherearewe": "^2.0.1", - "yargs": "^17.1.1", - "yargs-parser": "^21.1.1" - }, - "bin": { - "aegir": "src/index.js" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/aegir/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "license": "MIT", - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/aegir/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/aegir/node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/aegir/node_modules/@eslint/eslintrc/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/aegir/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "deprecated": "Use @eslint/config-array instead", - "license": "Apache-2.0", - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/aegir/node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "deprecated": "Use @eslint/object-schema instead", - "license": "BSD-3-Clause" - }, - "node_modules/aegir/node_modules/@types/node": { - "version": "18.19.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz", - "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==", - "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/aegir/node_modules/@types/sinon": { - "version": "10.0.20", - "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-10.0.20.tgz", - "integrity": "sha512-2APKKruFNCAZgx3daAyACGzWuJ028VVCUDk6o2rw/Z4PXT0ogwdV4KUegW0MwVs0Zu59auPXbbuBJHF12Sx1Eg==", - "license": "MIT", - "dependencies": { - "@types/sinonjs__fake-timers": "*" - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/eslint-plugin": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-5.62.0.tgz", - "integrity": "sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==", - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.4.0", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/type-utils": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "natural-compare-lite": "^1.4.0", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^5.0.0", - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/parser": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", - "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "debug": "^4.3.4" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/scope-manager": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", - "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/type-utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-5.62.0.tgz", - "integrity": "sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "5.62.0", - "@typescript-eslint/utils": "5.62.0", - "debug": "^4.3.4", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "*" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/types": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", - "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", - "license": "MIT", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/typescript-estree": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", - "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/visitor-keys": "5.62.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.3.7", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/typescript-estree/node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "license": "MIT", - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/utils": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", - "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@types/json-schema": "^7.0.9", - "@types/semver": "^7.3.12", - "@typescript-eslint/scope-manager": "5.62.0", - "@typescript-eslint/types": "5.62.0", - "@typescript-eslint/typescript-estree": "5.62.0", - "eslint-scope": "^5.1.1", - "semver": "^7.3.7" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aegir/node_modules/@typescript-eslint/visitor-keys": { - "version": "5.62.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", - "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "5.62.0", - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/aegir/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aegir/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/aegir/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/aegir/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "license": "MIT", - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/aegir/node_modules/eslint-etc": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/eslint-etc/-/eslint-etc-4.2.6.tgz", - "integrity": "sha512-/gg8U0SgBz6OQ2QKsvhmSF1WTL53nSD5qYHx/reNPnaKAUfH6qR0AIZQ7NNCRRSICRFagqf1nO8A7WmRFwcAJQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "^4.0.0", - "tsutils": "^3.17.1", - "tsutils-etc": "^1.3.4" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0", - "typescript": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/aegir/node_modules/eslint-plugin-etc": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-etc/-/eslint-plugin-etc-1.5.4.tgz", - "integrity": "sha512-FXpRHz5CGpT11pLln73JME4zHtopYKB7rlpvv5mcjEIJQJZazwswVF5WuGQxkm4cvlOpnFkfpatHICTRqTUkeA==", - "license": "MIT", - "dependencies": { - "@phenomnomnominal/tsquery": "^4.0.0", - "@typescript-eslint/experimental-utils": "^4.0.0", - "eslint-etc": "^4.0.4", - "requireindex": "~1.2.0", - "tslib": "^2.0.0", - "tsutils": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^ 7.0.0", - "typescript": "^3.0.0 || ^4.0.0" - } - }, - "node_modules/aegir/node_modules/eslint-plugin-jsdoc": { - "version": "36.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-36.1.1.tgz", - "integrity": "sha512-nuLDvH1EJaKx0PCa9oeQIxH6pACIhZd1gkalTUxZbaxxwokjs7TplqY0Q8Ew3CoZaf5aowm0g/Z3JGHCatt+gQ==", - "license": "BSD-3-Clause", - "dependencies": { - "@es-joy/jsdoccomment": "0.10.8", - "comment-parser": "1.2.4", - "debug": "^4.3.2", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "^1.1.1", - "lodash": "^4.17.21", - "regextras": "^0.8.0", - "semver": "^7.3.5", - "spdx-expression-parse": "^3.0.1" - }, - "engines": { - "node": "^12 || ^14 || ^16" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" - } - }, - "node_modules/aegir/node_modules/eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", - "license": "ISC", - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "peerDependencies": { - "eslint": "^7.0.0" - } - }, - "node_modules/aegir/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/aegir/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/aegir/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/aegir/node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/aegir/node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/aegir/node_modules/eslint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/aegir/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/aegir/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=4" - } - }, - "node_modules/aegir/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/aegir/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/aegir/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/aegir/node_modules/globby/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/aegir/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "node_modules/aegir/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/aegir/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause" - }, - "node_modules/aes-js": { - "version": "4.0.0-beta.5", - "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", - "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", - "license": "MIT" - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/agentkeepalive": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", - "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", - "license": "MIT", - "optional": true, - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 8.0.0" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "license": "MIT", - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-errors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ajv-errors/-/ajv-errors-1.0.1.tgz", - "integrity": "sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==", - "license": "MIT", - "peerDependencies": { - "ajv": ">=5.0.0" - } - }, - "node_modules/amdefine": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz", - "integrity": "sha512-cE/769sItEDt5sSdqmrWMsat+XaA5FJiEou+ZwlY7ef/Jf/517k6nYyUIRPR2o/QbpBg4FiYXj9GyRGNg5f/bg==", - "license": "BSD-3-Clause AND MIT", - "engines": { - "node": ">=0.4.2" - } - }, - "node_modules/ansi-align": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", - "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-align/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", - "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/ansi-escapes": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", - "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-sequence-parser": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ansi-sequence-parser/-/ansi-sequence-parser-1.1.1.tgz", - "integrity": "sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==", - "license": "MIT" - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansicolors": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/ansicolors/-/ansicolors-0.3.2.tgz", - "integrity": "sha512-QXu7BPrP29VllRxH8GwB7x5iX5qWKAAMLqKQGWTeLWVlNHNOpVMJ91dsxQAIWXpjuW5wqvxu3Jd/nRjrJ+0pqg==", - "license": "MIT" - }, - "node_modules/any-observable": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/any-observable/-/any-observable-0.3.0.tgz", - "integrity": "sha512-/FQM1EDkTsf63Ub2C6O7GuYFDsSXUwsaZDurV0np41ocwq0jthUAYCmhBX9f+KwlaCgIuWyr/4WlUQUBfKfZog==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/any-signal": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz", - "integrity": "sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==", - "license": "Apache-2.0 OR MIT", - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/anymatch": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", - "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "license": "ISC", - "dependencies": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/apache-arrow": { - "version": "18.0.0", - "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.0.0.tgz", - "integrity": "sha512-gFlPaqN9osetbB83zC29AbbZqGiCuFH1vyyPseJ+B7SIbfBtESV62mMT/CkiIt77W6ykC/nTWFzTXFs0Uldg4g==", - "license": "Apache-2.0", - "dependencies": { - "@swc/helpers": "^0.5.11", - "@types/command-line-args": "^5.2.3", - "@types/command-line-usage": "^5.0.4", - "@types/node": "^20.13.0", - "command-line-args": "^5.2.1", - "command-line-usage": "^7.0.1", - "flatbuffers": "^24.3.25", - "json-bignum": "^0.0.3", - "tslib": "^2.6.2" - }, - "bin": { - "arrow2csv": "bin/arrow2csv.js" - } - }, - "node_modules/append-transform": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", - "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", - "license": "MIT", - "dependencies": { - "default-require-extensions": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/aproba": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", - "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", - "license": "ISC", - "optional": true - }, - "node_modules/archy": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", - "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", - "license": "MIT" - }, - "node_modules/are-we-there-yet": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", - "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "optional": true, - "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/are-we-there-yet/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "optional": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", - "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "license": "MIT" - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "license": "Python-2.0" - }, - "node_modules/argv-formatter": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/argv-formatter/-/argv-formatter-1.0.0.tgz", - "integrity": "sha512-F2+Hkm9xFaRg+GkaNnbwXNDV5O6pnCFEmqyhvfC/Ic5LbgOWjJh3L+mN/s91rxVL3znE7DYVpW0GJFT+4YBgWw==", - "license": "MIT" - }, - "node_modules/array-back": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", - "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", - "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-flatten": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", - "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", - "license": "MIT" - }, - "node_modules/array-ify": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", - "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", - "license": "MIT" - }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/array.prototype.every": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/array.prototype.every/-/array.prototype.every-1.1.6.tgz", - "integrity": "sha512-gNEqZD97w6bfQRNmHkFv7rNnGM+VWyHZT+h/rf9C+22owcXuENr66Lfo0phItpU5KoXW6Owb34q2+8MnSIZ57w==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.0", - "es-object-atoms": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", - "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", - "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", - "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-shim-unscopables": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.map": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.7.tgz", - "integrity": "sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-array-method-boxes-properly": "^1.0.0", - "es-object-atoms": "^1.0.0", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", - "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "es-abstract": "^1.22.3", - "es-errors": "^1.2.1", - "get-intrinsic": "^1.2.3", - "is-array-buffer": "^3.0.4", - "is-shared-array-buffer": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/asn1js": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", - "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", - "license": "BSD-3-Clause", - "dependencies": { - "pvtsutils": "^1.3.2", - "pvutils": "^1.1.3", - "tslib": "^2.4.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/assertion-error": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", - "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/ast-module-types": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-4.0.0.tgz", - "integrity": "sha512-Kd0o8r6CDazJGCRzs8Ivpn0xj19oNKrULhoJFzhGjRsLpekF2zyZs9Ukz+JvZhWD6smszfepakTFhAaYpsI12g==", - "license": "MIT", - "engines": { - "node": ">=12.0" - } - }, - "node_modules/ast-types": { - "version": "0.13.4", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", - "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "node_modules/async-retry": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", - "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/at-least-node": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/at-least-node/-/at-least-node-1.0.0.tgz", - "integrity": "sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==", - "license": "ISC", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/auto-changelog": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", - "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", - "dev": true, - "license": "MIT", - "dependencies": { - "commander": "^7.2.0", - "handlebars": "^4.7.7", - "node-fetch": "^2.6.1", - "parse-github-url": "^1.0.2", - "semver": "^7.3.5" - }, - "bin": { - "auto-changelog": "src/index.js" - }, - "engines": { - "node": ">=8.3" - } - }, - "node_modules/auto-changelog/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", - "license": "MIT", - "dependencies": { - "possible-typed-array-names": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/aws-sdk": { - "version": "2.1675.0", - "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1675.0.tgz", - "integrity": "sha512-gkqNAP0m3gDpnZCKL2OLdwAG+SjYT9MURGfTkixAWHIPDYD4OQf3sCcZNBTTTeOvOXus/tJIpgafKHD9DCIOCQ==", - "hasInstallScript": true, - "license": "Apache-2.0", - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.6.2" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/aws-sdk/node_modules/buffer": { - "version": "4.9.2", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", - "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "node_modules/aws-sdk/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", - "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/axios": { - "version": "1.7.9", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.9.tgz", - "integrity": "sha512-LhLcE7Hbiryz8oMDdDptSrWowmB4Bl6RCt6sIJKpRB4XtVf0iEgewX3au/pJqm+Py1kCASkb/FFKjxQaLtxJvw==", - "dependencies": { - "follow-redirects": "^1.15.6", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2": { - "version": "0.4.11", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.11.tgz", - "integrity": "sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==", - "license": "MIT", - "dependencies": { - "@babel/compat-data": "^7.22.6", - "@babel/helper-define-polyfill-provider": "^0.6.2", - "semver": "^6.3.1" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/babel-plugin-polyfill-corejs3": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.10.6.tgz", - "integrity": "sha512-b37+KR2i/khY5sKmWNVQAnitvquQbNdWy6lJdsr0kmquCKEEUgMKK4SboVM3HtfnZilfjr4MMQ7vY58FVWDtIA==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2", - "core-js-compat": "^3.38.0" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-polyfill-regenerator": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.6.2.tgz", - "integrity": "sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==", - "license": "MIT", - "dependencies": { - "@babel/helper-define-polyfill-provider": "^0.6.2" - }, - "peerDependencies": { - "@babel/core": "^7.4.0 || ^8.0.0-0 <8.0.0" - } - }, - "node_modules/babel-plugin-transform-inline-environment-variables": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/babel-plugin-transform-inline-environment-variables/-/babel-plugin-transform-inline-environment-variables-0.4.4.tgz", - "integrity": "sha512-bJILBtn5a11SmtR2j/3mBOjX4K3weC6cq+NNZ7hG22wCAqpc3qtj/iN7dSe9HDiS46lgp1nHsQgeYrea/RUe+g==", - "license": "MIT" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "license": "MIT" - }, - "node_modules/base-x": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", - "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/base58-js": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/base58-js/-/base58-js-2.0.0.tgz", - "integrity": "sha512-nAV5d32QXuGcGptSApkKpC1gGakWBnfJMNjKrYTBh4tb0szfZF+ooueFLy8T4VrY+o4SrE/TyrtUnRZcwZchaA==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/base64-js": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", - "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/basic-ftp": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", - "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/bech32": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", - "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", - "license": "MIT" - }, - "node_modules/before-after-hook": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", - "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", - "license": "Apache-2.0" - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "license": "MIT", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "node_modules/bip66": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", - "integrity": "sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==", - "license": "MIT", - "optional": true, - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/bl": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-5.1.0.tgz", - "integrity": "sha512-tv1ZJHLfTDnXE6tMHv73YgSJaWR2AFuPwMntBe7XL/GBFHnT0CLnsHMogfk5+GzCDC5ZWarSCYaIGATZt9dNsQ==", - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bl/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/blakejs": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", - "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", - "license": "MIT" - }, - "node_modules/bn.js": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", - "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", - "license": "MIT" - }, - "node_modules/body-parser": { - "version": "1.20.3", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", - "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", - "license": "MIT", - "dependencies": { - "bytes": "3.1.2", - "content-type": "~1.0.5", - "debug": "2.6.9", - "depd": "2.0.0", - "destroy": "1.2.0", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "on-finished": "2.4.1", - "qs": "6.13.0", - "raw-body": "2.5.2", - "type-is": "~1.6.18", - "unpipe": "1.0.0" - }, - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/body-parser/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "node_modules/body-parser/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/boolean": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/boolean/-/boolean-3.2.0.tgz", - "integrity": "sha512-d0II/GO9uf9lfUHH2BQsjxzRJZBdsjgsBiW4BvhWk/3qoKwQFjIDVN19PfX8F2D/r9PCMTtLWjYVCFrpeYUzsw==", - "license": "MIT", - "optional": true - }, - "node_modules/bottleneck": { - "version": "2.19.5", - "resolved": "https://registry.npmjs.org/bottleneck/-/bottleneck-2.19.5.tgz", - "integrity": "sha512-VHiNCbI1lKdl44tGrhNfU3lup0Tj/ZBMJB5/2ZbNXRCPuRCO7ed2mgcK4r17y+KB2EfuYuRaVlwNbAeaWGSpbw==", - "license": "MIT" - }, - "node_modules/bowser": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", - "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", - "license": "MIT" - }, - "node_modules/boxen": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", - "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.1", - "camelcase": "^7.0.1", - "chalk": "^5.2.0", - "cli-boxes": "^3.0.0", - "string-width": "^5.1.2", - "type-fest": "^2.13.0", - "widest-line": "^4.0.1", - "wrap-ansi": "^8.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/boxen/node_modules/ansi-styles": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", - "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/boxen/node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/boxen/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "license": "MIT" - }, - "node_modules/boxen/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", - "license": "MIT", - "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/boxen/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/boxen/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "license": "MIT", - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/brorand": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", - "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", - "license": "MIT" - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "license": "ISC" - }, - "node_modules/browserify-aes": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", - "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/browserslist": { - "version": "4.23.3", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", - "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "caniuse-lite": "^1.0.30001646", - "electron-to-chromium": "^1.5.4", - "node-releases": "^2.0.18", - "update-browserslist-db": "^1.1.0" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/bs58": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", - "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", - "license": "MIT", - "dependencies": { - "base-x": "^3.0.2" - } - }, - "node_modules/bs58check": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", - "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", - "license": "MIT", - "dependencies": { - "bs58": "^4.0.0", - "create-hash": "^1.1.0", - "safe-buffer": "^5.1.2" - } - }, - "node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "license": "MIT" - }, - "node_modules/buffer-xor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", - "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", - "license": "MIT" - }, - "node_modules/buffer/node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/builtins": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", - "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" - } - }, - "node_modules/bundle-name": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", - "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "run-applescript": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bytes": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", - "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/c8": { - "version": "7.14.0", - "resolved": "https://registry.npmjs.org/c8/-/c8-7.14.0.tgz", - "integrity": "sha512-i04rtkkcNcCf7zsQcSv/T9EbUn4RXQ6mropeMcjFOsQXQ0iGLAr/xT6TImQg4+U9hmNpN9XdvPkjUL1IzbgxJw==", - "license": "ISC", - "dependencies": { - "@bcoe/v8-coverage": "^0.2.3", - "@istanbuljs/schema": "^0.1.3", - "find-up": "^5.0.0", - "foreground-child": "^2.0.0", - "istanbul-lib-coverage": "^3.2.0", - "istanbul-lib-report": "^3.0.0", - "istanbul-reports": "^3.1.4", - "rimraf": "^3.0.2", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.0.0", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9" - }, - "bin": { - "c8": "bin/c8.js" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/c8/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/c8/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/c8/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/c8/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/c8/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/c8/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/cacache": { - "version": "15.3.0", - "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", - "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", - "license": "ISC", - "optional": true, - "dependencies": { - "@npmcli/fs": "^1.0.0", - "@npmcli/move-file": "^1.0.1", - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "glob": "^7.1.4", - "infer-owner": "^1.0.4", - "lru-cache": "^6.0.0", - "minipass": "^3.1.1", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.2", - "mkdirp": "^1.0.3", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^8.0.1", - "tar": "^6.0.2", - "unique-filename": "^1.1.1" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/cacache/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "optional": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/cacache/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "optional": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/cacache/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/cacache/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", - "optional": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.4.tgz", - "integrity": "sha512-v+p6ongsrp0yTGbJXjgxPow2+DL93DASP4kXCDKb8/bwRtt9OEF3whggkkDkGNzgcWy2XaF4a8nZglC7uElscg==", - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caching-transform": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", - "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", - "license": "MIT", - "dependencies": { - "hasha": "^5.0.0", - "make-dir": "^3.0.0", - "package-hash": "^4.0.0", - "write-file-atomic": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/call-bind": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", - "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camelcase-keys": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", - "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", - "license": "MIT", - "dependencies": { - "camelcase": "^5.3.1", - "map-obj": "^4.0.0", - "quick-lru": "^4.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase-keys/node_modules/quick-lru": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", - "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001651", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", - "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "CC-BY-4.0" - }, - "node_modules/canonicalize": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", - "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", - "license": "Apache-2.0" - }, - "node_modules/cardinal": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/cardinal/-/cardinal-2.1.1.tgz", - "integrity": "sha512-JSr5eOgoEymtYHBjNWyjrMqet9Am2miJhlfKNdqLp6zoeAh0KN5dRAcxlecj5mAJrmQomgiOBj35xHLrFjqBpw==", - "license": "MIT", - "dependencies": { - "ansicolors": "~0.3.2", - "redeyed": "~2.1.0" - }, - "bin": { - "cdl": "bin/cdl.js" - } - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chai": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", - "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", - "license": "MIT", - "dependencies": { - "assertion-error": "^1.1.0", - "check-error": "^1.0.3", - "deep-eql": "^4.1.3", - "get-func-name": "^2.0.2", - "loupe": "^2.3.6", - "pathval": "^1.1.1", - "type-detect": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chai-as-promised": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/chai-as-promised/-/chai-as-promised-7.1.2.tgz", - "integrity": "sha512-aBDHZxRzYnUYuIAIPBH2s511DjlKPzXNlXSGFC8CwmroWQLfrW0LtE1nK3MAwwNhJPa9raEjNCmRoFpG0Hurdw==", - "license": "WTFPL", - "dependencies": { - "check-error": "^1.0.2" - }, - "peerDependencies": { - "chai": ">= 2.1.2 < 6" - } - }, - "node_modules/chai-bites": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/chai-bites/-/chai-bites-0.1.2.tgz", - "integrity": "sha512-eZVKGTywFkRuMle/UkiT9OXU4y4WeNy0yKe2t5iclIW3Yn9X3l7iWZoSeTjTpeQ1SIMn3In0rctjVCaRuKCmng==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "chai": ">=2 <5" - } - }, - "node_modules/chai-parentheses": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/chai-parentheses/-/chai-parentheses-0.0.2.tgz", - "integrity": "sha512-pdBOsH31vzWKYHr8JYTlsP+TFx7RTTm/2hQYbpxFd1WQ/X58ryrLBINRL2C1OWje8bi42NQqNZl2RooFPrsBqA==", - "license": "MIT" - }, - "node_modules/chai-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/chai-string/-/chai-string-1.5.0.tgz", - "integrity": "sha512-sydDC3S3pNAQMYwJrs6dQX0oBQ6KfIPuOZ78n7rocW0eJJlsHPh2t3kwW7xfwYA/1Bf6/arGtSUo16rxR2JFlw==", - "license": "MIT", - "peerDependencies": { - "chai": "^4.1.2" - } - }, - "node_modules/chai-subset": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/chai-subset/-/chai-subset-1.6.0.tgz", - "integrity": "sha512-K3d+KmqdS5XKW5DWPd5sgNffL3uxdDe+6GdnJh3AYPhwnBGRY5urfvfcbRtWIvvpz+KxkL9FeBB6MZewLUNwug==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/chalk-template": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", - "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/chalk-template?sponsor=1" - } - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", - "dev": true, - "license": "MIT" - }, - "node_modules/check-error": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", - "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", - "license": "MIT", - "dependencies": { - "get-func-name": "^2.0.2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/chokidar": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", - "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/chokidar/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/chownr": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", - "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "license": "MIT" - }, - "node_modules/cipher-base": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", - "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/cli-boxes": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", - "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", - "integrity": "sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==", - "license": "MIT", - "dependencies": { - "restore-cursor": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-table3": { - "version": "0.6.5", - "resolved": "https://registry.npmjs.org/cli-table3/-/cli-table3-0.6.5.tgz", - "integrity": "sha512-+W/5efTR7y5HRD7gACw9yQjqMVvEMLBHmboM/kPWam+H+Hmyrgjh6YncVKK122YZkXrLudzTuAukUw9FnMf7IQ==", - "license": "MIT", - "dependencies": { - "string-width": "^4.2.0" - }, - "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" - } - }, - "node_modules/cli-table3/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-table3/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cli-truncate": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-0.2.1.tgz", - "integrity": "sha512-f4r4yJnbT++qUPI9NR4XLDLq41gQ+uqnPItWG0F5ZkehuNiTTa3EY0S4AqTSUOeJ7/zU41oWPQSNkW5BqPL9bg==", - "license": "MIT", - "dependencies": { - "slice-ansi": "0.0.4", - "string-width": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", - "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/cliui/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cliui/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", - "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "node_modules/clone-regexp": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", - "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", - "license": "MIT", - "dependencies": { - "is-regexp": "^3.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/clownface": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/clownface/-/clownface-2.0.2.tgz", - "integrity": "sha512-HjTYqVXiCrw4FmoAWF46aQ3c2OmdVLoqZrAGkowdWWUoBBIcBht55pOxkyvoVe2BsPE/HqMzfnu51JpgqM4KEg==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.1", - "@rdfjs/environment": "0 - 1", - "@rdfjs/namespace": "^2.0.0" - } - }, - "node_modules/code-point-at": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", - "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/color": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", - "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "license": "MIT" - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/color-support": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", - "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", - "license": "ISC", - "optional": true, - "bin": { - "color-support": "bin.js" - } - }, - "node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/colors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/colors/-/colors-1.0.3.tgz", - "integrity": "sha512-pFGrxThWcWQ2MsAz6RtgeWe4NK2kUE1WfsrvvlctdII745EW9I0yflqhe7++M5LEc7bV2c/9/5zc8sFcpL0Drw==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "node_modules/colorspace": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", - "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/command-line-args": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", - "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", - "license": "MIT", - "dependencies": { - "array-back": "^3.1.0", - "find-replace": "^3.0.0", - "lodash.camelcase": "^4.3.0", - "typical": "^4.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/command-line-usage": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", - "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", - "license": "MIT", - "dependencies": { - "array-back": "^6.2.2", - "chalk-template": "^0.4.0", - "table-layout": "^4.1.0", - "typical": "^7.1.1" - }, - "engines": { - "node": ">=12.20.0" - } - }, - "node_modules/command-line-usage/node_modules/array-back": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", - "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", - "license": "MIT", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/command-line-usage/node_modules/typical": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", - "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", - "license": "MIT", - "engines": { - "node": ">=12.17" - } - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "license": "MIT" - }, - "node_modules/comment-parser": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/comment-parser/-/comment-parser-1.2.4.tgz", - "integrity": "sha512-pm0b+qv+CkWNriSTMsfnjChF9kH0kxz55y44Wo5le9qLxMj5xDQAaEd9ZN1ovSuk9CsrncWaFwgpOMg7ClJwkw==", - "license": "MIT", - "engines": { - "node": ">= 12.0.0" - } - }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "license": "MIT" - }, - "node_modules/compare-func": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", - "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "license": "MIT" - }, - "node_modules/concurrently": { - "version": "8.2.2", - "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", - "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^4.1.2", - "date-fns": "^2.30.0", - "lodash": "^4.17.21", - "rxjs": "^7.8.1", - "shell-quote": "^1.8.1", - "spawn-command": "0.0.2", - "supports-color": "^8.1.1", - "tree-kill": "^1.2.2", - "yargs": "^17.7.2" - }, - "bin": { - "conc": "dist/bin/concurrently.js", - "concurrently": "dist/bin/concurrently.js" - }, - "engines": { - "node": "^14.13.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" - } - }, - "node_modules/config-chain": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", - "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/configstore": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", - "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", - "license": "BSD-2-Clause", - "dependencies": { - "dot-prop": "^6.0.1", - "graceful-fs": "^4.2.6", - "unique-string": "^3.0.0", - "write-file-atomic": "^3.0.3", - "xdg-basedir": "^5.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/yeoman/configstore?sponsor=1" - } - }, - "node_modules/configstore/node_modules/dot-prop": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", - "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/configstore/node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/console-control-strings": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", - "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", - "license": "ISC", - "optional": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "license": "MIT", - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/content-disposition/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/content-type": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", - "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "5.0.13", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.13.tgz", - "integrity": "sha512-i/gipMxs7s8L/QeuavPF2hLnJgH6pEZAttySB6aiQLWcX3puWDL3ACVmvBhJGxnAy52Qc15ua26BufY6KpmrVA==", - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-5.0.0.tgz", - "integrity": "sha512-lCDbA+ZqVFQGUj7h9QBKoIpLhl8iihkO0nCTyRNzuXtcd7ubODpYB04IFy31JloiJgG0Uovu8ot8oxRzn7Nwtw==", - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0", - "lodash": "^4.17.15", - "q": "^1.5.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-5.0.1.tgz", - "integrity": "sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==", - "license": "MIT", - "dependencies": { - "conventional-commits-filter": "^2.0.7", - "dateformat": "^3.0.0", - "handlebars": "^4.7.7", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "semver": "^6.0.0", - "split": "^1.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-changelog-writer": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-changelog-writer/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/conventional-commits-filter": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.7.tgz", - "integrity": "sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==", - "license": "MIT", - "dependencies": { - "lodash.ismatch": "^4.4.0", - "modify-values": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/conventional-commits-parser": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.2.4.tgz", - "integrity": "sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==", - "license": "MIT", - "dependencies": { - "is-text-path": "^1.0.1", - "JSONStream": "^1.0.4", - "lodash": "^4.17.15", - "meow": "^8.0.0", - "split2": "^3.0.0", - "through2": "^4.0.0" - }, - "bin": { - "conventional-commits-parser": "cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/convert-hrtime": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", - "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/convert-source-map": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", - "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", - "license": "MIT" - }, - "node_modules/cookie": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", - "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/cookie-signature": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", - "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", - "license": "MIT" - }, - "node_modules/core-js-compat": { - "version": "3.38.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.38.0.tgz", - "integrity": "sha512-75LAicdLa4OJVwFxFbQR3NdnZjNgX6ILpVcVzcC4T2smerB5lELMrJQQQoWV6TiuC/vlaFqgU2tKQx9w5s0e0A==", - "license": "MIT", - "dependencies": { - "browserslist": "^4.23.3" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cors": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", - "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", - "license": "MIT", - "dependencies": { - "object-assign": "^4", - "vary": "^1" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/cosmiconfig": { - "version": "8.3.6", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.3.6.tgz", - "integrity": "sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==", - "license": "MIT", - "dependencies": { - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0", - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/cp-file": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/cp-file/-/cp-file-9.1.0.tgz", - "integrity": "sha512-3scnzFj/94eb7y4wyXRWwvzLFaQp87yyfTnChIjlfYrVqp5lVO3E2hIJMeQIltUT0K2ZAB3An1qXcBmwGyvuwA==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "nested-error-stacks": "^2.0.0", - "p-event": "^4.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cp-file/node_modules/p-event": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-4.2.0.tgz", - "integrity": "sha512-KXatOjCRXXkSePPb1Nbi0p0m+gQAwdlbhi4wQKJPI1HsMQS9g+Sqp2o+QHziPr7eYJyOZet836KoHEVM1mwOrQ==", - "license": "MIT", - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cp-file/node_modules/p-timeout": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-3.2.0.tgz", - "integrity": "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cpy": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cpy/-/cpy-9.0.1.tgz", - "integrity": "sha512-D9U0DR5FjTCN3oMTcFGktanHnAG5l020yvOCR1zKILmAyPP7I/9pl6NFgRbDcmSENtbK1sQLBz1p9HIOlroiNg==", - "license": "MIT", - "dependencies": { - "arrify": "^3.0.0", - "cp-file": "^9.1.0", - "globby": "^13.1.1", - "junk": "^4.0.0", - "micromatch": "^4.0.4", - "nested-error-stacks": "^2.1.0", - "p-filter": "^3.0.0", - "p-map": "^5.3.0" - }, - "engines": { - "node": "^12.20.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy/node_modules/arrify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-3.0.0.tgz", - "integrity": "sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", - "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy/node_modules/p-filter": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-3.0.0.tgz", - "integrity": "sha512-QtoWLjXAW++uTX67HZQz1dbTpqBfiidsB6VtQUC9iR85S120+s0T5sO6s+B5MLzFcZkrEd/DGMmCjR+f2Qpxwg==", - "license": "MIT", - "dependencies": { - "p-map": "^5.1.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cpy/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/create-hash": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", - "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "node_modules/create-hmac": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", - "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "node_modules/create-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", - "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "license": "MIT" - }, - "node_modules/cross-fetch": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", - "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", - "license": "MIT", - "dependencies": { - "node-fetch": "^2.6.12" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/crypto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/crypto/-/crypto-1.0.1.tgz", - "integrity": "sha512-VxBKmeNcqQdiUQUW2Tzq0t377b54N2bMtXO/qiLa+6eRRmmC4qT3D4OnTGoT/U6O9aklQ/jTwbOtRMTTY8G0Ig==", - "deprecated": "This package is no longer supported. It's now a built-in Node module. If you've depended on crypto, you should switch to the one that's built-in." - }, - "node_modules/crypto-random-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", - "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", - "license": "MIT", - "dependencies": { - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/crypto-random-string/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cycle": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cycle/-/cycle-1.0.3.tgz", - "integrity": "sha512-TVF6svNzeQCOpjCqsy0/CSy8VgObG3wXusJ73xW2GbG5rGx7lC8zxDSURicsXI2UsGdi2L0QNRCi745/wUDvsA==", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/d": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", - "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", - "license": "ISC", - "dependencies": { - "es5-ext": "^0.10.64", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/data-uri-to-buffer": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", - "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14" - } - }, - "node_modules/data-view-buffer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", - "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", - "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/data-view-byte-offset": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", - "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-data-view": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/datastore-core": { - "version": "9.2.9", - "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.9.tgz", - "integrity": "sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@libp2p/logger": "^4.0.6", - "err-code": "^3.0.1", - "interface-datastore": "^8.0.0", - "interface-store": "^5.0.0", - "it-drain": "^3.0.5", - "it-filter": "^3.0.4", - "it-map": "^3.0.5", - "it-merge": "^3.0.3", - "it-pipe": "^3.0.1", - "it-pushable": "^3.2.3", - "it-sort": "^3.0.4", - "it-take": "^3.0.4" - } - }, - "node_modules/datastore-core/node_modules/interface-store": { - "version": "5.1.8", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz", - "integrity": "sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/date-fns": { - "version": "2.30.0", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", - "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.21.0" - }, - "engines": { - "node": ">=0.11" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/date-fns" - } - }, - "node_modules/dateformat": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", - "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "node_modules/debug": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", - "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/debug-fabulous": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-2.0.2.tgz", - "integrity": "sha512-XfAbX8/owqC+pjIg0/+3V1gp8TugJT7StX/TE1TYedjrRf7h7SgUAL/+gKoAQGPCLbSU5L5LPvDg4/cGn1E/WA==", - "license": "MIT", - "dependencies": { - "debug": "^4", - "memoizee": "0.4" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debug-logfmt": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/debug-logfmt/-/debug-logfmt-1.2.2.tgz", - "integrity": "sha512-MAPU+m9lzLMkxI8k6/kJ/MGLGNtHOsW8RHriLkRxe/jFFW2iXmiGGUG9aYTRIWo5ejOFqLB10HqZ6+TN4toQFQ==", - "license": "MIT", - "dependencies": { - "@jclem/logfmt2": "~2.4.3", - "@kikobeats/time-span": "~1.0.2", - "debug-fabulous": "~2.0.2", - "pretty-ms": "~7.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decamelize-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", - "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", - "license": "MIT", - "dependencies": { - "decamelize": "^1.1.0", - "map-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decamelize-keys/node_modules/map-obj": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", - "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.0.2.tgz", - "integrity": "sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==", - "license": "MIT", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", - "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", - "license": "MIT", - "dependencies": { - "type-detect": "^4.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-equal": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", - "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.0", - "call-bind": "^1.0.5", - "es-get-iterator": "^1.1.3", - "get-intrinsic": "^1.2.2", - "is-arguments": "^1.1.1", - "is-array-buffer": "^3.0.2", - "is-date-object": "^1.0.5", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "isarray": "^2.0.5", - "object-is": "^1.1.5", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.5.1", - "side-channel": "^1.0.4", - "which-boxed-primitive": "^1.0.2", - "which-collection": "^1.0.1", - "which-typed-array": "^1.1.13" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/deep-extend": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", - "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "license": "MIT" - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/default-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", - "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", - "dev": true, - "license": "MIT", - "dependencies": { - "bundle-name": "^4.1.0", - "default-browser-id": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-browser-id": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", - "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", - "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", - "license": "BSD-2-Clause", - "dependencies": { - "execa": "^7.1.1" - }, - "engines": { - "node": ">= 16" - } - }, - "node_modules/default-gateway/node_modules/execa": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", - "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^4.3.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^14.18.0 || ^16.14.0 || >=18.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/default-gateway/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-gateway/node_modules/human-signals": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", - "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=14.18.0" - } - }, - "node_modules/default-gateway/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-require-extensions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", - "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", - "license": "MIT", - "dependencies": { - "strip-bom": "^4.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/default-require-extensions/node_modules/strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/defaults": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", - "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", - "license": "MIT", - "dependencies": { - "clone": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-data-property": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", - "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", - "license": "MIT", - "dependencies": { - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "gopd": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/define-lazy-prop": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", - "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/define-properties": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", - "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.0.1", - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/defined": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", - "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/degenerator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", - "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ast-types": "^0.13.4", - "escodegen": "^2.1.0", - "esprima": "^4.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/del": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/del/-/del-6.1.1.tgz", - "integrity": "sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==", - "license": "MIT", - "dependencies": { - "globby": "^11.0.1", - "graceful-fs": "^4.2.4", - "is-glob": "^4.0.1", - "is-path-cwd": "^2.2.0", - "is-path-inside": "^3.0.2", - "p-map": "^4.0.0", - "rimraf": "^3.0.2", - "slash": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/del/node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "license": "MIT", - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delay": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", - "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/delegates": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", - "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", - "license": "MIT", - "optional": true - }, - "node_modules/denque": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", - "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" - } - }, - "node_modules/depd": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", - "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/dependency-check": { - "version": "5.0.0-7", - "resolved": "https://registry.npmjs.org/dependency-check/-/dependency-check-5.0.0-7.tgz", - "integrity": "sha512-OZhz4TDlDUYiEnP1/3Q7hFlA2ViUCXNV7h9D7MrApSfmZj27MNZFdmBfYCQ1hldheILriZ+pbg/QW8wIlV1ahg==", - "deprecated": "dependency-check has been deprecated in favor of the knip module", - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.3.1", - "globby": "^12.0.2", - "is-relative": "^1.0.0", - "meow": "^10.1.3", - "picomatch": "^2.3.1", - "pkg-up": "^4.0.0", - "pony-cause": "^2.0.0", - "precinct": "^8.2.0", - "read-pkg": "^7.0.0", - "resolve": "^1.19.0" - }, - "bin": { - "dependency-check": "cli.cjs" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - } - }, - "node_modules/dependency-check/node_modules/array-union": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-3.0.1.tgz", - "integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/camelcase-keys": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-7.0.2.tgz", - "integrity": "sha512-Rjs1H+A9R+Ig+4E/9oyB66UC5Mj9Xq3N//vcLf2WzgdTi/3gUu3Z9KoqmlrEG4VuuLK8wJHofxzdQXz/knhiYg==", - "license": "MIT", - "dependencies": { - "camelcase": "^6.3.0", - "map-obj": "^4.1.0", - "quick-lru": "^5.1.1", - "type-fest": "^1.2.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/decamelize": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-5.0.1.tgz", - "integrity": "sha512-VfxadyCECXgQlkoEAjeghAr5gY3Hf+IKjKb+X8tGVDtveCjN+USwprd2q3QXBR9T1+x2DG0XZF5/w+7HAtSaXA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/globby": { - "version": "12.2.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-12.2.0.tgz", - "integrity": "sha512-wiSuFQLZ+urS9x2gGPl1H5drc5twabmm4m2gTR27XDFyjUHJUNsS8o/2aKyIF6IoBaR630atdher0XJ5g6OMmA==", - "license": "MIT", - "dependencies": { - "array-union": "^3.0.1", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.7", - "ignore": "^5.1.9", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/meow": { - "version": "10.1.5", - "resolved": "https://registry.npmjs.org/meow/-/meow-10.1.5.tgz", - "integrity": "sha512-/d+PQ4GKmGvM9Bee/DPa8z3mXs/pkvJE2KEThngVNOqtmljC6K7NMPxtc2JeZYTmpWb9k/TmxjeL18ez3h7vCw==", - "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.2", - "camelcase-keys": "^7.0.0", - "decamelize": "^5.0.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.2", - "read-pkg-up": "^8.0.0", - "redent": "^4.0.0", - "trim-newlines": "^4.0.2", - "type-fest": "^1.2.2", - "yargs-parser": "^20.2.9" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/read-pkg": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", - "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^2.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/read-pkg-up": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-8.0.0.tgz", - "integrity": "sha512-snVCqPczksT0HS2EC+SxUndvSzn6LRCwpfSvLrIfR5BKDQQZMaI6jPRC9dYvYFDRAuFEAnkwww8kBBNE/3VvzQ==", - "license": "MIT", - "dependencies": { - "find-up": "^5.0.0", - "read-pkg": "^6.0.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-6.0.0.tgz", - "integrity": "sha512-X1Fu3dPuk/8ZLsMhEj5f4wFAF0DWoK7qhGJvgaijocXxBmSToKfbFtqbxMO7bVjNA1dmE5huAzjXj/ey86iw9Q==", - "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/read-pkg/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/redent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-4.0.0.tgz", - "integrity": "sha512-tYkDkVVtYkSVhuQ4zBgfvciymHaeuel+zFKXShfDnFP5SyVEP7qo70Rf1jTOTCx3vGNAbnEi/xFkcfQVMIBWag==", - "license": "MIT", - "dependencies": { - "indent-string": "^5.0.0", - "strip-indent": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/strip-indent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", - "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/trim-newlines": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-4.1.1.tgz", - "integrity": "sha512-jRKj0n0jXWo6kh62nA5TEh3+4igKDXLvzBJcPpiizP7oOolUrYIxmVBG9TOtHYFHoddUk6YvAkGeGoSVTXfQXQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/type-fest": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", - "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dependency-check/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/deprecation": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", - "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", - "license": "ISC" - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/destroy": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", - "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", - "license": "MIT", - "engines": { - "node": ">= 0.8", - "npm": "1.2.8000 || >= 1.4.16" - } - }, - "node_modules/detect-libc": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", - "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", - "license": "Apache-2.0", - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", - "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", - "license": "MIT", - "optional": true - }, - "node_modules/detective-amd": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/detective-amd/-/detective-amd-3.1.2.tgz", - "integrity": "sha512-jffU26dyqJ37JHR/o44La6CxtrDf3Rt9tvd2IbImJYxWKTMdBjctp37qoZ6ZcY80RHg+kzWz4bXn39e4P7cctQ==", - "license": "MIT", - "dependencies": { - "ast-module-types": "^3.0.0", - "escodegen": "^2.0.0", - "get-amd-module-type": "^3.0.0", - "node-source-walk": "^4.2.0" - }, - "bin": { - "detective-amd": "bin/cli.js" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-amd/node_modules/ast-module-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-3.0.0.tgz", - "integrity": "sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==", - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-amd/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-cjs": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-4.1.0.tgz", - "integrity": "sha512-QxzMwt5MfPLwS7mG30zvnmOvHLx5vyVvjsAV6gQOyuMoBR5G1DhS1eJZ4P10AlH+HSnk93mTcrg3l39+24XCtg==", - "license": "MIT", - "dependencies": { - "ast-module-types": "^4.0.0", - "node-source-walk": "^5.0.1" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/detective-es6": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-3.0.1.tgz", - "integrity": "sha512-evPeYIEdK1jK3Oji5p0hX4sPV/1vK+o4ihcWZkMQE6voypSW/cIBiynOLxQk5KOOQbdP8oOAsYqouMTYO5l1sw==", - "license": "MIT", - "dependencies": { - "node-source-walk": "^5.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/detective-less": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/detective-less/-/detective-less-1.0.2.tgz", - "integrity": "sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA==", - "license": "MIT", - "dependencies": { - "debug": "^4.0.0", - "gonzales-pe": "^4.2.3", - "node-source-walk": "^4.0.0" - }, - "engines": { - "node": ">= 6.0" - } - }, - "node_modules/detective-less/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-postcss": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/detective-postcss/-/detective-postcss-4.0.0.tgz", - "integrity": "sha512-Fwc/g9VcrowODIAeKRWZfVA/EufxYL7XfuqJQFroBKGikKX83d2G7NFw6kDlSYGG3LNQIyVa+eWv1mqre+v4+A==", - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.1.1", - "is-url": "^1.2.4", - "postcss": "^8.1.7", - "postcss-values-parser": "^2.0.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/detective-sass": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/detective-sass/-/detective-sass-3.0.2.tgz", - "integrity": "sha512-DNVYbaSlmti/eztFGSfBw4nZvwsTaVXEQ4NsT/uFckxhJrNRFUh24d76KzoCC3aarvpZP9m8sC2L1XbLej4F7g==", - "license": "MIT", - "dependencies": { - "gonzales-pe": "^4.3.0", - "node-source-walk": "^4.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-sass/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-scss": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/detective-scss/-/detective-scss-2.0.2.tgz", - "integrity": "sha512-hDWnWh/l0tht/7JQltumpVea/inmkBaanJUcXRB9kEEXVwVUMuZd6z7eusQ6GcBFrfifu3pX/XPyD7StjbAiBg==", - "license": "MIT", - "dependencies": { - "gonzales-pe": "^4.3.0", - "node-source-walk": "^4.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-scss/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-stylus": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/detective-stylus/-/detective-stylus-1.0.3.tgz", - "integrity": "sha512-4/bfIU5kqjwugymoxLXXLltzQNeQfxGoLm2eIaqtnkWxqbhap9puDVpJPVDx96hnptdERzS5Cy6p9N8/08A69Q==", - "license": "MIT" - }, - "node_modules/detective-typescript": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/detective-typescript/-/detective-typescript-7.0.2.tgz", - "integrity": "sha512-unqovnhxzvkCz3m1/W4QW4qGsvXCU06aU2BAm8tkza+xLnp9SOFnob2QsTxUv5PdnQKfDvWcv9YeOeFckWejwA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/typescript-estree": "^4.33.0", - "ast-module-types": "^2.7.1", - "node-source-walk": "^4.2.0", - "typescript": "^3.9.10" - }, - "engines": { - "node": "^10.13 || >=12.0.0" - } - }, - "node_modules/detective-typescript/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "license": "MIT", - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/detective-typescript/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/detective-typescript/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/detective-typescript/node_modules/ast-module-types": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-2.7.1.tgz", - "integrity": "sha512-Rnnx/4Dus6fn7fTqdeLEAn5vUll5w7/vts0RN608yFa6si/rDOUonlIIiwugHBFWjylHjxm9owoSZn71KwG4gw==", - "license": "MIT" - }, - "node_modules/detective-typescript/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/detective-typescript/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", - "license": "MIT", - "dependencies": { - "@babel/parser": "^7.0.0" - }, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/detective-typescript/node_modules/typescript": { - "version": "3.9.10", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-3.9.10.tgz", - "integrity": "sha512-w6fIxVE/H1PkLKcCPsFqKE7Kv7QUwhU8qQY2MueZXWx5cPZdwFupLgKK3vntcK98BtNHZtAF4LA/yl2a7k8R6Q==", - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/diff": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", - "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "license": "MIT", - "dependencies": { - "path-type": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dns-over-http-resolver": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz", - "integrity": "sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "debug": "^4.3.1", - "native-fetch": "^4.0.2", - "receptacle": "^1.3.2", - "undici": "^5.12.0" - } - }, - "node_modules/dns-packet": { - "version": "5.6.1", - "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", - "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", - "license": "MIT", - "dependencies": { - "@leichtgewicht/ip-codec": "^2.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/dot-prop": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", - "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/dotenv": { - "version": "16.4.5", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", - "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dotignore": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/dotignore/-/dotignore-0.1.2.tgz", - "integrity": "sha512-UGGGWfSauusaVJC+8fgV+NVvBXkCTmVv7sk6nojDZZvuOUNGUy0Zk4UpHQD6EDjS0jpBwcACvH4eofvyzBcRDw==", - "license": "MIT", - "dependencies": { - "minimatch": "^3.0.4" - }, - "bin": { - "ignored": "bin/ignored" - } - }, - "node_modules/dotignore/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/dotignore/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/drbg.js": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", - "integrity": "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==", - "license": "MIT", - "optional": true, - "dependencies": { - "browserify-aes": "^1.0.6", - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/duplex-to": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", - "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==", - "license": "MIT" - }, - "node_modules/duplexer2": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/duplexer2/-/duplexer2-0.1.4.tgz", - "integrity": "sha512-asLFVfWWtJ90ZyOUHMqk7/S2w2guQKxUI2itj3d92ADHhxUSbCMGi1f1cBcJ7xM1To+pE/Khbwo1yuNbMEPKeA==", - "license": "BSD-3-Clause", - "dependencies": { - "readable-stream": "^2.0.2" - } - }, - "node_modules/duplexer2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/duplexer2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/duplexer2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "license": "MIT" - }, - "node_modules/eccrypto": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", - "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", - "hasInstallScript": true, - "license": "CC0-1.0", - "dependencies": { - "acorn": "7.1.1", - "elliptic": "6.5.4", - "es6-promise": "4.2.8", - "nan": "2.14.0" - }, - "optionalDependencies": { - "secp256k1": "3.7.1" - } - }, - "node_modules/eccrypto/node_modules/acorn": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", - "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eccrypto/node_modules/secp256k1": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", - "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "bindings": "^1.5.0", - "bip66": "^1.1.5", - "bn.js": "^4.11.8", - "create-hash": "^1.2.0", - "drbg.js": "^1.0.1", - "elliptic": "^6.4.1", - "nan": "^2.14.0", - "safe-buffer": "^5.1.2" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "node_modules/eciesjs": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", - "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", - "license": "MIT", - "dependencies": { - "@noble/ciphers": "^0.5.3", - "@noble/curves": "^1.4.0", - "@noble/hashes": "^1.4.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/eciesjs/node_modules/@noble/ciphers": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", - "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", - "license": "MIT", - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/ee-first": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", - "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", - "license": "MIT" - }, - "node_modules/electron-mocha-main": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/electron-mocha-main/-/electron-mocha-main-11.0.3.tgz", - "integrity": "sha512-F9tfE9cvTpyXYGH/8g2ZtrhNjZdF2amnM9u7CIJ59Lcs0uHjlaVFrlIKNegS05ZwkajPAWkiB2KkpHco8GhD9g==", - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "electron-window": "^0.8.0", - "fs-extra": "^10.0.0", - "mocha": "^9.1.1", - "wherearewe": "^1.0.0", - "which": "^2.0.2", - "yargs": "^16.2.0" - }, - "bin": { - "electron-mocha": "bin/electron-mocha" - }, - "engines": { - "node": ">= 7.0.0" - } - }, - "node_modules/electron-mocha-main/node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/electron-mocha-main/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/electron-mocha-main/node_modules/chokidar": { - "version": "3.5.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", - "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "funding": [ - { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - ], - "license": "MIT", - "dependencies": { - "anymatch": "~3.1.2", - "braces": "~3.0.2", - "glob-parent": "~5.1.2", - "is-binary-path": "~2.1.0", - "is-glob": "~4.0.1", - "normalize-path": "~3.0.0", - "readdirp": "~3.6.0" - }, - "engines": { - "node": ">= 8.10.0" - }, - "optionalDependencies": { - "fsevents": "~2.3.2" - } - }, - "node_modules/electron-mocha-main/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "node_modules/electron-mocha-main/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/electron-mocha-main/node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/electron-mocha-main/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/electron-mocha-main/node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/electron-mocha-main/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/electron-mocha-main/node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/electron-mocha-main/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/electron-mocha-main/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-mocha-main/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-mocha-main/node_modules/minimatch": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-4.2.1.tgz", - "integrity": "sha512-9Uq1ChtSZO+Mxa/CL1eGizn2vRn3MlLgzhT0Iz8zaY8NdvxvB0d5QdPFmCKf7JKA9Lerx5vRrnwO03jsSfGG9g==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron-mocha-main/node_modules/mocha": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-9.2.2.tgz", - "integrity": "sha512-L6XC3EdwT6YrIk0yXpavvLkn8h+EU+Y5UcCHKECyMbdUIxyMuZj4bX4U9e1nvnvUUvQVsV2VHQr5zLdcUkhW/g==", - "license": "MIT", - "dependencies": { - "@ungap/promise-all-settled": "1.1.2", - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.3", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "7.2.0", - "growl": "1.10.5", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "4.2.1", - "ms": "2.1.3", - "nanoid": "3.3.1", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "which": "2.0.2", - "workerpool": "6.2.0", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/mochajs" - } - }, - "node_modules/electron-mocha-main/node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/electron-mocha-main/node_modules/nanoid": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.1.tgz", - "integrity": "sha512-n6Vs/3KGyxPQd6uO0eH4Bv0ojGSUvuLlIHtC3Y0kEO23YRge8H9x1GCzLn28YX0H66pMkxuaeESFq4tKISKwdw==", - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/electron-mocha-main/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "license": "BSD-3-Clause", - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/electron-mocha-main/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/electron-mocha-main/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/electron-mocha-main/node_modules/wherearewe": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wherearewe/-/wherearewe-1.0.2.tgz", - "integrity": "sha512-HyLZ7n1Yox+w1qWaFEgP/sMs5D7ka2UXmoVNaY0XzbEHLGljo4ScBchYm6cWRYNO33tmFX3Mgg4BiZkDOjihyw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "is-electron": "^2.2.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/electron-mocha-main/node_modules/workerpool": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.0.tgz", - "integrity": "sha512-Rsk5qQHJ9eowMH28Jwhe8HEbmdYDX4lwoMWshiCXugjtHqMD9ZbiqSDLxcsfdqsETPzVUtX5s1Z5kStiIM6l4A==", - "license": "Apache-2.0" - }, - "node_modules/electron-mocha-main/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/electron-mocha-main/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/electron-mocha-main/node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.5.7", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.7.tgz", - "integrity": "sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw==", - "license": "ISC" - }, - "node_modules/electron-window": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/electron-window/-/electron-window-0.8.1.tgz", - "integrity": "sha512-W1i9LfnZJozk3MXE8VgsL2E5wOUHSgyCvcg1H2vQQjj+gqhO9lVudgY3z3SF7LJAmi+0vy3CJkbMqsynWB49EA==", - "license": "MIT", - "dependencies": { - "is-electron-renderer": "^2.0.0" - } - }, - "node_modules/elegant-spinner": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/elegant-spinner/-/elegant-spinner-1.0.1.tgz", - "integrity": "sha512-B+ZM+RXvRqQaAmkMlO/oSe5nMUOaUnyfGYCEHoR8wrXsZR2mA0XVibsxV1bvTwxdRWah1PkQqso2EzhILGHtEQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/elliptic": { - "version": "6.5.4", - "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", - "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "node_modules/email-addresses": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-3.1.0.tgz", - "integrity": "sha512-k0/r7GrWVL32kZlGwfPNgB2Y/mMXVTq/decgLczm/j34whdaspNrZO8CnXPf1laaHxI6ptUlsnAxN+UAPw+fzg==", - "license": "MIT" - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "license": "MIT" - }, - "node_modules/enabled": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", - "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", - "license": "MIT" - }, - "node_modules/encodeurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", - "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "node_modules/encoding": { - "version": "0.1.13", - "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", - "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", - "license": "MIT", - "optional": true, - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "license": "MIT", - "optional": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/enquirer": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", - "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", - "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.1", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8.6" - } - }, - "node_modules/env-ci": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/env-ci/-/env-ci-5.5.0.tgz", - "integrity": "sha512-o0JdWIbOLP+WJKIUt36hz1ImQQFuN92nhsfTkHHap+J8CiI8WgGpH/a9jEGHh4/TU5BUUGjlnKXNoDb57+ne+A==", - "license": "MIT", - "dependencies": { - "execa": "^5.0.0", - "fromentries": "^1.3.2", - "java-properties": "^1.0.0" - }, - "engines": { - "node": ">=10.17" - } - }, - "node_modules/env-ci/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/env-ci/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/env-ci/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/env-ci/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/env-ci/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/env-ci/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/env-paths": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-3.0.0.tgz", - "integrity": "sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/err-code": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", - "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", - "license": "MIT" - }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-abstract": { - "version": "1.23.3", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", - "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", - "license": "MIT", - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "arraybuffer.prototype.slice": "^1.0.3", - "available-typed-arrays": "^1.0.7", - "call-bind": "^1.0.7", - "data-view-buffer": "^1.0.1", - "data-view-byte-length": "^1.0.1", - "data-view-byte-offset": "^1.0.0", - "es-define-property": "^1.0.0", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-set-tostringtag": "^2.0.3", - "es-to-primitive": "^1.2.1", - "function.prototype.name": "^1.1.6", - "get-intrinsic": "^1.2.4", - "get-symbol-description": "^1.0.2", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "hasown": "^2.0.2", - "internal-slot": "^1.0.7", - "is-array-buffer": "^3.0.4", - "is-callable": "^1.2.7", - "is-data-view": "^1.0.1", - "is-negative-zero": "^2.0.3", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.3", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.13", - "is-weakref": "^1.0.2", - "object-inspect": "^1.13.1", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "regexp.prototype.flags": "^1.5.2", - "safe-array-concat": "^1.1.2", - "safe-regex-test": "^1.0.3", - "string.prototype.trim": "^1.2.9", - "string.prototype.trimend": "^1.0.8", - "string.prototype.trimstart": "^1.0.8", - "typed-array-buffer": "^1.0.2", - "typed-array-byte-length": "^1.0.1", - "typed-array-byte-offset": "^1.0.2", - "typed-array-length": "^1.0.6", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.15" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-aggregate-error": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.13.tgz", - "integrity": "sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==", - "license": "MIT", - "dependencies": { - "define-data-property": "^1.1.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "set-function-name": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-array-method-boxes-properly": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", - "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", - "license": "MIT" - }, - "node_modules/es-define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", - "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-get-iterator": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", - "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "has-symbols": "^1.0.3", - "is-arguments": "^1.1.1", - "is-map": "^2.0.2", - "is-set": "^2.0.2", - "is-string": "^1.0.7", - "isarray": "^2.0.5", - "stop-iteration-iterator": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es-iterator-helpers": { - "version": "1.0.19", - "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", - "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-set-tostringtag": "^2.0.3", - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "has-property-descriptors": "^1.0.2", - "has-proto": "^1.0.3", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.7", - "iterator.prototype": "^1.1.2", - "safe-array-concat": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", - "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.2.4", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.1" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-shim-unscopables": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", - "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", - "license": "MIT", - "dependencies": { - "hasown": "^2.0.0" - } - }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/es5-ext": { - "version": "0.10.64", - "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", - "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", - "hasInstallScript": true, - "license": "ISC", - "dependencies": { - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.3", - "esniff": "^2.0.1", - "next-tick": "^1.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/es6-error": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", - "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", - "license": "MIT" - }, - "node_modules/es6-iterator": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", - "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", - "license": "MIT", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.35", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/es6-promise": { - "version": "4.2.8", - "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", - "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", - "license": "MIT" - }, - "node_modules/es6-symbol": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", - "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "ext": "^1.7.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "node_modules/es6-weak-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", - "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", - "license": "ISC", - "dependencies": { - "d": "1", - "es5-ext": "^0.10.46", - "es6-iterator": "^2.0.3", - "es6-symbol": "^3.1.1" - } - }, - "node_modules/esbuild": { - "version": "0.16.17", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.16.17.tgz", - "integrity": "sha512-G8LEkV0XzDMNwXKgM0Jwu3nY3lSTwSGY6XbxM9cr9+s0T/qSV1q1JVPBGzm3dcjhCic9+emZDmMffkwgPeOeLg==", - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" - }, - "optionalDependencies": { - "@esbuild/android-arm": "0.16.17", - "@esbuild/android-arm64": "0.16.17", - "@esbuild/android-x64": "0.16.17", - "@esbuild/darwin-arm64": "0.16.17", - "@esbuild/darwin-x64": "0.16.17", - "@esbuild/freebsd-arm64": "0.16.17", - "@esbuild/freebsd-x64": "0.16.17", - "@esbuild/linux-arm": "0.16.17", - "@esbuild/linux-arm64": "0.16.17", - "@esbuild/linux-ia32": "0.16.17", - "@esbuild/linux-loong64": "0.16.17", - "@esbuild/linux-mips64el": "0.16.17", - "@esbuild/linux-ppc64": "0.16.17", - "@esbuild/linux-riscv64": "0.16.17", - "@esbuild/linux-s390x": "0.16.17", - "@esbuild/linux-x64": "0.16.17", - "@esbuild/netbsd-x64": "0.16.17", - "@esbuild/openbsd-x64": "0.16.17", - "@esbuild/sunos-x64": "0.16.17", - "@esbuild/win32-arm64": "0.16.17", - "@esbuild/win32-ia32": "0.16.17", - "@esbuild/win32-x64": "0.16.17" - } - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-goat": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", - "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escape-html": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", - "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", - "license": "MIT" - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/escodegen": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", - "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", - "license": "BSD-2-Clause", - "dependencies": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2" - }, - "bin": { - "escodegen": "bin/escodegen.js", - "esgenerate": "bin/esgenerate.js" - }, - "engines": { - "node": ">=6.0" - }, - "optionalDependencies": { - "source-map": "~0.6.1" - } - }, - "node_modules/eslint": { - "version": "8.57.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", - "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.57.0", - "@humanwhocodes/config-array": "^0.11.14", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "@ungap/structured-clone": "^1.2.0", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-ipfs": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/eslint-config-ipfs/-/eslint-config-ipfs-2.2.1.tgz", - "integrity": "sha512-47yZHjrcLC34OKfPlxzdTAkBNHBnPIIi2RYII6Q9H7YPi0nakpXJQvOBCUAi3xRcrtnVFXDdSxnofbyPOck6hg==", - "license": "(Apache-2.0 AND MIT)", - "dependencies": { - "@typescript-eslint/eslint-plugin": "^4.1.0", - "@typescript-eslint/parser": "^4.1.0", - "eslint-config-standard": "^16.0.2", - "eslint-config-standard-with-typescript": "^21.0.1", - "eslint-plugin-etc": "^1.1.7", - "eslint-plugin-import": "^2.18.0", - "eslint-plugin-jsdoc": "^36.0.8", - "eslint-plugin-no-only-tests": "^2.4.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^5.1.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-ipfs/node_modules/@babel/code-frame": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.11.tgz", - "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/highlight": "^7.10.4" - } - }, - "node_modules/eslint-config-ipfs/node_modules/@eslint/eslintrc": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", - "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", - "license": "MIT", - "peer": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.1.1", - "espree": "^7.3.0", - "globals": "^13.9.0", - "ignore": "^4.0.6", - "import-fresh": "^3.2.1", - "js-yaml": "^3.13.1", - "minimatch": "^3.0.4", - "strip-json-comments": "^3.1.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/@eslint/eslintrc/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", - "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-config-ipfs/node_modules/@humanwhocodes/config-array": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", - "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", - "deprecated": "Use @eslint/config-array instead", - "license": "Apache-2.0", - "peer": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.0", - "debug": "^4.1.1", - "minimatch": "^3.0.4" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "deprecated": "Use @eslint/object-schema instead", - "license": "BSD-3-Clause", - "peer": true - }, - "node_modules/eslint-config-ipfs/node_modules/@typescript-eslint/eslint-plugin": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.33.0.tgz", - "integrity": "sha512-aINiAxGVdOl1eJyVjaWn/YcVAq4Gi/Yo35qHGCnqbWVz61g39D0h23veY/MA0rFFGfxK7TySg2uwDeNv+JgVpg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/experimental-utils": "4.33.0", - "@typescript-eslint/scope-manager": "4.33.0", - "debug": "^4.3.1", - "functional-red-black-tree": "^1.0.1", - "ignore": "^5.1.8", - "regexpp": "^3.1.0", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-ipfs/node_modules/@typescript-eslint/parser": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.33.0.tgz", - "integrity": "sha512-ZohdsbXadjGBSK0/r+d87X0SBmKzOq4/S5nzK6SBgJspFo9/CUDJ7hjayuze+JK7CZQLDMroqytp7pOcFKTxZA==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/scope-manager": "4.33.0", - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/typescript-estree": "4.33.0", - "debug": "^4.3.1" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-ipfs/node_modules/@typescript-eslint/scope-manager": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.33.0.tgz", - "integrity": "sha512-5IfJHpgTsTZuONKbODctL4kKuQje/bzBRkwHE8UOZ4f89Zeddg+EGZs8PD8NcN4LdM3ygHWYB3ukPAYjvl/qbQ==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-ipfs/node_modules/@typescript-eslint/types": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.33.0.tgz", - "integrity": "sha512-zKp7CjQzLQImXEpLt2BUw1tvOMPfNoTAfb8l51evhYbOEEzdWyQNmHWWGPR6hwKJDAi+1VXSBmnhL9kyVTTOuQ==", - "license": "MIT", - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-ipfs/node_modules/@typescript-eslint/typescript-estree": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.33.0.tgz", - "integrity": "sha512-rkWRY1MPFzjwnEVHsxGemDzqqddw2QbTJlICPD9p9I9LfsO8fdmfQPOX3uKfUaGRDFJbfrtm/sXhVXN4E+bzCA==", - "license": "BSD-2-Clause", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "@typescript-eslint/visitor-keys": "4.33.0", - "debug": "^4.3.1", - "globby": "^11.0.3", - "is-glob": "^4.0.1", - "semver": "^7.3.5", - "tsutils": "^3.21.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "node_modules/eslint-config-ipfs/node_modules/@typescript-eslint/visitor-keys": { - "version": "4.33.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.33.0.tgz", - "integrity": "sha512-uqi/2aSz9g2ftcHWf8uLPJA70rUv6yuMW5Bohw+bwcuzaxQIHaKFZCKGoGXIrc9vkTJ3+0txM73K0Hq3d5wgIg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "4.33.0", - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^8.10.0 || ^10.13.0 || >=11.10.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/eslint-config-ipfs/node_modules/acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "license": "MIT", - "peer": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "license": "MIT", - "peer": true, - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "node_modules/eslint-config-ipfs/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "peer": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint": { - "version": "7.32.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", - "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", - "license": "MIT", - "peer": true, - "dependencies": { - "@babel/code-frame": "7.12.11", - "@eslint/eslintrc": "^0.4.3", - "@humanwhocodes/config-array": "^0.5.0", - "ajv": "^6.10.0", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.0.1", - "doctrine": "^3.0.0", - "enquirer": "^2.3.5", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^5.1.1", - "eslint-utils": "^2.1.0", - "eslint-visitor-keys": "^2.0.0", - "espree": "^7.3.1", - "esquery": "^1.4.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "functional-red-black-tree": "^1.0.1", - "glob-parent": "^5.1.2", - "globals": "^13.6.0", - "ignore": "^4.0.6", - "import-fresh": "^3.0.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "js-yaml": "^3.13.1", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.0.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.1", - "progress": "^2.0.0", - "regexpp": "^3.1.0", - "semver": "^7.2.1", - "strip-ansi": "^6.0.0", - "strip-json-comments": "^3.1.0", - "table": "^6.0.9", - "text-table": "^0.2.0", - "v8-compile-cache": "^2.0.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint-config-standard": { - "version": "16.0.3", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-16.0.3.tgz", - "integrity": "sha512-x4fmJL5hGqNJKGHSjnLdgA6U6h1YW/G2dW9fA+cyVur4SK6lyue8+UgNKWlZtUDTXvgKDD/Oa3GQjmB5kjtVvg==", + "node_modules/@ethersproject/logger": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.7.0.tgz", + "integrity": "sha512-0odtFdXu/XHtjQXJYA3u9G0G8btm0ND5Cu8M7i5vhEcE8/HmF4Lbdqanwyv4uQTr2tx6b7fQRmgLrsnpQlmnig==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@ethersproject/networks": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.7.1.tgz", + "integrity": "sha512-n/MufjFYv3yFcUyfhnXotyDlNdFb7onmkSy8aQERi2PjNcnWQ66xXxa3XlS8nCcA8aJKJjIIMNJTC7tu80GwpQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } ], "license": "MIT", - "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint-config-standard-with-typescript": { - "version": "21.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard-with-typescript/-/eslint-config-standard-with-typescript-21.0.1.tgz", - "integrity": "sha512-FeiMHljEJ346Y0I/HpAymNKdrgKEpHpcg/D93FvPHWfCzbT4QyUJba/0FwntZeGLXfUiWDSeKmdJD597d9wwiw==", - "deprecated": "Please use eslint-config-love, instead.", - "license": "MIT", "dependencies": { - "@typescript-eslint/parser": "^4.0.0", - "eslint-config-standard": "^16.0.0" - }, - "peerDependencies": { - "@typescript-eslint/eslint-plugin": "^4.0.1", - "eslint": "^7.12.1", - "eslint-plugin-import": "^2.22.1", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-promise": "^4.2.1 || ^5.0.0", - "typescript": "^3.9 || ^4.0.0" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/eslint-config-ipfs/node_modules/eslint-etc": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/eslint-etc/-/eslint-etc-4.2.6.tgz", - "integrity": "sha512-/gg8U0SgBz6OQ2QKsvhmSF1WTL53nSD5qYHx/reNPnaKAUfH6qR0AIZQ7NNCRRSICRFagqf1nO8A7WmRFwcAJQ==", + "node_modules/@ethersproject/pbkdf2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.7.0.tgz", + "integrity": "sha512-oR/dBRZR6GTyaofd86DehG72hY6NpAjhabkhxgr3X2FpJtJuodEl2auADWBZfhDHgVCbu3/H/Ocq2uC6dpNjjw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@typescript-eslint/experimental-utils": "^4.0.0", - "tsutils": "^3.17.1", - "tsutils-etc": "^1.3.4" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0", - "typescript": "^3.0.0 || ^4.0.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/sha2": "^5.7.0" } }, - "node_modules/eslint-config-ipfs/node_modules/eslint-plugin-etc": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/eslint-plugin-etc/-/eslint-plugin-etc-1.5.4.tgz", - "integrity": "sha512-FXpRHz5CGpT11pLln73JME4zHtopYKB7rlpvv5mcjEIJQJZazwswVF5WuGQxkm4cvlOpnFkfpatHICTRqTUkeA==", + "node_modules/@ethersproject/properties": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.7.0.tgz", + "integrity": "sha512-J87jy8suntrAkIZtecpxEPxY//szqr1mlBaYlQ0r4RCaiD2hjheqF9s1LVE8vVuJCXisjIP+JgtK/Do54ej4Sw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@phenomnomnominal/tsquery": "^4.0.0", - "@typescript-eslint/experimental-utils": "^4.0.0", - "eslint-etc": "^4.0.4", - "requireindex": "~1.2.0", - "tslib": "^2.0.0", - "tsutils": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "eslint": "^5.0.0 || ^6.0.0 || ^ 7.0.0", - "typescript": "^3.0.0 || ^4.0.0" + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/eslint-config-ipfs/node_modules/eslint-plugin-jsdoc": { - "version": "36.1.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-jsdoc/-/eslint-plugin-jsdoc-36.1.1.tgz", - "integrity": "sha512-nuLDvH1EJaKx0PCa9oeQIxH6pACIhZd1gkalTUxZbaxxwokjs7TplqY0Q8Ew3CoZaf5aowm0g/Z3JGHCatt+gQ==", - "license": "BSD-3-Clause", + "node_modules/@ethersproject/providers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.7.2.tgz", + "integrity": "sha512-g34EWZ1WWAVgr4aptGlVBF8mhl3VWjv+8hoAnzStu8Ah22VHBsuGzP17eb6xDVRzw895G4W7vvx60lFFur/1Rg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "@es-joy/jsdoccomment": "0.10.8", - "comment-parser": "1.2.4", - "debug": "^4.3.2", - "esquery": "^1.4.0", - "jsdoc-type-pratt-parser": "^1.1.1", - "lodash": "^4.17.21", - "regextras": "^0.8.0", - "semver": "^7.3.5", - "spdx-expression-parse": "^3.0.1" - }, - "engines": { - "node": "^12 || ^14 || ^16" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0" + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/base64": "^5.7.0", + "@ethersproject/basex": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/networks": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/web": "^5.7.0", + "bech32": "1.1.4", + "ws": "7.4.6" } }, - "node_modules/eslint-config-ipfs/node_modules/eslint-plugin-promise": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-5.2.0.tgz", - "integrity": "sha512-SftLb1pUG01QYq2A/hGAWfDRXqYD82zE7j7TopDOyNdU+7SvvoXREls/+PRTY17vUXzXnZA/zfnyKgRH6x4JJw==", - "license": "ISC", + "node_modules/@ethersproject/providers/node_modules/ws": { + "version": "7.4.6", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", + "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", + "license": "MIT", "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=8.3.0" }, "peerDependencies": { - "eslint": "^7.0.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "license": "BSD-2-Clause", - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", - "license": "MIT", - "peer": true, - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, - "engines": { - "node": ">=6" + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-config-ipfs/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } } }, - "node_modules/eslint-config-ipfs/node_modules/eslint/node_modules/ignore": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", - "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "node_modules/@ethersproject/random": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.7.0.tgz", + "integrity": "sha512-19WjScqRA8IIeWclFme75VMXSBvi4e6InrUNuaR4s5pTF2qNhcGdCUwdxUVGtDDqC00sDLCO93jPQoDUH4HVmQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">= 4" - } - }, - "node_modules/eslint-config-ipfs/node_modules/espree": { - "version": "7.3.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", - "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", - "license": "BSD-2-Clause", - "peer": true, "dependencies": { - "acorn": "^7.4.0", - "acorn-jsx": "^5.3.1", - "eslint-visitor-keys": "^1.3.0" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" - } - }, - "node_modules/eslint-config-ipfs/node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", - "peer": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/eslint-config-ipfs/node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "license": "BSD-2-Clause", - "peer": true, - "engines": { - "node": ">=4.0" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/eslint-config-ipfs/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", - "peer": true, + "node_modules/@ethersproject/rlp": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.7.0.tgz", + "integrity": "sha512-rBxzX2vK8mVF7b0Tol44t5Tb8gomOHkj5guL+HhzQ1yBh/ydjGnpw6at+X6Iw0Kp3OzzzkcKp8N9r0W4kYSs9w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/eslint-config-ipfs/node_modules/js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "node_modules/@ethersproject/sha2": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.7.0.tgz", + "integrity": "sha512-gKlH42riwb3KYp0reLsFTokByAKoJdgFCwI+CCiX/k+Jm2mbNs6oOaCjYQSlI1+XBVejwH2KrmCbMAT/GnRDQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "peer": true, "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "hash.js": "1.1.7" } }, - "node_modules/eslint-config-ipfs/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "peer": true, + "node_modules/@ethersproject/signing-key": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.7.0.tgz", + "integrity": "sha512-MZdy2nL3wO0u7gkB4nA/pEf8lu1TlFswPNmy8AiYkfKTdO6eXBJyUdmHO/ehm/htHw9K/qF8ujnTyUAD+Ry54Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "bn.js": "^5.2.1", + "elliptic": "6.5.4", + "hash.js": "1.1.7" } }, - "node_modules/eslint-config-ipfs/node_modules/sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", - "license": "BSD-3-Clause", - "peer": true + "node_modules/@ethersproject/signing-key/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" }, - "node_modules/eslint-config-ipfs/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/@ethersproject/solidity": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.7.0.tgz", + "integrity": "sha512-HmabMd2Dt/raavyaGukF4XxizWKhKQ24DoLtdNbBmNKUOPqwjsKQSdV9GQtj9CBEea9DlzETlVER1gYeXXBGaA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "peer": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-config-oceanprotocol": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/eslint-config-oceanprotocol/-/eslint-config-oceanprotocol-2.0.4.tgz", - "integrity": "sha512-VdCtlvjTHzlhErmy8BYCGj3r4/iSJDxseeQTISe5DSyrWaPJpMv728KxBvu+WsCWfuI2WzErAX1HDE/HjmcI6w==", - "dev": true, - "license": "Apache-2.0", "dependencies": { - "eslint": "^8.23.1", - "eslint-config-prettier": "^8.5.0", - "eslint-config-standard": "^17.0.0", - "eslint-config-standard-react": "^11.0.1", - "eslint-plugin-import": "^2.26.0", - "eslint-plugin-n": "^15.3.0", - "eslint-plugin-node": "^11.1.0", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-promise": "^6.0.1", - "eslint-plugin-react": "^7.31.8", - "eslint-plugin-security": "^1.5.0" + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/sha2": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/eslint-config-oceanprotocol/node_modules/eslint-config-prettier": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", - "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", - "dev": true, + "node_modules/@ethersproject/strings": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.7.0.tgz", + "integrity": "sha512-/9nu+lj0YswRNSH0NXYqrh8775XNyEdUQAuf3f+SmOrnVewcJ5SBNAjF7lpgehKi4abvNNXyf+HX86czCdJ8Mg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/eslint-config-oceanprotocol/node_modules/eslint-plugin-prettier": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", - "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", - "dev": true, + "node_modules/@ethersproject/transactions": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.7.0.tgz", + "integrity": "sha512-kmcNicCp1lp8qanMTC3RIikGgoJ80ztTyvtsFvCYpSCfkjhD0jZ2LOrnbcuxuToLIUYYf+4XwD1rP+B/erDIhQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": ">=7.28.0", - "prettier": ">=2.0.0" - }, - "peerDependenciesMeta": { - "eslint-config-prettier": { - "optional": true - } + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/rlp": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0" } }, - "node_modules/eslint-config-prettier": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", - "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", - "dev": true, + "node_modules/@ethersproject/units": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.7.0.tgz", + "integrity": "sha512-pD3xLMy3SJu9kG5xDGI7+xhTEmGXlEqXU4OfNapmfnxLVY4EMSSRp7j1k7eezutBPH7RBN/7QPnwR7hzNlEFeg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "bin": { - "eslint-config-prettier": "bin/cli.js" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "dependencies": { + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/constants": "^5.7.0", + "@ethersproject/logger": "^5.7.0" } }, - "node_modules/eslint-config-standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", - "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "node_modules/@ethersproject/wallet": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.7.0.tgz", + "integrity": "sha512-MhmXlJXEJFBFVKrDLB4ZdDzxcBxQ3rLyCkhNqVu3CDYvR97E+8r01UgrI+TI99Le+aYm/in/0vp86guJuM7FCA==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } ], "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "eslint": "^8.0.1", - "eslint-plugin-import": "^2.25.2", - "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", - "eslint-plugin-promise": "^6.0.0" + "dependencies": { + "@ethersproject/abstract-provider": "^5.7.0", + "@ethersproject/abstract-signer": "^5.7.0", + "@ethersproject/address": "^5.7.0", + "@ethersproject/bignumber": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/hdnode": "^5.7.0", + "@ethersproject/json-wallets": "^5.7.0", + "@ethersproject/keccak256": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/random": "^5.7.0", + "@ethersproject/signing-key": "^5.7.0", + "@ethersproject/transactions": "^5.7.0", + "@ethersproject/wordlists": "^5.7.0" } }, - "node_modules/eslint-config-standard-jsx": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/eslint-config-standard-jsx/-/eslint-config-standard-jsx-11.0.0.tgz", - "integrity": "sha512-+1EV/R0JxEK1L0NGolAr8Iktm3Rgotx3BKwgaX+eAuSX8D952LULKtjgZD3F+e6SvibONnhLwoTi9DPxN5LvvQ==", + "node_modules/@ethersproject/web": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.7.1.tgz", + "integrity": "sha512-Gueu8lSvyjBWL4cYsWsjh6MtMwM0+H4HvqFPZfB6dV8ctbP9zFAO73VG1cMWae0FLPCtz0peKPpZY8/ugJJX2w==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } ], "license": "MIT", - "peerDependencies": { - "eslint": "^8.8.0", - "eslint-plugin-react": "^7.28.0" + "dependencies": { + "@ethersproject/base64": "^5.7.0", + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/eslint-config-standard-react": { - "version": "11.0.1", - "resolved": "https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-11.0.1.tgz", - "integrity": "sha512-4WlBynOqBZJRaX81CBcIGDHqUiqxvw4j/DbEIICz8QkMs3xEncoPgAoysiqCSsg71X92uhaBc8sgqB96smaMmg==", - "dev": true, + "node_modules/@ethersproject/wordlists": { + "version": "5.7.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.7.0.tgz", + "integrity": "sha512-S2TFNJNfHWVHNE6cNDjbVlZ6MgE17MIxMbMg2zv3wn+3XSJGosL1m9ZVv3GXCf/2ymSsQ+hRI5IzoMJTG6aoVA==", "funding": [ { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" }, { - "type": "consulting", - "url": "https://feross.org/support" + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" } ], "license": "MIT", - "peerDependencies": { - "eslint": "^7.12.1", - "eslint-plugin-react": "^7.21.5" + "dependencies": { + "@ethersproject/bytes": "^5.7.0", + "@ethersproject/hash": "^5.7.0", + "@ethersproject/logger": "^5.7.0", + "@ethersproject/properties": "^5.7.0", + "@ethersproject/strings": "^5.7.0" } }, - "node_modules/eslint-import-resolver-node": { - "version": "0.3.9", - "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", - "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "node_modules/@fastify/busboy": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@fastify/busboy/-/busboy-2.1.1.tgz", + "integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA==", "license": "MIT", - "dependencies": { - "debug": "^3.2.7", - "is-core-module": "^2.13.0", - "resolve": "^1.22.4" + "engines": { + "node": ">=14" } }, - "node_modules/eslint-import-resolver-node/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@gar/promisify": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", "license": "MIT", + "optional": true + }, + "node_modules/@grpc/grpc-js": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/@grpc/grpc-js/-/grpc-js-1.13.4.tgz", + "integrity": "sha512-GsFaMXCkMqkKIvwCQjCrwH+GHbPKBjhwo/8ZuUkWHqbI73Kky9I+pQltrlT0+MWpedCoosda53lgjYfyEPgxBg==", "dependencies": { - "ms": "^2.1.1" + "@grpc/proto-loader": "^0.7.13", + "@js-sdsl/ordered-map": "^4.4.2" + }, + "engines": { + "node": ">=12.10.0" } }, - "node_modules/eslint-module-utils": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", - "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", - "license": "MIT", + "node_modules/@grpc/proto-loader": { + "version": "0.7.15", + "resolved": "https://registry.npmjs.org/@grpc/proto-loader/-/proto-loader-0.7.15.tgz", + "integrity": "sha512-tMXdRCfYVixjuFK+Hk0Q1s38gV9zDiDJfWL3h1rv4Qc39oILCu1TRTDt7+fGUI8K4G1Fj125Hx/ru3azECWTyQ==", "dependencies": { - "debug": "^3.2.7" + "lodash.camelcase": "^4.3.0", + "long": "^5.0.0", + "protobufjs": "^7.2.5", + "yargs": "^17.7.2" + }, + "bin": { + "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" }, "engines": { - "node": ">=4" + "node": ">=6" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } + "engines": { + "node": ">=10.10.0" } }, - "node_modules/eslint-module-utils/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/eslint-plugin-es": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", - "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", - "license": "MIT", + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8.10.0" + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/eslint-plugin-es/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true, + "license": "ISC" + }, + "node_modules/@inquirer/figures": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.5.tgz", + "integrity": "sha512-79hP/VWdZ2UVc9bFGJnoQ/lQMpL74mGgzSYX1xUqCVk7/v73vJCMw1VuyWN1jGkZ9B3z7THAbySqGbCNefcjfA==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=18" + } + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dev": true, "dependencies": { - "eslint-visitor-keys": "^1.1.0" + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" }, "engines": { - "node": ">=6" + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", + "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", + "dev": true, + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/mysticatea" + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/eslint-plugin-import": { - "version": "2.29.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", - "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.7", - "array.prototype.findlastindex": "^1.2.3", - "array.prototype.flat": "^1.3.2", - "array.prototype.flatmap": "^1.3.2", - "debug": "^3.2.7", - "doctrine": "^2.1.0", - "eslint-import-resolver-node": "^0.3.9", - "eslint-module-utils": "^2.8.0", - "hasown": "^2.0.0", - "is-core-module": "^2.13.1", - "is-glob": "^4.0.3", - "minimatch": "^3.1.2", - "object.fromentries": "^2.0.7", - "object.groupby": "^1.0.1", - "object.values": "^1.1.7", - "semver": "^6.3.1", - "tsconfig-paths": "^3.15.0" + "node_modules/@isaacs/cliui/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" }, - "peerDependencies": { - "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-import/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/eslint-plugin-import/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", - "license": "MIT", + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "dependencies": { - "ms": "^2.1.1" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/eslint-plugin-import/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", + "node_modules/@isaacs/fs-minipass": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", + "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", "dependencies": { - "esutils": "^2.0.2" + "minipass": "^7.0.4" }, "engines": { - "node": ">=0.10.0" + "node": ">=18.0.0" } }, - "node_modules/eslint-plugin-import/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/@isaacs/fs-minipass/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/eslint-plugin-import/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "license": "MIT", + "dependencies": { + "sprintf-js": "~1.0.2" } }, - "node_modules/eslint-plugin-n": { - "version": "15.7.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", - "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { - "builtins": "^5.0.1", - "eslint-plugin-es": "^4.1.0", - "eslint-utils": "^3.0.0", - "ignore": "^5.1.1", - "is-core-module": "^2.11.0", - "minimatch": "^3.1.2", - "resolve": "^1.22.1", - "semver": "^7.3.8" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12.22.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=7.0.0" + "node": ">=8" } }, - "node_modules/eslint-plugin-n/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/eslint-plugin-n/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "p-locate": "^4.1.0" }, "engines": { - "node": "*" + "node": ">=8" } }, - "node_modules/eslint-plugin-no-only-tests": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-no-only-tests/-/eslint-plugin-no-only-tests-2.6.0.tgz", - "integrity": "sha512-T9SmE/g6UV1uZo1oHAqOvL86XWl7Pl2EpRpnLI8g/bkJu+h7XBCB+1LnubRZ2CUQXj805vh4/CYZdnqtVaEo2Q==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">=4.0.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/eslint-plugin-node": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", - "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { - "eslint-plugin-es": "^3.0.0", - "eslint-utils": "^2.0.0", - "ignore": "^5.1.1", - "minimatch": "^3.0.4", - "resolve": "^1.10.1", - "semver": "^6.1.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">=8.10.0" - }, - "peerDependencies": { - "eslint": ">=5.16.0" + "node": ">=8" } }, - "node_modules/eslint-plugin-node/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "engines": { + "node": ">=8" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", - "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "node_modules/@istanbuljs/load-nyc-config/node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true, + "license": "BSD-3-Clause" + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, "license": "MIT", - "dependencies": { - "eslint-utils": "^2.0.0", - "regexpp": "^3.0.0" - }, "engines": { - "node": ">=8.10.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=4.19.1" + "node": ">=8" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-utils": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", - "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "node_modules/@jclem/logfmt2": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@jclem/logfmt2/-/logfmt2-2.4.3.tgz", + "integrity": "sha512-d7zluLlx+JRtVICF0+ghcrVdXBdE3eXrpIuFdcCcWxA3ABOyemkTySG4ha2AdsWFwAnh8tkB1vtyeZsWAbLumg==", "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^1.1.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": ">= 14.x", + "npm": ">= 7.x" } }, - "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", - "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", - "license": "Apache-2.0", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, "engines": { - "node": ">=4" + "node": ">=6.0.0" } }, - "node_modules/eslint-plugin-node/node_modules/minimatch": { + "node_modules/@jridgewell/resolve-uri": { "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "license": "MIT", "engines": { - "node": "*" + "node": ">=6.0.0" } }, - "node_modules/eslint-plugin-node/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" } }, - "node_modules/eslint-plugin-prettier": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", - "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", "dev": true, "license": "MIT", "dependencies": { - "prettier-linter-helpers": "^1.0.0", - "synckit": "^0.9.1" - }, - "engines": { - "node": "^14.18.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint-plugin-prettier" - }, - "peerDependencies": { - "@types/eslint": ">=8.0.0", - "eslint": ">=8.0.0", - "eslint-config-prettier": "*", - "prettier": ">=3.0.0" - }, - "peerDependenciesMeta": { - "@types/eslint": { - "optional": true - }, - "eslint-config-prettier": { - "optional": true - } + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" } }, - "node_modules/eslint-plugin-promise": { - "version": "6.6.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", - "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", - "license": "ISC", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, + "node_modules/@js-sdsl/ordered-map": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/@js-sdsl/ordered-map/-/ordered-map-4.4.2.tgz", + "integrity": "sha512-iUKgm52T8HOE/makSxjqoWhe95ZJA1/G1sYsGev2JDKUSS14KAgg1LHb+Ba+IPow0xflbnSkOsZcO08C7w1gYw==", "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" + "type": "opencollective", + "url": "https://opencollective.com/js-sdsl" } }, - "node_modules/eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "node_modules/@kikobeats/time-span": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@kikobeats/time-span/-/time-span-1.0.5.tgz", + "integrity": "sha512-txRAdmi35N1wnsLS1AO5mTlbY5Cv5/61WXqek2y3L9Q7u4mgdUVq819so5xe753hL5gYeLzlWoJ/VJfXg9nx8g==", "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", - "string.prototype.repeat": "^1.0.0" - }, "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + "node": ">= 18" } }, - "node_modules/eslint-plugin-react/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", + "node_modules/@leichtgewicht/ip-codec": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@leichtgewicht/ip-codec/-/ip-codec-2.0.5.tgz", + "integrity": "sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==", + "license": "MIT" + }, + "node_modules/@libp2p/autonat": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/autonat/-/autonat-1.1.4.tgz", + "integrity": "sha512-yt/sUisqBLZPM/0lvpRo0enIEIbdyuSraIu4xRlGkdqqAXSo9T6CJppXxNi9VKTmlmD39WYYNP41Ilt3SvQhRQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/multiaddr": "^12.2.3", + "it-first": "^3.0.6", + "it-length-prefixed": "^9.0.4", + "it-map": "^3.1.0", + "it-parallel": "^3.0.7", + "it-pipe": "^3.0.1", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8" } }, - "node_modules/eslint-plugin-react/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "license": "Apache-2.0", + "node_modules/@libp2p/autonat/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/@libp2p/autonat/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "multiformats": "^13.0.0" } }, - "node_modules/eslint-plugin-react/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "license": "MIT", + "node_modules/@libp2p/bootstrap": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/bootstrap/-/bootstrap-10.1.4.tgz", + "integrity": "sha512-bt4Tz/DMKnlvZhF4d9Nkv/K7qgnoDBM/N0zwjA/aQg1vSq54/Szc2K3cIDAv9/r9dM4ckDRmIZZENr/bwcIIKw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@libp2p/interface": "^1.6.3", + "@libp2p/peer-id": "^4.2.3", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3" } }, - "node_modules/eslint-plugin-react/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@libp2p/bootstrap/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } + }, + "node_modules/@libp2p/bootstrap/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/@libp2p/circuit-relay-v2": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/circuit-relay-v2/-/circuit-relay-v2-1.1.4.tgz", + "integrity": "sha512-WLiisIvRWVSJLzb4MO1aqDOD2A7s99OgpfeKKt9nxSaq34WeQS9aGN9YxSczYkum9hBTdnLJZZDQrd6SId6NbQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/peer-collections": "^5.2.8", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/peer-record": "^7.0.24", + "@libp2p/utils": "^5.4.8", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3", + "any-signal": "^4.1.1", + "it-protobuf-stream": "^1.1.3", + "it-stream-types": "^2.0.1", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "protons-runtime": "^5.4.0", + "race-signal": "^1.0.2", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/eslint-plugin-security": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-1.7.1.tgz", - "integrity": "sha512-sMStceig8AFglhhT2LqlU5r+/fn9OwsA72O5bBuQVTssPCdQAOQzL+oMn/ZcpeUY6KcNfLJArgcrsSULNjYYdQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/@libp2p/circuit-relay-v2/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "safe-regex": "^2.1.1" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", - "license": "BSD-2-Clause", + "node_modules/@libp2p/circuit-relay-v2/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "multiformats": "^13.0.0" } }, - "node_modules/eslint-utils": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", - "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", - "license": "MIT", + "node_modules/@libp2p/crypto": { + "version": "4.1.8", + "resolved": "https://registry.npmjs.org/@libp2p/crypto/-/crypto-4.1.8.tgz", + "integrity": "sha512-j8d1gOS6ypt6CSYgBTJKSTGsht3SFPkhfOkGND6sUCl1w9pRslDlvFnU9UrNHLMiaNmVHaeS9B2IKzKMbLX92Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "eslint-visitor-keys": "^2.0.0" - }, - "engines": { - "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" - }, - "peerDependencies": { - "eslint": ">=5" - } - }, - "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", - "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "@libp2p/interface": "^1.6.3", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0", + "asn1js": "^3.0.5", + "multiformats": "^13.1.0", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", + "node_modules/@libp2p/crypto/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "multiformats": "^13.0.0" } }, - "node_modules/eslint/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/@libp2p/dcutr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/dcutr/-/dcutr-1.1.4.tgz", + "integrity": "sha512-NjIiAoi5q2Y2q0eON+VCdm8ec2Be1Q9q1vcL6z7RyBWwIkk6PPy8RvBaI6GcGKjk251jLrN6vz2yoL7vWRht2A==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "delay": "^6.0.0", + "it-protobuf-stream": "^1.1.3", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8" } }, - "node_modules/esniff": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", - "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", - "license": "ISC", + "node_modules/@libp2p/dcutr/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "d": "^1.0.1", - "es5-ext": "^0.10.62", - "event-emitter": "^0.3.5", - "type": "^2.7.2" - }, - "engines": { - "node": ">=0.10" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, + "node_modules/@libp2p/dcutr/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", + "license": "MIT", "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=16" }, "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/esquery": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", - "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", - "license": "BSD-3-Clause", + "node_modules/@libp2p/dcutr/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" + "multiformats": "^13.0.0" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "license": "BSD-2-Clause", + "node_modules/@libp2p/floodsub": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/floodsub/-/floodsub-9.1.4.tgz", + "integrity": "sha512-epH/OUYkKzQv3o1PX7mveWQMLAy/ImQ5ep823wwuRhIDFKUsNBSROIBHjEbBO6F7twDs59nDxTfNOhKJzcTzAQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" + "@libp2p/interface": "^1.6.3", + "@libp2p/pubsub": "^9.0.25", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" + "node_modules/@libp2p/floodsub/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" + "node_modules/@libp2p/identify": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/identify/-/identify-2.1.4.tgz", + "integrity": "sha512-w2JkmoZkXT3OJnTuyBPlEBicj1J1n90pcusZbs+YIiJ+mhsOvNKnQhJgCG8Q6wnTimcBjinqhRRp0hiaHqX7VQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/peer-record": "^7.0.24", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "it-drain": "^3.0.7", + "it-parallel": "^3.0.7", + "it-protobuf-stream": "^1.1.3", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0", + "wherearewe": "^2.0.1" } }, - "node_modules/etag": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", - "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node_modules/@libp2p/identify/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eth-crypto": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.6.0.tgz", - "integrity": "sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==", - "license": "MIT", + "node_modules/@libp2p/identify/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@babel/runtime": "7.20.13", - "@ethereumjs/tx": "3.5.2", - "@types/bn.js": "5.1.1", - "eccrypto": "1.1.6", - "ethereumjs-util": "7.1.5", - "ethers": "5.7.2", - "secp256k1": "5.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/pubkey" + "multiformats": "^13.0.0" } }, - "node_modules/eth-crypto/node_modules/@babel/runtime": { - "version": "7.20.13", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", - "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", - "license": "MIT", + "node_modules/@libp2p/interface": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/@libp2p/interface/-/interface-1.6.3.tgz", + "integrity": "sha512-Tm8W5Q2FsjcSdeA5BvP/GTUq/lp3SjeW6GPmWbbIasBJdv67UGHahu8YDFTME90IxTijnikkfGNkOPsd/4UuvA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "regenerator-runtime": "^0.13.11" + "@multiformats/multiaddr": "^12.2.3", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.1", + "multiformats": "^13.1.0", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/@libp2p/interface-address-manager": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@libp2p/interface-address-manager/-/interface-address-manager-3.0.1.tgz", + "integrity": "sha512-8N1nfOtZ/CnZ/cL0Bnj59fhcSs7orI4evmNVsv2DM1VaNHXqc9tPy8JmQE2HRjrUXeUPwtzzG2eoP7l0ZYdC0g==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.0.0" }, "engines": { - "node": ">=6.9.0" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/eth-crypto/node_modules/ethers": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", - "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", - "funding": [ - { - "type": "individual", - "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], - "license": "MIT", + "node_modules/@libp2p/interface-address-manager/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@ethersproject/abi": "5.7.0", - "@ethersproject/abstract-provider": "5.7.0", - "@ethersproject/abstract-signer": "5.7.0", - "@ethersproject/address": "5.7.0", - "@ethersproject/base64": "5.7.0", - "@ethersproject/basex": "5.7.0", - "@ethersproject/bignumber": "5.7.0", - "@ethersproject/bytes": "5.7.0", - "@ethersproject/constants": "5.7.0", - "@ethersproject/contracts": "5.7.0", - "@ethersproject/hash": "5.7.0", - "@ethersproject/hdnode": "5.7.0", - "@ethersproject/json-wallets": "5.7.0", - "@ethersproject/keccak256": "5.7.0", - "@ethersproject/logger": "5.7.0", - "@ethersproject/networks": "5.7.1", - "@ethersproject/pbkdf2": "5.7.0", - "@ethersproject/properties": "5.7.0", - "@ethersproject/providers": "5.7.2", - "@ethersproject/random": "5.7.0", - "@ethersproject/rlp": "5.7.0", - "@ethersproject/sha2": "5.7.0", - "@ethersproject/signing-key": "5.7.0", - "@ethersproject/solidity": "5.7.0", - "@ethersproject/strings": "5.7.0", - "@ethersproject/transactions": "5.7.0", - "@ethersproject/units": "5.7.0", - "@ethersproject/wallet": "5.7.0", - "@ethersproject/web": "5.7.1", - "@ethersproject/wordlists": "5.7.0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eth-crypto/node_modules/regenerator-runtime": { - "version": "0.13.11", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", - "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", - "license": "MIT" - }, - "node_modules/ethereum-cryptography": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", - "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", - "license": "MIT", + "node_modules/@libp2p/interface-address-manager/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@types/pbkdf2": "^3.0.0", - "@types/secp256k1": "^4.0.1", - "blakejs": "^1.1.0", - "browserify-aes": "^1.2.0", - "bs58check": "^2.1.2", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "hash.js": "^1.1.7", - "keccak": "^3.0.0", - "pbkdf2": "^3.0.17", - "randombytes": "^2.1.0", - "safe-buffer": "^5.1.2", - "scrypt-js": "^3.0.0", - "secp256k1": "^4.0.1", - "setimmediate": "^1.0.5" + "multiformats": "^13.0.0" } }, - "node_modules/ethereum-cryptography/node_modules/secp256k1": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", - "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", - "hasInstallScript": true, - "license": "MIT", + "node_modules/@libp2p/interface-internal": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@libp2p/interface-internal/-/interface-internal-1.3.3.tgz", + "integrity": "sha512-xng1cBGDhSZmCu0kUEv3363oSgpoPmvpDr11wumhKNEgGOwBVbEr0v7serYcrlORxFmyUBW8y98CkPRJxskPLA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0" - }, - "engines": { - "node": ">=10.0.0" + "@libp2p/interface": "^1.6.3", + "@libp2p/peer-collections": "^5.2.8", + "@multiformats/multiaddr": "^12.2.3", + "progress-events": "^1.0.0", + "uint8arraylist": "^2.4.8" } }, - "node_modules/ethereumjs-util": { - "version": "7.1.5", - "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", - "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", - "license": "MPL-2.0", + "node_modules/@libp2p/interface-internal/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@types/bn.js": "^5.1.0", - "bn.js": "^5.1.2", - "create-hash": "^1.1.2", - "ethereum-cryptography": "^0.1.3", - "rlp": "^2.2.4" - }, - "engines": { - "node": ">=10.0.0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/ethereumjs-util/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", - "license": "MIT" + "node_modules/@libp2p/interface-internal/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } }, - "node_modules/ethers": { - "version": "6.14.1", - "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.14.1.tgz", - "integrity": "sha512-JnFiPFi3sK2Z6y7jZ3qrafDMwiXmU+6cNZ0M+kPq+mTy9skqEzwqAdFW3nb/em2xjlIVXX6Lz8ID6i3LmS4+fQ==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/ethers-io/" - }, - { - "type": "individual", - "url": "https://www.buymeacoffee.com/ricmoo" - } - ], + "node_modules/@libp2p/interface/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@adraffy/ens-normalize": "1.10.1", - "@noble/curves": "1.2.0", - "@noble/hashes": "1.3.2", - "@types/node": "22.7.5", - "aes-js": "4.0.0-beta.5", - "tslib": "2.7.0", - "ws": "8.17.1" - }, - "engines": { - "node": ">=14.0.0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/ethers/node_modules/@noble/curves": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", - "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", - "license": "MIT", + "node_modules/@libp2p/interface/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@noble/hashes": "1.3.2" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "multiformats": "^13.0.0" } }, - "node_modules/ethers/node_modules/@noble/hashes": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", - "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", - "license": "MIT", - "engines": { - "node": ">= 16" - }, - "funding": { - "url": "https://paulmillr.com/funding/" + "node_modules/@libp2p/kad-dht": { + "version": "12.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/kad-dht/-/kad-dht-12.1.4.tgz", + "integrity": "sha512-TWg3WB/Ghqz2vVOBxZz3PD0gDw1j24GlcQiJw5AieXMY1va8ZxkYyJtpHluhPpjLnlI4zxNLbE30A05Tp6XD4w==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/peer-collections": "^5.2.8", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/record": "^4.0.4", + "@libp2p/utils": "^5.4.8", + "@multiformats/multiaddr": "^12.2.3", + "any-signal": "^4.1.1", + "hashlru": "^2.3.0", + "interface-datastore": "^8.2.11", + "it-drain": "^3.0.7", + "it-length": "^3.0.6", + "it-length-prefixed": "^9.0.4", + "it-map": "^3.1.0", + "it-merge": "^3.0.5", + "it-parallel": "^3.0.7", + "it-pipe": "^3.0.1", + "it-protobuf-stream": "^1.1.3", + "it-take": "^3.0.5", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "p-event": "^6.0.1", + "p-queue": "^8.0.1", + "progress-events": "^1.0.0", + "protons-runtime": "^5.4.0", + "race-signal": "^1.0.2", + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/ethers/node_modules/@types/node": { - "version": "22.7.5", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", - "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "node_modules/@libp2p/kad-dht/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "undici-types": "~6.19.2" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/ethers/node_modules/tslib": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", - "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" - }, - "node_modules/ethers/node_modules/undici-types": { - "version": "6.19.8", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", - "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" - }, - "node_modules/ethers/node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } + "node_modules/@libp2p/kad-dht/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/event-emitter": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", - "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", - "license": "MIT", + "node_modules/@libp2p/logger": { + "version": "4.0.19", + "resolved": "https://registry.npmjs.org/@libp2p/logger/-/logger-4.0.19.tgz", + "integrity": "sha512-VKpIMbjzs60AaTezh55iEDPJ0W2icbkJkBXSlAMycCT4C+RYxOTRgevasw3mDB6+Lj9etM0nfa4vutoG4fsYCw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "d": "1", - "es5-ext": "~0.10.14" + "@libp2p/interface": "^1.6.3", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "multiformats": "^13.1.0", + "weald": "^1.0.2" } }, - "node_modules/event-iterator": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", - "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", - "license": "MIT" - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" + "node_modules/@libp2p/logger/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "license": "MIT" + "node_modules/@libp2p/logger/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } }, - "node_modules/events": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", - "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", - "license": "MIT", - "engines": { - "node": ">=0.4.x" + "node_modules/@libp2p/mdns": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/mdns/-/mdns-10.1.4.tgz", + "integrity": "sha512-OlvfOGdNw9jPpTwgS9TYskNNn8kiqVDAIT42XOL9aLIXlX6Uqx1LlKphoWUxL01TsSIBUX5asKdnbGPpV/qqLA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/multiaddr": "^12.2.3", + "@types/multicast-dns": "^7.2.4", + "dns-packet": "^5.6.1", + "multicast-dns": "^7.2.5" } }, - "node_modules/evp_bytestokey": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", - "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", - "license": "MIT", + "node_modules/@libp2p/mdns/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", - "license": "MIT", + "node_modules/@libp2p/mdns/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.1", - "human-signals": "^3.0.1", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^3.0.7", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "multiformats": "^13.0.0" } }, - "node_modules/execa/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@libp2p/multistream-select": { + "version": "5.1.16", + "resolved": "https://registry.npmjs.org/@libp2p/multistream-select/-/multistream-select-5.1.16.tgz", + "integrity": "sha512-0IUecYYu++gimGRzG324A6+NE9Vk/6Wvmp2xegfLjUZRegpFbHup3UvFEGxTkpHmsoswJMMTPHQyCNJFga+Z7Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.6.3", + "it-length-prefixed": "^9.0.4", + "it-length-prefixed-stream": "^1.1.7", + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.1", + "race-signal": "^1.0.2", + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/execa/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/@libp2p/multistream-select/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/expand-template": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", - "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", - "license": "(MIT OR WTFPL)", - "engines": { - "node": ">=6" + "node_modules/@libp2p/peer-collections": { + "version": "5.2.8", + "resolved": "https://registry.npmjs.org/@libp2p/peer-collections/-/peer-collections-5.2.8.tgz", + "integrity": "sha512-dIakIFms3GgFYg4lVgl9afAm+OAxGTofz4KdFnVrlNW1z6VFhTbnRtvTweR6woSr2es1+Fu6WutmZ+62Fn0iOQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@libp2p/interface": "^1.6.3", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/utils": "^5.4.8" } }, - "node_modules/express": { - "version": "4.21.1", - "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", - "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", - "license": "MIT", + "node_modules/@libp2p/peer-id": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id/-/peer-id-4.2.3.tgz", + "integrity": "sha512-hRqPzcYOz/5q6QvHYdmPMGeFZCjC/9qxQ/+jstSDMnY1DuKEXCre2+tCpG9OeRAFyPBbs5isfaqbY3zNZV2pqA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "accepts": "~1.3.8", - "array-flatten": "1.1.1", - "body-parser": "1.20.3", - "content-disposition": "0.5.4", - "content-type": "~1.0.4", - "cookie": "0.7.1", - "cookie-signature": "1.0.6", - "debug": "2.6.9", - "depd": "2.0.0", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "etag": "~1.8.1", - "finalhandler": "1.3.1", - "fresh": "0.5.2", - "http-errors": "2.0.0", - "merge-descriptors": "1.0.3", - "methods": "~1.1.2", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "path-to-regexp": "0.1.10", - "proxy-addr": "~2.0.7", - "qs": "6.13.0", - "range-parser": "~1.2.1", - "safe-buffer": "5.2.1", - "send": "0.19.0", - "serve-static": "1.16.2", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "type-is": "~1.6.18", - "utils-merge": "1.0.1", - "vary": "~1.1.2" - }, - "engines": { - "node": ">= 0.10.0" + "@libp2p/interface": "^1.6.3", + "multiformats": "^13.1.0", + "uint8arrays": "^5.1.0" } }, - "node_modules/express/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", + "node_modules/@libp2p/peer-id-factory": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/@libp2p/peer-id-factory/-/peer-id-factory-4.2.3.tgz", + "integrity": "sha512-4ryh3M4UH+nwlM1o3y3iCpW2jTxjj+Hgb6UNI1nFxZGLA6MI+En8kKiroa970xiVvsA+Xmas8B9gWeMFrZKBKg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "ms": "2.0.0" + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/peer-id": "^4.2.3", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/express/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" - }, - "node_modules/express/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/ext": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", - "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", - "license": "ISC", + "node_modules/@libp2p/peer-id-factory/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "type": "^2.7.2" + "multiformats": "^13.0.0" } }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "license": "MIT" - }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", - "dev": true, - "license": "MIT", + "node_modules/@libp2p/peer-id/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" + "multiformats": "^13.0.0" } }, - "node_modules/extract-zip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", - "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", - "license": "BSD-2-Clause", + "node_modules/@libp2p/peer-record": { + "version": "7.0.24", + "resolved": "https://registry.npmjs.org/@libp2p/peer-record/-/peer-record-7.0.24.tgz", + "integrity": "sha512-2LYvLqr3XDjA5u2LGD/3IvdgdrwOYdMzQnzr612/Q+yVS+36CN0dAIqU74OEWx+XeeUJSBQnQ0ryBQq/arbXuA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "debug": "^4.1.1", - "get-stream": "^5.1.0", - "yauzl": "^2.10.0" - }, - "bin": { - "extract-zip": "cli.js" - }, - "engines": { - "node": ">= 10.17.0" - }, - "optionalDependencies": { - "@types/yauzl": "^2.9.1" + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/multiaddr": "^12.2.3", + "protons-runtime": "^5.4.0", + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/extract-zip/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", + "node_modules/@libp2p/peer-record/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/eyes": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/eyes/-/eyes-0.1.8.tgz", - "integrity": "sha512-GipyPsXO1anza0AOZdy69Im7hGFCNB7Y/NGjDlZGJ3GJJLtwNSb2vrzYrTYJRrRloVx7pl+bhUaTB8yiccPvFQ==", - "engines": { - "node": "> 0.1.90" + "node_modules/@libp2p/peer-record/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "license": "MIT" - }, - "node_modules/fast-diff": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", - "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", - "dev": true, - "license": "Apache-2.0" - }, - "node_modules/fast-glob": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", - "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "license": "MIT", + "node_modules/@libp2p/peer-store": { + "version": "10.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/peer-store/-/peer-store-10.1.4.tgz", + "integrity": "sha512-D/lqEaWZV8xEBQ7b0ZEFYtaa6+LjXjs+PRrFpmnvyuz86o9KQedVoJPufT4g0nKIeQZUtdRfkzWNnwD+fru64g==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" - }, - "engines": { - "node": ">=8.6.0" + "@libp2p/interface": "^1.6.3", + "@libp2p/peer-collections": "^5.2.8", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/peer-record": "^7.0.24", + "@multiformats/multiaddr": "^12.2.3", + "interface-datastore": "^8.2.11", + "it-all": "^3.0.6", + "mortice": "^3.0.4", + "multiformats": "^13.1.0", + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" + } + }, + "node_modules/@libp2p/peer-store/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "license": "ISC", + "node_modules/@libp2p/peer-store/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "is-glob": "^4.0.1" - }, - "engines": { - "node": ">= 6" + "multiformats": "^13.0.0" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "license": "MIT" - }, - "node_modules/fast-uri": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", - "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", - "license": "MIT" - }, - "node_modules/fast-xml-parser": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", - "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", + "node_modules/@libp2p/ping": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/ping/-/ping-1.1.4.tgz", + "integrity": "sha512-biwYtLaEHky2hsLzVZnPzrwME2WwaMu2MG+poKepxS36Ib9EM7XPGVUjpoafCQBM+Z67AMiFpKVtk3k9Kb24Gw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@multiformats/multiaddr": "^12.2.3", + "it-first": "^3.0.6", + "it-pipe": "^3.0.1", + "uint8arrays": "^5.1.0" } }, - "node_modules/fastq": { - "version": "1.17.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", - "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "license": "ISC", + "node_modules/@libp2p/ping/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "reusify": "^1.0.4" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/fd-slicer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", - "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", - "license": "MIT", + "node_modules/@libp2p/ping/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "pend": "~1.2.0" + "multiformats": "^13.0.0" } }, - "node_modules/fecha": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", - "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", - "license": "MIT" - }, - "node_modules/fetch-blob": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", - "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "paypal", - "url": "https://paypal.me/jimmywarting" - } - ], - "license": "MIT", + "node_modules/@libp2p/pubsub": { + "version": "9.0.25", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub/-/pubsub-9.0.25.tgz", + "integrity": "sha512-IpAN2O/Xcqk0hXDv37zLGvzyQtR4o0xiZl3IC/P7QFikFf+mrmh80Zz447LhmHdRI/BpAwES0NYYCfjBDHu5+Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "node-domexception": "^1.0.0", - "web-streams-polyfill": "^3.0.3" - }, - "engines": { - "node": "^12.20 || >= 14.13" + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/peer-collections": "^5.2.8", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/utils": "^5.4.8", + "it-length-prefixed": "^9.0.4", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "multiformats": "^13.1.0", + "p-queue": "^8.0.1", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/figures": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-1.7.0.tgz", - "integrity": "sha512-UxKlfCRuCBxSXU4C6t9scbDyWZ4VlaFFdojKtzJuSkuOBQ5CNFum+zZXFwHjo+CxBC1t6zlYPgHIgFjL8ggoEQ==", - "license": "MIT", + "node_modules/@libp2p/pubsub-peer-discovery": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@libp2p/pubsub-peer-discovery/-/pubsub-peer-discovery-10.0.2.tgz", + "integrity": "sha512-7DLasMSo443nxPJ+X95tXazXgO96K2/TafoexDxi4QVWIKgkmK+HyoFRcmwog2pjhA1/KQUsPu8S8wH6Ns9Oow==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "escape-string-regexp": "^1.0.5", - "object-assign": "^4.1.0" - }, - "engines": { - "node": ">=0.10.0" + "@libp2p/interface": "^1.0.1", + "@libp2p/interface-internal": "^1.0.1", + "@libp2p/peer-id": "^4.0.1", + "@multiformats/multiaddr": "^12.0.0", + "protons-runtime": "^5.0.0", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^4.0.9" } }, - "node_modules/figures/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", - "license": "MIT", + "node_modules/@libp2p/pubsub-peer-discovery/node_modules/@multiformats/multiaddr/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "flat-cache": "^3.0.4" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "multiformats": "^13.0.0" } }, - "node_modules/file-stream-rotator": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", - "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", - "license": "MIT", + "node_modules/@libp2p/pubsub/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "moment": "^2.29.1" + "multiformats": "^13.0.0" } }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", - "license": "MIT" - }, - "node_modules/file-url": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/file-url/-/file-url-3.0.0.tgz", - "integrity": "sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@libp2p/record": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@libp2p/record/-/record-4.0.4.tgz", + "integrity": "sha512-wEEeHXGNIcc8HtGbgGMuSHbboUWMxKG7OxALFwkE+KACgfRJZTESOp6XIdZnyC0r9lfEFsjF01pFKBTzoBmWEQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "protons-runtime": "^5.4.0", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", - "license": "MIT", - "engines": { - "node": ">=4" + "node_modules/@libp2p/record/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "license": "MIT", + "node_modules/@libp2p/tcp": { + "version": "9.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/tcp/-/tcp-9.1.4.tgz", + "integrity": "sha512-0j/aYdMFLhLWUodtyuBt5+smzkmXCiczOxNOwKyTVUuoMMcAPCLxACqCy8213qiwpJ3qP5ZTTTs/JJMgWRC7ag==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@libp2p/interface": "^1.6.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3", + "@types/sinon": "^17.0.3", + "progress-events": "^1.0.0", + "stream-to-it": "^1.0.1" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "license": "MIT", + "node_modules/@libp2p/tcp/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/finalhandler": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", - "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", - "license": "MIT", + "node_modules/@libp2p/tcp/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "debug": "2.6.9", - "encodeurl": "~2.0.0", - "escape-html": "~1.0.3", - "on-finished": "2.4.1", - "parseurl": "~1.3.3", - "statuses": "2.0.1", - "unpipe": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" + "multiformats": "^13.0.0" } }, - "node_modules/finalhandler/node_modules/debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "license": "MIT", + "node_modules/@libp2p/upnp-nat": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@libp2p/upnp-nat/-/upnp-nat-1.2.4.tgz", + "integrity": "sha512-oI0yAg7GKpiPy4u2u/34wYPJ/CLBraIA5dUh21ZGy3TH88eaTOYfyHSfGw9AI0IT/012xxkpqbA+h5+V+qDoBQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "ms": "2.0.0" + "@achingbrain/nat-port-mapper": "^1.0.13", + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/multiaddr": "^12.2.3", + "wherearewe": "^2.0.1" } }, - "node_modules/finalhandler/node_modules/ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", - "license": "MIT" + "node_modules/@libp2p/upnp-nat/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" + } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", - "license": "MIT", + "node_modules/@libp2p/upnp-nat/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "multiformats": "^13.0.0" } }, - "node_modules/find-replace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", - "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", - "license": "MIT", + "node_modules/@libp2p/utils": { + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/@libp2p/utils/-/utils-5.4.8.tgz", + "integrity": "sha512-3ysAjrheDvcrUd8RWOCwa6Hm+5FMsYOlPq9IPllfD0jOyHO2RHc/huvAmjBg/PWrTdUyx1nWQf9wmdQFgTDUDQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "array-back": "^3.0.1" - }, - "engines": { - "node": ">=4.0.0" + "@chainsafe/is-ip": "^2.0.2", + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/logger": "^4.0.19", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "@sindresorhus/fnv1a": "^3.1.0", + "@types/murmurhash3js-revisited": "^3.0.3", + "any-signal": "^4.1.1", + "delay": "^6.0.0", + "get-iterator": "^2.0.1", + "is-loopback-addr": "^2.0.2", + "it-pushable": "^3.2.3", + "it-stream-types": "^2.0.1", + "murmurhash3js-revisited": "^3.0.0", + "netmask": "^2.0.2", + "p-defer": "^4.0.1", + "race-event": "^1.3.0", + "race-signal": "^1.0.2", + "uint8arraylist": "^2.4.8", + "uint8arrays": "^5.1.0" } }, - "node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", - "license": "MIT", + "node_modules/@libp2p/utils/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/find-versions": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-4.0.0.tgz", - "integrity": "sha512-wgpWy002tA+wgmO27buH/9KzyEOQnKsG/R0yrcjPT9BOFm0zRBVQbZ95nRGXWMywS8YR5knRbpohio0bcJABxQ==", + "node_modules/@libp2p/utils/node_modules/delay": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-6.0.0.tgz", + "integrity": "sha512-2NJozoOHQ4NuZuVIr5CWd0iiLVIRSDepakaovIN+9eIDHEhdCAEvSy2cuf1DCrPPQLvHmbqTHODlhHg8UCy4zw==", "license": "MIT", - "dependencies": { - "semver-regex": "^3.1.2" - }, "engines": { - "node": ">=10" + "node": ">=16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/find-yarn-workspace-root": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/find-yarn-workspace-root/-/find-yarn-workspace-root-2.0.0.tgz", - "integrity": "sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==", - "license": "Apache-2.0", + "node_modules/@libp2p/utils/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "license": "BSD-3-Clause", - "bin": { - "flat": "cli.js" + "multiformats": "^13.0.0" } }, - "node_modules/flat-cache": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", - "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", - "license": "MIT", + "node_modules/@libp2p/websockets": { + "version": "8.1.4", + "resolved": "https://registry.npmjs.org/@libp2p/websockets/-/websockets-8.1.4.tgz", + "integrity": "sha512-VWVgIo8t4VTzTI+orfGQxeHSXNWQL6dF//nH2p3nI5Z0saR6lrv5pNTsXbIhrZukGRFGgSwqGsd8bGhEohKNrQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.3", - "rimraf": "^3.0.2" - }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "@libp2p/interface": "^1.6.3", + "@libp2p/utils": "^5.4.8", + "@multiformats/mafmt": "^12.1.6", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-to-uri": "^10.0.1", + "@types/ws": "^8.5.10", + "it-ws": "^6.1.1", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "race-signal": "^1.0.2", + "wherearewe": "^2.0.1", + "ws": "^8.17.0" } }, - "node_modules/flatbuffers": { - "version": "24.3.25", - "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.3.25.tgz", - "integrity": "sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ==", - "license": "Apache-2.0" - }, - "node_modules/flatted": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", - "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", - "license": "ISC" - }, - "node_modules/flatten": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/flatten/-/flatten-1.0.3.tgz", - "integrity": "sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg==", - "deprecated": "flatten is deprecated in favor of utility frameworks such as lodash.", - "license": "MIT" - }, - "node_modules/fn.name": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", - "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", - "license": "MIT" - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", - "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } + "node_modules/@libp2p/websockets/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", - "license": "MIT", + "node_modules/@libp2p/websockets/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "is-callable": "^1.1.3" + "multiformats": "^13.0.0" } }, - "node_modules/foreground-child": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", - "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", - "license": "ISC", + "node_modules/@multiformats/dns": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@multiformats/dns/-/dns-1.0.6.tgz", + "integrity": "sha512-nt/5UqjMPtyvkG9BQYdJ4GfLK3nMqGpFZOzf4hAmIa0sJh2LlS9YKXZ4FgwBDsaHvzZqR/rUFIywIc7pkHNNuw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8.0.0" + "@types/dns-packet": "^5.6.5", + "buffer": "^6.0.3", + "dns-packet": "^5.6.1", + "hashlru": "^2.3.0", + "p-queue": "^8.0.1", + "progress-events": "^1.0.0", + "uint8arrays": "^5.0.2" } }, - "node_modules/form-data": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", - "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", - "license": "MIT", + "node_modules/@multiformats/dns/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" + "multiformats": "^13.0.0" } }, - "node_modules/form-data-encoder": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", - "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", - "license": "MIT", - "engines": { - "node": ">= 14.17" + "node_modules/@multiformats/mafmt": { + "version": "12.1.6", + "resolved": "https://registry.npmjs.org/@multiformats/mafmt/-/mafmt-12.1.6.tgz", + "integrity": "sha512-tlJRfL21X+AKn9b5i5VnaTD6bNttpSpcqwKVmDmSHLwxoz97fAHaepqFOk/l1fIu94nImIXneNbhsJx/RQNIww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@multiformats/multiaddr": "^12.0.0" } }, - "node_modules/formdata-polyfill": { - "version": "4.0.10", - "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", - "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", - "license": "MIT", + "node_modules/@multiformats/mafmt/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "fetch-blob": "^3.1.2" - }, - "engines": { - "node": ">=12.20.0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/forwarded": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", - "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node_modules/@multiformats/mafmt/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/freeport-promise": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", - "integrity": "sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==", + "node_modules/@multiformats/multiaddr": { + "version": "10.5.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-10.5.0.tgz", + "integrity": "sha512-u4qHMyv25iAqCb9twJROoN1M8UDm8bureOCIzwz03fVhwJzV6DpgH1eFz9UAzDn7CpSShQ9SLS5MiC4hJjTfig==", "license": "Apache-2.0 OR MIT", + "dependencies": { + "dns-over-http-resolver": "^2.1.0", + "err-code": "^3.0.1", + "is-ip": "^5.0.0", + "multiformats": "^9.4.5", + "uint8arrays": "^3.0.0", + "varint": "^6.0.0" + }, "engines": { "node": ">=16.0.0", "npm": ">=7.0.0" } }, - "node_modules/fresh": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", - "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", - "license": "MIT", - "engines": { - "node": ">= 0.6" + "node_modules/@multiformats/multiaddr-matcher": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-matcher/-/multiaddr-matcher-1.2.4.tgz", + "integrity": "sha512-GgpqzQFL4Mj8t7cLNHC5nuYUuSm0kTtSUyYswiyWwTSUY3XwRAMx0UiFWQg+ETk0u+/IvFaHxfnyEoH3tasvwg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@multiformats/multiaddr": "^12.0.0", + "multiformats": "^13.0.0" } }, - "node_modules/from2": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", - "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", - "license": "MIT", + "node_modules/@multiformats/multiaddr-matcher/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/from2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/from2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", + "node_modules/@multiformats/multiaddr-matcher/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "multiformats": "^13.0.0" } }, - "node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", + "node_modules/@multiformats/multiaddr-to-uri": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr-to-uri/-/multiaddr-to-uri-10.1.0.tgz", + "integrity": "sha512-ZNwSAx3ssBWwd4y0LKrOsq9xG7LBHboQxnUdSduNc2fTh/NS1UjA2slgUy6KHxH5k9S2DSus0iU2CoyJyN0/pg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "@multiformats/multiaddr": "^12.3.0" } }, - "node_modules/fromentries": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", - "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/fs-constants": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", - "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", - "license": "MIT" - }, - "node_modules/fs-extra": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", - "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", - "license": "MIT", + "node_modules/@multiformats/multiaddr-to-uri/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/fs-minipass": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", - "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", - "license": "ISC", + "node_modules/@multiformats/multiaddr-to-uri/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "minipass": "^3.0.0" - }, - "engines": { - "node": ">= 8" + "multiformats": "^13.0.0" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", - "license": "ISC" + "node_modules/@multiformats/multiaddr/node_modules/multiformats": { + "version": "9.9.0", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-9.9.0.tgz", + "integrity": "sha512-HoMUjhH9T8DDBNT+6xzkrd9ga/XiBI4xLr58LJACwK6G3HTOPeMz4nB4KJs33L2BelrIJa7P0VuNaVF3hMYfjg==", + "license": "(Apache-2.0 AND MIT)" }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "node_modules/@multiformats/multiaddr/node_modules/uint8arrays": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-3.1.1.tgz", + "integrity": "sha512-+QJa8QRnbdXVpHYjLoTpJIdCTiw9Ir62nocClWuXIq2JIh4Uta0cQsTSpFL678p2CN8B+XSApwcU+pQEqVpKWg==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "multiformats": "^9.4.2" } }, - "node_modules/function-timeout": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-0.1.1.tgz", - "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", + "node_modules/@noble/ciphers": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.6.0.tgz", + "integrity": "sha512-mIbq/R9QXk5/cTfESb1OKtyFnk7oc1Om/8onA1158K9/OZUQFDEVy55jVTato+xmp3XX6F6Qh0zz0Nc1AxAlRQ==", "license": "MIT", - "engines": { - "node": ">=14.16" - }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/function.prototype.name": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", - "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "node_modules/@noble/curves": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.5.0.tgz", + "integrity": "sha512-J5EKamIHnKPyClwVrzmaf5wSdQXgdHcPZIZLu3bwnbeCx8/7NPK5q2ZBWF+5FvYGByjiQQsJYX6jfgB2wDPn3A==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "functions-have-names": "^1.2.3" - }, - "engines": { - "node": ">= 0.4" + "@noble/hashes": "1.4.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/functional-red-black-tree": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", - "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "license": "MIT" - }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/@noble/hashes": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.4.0.tgz", + "integrity": "sha512-V1JJ1WTRUqHHrOSh597hURcMqVKVGL/ea3kv0gSnEdsEZ0/+VyPghM1lMNGc00z7CIQorSvbKpuJkxvuHbvdbg==", "license": "MIT", + "engines": { + "node": ">= 16" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://paulmillr.com/funding/" } }, - "node_modules/gauge": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", - "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "optional": true, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/gauge/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, "license": "MIT", - "optional": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/gauge/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" + "node_modules/@npmcli/fs": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", + "license": "ISC", + "optional": true, + "dependencies": { + "@gar/promisify": "^1.0.1", + "semver": "^7.3.5" } }, - "node_modules/get-amd-module-type": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/get-amd-module-type/-/get-amd-module-type-3.0.2.tgz", - "integrity": "sha512-PcuKwB8ouJnKuAPn6Hk3UtdfKoUV3zXRqVEvj8XGIXqjWfgd1j7QGdXy5Z9OdQfzVt1Sk29HVe/P+X74ccOuqw==", + "node_modules/@npmcli/move-file": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", "license": "MIT", + "optional": true, "dependencies": { - "ast-module-types": "^3.0.0", - "node-source-walk": "^4.2.2" + "mkdirp": "^1.0.4", + "rimraf": "^3.0.2" }, "engines": { - "node": ">=6.0" + "node": ">=10" } }, - "node_modules/get-amd-module-type/node_modules/ast-module-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-3.0.0.tgz", - "integrity": "sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==", - "license": "MIT", - "engines": { - "node": ">=6.0" + "node_modules/@oceanprotocol/contracts": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/contracts/-/contracts-2.3.1.tgz", + "integrity": "sha512-43Vz+DJfoNZLteg91sYvNDR5tJLWcAXl78VoSTriw38j81p6FSLcPNCHzPZKwX9FxyMk3uQe9U4u9REUBEQUfw==" + }, + "node_modules/@oceanprotocol/ddo-js": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@oceanprotocol/ddo-js/-/ddo-js-0.1.1.tgz", + "integrity": "sha512-RsDUiWfPjylj/xqk4HtUr3qzYzurlBLd2/YW/oP9vC7Gh0uGgJsCShu+ao7hC0Xid4y0iORhkSgiaCtshVGchQ==", + "license": "Apache-2.0", + "dependencies": { + "@rdfjs/formats-common": "^3.1.0", + "@types/rdfjs__formats-common": "^3.1.5", + "@zazuko/env-node": "^2.1.4", + "chai": "^5.1.2", + "ethers": "^5.7.2", + "rdf-literal": "^2.0.0", + "rdf-validate-shacl": "^0.5.6" } }, - "node_modules/get-amd-module-type/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/abi": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abi/-/abi-5.8.0.tgz", + "integrity": "sha512-b9YS/43ObplgyV6SlyQsG53/vkSal0MNA1fskSC4mbnCMi8R+NkcH8K9FPYNESf6jUefBUniE4SOKms0E/KK1Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@babel/parser": "^7.0.0" - }, - "engines": { - "node": ">=6.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/abstract-provider": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-provider/-/abstract-provider-5.8.0.tgz", + "integrity": "sha512-wC9SFcmh4UK0oKuLJQItoQdzS/qZ51EJegK6EmAWlh+OptpQ/npECOR3QqECd8iGHC0RJb4WKbVdSfif4ammrg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0" } }, - "node_modules/get-east-asian-width": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", - "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", - "dev": true, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/abstract-signer": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/abstract-signer/-/abstract-signer-5.8.0.tgz", + "integrity": "sha512-N0XhZTswXcmIZQdYtUnd79VJzvEwXQw6PK0dTl9VoYrEBxxCPXqS0Eod7q5TNKRxe1/5WUMuR0u0nqTF/avdCA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/get-func-name": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", - "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/address": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/address/-/address-5.8.0.tgz", + "integrity": "sha512-GhH/abcC46LJwshoN+uBNoKVFPxUuZm6dA257z0vZkKmU1+t8xTn8oK7B9qrj8W2rFRMch4gbJl6PmVxjxBEBA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/rlp": "^5.8.0" } }, - "node_modules/get-intrinsic": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", - "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/base64": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/base64/-/base64-5.8.0.tgz", + "integrity": "sha512-lN0oIwfkYj9LbPx4xEkie6rAMJtySbpOAFXSDVQaBnAzYfB4X2Qr+FXJGxMoc3Bxp2Sm8OwvzMrywxyw0gLjIQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@ethersproject/bytes": "^5.8.0" + } + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/basex": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/basex/-/basex-5.8.0.tgz", + "integrity": "sha512-PIgTszMlDRmNwW9nhS6iqtVfdTAKosA7llYXNmGPw4YAI1PUyMv28988wAb41/gHF/WqGdoLv0erHaRcHRKW2Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/properties": "^5.8.0" } }, - "node_modules/get-iterator": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz", - "integrity": "sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg==", - "license": "MIT" - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/bignumber": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bignumber/-/bignumber-5.8.0.tgz", + "integrity": "sha512-ZyaT24bHaSeJon2tGPKIiHszWjD/54Sz8t57Toch475lCLljC6MgPmxk7Gtzz+ddNN5LuHea9qhAe0x3D+uYPA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=8.0.0" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "bn.js": "^5.2.1" } }, - "node_modules/get-stdin": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-8.0.0.tgz", - "integrity": "sha512-sY22aA6xchAzprjyqmSEQv4UbAAzRN0L2dQB0NlN5acTTK9Don6nhoc3eAbUnpZiCANAMfd/+40kVdKfFygohg==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/bytes": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/bytes/-/bytes-5.8.0.tgz", + "integrity": "sha512-vTkeohgJVCPVHu5c25XWaWQOZ4v+DkGoC42/TS2ond+PARCxTJvgTFUNDZovyQ/uAQ4EcpqqowKydcdmRKjg7A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/constants": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/constants/-/constants-5.8.0.tgz", + "integrity": "sha512-wigX4lrf5Vu+axVTIvNsuL6YrV4O5AXl5ubcURKMEME5TnWBouUh0CDTWxZ2GpnRn1kcCgE7l8O5+VbV9QTTcg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@ethersproject/bignumber": "^5.8.0" } }, - "node_modules/get-symbol-description": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", - "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/contracts": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/contracts/-/contracts-5.8.0.tgz", + "integrity": "sha512-0eFjGz9GtuAi6MZwhb4uvUM216F38xiuR0yYCjKJpNfSEy4HUM8hvqqBj9Jmm0IUz8l0xKEhWwLIhPgxNY0yvQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@ethersproject/abi": "^5.8.0", + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/transactions": "^5.8.0" } }, - "node_modules/get-tsconfig": { - "version": "4.7.6", - "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", - "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", - "dev": true, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/hash": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hash/-/hash-5.8.0.tgz", + "integrity": "sha512-ac/lBcTbEWW/VGJij0CNSw/wPcw9bSRgCB0AIBz8CvED/jfvDoV9hsIIiWfvWmFEi8RcXtlNwp2jv6ozWOsooA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "resolve-pkg-maps": "^1.0.0" - }, - "funding": { - "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/get-uri": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", - "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", - "dev": true, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/hdnode": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/hdnode/-/hdnode-5.8.0.tgz", + "integrity": "sha512-4bK1VF6E83/3/Im0ERnnUeWOY3P1BZml4ZD3wcH8Ys0/d1h1xaFt6Zc+Dh9zXf9TapGro0T4wvO71UTCp3/uoA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "basic-ftp": "^5.0.2", - "data-uri-to-buffer": "^6.0.2", - "debug": "^4.3.4", - "fs-extra": "^11.2.0" - }, - "engines": { - "node": ">= 14" + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" + } + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/json-wallets": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/json-wallets/-/json-wallets-5.8.0.tgz", + "integrity": "sha512-HxblNck8FVUtNxS3VTEYJAcwiKYsBIF77W15HufqlBF9gGfhmYOJtYZp8fSDZtn9y5EaXTE87zDwzxRoTFk11w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", + "dependencies": { + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/pbkdf2": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "aes-js": "3.0.0", + "scrypt-js": "3.0.1" } }, - "node_modules/gh-pages": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-4.0.0.tgz", - "integrity": "sha512-p8S0T3aGJc68MtwOcZusul5qPSNZCalap3NWbhRUZYu1YOdp+EjZ+4kPmRM8h3NNRdqw00yuevRjlkuSzCn7iQ==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/keccak256": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/keccak256/-/keccak256-5.8.0.tgz", + "integrity": "sha512-A1pkKLZSz8pDaQ1ftutZoaN46I6+jvuqugx5KYNeQOPqq+JZ0Txm7dlWesCHB5cndJSu5vP2VKptKf7cksERng==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "async": "^2.6.1", - "commander": "^2.18.0", - "email-addresses": "^3.0.1", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^8.1.0", - "globby": "^6.1.0" - }, - "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" - }, - "engines": { - "node": ">=10" + "@ethersproject/bytes": "^5.8.0", + "js-sha3": "0.8.0" } }, - "node_modules/gh-pages/node_modules/array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/logger": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/logger/-/logger-5.8.0.tgz", + "integrity": "sha512-Qe6knGmY+zPPWTC+wQrpitodgBfH7XoceCGL5bJVejmH+yCS3R8jJm8iiWuvWbG76RUmyEG53oqv6GMVWqunjA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT" + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/networks": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/networks/-/networks-5.8.0.tgz", + "integrity": "sha512-egPJh3aPVAzbHwq8DD7Po53J4OUSsA1MjQp8Vf/OZPav5rlmWUaFLiq8cvQiGK0Z5K6LYzm29+VA/p4RL1FzNg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "array-uniq": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/gh-pages/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/pbkdf2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/pbkdf2/-/pbkdf2-5.8.0.tgz", + "integrity": "sha512-wuHiv97BrzCmfEaPbUFpMjlVg/IDkZThp9Ri88BpjRleg4iePJaj2SW8AIyE8cXn5V1tuAaMj6lzvsGJkGWskg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/sha2": "^5.8.0" } }, - "node_modules/gh-pages/node_modules/fs-extra": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", - "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/properties": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/properties/-/properties-5.8.0.tgz", + "integrity": "sha512-PYuiEoQ+FMaZZNGrStmN7+lWjlsoufGIHdww7454FIaGdbe/p5rnaCXTr5MtBYl3NkeoVhHZuyzChPeGeKIpQw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/gh-pages/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/providers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/providers/-/providers-5.8.0.tgz", + "integrity": "sha512-3Il3oTzEx3o6kzcg9ZzbE+oCZYyY+3Zh83sKkn4s1DZfTUjIegHnN2Cm0kbn9YFy45FDVcuCLLONhU7ny0SsCw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/base64": "^5.8.0", + "@ethersproject/basex": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/networks": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/web": "^5.8.0", + "bech32": "1.1.4", + "ws": "8.18.0" } }, - "node_modules/gh-pages/node_modules/globby": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-6.1.0.tgz", - "integrity": "sha512-KVbFv2TQtbzCoxAnfD6JcHZTYCzyliEaaeM/gH8qQdkKr5s0OP9scEgvdcngyk7AVdY6YVW/TJHd+lQ/Df3Daw==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/random": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/random/-/random-5.8.0.tgz", + "integrity": "sha512-E4I5TDl7SVqyg4/kkA/qTfuLWAQGXmSOgYyO01So8hLfwgKvYK5snIlzxJMk72IFdG/7oh8yuSqY2KX7MMwg+A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "array-union": "^1.0.1", - "glob": "^7.0.3", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/gh-pages/node_modules/jsonfile": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", - "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/rlp": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/rlp/-/rlp-5.8.0.tgz", + "integrity": "sha512-LqZgAznqDbiEunaUvykH2JAoXTT9NV0Atqk8rQN9nx9SEgThA/WMx5DnW8a9FOufo//6FZOCHZ+XiClzgbqV9Q==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/gh-pages/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/gh-pages/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/sha2": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/sha2/-/sha2-5.8.0.tgz", + "integrity": "sha512-dDOUrXr9wF/YFltgTBYS0tKslPEKr6AekjqDW2dbn1L1xmjGR+9GiKu4ajxovnrDbwxAKdHjW8jNcwfz8PAz4A==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "hash.js": "1.1.7" } }, - "node_modules/gh-pages/node_modules/universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/signing-key": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/signing-key/-/signing-key-5.8.0.tgz", + "integrity": "sha512-LrPW2ZxoigFi6U6aVkFN/fa9Yx/+4AtIUe4/HACTvKJdhm0eeb107EVCIQcrLZkxaSIgc/eCrX8Q1GtbH+9n3w==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">= 4.0.0" + "dependencies": { + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "bn.js": "^5.2.1", + "elliptic": "6.6.1", + "hash.js": "1.1.7" } }, - "node_modules/git-log-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/git-log-parser/-/git-log-parser-1.2.1.tgz", - "integrity": "sha512-PI+sPDvHXNPl5WNOErAK05s3j0lgwUzMN6o8cyQrDaKfT3qd7TmNJKeXX+SknI5I0QhG5fVPAEwSY4tRGDtYoQ==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/solidity": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/solidity/-/solidity-5.8.0.tgz", + "integrity": "sha512-4CxFeCgmIWamOHwYN9d+QWGxye9qQLilpgTU0XhYs1OahkclF+ewO+3V1U0mvpiuQxm5EHHmv8f7ClVII8EHsA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "argv-formatter": "~1.0.0", - "spawn-error-forwarder": "~1.0.0", - "split2": "~1.0.0", - "stream-combiner2": "~1.1.1", - "through2": "~2.0.0", - "traverse": "0.6.8" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/sha2": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/git-log-parser/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/git-log-parser/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/strings": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/strings/-/strings-5.8.0.tgz", + "integrity": "sha512-qWEAk0MAvl0LszjdfnZ2uC8xbR2wdv4cDabyHiBh3Cldq/T8dPH3V4BbBsAYJUeonwD+8afVXld274Ls+Y1xXg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/git-log-parser/node_modules/split2": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-1.0.0.tgz", - "integrity": "sha512-NKywug4u4pX/AZBB1FCPzZ6/7O+Xhz1qMVbzTvvKvikjO99oPN87SkK08mEY9P63/5lWjK+wgOOgApnTg5r6qg==", - "license": "ISC", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/transactions": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/transactions/-/transactions-5.8.0.tgz", + "integrity": "sha512-UglxSDjByHG0TuU17bDfCemZ3AnKO2vYrL5/2n2oXvKzvb7Cz+W9gOWXKARjp2URVwcWlQlPOEQyAviKwT4AHg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "license": "MIT", "dependencies": { - "through2": "~2.0.0" + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/rlp": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0" } }, - "node_modules/git-log-parser/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/units": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/units/-/units-5.8.0.tgz", + "integrity": "sha512-lxq0CAnc5kMGIiWW4Mr041VT8IhNM+Pn5T3haO74XZWFulk7wH1Gv64HqE96hT4a7iiNMdOCFEBgaxWuk8ETKQ==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "safe-buffer": "~5.1.0" + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/constants": "^5.8.0", + "@ethersproject/logger": "^5.8.0" } }, - "node_modules/git-log-parser/node_modules/through2": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", - "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/wallet": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wallet/-/wallet-5.8.0.tgz", + "integrity": "sha512-G+jnzmgg6UxurVKRKvw27h0kvG75YKXZKdlLYmAHeF32TGUzHkOFd7Zn6QHOTYRFWnfjtSSFjBowKo7vfrXzPA==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "node_modules/git-up": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", - "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", - "dev": true, + "@ethersproject/abstract-provider": "^5.8.0", + "@ethersproject/abstract-signer": "^5.8.0", + "@ethersproject/address": "^5.8.0", + "@ethersproject/bignumber": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/hdnode": "^5.8.0", + "@ethersproject/json-wallets": "^5.8.0", + "@ethersproject/keccak256": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/random": "^5.8.0", + "@ethersproject/signing-key": "^5.8.0", + "@ethersproject/transactions": "^5.8.0", + "@ethersproject/wordlists": "^5.8.0" + } + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/web": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/web/-/web-5.8.0.tgz", + "integrity": "sha512-j7+Ksi/9KfGviws6Qtf9Q7KCqRhpwrYKQPs+JBA/rKVFF/yaWLHJEH3zfVP2plVu+eys0d2DlFmhoQJayFewcw==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "is-ssh": "^1.4.0", - "parse-url": "^8.1.0" + "@ethersproject/base64": "^5.8.0", + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/git-url-parse": { - "version": "14.0.0", - "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", - "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", - "dev": true, + "node_modules/@oceanprotocol/ddo-js/node_modules/@ethersproject/wordlists": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/@ethersproject/wordlists/-/wordlists-5.8.0.tgz", + "integrity": "sha512-2df9bbXicZws2Sb5S6ET493uJ0Z84Fjr3pC4tu/qlnZERibZCeUVuqdtt+7Tv9xxhUxHoIekIA7avrKUWHrezg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "git-up": "^7.0.0" + "@ethersproject/bytes": "^5.8.0", + "@ethersproject/hash": "^5.8.0", + "@ethersproject/logger": "^5.8.0", + "@ethersproject/properties": "^5.8.0", + "@ethersproject/strings": "^5.8.0" } }, - "node_modules/github-from-package": { - "version": "0.0.0", - "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", - "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "node_modules/@oceanprotocol/ddo-js/node_modules/aes-js": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-3.0.0.tgz", + "integrity": "sha512-H7wUZRn8WpTq9jocdxQ2c8x2sKo9ZVmzfRE13GiNJXfp7NcKYEdvl3vspKjXox6RIG2VtaRe4JFvxG4rqp2Zuw==", "license": "MIT" }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "license": "ISC" + "node_modules/@oceanprotocol/ddo-js/node_modules/assertion-error": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", + "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", + "license": "MIT", + "engines": { + "node": ">=12" + } }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", + "node_modules/@oceanprotocol/ddo-js/node_modules/bn.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.2.tgz", + "integrity": "sha512-v2YAxEmKaBLahNwE1mjp4WON6huMNeuDvagFZW+ASCuA/ku0bXR9hSMw0XpiqMoA3+rmnyck/tPRSFQkoC9Cuw==", + "license": "MIT" + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/chai": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-5.2.0.tgz", + "integrity": "sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "assertion-error": "^2.0.1", + "check-error": "^2.1.1", + "deep-eql": "^5.0.1", + "loupe": "^3.1.0", + "pathval": "^2.0.0" }, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, + "node_modules/@oceanprotocol/ddo-js/node_modules/check-error": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.1.tgz", + "integrity": "sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==", + "license": "MIT", "engines": { - "node": ">=10.13.0" + "node": ">= 16" } }, - "node_modules/glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/@oceanprotocol/ddo-js/node_modules/deep-eql": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", + "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/global-agent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/global-agent/-/global-agent-3.0.0.tgz", - "integrity": "sha512-PT6XReJ+D07JvGoxQMkT6qji/jVNfX/h364XHZOWeRzy64sSFr+xJ5OX7LI3b4MPQzdL4H8Y8M0xzPpsVMwA8Q==", - "license": "BSD-3-Clause", - "optional": true, + "node_modules/@oceanprotocol/ddo-js/node_modules/elliptic": { + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.6.1.tgz", + "integrity": "sha512-RaddvvMatK2LJHqFJ+YA4WysVN5Ita9E35botqIYspQ4TkRAlCicdzKOjlyv/1Za5RyTNn7di//eEV0uTAfe3g==", + "license": "MIT", "dependencies": { - "boolean": "^3.0.1", - "es6-error": "^4.1.1", - "matcher": "^3.0.0", - "roarr": "^2.15.3", - "semver": "^7.3.2", - "serialize-error": "^7.0.1" - }, - "engines": { - "node": ">=10.0" + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/global-directory": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", - "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", - "dev": true, + "node_modules/@oceanprotocol/ddo-js/node_modules/elliptic/node_modules/bn.js": { + "version": "4.12.2", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.2.tgz", + "integrity": "sha512-n4DSx829VRTRByMRGdjQ9iqsN0Bh4OolPsFnaZBLcbi8iXcB+kJ9s7EnRt4wILZNV3kPLHkRVfOc/HvhC3ovDw==", + "license": "MIT" + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/ethers": { + "version": "5.8.0", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.8.0.tgz", + "integrity": "sha512-DUq+7fHrCg1aPDFCHx6UIPb3nmt2XMpM7Y/g2gLhsl3lIBqeAfOJIl1qEvRf2uq3BiKxmh6Fh5pfp2ieyek7Kg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", "dependencies": { - "ini": "4.1.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@ethersproject/abi": "5.8.0", + "@ethersproject/abstract-provider": "5.8.0", + "@ethersproject/abstract-signer": "5.8.0", + "@ethersproject/address": "5.8.0", + "@ethersproject/base64": "5.8.0", + "@ethersproject/basex": "5.8.0", + "@ethersproject/bignumber": "5.8.0", + "@ethersproject/bytes": "5.8.0", + "@ethersproject/constants": "5.8.0", + "@ethersproject/contracts": "5.8.0", + "@ethersproject/hash": "5.8.0", + "@ethersproject/hdnode": "5.8.0", + "@ethersproject/json-wallets": "5.8.0", + "@ethersproject/keccak256": "5.8.0", + "@ethersproject/logger": "5.8.0", + "@ethersproject/networks": "5.8.0", + "@ethersproject/pbkdf2": "5.8.0", + "@ethersproject/properties": "5.8.0", + "@ethersproject/providers": "5.8.0", + "@ethersproject/random": "5.8.0", + "@ethersproject/rlp": "5.8.0", + "@ethersproject/sha2": "5.8.0", + "@ethersproject/signing-key": "5.8.0", + "@ethersproject/solidity": "5.8.0", + "@ethersproject/strings": "5.8.0", + "@ethersproject/transactions": "5.8.0", + "@ethersproject/units": "5.8.0", + "@ethersproject/wallet": "5.8.0", + "@ethersproject/web": "5.8.0", + "@ethersproject/wordlists": "5.8.0" } }, - "node_modules/global-directory/node_modules/ini": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", - "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", - "dev": true, - "license": "ISC", + "node_modules/@oceanprotocol/ddo-js/node_modules/loupe": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.1.3.tgz", + "integrity": "sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==", + "license": "MIT" + }, + "node_modules/@oceanprotocol/ddo-js/node_modules/pathval": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.0.tgz", + "integrity": "sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==", + "license": "MIT", "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">= 14.16" } }, - "node_modules/global-dirs": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/global-dirs/-/global-dirs-3.0.1.tgz", - "integrity": "sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==", - "license": "MIT", - "dependencies": { - "ini": "2.0.0" - }, + "node_modules/@opentelemetry/api": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/@opentelemetry/api/-/api-1.9.0.tgz", + "integrity": "sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==", + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8.0.0" } }, - "node_modules/global-dirs/node_modules/ini": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-2.0.0.tgz", - "integrity": "sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==", - "license": "ISC", + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, "engines": { - "node": ">=10" + "node": ">=14" } }, - "node_modules/globals": { - "version": "13.24.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", - "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, "license": "MIT", - "dependencies": { - "type-fest": "^0.20.2" - }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/unts" } }, - "node_modules/globalthis": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", - "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, "license": "MIT", - "dependencies": { - "define-properties": "^1.2.1", - "gopd": "^1.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12.22.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, "license": "MIT", "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "graceful-fs": "4.2.10" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12.22.0" } }, - "node_modules/gonzales-pe": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/gonzales-pe/-/gonzales-pe-4.3.0.tgz", - "integrity": "sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ==", + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true, + "license": "ISC" + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dev": true, "license": "MIT", "dependencies": { - "minimist": "^1.2.5" - }, - "bin": { - "gonzales": "bin/gonzales.js" + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" }, "engines": { - "node": ">=0.6.0" + "node": ">=12" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "license": "MIT", + "node_modules/@protobufjs/aspromise": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz", + "integrity": "sha512-j+gKExEuLmKwvz3OgROXtrJ2UG2x8Ch2YZUxahh+s1F2HZ+wAceUNLkvy6zKCPVRkU++ZWQrdxsUeQXmcg4uoQ==" + }, + "node_modules/@protobufjs/base64": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/base64/-/base64-1.1.2.tgz", + "integrity": "sha512-AZkcAA5vnN/v4PDqKyMR5lx7hZttPDgClv83E//FMNhR2TMcLUhfRUBHCmSl0oi9zMgDDqRUJkSxO3wm85+XLg==" + }, + "node_modules/@protobufjs/codegen": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@protobufjs/codegen/-/codegen-2.0.4.tgz", + "integrity": "sha512-YyFaikqM5sH0ziFZCN3xDC7zeGaB/d0IUb9CATugHWbd1FRFwWwt4ld4OYMPWu5a3Xe01mGAULCdqhMlPl29Jg==" + }, + "node_modules/@protobufjs/eventemitter": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/eventemitter/-/eventemitter-1.1.0.tgz", + "integrity": "sha512-j9ednRT81vYJ9OfVuXG6ERSTdEL1xVsNgqpkxMsbIabzSo3goCjDIveeGv5d03om39ML71RdmrGNjG5SReBP/Q==" + }, + "node_modules/@protobufjs/fetch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/fetch/-/fetch-1.1.0.tgz", + "integrity": "sha512-lljVXpqXebpsijW71PZaCYeIcE5on1w5DlQy5WH6GLbFryLUrBD4932W/E2BSpfRJWseIL4v/KPgBFxDOIdKpQ==", "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@protobufjs/aspromise": "^1.1.1", + "@protobufjs/inquire": "^1.1.0" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "node_modules/@protobufjs/float": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@protobufjs/float/-/float-1.0.2.tgz", + "integrity": "sha512-Ddb+kVXlXst9d+R9PfTIxh1EdNkgoRe5tOX6t01f1lYWOvJnSPDBlG241QLzcyPdoNTsblLUdujGSE4RzrTZGQ==" + }, + "node_modules/@protobufjs/inquire": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/inquire/-/inquire-1.1.0.tgz", + "integrity": "sha512-kdSefcPdruJiFMVSbn801t4vFK7KB/5gd2fYvrxhuJYg8ILrmn9SKSX2tZdV6V+ksulWqS7aXjBcRXl3wHoD9Q==" + }, + "node_modules/@protobufjs/path": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@protobufjs/path/-/path-1.1.2.tgz", + "integrity": "sha512-6JOcJ5Tm08dOHAbdR3GrvP+yUUfkjG5ePsHYczMFLq3ZmMkAD98cDgcT2iA1lJ9NVwFd4tH/iSSoe44YWkltEA==" + }, + "node_modules/@protobufjs/pool": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/pool/-/pool-1.1.0.tgz", + "integrity": "sha512-0kELaGSIDBKvcgS4zkjz1PeddatrjYcmMWOlAuAPwAeccUrPHdUqo/J6LiymHHEiJT5NrF1UVwxY14f+fy4WQw==" + }, + "node_modules/@protobufjs/utf8": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@protobufjs/utf8/-/utf8-1.1.0.tgz", + "integrity": "sha512-Vvn3zZrhQZkkBE8LSuW3em98c0FwgO4nxzv6OdSxPKJIEKY2bGbHn+mhGIPerzI4twdxaP8/0+06HBpwf345Lw==" + }, + "node_modules/@rdfjs/data-model": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/data-model/-/data-model-2.1.0.tgz", + "integrity": "sha512-pnjwSqDCXxxJQPm3TyDaqoWynYYQBl1pZC7rIPhdck7RbcEVF8hIBg5vXXosUbNcW3qwyAEBtYGojoWRnxBPew==", "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "bin": { + "rdfjs-data-model-test": "bin/test.js" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "license": "ISC" + "node_modules/@rdfjs/dataset": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/dataset/-/dataset-2.0.2.tgz", + "integrity": "sha512-6YJx+5n5Uxzq9dd9I0GGcIo6eopZOPfcsAfxSGX5d+YBzDgVa1cbtEBFnaPyPKiQsOm4+Cr3nwypjpg02YKPlA==", + "license": "MIT", + "bin": { + "rdfjs-dataset-test": "bin/test.js" + } }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/@rdfjs/environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@rdfjs/environment/-/environment-1.0.0.tgz", + "integrity": "sha512-+S5YjSvfoQR5r7YQCRCCVHvIEyrWia7FJv2gqM3s5EDfotoAQmFeBagApa9c/eQFi5EiNhmBECE5nB8LIxTaHg==", "license": "MIT" }, - "node_modules/grapoi": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/grapoi/-/grapoi-1.1.2.tgz", - "integrity": "sha512-FknMk4EPaVroumWDURlAScwr+cYE/e9dVmnTkuhhoghq9PWx2ap+A4+iS37dGoT6mhJbV0O+xgex6lI4c64plQ==", + "node_modules/@rdfjs/fetch-lite": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@rdfjs/fetch-lite/-/fetch-lite-3.3.0.tgz", + "integrity": "sha512-K3hZC4+Ch0UmYA1w0Xv/8cCVPD5ulKwRa6A/iTn3BFbZpVAb5KoBfOfnOhe6VJEa50raUvTHR1gp1YdvUnYt9g==", "license": "MIT", "dependencies": { - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-set": "^2.0.0" + "is-stream": "^4.0.1", + "nodeify-fetch": "^3.1.0", + "readable-stream": "^4.5.2" } }, - "node_modules/growl": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/growl/-/growl-1.10.5.tgz", - "integrity": "sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==", + "node_modules/@rdfjs/formats": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/formats/-/formats-4.0.1.tgz", + "integrity": "sha512-Rg53vP+x1bnGAqJNKgEzJEUPDhj+tCpzb6wdmfLoVFq4XoZ589+cg2ScFDUMMyAVsgKXvSWjDhQ9f9ab254ZxA==", "license": "MIT", - "engines": { - "node": ">=4.x" + "dependencies": { + "@rdfjs/parser-jsonld": "^2.1.0", + "@rdfjs/parser-n3": "^2.0.1", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-jsonld-ext": "^4.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/serializer-turtle": "^1.1.1", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^3.0.1" } }, - "node_modules/handlebars": { - "version": "4.7.8", - "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", - "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "node_modules/@rdfjs/formats-common": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@rdfjs/formats-common/-/formats-common-3.1.0.tgz", + "integrity": "sha512-wgz5za/Uls+pttLdLl/aH0m0LQNgjqpWwk9exNs2Smmb2CosynRo4S0+CxeNOVZh4zeUm7oAlr1CK/tyg4Ff6g==", "license": "MIT", "dependencies": { - "minimist": "^1.2.5", - "neo-async": "^2.6.2", - "source-map": "^0.6.1", - "wordwrap": "^1.0.0" - }, - "bin": { - "handlebars": "bin/handlebars" - }, - "engines": { - "node": ">=0.4.7" - }, - "optionalDependencies": { - "uglify-js": "^3.1.4" + "@rdfjs/parser-jsonld": "^2.0.0", + "@rdfjs/parser-n3": "^2.0.0", + "@rdfjs/serializer-jsonld": "^2.0.0", + "@rdfjs/serializer-ntriples": "^2.0.0", + "@rdfjs/sink-map": "^2.0.0", + "rdfxml-streaming-parser": "^2.2.0" } }, - "node_modules/hard-rejection": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", - "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "node_modules/@rdfjs/formats/node_modules/rdf-data-factory": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-2.0.2.tgz", + "integrity": "sha512-WzPoYHwQYWvIP9k+7IBLY1b4nIDitzAK4mA37WumAF/Cjvu/KOtYJH9IPZnUTWNSd5K2+pq4vrcE9WZC4sRHhg==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@rdfjs/types": "^2.0.0" + }, + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, - "node_modules/has-ansi": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/has-ansi/-/has-ansi-2.0.0.tgz", - "integrity": "sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==", + "node_modules/@rdfjs/formats/node_modules/rdfxml-streaming-parser": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-3.0.1.tgz", + "integrity": "sha512-lJtJ85xEJHc5BXohOPtxjYMEbGK3uiRxROwJLVNGanjuKLT9BWJluoNr3RzS9vQNmjkQwhhYmrbIftw1WUOj7Q==", "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^4.0.18", + "buffer": "^6.0.3", + "rdf-data-factory": "^2.0.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" }, - "engines": { - "node": ">=0.10.0" + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, - "node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/@rdfjs/namespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/namespace/-/namespace-2.0.1.tgz", + "integrity": "sha512-U85NWVGnL3gWvOZ4eXwUcv3/bom7PAcutSBQqmVWvOaslPy+kDzAJCH1WYBLpdQd4yMmJ+bpJcDl9rcHtXeixg==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@rdfjs/data-model": "^2.0.1" } }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "node_modules/@rdfjs/parser-jsonld": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-jsonld/-/parser-jsonld-2.1.3.tgz", + "integrity": "sha512-VYnPEwVdqFAPTo9F8XIN4UpGPdNzhBaCFv5b5OT74pA7H8so4aTno3Yd6M5I9bhTrUoCQjpjgr+ugYlvWxdBIA==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "jsonld-streaming-parser": "^5.0.0", + "readable-stream": "^4.5.2" } }, - "node_modules/has-dynamic-import": { + "node_modules/@rdfjs/parser-n3": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/has-dynamic-import/-/has-dynamic-import-2.1.0.tgz", - "integrity": "sha512-su0anMkNEnJKZ/rB99jn3y6lV/J8Ro96hBJ28YAeVzj5rWxH+YL/AdCyiYYA1HDLV9YhmvqpWSJJj2KLo1MX6g==", + "resolved": "https://registry.npmjs.org/@rdfjs/parser-n3/-/parser-n3-2.1.0.tgz", + "integrity": "sha512-/DiosB+0vPzgAs1WXcCB8MbA5hqq0fIh9VhMg7fBmoJ/I8Xl6Op/AOxVu9x1XZCHSNwO/VsJT/HYKEctZVRKSQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.5", - "get-intrinsic": "^1.2.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/data-model": "^2.0.2", + "@rdfjs/sink": "^2.0.1", + "duplex-to": "^2.0.0", + "n3": "^1.17.2", + "readable-stream": "^4.5.2" } }, - "node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/@rdfjs/prefix-map": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/prefix-map/-/prefix-map-0.1.2.tgz", + "integrity": "sha512-qapFYVPYyYepg0sFy7T512667iZsN9a3RNcyNBTBV+O8wrU3v/URQZOipCTNrEm1BXzZ7KCK1Yi8HrE1y+uRuQ==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "readable-stream": "^4.3.0" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", - "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "node_modules/@rdfjs/serializer-jsonld": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld/-/serializer-jsonld-2.0.1.tgz", + "integrity": "sha512-O8WzdY7THsse/nMsrMLd2e51ADHO2SIUrkiZ9Va/8W3lXeeeiwDRPMppWy/i9yL4q6EM8iMW1riV7E0mK3fsBQ==", "license": "MIT", "dependencies": { - "es-define-property": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/sink": "^2.0.1", + "readable-stream": "^4.5.2" } }, - "node_modules/has-proto": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", - "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "node_modules/@rdfjs/serializer-jsonld-ext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-jsonld-ext/-/serializer-jsonld-ext-4.0.1.tgz", + "integrity": "sha512-eGNAdhsV8wkmCadyIN+PBfsN+BIiqplAd5VMc++wf5McsVi/vPNrWcBINdrNnlegml8nLUy0rlKztCQ/4pxW8w==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "jsonld": "^8.3.3", + "readable-stream": "^4.7.0", + "stream-chunks": "^1.0.0" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/@rdfjs/serializer-ntriples": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-ntriples/-/serializer-ntriples-2.0.1.tgz", + "integrity": "sha512-G1ZI0qaN/MUHxeCwr59JscO2LdyIb6MNQdXOv7NFBZuodyHsxxhJRFmMVn+3SEXeNJbVeEEbWBrLglCUgJ8XjQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@rdfjs/sink": "^2.0.1", + "@rdfjs/to-ntriples": "^3.0.1", + "duplex-to": "^2.0.0", + "readable-stream": "^4.5.2" } }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "node_modules/@rdfjs/serializer-turtle": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@rdfjs/serializer-turtle/-/serializer-turtle-1.1.5.tgz", + "integrity": "sha512-uvIFUOuMuk8JrJnng/tWKIQ+8XI6YLEms75YdvZ49LtIyyfbDqKz76EybgnD/zZYfMhVVkguKtheBC9h08g1PQ==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/prefix-map": "^0.1.1", + "@rdfjs/sink": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/to-ntriples": "^3.0.1", + "@rdfjs/tree": "^0.2.1", + "readable-stream": "^4.3.0", + "stream-chunks": "^1.0.0" } }, - "node_modules/has-unicode": { + "node_modules/@rdfjs/sink": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", - "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", - "license": "ISC", - "optional": true + "resolved": "https://registry.npmjs.org/@rdfjs/sink/-/sink-2.0.1.tgz", + "integrity": "sha512-smzIFGF6EH1sLAJR9F3p2wMNrN44JjPeYAoITTJLqtuNC319K7IXaJ+qNLBGTtapZ/jvpx2Tks0TjcH9KrAvEA==", + "license": "MIT" }, - "node_modules/has-yarn": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-yarn/-/has-yarn-3.0.0.tgz", - "integrity": "sha512-IrsVwUHhEULx3R8f/aA8AHuEzAorplsab/v8HBzEiIukwq5i/EC+xmOW+HfP1OaDP+2JkgT1yILHN2O3UFIbcA==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@rdfjs/sink-map": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/sink-map/-/sink-map-2.0.1.tgz", + "integrity": "sha512-BwCTTsMN/tfQl6QzD2oHn9A08e4af+hlzAz/d5XXrlOkYMEDUAqFuh2Odj9EbayhAEeN4wA743Mj2yC0/s69rg==", + "license": "MIT" }, - "node_modules/hash-base": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", - "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "node_modules/@rdfjs/term-map": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@rdfjs/term-map/-/term-map-2.0.2.tgz", + "integrity": "sha512-EJ2FmmdEUsSR/tU1nrizRLWzH24YzhuvesrbUWxC3Fs0ilYNdtTbg0RaFJDUnJF3HkbNBQe8Zrt/uvU/hcKnHg==", "license": "MIT", "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" + "@rdfjs/to-ntriples": "^3.0.1" } }, - "node_modules/hash-base/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/@rdfjs/term-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@rdfjs/term-set/-/term-set-2.0.3.tgz", + "integrity": "sha512-DyXrKWEx+mtAFUZVU7bc3Va6/KZ8PsIp0RVdyWT9jfDgI/HCvNisZaBtAcm+SYTC45o+7WLkbudkk1bfaKVB0A==", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "@rdfjs/to-ntriples": "^3.0.1" } }, - "node_modules/hash-base/node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/@rdfjs/to-ntriples": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-3.0.1.tgz", + "integrity": "sha512-gjoPAvh4j7AbGMjcDn/8R4cW+d/FPtbfbMM0uQXkyfBFtNUW2iVgrqsgJ65roLc54Y9A2TTFaeeTGSvY9a0HCQ==", "license": "MIT" }, - "node_modules/hash.js": { - "version": "1.1.7", - "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", - "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "node_modules/@rdfjs/traverser": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@rdfjs/traverser/-/traverser-0.1.4.tgz", + "integrity": "sha512-53QYlxiQIxH8k4jutjet1EjdZfyKCDSsfqnj2YejAJ1X8mLDMSOsneMM5savBwBR0ROfAhKVtZVb+pego+JLiw==", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" + "@rdfjs/to-ntriples": "^3.0.1" } }, - "node_modules/hasha": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", - "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "node_modules/@rdfjs/tree": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@rdfjs/tree/-/tree-0.2.1.tgz", + "integrity": "sha512-J70CQ7R8Ivfs1FFUxtFN7ADb5wTMgbhn0O558NXSXQHItmSavT6cXmQlIokbmboU+grhu56iR/8Bl9do8LCq+w==", "license": "MIT", "dependencies": { - "is-stream": "^2.0.0", - "type-fest": "^0.8.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1" } }, - "node_modules/hasha/node_modules/is-stream": { + "node_modules/@rdfjs/types": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-2.0.1.tgz", + "integrity": "sha512-uyAzpugX7KekAXAHq26m3JlUIZJOC0uSBhpnefGV5i15bevDyyejoB7I+9MKeUrzXD8OOUI3+4FeV1wwQr5ihA==", "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*" } }, - "node_modules/hasha/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/@rubensworks/saxes": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/@rubensworks/saxes/-/saxes-6.0.1.tgz", + "integrity": "sha512-UW4OTIsOtJ5KSXo2Tchi4lhZqu+tlHrOAs4nNti7CrtB53kAZl3/hyrTi6HkMihxdbDM6m2Zc3swc/ZewEe1xw==", + "license": "ISC", + "dependencies": { + "xmlchars": "^2.2.0" + }, "engines": { - "node": ">=8" + "node": ">=v12.22.12" } }, - "node_modules/hashlru": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", - "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==", + "node_modules/@sec-ant/readable-stream": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", + "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", "license": "MIT" }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "node_modules/@sindresorhus/fnv1a": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/fnv1a/-/fnv1a-3.1.0.tgz", + "integrity": "sha512-KV321z5m/0nuAg83W1dPLy85HpHDk7Sdi4fJbwvacWsEhAh+rZUW4ZfGcXmUIvjZg4ss2bcwNlRhJ7GBEUG08w==", "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, "license": "MIT", - "bin": { - "he": "bin/he" + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/hmac-drbg": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", - "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", - "license": "MIT", + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" + "type-detect": "4.0.8" } }, - "node_modules/hook-std": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hook-std/-/hook-std-2.0.0.tgz", - "integrity": "sha512-zZ6T5WcuBMIUVh49iPQS9t977t7C0l7OtHrpeMb5uk48JdflRX0NSFvCekfYNmGQETnLq9W/isMyHl69kxGi8g==", - "license": "MIT", + "node_modules/@sinonjs/commons/node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/hosted-git-info": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", - "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", - "license": "ISC", + "node_modules/@sinonjs/fake-timers": { + "version": "13.0.5", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-13.0.5.tgz", + "integrity": "sha512-36/hTbH2uaWuGVERyC6da9YwGWnzUZXuPro/F2LfsdOsLnCojz/iSH8MxUt/FD2S5XBSVPhmArFUXcpCQ2Hkiw==", + "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" + "@sinonjs/commons": "^3.0.1" } }, - "node_modules/hpagent": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", - "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", - "license": "MIT", - "engines": { - "node": ">=14" + "node_modules/@sinonjs/samsam": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@sinonjs/samsam/-/samsam-8.0.2.tgz", + "integrity": "sha512-v46t/fwnhejRSFTGqbpn9u+LQ9xJDse10gNnPgAcxgdoCDMXj/G2asWAC/8Qs+BAZDicX+MNZouXT1A7c83kVw==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.1", + "lodash.get": "^4.4.2", + "type-detect": "^4.1.0" } }, - "node_modules/html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "license": "MIT" - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "license": "BSD-2-Clause" + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.3", + "resolved": "https://registry.npmjs.org/@sinonjs/text-encoding/-/text-encoding-0.7.3.tgz", + "integrity": "sha512-DE427ROAphMQzU4ENbliGYrBSYPXF+TtLg9S8vzeA+OF4ZKzoDdzfL8sxuMUGS/lgRhM6j1URSk9ghf7Xo1tyA==", + "dev": true }, - "node_modules/http-errors": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", - "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", - "license": "MIT", + "node_modules/@smithy/abort-controller": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/@smithy/abort-controller/-/abort-controller-3.1.1.tgz", + "integrity": "sha512-MBJBiidoe+0cTFhyxT8g+9g7CeVccLM0IOKKUMCNQ1CNMJ/eIfoo0RTfVrXOONEI1UCN1W+zkiHSbzUNE9dZtQ==", + "license": "Apache-2.0", "dependencies": { - "depd": "2.0.0", - "inherits": "2.0.4", - "setprototypeof": "1.2.0", - "statuses": "2.0.1", - "toidentifier": "1.0.1" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.8" + "node": ">=16.0.0" } }, - "node_modules/http-link-header": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", - "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", - "license": "MIT", - "engines": { - "node": ">=6.0.0" + "node_modules/@smithy/chunked-blob-reader": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-3.0.0.tgz", + "integrity": "sha512-sbnURCwjF0gSToGlsBiAmd1lRCmSn72nu9axfJu5lIx6RUEgHu6GwTMbqCdhQSi0Pumcm5vFxsi9XWXb2mTaoA==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" } }, - "node_modules/http-proxy-agent": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-5.0.0.tgz", - "integrity": "sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==", - "license": "MIT", + "node_modules/@smithy/chunked-blob-reader-native": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-3.0.0.tgz", + "integrity": "sha512-VDkpCYW+peSuM4zJip5WDfqvg2Mo/e8yxOv3VF1m11y7B8KKMKVFtmZWDe36Fvk8rGuWrPZHHXZ7rR7uM5yWyg==", + "license": "Apache-2.0", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "license": "MIT", + "node_modules/@smithy/config-resolver": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-3.0.5.tgz", + "integrity": "sha512-SkW5LxfkSI1bUC74OtfBbdz+grQXYiPYolyu8VfpLIjEoN/sHVBlLeGXMQ1vX4ejkgfv6sxVbQJ32yF2cl1veA==", + "license": "Apache-2.0", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-config-provider": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10.19.0" + "node": ">=16.0.0" } }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", - "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", - "license": "MIT", + "node_modules/@smithy/core": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@smithy/core/-/core-2.3.2.tgz", + "integrity": "sha512-in5wwt6chDBcUv1Lw1+QzZxN9fBffi+qOixfb65yK4sDuKG7zAUO9HAFqmVzsZM3N+3tTyvZjtnDXePpvp007Q==", + "license": "Apache-2.0", "dependencies": { - "agent-base": "6", - "debug": "4" + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-retry": "^3.0.14", + "@smithy/middleware-serde": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 6" + "node": ">=16.0.0" } }, - "node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "node_modules/@smithy/credential-provider-imds": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-3.2.0.tgz", + "integrity": "sha512-0SCIzgd8LYZ9EJxUjLXBmEKSZR/P/w6l7Rz/pab9culE/RWuqelAKGJvn5qUOl8BgX8Yj5HWM50A5hiB/RzsgA==", "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=12.20.0" + "node": ">=16.0.0" } }, - "node_modules/humanize-ms": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", - "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", - "license": "MIT", - "optional": true, + "node_modules/@smithy/eventstream-codec": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-3.1.2.tgz", + "integrity": "sha512-0mBcu49JWt4MXhrhRAlxASNy0IjDRFU+aWNDRal9OtUJvJNiwDuyKMUONSOjLjSCeGwZaE0wOErdqULer8r7yw==", + "license": "Apache-2.0", "dependencies": { - "ms": "^2.0.0" + "@aws-crypto/crc32": "5.2.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/hyperdiff": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/hyperdiff/-/hyperdiff-2.0.18.tgz", - "integrity": "sha512-heYv0VkEDZct8c2naho35oJku0IZRV8z2kEcrYyOAgmfI97KysvRbN4cazCJycKL72E7JEpydwiNPRZwuEOfIg==", - "license": "MIT", + "node_modules/@smithy/eventstream-serde-browser": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-3.0.6.tgz", + "integrity": "sha512-2hM54UWQUOrki4BtsUI1WzmD13/SeaqT/AB3EUJKbcver/WgKNaiJ5y5F5XXuVe6UekffVzuUDrBZVAA3AWRpQ==", + "license": "Apache-2.0", "dependencies": { - "debug-logfmt": "~1.2.0", - "lodash": "~4.17.21" + "@smithy/eventstream-serde-universal": "^3.0.5", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 8" + "node": ">=16.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "license": "MIT", + "node_modules/@smithy/eventstream-serde-config-resolver": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-3.0.3.tgz", + "integrity": "sha512-NVTYjOuYpGfrN/VbRQgn31x73KDLfCXCsFdad8DiIc3IcdxL+dYA9zEQPyOP7Fy2QL8CPy2WE4WCUD+ZsLNfaQ==", + "license": "Apache-2.0", "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ieee754": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", - "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", - "license": "BSD-3-Clause" - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "license": "MIT", - "engines": { - "node": ">= 4" + "node": ">=16.0.0" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "license": "MIT", + "node_modules/@smithy/eventstream-serde-node": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-3.0.5.tgz", + "integrity": "sha512-+upXvnHNyZP095s11jF5dhGw/Ihzqwl5G+/KtMnoQOpdfC3B5HYCcDVG9EmgkhJMXJlM64PyN5gjJl0uXFQehQ==", + "license": "Apache-2.0", "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@smithy/eventstream-serde-universal": "^3.0.5", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/import-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-from/-/import-from-4.0.0.tgz", - "integrity": "sha512-P9J71vT5nLlDeV8FHs5nNxaLbrpfAV5cF5srvbZfpwpcJoM/xZR3hiv+q+SAnuSmuGbXMWud063iIMx/V/EWZQ==", - "license": "MIT", - "engines": { - "node": ">=12.2" + "node_modules/@smithy/eventstream-serde-universal": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-3.0.5.tgz", + "integrity": "sha512-5u/nXbyoh1s4QxrvNre9V6vfyoLWuiVvvd5TlZjGThIikc3G+uNiG9uOTCWweSRjv1asdDIWK7nOmN7le4RYHQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/eventstream-codec": "^3.1.2", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/import-lazy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", - "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", - "license": "MIT", - "engines": { - "node": ">=0.8.19" + "node_modules/@smithy/fetch-http-handler": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-3.2.4.tgz", + "integrity": "sha512-kBprh5Gs5h7ug4nBWZi1FZthdqSM+T7zMmsZxx0IBvWUn7dK3diz2SHn7Bs4dQGFDk8plDv375gzenDoNwrXjg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/@smithy/hash-blob-browser": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-3.1.2.tgz", + "integrity": "sha512-hAbfqN2UbISltakCC2TP0kx4LqXBttEv2MqSPE98gVuDFMf05lU+TpC41QtqGP3Ff5A3GwZMPfKnEy0VmEUpmg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/chunked-blob-reader": "^3.0.0", + "@smithy/chunked-blob-reader-native": "^3.0.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, - "node_modules/indexes-of": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/indexes-of/-/indexes-of-1.0.1.tgz", - "integrity": "sha512-bup+4tap3Hympa+JBJUG7XuOsdNQ6fxt0MHyXMKuLBKn0OqsTfvUxkUrroEX1+B2VsSHvCjiIcZVxRtYa4nllA==", - "license": "MIT" - }, - "node_modules/infer-owner": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", - "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", - "license": "ISC", - "optional": true - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "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.", - "license": "ISC", + "node_modules/@smithy/hash-node": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-3.0.3.tgz", + "integrity": "sha512-2ctBXpPMG+B3BtWSGNnKELJ7SH9e4TNefJS0cd2eSkOOROeBnnVBnAy9LtJ8tY4vUEoe55N4CNPxzbWvR39iBw==", + "license": "Apache-2.0", "dependencies": { - "once": "^1.3.0", - "wrappy": "1" + "@smithy/types": "^3.3.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", - "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", - "license": "ISC" - }, - "node_modules/inquirer": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.2.tgz", - "integrity": "sha512-+ynEbhWKhyomnaX0n2aLIMSkgSlGB5RrWbNXnEqj6mdaIydu6y40MdBjL38SAB0JcdmOaIaMua1azdjLEr3sdw==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/hash-stream-node": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-3.1.2.tgz", + "integrity": "sha512-PBgDMeEdDzi6JxKwbfBtwQG9eT9cVwsf0dZzLXoJF4sHKHs5HEo/3lJWpn6jibfJwT34I1EBXpBnZE8AxAft6g==", + "license": "Apache-2.0", "dependencies": { - "@inquirer/figures": "^1.0.3", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "external-editor": "^3.1.0", - "mute-stream": "1.0.0", - "ora": "^5.4.1", - "run-async": "^3.0.0", - "rxjs": "^7.8.1", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.1" + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=18" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/invalid-dependency": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-3.0.3.tgz", + "integrity": "sha512-ID1eL/zpDULmHJbflb864k72/SNOZCADRc9i7Exq3RUNJw6raWUSlFEQ+3PX3EYs++bTxZB2dE9mEHTQLv61tw==", + "license": "Apache-2.0", "dependencies": { - "type-fest": "^0.21.3" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + } + }, + "node_modules/@smithy/is-array-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-3.0.0.tgz", + "integrity": "sha512-+Fsu6Q6C4RSJiy81Y8eApjEB5gVtM+oFKTffg+jSuwtvomJJrhUJBu2zS8wjXSgH/g1MKEWrzyChTBe6clb5FQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/md5-js": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-3.0.3.tgz", + "integrity": "sha512-O/SAkGVwpWmelpj/8yDtsaVe6sINHLB1q8YE/+ZQbDxIw3SRLbTZuRaI10K12sVoENdnHqzPp5i3/H+BcZ3m3Q==", + "license": "Apache-2.0", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "@smithy/types": "^3.3.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" } }, - "node_modules/inquirer/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", + "node_modules/@smithy/middleware-content-length": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-3.0.5.tgz", + "integrity": "sha512-ILEzC2eyxx6ncej3zZSwMpB5RJ0zuqH7eMptxC4KN3f+v9bqT8ohssKbhNR78k/2tWW+KS5Spw+tbPF4Ejyqvw==", + "license": "Apache-2.0", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/cli-cursor": { + "node_modules/@smithy/middleware-endpoint": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", - "dev": true, - "license": "MIT", + "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-3.1.0.tgz", + "integrity": "sha512-5y5aiKCEwg9TDPB4yFE7H6tYvGFf1OJHNczeY10/EFF8Ir8jZbNntQJxMWNfeQjC1mxPsaQ6mR9cvQbf+0YeMw==", + "license": "Apache-2.0", "dependencies": { - "restore-cursor": "^3.1.0" + "@smithy/middleware-serde": "^3.0.3", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/url-parser": "^3.0.3", + "@smithy/util-middleware": "^3.0.3", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-3.0.14.tgz", + "integrity": "sha512-7ZaWZJOjUxa5hgmuMspyt8v/zVsh0GXYuF7OvCmdcbVa/xbnKQoYC+uYKunAqRGTkxjOyuOCw9rmFUFOqqC0eQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/protocol-http": "^4.1.0", + "@smithy/service-error-classification": "^3.0.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-retry": "^3.0.3", + "tslib": "^2.6.2", + "uuid": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/@smithy/middleware-retry/node_modules/uuid": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", + "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/inquirer/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/middleware-serde": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-3.0.3.tgz", + "integrity": "sha512-puUbyJQBcg9eSErFXjKNiGILJGtiqmuuNKEYNYfUD57fUl4i9+mfmThtQhvFXU0hCVG0iEJhvQUipUf+/SsFdA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/middleware-stack": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-3.0.3.tgz", + "integrity": "sha512-r4klY9nFudB0r9UdSMaGSyjyQK5adUyPnQN/ZM6M75phTxOdnc/AhpvGD1fQUvgmqjQEBGCwpnPbDm8pH5PapA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" + "node_modules/@smithy/node-config-provider": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-3.1.4.tgz", + "integrity": "sha512-YvnElQy8HR4vDcAjoy7Xkx9YT8xZP4cBXcbJSgm/kxmiQu08DwUwj8rkGnyoJTpfl/3xYHH+d8zE+eHqoDCSdQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/property-provider": "^3.1.3", + "@smithy/shared-ini-file-loader": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/node-http-handler": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-3.1.4.tgz", + "integrity": "sha512-+UmxgixgOr/yLsUxcEKGH0fMNVteJFGkmRltYFHnBMlogyFdpzn2CwqWmxOrfJELhV34v0WSlaqG1UtE1uXlJg==", + "license": "Apache-2.0", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "@smithy/abort-controller": "^3.1.1", + "@smithy/protocol-http": "^4.1.0", + "@smithy/querystring-builder": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/property-provider": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-3.1.3.tgz", + "integrity": "sha512-zahyOVR9Q4PEoguJ/NrFP4O7SMAfYO1HLhB18M+q+Z4KFd4V2obiMnlVoUFzFLSPeVt1POyNWneHHrZaTMoc/g==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">=6" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", - "dev": true, - "license": "ISC", + "node_modules/@smithy/protocol-http": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-4.1.0.tgz", + "integrity": "sha512-dPVoHYQ2wcHooGXg3LQisa1hH0e4y0pAddPMeeUPipI1tEOqL6A4N0/G7abeq+K8wrwSgjk4C0wnD1XZpJm5aA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/querystring-builder": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-3.0.3.tgz", + "integrity": "sha512-vyWckeUeesFKzCDaRwWLUA1Xym9McaA6XpFfAK5qI9DKJ4M33ooQGqvM4J+LalH4u/Dq9nFiC8U6Qn1qi0+9zw==", + "license": "Apache-2.0", "dependencies": { - "mimic-fn": "^2.1.0" + "@smithy/types": "^3.3.0", + "@smithy/util-uri-escape": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/querystring-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-3.0.3.tgz", + "integrity": "sha512-zahM1lQv2YjmznnfQsWbYojFe55l0SLG/988brlLv1i8z3dubloLF+75ATRsqPBboUXsW6I9CPGE5rQgLfY0vQ==", + "license": "Apache-2.0", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/service-error-classification": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-3.0.3.tgz", + "integrity": "sha512-Jn39sSl8cim/VlkLsUhRFq/dKDnRUFlfRkvhOJaUbLBXUsLRLNf9WaxDv/z9BjuQ3A6k/qE8af1lsqcwm7+DaQ==", + "license": "Apache-2.0", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "@smithy/types": "^3.3.0" }, "engines": { - "node": ">= 6" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/shared-ini-file-loader": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-3.1.4.tgz", + "integrity": "sha512-qMxS4hBGB8FY2GQqshcRUy1K6k8aBWP5vwm8qKkCT3A9K2dawUwOIJfqh9Yste/Bl0J2lzosVyrXDj68kLcHXQ==", + "license": "Apache-2.0", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/signature-v4": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-4.1.0.tgz", + "integrity": "sha512-aRryp2XNZeRcOtuJoxjydO6QTaVhxx/vjaR+gx7ZjaFgrgPRyZ3HCTbfwqYj6ZWEBHkCSUfcaymKPURaByukag==", + "license": "Apache-2.0", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@smithy/is-array-buffer": "^3.0.0", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-middleware": "^3.0.3", + "@smithy/util-uri-escape": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node_modules/@smithy/smithy-client": { + "version": "3.1.12", + "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-3.1.12.tgz", + "integrity": "sha512-wtm8JtsycthkHy1YA4zjIh2thJgIQ9vGkoR639DBx5lLlLNU0v4GARpQZkr2WjXue74nZ7MiTSWfVrLkyD8RkA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/middleware-endpoint": "^3.1.0", + "@smithy/middleware-stack": "^3.0.3", + "@smithy/protocol-http": "^4.1.0", + "@smithy/types": "^3.3.0", + "@smithy/util-stream": "^3.1.3", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/inquirer/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/types": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/@smithy/types/-/types-3.3.0.tgz", + "integrity": "sha512-IxvBBCTFDHbVoK7zIxqA1ZOdc4QfM5HM7rGleCuHi7L1wnKv5Pn69xXJQ9hgxH60ZVygH9/JG0jRgtUncE3QUA==", + "license": "Apache-2.0", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/interface-datastore": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.0.tgz", - "integrity": "sha512-RM/rTSmRcnoCwGZIHrPm+nlGYVoT4R0lcFvNnDyhdFT4R6BuHHhfFP47UldVEjs98SfxLuMhaNMsyjI918saHw==", - "license": "Apache-2.0 OR MIT", + "node_modules/@smithy/url-parser": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-3.0.3.tgz", + "integrity": "sha512-pw3VtZtX2rg+s6HMs6/+u9+hu6oY6U7IohGhVNnjbgKy86wcIsSZwgHrFR+t67Uyxvp4Xz3p3kGXXIpTNisq8A==", + "license": "Apache-2.0", "dependencies": { - "interface-store": "6.0.0", - "uint8arrays": "^5.0.2" + "@smithy/querystring-parser": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" } }, - "node_modules/interface-datastore/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", + "node_modules/@smithy/util-base64": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-3.0.0.tgz", + "integrity": "sha512-Kxvoh5Qtt0CDsfajiZOCpJxgtPHXOKwmM+Zy4waD43UoEMA+qPxxa98aE/7ZhdnBFZFXMOiBR5xbcaMhLtznQQ==", + "license": "Apache-2.0", "dependencies": { - "multiformats": "^13.0.0" + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=16.0.0" } }, - "node_modules/interface-store": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.0.tgz", - "integrity": "sha512-HkjsDPsjA7SKkCr+TH1elUQApAAM3X3JPwrz3vFzaf614wI+ZD6GVvwKGZCHYcbSRqeZP/uzVPqezzeISeo5kA==", - "license": "Apache-2.0 OR MIT" + "node_modules/@smithy/util-body-length-browser": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-3.0.0.tgz", + "integrity": "sha512-cbjJs2A1mLYmqmyVl80uoLTJhAcfzMOyPgjwAYusWKMdLeNtzmMz9YxNl3/jRLoxSS3wkqkf0jwNdtXWtyEBaQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + } }, - "node_modules/internal-slot": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", - "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", - "license": "MIT", + "node_modules/@smithy/util-body-length-node": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-3.0.0.tgz", + "integrity": "sha512-Tj7pZ4bUloNUP6PzwhN7K386tmSmEET9QtQg0TgdNOnxhZvCssHji+oZTUIuzxECRfG8rdm2PMw2WCFs6eIYkA==", + "license": "Apache-2.0", "dependencies": { - "es-errors": "^1.3.0", - "hasown": "^2.0.0", - "side-channel": "^1.0.4" + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" + "node": ">=16.0.0" } }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "dev": true, - "license": "MIT", + "node_modules/@smithy/util-buffer-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-3.0.0.tgz", + "integrity": "sha512-aEOHCgq5RWFbP+UDPvPot26EJHjOC+bRgse5A8V3FSShqd5E5UN4qc7zkwsvJPPAVsf73QwYcHN1/gt/rtLwQA==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/is-array-buffer": "^3.0.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 0.10" + "node": ">=16.0.0" } }, - "node_modules/into-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-6.0.0.tgz", - "integrity": "sha512-XHbaOAvP+uFKUFsOgoNPRjLkwB+I22JFPFe5OjTkQ0nwgj6+pSjb4NmB6VMxaPshLiOf+zcpOCBQuLwC1KHhZA==", - "license": "MIT", + "node_modules/@smithy/util-config-provider": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-3.0.0.tgz", + "integrity": "sha512-pbjk4s0fwq3Di/ANL+rCvJMKM5bzAQdE5S/6RL5NXgMExFAi6UgQMPOm5yPaIWPpr+EOXKXRonJ3FoxKf4mCJQ==", + "license": "Apache-2.0", "dependencies": { - "from2": "^2.3.0", - "p-is-promise": "^3.0.0" + "tslib": "^2.6.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0" } }, - "node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", - "license": "MIT" - }, - "node_modules/ip-address": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", - "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", - "devOptional": true, - "license": "MIT", + "node_modules/@smithy/util-defaults-mode-browser": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-3.0.14.tgz", + "integrity": "sha512-0iwTgKKmAIf+vFLV8fji21Jb2px11ktKVxbX6LIDPAUJyWQqGqBVfwba7xwa1f2FZUoolYQgLvxQEpJycXuQ5w==", + "license": "Apache-2.0", "dependencies": { - "jsbn": "1.1.0", - "sprintf-js": "^1.1.3" + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "bowser": "^2.11.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 12" + "node": ">= 10.0.0" } }, - "node_modules/ip-regex": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", - "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node_modules/@smithy/util-defaults-mode-node": { + "version": "3.0.14", + "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-3.0.14.tgz", + "integrity": "sha512-e9uQarJKfXApkTMMruIdxHprhcXivH1flYCe8JRDTzkkLx8dA3V5J8GZlST9yfDiRWkJpZJlUXGN9Rc9Ade3OQ==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/config-resolver": "^3.0.5", + "@smithy/credential-provider-imds": "^3.2.0", + "@smithy/node-config-provider": "^3.1.4", + "@smithy/property-provider": "^3.1.3", + "@smithy/smithy-client": "^3.1.12", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 10.0.0" } }, - "node_modules/ipaddr.js": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", - "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", - "license": "MIT", + "node_modules/@smithy/util-endpoints": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-2.0.5.tgz", + "integrity": "sha512-ReQP0BWihIE68OAblC/WQmDD40Gx+QY1Ez8mTdFMXpmjfxSyz2fVQu3A4zXRfQU9sZXtewk3GmhfOHswvX+eNg==", + "license": "Apache-2.0", + "dependencies": { + "@smithy/node-config-provider": "^3.1.4", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" + }, "engines": { - "node": ">= 10" + "node": ">=16.0.0" } }, - "node_modules/irregular-plurals": { - "version": "3.5.0", - "resolved": "https://registry.npmjs.org/irregular-plurals/-/irregular-plurals-3.5.0.tgz", - "integrity": "sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==", - "license": "MIT", + "node_modules/@smithy/util-hex-encoding": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-3.0.0.tgz", + "integrity": "sha512-eFndh1WEK5YMUYvy3lPlVmYY/fZcQE1D8oSf41Id2vCeIkKJXPcYDCZD+4+xViI6b1XSd7tE+s5AmXzz5ilabQ==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.6.2" + }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/is-arguments": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", - "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", - "license": "MIT", + "node_modules/@smithy/util-middleware": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-3.0.3.tgz", + "integrity": "sha512-l+StyYYK/eO3DlVPbU+4Bi06Jjal+PFLSMmlWM1BEwyLxZ3aKkf1ROnoIakfaA7mC6uw3ny7JBkau4Yc+5zfWw==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16.0.0" } }, - "node_modules/is-array-buffer": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", - "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", - "license": "MIT", + "node_modules/@smithy/util-retry": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-3.0.3.tgz", + "integrity": "sha512-AFw+hjpbtVApzpNDhbjNG5NA3kyoMs7vx0gsgmlJF4s+yz1Zlepde7J58zpIRIsdjc+emhpAITxA88qLkPF26w==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.2.1" + "@smithy/service-error-classification": "^3.0.3", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16.0.0" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", - "license": "MIT" - }, - "node_modules/is-async-function": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", - "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", - "license": "MIT", + "node_modules/@smithy/util-stream": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-3.1.3.tgz", + "integrity": "sha512-FIv/bRhIlAxC0U7xM1BCnF2aDRPq0UaelqBHkM2lsCp26mcBbgI0tCVTv+jGdsQLUmAMybua/bjDsSu8RQHbmw==", + "license": "Apache-2.0", "dependencies": { - "has-tostringtag": "^1.0.0" + "@smithy/fetch-http-handler": "^3.2.4", + "@smithy/node-http-handler": "^3.1.4", + "@smithy/types": "^3.3.0", + "@smithy/util-base64": "^3.0.0", + "@smithy/util-buffer-from": "^3.0.0", + "@smithy/util-hex-encoding": "^3.0.0", + "@smithy/util-utf8": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16.0.0" } }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", - "license": "MIT", + "node_modules/@smithy/util-uri-escape": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-3.0.0.tgz", + "integrity": "sha512-LqR7qYLgZTD7nWLBecUi4aqolw8Mhza9ArpNEQ881MJJIU2sE5iHCK6TdyqqzcDLy0OPe10IY4T8ctVdtynubg==", + "license": "Apache-2.0", "dependencies": { - "has-bigints": "^1.0.1" + "tslib": "^2.6.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=16.0.0" } }, - "node_modules/is-binary-path": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", - "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "license": "MIT", + "node_modules/@smithy/util-utf8": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-3.0.0.tgz", + "integrity": "sha512-rUeT12bxFnplYDe815GXbq/oixEGHfRFFtcTF3YdDi/JaENIM6aSYYLJydG83UNzLXeRI5K8abYd/8Sp/QM0kA==", + "license": "Apache-2.0", "dependencies": { - "binary-extensions": "^2.0.0" + "@smithy/util-buffer-from": "^3.0.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">=8" + "node": ">=16.0.0" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", - "license": "MIT", + "node_modules/@smithy/util-waiter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-3.1.2.tgz", + "integrity": "sha512-4pP0EV3iTsexDx+8PPGAKCQpd/6hsQBaQhqWzU4hqKPHN5epPsxKbvUTIiYIHTxaKt6/kEaqPBpu/ufvfbrRzw==", + "license": "Apache-2.0", "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "@smithy/abort-controller": "^3.1.1", + "@smithy/types": "^3.3.0", + "tslib": "^2.6.2" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=16.0.0" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.8.0" } }, - "node_modules/is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@tpluscode/rdf-ns-builders": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-5.0.0.tgz", + "integrity": "sha512-rtMFbArdief+s0z2A3TOb/gNe5O5xn9LDiEpilCf6lGYCUIfyqoOvZY80fS/eILwcF2Mj6cUQN1WBQ+1neJmaw==", "license": "MIT", "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" + "@rdfjs/data-model": "^2.1.0", + "@rdfjs/namespace": "^2.0.1", + "@rdfjs/types": "^2", + "@types/rdfjs__namespace": "^2.0.10", + "@zazuko/prefixes": "^2.3.0" } }, - "node_modules/is-core-module": { - "version": "2.15.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", - "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "node_modules/@tsconfig/node10": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", + "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", + "license": "MIT" + }, + "node_modules/@tsconfig/node12": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", + "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", + "license": "MIT" + }, + "node_modules/@tsconfig/node14": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", + "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", + "license": "MIT" + }, + "node_modules/@tsconfig/node16": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", + "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", + "license": "MIT" + }, + "node_modules/@tsoa/cli": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@tsoa/cli/-/cli-5.1.1.tgz", + "integrity": "sha512-krvp6Qr2yPUfj6bJRs0vwQhLANeINzyusNnzgSoerDfBBBnjZ+VhvR4rWguAcLc1kgP/kFAJz5kIp4iqLFmILQ==", "license": "MIT", "dependencies": { - "hasown": "^2.0.2" + "@tsoa/runtime": "^5.0.0", + "deepmerge": "^4.2.2", + "fs-extra": "^10.1.0", + "glob": "^8.0.3", + "handlebars": "^4.7.7", + "merge": "^2.1.1", + "minimatch": "^5.1.0", + "typescript": "^4.9.5", + "validator": "^13.7.0", + "yamljs": "^0.3.0", + "yargs": "^17.5.1" }, - "engines": { - "node": ">= 0.4" + "bin": { + "tsoa": "dist/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=12.0.0", + "yarn": ">=1.9.4" } }, - "node_modules/is-data-view": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", - "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "node_modules/@tsoa/cli/node_modules/fs-extra": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", + "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", "license": "MIT", "dependencies": { - "is-typed-array": "^1.1.13" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", - "license": "MIT", + "node_modules/@tsoa/cli/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "license": "ISC", "dependencies": { - "has-tostringtag": "^1.0.0" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10" } }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "node_modules/@tsoa/runtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@tsoa/runtime/-/runtime-5.0.0.tgz", + "integrity": "sha512-DY0x7ZhNRF9FcwCZXQQbQhVj3bfZe0LScNyqp0c8PhDTj0gRMjY4ESVpihopRzhQtamReJoDRg3FhEu4BlSVtA==", "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" + "dependencies": { + "@types/multer": "^1.4.7", + "promise.any": "^2.0.5", + "reflect-metadata": "^0.1.13", + "validator": "^13.7.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-electron": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", - "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", - "license": "MIT" - }, - "node_modules/is-electron-renderer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-electron-renderer/-/is-electron-renderer-2.0.1.tgz", - "integrity": "sha512-pRlQnpaCFhDVPtkXkP+g9Ybv/CjbiQDjnKFQTEjpBfDKeV6dRDBczuFRDpM6DVfk2EjpMS8t5kwE5jPnqYl3zA==", - "license": "MIT" - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12.0.0", + "yarn": ">=1.9.4" } }, - "node_modules/is-finalizationregistry": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", - "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "node_modules/@types/bn.js": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@types/bn.js/-/bn.js-5.1.1.tgz", + "integrity": "sha512-qNrYbZqMx0uJAfKnKclPh+dTwK33KfLHYqtyODwd5HnXOjnkhc4qgn3BrK6RWyGZm5+sIFE7Q7Vz6QQtJB7w7g==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/node": "*" } }, - "node_modules/is-fullwidth-code-point": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", - "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", + "node_modules/@types/body-parser": { + "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "license": "MIT", "dependencies": { - "number-is-nan": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@types/connect": "*", + "@types/node": "*" } }, - "node_modules/is-generator-function": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", - "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "node_modules/@types/chai": { + "version": "4.3.17", + "resolved": "https://registry.npmjs.org/@types/chai/-/chai-4.3.17.tgz", + "integrity": "sha512-zmZ21EWzR71B4Sscphjief5djsLre50M6lI622OSySTmn9DB3j+C3kWroHfBQWXbOBwbgg/M8CG/hUxDLIloow==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/clownface": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/clownface/-/clownface-2.0.10.tgz", + "integrity": "sha512-Vz48oQux0YArQ66wfRp54NlxvEmpyTqbFIH435AsgN7C+p4MXao/rjXUisULL6436bxjFk4VluZr7J2HQkBHmQ==", "license": "MIT", + "peer": true, "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": ">=1", + "@types/rdfjs__environment": "*" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/@types/command-line-args": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@types/command-line-args/-/command-line-args-5.2.3.tgz", + "integrity": "sha512-uv0aG6R0Y8WHZLTamZwtfsDLVRnOa+n+n5rEvFWL5Na5gZ8V2Teab/duDPFzIIIhs9qizDpcavCusCLJZu62Kw==", + "license": "MIT" + }, + "node_modules/@types/command-line-usage": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/@types/command-line-usage/-/command-line-usage-5.0.4.tgz", + "integrity": "sha512-BwR5KP3Es/CSht0xqBcUXS3qCAUVXwpRKsV2+arxeb65atasuXG9LykC9Ab10Cw3s2raH92ZqOeILaQbsB2ACg==", + "license": "MIT" + }, + "node_modules/@types/connect": { + "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "license": "MIT", "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" + "@types/node": "*" } }, - "node_modules/is-in-ci": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz", - "integrity": "sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==", + "node_modules/@types/cors": { + "version": "2.8.17", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.17.tgz", + "integrity": "sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==", "dev": true, "license": "MIT", - "bin": { - "is-in-ci": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dev": true, + "node_modules/@types/dns-packet": { + "version": "5.6.5", + "resolved": "https://registry.npmjs.org/@types/dns-packet/-/dns-packet-5.6.5.tgz", + "integrity": "sha512-qXOC7XLOEe43ehtWJCMnQXvgcIpv6rPmQ1jXT98Ad8A3TB1Ue50jsCbSSSyuazScEuZ/Q026vHbrOTVkmwA+7Q==", "license": "MIT", "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*" } }, - "node_modules/is-inside-container/node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "node_modules/@types/docker-modem": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/docker-modem/-/docker-modem-3.0.6.tgz", + "integrity": "sha512-yKpAGEuKRSS8wwx0joknWxsmLha78wNMe9R2S3UNsVOkZded8UqOrV8KoeDXoXsjndxwyF3eIhyClGbO1SEhEg==", "dev": true, - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*", + "@types/ssh2": "*" } }, - "node_modules/is-installed-globally": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-0.4.0.tgz", - "integrity": "sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==", - "license": "MIT", + "node_modules/@types/dockerode": { + "version": "3.3.39", + "resolved": "https://registry.npmjs.org/@types/dockerode/-/dockerode-3.3.39.tgz", + "integrity": "sha512-uMPmxehH6ofeYjaslASPtjvyH8FRJdM9fZ+hjhGzL4Jq3bGjr9D7TKmp9soSwgFncNk0HOwmyBxjqOb3ikjjsA==", + "dev": true, "dependencies": { - "global-dirs": "^3.0.0", - "is-path-inside": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/docker-modem": "*", + "@types/node": "*", + "@types/ssh2": "*" } }, - "node_modules/is-interactive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", - "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "node_modules/@types/express": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/body-parser": "*", + "@types/express-serve-static-core": "^4.17.33", + "@types/qs": "*", + "@types/serve-static": "*" } }, - "node_modules/is-ip": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-5.0.1.tgz", - "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", + "node_modules/@types/express-serve-static-core": { + "version": "4.19.5", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.19.5.tgz", + "integrity": "sha512-y6W03tvrACO72aijJ5uF02FRq5cgDR9lUxddQ8vyF+GvmjJQqbzDcJngEjURc+ZsG31VI3hODNZJ2URj86pzmg==", "license": "MIT", "dependencies": { - "ip-regex": "^5.0.0", - "super-regex": "^0.2.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@types/node": "*", + "@types/qs": "*", + "@types/range-parser": "*", + "@types/send": "*" } }, - "node_modules/is-lambda": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", - "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", - "license": "MIT", - "optional": true + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true, + "license": "MIT" }, - "node_modules/is-loopback-addr": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz", - "integrity": "sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg==", + "node_modules/@types/http-errors": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", "license": "MIT" }, - "node_modules/is-map": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", - "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "node_modules/@types/http-link-header": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/http-link-header/-/http-link-header-1.0.7.tgz", + "integrity": "sha512-snm5oLckop0K3cTDAiBnZDy6ncx9DJ3mCRDvs42C884MbVYPP74Tiq2hFsSDRTyjK6RyDYDIulPiW23ge+g5Lw==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@types/node": "*" } }, - "node_modules/is-negative-zero": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", - "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "node_modules/@types/ip": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@types/ip/-/ip-1.1.3.tgz", + "integrity": "sha512-64waoJgkXFTYnCYDUWgSATJ/dXEBanVkaP5d4Sbk7P6U7cTTMhxVyROTckc6JKdwCrgnAjZMn0k3177aQxtDEA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "@types/node": "*" } }, - "node_modules/is-npm": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", - "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "license": "MIT", - "engines": { - "node": ">=0.12.0" - } + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true, + "license": "MIT" }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/@types/jsonld": { + "version": "1.5.15", + "resolved": "https://registry.npmjs.org/@types/jsonld/-/jsonld-1.5.15.tgz", + "integrity": "sha512-PlAFPZjL+AuGYmwlqwKEL0IMP8M8RexH0NIPGfCVWSQ041H2rR/8OlyZSD7KsCVoN8vCfWdtWDBxX8yBVP+xow==", + "license": "MIT" + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "license": "MIT" + }, + "node_modules/@types/lodash.clonedeep": { + "version": "4.5.9", + "resolved": "https://registry.npmjs.org/@types/lodash.clonedeep/-/lodash.clonedeep-4.5.9.tgz", + "integrity": "sha512-19429mWC+FyaAhOLzsS8kZUsI+/GmBAQ0HFiCPsKGU+7pBXOQWhyrY6xNNDwUSX8SMZMJvuFVMF9O5dQOlQK9Q==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@types/lodash": "*" } }, - "node_modules/is-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", - "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "node_modules/@types/lzma-native": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/lzma-native/-/lzma-native-4.0.4.tgz", + "integrity": "sha512-9nwec86WAT3wUhjx9iV0AQ06xyDyiN/D9CAk3ZzNLb8zFjjo4EDBliN2uo7CFcBDJ64oXfX4sa+p6fpGpzy/4A==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "@types/node": "*" } }, - "node_modules/is-observable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-observable/-/is-observable-1.1.0.tgz", - "integrity": "sha512-NqCa4Sa2d+u7BWc6CukaObG3Fh+CU9bvixbpcXYhy2VvYS7vVGIdAgnIS5Ks3A/cqk4rebLJ9s8zBstT2aKnIA==", + "node_modules/@types/mime": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "license": "MIT" + }, + "node_modules/@types/mocha": { + "version": "10.0.10", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-10.0.10.tgz", + "integrity": "sha512-xPyYSz1cMPnJQhl0CLMH68j3gprKZaTjG3s5Vi+fDgx+uhG9NOXwbVt52eFS8ECyXhyKcjDLCBEqBExKuiZb7Q==", + "dev": true + }, + "node_modules/@types/multer": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/@types/multer/-/multer-1.4.11.tgz", + "integrity": "sha512-svK240gr6LVWvv3YGyhLlA+6LRRWA4mnGIU7RcNmgjBYFl6665wcXrRfxGp5tEPVHUNm5FMcmq7too9bxCwX/w==", "license": "MIT", "dependencies": { - "symbol-observable": "^1.1.0" - }, - "engines": { - "node": ">=4" + "@types/express": "*" } }, - "node_modules/is-path-cwd": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-2.2.0.tgz", - "integrity": "sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==", + "node_modules/@types/multicast-dns": { + "version": "7.2.4", + "resolved": "https://registry.npmjs.org/@types/multicast-dns/-/multicast-dns-7.2.4.tgz", + "integrity": "sha512-ib5K4cIDR4Ro5SR3Sx/LROkMDa0BHz0OPaCBL/OSPDsAXEGZ3/KQeS6poBKYVN7BfjXDL9lWNwzyHVgt/wkyCw==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@types/dns-packet": "*", + "@types/node": "*" } }, - "node_modules/is-path-inside": { + "node_modules/@types/murmurhash3js-revisited": { "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "resolved": "https://registry.npmjs.org/@types/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.3.tgz", + "integrity": "sha512-QvlqvYtGBYIDeO8dFdY4djkRubcrc+yTJtBc7n8VZPlJDUS/00A+PssbvERM8f9bYRmcaSEHPZgZojeQj7kzAA==", + "license": "MIT" }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "node_modules/@types/node": { + "version": "20.14.15", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.15.tgz", + "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==", "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/is-plain-object": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", - "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "node_modules/@types/node-cron": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/node-cron/-/node-cron-3.0.11.tgz", + "integrity": "sha512-0ikrnug3/IyneSHqCBeslAhlK2aBfYek1fGo4bP4QnZPmiqSGRK+Oy7ZMisLWkesffJvQ1cqAcBnJC+8+nxIAg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@types/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-uRwJqmiXmh9++aSu1VNEn3iIxWOhd8AHXNSdlaLfdAAdSTY9jYVeGWnzejM3dvrkbqE3/hyQkQQ29IFATEGlew==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "@types/node": "*" } }, - "node_modules/is-promise": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", - "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "node_modules/@types/qs": { + "version": "6.9.15", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==", "license": "MIT" }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/@types/range-parser": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "license": "MIT" + }, + "node_modules/@types/rdf-dataset-ext": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/@types/rdf-dataset-ext/-/rdf-dataset-ext-1.0.8.tgz", + "integrity": "sha512-ngMGOzAm+yvrfTzFhlmPNa9lfWO72IkdqYRR+HNIPX3x+RPLf6qRpAi8GAZCg0rkpGt2JJqDQF3FgVxE6ykr/w==", "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": ">=1.0.0", + "@types/readable-stream": "*" } }, - "node_modules/is-regexp": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", - "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", + "node_modules/@types/rdfjs__data-model": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/rdfjs__data-model/-/rdfjs__data-model-2.0.9.tgz", + "integrity": "sha512-rgQSlM9jr7XMZdC0xUIr0zsxf5FvdB4cxxzv+MlHm6uJGip5qi0q+BluNhakAzaM2I56nKLDqSE3I/XuOaHGnA==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peer": true, + "dependencies": { + "@rdfjs/types": "*" } }, - "node_modules/is-relative": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-relative/-/is-relative-1.0.0.tgz", - "integrity": "sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==", + "node_modules/@types/rdfjs__dataset": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@types/rdfjs__dataset/-/rdfjs__dataset-2.0.7.tgz", + "integrity": "sha512-+GaYIL9C7N1N0HyH+obU4IXuL7DX+fXuf827aUQ2Vx2UghO47+OTxo2v3seEQj/1YHoHBfQFk5Y4P6Q7Ht4Hqw==", "license": "MIT", + "peer": true, "dependencies": { - "is-unc-path": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@rdfjs/types": "*" } }, - "node_modules/is-set": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", - "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "node_modules/@types/rdfjs__environment": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__environment/-/rdfjs__environment-1.0.0.tgz", + "integrity": "sha512-MDcnv3qfJvbHoEpUQXj5muT8g3e+xz1D8sGevrq3+Q4TzeEvQf5ijGX5l8485XFYrN/OBApgzXkHMZC04/kd5w==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peer": true, + "dependencies": { + "@rdfjs/types": "*", + "@types/node": "*" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", - "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "node_modules/@types/rdfjs__fetch-lite": { + "version": "3.0.11", + "resolved": "https://registry.npmjs.org/@types/rdfjs__fetch-lite/-/rdfjs__fetch-lite-3.0.11.tgz", + "integrity": "sha512-1bHxBn62bmTPq/HY9Jr+iKCdBp8RTEJ4WA0ycihghRF8zWQfw6T7E5CqdPi4nncmgF70LOz7jF/4jeLGdb6H2A==", "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": "*", + "@types/node": "*", + "@types/rdfjs__formats": "*" } }, - "node_modules/is-ssh": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", - "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", - "dev": true, + "node_modules/@types/rdfjs__formats": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdfjs__formats/-/rdfjs__formats-4.0.1.tgz", + "integrity": "sha512-Zj7hQEn5HeCj+pJCWshY2gqBcdBdwyc2j20Ht3PH91pkdRuG2AlGDD3N9PQ1oZ3+J6Q96rAlhxUbjQUp9+s3FQ==", "license": "MIT", + "peer": true, "dependencies": { - "protocols": "^2.0.1" + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-jsonld-ext": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__serializer-turtle": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" } }, - "node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", + "node_modules/@types/rdfjs__formats-common": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__formats-common/-/rdfjs__formats-common-3.1.5.tgz", + "integrity": "sha512-Zt74nSd9NemOq90/2cMrBVwnHJIXHFFDS7tkY4Slei1eRoQJpws059Lx9O+mqaFspkD3r81Enu/5CiNfQg9V7g==", "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__parser-jsonld": "*", + "@types/rdfjs__parser-n3": "*", + "@types/rdfjs__serializer-jsonld": "*", + "@types/rdfjs__serializer-ntriples": "*", + "@types/rdfjs__sink-map": "*", + "rdfxml-streaming-parser": ">=2" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/@types/rdfjs__namespace": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/rdfjs__namespace/-/rdfjs__namespace-2.0.10.tgz", + "integrity": "sha512-xoVzEIOxcpyteEmzaj94MSBbrBFs+vqv05joMhzLEiPRwsBBDnhkdBCaaDxR1Tf7wOW0kB2R1IYe4C3vEBFPgA==", "license": "MIT", "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": "*" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/@types/rdfjs__parser-jsonld": { + "version": "2.1.7", + "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-jsonld/-/rdfjs__parser-jsonld-2.1.7.tgz", + "integrity": "sha512-n35K+c1Y95580N202Jxly6xjFE953FF+Y2mwxok6zLfMo4rgIfgMBElnNwpja0IeYXTuzGm1tEz7va3lItGrTg==", "license": "MIT", "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*" } }, - "node_modules/is-text-path": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", - "integrity": "sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==", + "node_modules/@types/rdfjs__parser-n3": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/rdfjs__parser-n3/-/rdfjs__parser-n3-2.0.6.tgz", + "integrity": "sha512-VHfdq7BDV6iMCtHkzTFSOuUWnqGlMUmEF0UZyK4+g9SzLWvc6TMcU5TYwQPQIz/e0s7dZ+xomxx6mVtIzsRQ/A==", "license": "MIT", "dependencies": { - "text-extensions": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "@rdfjs/types": ">=1.0.0" } }, - "node_modules/is-typed-array": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", - "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "node_modules/@types/rdfjs__prefix-map": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__prefix-map/-/rdfjs__prefix-map-0.1.5.tgz", + "integrity": "sha512-RAwyS/2dT9X79QwM0F8KLweTfuBoe6xtiAlU7wKPB+/t/sfk6A50LYtAWaDVP5qBjcu50UkKkZT+VR47CiLkfg==", "license": "MIT", + "peer": true, "dependencies": { - "which-typed-array": "^1.1.14" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": "*" } }, - "node_modules/is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", - "license": "MIT" + "node_modules/@types/rdfjs__serializer-jsonld": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld/-/rdfjs__serializer-jsonld-2.0.5.tgz", + "integrity": "sha512-ubdLD9QgZzAt+65NSPzh2qWCPWcGYlHEWgkP6uRwfm7JC48Xh/QjzwOTG13MTomOkQqcN4R7PIG0j3Ca8iyNWQ==", + "license": "MIT", + "dependencies": { + "@rdfjs/types": ">=1.0.0" + } }, - "node_modules/is-unc-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-unc-path/-/is-unc-path-1.0.0.tgz", - "integrity": "sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==", + "node_modules/@types/rdfjs__serializer-jsonld-ext": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-jsonld-ext/-/rdfjs__serializer-jsonld-ext-4.0.1.tgz", + "integrity": "sha512-jgbQ/1kV7nESKG7SY8FJED6K4OFznr6Sz3ybF1ncpBR7TUBTuy3InpZOVRK4Wjpy2zi84iIAzJ1CIIo9NZh2Xw==", "license": "MIT", + "peer": true, "dependencies": { - "unc-path-regex": "^0.1.2" - }, - "engines": { - "node": ">=0.10.0" + "@rdfjs/types": ">=1.0.0", + "@types/jsonld": "*", + "@types/node": "*" } }, - "node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "node_modules/@types/rdfjs__serializer-ntriples": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-ntriples/-/rdfjs__serializer-ntriples-2.0.6.tgz", + "integrity": "sha512-Nn3e3eyuymLvbI5MFzI7ODD/X6ZGpbB9fLaWOB00RtFHd2vttk3wQL2fzzsZZQPJ/ihC/xlFE4cNQkO6SoHa7w==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@rdfjs/types": ">=1.0.0" } }, - "node_modules/is-url": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/is-url/-/is-url-1.2.4.tgz", - "integrity": "sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww==", - "license": "MIT" - }, - "node_modules/is-uuid": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-uuid/-/is-uuid-1.0.2.tgz", - "integrity": "sha512-tCByphFcJgf2qmiMo5hMCgNAquNSagOetVetDvBXswGkNfoyEMvGH1yDlF8cbZbKnbVBr4Y5/rlpMz9umxyBkQ==", - "license": "MIT" - }, - "node_modules/is-weakmap": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", - "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "node_modules/@types/rdfjs__serializer-turtle": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@types/rdfjs__serializer-turtle/-/rdfjs__serializer-turtle-1.1.0.tgz", + "integrity": "sha512-NGHnbz5985UwS/YS6WL/FkS94B+QiVTdsfvJCqPwLmY3E7UeClw91c2KbiphZUR/uh7uwLwxeKKhV2T1gYgT5Q==", "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peer": true, + "dependencies": { + "@rdfjs/types": ">=1.0.0", + "@types/node": "*", + "@types/rdfjs__prefix-map": "*" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/@types/rdfjs__sink-map": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__sink-map/-/rdfjs__sink-map-2.0.5.tgz", + "integrity": "sha512-ycUBlOMbp9YpjrBrMwGv3uiqulOWgodess06cinYLxomOTc2ET9rEQklgM5rJqnu5WMsVP8SFG3fFw36/5hADQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": "*" } }, - "node_modules/is-weakset": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", - "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "node_modules/@types/rdfjs__term-map": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@types/rdfjs__term-map/-/rdfjs__term-map-2.0.10.tgz", + "integrity": "sha512-YlpYkya+Xq9fmcw+BMi1SCh+w2sBu7G0/qd2+ZhB4QIK3V1xq2o3EOAZnlahyQdwrW9t5+Ihw8IVVvZsJvDOTA==", "license": "MIT", + "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "@rdfjs/types": "*" } }, - "node_modules/is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "node_modules/@types/rdfjs__term-set": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@types/rdfjs__term-set/-/rdfjs__term-set-2.0.9.tgz", + "integrity": "sha512-RRXs5DwFGanZyT705f7KLSiN68gUVUtGWTp508CXJhLfD7AWmilqc1BLgLUoac48h3pnh9w5lRhwFm6fj1ZE5Q==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "peer": true, + "dependencies": { + "@rdfjs/types": "*" } }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "node_modules/@types/rdfjs__traverser": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@types/rdfjs__traverser/-/rdfjs__traverser-0.1.5.tgz", + "integrity": "sha512-tTpiM6lAddw+bGRDjhzwdpo1EQK73m8gYgMVNfO4OsevnuLZvQJeCJBckpuDC4H5HVAEwCapI0UlH9dVnZ9u5g==", "license": "MIT", + "peer": true, "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@rdfjs/types": "*" } }, - "node_modules/is-yarn-global": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/is-yarn-global/-/is-yarn-global-0.4.1.tgz", - "integrity": "sha512-/kppl+R+LO5VmhYSEWARUFjodS25D68gvj8W7z0I7OWhUla5xWu8KL6CtB2V0R6yqhnRgbcaREMr4EEM6htLPQ==", + "node_modules/@types/readable-stream": { + "version": "4.0.21", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.21.tgz", + "integrity": "sha512-19eKVv9tugr03IgfXlA9UVUVRbW6IuqRO5B92Dl4a6pT7K8uaGrNS0GkxiZD0BOk6PLuXl5FhWl//eX/pzYdTQ==", "license": "MIT", - "engines": { - "node": ">=12" + "dependencies": { + "@types/node": "*" } }, - "node_modules/isarray": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", - "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "license": "ISC" + "node_modules/@types/secp256k1": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/secp256k1/-/secp256k1-4.0.6.tgz", + "integrity": "sha512-hHxJU6PAEUn0TP4S/ZOzuTUvJWuZ6eIKeNKb5RBpODvSl6hp1Wrw4s7ATY50rklRCScUDpHzVA/DQdSjJ3UoYQ==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } }, - "node_modules/isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==", + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true, "license": "MIT" }, - "node_modules/issue-parser": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-6.0.0.tgz", - "integrity": "sha512-zKa/Dxq2lGsBIXQ7CUZWTHfvxPC2ej0KfO7fIPqLlHB9J2hJ7rGhZ5rilhuufylr4RXYPzJUeFjKxz305OsNlA==", + "node_modules/@types/send": { + "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "license": "MIT", "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" - }, - "engines": { - "node": ">=10.13" + "@types/mime": "^1", + "@types/node": "*" } }, - "node_modules/istanbul-lib-coverage": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", - "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=8" + "node_modules/@types/serve-static": { + "version": "1.15.7", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.7.tgz", + "integrity": "sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==", + "license": "MIT", + "dependencies": { + "@types/http-errors": "*", + "@types/node": "*", + "@types/send": "*" } }, - "node_modules/istanbul-lib-hook": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", - "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", - "license": "BSD-3-Clause", + "node_modules/@types/sinon": { + "version": "17.0.4", + "resolved": "https://registry.npmjs.org/@types/sinon/-/sinon-17.0.4.tgz", + "integrity": "sha512-RHnIrhfPO3+tJT0s7cFaXGZvsL4bbR3/k7z3P312qMS4JaS2Tk+KiwiLx1S0rQ56ERj00u1/BtdyVd0FY+Pdew==", "dependencies": { - "append-transform": "^2.0.0" - }, - "engines": { - "node": ">=8" + "@types/sinonjs__fake-timers": "*" } }, - "node_modules/istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "license": "BSD-3-Clause", + "node_modules/@types/sinonjs__fake-timers": { + "version": "8.1.5", + "resolved": "https://registry.npmjs.org/@types/sinonjs__fake-timers/-/sinonjs__fake-timers-8.1.5.tgz", + "integrity": "sha512-mQkU2jY8jJEF7YHjHvsQO8+3ughTL1mcnn96igfhONmR+fUPSKIkefQYpSe8bsly2Ep7oQbn/6VG5/9/0qcArQ==", + "license": "MIT" + }, + "node_modules/@types/ssh2": { + "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/ssh2/-/ssh2-1.15.5.tgz", + "integrity": "sha512-N1ASjp/nXH3ovBHddRJpli4ozpk6UdDYIX4RJWFa9L1YKnzdhTlVmiGHm4DZnj/jLbqZpes4aeR30EFGQtvhQQ==", + "dev": true, "dependencies": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" + "@types/node": "^18.11.18" } }, - "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/@types/ssh2/node_modules/@types/node": { + "version": "18.19.108", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.108.tgz", + "integrity": "sha512-JZv9uwGYYtfcsO7B99KszTlNhvrIWqsRy7Xjp5Hr7ZFj7DSlsxIi0zJfibe/1xtPn6kEEbfMjH2lbsubwa81pQ==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" } }, - "node_modules/istanbul-lib-processinfo": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", - "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", - "license": "ISC", + "node_modules/@types/triple-beam": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz", + "integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==", + "license": "MIT" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "license": "MIT", "dependencies": { - "archy": "^1.0.0", - "cross-spawn": "^7.0.3", - "istanbul-lib-coverage": "^3.2.0", - "p-map": "^3.0.0", - "rimraf": "^3.0.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=8" + "@types/node": "*" } }, - "node_modules/istanbul-lib-processinfo/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/istanbul-lib-processinfo/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/istanbul-lib-report": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", - "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", - "license": "BSD-3-Clause", + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^4.0.0", - "supports-color": "^7.1.0" + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" }, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/istanbul-lib-report/node_modules/make-dir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", - "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, "license": "MIT", "dependencies": { - "semver": "^7.5.3" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" }, "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/istanbul-lib-report/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=8" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/istanbul-lib-source-maps": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", - "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", - "license": "BSD-3-Clause", - "dependencies": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/istanbul-reports": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", - "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", - "license": "BSD-3-Clause", + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/it-all": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.6.tgz", - "integrity": "sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/it-byte-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.0.tgz", - "integrity": "sha512-WWponBWdKEa6o2U3NX+wGMY8X1EkWXcQvpC+3CUqKb4ZzK30q3EPqiTjFxLf9tNVgdF/MNAtx/XclpVfgaz9KQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-queueless-pushable": "^1.0.0", - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.4.8" - } - }, - "node_modules/it-drain": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.7.tgz", - "integrity": "sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/it-filter": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.1.tgz", - "integrity": "sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-peekable": "^3.0.0" - } - }, - "node_modules/it-first": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.6.tgz", - "integrity": "sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/it-foreach": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.1.tgz", - "integrity": "sha512-ID4Gxnavk/LVQLQESAQ9hR6dR63Ih6X+8VdxEktX8rpz2dCGAbZpey/eljTNbMfV2UKXHiu6UsneoNBZuac97g==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-peekable": "^3.0.0" - } - }, - "node_modules/it-glob": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/it-glob/-/it-glob-1.0.2.tgz", - "integrity": "sha512-Ch2Dzhw4URfB9L/0ZHyY+uqOnKvBNeS/SMcRiPmJfpHiM0TsUZn+GkpcZxAoF3dJVdPm/PuIk3A4wlV7SUo23Q==", - "license": "ISC", - "dependencies": { - "@types/minimatch": "^3.0.4", - "minimatch": "^3.0.4" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/it-glob/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/it-glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" }, "engines": { - "node": "*" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" } }, - "node_modules/it-length": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-length/-/it-length-3.0.6.tgz", - "integrity": "sha512-R7bxHAzpRzYz7vghc2DDH7x4KXvEkeLfN/h316++jzbkEHIRXbEPLbE20p5yrqqBdOeK6/FRUDuHlTJ0H1hysw==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/it-length-prefixed": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.0.tgz", - "integrity": "sha512-kx2UTJuy7/lsT3QUzf50NjfxU1Z4P4wlvYp6YnR5Nc61P8XKfy+QtiJi1VLojA+Kea7vMbB4002rIij1Ol9hcw==", - "license": "Apache-2.0 OR MIT", + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "license": "MIT", "dependencies": { - "it-reader": "^6.0.1", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.1", - "uint8arraylist": "^2.0.0", - "uint8arrays": "^5.0.1" + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" } }, - "node_modules/it-length-prefixed-stream": { + "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.0.tgz", - "integrity": "sha512-vX7dzSl/2UMYYsAr0FQdPNVR5xYEETaeboZ+eXxNBjgARuvxnWA6OedW8lC5/J3ebMTC98JhA3eH76eTijUOsA==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-byte-stream": "^1.0.0", - "it-stream-types": "^2.0.1", - "uint8-varint": "^2.0.4", - "uint8arraylist": "^2.4.8" - } + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true, + "license": "ISC" }, - "node_modules/it-length-prefixed/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" + "node_modules/@vocabulary/sh": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@vocabulary/sh/-/sh-1.1.6.tgz", + "integrity": "sha512-8IfAQoKh57THz8LA2+n1jaY/VC2XaqMNSsJgzBKSSrj20y5PSMAawb6dMsxoLxqDIPBDs1TFRl/9CijUnwbBUA==", + "license": "MIT", + "peerDependencies": { + "@rdfjs/types": "^2.0.0" } }, - "node_modules/it-map": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz", - "integrity": "sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==", - "license": "Apache-2.0 OR MIT", + "node_modules/@zazuko/env-core": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@zazuko/env-core/-/env-core-1.1.2.tgz", + "integrity": "sha512-mnLG40utuT7jPBPLs6fJ0puhfagnXSj+S8t9+zUGs3YlrOq/7b2zr64Hi3p3etwDdApaQ0VgQuNIY9doaruS1Q==", "dependencies": { - "it-peekable": "^3.0.0" + "@rdfjs/environment": "^1.0.0" + }, + "peerDependencies": { + "@types/rdfjs__environment": "^1.0.0" } }, - "node_modules/it-merge": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.5.tgz", - "integrity": "sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==", - "license": "Apache-2.0 OR MIT", + "node_modules/@zazuko/env-node": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@zazuko/env-node/-/env-node-2.1.5.tgz", + "integrity": "sha512-qYrePSWiz9XOB5R0NfvuaogmPP8gLcMsl18G7sYW1h6RB4l3aiofAr4YAKTK+bpJgGjeivDDi64lsQjF2F6p0g==", + "license": "MIT", "dependencies": { - "it-pushable": "^3.2.3" + "@rdfjs/fetch-lite": "^3.2.2", + "@rdfjs/formats": "^4.0.0", + "@zazuko/env": "^2.5.3", + "@zazuko/rdf-utils-fs": "^3.3.0" + }, + "peerDependencies": { + "@types/rdfjs__fetch-lite": "^3.0.11", + "@types/rdfjs__formats": "^4.0.1" } }, - "node_modules/it-pair": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", - "integrity": "sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==", - "license": "Apache-2.0 OR MIT", + "node_modules/@zazuko/env-node/node_modules/@tpluscode/rdf-ns-builders": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/@tpluscode/rdf-ns-builders/-/rdf-ns-builders-4.3.0.tgz", + "integrity": "sha512-x3uh9mYwAU+PrALaDKhVjml1TCCWWduo6J8rybd9SMEEAoooXq1MYb13MRputjRT/kYaFyCND7LMobzhxZ/+bg==", + "license": "MIT", "dependencies": { - "it-stream-types": "^2.0.1", - "p-defer": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "@rdfjs/data-model": "^2", + "@rdfjs/namespace": "^2", + "@rdfjs/types": "*", + "@types/rdfjs__namespace": "^2.0.2", + "@zazuko/prefixes": "^2.0.1" } }, - "node_modules/it-parallel": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.8.tgz", - "integrity": "sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==", - "license": "Apache-2.0 OR MIT", + "node_modules/@zazuko/env-node/node_modules/@zazuko/env": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/@zazuko/env/-/env-2.5.3.tgz", + "integrity": "sha512-kivvYoXGFjva1CuXeK/jaaWMy9eXhhFmuSfSJGVW2wH7XbcZehJObjPXEVlZ3kKLCFhuv96j8Ot3SkbYaOtuLA==", + "license": "MIT", "dependencies": { - "p-defer": "^4.0.1" + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/dataset": "^2.0.1", + "@rdfjs/formats": "^4.0.0", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-map": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/traverser": "^0.1.2", + "@tpluscode/rdf-ns-builders": "^4.1.0", + "@zazuko/env-core": "^1.1.2", + "@zazuko/prefixes": "^2.1.0", + "clownface": "^2.0.2", + "get-stream": "^9.0.1", + "rdf-dataset-ext": "^1.1.0" + }, + "peerDependencies": { + "@rdfjs/types": "^2", + "@types/clownface": "^2.0.0", + "@types/rdf-dataset-ext": "^1.0.8", + "@types/rdfjs__data-model": "^2.0.9", + "@types/rdfjs__dataset": "^2.0.7", + "@types/rdfjs__environment": "^1.0.0", + "@types/rdfjs__formats": "^4.0.1", + "@types/rdfjs__namespace": "^2.0.10", + "@types/rdfjs__term-map": "^2.0.10", + "@types/rdfjs__term-set": "^2.0.9", + "@types/rdfjs__traverser": "^0.1.5" } }, - "node_modules/it-peekable": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.5.tgz", - "integrity": "sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==", - "license": "Apache-2.0 OR MIT" + "node_modules/@zazuko/prefixes": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@zazuko/prefixes/-/prefixes-2.4.0.tgz", + "integrity": "sha512-bd53k5XgFKWR56sofHeAcIbv8o0m2HsJlbHaHbrMufUCdgiZsCLvZn84Vh1dhcsyBHOD0EIo9AD4pNWDQLVRaw==", + "license": "MIT" }, - "node_modules/it-pipe": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", - "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", - "license": "Apache-2.0 OR MIT", + "node_modules/@zazuko/rdf-utils-fs": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/@zazuko/rdf-utils-fs/-/rdf-utils-fs-3.3.1.tgz", + "integrity": "sha512-4HjTbJUwiCFanMMcaaZkLIkWUdVjXSQstAyxnfzsUOmh8Q43iVBL+mYAl17zoi47III0POL6hitRsN1JJ5tUFg==", + "license": "MIT", "dependencies": { - "it-merge": "^3.0.0", - "it-pushable": "^3.1.2", - "it-stream-types": "^2.0.1" + "readable-stream": ">=3.6.0" }, - "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "peerDependencies": { + "@rdfjs/types": "*", + "@types/rdfjs__environment": "0 - 1", + "@types/rdfjs__formats": "^4" } }, - "node_modules/it-protobuf-stream": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.5.tgz", - "integrity": "sha512-H70idW45As3cEbU4uSoZ9IYHUIV3YM69/2mmXYR7gOlPabWjuyNi3/abK11geiiq3la27Sos/mXr68JljjKtEQ==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-length-prefixed-stream": "^1.0.0", - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.4.8" - } + "node_modules/abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "license": "ISC", + "optional": true }, - "node_modules/it-pushable": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz", - "integrity": "sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==", - "license": "Apache-2.0 OR MIT", + "node_modules/abort-controller": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", + "license": "MIT", "dependencies": { - "p-defer": "^4.0.0" + "event-target-shim": "^5.0.0" + }, + "engines": { + "node": ">=6.5" } }, - "node_modules/it-queueless-pushable": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.0.tgz", - "integrity": "sha512-HbcAbcuQj7a9EBxiRCZ+77FxWutgs/pY5ZvEyQnylWPGNFojCLAUwhcZjf5OuEQ9+y+vSa7w1GQBe8xJdmIn5A==", - "license": "Apache-2.0 OR MIT", + "node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", "dependencies": { - "p-defer": "^4.0.1", - "race-signal": "^1.0.2" + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/it-reader": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz", - "integrity": "sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-stream-types": "^2.0.1", - "uint8arraylist": "^2.0.0" + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "license": "MIT", + "bin": { + "acorn": "bin/acorn" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=0.4.0" } }, - "node_modules/it-sort": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-3.0.6.tgz", - "integrity": "sha512-aNrlZAXB8vWBd42tCpaXGL6CJVJNDW3OLczmdt6g0k/s9Z6evkTdgU2LjwW5SNNeX41sF+C8MjV+OcVf93PsPw==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "it-all": "^3.0.0" + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" } }, - "node_modules/it-stream-types": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz", - "integrity": "sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==", - "license": "Apache-2.0 OR MIT", + "node_modules/acorn-walk": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", + "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", + "license": "MIT", + "dependencies": { + "acorn": "^8.11.0" + }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=0.4.0" } }, - "node_modules/it-take": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.6.tgz", - "integrity": "sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg==", - "license": "Apache-2.0 OR MIT" + "node_modules/aes-js": { + "version": "4.0.0-beta.5", + "resolved": "https://registry.npmjs.org/aes-js/-/aes-js-4.0.0-beta.5.tgz", + "integrity": "sha512-G965FqalsNyrPqgEGON7nIx1e/OVENSgiEIzyC63haUMuvNnwIgIjMs52hlTCKhkBny7A2ORNlfY9Zu+jmGk1Q==", + "license": "MIT" }, - "node_modules/it-ws": { - "version": "6.1.5", - "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-6.1.5.tgz", - "integrity": "sha512-uWjMtpy5HqhSd/LlrlP3fhYrr7rUfJFFMABv0F5d6n13Q+0glhZthwUKpEAVhDrXY95Tb1RB5lLqqef+QbVNaw==", - "license": "Apache-2.0 OR MIT", + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "optional": true, "dependencies": { - "@types/ws": "^8.2.2", - "event-iterator": "^2.0.0", - "it-stream-types": "^2.0.1", - "uint8arrays": "^5.0.0", - "ws": "^8.4.0" + "debug": "4" }, "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" - } - }, - "node_modules/it-ws/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" + "node": ">= 6.0.0" } }, - "node_modules/iterate-iterator": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", - "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", + "node_modules/agentkeepalive": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optional": true, + "dependencies": { + "humanize-ms": "^1.2.1" + }, + "engines": { + "node": ">= 8.0.0" } }, - "node_modules/iterate-value": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", - "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", + "node_modules/aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "devOptional": true, "license": "MIT", "dependencies": { - "es-get-iterator": "^1.0.2", - "iterate-iterator": "^1.0.1" + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/iterator.prototype": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", - "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, "license": "MIT", "dependencies": { - "define-properties": "^1.2.1", - "get-intrinsic": "^1.2.1", - "has-symbols": "^1.0.3", - "reflect.getprototypeof": "^1.0.4", - "set-function-name": "^2.0.1" + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/java-properties": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/java-properties/-/java-properties-1.0.2.tgz", - "integrity": "sha512-qjdpeo2yKlYTH7nFdK0vbZWuTCesk4o63v5iVOlhMQPfuIZQfW/HI35SjfhA+4qpg36rnFSvUK5b1m+ckIblQQ==", - "license": "MIT", + "node_modules/amdefine": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-0.1.1.tgz", + "integrity": "sha512-cE/769sItEDt5sSdqmrWMsat+XaA5FJiEou+ZwlY7ef/Jf/517k6nYyUIRPR2o/QbpBg4FiYXj9GyRGNg5f/bg==", + "license": "BSD-3-Clause AND MIT", "engines": { - "node": ">= 0.6.0" + "node": ">=0.4.2" } }, - "node_modules/jmespath": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", - "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.6.0" + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "license": "ISC", + "dependencies": { + "string-width": "^4.1.0" } }, - "node_modules/jose": { - "version": "5.9.6", - "resolved": "https://registry.npmjs.org/jose/-/jose-5.9.6.tgz", - "integrity": "sha512-AMlnetc9+CV9asI19zHmrgS/WYsWUwCn2R7RzlbJWD7F9eWYUTGyBmU9o6PxngtLGOiDGPRu+Uc4fhKzbpteZQ==", - "funding": { - "url": "https://github.com/sponsors/panva" + "node_modules/ansi-align/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/js-sha3": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", - "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", - "license": "MIT" - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/ansi-align/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { - "argparse": "^2.0.1" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=8" } }, - "node_modules/jsbn": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", - "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", - "devOptional": true, - "license": "MIT" - }, - "node_modules/jsdoc-type-pratt-parser": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/jsdoc-type-pratt-parser/-/jsdoc-type-pratt-parser-1.2.0.tgz", - "integrity": "sha512-4STjeF14jp4bqha44nKMY1OUI6d2/g6uclHWUCZ7B4DoLzaB5bmpTkQrpqU+vSVzMD0LsKAOskcnI3I3VfIpmg==", + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "license": "MIT", "engines": { - "node": ">=12.0.0" + "node": ">=8" } }, - "node_modules/jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "license": "MIT", - "bin": { - "jsesc": "bin/jsesc" + "dependencies": { + "color-convert": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/json-bignum": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", - "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", + "node_modules/any-signal": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/any-signal/-/any-signal-4.1.1.tgz", + "integrity": "sha512-iADenERppdC+A2YKbOXXB2WUeABLaM6qnpZ70kZbPZ1cZMMJ7eF+3CaYm+/PhBizgkzlvssC7QuHS30oOiQYWA==", + "license": "Apache-2.0 OR MIT", "engines": { - "node": ">=0.8" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "license": "MIT" + "node_modules/apache-arrow": { + "version": "18.0.0", + "resolved": "https://registry.npmjs.org/apache-arrow/-/apache-arrow-18.0.0.tgz", + "integrity": "sha512-gFlPaqN9osetbB83zC29AbbZqGiCuFH1vyyPseJ+B7SIbfBtESV62mMT/CkiIt77W6ykC/nTWFzTXFs0Uldg4g==", + "license": "Apache-2.0", + "dependencies": { + "@swc/helpers": "^0.5.11", + "@types/command-line-args": "^5.2.3", + "@types/command-line-usage": "^5.0.4", + "@types/node": "^20.13.0", + "command-line-args": "^5.2.1", + "command-line-usage": "^7.0.1", + "flatbuffers": "^24.3.25", + "json-bignum": "^0.0.3", + "tslib": "^2.6.2" + }, + "bin": { + "arrow2csv": "bin/arrow2csv.js" + } }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "license": "MIT" + "node_modules/append-transform": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/append-transform/-/append-transform-2.0.0.tgz", + "integrity": "sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "default-require-extensions": "^3.0.0" + }, + "engines": { + "node": ">=8" + } }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "license": "MIT" + "node_modules/aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "license": "ISC", + "optional": true }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "node_modules/archy": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/archy/-/archy-1.0.0.tgz", + "integrity": "sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==", + "dev": true, "license": "MIT" }, - "node_modules/json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", - "license": "ISC" - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "node_modules/are-we-there-yet": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, + "dependencies": { + "delegates": "^1.0.0", + "readable-stream": "^3.6.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/are-we-there-yet/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", - "bin": { - "json5": "lib/cli.js" + "optional": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=6" + "node": ">= 6" } }, - "node_modules/jsonc-parser": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/jsonc-parser/-/jsonc-parser-3.3.1.tgz", - "integrity": "sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==", + "node_modules/arg": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", + "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-back": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-3.1.0.tgz", + "integrity": "sha512-TkuxA4UCOvxuDK6NZYXCalszEzj+TLszyASooky+i742l9TqsOdYCMJJupxRic61hwquNtppB3hgcuq9SVSH1Q==", "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "engines": { + "node": ">=6" } }, - "node_modules/jsonld": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.2.tgz", - "integrity": "sha512-MwBbq95szLwt8eVQ1Bcfwmgju/Y5P2GdtlHE2ncyfuYjIdEhluUVyj1eudacf1mOkWIoS9GpDBTECqhmq7EOaA==", - "license": "BSD-3-Clause", + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "license": "MIT", "dependencies": { - "@digitalbazaar/http-client": "^3.4.1", - "canonicalize": "^1.0.1", - "lru-cache": "^6.0.0", - "rdf-canonize": "^3.4.0" + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=14" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonld-context-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-2.4.0.tgz", - "integrity": "sha512-ZYOfvh525SdPd9ReYY58dxB3E2RUEU4DJ6ZibO8AitcowPeBH4L5rCAitE2om5G1P+HMEgYEYEr4EZKbVN4tpA==", + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "license": "MIT" + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/http-link-header": "^1.0.1", - "@types/node": "^18.0.0", - "cross-fetch": "^3.0.6", - "http-link-header": "^1.0.2", - "relative-to-absolute-iri": "^1.0.5" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" }, - "bin": { - "jsonld-context-parse": "bin/jsonld-context-parse.js" + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonld-context-parser/node_modules/@types/node": { - "version": "18.19.44", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.44.tgz", - "integrity": "sha512-ZsbGerYg72WMXUIE9fYxtvfzLEuq6q8mKERdWFnqTmOvudMxnz+CBNRoOwJ2kNpFOncrKjT1hZwxjlFgQ9qvQA==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, "license": "MIT", - "dependencies": { - "undici-types": "~5.26.4" + "engines": { + "node": ">=8" } }, - "node_modules/jsonld-streaming-parser": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-3.4.0.tgz", - "integrity": "sha512-897CloyQgQidfkB04dLM5XaAXVX/cN9A2hvgHJo4y4jRhIpvg3KLMBBfcrswepV2N3T8c/Rp2JeFdWfVsbVZ7g==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, "license": "MIT", "dependencies": { - "@bergos/jsonparse": "^1.4.0", - "@rdfjs/types": "*", - "@types/http-link-header": "^1.0.1", - "@types/readable-stream": "^2.3.13", - "buffer": "^6.0.3", - "canonicalize": "^1.0.1", - "http-link-header": "^1.0.2", - "jsonld-context-parser": "^2.4.0", - "rdf-data-factory": "^1.1.0", - "readable-stream": "^4.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonld-streaming-parser/node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonparse": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", - "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "node_modules/JSONStream": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", - "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", - "license": "(MIT OR Apache-2.0)", + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsx-ast-utils": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", - "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flat": "^1.3.1", - "object.assign": "^4.1.4", - "object.values": "^1.1.6" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/junk": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/junk/-/junk-4.0.1.tgz", - "integrity": "sha512-Qush0uP+G8ZScpGMZvHUiRfI0YBWuB3gVBYlI0v0vvOJt5FLicco+IkP0a50LqTTQhmts/m6tP5SWE+USyIvcQ==", + "node_modules/array.prototype.map": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/array.prototype.map/-/array.prototype.map-1.0.7.tgz", + "integrity": "sha512-XpcFfLoBEAhezrrNw1V+yLXkE7M6uR7xJEsxbG6c/V9v043qurwVJB9r9UTnoSioFDoz1i1VOydpWGmJpfVZbg==", "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-array-method-boxes-properly": "^1.0.0", + "es-object-atoms": "^1.0.0", + "is-string": "^1.0.7" + }, "engines": { - "node": ">=12.20" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/just-extend": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", - "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", - "license": "MIT" + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } }, - "node_modules/keccak": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", - "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", - "hasInstallScript": true, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", "license": "MIT", "dependencies": { - "node-addon-api": "^2.0.0", - "node-gyp-build": "^4.2.0", - "readable-stream": "^3.6.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" }, "engines": { - "node": ">=10.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/keccak/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", + "node_modules/asn1": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.6.tgz", + "integrity": "sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" + "safer-buffer": "~2.1.0" } }, - "node_modules/keyv": { - "version": "4.5.4", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", - "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", - "license": "MIT", + "node_modules/asn1.js": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/asn1.js/-/asn1.js-2.2.1.tgz", + "integrity": "sha512-x1HxYATfjnV+SrtHZR9rxzRvTgZaGAtT/nJB3TPmBxtoEVQVRPArNSzCA+1fVYlHYV/zmMLUJhtZVRcn7WMjfQ==", "dependencies": { - "json-buffer": "3.0.1" + "bn.js": "^2.0.0", + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/asn1.js-rfc3280": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/asn1.js-rfc3280/-/asn1.js-rfc3280-2.1.1.tgz", + "integrity": "sha512-/mwtgTbv+xElp8rAw0YPzPoBp4PkV2gl/TRHt9KuK7ZyQXWnTeclQpDJnKZlxCluKr5WAc9tO1NBArLx1egZJQ==", + "peerDependencies": { + "asn1.js": "^2.0.0" } }, - "node_modules/klaw-sync": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/klaw-sync/-/klaw-sync-6.0.0.tgz", - "integrity": "sha512-nIeuVSzdCCs6TDPTqI8w1Yre34sSq7AkZ4B3sfOBbI2CgVSB4Du4aLQijFU2+lhAFCwt9+42Hel6lQNIv6AntQ==", - "license": "MIT", + "node_modules/asn1.js/node_modules/bn.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.2.0.tgz", + "integrity": "sha512-nlotTGN6qr+NpeCb8d5mdXR47r6GXiyoX4fEeqBF2u9wp/3XgzIwyftMX9TE+StQRJSOUJtyYr9MVk0rn2ftAg==" + }, + "node_modules/asn1js": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/asn1js/-/asn1js-3.0.5.tgz", + "integrity": "sha512-FVnvrKJwpt9LP2lAMl8qZswRNm3T4q9CON+bxldk2iwk3FFpuwhx2FfinyitizWHsVYyaY+y5JzDR0rCMV5yTQ==", + "license": "BSD-3-Clause", "dependencies": { - "graceful-fs": "^4.1.11" + "pvtsutils": "^1.3.2", + "pvutils": "^1.1.3", + "tslib": "^2.4.0" + }, + "engines": { + "node": ">=12.0.0" } }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "license": "MIT", + "node_modules/assert-plus": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.1.5.tgz", + "integrity": "sha512-brU24g7ryhRwGCI2y+1dGQmQXiZF7TtIj583S96y0jjdajIe6wn8BuXyELYhvD22dtIxDQVFk04YTJwwdwOYJw==", "engines": { - "node": ">=6" + "node": ">=0.8" } }, - "node_modules/kuler": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", - "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", - "license": "MIT" - }, - "node_modules/ky": { - "version": "0.33.3", - "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", - "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + "node_modules/assertion-error": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-1.1.0.tgz", + "integrity": "sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" + "node": "*" } }, - "node_modules/ky-universal": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", - "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "node-fetch": "^3.2.10" + "tslib": "^2.0.1" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" - }, - "peerDependencies": { - "ky": ">=0.31.4", - "web-streams-polyfill": ">=3.2.1" - }, - "peerDependenciesMeta": { - "web-streams-polyfill": { - "optional": true - } + "node": ">=4" } }, - "node_modules/ky-universal/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 12" + "dependencies": { + "retry": "0.13.1" } }, - "node_modules/ky-universal/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/auto-changelog": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/auto-changelog/-/auto-changelog-2.4.0.tgz", + "integrity": "sha512-vh17hko1c0ItsEcw6m7qPRf3m45u+XK5QyCrrBFViElZ8jnKrPC1roSznrd1fIB/0vR/zawdECCRJtTuqIXaJw==", + "dev": true, "license": "MIT", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "commander": "^7.2.0", + "handlebars": "^4.7.7", + "node-fetch": "^2.6.1", + "parse-github-url": "^1.0.2", + "semver": "^7.3.5" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "bin": { + "auto-changelog": "src/index.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "engines": { + "node": ">=8.3" } }, - "node_modules/latest-version": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-7.0.0.tgz", - "integrity": "sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==", + "node_modules/auto-changelog/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 10" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", "license": "MIT", "dependencies": { - "package-json": "^8.1.0" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "license": "MIT", + "node_modules/aws-sdk": { + "version": "2.1675.0", + "resolved": "https://registry.npmjs.org/aws-sdk/-/aws-sdk-2.1675.0.tgz", + "integrity": "sha512-gkqNAP0m3gDpnZCKL2OLdwAG+SjYT9MURGfTkixAWHIPDYD4OQf3sCcZNBTTTeOvOXus/tJIpgafKHD9DCIOCQ==", + "hasInstallScript": true, + "license": "Apache-2.0", "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "buffer": "4.9.2", + "events": "1.1.1", + "ieee754": "1.1.13", + "jmespath": "0.16.0", + "querystring": "0.2.0", + "sax": "1.2.1", + "url": "0.10.3", + "util": "^0.12.4", + "uuid": "8.0.0", + "xml2js": "0.6.2" }, "engines": { - "node": ">= 0.8.0" + "node": ">= 10.0.0" } }, - "node_modules/libp2p": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.8.3.tgz", - "integrity": "sha512-IpHKhR/gjiRcm3UqaHC3bEFsnBS62hTwXy60L8Uie8NZvvliVL6skmIBAODfma0+C7zvJhNKA8453SOmTeVTwQ==", - "license": "Apache-2.0 OR MIT", + "node_modules/aws-sdk/node_modules/buffer": { + "version": "4.9.2", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-4.9.2.tgz", + "integrity": "sha512-xq+q3SRMOxGivLhBNaUdC64hDTQwejJ+H0T/NB1XMtTVEwNTrfFF3gAxiyW0Bu/xWEGhjVKgUcMhCrUy2+uCWg==", + "license": "MIT", "dependencies": { - "@libp2p/crypto": "^4.1.8", - "@libp2p/interface": "^1.6.3", - "@libp2p/interface-internal": "^1.3.3", - "@libp2p/logger": "^4.0.19", - "@libp2p/multistream-select": "^5.1.16", - "@libp2p/peer-collections": "^5.2.8", - "@libp2p/peer-id": "^4.2.3", - "@libp2p/peer-id-factory": "^4.2.3", - "@libp2p/peer-store": "^10.1.4", - "@libp2p/utils": "^5.4.8", - "@multiformats/dns": "^1.0.6", - "@multiformats/multiaddr": "^12.2.3", - "@multiformats/multiaddr-matcher": "^1.2.1", - "any-signal": "^4.1.1", - "datastore-core": "^9.2.9", - "interface-datastore": "^8.2.11", - "it-merge": "^3.0.5", - "it-parallel": "^3.0.7", - "merge-options": "^3.0.4", - "multiformats": "^13.1.0", - "p-defer": "^4.0.1", - "progress-events": "^1.0.0", - "race-event": "^1.3.0", - "race-signal": "^1.0.2", - "uint8arrays": "^5.1.0" + "base64-js": "^1.0.2", + "ieee754": "^1.1.4", + "isarray": "^1.0.0" } }, - "node_modules/libp2p/node_modules/@multiformats/multiaddr": { - "version": "12.3.0", - "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", - "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "@chainsafe/netmask": "^2.0.0", - "@libp2p/interface": "^1.0.0", - "@multiformats/dns": "^1.0.3", - "multiformats": "^13.0.0", - "uint8-varint": "^2.0.1", - "uint8arrays": "^5.0.0" + "node_modules/aws-sdk/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "license": "MIT" + }, + "node_modules/aws-sdk/node_modules/uuid": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.0.0.tgz", + "integrity": "sha512-jOXGuXZAWdsTH7eZLtyXMqUb9EcWMGZNbL9YcGBJl4MH4nrxHmZJhEHvyLFrkxo+28uLb/NYRcStH48fnD0Vzw==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/libp2p/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", + "node_modules/axios": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.9.0.tgz", + "integrity": "sha512-re4CqKTJaURpzbLHtIi6XpDv20/CnpXOtjRY5/CU32L8gU8ek9UIivcfvSWvmKEngmVbrUtPpdDwWDWL7DNHvg==", "dependencies": { - "multiformats": "^13.0.0" + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "license": "MIT", + "node_modules/backoff": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/backoff/-/backoff-2.5.0.tgz", + "integrity": "sha512-wC5ihrnUXmR2douXmXLCe5O3zg3GKIyvRi/hi58a/XyRxVI+3/yM0PYueQOZXPXQ9pxBislYkw+sF9b7C/RuMA==", + "dependencies": { + "precond": "0.2" + }, "engines": { - "node": ">=10" + "node": ">= 0.6" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "license": "MIT" }, - "node_modules/listr": { - "version": "0.14.3", - "resolved": "https://registry.npmjs.org/listr/-/listr-0.14.3.tgz", - "integrity": "sha512-RmAl7su35BFd/xoMamRjpIE4j3v+L28o8CT5YhAXQJm1fD+1l9ngXY8JAQRJ+tFK2i5njvi0iRUKV09vPwA0iA==", + "node_modules/base-x": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/base-x/-/base-x-3.0.10.tgz", + "integrity": "sha512-7d0s06rR9rYaIWHkpfLIFICM/tkSVdoPC9qYAQRpxn9DdKNWNsKC0uk++akckyLq16Tx2WIinnZ6WRriAt6njQ==", "license": "MIT", "dependencies": { - "@samverschueren/stream-to-observable": "^0.3.0", - "is-observable": "^1.1.0", - "is-promise": "^2.1.0", - "is-stream": "^1.1.0", - "listr-silent-renderer": "^1.1.1", - "listr-update-renderer": "^0.5.0", - "listr-verbose-renderer": "^0.5.0", - "p-map": "^2.0.0", - "rxjs": "^6.3.3" - }, - "engines": { - "node": ">=6" + "safe-buffer": "^5.0.1" } }, - "node_modules/listr-silent-renderer": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/listr-silent-renderer/-/listr-silent-renderer-1.1.1.tgz", - "integrity": "sha512-L26cIFm7/oZeSNVhWB6faeorXhMg4HNlb/dS/7jHhr708jxlXrtrBWo4YUxZQkc6dGoxEAe6J/D3juTRBUzjtA==", + "node_modules/base58-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base58-js/-/base58-js-2.0.0.tgz", + "integrity": "sha512-nAV5d32QXuGcGptSApkKpC1gGakWBnfJMNjKrYTBh4tb0szfZF+ooueFLy8T4VrY+o4SrE/TyrtUnRZcwZchaA==", "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 8" } }, - "node_modules/listr-update-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-update-renderer/-/listr-update-renderer-0.5.0.tgz", - "integrity": "sha512-tKRsZpKz8GSGqoI/+caPmfrypiaq+OQCbd+CovEC24uk1h952lVj5sC7SqyFUm+OaJ5HN/a1YLt5cit2FMNsFA==", - "license": "MIT", + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/base64url": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/base64url/-/base64url-1.0.6.tgz", + "integrity": "sha512-YJUNcKuU8Df1LhS3s9OzoYCAOZYHgAUGnDlPgXFCaJZwRzZLcnQ7uM9KRY6EFaJRvzxZqw2w+wCDigwpe+4XUw==", "dependencies": { - "chalk": "^1.1.3", - "cli-truncate": "^0.2.1", - "elegant-spinner": "^1.0.1", - "figures": "^1.7.0", - "indent-string": "^3.0.0", - "log-symbols": "^1.0.2", - "log-update": "^2.3.0", - "strip-ansi": "^3.0.1" - }, - "engines": { - "node": ">=6" + "concat-stream": "~1.4.7", + "meow": "~2.0.0" }, - "peerDependencies": { - "listr": "^0.14.2" + "bin": { + "base64url": "bin/base64url" } }, - "node_modules/listr-update-renderer/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", - "license": "MIT", + "node_modules/base64url/node_modules/camelcase": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", + "integrity": "sha512-wzLkDa4K/mzI1OSITC+DUyjgIl/ETNHE9QvYgy6J6Jvqyyz4C0Xfd+lQhb19sX2jMpZV4IssUn0VDVmglV+s4g==", "engines": { "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", - "license": "MIT", + "node_modules/base64url/node_modules/camelcase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-1.0.0.tgz", + "integrity": "sha512-hwNYKTjJTlDabjJp2xn0h8bRmOpObvXVgYbQmR+Xob/EeBDtYea3xttjr5hqiWqLWtI3/6xO7x1ZAktQ9up+ag==", + "dependencies": { + "camelcase": "^1.0.1", + "map-obj": "^1.0.0" + }, "engines": { "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, + "node_modules/base64url/node_modules/get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", "engines": { "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", + "node_modules/base64url/node_modules/indent-string": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-1.2.2.tgz", + "integrity": "sha512-Z1vqf6lDC3f4N2mWqRywY6odjRatPNGDZgUr4DY9MLC14+Fp2/y+CI/RnNGlb8hD6ckscE/8DlZUwHUaiDBshg==", + "dependencies": { + "get-stdin": "^4.0.1", + "minimist": "^1.1.0", + "repeating": "^1.1.0" + }, + "bin": { + "indent-string": "cli.js" + }, "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/indent-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", - "integrity": "sha512-BYqTHXTGUIvg7t1r4sJNKcbDZkL92nkXA8YtRpbjFHRHGDL/NtUeiBJMeE60kIFN/Mg8ESaWQvftaYMGJzQZCQ==", - "license": "MIT", + "node_modules/base64url/node_modules/map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "engines": { - "node": ">=4" + "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", - "license": "MIT", + "node_modules/base64url/node_modules/meow": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-2.0.0.tgz", + "integrity": "sha512-X7rkdgy5Wxxp2MhCiAOkC3lqfkrJkt3iXvW4BY0rYQIn3GMvYvBTsAPEmHHTjTeVzBelrRcQa2F80rYfigz2+A==", "dependencies": { - "ansi-regex": "^2.0.0" + "camelcase-keys": "^1.0.0", + "indent-string": "^1.1.0", + "minimist": "^1.1.0", + "object-assign": "^1.0.0" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/listr-update-renderer/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", - "license": "MIT", + "node_modules/base64url/node_modules/object-assign": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-1.0.0.tgz", + "integrity": "sha512-LpUkixU1BUMQ6bwUHbOue4IGGbdRbxi+IEZw7zHniw78erlxrKGHbhfLbHIsI35LGbGqys6QOrjVmLnD2ie+1A==", "engines": { - "node": ">=0.8.0" + "node": ">=0.10.0" } }, - "node_modules/listr-verbose-renderer": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/listr-verbose-renderer/-/listr-verbose-renderer-0.5.0.tgz", - "integrity": "sha512-04PDPqSlsqIOaaaGZ+41vq5FejI9auqTInicFRndCBgE3bXG8D6W1I+mWhk+1nqbHmyhla/6BUrd5OSiHwKRXw==", + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, "license": "MIT", - "dependencies": { - "chalk": "^2.4.1", - "cli-cursor": "^2.1.0", - "date-fns": "^1.27.2", - "figures": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=10.0.0" } }, - "node_modules/listr-verbose-renderer/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", + "node_modules/bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==", "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" + "tweetnacl": "^0.14.3" } }, - "node_modules/listr-verbose-renderer/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/bech32": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/bech32/-/bech32-1.1.4.tgz", + "integrity": "sha512-s0IrSOzLlbvX7yp4WBfPITzpAU8sqQcpsmwXDiKwrG4r491vwCO/XpejasRNl0piBMe/DvP4Tz0mIS/X1DPJBQ==", + "license": "MIT" + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", "license": "MIT", "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" + "file-uri-to-path": "1.0.0" } }, - "node_modules/listr-verbose-renderer/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/bip66": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/bip66/-/bip66-1.1.5.tgz", + "integrity": "sha512-nemMHz95EmS38a26XbbdxIYj5csHd3RMP3H5bwQknX0WYHF01qhpufP42mLOwVICuH2JmhIhXiWs89MfUGL7Xw==", "license": "MIT", + "optional": true, "dependencies": { - "color-name": "1.1.3" + "safe-buffer": "^5.0.1" } }, - "node_modules/listr-verbose-renderer/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "node_modules/blakejs": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/blakejs/-/blakejs-1.2.1.tgz", + "integrity": "sha512-QXUSXI3QVc/gJME0dBpXrag1kbzOqCjCX8/b54ntNyW6sjtoqxqRk3LTmXzaJoh71zMsDCjM+47jS7XiwN/+fQ==", "license": "MIT" }, - "node_modules/listr-verbose-renderer/node_modules/date-fns": { - "version": "1.30.1", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-1.30.1.tgz", - "integrity": "sha512-hBSVCvSmWC+QypYObzwGOd9wqdDpOt+0wl0KbU+R+uuZBS1jN8VsD1ss3irQDknRj5NvxiTF6oj/nDRnN/UQNw==", + "node_modules/bn.js": { + "version": "4.12.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-4.12.0.tgz", + "integrity": "sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==", "license": "MIT" }, - "node_modules/listr-verbose-renderer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/body-parser": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "on-finished": "2.4.1", + "qs": "6.13.0", + "raw-body": "2.5.2", + "type-is": "~1.6.18", + "unpipe": "1.0.0" + }, "engines": { - "node": ">=0.8.0" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/listr-verbose-renderer/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", + "node_modules/body-parser/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" + "ms": "2.0.0" } }, - "node_modules/listr-verbose-renderer/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "node_modules/body-parser/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "license": "MIT" + }, + "node_modules/bowser": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", + "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", + "license": "MIT" + }, + "node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr-verbose-renderer/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/listr/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/listr/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/boxen/node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, "license": "MIT", "engines": { - "node": ">=6" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/listr/node_modules/rxjs": { - "version": "6.6.7", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.7.tgz", - "integrity": "sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.9.0" - }, + "node_modules/boxen/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", "engines": { - "npm": ">=2.0.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/listr/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, + "license": "MIT" }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "license": "MIT", "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/load-json-file/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=4" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^5.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "license": "MIT" - }, - "node_modules/lodash.camelcase": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", - "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", - "license": "MIT" - }, - "node_modules/lodash.capitalize": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", - "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", - "license": "MIT" - }, - "node_modules/lodash.clonedeep": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", - "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", - "license": "MIT" - }, - "node_modules/lodash.debounce": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", - "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==", - "license": "MIT" - }, - "node_modules/lodash.escaperegexp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", - "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", - "license": "MIT" - }, - "node_modules/lodash.flattendeep": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", - "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", - "license": "MIT" - }, - "node_modules/lodash.get": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", - "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", - "license": "MIT" - }, - "node_modules/lodash.ismatch": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", - "integrity": "sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "license": "MIT" - }, - "node_modules/lodash.truncate": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", - "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "license": "MIT" - }, - "node_modules/lodash.uniqby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", - "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-1.0.2.tgz", - "integrity": "sha512-mmPrW0Fh2fxOzdBbFv4g1m6pR72haFLPJ2G5SJEELf1y+iaQrDG6cWCPjy54RHYbZAt7X+ls690Kw62AdWXBzQ==", + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "license": "MIT", "dependencies": { - "chalk": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" + "balanced-match": "^1.0.0" } }, - "node_modules/log-symbols/node_modules/ansi-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", - "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "license": "MIT", + "dependencies": { + "fill-range": "^7.1.1" + }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/log-symbols/node_modules/ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==", + "node_modules/brorand": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/brorand/-/brorand-1.1.0.tgz", + "integrity": "sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==", + "license": "MIT" + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", + "dev": true, + "license": "ISC" + }, + "node_modules/browserify-aes": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/browserify-aes/-/browserify-aes-1.2.0.tgz", + "integrity": "sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==", "license": "MIT", - "engines": { - "node": ">=0.10.0" + "dependencies": { + "buffer-xor": "^1.0.3", + "cipher-base": "^1.0.0", + "create-hash": "^1.1.0", + "evp_bytestokey": "^1.0.3", + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==", + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "license": "MIT", "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" }, "engines": { - "node": ">=0.10.0" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/log-symbols/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "node_modules/bs58": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/bs58/-/bs58-4.0.1.tgz", + "integrity": "sha512-Ok3Wdf5vOIlBrgCvTq96gBkJw+JUEzdBgyaza5HLtPm7yTHkjRy8+JzNyHF7BHa0bNWOQIp3m5YF0nnFcOIKLw==", "license": "MIT", - "engines": { - "node": ">=0.8.0" + "dependencies": { + "base-x": "^3.0.2" } }, - "node_modules/log-symbols/node_modules/strip-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", - "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", + "node_modules/bs58check": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/bs58check/-/bs58check-2.1.2.tgz", + "integrity": "sha512-0TS1jicxdU09dwJMNZtVAfzPi6Q6QeN0pM1Fkzrjn+XYHvzMKPU3pHVpva+769iNVSfIYWf7LJ6WR+BuuMf8cA==", "license": "MIT", "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" + "bs58": "^4.0.0", + "create-hash": "^1.1.0", + "safe-buffer": "^5.1.2" } }, - "node_modules/log-symbols/node_modules/supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==", + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "engines": { - "node": ">=0.8.0" + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" } }, - "node_modules/log-update": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-2.3.0.tgz", - "integrity": "sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==", + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "node_modules/buffer-xor": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/buffer-xor/-/buffer-xor-1.0.3.tgz", + "integrity": "sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==", + "license": "MIT" + }, + "node_modules/buffer/node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "BSD-3-Clause" + }, + "node_modules/builtins": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-5.1.0.tgz", + "integrity": "sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-escapes": "^3.0.0", - "cli-cursor": "^2.0.0", - "wrap-ansi": "^3.0.1" - }, - "engines": { - "node": ">=4" + "semver": "^7.0.0" } }, - "node_modules/logform": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", - "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, "license": "MIT", "dependencies": { - "@colors/colors": "1.6.0", - "@types/triple-beam": "^1.3.2", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" + "run-applescript": "^7.0.0" }, "engines": { - "node": ">= 12.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/logform/node_modules/@colors/colors": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", - "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", - "license": "MIT", - "engines": { - "node": ">=0.1.90" + "node_modules/bunyan": { + "version": "1.8.15", + "resolved": "https://registry.npmjs.org/bunyan/-/bunyan-1.8.15.tgz", + "integrity": "sha512-0tECWShh6wUysgucJcBAoYegf3JJoZWibxdqhTm7OHPeT42qdjkZ29QCMcKwbgU1kiH+auSIasNRXMLWXafXig==", + "engines": [ + "node >=0.10.0" + ], + "bin": { + "bunyan": "bin/bunyan" + }, + "optionalDependencies": { + "dtrace-provider": "~0.8", + "moment": "^2.19.3", + "mv": "~2", + "safe-json-stringify": "~1" } }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">= 0.8" } }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "license": "MIT", + "node_modules/cacache": { + "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", + "license": "ISC", + "optional": true, "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" + "@npmcli/fs": "^1.0.0", + "@npmcli/move-file": "^1.0.1", + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^6.0.0", + "minipass": "^3.1.1", + "minipass-collect": "^1.0.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.2", + "mkdirp": "^1.0.3", + "p-map": "^4.0.0", + "promise-inflight": "^1.0.1", + "rimraf": "^3.0.2", + "ssri": "^8.0.1", + "tar": "^6.0.2", + "unique-filename": "^1.1.1" }, - "bin": { - "loose-envify": "cli.js" + "engines": { + "node": ">= 10" } }, - "node_modules/loupe": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", - "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "node_modules/cacache/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", + "optional": true, "dependencies": { - "get-func-name": "^2.0.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "license": "MIT", + "node_modules/cacache/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/cacache/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "license": "ISC", + "optional": true, "dependencies": { - "yallist": "^4.0.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=10" + "node": "*" } }, - "node_modules/lru-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", - "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", + "node_modules/cacache/node_modules/p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "license": "MIT", + "optional": true, "dependencies": { - "es5-ext": "~0.10.2" + "aggregate-error": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lunr": { - "version": "2.3.9", - "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", - "integrity": "sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==", - "license": "MIT" - }, - "node_modules/lzma-purejs-requirejs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/lzma-purejs-requirejs/-/lzma-purejs-requirejs-1.0.0.tgz", - "integrity": "sha512-nQgC+oDmBKPdWoC//X51scWTN5D3zdIL7oN+plbKjhZ+u5LAZsF0/yIiYTNtj+TjB1o6mp9R4Ey5DW6elBEu8w==", - "license": "BSD", + "node_modules/cacache/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "optional": true, "dependencies": { - "amdefine": "~0.1.0", - "commander": "~2.2.0" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, - "bin": { - "lzmajs": "bin/lzmajs" + "engines": { + "node": ">=10" } }, - "node_modules/lzma-purejs-requirejs/node_modules/commander": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz", - "integrity": "sha512-U6hBkeIsoeE81B+yas9uVF4YYVcVoBCwb1e314VPyvVQubFwvnTAuc1oUQ6VuMPYUS4Rf1gzr0wTVLvs4sb5Pw==", + "node_modules/cacache/node_modules/tar/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true, "engines": { - "node": ">= 0.6.x" + "node": ">=8" } }, - "node_modules/macos-release": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz", - "integrity": "sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==", + "node_modules/caching-transform": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/caching-transform/-/caching-transform-4.0.0.tgz", + "integrity": "sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "hasha": "^5.0.0", + "make-dir": "^3.0.0", + "package-hash": "^4.0.0", + "write-file-atomic": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "license": "MIT", "dependencies": { - "semver": "^6.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" } }, - "node_modules/make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "license": "ISC" + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } }, - "node_modules/make-fetch-happen": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", - "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", - "license": "ISC", - "optional": true, + "node_modules/caniuse-lite": { + "version": "1.0.30001651", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001651.tgz", + "integrity": "sha512-9Cf+Xv1jJNe1xPZLGuUXLNkE1BoDkqRqYyFJ9TDYSqhduqA4hu4oR9HluGoWYQC/aj8WHjsGVV+bwkh0+tegRg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/canonicalize": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/canonicalize/-/canonicalize-1.0.8.tgz", + "integrity": "sha512-0CNTVCLZggSh7bc5VkX5WWPWO+cyZbNd07IHIsSXLia/eAq+r836hgk+8BKoEh7949Mda87VUOitx5OddVj64A==", + "license": "Apache-2.0" + }, + "node_modules/chai": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/chai/-/chai-4.5.0.tgz", + "integrity": "sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==", + "dev": true, + "license": "MIT", "dependencies": { - "agentkeepalive": "^4.1.3", - "cacache": "^15.2.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^4.0.1", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^6.0.0", - "minipass": "^3.1.3", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^1.3.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.2", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^6.0.0", - "ssri": "^8.0.0" + "assertion-error": "^1.1.0", + "check-error": "^1.0.3", + "deep-eql": "^4.1.3", + "get-func-name": "^2.0.2", + "loupe": "^2.3.6", + "pathval": "^1.1.1", + "type-detect": "^4.1.0" }, "engines": { - "node": ">= 10" + "node": ">=4" } }, - "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", - "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "license": "MIT", - "optional": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">= 6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", - "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", + "node_modules/chalk-template": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/chalk-template/-/chalk-template-0.4.0.tgz", + "integrity": "sha512-/ghrgmhfY8RaSdeo43hNXxpoHAtxdbskUHjPpfqUWGttFgycUhYPGx3YZBCnUCvOa7Doivn1IZec3DEGFoMgLg==", "license": "MIT", - "optional": true, "dependencies": { - "@tootallnate/once": "1", - "agent-base": "6", - "debug": "4" + "chalk": "^4.1.2" }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/chalk-template?sponsor=1" } }, - "node_modules/make-fetch-happen/node_modules/socks-proxy-agent": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", - "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", + "node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "license": "MIT", - "optional": true, "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" + "has-flag": "^4.0.0" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/map-obj": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", - "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true, + "license": "MIT" + }, + "node_modules/check-error": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/check-error/-/check-error-1.0.3.tgz", + "integrity": "sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "get-func-name": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": "*" } }, - "node_modules/markdown-table": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz", - "integrity": "sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==", + "node_modules/chownr": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "license": "ISC", + "engines": { + "node": ">=10" + } + }, + "node_modules/cipher-base": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/cipher-base/-/cipher-base-1.0.4.tgz", + "integrity": "sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==", "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "dependencies": { + "inherits": "^2.0.1", + "safe-buffer": "^5.0.1" } }, - "node_modules/marked": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/marked/-/marked-4.3.0.tgz", - "integrity": "sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==", + "node_modules/clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "devOptional": true, "license": "MIT", - "bin": { - "marked": "bin/marked.js" - }, "engines": { - "node": ">= 12" + "node": ">=6" } }, - "node_modules/marked-terminal": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/marked-terminal/-/marked-terminal-5.2.0.tgz", - "integrity": "sha512-Piv6yNwAQXGFjZSaiNljyNFw7jKDdGrw70FSbtxEyldLsyeuV5ZHm/1wW++kWbrOF1VPnUgYOhB2oLL0ZpnekA==", + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, "license": "MIT", - "dependencies": { - "ansi-escapes": "^6.2.0", - "cardinal": "^2.1.1", - "chalk": "^5.2.0", - "cli-table3": "^0.6.3", - "node-emoji": "^1.11.0", - "supports-hyperlinks": "^2.3.0" - }, "engines": { - "node": ">=14.13.1 || >=16.0.0" + "node": ">=10" }, - "peerDependencies": { - "marked": "^1.0.0 || ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/marked-terminal/node_modules/ansi-escapes": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-6.2.1.tgz", - "integrity": "sha512-4nJ3yixlEthEJ9Rk4vPcdBRkZvQZlYyu8j4/Mqz5sgIkddmEnH2Yj2ZrnP9S3tQOvSNRUIgVNF/1yPpRAGNRig==", + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=14.16" + "node": ">=6" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/marked-terminal/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "license": "MIT", + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "dev": true, + "license": "ISC", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">= 12" } }, - "node_modules/matcher": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/matcher/-/matcher-3.0.0.tgz", - "integrity": "sha512-OkeDaAZ/bQCxeFAozM55PKcKU0yJMPGifLwV4Qgjitu+5MoAfSQN4lsLJeXZ1b8w0x+/Emda6MZgXS1jvsapng==", - "license": "MIT", - "optional": true, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "license": "ISC", "dependencies": { - "escape-string-regexp": "^4.0.0" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/matchit": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/matchit/-/matchit-1.1.0.tgz", - "integrity": "sha512-+nGYoOlfHmxe5BW5tE0EMJppXEwdSf8uBA1GTZC7Q77kbT35+VKLYJMzVNWCHSsga1ps1tPYFtFyvxvKzWVmMA==", + "node_modules/cliui/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "license": "MIT", - "dependencies": { - "@arr/every": "^1.0.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/md5.js": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", - "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "license": "MIT", "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" } }, - "node_modules/mdast-util-find-and-replace": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-2.2.2.tgz", - "integrity": "sha512-MTtdFRz/eMDHXzeK6W3dO7mXUlF82Gom4y0oOgvHhh/HXZAGvIQDUvQ0SuUx+j2tv44b8xTHOm8K/9OoRFnXKw==", + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/mdast-util-find-and-replace/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/mdast-util-from-markdown": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", - "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "node_modules/clone-regexp": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/clone-regexp/-/clone-regexp-3.0.0.tgz", + "integrity": "sha512-ujdnoq2Kxb8s3ItNBtnYeXdm07FcU0u8ARAT1lQ2YdMwQC+cdiXX8KoqMVuglztILivceTtp4ivqGSmEmhBUJw==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "mdast-util-to-string": "^3.1.0", - "micromark": "^3.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-decode-string": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "unist-util-stringify-position": "^3.0.0", - "uvu": "^0.5.0" + "is-regexp": "^3.0.0" + }, + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mdast-util-gfm": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz", - "integrity": "sha512-qvZ608nBppZ4icQlhQQIAdc6S3Ffj9RGmzwUKUWuEICFnd1LVkN3EktF7ZHAgfcEdvZB5owU9tQgt99e2TlLjg==", + "node_modules/clownface": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/clownface/-/clownface-2.0.3.tgz", + "integrity": "sha512-E76TBJ7CgU9+/5paSAvuNdMO+fzFThnvRVtidosktYppYkXM8V7tid8Ezzo8S1OmoWxKUam3yfkZlfCid4OiJQ==", "license": "MIT", "dependencies": { - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-gfm-autolink-literal": "^1.0.0", - "mdast-util-gfm-footnote": "^1.0.0", - "mdast-util-gfm-strikethrough": "^1.0.0", - "mdast-util-gfm-table": "^1.0.0", - "mdast-util-gfm-task-list-item": "^1.0.0", - "mdast-util-to-markdown": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "@rdfjs/data-model": "^2.0.1", + "@rdfjs/environment": "0 - 1", + "@rdfjs/namespace": "^2.0.0" } }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-1.0.3.tgz", - "integrity": "sha512-My8KJ57FYEy2W2LyNom4n3E7hKTuQk/0SES0u16tjA9Z3oFkF4RrC/hPAPgjlSpezsOvI8ObcXcElo92wn5IGA==", + "node_modules/code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha512-RpAVKQA5T63xEj6/giIbUEtZwJ4UFIc3ZtvEkiaUERylqe8xb5IvqcgOurZLahv93CLKfxcw5YI+DZcUBRyLXA==", "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "ccount": "^2.0.0", - "mdast-util-find-and-replace": "^2.0.0", - "micromark-util-character": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "optional": true, + "engines": { + "node": ">=0.10.0" } }, - "node_modules/mdast-util-gfm-footnote": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-1.0.2.tgz", - "integrity": "sha512-56D19KOGbE00uKVj3sgIykpwKL179QsVFwx/DCW0u/0+URsryacI4MAdNJl0dh+u2PSsD9FtxPFbHCzJ78qJFQ==", + "node_modules/color": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0", - "micromark-util-normalize-identifier": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "color-convert": "^1.9.3", + "color-string": "^1.6.0" } }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-1.0.3.tgz", - "integrity": "sha512-DAPhYzTYrRcXdMjUtUjKvW9z/FNAMTdU0ORyMcbmkwYNbKocDpdk+PX1L1dQgOID/+vVs1uBQ7ElrBQfZ0cuiQ==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" + "color-name": "~1.1.4" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=7.0.0" } }, - "node_modules/mdast-util-gfm-table": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-1.0.7.tgz", - "integrity": "sha512-jjcpmNnQvrmN5Vx7y7lEc2iIOEytYv7rTvu+MeyAsSHTASGCCRA79Igg2uKssgOs1i1po8s3plW0sTu1wkkLGg==", + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "license": "MIT" + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^1.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-1.0.2.tgz", - "integrity": "sha512-PFTA1gzfp1B1UaiJVyhJZA1rm0+Tzn690frc/L8vNX1Jop4STZgOE6bxUhnzdVSB+vm2GU1tIsuQcA9bxTQpMQ==", - "license": "MIT", - "dependencies": { - "@types/mdast": "^3.0.0", - "mdast-util-to-markdown": "^1.3.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/color-support": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", + "license": "ISC", + "optional": true, + "bin": { + "color-support": "bin.js" } }, - "node_modules/mdast-util-phrasing": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", - "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "node_modules/color/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "unist-util-is": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "color-name": "1.1.3" } }, - "node_modules/mdast-util-to-markdown": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", - "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "node_modules/color/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "license": "MIT" + }, + "node_modules/colorspace": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz", + "integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0", - "@types/unist": "^2.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^3.0.0", - "mdast-util-to-string": "^3.0.0", - "micromark-util-decode-string": "^1.0.0", - "unist-util-visit": "^4.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "color": "^3.1.3", + "text-hex": "1.0.x" } }, - "node_modules/mdast-util-to-string": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", - "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "license": "MIT", "dependencies": { - "@types/mdast": "^3.0.0" + "delayed-stream": "~1.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 0.8" } }, - "node_modules/mdast-util-toc": { - "version": "6.1.1", - "resolved": "https://registry.npmjs.org/mdast-util-toc/-/mdast-util-toc-6.1.1.tgz", - "integrity": "sha512-Er21728Kow8hehecK2GZtb7Ny3omcoPUVrmObiSUwmoRYVZaXLR751QROEFjR8W/vAQdHMLj49Lz20J55XaNpw==", + "node_modules/command-line-args": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/command-line-args/-/command-line-args-5.2.1.tgz", + "integrity": "sha512-H4UfQhZyakIjC74I9d34fGYDwk3XpSr17QhEd0Q3I9Xq1CETHo4Hcuo87WyWHpAF1aSLjLRf5lD9ZGX2qStUvg==", "license": "MIT", "dependencies": { - "@types/extend": "^3.0.0", - "@types/mdast": "^3.0.0", - "extend": "^3.0.0", - "github-slugger": "^2.0.0", - "mdast-util-to-string": "^3.1.0", - "unist-util-is": "^5.0.0", - "unist-util-visit": "^4.0.0" + "array-back": "^3.1.0", + "find-replace": "^3.0.0", + "lodash.camelcase": "^4.3.0", + "typical": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=4.0.0" } }, - "node_modules/media-typer": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", - "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "node_modules/command-line-usage": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/command-line-usage/-/command-line-usage-7.0.3.tgz", + "integrity": "sha512-PqMLy5+YGwhMh1wS04mVG44oqDsgyLRSKJBdOo1bnYhMKBW65gZF1dRp2OZRhiTjgUHljy99qkO7bsctLaw35Q==", "license": "MIT", + "dependencies": { + "array-back": "^6.2.2", + "chalk-template": "^0.4.0", + "table-layout": "^4.1.0", + "typical": "^7.1.1" + }, "engines": { - "node": ">= 0.6" + "node": ">=12.20.0" } }, - "node_modules/memoizee": { - "version": "0.4.17", - "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", - "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", - "license": "ISC", - "dependencies": { - "d": "^1.0.2", - "es5-ext": "^0.10.64", - "es6-weak-map": "^2.0.3", - "event-emitter": "^0.3.5", - "is-promise": "^2.2.2", - "lru-queue": "^0.1.0", - "next-tick": "^1.1.0", - "timers-ext": "^0.1.7" - }, + "node_modules/command-line-usage/node_modules/array-back": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/array-back/-/array-back-6.2.2.tgz", + "integrity": "sha512-gUAZ7HPyb4SJczXAMUXMGAvI976JoK3qEx9v1FTmeYuJj0IBiaKttG1ydtGKdkfqWkIkouke7nG8ufGy77+Cvw==", + "license": "MIT", "engines": { - "node": ">=0.12" + "node": ">=12.17" } }, - "node_modules/meow": { - "version": "8.1.2", - "resolved": "https://registry.npmjs.org/meow/-/meow-8.1.2.tgz", - "integrity": "sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==", + "node_modules/command-line-usage/node_modules/typical": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/typical/-/typical-7.3.0.tgz", + "integrity": "sha512-ya4mg/30vm+DOWfBg4YK3j2WD6TWtRkCbasOJr40CseYENzCUby/7rIvXA99JGsQHeNxLbnXdyLLxKSv3tauFw==", "license": "MIT", - "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12.17" } }, - "node_modules/meow/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/concat-stream": { + "version": "1.4.11", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.4.11.tgz", + "integrity": "sha512-X3JMh8+4je3U1cQpG87+f9lXHDrqcb2MVLg9L7o8b1UZ0DzhRrUpdn65ttzu10PpJPPI3MQNkis+oha6TSA9Mw==", + "engines": [ + "node >= 0.8" + ], "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" + "inherits": "~2.0.1", + "readable-stream": "~1.1.9", + "typedarray": "~0.0.5" } }, - "node_modules/meow/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", + "node_modules/concat-stream/node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/concat-stream/node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" } }, - "node_modules/meow/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/concat-stream/node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/concurrently": { + "version": "8.2.2", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.2.tgz", + "integrity": "sha512-1dP4gpXFhei8IOtlXRE/T/4H88ElHgTiUzh71YUmtjTEHMSRS2Z/fgOxHSxxusGHogsRfxNq1vyAwxSC+EVyDg==", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" }, "engines": { - "node": ">=6" + "node": "^14.13.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" } }, - "node_modules/meow/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "ini": "^1.3.4", + "proto-list": "~1.2.1" } }, - "node_modules/meow/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "license": "MIT", + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/meow/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "url": "https://github.com/yeoman/configstore?sponsor=1" } }, - "node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", + "node_modules/configstore/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-obj": "^2.0.0" + }, "engines": { "node": ">=10" }, @@ -21559,1697 +9292,1389 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/merge": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", - "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", - "license": "MIT" - }, - "node_modules/merge-descriptors": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", - "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "node_modules/configstore/node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, "license": "MIT", + "engines": { + "node": ">=12" + }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/merge-options": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", - "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", + "node_modules/console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "license": "ISC", + "optional": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "license": "MIT", "dependencies": { - "is-plain-obj": "^2.1.0" + "safe-buffer": "5.2.1" }, - "engines": { - "node": ">=10" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "license": "MIT" - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "node_modules/methods": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", - "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", - "license": "MIT", "engines": { "node": ">= 0.6" } }, - "node_modules/metro-react-native-babel-preset": { - "version": "0.64.0", - "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.64.0.tgz", - "integrity": "sha512-HcZ0RWQRuJfpPiaHyFQJzcym+/dDIVUPwUAXWoub/C4GkGu+mPjp8vqK6g0FxokCnnI2TK0gZTza2IDfiNNscQ==", - "license": "MIT", - "dependencies": { - "@babel/core": "^7.0.0", - "@babel/plugin-proposal-class-properties": "^7.0.0", - "@babel/plugin-proposal-export-default-from": "^7.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-proposal-object-rest-spread": "^7.0.0", - "@babel/plugin-proposal-optional-catch-binding": "^7.0.0", - "@babel/plugin-proposal-optional-chaining": "^7.0.0", - "@babel/plugin-syntax-dynamic-import": "^7.0.0", - "@babel/plugin-syntax-export-default-from": "^7.0.0", - "@babel/plugin-syntax-flow": "^7.2.0", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.0.0", - "@babel/plugin-syntax-optional-chaining": "^7.0.0", - "@babel/plugin-transform-arrow-functions": "^7.0.0", - "@babel/plugin-transform-block-scoping": "^7.0.0", - "@babel/plugin-transform-classes": "^7.0.0", - "@babel/plugin-transform-computed-properties": "^7.0.0", - "@babel/plugin-transform-destructuring": "^7.0.0", - "@babel/plugin-transform-exponentiation-operator": "^7.0.0", - "@babel/plugin-transform-flow-strip-types": "^7.0.0", - "@babel/plugin-transform-for-of": "^7.0.0", - "@babel/plugin-transform-function-name": "^7.0.0", - "@babel/plugin-transform-literals": "^7.0.0", - "@babel/plugin-transform-modules-commonjs": "^7.0.0", - "@babel/plugin-transform-object-assign": "^7.0.0", - "@babel/plugin-transform-parameters": "^7.0.0", - "@babel/plugin-transform-react-display-name": "^7.0.0", - "@babel/plugin-transform-react-jsx": "^7.0.0", - "@babel/plugin-transform-react-jsx-self": "^7.0.0", - "@babel/plugin-transform-react-jsx-source": "^7.0.0", - "@babel/plugin-transform-regenerator": "^7.0.0", - "@babel/plugin-transform-runtime": "^7.0.0", - "@babel/plugin-transform-shorthand-properties": "^7.0.0", - "@babel/plugin-transform-spread": "^7.0.0", - "@babel/plugin-transform-sticky-regex": "^7.0.0", - "@babel/plugin-transform-template-literals": "^7.0.0", - "@babel/plugin-transform-typescript": "^7.5.0", - "@babel/plugin-transform-unicode-regex": "^7.0.0", - "@babel/template": "^7.0.0", - "react-refresh": "^0.4.0" - }, - "peerDependencies": { - "@babel/core": "*" - } - }, - "node_modules/micromark": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", - "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "node_modules/content-disposition/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "github", + "url": "https://github.com/sponsors/feross" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "micromark-core-commonmark": "^1.0.1", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", - "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" + "type": "patreon", + "url": "https://www.patreon.com/feross" }, { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "type": "consulting", + "url": "https://feross.org/support" } ], + "license": "MIT" + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", "license": "MIT", - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-factory-destination": "^1.0.0", - "micromark-factory-label": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-factory-title": "^1.0.0", - "micromark-factory-whitespace": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-html-tag-name": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-subtokenize": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.1", - "uvu": "^0.5.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.3.tgz", - "integrity": "sha512-vb9OoHqrhCmbRidQv/2+Bc6pkP0FrtlhurxZofvOEy5o8RtuuvTq+RQ1Vw5ZDNrVraQZu3HixESqbG+0iKk/MQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/convert-hrtime": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/convert-hrtime/-/convert-hrtime-5.0.0.tgz", + "integrity": "sha512-lOETlkIeYSJWcbbcvjRKGxVMXJR+8+OQb/mTPbA4ObPMytYIsUbuOE0Jzy60hjARYszq1id0j8KgVhC+WGZVTg==", "license": "MIT", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^1.0.0", - "micromark-extension-gfm-footnote": "^1.0.0", - "micromark-extension-gfm-strikethrough": "^1.0.0", - "micromark-extension-gfm-table": "^1.0.0", - "micromark-extension-gfm-tagfilter": "^1.0.0", - "micromark-extension-gfm-task-list-item": "^1.0.0", - "micromark-util-combine-extensions": "^1.0.0", - "micromark-util-types": "^1.0.0" + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-1.0.5.tgz", - "integrity": "sha512-z3wJSLrDf8kRDOh2qBtoTRD53vJ+CWIyo7uyZuxf/JAbNJjiHsOpG1y5wxk8drtv3ETAHutCu6N3thkOOgueWg==", + "node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "dev": true, + "license": "MIT" + }, + "node_modules/cookie": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.1.tgz", + "integrity": "sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==", "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 0.6" } }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-1.1.2.tgz", - "integrity": "sha512-Yxn7z7SxgyGWRNa4wzf8AhYYWNrwl5q1Z8ii+CSTTIqVkmGZF1CElX2JI8g5yGoM3GAman9/PVCUFUSJ0kB/8Q==", + "node_modules/cookie-signature": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "license": "MIT" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", + "license": "MIT" + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", "license": "MIT", "dependencies": { - "micromark-core-commonmark": "^1.0.0", - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-normalize-identifier": "^1.0.0", - "micromark-util-sanitize-uri": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "object-assign": "^4", + "vary": "^1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 0.10" } }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-1.0.7.tgz", - "integrity": "sha512-sX0FawVE1o3abGk3vRjOH50L5TTLr3b5XMqnP9YDRb34M0v5OoZhG+OHFz1OffZ9dlwgpTBKaT4XW/AsUVnSDw==", - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-classify-character": "^1.0.0", - "micromark-util-resolve-all": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "node_modules/crc-32": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", + "license": "Apache-2.0", + "bin": { + "crc32": "bin/crc32.njs" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=0.8" } }, - "node_modules/micromark-extension-gfm-table": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-1.0.7.tgz", - "integrity": "sha512-3ZORTHtcSnMQEKtAOsBQ9/oHp9096pI/UvdPtN7ehKvrmZZ2+bbWhi0ln+I9drmwXMt5boocn6OlwQzNXeVeqw==", + "node_modules/create-hash": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/create-hash/-/create-hash-1.2.0.tgz", + "integrity": "sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==", "license": "MIT", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "cipher-base": "^1.0.1", + "inherits": "^2.0.1", + "md5.js": "^1.3.4", + "ripemd160": "^2.0.1", + "sha.js": "^2.4.0" } }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-1.0.2.tgz", - "integrity": "sha512-5XWB9GbAUSHTn8VPU8/1DBXMuKYT5uOgEjJb8gN3mW0PNW5OPHpSdojoqf+iq1xo7vWzw/P8bAHY0n6ijpXF7g==", + "node_modules/create-hmac": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/create-hmac/-/create-hmac-1.1.7.tgz", + "integrity": "sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==", "license": "MIT", "dependencies": { - "micromark-util-types": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "cipher-base": "^1.0.3", + "create-hash": "^1.1.0", + "inherits": "^2.0.1", + "ripemd160": "^2.0.0", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" } }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-1.0.5.tgz", - "integrity": "sha512-RMFXl2uQ0pNQy6Lun2YBYT9g9INXtWJULgbt01D/x8/6yJ2qpKyzdZD3pi6UIkzF++Da49xAelVKUeUMqd5eIQ==", - "license": "MIT", + "node_modules/create-require": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", + "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">= 8" } }, - "node_modules/micromark-factory-destination": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", - "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, "license": "MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-factory-label": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", - "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-factory-space": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", - "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", + "node_modules/d": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.2.tgz", + "integrity": "sha512-MOqHvMWF9/9MX6nza0KgvFH4HpMU0EF5uUDXqX/BtxtU8NfB0QzRtJ8Oe/6SuS4kbhyzVJwjd97EA4PKrzJ8bw==", + "license": "ISC", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-types": "^1.0.0" + "es5-ext": "^0.10.64", + "type": "^2.7.2" + }, + "engines": { + "node": ">=0.12" } }, - "node_modules/micromark-factory-title": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", - "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, "license": "MIT", - "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "engines": { + "node": ">= 14" } }, - "node_modules/micromark-factory-whitespace": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", - "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", "license": "MIT", "dependencies": { - "micromark-factory-space": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromark-util-character": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", - "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromark-util-chunked": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", - "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/micromark-util-classify-character": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", - "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", + "node_modules/datastore-core": { + "version": "9.2.9", + "resolved": "https://registry.npmjs.org/datastore-core/-/datastore-core-9.2.9.tgz", + "integrity": "sha512-wraWTPsbtdE7FFaVo3pwPuTB/zXsgwGGAm8BgBYwYAuzZCTS0MfXmd/HH1vR9s0/NFFjOVmBkGiWCvKxZ+QjVw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0" + "@libp2p/logger": "^4.0.6", + "err-code": "^3.0.1", + "interface-datastore": "^8.0.0", + "interface-store": "^5.0.0", + "it-drain": "^3.0.5", + "it-filter": "^3.0.4", + "it-map": "^3.0.5", + "it-merge": "^3.0.3", + "it-pipe": "^3.0.1", + "it-pushable": "^3.2.3", + "it-sort": "^3.0.4", + "it-take": "^3.0.4" } }, - "node_modules/micromark-util-combine-extensions": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", - "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT", - "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-types": "^1.0.0" - } + "node_modules/datastore-core/node_modules/interface-store": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-5.1.8.tgz", + "integrity": "sha512-7na81Uxkl0vqk0CBPO5PvyTkdaJBaezwUJGsMOz7riPOq0rJt+7W31iaopaMICWea/iykUsvNlPx/Tc+MxC3/w==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", - "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/micromark-util-decode-string": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", - "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", "license": "MIT", "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^1.0.0", - "micromark-util-decode-numeric-character-reference": "^1.0.0", - "micromark-util-symbol": "^1.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", - "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-html-tag-name": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", - "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true } - ], - "license": "MIT" + } }, - "node_modules/micromark-util-normalize-identifier": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", - "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/debug-fabulous": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/debug-fabulous/-/debug-fabulous-2.0.2.tgz", + "integrity": "sha512-XfAbX8/owqC+pjIg0/+3V1gp8TugJT7StX/TE1TYedjrRf7h7SgUAL/+gKoAQGPCLbSU5L5LPvDg4/cGn1E/WA==", "license": "MIT", "dependencies": { - "micromark-util-symbol": "^1.0.0" + "debug": "^4", + "memoizee": "0.4" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/micromark-util-resolve-all": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", - "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/debug-logfmt": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/debug-logfmt/-/debug-logfmt-1.2.2.tgz", + "integrity": "sha512-MAPU+m9lzLMkxI8k6/kJ/MGLGNtHOsW8RHriLkRxe/jFFW2iXmiGGUG9aYTRIWo5ejOFqLB10HqZ6+TN4toQFQ==", "license": "MIT", "dependencies": { - "micromark-util-types": "^1.0.0" + "@jclem/logfmt2": "~2.4.3", + "@kikobeats/time-span": "~1.0.2", + "debug-fabulous": "~2.0.2", + "pretty-ms": "~7.0.1" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/micromark-util-sanitize-uri": { + "node_modules/decamelize": { "version": "1.2.0", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", - "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "dev": true, "license": "MIT", - "dependencies": { - "micromark-util-character": "^1.0.0", - "micromark-util-encode": "^1.0.0", - "micromark-util-symbol": "^1.0.0" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/micromark-util-subtokenize": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", - "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "license": "MIT", "dependencies": { - "micromark-util-chunked": "^1.0.0", - "micromark-util-symbol": "^1.0.0", - "micromark-util-types": "^1.0.0", - "uvu": "^0.5.0" + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromark-util-symbol": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", - "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" - }, - "node_modules/micromark-util-types": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", - "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "license": "MIT" + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } }, - "node_modules/micromatch": { - "version": "4.0.7", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", - "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "node_modules/deep-eql": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-4.1.4.tgz", + "integrity": "sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==", + "dev": true, "license": "MIT", "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" + "type-detect": "^4.0.0" }, "engines": { - "node": ">=8.6" + "node": ">=6" } }, - "node_modules/mime": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-3.0.0.tgz", - "integrity": "sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==", + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", "license": "MIT", - "bin": { - "mime": "cli.js" - }, "engines": { - "node": ">=10.0.0" + "node": ">=4.0.0" } }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, "license": "MIT", "dependencies": { - "mime-db": "1.52.0" + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" }, "engines": { - "node": ">= 0.6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "license": "MIT", + "node_modules/default-gateway": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/default-gateway/-/default-gateway-7.2.2.tgz", + "integrity": "sha512-AD7TrdNNPXRZIGw63dw+lnGmT4v7ggZC5NHNJgAYWm5njrwoze1q5JSAW9YuLy2tjnoLUG/r8FEB93MCh9QJPg==", + "license": "BSD-2-Clause", + "dependencies": { + "execa": "^7.1.1" + }, "engines": { - "node": ">=4" + "node": ">= 16" } }, - "node_modules/min-indent": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", - "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", + "node_modules/default-gateway/node_modules/execa": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.1", + "human-signals": "^4.3.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^3.0.7", + "strip-final-newline": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", - "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", - "license": "MIT" - }, - "node_modules/minimatch": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", - "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/default-gateway/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "license": "MIT", "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "node_modules/default-gateway/node_modules/human-signals": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", + "license": "Apache-2.0", + "engines": { + "node": ">=14.18.0" + } + }, + "node_modules/default-gateway/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", "license": "MIT", + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimist-options": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", - "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "node_modules/default-require-extensions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/default-require-extensions/-/default-require-extensions-3.0.1.tgz", + "integrity": "sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==", + "dev": true, "license": "MIT", "dependencies": { - "arrify": "^1.0.1", - "is-plain-obj": "^1.1.0", - "kind-of": "^6.0.3" + "strip-bom": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimist-options/node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/default-require-extensions/node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/minipass": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", - "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", - "license": "ISC", + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "clone": "^1.0.2" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-collect": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", - "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" + "node": ">=10" } }, - "node_modules/minipass-fetch": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", - "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", "license": "MIT", - "optional": true, "dependencies": { - "minipass": "^3.1.0", - "minipass-sized": "^1.0.3", - "minizlib": "^2.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, - "optionalDependencies": { - "encoding": "^0.1.12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minipass-flush": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", - "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 8" - } - }, - "node_modules/minipass-pipeline": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", - "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", - "license": "ISC", - "optional": true, - "dependencies": { - "minipass": "^3.0.0" + "node": ">=12" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minipass-sized": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", - "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", - "license": "ISC", - "optional": true, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/minizlib": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", - "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" }, "engines": { - "node": ">= 8" + "node": ">= 14" } }, - "node_modules/mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "node_modules/delay": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/delay/-/delay-5.0.0.tgz", + "integrity": "sha512-ReEBKkIfe4ya47wlPYf/gu5ib6yUG0/Aez0JQZQz94kiWtRQvZIQbTiehsnwHvLSWJnQdhVeqYue7Id1dKr0qw==", "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, "engines": { "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mkdirp-classic": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", - "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", - "license": "MIT" + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } }, - "node_modules/mocha": { - "version": "10.7.3", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.7.3.tgz", - "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "node_modules/delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", "license": "MIT", - "dependencies": { - "ansi-colors": "^4.1.3", - "browser-stdout": "^1.3.1", - "chokidar": "^3.5.3", - "debug": "^4.3.5", - "diff": "^5.2.0", - "escape-string-regexp": "^4.0.0", - "find-up": "^5.0.0", - "glob": "^8.1.0", - "he": "^1.2.0", - "js-yaml": "^4.1.0", - "log-symbols": "^4.1.0", - "minimatch": "^5.1.6", - "ms": "^2.1.3", - "serialize-javascript": "^6.0.2", - "strip-json-comments": "^3.1.1", - "supports-color": "^8.1.1", - "workerpool": "^6.5.1", - "yargs": "^16.2.0", - "yargs-parser": "^20.2.9", - "yargs-unparser": "^2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, + "optional": true + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "license": "Apache-2.0", "engines": { - "node": ">= 14.0.0" + "node": ">=0.10" } }, - "node_modules/mocha/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" } }, - "node_modules/mocha/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/mocha/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "license": "MIT", + "node_modules/detect-libc": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz", + "integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==", + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/mocha/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "path-type": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "license": "ISC", + "node_modules/dns-over-http-resolver": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/dns-over-http-resolver/-/dns-over-http-resolver-2.1.3.tgz", + "integrity": "sha512-zjRYFhq+CsxPAouQWzOsxNMvEN+SHisjzhX8EMxd2Y0EG3thvn6wXQgMJLnTDImkhe4jhLbOQpXtL10nALBOSA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" + "debug": "^4.3.1", + "native-fetch": "^4.0.2", + "receptacle": "^1.3.2", + "undici": "^5.12.0" } }, - "node_modules/mocha/node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "node_modules/mocha/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/dns-packet": { + "version": "5.6.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "@leichtgewicht/ip-codec": "^2.0.1" }, "engines": { - "node": ">=8" - } - }, - "node_modules/mocha/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/mocha/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", + "node_modules/docker-modem": { + "version": "5.0.6", + "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-5.0.6.tgz", + "integrity": "sha512-ens7BiayssQz/uAxGzH8zGXCtiV24rRWXdjNha5V4zSOcxmAZsfGVm/PPFbwQdqEkDnhG+SyR9E3zSHUbOKXBQ==", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "debug": "^4.1.1", + "readable-stream": "^3.5.0", + "split-ca": "^1.0.1", + "ssh2": "^1.15.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 8.0" } }, - "node_modules/mocha/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "license": "MIT", + "node_modules/docker-modem/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/mocha/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", + "node_modules/docker-registry-client": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/docker-registry-client/-/docker-registry-client-3.4.0.tgz", + "integrity": "sha512-meDdmo1fa3r4D6WLSPb0CcRBpZs+egIHD8x+fydqAvsTomoUgMbcZDD77bVpBdkhwj+lDZUEWgvMCvAbcDBH4g==", + "dependencies": { + "assert-plus": "^0.1.5", + "base64url": "1.x >=1.0.4", + "bunyan": "1.x >=1.3.3", + "jwk-to-pem": "1.2.0", + "jws": "3.1.0", + "restify-clients": "^1.4.0", + "restify-errors": "^3.0.0", + "strsplit": "1.x", + "tough-cookie": "2.0.x", + "vasync": "1.x >=1.6.1", + "verror": "1.x >=1.6.0", + "www-authenticate": "0.6.x >=0.6.2" + }, "engines": { - "node": ">=10" + "node": ">=0.10" } }, - "node_modules/mock-property": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mock-property/-/mock-property-1.1.0.tgz", - "integrity": "sha512-1/JjbLoGwv87xVsutkX0XJc0M0W4kb40cZl/K41xtTViBOD9JuFPKfyMNTrLJ/ivYAd0aPqu/vduamXO0emTFQ==", - "license": "MIT", + "node_modules/dockerode": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-4.0.6.tgz", + "integrity": "sha512-FbVf3Z8fY/kALB9s+P9epCpWhfi/r0N2DgYYcYpsAUlaTxPjdsitsFobnltb+lyCgAIvf9C+4PSWlTnHlJMf1w==", "dependencies": { - "define-data-property": "^1.1.4", - "functions-have-names": "^1.2.3", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.2", - "hasown": "^2.0.2", - "isarray": "^2.0.5", - "object-inspect": "^1.13.2" + "@balena/dockerignore": "^1.0.2", + "@grpc/grpc-js": "^1.11.1", + "@grpc/proto-loader": "^0.7.13", + "docker-modem": "^5.0.6", + "protobufjs": "^7.3.2", + "tar-fs": "~2.1.2", + "uuid": "^10.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8.0" } }, - "node_modules/modify-values": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", - "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/dockerode/node_modules/uuid": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-10.0.0.tgz", + "integrity": "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ==", + "funding": [ + "https://github.com/sponsors/broofa", + "https://github.com/sponsors/ctavan" + ], + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/module-definition": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/module-definition/-/module-definition-3.4.0.tgz", - "integrity": "sha512-XxJ88R1v458pifaSkPNLUTdSPNVGMP2SXVncVmApGO+gAfrLANiYe6JofymCzVceGOMwQE2xogxBSc8uB7XegA==", - "license": "MIT", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "ast-module-types": "^3.0.0", - "node-source-walk": "^4.0.0" - }, - "bin": { - "module-definition": "bin/cli.js" + "esutils": "^2.0.2" }, "engines": { - "node": ">=6.0" + "node": ">=6.0.0" } }, - "node_modules/module-definition/node_modules/ast-module-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-3.0.0.tgz", - "integrity": "sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==", - "license": "MIT", + "node_modules/dotenv": { + "version": "16.4.5", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.4.5.tgz", + "integrity": "sha512-ZmdL2rui+eB2YwhsWzjInR8LldtZHGDoQ1ugH85ppHKwpUHL7j7rN0Ti9NCnGiQbhaZ11FpR+7ao1dNsmduNUg==", + "license": "BSD-2-Clause", "engines": { - "node": ">=6.0" + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" } }, - "node_modules/module-definition/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", + "node_modules/drbg.js": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/drbg.js/-/drbg.js-1.0.1.tgz", + "integrity": "sha512-F4wZ06PvqxYLFEZKkFxTDcns9oFNk34hvmJSEwdzsxVQ8YI5YaxtACgQatkYgv2VI2CFkUd2Y+xosPQnHv809g==", "license": "MIT", + "optional": true, "dependencies": { - "@babel/parser": "^7.0.0" + "browserify-aes": "^1.0.6", + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4" }, "engines": { - "node": ">=6.0" - } - }, - "node_modules/moment": { - "version": "2.30.1", - "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", - "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", - "license": "MIT", - "engines": { - "node": "*" + "node": ">=0.10" } }, - "node_modules/mortice": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/mortice/-/mortice-3.0.4.tgz", - "integrity": "sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ==", - "license": "Apache-2.0 OR MIT", + "node_modules/dtrace-provider": { + "version": "0.8.8", + "resolved": "https://registry.npmjs.org/dtrace-provider/-/dtrace-provider-0.8.8.tgz", + "integrity": "sha512-b7Z7cNtHPhH9EJhNNbbeqTcXB8LGFFZhq1PGgEvpeHlzd36bhbdTWoE/Ba/YguqpBSlAPKnARWhVlhunCMwfxg==", + "hasInstallScript": true, + "optional": true, "dependencies": { - "observable-webworkers": "^2.0.1", - "p-queue": "^8.0.1", - "p-timeout": "^6.0.0" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "license": "MIT", + "nan": "^2.14.0" + }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/mrmime": { + "node_modules/duplex-to": { "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", - "integrity": "sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==", - "license": "MIT", - "engines": { - "node": ">=10" - } + "resolved": "https://registry.npmjs.org/duplex-to/-/duplex-to-2.0.0.tgz", + "integrity": "sha512-f2nMnk11mwDptEFBTv2mcWHpF4ENAbuQ63yTiSy/99rG4Exsxsf0GJhJYq/AHF2cdMYswSx23LPuoijBflpquQ==", + "license": "MIT" }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true, "license": "MIT" }, - "node_modules/multicast-dns": { - "version": "7.2.5", - "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", - "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", - "license": "MIT", + "node_modules/eccrypto": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/eccrypto/-/eccrypto-1.1.6.tgz", + "integrity": "sha512-d78ivVEzu7Tn0ZphUUaL43+jVPKTMPFGtmgtz1D0LrFn7cY3K8CdrvibuLz2AAkHBLKZtR8DMbB2ukRYFk987A==", + "hasInstallScript": true, + "license": "CC0-1.0", "dependencies": { - "dns-packet": "^5.2.2", - "thunky": "^1.0.2" + "acorn": "7.1.1", + "elliptic": "6.5.4", + "es6-promise": "4.2.8", + "nan": "2.14.0" }, - "bin": { - "multicast-dns": "cli.js" + "optionalDependencies": { + "secp256k1": "3.7.1" } }, - "node_modules/multiformats": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", - "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/murmurhash3js-revisited": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", - "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", + "node_modules/eccrypto/node_modules/acorn": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.1.1.tgz", + "integrity": "sha512-add7dgA5ppRPxCFJoAGfMDi7PIBXq1RtGo7BhbLaxwrXPOmw8gq48Y9ozT01hUKy9byMjlR20EJhu5zlkErEkg==", "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, "engines": { - "node": ">=8.0.0" + "node": ">=0.4.0" } }, - "node_modules/mute-stream": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", - "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", - "license": "ISC" - }, - "node_modules/n3": { - "version": "1.20.4", - "resolved": "https://registry.npmjs.org/n3/-/n3-1.20.4.tgz", - "integrity": "sha512-tHeX1Q3/+ET38qYMOfErglmr5F2tzb+WCt82sZhCokzSZHe95CkHzyuzCMqcRB8hTpW+zn7HqamGXCWW/xXCHg==", + "node_modules/eccrypto/node_modules/secp256k1": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-3.7.1.tgz", + "integrity": "sha512-1cf8sbnRreXrQFdH6qsg2H71Xw91fCCS9Yp021GnUNJzWJS/py96fS4lHbnTnouLp08Xj6jBoBB6V78Tdbdu5g==", + "hasInstallScript": true, "license": "MIT", + "optional": true, "dependencies": { - "buffer": "^6.0.3", - "queue-microtask": "^1.1.2", - "readable-stream": "^4.0.0" + "bindings": "^1.5.0", + "bip66": "^1.1.5", + "bn.js": "^4.11.8", + "create-hash": "^1.2.0", + "drbg.js": "^1.0.1", + "elliptic": "^6.4.1", + "nan": "^2.14.0", + "safe-buffer": "^5.1.2" }, "engines": { - "node": ">=12.0" + "node": ">=4.0.0" } }, - "node_modules/nan": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", - "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", - "license": "MIT" + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "dependencies": { + "safe-buffer": "^5.0.1" + } }, - "node_modules/nanoid": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-4.0.2.tgz", - "integrity": "sha512-7ZtY5KTCNheRGfEFxnedV5zFiORN1+Y1N6zvPTnHQd8ENUvfaDBeuJDZb2bN/oXwXxu3qkTXDzy57W5vAmDTBw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/eciesjs": { + "version": "0.4.7", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.7.tgz", + "integrity": "sha512-4JQahOkBdDy27jjW4q3FJQigHlcwZXx28sCtBQkBamF2XUdcNXrInpgrr8h205MtVIS0CMHufyIKGVjtjxQ2ZA==", "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.js" + "dependencies": { + "@noble/ciphers": "^0.5.3", + "@noble/curves": "^1.4.0", + "@noble/hashes": "^1.4.0" }, "engines": { - "node": "^14 || ^16 || >=18" + "node": ">=16.0.0" } }, - "node_modules/napi-build-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", - "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", - "license": "MIT" - }, - "node_modules/native-fetch": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-4.0.2.tgz", - "integrity": "sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==", + "node_modules/eciesjs/node_modules/@noble/ciphers": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-0.5.3.tgz", + "integrity": "sha512-B0+6IIHiqEs3BPMT0hcRmHvEj2QHOLu+uwt+tqDDeVd0oyVzh7BPrDcPjRnV1PV/5LaknXJJQvOuRGR0zQJz+w==", "license": "MIT", - "peerDependencies": { - "undici": "*" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", "license": "MIT" }, - "node_modules/natural-compare-lite": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare-lite/-/natural-compare-lite-1.4.0.tgz", - "integrity": "sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==", - "license": "MIT" + "node_modules/electron-to-chromium": { + "version": "1.5.7", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.7.tgz", + "integrity": "sha512-6FTNWIWMxMy/ZY6799nBlPtF1DFDQ6VQJ7yyDP27SJNt5lwtQ5ufqVvHylb3fdQefvRcgA3fKcFMJi9OLwBRNw==", + "dev": true, + "license": "ISC" }, - "node_modules/negotiator": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", - "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "node_modules/elliptic": { + "version": "6.5.4", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-6.5.4.tgz", + "integrity": "sha512-iLhC6ULemrljPZb+QutR5TQGB+pdW6KGD5RSegS+8sorOZT+rdQFbsQFJgvN3eRqNALqJer4oQ16YvJHlU8hzQ==", "license": "MIT", - "engines": { - "node": ">= 0.6" + "dependencies": { + "bn.js": "^4.11.9", + "brorand": "^1.1.0", + "hash.js": "^1.0.0", + "hmac-drbg": "^1.0.1", + "inherits": "^2.0.4", + "minimalistic-assert": "^1.0.1", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "license": "MIT" - }, - "node_modules/nerf-dart": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/nerf-dart/-/nerf-dart-1.0.0.tgz", - "integrity": "sha512-EZSPZB70jiVsivaBLYDCyntd5eH8NTSMOn3rB+HxwdmKThGELLdYv8qVIMWvZEFy9w8ZZpW9h9OB32l1rGtj7g==", + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "license": "MIT" }, - "node_modules/nested-error-stacks": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nested-error-stacks/-/nested-error-stacks-2.1.1.tgz", - "integrity": "sha512-9iN1ka/9zmX1ZvLV9ewJYEk9h7RyRRtqdK0woXcqohu8EWIerfPUjYJPg0ULy0UqP7cslmdGc8xKDJcojlKiaw==", + "node_modules/enabled": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz", + "integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==", "license": "MIT" }, - "node_modules/netmask": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", - "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", "license": "MIT", "engines": { - "node": ">= 0.4.0" + "node": ">= 0.8" } }, - "node_modules/new-github-release-url": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", - "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", - "dev": true, + "node_modules/encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "license": "MIT", + "optional": true, "dependencies": { - "type-fest": "^2.5.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "iconv-lite": "^0.6.2" } }, - "node_modules/new-github-release-url/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "dev": true, - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" + "node_modules/encoding/node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "optional": true, + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/next-tick": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", - "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", - "license": "ISC" + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "license": "MIT", + "dependencies": { + "once": "^1.4.0" + } }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "node_modules/err-code": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==", "license": "MIT" }, - "node_modules/nise": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/nise/-/nise-5.1.9.tgz", - "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", - "license": "BSD-3-Clause", + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "license": "MIT", "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/text-encoding": "^0.7.2", - "just-extend": "^6.2.0", - "path-to-regexp": "^6.2.1" + "is-arrayish": "^0.2.1" } }, - "node_modules/nise/node_modules/path-to-regexp": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.2.tgz", - "integrity": "sha512-GQX3SSMokngb36+whdpRXE+3f9V8UzyAorlYvOGx87ufGHehNTn5lCxrKtLyZ4Yl/wEKnNnr98ZzOwwDZV5ogw==", - "license": "MIT" + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "node_modules/node-abi": { - "version": "3.65.0", - "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", - "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", + "node_modules/es-aggregate-error": { + "version": "1.0.13", + "resolved": "https://registry.npmjs.org/es-aggregate-error/-/es-aggregate-error-1.0.13.tgz", + "integrity": "sha512-KkzhUUuD2CUMqEc8JEqsXEMDHzDPE8RCjZeUBitsnB1eNcAJWQPiciKsMXe3Yytj4Flw1XLl46Qcf9OxvZha7A==", "license": "MIT", "dependencies": { - "semver": "^7.3.5" + "define-data-property": "^1.1.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "set-function-name": "^2.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-addon-api": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", - "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "node_modules/es-array-method-boxes-properly": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz", + "integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==", "license": "MIT" }, - "node_modules/node-cron": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.3.tgz", - "integrity": "sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==", - "license": "ISC", + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "license": "MIT", "dependencies": { - "uuid": "8.3.2" + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/node-cron/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" + "node": ">= 0.4" } }, - "node_modules/node-domexception": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", - "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/jimmywarting" - }, - { - "type": "github", - "url": "https://paypal.me/jimmywarting" - } - ], + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", "license": "MIT", "engines": { - "node": ">=10.5.0" + "node": ">= 0.4" } }, - "node_modules/node-emoji": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/node-emoji/-/node-emoji-1.11.0.tgz", - "integrity": "sha512-wo2DpQkQp7Sjm2A0cq+sN7EHKO6Sl0ctXeBdFZrL9T9+UywORbufTcTZxom8YqpLQt/FqNMUkOpkZrJVYSKD3A==", + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", "license": "MIT", "dependencies": { - "lodash": "^4.17.21" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, "license": "MIT", "dependencies": { - "whatwg-url": "^5.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" }, "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } + "node": ">= 0.4" } }, - "node_modules/node-gyp": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", - "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", "license": "MIT", - "optional": true, "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^9.1.0", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" + "es-errors": "^1.3.0" }, "engines": { - "node": ">= 10.12.0" + "node": ">= 0.4" } }, - "node_modules/node-gyp-build": { - "version": "4.8.1", - "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", - "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", "license": "MIT", - "bin": { - "node-gyp-build": "bin.js", - "node-gyp-build-optional": "optional.js", - "node-gyp-build-test": "build-test.js" + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" } }, - "node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "hasown": "^2.0.0" } }, - "node_modules/node-gyp/node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "license": "MIT", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "optional": true, "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/es5-ext": { + "version": "0.10.64", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.64.tgz", + "integrity": "sha512-p2snDhiLaXe6dahss1LddxqEm+SkuDvV8dnIQG0MWjyHpcMNfXKPE+/Cc0y+PhxJX3A4xGNeFCj5oc0BUh6deg==", + "hasInstallScript": true, "license": "ISC", - "optional": true, - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/node-preload": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", - "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", - "license": "MIT", - "dependencies": { - "process-on-spawn": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/node-releases": { - "version": "2.0.18", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", - "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", - "license": "MIT" - }, - "node_modules/node-source-walk": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-5.0.2.tgz", - "integrity": "sha512-Y4jr/8SRS5hzEdZ7SGuvZGwfORvNsSsNRwDXx5WisiqzsVfeftDvRgfeqWNgZvWSJbgubTRVRYBzK6UO+ErqjA==", - "license": "MIT", "dependencies": { - "@babel/parser": "^7.21.4" + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.3", + "esniff": "^2.0.1", + "next-tick": "^1.1.0" }, "engines": { - "node": ">=12" + "node": ">=0.10" } }, - "node_modules/nodeify-fetch": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/nodeify-fetch/-/nodeify-fetch-3.1.0.tgz", - "integrity": "sha512-ZV81vM//sEgTgXwVZlOONzcOCdTGQ53mV65FVSNXgPQHa8oCwRLtLbnGxL/1S/Yw90bcXUDKMz00jEnaeazo+A==", + "node_modules/es6-error": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/es6-error/-/es6-error-4.1.1.tgz", + "integrity": "sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==", + "dev": true, + "license": "MIT" + }, + "node_modules/es6-iterator": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "license": "MIT", "dependencies": { - "lodash": "^4.17.21", - "node-fetch": "^3.2.10", - "readable-stream": "^4.2.0", - "stream-chunks": "^1.0.0" + "d": "1", + "es5-ext": "^0.10.35", + "es6-symbol": "^3.1.1" } }, - "node_modules/nodeify-fetch/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", - "license": "MIT", - "engines": { - "node": ">= 12" - } + "node_modules/es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "license": "MIT" }, - "node_modules/nodeify-fetch/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", - "license": "MIT", + "node_modules/es6-symbol": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.4.tgz", + "integrity": "sha512-U9bFFjX8tFiATgtkJ1zg25+KviIXpgRvRHS8sau3GfhVzThRQrOeksPeT0BWW2MNZs1OEWJ1DPXOQMn0KKRkvg==", + "license": "ISC", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "d": "^1.0.2", + "ext": "^1.7.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": ">=0.12" } }, - "node_modules/nopt": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", - "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "node_modules/es6-weak-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "license": "ISC", - "optional": true, "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" - }, - "engines": { - "node": ">=6" + "d": "1", + "es5-ext": "^0.10.46", + "es6-iterator": "^2.0.3", + "es6-symbol": "^3.1.1" } }, - "node_modules/normalize-package-data": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", - "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^4.0.1", - "is-core-module": "^2.5.0", - "semver": "^7.3.4", - "validate-npm-package-license": "^3.0.1" - }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=6" } }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -23258,2302 +10683,2631 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm": { - "version": "8.19.4", - "resolved": "https://registry.npmjs.org/npm/-/npm-8.19.4.tgz", - "integrity": "sha512-3HANl8i9DKnUA89P4KEgVNN28EjSeDCmvEqbzOAuxCFDzdBZzjUl99zgnGpOUumvW5lvJo2HKcjrsc+tfyv1Hw==", - "bundleDependencies": [ - "@isaacs/string-locale-compare", - "@npmcli/arborist", - "@npmcli/ci-detect", - "@npmcli/config", - "@npmcli/fs", - "@npmcli/map-workspaces", - "@npmcli/package-json", - "@npmcli/run-script", - "abbrev", - "archy", - "cacache", - "chalk", - "chownr", - "cli-columns", - "cli-table3", - "columnify", - "fastest-levenshtein", - "fs-minipass", - "glob", - "graceful-fs", - "hosted-git-info", - "ini", - "init-package-json", - "is-cidr", - "json-parse-even-better-errors", - "libnpmaccess", - "libnpmdiff", - "libnpmexec", - "libnpmfund", - "libnpmhook", - "libnpmorg", - "libnpmpack", - "libnpmpublish", - "libnpmsearch", - "libnpmteam", - "libnpmversion", - "make-fetch-happen", - "minimatch", - "minipass", - "minipass-pipeline", - "mkdirp", - "mkdirp-infer-owner", - "ms", - "node-gyp", - "nopt", - "npm-audit-report", - "npm-install-checks", - "npm-package-arg", - "npm-pick-manifest", - "npm-profile", - "npm-registry-fetch", - "npm-user-validate", - "npmlog", - "opener", - "p-map", - "pacote", - "parse-conflict-json", - "proc-log", - "qrcode-terminal", - "read", - "read-package-json", - "read-package-json-fast", - "readdir-scoped-modules", - "rimraf", - "semver", - "ssri", - "tar", - "text-table", - "tiny-relative-date", - "treeverse", - "validate-npm-package-name", - "which", - "write-file-atomic" - ], - "license": "Artistic-2.0", - "workspaces": [ - "docs", - "smoke-tests", - "workspaces/*" - ], + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/config": "^4.2.1", - "@npmcli/fs": "^2.1.0", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/package-json": "^2.0.0", - "@npmcli/run-script": "^4.2.1", - "abbrev": "~1.1.1", - "archy": "~1.0.0", - "cacache": "^16.1.3", - "chalk": "^4.1.2", - "chownr": "^2.0.0", - "cli-columns": "^4.0.0", - "cli-table3": "^0.6.2", - "columnify": "^1.6.0", - "fastest-levenshtein": "^1.0.12", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "graceful-fs": "^4.2.10", - "hosted-git-info": "^5.2.1", - "ini": "^3.0.1", - "init-package-json": "^3.0.2", - "is-cidr": "^4.0.2", - "json-parse-even-better-errors": "^2.3.1", - "libnpmaccess": "^6.0.4", - "libnpmdiff": "^4.0.5", - "libnpmexec": "^4.0.14", - "libnpmfund": "^3.0.5", - "libnpmhook": "^8.0.4", - "libnpmorg": "^4.0.4", - "libnpmpack": "^4.1.3", - "libnpmpublish": "^6.0.5", - "libnpmsearch": "^5.0.4", - "libnpmteam": "^4.0.4", - "libnpmversion": "^3.0.7", - "make-fetch-happen": "^10.2.0", - "minimatch": "^5.1.0", - "minipass": "^3.1.6", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "ms": "^2.1.2", - "node-gyp": "^9.1.0", - "nopt": "^6.0.0", - "npm-audit-report": "^3.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.1.0", - "npm-pick-manifest": "^7.0.2", - "npm-profile": "^6.2.0", - "npm-registry-fetch": "^13.3.1", - "npm-user-validate": "^1.0.1", - "npmlog": "^6.0.2", - "opener": "^1.5.2", - "p-map": "^4.0.0", - "pacote": "^13.6.2", - "parse-conflict-json": "^2.0.2", - "proc-log": "^2.0.1", - "qrcode-terminal": "^0.12.0", - "read": "~1.0.7", - "read-package-json": "^5.0.2", - "read-package-json-fast": "^2.0.3", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.1", - "tar": "^6.1.11", - "text-table": "~0.2.0", - "tiny-relative-date": "^1.3.0", - "treeverse": "^2.0.0", - "validate-npm-package-name": "^4.0.0", - "which": "^2.0.2", - "write-file-atomic": "^4.0.1" + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" }, "bin": { - "npm": "bin/npm-cli.js", - "npx": "bin/npx-cli.js" + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" } }, - "node_modules/npm-package-json-lint": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/npm-package-json-lint/-/npm-package-json-lint-6.4.0.tgz", - "integrity": "sha512-cuXAJJB1Rdqz0UO6w524matlBqDBjcNt7Ru+RDIu4y6RI1gVqiWBnylrK8sPRk81gGBA0X8hJbDXolVOoTc+sA==", + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, "license": "MIT", "dependencies": { - "ajv": "^6.12.6", - "ajv-errors": "^1.0.1", - "chalk": "^4.1.2", - "cosmiconfig": "^8.0.0", - "debug": "^4.3.4", - "globby": "^11.1.0", + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", "ignore": "^5.2.0", - "is-plain-obj": "^3.0.0", - "jsonc-parser": "^3.2.0", - "log-symbols": "^4.1.0", - "meow": "^9.0.0", - "plur": "^4.0.0", - "semver": "^7.3.8", - "slash": "^3.0.0", - "strip-json-comments": "^3.1.1", - "type-fest": "^3.2.0", - "validate-npm-package-name": "^5.0.0" + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" }, "bin": { - "npmPkgJsonLint": "dist/cli.js" + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=14.0.0", - "npm": ">=6.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/npm-package-json-lint/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/eslint-config-oceanprotocol": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/eslint-config-oceanprotocol/-/eslint-config-oceanprotocol-2.0.4.tgz", + "integrity": "sha512-VdCtlvjTHzlhErmy8BYCGj3r4/iSJDxseeQTISe5DSyrWaPJpMv728KxBvu+WsCWfuI2WzErAX1HDE/HjmcI6w==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "eslint": "^8.23.1", + "eslint-config-prettier": "^8.5.0", + "eslint-config-standard": "^17.0.0", + "eslint-config-standard-react": "^11.0.1", + "eslint-plugin-import": "^2.26.0", + "eslint-plugin-n": "^15.3.0", + "eslint-plugin-node": "^11.1.0", + "eslint-plugin-prettier": "^4.2.1", + "eslint-plugin-promise": "^6.0.1", + "eslint-plugin-react": "^7.31.8", + "eslint-plugin-security": "^1.5.0" + } + }, + "node_modules/eslint-config-oceanprotocol/node_modules/eslint-config-prettier": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, + "node_modules/eslint-config-oceanprotocol/node_modules/eslint-plugin-prettier": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "prettier-linter-helpers": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=12.0.0" + }, + "peerDependencies": { + "eslint": ">=7.28.0", + "prettier": ">=2.0.0" + }, + "peerDependenciesMeta": { + "eslint-config-prettier": { + "optional": true + } + } + }, + "node_modules/eslint-config-prettier": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", + "integrity": "sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==", + "dev": true, + "license": "MIT", + "bin": { + "eslint-config-prettier": "bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/npm-package-json-lint/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", + "node_modules/eslint-config-standard": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-standard/-/eslint-config-standard-17.1.0.tgz", + "integrity": "sha512-IwHwmaBNtDK4zDHQukFDW5u/aTb8+meQWZvNFWkiGmbWjD6bqyuSSBxxXKkCftCUzc1zwCH2m/baCNDLGmuO5Q==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^8.0.1", + "eslint-plugin-import": "^2.25.2", + "eslint-plugin-n": "^15.0.0 || ^16.0.0 ", + "eslint-plugin-promise": "^6.0.0" } }, - "node_modules/npm-package-json-lint/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/eslint-config-standard-react": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-standard-react/-/eslint-config-standard-react-11.0.1.tgz", + "integrity": "sha512-4WlBynOqBZJRaX81CBcIGDHqUiqxvw4j/DbEIICz8QkMs3xEncoPgAoysiqCSsg71X92uhaBc8sgqB96smaMmg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^7.12.1", + "eslint-plugin-react": "^7.21.5" } }, - "node_modules/npm-package-json-lint/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" } }, - "node_modules/npm-package-json-lint/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "^2.1.1" } }, - "node_modules/npm-package-json-lint/node_modules/meow": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", - "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", + "node_modules/eslint-module-utils": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.8.1.tgz", + "integrity": "sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==", + "dev": true, "license": "MIT", "dependencies": { - "@types/minimist": "^1.2.0", - "camelcase-keys": "^6.2.2", - "decamelize": "^1.2.0", - "decamelize-keys": "^1.1.0", - "hard-rejection": "^2.1.0", - "minimist-options": "4.1.0", - "normalize-package-data": "^3.0.0", - "read-pkg-up": "^7.0.1", - "redent": "^3.0.0", - "trim-newlines": "^3.0.0", - "type-fest": "^0.18.0", - "yargs-parser": "^20.2.3" - }, - "engines": { - "node": ">=10" + "debug": "^3.2.7" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-package-json-lint/node_modules/meow/node_modules/type-fest": { - "version": "0.18.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", - "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=10" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependenciesMeta": { + "eslint": { + "optional": true + } } }, - "node_modules/npm-package-json-lint/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "^2.1.1" } }, - "node_modules/npm-package-json-lint/node_modules/p-locate": { + "node_modules/eslint-plugin-es": { "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-4.1.0.tgz", + "integrity": "sha512-GILhQTnjYE2WorX5Jyi5i4dz5ALWxBIdQECVQavL6s7cI76IZTDWleTHkxz/QT3kvcs2QlGHvKLYsSlPOlPXnQ==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/npm-package-json-lint/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/eslint-plugin-es/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">=8" + "node": ">=6" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/npm-package-json-lint/node_modules/read-pkg-up/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/eslint-plugin-es/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/npm-package-json-lint/node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/eslint-plugin-import": { + "version": "2.29.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.1.tgz", + "integrity": "sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "array-includes": "^3.1.7", + "array.prototype.findlastindex": "^1.2.3", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.8.0", + "hasown": "^2.0.0", + "is-core-module": "^2.13.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.7", + "object.groupby": "^1.0.1", + "object.values": "^1.1.7", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-package-json-lint/node_modules/type-fest": { - "version": "3.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", - "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", - "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">=14.16" + "node": ">=4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" } }, - "node_modules/npm-package-json-lint/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "ms": "^2.1.1" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm/node_modules/@colors/colors": { - "version": "1.5.0", - "inBundle": true, - "license": "MIT", - "optional": true, "engines": { - "node": ">=0.1.90" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/@gar/promisify": { - "version": "1.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/@isaacs/string-locale-compare": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/arborist": { - "version": "5.6.3", - "inBundle": true, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "@isaacs/string-locale-compare": "^1.1.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/map-workspaces": "^2.0.3", - "@npmcli/metavuln-calculator": "^3.0.1", - "@npmcli/move-file": "^2.0.0", - "@npmcli/name-from-folder": "^1.0.1", - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/package-json": "^2.0.0", - "@npmcli/query": "^1.2.0", - "@npmcli/run-script": "^4.1.3", - "bin-links": "^3.0.3", - "cacache": "^16.1.3", - "common-ancestor-path": "^1.0.1", - "hosted-git-info": "^5.2.1", - "json-parse-even-better-errors": "^2.3.1", - "json-stringify-nice": "^1.1.4", - "minimatch": "^5.1.0", - "mkdirp": "^1.0.4", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "npm-install-checks": "^5.0.0", - "npm-package-arg": "^9.0.0", - "npm-pick-manifest": "^7.0.2", - "npm-registry-fetch": "^13.0.0", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "parse-conflict-json": "^2.0.1", - "proc-log": "^2.0.0", - "promise-all-reject-late": "^1.0.0", - "promise-call-limit": "^1.0.1", - "read-package-json-fast": "^2.0.2", - "readdir-scoped-modules": "^1.1.0", - "rimraf": "^3.0.2", - "semver": "^7.3.7", - "ssri": "^9.0.0", - "treeverse": "^2.0.0", - "walk-up-path": "^1.0.0" - }, - "bin": { - "arborist": "bin/index.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/@npmcli/ci-detect": { - "version": "2.0.0", - "inBundle": true, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/npm/node_modules/@npmcli/config": { - "version": "4.2.2", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-n": { + "version": "15.7.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-n/-/eslint-plugin-n-15.7.0.tgz", + "integrity": "sha512-jDex9s7D/Qial8AGVIHq4W7NswpUD5DPDL2RH8Lzd9EloWUuvUkHfv4FRLMipH5q2UtyurorBkPeNi1wVWNh3Q==", + "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/map-workspaces": "^2.0.2", - "ini": "^3.0.0", - "mkdirp-infer-owner": "^2.0.0", - "nopt": "^6.0.0", - "proc-log": "^2.0.0", - "read-package-json-fast": "^2.0.3", - "semver": "^7.3.5", - "walk-up-path": "^1.0.0" + "builtins": "^5.0.1", + "eslint-plugin-es": "^4.1.0", + "eslint-utils": "^3.0.0", + "ignore": "^5.1.1", + "is-core-module": "^2.11.0", + "minimatch": "^3.1.2", + "resolve": "^1.22.1", + "semver": "^7.3.8" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12.22.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=7.0.0" } }, - "node_modules/npm/node_modules/@npmcli/disparity-colors": { - "version": "2.0.0", - "inBundle": true, + "node_modules/eslint-plugin-n/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-n/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "ansi-styles": "^4.3.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/@npmcli/fs": { - "version": "2.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-node": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-node/-/eslint-plugin-node-11.1.0.tgz", + "integrity": "sha512-oUwtPJ1W0SKD0Tr+wqu92c5xuCeQqB3hSCHasn/ZgjFdA9iDGNkNf2Zi9ztY7X+hNuMib23LNGRm6+uN+KLE3g==", + "dev": true, + "license": "MIT", "dependencies": { - "@gar/promisify": "^1.1.3", - "semver": "^7.3.5" + "eslint-plugin-es": "^3.0.0", + "eslint-utils": "^2.0.0", + "ignore": "^5.1.1", + "minimatch": "^3.0.4", + "resolve": "^1.10.1", + "semver": "^6.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8.10.0" + }, + "peerDependencies": { + "eslint": ">=5.16.0" } }, - "node_modules/npm/node_modules/@npmcli/git": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-node/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", "dependencies": { - "@npmcli/promise-spawn": "^3.0.0", - "lru-cache": "^7.4.4", - "mkdirp": "^1.0.4", - "npm-pick-manifest": "^7.0.0", - "proc-log": "^2.0.0", - "promise-inflight": "^1.0.1", - "promise-retry": "^2.0.1", - "semver": "^7.3.5", - "which": "^2.0.2" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-node/node_modules/eslint-plugin-es": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-es/-/eslint-plugin-es-3.0.1.tgz", + "integrity": "sha512-GUmAsJaN4Fc7Gbtl8uOBlayo2DqhwWvEzykMHSCZHU3XdJ+NSzzZcVhXh3VxX5icqQ+oQdIEawXX8xkR3mIFmQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-utils": "^2.0.0", + "regexpp": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=4.19.1" } }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-node/node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "license": "MIT", "dependencies": { - "npm-bundled": "^1.1.1", - "npm-normalize-package-bin": "^1.0.1" - }, - "bin": { - "installed-package-contents": "index.js" + "eslint-visitor-keys": "^1.1.0" }, "engines": { - "node": ">= 10" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/npm/node_modules/@npmcli/installed-package-contents/node_modules/npm-bundled": { - "version": "1.1.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" + "node_modules/eslint-plugin-node/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=4" } }, - "node_modules/npm/node_modules/@npmcli/map-workspaces": { - "version": "2.0.4", - "inBundle": true, + "node_modules/eslint-plugin-node/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "@npmcli/name-from-folder": "^1.0.1", - "glob": "^8.0.1", - "minimatch": "^5.0.1", - "read-package-json-fast": "^2.0.3" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/@npmcli/metavuln-calculator": { - "version": "3.1.1", - "inBundle": true, + "node_modules/eslint-plugin-node/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "license": "ISC", - "dependencies": { - "cacache": "^16.0.0", - "json-parse-even-better-errors": "^2.3.1", - "pacote": "^13.0.3", - "semver": "^7.3.5" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/npm/node_modules/@npmcli/move-file": { - "version": "2.0.1", - "inBundle": true, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.1.tgz", + "integrity": "sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==", + "dev": true, "license": "MIT", "dependencies": { - "mkdirp": "^1.0.4", - "rimraf": "^3.0.2" + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } } }, - "node_modules/npm/node_modules/@npmcli/name-from-folder": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/@npmcli/node-gyp": { - "version": "2.0.0", - "inBundle": true, + "node_modules/eslint-plugin-promise": { + "version": "6.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-promise/-/eslint-plugin-promise-6.6.0.tgz", + "integrity": "sha512-57Zzfw8G6+Gq7axm2Pdo3gW/Rx3h9Yywgn61uE/3elTCOePEHVrn2i5CdfBwA1BLK0Q0WqctICIUSqXZW/VprQ==", + "dev": true, "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0 || ^9.0.0" } }, - "node_modules/npm/node_modules/@npmcli/package-json": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-react": { + "version": "7.35.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", + "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", + "dev": true, + "license": "MIT", "dependencies": { - "json-parse-even-better-errors": "^2.3.1" + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, - "node_modules/npm/node_modules/@npmcli/promise-spawn": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", "dependencies": { - "infer-owner": "^1.0.4" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/npm/node_modules/@npmcli/query": { - "version": "1.2.0", - "inBundle": true, - "license": "ISC", + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "npm-package-arg": "^9.1.0", - "postcss-selector-parser": "^6.0.10", - "semver": "^7.3.7" + "esutils": "^2.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/@npmcli/run-script": { - "version": "4.2.1", - "inBundle": true, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "@npmcli/node-gyp": "^2.0.0", - "@npmcli/promise-spawn": "^3.0.0", - "node-gyp": "^9.0.0", - "read-package-json-fast": "^2.0.3", - "which": "^2.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/@tootallnate/once": { - "version": "2.0.0", - "inBundle": true, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, "license": "MIT", - "engines": { - "node": ">= 10" + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/abbrev": { - "version": "1.1.1", - "inBundle": true, - "license": "ISC" + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } }, - "node_modules/npm/node_modules/agent-base": { - "version": "6.0.2", - "inBundle": true, - "license": "MIT", + "node_modules/eslint-plugin-security": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-security/-/eslint-plugin-security-1.7.1.tgz", + "integrity": "sha512-sMStceig8AFglhhT2LqlU5r+/fn9OwsA72O5bBuQVTssPCdQAOQzL+oMn/ZcpeUY6KcNfLJArgcrsSULNjYYdQ==", + "dev": true, + "license": "Apache-2.0", "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" + "safe-regex": "^2.1.1" } }, - "node_modules/npm/node_modules/agentkeepalive": { - "version": "4.2.1", - "inBundle": true, - "license": "MIT", + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "debug": "^4.1.0", - "depd": "^1.1.2", - "humanize-ms": "^1.2.1" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" }, "engines": { - "node": ">= 8.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/npm/node_modules/aggregate-error": { - "version": "3.1.0", - "inBundle": true, + "node_modules/eslint-utils": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-3.0.0.tgz", + "integrity": "sha512-uuQC43IGctw68pJA1RgbQS8/NP7rch6Cwd4j3ZBtgo4/8Flj4eGE7ZYSZRN3iq5pVUv6GPdW5Z1RFleo84uLDA==", + "dev": true, "license": "MIT", "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "eslint-visitor-keys": "^2.0.0" }, "engines": { - "node": ">=8" + "node": "^10.0.0 || ^12.0.0 || >= 14.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=5" } }, - "node_modules/npm/node_modules/ansi-regex": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/npm/node_modules/ansi-styles": { - "version": "4.3.0", - "inBundle": true, - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", "engines": { - "node": ">=8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://opencollective.com/eslint" } }, - "node_modules/npm/node_modules/aproba": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/archy": { - "version": "1.0.0", - "inBundle": true, - "license": "MIT" + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/npm/node_modules/are-we-there-yet": { - "version": "3.0.1", - "inBundle": true, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { - "delegates": "^1.0.0", - "readable-stream": "^3.6.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "*" } }, - "node_modules/npm/node_modules/asap": { - "version": "2.0.6", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/balanced-match": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/bin-links": { - "version": "3.0.3", - "inBundle": true, + "node_modules/esniff": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esniff/-/esniff-2.0.1.tgz", + "integrity": "sha512-kTUIGKQ/mDPFoJ0oVfcmyJn4iBDRptjNVIzwIFR7tqWXdVI9xfA2RMwY/gbSpJG3lkdWNEjLap/NqVHZiJsdfg==", "license": "ISC", "dependencies": { - "cmd-shim": "^5.0.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0", - "read-cmd-shim": "^3.0.0", - "rimraf": "^3.0.0", - "write-file-atomic": "^4.0.0" + "d": "^1.0.1", + "es5-ext": "^0.10.62", + "event-emitter": "^0.3.5", + "type": "^2.7.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10" } }, - "node_modules/npm/node_modules/bin-links/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/npm/node_modules/binary-extensions": { - "version": "2.2.0", - "inBundle": true, - "license": "MIT", + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "license": "BSD-2-Clause", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/brace-expansion": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/npm/node_modules/builtins": { - "version": "5.0.1", - "inBundle": true, - "license": "MIT", - "dependencies": { - "semver": "^7.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/cacache": { - "version": "16.1.3", - "inBundle": true, - "license": "ISC", + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", "dependencies": { - "@npmcli/fs": "^2.1.0", - "@npmcli/move-file": "^2.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "glob": "^8.0.1", - "infer-owner": "^1.0.4", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "mkdirp": "^1.0.4", - "p-map": "^4.0.0", - "promise-inflight": "^1.0.1", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11", - "unique-filename": "^2.0.0" + "estraverse": "^5.1.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.10" } }, - "node_modules/npm/node_modules/chalk": { - "version": "4.1.2", - "inBundle": true, - "license": "MIT", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=4.0" } }, - "node_modules/npm/node_modules/chownr": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", "engines": { - "node": ">=10" + "node": ">=4.0" } }, - "node_modules/npm/node_modules/cidr-regex": { - "version": "3.1.1", - "inBundle": true, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, "license": "BSD-2-Clause", - "dependencies": { - "ip-regex": "^4.1.0" - }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/clean-stack": { - "version": "2.2.0", - "inBundle": true, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "license": "MIT", "engines": { - "node": ">=6" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/cli-columns": { - "version": "4.0.0", - "inBundle": true, + "node_modules/eth-crypto": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/eth-crypto/-/eth-crypto-2.6.0.tgz", + "integrity": "sha512-GCX4ffFYRUGgnuWR5qxcZIRQJ1KEqPFiyXU9yVy7s6dtXIMlUXZQ2h+5ID6rFaOHWbpJbjfkC6YdhwtwRYCnug==", "license": "MIT", "dependencies": { - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" + "@babel/runtime": "7.20.13", + "@ethereumjs/tx": "3.5.2", + "@types/bn.js": "5.1.1", + "eccrypto": "1.1.6", + "ethereumjs-util": "7.1.5", + "ethers": "5.7.2", + "secp256k1": "5.0.0" }, - "engines": { - "node": ">= 10" + "funding": { + "url": "https://github.com/sponsors/pubkey" } }, - "node_modules/npm/node_modules/cli-table3": { - "version": "0.6.2", - "inBundle": true, + "node_modules/eth-crypto/node_modules/@babel/runtime": { + "version": "7.20.13", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz", + "integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==", "license": "MIT", "dependencies": { - "string-width": "^4.2.0" + "regenerator-runtime": "^0.13.11" }, "engines": { - "node": "10.* || >= 12.*" - }, - "optionalDependencies": { - "@colors/colors": "1.5.0" + "node": ">=6.9.0" } }, - "node_modules/npm/node_modules/clone": { - "version": "1.0.4", - "inBundle": true, + "node_modules/eth-crypto/node_modules/ethers": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-5.7.2.tgz", + "integrity": "sha512-wswUsmWo1aOK8rR7DIKiWSw9DbLWe6x98Jrn8wcTflTVvaXhAMaB5zGAXy0GYQEQp9iO1iSHWVyARQm11zUtyg==", + "funding": [ + { + "type": "individual", + "url": "https://gitcoin.co/grants/13/ethersjs-complete-simple-and-tiny-2" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], "license": "MIT", - "engines": { - "node": ">=0.8" + "dependencies": { + "@ethersproject/abi": "5.7.0", + "@ethersproject/abstract-provider": "5.7.0", + "@ethersproject/abstract-signer": "5.7.0", + "@ethersproject/address": "5.7.0", + "@ethersproject/base64": "5.7.0", + "@ethersproject/basex": "5.7.0", + "@ethersproject/bignumber": "5.7.0", + "@ethersproject/bytes": "5.7.0", + "@ethersproject/constants": "5.7.0", + "@ethersproject/contracts": "5.7.0", + "@ethersproject/hash": "5.7.0", + "@ethersproject/hdnode": "5.7.0", + "@ethersproject/json-wallets": "5.7.0", + "@ethersproject/keccak256": "5.7.0", + "@ethersproject/logger": "5.7.0", + "@ethersproject/networks": "5.7.1", + "@ethersproject/pbkdf2": "5.7.0", + "@ethersproject/properties": "5.7.0", + "@ethersproject/providers": "5.7.2", + "@ethersproject/random": "5.7.0", + "@ethersproject/rlp": "5.7.0", + "@ethersproject/sha2": "5.7.0", + "@ethersproject/signing-key": "5.7.0", + "@ethersproject/solidity": "5.7.0", + "@ethersproject/strings": "5.7.0", + "@ethersproject/transactions": "5.7.0", + "@ethersproject/units": "5.7.0", + "@ethersproject/wallet": "5.7.0", + "@ethersproject/web": "5.7.1", + "@ethersproject/wordlists": "5.7.0" } }, - "node_modules/npm/node_modules/cmd-shim": { - "version": "5.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/eth-crypto/node_modules/regenerator-runtime": { + "version": "0.13.11", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", + "license": "MIT" + }, + "node_modules/ethereum-cryptography": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/ethereum-cryptography/-/ethereum-cryptography-0.1.3.tgz", + "integrity": "sha512-w8/4x1SGGzc+tO97TASLja6SLd3fRIK2tLVcV2Gx4IB21hE19atll5Cq9o3d0ZmAYC/8aw0ipieTSiekAea4SQ==", + "license": "MIT", + "dependencies": { + "@types/pbkdf2": "^3.0.0", + "@types/secp256k1": "^4.0.1", + "blakejs": "^1.1.0", + "browserify-aes": "^1.2.0", + "bs58check": "^2.1.2", + "create-hash": "^1.2.0", + "create-hmac": "^1.1.7", + "hash.js": "^1.1.7", + "keccak": "^3.0.0", + "pbkdf2": "^3.0.17", + "randombytes": "^2.1.0", + "safe-buffer": "^5.1.2", + "scrypt-js": "^3.0.0", + "secp256k1": "^4.0.1", + "setimmediate": "^1.0.5" + } + }, + "node_modules/ethereum-cryptography/node_modules/secp256k1": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-4.0.3.tgz", + "integrity": "sha512-NLZVf+ROMxwtEj3Xa562qgv2BK5e2WNmXPiOdVIPLgs6lyTzMvBq0aWTYMI5XCP9jZMVKOcqZLw/Wc4vDkuxhA==", + "hasInstallScript": true, + "license": "MIT", "dependencies": { - "mkdirp-infer-owner": "^2.0.0" + "elliptic": "^6.5.4", + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10.0.0" } }, - "node_modules/npm/node_modules/color-convert": { - "version": "2.0.1", - "inBundle": true, - "license": "MIT", + "node_modules/ethereumjs-util": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/ethereumjs-util/-/ethereumjs-util-7.1.5.tgz", + "integrity": "sha512-SDl5kKrQAudFBUe5OJM9Ac6WmMyYmXX/6sTmLZ3ffG2eY6ZIGBes3pEDxNN6V72WyOw4CPD5RomKdsa8DAAwLg==", + "license": "MPL-2.0", "dependencies": { - "color-name": "~1.1.4" + "@types/bn.js": "^5.1.0", + "bn.js": "^5.1.2", + "create-hash": "^1.1.2", + "ethereum-cryptography": "^0.1.3", + "rlp": "^2.2.4" }, "engines": { - "node": ">=7.0.0" + "node": ">=10.0.0" } }, - "node_modules/npm/node_modules/color-name": { - "version": "1.1.4", - "inBundle": true, + "node_modules/ethereumjs-util/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", "license": "MIT" }, - "node_modules/npm/node_modules/color-support": { - "version": "1.1.3", - "inBundle": true, - "license": "ISC", - "bin": { - "color-support": "bin.js" + "node_modules/ethers": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/ethers/-/ethers-6.14.1.tgz", + "integrity": "sha512-JnFiPFi3sK2Z6y7jZ3qrafDMwiXmU+6cNZ0M+kPq+mTy9skqEzwqAdFW3nb/em2xjlIVXX6Lz8ID6i3LmS4+fQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/ethers-io/" + }, + { + "type": "individual", + "url": "https://www.buymeacoffee.com/ricmoo" + } + ], + "dependencies": { + "@adraffy/ens-normalize": "1.10.1", + "@noble/curves": "1.2.0", + "@noble/hashes": "1.3.2", + "@types/node": "22.7.5", + "aes-js": "4.0.0-beta.5", + "tslib": "2.7.0", + "ws": "8.17.1" + }, + "engines": { + "node": ">=14.0.0" } }, - "node_modules/npm/node_modules/columnify": { - "version": "1.6.0", - "inBundle": true, + "node_modules/ethers/node_modules/@noble/curves": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.2.0.tgz", + "integrity": "sha512-oYclrNgRaM9SsBUBVbb8M6DTV7ZHRTKugureoYEncY5c65HOmRzvSiTE3y5CYaPYJA/GVkrhXEoF0M3Ya9PMnw==", "license": "MIT", "dependencies": { - "strip-ansi": "^6.0.1", - "wcwidth": "^1.0.0" + "@noble/hashes": "1.3.2" }, - "engines": { - "node": ">=8.0.0" + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/npm/node_modules/common-ancestor-path": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/concat-map": { - "version": "0.0.1", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/console-control-strings": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/cssesc": { - "version": "3.0.0", - "inBundle": true, + "node_modules/ethers/node_modules/@noble/hashes": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.3.2.tgz", + "integrity": "sha512-MVC8EAQp7MvEcm30KWENFjgR+Mkmf+D189XJTkFIlwohU5hcBbn1ZkKq7KVTi2Hme3PMGF390DaL52beVrIihQ==", "license": "MIT", - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": ">= 16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/ethers/node_modules/@types/node": { + "version": "22.7.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.7.5.tgz", + "integrity": "sha512-jML7s2NAzMWc//QSJ1a3prpk78cOPchGvXJsC3C6R6PSMoooztvRVQEz89gmBTBY1SPMaqo5teB4uNHPdetShQ==", + "dependencies": { + "undici-types": "~6.19.2" } }, - "node_modules/npm/node_modules/debug": { - "version": "4.3.4", - "inBundle": true, + "node_modules/ethers/node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==" + }, + "node_modules/ethers/node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==" + }, + "node_modules/ethers/node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" }, "peerDependenciesMeta": { - "supports-color": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { "optional": true } } }, - "node_modules/npm/node_modules/debug/node_modules/ms": { - "version": "2.1.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/debuglog": { - "version": "1.0.1", - "inBundle": true, + "node_modules/event-emitter": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/event-emitter/-/event-emitter-0.3.5.tgz", + "integrity": "sha512-D9rRn9y7kLPnJ+hMq7S/nhvoKwwvVJahBi2BPmx3bvbsEdK3W9ii8cBSGjP+72/LnM4n6fo3+dkCX5FeTQruXA==", "license": "MIT", - "engines": { - "node": "*" + "dependencies": { + "d": "1", + "es5-ext": "~0.10.14" } }, - "node_modules/npm/node_modules/defaults": { - "version": "1.0.3", - "inBundle": true, + "node_modules/event-iterator": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/event-iterator/-/event-iterator-2.0.0.tgz", + "integrity": "sha512-KGft0ldl31BZVV//jj+IAIGCxkvvUkkON+ScH6zfoX+l+omX6001ggyRSpI0Io2Hlro0ThXotswCtfzS8UkIiQ==", + "license": "MIT" + }, + "node_modules/event-target-shim": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "license": "MIT", - "dependencies": { - "clone": "^1.0.2" + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/delegates": { - "version": "1.0.0", - "inBundle": true, + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", "license": "MIT" }, - "node_modules/npm/node_modules/depd": { - "version": "1.1.2", - "inBundle": true, + "node_modules/events": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/events/-/events-1.1.1.tgz", + "integrity": "sha512-kEcvvCBByWXGnZy6JUlgAp2gBIUjfCAV6P6TgT1/aaQKcmuAEC4OZTV1I4EWQLz2gxZw76atuVyvHhTxvi0Flw==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">=0.4.x" } }, - "node_modules/npm/node_modules/dezalgo": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/evp_bytestokey": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/evp_bytestokey/-/evp_bytestokey-1.0.3.tgz", + "integrity": "sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==", + "license": "MIT", "dependencies": { - "asap": "^2.0.0", - "wrappy": "1" + "md5.js": "^1.3.4", + "safe-buffer": "^5.1.1" } }, - "node_modules/npm/node_modules/diff": { - "version": "5.1.0", - "inBundle": true, - "license": "BSD-3-Clause", + "node_modules/expand-template": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/expand-template/-/expand-template-2.0.3.tgz", + "integrity": "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==", + "license": "(MIT OR WTFPL)", "engines": { - "node": ">=0.3.1" + "node": ">=6" } }, - "node_modules/npm/node_modules/emoji-regex": { - "version": "8.0.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/encoding": { - "version": "0.1.13", - "inBundle": true, + "node_modules/express": { + "version": "4.21.1", + "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz", + "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==", "license": "MIT", - "optional": true, "dependencies": { - "iconv-lite": "^0.6.2" + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "1.20.3", + "content-disposition": "0.5.4", + "content-type": "~1.0.4", + "cookie": "0.7.1", + "cookie-signature": "1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "1.3.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "0.1.10", + "proxy-addr": "~2.0.7", + "qs": "6.13.0", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "0.19.0", + "serve-static": "1.16.2", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" } }, - "node_modules/npm/node_modules/env-paths": { - "version": "2.2.1", - "inBundle": true, + "node_modules/express/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "ms": "2.0.0" } }, - "node_modules/npm/node_modules/err-code": { - "version": "2.0.3", - "inBundle": true, + "node_modules/express/node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/npm/node_modules/fastest-levenshtein": { - "version": "1.0.12", - "inBundle": true, + "node_modules/express/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT" }, - "node_modules/npm/node_modules/fs-minipass": { - "version": "2.1.0", - "inBundle": true, + "node_modules/ext": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "license": "ISC", "dependencies": { - "minipass": "^3.0.0" + "type": "^2.7.2" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "license": "MIT", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/npm/node_modules/fs.realpath": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" + "node_modules/extsprintf": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.4.1.tgz", + "integrity": "sha512-Wrk35e8ydCKDj/ArClo1VrPVmN8zph5V4AtHwIuHhvMXsKf73UT3BOD+azBIW+3wOJ4FhEH7zyaJCFvChjYvMA==", + "engines": [ + "node >=0.6.0" + ] }, - "node_modules/npm/node_modules/function-bind": { - "version": "1.1.1", - "inBundle": true, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, "license": "MIT" }, - "node_modules/npm/node_modules/gauge": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true, + "license": "Apache-2.0" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "license": "MIT", "dependencies": { - "aproba": "^1.0.3 || ^2.0.0", - "color-support": "^1.1.3", - "console-control-strings": "^1.1.0", - "has-unicode": "^2.0.1", - "signal-exit": "^3.0.7", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1", - "wide-align": "^1.1.5" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8.6.0" } }, - "node_modules/npm/node_modules/glob": { - "version": "8.0.3", - "inBundle": true, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 6" } }, - "node_modules/npm/node_modules/graceful-fs": { - "version": "4.2.10", - "inBundle": true, - "license": "ISC" + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" }, - "node_modules/npm/node_modules/has": { - "version": "1.0.3", - "inBundle": true, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-safe-stringify": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-1.2.3.tgz", + "integrity": "sha512-QJYT/i0QYoiZBQ71ivxdyTqkwKkQ0oxACXHYxH2zYHJEgzi2LsbjgvtzTbLi1SZcF190Db2YP7I7eTsU2egOlw==" + }, + "node_modules/fast-xml-parser": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.4.1.tgz", + "integrity": "sha512-xkjOecfnKGkSsOwtZ5Pz7Us/T6mrbPQrq0nh+aCO5V9nk5NLWmasAHumTKjiPJPWANe+kAZ84Jc8ooJkzZ88Sw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/NaturalIntelligence" + }, + { + "type": "paypal", + "url": "https://paypal.me/naturalintelligence" + } + ], "license": "MIT", "dependencies": { - "function-bind": "^1.1.1" + "strnum": "^1.0.5" }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/npm/node_modules/has-flag": { - "version": "4.0.0", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=8" + "bin": { + "fxparser": "src/cli/cli.js" } }, - "node_modules/npm/node_modules/has-unicode": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/hosted-git-info": { - "version": "5.2.1", - "inBundle": true, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, "license": "ISC", "dependencies": { - "lru-cache": "^7.5.1" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "reusify": "^1.0.4" } }, - "node_modules/npm/node_modules/http-cache-semantics": { - "version": "4.1.1", - "inBundle": true, - "license": "BSD-2-Clause" + "node_modules/fecha": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz", + "integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==", + "license": "MIT" }, - "node_modules/npm/node_modules/http-proxy-agent": { - "version": "5.0.0", - "inBundle": true, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" }, "engines": { - "node": ">= 6" + "node": "^12.20 || >= 14.13" } }, - "node_modules/npm/node_modules/https-proxy-agent": { - "version": "5.0.1", - "inBundle": true, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, "license": "MIT", "dependencies": { - "agent-base": "6", - "debug": "4" + "flat-cache": "^3.0.4" }, "engines": { - "node": ">= 6" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/npm/node_modules/humanize-ms": { - "version": "1.2.1", - "inBundle": true, + "node_modules/file-stream-rotator": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/file-stream-rotator/-/file-stream-rotator-0.6.1.tgz", + "integrity": "sha512-u+dBid4PvZw17PmDeRcNOtCP9CCK/9lRN2w+r1xIS7yOL9JFrIBKTvrYsxT4P0pGtThYTn++QS5ChHaUov3+zQ==", "license": "MIT", "dependencies": { - "ms": "^2.0.0" + "moment": "^2.29.1" } }, - "node_modules/npm/node_modules/iconv-lite": { - "version": "0.6.3", - "inBundle": true, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==", + "license": "MIT" + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "license": "MIT", - "optional": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/ignore-walk": { - "version": "5.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/finalhandler": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", + "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", + "license": "MIT", "dependencies": { - "minimatch": "^5.0.1" + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "2.4.1", + "parseurl": "~1.3.3", + "statuses": "2.0.1", + "unpipe": "~1.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/imurmurhash": { - "version": "0.1.4", - "inBundle": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/indent-string": { - "version": "4.0.0", - "inBundle": true, + "node_modules/finalhandler/node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/npm/node_modules/infer-owner": { - "version": "1.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/inflight": { - "version": "1.0.6", - "inBundle": true, - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/npm/node_modules/inherits": { - "version": "2.0.4", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/ini": { - "version": "3.0.1", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/init-package-json": { - "version": "3.0.2", - "inBundle": true, - "license": "ISC", "dependencies": { - "npm-package-arg": "^9.0.1", - "promzard": "^0.3.0", - "read": "^1.0.7", - "read-package-json": "^5.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4", - "validate-npm-package-name": "^4.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "ms": "2.0.0" } }, - "node_modules/npm/node_modules/ip": { + "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "inBundle": true, + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "license": "MIT" }, - "node_modules/npm/node_modules/ip-regex": { - "version": "4.3.0", - "inBundle": true, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, "license": "MIT", + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, "engines": { "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/npm/node_modules/is-cidr": { - "version": "4.0.2", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/find-replace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-replace/-/find-replace-3.0.0.tgz", + "integrity": "sha512-6Tb2myMioCAgv5kfvP5/PkZZ/ntTpVK39fHY7WkWBgvbeE+VHd/tZuZ4mrC+bxh4cfOZeYKVPaJIZtZXV7GNCQ==", + "license": "MIT", "dependencies": { - "cidr-regex": "^3.1.1" + "array-back": "^3.0.1" }, "engines": { - "node": ">=10" + "node": ">=4.0.0" } }, - "node_modules/npm/node_modules/is-core-module": { - "version": "2.10.0", - "inBundle": true, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, "license": "MIT", "dependencies": { - "has": "^1.0.3" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "inBundle": true, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "dev": true, + "license": "BSD-3-Clause", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, "engines": { - "node": ">=8" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/npm/node_modules/is-lambda": { - "version": "1.0.1", - "inBundle": true, - "license": "MIT" + "node_modules/flatbuffers": { + "version": "24.3.25", + "resolved": "https://registry.npmjs.org/flatbuffers/-/flatbuffers-24.3.25.tgz", + "integrity": "sha512-3HDgPbgiwWMI9zVB7VYBHaMrbOO7Gm0v+yD2FV/sCKj+9NDeVL7BOBYUuhWAQGKWOzBo8S9WdMvV0eixO233XQ==", + "license": "Apache-2.0" }, - "node_modules/npm/node_modules/isexe": { - "version": "2.0.0", - "inBundle": true, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, "license": "ISC" }, - "node_modules/npm/node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "inBundle": true, + "node_modules/fn.name": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz", + "integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==", "license": "MIT" }, - "node_modules/npm/node_modules/json-stringify-nice": { - "version": "1.1.4", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/npm/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/just-diff": { - "version": "5.1.1", - "inBundle": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "node_modules/npm/node_modules/just-diff-apply": { - "version": "5.4.1", - "inBundle": true, - "license": "MIT" + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } }, - "node_modules/npm/node_modules/libnpmaccess": { - "version": "6.0.4", - "inBundle": true, + "node_modules/foreground-child": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-2.0.0.tgz", + "integrity": "sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==", + "dev": true, "license": "ISC", "dependencies": { - "aproba": "^2.0.0", - "minipass": "^3.1.1", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8.0.0" } }, - "node_modules/npm/node_modules/libnpmdiff": { - "version": "4.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "license": "MIT", "dependencies": { - "@npmcli/disparity-colors": "^2.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "binary-extensions": "^2.2.0", - "diff": "^5.1.0", - "minimatch": "^5.0.1", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1", - "tar": "^6.1.0" + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 6" } }, - "node_modules/npm/node_modules/libnpmexec": { - "version": "4.0.14", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/arborist": "^5.6.3", - "@npmcli/ci-detect": "^2.0.0", - "@npmcli/fs": "^2.1.1", - "@npmcli/run-script": "^4.2.0", - "chalk": "^4.1.0", - "mkdirp-infer-owner": "^2.0.0", - "npm-package-arg": "^9.0.1", - "npmlog": "^6.0.2", - "pacote": "^13.6.1", - "proc-log": "^2.0.0", - "read": "^1.0.7", - "read-package-json-fast": "^2.0.2", - "semver": "^7.3.7", - "walk-up-path": "^1.0.0" - }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 14.17" } }, - "node_modules/npm/node_modules/libnpmfund": { - "version": "3.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "license": "MIT", "dependencies": { - "@npmcli/arborist": "^5.6.3" + "fetch-blob": "^3.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=12.20.0" } }, - "node_modules/npm/node_modules/libnpmhook": { - "version": "8.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/libnpmorg": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, + "node_modules/freeport-promise": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/freeport-promise/-/freeport-promise-2.0.0.tgz", + "integrity": "sha512-dwWpT1DdQcwrhmRwnDnPM/ZFny+FtzU+k50qF2eid3KxaQDsMiBrwo1i0G3qSugkN5db6Cb0zgfc68QeTOpEFg==", + "license": "Apache-2.0 OR MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/npm/node_modules/libnpmpack": { - "version": "4.1.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/run-script": "^4.1.3", - "npm-package-arg": "^9.0.1", - "pacote": "^13.6.1" - }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.6" } }, - "node_modules/npm/node_modules/libnpmpublish": { - "version": "6.0.5", - "inBundle": true, - "license": "ISC", + "node_modules/fromentries": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fromentries/-/fromentries-1.3.2.tgz", + "integrity": "sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==", + "license": "MIT" + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "license": "MIT", "dependencies": { - "normalize-package-data": "^4.0.0", - "npm-package-arg": "^9.0.1", - "npm-registry-fetch": "^13.0.0", - "semver": "^7.3.7", - "ssri": "^9.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.14" } }, - "node_modules/npm/node_modules/libnpmsearch": { - "version": "5.0.4", - "inBundle": true, + "node_modules/fs-minipass": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "license": "ISC", "dependencies": { - "npm-registry-fetch": "^13.0.0" + "minipass": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/npm/node_modules/libnpmteam": { - "version": "4.0.4", - "inBundle": true, - "license": "ISC", - "dependencies": { - "aproba": "^2.0.0", - "npm-registry-fetch": "^13.0.0" - }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function-timeout": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/function-timeout/-/function-timeout-0.1.1.tgz", + "integrity": "sha512-0NVVC0TaP7dSTvn1yMiy6d6Q8gifzbvQafO46RtLG/kHJUBNd+pVRGOBoK44wNBvtSPUJRfdVvkFdD3p0xvyZg==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/libnpmversion": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "license": "MIT", "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/run-script": "^4.1.3", - "json-parse-even-better-errors": "^2.3.1", - "proc-log": "^2.0.0", - "semver": "^7.3.7" + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/lru-cache": { - "version": "7.13.2", - "inBundle": true, - "license": "ISC", - "engines": { - "node": ">=12" + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/make-fetch-happen": { - "version": "10.2.1", - "inBundle": true, + "node_modules/gauge": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", + "deprecated": "This package is no longer supported.", "license": "ISC", + "optional": true, "dependencies": { - "agentkeepalive": "^4.2.1", - "cacache": "^16.1.0", - "http-cache-semantics": "^4.1.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "is-lambda": "^1.0.1", - "lru-cache": "^7.7.1", - "minipass": "^3.1.6", - "minipass-collect": "^1.0.2", - "minipass-fetch": "^2.0.3", - "minipass-flush": "^1.0.5", - "minipass-pipeline": "^1.2.4", - "negotiator": "^0.6.3", - "promise-retry": "^2.0.1", - "socks-proxy-agent": "^7.0.0", - "ssri": "^9.0.0" + "aproba": "^1.0.3 || ^2.0.0", + "color-support": "^1.1.3", + "console-control-strings": "^1.1.0", + "has-unicode": "^2.0.1", + "signal-exit": "^3.0.7", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wide-align": "^1.1.5" }, "engines": { "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/npm/node_modules/minimatch": { - "version": "5.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, + "node_modules/gauge/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "license": "MIT", + "optional": true, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/minipass": { - "version": "3.3.4", - "inBundle": true, - "license": "ISC", + "node_modules/gauge/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "license": "MIT", + "optional": true, "dependencies": { - "yallist": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/minipass-collect": { - "version": "1.0.2", - "inBundle": true, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, "engines": { - "node": ">= 8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/npm/node_modules/minipass-fetch": { - "version": "2.1.1", - "inBundle": true, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, "license": "MIT", - "dependencies": { - "minipass": "^3.1.6", - "minipass-sized": "^1.0.3", - "minizlib": "^2.1.2" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - }, - "optionalDependencies": { - "encoding": "^0.1.13" - } - }, - "node_modules/npm/node_modules/minipass-flush": { - "version": "1.0.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" + "node": ">=18" }, - "engines": { - "node": ">= 8" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/minipass-json-stream": { - "version": "1.0.1", - "inBundle": true, + "node_modules/get-func-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/get-func-name/-/get-func-name-2.0.2.tgz", + "integrity": "sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==", + "dev": true, "license": "MIT", - "dependencies": { - "jsonparse": "^1.3.1", - "minipass": "^3.0.0" + "engines": { + "node": "*" } }, - "node_modules/npm/node_modules/minipass-pipeline": { + "node_modules/get-intrinsic": { "version": "1.2.4", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "license": "MIT", "dependencies": { - "minipass": "^3.0.0" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/minipass-sized": { - "version": "1.0.3", - "inBundle": true, - "license": "ISC", - "dependencies": { - "minipass": "^3.0.0" - }, + "node_modules/get-iterator": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/get-iterator/-/get-iterator-2.0.1.tgz", + "integrity": "sha512-7HuY/hebu4gryTDT7O/XY/fvY9wRByEGdK6QOa4of8npTcv0+NS6frFKABcf6S9EBAsveTuKTsZQQBFMMNILIg==", + "license": "MIT" + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8" + "node": ">=8.0.0" } }, - "node_modules/npm/node_modules/minizlib": { - "version": "2.1.2", - "inBundle": true, + "node_modules/get-stream": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", + "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", "license": "MIT", "dependencies": { - "minipass": "^3.0.0", - "yallist": "^4.0.0" + "@sec-ant/readable-stream": "^0.4.1", + "is-stream": "^4.0.1" }, "engines": { - "node": ">= 8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/mkdirp": { - "version": "1.0.4", - "inBundle": true, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": ">=10" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/mkdirp-infer-owner": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/get-tsconfig": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.7.6.tgz", + "integrity": "sha512-ZAqrLlu18NbDdRaHq+AKXzAmqIUPswPWKUchfytdAjiRFnCe5ojG2bstg6mRiZabkKfCoL/e98pbBELIV/YCeA==", + "dev": true, + "license": "MIT", "dependencies": { - "chownr": "^2.0.0", - "infer-owner": "^1.0.4", - "mkdirp": "^1.0.3" + "resolve-pkg-maps": "^1.0.0" }, - "engines": { - "node": ">=10" + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" } }, - "node_modules/npm/node_modules/ms": { - "version": "2.1.3", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/mute-stream": { - "version": "0.0.8", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/negotiator": { - "version": "0.6.3", - "inBundle": true, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, "license": "MIT", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, "engines": { - "node": ">= 0.6" + "node": ">= 14" } }, - "node_modules/npm/node_modules/node-gyp": { - "version": "9.1.0", - "inBundle": true, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dev": true, "license": "MIT", "dependencies": { - "env-paths": "^2.2.0", - "glob": "^7.1.4", - "graceful-fs": "^4.2.6", - "make-fetch-happen": "^10.0.3", - "nopt": "^5.0.0", - "npmlog": "^6.0.0", - "rimraf": "^3.0.2", - "semver": "^7.3.5", - "tar": "^6.1.2", - "which": "^2.0.2" - }, - "bin": { - "node-gyp": "bin/node-gyp.js" - }, - "engines": { - "node": "^12.22 || ^14.13 || >=16" + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, + "node_modules/git-url-parse": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "git-up": "^7.0.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, + "node_modules/github-from-package": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/github-from-package/-/github-from-package-0.0.0.tgz", + "integrity": "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==", + "license": "MIT" + }, + "node_modules/glob": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, "license": "ISC", "dependencies": { - "brace-expansion": "^1.1.7" + "is-glob": "^4.0.3" }, "engines": { - "node": "*" + "node": ">=10.13.0" } }, - "node_modules/npm/node_modules/node-gyp/node_modules/nopt": { - "version": "5.0.0", - "inBundle": true, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", "license": "ISC", "dependencies": { - "abbrev": "1" - }, - "bin": { - "nopt": "bin/nopt.js" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=6" + "node": ">=10" } }, - "node_modules/npm/node_modules/nopt": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "license": "MIT", "dependencies": { - "abbrev": "^1.0.0" - }, - "bin": { - "nopt": "bin/nopt.js" + "ini": "4.1.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/normalize-package-data": { - "version": "4.0.1", - "inBundle": true, - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^5.0.0", - "is-core-module": "^2.8.1", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - }, + "node_modules/global-directory/node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "license": "ISC", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/npm-audit-report": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "license": "MIT", "dependencies": { - "chalk": "^4.0.0" + "type-fest": "^0.20.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/npm-bundled": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "license": "MIT", "dependencies": { - "npm-normalize-package-bin": "^2.0.0" + "define-properties": "^1.2.1", + "gopd": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/npm-bundled/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/npm-install-checks": { - "version": "5.0.0", - "inBundle": true, - "license": "BSD-2-Clause", + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "license": "MIT", "dependencies": { - "semver": "^7.1.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/npm-normalize-package-bin": { + "node_modules/gopd": { "version": "1.0.1", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/npm-package-arg": { - "version": "9.1.0", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "license": "MIT", "dependencies": { - "hosted-git-info": "^5.0.0", - "proc-log": "^2.0.1", - "semver": "^7.3.5", - "validate-npm-package-name": "^4.0.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/npm-packlist": { - "version": "5.1.3", - "inBundle": true, - "license": "ISC", + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "license": "ISC" + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true, + "license": "MIT" + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "license": "MIT", "dependencies": { - "glob": "^8.0.1", - "ignore-walk": "^5.0.1", - "npm-bundled": "^2.0.0", - "npm-normalize-package-bin": "^2.0.0" + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" }, "bin": { - "npm-packlist": "bin/index.js" + "handlebars": "bin/handlebars" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" } }, - "node_modules/npm/node_modules/npm-packlist/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/npm-pick-manifest": { - "version": "7.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "license": "MIT", "dependencies": { - "npm-install-checks": "^5.0.0", - "npm-normalize-package-bin": "^2.0.0", - "npm-package-arg": "^9.0.0", - "semver": "^7.3.5" + "es-define-property": "^1.0.0" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/npm-pick-manifest/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/npm-profile": { - "version": "6.2.1", - "inBundle": true, - "license": "ISC", + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", "dependencies": { - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0" + "has-symbols": "^1.0.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/npm/node_modules/npm-registry-fetch": { - "version": "13.3.1", - "inBundle": true, + "node_modules/has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", "license": "ISC", + "optional": true + }, + "node_modules/hash-base": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/hash-base/-/hash-base-3.1.0.tgz", + "integrity": "sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==", + "license": "MIT", "dependencies": { - "make-fetch-happen": "^10.0.6", - "minipass": "^3.1.6", - "minipass-fetch": "^2.0.3", - "minipass-json-stream": "^1.0.1", - "minizlib": "^2.1.2", - "npm-package-arg": "^9.0.1", - "proc-log": "^2.0.0" + "inherits": "^2.0.4", + "readable-stream": "^3.6.0", + "safe-buffer": "^5.2.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=4" } }, - "node_modules/npm/node_modules/npm-user-validate": { - "version": "1.0.1", - "inBundle": true, - "license": "BSD-2-Clause" - }, - "node_modules/npm/node_modules/npmlog": { - "version": "6.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/hash-base/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "license": "MIT", "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 6" } }, - "node_modules/npm/node_modules/once": { - "version": "1.4.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "wrappy": "1" - } + "node_modules/hash-base/node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" }, - "node_modules/npm/node_modules/opener": { - "version": "1.5.2", - "inBundle": true, - "license": "(WTFPL OR MIT)", - "bin": { - "opener": "bin/opener-bin.js" + "node_modules/hash.js": { + "version": "1.1.7", + "resolved": "https://registry.npmjs.org/hash.js/-/hash.js-1.1.7.tgz", + "integrity": "sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.3", + "minimalistic-assert": "^1.0.1" } }, - "node_modules/npm/node_modules/p-map": { - "version": "4.0.0", - "inBundle": true, + "node_modules/hasha": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/hasha/-/hasha-5.2.2.tgz", + "integrity": "sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==", + "dev": true, "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "is-stream": "^2.0.0", + "type-fest": "^0.8.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/pacote": { - "version": "13.6.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "@npmcli/git": "^3.0.0", - "@npmcli/installed-package-contents": "^1.0.7", - "@npmcli/promise-spawn": "^3.0.0", - "@npmcli/run-script": "^4.1.0", - "cacache": "^16.0.0", - "chownr": "^2.0.0", - "fs-minipass": "^2.1.0", - "infer-owner": "^1.0.4", - "minipass": "^3.1.6", - "mkdirp": "^1.0.4", - "npm-package-arg": "^9.0.0", - "npm-packlist": "^5.1.0", - "npm-pick-manifest": "^7.0.0", - "npm-registry-fetch": "^13.0.1", - "proc-log": "^2.0.0", - "promise-retry": "^2.0.1", - "read-package-json": "^5.0.0", - "read-package-json-fast": "^2.0.3", - "rimraf": "^3.0.2", - "ssri": "^9.0.0", - "tar": "^6.1.11" - }, - "bin": { - "pacote": "lib/bin.js" + "node_modules/hasha/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/hasha/node_modules/type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/parse-conflict-json": { + "node_modules/hashlru": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/hashlru/-/hashlru-2.3.0.tgz", + "integrity": "sha512-0cMsjjIC8I+D3M44pOQdsy0OHXGLVz6Z0beRuufhKa0KfaD2wGwAev6jILzXsd3/vpnNQJmWyZtIILqM1N+n5A==", + "license": "MIT" + }, + "node_modules/hasown": { "version": "2.0.2", - "inBundle": true, - "license": "ISC", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", "dependencies": { - "json-parse-even-better-errors": "^2.3.1", - "just-diff": "^5.0.1", - "just-diff-apply": "^5.2.0" + "function-bind": "^1.1.2" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/path-is-absolute": { - "version": "1.0.1", - "inBundle": true, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=0.10.0" + "bin": { + "he": "bin/he" } }, - "node_modules/npm/node_modules/postcss-selector-parser": { - "version": "6.0.10", - "inBundle": true, + "node_modules/hmac-drbg": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/hmac-drbg/-/hmac-drbg-1.0.1.tgz", + "integrity": "sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==", "license": "MIT", "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" + "hash.js": "^1.0.3", + "minimalistic-assert": "^1.0.0", + "minimalistic-crypto-utils": "^1.0.1" } }, - "node_modules/npm/node_modules/proc-log": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", + "node_modules/hpagent": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hpagent/-/hpagent-1.2.0.tgz", + "integrity": "sha512-A91dYTeIB6NoXG+PxTQpCCDDnfHsW9kc06Lvpu1TEe9gnd6ZFeiBoRO9JvzEv6xK7EX97/dUE8g/vBMTqTS3CA==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/promise-all-reject-late": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=14" } }, - "node_modules/npm/node_modules/promise-call-limit": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC", - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true, + "license": "MIT" }, - "node_modules/npm/node_modules/promise-inflight": { - "version": "1.0.1", - "inBundle": true, - "license": "ISC" + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "devOptional": true, + "license": "BSD-2-Clause" }, - "node_modules/npm/node_modules/promise-retry": { - "version": "2.0.1", - "inBundle": true, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "license": "MIT", "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" }, "engines": { - "node": ">=10" - } - }, - "node_modules/npm/node_modules/promzard": { - "version": "0.3.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "read": "1" + "node": ">= 0.8" } }, - "node_modules/npm/node_modules/qrcode-terminal": { - "version": "0.12.0", - "inBundle": true, - "bin": { - "qrcode-terminal": "bin/qrcode-terminal.js" + "node_modules/http-link-header": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/http-link-header/-/http-link-header-1.1.3.tgz", + "integrity": "sha512-3cZ0SRL8fb9MUlU3mKM61FcQvPfXx2dBrZW3Vbg5CXa8jFlK8OaEpePenLe1oEXQduhz8b0QjsqfS59QP4AJDQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" } }, - "node_modules/npm/node_modules/read": { - "version": "1.0.7", - "inBundle": true, - "license": "ISC", + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "optional": true, "dependencies": { - "mute-stream": "~0.0.4" + "agent-base": "6", + "debug": "4" }, "engines": { - "node": ">=0.8" + "node": ">= 6" } }, - "node_modules/npm/node_modules/read-cmd-shim": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node_modules/humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", + "license": "MIT", + "optional": true, + "dependencies": { + "ms": "^2.0.0" } }, - "node_modules/npm/node_modules/read-package-json": { - "version": "5.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/hyperdiff": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/hyperdiff/-/hyperdiff-2.0.18.tgz", + "integrity": "sha512-heYv0VkEDZct8c2naho35oJku0IZRV8z2kEcrYyOAgmfI97KysvRbN4cazCJycKL72E7JEpydwiNPRZwuEOfIg==", + "license": "MIT", "dependencies": { - "glob": "^8.0.1", - "json-parse-even-better-errors": "^2.3.1", - "normalize-package-data": "^4.0.0", - "npm-normalize-package-bin": "^2.0.0" + "debug-logfmt": "~1.2.0", + "lodash": "~4.17.21" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 8" } }, - "node_modules/npm/node_modules/read-package-json-fast": { - "version": "2.0.3", - "inBundle": true, - "license": "ISC", + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "license": "MIT", "dependencies": { - "json-parse-even-better-errors": "^2.3.0", - "npm-normalize-package-bin": "^1.0.1" + "safer-buffer": ">= 2.1.2 < 3" }, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "node_modules/npm/node_modules/read-package-json/node_modules/npm-normalize-package-bin": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/ieee754": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.1.13.tgz", + "integrity": "sha512-4vf7I2LYV/HaWerSo3XmlMkp5eZ83i+/CDluXi/IGTs/O1sejBNhTtnxzmRZfvOUqj7lZjqHkeTvpgSFDlWZTg==", + "license": "BSD-3-Clause" + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 4" } }, - "node_modules/npm/node_modules/readable-stream": { - "version": "3.6.0", - "inBundle": true, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" }, "engines": { - "node": ">= 6" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/readdir-scoped-modules": { - "version": "1.1.0", - "inBundle": true, - "license": "ISC", - "dependencies": { - "debuglog": "^1.0.1", - "dezalgo": "^1.0.0", - "graceful-fs": "^4.1.2", - "once": "^1.3.0" + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/npm/node_modules/retry": { - "version": "0.12.0", - "inBundle": true, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "devOptional": true, "license": "MIT", "engines": { - "node": ">= 4" + "node": ">=0.8.19" } }, - "node_modules/npm/node_modules/rimraf": { - "version": "3.0.2", - "inBundle": true, + "node_modules/indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "devOptional": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "license": "ISC", + "optional": true + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "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.", "license": "ISC", "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/npm/node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "inBundle": true, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "license": "ISC" + }, + "node_modules/inquirer": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.2.tgz", + "integrity": "sha512-+ynEbhWKhyomnaX0n2aLIMSkgSlGB5RrWbNXnEqj6mdaIydu6y40MdBjL38SAB0JcdmOaIaMua1azdjLEr3sdw==", + "dev": true, "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "@inquirer/figures": "^1.0.3", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.1" + }, + "engines": { + "node": ">=18" } }, - "node_modules/npm/node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "inBundle": true, - "license": "ISC", + "node_modules/inquirer/node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "type-fest": "^0.21.3" }, "engines": { - "node": "*" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "inBundle": true, - "license": "ISC", + "node_modules/inquirer/node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" } }, - "node_modules/npm/node_modules/safe-buffer": { - "version": "5.2.1", + "node_modules/inquirer/node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, "funding": [ { "type": "github", @@ -25568,643 +13322,617 @@ "url": "https://feross.org/support" } ], - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/safer-buffer": { - "version": "2.1.2", - "inBundle": true, "license": "MIT", - "optional": true - }, - "node_modules/npm/node_modules/semver": { - "version": "7.3.7", - "inBundle": true, - "license": "ISC", "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/npm/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "license": "MIT", "dependencies": { - "yallist": "^4.0.0" + "restore-cursor": "^3.1.0" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/npm/node_modules/set-blocking": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/signal-exit": { - "version": "3.0.7", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npm/node_modules/smart-buffer": { - "version": "4.2.0", - "inBundle": true, + "node_modules/inquirer/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/socks": { - "version": "2.7.0", - "inBundle": true, + "node_modules/inquirer/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/socks-proxy-agent": { - "version": "7.0.0", - "inBundle": true, + "node_modules/inquirer/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^6.0.2", - "debug": "^4.3.3", - "socks": "^2.6.2" - }, "engines": { - "node": ">= 10" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/spdx-correct": { - "version": "3.1.1", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/inquirer/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "license": "MIT", "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/spdx-exceptions": { - "version": "2.3.0", - "inBundle": true, - "license": "CC-BY-3.0" - }, - "node_modules/npm/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "inBundle": true, + "node_modules/inquirer/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "engines": { + "node": ">=6" } }, - "node_modules/npm/node_modules/spdx-license-ids": { - "version": "3.0.11", - "inBundle": true, - "license": "CC0-1.0" - }, - "node_modules/npm/node_modules/ssri": { - "version": "9.0.1", - "inBundle": true, + "node_modules/inquirer/node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "dev": true, "license": "ISC", - "dependencies": { - "minipass": "^3.1.1" - }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" } }, - "node_modules/npm/node_modules/string_decoder": { - "version": "1.3.0", - "inBundle": true, + "node_modules/inquirer/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { - "safe-buffer": "~5.2.0" + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/string-width": { - "version": "4.2.3", - "inBundle": true, + "node_modules/inquirer/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/strip-ansi": { - "version": "6.0.1", - "inBundle": true, + "node_modules/inquirer/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^5.0.1" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/npm/node_modules/supports-color": { - "version": "7.2.0", - "inBundle": true, + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, "license": "MIT", "dependencies": { - "has-flag": "^4.0.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { "node": ">=8" } }, - "node_modules/npm/node_modules/tar": { - "version": "6.1.11", - "inBundle": true, - "license": "ISC", + "node_modules/inquirer/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "license": "MIT", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^3.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">= 10" + "node": ">=8" } }, - "node_modules/npm/node_modules/text-table": { - "version": "0.2.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/tiny-relative-date": { - "version": "1.3.0", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/treeverse": { - "version": "2.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/inquirer/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" - } - }, - "node_modules/npm/node_modules/unique-filename": { - "version": "2.0.1", - "inBundle": true, - "license": "ISC", - "dependencies": { - "unique-slug": "^3.0.0" + "node": ">=10" }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/npm/node_modules/unique-slug": { - "version": "3.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/inquirer/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">=8" } }, - "node_modules/npm/node_modules/util-deprecate": { - "version": "1.0.2", - "inBundle": true, - "license": "MIT" - }, - "node_modules/npm/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "inBundle": true, - "license": "Apache-2.0", + "node_modules/interface-datastore": { + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/interface-datastore/-/interface-datastore-8.3.0.tgz", + "integrity": "sha512-RM/rTSmRcnoCwGZIHrPm+nlGYVoT4R0lcFvNnDyhdFT4R6BuHHhfFP47UldVEjs98SfxLuMhaNMsyjI918saHw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" + "interface-store": "6.0.0", + "uint8arrays": "^5.0.2" } }, - "node_modules/npm/node_modules/validate-npm-package-name": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC", + "node_modules/interface-datastore/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "builtins": "^5.0.0" - }, - "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "multiformats": "^13.0.0" } }, - "node_modules/npm/node_modules/walk-up-path": { - "version": "1.0.0", - "inBundle": true, - "license": "ISC" + "node_modules/interface-store": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/interface-store/-/interface-store-6.0.0.tgz", + "integrity": "sha512-HkjsDPsjA7SKkCr+TH1elUQApAAM3X3JPwrz3vFzaf614wI+ZD6GVvwKGZCHYcbSRqeZP/uzVPqezzeISeo5kA==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/npm/node_modules/wcwidth": { - "version": "1.0.1", - "inBundle": true, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", "license": "MIT", "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/npm/node_modules/which": { - "version": "2.0.2", - "inBundle": true, - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" }, "engines": { - "node": ">= 8" + "node": ">= 0.4" } }, - "node_modules/npm/node_modules/wide-align": { - "version": "1.1.5", - "inBundle": true, - "license": "ISC", - "dependencies": { - "string-width": "^1.0.2 || 2 || 3 || 4" + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.10" } }, - "node_modules/npm/node_modules/wrappy": { - "version": "1.0.2", - "inBundle": true, - "license": "ISC" + "node_modules/ip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", + "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==", + "license": "MIT" }, - "node_modules/npm/node_modules/write-file-atomic": { - "version": "4.0.2", - "inBundle": true, - "license": "ISC", + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "devOptional": true, + "license": "MIT", "dependencies": { - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.7" + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" }, "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": ">= 12" } }, - "node_modules/npm/node_modules/yallist": { - "version": "4.0.0", - "inBundle": true, - "license": "ISC" - }, - "node_modules/npmlog": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", - "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", - "deprecated": "This package is no longer supported.", - "license": "ISC", - "optional": true, - "dependencies": { - "are-we-there-yet": "^3.0.0", - "console-control-strings": "^1.1.0", - "gauge": "^4.0.3", - "set-blocking": "^2.0.0" - }, + "node_modules/ip-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-5.0.0.tgz", + "integrity": "sha512-fOCG6lhoKKakwv+C6KdsOnGvgXnmgfmp0myi3bcNwj3qfwPAxRKWEuFhvEFF7ceYIz6+1jRZ+yguLFAmUNPEfw==", + "license": "MIT", "engines": { - "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/number-is-nan": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", - "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", + "node_modules/ipaddr.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-2.2.0.tgz", + "integrity": "sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 10" } }, - "node_modules/nyc": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/nyc/-/nyc-15.1.0.tgz", - "integrity": "sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==", - "license": "ISC", + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "license": "MIT", "dependencies": { - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "caching-transform": "^4.0.0", - "convert-source-map": "^1.7.0", - "decamelize": "^1.2.0", - "find-cache-dir": "^3.2.0", - "find-up": "^4.1.0", - "foreground-child": "^2.0.0", - "get-package-type": "^0.1.0", - "glob": "^7.1.6", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-hook": "^3.0.0", - "istanbul-lib-instrument": "^4.0.0", - "istanbul-lib-processinfo": "^2.0.2", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "make-dir": "^3.0.0", - "node-preload": "^0.2.1", - "p-map": "^3.0.0", - "process-on-spawn": "^1.0.0", - "resolve-from": "^5.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "spawn-wrap": "^2.0.0", - "test-exclude": "^6.0.0", - "yargs": "^15.0.2" - }, - "bin": { - "nyc": "bin/nyc.js" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8.9" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", "license": "MIT", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "license": "ISC", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "license": "MIT", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "has-bigints": "^1.0.1" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "*" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^4.1.0" + "hasown": "^2.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "is-typed-array": "^1.1.13" }, "engines": { - "node": "*" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "license": "MIT", "dependencies": { - "p-try": "^2.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/is-electron": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-electron/-/is-electron-2.2.2.tgz", + "integrity": "sha512-FO/Rhvz5tuw4MCWkpMzHFKWD2LsfHzIb7i6MdPYZ/KW7AlxawyLkqdy+jPZP1WubqEADE3O4FUENlJHDfQASRg==", + "license": "MIT" + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/nyc/node_modules/p-map": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", - "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, "license": "MIT", "dependencies": { - "aggregate-error": "^3.0.0" + "call-bind": "^1.0.2" }, - "engines": { - "node": ">=8" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "license": "MIT", + "node_modules/is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", "engines": { - "node": ">=8" + "node": ">=0.10.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/nyc/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha512-1pqUqRjkhPJ9miNq9SwMfdvi6lBJcd6eFxvfaivQhaH3SgisfiuudvFntdKOmxuee/77l+FPjKrQjWvmPjWrRw==", "license": "MIT", + "optional": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "number-is-nan": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/nyc/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "license": "MIT", "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/nyc/node_modules/y18n": { + "node_modules/is-glob": { "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "license": "ISC" - }, - "node_modules/nyc/node_modules/yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "license": "MIT", "dependencies": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" + "is-extglob": "^2.1.1" }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/nyc/node_modules/yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "license": "ISC", - "dependencies": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" + "node_modules/is-in-ci": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz", + "integrity": "sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==", + "dev": true, + "license": "MIT", + "bin": { + "is-in-ci": "cli.js" }, "engines": { - "node": ">=6" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, "license": "MIT", + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-hash": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", - "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", + "node_modules/is-inside-container/node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, "engines": { - "node": ">= 6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-inspect": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", - "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">= 0.4" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-is": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", - "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "node_modules/is-ip": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/is-ip/-/is-ip-5.0.1.tgz", + "integrity": "sha512-FCsGHdlrOnZQcp0+XT5a+pYowf33itBalCl+7ovNXC/7o5BhIpG14M3OrpPPdBSIQJCm+0M5+9mO7S9VVTTCFw==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1" + "ip-regex": "^5.0.0", + "super-regex": "^0.2.0" }, "engines": { - "node": ">= 0.4" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/is-lambda": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", "license": "MIT", - "engines": { - "node": ">= 0.4" - } + "optional": true + }, + "node_modules/is-loopback-addr": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-loopback-addr/-/is-loopback-addr-2.0.2.tgz", + "integrity": "sha512-26POf2KRCno/KTNL5Q0b/9TYnL00xEsSaLfiFRmjM7m7Lw7ZMmFybzzuX4CcsLAluZGd+niLUiMRxEooVE3aqg==", + "license": "MIT" }, - "node_modules/object.assign": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", - "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", "license": "MIT", - "dependencies": { - "call-bind": "^1.0.5", - "define-properties": "^1.2.1", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" - }, "engines": { "node": ">= 0.4" }, @@ -26212,61 +13940,48 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.entries": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", - "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" - }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/object.fromentries": { - "version": "2.0.8", - "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", - "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object.groupby": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", - "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, "license": "MIT", - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2" - }, "engines": { - "node": ">= 0.4" + "node": ">=0.12.0" } }, - "node_modules/object.values": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", - "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -26275,347 +13990,337 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/observable-webworkers": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz", - "integrity": "sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw==", - "license": "Apache-2.0 OR MIT", + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16.0.0", - "npm": ">=7.0.0" + "node": ">=8" } }, - "node_modules/on-finished": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", - "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, "license": "MIT", - "dependencies": { - "ee-first": "1.1.1" - }, "engines": { - "node": ">= 0.8" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "license": "ISC", - "dependencies": { - "wrappy": "1" + "node": ">=8" } }, - "node_modules/one-time": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", - "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" + "engines": { + "node": ">=8" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "node_modules/is-promise": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-2.2.2.tgz", + "integrity": "sha512-+lP4/6lKUBfQjZ2pdxThZvLUAafmZb8OAxFb8XXtiQmS35INgr85hdOGoEs124ez1FCnZJt6jau/T+alh58QFQ==", + "license": "MIT" + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "license": "MIT", "dependencies": { - "mimic-fn": "^4.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/open": { - "version": "7.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-7.4.2.tgz", - "integrity": "sha512-MVHddDVweXZF3awtlAS+6pgKLlm/JgxZ90+/NBurBoQctVOOB/zDdVjcyPzQ+0laDGbsWgrRkflI65sQeOgT9Q==", + "node_modules/is-regexp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-3.1.0.tgz", + "integrity": "sha512-rbku49cWloU5bSMI+zaRaXdQHXnthP6DZ/vLnfdSKyL4zUzuWnomtOEiZZOd+ioQ+avFo/qau3KPTc7Fjy1uPA==", "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/optionator": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", - "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", "license": "MIT", - "dependencies": { - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0", - "word-wrap": "^1.2.5" - }, "engines": { - "node": ">= 0.8.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ora": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-6.3.1.tgz", - "integrity": "sha512-ERAyNnZOfqM+Ao3RAvIXkYh5joP220yf59gVe2X/cI6SiCxIdi4c9HZKZD8R6q/RDXEje1THBju6iExiSsgJaQ==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", "license": "MIT", "dependencies": { - "chalk": "^5.0.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.6.1", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^1.1.0", - "log-symbols": "^5.1.0", - "stdin-discarder": "^0.1.0", - "strip-ansi": "^7.0.1", - "wcwidth": "^1.0.1" + "call-bind": "^1.0.7" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ora/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "dependencies": { + "protocols": "^2.0.1" } }, - "node_modules/ora/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/is-stream": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", + "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", "license": "MIT", "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "node": ">=18" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ora/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "license": "MIT", "dependencies": { - "restore-cursor": "^4.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ora/node_modules/log-symbols": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-5.1.0.tgz", - "integrity": "sha512-l0x2DvrW294C9uDCoQe1VSU4gf529FkSZ6leBl4TiqZH/e+0R7hSfHQBNut2mNygDgHwvYHfFLn6Oxb3VWj2rA==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "license": "MIT", "dependencies": { - "chalk": "^5.0.0", - "is-unicode-supported": "^1.1.0" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ora/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "license": "MIT", - "engines": { - "node": ">=6" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ora/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "which-typed-array": "^1.1.14" }, "engines": { - "node": ">=6" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ora/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/ora/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" + "call-bind": "^1.0.2" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/os-name": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.1.0.tgz", - "integrity": "sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==", + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", "dev": true, "license": "MIT", "dependencies": { - "macos-release": "^3.1.0", - "windows-release": "^5.0.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/os-tmpdir": { + "node_modules/is-windows": { "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "license": "MIT", + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "license": "ISC" + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, - "node_modules/p-defer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-4.0.1.tgz", - "integrity": "sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/istanbul-lib-hook": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-hook/-/istanbul-lib-hook-3.0.0.tgz", + "integrity": "sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "append-transform": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "license": "MIT", "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-event": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", - "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", - "license": "MIT", + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, "dependencies": { - "p-timeout": "^6.1.2" + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=10" } }, - "node_modules/p-filter": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-filter/-/p-filter-2.1.0.tgz", - "integrity": "sha512-ZBxxZ5sL2HghephhpGAQdoskxplTwr7ICaehZwLIlfL6acuVgZPm8yBNuRAFBGEqtD/hmUeq9eqLg2ys9Xr/yw==", - "license": "MIT", + "node_modules/istanbul-lib-processinfo": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-processinfo/-/istanbul-lib-processinfo-2.0.3.tgz", + "integrity": "sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==", + "dev": true, + "license": "ISC", "dependencies": { - "p-map": "^2.0.0" + "archy": "^1.0.0", + "cross-spawn": "^7.0.3", + "istanbul-lib-coverage": "^3.2.0", + "p-map": "^3.0.0", + "rimraf": "^3.0.0", + "uuid": "^8.3.2" }, "engines": { "node": ">=8" } }, - "node_modules/p-filter/node_modules/p-map": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", - "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "node_modules/istanbul-lib-processinfo/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, "license": "MIT", + "dependencies": { + "aggregate-error": "^3.0.0" + }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "node_modules/istanbul-lib-processinfo/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=4" + "bin": { + "uuid": "dist/bin/uuid" } }, - "node_modules/p-is-promise": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-3.0.0.tgz", - "integrity": "sha512-Wo8VsW4IRQSKVXsJCn7TomUaVtyfjVDn3nUP7kE967BQk0CwFpdbZs0X0uk5sW9mkBa9eNM7hCMaG93WUAwxYQ==", - "license": "MIT", + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/istanbul-lib-report/node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, "license": "MIT", "dependencies": { - "yocto-queue": "^0.1.0" + "semver": "^7.5.3" }, "engines": { "node": ">=10" @@ -26624,1308 +14329,1224 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/istanbul-lib-report/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^3.0.2" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" }, "engines": { "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/p-map": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-5.5.0.tgz", - "integrity": "sha512-VFqfGDHlx87K66yZrNdI4YGtD70IRyd+zSvgks6mzHPRNkoKy+9EKP4SFC77/vTTQYmRmti7dvqC+m5jBrBAcg==", - "license": "MIT", + "node_modules/it-all": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-all/-/it-all-3.0.6.tgz", + "integrity": "sha512-HXZWbxCgQZJfrv5rXvaVeaayXED8nTKx9tj9fpBhmcUJcedVZshMMMqTj0RG2+scGypb9Ut1zd1ifbf3lA8L+Q==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/it-byte-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/it-byte-stream/-/it-byte-stream-1.1.0.tgz", + "integrity": "sha512-WWponBWdKEa6o2U3NX+wGMY8X1EkWXcQvpC+3CUqKb4ZzK30q3EPqiTjFxLf9tNVgdF/MNAtx/XclpVfgaz9KQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-queueless-pushable": "^1.0.0", + "it-stream-types": "^2.0.1", + "uint8arraylist": "^2.4.8" + } + }, + "node_modules/it-drain": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/it-drain/-/it-drain-3.0.7.tgz", + "integrity": "sha512-vy6S1JKjjHSIFHgBpLpD1zhkCRl3z1zYWUxE14+kAYf+BL9ssWSFImJfhl361IIcwr0ofw8etzg11VqqB+ntUA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/it-filter": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-filter/-/it-filter-3.1.1.tgz", + "integrity": "sha512-TOXmVuaSkxlLp2hXKoMTra0WMZMKVFxE3vSsbIA+PbADNCBAHhjJ/lM31vBOUTddHMO34Ku++vU8T9PLlBxQtg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "aggregate-error": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "it-peekable": "^3.0.0" } }, - "node_modules/p-map/node_modules/aggregate-error": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-4.0.1.tgz", - "integrity": "sha512-0poP0T7el6Vq3rstR8Mn4V/IQrpBLO6POkUSrN7RhyY+GF/InCFShQzsQ39T25gkHhLgSLByyAz+Kjb+c2L98w==", - "license": "MIT", + "node_modules/it-first": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-first/-/it-first-3.0.6.tgz", + "integrity": "sha512-ExIewyK9kXKNAplg2GMeWfgjUcfC1FnUXz/RPfAvIXby+w7U4b3//5Lic0NV03gXT8O/isj5Nmp6KiY0d45pIQ==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/it-foreach": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/it-foreach/-/it-foreach-2.1.1.tgz", + "integrity": "sha512-ID4Gxnavk/LVQLQESAQ9hR6dR63Ih6X+8VdxEktX8rpz2dCGAbZpey/eljTNbMfV2UKXHiu6UsneoNBZuac97g==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "clean-stack": "^4.0.0", - "indent-string": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "it-peekable": "^3.0.0" } }, - "node_modules/p-map/node_modules/clean-stack": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-4.2.0.tgz", - "integrity": "sha512-LYv6XPxoyODi36Dp976riBtSY27VmFo+MKqEU9QCCWyTrdEPDog+RWA7xQWHi6Vbp61j5c4cdzzX1NidnwtUWg==", - "license": "MIT", + "node_modules/it-length": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-length/-/it-length-3.0.6.tgz", + "integrity": "sha512-R7bxHAzpRzYz7vghc2DDH7x4KXvEkeLfN/h316++jzbkEHIRXbEPLbE20p5yrqqBdOeK6/FRUDuHlTJ0H1hysw==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/it-length-prefixed": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/it-length-prefixed/-/it-length-prefixed-9.1.0.tgz", + "integrity": "sha512-kx2UTJuy7/lsT3QUzf50NjfxU1Z4P4wlvYp6YnR5Nc61P8XKfy+QtiJi1VLojA+Kea7vMbB4002rIij1Ol9hcw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "escape-string-regexp": "5.0.0" + "it-reader": "^6.0.1", + "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.1", + "uint8arraylist": "^2.0.0", + "uint8arrays": "^5.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/p-map/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/it-length-prefixed-stream": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/it-length-prefixed-stream/-/it-length-prefixed-stream-1.2.0.tgz", + "integrity": "sha512-vX7dzSl/2UMYYsAr0FQdPNVR5xYEETaeboZ+eXxNBjgARuvxnWA6OedW8lC5/J3ebMTC98JhA3eH76eTijUOsA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-byte-stream": "^1.0.0", + "it-stream-types": "^2.0.1", + "uint8-varint": "^2.0.4", + "uint8arraylist": "^2.4.8" } }, - "node_modules/p-map/node_modules/indent-string": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-5.0.0.tgz", - "integrity": "sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/it-length-prefixed/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/p-queue": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", - "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", - "license": "MIT", + "node_modules/it-map": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/it-map/-/it-map-3.1.1.tgz", + "integrity": "sha512-9bCSwKD1yN1wCOgJ9UOl+46NQtdatosPWzxxUk2NdTLwRPXLh+L7iwCC9QKsbgM60RQxT/nH8bKMqm3H/o8IHQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "eventemitter3": "^5.0.1", - "p-timeout": "^6.1.2" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "it-peekable": "^3.0.0" } }, - "node_modules/p-reduce": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-2.1.0.tgz", - "integrity": "sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/it-merge": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-merge/-/it-merge-3.0.5.tgz", + "integrity": "sha512-2l7+mPf85pyRF5pqi0dKcA54E5Jm/2FyY5GsOaN51Ta0ipC7YZ3szuAsH8wOoB6eKY4XsU4k2X+mzPmFBMayEA==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "it-pushable": "^3.2.3" } }, - "node_modules/p-retry": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-5.1.2.tgz", - "integrity": "sha512-couX95waDu98NfNZV+i/iLt+fdVxmI7CbrrdC2uDWfPdUAApyxT4wmDlyOtR5KtTDmkDO0zDScDjDou9YHhd9g==", - "license": "MIT", + "node_modules/it-pair": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/it-pair/-/it-pair-2.0.6.tgz", + "integrity": "sha512-5M0t5RAcYEQYNG5BV7d7cqbdwbCAp5yLdzvkxsZmkuZsLbTdZzah6MQySYfaAQjNDCq6PUnDt0hqBZ4NwMfW6g==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@types/retry": "0.12.1", - "retry": "^0.13.1" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "it-stream-types": "^2.0.1", + "p-defer": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-tap": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-tap/-/p-tap-3.1.0.tgz", - "integrity": "sha512-xJSaeByOOQu5GnHEcnrxMkNi8O3Ez5X1wz8RT6wiL3mJFd4oXcSOvcKq+1CFUtuVYTSTWL/8rlkaCJRoR+L+NA==", - "license": "MIT", "engines": { - "node": ">=8" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/p-timeout": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", - "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/it-parallel": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/it-parallel/-/it-parallel-3.0.8.tgz", + "integrity": "sha512-URLhs6eG4Hdr4OdvgBBPDzOjBeSSmI+Kqex2rv/aAyYClME26RYHirLVhZsZP5M+ZP6M34iRlXk8Wlqtezuqpg==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "p-defer": "^4.0.1" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/it-peekable": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/it-peekable/-/it-peekable-3.0.5.tgz", + "integrity": "sha512-JWQOGMt6rKiPcY30zUVMR4g6YxkpueTwHVE7CMs/aGqCf4OydM6w+7ZM3PvmO1e0TocjuR4aL8xyZWR46cTqCQ==", + "license": "Apache-2.0 OR MIT" }, - "node_modules/p-wait-for": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/p-wait-for/-/p-wait-for-5.0.2.tgz", - "integrity": "sha512-lwx6u1CotQYPVju77R+D0vFomni/AqRfqLmqQ8hekklqZ6gAY9rONh7lBQ0uxWMkC2AuX9b2DVAl8To0NyP1JA==", - "license": "MIT", + "node_modules/it-pipe": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/it-pipe/-/it-pipe-3.0.1.tgz", + "integrity": "sha512-sIoNrQl1qSRg2seYSBH/3QxWhJFn9PKYvOf/bHdtCBF0bnghey44VyASsWzn5dAx0DCDDABq1hZIuzKmtBZmKA==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "p-timeout": "^6.0.0" + "it-merge": "^3.0.0", + "it-pushable": "^3.1.2", + "it-stream-types": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/pac-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", - "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", - "dev": true, - "license": "MIT", + "node_modules/it-protobuf-stream": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/it-protobuf-stream/-/it-protobuf-stream-1.1.5.tgz", + "integrity": "sha512-H70idW45As3cEbU4uSoZ9IYHUIV3YM69/2mmXYR7gOlPabWjuyNi3/abK11geiiq3la27Sos/mXr68JljjKtEQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "@tootallnate/quickjs-emscripten": "^0.23.0", - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "get-uri": "^6.0.1", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.5", - "pac-resolver": "^7.0.1", - "socks-proxy-agent": "^8.0.4" - }, - "engines": { - "node": ">= 14" + "it-length-prefixed-stream": "^1.0.0", + "it-stream-types": "^2.0.1", + "uint8arraylist": "^2.4.8" } }, - "node_modules/pac-proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, - "license": "MIT", + "node_modules/it-pushable": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/it-pushable/-/it-pushable-3.2.3.tgz", + "integrity": "sha512-gzYnXYK8Y5t5b/BnJUr7glfQLO4U5vyb05gPx/TyTw+4Bv1zM9gFk4YsOrnulWefMewlphCjKkakFvj1y99Tcg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "p-defer": "^4.0.0" } }, - "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dev": true, - "license": "MIT", + "node_modules/it-queueless-pushable": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/it-queueless-pushable/-/it-queueless-pushable-1.0.0.tgz", + "integrity": "sha512-HbcAbcuQj7a9EBxiRCZ+77FxWutgs/pY5ZvEyQnylWPGNFojCLAUwhcZjf5OuEQ9+y+vSa7w1GQBe8xJdmIn5A==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" + "p-defer": "^4.0.1", + "race-signal": "^1.0.2" } }, - "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, - "license": "MIT", + "node_modules/it-reader": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/it-reader/-/it-reader-6.0.4.tgz", + "integrity": "sha512-XCWifEcNFFjjBHtor4Sfaj8rcpt+FkY0L6WdhD578SCDhV4VUm7fCkF3dv5a+fTcfQqvN9BsxBTvWbYO6iCjTg==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "it-stream-types": "^2.0.1", + "uint8arraylist": "^2.0.0" }, "engines": { - "node": ">= 14" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/pac-resolver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", - "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", - "dev": true, - "license": "MIT", + "node_modules/it-sort": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-sort/-/it-sort-3.0.6.tgz", + "integrity": "sha512-aNrlZAXB8vWBd42tCpaXGL6CJVJNDW3OLczmdt6g0k/s9Z6evkTdgU2LjwW5SNNeX41sF+C8MjV+OcVf93PsPw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "degenerator": "^5.0.0", - "netmask": "^2.0.2" - }, + "it-all": "^3.0.0" + } + }, + "node_modules/it-stream-types": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/it-stream-types/-/it-stream-types-2.0.1.tgz", + "integrity": "sha512-6DmOs5r7ERDbvS4q8yLKENcj6Yecr7QQTqWApbZdfAUTEC947d+PEha7PCqhm//9oxaLYL7TWRekwhoXl2s6fg==", + "license": "Apache-2.0 OR MIT", "engines": { - "node": ">= 14" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/package-hash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", - "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", - "license": "ISC", + "node_modules/it-take": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/it-take/-/it-take-3.0.6.tgz", + "integrity": "sha512-uqw3MRzf9to1SOLxaureGa73lK8k8ZB/asOApTAkvrzUqCznGtKNgPFH7uYIWlt4UuWq/hU6I+U4Fm5xpjN8Vg==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/it-ws": { + "version": "6.1.5", + "resolved": "https://registry.npmjs.org/it-ws/-/it-ws-6.1.5.tgz", + "integrity": "sha512-uWjMtpy5HqhSd/LlrlP3fhYrr7rUfJFFMABv0F5d6n13Q+0glhZthwUKpEAVhDrXY95Tb1RB5lLqqef+QbVNaw==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "graceful-fs": "^4.1.15", - "hasha": "^5.0.0", - "lodash.flattendeep": "^4.4.0", - "release-zalgo": "^1.0.0" + "@types/ws": "^8.2.2", + "event-iterator": "^2.0.0", + "it-stream-types": "^2.0.1", + "uint8arrays": "^5.0.0", + "ws": "^8.4.0" }, "engines": { - "node": ">=8" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/package-json": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-8.1.1.tgz", - "integrity": "sha512-cbH9IAIJHNj9uXi196JVsRlt7cHKak6u/e6AkL/bkRelZ7rlL3X1YKxsZwa36xipOEKAsdtmaG6aAJoM1fx2zA==", - "license": "MIT", + "node_modules/it-ws/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "got": "^12.1.0", - "registry-auth-token": "^5.0.1", - "registry-url": "^6.0.0", - "semver": "^7.3.7" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "multiformats": "^13.0.0" } }, - "node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "node_modules/iterate-iterator": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-iterator/-/iterate-iterator-1.0.2.tgz", + "integrity": "sha512-t91HubM4ZDQ70M9wqp+pcNpu8OyJ9UAtXntT/Bcsvp5tZMnz9vRa+IunKXeI8AnfZMTv0jNuVEmGeLSMjVvfPw==", "license": "MIT", - "engines": { - "node": ">=14.16" - }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/package-json/node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "node_modules/iterate-value": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/iterate-value/-/iterate-value-1.0.2.tgz", + "integrity": "sha512-A6fMAio4D2ot2r/TYzr4yUWrmwNdsN5xL7+HUiyACE4DXm+q8HtPcnFTp+NnW3k4N05tZ7FVYFFb2CR13NxyHQ==", "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.1" + "es-get-iterator": "^1.0.2", + "iterate-iterator": "^1.0.1" }, - "engines": { - "node": ">=14.16" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/package-json/node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=14.16" + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" } }, - "node_modules/package-json/node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "license": "MIT", + "node_modules/jackspeak": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", + "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", + "dev": true, "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "@isaacs/cliui": "^8.0.2" }, - "engines": { - "node": ">=14.16" + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/package-json/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "license": "MIT", + "node_modules/jmespath": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/jmespath/-/jmespath-0.16.0.tgz", + "integrity": "sha512-9FzQjJ7MATs1tSpnco1K6ayiYE3figslrXA72G2HQ/n76RzvYlofyi5QM+iX4YRs/pu3yzxlVQSST23+dMDknw==", + "license": "Apache-2.0", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6.0" } }, - "node_modules/package-json/node_modules/got": { - "version": "12.6.1", - "resolved": "https://registry.npmjs.org/got/-/got-12.6.1.tgz", - "integrity": "sha512-mThBblvlAF1d4O5oqyvN+ZxLAYwIJK7bpMxgYqPD9okW0C3qm5FFn7k811QrcuEBwaogR3ngOFoCfs6mRv7teQ==", + "node_modules/js-sha3": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/js-sha3/-/js-sha3-0.8.0.tgz", + "integrity": "sha512-gF1cRrHhIzNfToc802P800N8PpXS+evLLXfsVpowqmAFR9uwbi89WvXg2QspOmXL8QL86J4T1EpFu+yUkwJY3Q==", + "license": "MIT" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/package-json/node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "devOptional": true, + "license": "MIT" + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" + "bin": { + "jsesc": "bin/jsesc" }, "engines": { - "node": ">=10.19.0" + "node": ">=4" } }, - "node_modules/package-json/node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "license": "MIT", + "node_modules/json-bignum": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/json-bignum/-/json-bignum-0.0.3.tgz", + "integrity": "sha512-2WHyXj3OfHSgNyuzDbSxI1w2jgw5gkWSWhS7Qg4bWXx1nLk3jnbwfUeS0PSba3IzpTUWdHxBieELUzXRjQB2zg==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8" } }, - "node_modules/package-json/node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "bin": { + "json5": "lib/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, - "node_modules/package-json/node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "license": "MIT", - "engines": { - "node": ">=14.16" + "dependencies": { + "universalify": "^2.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/package-json/node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "license": "MIT", + "node_modules/jsonld": { + "version": "8.3.3", + "resolved": "https://registry.npmjs.org/jsonld/-/jsonld-8.3.3.tgz", + "integrity": "sha512-9YcilrF+dLfg9NTEof/mJLMtbdX1RJ8dbWtJgE00cMOIohb1lIyJl710vFiTaiHTl6ZYODJuBd32xFvUhmv3kg==", + "license": "BSD-3-Clause", + "dependencies": { + "@digitalbazaar/http-client": "^3.4.1", + "canonicalize": "^1.0.1", + "lru-cache": "^6.0.0", + "rdf-canonize": "^3.4.0" + }, "engines": { - "node": ">=12.20" + "node": ">=14" } }, - "node_modules/package-json/node_modules/responselike": { + "node_modules/jsonld-context-parser": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "resolved": "https://registry.npmjs.org/jsonld-context-parser/-/jsonld-context-parser-3.0.0.tgz", + "integrity": "sha512-Kg6TVtBUdIm057ht/8WNhM9BROt+BeYaDGXbzrKaa3xA99csee+CsD8IMCTizRgzoO8PIzvzcxxCoRvpq1xNQw==", "license": "MIT", "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" + "@types/http-link-header": "^1.0.1", + "@types/node": "^18.0.0", + "http-link-header": "^1.0.2", + "relative-to-absolute-iri": "^1.0.5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "jsonld-context-parse": "bin/jsonld-context-parse.js" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/jsonld-context-parser/node_modules/@types/node": { + "version": "18.19.111", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.111.tgz", + "integrity": "sha512-90sGdgA+QLJr1F9X79tQuEut0gEYIfkX9pydI4XGRgvFo9g2JWswefI+WUSUHPYVBHYSEfTEqBxA5hQvAZB3Mw==", "license": "MIT", "dependencies": { - "callsites": "^3.0.0" - }, - "engines": { - "node": ">=6" + "undici-types": "~5.26.4" } }, - "node_modules/parse-github-url": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", - "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", - "dev": true, + "node_modules/jsonld-streaming-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/jsonld-streaming-parser/-/jsonld-streaming-parser-5.0.0.tgz", + "integrity": "sha512-Q6Bfbmig8fFpIbJgJTi4LLzco9dz0YuBM/mDvUYXzP8L/+me6P3pRy4exrhCpv49Bwv2oQFFIHM7wIwCKma2XA==", "license": "MIT", - "bin": { - "parse-github-url": "cli.js" + "dependencies": { + "@bergos/jsonparse": "^1.4.0", + "@types/http-link-header": "^1.0.1", + "@types/readable-stream": "^4.0.0", + "buffer": "^6.0.3", + "canonicalize": "^1.0.1", + "http-link-header": "^1.0.2", + "jsonld-context-parser": "^3.0.0", + "rdf-data-factory": "^2.0.0", + "readable-stream": "^4.0.0" }, - "engines": { - "node": ">= 0.10" + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/jsonld-streaming-parser/node_modules/rdf-data-factory": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-2.0.2.tgz", + "integrity": "sha512-WzPoYHwQYWvIP9k+7IBLY1b4nIDitzAK4mA37WumAF/Cjvu/KOtYJH9IPZnUTWNSd5K2+pq4vrcE9WZC4sRHhg==", "license": "MIT", "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - }, - "engines": { - "node": ">=8" + "@rdfjs/types": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, - "node_modules/parse-ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", - "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/parse-path": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", - "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, "license": "MIT", "dependencies": { - "protocols": "^2.0.0" + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" } }, - "node_modules/parse-url": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", - "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", - "dev": true, - "license": "MIT", - "dependencies": { - "parse-path": "^7.0.0" - } + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==", + "dev": true }, - "node_modules/parseurl": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", - "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", - "license": "MIT", - "engines": { - "node": ">= 0.8" + "node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" } }, - "node_modules/pascalcase": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-2.0.0.tgz", - "integrity": "sha512-DHpENy5Qm/FaX+x3iBLoMLG/XHNCTgL+yErm1TwuVaj6u4fiOSkYkf60vGtITk7hrKHOO4uCl9vRrD4hqjNKjg==", - "license": "MIT", + "node_modules/jwk-to-pem": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/jwk-to-pem/-/jwk-to-pem-1.2.0.tgz", + "integrity": "sha512-c/RUawllCF0Qfp+oJ2cm8DaeiIP7b2V1xljEY3mibpkRsF3RoL2ELW33D/VESwcrbLluMQYgOVSp9i/OlJa1gg==", "dependencies": { - "camelcase": "^6.2.1" - }, - "engines": { - "node": ">=14" + "asn1.js": "^2.2.0", + "asn1.js-rfc3280": "^2.1.0", + "elliptic": "^3.0.4" } }, - "node_modules/pascalcase/node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "node_modules/jwk-to-pem/node_modules/bn.js": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-2.2.0.tgz", + "integrity": "sha512-nlotTGN6qr+NpeCb8d5mdXR47r6GXiyoX4fEeqBF2u9wp/3XgzIwyftMX9TE+StQRJSOUJtyYr9MVk0rn2ftAg==" }, - "node_modules/patch-package": { - "version": "6.5.1", - "resolved": "https://registry.npmjs.org/patch-package/-/patch-package-6.5.1.tgz", - "integrity": "sha512-I/4Zsalfhc6bphmJTlrLoOcAF87jcxko4q0qsv4bGcurbr8IskEOtdnt9iCmsQVGL1B+iUhSQqweyTLJfCF9rA==", - "license": "MIT", + "node_modules/jwk-to-pem/node_modules/elliptic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/elliptic/-/elliptic-3.1.0.tgz", + "integrity": "sha512-kjzyQvz5tdIrz+O8EAaDU5oeICcg5mMevSFEEi/cprAl1GID1BoV/1tpRu56rDJ6tiXM2b+ZKh3mNrVhA3Y/2Q==", "dependencies": { - "@yarnpkg/lockfile": "^1.1.0", - "chalk": "^4.1.2", - "cross-spawn": "^6.0.5", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^9.0.0", - "is-ci": "^2.0.0", - "klaw-sync": "^6.0.0", - "minimist": "^1.2.6", - "open": "^7.4.2", - "rimraf": "^2.6.3", - "semver": "^5.6.0", - "slash": "^2.0.0", - "tmp": "^0.0.33", - "yaml": "^1.10.2" - }, - "bin": { - "patch-package": "index.js" - }, - "engines": { - "node": ">=10", - "npm": ">5" + "bn.js": "^2.0.3", + "brorand": "^1.0.1", + "hash.js": "^1.0.0", + "inherits": "^2.0.1" } }, - "node_modules/patch-package/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", + "node_modules/jws": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.1.0.tgz", + "integrity": "sha512-dIhjVxxfhs93IKornyqxfkx/H/fupqwrUzXAXu/zMkgnPyGH0qXKVtet0Fu7I7o0BlV3SDUkAKOCHpzPItPOoQ==", "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "base64url": "~1.0.4", + "jwa": "^1.1.0" } }, - "node_modules/patch-package/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/keccak": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/keccak/-/keccak-3.0.4.tgz", + "integrity": "sha512-3vKuW0jV8J3XNTzvfyicFR5qvxrSAGl7KIhvgOu5cmWwM7tZRj3fMbj/pfIf4be7aznbc+prBWGjywox/g2Y6Q==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "node-addon-api": "^2.0.0", + "node-gyp-build": "^4.2.0", + "readable-stream": "^3.6.0" }, "engines": { - "node": ">=4.8" + "node": ">=10.0.0" } }, - "node_modules/patch-package/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/keccak/node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/patch-package/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "node_modules/keep-alive-agent": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/keep-alive-agent/-/keep-alive-agent-0.0.1.tgz", + "integrity": "sha512-fF6aj9/XFwJiE/4zihw/ZdXg+KeyU4nFvmutF+PkAVadSGqP298+Zm6IzWFzgeDBgvLk3o8boBxNtd1g5Kdjfg==" }, - "node_modules/patch-package/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "json-buffer": "3.0.1" } }, - "node_modules/patch-package/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/kuler": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz", + "integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==", + "license": "MIT" }, - "node_modules/patch-package/node_modules/rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" + "node_modules/ky": { + "version": "0.33.3", + "resolved": "https://registry.npmjs.org/ky/-/ky-0.33.3.tgz", + "integrity": "sha512-CasD9OCEQSFIam2U8efFK81Yeg8vNMTBUqtMOHlrcWQHqUX3HeCl9Dr31u4toV7emlH8Mymk5+9p0lL6mKb/Xw==", + "license": "MIT", + "engines": { + "node": ">=14.16" }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/patch-package/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" } }, - "node_modules/patch-package/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/ky-universal": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/ky-universal/-/ky-universal-0.11.0.tgz", + "integrity": "sha512-65KyweaWvk+uKKkCrfAf+xqN2/epw1IJDtlyCPxYffFCMR8u1sp2U65NtWpnozYfZxQ6IUzIlvUcw+hQ82U2Xw==", "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "abort-controller": "^3.0.0", + "node-fetch": "^3.2.10" }, "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky-universal?sponsor=1" + }, + "peerDependencies": { + "ky": ">=0.31.4", + "web-streams-polyfill": ">=3.2.1" + }, + "peerDependenciesMeta": { + "web-streams-polyfill": { + "optional": true + } } }, - "node_modules/patch-package/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "node_modules/ky-universal/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">= 12" } }, - "node_modules/patch-package/node_modules/slash": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", - "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "node_modules/ky-universal/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/patch-package/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", "dependencies": { - "isexe": "^2.0.0" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/path": { - "version": "0.12.7", - "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", - "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", - "license": "MIT", + "node_modules/libp2p": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/libp2p/-/libp2p-1.8.3.tgz", + "integrity": "sha512-IpHKhR/gjiRcm3UqaHC3bEFsnBS62hTwXy60L8Uie8NZvvliVL6skmIBAODfma0+C7zvJhNKA8453SOmTeVTwQ==", + "license": "Apache-2.0 OR MIT", "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" + "@libp2p/crypto": "^4.1.8", + "@libp2p/interface": "^1.6.3", + "@libp2p/interface-internal": "^1.3.3", + "@libp2p/logger": "^4.0.19", + "@libp2p/multistream-select": "^5.1.16", + "@libp2p/peer-collections": "^5.2.8", + "@libp2p/peer-id": "^4.2.3", + "@libp2p/peer-id-factory": "^4.2.3", + "@libp2p/peer-store": "^10.1.4", + "@libp2p/utils": "^5.4.8", + "@multiformats/dns": "^1.0.6", + "@multiformats/multiaddr": "^12.2.3", + "@multiformats/multiaddr-matcher": "^1.2.1", + "any-signal": "^4.1.1", + "datastore-core": "^9.2.9", + "interface-datastore": "^8.2.11", + "it-merge": "^3.0.5", + "it-parallel": "^3.0.7", + "merge-options": "^3.0.4", + "multiformats": "^13.1.0", + "p-defer": "^4.0.1", + "progress-events": "^1.0.0", + "race-event": "^1.3.0", + "race-signal": "^1.0.2", + "uint8arrays": "^5.1.0" } }, - "node_modules/path-browserify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", - "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", - "license": "MIT" - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "license": "MIT", - "engines": { - "node": ">=8" + "node_modules/libp2p/node_modules/@multiformats/multiaddr": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/@multiformats/multiaddr/-/multiaddr-12.3.0.tgz", + "integrity": "sha512-JQ8Gc/jgucqqvEaDTFN/AvxlYDHEE7lgEWLMYW7hKZkWggER+GvG/tVxUgUxIP8M0vFpvEHKKHE0lKzyMsgi8Q==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "@chainsafe/is-ip": "^2.0.1", + "@chainsafe/netmask": "^2.0.0", + "@libp2p/interface": "^1.0.0", + "@multiformats/dns": "^1.0.3", + "multiformats": "^13.0.0", + "uint8-varint": "^2.0.1", + "uint8arrays": "^5.0.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node_modules/libp2p/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true, + "license": "MIT" + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/path-to-regexp": { - "version": "0.1.10", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", - "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", "license": "MIT" }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "license": "MIT", - "engines": { - "node": ">=8" - } + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true, + "license": "MIT" }, - "node_modules/path/node_modules/inherits": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", - "license": "ISC" + "node_modules/lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha512-H5ZhCF25riFd9uB5UCkVKo61m3S/xZk1x4wA6yp/L3RFP6Z/eHH1ymQcGLo7J3GMPfm0V/7m1tryHuGVxpqEBQ==", + "license": "MIT" }, - "node_modules/path/node_modules/util": { - "version": "0.10.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", - "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", - "license": "MIT", - "dependencies": { - "inherits": "2.0.3" - } + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true, + "license": "MIT" }, - "node_modules/pathval": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", - "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", - "license": "MIT", - "engines": { - "node": "*" - } + "node_modules/lodash.flattendeep": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.flattendeep/-/lodash.flattendeep-4.4.0.tgz", + "integrity": "sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==", + "dev": true, + "license": "MIT" }, - "node_modules/pbkdf2": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", - "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==", + "deprecated": "This package is deprecated. Use the optional chaining (?.) operator instead.", + "dev": true }, - "node_modules/pend": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", - "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==", + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true, "license": "MIT" }, - "node_modules/pico-signals": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/pico-signals/-/pico-signals-1.0.0.tgz", - "integrity": "sha512-Av5eg3cMtXbQVxVoIpP+dzHMBisRZuZy3htFWyaGGScT94AdfeT0On/QVhFNQhIMiY7aLi21W4pD+5KdWbEBUw==", + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true, "license": "MIT" }, - "node_modules/picocolors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", - "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==", - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "license": "MIT", - "engines": { - "node": ">=4" - } + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" }, - "node_modules/pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true, + "license": "MIT" }, - "node_modules/pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "node_modules/logform": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/logform/-/logform-2.6.1.tgz", + "integrity": "sha512-CdaO738xRapbKIMVn2m4F6KTj4j7ooJ8POVnebSgKo3KBz5axNXRAL7ZdRjIV6NOr2Uf4vjtRkxrFETOioCqSA==", "license": "MIT", "dependencies": { - "pinkie": "^2.0.0" + "@colors/colors": "1.6.0", + "@types/triple-beam": "^1.3.2", + "fecha": "^4.2.0", + "ms": "^2.1.1", + "safe-stable-stringify": "^2.3.1", + "triple-beam": "^1.3.0" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12.0.0" } }, - "node_modules/pkg-conf": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-2.1.0.tgz", - "integrity": "sha512-C+VUP+8jis7EsQZIhDYmS5qlNtjv2yP4SNtjXK9AP1ZcTRlnSfuumaTnRfYZnYgUUYVIKqL0fRvmUGDV2fmp6g==", + "node_modules/logform/node_modules/@colors/colors": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz", + "integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==", "license": "MIT", - "dependencies": { - "find-up": "^2.0.0", - "load-json-file": "^4.0.0" - }, "engines": { - "node": ">=4" + "node": ">=0.1.90" } }, - "node_modules/pkg-conf/node_modules/find-up": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", - "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, - "engines": { - "node": ">=4" - } + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" }, - "node_modules/pkg-conf/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "js-tokens": "^3.0.0 || ^4.0.0" }, - "engines": { - "node": ">=4" + "bin": { + "loose-envify": "cli.js" } }, - "node_modules/pkg-conf/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/loupe": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/loupe/-/loupe-2.3.7.tgz", + "integrity": "sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==", + "dev": true, "license": "MIT", "dependencies": { - "p-try": "^1.0.0" - }, - "engines": { - "node": ">=4" + "get-func-name": "^2.0.1" } }, - "node_modules/pkg-conf/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", - "license": "MIT", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "license": "ISC", "dependencies": { - "p-limit": "^1.1.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/pkg-conf/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/lru-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/lru-queue/-/lru-queue-0.1.0.tgz", + "integrity": "sha512-BpdYkt9EvGl8OfWHDQPISVpcl5xZthb+XPsbELj5AQXxIC8IriDZIQYjBJPEm5rS420sjZ0TLEzRcq5KdBhYrQ==", "license": "MIT", "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" + "es5-ext": "~0.10.2" } }, - "node_modules/pkg-dir/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", + "node_modules/lzma-purejs-requirejs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lzma-purejs-requirejs/-/lzma-purejs-requirejs-1.0.0.tgz", + "integrity": "sha512-nQgC+oDmBKPdWoC//X51scWTN5D3zdIL7oN+plbKjhZ+u5LAZsF0/yIiYTNtj+TjB1o6mp9R4Ey5DW6elBEu8w==", + "license": "BSD", "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "amdefine": "~0.1.0", + "commander": "~2.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "lzmajs": "bin/lzmajs" } }, - "node_modules/pkg-dir/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, + "node_modules/lzma-purejs-requirejs/node_modules/commander": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.2.0.tgz", + "integrity": "sha512-U6hBkeIsoeE81B+yas9uVF4YYVcVoBCwb1e314VPyvVQubFwvnTAuc1oUQ6VuMPYUS4Rf1gzr0wTVLvs4sb5Pw==", "engines": { - "node": ">=8" + "node": ">= 0.6.x" } }, - "node_modules/pkg-dir/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/macos-release": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz", + "integrity": "sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==", + "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-dir/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" + "semver": "^6.0.0" }, "engines": { "node": ">=8" - } - }, - "node_modules/pkg-up": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-4.0.0.tgz", - "integrity": "sha512-N4zdA4sfOe6yCv+ulPCmpnIBQ5I60xfhDr1otdBBhKte9QtEf3bhfrfkW7dTb+IQ0iEx4ZDzas0kc1o5rdWpYg==", - "license": "MIT", - "dependencies": { - "find-up": "^6.2.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", - "license": "MIT", + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/make-error": { + "version": "1.3.6", + "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", + "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", + "license": "ISC" + }, + "node_modules/make-fetch-happen": { + "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", + "license": "ISC", + "optional": true, "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "agentkeepalive": "^4.1.3", + "cacache": "^15.2.0", + "http-cache-semantics": "^4.1.0", + "http-proxy-agent": "^4.0.1", + "https-proxy-agent": "^5.0.0", + "is-lambda": "^1.0.1", + "lru-cache": "^6.0.0", + "minipass": "^3.1.3", + "minipass-collect": "^1.0.2", + "minipass-fetch": "^1.3.2", + "minipass-flush": "^1.0.5", + "minipass-pipeline": "^1.2.4", + "negotiator": "^0.6.2", + "promise-retry": "^2.0.1", + "socks-proxy-agent": "^6.0.0", + "ssri": "^8.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/make-fetch-happen/node_modules/@tootallnate/once": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-1.1.2.tgz", + "integrity": "sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==", "license": "MIT", - "dependencies": { - "p-locate": "^6.0.0" - }, + "optional": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/pkg-up/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/make-fetch-happen/node_modules/http-proxy-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-4.0.1.tgz", + "integrity": "sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==", "license": "MIT", + "optional": true, "dependencies": { - "yocto-queue": "^1.0.0" + "@tootallnate/once": "1", + "agent-base": "6", + "debug": "4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 6" } }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/make-fetch-happen/node_modules/socks-proxy-agent": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "license": "MIT", + "optional": true, "dependencies": { - "p-limit": "^4.0.0" + "agent-base": "^6.0.2", + "debug": "^4.3.3", + "socks": "^2.6.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 10" } }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/md5.js": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/md5.js/-/md5.js-1.3.5.tgz", + "integrity": "sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==", "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1", + "safe-buffer": "^5.1.2" } }, - "node_modules/pkg-up/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "license": "MIT", "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/playwright-core": { - "version": "1.33.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.33.0.tgz", - "integrity": "sha512-aizyPE1Cj62vAECdph1iaMILpT0WUDCq3E6rW6I+dleSbBoGbktvJtzS6VHkZ4DKNEOG9qJpiom/ZxO+S15LAw==", - "license": "Apache-2.0", - "bin": { - "playwright": "cli.js" + "node_modules/memoizee": { + "version": "0.4.17", + "resolved": "https://registry.npmjs.org/memoizee/-/memoizee-0.4.17.tgz", + "integrity": "sha512-DGqD7Hjpi/1or4F/aYAspXKNm5Yili0QDAFAY4QYvpqpgiY6+1jOfqpmByzjxbWd/T9mChbCArXAbDAsTm5oXA==", + "license": "ISC", + "dependencies": { + "d": "^1.0.2", + "es5-ext": "^0.10.64", + "es6-weak-map": "^2.0.3", + "event-emitter": "^0.3.5", + "is-promise": "^2.2.2", + "lru-queue": "^0.1.0", + "next-tick": "^1.1.0", + "timers-ext": "^0.1.7" }, "engines": { - "node": ">=14" + "node": ">=0.12" } }, - "node_modules/playwright-test": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/playwright-test/-/playwright-test-8.4.0.tgz", - "integrity": "sha512-rRhdetA58SE/iplR3404mkYV0uqJaPF8QRcYO2RM2Tyd756D+SYbQwu+nEJiBILi4AiPTCBHZYS+10WOenPhJQ==", + "node_modules/merge": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/merge/-/merge-2.1.1.tgz", + "integrity": "sha512-jz+Cfrg9GWOZbQAnDQ4hlVnQky+341Yk5ru8bZSe6sIDTCIg8n9i/u7hSQGSVOF3C7lH6mGtqjkiT9G4wFLL0w==", + "license": "MIT" + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "camelcase": "^7.0.1", - "chokidar": "^3.5.3", - "cpy": "^9.0.1", - "esbuild": "0.17.18", - "events": "^3.3.0", - "globby": "^13.1.4", - "kleur": "^4.1.5", - "lilconfig": "^2.1.0", - "lodash": "^4.17.21", - "merge-options": "^3.0.4", - "nanoid": "^4.0.2", - "ora": "^6.3.0", - "p-wait-for": "5.0.2", - "path-browserify": "^1.0.1", - "playwright-core": "1.33.0", - "polka": "^0.5.2", - "premove": "^4.0.0", - "process": "^0.11.10", - "sade": "^1.8.1", - "sirv": "^2.0.3", - "source-map": "0.6.1", - "stream-browserify": "^3.0.0", - "strip-ansi": "^7.0.1", - "tape": "^5.6.3", - "tempy": "^3.0.0", - "test-exclude": "^6.0.0", - "v8-to-istanbul": "^9.1.0" - }, - "bin": { - "playwright-test": "cli.js", - "pw-test": "cli.js" - }, - "engines": { - "node": ">=16.0.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/playwright-test/node_modules/@esbuild/win32-x64": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.18.tgz", - "integrity": "sha512-qU25Ma1I3NqTSHJUOKi9sAH1/Mzuvlke0ioMJRthLXKm7JiSKVwFghlGbDLOO2sARECGhja4xYfRAZNPAkooYg==", - "cpu": [ - "x64" - ], + "node_modules/merge-options": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/merge-options/-/merge-options-3.0.4.tgz", + "integrity": "sha512-2Sug1+knBjkaMsMgf1ctR1Ujx+Ayku4EdJN4Z+C2+JzoeF7A3OZ9KM2GY0CpQS51NR61LTurMJrRKPhSs3ZRTQ==", "license": "MIT", - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "is-plain-obj": "^2.1.0" + }, "engines": { - "node": ">=12" + "node": ">=10" } }, - "node_modules/playwright-test/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "license": "MIT" + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "node": ">= 8" } }, - "node_modules/playwright-test/node_modules/camelcase": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", - "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/playwright-test/node_modules/esbuild": { - "version": "0.17.18", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.18.tgz", - "integrity": "sha512-z1lix43jBs6UKjcZVKOw2xx69ffE2aG0PygLL5qJ9OS/gy0Ewd1gW/PUQIOIQGXBHWNywSc0floSKoMFF8aK2w==", - "hasInstallScript": true, + "node_modules/micromatch": { + "version": "4.0.7", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", + "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", + "dev": true, "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=12" + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "optionalDependencies": { - "@esbuild/android-arm": "0.17.18", - "@esbuild/android-arm64": "0.17.18", - "@esbuild/android-x64": "0.17.18", - "@esbuild/darwin-arm64": "0.17.18", - "@esbuild/darwin-x64": "0.17.18", - "@esbuild/freebsd-arm64": "0.17.18", - "@esbuild/freebsd-x64": "0.17.18", - "@esbuild/linux-arm": "0.17.18", - "@esbuild/linux-arm64": "0.17.18", - "@esbuild/linux-ia32": "0.17.18", - "@esbuild/linux-loong64": "0.17.18", - "@esbuild/linux-mips64el": "0.17.18", - "@esbuild/linux-ppc64": "0.17.18", - "@esbuild/linux-riscv64": "0.17.18", - "@esbuild/linux-s390x": "0.17.18", - "@esbuild/linux-x64": "0.17.18", - "@esbuild/netbsd-x64": "0.17.18", - "@esbuild/openbsd-x64": "0.17.18", - "@esbuild/sunos-x64": "0.17.18", - "@esbuild/win32-arm64": "0.17.18", - "@esbuild/win32-ia32": "0.17.18", - "@esbuild/win32-x64": "0.17.18" - } - }, - "node_modules/playwright-test/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", "engines": { - "node": ">=0.8.x" + "node": ">=8.6" } }, - "node_modules/playwright-test/node_modules/globby": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", - "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "license": "MIT", - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.3.0", - "ignore": "^5.2.4", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" } }, - "node_modules/playwright-test/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "dependencies": { + "mime-db": "1.52.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.6" } }, - "node_modules/playwright-test/node_modules/slash": { + "node_modules/mimic-fn": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "license": "MIT", "engines": { "node": ">=12" @@ -27934,2299 +15555,2402 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/playwright-test/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", - "license": "MIT", + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimalistic-crypto-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-crypto-utils/-/minimalistic-crypto-utils-1.0.1.tgz", + "integrity": "sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==", + "license": "MIT" + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "license": "ISC", "dependencies": { - "ansi-regex": "^6.0.1" + "brace-expansion": "^2.0.1" }, "engines": { - "node": ">=12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/playwright-test/node_modules/temp-dir": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-3.0.0.tgz", - "integrity": "sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==", + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "license": "MIT", - "engines": { - "node": ">=14.16" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/playwright-test/node_modules/tempy": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-3.1.0.tgz", - "integrity": "sha512-7jDLIdD2Zp0bDe5r3D2qtkd1QOCacylBuL7oa4udvN6v2pqr4+LcCr67C8DR1zkpaZ8XosF5m1yQSabKAW6f2g==", - "license": "MIT", + "node_modules/minipass": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "license": "ISC", "dependencies": { - "is-stream": "^3.0.0", - "temp-dir": "^3.0.0", - "type-fest": "^2.12.2", - "unique-string": "^3.0.0" + "yallist": "^4.0.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=8" } }, - "node_modules/playwright-test/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" + "node_modules/minipass-collect": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 8" } }, - "node_modules/plur": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/plur/-/plur-4.0.0.tgz", - "integrity": "sha512-4UGewrYgqDFw9vV6zNV+ADmPAUAfJPKtGvb/VdpQAx25X5f3xXdGdyOEVFwkl8Hl/tl7+xbeHqSEM+D5/TirUg==", + "node_modules/minipass-fetch": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "license": "MIT", + "optional": true, "dependencies": { - "irregular-plurals": "^3.2.0" + "minipass": "^3.1.0", + "minipass-sized": "^1.0.3", + "minizlib": "^2.0.0" }, "engines": { - "node": ">=10" + "node": ">=8" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "optionalDependencies": { + "encoding": "^0.1.12" } }, - "node_modules/polka": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/polka/-/polka-0.5.2.tgz", - "integrity": "sha512-FVg3vDmCqP80tOrs+OeNlgXYmFppTXdjD5E7I4ET1NjvtNmQrb1/mJibybKkb/d4NA7YWAr1ojxuhpL3FHqdlw==", - "license": "MIT", + "node_modules/minipass-flush": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", + "license": "ISC", + "optional": true, "dependencies": { - "@polka/url": "^0.5.0", - "trouter": "^2.0.1" - } - }, - "node_modules/pony-cause": { - "version": "2.1.11", - "resolved": "https://registry.npmjs.org/pony-cause/-/pony-cause-2.1.11.tgz", - "integrity": "sha512-M7LhCsdNbNgiLYiP4WjsfLUuFmCfnjdF6jKe2R9NKl4WFN+HZPGHJZ9lnLP7f9ZnKe3U9nuWD0szirmj+migUg==", - "license": "0BSD", + "minipass": "^3.0.0" + }, "engines": { - "node": ">=12.0.0" + "node": ">= 8" } }, - "node_modules/possible-typed-array-names": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", - "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", - "license": "MIT", + "node_modules/minipass-pipeline": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", + "license": "ISC", + "optional": true, + "dependencies": { + "minipass": "^3.0.0" + }, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/postcss": { - "version": "8.4.41", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.41.tgz", - "integrity": "sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", + "node_modules/minipass-sized": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", + "license": "ISC", + "optional": true, "dependencies": { - "nanoid": "^3.3.7", - "picocolors": "^1.0.1", - "source-map-js": "^1.2.0" + "minipass": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=8" } }, - "node_modules/postcss-values-parser": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/postcss-values-parser/-/postcss-values-parser-2.0.1.tgz", - "integrity": "sha512-2tLuBsA6P4rYTNKCXYG/71C7j1pU6pK503suYOmn4xYrQIzW+opD+7FAFNuGSdZC/3Qfy334QbeMu7MEb8gOxg==", + "node_modules/minizlib": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "license": "MIT", "dependencies": { - "flatten": "^1.0.2", - "indexes-of": "^1.0.1", - "uniq": "^1.0.1" + "minipass": "^3.0.0", + "yallist": "^4.0.0" }, "engines": { - "node": ">=6.14.4" + "node": ">= 8" } }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.7", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", - "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/mkdirp": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "license": "MIT", "bin": { - "nanoid": "bin/nanoid.cjs" + "mkdirp": "bin/cmd.js" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=10" } }, - "node_modules/prebuild-install": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", - "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", - "license": "MIT", + "node_modules/mkdirp-classic": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", + "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", + "license": "MIT" + }, + "node_modules/mocha": { + "version": "11.5.0", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-11.5.0.tgz", + "integrity": "sha512-VKDjhy6LMTKm0WgNEdlY77YVsD49LZnPSXJAaPNL9NRYQADxvORsyG1DIQY6v53BKTnlNbEE2MbVCDbnxr4K3w==", + "dev": true, "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" + "browser-stdout": "^1.3.1", + "chokidar": "^4.0.1", + "debug": "^4.3.5", + "diff": "^7.0.0", + "escape-string-regexp": "^4.0.0", + "find-up": "^5.0.0", + "glob": "^10.4.5", + "he": "^1.2.0", + "js-yaml": "^4.1.0", + "log-symbols": "^4.1.0", + "minimatch": "^9.0.5", + "ms": "^2.1.3", + "picocolors": "^1.1.1", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^17.7.2", + "yargs-parser": "^21.1.1", + "yargs-unparser": "^2.0.0" }, "bin": { - "prebuild-install": "bin.js" + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, - "node_modules/precinct": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/precinct/-/precinct-8.3.1.tgz", - "integrity": "sha512-pVppfMWLp2wF68rwHqBIpPBYY8Kd12lDhk8LVQzOwqllifVR15qNFyod43YLyFpurKRZQKnE7E4pofAagDOm2Q==", - "license": "MIT", + "node_modules/mocha/node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dev": true, "dependencies": { - "commander": "^2.20.3", - "debug": "^4.3.3", - "detective-amd": "^3.1.0", - "detective-cjs": "^3.1.1", - "detective-es6": "^2.2.1", - "detective-less": "^1.0.2", - "detective-postcss": "^4.0.0", - "detective-sass": "^3.0.1", - "detective-scss": "^2.0.1", - "detective-stylus": "^1.0.0", - "detective-typescript": "^7.0.0", - "module-definition": "^3.3.1", - "node-source-walk": "^4.2.0" - }, - "bin": { - "precinct": "bin/cli.js" + "readdirp": "^4.0.1" }, "engines": { - "node": "^10.13 || ^12 || >=14" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/precinct/node_modules/ast-module-types": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/ast-module-types/-/ast-module-types-3.0.0.tgz", - "integrity": "sha512-CMxMCOCS+4D+DkOQfuZf+vLrSEmY/7xtORwdxs4wtcC1wVgvk2MqFFTwQCFhvWsI4KPU9lcWXPI8DgRiz+xetQ==", - "license": "MIT", + "node_modules/mocha/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, "engines": { - "node": ">=6.0" + "node": ">=0.3.1" } }, - "node_modules/precinct/node_modules/detective-cjs": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/detective-cjs/-/detective-cjs-3.1.3.tgz", - "integrity": "sha512-ljs7P0Yj9MK64B7G0eNl0ThWSYjhAaSYy+fQcpzaKalYl/UoQBOzOeLCSFEY1qEBhziZ3w7l46KG/nH+s+L7BQ==", - "license": "MIT", + "node_modules/mocha/node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, "dependencies": { - "ast-module-types": "^3.0.0", - "node-source-walk": "^4.0.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=6.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/precinct/node_modules/detective-es6": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/detective-es6/-/detective-es6-2.2.2.tgz", - "integrity": "sha512-eZUKCUsbHm8xoeoCM0z6JFwvDfJ5Ww5HANo+jPR7AzkFpW9Mun3t/TqIF2jjeWa2TFbAiGaWESykf2OQp3oeMw==", - "license": "MIT", + "node_modules/mocha/node_modules/glob": { + "version": "10.4.5", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz", + "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==", + "dev": true, "dependencies": { - "node-source-walk": "^4.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/mocha/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/precinct/node_modules/node-source-walk": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/node-source-walk/-/node-source-walk-4.3.0.tgz", - "integrity": "sha512-8Q1hXew6ETzqKRAs3jjLioSxNfT1cx74ooiF8RlAONwVMcfq+UdzLC2eB5qcPldUxaE5w3ytLkrmV1TGddhZTA==", + "node_modules/mocha/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.0.0" + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" }, "engines": { - "node": ">=6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "license": "MIT", + "node_modules/mocha/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">= 0.8.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/premove": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/premove/-/premove-4.0.0.tgz", - "integrity": "sha512-zim/Hr4+FVdCIM7zL9b9Z0Wfd5Ya3mnKtiuDv7L5lzYzanSq6cOcVJ7EFcgK4I0pt28l8H0jX/x3nyog380XgQ==", - "license": "MIT", - "bin": { - "premove": "bin.js" - }, + "node_modules/mocha/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { - "node": ">=6" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/prettier": { - "version": "3.3.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", - "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/mocha/node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "dev": true, - "license": "MIT", - "bin": { - "prettier": "bin/prettier.cjs" - }, "engines": { - "node": ">=14" + "node": ">= 14.18.0" }, "funding": { - "url": "https://github.com/prettier/prettier?sponsor=1" + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/prettier-linter-helpers": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", - "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "node_modules/mocha/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "MIT", - "dependencies": { - "fast-diff": "^1.1.2" - }, "engines": { - "node": ">=6.0.0" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pretty-ms": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", - "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", - "license": "MIT", - "dependencies": { - "parse-ms": "^2.1.0" - }, + "node_modules/mocha/node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=8" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/private-ip": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-3.0.2.tgz", - "integrity": "sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw==", + "node_modules/moment": { + "version": "2.30.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.30.1.tgz", + "integrity": "sha512-uEmtNhbDOrWPFS+hdjFCBfy9f2YoyzRpwcl+DqpC6taX21FzsTLQVbMV/W7PzNSX6x/bhC1zA3c2UQ5NzH6how==", "license": "MIT", - "dependencies": { - "@chainsafe/is-ip": "^2.0.1", - "ip-regex": "^5.0.0", - "ipaddr.js": "^2.1.0", - "netmask": "^2.0.2" - }, "engines": { - "node": ">=14.16" + "node": "*" } }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" + "node_modules/mortice": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/mortice/-/mortice-3.0.4.tgz", + "integrity": "sha512-MUHRCAztSl4v/dAmK8vbYi5u1n9NZtQu4H3FsqS7qgMFQIAFw9lTpHiErd9kJpapqmvEdD1L3dUmiikifAvLsQ==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "observable-webworkers": "^2.0.1", + "p-queue": "^8.0.1", + "p-timeout": "^6.0.0" } }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "license": "MIT" }, - "node_modules/process-on-spawn": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", - "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", + "node_modules/multicast-dns": { + "version": "7.2.5", + "resolved": "https://registry.npmjs.org/multicast-dns/-/multicast-dns-7.2.5.tgz", + "integrity": "sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==", "license": "MIT", "dependencies": { - "fromentries": "^1.2.0" + "dns-packet": "^5.2.2", + "thunky": "^1.0.2" }, - "engines": { - "node": ">=8" + "bin": { + "multicast-dns": "cli.js" } }, - "node_modules/progress": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", - "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "node_modules/multiformats": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/multiformats/-/multiformats-13.2.2.tgz", + "integrity": "sha512-RWI+nyf0q64vyOxL8LbKtjJMki0sogRL/8axvklNtiTM0iFCVtHwME9w6+0P1/v4dQvsIg8A45oT3ka1t/M/+A==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/murmurhash3js-revisited": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/murmurhash3js-revisited/-/murmurhash3js-revisited-3.0.0.tgz", + "integrity": "sha512-/sF3ee6zvScXMb1XFJ8gDsSnY+X8PbOyjIuBhtgis10W2Jx4ZjIhikUCIF9c4gpJxVnQIsPAFrSwTCuAjicP6g==", "license": "MIT", "engines": { - "node": ">=0.4.0" + "node": ">=8.0.0" } }, - "node_modules/progress-events": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/progress-events/-/progress-events-1.0.1.tgz", - "integrity": "sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/promise-inflight": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", - "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", - "license": "ISC", - "optional": true - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", - "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", - "license": "MIT", + "node_modules/mv": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/mv/-/mv-2.1.1.tgz", + "integrity": "sha512-at/ZndSy3xEGJ8i0ygALh8ru9qy7gWW1cmkaqBN29JmMlIvM//MEO9y1sk/avxuwnPcfhkejkLsuPxH81BrkSg==", "optional": true, "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" + "mkdirp": "~0.5.1", + "ncp": "~2.0.0", + "rimraf": "~2.4.0" }, "engines": { - "node": ">=10" + "node": ">=0.8.0" } }, - "node_modules/promise-retry/node_modules/err-code": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", - "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", - "license": "MIT", - "optional": true + "node_modules/mv/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "optional": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } }, - "node_modules/promise-retry/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", + "node_modules/mv/node_modules/glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "deprecated": "Glob versions prior to v9 are no longer supported", "optional": true, + "dependencies": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">= 4" + "node": "*" } }, - "node_modules/promise.any": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-2.0.6.tgz", - "integrity": "sha512-Ew/MrPtTjiHnnki0AA2hS2o65JaZ5n+5pp08JSyWWUdeOGF4F41P+Dn+rdqnaOV/FTxhR6eBDX412luwn3th9g==", - "license": "MIT", + "node_modules/mv/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "optional": true, "dependencies": { - "array.prototype.map": "^1.0.5", - "call-bind": "^1.0.2", - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1", - "es-aggregate-error": "^1.0.10", - "get-intrinsic": "^1.2.1", - "iterate-value": "^1.0.2" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">= 0.4" + "node": "*" + } + }, + "node_modules/mv/node_modules/mkdirp": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", + "optional": true, + "dependencies": { + "minimist": "^1.2.6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "mkdirp": "bin/cmd.js" } }, - "node_modules/prompt": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/prompt/-/prompt-1.3.0.tgz", - "integrity": "sha512-ZkaRWtaLBZl7KKAKndKYUL8WqNT+cQHKRZnT4RYYms48jQkFw3rrBL+/N5K/KtdEveHkxs982MX2BkDKub2ZMg==", + "node_modules/mv/node_modules/rimraf": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.4.5.tgz", + "integrity": "sha512-J5xnxTyqaiw06JjMftq7L9ouA448dw/E7dKghkP9WpKNuwmARNNg+Gk8/u5ryb9N/Yo2+z3MCwuqFK/+qPOPfQ==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "optional": true, + "dependencies": { + "glob": "^6.0.1" + }, + "bin": { + "rimraf": "bin.js" + } + }, + "node_modules/n3": { + "version": "1.26.0", + "resolved": "https://registry.npmjs.org/n3/-/n3-1.26.0.tgz", + "integrity": "sha512-SQknS0ua90rN+3RHuk8BeIqeYyqIH/+ecViZxX08jR4j6MugqWRjtONl3uANG/crWXnOM2WIqBJtjIhVYFha+w==", "license": "MIT", "dependencies": { - "@colors/colors": "1.5.0", - "async": "3.2.3", - "read": "1.0.x", - "revalidator": "0.1.x", - "winston": "2.x" + "buffer": "^6.0.3", + "readable-stream": "^4.0.0" }, "engines": { - "node": ">= 6.0.0" + "node": ">=12.0" } }, - "node_modules/prompt/node_modules/async": { - "version": "3.2.3", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.3.tgz", - "integrity": "sha512-spZRyzKL5l5BZQrr/6m/SqFdBN0q3OCI0f9rjfBzCMBIP4p75P620rR3gTmaksNOhmzgdxcaxdNfMy6anrbM0g==", + "node_modules/nan": { + "version": "2.14.0", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.14.0.tgz", + "integrity": "sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg==", + "license": "MIT" + }, + "node_modules/napi-build-utils": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/napi-build-utils/-/napi-build-utils-1.0.2.tgz", + "integrity": "sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==", "license": "MIT" }, - "node_modules/prompt/node_modules/winston": { - "version": "2.4.7", - "resolved": "https://registry.npmjs.org/winston/-/winston-2.4.7.tgz", - "integrity": "sha512-vLB4BqzCKDnnZH9PHGoS2ycawueX4HLqENXQitvFHczhgW2vFpSOn31LZtVr1KU8YTw7DS4tM+cqyovxo8taVg==", + "node_modules/native-fetch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/native-fetch/-/native-fetch-4.0.2.tgz", + "integrity": "sha512-4QcVlKFtv2EYVS5MBgsGX5+NWKtbDbIECdUXDBGDMAZXq3Jkv9zf+y8iS7Ub8fEdga3GpYeazp9gauNqXHJOCg==", "license": "MIT", - "dependencies": { - "async": "^2.6.4", - "colors": "1.0.x", - "cycle": "1.0.x", - "eyes": "0.1.x", - "isstream": "0.1.x", - "stack-trace": "0.0.x" - }, - "engines": { - "node": ">= 0.10.0" + "peerDependencies": { + "undici": "*" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/ncp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ncp/-/ncp-2.0.0.tgz", + "integrity": "sha512-zIdGUrPRFTUELUvr3Gmc7KZ2Sw/h1PiVM0Af/oHB6zgnV1ikqSfRk+TOufi79aHYCW3NiOXmr1BP5nWbzojLaA==", + "optional": true, + "bin": { + "ncp": "bin/ncp" } }, - "node_modules/prompt/node_modules/winston/node_modules/async": { - "version": "2.6.4", - "resolved": "https://registry.npmjs.org/async/-/async-2.6.4.tgz", - "integrity": "sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==", + "node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" + "engines": { + "node": ">= 0.6" } }, - "node_modules/prop-types": { - "version": "15.8.1", - "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", - "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "license": "MIT" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", "license": "MIT", - "dependencies": { - "loose-envify": "^1.4.0", - "object-assign": "^4.1.1", - "react-is": "^16.13.1" + "engines": { + "node": ">= 0.4.0" } }, - "node_modules/proper-lockfile": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/proper-lockfile/-/proper-lockfile-4.1.2.tgz", - "integrity": "sha512-TjNPblN4BwAWMXU8s9AEz4JmQxnD1NNL7bNOY/AKUzyamc379FWASUhc/K1pL2noVb+XmZKLL68cjzLsiOAMaA==", + "node_modules/new-github-release-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", + "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", + "dev": true, "license": "MIT", "dependencies": { - "graceful-fs": "^4.2.4", - "retry": "^0.12.0", - "signal-exit": "^3.0.2" + "type-fest": "^2.5.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proper-lockfile/node_modules/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", - "license": "MIT", + "node_modules/new-github-release-url/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "license": "(MIT OR CC0-1.0)", "engines": { - "node": ">= 4" + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/proto-list": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", - "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "node_modules/next-tick": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "license": "ISC" }, - "node_modules/protocols": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", - "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "node_modules/nise": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/nise/-/nise-6.1.1.tgz", + "integrity": "sha512-aMSAzLVY7LyeM60gvBS423nBmIPP+Wy7St7hsb+8/fc1HmeoHJfLO8CKse4u3BtOZvQLJghYPI2i/1WZrEj5/g==", "dev": true, - "license": "MIT" - }, - "node_modules/protons-runtime": { - "version": "5.4.0", - "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz", - "integrity": "sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw==", - "license": "Apache-2.0 OR MIT", "dependencies": { - "uint8-varint": "^2.0.2", - "uint8arraylist": "^2.4.3", - "uint8arrays": "^5.0.1" + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.1", + "@sinonjs/text-encoding": "^0.7.3", + "just-extend": "^6.2.0", + "path-to-regexp": "^8.1.0" } }, - "node_modules/protons-runtime/node_modules/uint8arrays": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", - "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", - "license": "Apache-2.0 OR MIT", - "dependencies": { - "multiformats": "^13.0.0" + "node_modules/nise/node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "dev": true, + "engines": { + "node": ">=16" } }, - "node_modules/proxy-addr": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", - "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "node_modules/node-abi": { + "version": "3.65.0", + "resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.65.0.tgz", + "integrity": "sha512-ThjYBfoDNr08AWx6hGaRbfPwxKV9kVzAzOzlLKbk2CuqXE2xnCh+cbAGnwM3t8Lq4v9rUB7VfondlkBckcJrVA==", "license": "MIT", "dependencies": { - "forwarded": "0.2.0", - "ipaddr.js": "1.9.1" + "semver": "^7.3.5" }, "engines": { - "node": ">= 0.10" + "node": ">=10" } }, - "node_modules/proxy-addr/node_modules/ipaddr.js": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", - "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } + "node_modules/node-addon-api": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.2.tgz", + "integrity": "sha512-Ntyt4AIXyaLIuMHF6IOoTakB3K+RWxwtsHNRxllEoA6vPwP9o4866g6YWDLUdnucilZhmkxiHwHr11gAENw+QA==", + "license": "MIT" }, - "node_modules/proxy-agent": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", - "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", - "dev": true, - "license": "MIT", + "node_modules/node-cron": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/node-cron/-/node-cron-3.0.3.tgz", + "integrity": "sha512-dOal67//nohNgYWb+nWmg5dkFdIwDm8EpeGYMekPMrngV3637lqnX0lbUcCtgibHTz6SEz7DAIjKvKDFYCnO1A==", + "license": "ISC", "dependencies": { - "agent-base": "^7.0.2", - "debug": "^4.3.4", - "http-proxy-agent": "^7.0.1", - "https-proxy-agent": "^7.0.3", - "lru-cache": "^7.14.1", - "pac-proxy-agent": "^7.0.1", - "proxy-from-env": "^1.1.0", - "socks-proxy-agent": "^8.0.2" + "uuid": "8.3.2" }, "engines": { - "node": ">= 14" + "node": ">=6.0.0" } }, - "node_modules/proxy-agent/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "dev": true, + "node_modules/node-cron/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, "engines": { - "node": ">= 14" + "node": ">=10.5.0" } }, - "node_modules/proxy-agent/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dev": true, "license": "MIT", "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" + "whatwg-url": "^5.0.0" }, "engines": { - "node": ">= 14" + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } } }, - "node_modules/proxy-agent/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "dev": true, + "node_modules/node-gyp": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "license": "MIT", + "optional": true, "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.6", + "make-fetch-happen": "^9.1.0", + "nopt": "^5.0.0", + "npmlog": "^6.0.0", + "rimraf": "^3.0.2", + "semver": "^7.3.5", + "tar": "^6.1.2", + "which": "^2.0.2" + }, + "bin": { + "node-gyp": "bin/node-gyp.js" }, "engines": { - "node": ">= 14" + "node": ">= 10.12.0" } }, - "node_modules/proxy-agent/node_modules/lru-cache": { - "version": "7.18.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", - "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" + "node_modules/node-gyp-build": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.8.1.tgz", + "integrity": "sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==", + "license": "MIT", + "bin": { + "node-gyp-build": "bin.js", + "node-gyp-build-optional": "optional.js", + "node-gyp-build-test": "build-test.js" } }, - "node_modules/proxy-from-env": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", - "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", - "license": "MIT" - }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "license": "ISC" - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/node-gyp/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", "license": "MIT", + "optional": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "node_modules/node-gyp/node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "license": "MIT", + "optional": true, "engines": { "node": ">=6" } }, - "node_modules/pupa": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", - "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", - "license": "MIT", + "node_modules/node-gyp/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "optional": true, "dependencies": { - "escape-goat": "^4.0.0" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=12.20" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/pvtsutils": { - "version": "1.3.5", - "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", - "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", - "license": "MIT", + "node_modules/node-gyp/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "optional": true, "dependencies": { - "tslib": "^2.6.1" - } - }, - "node_modules/pvutils": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", - "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", - "license": "MIT", + "brace-expansion": "^1.1.7" + }, "engines": { - "node": ">=6.0.0" + "node": "*" } }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", - "license": "MIT", + "node_modules/node-gyp/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "optional": true, "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "node": ">=8" } }, - "node_modules/qs": { - "version": "6.13.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", - "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "license": "BSD-3-Clause", + "node_modules/node-gyp/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "optional": true, "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/querystring": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", - "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", - "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", "engines": { - "node": ">=0.4.x" + "node": ">=10" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/node-preload": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/node-preload/-/node-preload-0.2.1.tgz", + "integrity": "sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=10" + "dependencies": { + "process-on-spawn": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/race-event": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.3.0.tgz", - "integrity": "sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/race-signal": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.0.tgz", - "integrity": "sha512-VqsW1uzCXfKBd2DhA3K3NhQlqQr04+5WQ7+kHpf1HzT01Q+ePSFWZdQHXKZPuLmm2eXTZM1XLO76cq15ZRAaEA==", - "license": "Apache-2.0 OR MIT" - }, - "node_modules/ramda": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/ramda/-/ramda-0.25.0.tgz", - "integrity": "sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ==", + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, "license": "MIT" }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/nodeify-fetch": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/nodeify-fetch/-/nodeify-fetch-3.1.0.tgz", + "integrity": "sha512-ZV81vM//sEgTgXwVZlOONzcOCdTGQ53mV65FVSNXgPQHa8oCwRLtLbnGxL/1S/Yw90bcXUDKMz00jEnaeazo+A==", "license": "MIT", "dependencies": { - "safe-buffer": "^5.1.0" + "lodash": "^4.17.21", + "node-fetch": "^3.2.10", + "readable-stream": "^4.2.0", + "stream-chunks": "^1.0.0" } }, - "node_modules/range-parser": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", - "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "node_modules/nodeify-fetch/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", "license": "MIT", "engines": { - "node": ">= 0.6" + "node": ">= 12" } }, - "node_modules/raw-body": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", - "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", + "node_modules/nodeify-fetch/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", "license": "MIT", "dependencies": { - "bytes": "3.1.2", - "http-errors": "2.0.0", - "iconv-lite": "0.4.24", - "unpipe": "1.0.0" + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" }, "engines": { - "node": ">= 0.8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/rc": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", - "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "node_modules/nopt": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", + "license": "ISC", + "optional": true, "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" + "abbrev": "1" }, "bin": { - "rc": "cli.js" + "nopt": "bin/nopt.js" + }, + "engines": { + "node": ">=6" } }, - "node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", "license": "MIT", + "dependencies": { + "path-key": "^4.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rdf-canonize": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", - "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", - "license": "BSD-3-Clause", - "dependencies": { - "setimmediate": "^1.0.5" - }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "license": "MIT", "engines": { "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rdf-data-factory": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.2.tgz", - "integrity": "sha512-TfQD63Lokabd09ES1jAtKK8AA6rkr9rwyUBGo6olOt1CE0Um36CUQIqytyf0am2ouBPR0l7SaHxCiMcPGHkt1A==", - "license": "MIT", + "node_modules/npmlog": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-6.0.2.tgz", + "integrity": "sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==", + "deprecated": "This package is no longer supported.", + "license": "ISC", + "optional": true, "dependencies": { - "@rdfjs/types": "*" + "are-we-there-yet": "^3.0.0", + "console-control-strings": "^1.1.0", + "gauge": "^4.0.3", + "set-blocking": "^2.0.0" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" } }, - "node_modules/rdf-dataset-ext": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/rdf-dataset-ext/-/rdf-dataset-ext-1.1.0.tgz", - "integrity": "sha512-CH85RfRKN9aSlbju8T7aM8hgCSWMBsh2eh/tGxUUtWMN+waxi6iFDt8/r4PAEmKaEA82guimZJ4ISbmJ2rvWQg==", - "deprecated": "rdf-dataset-ext is deprecated. Switching to rdf-ext is recommended.", + "node_modules/number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha512-4jbtZXNAsfZbAHiiqjLPBiCl16dES1zI4Hpzzxw61Tk+loF+sBDBKx1ICKKKwIqQ7M0mFn1TmkN7euSncWgHiQ==", "license": "MIT", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/nyc": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-17.1.0.tgz", + "integrity": "sha512-U42vQ4czpKa0QdI1hu950XuNhYqgoM+ZF1HT+VuUHL9hPfDPVvNQyltmMqdE9bUHMVa+8yNbc3QKTj8zQhlVxQ==", + "dev": true, "dependencies": { - "rdf-canonize": "^3.0.0", - "readable-stream": "3 - 4" + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "caching-transform": "^4.0.0", + "convert-source-map": "^1.7.0", + "decamelize": "^1.2.0", + "find-cache-dir": "^3.2.0", + "find-up": "^4.1.0", + "foreground-child": "^3.3.0", + "get-package-type": "^0.1.0", + "glob": "^7.1.6", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-hook": "^3.0.0", + "istanbul-lib-instrument": "^6.0.2", + "istanbul-lib-processinfo": "^2.0.2", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.0.2", + "make-dir": "^3.0.0", + "node-preload": "^0.2.1", + "p-map": "^3.0.0", + "process-on-spawn": "^1.0.0", + "resolve-from": "^5.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "spawn-wrap": "^2.0.0", + "test-exclude": "^6.0.0", + "yargs": "^15.0.2" + }, + "bin": { + "nyc": "bin/nyc.js" + }, + "engines": { + "node": ">=18" } }, - "node_modules/rdf-literal": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", - "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", + "node_modules/nyc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "license": "MIT", "dependencies": { - "@rdfjs/types": "*", - "rdf-data-factory": "^1.1.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/rdf-utils-fs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/rdf-utils-fs/-/rdf-utils-fs-3.0.0.tgz", - "integrity": "sha512-TdP7WZyGVmKFeAotPj5nzZn2XIAd0yaH/qfLBSvUA6Sc6ZNB8jL+iHb45KMCsaNTqKbYZSkrw/fsIQNFM6XZCA==", - "license": "MIT", + "node_modules/nyc/node_modules/cliui": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", + "dev": true, + "license": "ISC", "dependencies": { - "@rdfjs/formats-common": "^3.1.0", - "readable-stream": "^4.4.2" + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^6.2.0" } }, - "node_modules/rdf-validate-datatype": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/rdf-validate-datatype/-/rdf-validate-datatype-0.2.1.tgz", - "integrity": "sha512-DpREnmoWDxC80KyslZeBPLQb3ztyeiOolT4uCl58tCju2KHJu4j5vonmVVdEJh2Mpad5UY57v6sSM/hfSTFGKQ==", + "node_modules/nyc/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { - "@rdfjs/term-map": "^2.0.0", - "@tpluscode/rdf-ns-builders": "3 - 4" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/rdf-validate-shacl": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/rdf-validate-shacl/-/rdf-validate-shacl-0.5.6.tgz", - "integrity": "sha512-B23lccAy1uIYU9XVoXxK2DFGMV+xBbpvzTpfBJXLKoURjdEOfu/MCih1AHiGJh9PInvl667GvkVD9TmAE2b3Sg==", - "license": "MIT", + "node_modules/nyc/node_modules/foreground-child": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", + "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "dev": true, "dependencies": { - "@rdfjs/data-model": "^2", - "@rdfjs/dataset": "^2", - "@rdfjs/environment": "^1", - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-set": "^2.0.1", - "@vocabulary/sh": "^1.0.1", - "clownface": "^2.0.0", - "debug": "^4.3.2", - "rdf-literal": "^1.3.0", - "rdf-validate-datatype": "^0.2.0" + "cross-spawn": "^7.0.6", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rdf-validation": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/rdf-validation/-/rdf-validation-0.1.1.tgz", - "integrity": "sha512-z2RbRcsKOM+CWa7qoI4LWCQQTji64eoBNLvbP3++0ZE4pO4EP1xkV5asSH4TULeLfDEuMhzyDXRnAjA+8R2l4w==", - "license": "MIT", - "dependencies": { - "@rdfjs/data-model": "^2.0.1", - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-map": "^2.0.0", - "@rdfjs/to-ntriples": "^3.0.1" + "node_modules/nyc/node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rdflib": { - "version": "2.2.35", - "resolved": "https://registry.npmjs.org/rdflib/-/rdflib-2.2.35.tgz", - "integrity": "sha512-PudSzYz0cVy5iuKmxaNfl0WPuPq4h9LAWbyJSn36gwTMtWbBgcqUDobdcDK3P6mxeOui/cosDXu0A9oVicVfyA==", - "license": "MIT", + "node_modules/nyc/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/runtime": "^7.24.4", - "@frogcat/ttl2jsonld": "^0.0.9", - "@xmldom/xmldom": "^0.8.10", - "cross-fetch": "^3.1.8", - "jsonld": "^8.3.2", - "n3": "^1.17.3", - "solid-namespace": "^0.5.3" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/rdfxml-streaming-parser": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", - "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", + "node_modules/nyc/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "license": "MIT", - "dependencies": { - "@rdfjs/types": "*", - "@rubensworks/saxes": "^6.0.1", - "@types/readable-stream": "^2.3.13", - "buffer": "^6.0.3", - "rdf-data-factory": "^1.1.0", - "readable-stream": "^4.4.2", - "relative-to-absolute-iri": "^1.0.0", - "validate-iri": "^1.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/rdfxml-streaming-parser/node_modules/@types/readable-stream": { - "version": "2.3.15", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", - "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", + "node_modules/nyc/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "license": "MIT", "dependencies": { - "@types/node": "*", - "safe-buffer": "~5.1.1" + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "license": "MIT" - }, - "node_modules/react-native-test-runner": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/react-native-test-runner/-/react-native-test-runner-5.0.0.tgz", - "integrity": "sha512-/ztZUqRqV98/lLbGN781egGXjkR8i7MhfAm7nGtKe1DoDuITkvQk/4fF/nXfDyZEtaae9NYuv2MocUR/qcN1bQ==", - "license": "MIT", + "node_modules/nyc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", "dependencies": { - "@babel/plugin-proposal-async-generator-functions": "^7.12.12", - "babel-plugin-transform-inline-environment-variables": "^0.4.3", - "chai": "^4.2.0", - "execa": "^4.1.0", - "find-up": "^5.0.0", - "fs-extra": "^9.0.1", - "globby": "^11.0.1", - "is-ci": "^2.0.0", - "is-uuid": "^1.0.2", - "lilconfig": "^2.0.2", - "meow": "^8.0.0", - "merge-options": "^3.0.4", - "metro-react-native-babel-preset": "^0.64.0", - "ora": "^5.1.0", - "p-retry": "^4.2.0", - "p-tap": "^3.1.0", - "patch-package": "^6.2.2", - "pico-signals": "^1.0.0", - "read-pkg": "^5.2.0", - "semver": "^7.3.4", - "tempy": "^1.0.0", - "yn": "^4.0.0" - }, - "bin": { - "rn-test": "cli/index.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=14" + "node": "*" } }, - "node_modules/react-native-test-runner/node_modules/@types/retry": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.0.tgz", - "integrity": "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==", - "license": "MIT" - }, - "node_modules/react-native-test-runner/node_modules/bl": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", - "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "node_modules/nyc/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "license": "MIT", "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-native-test-runner/node_modules/buffer": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", - "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/nyc/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "license": "MIT", "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/react-native-test-runner/node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "node_modules/nyc/node_modules/p-map": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-3.0.0.tgz", + "integrity": "sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==", + "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^3.1.0" + "aggregate-error": "^3.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/react-native-test-runner/node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "node_modules/nyc/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/react-native-test-runner/node_modules/execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", + "node_modules/nyc/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=10" + "node": ">=8" + } + }, + "node_modules/nyc/node_modules/wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "engines": { + "node": ">=8" } }, - "node_modules/react-native-test-runner/node_modules/fs-extra": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-9.1.0.tgz", - "integrity": "sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==", + "node_modules/nyc/node_modules/y18n": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/nyc/node_modules/yargs": { + "version": "15.4.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", + "dev": true, "license": "MIT", "dependencies": { - "at-least-node": "^1.0.0", - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "cliui": "^6.0.0", + "decamelize": "^1.2.0", + "find-up": "^4.1.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^4.2.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^18.1.2" }, "engines": { - "node": ">=10" + "node": ">=8" } }, - "node_modules/react-native-test-runner/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "license": "MIT", + "node_modules/nyc/node_modules/yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "license": "ISC", "dependencies": { - "pump": "^3.0.0" + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/react-native-test-runner/node_modules/human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "license": "Apache-2.0", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", "engines": { - "node": ">=8.12.0" + "node": ">=0.10.0" } }, - "node_modules/react-native-test-runner/node_modules/is-interactive": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", - "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "node_modules/object-hash": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", + "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 6" } }, - "node_modules/react-native-test-runner/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", "license": "MIT", "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-native-test-runner/node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/react-native-test-runner/node_modules/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "license": "MIT", "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-native-test-runner/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, "engines": { - "node": ">=6" + "node": ">= 0.4" } }, - "node_modules/react-native-test-runner/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^3.0.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-native-test-runner/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/react-native-test-runner/node_modules/ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, "license": "MIT", "dependencies": { - "bl": "^4.1.0", - "chalk": "^4.1.0", - "cli-cursor": "^3.1.0", - "cli-spinners": "^2.5.0", - "is-interactive": "^1.0.0", - "is-unicode-supported": "^0.1.0", - "log-symbols": "^4.1.0", - "strip-ansi": "^6.0.0", - "wcwidth": "^1.0.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/react-native-test-runner/node_modules/p-retry": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", - "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", - "license": "MIT", - "dependencies": { - "@types/retry": "0.12.0", - "retry": "^0.13.1" - }, + "node_modules/observable-webworkers": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/observable-webworkers/-/observable-webworkers-2.0.1.tgz", + "integrity": "sha512-JI1vB0u3pZjoQKOK1ROWzp0ygxSi7Yb0iR+7UNsw4/Zn4cQ0P3R7XL38zac/Dy2tEA7Lg88/wIJTjF8vYXZ0uw==", + "license": "Apache-2.0 OR MIT", "engines": { - "node": ">=8" + "node": ">=16.0.0", + "npm": ">=7.0.0" } }, - "node_modules/react-native-test-runner/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "license": "MIT", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "ee-first": "1.1.1" }, "engines": { - "node": ">= 6" + "node": ">= 0.8" } }, - "node_modules/react-native-test-runner/node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", - "license": "MIT", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" + "wrappy": "1" } }, - "node_modules/react-native-test-runner/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/one-time": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz", + "integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "fn.name": "1.x.x" } }, - "node_modules/react-native-test-runner/node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", "license": "MIT", "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "mimic-fn": "^4.0.0" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-native-test-runner/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 0.8.0" } }, - "node_modules/react-native-test-runner/node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/os-name": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.1.0.tgz", + "integrity": "sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==", + "dev": true, "license": "MIT", "dependencies": { - "crypto-random-string": "^2.0.0" + "macos-release": "^3.1.0", + "windows-release": "^5.0.1" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-refresh": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", - "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" } }, - "node_modules/read": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", - "integrity": "sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==", - "license": "ISC", - "dependencies": { - "mute-stream": "~0.0.4" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "node_modules/p-defer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-4.0.1.tgz", + "integrity": "sha512-Mr5KC5efvAK5VUptYEIopP1bakB85k2IWXaRC0rsh1uwn1L6M0LVml8OIQ4Gudg4oyZakf7FmeRLkMMtZW1i5A==", "license": "MIT", - "dependencies": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-9.1.0.tgz", - "integrity": "sha512-vaMRR1AC1nrd5CQM0PhlRsO5oc2AAigqr7cCrZ/MW/Rsaflz4RlgzkpL4qoU/z1F6wrbd85iFv1OQj/y5RdGvg==", + "node_modules/p-event": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-6.0.1.tgz", + "integrity": "sha512-Q6Bekk5wpzW5qIyUP4gdMEujObYstZl6DMMOSenwBvV0BlE5LkDwkjs5yHbZmdCEq2o4RJx4tE1vwxFVf2FG1w==", "license": "MIT", "dependencies": { - "find-up": "^6.3.0", - "read-pkg": "^7.1.0", - "type-fest": "^2.5.0" + "p-timeout": "^6.1.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=16.17" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/find-up": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", - "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, "license": "MIT", "dependencies": { - "locate-path": "^7.1.0", - "path-exists": "^5.0.0" + "yocto-queue": "^0.1.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/locate-path": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", - "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^6.0.0" + "p-limit": "^3.0.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-limit": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", - "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "node_modules/p-queue": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-8.0.1.tgz", + "integrity": "sha512-NXzu9aQJTAzbBqOt2hwsR63ea7yvxJc0PwN/zobNAudYfb1B7R08SzB4TsLeSbUCuG467NhnoT0oO6w1qRO+BA==", "license": "MIT", "dependencies": { - "yocto-queue": "^1.0.0" + "eventemitter3": "^5.0.1", + "p-timeout": "^6.1.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/p-locate": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", - "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "node_modules/p-timeout": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-6.1.2.tgz", + "integrity": "sha512-UbD77BuZ9Bc9aABo74gfXhNvzC9Tx7SxtHSh1fxvx3jTLLYvmVhiQZZrJzqqU0jKbN32kb5VOKiLEQI/3bIjgQ==", "license": "MIT", - "dependencies": { - "p-limit": "^4.0.0" - }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg-up/node_modules/path-exists": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", - "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, "license": "MIT", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=6" } }, - "node_modules/read-pkg-up/node_modules/read-pkg": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-7.1.0.tgz", - "integrity": "sha512-5iOehe+WF75IccPc30bWTbpdDQLOCc3Uu8bi3Dte3Eueij81yx1Mrufk8qBx/YAbR4uL1FdUr+7BKXDwEtisXg==", + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "dev": true, "license": "MIT", "dependencies": { - "@types/normalize-package-data": "^2.4.1", - "normalize-package-data": "^3.0.2", - "parse-json": "^5.2.0", - "type-fest": "^2.0.0" + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" }, "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/read-pkg-up/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=12.20" + "node_modules/pac-proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "license": "MIT", + "dependencies": { + "debug": "^4.3.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 14" } }, - "node_modules/read-pkg-up/node_modules/yocto-queue": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", - "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "node_modules/pac-proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">= 14" } }, - "node_modules/read-pkg/node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "license": "ISC" - }, - "node_modules/read-pkg/node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "license": "BSD-2-Clause", + "node_modules/pac-proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "license": "MIT", "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/read-pkg/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "license": "ISC", - "bin": { - "semver": "bin/semver" + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "license": "MIT", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" } }, - "node_modules/read-pkg/node_modules/type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "license": "(MIT OR CC0-1.0)", + "node_modules/package-hash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/package-hash/-/package-hash-4.0.0.tgz", + "integrity": "sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==", + "dev": true, + "license": "ISC", + "dependencies": { + "graceful-fs": "^4.1.15", + "hasha": "^5.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + }, "engines": { "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.5.2.tgz", - "integrity": "sha512-yjavECdqeZ3GLXNgRXgeQEdz9fvDDkNKyHnbHRFtOr7/LcfgBcmct7t/ET+HaCTqfh06OzoAxrkN/IfjJBVe+g==", + "node_modules/package-json-from-dist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", + "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", + "dev": true + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, "license": "MIT", "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" + "callsites": "^3.0.0" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=6" } }, - "node_modules/readable-stream/node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/parse-github-url": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/parse-github-url/-/parse-github-url-1.0.3.tgz", + "integrity": "sha512-tfalY5/4SqGaV/GIGzWyHnFjlpTPTNpENR9Ea2lLldSJ8EWXMsvacWucqY3m3I4YPtas15IxTLQVQ5NSYXPrww==", + "dev": true, "license": "MIT", + "bin": { + "parse-github-url": "cli.js" + }, "engines": { - "node": ">=0.8.x" + "node": ">= 0.10" } }, - "node_modules/readdirp": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", - "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, "license": "MIT", "dependencies": { - "picomatch": "^2.2.1" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=8.10.0" + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-2.1.0.tgz", + "integrity": "sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dev": true, + "license": "MIT", + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dev": true, + "license": "MIT", + "dependencies": { + "parse-path": "^7.0.0" } }, - "node_modules/receptacle": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", - "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "license": "MIT", - "dependencies": { - "ms": "^2.1.1" + "engines": { + "node": ">= 0.8" } }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "dependencies": { - "resolve": "^1.1.6" - }, + "license": "MIT", "engines": { - "node": ">= 0.10" + "node": ">=8" } }, - "node_modules/redent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", - "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "license": "MIT", - "dependencies": { - "indent-string": "^4.0.0", - "strip-indent": "^3.0.0" - }, "engines": { - "node": ">=8" + "node": ">=0.10.0" } }, - "node_modules/redeyed": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/redeyed/-/redeyed-2.1.1.tgz", - "integrity": "sha512-FNpGGo1DycYAdnrKFxCMmKYgo/mILAqtRYbkdQD8Ep/Hk2PQ5+aEAEx+IU713RTDmuBaH0c8P5ZozurNu5ObRQ==", + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "license": "MIT", - "dependencies": { - "esprima": "~4.0.0" + "engines": { + "node": ">=8" } }, - "node_modules/reflect-metadata": { - "version": "0.1.14", - "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", - "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", - "license": "Apache-2.0" + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" }, - "node_modules/reflect.getprototypeof": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", - "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", - "license": "MIT", + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dev": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.1", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.4", - "globalthis": "^1.0.3", - "which-builtin-type": "^1.1.3" + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=16 || 14 >=14.18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/regenerate": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/regenerate/-/regenerate-1.4.2.tgz", - "integrity": "sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==", - "license": "MIT" + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true }, - "node_modules/regenerate-unicode-properties": { - "version": "10.1.1", - "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", - "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", - "license": "MIT", - "dependencies": { - "regenerate": "^1.4.2" - }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/regenerator-runtime": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", - "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "node_modules/path-to-regexp": { + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==", "license": "MIT" }, - "node_modules/regenerator-transform": { - "version": "0.15.2", - "resolved": "https://registry.npmjs.org/regenerator-transform/-/regenerator-transform-0.15.2.tgz", - "integrity": "sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.8.4" - } - }, - "node_modules/regexp-tree": { - "version": "0.1.27", - "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", - "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, "license": "MIT", - "bin": { - "regexp-tree": "bin/regexp-tree" - } - }, - "node_modules/regexp.prototype.flags": { - "version": "1.5.2", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", - "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.6", - "define-properties": "^1.2.1", - "es-errors": "^1.3.0", - "set-function-name": "^2.0.1" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/regexpp": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", - "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "node_modules/pathval": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.1.tgz", + "integrity": "sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/mysticatea" + "node": "*" } }, - "node_modules/regexpu-core": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/regexpu-core/-/regexpu-core-5.3.2.tgz", - "integrity": "sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==", + "node_modules/pbkdf2": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pbkdf2/-/pbkdf2-3.1.2.tgz", + "integrity": "sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==", "license": "MIT", "dependencies": { - "@babel/regjsgen": "^0.8.0", - "regenerate": "^1.4.2", - "regenerate-unicode-properties": "^10.1.0", - "regjsparser": "^0.9.1", - "unicode-match-property-ecmascript": "^2.0.0", - "unicode-match-property-value-ecmascript": "^2.1.0" + "create-hash": "^1.1.2", + "create-hmac": "^1.1.4", + "ripemd160": "^2.0.1", + "safe-buffer": "^5.0.1", + "sha.js": "^2.4.8" }, "engines": { - "node": ">=4" + "node": ">=0.12" } }, - "node_modules/regextras": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/regextras/-/regextras-0.8.0.tgz", - "integrity": "sha512-k519uI04Z3SaY0fLX843MRXnDeG2+vHOFsyhiPZvNLe7r8rD2YNRjq4BQLZZ0oAr2NrtvZlICsXysGNFPGa3CQ==", + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.1.14" + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/registry-auth-token": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", - "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "license": "MIT", "dependencies": { - "@pnpm/npm-conf": "^2.1.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=14" + "node": ">=8" } }, - "node_modules/registry-url": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", - "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "license": "MIT", "dependencies": { - "rc": "1.2.8" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/regjsparser": { - "version": "0.9.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.9.1.tgz", - "integrity": "sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==", - "license": "BSD-2-Clause", - "dependencies": { - "jsesc": "~0.5.0" - }, - "bin": { - "regjsparser": "bin/parser" - } - }, - "node_modules/regjsparser/node_modules/jsesc": { - "version": "0.5.0", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-0.5.0.tgz", - "integrity": "sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==", - "bin": { - "jsesc": "bin/jsesc" + "node": ">=8" } }, - "node_modules/relative-to-absolute-iri": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.7.tgz", - "integrity": "sha512-Xjyl4HmIzg2jzK/Un2gELqbcE8Fxy85A/aLSHE6PE/3+OGsFwmKVA1vRyGaz6vLWSqLDMHA+5rjD/xbibSQN1Q==", - "license": "MIT" - }, - "node_modules/release-it": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/release-it/-/release-it-17.6.0.tgz", - "integrity": "sha512-EE34dtRPL7BHpYQC7E+zAU8kjkyxFHxLk5Iqnmn/5nGcjgOQu34Au29M2V9YvxiP3tZbIlEn4gItEzu7vAPRbw==", + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/webpro" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/webpro" - } - ], "license": "MIT", - "dependencies": { - "@iarna/toml": "2.2.5", - "@octokit/rest": "20.1.1", - "async-retry": "1.3.3", - "chalk": "5.3.0", - "cosmiconfig": "9.0.0", - "execa": "8.0.1", - "git-url-parse": "14.0.0", - "globby": "14.0.2", - "got": "13.0.0", - "inquirer": "9.3.2", - "is-ci": "3.0.1", - "issue-parser": "7.0.1", - "lodash": "4.17.21", - "mime-types": "2.1.35", - "new-github-release-url": "2.0.0", - "node-fetch": "3.3.2", - "open": "10.1.0", - "ora": "8.0.1", - "os-name": "5.1.0", - "proxy-agent": "6.4.0", - "semver": "7.6.2", - "shelljs": "0.8.5", - "update-notifier": "7.1.0", - "url-join": "5.0.0", - "wildcard-match": "5.1.3", - "yargs-parser": "21.1.1" - }, - "bin": { - "release-it": "bin/release-it.js" + "dependencies": { + "p-locate": "^4.1.0" }, "engines": { - "node": "^18.18.0 || ^20.9.0 || ^22.0.0" + "node": ">=8" } }, - "node_modules/release-it/node_modules/@octokit/auth-token": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", - "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "license": "MIT", + "dependencies": { + "p-try": "^2.0.0" + }, "engines": { - "node": ">= 18" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/release-it/node_modules/@octokit/core": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", - "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/auth-token": "^4.0.0", - "@octokit/graphql": "^7.1.0", - "@octokit/request": "^8.3.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "p-limit": "^2.2.0" }, "engines": { - "node": ">= 18" + "node": ">=8" } }, - "node_modules/release-it/node_modules/@octokit/endpoint": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", - "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", - "dev": true, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", "license": "MIT", - "dependencies": { - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" - }, "engines": { - "node": ">= 18" + "node": ">= 0.4" } }, - "node_modules/release-it/node_modules/@octokit/graphql": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", - "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", - "dev": true, + "node_modules/prebuild-install": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/prebuild-install/-/prebuild-install-7.1.2.tgz", + "integrity": "sha512-UnNke3IQb6sgarcZIDU3gbMeTp/9SSU1DAIkil7PrqG1vZlBtY5msYccSKSHDqa3hNg436IXK+SNImReuA1wEQ==", "license": "MIT", "dependencies": { - "@octokit/request": "^8.3.0", - "@octokit/types": "^13.0.0", - "universal-user-agent": "^6.0.0" + "detect-libc": "^2.0.0", + "expand-template": "^2.0.3", + "github-from-package": "0.0.0", + "minimist": "^1.2.3", + "mkdirp-classic": "^0.5.3", + "napi-build-utils": "^1.0.1", + "node-abi": "^3.3.0", + "pump": "^3.0.0", + "rc": "^1.2.7", + "simple-get": "^4.0.0", + "tar-fs": "^2.0.0", + "tunnel-agent": "^0.6.0" + }, + "bin": { + "prebuild-install": "bin.js" }, "engines": { - "node": ">= 18" + "node": ">=10" } }, - "node_modules/release-it/node_modules/@octokit/openapi-types": { - "version": "22.2.0", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", - "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "node_modules/precond": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/precond/-/precond-0.2.3.tgz", + "integrity": "sha512-QCYG84SgGyGzqJ/vlMsxeXd/pgL/I94ixdNFyh1PusWmTCyVfPJjZ1K1jvHtsbfnXQs2TSkEP2fR7QiMZAnKFQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT" + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } }, - "node_modules/release-it/node_modules/@octokit/plugin-paginate-rest": { - "version": "11.3.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", - "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", + "node_modules/prettier": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz", + "integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==", "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^13.5.0" + "bin": { + "prettier": "bin/prettier.cjs" }, "engines": { - "node": ">= 18" + "node": ">=14" }, - "peerDependencies": { - "@octokit/core": "5" + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" } }, - "node_modules/release-it/node_modules/@octokit/plugin-request-log": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", - "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, "license": "MIT", - "engines": { - "node": ">= 18" + "dependencies": { + "fast-diff": "^1.1.2" }, - "peerDependencies": { - "@octokit/core": "5" + "engines": { + "node": ">=6.0.0" } }, - "node_modules/release-it/node_modules/@octokit/plugin-rest-endpoint-methods": { - "version": "13.2.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", - "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", - "dev": true, + "node_modules/pretty-ms": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-7.0.1.tgz", + "integrity": "sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q==", "license": "MIT", "dependencies": { - "@octokit/types": "^13.5.0" + "parse-ms": "^2.1.0" }, "engines": { - "node": ">= 18" + "node": ">=10" }, - "peerDependencies": { - "@octokit/core": "^5" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/release-it/node_modules/@octokit/request": { - "version": "8.4.0", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", - "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", - "dev": true, + "node_modules/private-ip": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/private-ip/-/private-ip-3.0.2.tgz", + "integrity": "sha512-2pkOVPGYD/4QyAg95c6E/4bLYXPthT5Xw4ocXYzIIsMBhskOMn6IwkWXmg6ZiA6K58+O6VD/n02r1hDhk7vDPw==", "license": "MIT", "dependencies": { - "@octokit/endpoint": "^9.0.1", - "@octokit/request-error": "^5.1.0", - "@octokit/types": "^13.1.0", - "universal-user-agent": "^6.0.0" + "@chainsafe/is-ip": "^2.0.1", + "ip-regex": "^5.0.0", + "ipaddr.js": "^2.1.0", + "netmask": "^2.0.2" }, "engines": { - "node": ">= 18" + "node": ">=14.16" } }, - "node_modules/release-it/node_modules/@octokit/request-error": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", - "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "node_modules/process": { + "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", + "license": "MIT", + "engines": { + "node": ">= 0.6.0" + } + }, + "node_modules/process-on-spawn": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/process-on-spawn/-/process-on-spawn-1.0.0.tgz", + "integrity": "sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==", "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^13.1.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" + "fromentries": "^1.2.0" }, "engines": { - "node": ">= 18" + "node": ">=8" } }, - "node_modules/release-it/node_modules/@octokit/rest": { - "version": "20.1.1", - "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", - "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", - "dev": true, + "node_modules/progress-events": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/progress-events/-/progress-events-1.0.1.tgz", + "integrity": "sha512-MOzLIwhpt64KIVN64h1MwdKWiyKFNc/S6BoYKPIVUHFg0/eIEyBulhWCgn678v/4c0ri3FdGuzXymNCv02MUIw==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "license": "ISC", + "optional": true + }, + "node_modules/promise-retry": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "license": "MIT", + "optional": true, "dependencies": { - "@octokit/core": "^5.0.2", - "@octokit/plugin-paginate-rest": "11.3.1", - "@octokit/plugin-request-log": "^4.0.0", - "@octokit/plugin-rest-endpoint-methods": "13.2.2" + "err-code": "^2.0.2", + "retry": "^0.12.0" }, "engines": { - "node": ">= 18" + "node": ">=10" } }, - "node_modules/release-it/node_modules/@octokit/types": { - "version": "13.5.0", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", - "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", - "dev": true, + "node_modules/promise-retry/node_modules/err-code": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^22.2.0" + "optional": true + }, + "node_modules/promise-retry/node_modules/retry": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", + "license": "MIT", + "optional": true, + "engines": { + "node": ">= 4" } }, - "node_modules/release-it/node_modules/@sindresorhus/is": { - "version": "5.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", - "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", - "dev": true, + "node_modules/promise.any": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/promise.any/-/promise.any-2.0.6.tgz", + "integrity": "sha512-Ew/MrPtTjiHnnki0AA2hS2o65JaZ5n+5pp08JSyWWUdeOGF4F41P+Dn+rdqnaOV/FTxhR6eBDX412luwn3th9g==", "license": "MIT", + "dependencies": { + "array.prototype.map": "^1.0.5", + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-aggregate-error": "^1.0.10", + "get-intrinsic": "^1.2.1", + "iterate-value": "^1.0.2" + }, "engines": { - "node": ">=14.16" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/release-it/node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", - "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dev": true, "license": "MIT", "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" } }, - "node_modules/release-it/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" + "license": "ISC" + }, + "node_modules/protobufjs": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/protobufjs/-/protobufjs-7.5.3.tgz", + "integrity": "sha512-sildjKwVqOI2kmFDiXQ6aEB0fjYTafpEvIBs8tOR8qI4spuL9OPROLVu2qZqi/xgCfsHIwVqlaF8JBjWFHnKbw==", + "hasInstallScript": true, + "dependencies": { + "@protobufjs/aspromise": "^1.1.2", + "@protobufjs/base64": "^1.1.2", + "@protobufjs/codegen": "^2.0.4", + "@protobufjs/eventemitter": "^1.1.0", + "@protobufjs/fetch": "^1.1.0", + "@protobufjs/float": "^1.0.2", + "@protobufjs/inquire": "^1.1.0", + "@protobufjs/path": "^1.1.2", + "@protobufjs/pool": "^1.1.0", + "@protobufjs/utf8": "^1.1.0", + "@types/node": ">=13.7.0", + "long": "^5.0.0" }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "engines": { + "node": ">=12.0.0" } }, - "node_modules/release-it/node_modules/cacheable-lookup": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", - "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.16" + "license": "MIT" + }, + "node_modules/protons-runtime": { + "version": "5.4.0", + "resolved": "https://registry.npmjs.org/protons-runtime/-/protons-runtime-5.4.0.tgz", + "integrity": "sha512-XfA++W/WlQOSyjUyuF5lgYBfXZUEMP01Oh1C2dSwZAlF2e/ZrMRPfWonXj6BGM+o8Xciv7w0tsRMKYwYEuQvaw==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "uint8-varint": "^2.0.2", + "uint8arraylist": "^2.4.3", + "uint8arrays": "^5.0.1" } }, - "node_modules/release-it/node_modules/cacheable-request": { - "version": "10.2.14", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", - "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", - "dev": true, + "node_modules/protons-runtime/node_modules/uint8arrays": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/uint8arrays/-/uint8arrays-5.1.0.tgz", + "integrity": "sha512-vA6nFepEmlSKkMBnLBaUMVvAC4G3CTmO58C12y4sq6WPDOR7mOFYOi7GlrQ4djeSbP6JG9Pv9tJDM97PedRSww==", + "license": "Apache-2.0 OR MIT", + "dependencies": { + "multiformats": "^13.0.0" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "license": "MIT", "dependencies": { - "@types/http-cache-semantics": "^4.0.2", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.1", - "keyv": "^4.5.3", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" }, "engines": { - "node": ">=14.16" + "node": ">= 0.10" } }, - "node_modules/release-it/node_modules/cacheable-request/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, + "node_modules/proxy-addr/node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/release-it/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", "dev": true, "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "engines": { + "node": ">= 14" } }, - "node_modules/release-it/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "node_modules/proxy-agent/node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], "license": "MIT", + "dependencies": { + "debug": "^4.3.4" + }, "engines": { - "node": ">=8" + "node": ">= 14" } }, - "node_modules/release-it/node_modules/cli-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", - "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "node_modules/proxy-agent/node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", "dev": true, "license": "MIT", "dependencies": { - "restore-cursor": "^4.0.0" + "agent-base": "^7.1.0", + "debug": "^4.3.4" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 14" } }, - "node_modules/release-it/node_modules/cosmiconfig": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", - "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "node_modules/proxy-agent/node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", "dev": true, "license": "MIT", "dependencies": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" + "agent-base": "^7.0.2", + "debug": "4" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" - }, - "peerDependencies": { - "typescript": ">=4.9.5" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "node": ">= 14" } }, - "node_modules/release-it/node_modules/data-uri-to-buffer": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", - "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "MIT", + "license": "ISC", "engines": { - "node": ">= 12" + "node": ">=12" } }, - "node_modules/release-it/node_modules/emoji-regex": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", - "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", - "dev": true, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", "license": "MIT" }, - "node_modules/release-it/node_modules/env-paths": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", - "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "license": "ISC" }, - "node_modules/release-it/node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" - }, - "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "license": "MIT", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/release-it/node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "dev": true, "license": "MIT", "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=6" } }, - "node_modules/release-it/node_modules/globby": { - "version": "14.0.2", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", - "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", "dev": true, "license": "MIT", "dependencies": { - "@sindresorhus/merge-streams": "^2.1.0", - "fast-glob": "^3.3.2", - "ignore": "^5.2.4", - "path-type": "^5.0.0", - "slash": "^5.1.0", - "unicorn-magic": "^0.1.0" + "escape-goat": "^4.0.0" }, "engines": { - "node": ">=18" + "node": ">=12.20" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/release-it/node_modules/got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", - "dev": true, + "node_modules/pvtsutils": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/pvtsutils/-/pvtsutils-1.3.5.tgz", + "integrity": "sha512-ARvb14YB9Nm2Xi6nBq1ZX6dAM0FsJnuk+31aUp4TrcZEdKUlSqOqsxJHUPJDNE3qiIp+iUPEIeR6Je/tgV7zsA==", "license": "MIT", "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.8", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" + "tslib": "^2.6.1" + } + }, + "node_modules/pvutils": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pvutils/-/pvutils-1.1.3.tgz", + "integrity": "sha512-pMpnA0qRdFp32b1sJl1wOJNxZLQ2cbQx+k6tjNtZ8CpvVhNqEPRgivZ2WOUev2YMajecdH7ctUPDvEe87nariQ==", + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.0.6" }, "engines": { - "node": ">=16" + "node": ">=0.6" }, "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/release-it/node_modules/got/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/querystring": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/querystring/-/querystring-0.2.0.tgz", + "integrity": "sha512-X/xY82scca2tau62i9mDyU9K+I+djTMUsvwf7xnUX5GLvVzgJybOJf4Y6o9Zx3oJK/LSXg5tTZBjwzqVPaPO2g==", + "deprecated": "The querystring API is considered Legacy. new code should use the URLSearchParams API instead.", + "engines": { + "node": ">=0.4.x" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "license": "MIT", "engines": { @@ -30236,1880 +17960,1865 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/release-it/node_modules/http2-wrapper": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", - "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", - "dev": true, + "node_modules/race-event": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/race-event/-/race-event-1.3.0.tgz", + "integrity": "sha512-kaLm7axfOnahIqD3jQ4l1e471FIFcEGebXEnhxyLscuUzV8C94xVHtWEqDDXxll7+yu/6lW0w1Ff4HbtvHvOHg==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/race-signal": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/race-signal/-/race-signal-1.1.0.tgz", + "integrity": "sha512-VqsW1uzCXfKBd2DhA3K3NhQlqQr04+5WQ7+kHpf1HzT01Q+ePSFWZdQHXKZPuLmm2eXTZM1XLO76cq15ZRAaEA==", + "license": "Apache-2.0 OR MIT" + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "license": "MIT", "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" + "safe-buffer": "^5.1.0" } }, - "node_modules/release-it/node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "dev": true, - "license": "Apache-2.0", + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", "engines": { - "node": ">=16.17.0" + "node": ">= 0.6" } }, - "node_modules/release-it/node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "dev": true, + "node_modules/raw-body": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.2.tgz", + "integrity": "sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==", "license": "MIT", "dependencies": { - "ci-info": "^3.2.0" + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.4.24", + "unpipe": "1.0.0" }, - "bin": { - "is-ci": "bin.js" + "engines": { + "node": ">= 0.8" } }, - "node_modules/release-it/node_modules/is-installed-globally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", - "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", - "dev": true, - "license": "MIT", + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", "dependencies": { - "global-directory": "^4.0.1", - "is-path-inside": "^4.0.0" - }, - "engines": { - "node": ">=18" + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "bin": { + "rc": "cli.js" } }, - "node_modules/release-it/node_modules/is-path-inside": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", - "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", - "dev": true, + "node_modules/rc/node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/release-it/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node_modules/rdf-canonize": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/rdf-canonize/-/rdf-canonize-3.4.0.tgz", + "integrity": "sha512-fUeWjrkOO0t1rg7B2fdyDTvngj+9RlUyL92vOdiB7c0FPguWVsniIMjEtHH+meLBO9rzkUlUzBVXgWrjI8P9LA==", + "license": "BSD-3-Clause", + "dependencies": { + "setimmediate": "^1.0.5" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=12" } }, - "node_modules/release-it/node_modules/is-unicode-supported": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", - "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", - "dev": true, + "node_modules/rdf-data-factory": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-1.1.2.tgz", + "integrity": "sha512-TfQD63Lokabd09ES1jAtKK8AA6rkr9rwyUBGo6olOt1CE0Um36CUQIqytyf0am2ouBPR0l7SaHxCiMcPGHkt1A==", "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@rdfjs/types": "*" } }, - "node_modules/release-it/node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dev": true, + "node_modules/rdf-dataset-ext": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/rdf-dataset-ext/-/rdf-dataset-ext-1.1.0.tgz", + "integrity": "sha512-CH85RfRKN9aSlbju8T7aM8hgCSWMBsh2eh/tGxUUtWMN+waxi6iFDt8/r4PAEmKaEA82guimZJ4ISbmJ2rvWQg==", + "deprecated": "rdf-dataset-ext is deprecated. Switching to rdf-ext is recommended.", "license": "MIT", "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "rdf-canonize": "^3.0.0", + "readable-stream": "3 - 4" } }, - "node_modules/release-it/node_modules/issue-parser": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", - "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", - "dev": true, + "node_modules/rdf-literal": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-2.0.0.tgz", + "integrity": "sha512-jlQ+h7EvnXmncmk8OzOYR8T3gNfd4g0LQXbflHkEkancic8dh0Tdt5RiRq8vUFndjIeNHt1RWeA5TAj6rgrtng==", "license": "MIT", "dependencies": { - "lodash.capitalize": "^4.2.1", - "lodash.escaperegexp": "^4.1.2", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.uniqby": "^4.7.0" + "rdf-data-factory": "^2.0.0" }, - "engines": { - "node": "^18.17 || >=20.6.1" + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, - "node_modules/release-it/node_modules/ky": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/ky/-/ky-1.6.0.tgz", - "integrity": "sha512-MG7hlH26oShC4Lysk5TYzXshHLfEY52IJ0ofOeCsifquqTymbXCSTx+g4rXO30XYxoM6Y1ed5pNnpULe9Rx19A==", - "dev": true, + "node_modules/rdf-literal/node_modules/rdf-data-factory": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rdf-data-factory/-/rdf-data-factory-2.0.2.tgz", + "integrity": "sha512-WzPoYHwQYWvIP9k+7IBLY1b4nIDitzAK4mA37WumAF/Cjvu/KOtYJH9IPZnUTWNSd5K2+pq4vrcE9WZC4sRHhg==", "license": "MIT", - "engines": { - "node": ">=18" + "dependencies": { + "@rdfjs/types": "^2.0.0" }, "funding": { - "url": "https://github.com/sindresorhus/ky?sponsor=1" + "type": "individual", + "url": "https://github.com/sponsors/rubensworks/" } }, - "node_modules/release-it/node_modules/latest-version": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz", - "integrity": "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==", - "dev": true, + "node_modules/rdf-validate-datatype": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/rdf-validate-datatype/-/rdf-validate-datatype-0.2.2.tgz", + "integrity": "sha512-mH9qL8i0WBbZ6HJCA26BB6V+WV2MraKvitez3SV0QegBWVQ4wYO49CgfFBzoAYg6tlnhFXl9MkrOAQ07X2N1FA==", "license": "MIT", "dependencies": { - "package-json": "^10.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@rdfjs/term-map": "^2.0.0", + "@tpluscode/rdf-ns-builders": "3 - 5" } }, - "node_modules/release-it/node_modules/log-symbols": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", - "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", - "dev": true, + "node_modules/rdf-validate-shacl": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/rdf-validate-shacl/-/rdf-validate-shacl-0.5.10.tgz", + "integrity": "sha512-I+TRVGeKn5eG/kTzVGRGGNThCSkgX/v7EUSOUEsIcHubyyShQYzRbQqyU45zKzNjLWdqp9abFHw1ULUPzWyo1A==", "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "is-unicode-supported": "^1.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "@rdfjs/data-model": "^2", + "@rdfjs/dataset": "^2", + "@rdfjs/environment": "^1", + "@rdfjs/namespace": "^2.0.0", + "@rdfjs/term-set": "^2.0.1", + "@rdfjs/types": "^1.1.0", + "@vocabulary/sh": "^1.1.5", + "clownface": "^2.0.0", + "debug": "^4.3.2", + "rdf-literal": "^1.3.2", + "rdf-validate-datatype": "^0.2.0" } }, - "node_modules/release-it/node_modules/log-symbols/node_modules/is-unicode-supported": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", - "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", - "dev": true, + "node_modules/rdf-validate-shacl/node_modules/@rdfjs/types": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@rdfjs/types/-/types-1.1.2.tgz", + "integrity": "sha512-wqpOJK1QCbmsGNtyzYnojPU8gRDPid2JO0Q0kMtb4j65xhCK880cnKAfEOwC+dX85VJcCByQx5zOwyyfCjDJsg==", "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*" } }, - "node_modules/release-it/node_modules/lowercase-keys": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", - "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", - "dev": true, + "node_modules/rdf-validate-shacl/node_modules/rdf-literal": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/rdf-literal/-/rdf-literal-1.3.2.tgz", + "integrity": "sha512-79Stlu3sXy0kq9/decHFLf3xNPuY6sfhFPhd/diWErgaFr0Ekyg38Vh9bnVcqDYu48CFRi0t+hrFii49n92Hbw==", "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@rdfjs/types": "*", + "rdf-data-factory": "^1.1.0" } }, - "node_modules/release-it/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true, + "node_modules/rdfxml-streaming-parser": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/rdfxml-streaming-parser/-/rdfxml-streaming-parser-2.4.0.tgz", + "integrity": "sha512-f+tdI1wxOiPzMbFWRtOwinwPsqac0WIN80668yFKcVdFCSTGOWTM70ucQGUSdDZZo7pce/UvZgV0C3LDj0P7tg==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "@rdfjs/types": "*", + "@rubensworks/saxes": "^6.0.1", + "@types/readable-stream": "^2.3.13", + "buffer": "^6.0.3", + "rdf-data-factory": "^1.1.0", + "readable-stream": "^4.4.2", + "relative-to-absolute-iri": "^1.0.0", + "validate-iri": "^1.0.0" } }, - "node_modules/release-it/node_modules/mimic-response": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", - "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", - "dev": true, + "node_modules/rdfxml-streaming-parser/node_modules/@types/readable-stream": { + "version": "2.3.15", + "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-2.3.15.tgz", + "integrity": "sha512-oM5JSKQCcICF1wvGgmecmHldZ48OZamtMxcGGVICOJA8o8cahXC1zEVAif8iwoc5j8etxFaRFnf095+CDsuoFQ==", "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "@types/node": "*", + "safe-buffer": "~5.1.1" } }, - "node_modules/release-it/node_modules/node-fetch": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", - "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "dev": true, + "license": "MIT" + }, + "node_modules/readable-stream": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", + "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", "license": "MIT", "dependencies": { - "data-uri-to-buffer": "^4.0.0", - "fetch-blob": "^3.1.4", - "formdata-polyfill": "^4.0.10" + "abort-controller": "^3.0.0", + "buffer": "^6.0.3", + "events": "^3.3.0", + "process": "^0.11.10", + "string_decoder": "^1.3.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/node-fetch" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/release-it/node_modules/normalize-url": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", - "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", - "dev": true, + "node_modules/readable-stream/node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "license": "MIT", "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.x" } }, - "node_modules/release-it/node_modules/open": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", - "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", - "dev": true, + "node_modules/receptacle": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/receptacle/-/receptacle-1.3.2.tgz", + "integrity": "sha512-HrsFvqZZheusncQRiEE7GatOAETrARKV/lnfYicIm8lbvp/JQOdADOfhjBd2DajvoszEyxSM6RlAAIZgEoeu/A==", "license": "MIT", "dependencies": { - "default-browser": "^5.2.1", - "define-lazy-prop": "^3.0.0", - "is-inside-container": "^1.0.0", - "is-wsl": "^3.1.0" + "ms": "^2.1.1" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.10" } }, - "node_modules/release-it/node_modules/ora": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", - "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "node_modules/reflect-metadata": { + "version": "0.1.14", + "resolved": "https://registry.npmjs.org/reflect-metadata/-/reflect-metadata-0.1.14.tgz", + "integrity": "sha512-ZhYeb6nRaXCfhnndflDK8qI6ZQ/YcWZCISRAWICW9XYqMUwjZM9Z0DveWX/ABN01oxSHwVxKQmxeYZSsm0jh5A==", + "license": "Apache-2.0" + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", "dev": true, "license": "MIT", "dependencies": { - "chalk": "^5.3.0", - "cli-cursor": "^4.0.0", - "cli-spinners": "^2.9.2", - "is-interactive": "^2.0.0", - "is-unicode-supported": "^2.0.0", - "log-symbols": "^6.0.0", - "stdin-discarder": "^0.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/release-it/node_modules/p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "dev": true, + "license": "MIT" + }, + "node_modules/regexp-tree": { + "version": "0.1.27", + "resolved": "https://registry.npmjs.org/regexp-tree/-/regexp-tree-0.1.27.tgz", + "integrity": "sha512-iETxpjK6YoRWJG5o6hXLwvjYAoW+FEZn9os0PD/b6AP6xQwsa/Y7lCVgIixBbUPMfhu+i2LtdeAqVTgGlQarfA==", "dev": true, "license": "MIT", - "engines": { - "node": ">=12.20" + "bin": { + "regexp-tree": "bin/regexp-tree" } }, - "node_modules/release-it/node_modules/package-json": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz", - "integrity": "sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==", - "dev": true, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", "license": "MIT", "dependencies": { - "ky": "^1.2.0", - "registry-auth-token": "^5.0.2", - "registry-url": "^6.0.1", - "semver": "^7.6.0" + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/release-it/node_modules/path-type": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", - "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/mysticatea" } }, - "node_modules/release-it/node_modules/responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", "dev": true, "license": "MIT", "dependencies": { - "lowercase-keys": "^3.0.0" + "@pnpm/npm-conf": "^2.1.0" }, "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=14" } }, - "node_modules/release-it/node_modules/restore-cursor": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", - "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", "dev": true, "license": "MIT", "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" + "rc": "1.2.8" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/release-it/node_modules/restore-cursor/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/relative-to-absolute-iri": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/relative-to-absolute-iri/-/relative-to-absolute-iri-1.0.7.tgz", + "integrity": "sha512-Xjyl4HmIzg2jzK/Un2gELqbcE8Fxy85A/aLSHE6PE/3+OGsFwmKVA1vRyGaz6vLWSqLDMHA+5rjD/xbibSQN1Q==", + "license": "MIT" + }, + "node_modules/release-it": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/release-it/-/release-it-17.6.0.tgz", + "integrity": "sha512-EE34dtRPL7BHpYQC7E+zAU8kjkyxFHxLk5Iqnmn/5nGcjgOQu34Au29M2V9YvxiP3tZbIlEn4gItEzu7vAPRbw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/webpro" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/webpro" + } + ], "license": "MIT", "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" + "@iarna/toml": "2.2.5", + "@octokit/rest": "20.1.1", + "async-retry": "1.3.3", + "chalk": "5.3.0", + "cosmiconfig": "9.0.0", + "execa": "8.0.1", + "git-url-parse": "14.0.0", + "globby": "14.0.2", + "got": "13.0.0", + "inquirer": "9.3.2", + "is-ci": "3.0.1", + "issue-parser": "7.0.1", + "lodash": "4.17.21", + "mime-types": "2.1.35", + "new-github-release-url": "2.0.0", + "node-fetch": "3.3.2", + "open": "10.1.0", + "ora": "8.0.1", + "os-name": "5.1.0", + "proxy-agent": "6.4.0", + "semver": "7.6.2", + "shelljs": "0.8.5", + "update-notifier": "7.1.0", + "url-join": "5.0.0", + "wildcard-match": "5.1.3", + "yargs-parser": "21.1.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/release-it/node_modules/restore-cursor/node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true, - "license": "ISC" - }, - "node_modules/release-it/node_modules/semver": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", - "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", - "dev": true, - "license": "ISC", "bin": { - "semver": "bin/semver.js" + "release-it": "bin/release-it.js" }, "engines": { - "node": ">=10" + "node": "^18.18.0 || ^20.9.0 || ^22.0.0" } }, - "node_modules/release-it/node_modules/semver-diff": { + "node_modules/release-it/node_modules/@octokit/auth-token": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", "dev": true, "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/release-it/node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true, - "license": "ISC", "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">= 18" } }, - "node_modules/release-it/node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "node_modules/release-it/node_modules/@octokit/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", "dev": true, "license": "MIT", - "engines": { - "node": ">=14.16" + "dependencies": { + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/release-it/node_modules/stdin-discarder": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", - "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", - "dev": true, - "license": "MIT", "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 18" } }, - "node_modules/release-it/node_modules/string-width": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", - "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "node_modules/release-it/node_modules/@octokit/endpoint": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", "dev": true, "license": "MIT", "dependencies": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 18" } }, - "node_modules/release-it/node_modules/strip-ansi": { + "node_modules/release-it/node_modules/@octokit/graphql": { "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, "license": "MIT", "dependencies": { - "ansi-regex": "^6.0.1" + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 18" } }, - "node_modules/release-it/node_modules/update-notifier": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.1.0.tgz", - "integrity": "sha512-8SV3rIqVY6EFC1WxH6L0j55s0MO79MFBS1pivmInRJg3pCEDgWHBj1Q6XByTtCLOZIFA0f6zoG9ZWf2Ks9lvTA==", + "node_modules/release-it/node_modules/@octokit/openapi-types": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "boxen": "^7.1.1", - "chalk": "^5.3.0", - "configstore": "^6.0.0", - "import-lazy": "^4.0.0", - "is-in-ci": "^0.1.0", - "is-installed-globally": "^1.0.0", - "is-npm": "^6.0.0", - "latest-version": "^9.0.0", - "pupa": "^3.1.0", - "semver": "^7.6.2", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" + "license": "MIT" + }, + "node_modules/release-it/node_modules/@octokit/plugin-paginate-rest": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", + "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@octokit/types": "^13.5.0" }, "engines": { - "node": ">=18" + "node": ">= 18" }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" + "peerDependencies": { + "@octokit/core": "5" } }, - "node_modules/release-it/node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "node_modules/release-it/node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", "dev": true, "license": "MIT", "engines": { - "node": ">=12" + "node": ">= 18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@octokit/core": "5" } }, - "node_modules/release-zalgo": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", - "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", - "license": "ISC", + "node_modules/release-it/node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", + "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", + "dev": true, + "license": "MIT", "dependencies": { - "es6-error": "^4.0.1" + "@octokit/types": "^13.5.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "^5" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/release-it/node_modules/@octokit/request": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "dev": true, "license": "MIT", + "dependencies": { + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">= 18" } }, - "node_modules/require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "license": "ISC" - }, - "node_modules/requireindex": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/requireindex/-/requireindex-1.2.0.tgz", - "integrity": "sha512-L9jEkOi3ASd9PYit2cwRfyppc9NoABujTP8/5gFcbERmo5jUoAKovIC3fsF17pkTnGsrByysqX+Kxd2OTNI1ww==", + "node_modules/release-it/node_modules/@octokit/request-error": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", + "dev": true, "license": "MIT", + "dependencies": { + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, "engines": { - "node": ">=0.10.5" + "node": ">= 18" } }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "node_modules/release-it/node_modules/@octokit/rest": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", + "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", + "dev": true, "license": "MIT", "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "@octokit/core": "^5.0.2", + "@octokit/plugin-paginate-rest": "11.3.1", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "13.2.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "license": "MIT" - }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "license": "MIT", "engines": { - "node": ">=4" + "node": ">= 18" } }, - "node_modules/resolve-pkg-maps": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", - "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "node_modules/release-it/node_modules/@octokit/types": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", "dev": true, "license": "MIT", - "funding": { - "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + "dependencies": { + "@octokit/openapi-types": "^22.2.0" } }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", + "node_modules/release-it/node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" + "engines": { + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/restore-cursor": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", - "integrity": "sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==", + "node_modules/release-it/node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, "license": "MIT", "dependencies": { - "onetime": "^2.0.0", - "signal-exit": "^3.0.2" + "defer-to-connect": "^2.0.1" }, "engines": { - "node": ">=4" + "node": ">=14.16" } }, - "node_modules/restore-cursor/node_modules/mimic-fn": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", - "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "node_modules/release-it/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/restore-cursor/node_modules/onetime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", - "integrity": "sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==", + "node_modules/release-it/node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, "license": "MIT", - "dependencies": { - "mimic-fn": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": ">=14.16" } }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "node_modules/release-it/node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, "license": "MIT", + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, "engines": { - "node": ">= 4" + "node": ">=14.16" } }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/release-it/node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", "engines": { - "iojs": ">=1.0.0", - "node": ">=0.10.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/revalidator": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/revalidator/-/revalidator-0.1.8.tgz", - "integrity": "sha512-xcBILK2pA9oh4SiinPEZfhP8HfrB/ha+a2fTMyl7Om2WjlDVrOQy99N2MXXlUHqGJz4qEu2duXxHJjDWuK/0xg==", - "license": "Apache 2.0", + "node_modules/release-it/node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "license": "MIT", "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/rimraf/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node_modules/release-it/node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "license": "MIT", + "engines": { + "node": ">=8" } }, - "node_modules/rimraf/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", + "node_modules/release-it/node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "license": "MIT", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": "*" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rimraf/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", + "node_modules/release-it/node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "license": "MIT", "dependencies": { - "brace-expansion": "^1.1.7" + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" }, "engines": { - "node": "*" + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } } }, - "node_modules/ripemd160": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", - "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", + "node_modules/release-it/node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "node_modules/rlp": { - "version": "2.2.7", - "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", - "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", - "license": "MPL-2.0", - "dependencies": { - "bn.js": "^5.2.0" - }, - "bin": { - "rlp": "bin/rlp" + "engines": { + "node": ">= 12" } }, - "node_modules/rlp/node_modules/bn.js": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", - "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "node_modules/release-it/node_modules/emoji-regex": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", + "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==", + "dev": true, "license": "MIT" }, - "node_modules/roarr": { - "version": "2.15.4", - "resolved": "https://registry.npmjs.org/roarr/-/roarr-2.15.4.tgz", - "integrity": "sha512-CHhPh+UNHD2GTXNYhPWLnU8ONHdI+5DI+4EYIAOaiD63rHeYlZvyh8P+in5999TTSFgUYuKUAjzRI4mdh/p+2A==", - "license": "BSD-3-Clause", - "optional": true, - "dependencies": { - "boolean": "^3.0.1", - "detect-node": "^2.0.4", - "globalthis": "^1.0.1", - "json-stringify-safe": "^5.0.1", - "semver-compare": "^1.0.0", - "sprintf-js": "^1.1.2" - }, + "node_modules/release-it/node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=8.0" + "node": ">=6" } }, - "node_modules/run-applescript": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", - "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "node_modules/release-it/node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", "dev": true, "license": "MIT", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, "engines": { - "node": ">=18" + "node": ">=16.17" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/run-async": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", - "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "node_modules/release-it/node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", "dev": true, "license": "MIT", "engines": { - "node": ">=0.12.0" + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], + "node_modules/release-it/node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, "license": "MIT", "dependencies": { - "queue-microtask": "^1.2.2" + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/rxjs": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", - "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "node_modules/release-it/node_modules/got": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", "dev": true, - "license": "Apache-2.0", + "license": "MIT", "dependencies": { - "tslib": "^2.1.0" + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "node_modules/release-it/node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "license": "MIT", - "dependencies": { - "mri": "^1.1.0" - }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safe-array-concat": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", - "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "node_modules/release-it/node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.7", - "get-intrinsic": "^1.2.4", - "has-symbols": "^1.0.3", - "isarray": "^2.0.5" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" }, "engines": { - "node": ">=0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=10.19.0" } }, - "node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" + "node_modules/release-it/node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=16.17.0" + } }, - "node_modules/safe-regex": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", - "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "node_modules/release-it/node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", "dev": true, "license": "MIT", "dependencies": { - "regexp-tree": "~0.1.1" + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" } }, - "node_modules/safe-regex-test": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", - "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "node_modules/release-it/node_modules/is-installed-globally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", + "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.6", - "es-errors": "^1.3.0", - "is-regex": "^1.1.4" + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=18" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safe-stable-stringify": { - "version": "2.4.3", - "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", - "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", + "node_modules/release-it/node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "license": "MIT" - }, - "node_modules/sax": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", - "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", - "license": "ISC" - }, - "node_modules/scrypt-js": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", - "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", - "license": "MIT" - }, - "node_modules/secp256k1": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", - "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", - "hasInstallScript": true, + "node_modules/release-it/node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, "license": "MIT", - "dependencies": { - "elliptic": "^6.5.4", - "node-addon-api": "^5.0.0", - "node-gyp-build": "^4.2.0" - }, "engines": { - "node": ">=14.0.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/secp256k1/node_modules/node-addon-api": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", - "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", - "license": "MIT" - }, - "node_modules/secure-json-parse": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", - "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", - "license": "BSD-3-Clause" - }, - "node_modules/semantic-release": { - "version": "19.0.5", - "resolved": "https://registry.npmjs.org/semantic-release/-/semantic-release-19.0.5.tgz", - "integrity": "sha512-NMPKdfpXTnPn49FDogMBi36SiBfXkSOJqCkk0E4iWOY1tusvvgBwqUmxTX1kmlT6kIYed9YwNKD1sfPpqa5yaA==", - "license": "MIT", - "dependencies": { - "@semantic-release/commit-analyzer": "^9.0.2", - "@semantic-release/error": "^3.0.0", - "@semantic-release/github": "^8.0.0", - "@semantic-release/npm": "^9.0.0", - "@semantic-release/release-notes-generator": "^10.0.0", - "aggregate-error": "^3.0.0", - "cosmiconfig": "^7.0.0", - "debug": "^4.0.0", - "env-ci": "^5.0.0", - "execa": "^5.0.0", - "figures": "^3.0.0", - "find-versions": "^4.0.0", - "get-stream": "^6.0.0", - "git-log-parser": "^1.2.0", - "hook-std": "^2.0.0", - "hosted-git-info": "^4.0.0", - "lodash": "^4.17.21", - "marked": "^4.0.10", - "marked-terminal": "^5.0.0", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "p-reduce": "^2.0.0", - "read-pkg-up": "^7.0.0", - "resolve-from": "^5.0.0", - "semver": "^7.3.2", - "semver-diff": "^3.1.1", - "signale": "^1.2.1", - "yargs": "^16.2.0" - }, - "bin": { - "semantic-release": "bin/semantic-release.js" - }, + "node_modules/release-it/node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=16 || ^14.17" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo": { - "version": "7.0.8", - "resolved": "https://registry.npmjs.org/semantic-release-monorepo/-/semantic-release-monorepo-7.0.8.tgz", - "integrity": "sha512-L2n7FZEYvjxXop6C7svk8xZH1/2N58CV1dN+veeAGZ8363FG+AKNKLN1r4wAL86e5xIu1HiOOASm10X+rN6XWg==", + "node_modules/release-it/node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, "license": "MIT", "dependencies": { - "debug": "^3.1.0", - "execa": "^0.8.0", - "file-url": "^3.0.0", - "fs-extra": "^10.0.1", - "get-stream": "^6.0.1", - "git-log-parser": "^1.2.0", - "p-each-series": "^2.1.0", - "p-limit": "^1.2.0", - "pkg-up": "^2.0.0", - "ramda": "^0.25.0", - "read-pkg": "^5.0.0", - "semantic-release-plugin-decorators": "^3.0.0", - "tempy": "1.0.1" + "is-inside-container": "^1.0.0" }, - "peerDependencies": { - "semantic-release": ">=15.11.x < 20" + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "node_modules/release-it/node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", + "dev": true, "license": "MIT", "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" } }, - "node_modules/semantic-release-monorepo/node_modules/crypto-random-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-2.0.0.tgz", - "integrity": "sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==", + "node_modules/release-it/node_modules/ky": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.6.0.tgz", + "integrity": "sha512-MG7hlH26oShC4Lysk5TYzXshHLfEY52IJ0ofOeCsifquqTymbXCSTx+g4rXO30XYxoM6Y1ed5pNnpULe9Rx19A==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" } }, - "node_modules/semantic-release-monorepo/node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/release-it/node_modules/latest-version": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz", + "integrity": "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==", + "dev": true, "license": "MIT", "dependencies": { - "ms": "^2.1.1" + "package-json": "^10.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/execa": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.8.0.tgz", - "integrity": "sha512-zDWS+Rb1E8BlqqhALSt9kUhss8Qq4nN3iof3gsOdyINksElaPyNBtKUMTR62qhvgVWR0CqCX7sdnKe4MnUbFEA==", + "node_modules/release-it/node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, "license": "MIT", "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it/node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/execa/node_modules/get-stream": { + "node_modules/release-it/node_modules/lowercase-keys": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/find-up": { + "node_modules/release-it/node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", - "integrity": "sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "license": "MIT", - "dependencies": { - "locate-path": "^2.0.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/semantic-release-monorepo/node_modules/fs-extra": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-10.1.0.tgz", - "integrity": "sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==", + "node_modules/release-it/node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, "engines": { - "node": ">=12" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/release-it/node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, "license": "MIT", + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" } }, - "node_modules/semantic-release-monorepo/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/release-it/node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "dev": true, "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/locate-path": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", - "integrity": "sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==", + "node_modules/release-it/node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, "license": "MIT", "dependencies": { - "p-locate": "^2.0.0", - "path-exists": "^3.0.0" + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/semantic-release-monorepo/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/release-it/node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "dev": true, "license": "MIT", "dependencies": { - "path-key": "^2.0.0" + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/p-limit": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", - "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "node_modules/release-it/node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^1.0.0" - }, "engines": { - "node": ">=4" + "node": ">=12.20" } }, - "node_modules/semantic-release-monorepo/node_modules/p-locate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", - "integrity": "sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==", + "node_modules/release-it/node_modules/package-json": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz", + "integrity": "sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==", + "dev": true, "license": "MIT", "dependencies": { - "p-limit": "^1.1.0" + "ky": "^1.2.0", + "registry-auth-token": "^5.0.2", + "registry-url": "^6.0.1", + "semver": "^7.6.0" }, "engines": { - "node": ">=4" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/p-try": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", - "integrity": "sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==", + "node_modules/release-it/node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/path-exists": { + "node_modules/release-it/node_modules/responselike": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/semantic-release-monorepo/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, "license": "MIT", + "dependencies": { + "lowercase-keys": "^3.0.0" + }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/pkg-up": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pkg-up/-/pkg-up-2.0.0.tgz", - "integrity": "sha512-fjAPuiws93rm7mPUu21RdBnkeZNrbfCFCwfAhPWY+rR3zG0ubpe5cEReHOw5fIbfmsxEV/g2kSxGTATY3Bpnwg==", + "node_modules/release-it/node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, "license": "MIT", "dependencies": { - "find-up": "^2.1.0" + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/release-it/node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, "license": "MIT", "dependencies": { - "shebang-regex": "^1.0.0" + "mimic-fn": "^2.1.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "license": "MIT", + "node_modules/release-it/node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true, + "license": "ISC" + }, + "node_modules/release-it/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/semantic-release-monorepo/node_modules/tempy": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-1.0.1.tgz", - "integrity": "sha512-biM9brNqxSc04Ee71hzFbryD11nX7VPhQQY32AdDmjFvodsRFz/3ufeoTZ6uYkRFfGo188tENcASNs3vTdsM0w==", + "node_modules/release-it/node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, "license": "MIT", "dependencies": { - "del": "^6.0.0", - "is-stream": "^2.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^0.16.0", - "unique-string": "^2.0.0" + "semver": "^7.3.5" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/tempy/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/release-it/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "dev": true, + "license": "ISC", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/release-it/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=8" + "node": ">=14.16" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/type-fest": { - "version": "0.16.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.16.0.tgz", - "integrity": "sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==", - "license": "(MIT OR CC0-1.0)", + "node_modules/release-it/node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "license": "MIT", "engines": { - "node": ">=10" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release-monorepo/node_modules/unique-string": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-2.0.0.tgz", - "integrity": "sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==", + "node_modules/release-it/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, "license": "MIT", "dependencies": { - "crypto-random-string": "^2.0.0" + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/semantic-release-monorepo/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" + "node": ">=18" }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/semantic-release-monorepo/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "license": "ISC" - }, - "node_modules/semantic-release-plugin-decorators": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/semantic-release-plugin-decorators/-/semantic-release-plugin-decorators-3.0.3.tgz", - "integrity": "sha512-YTB2z64yyqEzABJ3yFesV9s5izZ4oKdbYDTu/2whVdlGQYCwsWkw9XYRCnvXzPdWPSWYmCPdJwMJ5w433rncig==", - "license": "MIT", - "peerDependencies": { - "semantic-release": ">=11 < 20" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/@octokit/auth-token": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-3.0.4.tgz", - "integrity": "sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==", + "node_modules/release-it/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "license": "MIT", + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/semantic-release/node_modules/@octokit/core": { - "version": "4.2.4", - "resolved": "https://registry.npmjs.org/@octokit/core/-/core-4.2.4.tgz", - "integrity": "sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==", - "license": "MIT", + "node_modules/release-it/node_modules/update-notifier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.1.0.tgz", + "integrity": "sha512-8SV3rIqVY6EFC1WxH6L0j55s0MO79MFBS1pivmInRJg3pCEDgWHBj1Q6XByTtCLOZIFA0f6zoG9ZWf2Ks9lvTA==", + "dev": true, + "license": "BSD-2-Clause", "dependencies": { - "@octokit/auth-token": "^3.0.0", - "@octokit/graphql": "^5.0.0", - "@octokit/request": "^6.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "before-after-hook": "^2.2.0", - "universal-user-agent": "^6.0.0" + "boxen": "^7.1.1", + "chalk": "^5.3.0", + "configstore": "^6.0.0", + "import-lazy": "^4.0.0", + "is-in-ci": "^0.1.0", + "is-installed-globally": "^1.0.0", + "is-npm": "^6.0.0", + "latest-version": "^9.0.0", + "pupa": "^3.1.0", + "semver": "^7.6.2", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">= 14" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, - "node_modules/semantic-release/node_modules/@octokit/endpoint": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-7.0.6.tgz", - "integrity": "sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==", + "node_modules/release-it/node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "universal-user-agent": "^6.0.0" - }, "engines": { - "node": ">= 14" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/@octokit/graphql": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-5.0.6.tgz", - "integrity": "sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==", - "license": "MIT", + "node_modules/release-zalgo": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/release-zalgo/-/release-zalgo-1.0.0.tgz", + "integrity": "sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==", + "dev": true, + "license": "ISC", "dependencies": { - "@octokit/request": "^6.0.0", - "@octokit/types": "^9.0.0", - "universal-user-agent": "^6.0.0" + "es6-error": "^4.0.1" }, "engines": { - "node": ">= 14" + "node": ">=4" } }, - "node_modules/semantic-release/node_modules/@octokit/openapi-types": { - "version": "18.1.1", - "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-18.1.1.tgz", - "integrity": "sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==", - "license": "MIT" - }, - "node_modules/semantic-release/node_modules/@octokit/plugin-paginate-rest": { - "version": "6.1.2", - "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-6.1.2.tgz", - "integrity": "sha512-qhrmtQeHU/IivxucOV1bbI/xZyC/iOBhclokv7Sut5vnejAIAEXVcGQeRpQlU39E0WwK9lNvJHphHri/DB6lbQ==", - "license": "MIT", + "node_modules/repeating": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-1.1.3.tgz", + "integrity": "sha512-Nh30JLeMHdoI+AsQ5eblhZ7YlTsM9wiJQe/AHIunlK3KWzvXhXb36IJ7K1IOeRjIOtzMjdUHjwXUFxKJoPTSOg==", "dependencies": { - "@octokit/tsconfig": "^1.0.2", - "@octokit/types": "^9.2.3" + "is-finite": "^1.0.0" }, - "engines": { - "node": ">= 14" + "bin": { + "repeating": "cli.js" }, - "peerDependencies": { - "@octokit/core": ">=4" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/semantic-release/node_modules/@octokit/plugin-retry": { - "version": "4.1.6", - "resolved": "https://registry.npmjs.org/@octokit/plugin-retry/-/plugin-retry-4.1.6.tgz", - "integrity": "sha512-obkYzIgEC75r8+9Pnfiiqy3y/x1bc3QLE5B7qvv9wi9Kj0R5tGQFC6QMBg1154WQ9lAVypuQDGyp3hNpp15gQQ==", + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "license": "MIT", - "dependencies": { - "@octokit/types": "^9.0.0", - "bottleneck": "^2.15.3" - }, "engines": { - "node": ">= 14" - }, - "peerDependencies": { - "@octokit/core": ">=3" + "node": ">=0.10.0" } }, - "node_modules/semantic-release/node_modules/@octokit/plugin-throttling": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@octokit/plugin-throttling/-/plugin-throttling-5.2.3.tgz", - "integrity": "sha512-C9CFg9mrf6cugneKiaI841iG8DOv6P5XXkjmiNNut+swePxQ7RWEdAZRp5rJoE1hjsIqiYcKa/ZkOQ+ujPI39Q==", + "node_modules/require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true, + "license": "ISC" + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, "license": "MIT", "dependencies": { - "@octokit/types": "^9.0.0", - "bottleneck": "^2.15.3" + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 14" + "bin": { + "resolve": "bin/resolve" }, - "peerDependencies": { - "@octokit/core": "^4.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/semantic-release/node_modules/@octokit/request": { - "version": "6.2.8", - "resolved": "https://registry.npmjs.org/@octokit/request/-/request-6.2.8.tgz", - "integrity": "sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==", - "license": "MIT", - "dependencies": { - "@octokit/endpoint": "^7.0.0", - "@octokit/request-error": "^3.0.0", - "@octokit/types": "^9.0.0", - "is-plain-object": "^5.0.0", - "node-fetch": "^2.6.7", - "universal-user-agent": "^6.0.0" - }, - "engines": { - "node": ">= 14" - } + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true, + "license": "MIT" }, - "node_modules/semantic-release/node_modules/@octokit/request-error": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-3.0.3.tgz", - "integrity": "sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/types": "^9.0.0", - "deprecation": "^2.0.0", - "once": "^1.4.0" - }, "engines": { - "node": ">= 14" + "node": ">=4" } }, - "node_modules/semantic-release/node_modules/@octokit/types": { - "version": "9.3.2", - "resolved": "https://registry.npmjs.org/@octokit/types/-/types-9.3.2.tgz", - "integrity": "sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==", + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, "license": "MIT", - "dependencies": { - "@octokit/openapi-types": "^18.0.0" + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/semantic-release/node_modules/@semantic-release/github": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/@semantic-release/github/-/github-8.1.0.tgz", - "integrity": "sha512-erR9E5rpdsz0dW1I7785JtndQuMWN/iDcemcptf67tBNOmBUN0b2YNOgcjYUnBpgRpZ5ozfBHrK7Bz+2ets/Dg==", - "license": "MIT", - "dependencies": { - "@octokit/core": "^4.2.1", - "@octokit/plugin-paginate-rest": "^6.1.2", - "@octokit/plugin-retry": "^4.1.3", - "@octokit/plugin-throttling": "^5.2.3", - "@semantic-release/error": "^3.0.0", - "aggregate-error": "^3.0.0", - "debug": "^4.0.0", - "dir-glob": "^3.0.0", - "fs-extra": "^11.0.0", - "globby": "^11.0.0", - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "issue-parser": "^6.0.0", - "lodash": "^4.17.4", - "mime": "^3.0.0", - "p-filter": "^2.0.0", - "url-join": "^4.0.0" - }, - "engines": { - "node": ">=14.17" + "node_modules/restify-clients": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/restify-clients/-/restify-clients-1.6.0.tgz", + "integrity": "sha512-q5kF/KHkwC10PhEjZkgQnWCIVCq5rlKF+fbqjl51e28ArkztJNI5czFzwCd/4Qz3HRrfwidk1XcAKLxY75dT6w==", + "dependencies": { + "assert-plus": "^1.0.0", + "backoff": "^2.4.1", + "bunyan": "^1.8.3", + "fast-safe-stringify": "^1.1.3", + "keep-alive-agent": "0.0.1", + "lodash": "^4.7.0", + "lru-cache": "^4.0.1", + "mime": "^1.3.4", + "once": "^1.3.2", + "restify-errors": "^3.1.0", + "semver": "^5.0.1", + "tunnel-agent": "^0.6.0", + "uuid": "^3.0.1" }, - "peerDependencies": { - "semantic-release": ">=18.0.0-beta.1" + "optionalDependencies": { + "dtrace-provider": "^0.8.3" } }, - "node_modules/semantic-release/node_modules/agent-base": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", - "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", - "license": "MIT", - "dependencies": { - "debug": "^4.3.4" - }, + "node_modules/restify-clients/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", "engines": { - "node": ">= 14" + "node": ">=0.8" } }, - "node_modules/semantic-release/node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "license": "ISC", + "node_modules/restify-clients/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "node_modules/semantic-release/node_modules/cosmiconfig": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", - "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", - "license": "MIT", - "dependencies": { - "@types/parse-json": "^4.0.0", - "import-fresh": "^3.2.1", - "parse-json": "^5.0.0", - "path-type": "^4.0.0", - "yaml": "^1.10.0" + "node_modules/restify-clients/node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" }, "engines": { - "node": ">=10" + "node": ">=4" } }, - "node_modules/semantic-release/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" + "node_modules/restify-clients/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" } }, - "node_modules/semantic-release/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "license": "MIT", - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node_modules/restify-clients/node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" } }, - "node_modules/semantic-release/node_modules/figures": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", - "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", - "license": "MIT", + "node_modules/restify-clients/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==" + }, + "node_modules/restify-errors": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restify-errors/-/restify-errors-3.1.0.tgz", + "integrity": "sha512-4RDQs4zirMPXH03y5LKIFoAs+LvO9HTd5Ig4KfD5h4yRtTC5aWK/F2L1g9O2CSjTsgNIc+d0ib0f1rSob3FjNg==", "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "assert-plus": "^0.2.0", + "lodash": "^3.10.1", + "verror": "^1.6.0" } }, - "node_modules/semantic-release/node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, + "node_modules/restify-errors/node_modules/assert-plus": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-0.2.0.tgz", + "integrity": "sha512-u1L0ZLywRziOVjUhRxI0Qg9G+4RnFB9H/Rq40YWn0dieDgO7vAYeJz6jKAO6t/aruzlDFLAPkQTT87e+f8Imaw==", "engines": { - "node": ">=8" + "node": ">=0.8" } }, - "node_modules/semantic-release/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/restify-errors/node_modules/lodash": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-3.10.1.tgz", + "integrity": "sha512-9mDDwqVIma6OZX79ZlDACZl8sBm0TEnkf99zV3iMA4GzkIT/9hiqP5mY0HoT1iNLCrKc/R1HByV+yJfRWVJryQ==" + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, "license": "MIT", "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/semantic-release/node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "license": "MIT", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, "engines": { - "node": ">= 14" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/semantic-release/node_modules/https-proxy-agent": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", - "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", - "license": "MIT", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "devOptional": true, + "license": "ISC", "dependencies": { - "agent-base": "^7.0.2", - "debug": "4" + "glob": "^7.1.3" }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/semantic-release/node_modules/human-signals": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", - "license": "Apache-2.0", - "engines": { - "node": ">=10.17.0" + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/rimraf/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "devOptional": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/semantic-release/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "license": "MIT", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "devOptional": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, "engines": { - "node": ">=8" + "node": "*" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/semantic-release/node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "license": "MIT", + "node_modules/rimraf/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "devOptional": true, + "license": "ISC", "dependencies": { - "p-locate": "^4.1.0" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/semantic-release/node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/ripemd160": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/ripemd160/-/ripemd160-2.0.2.tgz", + "integrity": "sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==", "license": "MIT", - "engines": { - "node": ">=6" + "dependencies": { + "hash-base": "^3.0.0", + "inherits": "^2.0.1" } }, - "node_modules/semantic-release/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "license": "MIT", + "node_modules/rlp": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/rlp/-/rlp-2.2.7.tgz", + "integrity": "sha512-d5gdPmgQ0Z+AklL2NVXr/IoSjNZFfTVvQWzL/AM2AOcSzYP2xjlb0AC8YyCLc41MSNf6P6QVtjgPdmVtzb+4lQ==", + "license": "MPL-2.0", "dependencies": { - "path-key": "^3.0.0" + "bn.js": "^5.2.0" }, - "engines": { - "node": ">=8" + "bin": { + "rlp": "bin/rlp" } }, - "node_modules/semantic-release/node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/rlp/node_modules/bn.js": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/bn.js/-/bn.js-5.2.1.tgz", + "integrity": "sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==", + "license": "MIT" + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, "engines": { - "node": ">=6" + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semantic-release/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.12.0" } }, - "node_modules/semantic-release/node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "license": "MIT", "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" + "queue-microtask": "^1.2.2" } }, - "node_modules/semantic-release/node_modules/read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", "license": "MIT", "dependencies": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" }, "engines": { - "node": ">=8" + "node": ">=0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/semantic-release/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "license": "MIT" + }, + "node_modules/safe-json-stringify": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/safe-json-stringify/-/safe-json-stringify-1.2.0.tgz", + "integrity": "sha512-gH8eh2nZudPQO6TytOvbxnuhYBOvDBBLW52tz5q6X58lJcd/tkmqFR+5Z9adS8aJtURSXWThWy/xJtJwixErvg==", + "optional": true + }, + "node_modules/safe-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-2.1.1.tgz", + "integrity": "sha512-rx+x8AMzKb5Q5lQ95Zoi6ZbJqwCLkqi3XuJXp5P3rT8OEc6sZCJG5AE5dU3lsgRr/F4Bs31jSlVN+j5KrsGu9A==", + "dev": true, "license": "MIT", - "engines": { - "node": ">=8" + "dependencies": { + "regexp-tree": "~0.1.1" } }, - "node_modules/semantic-release/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", "license": "MIT", "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" }, "engines": { - "node": ">=8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/semantic-release/node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/safe-stable-stringify": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.4.3.tgz", + "integrity": "sha512-e2bDA2WJT0wxseVd4lsDP4+3ONX6HpMXQa1ZhFQ7SU+GjvORCmShbCMltrtIDfkYhVHrOcPtj+KhmDBdPdZD1g==", "license": "MIT", "engines": { - "node": ">=6" - } - }, - "node_modules/semantic-release/node_modules/type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=8" + "node": ">=10" } }, - "node_modules/semantic-release/node_modules/url-join": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/url-join/-/url-join-4.0.1.tgz", - "integrity": "sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", "license": "MIT" }, - "node_modules/semantic-release/node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } + "node_modules/sax": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.1.tgz", + "integrity": "sha512-8I2a3LovHTOpm7NV5yOyO8IHqgVsfK4+UuySrXU8YXkSRX7k6hCV9b3HrkKCr3nMpgj+0bmocaJJWpvp1oc7ZA==", + "license": "ISC" + }, + "node_modules/scrypt-js": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/scrypt-js/-/scrypt-js-3.0.1.tgz", + "integrity": "sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA==", + "license": "MIT" }, - "node_modules/semantic-release/node_modules/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "node_modules/secp256k1": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/secp256k1/-/secp256k1-5.0.0.tgz", + "integrity": "sha512-TKWX8xvoGHrxVdqbYeZM9w+izTF4b9z3NhSaDkdn81btvuh+ivbIMGT/zQvDtTFWhRlThpoz6LEYTr7n8A5GcA==", + "hasInstallScript": true, "license": "MIT", "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" + "elliptic": "^6.5.4", + "node-addon-api": "^5.0.0", + "node-gyp-build": "^4.2.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" } }, - "node_modules/semantic-release/node_modules/yargs-parser": { - "version": "20.2.9", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.9.tgz", - "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", - "license": "ISC", - "engines": { - "node": ">=10" - } + "node_modules/secp256k1/node_modules/node-addon-api": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz", + "integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==", + "license": "MIT" + }, + "node_modules/secure-json-parse": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/secure-json-parse/-/secure-json-parse-2.7.0.tgz", + "integrity": "sha512-6aU+Rwsezw7VR8/nyvKTx8QpWH9FrcYiXXlqC4z5d5XQBDRqtbfsRjnwGyqbi3gddNtWHuEk9OANUotL26qKUw==", + "license": "BSD-3-Clause" }, "node_modules/semver": { "version": "7.6.3", @@ -32123,46 +19832,6 @@ "node": ">=10" } }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==", - "license": "MIT", - "optional": true - }, - "node_modules/semver-diff": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-3.1.1.tgz", - "integrity": "sha512-GX0Ix/CJcHyB8c4ykpHGIAvLyOwOobtM/8d+TQkAd81/bEjgPHrfba41Vpesr7jX/t8Uh+R3EX9eAS5be+jQYg==", - "license": "MIT", - "dependencies": { - "semver": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-diff/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "node_modules/semver-regex": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-3.1.4.tgz", - "integrity": "sha512-6IiqeZNgq01qGf0TId0t3NvKzSvUsjcpdEO3AQNeIjR6A2+ckTnQlDpl4qu1bjRv0RzN3FP9hzFmws3lKqRWkA==", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/send": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", @@ -32229,39 +19898,11 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", "license": "MIT" }, - "node_modules/serialize-error": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-7.0.1.tgz", - "integrity": "sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==", - "license": "MIT", - "optional": true, - "dependencies": { - "type-fest": "^0.13.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/serialize-error/node_modules/type-fest": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", - "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", - "license": "(MIT OR CC0-1.0)", - "optional": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/serialize-javascript": { "version": "6.0.2", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dev": true, "license": "BSD-3-Clause", "dependencies": { "randombytes": "^2.1.0" @@ -32286,6 +19927,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "devOptional": true, "license": "ISC" }, "node_modules/set-function-length": { @@ -32345,28 +19987,6 @@ "sha.js": "bin.js" } }, - "node_modules/shacl-engine": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/shacl-engine/-/shacl-engine-0.1.5.tgz", - "integrity": "sha512-M/1ZaIvrgFyTQKtCgeZCk6IXqpStEd3dj192a5KD/JCksEWw7Gs4BrMgpoH8lR3MbHW7YOH+qABzr5Lo1MFnJg==", - "license": "MIT", - "dependencies": { - "@rdfjs/namespace": "^2.0.0", - "@rdfjs/term-map": "^2.0.0", - "@rdfjs/term-set": "^2.0.1", - "@rdfjs/to-ntriples": "^2.0.0", - "grapoi": "^1.1.1", - "lodash": "^4.17.21", - "rdf-literal": "^1.3.1", - "rdf-validation": "^0.1.0" - } - }, - "node_modules/shacl-engine/node_modules/@rdfjs/to-ntriples": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@rdfjs/to-ntriples/-/to-ntriples-2.0.0.tgz", - "integrity": "sha512-nDhpfhx6W6HKsy4HjyLp3H1nbrX1CiUCWhWQwKcYZX1s9GOjcoQTwY7GUUbVec0hzdJDQBR6gnjxtENBDt482Q==", - "license": "MIT" - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -32462,18 +20082,6 @@ "node": "*" } }, - "node_modules/shiki": { - "version": "0.14.7", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-0.14.7.tgz", - "integrity": "sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==", - "license": "MIT", - "dependencies": { - "ansi-sequence-parser": "^1.1.0", - "jsonc-parser": "^3.2.0", - "vscode-oniguruma": "^1.7.0", - "vscode-textmate": "^8.0.0" - } - }, "node_modules/side-channel": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", @@ -32498,103 +20106,6 @@ "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", "license": "ISC" }, - "node_modules/signale": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/signale/-/signale-1.4.0.tgz", - "integrity": "sha512-iuh+gPf28RkltuJC7W5MRi6XAjTDCAPC/prJUpQoG4vIP3MJZ+GTydVnodXA7pwvTKb2cA0m9OFZW/cdWy/I/w==", - "license": "MIT", - "dependencies": { - "chalk": "^2.3.2", - "figures": "^2.0.0", - "pkg-conf": "^2.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/signale/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/signale/node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/signale/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/signale/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "license": "MIT" - }, - "node_modules/signale/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/signale/node_modules/figures": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", - "integrity": "sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.5" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/signale/node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/signale/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/simple-concat": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/simple-concat/-/simple-concat-1.0.1.tgz", @@ -32656,16 +20167,16 @@ "license": "MIT" }, "node_modules/sinon": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/sinon/-/sinon-17.0.1.tgz", - "integrity": "sha512-wmwE19Lie0MLT+ZYNpDymasPHUKTaZHUH/pKEubRXIzySv9Atnlw+BUMGCzWgV7b7wO+Hw6f1TEOr0IUnmU8/g==", - "license": "BSD-3-Clause", + "version": "19.0.5", + "resolved": "https://registry.npmjs.org/sinon/-/sinon-19.0.5.tgz", + "integrity": "sha512-r15s9/s+ub/d4bxNXqIUmwp6imVSdTorIRaxoecYjqTVLZ8RuoXr/4EDGwIBo6Waxn7f2gnURX9zuhAfCwaF6Q==", + "dev": true, "dependencies": { - "@sinonjs/commons": "^3.0.0", - "@sinonjs/fake-timers": "^11.2.2", - "@sinonjs/samsam": "^8.0.0", - "diff": "^5.1.0", - "nise": "^5.1.5", + "@sinonjs/commons": "^3.0.1", + "@sinonjs/fake-timers": "^13.0.5", + "@sinonjs/samsam": "^8.0.1", + "diff": "^7.0.0", + "nise": "^6.1.1", "supports-color": "^7.2.0" }, "funding": { @@ -32673,10 +20184,20 @@ "url": "https://opencollective.com/sinon" } }, + "node_modules/sinon/node_modules/diff": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-7.0.0.tgz", + "integrity": "sha512-PJWHUb1RFevKCwaFA9RlG5tCd+FO5iRh9A8HEtkmBH2Li03iJriB6m6JIN4rGz3K3JLawI7/veA1xzRKP6ISBw==", + "dev": true, + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/sinon/node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -32685,44 +20206,16 @@ "node": ">=8" } }, - "node_modules/sirv": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-2.0.4.tgz", - "integrity": "sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==", - "license": "MIT", - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">= 10" - } - }, - "node_modules/sirv/node_modules/@polka/url": { - "version": "1.0.0-next.25", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.25.tgz", - "integrity": "sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==", - "license": "MIT" - }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=8" } }, - "node_modules/slice-ansi": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-0.0.4.tgz", - "integrity": "sha512-up04hB2hR92PgjpyU3y/eg91yIBILyjVY26NvvciY3EVVPjybkMszMpXQ9QAkcS3I5rtJBDLoTxxg+qvW8c7rw==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/smart-buffer": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", @@ -32777,15 +20270,6 @@ "node": ">= 14" } }, - "node_modules/solid-namespace": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/solid-namespace/-/solid-namespace-0.5.3.tgz", - "integrity": "sha512-b2u2qkrRa0yrcc/jh6Nv0/mkwMyL4fMSNZtKG4dv3IxQtZOEUB8O6Xe7GrkoQaRoGrbUxRzbve9GHJD0w7p+KA==", - "license": "MIT", - "dependencies": { - "standard": "^17.0.0" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -32795,121 +20279,35 @@ "node": ">=0.10.0" } }, - "node_modules/source-map-js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", - "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, "node_modules/spawn-command": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", - "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", - "dev": true - }, - "node_modules/spawn-error-forwarder": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/spawn-error-forwarder/-/spawn-error-forwarder-1.0.0.tgz", - "integrity": "sha512-gRjMgK5uFjbCvdibeGJuy3I5OYz6VLoVdsOJdA6wV0WlfQVLFueoqMxwwYD9RODdgb6oUIvlRlsyFSiQkMKu0g==", - "license": "MIT" - }, - "node_modules/spawn-wrap": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", - "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^2.0.0", - "is-windows": "^1.0.2", - "make-dir": "^3.0.0", - "rimraf": "^3.0.0", - "signal-exit": "^3.0.2", - "which": "^2.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", - "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.18", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", - "license": "CC0-1.0" - }, - "node_modules/split": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", - "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", - "license": "MIT", - "dependencies": { - "through": "2" - }, - "engines": { - "node": "*" - } - }, - "node_modules/split2": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/split2/-/split2-3.2.2.tgz", - "integrity": "sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==", - "license": "ISC", - "dependencies": { - "readable-stream": "^3.0.0" - } + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true }, - "node_modules/split2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", + "node_modules/spawn-wrap": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/spawn-wrap/-/spawn-wrap-2.0.0.tgz", + "integrity": "sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==", + "dev": true, + "license": "ISC", "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" + "foreground-child": "^2.0.0", + "is-windows": "^1.0.2", + "make-dir": "^3.0.0", + "rimraf": "^3.0.0", + "signal-exit": "^3.0.2", + "which": "^2.0.1" }, "engines": { - "node": ">= 6" + "node": ">=8" } }, + "node_modules/split-ca": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz", + "integrity": "sha512-Q5thBSxp5t8WPTTJQS59LrGqOZqOsrhDGDVm8azCqIBjSBd7nd9o2PM+mDulQQkh8h//4U6hFZnc/mul8t5pWQ==" + }, "node_modules/sprintf-js": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", @@ -32941,12 +20339,59 @@ } } }, + "node_modules/sqlite3/node_modules/minipass": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "engines": { + "node": ">=8" + } + }, "node_modules/sqlite3/node_modules/node-addon-api": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-7.1.1.tgz", "integrity": "sha512-5m3bsyrjFWE1xf7nz7YXdN4udnVtXK6/Yfgn5qnahL6bCkf2yKt4k3nuTKAtT4r3IG8JNR2ncsIMdZuAzJjHQQ==", "license": "MIT" }, + "node_modules/sqlite3/node_modules/tar": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", + "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dependencies": { + "chownr": "^2.0.0", + "fs-minipass": "^2.0.0", + "minipass": "^5.0.0", + "minizlib": "^2.1.1", + "mkdirp": "^1.0.3", + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/ssh2": { + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/ssh2/-/ssh2-1.16.0.tgz", + "integrity": "sha512-r1X4KsBGedJqo7h8F5c4Ybpcr5RjyP+aWIG007uBPRjmdQWfEiVLzSK71Zji1B9sKxwaCvD8y8cwSkYrlLiRRg==", + "hasInstallScript": true, + "dependencies": { + "asn1": "^0.2.6", + "bcrypt-pbkdf": "^1.0.2" + }, + "engines": { + "node": ">=10.16.0" + }, + "optionalDependencies": { + "cpu-features": "~0.0.10", + "nan": "^2.20.0" + } + }, + "node_modules/ssh2/node_modules/nan": { + "version": "2.22.2", + "resolved": "https://registry.npmjs.org/nan/-/nan-2.22.2.tgz", + "integrity": "sha512-DANghxFkS1plDdRsX0X9pm0Z6SJNN6gBdtXfanwoZ8hooC5gosGFSBGRYHUVPz1asKA/kMRqDRdHrluZ61SpBQ==", + "optional": true + }, "node_modules/ssri": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", @@ -32969,202 +20414,6 @@ "node": "*" } }, - "node_modules/standard": { - "version": "17.1.0", - "resolved": "https://registry.npmjs.org/standard/-/standard-17.1.0.tgz", - "integrity": "sha512-jaDqlNSzLtWYW4lvQmU0EnxWMUGQiwHasZl5ZEIwx3S/ijZDjZOzs1y1QqKwKs5vqnFpGtizo4NOYX2s0Voq/g==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "eslint": "^8.41.0", - "eslint-config-standard": "17.1.0", - "eslint-config-standard-jsx": "^11.0.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-n": "^15.7.0", - "eslint-plugin-promise": "^6.1.1", - "eslint-plugin-react": "^7.32.2", - "standard-engine": "^15.0.0", - "version-guard": "^1.1.1" - }, - "bin": { - "standard": "bin/cmd.cjs" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine": { - "version": "15.1.0", - "resolved": "https://registry.npmjs.org/standard-engine/-/standard-engine-15.1.0.tgz", - "integrity": "sha512-VHysfoyxFu/ukT+9v49d4BRXIokFRZuH3z1VRxzFArZdjSCFpro6rEIU3ji7e4AoAtuSfKBkiOmsrDqKW5ZSRw==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "get-stdin": "^8.0.0", - "minimist": "^1.2.6", - "pkg-conf": "^3.1.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/standard-engine/node_modules/find-up": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", - "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/node_modules/load-json-file": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", - "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.1.15", - "parse-json": "^4.0.0", - "pify": "^4.0.1", - "strip-bom": "^3.0.0", - "type-fest": "^0.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/node_modules/locate-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", - "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/standard-engine/node_modules/p-locate": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", - "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine/node_modules/path-exists": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine/node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/node_modules/pkg-conf": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/pkg-conf/-/pkg-conf-3.1.0.tgz", - "integrity": "sha512-m0OTbR/5VPNPqO1ph6Fqbj7Hv6QU7gR/tQW40ZqrL1rjgCU85W6C1bJn0BItuJqnR98PWzw7Z8hHeChD1WrgdQ==", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0", - "load-json-file": "^5.2.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/standard-engine/node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/standard-engine/node_modules/type-fest": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", - "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, "node_modules/statuses": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", @@ -33174,21 +20423,6 @@ "node": ">= 0.8" } }, - "node_modules/stdin-discarder": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.1.0.tgz", - "integrity": "sha512-xhV7w8S+bUwlPTb4bAOUQhv8/cSS5offJuX8GQGq32ONF0ZtDWKfkdomM3HMRA+LhX6um/FZ0COqlwsjD53LeQ==", - "license": "MIT", - "dependencies": { - "bl": "^5.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", @@ -33201,30 +20435,6 @@ "node": ">= 0.4" } }, - "node_modules/stream-browserify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/stream-browserify/-/stream-browserify-3.0.0.tgz", - "integrity": "sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==", - "license": "MIT", - "dependencies": { - "inherits": "~2.0.4", - "readable-stream": "^3.5.0" - } - }, - "node_modules/stream-browserify/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/stream-chunks": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stream-chunks/-/stream-chunks-1.0.0.tgz", @@ -33235,46 +20445,6 @@ "string_decoder": "^1.3.0" } }, - "node_modules/stream-combiner2": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stream-combiner2/-/stream-combiner2-1.1.1.tgz", - "integrity": "sha512-3PnJbYgS56AeWgtKF5jtJRT6uFJe56Z0Hc5Ngg/6sI6rIt8iiMBTa9cvdyFfpMQjaVHr8dusbNeFGIIonxOvKw==", - "license": "MIT", - "dependencies": { - "duplexer2": "~0.1.0", - "readable-stream": "^2.0.2" - } - }, - "node_modules/stream-combiner2/node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/stream-combiner2/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/stream-combiner2/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, "node_modules/stream-concat": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/stream-concat/-/stream-concat-1.0.0.tgz", @@ -33327,13 +20497,38 @@ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", "integrity": "sha512-0XsVpQLnVCXHJfyEs8tC0zpTVIr5PKKsQtkT29IwupnPTjtPmQ3xT/4yCREF9hYkV/3M3kzcUTSAZT6a6h81tw==", "license": "MIT", + "optional": true, "dependencies": { "code-point-at": "^1.0.0", "is-fullwidth-code-point": "^1.0.0", "strip-ansi": "^3.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=0.10.0" + } + }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" } }, "node_modules/string-width/node_modules/ansi-regex": { @@ -33341,6 +20536,7 @@ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", "integrity": "sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==", "license": "MIT", + "optional": true, "engines": { "node": ">=0.10.0" } @@ -33350,6 +20546,7 @@ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", "integrity": "sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==", "license": "MIT", + "optional": true, "dependencies": { "ansi-regex": "^2.0.0" }, @@ -33361,6 +20558,7 @@ "version": "4.0.11", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, "license": "MIT", "dependencies": { "call-bind": "^1.0.7", @@ -33387,6 +20585,7 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, "license": "MIT", "dependencies": { "define-properties": "^1.1.3", @@ -33454,25 +20653,17 @@ "node": ">=8" } }, - "node_modules/strip-bom": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-5.0.0.tgz", - "integrity": "sha512-p+byADHF7SzEcVnLvc/r3uognM1hUhObuHXxJcgLCfD194XAkaLbjq3Wzb0N5G2tgIjH0dgT708Z51QxMeu60A==", - "license": "MIT", - "engines": { - "node": ">=12" + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "license": "MIT", "engines": { - "node": ">=0.10.0" + "node": ">=8" } }, "node_modules/strip-final-newline": { @@ -33487,68 +20678,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-indent": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", - "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", - "license": "MIT", - "dependencies": { - "min-indent": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-json-comments": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-5.0.1.tgz", - "integrity": "sha512-0fk9zBqO67Nq5M/m45qHCJxylV/DhBlIOVExqgOMiCCrzrhU6tCibRXNqE3jwJLftzE9SNuZtYbpzcO+i9FiKw==", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strip-outer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", - "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-outer/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/strnum": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "license": "MIT" }, - "node_modules/sumchecker": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/sumchecker/-/sumchecker-3.0.1.tgz", - "integrity": "sha512-MvjXzkz/BOfyVDkG0oFOtBxHX2u3gKbMHIF/dXblZsgD3BWOFLmHovIpZY7BykJdAjcqRCBi1WYBNdEC9yI7vg==", - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.1.0" - }, - "engines": { - "node": ">= 8.0" - } + "node_modules/strsplit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strsplit/-/strsplit-1.0.0.tgz", + "integrity": "sha512-efXqQImOEC0nyQqFzPUqa7NvF4B0ZPW2YM5nS+uXTB76sQt002brfZWQo/NSkAt771RTvv/brVQqtxJL7UBHMw==" }, "node_modules/super-regex": { "version": "0.2.0", @@ -33571,6 +20710,7 @@ "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "license": "MIT", "dependencies": { "has-flag": "^4.0.0" @@ -33582,35 +20722,11 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/supports-hyperlinks": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.3.0.tgz", - "integrity": "sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/supports-hyperlinks/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -33619,15 +20735,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/symbol-observable": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-1.2.0.tgz", - "integrity": "sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/synckit": { "version": "0.9.1", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.1.tgz", @@ -33645,22 +20752,6 @@ "url": "https://opencollective.com/unts" } }, - "node_modules/table": { - "version": "6.8.2", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", - "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", - "license": "BSD-3-Clause", - "dependencies": { - "ajv": "^8.0.1", - "lodash.truncate": "^4.4.2", - "slice-ansi": "^4.0.0", - "string-width": "^4.2.3", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/table-layout": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/table-layout/-/table-layout-4.1.1.tgz", @@ -33683,186 +20774,26 @@ "node": ">=12.17" } }, - "node_modules/table/node_modules/ajv": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", - "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/table/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/table/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "license": "MIT" - }, - "node_modules/table/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/table/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tape": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/tape/-/tape-5.8.1.tgz", - "integrity": "sha512-pUzADXBVYm5Jkneh9hfXnirADrzQrDA3vddKbPOc/ZLORj4dFQ6GR1KdGWX0/NvOLDcYkVgeMdw78Uf6BzO3KA==", - "license": "MIT", - "dependencies": { - "@ljharb/resumer": "^0.1.3", - "@ljharb/through": "^2.3.13", - "array.prototype.every": "^1.1.6", - "call-bind": "^1.0.7", - "deep-equal": "^2.2.3", - "defined": "^1.0.1", - "dotignore": "^0.1.2", - "for-each": "^0.3.3", - "get-package-type": "^0.1.0", - "glob": "^7.2.3", - "has-dynamic-import": "^2.1.0", - "hasown": "^2.0.2", - "inherits": "^2.0.4", - "is-regex": "^1.1.4", - "minimist": "^1.2.8", - "mock-property": "^1.0.3", - "object-inspect": "^1.13.1", - "object-is": "^1.1.6", - "object-keys": "^1.1.1", - "object.assign": "^4.1.5", - "resolve": "^2.0.0-next.5", - "string.prototype.trim": "^1.2.9" - }, - "bin": { - "tape": "bin/tape" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tape/node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/tape/node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "deprecated": "Glob versions prior to v9 are no longer supported", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/tape/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/tape/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tar": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", - "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", - "license": "ISC", + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/tar/-/tar-7.4.3.tgz", + "integrity": "sha512-5S7Va8hKfV7W5U6g3aYxXmlPoZVAwUMy9AOKyF2fVuZa2UD3qZjg578OrLRt8PcNN1PleVaL/5/yYATNL0ICUw==", "dependencies": { - "chownr": "^2.0.0", - "fs-minipass": "^2.0.0", - "minipass": "^5.0.0", - "minizlib": "^2.1.1", - "mkdirp": "^1.0.3", - "yallist": "^4.0.0" + "@isaacs/fs-minipass": "^4.0.0", + "chownr": "^3.0.0", + "minipass": "^7.1.2", + "minizlib": "^3.0.1", + "mkdirp": "^3.0.1", + "yallist": "^5.0.0" }, "engines": { - "node": ">=10" + "node": ">=18" } }, "node_modules/tar-fs": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.1.tgz", - "integrity": "sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==", - "license": "MIT", + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.3.tgz", + "integrity": "sha512-090nwYJDmlhwFwEW3QQl+vaNnxsO2yVsd45eTKRBzSzu+hlb1w2K9inVq5b0ngXuLVqQ4ApvsUHHnu/zQNkWAg==", "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", @@ -33941,71 +20872,60 @@ "node": ">= 6" } }, - "node_modules/tar/node_modules/minipass": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", - "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", - "license": "ISC", + "node_modules/tar/node_modules/chownr": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", + "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", "engines": { - "node": ">=8" + "node": ">=18" } }, - "node_modules/temp-dir": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-2.0.0.tgz", - "integrity": "sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==", - "license": "MIT", + "node_modules/tar/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/tempy": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tempy/-/tempy-2.0.0.tgz", - "integrity": "sha512-m+QReZVhpa0Y56fmfoLFRZN4aDFdd3qVd8a9k3RfyTw/1utVYNg+Ar4BY6l4/TlkhYCCJFfhYWt9uy0127buJg==", - "license": "MIT", + "node_modules/tar/node_modules/minizlib": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.0.2.tgz", + "integrity": "sha512-oG62iEk+CYt5Xj2YqI5Xi9xWUeZhDI8jjQmC5oThVH5JGCTgIjr7ciJDzC7MBzYd//WvR1OTmP5Q38Q8ShQtVA==", "dependencies": { - "del": "^6.0.0", - "is-stream": "^3.0.0", - "temp-dir": "^2.0.0", - "type-fest": "^2.0.0", - "unique-string": "^3.0.0" + "minipass": "^7.1.2" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 18" } }, - "node_modules/tempy/node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", - "license": "MIT", + "node_modules/tar/node_modules/mkdirp": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-3.0.1.tgz", + "integrity": "sha512-+NsyUUAZDmo6YVHzL/stxSu3t9YS1iljliy3BSDrXJ/dkn1KYdmtZODGGjLcc9XLgVVpH4KshHB8XmZgMhaBXg==", + "bin": { + "mkdirp": "dist/cjs/src/bin.js" + }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/tempy/node_modules/type-fest": { - "version": "2.19.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", - "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", - "license": "(MIT OR CC0-1.0)", + "node_modules/tar/node_modules/yallist": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", + "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=18" } }, "node_modules/test-exclude": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", @@ -34020,6 +20940,7 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^1.0.0", @@ -34031,6 +20952,7 @@ "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", @@ -34051,6 +20973,7 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" @@ -34059,15 +20982,6 @@ "node": "*" } }, - "node_modules/text-extensions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", - "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, "node_modules/text-hex": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz", @@ -34078,37 +20992,9 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, "license": "MIT" }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "license": "MIT" - }, - "node_modules/through2": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/through2/-/through2-4.0.2.tgz", - "integrity": "sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==", - "license": "MIT", - "dependencies": { - "readable-stream": "3" - } - }, - "node_modules/through2/node_modules/readable-stream": { - "version": "3.6.2", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", - "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, "node_modules/thunky": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", @@ -34147,6 +21033,7 @@ "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, "license": "MIT", "dependencies": { "os-tmpdir": "~1.0.2" @@ -34159,6 +21046,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -34168,6 +21056,7 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -34185,33 +21074,22 @@ "node": ">=0.6" } }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "license": "MIT", + "node_modules/tough-cookie": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.0.0.tgz", + "integrity": "sha512-qYeH1zA+4+36nVi2waxBoFcbL54iInWYs6NuMQztwijcfhPZqeCm/fjRkDrnEtkYzOIh19SkKrjs5A+VDx+5sA==", + "deprecated": "ReDoS vulnerability parsing Set-Cookie https://nodesecurity.io/advisories/130", "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "dev": true, "license": "MIT" }, - "node_modules/traverse": { - "version": "0.6.8", - "resolved": "https://registry.npmjs.org/traverse/-/traverse-0.6.8.tgz", - "integrity": "sha512-aXJDbk6SnumuaZSANd21XAo15ucCDE38H4fkqiGsc3MhCK+wOlZvLP9cB/TvpHT0mOyWgC4Z8EwRlzqYSUzdsA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/tree-kill": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", @@ -34222,36 +21100,6 @@ "tree-kill": "cli.js" } }, - "node_modules/trim-newlines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", - "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/trim-repeated": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", - "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "^1.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, "node_modules/triple-beam": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz", @@ -34261,18 +21109,6 @@ "node": ">= 14.0.0" } }, - "node_modules/trouter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/trouter/-/trouter-2.0.1.tgz", - "integrity": "sha512-kr8SKKw94OI+xTGOkfsvwZQ8mWoikZDd2n8XZHjJVZUARZT+4/VV6cacRS6CLsH9bNm+HFIPU1Zx4CnNnb4qlQ==", - "license": "MIT", - "dependencies": { - "matchit": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, "node_modules/ts-api-utils": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", @@ -34351,6 +21187,7 @@ "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", @@ -34363,6 +21200,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, "license": "MIT", "dependencies": { "minimist": "^1.2.0" @@ -34375,6 +21213,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -34403,116 +21242,79 @@ "yarn": ">=1.9.4" } }, - "node_modules/tsutils": { - "version": "3.21.0", - "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.21.0.tgz", - "integrity": "sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==", - "license": "MIT", - "dependencies": { - "tslib": "^1.8.1" - }, - "engines": { - "node": ">= 6" - }, - "peerDependencies": { - "typescript": ">=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta" - } - }, - "node_modules/tsutils-etc": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/tsutils-etc/-/tsutils-etc-1.4.2.tgz", - "integrity": "sha512-2Dn5SxTDOu6YWDNKcx1xu2YUy6PUeKrWZB/x2cQ8vY2+iz3JRembKn/iZ0JLT1ZudGNwQQvtFX9AwvRHbXuPUg==", - "license": "MIT", - "dependencies": { - "@types/yargs": "^17.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "ts-flags": "bin/ts-flags", - "ts-kind": "bin/ts-kind" - }, - "peerDependencies": { - "tsutils": "^3.0.0", - "typescript": ">=4.0.0" - } - }, - "node_modules/tsutils/node_modules/tslib": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", - "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", - "license": "0BSD" - }, "node_modules/tsx": { - "version": "3.14.0", - "resolved": "https://registry.npmjs.org/tsx/-/tsx-3.14.0.tgz", - "integrity": "sha512-xHtFaKtHxM9LOklMmJdI3BEnQq/D5F73Of2E1GDrITi9sgoVkvIsrQUTY1G8FlmGtA+awCI4EBlTRRYxkL2sRg==", + "version": "4.19.4", + "resolved": "https://registry.npmjs.org/tsx/-/tsx-4.19.4.tgz", + "integrity": "sha512-gK5GVzDkJK1SI1zwHf32Mqxf2tSJkNx+eYcNly5+nHvWqXUJYUkWBQtKauoESz3ymezAI++ZwT855x5p5eop+Q==", "dev": true, - "license": "MIT", "dependencies": { - "esbuild": "~0.18.20", - "get-tsconfig": "^4.7.2", - "source-map-support": "^0.5.21" + "esbuild": "~0.25.0", + "get-tsconfig": "^4.7.5" }, "bin": { "tsx": "dist/cli.mjs" }, + "engines": { + "node": ">=18.0.0" + }, "optionalDependencies": { "fsevents": "~2.3.3" } }, "node_modules/tsx/node_modules/@esbuild/win32-x64": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", - "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.5.tgz", + "integrity": "sha512-TXv6YnJ8ZMVdX+SXWVBo/0p8LTcrUYngpWjvm91TMjjBQii7Oz11Lw5lbDV5Y0TzuhSJHwiH4hEtC1I42mMS0g==", "cpu": [ "x64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "win32" ], "engines": { - "node": ">=12" + "node": ">=18" } }, "node_modules/tsx/node_modules/esbuild": { - "version": "0.18.20", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", - "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "version": "0.25.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.5.tgz", + "integrity": "sha512-P8OtKZRv/5J5hhz0cUAdu/cLuPIKXpQl1R9pZtvmHWQvrAUVd0UNIPT4IB4W3rNOqVO0rlqHmCIbSwxh/c9yUQ==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, "engines": { - "node": ">=12" + "node": ">=18" }, "optionalDependencies": { - "@esbuild/android-arm": "0.18.20", - "@esbuild/android-arm64": "0.18.20", - "@esbuild/android-x64": "0.18.20", - "@esbuild/darwin-arm64": "0.18.20", - "@esbuild/darwin-x64": "0.18.20", - "@esbuild/freebsd-arm64": "0.18.20", - "@esbuild/freebsd-x64": "0.18.20", - "@esbuild/linux-arm": "0.18.20", - "@esbuild/linux-arm64": "0.18.20", - "@esbuild/linux-ia32": "0.18.20", - "@esbuild/linux-loong64": "0.18.20", - "@esbuild/linux-mips64el": "0.18.20", - "@esbuild/linux-ppc64": "0.18.20", - "@esbuild/linux-riscv64": "0.18.20", - "@esbuild/linux-s390x": "0.18.20", - "@esbuild/linux-x64": "0.18.20", - "@esbuild/netbsd-x64": "0.18.20", - "@esbuild/openbsd-x64": "0.18.20", - "@esbuild/sunos-x64": "0.18.20", - "@esbuild/win32-arm64": "0.18.20", - "@esbuild/win32-ia32": "0.18.20", - "@esbuild/win32-x64": "0.18.20" + "@esbuild/aix-ppc64": "0.25.5", + "@esbuild/android-arm": "0.25.5", + "@esbuild/android-arm64": "0.25.5", + "@esbuild/android-x64": "0.25.5", + "@esbuild/darwin-arm64": "0.25.5", + "@esbuild/darwin-x64": "0.25.5", + "@esbuild/freebsd-arm64": "0.25.5", + "@esbuild/freebsd-x64": "0.25.5", + "@esbuild/linux-arm": "0.25.5", + "@esbuild/linux-arm64": "0.25.5", + "@esbuild/linux-ia32": "0.25.5", + "@esbuild/linux-loong64": "0.25.5", + "@esbuild/linux-mips64el": "0.25.5", + "@esbuild/linux-ppc64": "0.25.5", + "@esbuild/linux-riscv64": "0.25.5", + "@esbuild/linux-s390x": "0.25.5", + "@esbuild/linux-x64": "0.25.5", + "@esbuild/netbsd-arm64": "0.25.5", + "@esbuild/netbsd-x64": "0.25.5", + "@esbuild/openbsd-arm64": "0.25.5", + "@esbuild/openbsd-x64": "0.25.5", + "@esbuild/sunos-x64": "0.25.5", + "@esbuild/win32-arm64": "0.25.5", + "@esbuild/win32-ia32": "0.25.5", + "@esbuild/win32-x64": "0.25.5" } }, "node_modules/tunnel-agent": { @@ -34527,6 +21329,11 @@ "node": "*" } }, + "node_modules/tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==" + }, "node_modules/type": { "version": "2.7.3", "resolved": "https://registry.npmjs.org/type/-/type-2.7.3.tgz", @@ -34537,6 +21344,7 @@ "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" @@ -34549,6 +21357,7 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.1.0.tgz", "integrity": "sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==", + "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -34558,6 +21367,7 @@ "version": "0.20.2", "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" @@ -34652,69 +21462,24 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typedarray": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.7.tgz", + "integrity": "sha512-ueeb9YybpjhivjbHP2LdFDAjbS948fGEPj+ACAMs4xCMmh72OCOMQWBQKlaN4ZNQ04yfLSDLSx1tGRIoWimObQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/typedarray-to-buffer": { "version": "3.1.5", "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, "license": "MIT", "dependencies": { "is-typedarray": "^1.0.0" } }, - "node_modules/typedoc": { - "version": "0.23.28", - "resolved": "https://registry.npmjs.org/typedoc/-/typedoc-0.23.28.tgz", - "integrity": "sha512-9x1+hZWTHEQcGoP7qFmlo4unUoVJLB0H/8vfO/7wqTnZxg4kPuji9y3uRzEu0ZKez63OJAUmiGhUrtukC6Uj3w==", - "license": "Apache-2.0", - "dependencies": { - "lunr": "^2.3.9", - "marked": "^4.2.12", - "minimatch": "^7.1.3", - "shiki": "^0.14.1" - }, - "bin": { - "typedoc": "bin/typedoc" - }, - "engines": { - "node": ">= 14.14" - }, - "peerDependencies": { - "typescript": "4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x" - } - }, - "node_modules/typedoc-plugin-mdn-links": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/typedoc-plugin-mdn-links/-/typedoc-plugin-mdn-links-2.0.2.tgz", - "integrity": "sha512-Fzjvfsj3rxvmZNqWRvq9JTGBkOkrPp0kBtvJCJ4U5Jm14OF1KoRErtmwgVQcPLA5Xs8h5I/W4uZBaL8SDHsgxQ==", - "license": "MIT", - "peerDependencies": { - "typedoc": "0.22.x || 0.23.x" - } - }, - "node_modules/typedoc-plugin-missing-exports": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/typedoc-plugin-missing-exports/-/typedoc-plugin-missing-exports-1.0.0.tgz", - "integrity": "sha512-7s6znXnuAj1eD9KYPyzVzR1lBF5nwAY8IKccP5sdoO9crG4lpd16RoFpLsh2PccJM+I2NASpr0+/NMka6ThwVA==", - "license": "MIT", - "peerDependencies": { - "typedoc": "0.22.x || 0.23.x" - } - }, - "node_modules/typedoc/node_modules/minimatch": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-7.4.6.tgz", - "integrity": "sha512-sBz8G/YjVniEz6lKPNpKxXwazJe4c19fEfV2GDMX6AjFz+MX9uDWIZW8XreVhkFW3fkIdTv/gxWr/Kks5FFAVw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/typescript": { "version": "4.9.5", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", @@ -34821,15 +21586,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/unc-path-regex": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/unc-path-regex/-/unc-path-regex-0.1.2.tgz", - "integrity": "sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/undici": { "version": "5.28.4", "resolved": "https://registry.npmjs.org/undici/-/undici-5.28.4.tgz", @@ -34848,46 +21604,6 @@ "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", "license": "MIT" }, - "node_modules/unicode-canonical-property-names-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-canonical-property-names-ecmascript/-/unicode-canonical-property-names-ecmascript-2.0.0.tgz", - "integrity": "sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-ecmascript": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-ecmascript/-/unicode-match-property-ecmascript-2.0.0.tgz", - "integrity": "sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==", - "license": "MIT", - "dependencies": { - "unicode-canonical-property-names-ecmascript": "^2.0.0", - "unicode-property-aliases-ecmascript": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-match-property-value-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-match-property-value-ecmascript/-/unicode-match-property-value-ecmascript-2.1.0.tgz", - "integrity": "sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/unicode-property-aliases-ecmascript": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/unicode-property-aliases-ecmascript/-/unicode-property-aliases-ecmascript-2.1.0.tgz", - "integrity": "sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, "node_modules/unicorn-magic": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", @@ -34901,12 +21617,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/uniq": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/uniq/-/uniq-1.0.1.tgz", - "integrity": "sha512-Gw+zz50YNKPDKXs+9d+aKAjVwpjNwqzvNpLigIruT4HA9lMZNdMqs9x07kKHB/L9WRzqp4+DlTU5s4wG2esdoA==", - "license": "MIT" - }, "node_modules/unique-filename": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", @@ -34929,78 +21639,25 @@ }, "node_modules/unique-string": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", - "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-stringify-position": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", - "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", - "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", - "license": "MIT", - "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^5.1.1" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/unist-util-visit-parents": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", - "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, "license": "MIT", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "crypto-random-string": "^4.0.0" + }, + "engines": { + "node": ">=12" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/universal-user-agent": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true, "license": "ISC" }, "node_modules/universalify": { @@ -35025,6 +21682,7 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, "funding": [ { "type": "opencollective", @@ -35051,104 +21709,11 @@ "browserslist": ">= 4.21.0" } }, - "node_modules/update-notifier": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-6.0.2.tgz", - "integrity": "sha512-EDxhTEVPZZRLWYcJ4ZXjGFN0oP7qYvbXWzEgRm/Yql4dHX5wDbvh89YHP6PK1lzZJYrMtXUuZZz8XGK+U6U1og==", - "license": "BSD-2-Clause", - "dependencies": { - "boxen": "^7.0.0", - "chalk": "^5.0.1", - "configstore": "^6.0.0", - "has-yarn": "^3.0.0", - "import-lazy": "^4.0.0", - "is-ci": "^3.0.1", - "is-installed-globally": "^0.4.0", - "is-npm": "^6.0.0", - "is-yarn-global": "^0.4.0", - "latest-version": "^7.0.0", - "pupa": "^3.1.0", - "semver": "^7.3.7", - "semver-diff": "^4.0.0", - "xdg-basedir": "^5.1.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/yeoman/update-notifier?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/chalk": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", - "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/update-notifier/node_modules/ci-info": { - "version": "3.9.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", - "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/update-notifier/node_modules/is-ci": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", - "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", - "license": "MIT", - "dependencies": { - "ci-info": "^3.2.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "node_modules/update-notifier/node_modules/semver-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", - "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", - "license": "MIT", - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/update-notifier/node_modules/xdg-basedir": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", - "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, "license": "BSD-2-Clause", "dependencies": { "punycode": "^2.1.0" @@ -35208,93 +21773,29 @@ } }, "node_modules/uuid": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.1.tgz", - "integrity": "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==", + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", + "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", "funding": [ "https://github.com/sponsors/broofa", "https://github.com/sponsors/ctavan" ], - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/uvu": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", - "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.0", - "diff": "^5.0.0", - "kleur": "^4.0.3", - "sade": "^1.7.3" - }, "bin": { - "uvu": "bin.js" - }, - "engines": { - "node": ">=8" + "uuid": "dist/esm/bin/uuid" } }, - "node_modules/v8-compile-cache": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", - "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "license": "MIT" - }, "node_modules/v8-compile-cache-lib": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", "license": "MIT" }, - "node_modules/v8-to-istanbul": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", - "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", - "license": "ISC", - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.12", - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^2.0.0" - }, - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/v8-to-istanbul/node_modules/convert-source-map": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "license": "MIT" - }, "node_modules/validate-iri": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/validate-iri/-/validate-iri-1.0.1.tgz", "integrity": "sha512-gLXi7351CoyVVQw8XE5sgpYawRKatxE7kj/xmCxXOZS1kMdtcqC0ILIqLuVEVnAUQSL/evOGG3eQ+8VgbdnstA==", "license": "MIT" }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/validator": { "version": "13.12.0", "resolved": "https://registry.npmjs.org/validator/-/validator-13.12.0.tgz", @@ -35319,31 +21820,67 @@ "node": ">= 0.8" } }, - "node_modules/version-guard": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/version-guard/-/version-guard-1.1.2.tgz", - "integrity": "sha512-D8d+YxCUpoqtCnQzDxm6SF7DLU3gr2535T4khAtMq4osBahsQnmSxuwXFdrbAdDGG8Uokzfis/jvyeFPdmlc7w==", - "license": "0BSD", + "node_modules/vasync": { + "version": "1.6.4", + "resolved": "https://registry.npmjs.org/vasync/-/vasync-1.6.4.tgz", + "integrity": "sha512-3oQMomVgQgHzNe5iKuT8PGOhMCQcg1wfh00Nh/Kl39ERdTlw/uNS7kbrhEraDMDKWHdDdc0iBFahPEd/Ft2b+A==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "verror": "1.6.0" + } + }, + "node_modules/vasync/node_modules/extsprintf": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.2.0.tgz", + "integrity": "sha512-T3PYC6HucmF4OfunfZb5d1nRvTSvWYhsr/Og33HANcCuCtGPUtWVyt/tTs8SU9sR0SGh5Z/xQCuX/D72ph2H+A==", + "engines": [ + "node >=0.6.0" + ] + }, + "node_modules/vasync/node_modules/verror": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.6.0.tgz", + "integrity": "sha512-bIOaZx4+Bf6a7sIORfmYnyKLDLk/lhVym6rjYlq+vkitYKnhFmUpmPpDTCltWFrUTlGKs6sCeoDWfMA0oOOneA==", + "engines": [ + "node >=0.6.0" + ], + "dependencies": { + "extsprintf": "1.2.0" + } + }, + "node_modules/verror": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.1.tgz", + "integrity": "sha512-veufcmxri4e3XSrT0xwfUR7kguIkaxBeosDg00yDWhk49wdwkSUrvvsm7nc75e1PUyvIeZj6nS8VQRYz2/S4Xg==", + "dependencies": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + }, "engines": { - "node": ">=0.10.48" + "node": ">=0.6.0" } }, - "node_modules/vscode-oniguruma": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/vscode-oniguruma/-/vscode-oniguruma-1.7.0.tgz", - "integrity": "sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==", - "license": "MIT" + "node_modules/verror/node_modules/assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==", + "engines": { + "node": ">=0.8" + } }, - "node_modules/vscode-textmate": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/vscode-textmate/-/vscode-textmate-8.0.0.tgz", - "integrity": "sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==", - "license": "MIT" + "node_modules/verror/node_modules/core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==" }, "node_modules/wcwidth": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, "license": "MIT", "dependencies": { "defaults": "^1.0.3" @@ -35393,12 +21930,14 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "dev": true, "license": "BSD-2-Clause" }, "node_modules/whatwg-url": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dev": true, "license": "MIT", "dependencies": { "tr46": "~0.0.3", @@ -35453,6 +21992,7 @@ "version": "1.1.4", "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, "license": "MIT", "dependencies": { "function.prototype.name": "^1.1.6", @@ -35479,6 +22019,7 @@ "version": "1.0.2", "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, "license": "MIT", "dependencies": { "is-map": "^2.0.3", @@ -35497,6 +22038,7 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", + "dev": true, "license": "ISC" }, "node_modules/which-typed-array": { @@ -35532,6 +22074,7 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, "license": "MIT", "dependencies": { "string-width": "^5.0.1" @@ -35547,6 +22090,7 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "license": "MIT", "engines": { "node": ">=12" @@ -35559,12 +22103,14 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true, "license": "MIT" }, "node_modules/widest-line/node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, "license": "MIT", "dependencies": { "eastasianwidth": "^0.2.0", @@ -35582,6 +22128,7 @@ "version": "7.1.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "license": "MIT", "dependencies": { "ansi-regex": "^6.0.1" @@ -35838,6 +22385,7 @@ "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -35862,62 +22410,48 @@ "version": "6.5.1", "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.5.1.tgz", "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==", + "dev": true, "license": "Apache-2.0" }, - "node_modules/wrap-ansi": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-3.0.1.tgz", - "integrity": "sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==", - "license": "MIT", + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, "dependencies": { - "string-width": "^2.1.1", - "strip-ansi": "^4.0.0" + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" }, "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.1.tgz", - "integrity": "sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", - "license": "MIT", - "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", - "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, + "node_modules/wrap-ansi-cjs/node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", - "license": "MIT", + "node_modules/wrap-ansi-cjs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, "dependencies": { - "ansi-regex": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" + "node": ">=8" } }, "node_modules/wrappy": { @@ -35930,6 +22464,7 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", @@ -35959,13 +22494,12 @@ } } }, - "node_modules/xdg-basedir": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-4.0.0.tgz", - "integrity": "sha512-PSNhEJDejZYV7h50BohL09Er9VaIefr2LMAf3OEmpCkjOi34eYyQYAXUTjEQtZJTKcF0E2UKTh+osDLsgNim9Q==", - "license": "MIT", + "node_modules/www-authenticate": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/www-authenticate/-/www-authenticate-0.6.3.tgz", + "integrity": "sha512-8VkdLBJiBh5aXlJvcVaPykwSI//OA+Sxw7g84vIyCqoqlXtLupGNhyXxbgVuZ7g5ZS+lCJ4bTtcw/gJciqEuAg==", "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, "node_modules/xml2js": { @@ -35996,15 +22530,6 @@ "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", "license": "MIT" }, - "node_modules/xtend": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", - "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", @@ -36020,15 +22545,6 @@ "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "license": "ISC" }, - "node_modules/yaml": { - "version": "1.10.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", - "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", - "license": "ISC", - "engines": { - "node": ">= 6" - } - }, "node_modules/yamljs": { "version": "0.3.0", "resolved": "https://registry.npmjs.org/yamljs/-/yamljs-0.3.0.tgz", @@ -36132,6 +22648,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "dev": true, "license": "MIT", "dependencies": { "camelcase": "^6.0.0", @@ -36147,6 +22664,7 @@ "version": "6.3.0", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -36159,6 +22677,7 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -36190,29 +22709,11 @@ "node": ">=8" } }, - "node_modules/yauzl": { - "version": "2.10.0", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", - "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", - "license": "MIT", - "dependencies": { - "buffer-crc32": "~0.2.3", - "fd-slicer": "~1.1.0" - } - }, - "node_modules/yn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yn/-/yn-4.0.0.tgz", - "integrity": "sha512-huWiiCS4TxKc4SfgmTwW1K7JmXPPAmuXWYy4j9qjQo4+27Kni8mGhAAi1cloRWmBe2EqcLgt3IGqQoRL/MtPgg==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, "license": "MIT", "engines": { "node": ">=10" @@ -36233,16 +22734,6 @@ "funding": { "url": "https://github.com/sponsors/sindresorhus" } - }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } } } } diff --git a/package.json b/package.json index 64039055f..671a0420f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "ocean-node", - "version": "0.2.0", + "version": "0.2.3", "description": "Ocean Node is used to run all core services in the Ocean stack", "author": "Ocean Protocol Foundation", "license": "Apache-2.0", @@ -10,16 +10,14 @@ "url": "https://github.com/oceanprotocol/ocean-node/issues" }, "scripts": { - "build": "npm run clean && npm run check-changes && npm run build:tsc", - "build:no-dashboard": "npm run clean && npm run build:tsc", + "build": "npm run clean && npm run build:tsc", "build:tsc": "tsc --sourceMap", + "build:controlpanel": "cd controlpanel && npm install --maxsockets 1 && NODE_ENV=production npx next build", "quickstart": "bash scripts/ocean-node-quickstart.sh", "setupEnv": "bash -c './src/helpers/scripts/setupNodeEnv.sh && source .env'", "build-tests:tsc": "tsc --sourceMap --sourceRoot ./src/test && cp ./src/test/.env.test ./dist/test", - "build:dashboard": "cd dashboard && npm install --maxsockets 1 && NODE_ENV=production npx next build", - "check-changes": "node scripts/dashboardChanges.js", "client": "mkdir -p ./dist/helpers/scripts/output && node dist/helpers/scripts/clientExample.js", - "clean": "if [ -d ./dist ]; then find ./dist -mindepth 1 -not -path './dist/dashboard*' -delete; fi", + "clean": "if [ -d ./dist ]; then find ./dist -mindepth 1 -not -path './dist/controlpanel*' -delete; fi", "clean:all": "rm -rf ./dist/ ./doc/ ./.nyc_output", "build-tests": "rm -rf ./dist/test && npm run build-tests:tsc", "start": "node --max-old-space-size=28784 --trace-warnings --experimental-specifier-resolution=node dist/index.js", @@ -33,6 +31,8 @@ "test": "npm run lint && npm run test:unit:cover && npm run test:integration:cover", "test:unit": "npm run build-tests && npm run mocha \"./dist/test/unit/**/*.test.js\"", "test:integration": "npm run build-tests && npm run mocha \"./dist/test/integration/**/*.test.js\"", + "test:computeunit": "npm run build-tests && npm run mocha \"./dist/test/unit/compute.test.js\"", + "test:computeintegration": "npm run build-tests && npm run mocha \"./dist/test/integration/compute.test.js\"", "test:indexer": "npm run build-tests && npm run mocha \"./dist/test/integration/indexer.test.js\"", "test:integration:light": "npm run build-tests && npm run mocha-light \"./dist/test/integration/**/*.test.js\"", "test:unit:cover": "nyc --report-dir coverage/unit npm run test:unit", @@ -73,25 +73,16 @@ "@libp2p/upnp-nat": "^1.2.1", "@libp2p/websockets": "^8.1.1", "@multiformats/multiaddr": "^10.2.0", - "@oceanprotocol/contracts": "^2.2.0", - "@oceanprotocol/ddo-js": "^0.0.1-next.7", - "@rdfjs/dataset": "^2.0.1", - "@rdfjs/types": "^1.1.0", + "@oceanprotocol/contracts": "^2.3.0", + "@oceanprotocol/ddo-js": "^0.1.1", "@types/lodash.clonedeep": "^4.5.7", - "@types/n3": "^1.16.4", - "@types/rdf-ext": "^2.2.5", - "@types/rdf-utils-fs": "^2.1.5", - "@types/rdfjs__data-model": "^2.0.7", - "@types/rdfjs__dataset": "^2.0.7", - "@types/rdfjs__parser-jsonld": "^2.1.6", - "@types/rdfjs__to-ntriples": "^2.0.6", - "@zazuko/env-node": "^2.1.3", - "aegir": "^37.3.0", "aws-sdk": "^2.1591.0", - "axios": "^1.7.4", + "axios": "^1.8.4", "base58-js": "^2.0.0", "cors": "^2.8.5", "delay": "^5.0.0", + "docker-registry-client": "^3.4.0", + "dockerode": "^4.0.5", "dotenv": "^16.3.1", "eciesjs": "^0.4.5", "eth-crypto": "^2.6.0", @@ -103,20 +94,16 @@ "libp2p": "^1.8.0", "lodash.clonedeep": "^4.5.0", "lzma-purejs-requirejs": "^1.0.0", - "n3": "^1.17.2", "node-cron": "^3.0.3", "private-ip": "^3.0.2", - "rdf-utils-fs": "^3.0.0", - "rdf-validate-shacl": "^0.5.5", - "rdflib": "^2.2.33", - "shacl-engine": "^0.1.2", - "sinon": "^17.0.1", "sqlite3": "^5.1.7", "stream-concat": "^1.0.0", + "tar": "^7.4.3", "ts-node": "^10.9.1", "tsoa": "^5.1.1", "uint8arrays": "^4.0.6", "url-join": "^5.0.0", + "uuid": "^11.1.0", "winston": "^3.11.0", "winston-daily-rotate-file": "^4.7.1", "winston-transport": "^4.6.0" @@ -124,13 +111,15 @@ "devDependencies": { "@types/chai": "^4.3.10", "@types/cors": "^2.8.17", + "@types/dockerode": "^3.3.31", "@types/express": "^4.17.17", "@types/ip": "^1.1.3", "@types/lzma-native": "^4.0.4", - "@types/mocha": "^10.0.4", + "@types/mocha": "^10.0.10", "@types/node": "^20.14.2", "@types/node-cron": "^3.0.11", "@types/rdfjs__formats-common": "^3.1.5", + "@types/sinon": "^17.0.4", "@typescript-eslint/eslint-plugin": "^6.8.0", "@typescript-eslint/parser": "^6.8.0", "auto-changelog": "^2.4.0", @@ -141,10 +130,12 @@ "eslint-config-prettier": "^9.0.0", "eslint-plugin-prettier": "^5.0.1", "eslint-plugin-promise": "^6.1.1", - "mocha": "^10.2.0", + "mocha": "^11.1.0", + "nyc": "^17.1.0", "prettier": "^3.0.3", "release-it": "^17.6.0", - "tsx": "^3.12.8" + "sinon": "^19.0.2", + "tsx": "^4.19.3" }, "release-it": { "hooks": { diff --git a/scripts/dashboard.hash b/scripts/dashboard.hash deleted file mode 100644 index 798ea7264..000000000 --- a/scripts/dashboard.hash +++ /dev/null @@ -1 +0,0 @@ -b567946811627eaca026072c8912bf187541d0401138b68e4c29bd5f1a2057f3 \ No newline at end of file diff --git a/scripts/dashboardChanges.js b/scripts/dashboardChanges.js deleted file mode 100644 index 046148968..000000000 --- a/scripts/dashboardChanges.js +++ /dev/null @@ -1,93 +0,0 @@ -import { execSync } from 'child_process' -import { - existsSync, - readFileSync, - writeFileSync, - readdirSync, - statSync, - rmSync -} from 'fs' -import { createHash } from 'crypto' -import { join, dirname } from 'path' -import { fileURLToPath } from 'url' - -const __filename = fileURLToPath(import.meta.url) -const __dirname = dirname(__filename) - -// Directory to check for changes -const dashboardDir = join(__dirname, '../dashboard') -const distDir = join(__dirname, '../dist') -const hashFile = join(__dirname, 'dashboard.hash') - -// Directories to exclude from the hash calculation -const excludeDirs = ['.next', 'node_modules'] - -// Function to calculate hash of a directory recursively -function calculateHash(directory) { - const hash = createHash('sha256') - const files = getAllFiles(directory) - files.forEach((file) => { - hash.update(readFileSync(file)) - }) - return hash.digest('hex') -} - -// Function to get all files in a directory recursively -function getAllFiles(directory) { - const filesInDirectory = readdirSync(directory) - let allFiles = [] - filesInDirectory.forEach((file) => { - const absolute = join(directory, file) - if (excludeDirs.includes(file)) { - return - } - if (statSync(absolute).isDirectory()) { - allFiles = allFiles.concat(getAllFiles(absolute)) - } else { - allFiles.push(absolute) - } - }) - return allFiles -} - -// Function to check if there are changes in the directory -function hasChanges() { - const currentHash = calculateHash(dashboardDir) - if (existsSync(hashFile)) { - const previousHash = readFileSync(hashFile, 'utf-8') - if (previousHash === currentHash) { - return false - } - } - writeFileSync(hashFile, currentHash) - return true -} - -// Function to clean the dist directory except the dashboard folder -function cleanDistDirectory() { - if (!existsSync(distDir)) { - return - } - - const files = readdirSync(distDir) - files.forEach((file) => { - const filePath = join(distDir, file) - if (filePath !== join(distDir, 'dashboard')) { - if (statSync(filePath).isDirectory()) { - rmSync(filePath, { recursive: true, force: true }) - } else { - rmSync(filePath) - } - } - }) -} - -if (hasChanges()) { - console.log( - 'Changes detected in the dashboard. Cleaning old build and running Next.js build...' - ) - cleanDistDirectory() - execSync('cd dashboard && npm install && npx next build', { stdio: 'inherit' }) -} else { - console.log('No changes detected in the dashboard. Skipping Next.js build.') -} diff --git a/scripts/ocean-node-quickstart.sh b/scripts/ocean-node-quickstart.sh index 4c3085338..4993d993f 100755 --- a/scripts/ocean-node-quickstart.sh +++ b/scripts/ocean-node-quickstart.sh @@ -121,6 +121,29 @@ else echo "No input provided, the Ocean Node might not be accessible from other nodes." fi +read -p "Do you want to run docker C2D jobs on your Ocean Node [ y/n ]: " run_c2d_jobs + +if [ "$run_c2d_jobs" == "y" ]; then + echo "########################################################" + echo "### Docker Engine Compute Environments Configuration ###" + echo "########################################################" + echo "Check 'ComputeEnvironment' definition for more details on the format" + echo "_____________________________________________________" + echo "" + read -p "Do you want to add a specific docker environment configuration? + (Hint: You can enter multiple in JSON format) [ y/n ]: " c2d_env + if [ "$c2d_env" == "y" ]; then + read -p "Enter the array of docker environment(s): " DOCKER_COMPUTE_ENVIRONMENTS + fi +else + echo "Running node without docker C2D capabilities!" +fi + +# Set default compute environments if not already defined +if [ -z "$DOCKER_COMPUTE_ENVIRONMENTS" ]; then + echo "Setting default DOCKER_COMPUTE_ENVIRONMENTS configuration" + export DOCKER_COMPUTE_ENVIRONMENTS="[{\"socketPath\":\"/var/run/docker.sock\",\"resources\":[{\"id\":\"disk\",\"total\":1000000000}],\"storageExpiry\":604800,\"maxJobDuration\":36000,\"fees\":{\"1\":[{\"feeToken\":\"0x123\",\"prices\":[{\"id\":\"cpu\",\"price\":1}]}]},\"free\":{\"maxJobDuration\":360000,\"maxJobs\":3,\"resources\":[{\"id\":\"cpu\",\"max\":1},{\"id\":\"ram\",\"max\":1000000000},{\"id\":\"disk\",\"max\":1000000000}]}}]" +fi cat < docker-compose.yml services: @@ -147,15 +170,22 @@ services: # ADDRESS_FILE: '' # NODE_ENV: '' # AUTHORIZED_DECRYPTERS: '' +# AUTHORIZED_DECRYPTERS_LIST: '' # OPERATOR_SERVICE_URL: '' +# POLICY_SERVER_URL: '' INTERFACES: '["HTTP","P2P"]' # ALLOWED_VALIDATORS: '' +# ALLOWED_VALIDATORS_LIST: '' +# AUTHORIZED_PUBLISHERS: '' +# AUTHORIZED_PUBLISHERS_LIST: '' # INDEXER_NETWORKS: '[]' ALLOWED_ADMINS: '["$ALLOWED_ADMINS"]' +# ALLOWED_ADMINS_LIST: '' # INDEXER_INTERVAL: '' - DASHBOARD: 'true' + CONTROL_PANEL: 'true' # RATE_DENY_LIST: '' -# MAX_REQ_PER_SECOND: '' +# MAX_REQ_PER_MINUTE: '' +# MAX_CONNECTIONS_PER_MINUTE: '' # MAX_CHECKSUM_LENGTH: '' # LOG_LEVEL: '' HTTP_API_PORT: '$HTTP_API_PORT' @@ -181,8 +211,13 @@ services: # P2P_ENABLE_CIRCUIT_RELAY_CLIENT: '' # P2P_BOOTSTRAP_NODES: '' # P2P_FILTER_ANNOUNCED_ADDRESSES: '' + DOCKER_COMPUTE_ENVIRONMENTS: '$DOCKER_COMPUTE_ENVIRONMENTS' + networks: - ocean_network + volumes: + - node-sqlite:/usr/src/app/databases + - /var/run/docker.sock:/var/run/docker.sock depends_on: - typesense @@ -200,6 +235,8 @@ services: volumes: typesense-data: driver: local + node-sqlite: + driver: local networks: ocean_network: diff --git a/scripts/ocean-node-update.sh b/scripts/ocean-node-update.sh new file mode 100755 index 000000000..b72804d9a --- /dev/null +++ b/scripts/ocean-node-update.sh @@ -0,0 +1,74 @@ +#!/bin/bash + +DEFAULT_DOCKER_ENVIRONMENTS='[{"socketPath":"/var/run/docker.sock","resources":[{"id":"disk","total":1000000000}],"storageExpiry":604800,"maxJobDuration":36000,"fees":{"1":[{"feeToken":"0x123","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":360000,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1000000000},{"id":"disk","max":1000000000}]}}]' + +check_prerequisites() { + if [ ! -f "docker-compose.yml" ]; then + echo "Error: docker-compose.yml not found in current directory" + exit 1 + fi +} + +configure_c2d() { + if grep -q "DOCKER_COMPUTE_ENVIRONMENTS:" docker-compose.yml; then + echo "DOCKER_COMPUTE_ENVIRONMENTS: configuration already exists" + else + echo "Adding Docker Compute Environment configuration..." + read -p "Do you want to run docker C2D jobs on your Ocean Node [ y/n ]: " run_c2d_jobs + + if [ "$run_c2d_jobs" == "y" ]; then + add_c2d_configuration + else + echo "Skipping C2D configuration" + fi + fi +} + +add_c2d_configuration() { + echo "########################################################" + echo "### Docker Engine Compute Environments Configuration ###" + echo "########################################################" + echo "Check 'ComputeEnvironment' definition for more details on the format" + echo "_____________________________________________________" + echo "" + + local docker_environments="$DEFAULT_DOCKER_ENVIRONMENTS" + read -p "Do you want to add a specific docker environment configuration? (Hint: You can enter multiple in JSON format) [ y/n ]: " c2d_env + + if [ "$c2d_env" == "y" ]; then + read -p "Enter the array of docker environment(s): " user_input + if [ ! -z "$user_input" ]; then + docker_environments="$user_input" + fi + else + echo "Setting default DOCKER_COMPUTE_ENVIRONMENTS configuration" + fi + + update_docker_compose "$docker_environments" +} + +update_docker_compose() { + local docker_environments="$1" + sed -i '/environment:/,/^[^ ]/ { + /^[^ ]/i\ DOCKER_COMPUTE_ENVIRONMENTS: '"'$docker_environments'"' + }' docker-compose.yml + + if ! grep -q "/var/run/docker.sock:/var/run/docker.sock" docker-compose.yml; then + sed -i '/restart: on-failure/a\ volumes:\n - /var/run/docker.sock:/var/run/docker.sock' docker-compose.yml + fi + + echo "Added C2D configuration and Docker socket mount to docker-compose.yml" +} + +show_completion_message() { + echo -e "\n\e[1;32mUpdate completed successfully!\e[0m" + echo "Your docker-compose.yml has been updated with new configurations" + echo -e "To apply the changes, run: \e[1;32mdocker-compose up -d\e[0m" +} + +main() { + check_prerequisites + configure_c2d +} + +main \ No newline at end of file diff --git a/src/@types/Asset.ts b/src/@types/Asset.ts index 8ac434849..a41c666cf 100644 --- a/src/@types/Asset.ts +++ b/src/@types/Asset.ts @@ -1,176 +1,3 @@ -import { DDO } from './DDO/DDO' - -export interface AssetNft { - /** - * Contract address of the deployed ERC721 NFT contract. - * @type {string} - */ - address: string - - /** - * Name of NFT set in contract. - * @type {string} - */ - name: string - - /** - * Symbol of NFT set in contract. - * @type {string} - */ - symbol: string - - /** - * ETH account address of the NFT owner. - * @type {string} - */ - owner: string - - /** - * State of the asset reflecting the NFT contract value. - * 0 Active. - * 1 End-of-life. - * 2 Deprecated (by another asset). - * 3 Revoked by publisher. - * 4 Ordering is temporary disabled. - * 5 Unlisted in markets. - * @type {number} - */ - state: 0 | 1 | 2 | 3 | 4 | 5 - - /** - * Contains the date of NFT creation. - * @type {string} - */ - created: string - - /** - * NFT token URI. - * @type {string} - */ - tokenURI: string -} - -export interface Purgatory { - /** - * If `true`, asset is in purgatory. - * @type {boolean} - */ - state: boolean - - /** - * If asset is in purgatory, contains the reason for being there as defined in `list-purgatory`. - * @type {string} - */ - reason: string -} - -export interface AssetDatatoken { - /** - * Contract address of the deployed Datatoken contract. - * @type {string} - */ - address: string - - /** - * Name of NFT set in contract. - * @type {string} - */ - name: string - - /** - * Symbol of NFT set in contract. - * @type {string} - */ - symbol: string - - /** - * ID of the service the datatoken is attached to. - * @type {string} - */ - serviceId: string -} - -export interface AssetPrice { - /** - * The price of the asset expressed as a number. If 0 then the price is FREE. - * @type {number} - */ - value: number - - /** - * The symbol that the price of the asset is expressed in. - * @type {string} - */ - tokenSymbol?: string - - /** - * The address of the token that the price needs to be paid in. - * @type {string} - */ - tokenAddress?: string -} -export interface Stats { - /** - * How often an asset was consumed, meaning how often it was either downloaded or used as part of a compute job. - * @type {number} - */ - orders: number - - /** - * Contains information about the price of this asset. - * @type {AssetPrice} - */ - price: AssetPrice - - /** - * Total amount of veOCEAN allocated on this asset. - * @type {number} - */ - allocated?: number -} - -export interface AssetLastEvent { - tx: string - block: number - from: string - contract: string - datetime: string -} - -export interface Asset extends DDO { - /** - * Contains information about the ERC721 NFT contract which represents the intellectual property of the publisher. - * @type {string} - */ - nft: AssetNft - - /** - * Contains information about the ERC20 Datatokens attached to asset services. - * @type {string} - */ - datatokens: AssetDatatoken[] - - /** - * Contains information about the last transaction that created or updated the DDO. - * @type {string} - */ - event: AssetLastEvent - - /** - * The stats section contains different statistics fields. This section is added by Aquarius - * @type {Stats} - */ - stats: Stats - - /** - * Contains information about an asset's purgatory status defined in - * [`list-purgatory`](https://github.com/oceanprotocol/list-purgatory). - * Marketplace interfaces are encouraged to prevent certain user actions like downloading on assets in purgatory. - * @type {Purgatory} - */ - purgatory: Purgatory -} - export interface OrdableAssetResponse { isOrdable: boolean reason?: string diff --git a/src/@types/C2D.ts b/src/@types/C2D.ts deleted file mode 100644 index f1297ca22..000000000 --- a/src/@types/C2D.ts +++ /dev/null @@ -1,199 +0,0 @@ -import type { MetadataAlgorithm } from './DDO/Metadata.js' - -export enum C2DClusterType { - // eslint-disable-next-line no-unused-vars - OPF_K8 = 0, - // eslint-disable-next-line no-unused-vars - NODE_LOCAL = 1 -} - -export interface C2DClusterInfo { - /** Type of cluster: K8, Node local, etc */ - type: C2DClusterType - /** Hash of cluster. hash(url) for remote, hash(nodeId) for local */ - hash: string - /** Connection URI */ - connection?: string -} - -export interface ComputeEnvironment { - id: string - cpuNumber: number - cpuType: string - gpuNumber: number - gpuType: string - ramGB: number - diskGB: number - priceMin: number - desc: string - currentJobs: number - maxJobs: number - consumerAddress: string - storageExpiry: number - maxJobDuration: number - lastSeen: number - chainId?: number - feeToken: string -} - -export interface ComputeEnvByChain { - [chainId: number]: ComputeEnvironment[] -} - -export type ComputeResultType = - | 'algorithmLog' - | 'output' - | 'configrationLog' - | 'publishLog' - -export interface ComputeResult { - filename: string - filesize: number - type: ComputeResultType - index?: number -} - -export interface ComputeJob { - owner: string - did?: string - jobId: string - dateCreated: string - dateFinished: string - status: number - statusText: string - results: ComputeResult[] - inputDID?: string[] - algoDID?: string - agreementId?: string - expireTimestamp: number -} - -export interface ComputeOutput { - publishAlgorithmLog?: boolean - publishOutput?: boolean - providerAddress?: string - providerUri?: string - metadataUri?: string - nodeUri?: string - owner?: string - secretStoreUri?: string - whitelist?: string[] -} - -export interface ComputeAsset { - url?: string - documentId: string - serviceId: string - transferTxId?: string - userdata?: { [key: string]: any } -} - -export interface ComputeAlgorithm { - documentId?: string - serviceId?: string - url?: string - meta?: MetadataAlgorithm - transferTxId?: string - algocustomdata?: { [key: string]: any } - userdata?: { [key: string]: any } -} - -/* The following are specific to OPF_k8 compute engine */ -export interface OPFK8ComputeStageInput { - index: number - id?: string - remote?: any - url?: string[] -} -export interface OPFK8ComputeStageAlgorithm { - id?: string - url?: string - remote?: any - rawcode?: string - container?: { - /** - * The command to execute, or script to run inside the Docker image. - * @type {string} - */ - entrypoint: string - - /** - * Name of the Docker image. - * @type {string} - */ - image: string - - /** - * Tag of the Docker image. - * @type {string} - */ - tag: string - } -} - -export interface OPFK8ComputeOutput { - // this is a copy of ComputeOutput, but they could diverge in the future - publishAlgorithmLog?: boolean - publishOutput?: boolean - providerAddress?: string - providerUri?: string - metadataUri?: string - nodeUri?: string - owner?: string - secretStoreUri?: string - whitelist?: string[] -} -export interface OPFK8ComputeStage { - index: number - input: OPFK8ComputeStageInput[] - algorithm: OPFK8ComputeStageAlgorithm - compute?: {} - output: OPFK8ComputeOutput -} - -export interface OPFK8ComputeWorkflow { - stages: OPFK8ComputeStage[] -} -export interface OPFK8ComputeStart { - workflow: OPFK8ComputeWorkflow - owner: string - agreementId: string - providerSignature: string - providerAddress: string - environment: string - validUntil: number - nonce: number - chainId: number -} - -export interface OPFK8ComputeStop { - jobId: string - owner: string - agreementId?: string - providerSignature: string // message=owner+jobId - providerAddress: string - nonce: number -} - -export interface OPFK8ComputeGetStatus { - agreementId?: string - jobId?: string - owner?: string - providerSignature: string // message=owner+jobId(if any) - providerAddress: string - nonce: number -} - -export interface OPFK8ComputeGetResult { - jobId: string - owner: string - index: number - providerSignature: string // message=owner+jobId - providerAddress: string - nonce: number -} - -export interface AlgoChecksums { - files: string - container: string -} diff --git a/src/@types/C2D/C2D.ts b/src/@types/C2D/C2D.ts new file mode 100644 index 000000000..578c21c15 --- /dev/null +++ b/src/@types/C2D/C2D.ts @@ -0,0 +1,265 @@ +import { MetadataAlgorithm } from '@oceanprotocol/ddo-js' +import type { BaseFileObject } from '../fileObject.js' +export enum C2DClusterType { + // eslint-disable-next-line no-unused-vars + OPF_K8 = 0, + // eslint-disable-next-line no-unused-vars + NODE_LOCAL = 1, + // eslint-disable-next-line no-unused-vars + DOCKER = 2 +} + +export interface C2DClusterInfo { + /** Type of cluster: K8, Node local, etc */ + type: C2DClusterType + /** Hash of cluster. hash(url) for remote, hash(nodeId) for local */ + hash: string + /** Connection URI */ + connection?: any + /** Folder for storing data */ + tempFolder?: string +} + +export type ComputeResourceType = 'cpu' | 'ram' | 'disk' | any + +export interface ComputeResourcesPricingInfo { + id: ComputeResourceType + price: number // price per unit per minute +} + +export interface ComputeResource { + id: ComputeResourceType + type?: string + kind?: string + total: number // total number of specific resource + min: number // min number of resource needed for a job + max: number // max number of resource for a job + inUse?: number // for display purposes +} +export interface ComputeResourceRequest { + id: string + amount: number +} + +export interface ComputeResourceRequestWithPrice extends ComputeResourceRequest { + price?: number // price per unit per minute +} + +export interface ComputeEnvFees { + feeToken: string + prices: ComputeResourcesPricingInfo[] +} +export interface ComputeEnvFeesStructure { + [chainId: string]: ComputeEnvFees[] +} + +export interface RunningPlatform { + architecture: string + os?: string +} + +export interface ComputeEnvironmentFreeOptions { + // only if a compute env exposes free jobs + storageExpiry?: number + maxJobDuration?: number + maxJobs?: number // maximum number of simultaneous free jobs + resources?: ComputeResource[] +} +export interface ComputeEnvironmentBaseConfig { + description?: string // v1 + storageExpiry?: number // amount of seconds for storage + minJobDuration?: number // min billable seconds for a paid job + maxJobDuration?: number // max duration in seconds for a paid job + maxJobs?: number // maximum number of simultaneous paid jobs + fees: ComputeEnvFeesStructure + resources?: ComputeResource[] + free?: ComputeEnvironmentFreeOptions + platform: RunningPlatform +} + +export interface ComputeEnvironment extends ComputeEnvironmentBaseConfig { + id: string // v1 + runningJobs: number + runningfreeJobs?: number + consumerAddress: string // v1 +} + +export interface C2DDockerConfig { + socketPath: string + protocol: string + host: string + port: number + caPath: string + certPath: string + keyPath: string + storageExpiry?: number + maxJobDuration?: number + maxJobs?: number + fees: ComputeEnvFeesStructure + resources?: ComputeResource[] // optional, owner can overwrite + free?: ComputeEnvironmentFreeOptions +} + +export type ComputeResultType = + | 'algorithmLog' + | 'output' + | 'configurationLog' + | 'publishLog' + +export interface ComputeResult { + filename: string + filesize: number + type: ComputeResultType + index?: number +} + +export interface ComputeJob { + owner: string + did?: string + jobId: string + dateCreated: string + dateFinished: string + status: number + statusText: string + results: ComputeResult[] + inputDID?: string[] + algoDID?: string + maxJobDuration?: number + agreementId?: string + environment?: string +} + +export interface ComputeOutput { + publishAlgorithmLog?: boolean + publishOutput?: boolean + providerAddress?: string + providerUri?: string + metadataUri?: string + nodeUri?: string + owner?: string + secretStoreUri?: string + whitelist?: string[] +} + +export interface ComputeAsset { + fileObject?: BaseFileObject + documentId?: string + serviceId?: string + transferTxId?: string + userdata?: { [key: string]: any } +} + +export interface ComputeAlgorithm { + documentId?: string + serviceId?: string + fileObject?: BaseFileObject + meta?: MetadataAlgorithm + transferTxId?: string + algocustomdata?: { [key: string]: any } + userdata?: { [key: string]: any } +} + +export interface AlgoChecksums { + files: string + container: string +} + +export interface DBComputeJobPayment { + chainId: number + token: string + lockTx: string + claimTx: string +} +// this is the internal structure +export interface DBComputeJob extends ComputeJob { + clusterHash: string + configlogURL: string + publishlogURL: string + algologURL: string + outputsURL: string + stopRequested: boolean + algorithm: ComputeAlgorithm + assets: ComputeAsset[] + isRunning: boolean + isStarted: boolean + containerImage: string + isFree: boolean + algoStartTimestamp: string + algoStopTimestamp: string + resources: ComputeResourceRequestWithPrice[] + payment?: DBComputeJobPayment +} + +// make sure we keep them both in sync +export enum C2DStatusNumber { + // eslint-disable-next-line no-unused-vars + JobStarted = 0, + // eslint-disable-next-line no-unused-vars + PullImage = 10, + // eslint-disable-next-line no-unused-vars + PullImageFailed = 11, + // eslint-disable-next-line no-unused-vars + ConfiguringVolumes = 20, + // eslint-disable-next-line no-unused-vars + VolumeCreationFailed = 21, + // eslint-disable-next-line no-unused-vars + ContainerCreationFailed = 22, + // eslint-disable-next-line no-unused-vars + Provisioning = 30, + // eslint-disable-next-line no-unused-vars + DataProvisioningFailed = 31, + // eslint-disable-next-line no-unused-vars + AlgorithmProvisioningFailed = 32, + // eslint-disable-next-line no-unused-vars + DataUploadFailed = 33, + // eslint-disable-next-line no-unused-vars + RunningAlgorithm = 40, + // eslint-disable-next-line no-unused-vars + AlgorithmFailed = 41, + // eslint-disable-next-line no-unused-vars + FilteringResults = 50, + // eslint-disable-next-line no-unused-vars + PublishingResults = 60, + // eslint-disable-next-line no-unused-vars + ResultsFetchFailed = 61, + // eslint-disable-next-line no-unused-vars + ResultsUploadFailed = 62, + // eslint-disable-next-line no-unused-vars + JobFinished = 70 +} +export enum C2DStatusText { + // eslint-disable-next-line no-unused-vars + JobStarted = 'Job started', + // eslint-disable-next-line no-unused-vars + PullImage = 'Pulling algorithm image', + // eslint-disable-next-line no-unused-vars + PullImageFailed = 'Pulling algorithm image failed', + // eslint-disable-next-line no-unused-vars + ConfiguringVolumes = 'Configuring volumes', + // eslint-disable-next-line no-unused-vars + VolumeCreationFailed = 'Volume creation failed', + // eslint-disable-next-line no-unused-vars + ContainerCreationFailed = 'Container creation failed', + // eslint-disable-next-line no-unused-vars + Provisioning = 'Provisioning data', + // eslint-disable-next-line no-unused-vars + DataProvisioningFailed = 'Data provisioning failed', + // eslint-disable-next-line no-unused-vars + AlgorithmProvisioningFailed = 'Algorithm provisioning failed', + // eslint-disable-next-line no-unused-vars + DataUploadFailed = 'Data upload to container failed', + // eslint-disable-next-line no-unused-vars + RunningAlgorithm = 'Running algorithm ', + // eslint-disable-next-line no-unused-vars + AlgorithmFailed = 'Failed to run algorithm', + // eslint-disable-next-line no-unused-vars + FilteringResults = 'Filtering results', + // eslint-disable-next-line no-unused-vars + PublishingResults = 'Publishing results', + // eslint-disable-next-line no-unused-vars + ResultsFetchFailed = 'Failed to get outputs folder from container', + // eslint-disable-next-line no-unused-vars + ResultsUploadFailed = 'Failed to upload results to storage', + // eslint-disable-next-line no-unused-vars + JobFinished = 'Job finished' +} diff --git a/src/@types/C2D/C2D_OPFK8.ts b/src/@types/C2D/C2D_OPFK8.ts new file mode 100644 index 000000000..9c894bd38 --- /dev/null +++ b/src/@types/C2D/C2D_OPFK8.ts @@ -0,0 +1,94 @@ +/* The following are specific to OPF_k8 compute engine */ +export interface OPFK8ComputeStageInput { + index: number + id?: string + remote?: any + url?: string[] +} +export interface OPFK8ComputeStageAlgorithm { + id?: string + url?: string + remote?: any + rawcode?: string + container?: { + /** + * The command to execute, or script to run inside the Docker image. + * @type {string} + */ + entrypoint: string + + /** + * Name of the Docker image. + * @type {string} + */ + image: string + + /** + * Tag of the Docker image. + * @type {string} + */ + tag: string + } +} + +export interface OPFK8ComputeOutput { + // this is a copy of ComputeOutput, but they could diverge in the future + publishAlgorithmLog?: boolean + publishOutput?: boolean + providerAddress?: string + providerUri?: string + metadataUri?: string + nodeUri?: string + owner?: string + secretStoreUri?: string + whitelist?: string[] +} +export interface OPFK8ComputeStage { + index: number + input: OPFK8ComputeStageInput[] + algorithm: OPFK8ComputeStageAlgorithm + compute?: {} + output: OPFK8ComputeOutput +} + +export interface OPFK8ComputeWorkflow { + stages: OPFK8ComputeStage[] +} +export interface OPFK8ComputeStart { + workflow: OPFK8ComputeWorkflow + owner: string + agreementId: string + providerSignature: string + providerAddress: string + environment: string + validUntil: number + nonce: number + chainId: number +} + +export interface OPFK8ComputeStop { + jobId: string + owner: string + agreementId?: string + providerSignature: string // message=owner+jobId + providerAddress: string + nonce: number +} + +export interface OPFK8ComputeGetStatus { + agreementId?: string + jobId?: string + owner?: string + providerSignature: string // message=owner+jobId(if any) + providerAddress: string + nonce: number +} + +export interface OPFK8ComputeGetResult { + jobId: string + owner: string + index: number + providerSignature: string // message=owner+jobId + providerAddress: string + nonce: number +} diff --git a/src/@types/DDO/DDO.ts b/src/@types/DDO/DDO.ts deleted file mode 100644 index 5ca15a406..000000000 --- a/src/@types/DDO/DDO.ts +++ /dev/null @@ -1,70 +0,0 @@ -import { Service } from './Service' -import { Metadata } from './Metadata' -import { Credentials } from './Credentials' -import { Event } from './Event' -import { Nft } from './Nft' - -/** - * DID Descriptor Object. - * Contains metadata about the asset, and define access in at least one service. - */ -export interface DDO { - /** - * Contexts used for validation. - * @type {string[]} - */ - '@context': string[] - - /** - * DID, descentralized ID. - * Computed as sha256(address of NFT contract + chainId) - * @type {string} - */ - id: string - - /** - * Version information in SemVer notation - * referring to the DDO spec version - * @type {string} - */ - version: string - - /** - * NFT contract address - * @type {string} - */ - nftAddress: string - - /** - * ChainId of the network the DDO was published to. - * @type {number} - */ - chainId: number - - /** - * Stores an object describing the asset. - * @type {Metadata} - */ - metadata: Metadata - - /** - * Stores an array of services defining access to the asset. - * @type {Service[]} - */ - services: Service[] - - /** - * Describes the credentials needed to access a dataset - * in addition to the services definition. - * @type {Credentials} - */ - credentials?: Credentials - - /** - * Describes the event of last metadata event - * @type {Event} - */ - event?: Event - - nft?: Nft -} diff --git a/src/@types/DDO/Event.ts b/src/@types/DDO/Event.ts deleted file mode 100644 index 84e75fc4f..000000000 --- a/src/@types/DDO/Event.ts +++ /dev/null @@ -1,31 +0,0 @@ -export interface Event { - /** - * TX id of the last create/update - * @type {string} - */ - txid?: string - - /** - * Block of txid - * @type {number} - */ - block?: number - - /** - * Sender of tx - * @type {String} - */ - from?: string - - /** - * Contract - * @type {String} - */ - contract?: string - - /** - * datetime of tx - * @type {String} - */ - datetime?: string -} diff --git a/src/@types/DDO/Metadata.ts b/src/@types/DDO/Metadata.ts deleted file mode 100644 index e830f4294..000000000 --- a/src/@types/DDO/Metadata.ts +++ /dev/null @@ -1,171 +0,0 @@ -import { ConsumerParameter } from './ConsumerParameter' - -export interface MetadataAlgorithm { - /** - * Programming language used to implement the software. - * @type {string} - */ - language?: string - - /** - * Version of the software preferably in SemVer notation. - * @type {string} - */ - version?: string - - /** - * Rawcode - * @type {string} - */ - rawcode?: string - - /** - * Format - * @type {string} - */ - format?: string - - /** - * Object describing the Docker container image. - * @type {Object} - */ - container?: { - /** - * The command to execute, or script to run inside the Docker image. - * @type {string} - */ - entrypoint: string - - /** - * Name of the Docker image. - * @type {string} - */ - image: string - - /** - * Tag of the Docker image. - * @type {string} - */ - tag: string - - /** - * Checksum of the Docker image. - * @type {string} - */ - checksum: string - - /** - * Array of objects describing the consumer parameters - * @type {ConsumerParameter[]} - */ - consumerParameters?: ConsumerParameter[] - } - - /** - * Array of objects describing the consumer parameters - * @type {ConsumerParameter[]} - */ - consumerParameters?: ConsumerParameter[] -} - -export interface Metadata { - /** - * Contains the date of publishing in ISO Date Time - * @type {string} - */ - created: string - - /** - * Contains the the date of last update in ISO Date Time - * @type {string} - */ - updated: string - - /** - * Descriptive name or title of the asset. - * @type {string} - */ - name: string - - /** - * Details of what the resource is. - * @type {string} - */ - description: string - - /** - * Asset type. Includes "dataset" (e.g. csv file), "algorithm" (e.g. Python script). - * Each type needs a different subset of metadata attributes. - * @type {'dataset' | 'algorithm'} - */ - type: 'dataset' | 'algorithm' - - /** - * Name of the entity generating this data (e.g. Tfl, Disney Corp, etc.). - * @type {string} - */ - author: string - - /** - * Short name referencing the license of the asset. - * If it’s not specified, the following value will be added: “No License Specified”. - * @type {string} - */ - license: string - - /** - * Mapping of URL strings for data samples, or links to find out more information. - * Links may be to either a URL or another asset. - * @type {string[]} - */ - links?: string[] - - /** - * Array of keywords or tags used to describe this content. Empty by default. - * @type {string[]} - */ - tags?: string[] - - /** - * Array of categories associated to the asset. Note: recommended to use tags instead of this. - * @type {string[]} - */ - categories?: string[] - - /** - * The party holding the legal copyright. Empty by default. - * @type {string} - */ - copyrightHolder?: string - - /** - *The language of the content. Use one of the language codes from the IETF BCP 47 standard - * @type {string} - */ - contentLanguage?: string - - /** - * Information about asset of type algorithm. Required for algorithm assets. - * @type {MetadataAlgorithm} - */ - algorithm?: MetadataAlgorithm - - /** - * Stores additional information, this is customizable by publisher - * @type {any} - */ - additionalInformation?: any -} - -export interface MetadataProof { - validatorAddress?: string - r?: string - s?: string - v?: number -} -export interface ValidateMetadata { - valid: Boolean - errors?: Object - hash?: string - proof?: MetadataProof -} diff --git a/src/@types/DDO/Nft.ts b/src/@types/DDO/Nft.ts deleted file mode 100644 index 307756fce..000000000 --- a/src/@types/DDO/Nft.ts +++ /dev/null @@ -1,9 +0,0 @@ -export interface Nft { - state: number - address: string - name?: string - symbol?: string - tokenURI?: string - owner?: string - created?: string -} diff --git a/src/@types/Escrow.ts b/src/@types/Escrow.ts new file mode 100644 index 000000000..9e9aa6b16 --- /dev/null +++ b/src/@types/Escrow.ts @@ -0,0 +1,17 @@ +export interface EscrowAuthorization { + address: string + maxLockedAmount: BigInt + currentLockedAmount: BigInt + maxLockSeconds: BigInt + maxLockCounts: BigInt + currentLocks: BigInt +} + +export interface EscrowLock { + jobId: BigInt + payer: string + payee: string + amount: BigInt + expiry: BigInt + token: string +} diff --git a/src/@types/Fees.ts b/src/@types/Fees.ts index b399abcb8..0759cbe05 100644 --- a/src/@types/Fees.ts +++ b/src/@types/Fees.ts @@ -28,7 +28,6 @@ export interface ProviderFeeData { export interface ProviderFeeValidation { isValid: boolean // true if valid provider fee for download - isComputeValid: boolean // true is valid for compute message: any validUntil: number } @@ -57,7 +56,16 @@ export interface ProviderComputeInitialize { providerFee?: ProviderFees } +export interface ProviderComputeInitializePayment { + escrowAddress: string + payee: string + chainId: number + minLockSeconds: number + token: string + amount: string +} export interface ProviderComputeInitializeResults { algorithm?: ProviderComputeInitialize datasets?: ProviderComputeInitialize[] + payment: ProviderComputeInitializePayment } diff --git a/src/@types/IndexedMetadata.ts b/src/@types/IndexedMetadata.ts new file mode 100644 index 000000000..607c98e4a --- /dev/null +++ b/src/@types/IndexedMetadata.ts @@ -0,0 +1,18 @@ +export type PriceType = 'fixedrate' | 'dispenser' + +export interface ServicePrice { + type: PriceType + price: string + contract: string + token?: string + exchangeId?: string +} + +export interface ServiceStats { + datatokenAddress: string + name: string + symbol: string + serviceId: string + orders?: number + prices?: ServicePrice[] +} diff --git a/src/@types/OceanNode.ts b/src/@types/OceanNode.ts index bc0f9d535..8b5c2ecbe 100644 --- a/src/@types/OceanNode.ts +++ b/src/@types/OceanNode.ts @@ -1,6 +1,6 @@ import { Stream } from 'stream' import { RPCS } from './blockchain' -import { C2DClusterInfo } from './C2D' +import { C2DClusterInfo } from './C2D/C2D' import { FeeStrategy } from './Fees' import { Schema } from '../components/database' @@ -23,7 +23,12 @@ export interface OceanNodeKeys { privateKey: any ethAddress: string } - +/* eslint-disable no-unused-vars */ +export enum dhtFilterMethod { + filterPrivate = 'filterPrivate', // default, remove all private addresses from DHT + filterPublic = 'filterPublic', // remove all public addresses from DHT + filterNone = 'filterNone' // do not remove all any addresses from DHT +} export interface OceanNodeP2PConfig { bootstrapNodes: string[] bootstrapTimeout: number @@ -41,7 +46,7 @@ export interface OceanNodeP2PConfig { pubsubPeerDiscoveryInterval: number dhtMaxInboundStreams: number dhtMaxOutboundStreams: number - enableDHTServer: boolean + dhtFilter: dhtFilterMethod mDNSInterval: number connectionsMaxParallelDials: number connectionsDialTimeout: number @@ -59,6 +64,7 @@ export interface OceanNodeP2PConfig { autoDialConcurrency: number maxPeerAddrsToDial: number autoDialInterval: number + enableNetworkStats: boolean } export interface OceanNodeDockerConfig { @@ -70,30 +76,43 @@ export interface OceanNodeDockerConfig { certPath?: string keyPath?: string } + +export interface AccessListContract { + [chainId: string]: string[] +} + export interface OceanNodeConfig { authorizedDecrypters: string[] + authorizedDecryptersList: AccessListContract | null allowedValidators: string[] + allowedValidatorsList: AccessListContract | null + authorizedPublishers: string[] + authorizedPublishersList: AccessListContract | null keys: OceanNodeKeys hasP2P: boolean p2pConfig: OceanNodeP2PConfig | null hasIndexer: boolean hasHttp: boolean - hasDashboard: boolean + hasControlPanel: boolean dbConfig?: OceanNodeDBConfig httpPort: number feeStrategy: FeeStrategy supportedNetworks?: RPCS + claimDurationTimeout: number indexingNetworks?: RPCS c2dClusters: C2DClusterInfo[] c2dNodeUri: string - dockerConfig?: OceanNodeDockerConfig accountPurgatoryUrl: string assetPurgatoryUrl: string allowedAdmins?: string[] + allowedAdminsList?: AccessListContract | null codeHash?: string - rateLimit?: number + rateLimit?: number // per request ip or peer + maxConnections?: number // global, regardless of client address(es) denyList?: DenyList unsafeURLs?: string[] + isBootstrap?: boolean + validateUnsignedDDO?: boolean } export interface P2PStatusResponse { @@ -138,7 +157,7 @@ export interface OceanNodeStatus { codeHash?: string allowedAdmins?: string[] // detailed information - c2dClusters?: C2DClusterInfo[] + c2dClusters?: any[] supportedSchemas?: Schema[] } diff --git a/src/@types/commands.ts b/src/@types/commands.ts index 763e636a4..e7c101192 100644 --- a/src/@types/commands.ts +++ b/src/@types/commands.ts @@ -1,7 +1,12 @@ import { ValidateParams } from '../components/httpRoutes/validateCommands.js' -import { DDO } from './DDO/DDO' import { P2PCommandResponse } from './OceanNode' -import type { ComputeAsset, ComputeAlgorithm, ComputeOutput } from './C2D' +import { DDO } from '@oceanprotocol/ddo-js' +import type { + ComputeAsset, + ComputeAlgorithm, + ComputeOutput, + ComputeResourceRequest +} from './C2D/C2D.js' import { ArweaveFileObject, FileObjectType, @@ -16,6 +21,17 @@ export interface Command { node?: string // if not present it means current node } +export interface GetP2PPeerCommand extends Command { + peerId: string +} +export interface FindPeerCommand extends Command { + peerId: string + timeout?: string +} + +export interface GetP2PPeersCommand extends Command {} +export interface GetP2PNetworkStatsCommand extends Command {} + export interface AdminCommand extends Command { expiryTimestamp: number signature: string @@ -63,9 +79,14 @@ export interface FindDDOCommand extends DDOCommand { // https://github.com/oceanprotocol/ocean-node/issues/47 export interface ValidateDDOCommand extends Command { ddo: DDO + publisherAddress?: string + nonce?: string + signature?: string } -export interface StatusCommand extends Command {} +export interface StatusCommand extends Command { + detailed?: boolean +} export interface DetailedStatusCommand extends StatusCommand {} export interface EchoCommand extends Command {} @@ -137,33 +158,49 @@ export interface AdminReindexChainCommand extends AdminCommand { export interface ICommandHandler { handle(command: Command): Promise + verifyParamsAndRateLimits(task: Command): Promise +} + +export interface IValidateCommandHandler extends ICommandHandler { validate(command: Command): ValidateParams } +export interface IValidateAdminCommandHandler extends ICommandHandler { + validate(command: AdminCommand): Promise +} + export interface ComputeGetEnvironmentsCommand extends Command { chainId?: number } -export interface ComputeDetails { - env: string // with hash - validUntil: number +export interface ComputePayment { + chainId: number + token: string + resources?: ComputeResourceRequest[] } export interface ComputeInitializeCommand extends Command { datasets: [ComputeAsset] algorithm: ComputeAlgorithm - compute: ComputeDetails + environment: string + payment: ComputePayment consumerAddress: string + signature?: string + maxJobDuration: number } -export interface ComputeStartCommand extends Command { +export interface FreeComputeStartCommand extends Command { consumerAddress: string signature: string nonce: string environment: string algorithm: ComputeAlgorithm - dataset: ComputeAsset - additionalDatasets?: ComputeAsset[] + datasets?: ComputeAsset[] output?: ComputeOutput + resources?: ComputeResourceRequest[] + maxJobDuration?: number +} +export interface PaidComputeStartCommand extends FreeComputeStartCommand { + payment: ComputePayment } export interface ComputeStopCommand extends Command { @@ -181,6 +218,12 @@ export interface ComputeGetResultCommand extends Command { jobId: string index: number } +export interface ComputeGetStreamableLogsCommand extends Command { + consumerAddress: string + signature: string + nonce: string + jobId: string +} export interface ComputeGetStatusCommand extends Command { consumerAddress?: string diff --git a/src/@types/docker-registry-lient.ts b/src/@types/docker-registry-lient.ts new file mode 100644 index 000000000..4d858e257 --- /dev/null +++ b/src/@types/docker-registry-lient.ts @@ -0,0 +1 @@ +declare module 'docker-registry-client' diff --git a/src/@types/index.ts b/src/@types/index.ts index 8a5d367bc..8ac35eeb1 100644 --- a/src/@types/index.ts +++ b/src/@types/index.ts @@ -1,3 +1,3 @@ export * from './OceanNode' -export * from './C2D' +export * from './C2D/C2D' export * from './Typesense' diff --git a/src/OceanNode.ts b/src/OceanNode.ts index ba40feac9..762bf5d44 100644 --- a/src/OceanNode.ts +++ b/src/OceanNode.ts @@ -3,14 +3,26 @@ import { OceanProvider } from './components/Provider/index.js' import { OceanIndexer } from './components/Indexer/index.js' import { OceanNodeConfig, P2PCommandResponse } from './@types/OceanNode.js' import { Database } from './components/database/index.js' +import { Escrow } from './components/core/utils/escrow.js' import { CoreHandlersRegistry } from './components/core/handler/coreHandlersRegistry.js' import { OCEAN_NODE_LOGGER } from './utils/logging/common.js' import { ReadableString } from './components/P2P/handleProtocolCommands.js' import StreamConcat from 'stream-concat' import { pipe } from 'it-pipe' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from './utils/logging/Logger.js' -import { Handler } from './components/core/handler/handler.js' +import { BaseHandler } from './components/core/handler/handler.js' import { C2DEngines } from './components/c2d/compute_engines.js' + +export interface RequestLimiter { + requester: string | string[] // IP address or peer ID + lastRequestTime: number // time of the last request done (in miliseconds) + numRequests: number // number of requests done in the specific time period +} + +export interface RequestDataCheck { + valid: boolean + updatedRequestData: RequestLimiter +} export class OceanNode { // eslint-disable-next-line no-use-before-define private static instance: OceanNode @@ -18,23 +30,37 @@ export class OceanNode { private coreHandlers: CoreHandlersRegistry // compute engines private c2dEngines: C2DEngines + // escrow + public escrow: Escrow // requester private remoteCaller: string | string[] + private requestMap: Map + // eslint-disable-next-line no-useless-constructor private constructor( + private config: OceanNodeConfig, private db?: Database, private node?: OceanP2P, private provider?: OceanProvider, private indexer?: OceanIndexer ) { this.coreHandlers = CoreHandlersRegistry.getInstance(this) + this.requestMap = new Map() + this.config = config if (node) { node.setCoreHandlers(this.coreHandlers) } + if (this.config) { + this.escrow = new Escrow( + this.config.supportedNetworks, + this.config.claimDurationTimeout + ) + } } // Singleton instance public static getInstance( + config?: OceanNodeConfig, db?: Database, node?: OceanP2P, provider?: OceanProvider, @@ -42,7 +68,7 @@ export class OceanNode { ): OceanNode { if (!OceanNode.instance) { // prepare compute engines - this.instance = new OceanNode(db, node, provider, indexer) + this.instance = new OceanNode(config, db, node, provider, indexer) } return this.instance } @@ -56,11 +82,18 @@ export class OceanNode { this.indexer = _indexer } - public async addC2DEngines(_config: OceanNodeConfig) { + public async addC2DEngines() { if (this.c2dEngines) { await this.c2dEngines.stopAllEngines() } - if (_config && _config.c2dClusters) this.c2dEngines = new C2DEngines(_config) + if (this.config && this.config.c2dClusters) { + if (!this.db || !this.db.c2d) { + OCEAN_NODE_LOGGER.error('C2DDatabase is mandatory for compute engines!') + return + } + this.c2dEngines = new C2DEngines(this.config, this.db.c2d, this.escrow) + await this.c2dEngines.startAllEngines() + } } public getP2PNode(): OceanP2P | undefined { @@ -95,6 +128,14 @@ export class OceanNode { return this.remoteCaller } + public getRequestMapSize(): number { + return this.requestMap.size + } + + public getRequestMap(): Map { + return this.requestMap + } + /** * Use this method to direct calls to the node as node cannot dial into itself * @param message command message @@ -114,7 +155,7 @@ export class OceanNode { try { const task = JSON.parse(message) - const handler: Handler = this.coreHandlers.getHandler(task.command) + const handler: BaseHandler = this.coreHandlers.getHandler(task.command) if (handler === null) { status = { httpStatus: 501, diff --git a/src/components/Indexer/crawlerThread.ts b/src/components/Indexer/crawlerThread.ts index 440616de2..25eb0a025 100644 --- a/src/components/Indexer/crawlerThread.ts +++ b/src/components/Indexer/crawlerThread.ts @@ -3,8 +3,6 @@ import { getCrawlingInterval, getDeployedContractBlock, getNetworkHeight, - processBlocks, - processChunkLogs, retrieveChunkEvents } from './utils.js' import { Blockchain } from '../../utils/blockchain.js' @@ -16,6 +14,7 @@ import { INDEXER_LOGGER } from '../../utils/logging/common.js' import { getDatabase } from '../../utils/database.js' import { JsonRpcApiProvider, Log, Signer } from 'ethers' import { DEVELOPMENT_CHAIN_ID } from '../../utils/address.js' +import { processBlocks, processChunkLogs } from './processor.js' export interface ReindexTask { txId: string @@ -98,20 +97,21 @@ export async function processNetworkData( ): Promise { stoppedCrawling = startedCrawling = false let contractDeploymentBlock = getDeployedContractBlock(rpcDetails.chainId) - if (!isDefined(contractDeploymentBlock) && !isDefined(await getLastIndexedBlock())) { - if (rpcDetails.chainId === DEVELOPMENT_CHAIN_ID) { - rpcDetails.startBlock = contractDeploymentBlock = 0 - INDEXER_LOGGER.warn( - 'Cannot get block info for local network, starting from block 0' - ) - } else { - INDEXER_LOGGER.logMessage( - `chain: ${rpcDetails.chainId} Both deployed block and last indexed block are null/undefined. Cannot proceed further on this chain`, - true - ) + const isLocalChain = rpcDetails.chainId === DEVELOPMENT_CHAIN_ID + if (isLocalChain && !isDefined(contractDeploymentBlock)) { + rpcDetails.startBlock = contractDeploymentBlock = 0 + INDEXER_LOGGER.warn('Cannot get block info for local network, starting from block 0') + } else if ( + !isLocalChain && + !isDefined(contractDeploymentBlock) && + !isDefined(await getLastIndexedBlock()) + ) { + INDEXER_LOGGER.logMessage( + `chain: ${rpcDetails.chainId} Both deployed block and last indexed block are null/undefined. Cannot proceed further on this chain`, + true + ) - return null - } + return null } // if we defined a valid startBlock use it, oterwise start from deployed one diff --git a/src/components/Indexer/index.ts b/src/components/Indexer/index.ts index 6e83595e4..f76e551cd 100644 --- a/src/components/Indexer/index.ts +++ b/src/components/Indexer/index.ts @@ -13,10 +13,11 @@ import { PROTOCOL_COMMANDS } from '../../utils/index.js' import { CommandStatus, JobStatus } from '../../@types/commands.js' -import { buildJobIdentifier } from './utils.js' +import { buildJobIdentifier, getDeployedContractBlock } from './utils.js' import { create256Hash } from '../../utils/crypt.js' import { isReachableConnection } from '../../utils/database.js' import { sleep } from '../../utils/util.js' +import { isReindexingNeeded } from './version.js' // emmit events for node export const INDEXER_DDO_EVENT_EMITTER = new EventEmitter() @@ -35,6 +36,7 @@ export class OceanIndexer { private networks: RPCS private supportedChains: string[] private workers: Record = {} + private MIN_REQUIRED_VERSION = '0.2.2' constructor(db: Database, supportedNetworks: RPCS) { this.db = db @@ -196,6 +198,7 @@ export class OceanIndexer { // eslint-disable-next-line require-await public async startThreads(): Promise { + await this.checkAndTriggerReindexing() let count = 0 for (const network of this.supportedChains) { const chainId = parseInt(network) @@ -219,7 +222,12 @@ export class OceanIndexer { EVENTS.METADATA_UPDATED, EVENTS.METADATA_STATE, EVENTS.ORDER_STARTED, - EVENTS.ORDER_REUSED + EVENTS.ORDER_REUSED, + EVENTS.DISPENSER_ACTIVATED, + EVENTS.DISPENSER_DEACTIVATED, + EVENTS.EXCHANGE_ACTIVATED, + EVENTS.EXCHANGE_DEACTIVATED, + EVENTS.EXCHANGE_RATE_CHANGED ].includes(event.method) ) { // will emit the metadata created/updated event and advertise it to the other peers (on create only) @@ -400,4 +408,70 @@ export class OceanIndexer { } } } + + /** + * Checks if reindexing is needed and triggers it for all chains + */ + public async checkAndTriggerReindexing(): Promise { + const currentVersion = process.env.npm_package_version + const dbActive = this.getDatabase() + if (!dbActive || !(await isReachableConnection(dbActive.getConfig().url))) { + INDEXER_LOGGER.error(`Giving up reindexing. DB is not online!`) + return + } + const dbVersion = await dbActive.sqliteConfig?.retrieveValue() + INDEXER_LOGGER.info( + `Node version check: Current=${currentVersion}, DB=${ + dbVersion || 'not set' + }, Min Required=${this.MIN_REQUIRED_VERSION}` + ) + + if (isReindexingNeeded(currentVersion, dbVersion.value, this.MIN_REQUIRED_VERSION)) { + INDEXER_LOGGER.info( + `Reindexing needed: DB version ${ + dbVersion.value || 'not set' + } is older than minimum required ${this.MIN_REQUIRED_VERSION}` + ) + + // Reindex all chains by directly setting last indexed block to deployment block + for (const chainID of this.supportedChains) { + const chainIdNum = Number(chainID) + + INDEXER_LOGGER.info( + `Triggering reindexing for chain ${chainIdNum} by resetting to block null` + ) + + try { + // First delete all assets from this chain + const numDeleted = await dbActive.ddo.deleteAllAssetsFromChain(chainIdNum) + INDEXER_LOGGER.info(`Deleted ${numDeleted} assets from chain ${chainIdNum}`) + + // Update database directly by resetting last indexed block + const contractDeploymentBlock = getDeployedContractBlock(chainIdNum) + const result = await dbActive.indexer.update( + chainIdNum, + contractDeploymentBlock + ) + + if (!result) { + INDEXER_LOGGER.error( + `Reindex chain job for ${chainIdNum} failed. Please retry reindexChain command manually for this chain.` + ) + } else { + INDEXER_LOGGER.info( + `Successfully reset indexing for chain ${chainIdNum} to block null` + ) + } + } catch (error) { + INDEXER_LOGGER.error( + `Error resetting index for chain ${chainIdNum}: ${error.message}. Please retry reindexChain command manually.` + ) + } + } + await dbActive.sqliteConfig?.createOrUpdateConfig('version', currentVersion) + INDEXER_LOGGER.info(`Updated node version in database to ${currentVersion}`) + } else { + INDEXER_LOGGER.info('No reindexing needed based on version check') + } + } } diff --git a/src/components/Indexer/processor.ts b/src/components/Indexer/processor.ts index 30bdc2587..de6e55d10 100644 --- a/src/components/Indexer/processor.ts +++ b/src/components/Indexer/processor.ts @@ -1,881 +1,198 @@ -import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } -import axios from 'axios' -import { createHash } from 'crypto' -import { AssetLastEvent, DDOManager } from '@oceanprotocol/ddo-js' -import { - Interface, - JsonRpcApiProvider, - Signer, - ethers, - getAddress, - getBytes, - hexlify, - toUtf8Bytes, - toUtf8String -} from 'ethers' -import { Readable } from 'node:stream' -import { toString as uint8ArrayToString } from 'uint8arrays/to-string' -import { DecryptDDOCommand } from '../../@types/commands.js' -import { Storage } from '../../components/storage/index.js' -import { OceanNode } from '../../OceanNode.js' -import { EVENTS, MetadataStates, PROTOCOL_COMMANDS } from '../../utils/constants.js' -import { create256Hash } from '../../utils/crypt.js' -import { getDatabase } from '../../utils/database.js' -import { getConfiguration, timestampToDateTime } from '../../utils/index.js' +import { ethers, Signer, JsonRpcApiProvider, Interface, getAddress } from 'ethers' +import { BlocksEvents, ProcessingEvents } from '../../@types/blockchain.js' +import { EVENTS } from '../../utils/constants.js' +import { getConfiguration } from '../../utils/config.js' import { INDEXER_LOGGER } from '../../utils/logging/common.js' import { LOG_LEVELS_STR } from '../../utils/logging/Logger.js' -import { URLUtils } from '../../utils/url.js' -import { asyncCallWithTimeout, streamToString } from '../../utils/util.js' -import { isRemoteDDO } from '../core/utils/validateDdoHandler.js' -import { AbstractDdoDatabase } from '../database/BaseDatabase.js' -import { PolicyServer } from '../policyServer/index.js' -import { Purgatory } from './purgatory.js' -import { getDtContract, wasNFTDeployedByOurFactory } from './utils.js' -class BaseEventProcessor { - protected networkId: number - - constructor(chainId: number) { - this.networkId = chainId - } - - protected getTokenInfo(services: any[]): any[] { - const datatokens: any[] = [] - services.forEach((service) => { - datatokens.push({ - address: service.datatokenAddress, - name: 'Datatoken', - symbol: 'DT1', - serviceId: service.id - }) - }) - return datatokens - } - - protected async getEventData( - provider: JsonRpcApiProvider, - transactionHash: string, - abi: any - ): Promise { - const iface = new Interface(abi) - INDEXER_LOGGER.logMessage(`Getting transaction receipt for ${transactionHash}`, true) - const receipt = await provider.getTransactionReceipt(transactionHash) - INDEXER_LOGGER.logMessage(`Getted transaction receipt ${receipt}`, true) - const eventObj = { - topics: receipt.logs[0].topics as string[], - data: receipt.logs[0].data - } - return iface.parseLog(eventObj) - } +import { fetchEventFromTransaction } from '../../utils/util.js' +import { + BaseEventProcessor, + MetadataEventProcessor, + MetadataStateEventProcessor, + OrderStartedEventProcessor, + OrderReusedEventProcessor, + DispenserCreatedEventProcessor, + DispenserActivatedEventProcessor, + DispenserDeactivatedEventProcessor, + ExchangeCreatedEventProcessor, + ExchangeActivatedEventProcessor, + ExchangeDeactivatedEventProcessor, + ExchangeRateChangedEventProcessor, + ProcessorConstructor +} from './processors/index.js' +import { findEventByKey } from './utils.js' +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import AccessListContract from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } + +const EVENT_PROCESSOR_MAP: Record = { + [EVENTS.METADATA_CREATED]: MetadataEventProcessor, + [EVENTS.METADATA_UPDATED]: MetadataEventProcessor, + [EVENTS.METADATA_STATE]: MetadataStateEventProcessor, + [EVENTS.ORDER_STARTED]: OrderStartedEventProcessor, + [EVENTS.ORDER_REUSED]: OrderReusedEventProcessor, + [EVENTS.DISPENSER_CREATED]: DispenserCreatedEventProcessor, + [EVENTS.DISPENSER_ACTIVATED]: DispenserActivatedEventProcessor, + [EVENTS.DISPENSER_DEACTIVATED]: DispenserDeactivatedEventProcessor, + [EVENTS.EXCHANGE_CREATED]: ExchangeCreatedEventProcessor, + [EVENTS.EXCHANGE_ACTIVATED]: ExchangeActivatedEventProcessor, + [EVENTS.EXCHANGE_DEACTIVATED]: ExchangeDeactivatedEventProcessor, + [EVENTS.EXCHANGE_RATE_CHANGED]: ExchangeRateChangedEventProcessor +} - protected async getNFTInfo( - nftAddress: string, - signer: Signer, - owner: string, - timestamp: number - ): Promise { - const nftContract = new ethers.Contract(nftAddress, ERC721Template.abi, signer) - const state = parseInt((await nftContract.getMetaData())[2]) - const id = parseInt(await nftContract.getId()) - const tokenURI = await nftContract.tokenURI(id) - return { - state, - address: nftAddress, - name: await nftContract.name(), - symbol: await nftContract.symbol(), - owner, - created: timestampToDateTime(timestamp), - tokenURI - } - } +const processorInstances = new Map() - protected async createOrUpdateDDO(ddo: any, method: string): Promise { - try { - const { ddo: ddoDatabase, ddoState } = await getDatabase() - const saveDDO = await ddoDatabase.update({ ...ddo }) - const ddoInstance = DDOManager.getDDOClass(ddo) - const { id, nftAddress } = ddoInstance.getDDOData() - const { event } = ddoInstance.getAssetFields() - await ddoState.update(this.networkId, id, nftAddress, event?.txid, true) - INDEXER_LOGGER.logMessage( - `Saved or updated DDO : ${id} from network: ${this.networkId} triggered by: ${method}` - ) - return saveDDO - } catch (err) { - const { ddoState } = await getDatabase() - const ddoInstance = DDOManager.getDDOClass(ddo) - const { id, nftAddress } = ddoInstance.getDDOData() - const { event } = ddoInstance.getAssetFields() - await ddoState.update( - this.networkId, - id, - nftAddress, - event?.txid, - true, - err.message - ) - INDEXER_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `Error found on ${this.networkId} triggered by: ${method} while creating or updating DDO: ${err}`, - true - ) - } - } +function getEventProcessor(eventType: string, chainId: number): BaseEventProcessor { + const cacheKey = `${eventType}-${chainId}` - protected checkDdoHash(decryptedDocument: any, documentHashFromContract: any): boolean { - const utf8Bytes = toUtf8Bytes(JSON.stringify(decryptedDocument)) - const expectedMetadata = hexlify(utf8Bytes) - const expectedMetadataHash = create256Hash(expectedMetadata.toString()) - if (expectedMetadataHash !== documentHashFromContract) { - INDEXER_LOGGER.error( - `DDO checksum does not match. Expected: ${documentHashFromContract} Received: ${expectedMetadata}` - ) - return false + if (!processorInstances.has(cacheKey)) { + const ProcessorClass = EVENT_PROCESSOR_MAP[eventType] + if (!ProcessorClass) { + throw new Error(`No processor found for event type: ${eventType}`) } - return true + processorInstances.set(cacheKey, new ProcessorClass(chainId)) } - protected async getDDO( - ddoDatabase: AbstractDdoDatabase, - nftAddress: string, - chainId: number - ): Promise { - const did = - 'did:op:' + - createHash('sha256') - .update(getAddress(nftAddress) + chainId.toString(10)) - .digest('hex') - const didOpe = - 'did:ope:' + - createHash('sha256') - .update(getAddress(nftAddress) + chainId.toString(10)) - .digest('hex') + return processorInstances.get(cacheKey) +} - let ddo = await ddoDatabase.retrieve(did) - if (!ddo) { - INDEXER_LOGGER.logMessage( - `Detected OrderStarted changed for ${did}, but it does not exists, try with ddo:ope.` - ) - ddo = await ddoDatabase.retrieve(didOpe) - if (!ddo) { +export const processChunkLogs = async ( + logs: readonly ethers.Log[], + signer: Signer, + provider: JsonRpcApiProvider, + chainId: number +): Promise => { + const storeEvents: BlocksEvents = {} + if (logs.length > 0) { + const { allowedValidators, allowedValidatorsList } = await getConfiguration() // getAllowedValidators() + const checkMetadataValidated = + allowedValidators.length > 0 || + (allowedValidatorsList && Object.keys(allowedValidatorsList).length > 0) + for (const log of logs) { + const event = findEventByKey(log.topics[0]) + if (event && Object.values(EVENTS).includes(event.type)) { + // only log & process the ones we support INDEXER_LOGGER.logMessage( - `Detected OrderStarted changed for ${didOpe}, but it does not exists.` + `-- ${event.type} -- triggered for ${log.transactionHash}`, + true ) - } - } - return ddo - } - - protected async decryptDDO( - decryptorURL: string, - flag: string, - eventCreator: string, - contractAddress: string, - chainId: number, - txId: string, - metadataHash: string, - metadata: any - ): Promise { - let ddo - if (parseInt(flag) === 2) { - INDEXER_LOGGER.logMessage( - `Decrypting DDO from network: ${this.networkId} created by: ${eventCreator} encrypted by: ${decryptorURL}` - ) - const nonce = Math.floor(Date.now() / 1000).toString() - const { keys } = await getConfiguration() - const nodeId = keys.peerId.toString() - - const wallet: ethers.Wallet = new ethers.Wallet(process.env.PRIVATE_KEY as string) - - const message = String( - txId + contractAddress + keys.ethAddress + chainId.toString() + nonce - ) - const consumerMessage = ethers.solidityPackedKeccak256( - ['bytes'], - [ethers.hexlify(ethers.toUtf8Bytes(message))] - ) - const signature = await wallet.signMessage(consumerMessage) - - if (URLUtils.isValidUrl(decryptorURL)) { - try { - const payload = { - transactionId: txId, - chainId, - decrypterAddress: keys.ethAddress, - dataNftAddress: contractAddress, - signature, - nonce - } - const response = await axios({ - method: 'post', - url: `${decryptorURL}/api/services/decrypt`, - data: payload - }) - if (response.status !== 200) { - const message = `bProvider exception on decrypt DDO. Status: ${response.status}, ${response.statusText}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) - throw new Error(message) - } - - let responseHash - if (response.data instanceof Object) { - responseHash = create256Hash(JSON.stringify(response.data)) - ddo = response.data - } else { - ddo = JSON.parse(response.data) - responseHash = create256Hash(ddo) - } - if (responseHash !== metadataHash) { - const msg = `Hash check failed: response=${ddo}, decrypted ddo hash=${responseHash}\n metadata hash=${metadataHash}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, msg) - throw new Error(msg) - } - } catch (err) { - const message = `Provider exception on decrypt DDO. Status: ${err.message}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) - throw new Error(message) - } - } else { - const node = OceanNode.getInstance(await getDatabase()) - if (nodeId === decryptorURL) { - const decryptDDOTask: DecryptDDOCommand = { - command: PROTOCOL_COMMANDS.DECRYPT_DDO, - transactionId: txId, - decrypterAddress: keys.ethAddress, - chainId, - encryptedDocument: metadata, - documentHash: metadataHash, - dataNftAddress: contractAddress, - signature, - nonce - } - try { - const response = await node - .getCoreHandlers() - .getHandler(PROTOCOL_COMMANDS.DECRYPT_DDO) - .handle(decryptDDOTask) - ddo = JSON.parse(await streamToString(response.stream as Readable)) - } catch (error) { - const message = `Node exception on decrypt DDO. Status: ${error.message}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) - throw new Error(message) - } - } else { - try { - const p2pNode = await node.getP2PNode() - let isBinaryContent = false - const sink = async function (source: any) { - let first = true - for await (const chunk of source) { - if (first) { - first = false - try { - const str = uint8ArrayToString(chunk.subarray()) // Obs: we need to specify the length of the subarrays - const decoded = JSON.parse(str) - if ('headers' in decoded) { - if (str?.toLowerCase().includes('application/octet-stream')) { - isBinaryContent = true - } - } - if (decoded.httpStatus !== 200) { - INDEXER_LOGGER.logMessage( - `Error in sink method : ${decoded.httpStatus} errro: ${decoded.error}` + if ( + event.type === EVENTS.METADATA_CREATED || + event.type === EVENTS.METADATA_UPDATED || + event.type === EVENTS.METADATA_STATE + ) { + // ref: https://github.com/oceanprotocol/ocean-node/issues/257 + if (checkMetadataValidated) { + const txReceipt = await provider.getTransactionReceipt(log.transactionHash) + const metadataProofs = fetchEventFromTransaction( + txReceipt, + 'MetadataValidated', + new Interface(ERC20Template.abi) + ) + if (!metadataProofs) { + INDEXER_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `Metadata Proof validator not allowed`, + true + ) + continue + // do not process this one + } + const validators: string[] = metadataProofs.map((metadataProof) => + getAddress(metadataProof.args[0].toString()) + ) + // ALLOWED_VALIDATORS CHECK + const allowed = allowedValidators.filter( + (allowedValidator) => validators.indexOf(allowedValidator) !== -1 + ) + if (!allowed.length) { + INDEXER_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `Metadata Proof validators list is empty`, + true + ) + continue + // do not process this one + } + // ALLOWED_VALIDATORS_LIST + // by default it is OK + let isAllowed = true + if (allowedValidatorsList && validators.length > 0) { + // need to check then + isAllowed = false + // check accessList + const chainsListed = Object.keys(allowedValidatorsList) + const chain = String(chainId) + // check the access lists for this chain + if (chainsListed.length > 0 && chainsListed.includes(chain)) { + for (const accessListAddress of allowedValidatorsList[chain]) { + // instantiate contract and check balanceOf + const accessListContract = new ethers.Contract( + accessListAddress, + AccessListContract.abi, + signer + ) + for (const metaproofValidator of validators) { + // if has at least 1 token than it is authorized + // its enough one validator on the list + const balance = await accessListContract.balanceOf(metaproofValidator) + if (Number(balance) <= 0) { + INDEXER_LOGGER.error( + `Metadata validator: ${metaproofValidator} is NOT part of the access list group: ${accessListAddress}.` ) - throw new Error('Error in sink method', decoded.error) + } else { + isAllowed = true + break } - } catch (e) { - INDEXER_LOGGER.logMessage( - `Error in sink method } error: ${e.message}` - ) - throw new Error(`Error in sink method ${e.message}`) - } - } else { - if (isBinaryContent) { - return chunk.subarray() - } else { - const str = uint8ArrayToString(chunk.subarray()) - return str } } + } else { + isAllowed = true // no rules for this specific chain, so ignore this } - } - const message = { - command: PROTOCOL_COMMANDS.DECRYPT_DDO, - transactionId: txId, - decrypterAddress: keys.ethAddress, - chainId, - encryptedDocument: metadata, - documentHash: metadataHash, - dataNftAddress: contractAddress, - signature, - nonce - } - const response = await p2pNode.sendTo( - decryptorURL, - JSON.stringify(message), - sink - ) - ddo = JSON.parse(await streamToString(response.stream as Readable)) - } catch (error) { - const message = `Node exception on decrypt DDO. Status: ${error.message}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) - throw new Error(message) - } - } - } - } else { - INDEXER_LOGGER.logMessage( - `Decompressing DDO from network: ${this.networkId} created by: ${eventCreator} ecnrypted by: ${decryptorURL}` - ) - const byteArray = getBytes(metadata) - const utf8String = toUtf8String(byteArray) - ddo = JSON.parse(utf8String) - } - - return ddo - } - - protected decryptDDOIPFS( - decryptorURL: string, - eventCreator: string, - metadata: any - ): Promise { - INDEXER_LOGGER.logMessage( - `Decompressing DDO from network: ${this.networkId} created by: ${eventCreator} ecnrypted by: ${decryptorURL}` - ) - const byteArray = getBytes(metadata) - const utf8String = toUtf8String(byteArray) - const proof = JSON.parse(utf8String) - return proof - } - - protected getDataFromProof( - proof: any - ): { header: any; ddoObj: Record; signature: string } | null { - INDEXER_LOGGER.logMessage(`Decompressing JWT`) - const data = proof.split('.') - if (data.length > 2) { - const header = JSON.parse(Buffer.from(data[0], 'base64').toString('utf-8')) - let ddoObj = JSON.parse(Buffer.from(data[1], 'base64').toString('utf-8')) - if (ddoObj.vc) ddoObj = ddoObj.vc - const signature = data[2] - - return { header, ddoObj, signature } - } - return null - } -} - -export class MetadataEventProcessor extends BaseEventProcessor { - async processEvent( - event: ethers.Log, - chainId: number, - signer: Signer, - provider: JsonRpcApiProvider, - eventName: string - ): Promise { - let did - try { - const { ddo: ddoDatabase, ddoState } = await getDatabase() - const wasDeployedByUs = await wasNFTDeployedByOurFactory( - chainId, - signer, - getAddress(event.address) - ) - - if (!wasDeployedByUs) { - INDEXER_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `NFT not deployed by OPF factory`, - true - ) - return - } - const decodedEventData = await this.getEventData( - provider, - event.transactionHash, - ERC721Template.abi - ) - const metadata = decodedEventData.args[4] - const metadataHash = decodedEventData.args[5] - const flag = decodedEventData.args[3] - const owner = decodedEventData.args[0] - const decryptedDDO = await this.decryptDDO( - decodedEventData.args[2], - flag, - owner, - event.address, - chainId, - event.transactionHash, - metadataHash, - metadata - ) - let ddo = await this.processDDO(decryptedDDO) - - if ( - !isRemoteDDO(decryptedDDO) && - parseInt(flag) !== 2 && - !this.checkDdoHash(ddo, metadataHash) - ) { - return - } - - if (ddo.encryptedData) { - const proof = await this.decryptDDOIPFS( - decodedEventData.args[2], - owner, - ddo.encryptedData - ) - - const data = this.getDataFromProof(proof) - const ddoInstance = DDOManager.getDDOClass(data.ddoObj) - ddo = ddoInstance.updateFields({ - proof: { signature: data.signature, header: data.header } - }) - } - - const ddoInstance = DDOManager.getDDOClass(ddo) - if (ddo.id !== ddoInstance.makeDid(event.address, chainId.toString(10))) { - INDEXER_LOGGER.error( - `Decrypted DDO ID is not matching the generated hash for DID.` - ) - return - } - const did = ddo.id - const nftAddress = event.address - const { services } = ddoInstance.getDDOFields() - const datatokens = this.getTokenInfo(services) - const nft = await this.getNFTInfo( - nftAddress, - signer, - owner, - parseInt(decodedEventData.args[6]) - ) - // stuff that we overwrite - ddo = ddoInstance.updateFields({ chainId, nftAddress, datatokens, nft }) - INDEXER_LOGGER.logMessage( - `Processed new DDO data ${ddo.id} with txHash ${event.transactionHash} from block ${event.blockNumber}`, - true - ) - const previousDdo = await ddoDatabase.retrieve(ddo.id) - let previousNft - if (previousDdo) { - const previousDdoInstance = DDOManager.getDDOClass(previousDdo) - const { nft } = previousDdoInstance.getAssetFields() - previousNft = nft - } - if (eventName === EVENTS.METADATA_CREATED) { - if (previousDdo && previousNft && previousNft.state === MetadataStates.ACTIVE) { - INDEXER_LOGGER.logMessage(`DDO ${ddo.id} is already registered as active`, true) - await ddoState.update( - this.networkId, - did, - event.address, - event.transactionHash, - false, - `DDO ${ddo.id} is already registered as active` - ) - return - } - } - - if (eventName === EVENTS.METADATA_UPDATED) { - if (!previousDdo) { - INDEXER_LOGGER.logMessage( - `Previous DDO with did ${ddo.id} was not found the database. Maybe it was deleted/hidden to some violation issues`, - true - ) - await ddoState.update( - this.networkId, - did, - event.address, - event.transactionHash, - false, - `Previous DDO with did ${ddo.id} was not found the database. Maybe it was deleted/hidden to some violation issues` - ) - return - } - const [isUpdateable, error] = this.isUpdateable( - previousDdo, - event.transactionHash, - event.blockNumber - ) - if (!isUpdateable) { - INDEXER_LOGGER.error( - `Error encountered when checking if the asset is eligiable for update: ${error}` - ) - await ddoState.update( - this.networkId, - did, - event.address, - event.transactionHash, - false, - error - ) - return + // move on to the next (do not process this event) + if (isAllowed === false) { + continue + } + } // end if (allowedValidatorsList) { + } // end if if (checkMetadataValidated) { } - } - const from = decodedEventData.args[0] - - // we need to store the event data (either metadata created or update and is updatable) - if ([EVENTS.METADATA_CREATED, EVENTS.METADATA_UPDATED].includes(eventName)) { - const updatedEvent = {} as AssetLastEvent - updatedEvent.txid = event.transactionHash - updatedEvent.from = from - updatedEvent.contract = event.address - if (event.blockNumber) { - updatedEvent.block = event.blockNumber - // try get block & timestamp from block (only wait 2.5 secs maximum) - const promiseFn = provider.getBlock(event.blockNumber) - const result = await asyncCallWithTimeout(promiseFn, 2500) - if (result.data !== null && !result.timeout) { - updatedEvent.datetime = new Date(result.data.timestamp * 1000).toJSON() - } + if (event.type === EVENTS.TOKEN_URI_UPDATE) { + storeEvents[event.type] = 'TOKEN_URI_UPDATE' } else { - updatedEvent.block = -1 - } - // policyServer check - const policyServer = new PolicyServer() - let policyStatus - if (eventName === EVENTS.METADATA_UPDATED) - policyStatus = await policyServer.checkUpdateDDO( - ddo, - this.networkId, - event.transactionHash, - event - ) - else - policyStatus = await policyServer.checknewDDO( - ddo, - this.networkId, - event.transactionHash, - event - ) - if (!policyStatus.success) { - await ddoState.update( - this.networkId, - did, - event.address, - event.transactionHash, - false, - policyStatus.message - ) - return - } - ddo = ddoInstance.updateFields({ event: updatedEvent }) - } - // always call, but only create instance once - const purgatory = await Purgatory.getInstance() - // if purgatory is disabled just return false - const state = await this.getPurgatoryState(ddo, from, purgatory) - ddo = ddoInstance.updateFields({ purgatory: { state } }) - if (state === false) { - // TODO: insert in a different collection for purgatory DDOs - const saveDDO = this.createOrUpdateDDO(ddo, eventName) - return saveDDO - } - } catch (error) { - const { ddoState } = await getDatabase() - await ddoState.update( - this.networkId, - did, - event.address, - event.transactionHash, - false, - error.message - ) - INDEXER_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `Error processMetadataEvents: ${error}`, - true - ) - } - } - - async processDDO(ddo: any) { - if (isRemoteDDO(ddo)) { - INDEXER_LOGGER.logMessage('DDO is remote', true) - - const storage = Storage.getStorageClass(ddo.remote, await getConfiguration()) - const result = await storage.getReadableStream() - const streamToStringDDO = await streamToString(result.stream as Readable) - - return JSON.parse(streamToStringDDO) - } - - return ddo - } - - async getPurgatoryState( - ddo: any, - owner: string, - purgatory: Purgatory - ): Promise { - if (purgatory.isEnabled()) { - const state: boolean = - (await purgatory.isBannedAsset(ddo.id)) || - (await purgatory.isBannedAccount(owner)) - return state - } - return false - } - - isUpdateable(previousDdo: any, txHash: string, block: number): [boolean, string] { - let errorMsg: string - const ddoInstance = DDOManager.getDDOClass(previousDdo) - const { event } = ddoInstance.getAssetFields() - const ddoTxId = event.txid - // do not update if we have the same txid - if (txHash === ddoTxId) { - errorMsg = `Previous DDO has the same tx id, no need to update: event-txid=${txHash} <> asset-event-txid=${ddoTxId}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_DEBUG, errorMsg, true) - return [false, errorMsg] - } - const ddoBlock = event.block - // do not update if we have the same block - if (block === ddoBlock) { - errorMsg = `Asset was updated later (block: ${ddoBlock}) vs transaction block: ${block}` - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_DEBUG, errorMsg, true) - return [false, errorMsg] - } - - return [true, ''] - } -} - -export class MetadataStateEventProcessor extends BaseEventProcessor { - async processEvent( - event: ethers.Log, - chainId: number, - provider: JsonRpcApiProvider - ): Promise { - INDEXER_LOGGER.logMessage(`Processing metadata state event...`, true) - const decodedEventData = await this.getEventData( - provider, - event.transactionHash, - ERC721Template.abi - ) - const metadataState = parseInt(decodedEventData.args[1].toString()) as - | 0 - | 1 - | 2 - | 3 - | 4 - | 5 - INDEXER_LOGGER.logMessage(`Processed new metadata state ${metadataState} `, true) - INDEXER_LOGGER.logMessage( - `NFT address in processing MetadataState: ${event.address} `, - true - ) - try { - const { ddo: ddoDatabase } = await getDatabase() - let ddo = await this.getDDO(ddoDatabase, event.address, chainId) - - INDEXER_LOGGER.logMessage(`Found did ${ddo.id} on network ${chainId}`) - - const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getAssetFields() - - if (nft && nft.state !== metadataState) { - let shortVersion = null - - if ( - nft.state === MetadataStates.ACTIVE && - [MetadataStates.REVOKED, MetadataStates.DEPRECATED].includes(metadataState) - ) { - INDEXER_LOGGER.logMessage( - `DDO became non-visible from ${nft.state} to ${metadataState}` - ) - const { nftAddress } = ddoInstance.getDDOFields() - shortVersion = { - id: ddo.id, + const processor = getEventProcessor(event.type, chainId) + storeEvents[event.type] = await processor.processEvent( + log, chainId, - nftAddress, - nft: { - state: metadataState - } - } - } - - // We should keep it here, because in further development we'll store - // the previous structure of the non-visible DDOs (full version) - // in case their state changes back to active. - const updatedNft = { ...nft, state: metadataState } - ddo = ddoInstance.updateFields({ nft: updatedNft }) - if (shortVersion) { - ddo = shortVersion + signer, + provider, + event.type + ) } - } else { - // Still update until we validate and polish schemas for DDO. - // But it should update ONLY if the first condition is met. - // Check https://github.com/oceanprotocol/aquarius/blob/84a560ea972485e46dd3c2cfc3cdb298b65d18fa/aquarius/events/processors.py#L663 - const updatedNft = { ...nft, state: metadataState } - ddo = ddoInstance.updateFields({ nft: updatedNft }) } - INDEXER_LOGGER.logMessage( - `Found did ${ddo.id} for state updating on network ${chainId}` - ) - const savedDDO = this.createOrUpdateDDO(ddo, EVENTS.METADATA_STATE) - return savedDDO - } catch (err) { - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) } + return storeEvents } -} - -export class OrderStartedEventProcessor extends BaseEventProcessor { - async processEvent( - event: ethers.Log, - chainId: number, - signer: Signer, - provider: JsonRpcApiProvider - ): Promise { - INDEXER_LOGGER.logMessage(`Getting event data`, true) - const decodedEventData = await this.getEventData( - provider, - event.transactionHash, - ERC20Template.abi - ) - INDEXER_LOGGER.logMessage(`Getted decodedEventData`, true) - try { - const { args } = decodedEventData - - INDEXER_LOGGER.logMessage( - `DecodedEventData.args: ${JSON.stringify( - args, - (key, value) => { - // Handle ethers BigNumber - if (typeof value === 'object' && value?._isBigNumber) { - return value.toString() - } - // Handle native BigInt - if (typeof value === 'bigint') { - return value.toString() - } - return value - }, - 2 - )}`, - true - ) - } catch (e) { - INDEXER_LOGGER.logMessage(`Error logging args: ${e.message}`, true) - } - const serviceIndex = - decodedEventData.args.length > 3 ? parseInt(decodedEventData.args[3].toString()) : 0 - const timestamp = - decodedEventData.args.length > 4 - ? parseInt(decodedEventData.args[4].toString()) - : Math.floor(Date.now() / 1000) - const consumer = decodedEventData.args[0].toString() - const payer = decodedEventData.args[1].toString() - INDEXER_LOGGER.logMessage( - `Processed new order for service index ${serviceIndex} at ${timestamp}`, - true - ) - const datatokenContract = getDtContract(signer, event.address) - - const nftAddress = await datatokenContract.getERC721Address() - try { - const { ddo: ddoDatabase, order: orderDatabase } = await getDatabase() - let ddo = await this.getDDO(ddoDatabase, nftAddress, chainId) - const ddoInstance = DDOManager.getDDOClass(ddo) - const { services } = ddoInstance.getDDOFields() - const { stats } = ddoInstance.getAssetFields() - const newStats = stats - if ( - stats && - services[serviceIndex].datatokenAddress?.toLowerCase() === - event.address?.toLowerCase() - ) { - newStats.orders += 1 - } else { - // Still update until we validate and polish schemas for DDO. - // But it should update ONLY if first condition is met. - newStats.orders = 1 - } - ddo = ddoInstance.updateFields({ stats: newStats }) - await orderDatabase.create( - event.transactionHash, - 'startOrder', - timestamp, - consumer, - payer, - services[serviceIndex].datatokenAddress, - nftAddress, - ddo.id - ) - INDEXER_LOGGER.logMessage( - `Found did ${ddo.id} for order starting on network ${chainId}` - ) - const savedDDO = this.createOrUpdateDDO(ddo, EVENTS.ORDER_STARTED) - return savedDDO - } catch (err) { - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) - } - } + return {} } -export class OrderReusedEventProcessor extends BaseEventProcessor { - async processEvent( - event: ethers.Log, - chainId: number, - signer: Signer, - provider: JsonRpcApiProvider - ): Promise { - const decodedEventData = await this.getEventData( - provider, - event.transactionHash, - ERC20Template.abi - ) - const startOrderId = decodedEventData.args[0].toString() - const timestamp = parseInt(decodedEventData.args[2].toString()) - const payer = decodedEventData.args[1].toString() - INDEXER_LOGGER.logMessage(`Processed reused order at ${timestamp}`, true) - - const datatokenContract = getDtContract(signer, event.address) - - const nftAddress = await datatokenContract.getERC721Address() - try { - const { ddo: ddoDatabase, order: orderDatabase } = await getDatabase() - let ddo = await this.getDDO(ddoDatabase, nftAddress, chainId) - const ddoInstance = DDOManager.getDDOClass(ddo) - const { stats } = ddoInstance.getAssetFields() - stats.orders += 1 - ddo = ddoInstance.updateFields({ stats }) - try { - const startOrder = await orderDatabase.retrieve(startOrderId) - if (!startOrder) { - INDEXER_LOGGER.logMessage( - `Detected OrderReused changed for order ${startOrderId}, but it does not exists.` - ) - return - } - const { services } = ddoInstance.getDDOFields() - await orderDatabase.create( - event.transactionHash, - 'reuseOrder', - timestamp, - startOrder.consumer, - payer, - services[0].datatokenAddress, - nftAddress, - ddo.id, - startOrderId - ) - } catch (error) { - INDEXER_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `Error retrieving startOrder for reuseOrder: ${error}`, - true - ) - } - - const savedDDO = this.createOrUpdateDDO(ddo, EVENTS.ORDER_REUSED) - return savedDDO - } catch (err) { - INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) +export const processBlocks = async ( + blockLogs: ethers.Log[], + signer: Signer, + provider: JsonRpcApiProvider, + network: number, + lastIndexedBlock: number, + count: number +): Promise => { + try { + const events: any[] | BlocksEvents = + blockLogs && blockLogs.length > 0 + ? await processChunkLogs(blockLogs, signer, provider, network) + : [] + return { + lastBlock: lastIndexedBlock + count, + foundEvents: events } + } catch (error) { + throw new Error(`Error processing chunk of blocks events ${error.message}`) } } diff --git a/src/components/Indexer/processors/BaseProcessor.ts b/src/components/Indexer/processors/BaseProcessor.ts new file mode 100644 index 000000000..a11f6e806 --- /dev/null +++ b/src/components/Indexer/processors/BaseProcessor.ts @@ -0,0 +1,438 @@ +import { VersionedDDO, DeprecatedDDO } from '@oceanprotocol/ddo-js' +import axios from 'axios' +import { + ZeroAddress, + Signer, + ethers, + JsonRpcApiProvider, + Interface, + toUtf8Bytes, + hexlify, + getBytes, + toUtf8String, + getAddress +} from 'ethers' +import { Readable } from 'winston-transport' +import { DecryptDDOCommand } from '../../../@types/commands.js' +import { OceanNode } from '../../../OceanNode.js' +import { EVENT_HASHES, PROTOCOL_COMMANDS } from '../../../utils/constants.js' +import { timestampToDateTime } from '../../../utils/conversions.js' +import { getConfiguration } from '../../../utils/config.js' +import { create256Hash } from '../../../utils/crypt.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { URLUtils } from '../../../utils/url.js' +import { streamToString } from '../../../utils/util.js' +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import { toString as uint8ArrayToString } from 'uint8arrays/to-string' +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import { createHash } from 'node:crypto' +import { AbstractDdoDatabase } from '../../database/BaseDatabase.js' + +export abstract class BaseEventProcessor { + protected networkId: number + + constructor(chainId: number) { + this.networkId = chainId + } + + protected isValidDtAddressFromServices(services: any[]): boolean { + for (const service of services) { + if ( + service.datatokenAddress === '0x0' || + service.datatokenAddress === ZeroAddress + ) { + return false + } + } + return true + } + + protected async getTokenInfo(services: any[], signer: Signer): Promise { + const datatokens: any[] = [] + + for (const service of services) { + const datatoken = new ethers.Contract( + service.datatokenAddress, + ERC20Template.abi, + signer + ) + let name: string + let symbol: string + if ( + service.datatokenAddress === '0x0' || + service.datatokenAddress === ZeroAddress + ) { + name = `Datatoken${services.indexOf(service)}` + symbol = `DT${services.indexOf(service)}` + } else { + name = await datatoken.name() + INDEXER_LOGGER.logMessage(`name.datatoken: ${name}`) + symbol = await datatoken.symbol() + INDEXER_LOGGER.logMessage(`symbol.datatoken: ${symbol}`) + } + + datatokens.push({ + address: service.datatokenAddress, + name, + symbol, + serviceId: service.id + }) + } + + return datatokens + } + + protected async getEventData( + provider: JsonRpcApiProvider, + transactionHash: string, + abi: any, + eventType: string + ): Promise { + const iface = new Interface(abi) + const receipt = await provider.getTransactionReceipt(transactionHash) + + let eventHash: string + for (const [key, value] of Object.entries(EVENT_HASHES)) { + if (value.type === eventType) { + eventHash = key + break + } + } + if (eventHash === '') { + INDEXER_LOGGER.error(`Event hash couldn't be found!`) + return null + } + + let eventObj: any + for (const log of receipt.logs) { + if (log.topics[0] === eventHash) { + eventObj = { + topics: log.topics, + data: log.data + } + break + } + } + + if (!eventObj) { + INDEXER_LOGGER.error( + `Event object couldn't be retrieved! Event hash not present in logs topics` + ) + return null + } + + return iface.parseLog(eventObj) + } + + protected async getNFTInfo( + nftAddress: string, + signer: Signer, + owner: string, + timestamp: number + ): Promise { + const nftContract = new ethers.Contract(nftAddress, ERC721Template.abi, signer) + const state = parseInt((await nftContract.getMetaData())[2]) + const id = parseInt(await nftContract.getId()) + const tokenURI = await nftContract.tokenURI(id) + return { + state, + address: nftAddress, + name: await nftContract.name(), + symbol: await nftContract.symbol(), + owner, + created: timestampToDateTime(timestamp), + tokenURI + } + } + + protected async createOrUpdateDDO(ddo: VersionedDDO, method: string): Promise { + try { + const { ddo: ddoDatabase, ddoState } = await getDatabase() + if (ddo instanceof DeprecatedDDO) { + const { id, nftAddress } = ddo.getDDOFields() + await Promise.all([ddoDatabase.delete(id), ddoState.delete(id)]) + const saveDDO = await ddoDatabase.create(ddo.getDDOData()) + await ddoState.create(this.networkId, saveDDO.id, nftAddress, undefined, true) + + return saveDDO + } + const saveDDO = await ddoDatabase.update({ ...ddo.getDDOData() }) + await ddoState.update( + this.networkId, + saveDDO.id, + saveDDO.nftAddress, + saveDDO.indexedMetadata?.event?.tx, + true + ) + INDEXER_LOGGER.logMessage( + `Saved or updated DDO : ${saveDDO.id} from network: ${this.networkId} triggered by: ${method}` + ) + return saveDDO + } catch (err) { + const { ddoState } = await getDatabase() + const { id, nftAddress } = ddo.getDDOFields() + const tx = + ddo instanceof DeprecatedDDO + ? undefined + : ddo.getAssetFields().indexedMetadata?.event?.txid + + await ddoState.update(this.networkId, id, nftAddress, tx, true, err.message) + INDEXER_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `Error found on ${this.networkId} triggered by: ${method} while creating or updating DDO: ${err}`, + true + ) + } + } + + protected checkDdoHash(decryptedDocument: any, documentHashFromContract: any): boolean { + const utf8Bytes = toUtf8Bytes(JSON.stringify(decryptedDocument)) + const expectedMetadata = hexlify(utf8Bytes) + if (create256Hash(expectedMetadata.toString()) !== documentHashFromContract) { + INDEXER_LOGGER.error(`DDO checksum does not match.`) + return false + } + return true + } + + protected async getDDO( + ddoDatabase: AbstractDdoDatabase, + nftAddress: string, + chainId: number + ): Promise { + const did = + 'did:op:' + + createHash('sha256') + .update(getAddress(nftAddress) + chainId.toString(10)) + .digest('hex') + const didOpe = + 'did:ope:' + + createHash('sha256') + .update(getAddress(nftAddress) + chainId.toString(10)) + .digest('hex') + + let ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected OrderStarted changed for ${did}, but it does not exists, try with ddo:ope.` + ) + ddo = await ddoDatabase.retrieve(didOpe) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected OrderStarted changed for ${didOpe}, but it does not exists.` + ) + } + } + return ddo + } + + protected async decryptDDO( + decryptorURL: string, + flag: string, + eventCreator: string, + contractAddress: string, + chainId: number, + txId: string, + metadataHash: string, + metadata: any + ): Promise { + let ddo + if (parseInt(flag) === 2) { + INDEXER_LOGGER.logMessage( + `Decrypting DDO from network: ${this.networkId} created by: ${eventCreator} encrypted by: ${decryptorURL}` + ) + const nonce = Math.floor(Date.now() / 1000).toString() + const config = await getConfiguration() + const { keys } = config + const nodeId = keys.peerId.toString() + + const wallet: ethers.Wallet = new ethers.Wallet(process.env.PRIVATE_KEY as string) + + const message = String( + txId + contractAddress + keys.ethAddress + chainId.toString() + nonce + ) + const consumerMessage = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const signature = await wallet.signMessage(consumerMessage) + + if (URLUtils.isValidUrl(decryptorURL)) { + try { + const payload = { + transactionId: txId, + chainId, + decrypterAddress: keys.ethAddress, + dataNftAddress: contractAddress, + signature, + nonce + } + const response = await axios({ + method: 'post', + url: `${decryptorURL}/api/services/decrypt`, + data: payload + }) + if (response.status !== 200) { + const message = `bProvider exception on decrypt DDO. Status: ${response.status}, ${response.statusText}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) + throw new Error(message) + } + + let responseHash + if (response.data instanceof Object) { + responseHash = create256Hash(JSON.stringify(response.data)) + ddo = response.data + } else { + ddo = JSON.parse(response.data) + responseHash = create256Hash(ddo) + } + if (responseHash !== metadataHash) { + const msg = `Hash check failed: response=${ddo}, decrypted ddo hash=${responseHash}\n metadata hash=${metadataHash}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, msg) + throw new Error(msg) + } + } catch (err) { + const message = `Provider exception on decrypt DDO. Status: ${err.message}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) + throw new Error(message) + } + } else { + const node = OceanNode.getInstance(config, await getDatabase()) + if (nodeId === decryptorURL) { + const decryptDDOTask: DecryptDDOCommand = { + command: PROTOCOL_COMMANDS.DECRYPT_DDO, + transactionId: txId, + decrypterAddress: keys.ethAddress, + chainId, + encryptedDocument: metadata, + documentHash: metadataHash, + dataNftAddress: contractAddress, + signature, + nonce + } + try { + const response = await node + .getCoreHandlers() + .getHandler(PROTOCOL_COMMANDS.DECRYPT_DDO) + .handle(decryptDDOTask) + ddo = JSON.parse(await streamToString(response.stream as Readable)) + } catch (error) { + const message = `Node exception on decrypt DDO. Status: ${error.message}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) + throw new Error(message) + } + } else { + try { + const p2pNode = await node.getP2PNode() + let isBinaryContent = false + const sink = async function (source: any) { + let first = true + for await (const chunk of source) { + if (first) { + first = false + try { + const str = uint8ArrayToString(chunk.subarray()) // Obs: we need to specify the length of the subarrays + const decoded = JSON.parse(str) + if ('headers' in decoded) { + if (str?.toLowerCase().includes('application/octet-stream')) { + isBinaryContent = true + } + } + if (decoded.httpStatus !== 200) { + INDEXER_LOGGER.logMessage( + `Error in sink method : ${decoded.httpStatus} errro: ${decoded.error}` + ) + throw new Error('Error in sink method', decoded.error) + } + } catch (e) { + INDEXER_LOGGER.logMessage( + `Error in sink method } error: ${e.message}` + ) + throw new Error(`Error in sink method ${e.message}`) + } + } else { + if (isBinaryContent) { + return chunk.subarray() + } else { + const str = uint8ArrayToString(chunk.subarray()) + return str + } + } + } + } + const message = { + command: PROTOCOL_COMMANDS.DECRYPT_DDO, + transactionId: txId, + decrypterAddress: keys.ethAddress, + chainId, + encryptedDocument: metadata, + documentHash: metadataHash, + dataNftAddress: contractAddress, + signature, + nonce + } + const response = await p2pNode.sendTo( + decryptorURL, + JSON.stringify(message), + sink + ) + ddo = JSON.parse(await streamToString(response.stream as Readable)) + } catch (error) { + const message = `Node exception on decrypt DDO. Status: ${error.message}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, message) + throw new Error(message) + } + } + } + } else { + INDEXER_LOGGER.logMessage( + `Decompressing DDO from network: ${this.networkId} created by: ${eventCreator} ecnrypted by: ${decryptorURL}` + ) + const byteArray = getBytes(metadata) + const utf8String = toUtf8String(byteArray) + ddo = JSON.parse(utf8String) + } + + return ddo + } + + protected decryptDDOIPFS( + decryptorURL: string, + eventCreator: string, + metadata: any + ): Promise { + INDEXER_LOGGER.logMessage( + `Decompressing DDO from network: ${this.networkId} created by: ${eventCreator} ecnrypted by: ${decryptorURL}` + ) + const byteArray = getBytes(metadata) + const utf8String = toUtf8String(byteArray) + const proof = JSON.parse(utf8String) + return proof + } + + protected getDataFromProof( + proof: any + ): { header: any; ddoObj: Record; signature: string } | null { + INDEXER_LOGGER.logMessage(`Decompressing JWT`) + const data = proof.split('.') + if (data.length > 2) { + const header = JSON.parse(Buffer.from(data[0], 'base64').toString('utf-8')) + let ddoObj = JSON.parse(Buffer.from(data[1], 'base64').toString('utf-8')) + if (ddoObj.vc) ddoObj = ddoObj.vc + const signature = data[2] + + return { header, ddoObj, signature } + } + return null + } + + public abstract processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider, + eventName?: string + ): Promise +} diff --git a/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts b/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts new file mode 100644 index 000000000..87223b102 --- /dev/null +++ b/src/components/Indexer/processors/DispenserActivatedEventProcessor.ts @@ -0,0 +1,97 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesDispenserAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } + +export class DispenserActivatedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + Dispenser.abi, + EVENTS.DISPENSER_ACTIVATED + ) + const datatokenAddress = decodedEventData.args[0].toString() + const datatokenContract = getDtContract(signer, datatokenAddress) + + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected DispenserActivated changed for ${did}, but it does not exists.` + ) + return + } + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesDispenserAlreadyExist(event.address, stat.prices)[0] + ) { + stat.prices.push({ + type: 'dispenser', + price: '0', + contract: event.address, + token: datatokenAddress + }) + break + } else if (doesDispenserAlreadyExist(event.address, stat.prices)[0]) { + break + } + } + } else { + INDEXER_LOGGER.logMessage(`[DispenserActivated] - No stats were found on the ddo`) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[DispenserActivated] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + ddo.indexedMetadata.stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + } + + const savedDDO = await this.createOrUpdateDDO( + ddoInstance, + EVENTS.DISPENSER_ACTIVATED + ) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts b/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts new file mode 100644 index 000000000..1651911c1 --- /dev/null +++ b/src/components/Indexer/processors/DispenserCreatedEventProcessor.ts @@ -0,0 +1,99 @@ +import { DDOManager, PriceType } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesDispenserAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } + +export class DispenserCreatedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + Dispenser.abi, + EVENTS.DISPENSER_CREATED + ) + const datatokenAddress = decodedEventData.args[0].toString() + const datatokenContract = getDtContract(signer, datatokenAddress) + + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected DispenserCreated changed for ${did}, but it does not exists.` + ) + return + } + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesDispenserAlreadyExist(event.address, stat.prices)[0] + ) { + const price = { + type: 'dispenser' as PriceType, + price: '0', + contract: event.address, + token: datatokenAddress + } + stat.prices.push(price) + break + } else if (doesDispenserAlreadyExist(event.address, stat.prices)[0]) { + break + } + } + } else { + INDEXER_LOGGER.logMessage(`[DispenserCreated] - No stats were found on the ddo`) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[DispenserCreated] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + const { stats } = ddoInstance.getAssetFields().indexedMetadata + stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats } }) + } + + const savedDDO = await this.createOrUpdateDDO(ddoInstance, EVENTS.DISPENSER_CREATED) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts b/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts new file mode 100644 index 000000000..3c800e634 --- /dev/null +++ b/src/components/Indexer/processors/DispenserDeactivatedEventProcessor.ts @@ -0,0 +1,106 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesDispenserAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } + +export class DispenserDeactivatedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + Dispenser.abi, + EVENTS.DISPENSER_DEACTIVATED + ) + const datatokenAddress = decodedEventData.args[0].toString() + const datatokenContract = getDtContract(signer, datatokenAddress) + + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected DispenserDeactivated changed for ${did}, but it does not exists.` + ) + return + } + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + doesDispenserAlreadyExist(event.address, stat.prices)[0] + ) { + const price = doesDispenserAlreadyExist(event.address, stat.prices)[1] + const index = stat.prices.indexOf(price) + stat.prices.splice(index, 1) + break + } else if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesDispenserAlreadyExist(event.address, stat.prices)[0] + ) { + INDEXER_LOGGER.logMessage( + `Detected DispenserDeactivated changed for ${event.address}, but dispenser does not exist in the DDO pricing.` + ) + break + } + } + } else { + INDEXER_LOGGER.logMessage( + `[DispenserDeactivated] - No stats were found on the ddo` + ) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[DispenserDeactivated] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + const { stats } = ddoInstance.getAssetFields().indexedMetadata + stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats } }) + } + + const savedDDO = await this.createOrUpdateDDO( + ddoInstance, + EVENTS.DISPENSER_DEACTIVATED + ) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts b/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts new file mode 100644 index 000000000..8db5def61 --- /dev/null +++ b/src/components/Indexer/processors/ExchangeActivatedEventProcessor.ts @@ -0,0 +1,108 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesFreAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } + +export class ExchangeActivatedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + FixedRateExchange.abi, + EVENTS.EXCHANGE_ACTIVATED + ) + INDEXER_LOGGER.logMessage(`event: ${JSON.stringify(event)}`) + INDEXER_LOGGER.logMessage( + `decodedEventData in exchange activated: ${JSON.stringify(decodedEventData)}` + ) + const exchangeId = decodedEventData.args[0].toString() + const freContract = new ethers.Contract(event.address, FixedRateExchange.abi, signer) + const exchange = await freContract.getExchange(exchangeId) + const datatokenAddress = exchange[1] + const datatokenContract = getDtContract(signer, datatokenAddress) + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected ExchangeActivated changed for ${did}, but it does not exists.` + ) + return + } + + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesFreAlreadyExist(exchangeId, stat.prices)[0] + ) { + stat.prices.push({ + type: 'fixedrate', + price: ethers.formatEther(exchange[5]), + contract: event.address, + token: exchange[3], + exchangeId + }) + break + } else if (doesFreAlreadyExist(event.address, stat.prices)[0]) { + break + } + } + } else { + INDEXER_LOGGER.logMessage(`[ExchangeActivated] - No stats were found on the ddo`) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[ExchangeActivated] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + const { stats } = ddoInstance.getAssetFields().indexedMetadata + stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats } }) + } + + const savedDDO = await this.createOrUpdateDDO( + ddoInstance, + EVENTS.EXCHANGE_ACTIVATED + ) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts b/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts new file mode 100644 index 000000000..661e140e3 --- /dev/null +++ b/src/components/Indexer/processors/ExchangeCreatedEventProcessor.ts @@ -0,0 +1,106 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesFreAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } + +export class ExchangeCreatedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + FixedRateExchange.abi, + EVENTS.EXCHANGE_CREATED + ) + const exchangeId = decodedEventData.args[0].toString() + const freContract = new ethers.Contract(event.address, FixedRateExchange.abi, signer) + const exchange = await freContract.getExchange(exchangeId) + const datatokenAddress = exchange[1] + const datatokenContract = getDtContract(signer, datatokenAddress) + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected ExchangeCreated changed for ${did}, but it does not exists.` + ) + return + } + + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesFreAlreadyExist(exchangeId, stat.prices)[0] + ) { + stat.prices.push({ + type: 'fixedrate', + price: ethers.formatEther(exchange[5]), + contract: event.address, + token: exchange[3], + exchangeId + }) + break + } else if (doesFreAlreadyExist(event.address, stat.prices)[0]) { + break + } + } + } else { + INDEXER_LOGGER.logMessage(`[ExchangeCreated] - No stats were found on the ddo`) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[ExchangeCreated] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + + const { stats } = ddoInstance.getAssetFields().indexedMetadata + stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats } }) + } + + const savedDDO = await this.createOrUpdateDDO( + ddoInstance, + EVENTS.EXCHANGE_ACTIVATED + ) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts b/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts new file mode 100644 index 000000000..7b1200812 --- /dev/null +++ b/src/components/Indexer/processors/ExchangeDeactivatedEventProcessor.ts @@ -0,0 +1,108 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesFreAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } + +export class ExchangeDeactivatedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + FixedRateExchange.abi, + EVENTS.EXCHANGE_DEACTIVATED + ) + const exchangeId = decodedEventData.args[0].toString() + const freContract = new ethers.Contract(event.address, FixedRateExchange.abi, signer) + const exchange = await freContract.getExchange(exchangeId) + const datatokenAddress = exchange[1] + const datatokenContract = getDtContract(signer, datatokenAddress) + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected ExchangeDeactivated changed for ${did}, but it does not exists.` + ) + return + } + + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + doesFreAlreadyExist(exchangeId, stat.prices)[0] + ) { + const price = doesFreAlreadyExist(exchangeId, stat.prices)[1] + const index = stat.prices.indexOf(price) + stat.prices.splice(index, 1) + break + } else if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesFreAlreadyExist(exchangeId, stat.prices)[0] + ) { + INDEXER_LOGGER.logMessage( + `Detected ExchangeDeactivated changed for ${event.address}, but exchange ${exchangeId} does not exist in the DDO pricing.` + ) + break + } + } + } else { + INDEXER_LOGGER.logMessage( + `[ExchangeDeactivated] - No stats were found on the ddo` + ) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[ExchangeDeactivated] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + const { stats } = ddoInstance.getAssetFields().indexedMetadata + stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats } }) + } + + const savedDDO = await this.createOrUpdateDDO( + ddoInstance, + EVENTS.EXCHANGE_DEACTIVATED + ) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts b/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts new file mode 100644 index 000000000..d7e0a9c84 --- /dev/null +++ b/src/components/Indexer/processors/ExchangeRateChangedEventProcessor.ts @@ -0,0 +1,108 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + doesFreAlreadyExist, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } + +export class ExchangeRateChangedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + FixedRateExchange.abi, + EVENTS.EXCHANGE_RATE_CHANGED + ) + const exchangeId = ethers.toUtf8Bytes(decodedEventData.args[0].toString()) + const newRate = decodedEventData.args[2].toString() + const freContract = new ethers.Contract(event.address, FixedRateExchange.abi, signer) + const exchange = await freContract.getExchange(exchangeId) + const datatokenAddress = exchange[1] + const datatokenContract = getDtContract(signer, datatokenAddress) + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected ExchangeRateChanged changed for ${did}, but it does not exists.` + ) + return + } + + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + doesFreAlreadyExist(exchangeId, stat.prices)[0] + ) { + const price = doesFreAlreadyExist(exchangeId, stat.prices)[1] + price.price = newRate + break + } else if ( + stat.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase() && + !doesFreAlreadyExist(exchangeId, stat.prices)[0] + ) { + INDEXER_LOGGER.logMessage( + `[ExchangeRateChanged] - Could not find the exchange in DDO ${did} prices` + ) + return + } + } + } else { + INDEXER_LOGGER.logMessage( + `[ExchangeRateChanged] - No stats were found on the ddo` + ) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, datatokenAddress) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[ExchangeRateChanged] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + const { stats } = ddoInstance.getAssetFields().indexedMetadata + stats.push({ + datatokenAddress, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 0, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats } }) + } + + const savedDDO = await this.createOrUpdateDDO( + ddoInstance, + EVENTS.EXCHANGE_RATE_CHANGED + ) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/MetadataEventProcessor.ts b/src/components/Indexer/processors/MetadataEventProcessor.ts new file mode 100644 index 000000000..33cdf998c --- /dev/null +++ b/src/components/Indexer/processors/MetadataEventProcessor.ts @@ -0,0 +1,395 @@ +import { DDOManager, DDO, VersionedDDO } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider, getAddress } from 'ethers' +import { + ENVIRONMENT_VARIABLES, + EVENTS, + MetadataStates +} from '../../../utils/constants.js' +import { deleteIndexedMetadataIfExists } from '../../../utils/asset.js' +import { getConfiguration } from '../../../utils/config.js' +import { checkCredentialOnAccessList } from '../../../utils/credentials.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { asyncCallWithTimeout, streamToString } from '../../../utils/util.js' +import { PolicyServer } from '../../policyServer/index.js' +import { wasNFTDeployedByOurFactory, getPricingStatsForDddo } from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import { Purgatory } from '../purgatory.js' +import { isRemoteDDO } from '../../core/utils/validateDdoHandler.js' +import { Storage } from '../../storage/index.js' +import { Readable } from 'stream' + +export class MetadataEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider, + eventName: string + ): Promise { + let did = 'did:op' + try { + const { ddo: ddoDatabase, ddoState } = await getDatabase() + const wasDeployedByUs = await wasNFTDeployedByOurFactory( + chainId, + signer, + getAddress(event.address) + ) + + if (!wasDeployedByUs) { + INDEXER_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `NFT not deployed by OPF factory`, + true + ) + return + } + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + ERC721Template.abi, + eventName + ) + const metadata = decodedEventData.args[4] + const metadataHash = decodedEventData.args[5] + const flag = decodedEventData.args[3] + const owner = decodedEventData.args[0] + const decryptedDDO = await this.decryptDDO( + decodedEventData.args[2], + flag, + owner, + event.address, + chainId, + event.transactionHash, + metadataHash, + metadata + ) + let ddo = await this.processDDO(decryptedDDO) + if ( + !isRemoteDDO(decryptedDDO) && + parseInt(flag) !== 2 && + !this.checkDdoHash(ddo, metadataHash) + ) { + return + } + if (ddo.encryptedData) { + const proof = await this.decryptDDOIPFS( + decodedEventData.args[2], + owner, + ddo.encryptedData + ) + + const data = this.getDataFromProof(proof) + const ddoInstance = DDOManager.getDDOClass(data.ddoObj) + ddo = ddoInstance.updateFields({ + proof: { signature: data.signature, header: data.header } + }) + } + const clonedDdo = structuredClone(ddo) + const updatedDdo = deleteIndexedMetadataIfExists(clonedDdo) + const ddoInstance = DDOManager.getDDOClass(updatedDdo) + if (updatedDdo.id !== ddoInstance.makeDid(event.address, chainId.toString(10))) { + INDEXER_LOGGER.error( + `Decrypted DDO ID is not matching the generated hash for DID.` + ) + return + } + // for unencrypted DDOs + if (parseInt(flag) !== 2 && !this.checkDdoHash(updatedDdo, metadataHash)) { + return + } + + // check authorized publishers + const { authorizedPublishers, authorizedPublishersList } = await getConfiguration() + if (authorizedPublishers.length > 0) { + // if is not there, do not index + const authorized: string[] = authorizedPublishers.filter((address) => + // do a case insensitive search + address.toLowerCase().includes(owner.toLowerCase()) + ) + if (!authorized.length) { + INDEXER_LOGGER.error( + `DDO owner ${owner} is NOT part of the ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS.name} group.` + ) + return + } + } + if (authorizedPublishersList) { + // check accessList + const isAuthorized = await checkCredentialOnAccessList( + authorizedPublishersList, + String(chainId), + owner, + signer + ) + if (!isAuthorized) { + INDEXER_LOGGER.error( + `DDO owner ${owner} is NOT part of the ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name} access group.` + ) + return + } + } + + // stuff that we overwrite + did = ddoInstance.getDid() + const { services } = ddoInstance.getDDOFields() + ddoInstance.updateFields({ + chainId, + nftAddress: event.address, + datatokens: await this.getTokenInfo(services, signer) + }) + + INDEXER_LOGGER.logMessage( + `Processed new DDO data ${ddoInstance.getDid()} with txHash ${ + event.transactionHash + } from block ${event.blockNumber}`, + true + ) + + let previousDdoInstance + const previousDdo = await ddoDatabase.retrieve(ddoInstance.getDid()) + if (previousDdo) { + previousDdoInstance = DDOManager.getDDOClass(previousDdo) + } + if (eventName === EVENTS.METADATA_CREATED) { + if ( + previousDdoInstance && + previousDdoInstance.getAssetFields().indexedMetadata.nft.state === + MetadataStates.ACTIVE + ) { + INDEXER_LOGGER.logMessage( + `DDO ${ddoInstance.getDid()} is already registered as active`, + true + ) + await ddoState.update( + this.networkId, + did, + event.address, + event.transactionHash, + false, + `DDO ${ddoInstance.getDid()} is already registered as active` + ) + return + } + } + + if (eventName === EVENTS.METADATA_UPDATED) { + if (!previousDdoInstance) { + INDEXER_LOGGER.logMessage( + `Previous DDO with did ${ddoInstance.getDid()} was not found the database. Maybe it was deleted/hidden to some violation issues`, + true + ) + await ddoState.update( + this.networkId, + did, + event.address, + event.transactionHash, + false, + `Previous DDO with did ${ddoInstance.getDid()} was not found the database. Maybe it was deleted/hidden to some violation issues` + ) + return + } + const [isUpdateable, error] = this.isUpdateable( + previousDdoInstance, + event.transactionHash, + event.blockNumber + ) + if (!isUpdateable) { + INDEXER_LOGGER.error( + `Error encountered when checking if the asset is eligiable for update: ${error}` + ) + await ddoState.update( + this.networkId, + did, + event.address, + event.transactionHash, + false, + error + ) + return + } + } + const from = decodedEventData.args[0].toString() + let ddoUpdatedWithPricing + // we need to store the event data (either metadata created or update and is updatable) + if ( + [EVENTS.METADATA_CREATED, EVENTS.METADATA_UPDATED].includes(eventName) && + this.isValidDtAddressFromServices(ddoInstance.getDDOFields().services) + ) { + const ddoWithPricing = await getPricingStatsForDddo(ddoInstance, signer) + const nft = await this.getNFTInfo( + ddoWithPricing.getDDOFields().nftAddress, + signer, + owner, + parseInt(decodedEventData.args[6]) + ) + + let block + let datetime + if (event.blockNumber) { + block = event.blockNumber + // try get block & timestamp from block (only wait 2.5 secs maximum) + const promiseFn = provider.getBlock(event.blockNumber) + const result = await asyncCallWithTimeout(promiseFn, 2500) + if (result.data !== null && !result.timeout) { + datetime = new Date(result.data.timestamp * 1000).toJSON() + } + } + + const fieldsToUpdate = { + indexedMetadata: { + nft, + event: { + txid: event.transactionHash, + from, + contract: event.address, + block, + datetime + } + } + } + ddoWithPricing.updateFields(fieldsToUpdate) + + // policyServer check + const policyServer = new PolicyServer() + let policyStatus + if (eventName === EVENTS.METADATA_UPDATED) + policyStatus = await policyServer.checkUpdateDDO( + ddoWithPricing.getDDOData() as DDO, + this.networkId, + event.transactionHash, + event + ) + else + policyStatus = await policyServer.checknewDDO( + ddoWithPricing.getDDOData() as DDO, + this.networkId, + event.transactionHash, + event + ) + if (!policyStatus.success) { + await ddoState.update( + this.networkId, + did, + event.address, + event.transactionHash, + false, + policyStatus.message + ) + return + } + ddoUpdatedWithPricing = ddoWithPricing + } + // always call, but only create instance once + const purgatory = await Purgatory.getInstance() + // if purgatory is disabled just return false + const state = await this.getPurgatoryState(ddo, from, purgatory) + + ddoUpdatedWithPricing.updateFields({ + indexedMetadata: { purgatory: { state } } + }) + if (state === false) { + // TODO: insert in a different collection for purgatory DDOs + const saveDDO = await this.createOrUpdateDDO(ddoUpdatedWithPricing, eventName) + INDEXER_LOGGER.logMessage(`saved DDO: ${JSON.stringify(saveDDO)}`) + return saveDDO + } + } catch (error) { + const { ddoState } = await getDatabase() + await ddoState.update( + this.networkId, + did, + event.address, + event.transactionHash, + false, + error.message + ) + INDEXER_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `Error processMetadataEvents: ${error}`, + true + ) + } + } + + async getPurgatoryState( + ddo: any, + owner: string, + purgatory: Purgatory + ): Promise { + if (purgatory.isEnabled()) { + const state: boolean = + (await purgatory.isBannedAsset(ddo.id)) || + (await purgatory.isBannedAccount(owner)) + return state + } + return false + } + + async updatePurgatoryStateDdo( + ddo: VersionedDDO, + owner: string, + purgatory: Purgatory + ): Promise> { + if (!purgatory.isEnabled()) { + return ddo.updateFields({ + indexedMetadata: { + purgatory: { + state: false + } + } + }) + } + + const state: boolean = + (await purgatory.isBannedAsset(ddo.getDid())) || + (await purgatory.isBannedAccount(owner)) + return ddo.updateFields({ + indexedMetadata: { + purgatory: { + state + } + } + }) + } + + isUpdateable( + previousDdo: VersionedDDO, + txHash: string, + block: number + ): [boolean, string] { + let errorMsg: string + const ddoTxId = previousDdo.getAssetFields().indexedMetadata?.event?.txid + // do not update if we have the same txid + if (txHash === ddoTxId) { + errorMsg = `Previous DDO has the same tx id, no need to update: event-txid=${txHash} <> asset-event-txid=${ddoTxId}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_DEBUG, errorMsg, true) + return [false, errorMsg] + } + const ddoBlock = previousDdo.getAssetFields().indexedMetadata?.event?.block + // do not update if we have the same block + if (block === ddoBlock) { + errorMsg = `Asset was updated later (block: ${ddoBlock}) vs transaction block: ${block}` + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_DEBUG, errorMsg, true) + return [false, errorMsg] + } + + return [true, ''] + } + + async processDDO(ddo: any) { + if (isRemoteDDO(ddo)) { + INDEXER_LOGGER.logMessage('DDO is remote', true) + + const storage = Storage.getStorageClass(ddo.remote, await getConfiguration()) + const result = await storage.getReadableStream() + const streamToStringDDO = await streamToString(result.stream as Readable) + + return JSON.parse(streamToStringDDO) + } + + return ddo + } +} diff --git a/src/components/Indexer/processors/MetadataStateEventProcessor.ts b/src/components/Indexer/processors/MetadataStateEventProcessor.ts new file mode 100644 index 000000000..04bc5a59d --- /dev/null +++ b/src/components/Indexer/processors/MetadataStateEventProcessor.ts @@ -0,0 +1,99 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS, MetadataStates } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import { getDid } from '../utils.js' + +export class MetadataStateEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + _signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + INDEXER_LOGGER.logMessage(`Processing metadata state event...`, true) + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + ERC721Template.abi, + EVENTS.METADATA_STATE + ) + const metadataState = parseInt(decodedEventData.args[1].toString()) + INDEXER_LOGGER.logMessage(`Processed new metadata state ${metadataState} `, true) + INDEXER_LOGGER.logMessage( + `NFT address in processing MetadataState: ${event.address} `, + true + ) + const did = getDid(event.address, chainId) + + try { + const { ddo: ddoDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected MetadataState changed for ${did}, but it does not exists.` + ) + return + } + + const ddoInstance = DDOManager.getDDOClass(ddo) + INDEXER_LOGGER.logMessage(`Found did ${did} on network ${chainId}`) + + if ( + 'nft' in ddoInstance.getAssetFields().indexedMetadata && + ddoInstance.getAssetFields().indexedMetadata.nft.state !== metadataState + ) { + if ( + ddoInstance.getAssetFields().indexedMetadata.nft.state === + MetadataStates.ACTIVE && + [MetadataStates.REVOKED, MetadataStates.DEPRECATED].includes(metadataState) + ) { + INDEXER_LOGGER.logMessage( + `DDO became non-visible from ${ + ddoInstance.getAssetFields().indexedMetadata.nft.state + } to ${metadataState}` + ) + + // We should keep it here, because in further development we'll store + // the previous structure of the non-visible DDOs (full version) + // in case their state changes back to active. + const shortDdoInstance = DDOManager.getDDOClass({ + id: ddo.id, + version: 'deprecated', + chainId, + nftAddress: ddo.nftAddress, + indexedMetadata: { + nft: { + state: metadataState + } + } + }) + + const savedDDO = await this.createOrUpdateDDO( + shortDdoInstance, + EVENTS.METADATA_STATE + ) + return savedDDO + } + } + + // Still update until we validate and polish schemas for DDO. + // But it should update ONLY if the first condition is met. + // Check https://github.com/oceanprotocol/aquarius/blob/84a560ea972485e46dd3c2cfc3cdb298b65d18fa/aquarius/events/processors.py#L663 + ddoInstance.getDDOData().indexedMetadata.nft = { + state: metadataState + } + INDEXER_LOGGER.logMessage( + `Found did ${did} for state updating on network ${chainId}` + ) + const savedDDO = await this.createOrUpdateDDO(ddoInstance, EVENTS.METADATA_STATE) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/OrderReusedEventProcessor.ts b/src/components/Indexer/processors/OrderReusedEventProcessor.ts new file mode 100644 index 000000000..c47c4c00a --- /dev/null +++ b/src/components/Indexer/processors/OrderReusedEventProcessor.ts @@ -0,0 +1,122 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { + getDtContract, + getDid, + findServiceIdByDatatoken, + getPricesByDt +} from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } + +export class OrderReusedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + ERC20Template.abi, + EVENTS.ORDER_REUSED + ) + const startOrderId = decodedEventData.args[0].toString() + const timestamp = parseInt(decodedEventData.args[2].toString()) + const payer = decodedEventData.args[1].toString() + INDEXER_LOGGER.logMessage(`Processed reused order at ${timestamp}`, true) + + const datatokenContract = getDtContract(signer, event.address) + + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase, order: orderDatabase } = await getDatabase() + const ddo = await ddoDatabase.retrieve(did) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected OrderReused changed for ${did}, but it does not exists.` + ) + return + } + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getAssetFields().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + + if (!Array.isArray(ddoInstance.getAssetFields().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + + if (ddoInstance.getAssetFields().indexedMetadata.stats.length !== 0) { + for (const stat of ddoInstance.getAssetFields().indexedMetadata.stats) { + if (stat.datatokenAddress.toLowerCase() === event.address?.toLowerCase()) { + stat.orders += 1 + break + } + } + } else { + INDEXER_LOGGER.logMessage(`[OrderReused] - No stats were found on the ddo`) + const serviceIdToFind = findServiceIdByDatatoken(ddoInstance, event.address) + if (!serviceIdToFind) { + INDEXER_LOGGER.logMessage( + `[OrderReused] - This datatoken does not contain this service. Invalid service id!` + ) + return + } + const existingStats = ddoInstance.getAssetFields().indexedMetadata.stats + existingStats.push({ + datatokenAddress: event.address, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: serviceIdToFind, + orders: 1, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ + indexedMetadata: { + stats: existingStats + } + }) + } + + try { + const startOrder = await orderDatabase.retrieve(startOrderId) + if (!startOrder) { + INDEXER_LOGGER.logMessage( + `Detected OrderReused changed for order ${startOrderId}, but it does not exists.` + ) + return + } + await orderDatabase.create( + event.transactionHash, + 'reuseOrder', + timestamp, + startOrder.consumer, + payer, + event.address, + nftAddress, + did, + startOrderId + ) + } catch (error) { + INDEXER_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `Error retrieving startOrder for reuseOrder: ${error}`, + true + ) + } + + const savedDDO = await this.createOrUpdateDDO(ddoInstance, EVENTS.ORDER_REUSED) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/OrderStartedEventProcessor.ts b/src/components/Indexer/processors/OrderStartedEventProcessor.ts new file mode 100644 index 000000000..73f9ade9e --- /dev/null +++ b/src/components/Indexer/processors/OrderStartedEventProcessor.ts @@ -0,0 +1,97 @@ +import { DDOManager } from '@oceanprotocol/ddo-js' +import { ethers, Signer, JsonRpcApiProvider } from 'ethers' +import { EVENTS } from '../../../utils/constants.js' +import { getDatabase } from '../../../utils/database.js' +import { INDEXER_LOGGER } from '../../../utils/logging/common.js' +import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' +import { getDtContract, getDid, getPricesByDt } from '../utils.js' +import { BaseEventProcessor } from './BaseProcessor.js' +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } + +export class OrderStartedEventProcessor extends BaseEventProcessor { + async processEvent( + event: ethers.Log, + chainId: number, + signer: Signer, + provider: JsonRpcApiProvider + ): Promise { + const decodedEventData = await this.getEventData( + provider, + event.transactionHash, + ERC20Template.abi, + EVENTS.ORDER_STARTED + ) + const serviceIndex = parseInt(decodedEventData.args[3].toString()) + const timestamp = parseInt(decodedEventData.args[4].toString()) + const consumer = decodedEventData.args[0].toString() + const payer = decodedEventData.args[1].toString() + INDEXER_LOGGER.logMessage( + `Processed new order for service index ${serviceIndex} at ${timestamp}`, + true + ) + const datatokenContract = getDtContract(signer, event.address) + + const nftAddress = await datatokenContract.getERC721Address() + const did = getDid(nftAddress, chainId) + try { + const { ddo: ddoDatabase, order: orderDatabase } = await getDatabase() + const ddo = await this.getDDO(ddoDatabase, nftAddress, chainId) + if (!ddo) { + INDEXER_LOGGER.logMessage( + `Detected OrderStarted changed for ${did}, but it does not exists.` + ) + return + } + const ddoInstance = DDOManager.getDDOClass(ddo) + if (!ddoInstance.getDDOData().indexedMetadata) { + ddoInstance.updateFields({ indexedMetadata: {} }) + } + if (!Array.isArray(ddoInstance.getDDOData().indexedMetadata.stats)) { + ddoInstance.updateFields({ indexedMetadata: { stats: [] } }) + } + if ( + ddoInstance.getDDOData().indexedMetadata.stats.length !== 0 && + ddoInstance + .getDDOFields() + .services[serviceIndex].datatokenAddress?.toLowerCase() === + event.address?.toLowerCase() + ) { + for (const stat of ddoInstance.getDDOData().indexedMetadata.stats) { + if (stat.datatokenAddress.toLowerCase() === event.address?.toLowerCase()) { + stat.orders += 1 + break + } + } + } else if (ddoInstance.getDDOData().indexedMetadata.stats.length === 0) { + const existingStats = ddoInstance.getDDOData().indexedMetadata.stats + existingStats.push({ + datatokenAddress: event.address, + name: await datatokenContract.name(), + symbol: await datatokenContract.symbol(), + serviceId: ddoInstance.getDDOFields().services[serviceIndex].id, + orders: 1, + prices: await getPricesByDt(datatokenContract, signer) + }) + + ddoInstance.updateFields({ indexedMetadata: { stats: existingStats } }) + } + await orderDatabase.create( + event.transactionHash, + 'startOrder', + timestamp, + consumer, + payer, + ddoInstance.getDDOFields().services[serviceIndex].datatokenAddress, + nftAddress, + did + ) + INDEXER_LOGGER.logMessage( + `Found did ${did} for order starting on network ${chainId}` + ) + const savedDDO = await this.createOrUpdateDDO(ddoInstance, EVENTS.ORDER_STARTED) + return savedDDO + } catch (err) { + INDEXER_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error retrieving DDO: ${err}`, true) + } + } +} diff --git a/src/components/Indexer/processors/index.ts b/src/components/Indexer/processors/index.ts new file mode 100644 index 000000000..dc6501a82 --- /dev/null +++ b/src/components/Indexer/processors/index.ts @@ -0,0 +1,16 @@ +import { BaseEventProcessor } from './BaseProcessor' + +export * from './DispenserActivatedEventProcessor.js' +export * from './DispenserCreatedEventProcessor.js' +export * from './DispenserDeactivatedEventProcessor.js' +export * from './ExchangeActivatedEventProcessor.js' +export * from './ExchangeCreatedEventProcessor.js' +export * from './ExchangeDeactivatedEventProcessor.js' +export * from './ExchangeRateChangedEventProcessor.js' +export * from './MetadataEventProcessor.js' +export * from './MetadataStateEventProcessor.js' +export * from './OrderReusedEventProcessor.js' +export * from './OrderStartedEventProcessor.js' +export * from './BaseProcessor.js' + +export type ProcessorConstructor = new (chainId: number) => BaseEventProcessor diff --git a/src/components/Indexer/utils.ts b/src/components/Indexer/utils.ts index 7f5543b8f..d62d3bfed 100644 --- a/src/components/Indexer/utils.ts +++ b/src/components/Indexer/utils.ts @@ -1,60 +1,22 @@ -import { JsonRpcApiProvider, Signer, ethers, getAddress, Interface } from 'ethers' +import { JsonRpcApiProvider, Signer, ethers, getAddress } from 'ethers' import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } import { ENVIRONMENT_VARIABLES, - EVENTS, EVENT_HASHES, - existsEnvironmentVariable, - getAllowedValidators + existsEnvironmentVariable } from '../../utils/index.js' -import { BlocksEvents, NetworkEvent, ProcessingEvents } from '../../@types/blockchain.js' -import { - MetadataEventProcessor, - MetadataStateEventProcessor, - OrderReusedEventProcessor, - OrderStartedEventProcessor -} from './processor.js' +import { NetworkEvent } from '../../@types/blockchain.js' import { INDEXER_LOGGER } from '../../utils/logging/common.js' -import { fetchEventFromTransaction } from '../../utils/util.js' import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } -import { LOG_LEVELS_STR } from '../../utils/logging/Logger.js' import { getOceanArtifactsAdressesByChainId } from '../../utils/address.js' import { CommandStatus, JobStatus } from '../../@types/commands.js' import { create256Hash } from '../../utils/crypt.js' - -let metadataEventProccessor: MetadataEventProcessor -let metadataStateEventProcessor: MetadataStateEventProcessor -let orderReusedEventProcessor: OrderReusedEventProcessor -let orderStartedEventProcessor: OrderStartedEventProcessor - -function getMetadataEventProcessor(chainId: number): MetadataEventProcessor { - if (!metadataEventProccessor) { - metadataEventProccessor = new MetadataEventProcessor(chainId) - } - return metadataEventProccessor -} - -function getMetadataStateEventProcessor(chainId: number): MetadataStateEventProcessor { - if (!metadataStateEventProcessor) { - metadataStateEventProcessor = new MetadataStateEventProcessor(chainId) - } - return metadataStateEventProcessor -} - -function getOrderReusedEventProcessor(chainId: number): OrderReusedEventProcessor { - if (!orderReusedEventProcessor) { - orderReusedEventProcessor = new OrderReusedEventProcessor(chainId) - } - return orderReusedEventProcessor -} - -function getOrderStartedEventProcessor(chainId: number): OrderStartedEventProcessor { - if (!orderStartedEventProcessor) { - orderStartedEventProcessor = new OrderStartedEventProcessor(chainId) - } - return orderStartedEventProcessor -} +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } +import FixedRateExchange from '@oceanprotocol/contracts/artifacts/contracts/pools/fixedRate/FixedRateExchange.sol/FixedRateExchange.json' assert { type: 'json' } +import { createHash } from 'crypto' +import { ServicePrice } from '../../@types/IndexedMetadata.js' +import { VersionedDDO } from '@oceanprotocol/ddo-js' export const getContractAddress = (chainId: number, contractName: string): string => { const addressFile = getOceanArtifactsAdressesByChainId(chainId) @@ -101,29 +63,6 @@ export const retrieveChunkEvents = async ( } } -export const processBlocks = async ( - blockLogs: ethers.Log[], - signer: Signer, - provider: JsonRpcApiProvider, - network: number, - lastIndexedBlock: number, - count: number -): Promise => { - try { - const events: any[] | BlocksEvents = - blockLogs && blockLogs.length > 0 - ? await processChunkLogs(blockLogs, signer, provider, network) - : [] - - return { - lastBlock: lastIndexedBlock + count, - foundEvents: events - } - } catch (error) { - throw new Error(` Error processing chunk of blocks events ${error.message}`) - } -} - export function findEventByKey(keyToFind: string): NetworkEvent { for (const [key, value] of Object.entries(EVENT_HASHES)) { if (key === keyToFind) { @@ -133,123 +72,6 @@ export function findEventByKey(keyToFind: string): NetworkEvent { return null } -export const processChunkLogs = async ( - logs: readonly ethers.Log[], - signer: Signer, - provider: JsonRpcApiProvider, - chainId: number -): Promise => { - const storeEvents: BlocksEvents = {} - INDEXER_LOGGER.logMessage(`Processing ${logs.length} logs for chainId ${chainId}`, true) - if (logs.length > 0) { - const allowedValidators = getAllowedValidators() - const checkMetadataValidated = allowedValidators.length > 0 - for (const log of logs) { - const event = findEventByKey(log.topics[0]) - if (event && Object.values(EVENTS).includes(event.type)) { - // only log & process the ones we support - INDEXER_LOGGER.logMessage( - `-- ${event.type} -- triggered for ${log.transactionHash}`, - true - ) - if ( - event.type === EVENTS.METADATA_CREATED || - event.type === EVENTS.METADATA_UPDATED || - event.type === EVENTS.METADATA_STATE - ) { - if (checkMetadataValidated) { - const txReceipt = await provider.getTransactionReceipt(log.transactionHash) - const metadataProofs = fetchEventFromTransaction( - txReceipt, - 'MetadataValidated', - new Interface(ERC20Template.abi) - ) - if (!metadataProofs) { - INDEXER_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `Metadata Proof validator not allowed`, - true - ) - continue - } - const validators = metadataProofs.map((metadataProof) => - getAddress(metadataProof.args[0].toString()) - ) - const allowed = allowedValidators.filter( - (allowedValidator) => validators.indexOf(allowedValidator) !== -1 - ) - if (!allowed.length) { - INDEXER_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `Metadata Proof validators list is empty`, - true - ) - continue - } - } - } - if ( - event.type === EVENTS.METADATA_CREATED || - event.type === EVENTS.METADATA_UPDATED - ) { - const processor = getMetadataEventProcessor(chainId) - const rets = await processor.processEvent( - log, - chainId, - signer, - provider, - event.type - ) - if (rets) storeEvents[event.type] = rets - } else if (event.type === EVENTS.METADATA_STATE) { - const processor = getMetadataStateEventProcessor(chainId) - storeEvents[event.type] = await processor.processEvent(log, chainId, provider) - } else if (event.type === EVENTS.EXCHANGE_CREATED) { - storeEvents[event.type] = procesExchangeCreated() - } else if (event.type === EVENTS.EXCHANGE_RATE_CHANGED) { - storeEvents[event.type] = processExchangeRateChanged() - } else if (event.type === EVENTS.ORDER_STARTED) { - INDEXER_LOGGER.logMessage(`-- ${event.type} -- getting processor`, true) - const processor = getOrderStartedEventProcessor(chainId) - INDEXER_LOGGER.logMessage(`-- ${event.type} -- getted processor`, true) - storeEvents[event.type] = await processor.processEvent( - log, - chainId, - signer, - provider - ) - INDEXER_LOGGER.logMessage(`-- ${event.type} -- processed event`, true) - } else if (event.type === EVENTS.ORDER_REUSED) { - const processor = getOrderReusedEventProcessor(chainId) - storeEvents[event.type] = await processor.processEvent( - log, - chainId, - signer, - provider - ) - } else if (event.type === EVENTS.TOKEN_URI_UPDATE) { - storeEvents[event.type] = processTokenUriUpadate() - } - } - } - return storeEvents - } - - return {} -} - -const procesExchangeCreated = (): string => { - return 'EXCHANGE_CREATED' -} - -const processExchangeRateChanged = (): string => { - return 'EXCHANGE_RATE_CHANGED' -} - -const processTokenUriUpadate = (): string => { - return 'TOKEN_URI_UPDATE' -} - export const getNFTContract = (signer: Signer, address: string): ethers.Contract => { address = getAddress(address) return getContract(signer, 'ERC721Template', address) @@ -333,3 +155,242 @@ export function buildJobIdentifier(command: string, extra: string[]): JobStatus hash: create256Hash(extra.join('')) } } + +export function findServiceIdByDatatoken( + ddo: VersionedDDO, + datatokenAddress: string +): string { + for (const s of ddo.getDDOFields().services) { + if (s.datatokenAddress.toLowerCase() === datatokenAddress.toLowerCase()) { + return s.id + } + } + return null +} + +export function doesDispenserAlreadyExist( + dispenserAddress: string, + prices: ServicePrice[] +): [boolean, ServicePrice?] { + for (const price of prices) { + if (dispenserAddress.toLowerCase() === price.contract.toLowerCase()) { + return [true, price] + } + } + return [false, null] +} + +export function doesFreAlreadyExist( + exchangeId: ethers.BytesLike, + prices: ServicePrice[] +): [boolean, ServicePrice?] { + for (const price of prices) { + if (exchangeId === price.exchangeId) { + return [true, price] + } + } + return [false, null] +} + +export async function getPricesByDt( + datatoken: ethers.Contract, + signer: Signer +): Promise { + let dispensers = [] + let fixedRates = [] + let prices: ServicePrice[] = [] + try { + dispensers = await datatoken.getDispensers() + } catch (e) { + INDEXER_LOGGER.error(`[GET PRICES] failure when retrieving dispensers: ${e}`) + } + try { + fixedRates = await datatoken.getFixedRates() + } catch (e) { + INDEXER_LOGGER.error( + `[GET PRICES] failure when retrieving fixed rate exchanges: ${e}` + ) + } + if (dispensers.length === 0 && fixedRates.length === 0) { + prices = [] + } else { + if (dispensers) { + for (const dispenser of dispensers) { + const dispenserContract = new ethers.Contract(dispenser, Dispenser.abi, signer) + try { + const [isActive, ,] = await dispenserContract.status( + await datatoken.getAddress() + ) + if (isActive === true) { + prices.push({ + type: 'dispenser', + price: '0', + contract: dispenser, + token: await datatoken.getAddress() + }) + } + } catch (e) { + INDEXER_LOGGER.error( + `[GET PRICES] failure when retrieving dispenser status from contracts: ${e}` + ) + } + } + } + + if (fixedRates) { + for (const fixedRate of fixedRates) { + const fixedRateContract = new ethers.Contract( + fixedRate[0], + FixedRateExchange.abi, + signer + ) + try { + const [, , , baseTokenAddress, , pricing, isActive, , , , , ,] = + await fixedRateContract.getExchange(fixedRate[1]) + if (isActive === true) { + prices.push({ + type: 'fixedrate', + price: ethers.formatEther(pricing), + token: baseTokenAddress, + contract: fixedRate[0], + exchangeId: fixedRate[1] + }) + } + } catch (e) { + INDEXER_LOGGER.error( + `[GET PRICES] failure when retrieving exchange status from contracts: ${e}` + ) + } + } + } + } + return prices +} + +export async function getPricingStatsForDddo( + ddo: VersionedDDO, + signer: Signer +): Promise { + const ddoData = ddo.getDDOData() + + if (!ddoData.indexedMetadata) { + ddoData.indexedMetadata = {} + } + + if (!Array.isArray(ddoData.indexedMetadata?.stats)) { + ddoData.indexedMetadata.stats = [] + } + + const stats = ddoData.indexedMetadata?.stats || [] + + for (const service of ddo.getDDOFields().services) { + const datatoken = new ethers.Contract( + service.datatokenAddress, + ERC20Template.abi, + signer + ) + let dispensers = [] + let fixedRates = [] + const prices: ServicePrice[] = [] + try { + dispensers = await datatoken.getDispensers() + } catch (e) { + INDEXER_LOGGER.error(`Contract call fails when retrieving dispensers: ${e}`) + } + try { + fixedRates = await datatoken.getFixedRates() + } catch (e) { + INDEXER_LOGGER.error( + `Contract call fails when retrieving fixed rate exchanges: ${e}` + ) + } + if (dispensers.length === 0 && fixedRates.length === 0) { + stats.push({ + datatokenAddress: service.datatokenAddress, + name: await datatoken.name(), + symbol: await datatoken.symbol(), + serviceId: service.id, + orders: 0, + prices: [] + }) + } else { + if (dispensers) { + for (const dispenser of dispensers) { + const dispenserContract = new ethers.Contract(dispenser, Dispenser.abi, signer) + try { + const [isActive, ,] = await dispenserContract.status( + await datatoken.getAddress() + ) + if (isActive === true) { + prices.push({ + type: 'dispenser', + price: '0', + contract: dispenser, + token: service.datatokenAddress + }) + stats.push({ + datatokenAddress: service.datatokenAddress, + name: await datatoken.name(), + symbol: await datatoken.symbol(), + serviceId: service.id, + orders: 0, + prices + }) + } + } catch (e) { + INDEXER_LOGGER.error( + `[GET PRICES] failure when retrieving dispenser status from contracts: ${e}` + ) + } + } + } + } + + if (fixedRates) { + for (const fixedRate of fixedRates) { + const fixedRateContract = new ethers.Contract( + fixedRate[0], + FixedRateExchange.abi, + signer + ) + try { + const [, , , baseTokenAddress, , pricing, isActive, , , , , ,] = + await fixedRateContract.getExchange(fixedRate[1]) + if (isActive === true) { + prices.push({ + type: 'fixedrate', + price: ethers.formatEther(pricing), + token: baseTokenAddress, + contract: fixedRate[0], + exchangeId: fixedRate[1] + }) + stats.push({ + datatokenAddress: service.datatokenAddress, + name: await datatoken.name(), + symbol: await datatoken.symbol(), + serviceId: service.id, + orders: 0, // just created + prices + }) + } + } catch (e) { + INDEXER_LOGGER.error( + `[GET PRICES] failure when retrieving exchange status from contracts: ${e}` + ) + } + } + } + } + + ddo.updateFields({ indexedMetadata: { stats } }) + return ddo +} + +export function getDid(nftAddress: string, chainId: number): string { + return ( + 'did:op:' + + createHash('sha256') + .update(getAddress(nftAddress) + chainId.toString(10)) + .digest('hex') + ) +} diff --git a/src/components/Indexer/version.ts b/src/components/Indexer/version.ts new file mode 100644 index 000000000..ff07932d3 --- /dev/null +++ b/src/components/Indexer/version.ts @@ -0,0 +1,46 @@ +/** + * Compares two semantic version strings + * @param v1 First version + * @param v2 Second version + * @returns -1 if v1 < v2, 0 if v1 = v2, 1 if v1 > v2 + */ +export function compareVersions(v1: string, v2: string): number { + const parts1 = v1.split('.').map(Number) + const parts2 = v2.split('.').map(Number) + + for (let i = 0; i < Math.max(parts1.length, parts2.length); i++) { + const part1 = i < parts1.length ? parts1[i] : 0 + const part2 = i < parts2.length ? parts2[i] : 0 + + if (part1 < part2) return -1 + if (part1 > part2) return 1 + } + + return 0 +} + +/** + * Checks if reindexing is needed based on version comparison + * @param currentVersion Current node version + * @param dbVersion Version stored in database + * @param minVersion Minimum version that requires reindexing + * @returns boolean indicating if reindexing is needed + */ +export function isReindexingNeeded( + currentVersion: string, + dbVersion: string | null, + minVersion: string +): boolean { + // If no DB version exists, reindexing is needed + if (!dbVersion) return true + + // If current version is less than min version, something is wrong + if (compareVersions(currentVersion, minVersion) < 0) { + throw new Error( + `Current version ${currentVersion} is less than minimum required version ${minVersion}` + ) + } + + // If DB version is less than min version, reindexing is needed + return compareVersions(dbVersion, minVersion) < 0 +} diff --git a/src/components/P2P/handleProtocolCommands.ts b/src/components/P2P/handleProtocolCommands.ts index 924b47f05..f5006d9dd 100644 --- a/src/components/P2P/handleProtocolCommands.ts +++ b/src/components/P2P/handleProtocolCommands.ts @@ -7,8 +7,18 @@ import { Command } from '../../@types/commands.js' import { P2PCommandResponse } from '../../@types/OceanNode' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../utils/logging/Logger.js' import StreamConcat from 'stream-concat' -import { Handler } from '../core/handler/handler.js' +import { BaseHandler } from '../core/handler/handler.js' import { getConfiguration } from '../../utils/index.js' +import { checkConnectionsRateLimit } from '../httpRoutes/requestValidator.js' +import { CONNECTIONS_RATE_INTERVAL } from '../../utils/constants.js' +import { RequestLimiter } from '../../OceanNode.js' + +// hold data about last request made +const connectionsData: RequestLimiter = { + lastRequestTime: Date.now(), + requester: '', + numRequests: 0 +} export class ReadableString extends Readable { private sent = false @@ -60,10 +70,14 @@ export async function handleProtocolCommands(otherPeerConnection: any) { return status } - const denyList = await (await getConfiguration()).denyList + const configuration = await getConfiguration() + // check deny list configs + const { denyList } = configuration if (denyList.peers.length > 0) { if (denyList.peers.includes(remotePeer.toString())) { - P2P_LOGGER.error(`Incoming request denied to peer: ${remotePeer}`) + P2P_LOGGER.warn( + `Incoming request denied to peer: ${remotePeer} (peer its on deny list)` + ) if (connectionStatus === 'open') { statusStream = new ReadableString( @@ -79,6 +93,37 @@ export async function handleProtocolCommands(otherPeerConnection: any) { return } } + // check connections rate limit + const requestTime = Date.now() + if (requestTime - connectionsData.lastRequestTime > CONNECTIONS_RATE_INTERVAL) { + // last one was more than 1 minute ago? reset counter + connectionsData.numRequests = 0 + } + // always increment counter + connectionsData.numRequests += 1 + // update time and requester information + connectionsData.lastRequestTime = requestTime + connectionsData.requester = remoteAddr + + // check global rate limits (not ip related) + const requestRateValidation = checkConnectionsRateLimit(configuration, connectionsData) + if (!requestRateValidation.valid) { + P2P_LOGGER.warn( + `Incoming request denied to peer: ${remotePeer} (rate limit exceeded)` + ) + if (connectionStatus === 'open') { + statusStream = new ReadableString( + JSON.stringify(buildWrongCommandStatus(403, 'Rate limit exceeded')) + ) + try { + await pipe(statusStream, otherPeerConnection.stream.sink) + } catch (e) { + P2P_LOGGER.error(e) + } + } + await closeStreamConnection(otherPeerConnection.connection, remotePeer) + return + } try { // eslint-disable-next-line no-unreachable-loop @@ -122,7 +167,7 @@ export async function handleProtocolCommands(otherPeerConnection: any) { P2P_LOGGER.logMessage('Performing P2P task: ' + JSON.stringify(task), true) // we get the handler from the running instance // no need to create a new instance of Handler on every request - const handler: Handler = this.getCoreHandlers().getHandler(task.command) + const handler: BaseHandler = this.getCoreHandlers().getHandler(task.command) let response: P2PCommandResponse = null if (handler === null) { status = { httpStatus: 501, error: `No handler found for command: ${task.command}` } diff --git a/src/components/P2P/index.ts b/src/components/P2P/index.ts index 1c799e441..227e117b4 100644 --- a/src/components/P2P/index.ts +++ b/src/components/P2P/index.ts @@ -3,12 +3,7 @@ import { P2PCommandResponse, TypesenseSearchResponse } from '../../@types/index' import EventEmitter from 'node:events' import clone from 'lodash.clonedeep' -import { - // handlePeerConnect, - // handlePeerDiscovery, - // handlePeerDisconnect, - handleProtocolCommands -} from './handlers.js' +import { handleProtocolCommands } from './handlers.js' import { fromString as uint8ArrayFromString } from 'uint8arrays/from-string' @@ -24,18 +19,27 @@ import { tcp } from '@libp2p/tcp' import { webSockets } from '@libp2p/websockets' import { circuitRelayTransport, circuitRelayServer } from '@libp2p/circuit-relay-v2' import { createLibp2p, Libp2p } from 'libp2p' -import { identify } from '@libp2p/identify' +import { identify, identifyPush } from '@libp2p/identify' import { autoNAT } from '@libp2p/autonat' import { uPnPNAT } from '@libp2p/upnp-nat' import { ping } from '@libp2p/ping' import { dcutr } from '@libp2p/dcutr' -import { kadDHT, passthroughMapper } from '@libp2p/kad-dht' +import { + kadDHT, + passthroughMapper, + removePrivateAddressesMapper, + removePublicAddressesMapper +} from '@libp2p/kad-dht' // import { gossipsub } from '@chainsafe/libp2p-gossipsub' import { EVENTS, cidFromRawString } from '../../utils/index.js' import { Transform } from 'stream' import { Database } from '../database' -import { OceanNodeConfig, FindDDOResponse } from '../../@types/OceanNode' +import { + OceanNodeConfig, + FindDDOResponse, + dhtFilterMethod +} from '../../@types/OceanNode.js' // eslint-disable-next-line camelcase import is_ip_private from 'private-ip' import ip from 'ip' @@ -43,8 +47,7 @@ import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../utils/logging/Logger.js' import { INDEXER_DDO_EVENT_EMITTER } from '../Indexer/index.js' import { P2P_LOGGER } from '../../utils/logging/common.js' import { CoreHandlersRegistry } from '../core/handler/coreHandlersRegistry' -import { type Multiaddr, multiaddr } from '@multiformats/multiaddr' -import { DDOManager } from '@oceanprotocol/ddo-js' +import { Multiaddr, multiaddr } from '@multiformats/multiaddr' // import { getIPv4, getIPv6 } from '../../utils/ip.js' const DEFAULT_OPTIONS = { @@ -125,7 +128,11 @@ export class OceanP2P extends EventEmitter { this._protocol = '/ocean/nodes/1.0.0' // this._interval = setInterval(this._pollPeers.bind(this), this._options.pollInterval) - this._libp2p.handle(this._protocol, handleProtocolCommands.bind(this)) + + // only enable handling of commands if not bootstrap node + if (!this._config.isBootstrap) { + this._libp2p.handle(this._protocol, handleProtocolCommands.bind(this)) + } setInterval(this.republishStoredDDOS.bind(this), REPUBLISH_INTERVAL_HOURS) @@ -158,18 +165,10 @@ export class OceanP2P extends EventEmitter { P2P_LOGGER.debug('Connection closed to:' + peerId.toString()) // Emitted when a peer has been found } - async handlePeerDiscovery(details: any) { + handlePeerDiscovery(details: any) { try { const peerInfo = details.detail - // P2P_LOGGER.debug('Discovered new peer:' + peerInfo.id.toString()) - if (peerInfo.multiaddrs) { - await this._libp2p.peerStore.save(peerInfo.id, { - multiaddrs: peerInfo.multiaddrs - }) - await this._libp2p.peerStore.patch(peerInfo.id, { - multiaddrs: peerInfo.multiaddrs - }) - } + P2P_LOGGER.debug('Discovered new peer:' + peerInfo.id.toString()) } catch (e) { // no panic if it failed // console.error(e) @@ -280,8 +279,23 @@ export class OceanP2P extends EventEmitter { multiaddrs.filter((m) => this.shouldAnnounce(m)) } } + const dhtOptions = { + allowQueryWithZeroPeers: false, + maxInboundStreams: config.p2pConfig.dhtMaxInboundStreams, + maxOutboundStreams: config.p2pConfig.dhtMaxOutboundStreams, + clientMode: false, // always be a server + kBucketSize: 20, + protocol: '/ocean/nodes/1.0.0/kad/1.0.0', + peerInfoMapper: passthroughMapper // see below + } + if (config.p2pConfig.dhtFilter === dhtFilterMethod.filterPrivate) + dhtOptions.peerInfoMapper = removePrivateAddressesMapper + if (config.p2pConfig.dhtFilter === dhtFilterMethod.filterPublic) + dhtOptions.peerInfoMapper = removePublicAddressesMapper let servicesConfig = { identify: identify(), + dht: kadDHT(dhtOptions), + identifyPush: identifyPush(), /* pubsub: gossipsub({ fallbackToFloodsub: false, @@ -296,27 +310,10 @@ export class OceanP2P extends EventEmitter { // enabled: true allowedTopics: ['oceanprotocol._peer-discovery._p2p._pubsub', 'oceanprotocol'] }), */ - dht: kadDHT({ - // this is necessary because this node is not connected to the public network - // it can be removed if, for example bootstrappers are configured - allowQueryWithZeroPeers: true, - maxInboundStreams: config.p2pConfig.dhtMaxInboundStreams, - maxOutboundStreams: config.p2pConfig.dhtMaxOutboundStreams, - - clientMode: false, - kBucketSize: 20, - protocol: '/ocean/nodes/1.0.0/kad/1.0.0', - peerInfoMapper: passthroughMapper - // protocolPrefix: '/ocean/nodes/1.0.0' - // randomWalk: { - // enabled: true, // Allows to disable discovery (enabled by default) - // interval: 300e3, - // timeout: 10e3 - // } - }), ping: ping(), dcutr: dcutr() } + // eslint-disable-next-line no-constant-condition, no-self-compare if (config.p2pConfig.enableCircuitRelayServer) { P2P_LOGGER.info('Enabling Circuit Relay Server') @@ -424,13 +421,6 @@ export class OceanP2P extends EventEmitter { this._upnp_interval = setInterval(this.UPnpCron.bind(this), 3000) } - if (config.p2pConfig.enableDHTServer) { - try { - await node.services.dht.setMode('server') - } catch (e) { - P2P_LOGGER.warn(`Failed to set mode server for DHT`) - } - } return node } catch (e) { P2P_LOGGER.logMessageWithEmoji( @@ -602,10 +592,27 @@ export class OceanP2P extends EventEmitter { return finalmultiaddrs } + async findPeerInDht(peerName: string, timeout?: number) { + try { + const peer = peerIdFromString(peerName) + const data = await this._libp2p.peerRouting.findPeer(peer, { + signal: + isNaN(timeout) || timeout === 0 + ? AbortSignal.timeout(5000) + : AbortSignal.timeout(timeout), + useCache: true, + useNetwork: true + }) + return data + } catch (e) {} + return null + } + async sendTo( peerName: string, message: string, - sink: any + sink: any, + multiAddrs?: string[] ): Promise { P2P_LOGGER.logMessage('SendTo() node ' + peerName + ' task: ' + message, true) @@ -627,7 +634,17 @@ export class OceanP2P extends EventEmitter { response.status.error = 'Invalid peer' return response } - const multiaddrs: Multiaddr[] = await this.getPeerMultiaddrs(peerName) + let multiaddrs: Multiaddr[] = [] + + if (!multiAddrs || multiAddrs.length < 1) { + // if they are no forced multiaddrs, try to find node multiaddr from peerStore/dht + multiaddrs = await this.getPeerMultiaddrs(peerName) + } else { + // just used what we were instructed to use + for (const addr of multiAddrs) { + multiaddrs.push(new Multiaddr(addr)) + } + } if (multiaddrs.length < 1) { response.status.httpStatus = 404 response.status.error = `Cannot find any address to dial for peer: ${peerId}` @@ -638,14 +655,22 @@ export class OceanP2P extends EventEmitter { let stream // dial/connect to the target node try { - stream = await this._libp2p.dialProtocol(multiaddrs, this._protocol, { + const options = { signal: AbortSignal.timeout(3000), priority: 100, runOnTransientConnection: true - }) + } + const connection = await this._libp2p.dial(multiaddrs, options) + if (connection.remotePeer.toString() !== peerId.toString()) { + response.status.httpStatus = 404 + response.status.error = `Invalid peer on the other side: ${connection.remotePeer.toString()}` + P2P_LOGGER.error(response.status.error) + return response + } + stream = await connection.newStream(this._protocol, options) } catch (e) { response.status.httpStatus = 404 - response.status.error = `Cannot connect to peer: ${peerId}` + response.status.error = `Cannot connect to peer ${peerId}: ${e.message}` P2P_LOGGER.error(response.status.error) return response } @@ -776,7 +801,7 @@ export class OceanP2P extends EventEmitter { // related: https://github.com/libp2p/go-libp2p-kad-dht/issues/323 async republishStoredDDOS() { try { - if (!this.db) { + if (!this.db || !this.db.ddo) { P2P_LOGGER.logMessage( `republishStoredDDOS() attempt aborted because there is no database!`, true @@ -817,13 +842,10 @@ export class OceanP2P extends EventEmitter { // cache a ddos object cacheDDO(ddo: any) { - const ddoInstance = DDOManager.getDDOClass(ddo) - const { event } = ddoInstance.getAssetFields() - const { metadata } = ddoInstance.getDDOFields() this._ddoDHT.dht.set(ddo.id, { id: ddo.id, - lastUpdateTx: event ? event.txid : '', // some missing event? probably just bad test data - lastUpdateTime: metadata.updated, + lastUpdateTx: ddo.event ? ddo.event.tx : '', // some missing event? probably just bad test data + lastUpdateTime: ddo.metadata.updated, provider: this.getPeerId() }) } diff --git a/src/components/c2d/compute_engine_base.ts b/src/components/c2d/compute_engine_base.ts index ef147eea5..c7611c8e3 100644 --- a/src/components/c2d/compute_engine_base.ts +++ b/src/components/c2d/compute_engine_base.ts @@ -5,14 +5,27 @@ import type { ComputeAlgorithm, ComputeAsset, ComputeJob, - ComputeOutput -} from '../../@types/C2D.js' -import { C2DClusterType } from '../../@types/C2D.js' + ComputeOutput, + ComputeResourceRequest, + ComputeResourceRequestWithPrice, + ComputeResourceType, + ComputeResource, + ComputeResourcesPricingInfo, + DBComputeJobPayment, + DBComputeJob +} from '../../@types/C2D/C2D.js' +import { C2DClusterType } from '../../@types/C2D/C2D.js' +import { C2DDatabase } from '../database/C2DDatabase.js' +import { Escrow } from '../core/utils/escrow.js' -export class C2DEngine { +export abstract class C2DEngine { private clusterConfig: C2DClusterInfo - public constructor(cluster: C2DClusterInfo) { + public db: C2DDatabase + public escrow: Escrow + public constructor(cluster: C2DClusterInfo, db: C2DDatabase, escrow: Escrow) { this.clusterConfig = cluster + this.db = db + this.escrow = escrow } getC2DConfig(): C2DClusterInfo { @@ -26,19 +39,50 @@ export class C2DEngine { } // functions which need to be implemented by all engine types - // eslint-disable-next-line require-await - public async getComputeEnvironments(chainId: number): Promise { - throw new Error(`Not implemented`) - } + public abstract getComputeEnvironments(chainId?: number): Promise - public async start(): Promise { - // overwritten by classes for start actions + // overwritten by classes for start actions + public start(): Promise { + return null } - public async stop(): Promise { - // overwritten by classes for cleanup + // overwritten by classes for cleanup + public stop(): Promise { + return null } + public abstract startComputeJob( + assets: ComputeAsset[], + algorithm: ComputeAlgorithm, + output: ComputeOutput, + environment: string, + owner: string, + maxJobDuration: number, + resources: ComputeResourceRequest[], + payment: DBComputeJobPayment, + jobId: string + ): Promise + + public abstract stopComputeJob( + jobId: string, + owner: string, + agreementId?: string + ): Promise + + public abstract getComputeJobStatus( + consumerAddress?: string, + agreementId?: string, + jobId?: string + ): Promise + + public abstract getComputeJobResult( + consumerAddress: string, + jobId: string, + index: number + ): Promise<{ stream: Readable; headers: any }> + + public abstract cleanupExpiredStorage(job: DBComputeJob): Promise + public async envExists( chainId: number, envIdWithHash?: string, @@ -77,52 +121,242 @@ export class C2DEngine { return null } - // eslint-disable-next-line require-await - public async startComputeJob( - assets: ComputeAsset[], - algorithm: ComputeAlgorithm, - output: ComputeOutput, - owner: string, - environment: string, - validUntil: number, - chainId: number, - agreementId: string - ): Promise { - throw new Error(`Not implemented`) + public getStreamableLogs(jobId: string): Promise { + throw new Error(`Not implemented for this engine type`) } - // eslint-disable-next-line require-await - public async stopComputeJob( - jobId: string, - owner: string, - agreementId?: string - ): Promise { - throw new Error(`Not implemented`) + protected async getJobEnvironment(job: DBComputeJob): Promise { + const environments: ComputeEnvironment[] = await ( + await this.getComputeEnvironments() + ).filter((env: ComputeEnvironment) => env.id === job.environment) + // found it + if (environments.length === 1) { + const environment = environments[0] + return environment + } + return null + } + + /* Returns ComputeResources for a specific resource + */ + public getMaxMinResource( + id: ComputeResourceType, + env: ComputeEnvironment, + isFree: boolean + ): ComputeResource { + const paid = this.getResource(env.resources, id) + let free = null + if (isFree && 'free' in env && 'resources' in env.free) { + free = this.getResource(env.free.resources, id) + if (!free) { + // this resource is not listed under free, so it's not available + return { + id, + total: 0, + max: 0, + min: 0 + } + } + } + const total = 'total' in paid ? paid.total : 0 + const max = 'max' in paid ? paid.max : 0 + const min = 'min' in paid ? paid.min : 0 + const ret: ComputeResource = { + id, + total: free && 'total' in free ? free.total : total, + max: free && 'max' in free ? free.max : max, + min: free && 'min' in free ? free.min : min + } + + return ret } + // make sure that all requests have cpu, ram, storage // eslint-disable-next-line require-await - public async getComputeJobStatus( - consumerAddress?: string, - agreementId?: string, - jobId?: string - ): Promise { - throw new Error(`Not implemented`) + public async checkAndFillMissingResources( + resources: ComputeResourceRequest[], + env: ComputeEnvironment, + isFree: boolean + ): Promise { + if (isFree && !('free' in env)) throw new Error('This env does not support free jobs') + const properResources: ComputeResourceRequest[] = [] + const elements: string[] = [] + + for (const res of env.free.resources) elements.push(res.id) + for (const res of env.resources) if (!elements.includes(res.id)) elements.push(res.id) + + /* if (isFree && 'free' in env && 'resources' in env.free) { + for (const res of env.free.resources) elements.push(res.id) + } else for (const res of env.resources) elements.push(res.id) + */ + for (const device of elements) { + let desired = this.getResourceRequest(resources, device) + const minMax = this.getMaxMinResource(device, env, isFree) + if (!desired && minMax.min > 0) { + // it's required + desired = minMax.min + } else { + if (desired < minMax.min) desired = minMax.min + if (desired > minMax.max) { + throw new Error( + 'Not enough ' + + device + + ' resources. Requested ' + + desired + + ', but max is ' + + minMax.max + ) + } + } + properResources.push({ id: device, amount: minMax.min }) + } + + return properResources + } + + public async getUsedResources(env: ComputeEnvironment): Promise { + const usedResources: { [x: string]: any } = {} + const usedFreeResources: { [x: string]: any } = {} + const jobs = await this.db.getRunningJobs(this.getC2DConfig().hash) + let totalJobs = 0 + let totalFreeJobs = 0 + for (const job of jobs) { + if (job.environment === env.id) { + totalJobs++ + if (job.isFree) totalFreeJobs++ + + for (const resource of job.resources) { + if (!(resource.id in usedResources)) usedResources[resource.id] = 0 + usedResources[resource.id] += resource.amount + if (job.isFree) { + if (!(resource.id in usedFreeResources)) usedFreeResources[resource.id] = 0 + usedFreeResources[resource.id] += resource.amount + } + } + } + } + return { totalJobs, totalFreeJobs, usedResources, usedFreeResources } } + // overridden by each engine if required // eslint-disable-next-line require-await - public async getComputeJobResult( - consumerAddress: string, - jobId: string, - index: number - ): Promise { - throw new Error(`Not implemented`) + public async checkIfResourcesAreAvailable( + resourcesRequest: ComputeResourceRequest[], + env: ComputeEnvironment, + isFree: boolean + ) { + for (const request of resourcesRequest) { + let envResource = this.getResource(env.resources, request.id) + if (!envResource) throw new Error(`No such resource ${request.id}`) + if (envResource.total - envResource.inUse < request.amount) + throw new Error(`Not enough available ${request.id}`) + if (isFree) { + if (!env.free) throw new Error(`No free resources`) + envResource = this.getResource(env.free.resources, request.id) + if (!envResource) throw new Error(`No such free resource ${request.id}`) + if (envResource.total - envResource.inUse < request.amount) + throw new Error(`Not enough available ${request.id} for free`) + } + } + if ('maxJobs' in env && env.maxJobs && env.runningJobs + 1 > env.maxJobs) { + throw new Error(`Too many running jobs `) + } + if ( + isFree && + 'free' in env && + `maxJobs` in env.free && + env.free.maxJobs && + env.runningfreeJobs + 1 > env.free.maxJobs + ) { + throw new Error(`Too many running free jobs `) + } + } + + public getResource(resources: ComputeResource[], id: ComputeResourceType) { + if (!resources) return null + for (const resource of resources) { + if (resource.id === id) { + return resource + } + } + return null + } + + public getResourceRequest( + resources: ComputeResourceRequest[], + id: ComputeResourceType + ) { + if (!resources) return null + for (const resource of resources) { + if (resource.id === id) { + return resource.amount + } + } + return null + } + + public getEnvPricesForToken( + env: ComputeEnvironment, + chainId: number, + token: string + ): ComputeResourcesPricingInfo[] { + console.log(env) + if (!env.fees || !(chainId in env.fees) || !env.fees[chainId]) { + return null + } + console.log(env.fees) + for (const fee of env.fees[chainId]) { + console.log(fee) + console.log(fee.feeToken) + console.log(token) + // eslint-disable-next-line security/detect-possible-timing-attacks + if (fee.feeToken === token) { + console.log('Found') + return fee.prices + } else console.log('NOT Found') + } + + return null + } + + public getResourcePrice( + prices: ComputeResourcesPricingInfo[], + id: ComputeResourceType + ) { + for (const pr of prices) { + if (pr.id === id) { + return pr.price + } + } + return 0 } -} -export class C2DEngineLocal extends C2DEngine { - // eslint-disable-next-line no-useless-constructor - public constructor(clusterConfig: C2DClusterInfo) { - super(clusterConfig) + public getTotalCostOfJob( + resources: ComputeResourceRequestWithPrice[], + duration: number + ) { + let cost: number = 0 + for (const request of resources) { + if (request.price) cost += request.price * request.amount * Math.ceil(duration / 60) + } + return cost + } + + public calculateResourcesCost( + resourcesRequest: ComputeResourceRequest[], + env: ComputeEnvironment, + chainId: number, + token: string, + maxJobDuration: number + ): number | null { + if (maxJobDuration < env.minJobDuration) maxJobDuration = env.minJobDuration + const prices = this.getEnvPricesForToken(env, chainId, token) + if (!prices) return null + let cost: number = 0 + for (const request of resourcesRequest) { + const resourcePrice = this.getResourcePrice(prices, request.id) + cost += resourcePrice * request.amount * Math.ceil(maxJobDuration / 60) + } + return cost } - // not implemented yet } diff --git a/src/components/c2d/compute_engine_docker.ts b/src/components/c2d/compute_engine_docker.ts new file mode 100644 index 000000000..423ed9e93 --- /dev/null +++ b/src/components/c2d/compute_engine_docker.ts @@ -0,0 +1,1294 @@ +/* eslint-disable security/detect-non-literal-fs-filename */ +import { Readable } from 'stream' +import { C2DStatusNumber, C2DStatusText } from '../../@types/C2D/C2D.js' +import type { + C2DClusterInfo, + ComputeEnvironment, + ComputeAlgorithm, + ComputeAsset, + ComputeJob, + ComputeOutput, + DBComputeJob, + DBComputeJobPayment, + ComputeResult, + RunningPlatform, + ComputeEnvFeesStructure, + ComputeResourceRequest, + ComputeEnvFees +} from '../../@types/C2D/C2D.js' +import { getConfiguration } from '../../utils/config.js' +import { C2DEngine } from './compute_engine_base.js' +import { C2DDatabase } from '../database/C2DDatabase.js' +import { Escrow } from '../core/utils/escrow.js' +import { create256Hash } from '../../utils/crypt.js' +import { Storage } from '../storage/index.js' +import Dockerode from 'dockerode' +import type { ContainerCreateOptions, HostConfig, VolumeCreateOptions } from 'dockerode' +import * as tar from 'tar' +import { + createWriteStream, + existsSync, + mkdirSync, + rmSync, + writeFileSync, + statSync, + createReadStream +} from 'fs' +import { pipeline } from 'node:stream/promises' +import { CORE_LOGGER } from '../../utils/logging/common.js' +import { AssetUtils } from '../../utils/asset.js' +import { FindDdoHandler } from '../core/handler/ddoHandler.js' +import { OceanNode } from '../../OceanNode.js' +import { decryptFilesObject, omitDBComputeFieldsFromComputeJob } from './index.js' +import * as drc from 'docker-registry-client' +import { ValidateParams } from '../httpRoutes/validateCommands.js' +import { Service } from '@oceanprotocol/ddo-js' +import { getOceanTokenAddressForChain } from '../../utils/address.js' + +export class C2DEngineDocker extends C2DEngine { + private envs: ComputeEnvironment[] = [] + + public docker: Dockerode + private cronTimer: any + private cronTime: number = 2000 + public constructor(clusterConfig: C2DClusterInfo, db: C2DDatabase, escrow: Escrow) { + super(clusterConfig, db, escrow) + + this.docker = null + if (clusterConfig.connection.socketPath) { + try { + this.docker = new Dockerode({ socketPath: clusterConfig.connection.socketPath }) + } catch (e) { + CORE_LOGGER.error('Could not create Docker container: ' + e.message) + } + } + if ( + clusterConfig.connection.protocol && + clusterConfig.connection.host && + clusterConfig.connection.port + ) { + try { + this.docker = new Dockerode({ + protocol: clusterConfig.connection.protocol, + host: clusterConfig.connection.host, + port: clusterConfig.connection.port + }) + } catch (e) { + CORE_LOGGER.error('Could not create Docker container: ' + e.message) + } + } + // TO DO C2D - create envs + try { + if (!existsSync(clusterConfig.tempFolder)) + mkdirSync(clusterConfig.tempFolder, { recursive: true }) + } catch (e) { + CORE_LOGGER.error( + 'Could not create Docker container temporary folders: ' + e.message + ) + } + // envs are build on start function + } + + public override async start() { + // let's build the env. Swarm and k8 will build multiple envs, based on arhitecture + const config = await getConfiguration() + const envConfig = await this.getC2DConfig().connection + let sysinfo = null + try { + sysinfo = await this.docker.info() + } catch (e) { + CORE_LOGGER.error('Could not get docker info: ' + e.message) + // since we cannot connect to docker, we cannot start the engine -> no envs + return + } + // console.log(sysinfo) + let fees: ComputeEnvFeesStructure = null + + const supportedChains: number[] = [] + for (const chain of Object.keys(config.supportedNetworks)) { + supportedChains.push(parseInt(chain)) + } + for (const feeChain of Object.keys(envConfig.fees)) { + // for (const feeConfig of envConfig.fees) { + // console.log(feeChain) + if (supportedChains.includes(parseInt(feeChain))) { + if (fees === null) fees = {} + if (!(feeChain in fees)) fees[feeChain] = [] + const tmpFees: ComputeEnvFees[] = [] + for (let i = 0; i < envConfig.fees[feeChain].length; i++) { + if ( + envConfig.fees[feeChain][i].prices && + envConfig.fees[feeChain][i].prices.length > 0 + ) { + if (!envConfig.fees[feeChain][i].feeToken) { + const tokenAddress = await getOceanTokenAddressForChain(parseInt(feeChain)) + if (tokenAddress) { + envConfig.fees[feeChain][i].feeToken = tokenAddress + tmpFees.push(envConfig.fees[feeChain][i]) + } else { + CORE_LOGGER.error( + `Unable to find Ocean token address for chain ${feeChain} and no custom token provided` + ) + } + } else { + tmpFees.push(envConfig.fees[feeChain][i]) + } + } else { + CORE_LOGGER.error( + `Unable to find prices for fee ${JSON.stringify( + envConfig.fees[feeChain][i] + )} on chain ${feeChain}` + ) + } + } + fees[feeChain] = tmpFees + } + + /* for (const chain of Object.keys(config.supportedNetworks)) { + const chainId = parseInt(chain) + if (task.chainId && task.chainId !== chainId) continue + result[chainId] = await computeEngines.fetchEnvironments(chainId) + } */ + } + this.envs.push({ + id: '', // this.getC2DConfig().hash + '-' + create256Hash(JSON.stringify(this.envs[i])), + runningJobs: 0, + consumerAddress: config.keys.ethAddress, + platform: { + architecture: sysinfo.Architecture, + os: sysinfo.OperatingSystem + }, + fees + }) + if (`storageExpiry` in envConfig) this.envs[0].storageExpiry = envConfig.storageExpiry + if (`maxJobDuration` in envConfig) + this.envs[0].maxJobDuration = envConfig.maxJobDuration + if (`maxJobs` in envConfig) this.envs[0].maxJobs = envConfig.maxJobs + // let's add resources + this.envs[0].resources = [] + this.envs[0].resources.push({ + id: 'cpu', + total: sysinfo.NCPU, + max: sysinfo.NCPU, + min: 1 + }) + this.envs[0].resources.push({ + id: 'ram', + total: sysinfo.MemTotal, + max: sysinfo.MemTotal, + min: 1e9 + }) + if (envConfig.resources) { + for (const res of envConfig.resources) { + // allow user to add other resources + if (res.id !== 'cpu' && res.id !== 'ram') { + if (!res.max) res.max = res.total + if (!res.min) res.min = 0 + this.envs[0].resources.push(res) + } + } + } + // limits for free env + if ('free' in envConfig) { + this.envs[0].free = {} + if (`storageExpiry` in envConfig.free) + this.envs[0].free.storageExpiry = envConfig.free.storageExpiry + if (`maxJobDuration` in envConfig.free) + this.envs[0].free.maxJobDuration = envConfig.free.maxJobDuration + if (`maxJobs` in envConfig.free) this.envs[0].free.maxJobs = envConfig.free.maxJobs + if ('resources' in envConfig.free) { + // TO DO - check if resource is also listed in this.envs[0].resources, if not, ignore it + this.envs[0].free.resources = envConfig.free.resources + } + } + this.envs[0].id = + this.getC2DConfig().hash + '-' + create256Hash(JSON.stringify(this.envs[0])) + } + + // eslint-disable-next-line require-await + public override async getComputeEnvironments( + chainId?: number + ): Promise { + /** + * Returns all cluster's compute environments, filtered by a specific chainId if needed. Env's id already contains the cluster hash + */ + if (!this.docker) return [] + const filteredEnvs = [] + for (const computeEnv of this.envs) { + if ( + !chainId || + (computeEnv.fees && Object.hasOwn(computeEnv.fees, String(chainId))) + ) { + const { totalJobs, totalFreeJobs, usedResources, usedFreeResources } = + await this.getUsedResources(computeEnv) + computeEnv.runningJobs = totalJobs + computeEnv.runningfreeJobs = totalFreeJobs + for (let i = 0; i < computeEnv.resources.length; i++) { + if (computeEnv.resources[i].id in usedResources) + computeEnv.resources[i].inUse = usedResources[computeEnv.resources[i].id] + else computeEnv.resources[i].inUse = 0 + } + if (computeEnv.free && computeEnv.free.resources) { + for (let i = 0; i < computeEnv.free.resources.length; i++) { + if (computeEnv.free.resources[i].id in usedFreeResources) + computeEnv.free.resources[i].inUse = + usedFreeResources[computeEnv.free.resources[i].id] + else computeEnv.free.resources[i].inUse = 0 + } + } + filteredEnvs.push(computeEnv) + } + } + + return filteredEnvs + } + + /** + * Checks the docker image by looking at the manifest + * @param image name or tag + * @returns boolean + */ + public static async checkDockerImage( + image: string, + platform?: RunningPlatform + ): Promise { + try { + const info = drc.default.parseRepoAndRef(image) + /** + * info: { + index: { name: 'docker.io', official: true }, + official: true, + remoteName: 'library/node', + localName: 'node', + canonicalName: 'docker.io/node', + digest: 'sha256:1155995dda741e93afe4b1c6ced2d01734a6ec69865cc0997daf1f4db7259a36' + } + */ + const client = drc.createClientV2({ name: info.localName }) + const tagOrDigest = info.tag || info.digest + + // try get manifest from registry + return await new Promise((resolve, reject) => { + client.getManifest( + { ref: tagOrDigest, maxSchemaVersion: 2 }, + function (err: any, manifest: any) { + client.close() + if (manifest) { + return resolve({ + valid: checkManifestPlatform(manifest.platform, platform) + }) + } + + if (err) { + CORE_LOGGER.error( + `Unable to get Manifest for image ${image}: ${err.message}` + ) + reject(err) + } + } + ) + }) + } catch (err) { + // show all aggregated errors, if present + const aggregated = err.errors && err.errors.length > 0 + aggregated ? CORE_LOGGER.error(JSON.stringify(err.errors)) : CORE_LOGGER.error(err) + return { + valid: false, + status: 404, + reason: aggregated ? JSON.stringify(err.errors) : err.message + } + } + } + + // eslint-disable-next-line require-await + public override async startComputeJob( + assets: ComputeAsset[], + algorithm: ComputeAlgorithm, + output: ComputeOutput, + environment: string, + owner: string, + maxJobDuration: number, + resources: ComputeResourceRequest[], + payment: DBComputeJobPayment, + jobId: string + ): Promise { + if (!this.docker) return [] + const isFree: boolean = !(payment && payment.lockTx) + + // C2D - Check image, check arhitecture, etc + const image = getAlgorithmImage(algorithm) + // ex: node@sha256:1155995dda741e93afe4b1c6ced2d01734a6ec69865cc0997daf1f4db7259a36 + if (!image) { + // send a 500 with the error message + throw new Error( + `Unable to extract docker image ${image} from algoritm: ${JSON.stringify( + algorithm + )}` + ) + } + const envIdWithHash = environment && environment.indexOf('-') > -1 + const env = await this.getComputeEnvironment( + payment && payment.chainId ? payment.chainId : null, + envIdWithHash ? environment : null, + environment + ) + if (!env) { + throw new Error(`Invalid environment ${environment}`) + } + const validation = await C2DEngineDocker.checkDockerImage(image, env.platform) + if (!validation.valid) + throw new Error(`Unable to validate docker image ${image}: ${validation.reason}`) + const job: DBComputeJob = { + clusterHash: this.getC2DConfig().hash, + containerImage: image, + owner, + jobId, + dateCreated: String(Date.now() / 1000), + dateFinished: null, + status: C2DStatusNumber.JobStarted, + statusText: C2DStatusText.JobStarted, + results: [], + algorithm, + assets, + maxJobDuration, + environment, + configlogURL: null, + publishlogURL: null, + algologURL: null, + outputsURL: null, + stopRequested: false, + isRunning: true, + isStarted: false, + resources, + isFree, + algoStartTimestamp: '0', + algoStopTimestamp: '0', + payment + } + await this.makeJobFolders(job) + // make sure we actually were able to insert on DB + const addedId = await this.db.newJob(job) + if (!addedId) { + return [] + } + + // only now set the timer + if (!this.cronTimer) { + this.setNewTimer() + } + const cjob: ComputeJob = omitDBComputeFieldsFromComputeJob(job) + // we add cluster hash to user output + cjob.jobId = this.getC2DConfig().hash + '-' + cjob.jobId + // cjob.jobId = jobId + return [cjob] + } + + // eslint-disable-next-line require-await + public override async stopComputeJob( + jobId: string, + owner: string, + agreementId?: string + ): Promise { + return null + } + + // eslint-disable-next-line require-await + protected async getResults(jobId: string): Promise { + const res: ComputeResult[] = [] + let index = 0 + try { + const logStat = statSync( + this.getC2DConfig().tempFolder + '/' + jobId + '/data/logs/algorithm.log' + ) + if (logStat) { + res.push({ + filename: 'algorithm.log', + filesize: logStat.size, + type: 'algorithmLog', + index + }) + index = index + 1 + } + } catch (e) {} + try { + const outputStat = statSync( + this.getC2DConfig().tempFolder + '/' + jobId + '/data/outputs/outputs.tar' + ) + if (outputStat) { + res.push({ + filename: 'outputs.tar', + filesize: outputStat.size, + type: 'output', + index + }) + index = index + 1 + } + } catch (e) {} + return res + } + + // eslint-disable-next-line require-await + public override async getComputeJobStatus( + consumerAddress?: string, + agreementId?: string, + jobId?: string + ): Promise { + const jobs = await this.db.getJob(jobId, agreementId, consumerAddress) + if (jobs.length === 0) { + return [] + } + const statusResults = [] + for (const job of jobs) { + const res: ComputeJob = omitDBComputeFieldsFromComputeJob(job) + // add results for algoLogs + res.results = await this.getResults(job.jobId) + statusResults.push(res) + } + + return statusResults + } + + // eslint-disable-next-line require-await + public override async getComputeJobResult( + consumerAddress: string, + jobId: string, + index: number + ): Promise<{ stream: Readable; headers: any }> { + const jobs = await this.db.getJob(jobId, null, consumerAddress) + if (jobs.length === 0) { + return null + } + const results = await this.getResults(jobId) + for (const i of results) { + if (i.index === index) { + if (i.type === 'algorithmLog') { + return { + stream: createReadStream( + this.getC2DConfig().tempFolder + '/' + jobId + '/data/logs/algorithm.log' + ), + headers: { + 'Content-Type': 'text/plain' + } + } + } + if (i.type === 'output') { + return { + stream: createReadStream( + this.getC2DConfig().tempFolder + '/' + jobId + '/data/outputs/outputs.tar' + ), + headers: { + 'Content-Type': 'application/octet-stream' + } + } + } + } + } + return null + } + + // eslint-disable-next-line require-await + public override async getStreamableLogs(jobId: string): Promise { + const jobRes: DBComputeJob[] = await this.db.getJob(jobId) + if (jobRes.length === 0) return null + if (!jobRes[0].isRunning) return null + try { + const job = jobRes[0] + const container = await this.docker.getContainer(job.jobId + '-algoritm') + const details = await container.inspect() + if (details.State.Running === false) return null + return await container.logs({ + stdout: true, + stderr: true, + follow: true + }) + } catch (e) { + return null + } + } + + private async setNewTimer() { + // don't set the cron if we don't have compute environments + if ((await this.getComputeEnvironments()).length > 0) + this.cronTimer = setInterval(this.InternalLoop.bind(this), this.cronTime) + } + + private async InternalLoop() { + // this is the internal loop of docker engine + // gets list of all running jobs and process them one by one + clearInterval(this.cronTimer) + this.cronTimer = null + // get all running jobs + const jobs = await this.db.getRunningJobs(this.getC2DConfig().hash) + + if (jobs.length === 0) { + CORE_LOGGER.info('No C2D jobs found for engine ' + this.getC2DConfig().hash) + return + } else { + CORE_LOGGER.info(`Got ${jobs.length} jobs for engine ${this.getC2DConfig().hash}`) + CORE_LOGGER.debug(JSON.stringify(jobs)) + } + const promises: any = [] + for (const job of jobs) { + promises.push(this.processJob(job)) + } + // wait for all promises, there is no return + await Promise.all(promises) + // set the cron again + this.setNewTimer() + } + + private async createDockerContainer( + containerInfo: ContainerCreateOptions, + retry: boolean = false + ): Promise | null { + try { + const container = await this.docker.createContainer(containerInfo) + console.log('container: ', container) + return container + } catch (e) { + CORE_LOGGER.error(`Unable to create docker container: ${e.message}`) + if ( + e.message + .toLowerCase() + .includes('--storage-opt is supported only for overlay over xfs') && + retry + ) { + delete containerInfo.HostConfig.StorageOpt + CORE_LOGGER.info('Retrying again without HostConfig.StorageOpt options...') + // Retry without that option because it does not work + return this.createDockerContainer(containerInfo) + } + return null + } + } + + private async createDockerVolume( + volume: VolumeCreateOptions, + retry: boolean = false + ): Promise { + try { + await this.docker.createVolume(volume) + return true + } catch (e) { + CORE_LOGGER.error(`Unable to create docker volume: ${e.message}`) + if ( + e.message.toLowerCase().includes('quota size requested but no quota support') && + retry + ) { + delete volume.DriverOpts + CORE_LOGGER.info('Retrying again without DriverOpts options...') + return this.createDockerVolume(volume) + } + return false + } + } + + // eslint-disable-next-line require-await + private async processJob(job: DBComputeJob) { + console.log(`Process job started: [STATUS: ${job.status}: ${job.statusText}]`) + console.log(job) + // has to : + // - monitor running containers and stop them if over limits + // - monitor disc space and clean up + /* steps: + - instruct docker to pull image + - create volume + - after image is ready, create the container + - download assets & algo into temp folder + - download DDOS + - tar and upload assets & algo to container + - start the container + - check if container is exceeding validUntil + - if yes, stop it + - download /data/outputs and store it locally (or upload it somewhere) + - delete the container + - delete the volume + */ + if (job.status === C2DStatusNumber.JobStarted) { + // pull docker image + try { + const pullStream = await this.docker.pull(job.containerImage) + await new Promise((resolve, reject) => { + let wroteStatusBanner = false + this.docker.modem.followProgress( + pullStream, + (err: any, res: any) => { + // onFinished + if (err) return reject(err) + CORE_LOGGER.info('############# Pull docker image complete ##############') + resolve(res) + }, + (progress: any) => { + // onProgress + if (!wroteStatusBanner) { + wroteStatusBanner = true + CORE_LOGGER.info('############# Pull docker image status: ##############') + } + // only write the status banner once, its cleaner + CORE_LOGGER.info(progress.status) + } + ) + }) + } catch (err) { + CORE_LOGGER.error( + `Unable to pull docker image: ${job.containerImage}: ${err.message}` + ) + job.status = C2DStatusNumber.PullImageFailed + job.statusText = C2DStatusText.PullImageFailed + job.isRunning = false + job.dateFinished = String(Date.now() / 1000) + await this.db.updateJob(job) + await this.cleanupJob(job) + return + } + + job.status = C2DStatusNumber.PullImage + job.statusText = C2DStatusText.PullImage + await this.db.updateJob(job) + return // now we wait until image is ready + } + if (job.status === C2DStatusNumber.PullImage) { + try { + const imageInfo = await this.docker.getImage(job.containerImage) + console.log('imageInfo', imageInfo) + const details = await imageInfo.inspect() + console.log('details:', details) + job.status = C2DStatusNumber.ConfiguringVolumes + job.statusText = C2DStatusText.ConfiguringVolumes + await this.db.updateJob(job) + // now we can move forward + } catch (e) { + // not ready yet + CORE_LOGGER.error(`Unable to inspect docker image: ${e.message}`) + } + return + } + if (job.status === C2DStatusNumber.ConfiguringVolumes) { + // create the volume & create container + // TO DO C2D: Choose driver & size + // get env info + // const environment = await this.getJobEnvironment(job) + + const volume: VolumeCreateOptions = { + Name: job.jobId + '-volume' + } + // volume + const diskSize = this.getResourceRequest(job.resources, 'disk') + if (diskSize && diskSize > 0) { + volume.DriverOpts = { + o: 'size=' + String(diskSize) + } + } + + const volumeCreated = await this.createDockerVolume(volume, true) + if (!volumeCreated) { + job.status = C2DStatusNumber.VolumeCreationFailed + job.statusText = C2DStatusText.VolumeCreationFailed + job.isRunning = false + job.dateFinished = String(Date.now() / 1000) + await this.db.updateJob(job) + await this.cleanupJob(job) + return + } + + // create the container + const mountVols: any = { '/data': {} } + const hostConfig: HostConfig = { + Mounts: [ + { + Type: 'volume', + Source: volume.Name, + Target: '/data', + ReadOnly: false + } + ] + } + // disk + if (diskSize && diskSize > 0) { + hostConfig.StorageOpt = { + size: String(diskSize) + } + } + // ram + const ramSize = this.getResourceRequest(job.resources, 'ram') + if (ramSize && ramSize > 0) { + hostConfig.Memory = ramSize + // set swap to same memory value means no swap (otherwise it use like 2X mem) + hostConfig.MemorySwap = hostConfig.Memory + } + const cpus = this.getResourceRequest(job.resources, 'cpu') + if (cpus && cpus > 0) { + const systemInfo = this.docker ? await this.docker.info() : null + hostConfig.CpuPeriod = 100000 // 100 miliseconds is usually the default + hostConfig.CpuQuota = Math.floor((cpus / systemInfo.NCPU) * hostConfig.CpuPeriod) + } + const containerInfo: ContainerCreateOptions = { + name: job.jobId + '-algoritm', + Image: job.containerImage, + AttachStdin: false, + AttachStdout: true, + AttachStderr: true, + Tty: true, + OpenStdin: false, + StdinOnce: false, + Volumes: mountVols, + HostConfig: hostConfig + } + + if (job.algorithm.meta.container.entrypoint) { + const newEntrypoint = job.algorithm.meta.container.entrypoint.replace( + '$ALGO', + 'data/transformations/algorithm' + ) + containerInfo.Entrypoint = newEntrypoint.split(' ') + } + console.log('CREATING CONTAINER') + console.log(containerInfo) + const container = await this.createDockerContainer(containerInfo, true) + if (container) { + console.log('container: ', container) + job.status = C2DStatusNumber.Provisioning + job.statusText = C2DStatusText.Provisioning + await this.db.updateJob(job) + } else { + job.status = C2DStatusNumber.ContainerCreationFailed + job.statusText = C2DStatusText.ContainerCreationFailed + job.isRunning = false + job.dateFinished = String(Date.now() / 1000) + await this.db.updateJob(job) + await this.cleanupJob(job) + return + } + return + } + if (job.status === C2DStatusNumber.Provisioning) { + // download algo & assets + const ret = await this.uploadData(job) + console.log('Upload data') + console.log(ret) + job.status = ret.status + job.statusText = ret.statusText + if (job.status !== C2DStatusNumber.RunningAlgorithm) { + // failed, let's close it + job.isRunning = false + job.dateFinished = String(Date.now() / 1000) + await this.db.updateJob(job) + await this.cleanupJob(job) + } else { + await this.db.updateJob(job) + } + } + if (job.status === C2DStatusNumber.RunningAlgorithm) { + const container = await this.docker.getContainer(job.jobId + '-algoritm') + const details = await container.inspect() + console.log('Container inspect') + console.log(details) + if (job.isStarted === false) { + // make sure is not started + if (details.State.Running === false) { + try { + await container.start() + job.isStarted = true + job.algoStartTimestamp = String(Date.now() / 1000) + await this.db.updateJob(job) + return + } catch (e) { + // container failed to start + job.algoStartTimestamp = String(Date.now() / 1000) + job.algoStopTimestamp = String(Date.now() / 1000) + try { + const algoLogFile = + this.getC2DConfig().tempFolder + + '/' + + job.jobId + + '/data/logs/algorithm.log' + writeFileSync(algoLogFile, String(e.message)) + } catch (e) { + console.log('Failed to write') + console.log(e) + } + console.error('could not start container: ' + e.message) + console.log(e) + job.status = C2DStatusNumber.AlgorithmFailed + job.statusText = C2DStatusText.AlgorithmFailed + + job.isRunning = false + job.dateFinished = String(Date.now() / 1000) + await this.db.updateJob(job) + await this.cleanupJob(job) + return + } + } + } else { + // is running, we need to stop it.. + console.log('running, need to stop it?') + const timeNow = Date.now() / 1000 + const expiry = parseFloat(job.algoStartTimestamp) + job.maxJobDuration + console.log('timeNow: ' + timeNow + ' , Expiry: ' + expiry) + if (timeNow > expiry || job.stopRequested) { + // we need to stop the container + // make sure is running + console.log('We need to stop') + console.log(details.State.Running) + if (details.State.Running === true) { + try { + await container.stop() + } catch (e) { + // we should never reach this, unless the container is already stopped or deleted by someone else + console.log(e) + } + } + console.log('Stopped') + job.isStarted = false + job.status = C2DStatusNumber.PublishingResults + job.statusText = C2DStatusText.PublishingResults + job.algoStopTimestamp = String(Date.now() / 1000) + job.isRunning = false + await this.db.updateJob(job) + return + } else { + if (details.State.Running === false) { + job.isStarted = false + job.status = C2DStatusNumber.PublishingResults + job.statusText = C2DStatusText.PublishingResults + job.algoStopTimestamp = String(Date.now() / 1000) + job.isRunning = false + await this.db.updateJob(job) + return + } + } + } + } + if (job.status === C2DStatusNumber.PublishingResults) { + // get output + job.status = C2DStatusNumber.JobFinished + job.statusText = C2DStatusText.JobFinished + const container = await this.docker.getContainer(job.jobId + '-algoritm') + const outputsArchivePath = + this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/outputs/outputs.tar' + try { + await pipeline( + await container.getArchive({ path: '/data/outputs' }), + createWriteStream(outputsArchivePath) + ) + } catch (e) { + console.log(e) + job.status = C2DStatusNumber.ResultsUploadFailed + job.statusText = C2DStatusText.ResultsUploadFailed + } + job.isRunning = false + job.dateFinished = String(Date.now() / 1000) + await this.db.updateJob(job) + await this.cleanupJob(job) + } + } + + // eslint-disable-next-line require-await + private async cleanupJob(job: DBComputeJob) { + // cleaning up + // - claim payment or release lock + // - get algo logs + // - delete volume + // - delete container + + // payments + if (!job.isFree && job.payment) { + let txId = null + const env = await this.getComputeEnvironment(job.payment.chainId, job.environment) + let minDuration = 0 + if (env && `minJobDuration` in env && env.minJobDuration) { + minDuration = env.minJobDuration + } + const algoRunnedTime = + parseFloat(job.algoStopTimestamp) - parseFloat(job.algoStartTimestamp) + if (algoRunnedTime < 0) minDuration += algoRunnedTime * -1 + else minDuration += algoRunnedTime + if (minDuration > 0) { + // we need to claim + const cost = this.getTotalCostOfJob(job.resources, minDuration) + const proof = JSON.stringify(omitDBComputeFieldsFromComputeJob(job)) + try { + txId = await this.escrow.claimLock( + job.payment.chainId, + job.jobId, + job.payment.token, + job.owner, + cost, + proof + ) + } catch (e) { + console.log(e) + } + } else { + // release the lock, we are not getting paid + try { + txId = await this.escrow.cancelExpiredLocks( + job.payment.chainId, + job.jobId, + job.payment.token, + job.owner + ) + } catch (e) { + console.log(e) + } + } + if (txId) { + job.payment.claimTx = txId + await this.db.updateJob(job) + } + } + try { + const container = await this.docker.getContainer(job.jobId + '-algoritm') + if (container) { + if (job.status !== C2DStatusNumber.AlgorithmFailed) { + writeFileSync( + this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/logs/algorithm.log', + await container.logs({ + stdout: true, + stderr: true, + follow: false + }) + ) + } + await container.remove() + } + const volume = await this.docker.getVolume(job.jobId + '-volume') + if (volume) { + try { + await volume.remove() + } catch (e) { + console.log(e) + } + } + // remove folders + rmSync(this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/inputs', { + recursive: true, + force: true + }) + rmSync(this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/transformations', { + recursive: true, + force: true + }) + } catch (e) { + console.log(e) + } + } + + private deleteOutputFolder(job: DBComputeJob) { + rmSync(this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/outputs/', { + recursive: true, + force: true + }) + } + + private async uploadData( + job: DBComputeJob + ): Promise<{ status: C2DStatusNumber; statusText: C2DStatusText }> { + const config = await getConfiguration() + const ret = { + status: C2DStatusNumber.RunningAlgorithm, + statusText: C2DStatusText.RunningAlgorithm + } + // for testing purposes + // if (!job.algorithm.fileObject) { + // console.log('no file object') + // const file: UrlFileObject = { + // type: 'url', + // url: 'https://raw.githubusercontent.com/oceanprotocol/test-algorithm/master/javascript/algo.js', + // method: 'get' + // } + // job.algorithm.fileObject = file + // } + // download algo + // TODO: we currently DO NOT have a way to set this field unencrypted (once we publish the asset its encrypted) + // So we cannot test this from the CLI for instance... Only Option is to actually send it encrypted + // OR extract the files object from the passed DDO, decrypt it and use it + + console.log(job.algorithm.fileObject) + const fullAlgoPath = + this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/transformations/algorithm' + try { + const customdataPath = + this.getC2DConfig().tempFolder + + '/' + + job.jobId + + '/data/inputs/algoCustomData.json' + writeFileSync(customdataPath, JSON.stringify(job.algorithm.algocustomdata ?? {})) + + let storage = null + + if (job.algorithm.meta.rawcode && job.algorithm.meta.rawcode.length > 0) { + // we have the code, just write it + writeFileSync(fullAlgoPath, job.algorithm.meta.rawcode) + } else { + // do we have a files object? + if (job.algorithm.fileObject) { + // is it unencrypted? + if (job.algorithm.fileObject.type) { + // we can get the storage directly + storage = Storage.getStorageClass(job.algorithm.fileObject, config) + } else { + // ok, maybe we have this encrypted instead + CORE_LOGGER.info( + 'algorithm file object seems to be encrypted, checking it...' + ) + // 1. Decrypt the files object + const decryptedFileObject = await decryptFilesObject(job.algorithm.fileObject) + console.log('decryptedFileObject: ', decryptedFileObject) + // 2. Get default storage settings + storage = Storage.getStorageClass(decryptedFileObject, config) + } + } else { + // no files object, try to get information from documentId and serviceId + CORE_LOGGER.info( + 'algorithm file object seems to be missing, checking "serviceId" and "documentId"...' + ) + const { serviceId, documentId } = job.algorithm + // we can get it from this info + if (serviceId && documentId) { + const algoDdo = await new FindDdoHandler( + OceanNode.getInstance() + ).findAndFormatDdo(documentId) + console.log('algo ddo:', algoDdo) + // 1. Get the service + const service: Service = AssetUtils.getServiceById(algoDdo, serviceId) + + // 2. Decrypt the files object + const decryptedFileObject = await decryptFilesObject(service.files) + console.log('decryptedFileObject: ', decryptedFileObject) + // 4. Get default storage settings + storage = Storage.getStorageClass(decryptedFileObject, config) + } + } + + if (storage) { + console.log('fullAlgoPath', fullAlgoPath) + await pipeline( + (await storage.getReadableStream()).stream, + createWriteStream(fullAlgoPath) + ) + } else { + CORE_LOGGER.info( + 'Could not extract any files object from the compute algorithm, skipping...' + ) + } + } + } catch (e) { + CORE_LOGGER.error( + 'Unable to write algorithm to path: ' + fullAlgoPath + ': ' + e.message + ) + return { + status: C2DStatusNumber.AlgorithmProvisioningFailed, + statusText: C2DStatusText.AlgorithmProvisioningFailed + } + } + + // now for the assets + for (const i in job.assets) { + const asset = job.assets[i] + let storage = null + let fileInfo = null + console.log('checking now asset: ', asset) + // without this check it would break if no fileObject is present + if (asset.fileObject) { + if (asset.fileObject.type) { + storage = Storage.getStorageClass(asset.fileObject, config) + } else { + CORE_LOGGER.info('asset file object seems to be encrypted, checking it...') + // get the encrypted bytes + const filesObject: any = await decryptFilesObject(asset.fileObject) + storage = Storage.getStorageClass(filesObject, config) + } + + // we need the file info for the name (but could be something else here) + fileInfo = await storage.getFileInfo({ + type: storage.getStorageType(asset.fileObject) + }) + } else { + // we need to go the hard way + const { serviceId, documentId } = asset + if (serviceId && documentId) { + // need to get the file + const ddo = await new FindDdoHandler(OceanNode.getInstance()).findAndFormatDdo( + documentId + ) + + // 2. Get the service + const service: Service = AssetUtils.getServiceById(ddo, serviceId) + // 3. Decrypt the url + const decryptedFileObject = await decryptFilesObject(service.files) + console.log('decryptedFileObject: ', decryptedFileObject) + storage = Storage.getStorageClass(decryptedFileObject, config) + + fileInfo = await storage.getFileInfo({ + type: storage.getStorageType(decryptedFileObject) + }) + } + } + + if (storage && fileInfo) { + const fullPath = + this.getC2DConfig().tempFolder + + '/' + + job.jobId + + '/data/inputs/' + + fileInfo[0].name + + console.log('asset full path: ' + fullPath) + try { + await pipeline( + (await storage.getReadableStream()).stream, + createWriteStream(fullPath) + ) + } catch (e) { + CORE_LOGGER.error( + 'Unable to write input data to path: ' + fullPath + ': ' + e.message + ) + return { + status: C2DStatusNumber.DataProvisioningFailed, + statusText: C2DStatusText.DataProvisioningFailed + } + } + } else { + CORE_LOGGER.info( + 'Could not extract any files object from the compute asset, skipping...' + ) + } + } + CORE_LOGGER.info('All good with data provisioning, will start uploading it...') + // now, we have to create a tar arhive + const folderToTar = this.getC2DConfig().tempFolder + '/' + job.jobId + '/data' + const destination = + this.getC2DConfig().tempFolder + '/' + job.jobId + '/tarData/upload.tar.gz' + try { + tar.create( + { + gzip: true, + file: destination, + sync: true, + C: folderToTar + }, + ['./'] + ) + // check if tar.gz actually exists + console.log('Start uploading') + + if (existsSync(destination)) { + // now, upload it to the container + const container = await this.docker.getContainer(job.jobId + '-algoritm') + + try { + // await container2.putArchive(destination, { + const stream = await container.putArchive(destination, { + path: '/data' + }) + console.log('PutArchive') + console.log(stream) + + console.log('Done uploading') + } catch (e) { + console.log('Data upload failed') + console.log(e) + return { + status: C2DStatusNumber.DataUploadFailed, + statusText: C2DStatusText.DataUploadFailed + } + } + } else { + CORE_LOGGER.debug('No data to upload, empty tar.gz') + } + } catch (e) { + CORE_LOGGER.debug(e.message) + } + + rmSync(this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/inputs', { + recursive: true, + force: true + }) + rmSync(this.getC2DConfig().tempFolder + '/' + job.jobId + '/data/transformations', { + recursive: true, + force: true + }) + rmSync(this.getC2DConfig().tempFolder + '/' + job.jobId + '/tarData', { + recursive: true, + force: true + }) + return ret + } + + // eslint-disable-next-line require-await + private async makeJobFolders(job: DBComputeJob) { + try { + const baseFolder = this.getC2DConfig().tempFolder + '/' + job.jobId + console.log('BASE FOLDER: ' + baseFolder) + if (!existsSync(baseFolder)) mkdirSync(baseFolder) + if (!existsSync(baseFolder + '/data')) mkdirSync(baseFolder + '/data') + if (!existsSync(baseFolder + '/data/inputs')) mkdirSync(baseFolder + '/data/inputs') + if (!existsSync(baseFolder + '/data/transformations')) + mkdirSync(baseFolder + '/data/transformations') + // ddo directory + if (!existsSync(baseFolder + '/data/ddos')) { + mkdirSync(baseFolder + '/data/ddos') + } + if (!existsSync(baseFolder + '/data/outputs')) + mkdirSync(baseFolder + '/data/outputs') + if (!existsSync(baseFolder + '/data/logs')) mkdirSync(baseFolder + '/data/logs') + if (!existsSync(baseFolder + '/tarData')) mkdirSync(baseFolder + '/tarData') // used to upload and download data + } catch (e) {} + } + + // clean up temporary files + public override async cleanupExpiredStorage( + job: DBComputeJob, + isCleanAfterDownload: boolean = false + ): Promise { + if (!job) return false + CORE_LOGGER.info('Cleaning up C2D storage for Job: ' + job.jobId) + try { + // delete the storage + // for free env, the container is deleted as soon as we download the results + // so we avoid trying to do it again + if (!isCleanAfterDownload) { + await this.cleanupJob(job) + } + + // delete output folders + await this.deleteOutputFolder(job) + // delete the job + await this.db.deleteJob(job.jobId) + return true + } catch (e) { + CORE_LOGGER.error('Error cleaning up C2D storage and Job: ' + e.message) + } + return false + } +} + +// this uses the docker engine, but exposes only one env, the free one + +export function getAlgorithmImage(algorithm: ComputeAlgorithm): string { + if (!algorithm.meta || !algorithm.meta.container) { + return null + } + let { image } = algorithm.meta.container + if (algorithm.meta.container.checksum) + image = image + '@' + algorithm.meta.container.checksum + else if (algorithm.meta.container.tag) + image = image + ':' + algorithm.meta.container.tag + else image = image + ':latest' + // console.log('Using image: ' + image) + return image +} + +export function checkManifestPlatform( + manifestPlatform: any, + envPlatform?: RunningPlatform +): boolean { + if (!manifestPlatform || !envPlatform) return true // skips if not present + if ( + envPlatform.architecture !== manifestPlatform.architecture || + envPlatform.os !== manifestPlatform.os + ) + return false + return true +} diff --git a/src/components/c2d/compute_engine_opf_k8.ts b/src/components/c2d/compute_engine_opf_k8.ts deleted file mode 100644 index 9956cdcf2..000000000 --- a/src/components/c2d/compute_engine_opf_k8.ts +++ /dev/null @@ -1,284 +0,0 @@ -import { Readable } from 'stream' -import type { - C2DClusterInfo, - ComputeEnvironment, - ComputeAlgorithm, - ComputeAsset, - ComputeJob, - ComputeOutput, - OPFK8ComputeStage, - OPFK8ComputeStageAlgorithm, - OPFK8ComputeStageInput, - OPFK8ComputeWorkflow, - OPFK8ComputeStart, - OPFK8ComputeStop, - OPFK8ComputeGetStatus, - OPFK8ComputeGetResult -} from '../../@types/C2D.js' -import { sign } from '../core/utils/nonceHandler.js' -import axios from 'axios' -import { getConfiguration } from '../../utils/config.js' -import { ZeroAddress } from 'ethers' -import { getProviderFeeToken } from '../../components/core/utils/feesHandler.js' -import { URLUtils } from '../../utils/url.js' -import { C2DEngine } from './compute_engine_base.js' - -export class C2DEngineOPFK8 extends C2DEngine { - // eslint-disable-next-line no-useless-constructor - public constructor(clusterConfig: C2DClusterInfo) { - super(clusterConfig) - } - - public override async getComputeEnvironments( - chainId: number - ): Promise { - /** - * Returns all cluster's compute environments for a specific chainId. Env's id already contains the cluster hash - */ - const envs: ComputeEnvironment[] = [] - const clusterHash = this.getC2DConfig().hash - const baseUrl = URLUtils.sanitizeURLPath(this.getC2DConfig().connection) - const url = `${baseUrl}api/v1/operator/environments?chain_id=${chainId}` - try { - const { data } = await axios.get(url) - if (!data) return envs - // we need to add hash to each env id - for (const [index, val] of data.entries()) { - data[index].id = `${clusterHash}-${val.id}` - if (!data[index].feeToken || data[index].feeToken?.toLowerCase() === ZeroAddress) - data[index].feeToken = await getProviderFeeToken(chainId) - } - return data - } catch {} - return envs - } - - public override async startComputeJob( - assets: ComputeAsset[], - algorithm: ComputeAlgorithm, - output: ComputeOutput, - owner: string, - environment: string, - validUntil: number, - chainId: number, - agreementId: string - ): Promise { - // let's build the stage first - // start with stage.input - const config = await getConfiguration() - const stagesInput: OPFK8ComputeStageInput[] = [] - let index = 0 - for (const asset of assets) { - if (asset.url) - stagesInput.push({ - index, - url: [asset.url] - }) - else - stagesInput.push({ - index, - id: asset.documentId, - remote: { - txId: asset.transferTxId, - serviceId: asset.serviceId, - userdata: asset.userdata ? asset.userdata : {} - } - }) - index++ - } - let getOuput = {} - if (output) { - getOuput = output - } else if (config.hasHttp && config.c2dNodeUri) { - getOuput = { - metadataUri: config.c2dNodeUri - } - } - // continue with algorithm - const stageAlgorithm: OPFK8ComputeStageAlgorithm = {} - if (algorithm.url) { - stageAlgorithm.url = algorithm.url - } else { - stageAlgorithm.remote = { - txId: algorithm.transferTxId, - serviceId: algorithm.serviceId, - userdata: algorithm.userdata ? algorithm.userdata : {} - } - } - if (algorithm.documentId) stageAlgorithm.id = algorithm.documentId - if ('meta' in algorithm && 'rawcode' in algorithm.meta && algorithm.meta.rawcode) - stageAlgorithm.rawcode = algorithm.meta.rawcode - if ('meta' in algorithm && 'container' in algorithm.meta && algorithm.meta.container) - stageAlgorithm.container = algorithm.meta.container - const stage: OPFK8ComputeStage = { - index: 0, - input: stagesInput, - algorithm: stageAlgorithm, - output: getOuput, - compute: { - Instances: 1, - namespace: environment, - maxtime: 3600 - } - } - // now, let's build the workflow - const workflow: OPFK8ComputeWorkflow = { - stages: [stage] - } - // and the full payload - const nonce: number = new Date().getTime() - const providerSignature = await sign(String(nonce), config.keys.privateKey) - const payload: OPFK8ComputeStart = { - workflow, - owner, - providerSignature, - providerAddress: config.keys.ethAddress, - environment, - validUntil, - nonce, - agreementId, - chainId - } - // and send it to remote op-service - - try { - const response = await axios({ - method: 'post', - url: `${URLUtils.sanitizeURLPath( - this.getC2DConfig().connection - )}api/v1/operator/compute`, - data: payload - }) - if (response.status !== 200) { - const message = `Exception on startCompute. Status: ${response.status}, ${response.statusText}` - throw new Error(message) - } - const jobs: ComputeJob[] = response.data - const newResponse = JSON.parse(JSON.stringify(jobs)) as ComputeJob[] - const { hash } = this.getC2DConfig() - // we need to prepend cluster hash to each jobId - for (let i = 0; i < jobs.length; i++) { - newResponse[i].jobId = hash + '-' + jobs[i].jobId - } - return newResponse - } catch (e) {} - throw new Error(`startCompute Failure`) - } - - public override async stopComputeJob( - jobId: string, - owner: string, - agreementId?: string - ): Promise { - // and the full payload - const nonce: number = new Date().getTime() - const config = await getConfiguration() - // current provider (python) signature is owner + job_id + nonce OR owner + nonce - const providerSignature = await sign(String(nonce), config.keys.privateKey) - const payload: OPFK8ComputeStop = { - owner, - providerSignature, - providerAddress: config.keys.ethAddress, - nonce, - jobId, - agreementId - } - try { - const response = await axios({ - method: 'put', - url: `${URLUtils.sanitizeURLPath( - this.getC2DConfig().connection - )}api/v1/operator/compute`, - data: payload - }) - if (response.status !== 200) { - const message = `Exception on stopCompute. Status: ${response.status}, ${response.statusText}` - throw new Error(message) - } - return response.data - } catch (e) {} - throw new Error(`stopCompute Failure`) - } - - public override async getComputeJobStatus( - consumerAddress?: string, - agreementId?: string, - jobId?: string - ): Promise { - const nonce: number = new Date().getTime() - const config = await getConfiguration() - let message: string - if (jobId) message = String(nonce + consumerAddress + jobId) - else message = String(nonce + consumerAddress + jobId) - const providerSignature = await sign(message, config.keys.privateKey) - - const payload: OPFK8ComputeGetStatus = { - providerSignature, - providerAddress: config.keys.ethAddress, - nonce, - owner: consumerAddress, - agreementId, - jobId - } - try { - const response = await axios({ - method: 'get', - url: `${URLUtils.sanitizeURLPath( - this.getC2DConfig().connection - )}api/v1/operator/compute`, - data: payload - }) - if (response.status !== 200) { - // do not throw, just return [] - return [] - } - - return response.data - } catch (e) { - console.error(e) - } - throw new Error(`getComputeJobStatus Failure`) - } - - public override async getComputeJobResult( - consumerAddress: string, - jobId: string, - index: number - ): Promise { - const nonce: number = new Date().getTime() - const config = await getConfiguration() - // signature check on operator service is only owner + jobId - // nonce is not part of signature message - const message: string = jobId - ? String(consumerAddress + jobId) - : String(consumerAddress) - const providerSignature = await sign(message, config.keys.privateKey) - - const payload: OPFK8ComputeGetResult = { - providerSignature, - providerAddress: config.keys.ethAddress, - nonce, - owner: consumerAddress, - jobId, - index - } - try { - const response = await axios({ - method: 'get', - url: `${URLUtils.sanitizeURLPath( - this.getC2DConfig().connection - )}api/v1/operator/getResult`, - data: payload, - responseType: 'stream' - }) - if (response.status !== 200) { - const message = `Exception on getComputeJobResult. Status: ${response.status}, ${response.statusText}` - throw new Error(message) - } - return response.data - } catch (e) { - console.error(e) - } - throw new Error(`getComputeJobStatus Failure`) - } -} diff --git a/src/components/c2d/compute_engines.ts b/src/components/c2d/compute_engines.ts index 9991ac9e4..b0bd6ad91 100644 --- a/src/components/c2d/compute_engines.ts +++ b/src/components/c2d/compute_engines.ts @@ -1,17 +1,23 @@ -import { C2DClusterType, ComputeEnvironment } from '../../@types/C2D.js' +import { C2DClusterType, ComputeEnvironment } from '../../@types/C2D/C2D.js' import { C2DEngine } from './compute_engine_base.js' -import { C2DEngineOPFK8 } from './compute_engine_opf_k8.js' +import { C2DEngineDocker } from './compute_engine_docker.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' +import { C2DDatabase } from '../database/C2DDatabase.js' +import { Escrow } from '../core/utils/escrow.js' export class C2DEngines { public engines: C2DEngine[] - public constructor(config: OceanNodeConfig) { + public constructor(config: OceanNodeConfig, db: C2DDatabase, escrow: Escrow) { // let's see what engines do we have and initialize them one by one + // for docker, we need to add the "free" + + // TO DO - check if we have multiple config.c2dClusters with the same host + // if yes, do not create multiple engines if (config && config.c2dClusters) { this.engines = [] for (const cluster of config.c2dClusters) { - if (cluster.type === C2DClusterType.OPF_K8) { - this.engines.push(new C2DEngineOPFK8(cluster)) + if (cluster.type === C2DClusterType.DOCKER) { + this.engines.push(new C2DEngineDocker(cluster, db, escrow)) } } } @@ -64,8 +70,25 @@ export class C2DEngines { throw new Error(`C2D Engine not found by hash: ${clusterHash}`) } + async getC2DByEnvId(envId: string): Promise { + /** + * Searches all envs and returns engine class + * + * @param envId - Environment Id + * + */ + const { engines } = this + for (const i of engines) { + const environments = await i.getComputeEnvironments() + for (const env of environments) { + if (env.id === envId) return i + } + } + throw new Error(`C2D Engine not found by id: ${envId}`) + } + async fetchEnvironments( - chainId: number, + chainId?: number, engine?: C2DEngine ): Promise { /** diff --git a/src/components/c2d/index.ts b/src/components/c2d/index.ts index 11fd18a7f..82d1ccae5 100644 --- a/src/components/c2d/index.ts +++ b/src/components/c2d/index.ts @@ -1,49 +1,61 @@ import { OceanNode } from '../../OceanNode.js' -import { CORE_LOGGER } from '../../utils/logging/common.js' import { createHash } from 'crypto' import { FindDdoHandler } from '../core/handler/ddoHandler.js' -import { getConfiguration } from '../../utils/config.js' -import { ComputeGetEnvironmentsHandler } from '../core/compute/index.js' -import { PROTOCOL_COMMANDS } from '../../utils/constants.js' -import { streamToObject } from '../../utils/util.js' -import { Readable } from 'stream' import { ArweaveFileObject, IpfsFileObject, - UrlFileObject + UrlFileObject, + BaseFileObject, + EncryptMethod } from '../../@types/fileObject.js' -import { AlgoChecksums } from '../../@types/C2D.js' -import { DDO } from '../../@types/DDO/DDO.js' import { getFile } from '../../utils/file.js' import urlJoin from 'url-join' import { fetchFileMetadata } from '../../utils/asset.js' -import { DDOManager } from '@oceanprotocol/ddo-js' +import { DDO, DDOManager } from '@oceanprotocol/ddo-js' +import { deleteKeysFromObject, sanitizeServiceFiles } from '../../utils/util.js' + +import { decrypt } from '../../utils/crypt.js' +import { CORE_LOGGER } from '../../utils/logging/common.js' +import { AlgoChecksums, ComputeJob, DBComputeJob } from '../../@types/index.js' export { C2DEngine } from './compute_engine_base.js' -export async function checkC2DEnvExists( - envId: string, - oceanNode: OceanNode -): Promise { - const config = await getConfiguration() - const { supportedNetworks } = config - for (const supportedNetwork of Object.keys(supportedNetworks)) { - const getEnvironmentsTask = { - command: PROTOCOL_COMMANDS.COMPUTE_GET_ENVIRONMENTS, - chainId: parseInt(supportedNetwork) - } - const response = await new ComputeGetEnvironmentsHandler(oceanNode).handle( - getEnvironmentsTask +export async function decryptFilesObject( + serviceFiles: any +): Promise { + try { + // 2. Decrypt the url + const decryptedUrlBytes = await decrypt( + Uint8Array.from(Buffer.from(sanitizeServiceFiles(serviceFiles), 'hex')), + EncryptMethod.ECIES ) - if (response.status.httpStatus === 200) { - const computeEnvironments = await streamToObject(response.stream as Readable) - for (const computeEnvironment of computeEnvironments[parseInt(supportedNetwork)]) { - if (computeEnvironment.id === envId) { - return true - } - } - } + + // 3. Convert the decrypted bytes back to a string + const decryptedFilesString = Buffer.from(decryptedUrlBytes).toString() + const decryptedFileArray = JSON.parse(decryptedFilesString) + + console.log('decryptedFileArray: ', decryptedFileArray) + return decryptedFileArray.files[0] + } catch (err) { + CORE_LOGGER.error('Error decrypting files object: ' + err.message) + return null } - return false +} + +export function omitDBComputeFieldsFromComputeJob(dbCompute: DBComputeJob): ComputeJob { + const job: ComputeJob = deleteKeysFromObject(dbCompute, [ + 'clusterHash', + 'configlogURL', + 'publishlogURL', + 'algologURL', + 'outputsURL', + 'stopRequested', + 'algorithm', + 'assets', + 'isRunning', + 'isStarted', + 'containerImage' + ]) as ComputeJob + return job } export async function getAlgoChecksums( diff --git a/src/components/core/admin/IndexingThreadHandler.ts b/src/components/core/admin/IndexingThreadHandler.ts index 51c33dcd4..a0d87e031 100644 --- a/src/components/core/admin/IndexingThreadHandler.ts +++ b/src/components/core/admin/IndexingThreadHandler.ts @@ -8,11 +8,11 @@ import { validateCommandParameters, ValidateParams } from '../../httpRoutes/validateCommands.js' -import { AdminHandler } from './adminHandler.js' +import { AdminCommandHandler } from './adminHandler.js' import { checkSupportedChainId } from '../../../utils/blockchain.js' -export class IndexingThreadHandler extends AdminHandler { - validate(command: StartStopIndexingCommand): ValidateParams { +export class IndexingThreadHandler extends AdminCommandHandler { + async validateAdminCommand(command: StartStopIndexingCommand): Promise { if ( !validateCommandParameters(command, ['action']) || ![IndexingCommand.START_THREAD, IndexingCommand.STOP_THREAD].includes( @@ -24,12 +24,12 @@ export class IndexingThreadHandler extends AdminHandler { `Missing or invalid "action" and/or "chainId" fields for command: "${command}".` ) } - return super.validate(command) + return await super.validate(command) } // eslint-disable-next-line require-await async handle(task: StartStopIndexingCommand): Promise { - const validation = this.validate(task) + const validation = await this.validateAdminCommand(task) if (!validation.valid) { return buildInvalidParametersResponse(validation) } diff --git a/src/components/core/admin/adminHandler.ts b/src/components/core/admin/adminHandler.ts index 42612e8f3..f9faa0c67 100644 --- a/src/components/core/admin/adminHandler.ts +++ b/src/components/core/admin/adminHandler.ts @@ -1,14 +1,39 @@ -import { AdminCommand } from '../../../@types/commands.js' +import { AdminCommand, IValidateAdminCommandHandler } from '../../../@types/commands.js' import { ValidateParams, validateCommandParameters, - buildInvalidRequestMessage + buildInvalidRequestMessage, + buildRateLimitReachedResponse, + buildInvalidParametersResponse } from '../../httpRoutes/validateCommands.js' import { validateAdminSignature } from '../../../utils/auth.js' -import { Handler } from '../handler/handler.js' +import { BaseHandler } from '../handler/handler.js' +import { CommonValidation } from '../../httpRoutes/requestValidator.js' +import { P2PCommandResponse } from '../../../@types/OceanNode.js' +import { ReadableString } from '../../P2P/handleProtocolCommands.js' -export abstract class AdminHandler extends Handler { - validate(command: AdminCommand): ValidateParams { +export abstract class AdminCommandHandler + extends BaseHandler + implements IValidateAdminCommandHandler +{ + async verifyParamsAndRateLimits(task: AdminCommand): Promise { + if (!(await this.checkRateLimit())) { + return buildRateLimitReachedResponse() + } + // then validate the command arguments + const validation = await this.validate(task) + if (!validation.valid) { + return buildInvalidParametersResponse(validation) + } + + // all good! + return { + stream: new ReadableString('OK'), + status: { httpStatus: 200, error: null } + } + } + + async validate(command: AdminCommand): Promise { const commandValidation = validateCommandParameters(command, [ 'expiryTimestamp', 'signature' @@ -16,7 +41,7 @@ export abstract class AdminHandler extends Handler { if (!commandValidation.valid) { return buildInvalidRequestMessage(commandValidation.reason) } - const signatureValidation = validateAdminSignature( + const signatureValidation: CommonValidation = await validateAdminSignature( command.expiryTimestamp, command.signature ) @@ -25,8 +50,6 @@ export abstract class AdminHandler extends Handler { `Signature check failed: ${signatureValidation.error}` ) } - return { - valid: true - } + return { valid: true } } } diff --git a/src/components/core/admin/collectFeesHandler.ts b/src/components/core/admin/collectFeesHandler.ts index fb103cba2..b86c6f50b 100644 --- a/src/components/core/admin/collectFeesHandler.ts +++ b/src/components/core/admin/collectFeesHandler.ts @@ -1,4 +1,4 @@ -import { AdminHandler } from './adminHandler.js' +import { AdminCommandHandler } from './adminHandler.js' import { AdminCollectFeesCommand, AdminCollectFeesHandlerResponse @@ -21,8 +21,8 @@ import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/template import { CORE_LOGGER } from '../../../utils/logging/common.js' import { Readable } from 'stream' -export class CollectFeesHandler extends AdminHandler { - validate(command: AdminCollectFeesCommand): ValidateParams { +export class CollectFeesHandler extends AdminCommandHandler { + async validate(command: AdminCollectFeesCommand): Promise { if ( !validateCommandParameters(command, [ 'chainId', @@ -40,11 +40,11 @@ export class CollectFeesHandler extends AdminHandler { CORE_LOGGER.error(msg) return buildInvalidRequestMessage(msg) } - return super.validate(command) + return await super.validate(command) } async handle(task: AdminCollectFeesCommand): Promise { - const validation = this.validate(task) + const validation = await this.validate(task) if (!validation.valid) { return buildInvalidParametersResponse(validation) } diff --git a/src/components/core/admin/reindexChainHandler.ts b/src/components/core/admin/reindexChainHandler.ts index 911bbbfe5..10ac997bc 100644 --- a/src/components/core/admin/reindexChainHandler.ts +++ b/src/components/core/admin/reindexChainHandler.ts @@ -1,4 +1,4 @@ -import { AdminHandler } from './adminHandler.js' +import { AdminCommandHandler } from './adminHandler.js' import { AdminReindexChainCommand } from '../../../@types/commands.js' import { validateCommandParameters, @@ -12,18 +12,18 @@ import { CORE_LOGGER } from '../../../utils/logging/common.js' import { checkSupportedChainId } from '../../../utils/blockchain.js' import { ReadableString } from '../../P2P/handleProtocolCommands.js' -export class ReindexChainHandler extends AdminHandler { - validate(command: AdminReindexChainCommand): ValidateParams { +export class ReindexChainHandler extends AdminCommandHandler { + async validateAdminCommand(command: AdminReindexChainCommand): Promise { if (!validateCommandParameters(command, ['chainId'])) { return buildInvalidRequestMessage( `Missing chainId field for command: "${command}".` ) } - return super.validate(command) + return await super.validate(command) } async handle(task: AdminReindexChainCommand): Promise { - const validation = this.validate(task) + const validation = await this.validateAdminCommand(task) if (!validation.valid) { return buildInvalidParametersResponse(validation) } diff --git a/src/components/core/admin/reindexTxHandler.ts b/src/components/core/admin/reindexTxHandler.ts index 9fdbf6cb3..f9c746da0 100644 --- a/src/components/core/admin/reindexTxHandler.ts +++ b/src/components/core/admin/reindexTxHandler.ts @@ -1,4 +1,4 @@ -import { AdminHandler } from './adminHandler.js' +import { AdminCommandHandler } from './adminHandler.js' import { validateCommandParameters, buildInvalidRequestMessage, @@ -12,8 +12,8 @@ import { CORE_LOGGER } from '../../../utils/logging/common.js' import { ReadableString } from '../../P2P/handleProtocolCommands.js' import { checkSupportedChainId } from '../../../utils/blockchain.js' -export class ReindexTxHandler extends AdminHandler { - validate(command: AdminReindexTxCommand): ValidateParams { +export class ReindexTxHandler extends AdminCommandHandler { + async validate(command: AdminReindexTxCommand): Promise { if (!validateCommandParameters(command, ['chainId', 'txId'])) { return buildInvalidRequestMessage( `Missing chainId or txId fields for command: "${command}".` @@ -22,11 +22,11 @@ export class ReindexTxHandler extends AdminHandler { if (!/^0x([A-Fa-f0-9]{64})$/.test(command.txId)) { return buildInvalidRequestMessage(`Invalid format for transaction ID.`) } - return super.validate(command) + return await super.validate(command) } async handle(task: AdminReindexTxCommand): Promise { - const validation = this.validate(task) + const validation = await this.validate(task) if (!validation.valid) { return buildInvalidParametersResponse(validation) } diff --git a/src/components/core/admin/stopNodeHandler.ts b/src/components/core/admin/stopNodeHandler.ts index 9d705d50e..6b11cd5be 100644 --- a/src/components/core/admin/stopNodeHandler.ts +++ b/src/components/core/admin/stopNodeHandler.ts @@ -1,4 +1,4 @@ -import { AdminHandler } from './adminHandler.js' +import { AdminCommandHandler } from './adminHandler.js' import { AdminStopNodeCommand } from '../../../@types/commands.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { @@ -8,13 +8,13 @@ import { import { CORE_LOGGER } from '../../../utils/logging/common.js' import { ReadableString } from '../../P2P/handleProtocolCommands.js' -export class StopNodeHandler extends AdminHandler { - validate(command: AdminStopNodeCommand): ValidateParams { - return super.validate(command) +export class StopNodeHandler extends AdminCommandHandler { + async validate(command: AdminStopNodeCommand): Promise { + return await super.validate(command) } - handle(task: AdminStopNodeCommand): Promise { - const validation = this.validate(task) + async handle(task: AdminStopNodeCommand): Promise { + const validation = await this.validate(task) if (!validation.valid) { return new Promise((resolve, reject) => { resolve(buildInvalidParametersResponse(validation)) diff --git a/src/components/core/compute/environments.ts b/src/components/core/compute/environments.ts index 8561d66c4..95e8b0b6d 100644 --- a/src/components/core/compute/environments.ts +++ b/src/components/core/compute/environments.ts @@ -1,16 +1,14 @@ import { Readable } from 'stream' import { P2PCommandResponse } from '../../../@types/index.js' -import { ComputeEnvByChain } from '../../../@types/C2D.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -import { Handler } from '../handler/handler.js' +import { CommandHandler } from '../handler/handler.js' import { ComputeGetEnvironmentsCommand } from '../../../@types/commands.js' -import { getConfiguration } from '../../../utils/config.js' import { ValidateParams, buildInvalidRequestMessage, validateCommandParameters } from '../../httpRoutes/validateCommands.js' -export class ComputeGetEnvironmentsHandler extends Handler { +export class ComputeGetEnvironmentsHandler extends CommandHandler { validate(command: ComputeGetEnvironmentsCommand): ValidateParams { const validateCommand = validateCommandParameters(command, []) if (!validateCommand.valid) { @@ -27,14 +25,8 @@ export class ComputeGetEnvironmentsHandler extends Handler { return validationResponse } try { - const result: ComputeEnvByChain = {} const computeEngines = this.getOceanNode().getC2DEngines() - const config = await getConfiguration() - for (const chain of Object.keys(config.supportedNetworks)) { - const chainId = parseInt(chain) - if (task.chainId && task.chainId !== chainId) continue - result[chainId] = await computeEngines.fetchEnvironments(chainId) - } + const result = await computeEngines.fetchEnvironments(task.chainId) CORE_LOGGER.logMessage( 'ComputeGetEnvironmentsCommand Response: ' + JSON.stringify(result, null, 2), diff --git a/src/components/core/compute/getResults.ts b/src/components/core/compute/getResults.ts index ffa242349..f7555cae0 100644 --- a/src/components/core/compute/getResults.ts +++ b/src/components/core/compute/getResults.ts @@ -1,6 +1,6 @@ import { P2PCommandResponse } from '../../../@types/index.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -import { Handler } from '../handler/handler.js' +import { CommandHandler } from '../handler/handler.js' import { ComputeGetResultCommand } from '../../../@types/commands.js' import { checkNonce, NonceResponse } from '../utils/nonceHandler.js' import { @@ -10,7 +10,7 @@ import { } from '../../httpRoutes/validateCommands.js' import { isAddress } from 'ethers' -export class ComputeGetResultHandler extends Handler { +export class ComputeGetResultHandler extends CommandHandler { validate(command: ComputeGetResultCommand): ValidateParams { const validation = validateCommandParameters(command, [ 'consumerAddress', @@ -90,16 +90,15 @@ export class ComputeGetResultHandler extends Handler { jobId, task.index ) - const anyResp: any = respStream as any const response: P2PCommandResponse = { - stream: respStream, + stream: respStream?.stream, status: { httpStatus: 200 } } // need to pass the headers properly - if (anyResp.headers) { - response.status.headers = anyResp.headers + if (respStream?.headers) { + response.status.headers = respStream?.headers } return response } catch (error) { diff --git a/src/components/core/compute/getStatus.ts b/src/components/core/compute/getStatus.ts index 23b330298..946931286 100644 --- a/src/components/core/compute/getStatus.ts +++ b/src/components/core/compute/getStatus.ts @@ -1,8 +1,8 @@ import { Readable } from 'stream' import { P2PCommandResponse } from '../../../@types/index.js' -import { ComputeJob } from '../../../@types/C2D.js' +import { ComputeJob } from '../../../@types/C2D/C2D.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -import { Handler } from '../handler/handler.js' +import { CommandHandler } from '../handler/handler.js' import { ComputeGetStatusCommand } from '../../../@types/commands.js' import { ValidateParams, @@ -11,7 +11,7 @@ import { } from '../../httpRoutes/validateCommands.js' import { isAddress } from 'ethers' -export class ComputeGetStatusHandler extends Handler { +export class ComputeGetStatusHandler extends CommandHandler { validate(command: ComputeGetStatusCommand): ValidateParams { const validation = validateCommandParameters(command, []) if (validation.valid) { @@ -44,9 +44,13 @@ export class ComputeGetStatusHandler extends Handler { // split jobId (which is already in hash-jobId format) and get the hash // then get jobId which might contain dashes as well const index = task.jobId.indexOf('-') - const hash = task.jobId.slice(0, index) - engines = [await this.getOceanNode().getC2DEngines().getC2DByHash(hash)] - jobId = task.jobId.slice(index + 1) + if (index > 0) { + const hash = task.jobId.slice(0, index) + engines = [await this.getOceanNode().getC2DEngines().getC2DByHash(hash)] + jobId = task.jobId.slice(index + 1) + } else { + engines = await this.getOceanNode().getC2DEngines().getAllEngines() + } } else { engines = await this.getOceanNode().getC2DEngines().getAllEngines() } @@ -57,7 +61,8 @@ export class ComputeGetStatusHandler extends Handler { task.agreementId, jobId ) - response.push(...jobs) + + if (jobs && jobs.length > 0) response.push(...jobs) } CORE_LOGGER.logMessage( 'ComputeGetStatusCommand Response: ' + JSON.stringify(response, null, 2), diff --git a/src/components/core/compute/getStreamableLogs.ts b/src/components/core/compute/getStreamableLogs.ts new file mode 100644 index 000000000..92ff46e96 --- /dev/null +++ b/src/components/core/compute/getStreamableLogs.ts @@ -0,0 +1,114 @@ +import { P2PCommandResponse } from '../../../@types/index.js' +import { CORE_LOGGER } from '../../../utils/logging/common.js' +import { CommandHandler } from '../handler/handler.js' +import { ComputeGetStreamableLogsCommand } from '../../../@types/commands.js' +import { checkNonce, NonceResponse } from '../utils/nonceHandler.js' +import { Stream } from 'stream' +import { + buildInvalidRequestMessage, + validateCommandParameters, + ValidateParams +} from '../../httpRoutes/validateCommands.js' +import { isAddress } from 'ethers' + +export class ComputeGetStreamableLogsHandler extends CommandHandler { + validate(command: ComputeGetStreamableLogsCommand): ValidateParams { + const validation = validateCommandParameters(command, [ + 'consumerAddress', + 'signature', + 'nonce', + 'jobId' + ]) + if (validation.valid) { + if (command.consumerAddress && !isAddress(command.consumerAddress)) { + return buildInvalidRequestMessage( + 'Parameter : "consumerAddress" is not a valid web3 address' + ) + } + } + return validation + } + + async handle(task: ComputeGetStreamableLogsCommand): Promise { + const validationResponse = await this.verifyParamsAndRateLimits(task) + if (this.shouldDenyTaskHandling(validationResponse)) { + return validationResponse + } + const oceanNode = this.getOceanNode() + let error = null + + // signature message to check against + const message = task.consumerAddress + task.jobId + task.nonce + const nonceCheckResult: NonceResponse = await checkNonce( + oceanNode.getDatabase().nonce, + task.consumerAddress, + parseInt(task.nonce), + task.signature, + message + ) + + if (!nonceCheckResult.valid) { + // eslint-disable-next-line prefer-destructuring + error = nonceCheckResult.error + } + + if (error) { + CORE_LOGGER.logMessage(error, true) + return { + stream: null, + status: { + httpStatus: 400, + error + } + } + } + + // split jobId (which is already in hash-jobId format) and get the hash + // then get jobId which might contain dashes as well + const index = task.jobId.indexOf('-') + const hash = task.jobId.slice(0, index) + const jobId = task.jobId.slice(index + 1) + + // env might contain + let engine + try { + engine = await oceanNode.getC2DEngines().getC2DByHash(hash) + } catch (e) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + try { + const respStream = await engine.getStreamableLogs(jobId) + if (!respStream) { + return { + stream: null, + status: { + httpStatus: 404 + } + } + } + const response: P2PCommandResponse = { + stream: respStream as unknown as Stream, + status: { + httpStatus: 200 + } + } + + return response + } catch (error) { + CORE_LOGGER.error(error.message) + return { + stream: null, + status: { + httpStatus: 500, + error: error.message + } + } + } + } +} diff --git a/src/components/core/compute/index.ts b/src/components/core/compute/index.ts index 14d73f5cc..2beb8c621 100644 --- a/src/components/core/compute/index.ts +++ b/src/components/core/compute/index.ts @@ -4,3 +4,4 @@ export * from './stopCompute.js' export * from './getStatus.js' export * from './getResults.js' export * from './initialize.js' +export * from './getStreamableLogs.js' diff --git a/src/components/core/compute/initialize.ts b/src/components/core/compute/initialize.ts index 2383ad38d..7f5b0b529 100644 --- a/src/components/core/compute/initialize.ts +++ b/src/components/core/compute/initialize.ts @@ -1,7 +1,8 @@ import { Readable } from 'stream' -import { P2PCommandResponse } from '../../../@types/index.js' +import { P2PCommandResponse } from '../../../@types/OceanNode.js' +import { C2DClusterType } from '../../../@types/C2D/C2D.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -import { Handler } from '../handler/handler.js' +import { CommandHandler } from '../handler/handler.js' import { ComputeInitializeCommand } from '../../../@types/commands.js' import { ProviderComputeInitializeResults } from '../../../@types/Fees.js' import { @@ -13,6 +14,7 @@ import { } from '../../../utils/asset.js' import { verifyProviderFees, createProviderFee } from '../utils/feesHandler.js' import { Blockchain } from '../../../utils/blockchain.js' + import { validateOrderTransaction } from '../utils/validateOrders.js' import { EncryptMethod } from '../../../@types/fileObject.js' import { decrypt } from '../../../utils/crypt.js' @@ -26,14 +28,19 @@ import { getConfiguration } from '../../../utils/index.js' import { sanitizeServiceFiles } from '../../../utils/util.js' import { FindDdoHandler } from '../handler/ddoHandler.js' import { isOrderingAllowedForAsset } from '../handler/downloadHandler.js' +import { getNonceAsNumber } from '../utils/nonceHandler.js' +import { C2DEngineDocker, getAlgorithmImage } from '../../c2d/compute_engine_docker.js' import { DDOManager } from '@oceanprotocol/ddo-js' -export class ComputeInitializeHandler extends Handler { + +export class ComputeInitializeHandler extends CommandHandler { validate(command: ComputeInitializeCommand): ValidateParams { const validation = validateCommandParameters(command, [ 'datasets', 'algorithm', - 'compute', - 'consumerAddress' + 'payment', + 'consumerAddress', + 'environment' + // we might also need a "signature" (did + nonce) for confidential evm template 4 ]) if (validation.valid) { if (command.consumerAddress && !isAddress(command.consumerAddress)) { @@ -41,17 +48,14 @@ export class ComputeInitializeHandler extends Handler { 'Parameter : "consumerAddress" is not a valid web3 address' ) } - const { validUntil } = command.compute - if (validUntil <= new Date().getTime() / 1000) { - const errorMsg = `Error validating validUntil ${validUntil}. It is not in the future.` - CORE_LOGGER.error(errorMsg) - return buildInvalidRequestMessage(errorMsg) - } else if (!command.compute || !command.compute.env) { - CORE_LOGGER.error(`Invalid compute environment: ${command.compute.env}`) - return buildInvalidRequestMessage( - `Invalid compute environment: ${command.compute.env}` - ) + if (!command.payment.chainId || !command.payment.token) { + return buildInvalidRequestMessage('Invalid payment options') } + if (command.maxJobDuration && parseInt(String(command.maxJobDuration)) <= 0) { + return buildInvalidRequestMessage('Invalid maxJobDuration') + } + + return validation } return validation @@ -62,14 +66,116 @@ export class ComputeInitializeHandler extends Handler { if (this.shouldDenyTaskHandling(validationResponse)) { return validationResponse } - + let engine + let env + let resourcesNeeded try { - let foundValidCompute = null const node = this.getOceanNode() + try { + // split compute env (which is already in hash-envId format) and get the hash + // then get env which might contain dashes as well + const eIndex = task.environment.indexOf('-') + const hash = task.environment.slice(0, eIndex) + engine = await this.getOceanNode().getC2DEngines().getC2DByHash(hash) + } catch (e) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + if (engine === null) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + try { + env = await engine.getComputeEnvironment(task.payment.chainId, task.environment) + if (!env) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + if (!task.maxJobDuration || task.maxJobDuration > env.maxJobDuration) { + task.maxJobDuration = env.maxJobDuration + } + resourcesNeeded = await engine.checkAndFillMissingResources( + task.payment.resources, + env, + false + ) + } catch (e) { + return { + stream: null, + status: { + httpStatus: 500, + error: String(e) + } + } + } + // check if we have the required token as payment method + const prices = engine.getEnvPricesForToken( + env, + task.payment.chainId, + task.payment.token + ) + if (!prices) { + return { + stream: null, + status: { + httpStatus: 500, + error: `This compute env does not accept payments on chain: ${task.payment.chainId} using token ${task.payment.token}` + } + } + } + + const escrowAddress = await engine.escrow.getEscrowContractAddressForChain( + task.payment.chainId + ) + if (!escrowAddress) { + return { + stream: null, + status: { + httpStatus: 500, + error: `Cannot handle payments on chainId: ${task.payment.chainId}` + } + } + } + // let's calculate payment needed based on resources request and maxJobDuration + const cost = engine.calculateResourcesCost( + resourcesNeeded, + env, + task.payment.chainId, + task.payment.token, + task.maxJobDuration + ) const allFees: ProviderComputeInitializeResults = { algorithm: null, - datasets: [] + datasets: [], + payment: { + escrowAddress, + payee: env.consumerAddress, + chainId: task.payment.chainId, + minLockSeconds: engine.escrow.getMinLockTime(task.maxJobDuration), + token: task.payment.token, + amount: await engine.escrow.getPaymentAmountInWei( + cost, + task.payment.chainId, + task.payment.token + ) + } } + // check algo let index = 0 for (const elem of [...[task.algorithm], ...task.datasets]) { @@ -110,6 +216,7 @@ export class ComputeInitializeHandler extends Handler { } } } + const ddoInstance = DDOManager.getDDOClass(ddo) const { chainId: ddoChainId, nftAddress } = ddoInstance.getDDOFields() const config = await getConfiguration() @@ -127,10 +234,38 @@ export class ComputeInitializeHandler extends Handler { } } + // docker images? + const clusters = config.c2dClusters + let hasDockerImages = false + for (const cluster of clusters) { + if (cluster.type === C2DClusterType.DOCKER) { + hasDockerImages = true + break + } + } + if (hasDockerImages) { + const algoImage = getAlgorithmImage(task.algorithm) + if (algoImage) { + const validation: ValidateParams = await C2DEngineDocker.checkDockerImage( + algoImage, + env.platform + ) + if (!validation.valid) { + return { + stream: null, + status: { + httpStatus: validation.status, + error: `Initialize Compute failed for image ${algoImage} :${validation.reason}` + } + } + } + } + } + const signer = blockchain.getSigner() // check if oasis evm or similar - const confidentialEVM = isConfidentialChainDDO(ddoChainId, service) + const confidentialEVM = isConfidentialChainDDO(BigInt(ddo.chainId), service) // let's see if we can access this asset let canDecrypt = false try { @@ -146,19 +281,34 @@ export class ComputeInitializeHandler extends Handler { service.datatokenAddress, signer ) - if (isTemplate4 && (await isERC20Template4Active(ddoChainId, signer))) { - // call smart contract to decrypt - const serviceIndex = AssetUtils.getServiceIndexById(ddo, service.id) - const filesObject = await getFilesObjectFromConfidentialEVM( - serviceIndex, - service.datatokenAddress, - signer, - task.consumerAddress, - null, // TODO, we will need to have a signature verification - ddo.id - ) - if (filesObject !== null) { - canDecrypt = true + if (isTemplate4) { + if (!task.signature) { + CORE_LOGGER.error( + 'Could not decrypt ddo files on template 4, missing consumer signature!' + ) + } else if (await isERC20Template4Active(ddoChainId, signer)) { + // we need to get the proper data for the signature + const consumeData = + task.consumerAddress + + task.datasets[0].documentId + + getNonceAsNumber(task.consumerAddress) + // call smart contract to decrypt + const serviceIndex = AssetUtils.getServiceIndexById(ddo, service.id) + const filesObject = await getFilesObjectFromConfidentialEVM( + serviceIndex, + service.datatokenAddress, + signer, + task.consumerAddress, + task.signature, // we will need to have a signature verification + consumeData + ) + if (filesObject !== null) { + canDecrypt = true + } + } else { + CORE_LOGGER.error( + 'Could not decrypt ddo files on template 4, template is not active!' + ) } } } @@ -183,22 +333,8 @@ export class ComputeInitializeHandler extends Handler { // start with assumption than we need new providerfees let validFee = { isValid: false, - isComputeValid: false, message: false } - const env = await this.getOceanNode() - .getC2DEngines() - .getExactComputeEnv(task.compute.env, ddoChainId) - if (!env) { - const error = `Compute environment: ${task.compute.env} not available on chainId: ${ddoChainId}` - return { - stream: null, - status: { - httpStatus: 500, - error - } - } - } result.consumerAddress = env.consumerAddress if ('transferTxId' in elem && elem.transferTxId) { // search for that compute env and see if it has access to dataset @@ -219,53 +355,19 @@ export class ComputeInitializeHandler extends Handler { elem.transferTxId, task.consumerAddress, provider, - service, - task.compute.env, - task.compute.validUntil + service ) } else { // no point in checking provider fees if order is expired result.validOrder = false } } - if (validFee.isComputeValid === true) { - foundValidCompute = { txId: elem.transferTxId, chainId: ddoChainId } - } if (validFee.isValid === false) { - // providerFee is no longer valid, so we need to create one - const now = new Date().getTime() / 1000 - let bestValidUntil: number = 0 - if (service.timeout === 0) { - bestValidUntil = task.compute.validUntil // no need to pay more if asset is available for days, but we need houts + if (canDecrypt) { + result.providerFee = await createProviderFee(ddo, service, service.timeout) } else { - bestValidUntil = Math.min(now + service.timeout, task.compute.validUntil) - } - if (foundValidCompute || !canDecrypt) { - // we already have a valid compute fee with another asset, or it's an asset not served by us - // in any case, we need an access providerFee - if (canDecrypt) { - result.providerFee = await createProviderFee( - ddo, - service, - bestValidUntil, - null, - null - ) - } else { - // TO DO: Edge case when this asset is served by a remote provider. - // We should connect to that provider and get the fee - } - } else { - // we need to create a compute fee - // we can only create computeFee if the asset is ours.. - result.providerFee = await createProviderFee( - ddo, - service, - bestValidUntil, - env, - task.compute.validUntil - ) - foundValidCompute = { txId: null, chainId: ddoChainId } + // TO DO: Edge case when this asset is served by a remote provider. + // We should connect to that provider and get the fee } } } @@ -273,12 +375,7 @@ export class ComputeInitializeHandler extends Handler { else allFees.datasets.push(result) index = index + 1 } - if (!foundValidCompute) { - // edge case, where all assets have valid orders and valid provider fees (for download) - // unfortunatelly, none have valid compute provider fees. let's create for the first asset that is published on a chainId that matches our env - // just take any asset and create provider fees with compute - console.log('TO DO!!!!') - } + return { stream: Readable.from(JSON.stringify(allFees)), status: { diff --git a/src/components/core/compute/startCompute.ts b/src/components/core/compute/startCompute.ts index c8c5854d6..1b8bc209e 100644 --- a/src/components/core/compute/startCompute.ts +++ b/src/components/core/compute/startCompute.ts @@ -1,9 +1,11 @@ import { Readable } from 'stream' import { P2PCommandResponse } from '../../../@types/index.js' -import { ComputeAsset } from '../../../@types/C2D.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -import { Handler } from '../handler/handler.js' -import { ComputeStartCommand } from '../../../@types/commands.js' +import { + FreeComputeStartCommand, + PaidComputeStartCommand +} from '../../../@types/commands.js' +import { CommandHandler } from '../handler/handler.js' import { getAlgoChecksums, validateAlgoForDataset } from './utils.js' import { ValidateParams, @@ -19,25 +21,30 @@ import { isERC20Template4Active } from '../../../utils/asset.js' import { EncryptMethod } from '../../../@types/fileObject.js' +import { ComputeResourceRequestWithPrice } from '../../../@types/C2D/C2D.js' import { decrypt } from '../../../utils/crypt.js' -import { verifyProviderFees } from '../utils/feesHandler.js' +// import { verifyProviderFees } from '../utils/feesHandler.js' import { Blockchain } from '../../../utils/blockchain.js' import { validateOrderTransaction } from '../utils/validateOrders.js' import { getConfiguration } from '../../../utils/index.js' import { sanitizeServiceFiles } from '../../../utils/util.js' import { FindDdoHandler } from '../handler/ddoHandler.js' -import { ProviderFeeValidation } from '../../../@types/Fees.js' +// import { ProviderFeeValidation } from '../../../@types/Fees.js' import { isOrderingAllowedForAsset } from '../handler/downloadHandler.js' import { DDOManager } from '@oceanprotocol/ddo-js' -export class ComputeStartHandler extends Handler { - validate(command: ComputeStartCommand): ValidateParams { +import { getNonceAsNumber, checkNonce, NonceResponse } from '../utils/nonceHandler.js' +import { generateUniqueID } from '../../database/sqliteCompute.js' + +export class PaidComputeStartHandler extends CommandHandler { + validate(command: PaidComputeStartCommand): ValidateParams { const commandValidation = validateCommandParameters(command, [ 'consumerAddress', 'signature', 'nonce', 'environment', 'algorithm', - 'dataset' + 'datasets', + 'maxJobDuration' ]) if (commandValidation.valid) { if (!isAddress(command.consumerAddress)) { @@ -45,24 +52,28 @@ export class ComputeStartHandler extends Handler { 'Parameter : "consumerAddress" is not a valid web3 address' ) } + if (parseInt(String(command.maxJobDuration)) <= 0) { + return buildInvalidRequestMessage('Invalid maxJobDuration') + } } return commandValidation } - async handle(task: ComputeStartCommand): Promise { + async handle(task: PaidComputeStartCommand): Promise { const validationResponse = await this.verifyParamsAndRateLimits(task) if (this.shouldDenyTaskHandling(validationResponse)) { return validationResponse } try { + const node = this.getOceanNode() // split compute env (which is already in hash-envId format) and get the hash // then get env which might contain dashes as well const eIndex = task.environment.indexOf('-') const hash = task.environment.slice(0, eIndex) - const envId = task.environment.slice(eIndex + 1) let engine + let env try { - engine = await this.getOceanNode().getC2DEngines().getC2DByHash(hash) + engine = await node.getC2DEngines().getC2DByHash(hash) } catch (e) { return { stream: null, @@ -72,16 +83,42 @@ export class ComputeStartHandler extends Handler { } } } - const node = this.getOceanNode() - const assets: ComputeAsset[] = [task.dataset] - if (task.additionalDatasets) assets.push(...task.additionalDatasets) + + try { + env = await engine.getComputeEnvironment(null, task.environment) + if (!env) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + if (!task.maxJobDuration || task.maxJobDuration > env.maxJobDuration) { + task.maxJobDuration = env.maxJobDuration + } + task.payment.resources = await engine.checkAndFillMissingResources( + task.payment.resources, + env, + false + ) + await engine.checkIfResourcesAreAvailable(task.payment.resources, env, true) + } catch (e) { + return { + stream: null, + status: { + httpStatus: 400, + error: e + } + } + } const { algorithm } = task - let foundValidCompute = null const algoChecksums = await getAlgoChecksums( task.algorithm.documentId, task.algorithm.serviceId, - this.getOceanNode() + node ) if (!algoChecksums.container || !algoChecksums.files) { CORE_LOGGER.error(`Error retrieveing algorithm checksums!`) @@ -94,7 +131,8 @@ export class ComputeStartHandler extends Handler { } } // check algo - for (const elem of [...[task.algorithm], ...assets]) { + for (const elem of [...[task.algorithm], ...task.datasets]) { + console.log(elem) const result: any = { validOrder: false } if ('documentId' in elem && elem.documentId) { result.did = elem.documentId @@ -132,14 +170,15 @@ export class ComputeStartHandler extends Handler { } } } + + const config = await getConfiguration() const ddoInstance = DDOManager.getDDOClass(ddo) const { chainId: ddoChainId, services, metadata, nftAddress - } = ddoInstance.getDDOFields() as any - const config = await getConfiguration() + } = ddoInstance.getDDOFields() const { rpc, network, chainId, fallbackRPCs } = config.supportedNetworks[ddoChainId] const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) @@ -157,7 +196,7 @@ export class ComputeStartHandler extends Handler { const signer = blockchain.getSigner() // let's see if we can access this asset // check if oasis evm or similar - const confidentialEVM = isConfidentialChainDDO(ddoChainId, service) + const confidentialEVM = isConfidentialChainDDO(BigInt(ddo.chainId), service) let canDecrypt = false try { if (!confidentialEVM) { @@ -173,6 +212,11 @@ export class ComputeStartHandler extends Handler { signer ) if (isTemplate4 && (await isERC20Template4Active(ddoChainId, signer))) { + // we need to get the proper data for the signature + const consumeData = + task.consumerAddress + + task.datasets[0].documentId + + getNonceAsNumber(task.consumerAddress) // call smart contract to decrypt const serviceIndex = AssetUtils.getServiceIndexById(ddo, service.id) const filesObject = await getFilesObjectFromConfidentialEVM( @@ -180,8 +224,8 @@ export class ComputeStartHandler extends Handler { service.datatokenAddress, signer, task.consumerAddress, - task.signature, // TODO, we will need to have a signature verification - ddo.id + task.signature, // we will need to have a signature verification + consumeData ) if (filesObject != null) { canDecrypt = true @@ -206,7 +250,7 @@ export class ComputeStartHandler extends Handler { const validAlgoForDataset = await validateAlgoForDataset( task.algorithm.documentId, algoChecksums, - ddo, + ddoInstance, services[0].id, node ) @@ -215,7 +259,9 @@ export class ComputeStartHandler extends Handler { stream: null, status: { httpStatus: 400, - error: `Algorithm ${task.algorithm.documentId} not allowed to run on the dataset: ${ddo.id}` + error: `Algorithm ${ + task.algorithm.documentId + } not allowed to run on the dataset: ${ddoInstance.getDid()}` } } } @@ -225,7 +271,6 @@ export class ComputeStartHandler extends Handler { result.datatoken = service.datatokenAddress result.chainId = ddoChainId - const env = await engine.getComputeEnvironment(ddoChainId, task.environment) if (!('transferTxId' in elem) || !elem.transferTxId) { const error = `Missing transferTxId for DDO ${elem.documentId}` return { @@ -259,78 +304,283 @@ export class ComputeStartHandler extends Handler { } } result.validOrder = elem.transferTxId - // start with assumption than we need new providerfees - const validFee: ProviderFeeValidation = - foundValidCompute === null - ? await verifyProviderFees( - elem.transferTxId, - task.consumerAddress, - provider, - service, - task.environment, - 0 - ) - : { - isValid: false, - isComputeValid: false, - message: false, - validUntil: 0 - } - if (validFee.isComputeValid === true) { - CORE_LOGGER.logMessage( - `Found a valid compute providerFee ${elem.transferTxId}`, - true - ) - foundValidCompute = { - txId: elem.transferTxId, - chainId: ddoChainId, - validUntil: validFee.validUntil - } - } - if (!('meta' in algorithm) && metadata.type === 'algorithm') { - const { entrypoint, image, tag, checksum } = metadata.algorithm.container + if (!('meta' in algorithm) && ddo.metadata.type === 'algorithm') { + const { entrypoint, image, tag, checksum } = ddo.metadata.algorithm.container const container = { entrypoint, image, tag, checksum } algorithm.meta = { language: metadata.algorithm.language, version: metadata.algorithm.version, container } - if ('format' in metadata.algorithm) { - algorithm.meta.format = metadata.algorithm.format - } } } } - if (!foundValidCompute) { - CORE_LOGGER.logMessage(`Cannot find a valid compute providerFee`, true) + // let's lock the amount + const prices = engine.getEnvPricesForToken( + env, + task.payment.chainId, + task.payment.token + ) + if (!prices) { + return { + stream: null, + status: { + httpStatus: 500, + error: `This compute env does not accept payments on chain: ${task.payment.chainId} using token ${task.payment.token}` + } + } + } + const resources: ComputeResourceRequestWithPrice[] = [] + + for (const res of task.payment.resources) { + const price = engine.getResourcePrice(prices, res.id) + resources.push({ + id: res.id, + amount: res.amount, + price + }) + } + const s = { + assets: task.datasets, + algorithm, + output: task.output, + environment: env.id, + owner: task.consumerAddress, + maxJobDuration: task.maxJobDuration, + chainId: task.payment.chainId, + agreementId: '', + resources + } + // job ID unicity + const jobId = generateUniqueID(s) + // let's calculate payment needed based on resources request and maxJobDuration + const cost = engine.calculateResourcesCost( + task.payment.resources, + env, + task.payment.chainId, + task.payment.token, + task.maxJobDuration + ) + let agreementId + try { + agreementId = await engine.escrow.createLock( + task.payment.chainId, + jobId, + task.payment.token, + task.consumerAddress, + cost, + task.maxJobDuration + ) + } catch (e) { + return { + stream: null, + status: { + httpStatus: 400, + error: e + } + } + } + try { + const response = await engine.startComputeJob( + task.datasets, + algorithm, + task.output, + env.id, + task.consumerAddress, + task.maxJobDuration, + task.payment.resources, + { + chainId: task.payment.chainId, + token: task.payment.token, + lockTx: agreementId, + claimTx: null + }, + jobId + ) + CORE_LOGGER.logMessage( + 'ComputeStartCommand Response: ' + JSON.stringify(response, null, 2), + true + ) + + return { + stream: Readable.from(JSON.stringify(response)), + status: { + httpStatus: 200 + } + } + } catch (e) { + try { + await engine.escrow.cancelExpiredLocks( + task.payment.chainId, + jobId, + task.payment.token, + task.consumerAddress + ) + } catch (e) { + // is fine if it fails + } return { stream: null, status: { httpStatus: 400, - error: `Invalid compute environment: ${task.environment}` + error: e } } } - // TODO - hardcoded values. - // - validate providerFees -> will generate chainId & agreementId & validUntil - const { chainId } = foundValidCompute - const agreementId = foundValidCompute.txId - const { validUntil } = foundValidCompute + } catch (error) { + CORE_LOGGER.error(error.message) + return { + stream: null, + status: { + httpStatus: 500, + error: error.message + } + } + } + } +} +export class FreeComputeStartHandler extends CommandHandler { + validate(command: FreeComputeStartCommand): ValidateParams { + const commandValidation = validateCommandParameters(command, [ + 'algorithm', + 'datasets', + 'consumerAddress', + 'signature', + 'nonce', + 'environment' + ]) + if (commandValidation.valid) { + if (!isAddress(command.consumerAddress)) { + return buildInvalidRequestMessage( + 'Parameter : "consumerAddress" is not a valid web3 address' + ) + } + } + return commandValidation + } + + async handle(task: FreeComputeStartCommand): Promise { + const validationResponse = await this.verifyParamsAndRateLimits(task) + if (this.shouldDenyTaskHandling(validationResponse)) { + return validationResponse + } + const thisNode = this.getOceanNode() + // Validate nonce and signature + const nonceCheckResult: NonceResponse = await checkNonce( + thisNode.getDatabase().nonce, + task.consumerAddress, + parseInt(task.nonce), + task.signature, + String(task.nonce) + ) + + if (!nonceCheckResult.valid) { + CORE_LOGGER.logMessage( + 'Invalid nonce or signature, unable to proceed: ' + nonceCheckResult.error, + true + ) + return { + stream: null, + status: { + httpStatus: 500, + error: + 'Invalid nonce or signature, unable to proceed: ' + nonceCheckResult.error + } + } + } + let engine = null + try { + // split compute env (which is already in hash-envId format) and get the hash + // then get env which might contain dashes as well + const eIndex = task.environment.indexOf('-') + const hash = task.environment.slice(0, eIndex) + // const envId = task.environment.slice(eIndex + 1) + try { + engine = await thisNode.getC2DEngines().getC2DByHash(hash) + } catch (e) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + if (engine === null) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + try { + const env = await engine.getComputeEnvironment(null, task.environment) + if (!env) { + return { + stream: null, + status: { + httpStatus: 500, + error: 'Invalid C2D Environment' + } + } + } + + task.resources = await engine.checkAndFillMissingResources( + task.resources, + env, + true + ) + await engine.checkIfResourcesAreAvailable(task.resources, env, true) + if (!task.maxJobDuration || task.maxJobDuration > env.free.maxJobDuration) { + task.maxJobDuration = env.free.maxJobDuration + } + } catch (e) { + console.error(e) + return { + stream: null, + status: { + httpStatus: 400, + error: String(e) + } + } + } + // console.log(task.resources) + /* + return { + stream: null, + status: { + httpStatus: 200, + error: null + } + } */ + const s = { + assets: task.datasets, + algorithm: task.algorithm, + output: task.output, + environment: task.environment, + owner: task.consumerAddress, + maxJobDuration: task.maxJobDuration, + resources: task.resources + } + const jobId = generateUniqueID(s) const response = await engine.startComputeJob( - assets, - algorithm, + task.datasets, + task.algorithm, task.output, + task.environment, task.consumerAddress, - envId, - validUntil, - chainId, - agreementId + task.maxJobDuration, + task.resources, + null, + jobId ) CORE_LOGGER.logMessage( - 'ComputeStartCommand Response: ' + JSON.stringify(response, null, 2), + 'FreeComputeStartCommand Response: ' + JSON.stringify(response, null, 2), true ) diff --git a/src/components/core/compute/stopCompute.ts b/src/components/core/compute/stopCompute.ts index 72f3c4662..3352a923d 100644 --- a/src/components/core/compute/stopCompute.ts +++ b/src/components/core/compute/stopCompute.ts @@ -1,7 +1,7 @@ import { Readable } from 'stream' import { P2PCommandResponse } from '../../../@types/index.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -import { Handler } from '../handler/handler.js' +import { CommandHandler } from '../handler/handler.js' import { ComputeStopCommand } from '../../../@types/commands.js' import { ValidateParams, @@ -10,7 +10,7 @@ import { } from '../../httpRoutes/validateCommands.js' import { isAddress } from 'ethers' -export class ComputeStopHandler extends Handler { +export class ComputeStopHandler extends CommandHandler { validate(command: ComputeStopCommand): ValidateParams { const validation = validateCommandParameters(command, [ 'consumerAddress', diff --git a/src/components/core/compute/utils.ts b/src/components/core/compute/utils.ts index 1d5c28cb6..366052e7f 100644 --- a/src/components/core/compute/utils.ts +++ b/src/components/core/compute/utils.ts @@ -1,5 +1,5 @@ import { OceanNode } from '../../../OceanNode.js' -import { AlgoChecksums } from '../../../@types/C2D.js' +import { AlgoChecksums } from '../../../@types/C2D/C2D.js' import { ArweaveFileObject, IpfsFileObject, @@ -12,8 +12,7 @@ import { fetchFileMetadata } from '../../../utils/asset.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { createHash } from 'crypto' import { FindDdoHandler } from '../../core/handler/ddoHandler.js' -import { DDOManager } from '@oceanprotocol/ddo-js' -import { DDO } from '../../../@types/DDO/DDO.js' +import { DDOManager, VersionedDDO } from '@oceanprotocol/ddo-js' export async function getAlgoChecksums( algoDID: string, @@ -47,6 +46,7 @@ export async function getAlgoChecksums( const { contentChecksum } = await fetchFileMetadata(url, 'get', false) checksums.files = checksums.files.concat(contentChecksum) } + const ddoInstance = DDOManager.getDDOClass(algoDDO) const { metadata } = ddoInstance.getDDOFields() checksums.container = createHash('sha256') @@ -67,12 +67,11 @@ export async function validateAlgoForDataset( files: string container: string }, - datasetDDO: DDO | Record, + ddoInstance: VersionedDDO, datasetServiceId: string, oceanNode: OceanNode ) { try { - const ddoInstance = DDOManager.getDDOClass(datasetDDO) const { services } = ddoInstance.getDDOFields() as any const datasetService = services.find( (service: any) => service.id === datasetServiceId @@ -88,8 +87,10 @@ export async function validateAlgoForDataset( if (algoDID) { if ( // if not set allow them all - !compute.publisherTrustedAlgorithms && - !compute.publisherTrustedAlgorithmPublishers + (!Array.isArray(compute.publisherTrustedAlgorithms) || + compute.publisherTrustedAlgorithms.length === 0) && + (!Array.isArray(compute.publisherTrustedAlgorithmPublishers) || + compute.publisherTrustedAlgorithmPublishers.length === 0) ) { return true } diff --git a/src/components/core/handler/coreHandlersRegistry.ts b/src/components/core/handler/coreHandlersRegistry.ts index 82f0a3540..4656b8727 100644 --- a/src/components/core/handler/coreHandlersRegistry.ts +++ b/src/components/core/handler/coreHandlersRegistry.ts @@ -12,10 +12,9 @@ import { import { DownloadHandler } from './downloadHandler.js' import { FileInfoHandler } from './fileInfoHandler.js' import { PolicyServerPassthroughHandler } from './policyServer.js' -import { EchoHandler } from './echoHandler.js' import { EncryptHandler, EncryptFileHandler } from './encryptHandler.js' import { FeesHandler } from './feesHandler.js' -import { Handler } from './handler.js' +import { BaseHandler, CommandHandler } from './handler.js' import { NonceHandler } from './nonceHandler.js' import { QueryHandler } from './queryHandler.js' import { DetailedStatusHandler, StatusHandler } from './statusHandler.js' @@ -23,27 +22,35 @@ import { OceanNode } from '../../../OceanNode.js' import { Command } from '../../../@types/commands.js' import { ComputeGetEnvironmentsHandler, - ComputeStartHandler, + PaidComputeStartHandler, + FreeComputeStartHandler, ComputeStopHandler, ComputeGetStatusHandler, ComputeGetResultHandler, - ComputeInitializeHandler + ComputeInitializeHandler, + ComputeGetStreamableLogsHandler } from '../compute/index.js' import { StopNodeHandler } from '../admin/stopNodeHandler.js' import { ReindexTxHandler } from '../admin/reindexTxHandler.js' import { ReindexChainHandler } from '../admin/reindexChainHandler.js' import { IndexingThreadHandler } from '../admin/IndexingThreadHandler.js' import { CollectFeesHandler } from '../admin/collectFeesHandler.js' - +import { AdminCommandHandler } from '../admin/adminHandler.js' +import { + GetP2PPeerHandler, + GetP2PPeersHandler, + GetP2PNetworkStatsHandler, + FindPeerHandler +} from './p2p.js' export type HandlerRegistry = { handlerName: string // name of the handler - handlerImpl: Handler // class that implements it + handlerImpl: BaseHandler // class that implements it } // we can use this factory class to create adittional handlers // and then register them on the Ocean Node instance export class HandlerFactory { - static buildHandlerForTask(task: Command, impl: Handler): HandlerRegistry { + static buildHandlerForTask(task: Command, impl: BaseHandler): HandlerRegistry { if (!task || !impl) { const msg = 'Invalid task/handler parameters!' OCEAN_NODE_LOGGER.error(msg) @@ -66,7 +73,7 @@ export class CoreHandlersRegistry { // eslint-disable-next-line no-use-before-define private static instance: CoreHandlersRegistry // map of handlers registered - private coreHandlers: Map = new Map() + private coreHandlers: Map = new Map() // private readonly node: OceanP2P private constructor(node: OceanNode) { @@ -85,7 +92,6 @@ export class CoreHandlersRegistry { ) this.registerCoreHandler(PROTOCOL_COMMANDS.FIND_DDO, new FindDdoHandler(node)) this.registerCoreHandler(PROTOCOL_COMMANDS.GET_FEES, new FeesHandler(node)) - this.registerCoreHandler(PROTOCOL_COMMANDS.ECHO, new EchoHandler(node)) this.registerCoreHandler(PROTOCOL_COMMANDS.FILE_INFO, new FileInfoHandler(node)) this.registerCoreHandler( PROTOCOL_COMMANDS.POLICY_SERVER_PASSTHROUGH, @@ -99,7 +105,11 @@ export class CoreHandlersRegistry { ) this.registerCoreHandler( PROTOCOL_COMMANDS.COMPUTE_START, - new ComputeStartHandler(node) + new PaidComputeStartHandler(node) + ) + this.registerCoreHandler( + PROTOCOL_COMMANDS.FREE_COMPUTE_START, + new FreeComputeStartHandler(node) ) this.registerCoreHandler(PROTOCOL_COMMANDS.COMPUTE_STOP, new ComputeStopHandler(node)) this.registerCoreHandler( @@ -110,6 +120,10 @@ export class CoreHandlersRegistry { PROTOCOL_COMMANDS.COMPUTE_GET_RESULT, new ComputeGetResultHandler(node) ) + this.registerCoreHandler( + PROTOCOL_COMMANDS.COMPUTE_GET_STREAMABLE_LOGS, + new ComputeGetStreamableLogsHandler(node) + ) this.registerCoreHandler( PROTOCOL_COMMANDS.COMPUTE_INITIALIZE, new ComputeInitializeHandler(node) @@ -125,6 +139,16 @@ export class CoreHandlersRegistry { new IndexingThreadHandler(node) ) this.registerCoreHandler(PROTOCOL_COMMANDS.COLLECT_FEES, new CollectFeesHandler(node)) + this.registerCoreHandler(PROTOCOL_COMMANDS.GET_P2P_PEER, new GetP2PPeerHandler(node)) + this.registerCoreHandler( + PROTOCOL_COMMANDS.GET_P2P_PEERS, + new GetP2PPeersHandler(node) + ) + this.registerCoreHandler( + PROTOCOL_COMMANDS.GET_P2P_NETWORK_STATS, + new GetP2PNetworkStatsHandler(node) + ) + this.registerCoreHandler(PROTOCOL_COMMANDS.FIND_PEER, new FindPeerHandler(node)) } public static getInstance(node: OceanNode): CoreHandlersRegistry { @@ -135,7 +159,7 @@ export class CoreHandlersRegistry { } // private method for registering the core handlers - private registerCoreHandler(handlerName: string, handlerObj: Handler) { + private registerCoreHandler(handlerName: string, handlerObj: BaseHandler) { if (!this.coreHandlers.has(handlerName)) { this.coreHandlers.set(handlerName, handlerObj) } @@ -145,14 +169,14 @@ export class CoreHandlersRegistry { public registerHandler(handler: HandlerRegistry) { if ( !this.coreHandlers.has(handler.handlerName) && - handler.handlerImpl instanceof Handler + handler.handlerImpl instanceof BaseHandler ) { this.coreHandlers.set(handler.handlerName, handler.handlerImpl) } } // pass the handler name from the SUPPORTED_PROTOCOL_COMMANDS keys - public getHandler(handlerName: string): Handler | null { + public getHandler(handlerName: string): any { if (!SUPPORTED_PROTOCOL_COMMANDS.includes(handlerName)) { OCEAN_NODE_LOGGER.error( `Invalid handler "${handlerName}". No known associated protocol command!` @@ -168,7 +192,7 @@ export class CoreHandlersRegistry { return this.coreHandlers.get(handlerName) } - public getHandlerForTask(task: Command): Handler | null { + public getHandlerForTask(task: Command): CommandHandler | AdminCommandHandler | null { return this.getHandler(task.command) } diff --git a/src/components/core/handler/ddoHandler.ts b/src/components/core/handler/ddoHandler.ts index 07f7bba80..82267d682 100644 --- a/src/components/core/handler/ddoHandler.ts +++ b/src/components/core/handler/ddoHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { EVENTS, MetadataStates, PROTOCOL_COMMANDS } from '../../../utils/constants.js' import { P2PCommandResponse, FindDDOResponse } from '../../../@types/index.js' import { Readable } from 'stream' @@ -12,18 +12,13 @@ import { import { toString as uint8ArrayToString } from 'uint8arrays/to-string' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' import { sleep, readStream } from '../../../utils/util.js' -import { DDO } from '../../../@types/DDO/DDO.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { Blockchain } from '../../../utils/blockchain.js' import { ethers, isAddress } from 'ethers' import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } // import lzma from 'lzma-native' import lzmajs from 'lzma-purejs-requirejs' -import { - isRemoteDDO, - getValidationSignature, - validateObject -} from '../utils/validateDdoHandler.js' +import { getValidationSignature, isRemoteDDO } from '../utils/validateDdoHandler.js' import { getConfiguration, hasP2PInterface } from '../../../utils/config.js' import { GetDdoCommand, @@ -31,7 +26,6 @@ import { DecryptDDOCommand, ValidateDDOCommand } from '../../../@types/commands.js' -import { Storage } from '../../../components/storage/index.js' import { EncryptMethod } from '../../../@types/fileObject.js' import { ValidateParams, @@ -43,9 +37,11 @@ import { getNetworkHeight, wasNFTDeployedByOurFactory } from '../../Indexer/utils.js' -import { validateDDOHash } from '../../../utils/asset.js' -import { DDOManager } from '@oceanprotocol/ddo-js' +import { deleteIndexedMetadataIfExists, validateDDOHash } from '../../../utils/asset.js' +import { Asset, DDO, DDOManager } from '@oceanprotocol/ddo-js' +import { checkCredentialOnAccessList } from '../../../utils/credentials.js' import { createHash } from 'crypto' +import { Storage } from '../../../components/storage/index.js' const MAX_NUM_PROVIDERS = 5 // after 60 seconds it returns whatever info we have available @@ -53,7 +49,7 @@ const MAX_RESPONSE_WAIT_TIME_SECONDS = 60 // wait time for reading the next getDDO command const MAX_WAIT_TIME_SECONDS_GET_DDO = 5 -export class DecryptDdoHandler extends Handler { +export class DecryptDdoHandler extends CommandHandler { validate(command: DecryptDDOCommand): ValidateParams { const validation = validateCommandParameters(command, [ 'decrypterAddress', @@ -124,6 +120,7 @@ export class DecryptDdoHandler extends Handler { const node = this.getOceanNode() const dbNonce = node.getDatabase().nonce const existingNonce = await dbNonce.retrieve(decrypterAddress) + if (existingNonce && existingNonce.nonce === nonce) { CORE_LOGGER.logMessage(`Decrypt DDO: error ${task.nonce} duplicate nonce`, true) return { @@ -216,6 +213,29 @@ export class DecryptDdoHandler extends Handler { } } + // access list checks, needs blockchain connection + const { authorizedDecryptersList } = config + + const isAllowed = await checkCredentialOnAccessList( + authorizedDecryptersList, + chainId, + decrypterAddress, + signer + ) + if (!isAllowed) { + CORE_LOGGER.logMessage( + 'Decrypt DDO: Decrypter not authorized per access list', + true + ) + return { + stream: null, + status: { + httpStatus: 403, + error: `Decrypt DDO: Decrypter ${decrypterAddress} not authorized per access list` + } + } + } + const transactionId = task.transactionId ? String(task.transactionId) : '' let encryptedDocument: Uint8Array let flags: number @@ -255,6 +275,7 @@ export class DecryptDdoHandler extends Handler { try { encryptedDocument = ethers.getBytes(task.encryptedDocument) flags = Number(task.flags) + // eslint-disable-next-line prefer-destructuring documentHash = task.documentHash } catch (error) { CORE_LOGGER.logMessage(`Decrypt DDO: error ${error}`, true) @@ -290,7 +311,6 @@ export class DecryptDdoHandler extends Handler { } } } - if ( ![ MetadataStates.ACTIVE, @@ -324,7 +344,6 @@ export class DecryptDdoHandler extends Handler { } } } - if (flags & 1) { try { decryptedDocument = lzmajs.decompressFile(decryptedDocument) @@ -361,44 +380,10 @@ export class DecryptDdoHandler extends Handler { } } } - - // check signature - try { - const message = String( - transactionId + dataNftAddress + decrypterAddress + chainId + nonce - ) - const messageHash = ethers.solidityPackedKeccak256( - ['bytes'], - [ethers.hexlify(ethers.toUtf8Bytes(message))] - ) - const addressFromHashSignature = ethers.verifyMessage(messageHash, task.signature) - const messageHashBytes = ethers.toBeArray(messageHash) - const addressFromBytesSignature = ethers.verifyMessage( - messageHashBytes, - task.signature - ) - - if ( - addressFromHashSignature?.toLowerCase() !== decrypterAddress?.toLowerCase() && - addressFromBytesSignature?.toLowerCase() !== decrypterAddress?.toLowerCase() - ) { - throw new Error('address does not match') - } - } catch (error) { - CORE_LOGGER.logMessage(`Decrypt DDO: error signature ${error}`, true) - return { - stream: null, - status: { - httpStatus: 400, - error: 'Decrypt DDO: invalid signature or does not match' - } - } - } const decryptedDocumentString = decryptedDocument.toString() const ddoObject = JSON.parse(decryptedDocumentString) let stream = Readable.from(decryptedDocumentString) - if (isRemoteDDO(ddoObject)) { const storage = Storage.getStorageClass(ddoObject.remote, config) const result = await storage.getReadableStream() @@ -421,6 +406,31 @@ export class DecryptDdoHandler extends Handler { } } + // check signature + try { + const message = String( + transactionId + dataNftAddress + decrypterAddress + chainId + nonce + ) + const messageHash = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const addressFromSignature = ethers.verifyMessage(messageHash, task.signature) + + if (addressFromSignature?.toLowerCase() !== decrypterAddress?.toLowerCase()) { + throw new Error('address does not match') + } + } catch (error) { + CORE_LOGGER.logMessage(`Decrypt DDO: error signature ${error}`, true) + return { + stream: null, + status: { + httpStatus: 400, + error: 'Decrypt DDO: invalid signature or does not match' + } + } + } + return { stream, status: { httpStatus: 200 } @@ -435,7 +445,7 @@ export class DecryptDdoHandler extends Handler { } } -export class GetDdoHandler extends Handler { +export class GetDdoHandler extends CommandHandler { validate(command: GetDdoCommand): ValidateParams { let validation = validateCommandParameters(command, ['id']) if (validation.valid) { @@ -472,7 +482,7 @@ export class GetDdoHandler extends Handler { } } -export class FindDdoHandler extends Handler { +export class FindDdoHandler extends CommandHandler { validate(command: FindDDOCommand): ValidateParams { let validation = validateCommandParameters(command, ['id']) if (validation.valid) { @@ -560,14 +570,11 @@ export class FindDdoHandler extends Handler { if (providerIds.length > 0) { const peer = providerIds.pop() const isResponseLegit = await checkIfDDOResponseIsLegit(ddo) - const ddoInstance = DDOManager.getDDOClass(ddo) - const { metadata } = ddoInstance.getDDOFields() - const { event } = ddoInstance.getAssetFields() if (isResponseLegit) { const ddoInfo: FindDDOResponse = { id: ddo.id, - lastUpdateTx: event.txid, - lastUpdateTime: metadata.updated, + lastUpdateTx: ddo.indexedMetadata.event.txid, + lastUpdateTime: ddo.metadata.updated, provider: peer } resultList.push(ddoInfo) @@ -735,16 +742,13 @@ export class FindDdoHandler extends Handler { } // Function to use findDDO and get DDO in desired format - async findAndFormatDdo( - ddoId: string, - force: boolean = false - ): Promise | null> { + async findAndFormatDdo(ddoId: string, force: boolean = false): Promise { const node = this.getOceanNode() // First try to find the DDO Locally if findDDO is not enforced if (!force) { try { const ddo = await node.getDatabase().ddo.retrieve(ddoId) - return ddo as Record + return ddo as DDO } catch (error) { CORE_LOGGER.logMessage( `Unable to find DDO locally. Proceeding to call findDDO`, @@ -771,23 +775,24 @@ export class FindDdoHandler extends Handler { } // Format each service according to the Service interface - const ddoInstance = DDOManager.getDDOClass(ddoData) - const { services } = ddoInstance.getDDOFields() - const formattedServices = services.map(formatService) - const ddo = ddoInstance.updateFields({ services: formattedServices as any }) + const formattedServices = ddoData.services.map(formatService) // Map the DDO data to the DDO interface - // const ddo: DDO = { - // '@context': ddoData['@context'], - // id: ddoData.id, - // version: ddoData.version, - // nftAddress, - // chainId, - // metadata: metadata as any, - // services: formattedServices, - // credentials: ddoData.credentials, - // event: ddoData.event - // } + const ddo: Asset = { + '@context': ddoData['@context'], + id: ddoData.id, + version: ddoData.version, + nftAddress: ddoData.nftAddress, + chainId: ddoData.chainId, + metadata: ddoData.metadata, + services: formattedServices, + credentials: ddoData.credentials, + indexedMetadata: { + stats: ddoData.indexedMetadata.stats, + event: ddoData.indexedMetadata.event, + nft: ddoData.indexedMetadata.nft + } + } return ddo } @@ -804,7 +809,7 @@ export class FindDdoHandler extends Handler { } } -export class ValidateDDOHandler extends Handler { +export class ValidateDDOHandler extends CommandHandler { validate(command: ValidateDDOCommand): ValidateParams { let validation = validateCommandParameters(command, ['ddo']) if (validation.valid) { @@ -815,12 +820,44 @@ export class ValidateDDOHandler extends Handler { } async handle(task: ValidateDDOCommand): Promise { + const configuration = await getConfiguration() const validationResponse = await this.verifyParamsAndRateLimits(task) if (this.shouldDenyTaskHandling(validationResponse)) { return validationResponse } try { - const validation = await validateObject(task.ddo) + const ddoInstance = DDOManager.getDDOClass(task.ddo) + const validation = await ddoInstance.validate() + + const { ddo, publisherAddress, nonce, signature: signatureFromRequest } = task + if (configuration.validateUnsignedDDO === false) { + if (!publisherAddress || !nonce || !signatureFromRequest) { + return { + stream: null, + status: { + httpStatus: 400, + error: + 'A signature is required to validate a DDO, please provide a signed message with the publisher address, nonce and signature' + } + } + } + } + + if (publisherAddress && nonce && signatureFromRequest) { + const isValid = validateDdoSignedByPublisher( + ddo, + nonce, + signatureFromRequest, + publisherAddress + ) + if (!isValid) { + return { + stream: null, + status: { httpStatus: 400, error: 'Invalid signature' } + } + } + } + if (validation[0] === false) { CORE_LOGGER.logMessageWithEmoji( `Validation failed with error: ${validation[1]}`, @@ -853,6 +890,27 @@ export class ValidateDDOHandler extends Handler { } } +export function validateDdoSignedByPublisher( + ddo: DDO, + nonce: string, + signature: string, + publisherAddress: string +): boolean { + try { + const message = ddo.id + nonce + const messageHash = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const messageHashBytes = ethers.toBeArray(messageHash) + const recoveredAddress = ethers.verifyMessage(messageHashBytes, signature) + return recoveredAddress === publisherAddress + } catch (error) { + CORE_LOGGER.logMessage(`Error: ${error}`, true) + return false + } +} + export function validateDDOIdentifier(identifier: string): ValidateParams { const valid = identifier && identifier.length > 0 && identifier.startsWith('did:op') if (!valid) { @@ -873,13 +931,14 @@ export function validateDDOIdentifier(identifier: string): ValidateParams { * @returns validation result */ async function checkIfDDOResponseIsLegit(ddo: any): Promise { - const ddoInstance = DDOManager.getDDOClass(ddo) - const { nftAddress, chainId } = ddoInstance.getDDOFields() - const { event } = ddoInstance.getAssetFields() - let isValid = validateDDOHash(ddo.id, nftAddress, chainId) + const clonedDdo = structuredClone(ddo) + const { indexedMetadata } = clonedDdo + const updatedDdo = deleteIndexedMetadataIfExists(ddo) + const { nftAddress, chainId } = updatedDdo + let isValid = validateDDOHash(updatedDdo.id, nftAddress, chainId) // 1) check hash sha256(nftAddress + chainId) if (!isValid) { - CORE_LOGGER.error(`Asset ${ddo.id} does not have a valid hash`) + CORE_LOGGER.error(`Asset ${updatedDdo.id} does not have a valid hash`) return false } @@ -913,19 +972,25 @@ async function checkIfDDOResponseIsLegit(ddo: any): Promise { ) if (!wasDeployedByUs) { - CORE_LOGGER.error(`Asset ${ddo.id} not deployed by the data NFT factory`) + CORE_LOGGER.error(`Asset ${updatedDdo.id} not deployed by the data NFT factory`) return false } // 5) check block & events const networkBlock = await getNetworkHeight(blockchain.getProvider()) - if (!event.block || event.block < 0 || networkBlock < event.block) { - CORE_LOGGER.error(`Event block: ${event.block} is either missing or invalid`) + if ( + !indexedMetadata.event.block || + indexedMetadata.event.block < 0 || + networkBlock < indexedMetadata.event.block + ) { + CORE_LOGGER.error( + `Event block: ${indexedMetadata.event.block} is either missing or invalid` + ) return false } // check events on logs - const txId: string = event.txid // NOTE: DDO is txid, Asset is tx + const txId: string = indexedMetadata.event.txid || indexedMetadata.event.tx // NOTE: DDO is txid, Asset is tx if (!txId) { CORE_LOGGER.error(`DDO event missing tx data, cannot confirm transaction`) return false diff --git a/src/components/core/handler/downloadHandler.ts b/src/components/core/handler/downloadHandler.ts index 1d4bfa107..2c3508ad6 100644 --- a/src/components/core/handler/downloadHandler.ts +++ b/src/components/core/handler/downloadHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { checkNonce, NonceResponse } from '../utils/nonceHandler.js' import { ENVIRONMENT_VARIABLES, @@ -20,7 +20,6 @@ import { isDataTokenTemplate4, isERC20Template4Active } from '../../../utils/asset.js' -import { Service } from '../../../@types/DDO/Service.js' import { ArweaveStorage, IpfsStorage, Storage } from '../../storage/index.js' import { Blockchain, @@ -38,25 +37,22 @@ import { validateCommandParameters, ValidateParams } from '../../httpRoutes/validateCommands.js' -import { DDO } from '../../../@types/DDO/DDO.js' import { sanitizeServiceFiles } from '../../../utils/util.js' -import { getNFTContract } from '../../Indexer/utils.js' import { OrdableAssetResponse } from '../../../@types/Asset.js' import { PolicyServer } from '../../policyServer/index.js' -import { DDOManager } from '@oceanprotocol/ddo-js' +import { Asset, DDO, DDOManager, Service } from '@oceanprotocol/ddo-js' export const FILE_ENCRYPTION_ALGORITHM = 'aes-256-cbc' -export function isOrderingAllowedForAsset( - asset: Record -): OrdableAssetResponse { - const ddoInstance = DDOManager.getDDOClass(asset) - const { nft } = ddoInstance.getAssetFields() +export function isOrderingAllowedForAsset(asset: Asset): OrdableAssetResponse { if (!asset) { return { isOrdable: false, reason: `Asset provided is either null, either undefined ${asset}` } - } else if (nft && !(nft.state in [MetadataStates.ACTIVE, MetadataStates.UNLISTED])) { + } else if ( + asset.indexedMetadata.nft && + !(asset.indexedMetadata.nft.state in [MetadataStates.ACTIVE, MetadataStates.UNLISTED]) + ) { return { isOrdable: false, reason: @@ -211,7 +207,7 @@ export function validateFilesStructure( return true } -export class DownloadHandler extends Handler { +export class DownloadHandler extends CommandHandler { validate(command: DownloadCommand): ValidateParams { return validateCommandParameters(command, [ 'fileIndex', @@ -238,7 +234,7 @@ export class DownloadHandler extends Handler { const ddo = await handler.findAndFormatDdo(task.documentId) if (ddo) { - CORE_LOGGER.logMessage('DDO for asset found: ' + ddo, true) + CORE_LOGGER.logMessage('DDO for asset found: ' + JSON.stringify(ddo), true) } else { CORE_LOGGER.logMessage( 'No DDO for asset found. Cannot proceed with download.', @@ -265,6 +261,7 @@ export class DownloadHandler extends Handler { } } + // 2. Validate ddo and credentials const ddoInstance = DDOManager.getDDOClass(ddo) const { chainId: ddoChainId, @@ -272,7 +269,6 @@ export class DownloadHandler extends Handler { nftAddress, credentials } = ddoInstance.getDDOFields() - // 2. Validate ddo and credentials if (!ddoChainId || !nftAddress || !metadata) { CORE_LOGGER.logMessage('Error: DDO malformed or disabled', true) return { @@ -284,9 +280,11 @@ export class DownloadHandler extends Handler { } } - // check credentials + // check credentials (DDO level) let accessGrantedDDOLevel: boolean if (credentials) { + // if POLICY_SERVER_URL exists, then ocean-node will NOT perform any checks. + // It will just use the existing code and let PolicyServer decide. if (isPolicyServerConfigured()) { accessGrantedDDOLevel = await ( await new PolicyServer().checkDownload( @@ -380,41 +378,12 @@ export class DownloadHandler extends Handler { } } } - // check lifecycle state of the asset - const nftContract = getNFTContract(blockchain.getSigner(), nftAddress) - const nftState = Number(await nftContract.metaDataState()) - if (nftState !== 0 && nftState !== 5) { - CORE_LOGGER.logMessage( - `Error: Asset with id ${ddo.id} is not in an active state`, - true - ) - return { - stream: null, - status: { - httpStatus: 500, - error: `Error: Asset with id ${ddo.id} is not in an active state` - } - } - } let service = AssetUtils.getServiceById(ddo, task.serviceId) if (!service) service = AssetUtils.getServiceByIndex(ddo, Number(task.serviceId)) if (!service) throw new Error('Cannot find service') - // check lifecycle state of the service - undefined state is considered active - if (service.state && service.state !== 0 && service.state !== 5) { - CORE_LOGGER.logMessage( - `Error: Service with id ${service.id} is not in an active state`, - true - ) - return { - stream: null, - status: { - httpStatus: 500, - error: `Error: Service with id ${service.id} is not in an active state` - } - } - } // check credentials on service level + // if using a policy server and we are here it means that access was granted (they are merged/assessed together) if (service.credentials) { let accessGrantedServiceLevel: boolean if (isPolicyServerConfigured()) { @@ -438,6 +407,7 @@ export class DownloadHandler extends Handler { ? checkCredentials(service.credentials, task.consumerAddress) : true } + if (!accessGrantedServiceLevel) { CORE_LOGGER.logMessage( `Error: Access to service with id ${service.id} was denied`, @@ -446,12 +416,13 @@ export class DownloadHandler extends Handler { return { stream: null, status: { - httpStatus: 500, + httpStatus: 403, error: `Error: Access to service with id ${service.id} was denied` } } } } + // 4. Check service type const serviceType = service.type if (serviceType === 'compute') { @@ -482,9 +453,7 @@ export class DownloadHandler extends Handler { task.transferTxId, task.consumerAddress, provider, - service, - null, - null + service ) if (!validFee.isValid) { return { @@ -554,7 +523,7 @@ export class DownloadHandler extends Handler { let decriptedFileObject: any = null let decryptedFileData: any = null // check if confidential EVM - const confidentialEVM = isConfidentialChainDDO(ddoChainId, service) + const confidentialEVM = isConfidentialChainDDO(BigInt(ddoChainId), service) // check that files is missing and template 4 is active on the chain if (confidentialEVM) { const signer = blockchain.getSigner() diff --git a/src/components/core/handler/echoHandler.ts b/src/components/core/handler/echoHandler.ts deleted file mode 100644 index 9c97bb284..000000000 --- a/src/components/core/handler/echoHandler.ts +++ /dev/null @@ -1,28 +0,0 @@ -import { P2PCommandResponse } from '../../../@types/index.js' -import { EchoCommand } from '../../../@types/commands.js' -import { ReadableString } from '../../P2P/handleProtocolCommands.js' -import { - validateCommandParameters, - ValidateParams -} from '../../httpRoutes/validateCommands.js' -import { Handler } from './handler.js' - -export class EchoHandler extends Handler { - validate(command: EchoCommand): ValidateParams { - return validateCommandParameters(command, []) - } - - async handle(task: EchoCommand): Promise { - const validationResponse = await this.verifyParamsAndRateLimits(task) - if (this.shouldDenyTaskHandling(validationResponse)) { - return validationResponse - } - return { - status: { - httpStatus: 200, - error: null - }, - stream: new ReadableString('OK') - } - } -} diff --git a/src/components/core/handler/encryptHandler.ts b/src/components/core/handler/encryptHandler.ts index 43213085a..74e5c909d 100644 --- a/src/components/core/handler/encryptHandler.ts +++ b/src/components/core/handler/encryptHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { EncryptCommand, EncryptFileCommand } from '../../../@types/commands.js' import * as base58 from 'base58-js' @@ -21,7 +21,7 @@ export const SUPPORTED_ENCRYPTION_METHODS = [ EncryptMethod.ECIES.toString() ] -export class EncryptHandler extends Handler { +export class EncryptHandler extends CommandHandler { validate(command: EncryptCommand): ValidateParams { const commandValidation = validateCommandParameters(command, ['blob']) if (!commandValidation.valid) { @@ -80,7 +80,7 @@ export class EncryptHandler extends Handler { } } -export class EncryptFileHandler extends Handler { +export class EncryptFileHandler extends CommandHandler { validate(command: EncryptFileCommand): ValidateParams { const validateCommand = validateCommandParameters(command, []) if (validateCommand.valid) { diff --git a/src/components/core/handler/feesHandler.ts b/src/components/core/handler/feesHandler.ts index 5ba51cdf7..41d81c483 100644 --- a/src/components/core/handler/feesHandler.ts +++ b/src/components/core/handler/feesHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { GetFeesCommand } from '../../../@types/commands.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { createProviderFee } from '../utils/feesHandler.js' @@ -18,7 +18,7 @@ import { streamToString } from '../../../utils/util.js' import { isOrderingAllowedForAsset } from './downloadHandler.js' import { DDOManager } from '@oceanprotocol/ddo-js' -export class FeesHandler extends Handler { +export class FeesHandler extends CommandHandler { validate(command: GetFeesCommand): ValidateParams { let validation = validateCommandParameters(command, ['ddoId', 'serviceId']) if (validation.valid) { @@ -100,7 +100,7 @@ export class FeesHandler extends Handler { const nonce = await streamToString(nonceHandlerResponse.stream as Readable) try { - const providerFee = await createProviderFee(ddo, service, validUntil, null, null) + const providerFee = await createProviderFee(ddo, service, validUntil) if (providerFee) { const response: ProviderInitialize = { providerFee, diff --git a/src/components/core/handler/fileInfoHandler.ts b/src/components/core/handler/fileInfoHandler.ts index ad89de96f..a1c5e04f4 100644 --- a/src/components/core/handler/fileInfoHandler.ts +++ b/src/components/core/handler/fileInfoHandler.ts @@ -9,7 +9,7 @@ import { import { FileInfoCommand } from '../../../@types/commands.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { Storage } from '../../storage/index.js' -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { validateDDOIdentifier } from './ddoHandler.js' import { fetchFileMetadata } from '../../../utils/asset.js' import { @@ -45,7 +45,7 @@ async function formatMetadata(file: ArweaveFileObject | IpfsFileObject | UrlFile type: file.type } } -export class FileInfoHandler extends Handler { +export class FileInfoHandler extends CommandHandler { validate(command: FileInfoCommand): ValidateParams { let validation = validateCommandParameters(command, []) // all optional? weird if (validation.valid) { diff --git a/src/components/core/handler/handler.ts b/src/components/core/handler/handler.ts index 93aafdc94..22def5572 100644 --- a/src/components/core/handler/handler.ts +++ b/src/components/core/handler/handler.ts @@ -1,34 +1,29 @@ import { P2PCommandResponse } from '../../../@types/OceanNode.js' -import { OceanNode } from '../../../OceanNode.js' -import { Command, ICommandHandler } from '../../../@types/commands.js' +import { OceanNode, RequestDataCheck, RequestLimiter } from '../../../OceanNode.js' import { - ValidateParams, + Command, + ICommandHandler, + IValidateCommandHandler +} from '../../../@types/commands.js' +import { + // ValidateParams, buildInvalidParametersResponse, - buildRateLimitReachedResponse + buildRateLimitReachedResponse, + ValidateParams } from '../../httpRoutes/validateCommands.js' import { getConfiguration } from '../../../utils/index.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { ReadableString } from '../../P2P/handlers.js' +import { CONNECTION_HISTORY_DELETE_THRESHOLD } from '../../../utils/constants.js' -export interface RequestLimiter { - requester: string | string[] // IP address or peer ID - lastRequestTime: number // time of the last request done (in miliseconds) - numRequests: number // number of requests done in the specific time period -} - -export interface RequestDataCheck { - valid: boolean - updatedRequestData: RequestLimiter -} -export abstract class Handler implements ICommandHandler { - private nodeInstance?: OceanNode - private requestMap: Map +export abstract class BaseHandler implements ICommandHandler { + private nodeInstance: OceanNode public constructor(oceanNode: OceanNode) { this.nodeInstance = oceanNode - this.requestMap = new Map() } - abstract validate(command: Command): ValidateParams + // abstract validate(command: Command): ValidateParams + abstract verifyParamsAndRateLimits(task: Command): Promise abstract handle(task: Command): Promise @@ -38,33 +33,40 @@ export abstract class Handler implements ICommandHandler { // TODO LOG, implement all handlers async checkRateLimit(): Promise { - const ratePerSecond = (await getConfiguration()).rateLimit + const requestMap = this.getOceanNode().getRequestMap() + const ratePerMinute = (await getConfiguration()).rateLimit const caller: string | string[] = this.getOceanNode().getRemoteCaller() const requestTime = new Date().getTime() let isOK = true + // we have to clear this from time to time, so it does not grow forever + if (requestMap.size > CONNECTION_HISTORY_DELETE_THRESHOLD) { + CORE_LOGGER.info('Request history reached threeshold, cleaning cache...') + requestMap.clear() + } + const self = this // common stuff const updateRequestData = function (remoteCaller: string) { const updatedRequestData = self.checkRequestData( remoteCaller, requestTime, - ratePerSecond + ratePerMinute ) isOK = updatedRequestData.valid - self.requestMap.set(remoteCaller, updatedRequestData.updatedRequestData) + requestMap.set(remoteCaller, updatedRequestData.updatedRequestData) } let data: RequestLimiter = null if (Array.isArray(caller)) { for (const remote of caller) { - if (!this.requestMap.has(remote)) { + if (!requestMap.has(remote)) { data = { requester: remote, lastRequestTime: requestTime, numRequests: 1 } - this.requestMap.set(remote, data) + requestMap.set(remote, data) } else { updateRequestData(remote) } @@ -72,20 +74,20 @@ export abstract class Handler implements ICommandHandler { if (!isOK) { CORE_LOGGER.warn( `Request denied (rate limit exceeded) for remote caller ${remote}. Current request map: ${JSON.stringify( - this.requestMap.get(remote) + requestMap.get(remote) )}` ) return false } } } else { - if (!this.requestMap.has(caller)) { + if (!requestMap.has(caller)) { data = { requester: caller, lastRequestTime: requestTime, numRequests: 1 } - this.requestMap.set(caller, data) + requestMap.set(caller, data) return true } else { updateRequestData(caller) @@ -93,7 +95,7 @@ export abstract class Handler implements ICommandHandler { if (!isOK) { CORE_LOGGER.warn( `Request denied (rate limit exceeded) for remote caller ${caller}. Current request map: ${JSON.stringify( - this.requestMap.get(caller) + requestMap.get(caller) )}` ) } @@ -105,18 +107,19 @@ export abstract class Handler implements ICommandHandler { /** * Checks if the request is within the rate limit defined * @param remote remote endpoint (ip or peer identifier) - * @param ratePerSecond number of calls per second allowed + * @param ratePerMinute number of calls per minute allowed (per ip or peer identifier) * @returns updated request data */ checkRequestData( remote: string, currentTime: number, - ratePerSecond: number + ratePerMinute: number ): RequestDataCheck { - const requestData: RequestLimiter = this.requestMap.get(remote) - const diffSeconds = (currentTime - requestData.lastRequestTime) / 1000 - // more than 1 sec difference means no problem - if (diffSeconds >= 1) { + const requestMap = this.getOceanNode().getRequestMap() + const requestData: RequestLimiter = requestMap.get(remote) + const diffMinutes = ((currentTime - requestData.lastRequestTime) / 1000) * 60 + // more than 1 minute difference means no problem + if (diffMinutes >= 1) { // its fine requestData.lastRequestTime = currentTime requestData.numRequests = 1 @@ -128,19 +131,32 @@ export abstract class Handler implements ICommandHandler { // requests in the same interval of 1 second requestData.numRequests++ return { - valid: requestData.numRequests <= ratePerSecond, + valid: requestData.numRequests <= ratePerMinute, updatedRequestData: requestData } } } + shouldDenyTaskHandling(validationResponse: P2PCommandResponse): boolean { + return ( + validationResponse.status.httpStatus !== 200 || + validationResponse.status.error !== null + ) + } +} + +export abstract class CommandHandler + extends BaseHandler + implements IValidateCommandHandler +{ + abstract validate(command: Command): ValidateParams async verifyParamsAndRateLimits(task: Command): Promise { // first check rate limits, if any if (!(await this.checkRateLimit())) { return buildRateLimitReachedResponse() } // then validate the command arguments - const validation = this.validate(task) + const validation = await this.validate(task) if (!validation.valid) { return buildInvalidParametersResponse(validation) } @@ -151,11 +167,4 @@ export abstract class Handler implements ICommandHandler { status: { httpStatus: 200, error: null } } } - - shouldDenyTaskHandling(validationResponse: P2PCommandResponse): boolean { - return ( - validationResponse.status.httpStatus !== 200 || - validationResponse.status.error !== null - ) - } } diff --git a/src/components/core/handler/nonceHandler.ts b/src/components/core/handler/nonceHandler.ts index f5211a42b..18c27cc48 100644 --- a/src/components/core/handler/nonceHandler.ts +++ b/src/components/core/handler/nonceHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { NonceCommand } from '../../../@types/commands.js' import { getNonce } from '../utils/nonceHandler.js' @@ -9,7 +9,7 @@ import { } from '../../httpRoutes/validateCommands.js' import { isAddress } from 'ethers' -export class NonceHandler extends Handler { +export class NonceHandler extends CommandHandler { validate(command: NonceCommand): ValidateParams { const validation = validateCommandParameters(command, ['address']) if (validation.valid) { diff --git a/src/components/core/handler/p2p.ts b/src/components/core/handler/p2p.ts new file mode 100644 index 000000000..c0ff41625 --- /dev/null +++ b/src/components/core/handler/p2p.ts @@ -0,0 +1,154 @@ +import { CommandHandler } from './handler.js' +import { getConfiguration } from '../../../utils/config.js' +import { P2PCommandResponse } from '../../../@types/OceanNode.js' +import { + FindPeerCommand, + GetP2PPeerCommand, + GetP2PPeersCommand, + GetP2PNetworkStatsCommand +} from '../../../@types/commands.js' +import { Readable } from 'stream' +import { + ValidateParams, + validateCommandParameters +} from '../../httpRoutes/validateCommands.js' +import { CORE_LOGGER } from '../../../utils/logging/common.js' + +export class FindPeerHandler extends CommandHandler { + validate(command: FindPeerCommand): ValidateParams { + const validation = validateCommandParameters(command, ['peerId']) + return validation + } + + async handle(task: FindPeerCommand): Promise { + const checks = await this.verifyParamsAndRateLimits(task) + if (checks.status.httpStatus !== 200 || checks.status.error !== null) { + return checks + } + try { + const peer = await this.getOceanNode() + .getP2PNode() + .findPeerInDht(String(task.peerId), parseInt(String(task.timeout))) + // .getPeerDetails(String(task.peerId)) + if (!peer) { + return { + stream: null, + status: { httpStatus: 404, error: 'Peer Not Found' } + } + } + return { + stream: Readable.from(JSON.stringify(peer, null, 4)), + status: { httpStatus: 200 } + } + } catch (error) { + CORE_LOGGER.error(`Error in Handler: ${error.message}`) + return { + stream: null, + status: { httpStatus: 500, error: 'Unknown error: ' + error.message } + } + } + } +} + +export class GetP2PPeerHandler extends CommandHandler { + validate(command: GetP2PPeerCommand): ValidateParams { + const validation = validateCommandParameters(command, ['peerId']) + return validation + } + + async handle(task: GetP2PPeerCommand): Promise { + const checks = await this.verifyParamsAndRateLimits(task) + if (checks.status.httpStatus !== 200 || checks.status.error !== null) { + return checks + } + try { + const peers = await this.getOceanNode() + .getP2PNode() + .getPeerDetails(String(task.peerId)) + if (!peers) { + return { + stream: null, + status: { httpStatus: 404, error: 'Peer Not Found' } + } + } + return { + stream: Readable.from(JSON.stringify(peers, null, 4)), + status: { httpStatus: 200 } + } + } catch (error) { + CORE_LOGGER.error(`Error in Handler: ${error.message}`) + return { + stream: null, + status: { httpStatus: 500, error: 'Unknown error: ' + error.message } + } + } + } +} + +export class GetP2PPeersHandler extends CommandHandler { + validate(command: GetP2PPeersCommand): ValidateParams { + const validation = validateCommandParameters(command, []) + return validation + } + + async handle(task: GetP2PPeersCommand): Promise { + const checks = await this.verifyParamsAndRateLimits(task) + if (checks.status.httpStatus !== 200 || checks.status.error !== null) { + return checks + } + try { + const peers = await this.getOceanNode().getP2PNode().getAllPeerStore() + if (!peers) { + return { + stream: null, + status: { httpStatus: 404, error: 'Peers Not Found' } + } + } + return { + stream: Readable.from(JSON.stringify(peers, null, 4)), + status: { httpStatus: 200 } + } + } catch (error) { + CORE_LOGGER.error(`Error in Handler: ${error.message}`) + return { + stream: null, + status: { httpStatus: 500, error: 'Unknown error: ' + error.message } + } + } + } +} + +export class GetP2PNetworkStatsHandler extends CommandHandler { + validate(command: GetP2PNetworkStatsCommand): ValidateParams { + const validation = validateCommandParameters(command, []) + return validation + } + + async handle(task: GetP2PNetworkStatsCommand): Promise { + const checks = await this.verifyParamsAndRateLimits(task) + if (checks.status.httpStatus !== 200 || checks.status.error !== null) { + return checks + } + try { + const config = await getConfiguration() + if (config.p2pConfig.enableNetworkStats) { + const stats = await this.getOceanNode().getP2PNode().getNetworkingStats() + return { + stream: Readable.from(JSON.stringify(stats, null, 4)), + status: { httpStatus: 200 } + } + } else { + return { + stream: null, + status: { httpStatus: 400, error: 'Not enabled or unavailable' } + } + } + } catch (error) { + CORE_LOGGER.error(`Error in Handler: ${error.message}`) + return { + stream: null, + status: { httpStatus: 500, error: 'Unknown error: ' + error.message } + } + } + } +} diff --git a/src/components/core/handler/policyServer.ts b/src/components/core/handler/policyServer.ts index 16f37698b..e7a46d661 100644 --- a/src/components/core/handler/policyServer.ts +++ b/src/components/core/handler/policyServer.ts @@ -1,7 +1,7 @@ import { P2PCommandResponse } from '../../../@types/index.js' import { PolicyServerPassthroughCommand } from '../../../@types/commands.js' import { Readable } from 'stream' -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { ValidateParams, buildInvalidRequestMessage, @@ -10,7 +10,7 @@ import { import { PolicyServer } from '../../policyServer/index.js' -export class PolicyServerPassthroughHandler extends Handler { +export class PolicyServerPassthroughHandler extends CommandHandler { validate(command: PolicyServerPassthroughCommand): ValidateParams { if (!command.policyServerPassthrough) return buildInvalidRequestMessage( @@ -41,7 +41,7 @@ export class PolicyServerPassthroughHandler extends Handler { return { stream: Readable.from(policyStatus.message), status: { - httpStatus: 200 + httpStatus: policyStatus.httpStatus } } } diff --git a/src/components/core/handler/queryHandler.ts b/src/components/core/handler/queryHandler.ts index 15a313bcc..50d7c7b12 100644 --- a/src/components/core/handler/queryHandler.ts +++ b/src/components/core/handler/queryHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { QueryCommand } from '../../../@types/commands.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { Readable } from 'stream' @@ -9,7 +9,7 @@ import { } from '../../httpRoutes/validateCommands.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -export class QueryHandler extends Handler { +export class QueryHandler extends CommandHandler { validate(command: QueryCommand): ValidateParams { return validateCommandParameters(command, ['query']) } diff --git a/src/components/core/handler/statusHandler.ts b/src/components/core/handler/statusHandler.ts index fe61963ec..76aeeadd6 100644 --- a/src/components/core/handler/statusHandler.ts +++ b/src/components/core/handler/statusHandler.ts @@ -1,4 +1,4 @@ -import { Handler } from './handler.js' +import { CommandHandler } from './handler.js' import { status } from '../utils/statusHandler.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { DetailedStatusCommand, StatusCommand } from '../../../@types/commands.js' @@ -9,21 +9,18 @@ import { } from '../../httpRoutes/validateCommands.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' -export class StatusHandler extends Handler { +export class StatusHandler extends CommandHandler { validate(command: StatusCommand): ValidateParams { return validateCommandParameters(command, []) } - async handle( - task: StatusCommand, - detailed: boolean = false - ): Promise { + async handle(task: StatusCommand): Promise { const checks = await this.verifyParamsAndRateLimits(task) if (checks.status.httpStatus !== 200 || checks.status.error !== null) { return checks } try { - const statusResult = await status(this.getOceanNode(), task.node, detailed) + const statusResult = await status(this.getOceanNode(), task.node, !!task.detailed) if (!statusResult) { return { stream: null, @@ -50,6 +47,7 @@ export class DetailedStatusHandler extends StatusHandler { } async handle(task: StatusCommand): Promise { - return await super.handle(task, true) + task.detailed = true + return await super.handle(task) } } diff --git a/src/components/core/utils/escrow.ts b/src/components/core/utils/escrow.ts new file mode 100644 index 000000000..7dbe947fe --- /dev/null +++ b/src/components/core/utils/escrow.ts @@ -0,0 +1,244 @@ +import { Blockchain, getDatatokenDecimals } from '../../../utils/blockchain.js' +import { ethers, parseUnits, formatUnits, BigNumberish } from 'ethers' +import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' assert { type: 'json' } +import { EscrowAuthorization, EscrowLock } from '../../../@types/Escrow.js' +import { getOceanArtifactsAdressesByChainId } from '../../../utils/address.js' +import { RPCS } from '../../../@types/blockchain.js' +import { create256Hash } from '../../../utils/crypt.js' +export class Escrow { + private networks: RPCS + private claimDurationTimeout: number + constructor(supportedNetworks: RPCS, claimDurationTimeout: number) { + this.networks = supportedNetworks + this.claimDurationTimeout = claimDurationTimeout + } + + // eslint-disable-next-line require-await + async getEscrowContractAddressForChain(chainId: number): Promise { + const addresses = getOceanArtifactsAdressesByChainId(chainId) + if (addresses && addresses.Escrow) return addresses.Escrow + return null + } + + getMinLockTime(maxJobDuration: number) { + return maxJobDuration + this.claimDurationTimeout + } + + async getPaymentAmountInWei(cost: number, chain: number, token: string) { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const provider = blockchain.getProvider() + const decimals = await getDatatokenDecimals(token, provider) + return parseUnits(cost.toString(10), decimals).toString() + } + + async getNumberFromWei(wei: string, chain: number, token: string) { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const provider = blockchain.getProvider() + const decimals = await getDatatokenDecimals(token, provider) + return parseFloat(formatUnits(wei, decimals)) + } + + // eslint-disable-next-line require-await + async getContract( + chainId: number, + signer: ethers.Signer + ): Promise { + const address = await this.getEscrowContractAddressForChain(chainId) + if (!address) return null + return new ethers.Contract(address, EscrowJson.abi, signer) + } + + async getUserAvailableFunds( + chain: number, + payer: string, + token: string + ): Promise { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const signer = blockchain.getSigner() + const contract = await this.getContract(chainId, signer) + try { + const funds = await contract.getUserFunds(payer, token) + return funds.available + } catch (e) { + return null + } + } + + async getLocks( + chain: number, + token: string, + payer: string, + payee: string + ): Promise { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const signer = blockchain.getSigner() + const contract = await this.getContract(chainId, signer) + try { + return await contract.getLocks(token, payer, payee) + } catch (e) { + return null + } + } + + async getAuthorizations( + chain: number, + token: string, + payer: string, + payee: string + ): Promise { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const signer = blockchain.getSigner() + const contract = await this.getContract(chainId, signer) + try { + return await contract.getAuthorizations(token, payer, payee) + } catch (e) { + return null + } + } + + async createLock( + chain: number, + job: string, + token: string, + payer: string, + amount: number, + expiry: BigNumberish + ): Promise { + const jobId = create256Hash(job) + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const signer = blockchain.getSigner() + const contract = await this.getContract(chainId, signer) + if (!contract) throw new Error(`Failed to initialize escrow contract`) + const wei = await this.getPaymentAmountInWei(amount, chain, token) + const userBalance = await this.getUserAvailableFunds(chain, payer, token) + if (BigInt(userBalance.toString()) < BigInt(wei)) { + // not enough funds + throw new Error(`User ${payer} does not have enough funds`) + } + + const auths = await this.getAuthorizations( + chain, + token, + payer, + await signer.getAddress() + ) + if (!auths || auths.length !== 1) { + throw new Error(`No escrow auths found`) + } + if ( + BigInt(auths[0].currentLockedAmount.toString()) + BigInt(wei) > + BigInt(auths[0].maxLockedAmount.toString()) + ) { + throw new Error(`No valid escrow auths found(will go over limit)`) + } + if (BigInt(auths[0].maxLockSeconds.toString()) < BigInt(expiry)) { + throw new Error(`No valid escrow auths found(maxLockSeconds too low)`) + } + if ( + BigInt(auths[0].currentLocks.toString()) + BigInt(1) > + BigInt(auths[0].maxLockCounts.toString()) + ) { + throw new Error(`No valid escrow auths found(too many active locks)`) + } + try { + const gas = await contract.createLock.estimateGas(jobId, token, payer, wei, expiry) + const gasOptions = await blockchain.getGasOptions(gas, 1.2) + const tx = await contract.createLock(jobId, token, payer, wei, expiry, gasOptions) + return tx.hash + } catch (e) { + console.log(e) + throw new Error(String(e.message)) + } + } + + async claimLock( + chain: number, + job: string, + token: string, + payer: string, + amount: number, + proof: string + ): Promise { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const signer = blockchain.getSigner() + const contract = await this.getContract(chainId, signer) + const wei = await this.getPaymentAmountInWei(amount, chain, token) + const jobId = create256Hash(job) + if (!contract) return null + try { + const locks = await this.getLocks(chain, token, payer, await signer.getAddress()) + for (const lock of locks) { + if (BigInt(lock.jobId.toString()) === BigInt(jobId)) { + const gas = await contract.claimLock.estimateGas( + jobId, + token, + payer, + wei, + ethers.toUtf8Bytes(proof) + ) + const gasOptions = await blockchain.getGasOptions(gas, 1.2) + const tx = await contract.claimLock( + jobId, + token, + payer, + wei, + ethers.toUtf8Bytes(proof), + gasOptions + ) + return tx.hash + } + } + return null + } catch (e) { + throw new Error(String(e.message)) + } + } + + async cancelExpiredLocks( + chain: number, + job: string, + token: string, + payer: string + ): Promise { + const { rpc, network, chainId, fallbackRPCs } = this.networks[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + const signer = blockchain.getSigner() + const jobId = create256Hash(job) + const contract = await this.getContract(chainId, signer) + + if (!contract) return null + try { + const locks = await this.getLocks(chain, token, payer, await signer.getAddress()) + for (const lock of locks) { + if (BigInt(lock.jobId.toString()) === BigInt(jobId)) { + const gas = await contract.cancelExpiredLocks.estimateGas( + jobId, + token, + payer, + await signer.getAddress() + ) + const gasOptions = await blockchain.getGasOptions(gas, 1.2) + const tx = await contract.cancelExpiredLocks( + jobId, + token, + payer, + await signer.getAddress(), + gasOptions + ) + + return tx.hash + } + } + return null + } catch (e) { + throw new Error(String(e.message)) + } + } +} diff --git a/src/components/core/utils/feesHandler.ts b/src/components/core/utils/feesHandler.ts index d37a96fac..71e7f9e93 100644 --- a/src/components/core/utils/feesHandler.ts +++ b/src/components/core/utils/feesHandler.ts @@ -1,4 +1,4 @@ -import type { ComputeEnvironment } from '../../../@types/C2D.js' +import type { ComputeResourcesPricingInfo } from '../../../@types/C2D/C2D.js' import { JsonRpcApiProvider, ethers, @@ -13,8 +13,7 @@ import { ProviderFeeValidation, ProviderFees } from '../../../@types/Fees' -import { DDO } from '../../../@types/DDO/DDO' -import { Service } from '../../../@types/DDO/Service' +import { Service, DDOManager, Asset } from '@oceanprotocol/ddo-js' import { getDatatokenDecimals, verifyMessage, @@ -27,64 +26,56 @@ import { getOceanArtifactsAdresses } from '../../../utils/address.js' import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } import { fetchEventFromTransaction } from '../../../utils/util.js' import { fetchTransactionReceipt } from './validateOrders.js' -import { DDOManager } from '@oceanprotocol/ddo-js' +export function getEnvironmentPriceSchemaForResource( + prices: ComputeResourcesPricingInfo[], + id: string +): number { + for (const pr of prices) { + if (pr.id === id) { + return pr.price + } + } + return 0 +} async function calculateProviderFeeAmount( validUntil: number, - computeEnv: ComputeEnvironment + chainId: string // asset?: DDO ): Promise { - const now = new Date().getTime() / 1000 - const seconds = validUntil - now - let providerFeeAmount: number - // we have different ways of computing providerFee - if (computeEnv) { - // it's a compute provider fee - providerFeeAmount = (seconds * parseFloat(String(computeEnv.priceMin))) / 60 - } else { - // it's a download provider fee - // we should get asset file size, and do a proper fee managment according to time - // something like estimated 3 downloads per day - providerFeeAmount = (await getConfiguration()).feeStrategy.feeAmount.amount - } + // it's a download provider fee + // we should get asset file size, and do a proper fee management according to time + // something like estimated 3 downloads per day + const providerFeeAmount = (await getConfiguration()).feeStrategy.feeAmount.amount return providerFeeAmount } export async function createProviderFee( - asset: DDO | Record, + asset: Asset, service: Service, - validUntil: number, - computeEnv: ComputeEnvironment, - computeValidUntil: number + validUntil: number ): Promise | undefined { // round for safety validUntil = Math.round(validUntil) - computeValidUntil = Math.round(computeValidUntil) + const providerData = { - environment: computeEnv ? computeEnv.id : null, - timestamp: computeValidUntil || 0, dt: service.datatokenAddress, id: service.id } const ddoInstance = DDOManager.getDDOClass(asset) const { chainId: assetChainId } = ddoInstance.getDDOFields() const providerWallet = await getProviderWallet(String(assetChainId)) - const providerFeeAddress: string = providerWallet.address let providerFeeAmount: number let providerFeeAmountFormatted: BigNumberish - - let providerFeeToken: string - if (computeEnv) { - providerFeeToken = computeEnv.feeToken - } else { - // it's download, take it from config - providerFeeToken = await getProviderFeeToken(assetChainId) - } + const providerFeeToken = await getProviderFeeToken(asset.chainId) if (providerFeeToken?.toLowerCase() === ZeroAddress) { providerFeeAmount = 0 } else { - providerFeeAmount = await calculateProviderFeeAmount(validUntil, computeEnv) + providerFeeAmount = await calculateProviderFeeAmount( + validUntil, + String(asset.chainId) + ) } if (providerFeeToken && providerFeeToken?.toLowerCase() !== ZeroAddress) { @@ -142,15 +133,15 @@ export async function verifyProviderFees( txId: string, userAddress: string, provider: JsonRpcApiProvider, - service: Service, - computeEnv?: string, - validUntil?: number // only for computeEnv + service: Service ): Promise { + /* given a transaction, check if there is a valid provider fee event + * We could have multiple orders, for multiple assets & providers + */ if (!txId) { CORE_LOGGER.error('Invalid txId') return { isValid: false, - isComputeValid: false, message: 'Invalid txId', validUntil: 0 } @@ -159,21 +150,23 @@ export async function verifyProviderFees( const { chainId } = await provider.getNetwork() const providerWallet = await getProviderWallet(String(chainId)) const contractInterface = new Interface(ERC20Template.abi) + const now = Math.round(new Date().getTime() / 1000) const txReceiptMined = await fetchTransactionReceipt(txId, provider) + const blockMined = await txReceiptMined.getBlock() + if (!txReceiptMined) { const message = `Tx receipt cannot be processed, because tx id ${txId} was not mined.` CORE_LOGGER.error(message) - return { isValid: false, isComputeValid: false, message, validUntil: 0 } + return { isValid: false, message, validUntil: 0 } } - const now = Math.round(new Date().getTime() / 1000) const providerFeesEvents = fetchEventFromTransaction( txReceiptMined, 'ProviderFee', contractInterface ) - let allEventsValid = true + let foundValid = false let providerData for (const event of providerFeesEvents) { const providerAddress = event.args[0]?.toLowerCase() @@ -184,53 +177,36 @@ export async function verifyProviderFees( providerData = JSON.parse(utf) } catch (e) { CORE_LOGGER.error('ProviderFee event JSON parsing failed') - allEventsValid = false continue } if ( - !providerData || - providerAddress !== providerWallet.address?.toLowerCase() || - providerData.id !== service.id || - providerData.dt?.toLowerCase() !== service.datatokenAddress?.toLowerCase() || - !(now < validUntilContract || validUntilContract === 0) + providerData && + providerAddress === providerWallet.address?.toLowerCase() && + providerData.id === service.id && + providerData.dt?.toLowerCase() === service.datatokenAddress?.toLowerCase() ) { - allEventsValid = false - break // Invalid event found, no need to check further - } - } - - if (!allEventsValid) { - const message = 'Not all ProviderFee events are valid' - CORE_LOGGER.error(message) - return { isValid: false, isComputeValid: false, message, validUntil: 0 } - } - - // Compute environment validation - let isComputeValid = true - if (computeEnv) { - if (providerData.environment !== computeEnv) { - isComputeValid = false - } - if (validUntil > 0 && providerData.timestamp < validUntil) { - isComputeValid = false + if (validUntilContract !== 0) { + // check if it's expired + if (now - blockMined.timestamp <= validUntilContract) { + foundValid = true + break + } + } else { + foundValid = true + break + } } } - if (!isComputeValid) { - const message = 'Compute environment validation failed' + if (!foundValid) { + const message = 'No valid providerFee events' CORE_LOGGER.error(message) - return { - isValid: true, - isComputeValid, - message, - validUntil: providerData ? providerData.timestamp : 0 - } + return { isValid: false, message, validUntil: 0 } } return { isValid: true, - isComputeValid, message: 'Validation successful', validUntil: providerData.timestamp } @@ -242,7 +218,7 @@ export async function verifyProviderFees( // equiv to get_provider_fees // *** NOTE: provider.py => get_provider_fees *** export async function createFee( - asset: DDO, + asset: Asset, validUntil: number, computeEnv: string, service: Service diff --git a/src/components/core/utils/findDdoHandler.ts b/src/components/core/utils/findDdoHandler.ts index c9d0520e7..3bc591f2f 100644 --- a/src/components/core/utils/findDdoHandler.ts +++ b/src/components/core/utils/findDdoHandler.ts @@ -2,11 +2,10 @@ import { OceanP2P, CACHE_TTL } from '../../P2P/index.js' import { FindDDOCommand } from '../../../@types/commands.js' import { LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' import { FindDDOResponse } from '../../../@types/index.js' -import { Service } from '../../../@types/DDO/Service.js' +import { Service } from '@oceanprotocol/ddo-js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { OceanNode } from '../../../OceanNode.js' import { getConfiguration, hasP2PInterface } from '../../../utils/config.js' -import { DDOManager } from '@oceanprotocol/ddo-js' /** * Check if the specified ddo is cached and if the cached version is recent enough @@ -61,25 +60,22 @@ export async function findDDOLocally( ): Promise | undefined { const ddo = await node.getDatabase().ddo.retrieve(id) if (ddo) { - const ddoInstance = DDOManager.getDDOClass(ddo) - const { metadata } = ddoInstance.getDDOFields() - const { event } = ddoInstance.getAssetFields() // node has ddo const p2pNode: OceanP2P = node.getP2PNode() if (!p2pNode || !hasP2PInterface) { const peerId: string = await (await getConfiguration()).keys.peerId.toString() return { id: ddo.id, - lastUpdateTx: event.txid, - lastUpdateTime: metadata.updated, + lastUpdateTx: ddo.event.tx, + lastUpdateTime: ddo.metadata.updated, provider: peerId } } const ddoInfo: FindDDOResponse = { id: ddo.id, - lastUpdateTx: event.txid, - lastUpdateTime: metadata.updated, + lastUpdateTx: ddo.event.tx, + lastUpdateTime: ddo.metadata.updated, provider: p2pNode.getPeerId() } // not in the cache yet diff --git a/src/components/core/utils/nonceHandler.ts b/src/components/core/utils/nonceHandler.ts index bc6fa494f..f920ef406 100644 --- a/src/components/core/utils/nonceHandler.ts +++ b/src/components/core/utils/nonceHandler.ts @@ -2,8 +2,14 @@ import { ReadableString } from '../../P2P/handleProtocolCommands.js' import { P2PCommandResponse } from '../../../@types/OceanNode.js' import { ethers } from 'ethers' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../../utils/logging/Logger.js' -import { DATABASE_LOGGER } from '../../../utils/logging/common.js' +import { CORE_LOGGER, DATABASE_LOGGER } from '../../../utils/logging/common.js' import { AbstractNonceDatabase } from '../../database/BaseDatabase.js' +import { CoreHandlersRegistry } from '../handler/coreHandlersRegistry.js' +import { OceanNode } from '../../../OceanNode.js' +import { PROTOCOL_COMMANDS } from '../../../utils/constants.js' +import { NonceCommand } from '../../../@types/commands.js' +import { streamToString } from '../../../utils/util.js' +import { Readable } from 'node:stream' export function getDefaultErrorResponse(errorMessage: string): P2PCommandResponse { return { @@ -32,6 +38,18 @@ export type NonceResponse = { error?: string } +// we are doing the nonce stream response transformation in a few places +// so we can use this shortcut function when we just want the final number +export async function getNonceAsNumber(address: string): Promise { + const command: NonceCommand = { command: PROTOCOL_COMMANDS.NONCE, address } + const nonceResponse = await CoreHandlersRegistry.getInstance(OceanNode.getInstance()) + .getHandlerForTask(command) + .handle(command) + if (nonceResponse.stream) { + return await Number(streamToString(nonceResponse.stream as Readable)) + } + return 0 +} // get stored nonce for an address ( 0 if not found) export async function getNonce( db: AbstractNonceDatabase, @@ -121,8 +139,19 @@ export async function checkNonce( if (validate.valid) { const updateStatus = await updateNonce(db, consumer, nonce) return updateStatus + } else { + // log error level when validation failed + CORE_LOGGER.logMessageWithEmoji( + 'Failure when validating nonce and signature: ' + validate.error, + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + return { + valid: false, + error: validate.error + } } - return validate // return validation status and possible error msg } catch (err) { DATABASE_LOGGER.logMessageWithEmoji( diff --git a/src/components/core/utils/statusHandler.ts b/src/components/core/utils/statusHandler.ts index a7105442e..848f25266 100644 --- a/src/components/core/utils/statusHandler.ts +++ b/src/components/core/utils/statusHandler.ts @@ -11,27 +11,10 @@ import { existsEnvironmentVariable, getConfiguration } from '../../../utils/inde import { ENVIRONMENT_VARIABLES } from '../../../utils/constants.js' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { OceanNode } from '../../../OceanNode.js' -import { isAddress } from 'ethers' import { typesenseSchemas } from '../../database/TypesenseSchemas.js' import { SupportedNetwork } from '../../../@types/blockchain.js' +import { getAdminAddresses } from '../../../utils/auth.js' -function getAdminAddresses(config: OceanNodeConfig) { - const validAddresses = [] - if (config.allowedAdmins && config.allowedAdmins.length > 0) { - for (const admin of config.allowedAdmins) { - if (isAddress(admin) === true) { - validAddresses.push(admin) - } - } - if (validAddresses.length === 0) { - CORE_LOGGER.log( - LOG_LEVELS_STR.LEVEL_ERROR, - `Invalid format for ETH address from ALLOWED ADMINS.` - ) - } - } - return validAddresses -} const supportedStorageTypes: StorageTypes = { url: true, arwave: existsEnvironmentVariable(ENVIRONMENT_VARIABLES.ARWEAVE_GATEWAY), @@ -136,7 +119,7 @@ export async function status( // uptime: process.uptime(), platform: platformInfo, codeHash: config.codeHash, - allowedAdmins: getAdminAddresses(config) + allowedAdmins: await getAdminAddresses() } } // need to update at least block info if available @@ -151,7 +134,16 @@ export async function status( // depends on request if (detailed) { - nodeStatus.c2dClusters = config.c2dClusters + nodeStatus.c2dClusters = [] + const engines = await oceanNode.getC2DEngines().getAllEngines() + for (const engine of engines) { + const type = await engine.getC2DType() + nodeStatus.c2dClusters.push({ + type, + hash: await engine.getC2DConfig().hash, + environments: await engine.getComputeEnvironments() + }) + } nodeStatus.supportedSchemas = typesenseSchemas.ddoSchemas } return nodeStatus diff --git a/src/components/core/utils/validateDdoHandler.ts b/src/components/core/utils/validateDdoHandler.ts index e229b9e42..935070551 100644 --- a/src/components/core/utils/validateDdoHandler.ts +++ b/src/components/core/utils/validateDdoHandler.ts @@ -2,29 +2,6 @@ import { ethers } from 'ethers' import { CORE_LOGGER } from '../../../utils/logging/common.js' import { create256Hash } from '../../../utils/crypt.js' import { getProviderWallet } from './feesHandler.js' -// @ts-ignore -import { validateDDO } from '@oceanprotocol/ddo-js' - -export function validateObject( - obj: Record -): Promise<[boolean, Record]> { - return validateDDO(obj) -} - -export function isRemoteDDO(ddo: any): boolean { - let keys - try { - keys = Object.keys(ddo) - } catch (e) { - return false - } - - if (keys.length === 1 && keys[0] === 'remote') { - return true - } - - return false -} export async function getValidationSignature(ddo: string): Promise { try { @@ -47,3 +24,18 @@ export async function getValidationSignature(ddo: string): Promise { return { hash: '', publicKey: '', r: '', s: '', v: '' } } } + +export function isRemoteDDO(ddo: any): boolean { + let keys + try { + keys = Object.keys(ddo) + } catch (e) { + return false + } + + if (keys.length === 1 && keys[0] === 'remote') { + return true + } + + return false +} diff --git a/src/components/database/BaseDatabase.ts b/src/components/database/BaseDatabase.ts index 637b82aec..664ec0c64 100644 --- a/src/components/database/BaseDatabase.ts +++ b/src/components/database/BaseDatabase.ts @@ -5,7 +5,7 @@ import { DATABASE_LOGGER } from '../../utils/logging/common.js' import { ElasticsearchSchema } from './ElasticSchemas.js' import { TypesenseSchema } from './TypesenseSchemas.js' -export abstract class AbstractNonceDatabase { +export abstract class AbstractDatabase { protected config: OceanNodeDBConfig protected schema: TypesenseSchema @@ -13,7 +13,8 @@ export abstract class AbstractNonceDatabase { this.config = config this.schema = schema } - +} +export abstract class AbstractNonceDatabase extends AbstractDatabase { abstract create(address: string, nonce: number): Promise abstract retrieve(address: string): Promise abstract update(address: string, nonce: number): Promise @@ -30,30 +31,14 @@ export abstract class AbstractNonceDatabase { } } -export abstract class AbstractIndexerDatabase { - protected config: OceanNodeDBConfig - protected schema: TypesenseSchema - - constructor(config: OceanNodeDBConfig, schema?: TypesenseSchema) { - this.config = config - this.schema = schema - } - +export abstract class AbstractIndexerDatabase extends AbstractDatabase { abstract create(network: number, lastIndexedBlock: number): Promise abstract retrieve(network: number): Promise abstract update(network: number, lastIndexedBlock: number): Promise abstract delete(network: number): Promise } -export abstract class AbstractLogDatabase { - protected config: OceanNodeDBConfig - protected schema: TypesenseSchema - - constructor(config: OceanNodeDBConfig, schema?: TypesenseSchema) { - this.config = config - this.schema = schema - } - +export abstract class AbstractLogDatabase extends AbstractDatabase { abstract insertLog(logEntry: Record): Promise abstract retrieveLog(id: string): Promise | null> abstract retrieveMultipleLogs( @@ -63,22 +48,14 @@ export abstract class AbstractLogDatabase { moduleName?: string, level?: string, page?: number - ): Promise[] | null> + ): Promise[]> abstract delete(logId: string): Promise abstract deleteOldLogs(): Promise abstract getLogsCount(): Promise } -export abstract class AbstractDdoStateDatabase { - protected config: OceanNodeDBConfig - protected schema: TypesenseSchema - - constructor(config: OceanNodeDBConfig, schema?: TypesenseSchema) { - this.config = config - this.schema = schema - } - +export abstract class AbstractDdoStateDatabase extends AbstractDatabase { abstract create( chainId: number, did: string, diff --git a/src/components/database/C2DDatabase.ts b/src/components/database/C2DDatabase.ts new file mode 100644 index 000000000..1d1cea71c --- /dev/null +++ b/src/components/database/C2DDatabase.ts @@ -0,0 +1,135 @@ +import path from 'path' +import fs from 'fs' +import { ComputeEnvironment, DBComputeJob } from '../../@types/C2D/C2D.js' +import { SQLiteCompute } from './sqliteCompute.js' +import { DATABASE_LOGGER } from '../../utils/logging/common.js' +import { OceanNodeDBConfig } from '../../@types/OceanNode.js' +import { TypesenseSchema } from './TypesenseSchemas.js' +import { AbstractDatabase } from './BaseDatabase.js' +import { OceanNode } from '../../OceanNode.js' +import { getDatabase } from '../../utils/database.js' +import { getConfiguration } from '../../utils/index.js' + +export class C2DDatabase extends AbstractDatabase { + private provider: SQLiteCompute + + constructor(config: OceanNodeDBConfig, schema: TypesenseSchema) { + super(config, schema) + return (async (): Promise => { + // Fall back to SQLite + DATABASE_LOGGER.info('Creating C2DDatabase with SQLite') + + // Ensure the directory exists before instantiating SQLiteProvider + const dbDir = path.dirname('databases/c2dDatabase.sqlite') + if (!fs.existsSync(dbDir)) { + fs.mkdirSync(dbDir, { recursive: true }) + } + this.provider = new SQLiteCompute('databases/c2dDatabase.sqlite') + await this.provider.createTable() + + return this + })() as unknown as C2DDatabase + } + + async newJob(job: DBComputeJob): Promise { + const jobId = await this.provider.newJob(job) + return jobId + } + + async getJob( + jobId?: string, + agreementId?: string, + owner?: string + ): Promise { + const jobs = await this.provider.getJob(jobId, agreementId, owner) + return jobs + } + + async updateJob(job: DBComputeJob): Promise { + let updated = 0 + const previouslySaved: DBComputeJob[] = await this.getJob(job.jobId) + if (previouslySaved.length === 1) { + previouslySaved[0] = job + updated = await this.provider.updateJob(previouslySaved[0]) + if (!updated) { + DATABASE_LOGGER.error(`Unable to update job: ${job.jobId}. No rows affected!`) + } + } else { + DATABASE_LOGGER.error( + `Unable to update job: ${job.jobId}. It seems this jobID does not exist!` + ) + } + return updated + } + + async getRunningJobs(engine?: string, environment?: string): Promise { + return await this.provider.getRunningJobs(engine, environment) + } + + async deleteJob(jobId: string): Promise { + return await this.provider.deleteJob(jobId) + } + + /** + * + * @param environment compute environment to check for + * + * All compute engines have compute environments, + * and each compute environment specifies how long the output produced by + * a job is held by the node, before being deleted. + * When a job expiry is overdue, the node will delete all storage used by that job, + * and also delete the job record from the database + * @returns array of eexpired jobs + */ + async cleanStorageExpiredJobs(): Promise { + const config = await getConfiguration(true) + const allEngines = await OceanNode.getInstance( + config, + await getDatabase() + ).getC2DEngines().engines + + let cleaned = 0 + for (const engine of allEngines) { + const allEnvironments = await engine.getComputeEnvironments() + for (const computeEnvironment of allEnvironments) { + const finishedOrExpired: DBComputeJob[] = + await this.provider.getFinishedJobs(computeEnvironment) + for (const job of finishedOrExpired) { + if ( + computeEnvironment && + computeEnvironment.storageExpiry > Date.now() / 1000 + ) { + if (await engine.cleanupExpiredStorage(job)) { + cleaned++ + } + } + } + } + cleaned += await this.cleanOrphanJobs(allEnvironments) + } + return cleaned + } + + /** + * Clean orphan jobs. Stuff left on DB without existing environments associated + * @param existingEnvironments + * @returns number of orphans + */ + async cleanOrphanJobs(existingEnvironments: ComputeEnvironment[]) { + const c2dDatabase = await (await getDatabase()).c2d + const finishedOrExpired: DBComputeJob[] = await this.provider.getFinishedJobs() + const envIds: string[] = existingEnvironments.map((env) => { + return env.id + }) + let cleaned = 0 + for (const job of finishedOrExpired) { + if (job.environment && !envIds.includes(job.environment)) { + if (await c2dDatabase.deleteJob(job.jobId)) { + cleaned++ + } + } + } + DATABASE_LOGGER.info('Cleaned ' + cleaned + ' orphan C2D jobs') + return cleaned + } +} diff --git a/src/components/database/DatabaseFactory.ts b/src/components/database/DatabaseFactory.ts index fc1a85b56..628aeb604 100644 --- a/src/components/database/DatabaseFactory.ts +++ b/src/components/database/DatabaseFactory.ts @@ -29,7 +29,9 @@ import { TypesenseMetadataQuery } from './TypesenseMetadataQuery.js' import { IMetadataQuery } from '../../@types/DDO/IMetadataQuery.js' import { ElasticSearchMetadataQuery } from './ElasticSearchMetadataQuery.js' import { DB_TYPES } from '../../utils/index.js' +import { C2DDatabase } from './C2DDatabase.js' import { SQLLiteNonceDatabase } from './SQLLiteNonceDatabase.js' +import { SQLLiteConfigDatabase } from './SQLLiteConfigDatabase.js' export class DatabaseFactory { private static databaseMap = { @@ -85,6 +87,10 @@ export class DatabaseFactory { return this.createDatabase('ddo', config) } + static async createC2DDatabase(config: OceanNodeDBConfig): Promise { + return await new C2DDatabase(config, typesenseSchemas.c2dSchemas) + } + static createIndexerDatabase( config: OceanNodeDBConfig ): Promise { @@ -112,4 +118,8 @@ export class DatabaseFactory { static createMetadataQuery(config: OceanNodeDBConfig): Promise { return this.createDatabase('metadataQuery', config) } + + static async createConfigDatabase(): Promise { + return await new SQLLiteConfigDatabase() + } } diff --git a/src/components/database/ElasticSearchDatabase.ts b/src/components/database/ElasticSearchDatabase.ts index 84078a057..55fb7c49c 100644 --- a/src/components/database/ElasticSearchDatabase.ts +++ b/src/components/database/ElasticSearchDatabase.ts @@ -11,7 +11,6 @@ import { OceanNodeDBConfig } from '../../@types' import { ElasticsearchSchema } from './ElasticSchemas.js' import { DATABASE_LOGGER } from '../../utils/logging/common.js' import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../utils/logging/Logger.js' -import { validateObject } from '../core/utils/validateDdoHandler.js' import { DDOManager } from '@oceanprotocol/ddo-js' export class ElasticsearchIndexerDatabase extends AbstractIndexerDatabase { @@ -140,6 +139,7 @@ export class ElasticsearchIndexerDatabase extends AbstractIndexerDatabase { } } } + export class ElasticsearchDdoStateDatabase extends AbstractDdoStateDatabase { private client: Client private index: string @@ -239,7 +239,9 @@ export class ElasticsearchDdoStateDatabase extends AbstractDdoStateDatabase { return normalizeDocumentId(hit._source, hit._id) }) } catch (error) { - const errorMsg = `Error when searching by query ${JSON.stringify(query)}: ${error.message}` + const errorMsg = `Error when searching by query ${JSON.stringify(query)}: ${ + error.message + }` DATABASE_LOGGER.logMessageWithEmoji( errorMsg, true, @@ -310,6 +312,7 @@ export class ElasticsearchDdoStateDatabase extends AbstractDdoStateDatabase { } } } + export class ElasticsearchOrderDatabase extends AbstractOrderDatabase { private provider: Client @@ -470,10 +473,12 @@ export class ElasticsearchDdoDatabase extends AbstractDdoDatabase { getDDOSchema(ddo: Record) { let schemaName: string | undefined - if (ddo.version) { - schemaName = `op_ddo_v${ddo.version}` - } else { + const ddoInstance = DDOManager.getDDOClass(ddo) + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData?.indexedMetadata?.nft?.state !== 0) { schemaName = 'op_ddo_short' + } else if (ddo.version) { + schemaName = `op_ddo_v${ddo.version}` } const schema = this.getSchemas().find((s) => s.index === schemaName) DATABASE_LOGGER.logMessageWithEmoji( @@ -487,29 +492,32 @@ export class ElasticsearchDdoDatabase extends AbstractDdoDatabase { async validateDDO(ddo: Record): Promise { const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getAssetFields() - if (nft?.state !== 0) { + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData?.indexedMetadata?.nft?.state !== 0) { + // Skipping validation for short DDOs as it currently doesn't work + // TODO: DDO validation needs to be updated to consider the fields required by the schema + // See github issue: https://github.com/oceanprotocol/ocean-node/issues/256 + return true + } + + const validation = await ddoInstance.validate() + if (validation[0] === true) { + DATABASE_LOGGER.logMessageWithEmoji( + `Validation of DDO with did: ${ddo.id} has passed`, + true, + GENERIC_EMOJIS.EMOJI_OCEAN_WAVE, + LOG_LEVELS_STR.LEVEL_INFO + ) return true } else { - const validation = await validateObject(ddo) - if (validation[0] === true) { - DATABASE_LOGGER.logMessageWithEmoji( - `Validation of DDO with did: ${ddo.id} has passed`, - true, - GENERIC_EMOJIS.EMOJI_OCEAN_WAVE, - LOG_LEVELS_STR.LEVEL_INFO - ) - return true - } else { - DATABASE_LOGGER.logMessageWithEmoji( - `Validation of DDO with schema version ${ddo.version} failed with errors: ` + - JSON.stringify(validation[1]), - true, - GENERIC_EMOJIS.EMOJI_CROSS_MARK, - LOG_LEVELS_STR.LEVEL_ERROR - ) - return false - } + DATABASE_LOGGER.logMessageWithEmoji( + `Validation of DDO with schema version ${ddo.version} failed with errors: ` + + JSON.stringify(validation[1]), + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + return false } } @@ -599,7 +607,10 @@ export class ElasticsearchDdoDatabase extends AbstractDdoDatabase { throw new Error(`Schema for version ${ddo.version} not found`) } try { + // avoid issue with nft fields, due to schema + if (ddo?.indexedMetadata?.nft) delete ddo.nft const validation = await this.validateDDO(ddo) + if (validation === true) { const response = await this.client.index({ index: schema.index, @@ -667,6 +678,8 @@ export class ElasticsearchDdoDatabase extends AbstractDdoDatabase { throw new Error(`Schema for version ${ddo.version} not found`) } try { + // avoid issue with nft fields, due to schema + if (ddo?.indexedMetadata?.nft) delete ddo.nft const validation = await this.validateDDO(ddo) if (validation === true) { const response: any = await this.client.update({ @@ -866,7 +879,7 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { moduleName?: string, level?: string, page?: number - ): Promise[] | null> { + ): Promise[]> { try { const filterConditions: any = { bool: { @@ -905,10 +918,6 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { from }) - console.log('logs results:', result) - console.log('logs results hits:', result.hits) - console.log('logs results hits hits:', result.hits.hits) - return result.hits.hits.map((hit: any) => { return normalizeDocumentId(hit._source, hit._id) }) @@ -920,7 +929,7 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR ) - return null + return [] } } @@ -960,13 +969,12 @@ export class ElasticsearchLogDatabase extends AbstractLogDatabase { try { const oldLogs = await this.retrieveMultipleLogs(new Date(0), deleteBeforeTime, 200) - if (oldLogs) { - for (const log of oldLogs) { - if (log.id) { - await this.delete(log.id) - } + for (const log of oldLogs) { + if (log.id) { + await this.delete(log.id) } } + return oldLogs ? oldLogs.length : 0 } catch (error) { DATABASE_LOGGER.logMessageWithEmoji( diff --git a/src/components/database/SQLLiteConfigDatabase.ts b/src/components/database/SQLLiteConfigDatabase.ts new file mode 100644 index 000000000..72f9f0942 --- /dev/null +++ b/src/components/database/SQLLiteConfigDatabase.ts @@ -0,0 +1,55 @@ +import fs from 'fs' +import path from 'path' +import { DATABASE_LOGGER } from '../../utils/logging/common.js' +import { GENERIC_EMOJIS, LOG_LEVELS_STR } from '../../utils/logging/Logger.js' +import { SQLiteProvider } from './sqlite.js' + +export class SQLLiteConfigDatabase { + private provider: SQLiteProvider + + constructor() { + return (async (): Promise => { + DATABASE_LOGGER.info('Config Database initiated with SQLite provider') + + // Ensure the directory exists before instantiating SQLiteProvider + const dbDir = path.dirname('databases/config.sqlite') + if (!fs.existsSync(dbDir)) { + fs.mkdirSync(dbDir, { recursive: true }) + } + this.provider = new SQLiteProvider('databases/config.sqlite') + await this.provider.createTableForConfig() + + return this + })() as unknown as SQLLiteConfigDatabase + } + + async createOrUpdateConfig(key: string = 'version', value: string) { + try { + return await this.provider.createOrUpdateConfig(key, value) + } catch (error) { + const errorMsg = `Error when creating new version entry ${value}: ` + error.message + DATABASE_LOGGER.logMessageWithEmoji( + errorMsg, + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + return null + } + } + + async retrieveValue(key: string = 'version') { + try { + return await this.provider.retrieveValue(key) + } catch (error) { + const errorMsg = `Error when retrieving latest version entry: ` + error.message + DATABASE_LOGGER.logMessageWithEmoji( + errorMsg, + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + return null + } + } +} diff --git a/src/components/database/SQLLiteNonceDatabase.ts b/src/components/database/SQLLiteNonceDatabase.ts index 1eca067de..06334c6e7 100644 --- a/src/components/database/SQLLiteNonceDatabase.ts +++ b/src/components/database/SQLLiteNonceDatabase.ts @@ -21,7 +21,7 @@ export class SQLLiteNonceDatabase extends AbstractNonceDatabase { fs.mkdirSync(dbDir, { recursive: true }) } this.provider = new SQLiteProvider('databases/nonceDatabase.sqlite') - await this.provider.createTable() + await this.provider.createTableForNonce() return this })() as unknown as SQLLiteNonceDatabase @@ -29,7 +29,7 @@ export class SQLLiteNonceDatabase extends AbstractNonceDatabase { async create(address: string, nonce: number) { try { - return await this.provider.create(address, nonce) + return await this.provider.createNonce(address, nonce) } catch (error) { const errorMsg = `Error when creating new nonce entry ${nonce} for address ${address}: ` + @@ -46,7 +46,7 @@ export class SQLLiteNonceDatabase extends AbstractNonceDatabase { async retrieve(address: string) { try { - return await this.provider.retrieve(address) + return await this.provider.retrieveNonce(address) } catch (error) { const errorMsg = `Error when retrieving nonce entry for address ${address}: ` + error.message @@ -62,7 +62,7 @@ export class SQLLiteNonceDatabase extends AbstractNonceDatabase { async update(address: string, nonce: number) { try { - return await this.provider.update(address, nonce) + return await this.provider.updateNonce(address, nonce) } catch (error) { const errorMsg = `Error when updating nonce entry ${nonce} for address ${address}: ` + @@ -79,7 +79,7 @@ export class SQLLiteNonceDatabase extends AbstractNonceDatabase { async delete(address: string) { try { - return await this.provider.delete(address) + return await this.provider.deleteNonceEntry(address) } catch (error) { const errorMsg = `Error when deleting nonce entry for address ${address}: ` + error.message diff --git a/src/components/database/TypenseDatabase.ts b/src/components/database/TypenseDatabase.ts index 474e782f4..44319f713 100644 --- a/src/components/database/TypenseDatabase.ts +++ b/src/components/database/TypenseDatabase.ts @@ -5,7 +5,6 @@ import { TypesenseSearchParams } from '../../@types/index.js' import { LOG_LEVELS_STR, GENERIC_EMOJIS } from '../../utils/logging/Logger.js' import { DATABASE_LOGGER } from '../../utils/logging/common.js' -import { validateObject } from '../core/utils/validateDdoHandler.js' import { ENVIRONMENT_VARIABLES, TYPESENSE_HITS_CAP } from '../../utils/constants.js' import { AbstractDdoDatabase, @@ -373,8 +372,8 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { // Find the schema based on the DDO version OR use the short DDO schema when state !== 0 let schemaName: string const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getAssetFields() - if (nft?.state !== 0) { + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData?.indexedMetadata?.nft.state !== 0) { schemaName = 'op_ddo_short' } else if (ddo.version) { schemaName = `op_ddo_v${ddo.version}` @@ -391,32 +390,32 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { async validateDDO(ddo: Record): Promise { const ddoInstance = DDOManager.getDDOClass(ddo) - const { nft } = ddoInstance.getAssetFields() - if (nft?.state !== 0) { + const ddoData = ddoInstance.getDDOData() + if ('indexedMetadata' in ddoData && ddoData.indexedMetadata?.nft?.state !== 0) { // Skipping validation for short DDOs as it currently doesn't work // TODO: DDO validation needs to be updated to consider the fields required by the schema // See github issue: https://github.com/oceanprotocol/ocean-node/issues/256 return true + } + + const validation = await ddoInstance.validate() + if (validation[0] === true) { + DATABASE_LOGGER.logMessageWithEmoji( + `Validation of DDO with did: ${ddo.id} has passed`, + true, + GENERIC_EMOJIS.EMOJI_OCEAN_WAVE, + LOG_LEVELS_STR.LEVEL_INFO + ) + return true } else { - const validation = await validateObject(ddo) - if (validation[0] === true) { - DATABASE_LOGGER.logMessageWithEmoji( - `Validation of DDO with did: ${ddo.id} has passed`, - true, - GENERIC_EMOJIS.EMOJI_OCEAN_WAVE, - LOG_LEVELS_STR.LEVEL_INFO - ) - return true - } else { - DATABASE_LOGGER.logMessageWithEmoji( - `Validation of DDO with schema version ${ddo.version} failed with errors: ` + - JSON.stringify(validation[1]), - true, - GENERIC_EMOJIS.EMOJI_CROSS_MARK, - LOG_LEVELS_STR.LEVEL_ERROR - ) - return false - } + DATABASE_LOGGER.logMessageWithEmoji( + `Validation of DDO with schema version ${ddo.version} failed with errors: ` + + JSON.stringify(validation[1]), + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + return false } } @@ -474,6 +473,9 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { throw new Error(`Schema for version ${ddo.version} not found`) } try { + // avoid failure because of schema + if (ddo?.indexedMetadata?.nft) delete ddo.nft + const validation = await this.validateDDO(ddo) if (validation === true) { return await this.provider @@ -535,6 +537,8 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { throw new Error(`Schema for version ${ddo.version} not found`) } try { + // avoid issue with nft fields, due to schema + if (ddo?.indexedMetadata?.nft) delete ddo.nft const validation = await this.validateDDO(ddo) if (validation === true) { return await this.provider @@ -637,6 +641,9 @@ export class TypesenseDdoDatabase extends AbstractDdoDatabase { export class TypesenseIndexerDatabase extends AbstractIndexerDatabase { private provider: Typesense + // constant for the node version document ID + private static readonly VERSION_DOC_ID = 'node_version' + constructor(config: OceanNodeDBConfig, schema: TypesenseSchema) { super(config, schema) return (async (): Promise => { @@ -810,7 +817,7 @@ export class TypesenseLogDatabase extends AbstractLogDatabase { moduleName?: string, level?: string, page?: number - ): Promise[] | null> { + ): Promise[]> { try { let filterConditions = `timestamp:>=${startTime.getTime()} && timestamp:<${endTime.getTime()}` if (moduleName) { @@ -856,7 +863,7 @@ export class TypesenseLogDatabase extends AbstractLogDatabase { GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR ) - return null + return [] } } @@ -907,7 +914,7 @@ export class TypesenseLogDatabase extends AbstractLogDatabase { } } } - return oldLogs ? oldLogs.length : 0 + return oldLogs.length } catch (error) { DATABASE_LOGGER.logMessageWithEmoji( `Error when deleting old log entries: ${error.message}`, diff --git a/src/components/database/TypesenseSchemas.ts b/src/components/database/TypesenseSchemas.ts index 9b17ffcf6..0cdf7ea5e 100644 --- a/src/components/database/TypesenseSchemas.ts +++ b/src/components/database/TypesenseSchemas.ts @@ -48,6 +48,7 @@ export type TypesenseSchema = TypesenseCollectionCreateSchema export type TypesenseSchemas = { ddoSchemas: TypesenseSchema[] nonceSchemas: TypesenseSchema + c2dSchemas: TypesenseSchema indexerSchemas: TypesenseSchema logSchemas: TypesenseSchema orderSchema: TypesenseSchema @@ -61,6 +62,24 @@ export const typesenseSchemas: TypesenseSchemas = { enable_nested_fields: true, fields: [{ name: 'nonce', type: 'int64' }] }, + c2dSchemas: { + name: 'c2djobs', + enable_nested_fields: true, + fields: [ + // not really needed because it will be SQL Lite + { name: 'clusterHash', type: 'string', optional: false }, + { name: 'configlogURL', type: 'string', optional: false }, + { name: 'publishlogURL', type: 'string', optional: false }, + { name: 'algologURL', type: 'string', optional: false }, + { name: 'outputsURL', type: 'auto', optional: false }, + { name: 'stopRequested', type: 'bool', optional: false }, + { name: 'algorithm', type: 'auto', optional: false }, + { name: 'assets', type: 'auto', optional: false }, + { name: 'isRunning', type: 'bool', optional: false }, + { name: 'isStarted', type: 'bool', optional: false }, + { name: 'containerImage', type: 'string', optional: false } + ] + }, indexerSchemas: { name: 'indexer', enable_nested_fields: true, diff --git a/src/components/database/index.ts b/src/components/database/index.ts index cd5e9e430..863d3cad3 100644 --- a/src/components/database/index.ts +++ b/src/components/database/index.ts @@ -10,27 +10,35 @@ import { AbstractDdoStateDatabase, AbstractIndexerDatabase, AbstractLogDatabase, - AbstractNonceDatabase, AbstractOrderDatabase } from './BaseDatabase.js' +import { C2DDatabase } from './C2DDatabase.js' import { DatabaseFactory } from './DatabaseFactory.js' import { ElasticsearchSchema } from './ElasticSchemas.js' +import { SQLLiteConfigDatabase } from './SQLLiteConfigDatabase.js' +import { SQLLiteNonceDatabase } from './SQLLiteNonceDatabase.js' import { TypesenseSchema } from './TypesenseSchemas.js' export type Schema = ElasticsearchSchema | TypesenseSchema export class Database { ddo: AbstractDdoDatabase - nonce: AbstractNonceDatabase + nonce: SQLLiteNonceDatabase indexer: AbstractIndexerDatabase logs: AbstractLogDatabase order: AbstractOrderDatabase ddoState: AbstractDdoStateDatabase + sqliteConfig: SQLLiteConfigDatabase + c2d: C2DDatabase constructor(private config: OceanNodeDBConfig) { return (async (): Promise => { try { + // these 2 are using SQL Lite provider this.nonce = await DatabaseFactory.createNonceDatabase(this.config) + this.sqliteConfig = await DatabaseFactory.createConfigDatabase() + this.c2d = await DatabaseFactory.createC2DDatabase(this.config) + // only for Typesense or Elasticsearch if (hasValidDBConfiguration(this.config)) { // add this DB transport too // once we create a DB instance, the logger will be using this transport as well @@ -49,7 +57,7 @@ export class Database { this.ddoState = await DatabaseFactory.createDdoStateDatabase(this.config) } else { DATABASE_LOGGER.info( - 'Invalid URL. Only Nonce Database is initialized. Other databases are not available.' + 'Invalid DB URL. Only Nonce and C2D Databases are initialized. Other databases are not available.' ) } return this diff --git a/src/components/database/sqlite.ts b/src/components/database/sqlite.ts index e2f77de1a..61231688e 100644 --- a/src/components/database/sqlite.ts +++ b/src/components/database/sqlite.ts @@ -2,25 +2,27 @@ import { TypesenseSchema, typesenseSchemas } from './TypesenseSchemas.js' import sqlite3 from 'sqlite3' interface DatabaseProvider { - create(address: string, nonce: number): Promise<{ id: string; nonce: number }> - retrieve(address: string): Promise<{ id: string; nonce: number | null }> - update(address: string, nonce: number): Promise<{ id: string; nonce: number }> - delete(address: string): Promise<{ id: string; nonce: number | null }> + createNonce(address: string, nonce: number): Promise<{ id: string; nonce: number }> + retrieveNonce(address: string): Promise<{ id: string; nonce: number | null }> + updateNonce(address: string, nonce: number): Promise<{ id: string; nonce: number }> + deleteNonceEntry(address: string): Promise<{ id: string; nonce: number | null }> } export class SQLiteProvider implements DatabaseProvider { private db: sqlite3.Database - private schema: TypesenseSchema + private schemaNonce: TypesenseSchema + private configSchema: string - constructor(private dbFilePath: string) { + constructor(dbFilePath: string) { this.db = new sqlite3.Database(dbFilePath) - this.schema = typesenseSchemas.nonceSchemas + this.schemaNonce = typesenseSchemas.nonceSchemas + this.configSchema = 'config' } // eslint-disable-next-line require-await - async createTable() { + async createTableForNonce() { const createTableSQL = ` - CREATE TABLE IF NOT EXISTS ${this.schema.name} ( + CREATE TABLE IF NOT EXISTS ${this.schemaNonce.name} ( id TEXT PRIMARY KEY, nonce INTEGER ); @@ -34,9 +36,25 @@ export class SQLiteProvider implements DatabaseProvider { } // eslint-disable-next-line require-await - async create(address: string, nonce: number) { + async createTableForConfig() { + const createTableSQL = ` + CREATE TABLE IF NOT EXISTS ${this.configSchema} ( + key TEXT NOT NULL PRIMARY KEY, + value TEXT + ); + ` + return new Promise((resolve, reject) => { + this.db.run(createTableSQL, (err) => { + if (err) reject(err) + else resolve() + }) + }) + } + + // eslint-disable-next-line require-await + async createNonce(address: string, nonce: number) { const insertSQL = ` - INSERT INTO ${this.schema.name} (id, nonce) + INSERT INTO ${this.schemaNonce.name} (id, nonce) VALUES (?, ?) ON CONFLICT(id) DO UPDATE SET nonce=excluded.nonce; ` @@ -49,9 +67,24 @@ export class SQLiteProvider implements DatabaseProvider { } // eslint-disable-next-line require-await - async retrieve(address: string) { + async createOrUpdateConfig(key: string, value: string) { + const insertSQL = ` + INSERT INTO ${this.configSchema} (key, value) + VALUES (?, ?) + ON CONFLICT(key) DO UPDATE SET value = excluded.value; + ` + return new Promise<{ key: string; value: string }>((resolve, reject) => { + this.db.run(insertSQL, [key, value], (err) => { + if (err) reject(err) + else resolve({ key, value }) + }) + }) + } + + // eslint-disable-next-line require-await + async retrieveNonce(address: string) { const selectSQL = ` - SELECT * FROM ${this.schema.name} WHERE id = ? + SELECT * FROM ${this.schemaNonce.name} WHERE id = ? ` return new Promise<{ id: string; nonce: number | null }>((resolve, reject) => { this.db.get(selectSQL, [address], (err, row: { nonce: number } | undefined) => { @@ -63,18 +96,31 @@ export class SQLiteProvider implements DatabaseProvider { } // eslint-disable-next-line require-await - async update(address: string, nonce: number) { - return this.create(address, nonce) + async retrieveValue(key: string) { + const selectSQL = ` + SELECT value FROM ${this.configSchema} WHERE key = ?; + ` + return new Promise<{ value: string | null }>((resolve, reject) => { + this.db.get(selectSQL, [key], (err, row: { value: string } | undefined) => { + if (err) reject(err) + else resolve(row ? { value: row.value } : { value: null }) // Returns null if no version exists + }) + }) + } + + // eslint-disable-next-line require-await + async updateNonce(address: string, nonce: number) { + return this.createNonce(address, nonce) } // eslint-disable-next-line require-await - async delete(address: string) { + async deleteNonceEntry(address: string) { const selectSQL = ` - SELECT nonce FROM ${this.schema.name} WHERE id = ? + SELECT nonce FROM ${this.schemaNonce.name} WHERE id = ? ` const deleteSQL = ` - DELETE FROM ${this.schema.name} WHERE id = ? + DELETE FROM ${this.schemaNonce.name} WHERE id = ? ` return new Promise<{ id: string; nonce: number | null }>((resolve, reject) => { diff --git a/src/components/database/sqliteCompute.ts b/src/components/database/sqliteCompute.ts new file mode 100644 index 000000000..a4c6bc1dc --- /dev/null +++ b/src/components/database/sqliteCompute.ts @@ -0,0 +1,377 @@ +import { typesenseSchemas, TypesenseSchema } from './TypesenseSchemas.js' +import { + C2DStatusNumber, + C2DStatusText, + ComputeEnvironment, + type DBComputeJob +} from '../../@types/C2D/C2D.js' +import sqlite3, { RunResult } from 'sqlite3' +import { DATABASE_LOGGER } from '../../utils/logging/common.js' +import { createHash } from 'crypto' + +interface ComputeDatabaseProvider { + newJob(job: DBComputeJob): Promise + getJob(jobId?: string, agreementId?: string, owner?: string): Promise + updateJob(job: DBComputeJob): Promise + getRunningJobs(engine?: string, environment?: string): Promise + deleteJob(jobId: string): Promise + getFinishedJobs(): Promise +} + +export function generateUniqueID(jobStructure: any): string { + const timestamp = + BigInt(Date.now()) * 1_000_000n + (process.hrtime.bigint() % 1_000_000n) + const random = Math.random() + const jobId = createHash('sha256') + .update(JSON.stringify(jobStructure) + timestamp.toString() + random.toString()) + .digest('hex') + return jobId +} + +function getInternalStructure(job: DBComputeJob): any { + const internalBlob = { + clusterHash: job.clusterHash, + configlogURL: job.configlogURL, + publishlogURL: job.publishlogURL, + algologURL: job.algologURL, + outputsURL: job.outputsURL, + stopRequested: job.stopRequested, + algorithm: job.algorithm, + assets: job.assets, + isRunning: job.isRunning, + isStarted: job.isStarted, + containerImage: job.containerImage, + resources: job.resources, + isFree: job.isFree, + algoStartTimestamp: job.algoStartTimestamp, + algoStopTimestamp: job.algoStopTimestamp + } + return internalBlob +} +export function generateBlobFromJSON(job: DBComputeJob): Buffer { + return Buffer.from(JSON.stringify(getInternalStructure(job))) +} + +export function generateJSONFromBlob(blob: any): Promise { + return JSON.parse(blob.toString()) +} + +// we cannot store array of strings, so we use string separators instead +export const STRING_SEPARATOR = '__,__' + +export function convertArrayToString(array: string[]) { + let str: string = '' + for (let i = 0; i < array.length; i++) { + str = str + array[i] + // Do not append comma at the end of last element + if (i < array.length - 1) { + str = str + STRING_SEPARATOR + } + } + return str +} +export function convertStringToArray(str: string) { + const arr: string[] = str.split(STRING_SEPARATOR) + return arr +} + +export class SQLiteCompute implements ComputeDatabaseProvider { + private db: sqlite3.Database + private schema: TypesenseSchema + + constructor(dbFilePath: string) { + this.db = new sqlite3.Database(dbFilePath) + this.schema = typesenseSchemas.c2dSchemas + } + + deleteJob(jobId: string): Promise { + const deleteSQL = ` + DELETE FROM ${this.schema.name} WHERE jobId = ? + ` + return new Promise((resolve, reject) => { + this.db.run(deleteSQL, [jobId], function (this: RunResult, err) { + if (err) reject(err) + else resolve(this.changes === 1) + }) + }) + } + + createTable() { + /* although we have field called expiteTimestamp, we are actually storing maxJobDuration in it */ + const createTableSQL = ` + CREATE TABLE IF NOT EXISTS ${this.schema.name} ( + owner TEXT, + did TEXT DEFAULT NULL, + jobId TEXT PRIMARY KEY, + dateCreated TEXT, + dateFinished TEXT DEFAULT NULL, + status INTEGER, + statusText TEXT, + results BLOB, + inputDID TEXT DEFAULT NULL, + algoDID TEXT DEFAULT NULL, + agreementId TEXT DEFAULT NULL, + expireTimestamp INTEGER, + environment TEXT DEFAULT NULL, + body BLOB + ); + ` + return new Promise((resolve, reject) => { + this.db.run(createTableSQL, (err) => { + if (err) reject(err) + else resolve() + }) + }) + } + + newJob(job: DBComputeJob): Promise { + // TO DO C2D + const insertSQL = ` + INSERT INTO ${this.schema.name} + ( + owner, + did, + jobId, + dateCreated, + status, + statusText, + inputDID, + algoDID, + agreementId, + expireTimestamp, + environment, + body + ) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?); + ` + let jobId: string + if (!job.jobId) { + const jobStructure = { + assets: job.assets, + algorithm: job.algorithm, + output: {}, + environment: job.environment, + owner: job.owner, + maxJobDuration: job.maxJobDuration, + chainId: job.payment?.chainId || null, + agreementId: job.agreementId, + resources: job.resources + } + jobId = generateUniqueID(jobStructure) + job.jobId = jobId + } else { + jobId = job.jobId + } + + return new Promise((resolve, reject) => { + this.db.run( + insertSQL, + [ + job.owner, + job.did, + jobId, + job.dateCreated || String(Date.now() / 1000), // seconds from epoch, + job.status || C2DStatusNumber.JobStarted, + job.statusText || C2DStatusText.JobStarted, + job.inputDID ? convertArrayToString(job.inputDID) : job.inputDID, + job.algoDID, + job.agreementId, + job.maxJobDuration, + job.environment, + generateBlobFromJSON(job) + ], + (err) => { + if (err) { + DATABASE_LOGGER.error('Could not insert C2D job on DB: ' + err.message) + reject(err) + } else { + DATABASE_LOGGER.info('Successfully inserted job with id:' + jobId) + resolve(jobId) + } + } + ) + }) + } + + /** + * on a get status for instance, all params are optional + * but at least one is required... In case we don't have a jobId, + * we have multiple results (by owner for instance) + * So, it refines the query or we can have more than 1 result (same as current implementation) + * @param jobId the job identifier + * @param agreementId the agreement identifier (did ?) + * @param owner the consumer address / job owner + * @returns job(s) + */ + getJob(jobId?: string, agreementId?: string, owner?: string): Promise { + const params: any = [] + let selectSQL = `SELECT * FROM ${this.schema.name} WHERE 1=1` + if (jobId) { + selectSQL += ` AND jobId = ?` + params.push(jobId) + } + if (agreementId) { + if (!agreementId.startsWith('0x')) { + agreementId = '0x' + agreementId + } + selectSQL += ` AND agreementId = ?` + params.push(agreementId) + } + if (owner) { + selectSQL += ` AND owner = ?` + params.push(owner) + } + + return new Promise((resolve, reject) => { + this.db.all(selectSQL, params, (err, rows: any[] | undefined) => { + if (err) { + DATABASE_LOGGER.error(err.message) + reject(err) + } else { + // also decode the internal data into job data + if (rows && rows.length > 0) { + const all: DBComputeJob[] = rows.map((row) => { + const body = generateJSONFromBlob(row.body) + delete row.body + const maxJobDuration = row.expireTimestamp + delete row.expireTimestamp + const job: DBComputeJob = { ...row, ...body, maxJobDuration } + return job + }) + resolve(all) + } else { + DATABASE_LOGGER.error( + `Could not find any job with jobId: ${jobId}, agreementId: ${agreementId}, or owner: ${owner} in database!` + ) + resolve([]) + } + } + }) + }) + } + + updateJob(job: DBComputeJob): Promise { + // if (job.dateFinished && job.isRunning) { + // job.isRunning = false + // } + // TO DO C2D + const data: any[] = [ + job.owner, + job.status, + job.statusText, + job.maxJobDuration, + generateBlobFromJSON(job), + job.dateFinished, + job.jobId + ] + const updateSQL = ` + UPDATE ${this.schema.name} + SET + owner = ?, + status = ?, + statusText = ?, + expireTimestamp = ?, + body = ?, + dateFinished = ? + WHERE jobId = ?; + ` + + return new Promise((resolve, reject) => { + this.db.run(updateSQL, data, function (this: RunResult, err: Error | null) { + if (err) { + DATABASE_LOGGER.error(`Error while updating job: ${err.message}`) + reject(err) + } else { + // number of rows updated successfully + resolve(this.changes) + } + }) + }) + } + + getRunningJobs(engine?: string, environment?: string): Promise { + const selectSQL = ` + SELECT * FROM ${this.schema.name} WHERE dateFinished IS NULL + ` + return new Promise((resolve, reject) => { + this.db.all(selectSQL, (err, rows: any[] | undefined) => { + if (err) { + DATABASE_LOGGER.error(err.message) + reject(err) + } else { + // also decode the internal data into job data + // get them all running + if (rows && rows.length > 0) { + const all: DBComputeJob[] = rows.map((row) => { + const body = generateJSONFromBlob(row.body) + delete row.body + const maxJobDuration = row.expireTimestamp + delete row.expireTimestamp + const job: DBComputeJob = { ...row, ...body, maxJobDuration } + return job + }) + // filter them out + const filtered = all.filter((job) => { + let include = true + if (engine && engine !== job.clusterHash) { + include = false + } + if (environment && environment !== job.environment) { + include = false + } + if (job.dateFinished) { + include = false + } + return include + }) + resolve(filtered) + } else { + DATABASE_LOGGER.info('Could not find any running C2D jobs!') + resolve([]) + } + } + }) + }) + } + + getFinishedJobs(environment?: ComputeEnvironment): Promise { + // get jobs that already finished (have results), for this environment, and clear storage + job if expired + const selectSQL = ` + SELECT * FROM ${this.schema.name} WHERE environment = ? AND dateFinished IS NOT NULL OR results IS NOT NULL + ` + return new Promise((resolve, reject) => { + this.db.all(selectSQL, [environment.id], (err, rows: any[] | undefined) => { + if (err) { + DATABASE_LOGGER.error(err.message) + reject(err) + } else { + // also decode the internal data into job data + // get them all running + if (rows && rows.length > 0) { + const all: DBComputeJob[] = rows.map((row) => { + const body = generateJSONFromBlob(row.body) + delete row.body + const maxJobDuration = row.expireTimestamp + delete row.expireTimestamp + const job: DBComputeJob = { ...row, ...body, maxJobDuration } + return job + }) + if (!environment) { + resolve(all) + } + // filter them out + const filtered = all.filter((job) => { + return environment && environment.id === job.environment + }) + resolve(filtered) + } else { + DATABASE_LOGGER.info( + 'Could not find any jobs for the specified enviroment: ' + environment.id + ) + resolve([]) + } + } + }) + }) + } +} diff --git a/src/components/httpRoutes/aquarius.ts b/src/components/httpRoutes/aquarius.ts index 7fc132168..7f51978f9 100644 --- a/src/components/httpRoutes/aquarius.ts +++ b/src/components/httpRoutes/aquarius.ts @@ -6,7 +6,6 @@ import { LOG_LEVELS_STR } from '../../utils/logging/Logger.js' import { FindDdoHandler, ValidateDDOHandler } from '../core/handler/ddoHandler.js' import { QueryDdoStateHandler, QueryHandler } from '../core/handler/queryHandler.js' import { HTTP_LOGGER } from '../../utils/logging/common.js' -import { DDO } from '../../@types/DDO/DDO.js' import { QueryCommand } from '../../@types/commands.js' import { DatabaseFactory } from '../database/DatabaseFactory.js' import { SearchQuery } from '../../@types/DDO/SearchQuery.js' @@ -134,23 +133,32 @@ aquariusRoutes.get(`${AQUARIUS_API_BASE_PATH}/state/ddo`, async (req, res) => { }) aquariusRoutes.post(`${AQUARIUS_API_BASE_PATH}/assets/ddo/validate`, async (req, res) => { + const node = req.oceanNode try { - if (!req.body || req.body === undefined) { + if (!req.body) { res.status(400).send('Missing DDO object') return } - const ddo = JSON.parse(req.body) as DDO + + const requestBody = JSON.parse(req.body) + const { publisherAddress, nonce, signature } = requestBody + + // This is for backward compatibility with the old way of sending the DDO + const ddo = requestBody.ddo || JSON.parse(req.body) if (!ddo.version) { res.status(400).send('Missing DDO version') return } - const node = req.oceanNode const result = await new ValidateDDOHandler(node).handle({ ddo, + publisherAddress, + nonce, + signature, command: PROTOCOL_COMMANDS.VALIDATE_DDO }) + if (result.stream) { const validationResult = JSON.parse(await streamToString(result.stream as Readable)) res.json(validationResult) diff --git a/src/components/httpRoutes/commands.ts b/src/components/httpRoutes/commands.ts index 5c26389fd..6256def36 100644 --- a/src/components/httpRoutes/commands.ts +++ b/src/components/httpRoutes/commands.ts @@ -99,7 +99,12 @@ directCommandRoute.post( // send to another peer (Only here we need P2P networking) response = await req.oceanNode .getP2PNode() - .sendTo(req.body.node as string, JSON.stringify(req.body), sink) + .sendTo( + req.body.node as string, + JSON.stringify(req.body), + sink, + req.body.multiAddrs + ) } else { response = { stream: null, diff --git a/src/components/httpRoutes/compute.ts b/src/components/httpRoutes/compute.ts index c127981d7..33598729f 100644 --- a/src/components/httpRoutes/compute.ts +++ b/src/components/httpRoutes/compute.ts @@ -1,18 +1,28 @@ import express from 'express' import { ComputeGetEnvironmentsHandler, - ComputeStartHandler, + PaidComputeStartHandler, + FreeComputeStartHandler, ComputeStopHandler, ComputeGetStatusHandler, ComputeGetResultHandler, - ComputeInitializeHandler + ComputeInitializeHandler, + ComputeGetStreamableLogsHandler } from '../core/compute/index.js' -import type { ComputeAlgorithm, ComputeAsset, ComputeOutput } from '../../@types/C2D.js' import type { - ComputeStartCommand, + ComputeAlgorithm, + ComputeAsset, + ComputeOutput, + ComputeResourceRequest +} from '../../@types/C2D/C2D.js' +import type { + PaidComputeStartCommand, + ComputePayment, + FreeComputeStartCommand, ComputeStopCommand, ComputeGetResultCommand, - ComputeGetStatusCommand + ComputeGetStatusCommand, + ComputeGetStreamableLogsCommand } from '../../@types/commands.js' import { streamToObject, streamToString } from '../../utils/util.js' @@ -20,29 +30,9 @@ import { PROTOCOL_COMMANDS, SERVICES_API_BASE_PATH } from '../../utils/constants import { Readable } from 'stream' import { HTTP_LOGGER } from '../../utils/logging/common.js' import { LOG_LEVELS_STR } from '../../utils/logging/Logger.js' -import { getConfiguration } from '../../utils/index.js' export const computeRoutes = express.Router() -async function areEmpty(computeEnvs: any, requestChainId?: any): Promise { - if (requestChainId) { - return computeEnvs[parseInt(requestChainId)].length === 0 - } else { - const config = await getConfiguration() - let isEmpty: number = 0 - const supportedNetworks = Object.keys(config.supportedNetworks) - for (const supportedNetwork of supportedNetworks) { - if (computeEnvs[supportedNetwork].length === 0) { - isEmpty++ - } - } - if (isEmpty === supportedNetworks.length) { - return true - } - return false - } -} - computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeEnvironments`, async (req, res) => { try { HTTP_LOGGER.logMessage( @@ -59,22 +49,15 @@ computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeEnvironments`, async (req, r ) // get compute environments const computeEnvironments = await streamToObject(response.stream as Readable) - // check if computeEnvironments is a valid json object and not empty - if ( - computeEnvironments && - !(await areEmpty(computeEnvironments, req.query.chainId)) - ) { - res.json(computeEnvironments) - } else { - HTTP_LOGGER.logMessage(`Compute environments not found`, true) - res.status(404).send('Compute environments not found') - } + // always return the array, even if it's empty + res.json(computeEnvironments) } catch (error) { HTTP_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error: ${error}`) res.status(500).send('Internal Server Error') } }) +// start compute computeRoutes.post(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { try { HTTP_LOGGER.logMessage( @@ -82,25 +65,68 @@ computeRoutes.post(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { true ) - const startComputeTask: ComputeStartCommand = { + const startComputeTask: PaidComputeStartCommand = { command: PROTOCOL_COMMANDS.COMPUTE_START, node: (req.body.node as string) || null, consumerAddress: (req.body.consumerAddress as string) || null, signature: (req.body.signature as string) || null, nonce: (req.body.nonce as string) || null, environment: (req.body.environment as string) || null, + maxJobDuration: (req.body.maxJobDuration as number) || null, algorithm: (req.body.algorithm as ComputeAlgorithm) || null, - dataset: (req.body.dataset as unknown as ComputeAsset) || null + datasets: (req.body.datasets as unknown as ComputeAsset[]) || null, + payment: (req.body.payment as unknown as ComputePayment) || null, + resources: (req.body.resources as unknown as ComputeResourceRequest[]) || null + } + if (req.body.output) { + startComputeTask.output = req.body.output as ComputeOutput + } + + const response = await new PaidComputeStartHandler(req.oceanNode).handle( + startComputeTask + ) + if (response?.status?.httpStatus === 200) { + const jobs = await streamToObject(response.stream as Readable) + res.status(200).json(jobs) + } else { + HTTP_LOGGER.log(LOG_LEVELS_STR.LEVEL_INFO, `Error: ${response?.status?.error}`) + res.status(response?.status.httpStatus).json(response?.status?.error) } - if (req.body.additionalDatasets) { - startComputeTask.additionalDatasets = req.query - .additionalDatasets as unknown as ComputeAsset[] + } catch (error) { + HTTP_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error: ${error}`) + res.status(500).send('Internal Server Error') + } +}) + +// free compute +computeRoutes.post(`${SERVICES_API_BASE_PATH}/freeCompute`, async (req, res) => { + try { + HTTP_LOGGER.logMessage( + `FreeComputeStartCommand request received as body params: ${JSON.stringify( + req.body + )}`, + true + ) + + const startComputeTask: FreeComputeStartCommand = { + command: PROTOCOL_COMMANDS.FREE_COMPUTE_START, + node: (req.body.node as string) || null, + consumerAddress: (req.body.consumerAddress as string) || null, + signature: (req.body.signature as string) || null, + nonce: (req.body.nonce as string) || null, + environment: (req.body.environment as string) || null, + algorithm: (req.body.algorithm as ComputeAlgorithm) || null, + datasets: (req.body.datasets as unknown as ComputeAsset[]) || null, + resources: (req.body.resources as unknown as ComputeResourceRequest[]) || null, + maxJobDuration: req.body.maxJobDuration || null } if (req.body.output) { startComputeTask.output = req.body.output as ComputeOutput } - const response = await new ComputeStartHandler(req.oceanNode).handle(startComputeTask) + const response = await new FreeComputeStartHandler(req.oceanNode).handle( + startComputeTask + ) if (response?.status?.httpStatus === 200) { const jobs = await streamToObject(response.stream as Readable) res.status(200).json(jobs) @@ -114,6 +140,7 @@ computeRoutes.post(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { } }) +// stop compute computeRoutes.put(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { try { HTTP_LOGGER.logMessage( @@ -141,6 +168,7 @@ computeRoutes.put(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { } }) +// get status computeRoutes.get(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { try { HTTP_LOGGER.logMessage( @@ -165,6 +193,7 @@ computeRoutes.get(`${SERVICES_API_BASE_PATH}/compute`, async (req, res) => { } }) +// compute results computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeResult`, async (req, res) => { try { HTTP_LOGGER.logMessage( @@ -196,6 +225,41 @@ computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeResult`, async (req, res) => res.status(500).send('Internal Server Error') } }) + +// streaming logs +computeRoutes.get(`${SERVICES_API_BASE_PATH}/computeStreamableLogs`, async (req, res) => { + try { + HTTP_LOGGER.logMessage( + `ComputeGetStreamableLogsCommand request received with query: ${JSON.stringify( + req.query + )}`, + true + ) + const resultComputeTask: ComputeGetStreamableLogsCommand = { + command: PROTOCOL_COMMANDS.COMPUTE_GET_STREAMABLE_LOGS, + node: (req.query.node as string) || null, + consumerAddress: (req.query.consumerAddress as string) || null, + jobId: (req.query.jobId as string) || null, + signature: (req.query.signature as string) || null, + nonce: (req.query.nonce as string) || null + } + + const response = await new ComputeGetStreamableLogsHandler(req.oceanNode).handle( + resultComputeTask + ) + if (response.stream) { + res.status(response.status.httpStatus) + res.set(response.status.headers) + response.stream.pipe(res) + } else { + res.status(response.status.httpStatus).send(response.status.error) + } + } catch (error) { + HTTP_LOGGER.log(LOG_LEVELS_STR.LEVEL_ERROR, `Error: ${error}`) + res.status(500).send('Internal Server Error') + } +}) + computeRoutes.post(`${SERVICES_API_BASE_PATH}/initializeCompute`, async (req, res) => { try { HTTP_LOGGER.logMessage( diff --git a/src/components/httpRoutes/getOceanPeers.ts b/src/components/httpRoutes/getOceanPeers.ts index 4c619d72b..cc81a7391 100644 --- a/src/components/httpRoutes/getOceanPeers.ts +++ b/src/components/httpRoutes/getOceanPeers.ts @@ -1,51 +1,70 @@ import express, { Request, Response } from 'express' -import { getDefaultLevel } from '../../utils/logging/Logger.js' -import { P2P_LOGGER } from '../../utils/logging/common.js' -import { sendMissingP2PResponse } from './index.js' -import { getBoolEnvValue, hasP2PInterface } from '../../utils/config.js' -export const getOceanPeersRoute = express.Router() +import { + GetP2PPeerHandler, + GetP2PPeersHandler, + GetP2PNetworkStatsHandler, + FindPeerHandler +} from '../core/handler/p2p.js' +import { PROTOCOL_COMMANDS } from '../../utils/constants.js' +import { streamToString } from '../../utils/util.js' +import { Readable } from 'stream' +export const p2pRoutes = express.Router() -getOceanPeersRoute.get( +p2pRoutes.get( '/getP2pNetworkStats', async (req: Request, res: Response): Promise => { - // only return values if env P2P_ENABLE_NETWORK_STATS is explicitly allowed - if (hasP2PInterface && getBoolEnvValue('P2P_ENABLE_NETWORK_STATS', false)) { - const stats = await req.oceanNode.getP2PNode().getNetworkingStats() - P2P_LOGGER.log(getDefaultLevel(), `getP2pNetworkStats: ${stats}`, true) - res.json(stats) + const node = req.oceanNode + const result = await new GetP2PNetworkStatsHandler(node).handle({ + command: PROTOCOL_COMMANDS.GET_P2P_NETWORK_STATS + }) + if (result.stream) { + const validationResult = JSON.parse(await streamToString(result.stream as Readable)) + res.json(validationResult) } else { - res.status(400).send('Not enabled or unavailable') + res.status(result.status.httpStatus).send(result.status.error) } } ) -getOceanPeersRoute.get( - '/getOceanPeers', + +p2pRoutes.get( + '/findPeer', + express.urlencoded({ extended: true }), async (req: Request, res: Response): Promise => { - if (hasP2PInterface) { - const peers = await req.oceanNode.getP2PNode().getAllOceanPeers() - P2P_LOGGER.log(getDefaultLevel(), `getOceanPeers: ${peers}`, true) - res.json(peers) + if (!req.query.peerId) { + res.sendStatus(400) + return + } + const node = req.oceanNode + const result = await new FindPeerHandler(node).handle({ + command: PROTOCOL_COMMANDS.FIND_PEER, + peerId: req.query.peerId as string, + timeout: req.query.timeout as string + }) + if (result.stream) { + const validationResult = JSON.parse(await streamToString(result.stream as Readable)) + res.json(validationResult) } else { - sendMissingP2PResponse(res) + res.status(result.status.httpStatus).send(result.status.error) } } ) export const getP2PPeersRoute = express.Router() -getP2PPeersRoute.get( - '/getP2PPeers', - async (req: Request, res: Response): Promise => { - if (hasP2PInterface) { - const peers = await req.oceanNode.getP2PNode().getAllPeerStore() - res.json(peers) - } else { - sendMissingP2PResponse(res) - } +p2pRoutes.get('/getP2PPeers', async (req: Request, res: Response): Promise => { + const node = req.oceanNode + const result = await new GetP2PPeersHandler(node).handle({ + command: PROTOCOL_COMMANDS.GET_P2P_PEERS + }) + if (result.stream) { + const validationResult = JSON.parse(await streamToString(result.stream as Readable)) + res.json(validationResult) + } else { + res.status(result.status.httpStatus).send(result.status.error) } -) +}) export const getP2PPeerRoute = express.Router() -getP2PPeersRoute.get( +p2pRoutes.get( '/getP2PPeer', express.urlencoded({ extended: true }), async (req: Request, res: Response): Promise => { @@ -53,13 +72,16 @@ getP2PPeersRoute.get( res.sendStatus(400) return } - if (hasP2PInterface) { - const peers = await req.oceanNode - .getP2PNode() - .getPeerDetails(String(req.query.peerId)) - res.json(peers) + const node = req.oceanNode + const result = await new GetP2PPeerHandler(node).handle({ + command: PROTOCOL_COMMANDS.GET_P2P_PEER, + peerId: req.query.peerId as string + }) + if (result.stream) { + const validationResult = JSON.parse(await streamToString(result.stream as Readable)) + res.json(validationResult) } else { - sendMissingP2PResponse(res) + res.status(result.status.httpStatus).send(result.status.error) } } ) diff --git a/src/components/httpRoutes/index.ts b/src/components/httpRoutes/index.ts index 9b302f395..d93e460f2 100644 --- a/src/components/httpRoutes/index.ts +++ b/src/components/httpRoutes/index.ts @@ -1,5 +1,5 @@ import express, { Response } from 'express' -import { getOceanPeersRoute, getP2PPeersRoute, getP2PPeerRoute } from './getOceanPeers.js' +import { p2pRoutes } from './getOceanPeers.js' import { advertiseDidRoute, getProvidersForDidRoute } from './dids.js' import { directCommandRoute } from './commands.js' import { logRoutes } from './logs.js' @@ -22,12 +22,8 @@ export function sendMissingP2PResponse(res: Response) { res.status(400).send('Invalid or Non Existing P2P configuration') } -// /getOceanPeers -httpRoutes.use(getOceanPeersRoute) -// /getP2PPeers -httpRoutes.use(getP2PPeersRoute) -// /getP2PPeer -httpRoutes.use(getP2PPeerRoute) +// /p2pRoutes +httpRoutes.use(p2pRoutes) // /advertiseDid httpRoutes.use(advertiseDidRoute) // /getProvidersForDid diff --git a/src/components/httpRoutes/logs.ts b/src/components/httpRoutes/logs.ts index ba0631b03..af7f7a794 100644 --- a/src/components/httpRoutes/logs.ts +++ b/src/components/httpRoutes/logs.ts @@ -1,11 +1,12 @@ import express from 'express' import { validateAdminSignature } from '../../utils/auth.js' import { HTTP_LOGGER } from '../../utils/logging/common.js' +import { CommonValidation } from './requestValidator.js' export const logRoutes = express.Router() // Middleware to validate signature and expiry timestamp -const validateRequest = ( +const validateRequest = async ( req: express.Request, res: express.Response, next: express.NextFunction @@ -26,7 +27,10 @@ const validateRequest = ( return res.status(400).send('Invalid expiryTimestamp') } - const isValid = validateAdminSignature(expiryTimestamp, signature) + const isValid: CommonValidation = await validateAdminSignature( + expiryTimestamp, + signature + ) if (!isValid.valid) { return res.status(403).send(`Invalid signature: ${isValid.error}`) } @@ -56,7 +60,7 @@ logRoutes.post('/logs', express.json(), validateRequest, async (req, res) => { .getDatabase() .logs.retrieveMultipleLogs(startTime, endTime, maxLogs, moduleName, level, page) - if (logs) { + if (logs.length > 0) { res.json(logs) } else { res.status(404).send('No logs found') diff --git a/src/components/httpRoutes/provider.ts b/src/components/httpRoutes/provider.ts index 4194a2689..b17bd9033 100644 --- a/src/components/httpRoutes/provider.ts +++ b/src/components/httpRoutes/provider.ts @@ -227,7 +227,13 @@ providerRoutes.get( if (response.stream) { res.status(response.status.httpStatus) - res.set(response.status.headers) + + const safeHeaders = { ...response.status.headers } + if (safeHeaders['content-length'] && safeHeaders['Transfer-Encoding']) { + delete safeHeaders['content-length'] + } + + res.set(safeHeaders) response.stream.pipe(res) } else { res.status(response.status.httpStatus).send(response.status.error) diff --git a/src/components/httpRoutes/requestValidator.ts b/src/components/httpRoutes/requestValidator.ts index 6fb6e553b..9b24ddbb0 100644 --- a/src/components/httpRoutes/requestValidator.ts +++ b/src/components/httpRoutes/requestValidator.ts @@ -1,6 +1,12 @@ import { Request, Response } from 'express' -import { getConfiguration } from '../../utils/index.js' +import { getConfiguration } from '../../utils/config.js' import { HTTP_LOGGER } from '../../utils/logging/common.js' +import { OceanNodeConfig } from '../../@types/OceanNode.js' +import { RequestLimiter } from '../../OceanNode.js' +import { + CONNECTIONS_RATE_INTERVAL, + DEFAULT_MAX_CONNECTIONS_PER_MINUTE +} from '../../utils/constants.js' // TODO we should group common stuff, // we have multiple similar validation interfaces @@ -9,23 +15,68 @@ export interface CommonValidation { error?: string } -// midleware to valid client addresses against a denylist +// hold data about last request made +const connectionsData: RequestLimiter = { + lastRequestTime: Date.now(), + requester: '', + numRequests: 0 +} + +// midleware to validate client addresses against a denylist +// it also checks the global rate limit export const requestValidator = async function (req: Request, res: Response, next: any) { // Perform the validations. const requestIP = req.headers['x-forwarded-for'] || req.socket.remoteAddress - const validation = await checkIP(requestIP) + + // grab request time + const requestTime = Date.now() + if (requestTime - connectionsData.lastRequestTime > CONNECTIONS_RATE_INTERVAL) { + // last one was more than 1 minute ago? reset counter + connectionsData.numRequests = 0 + } + // always increment counter + connectionsData.numRequests += 1 + // update time and requester information + connectionsData.lastRequestTime = requestTime + connectionsData.requester = requestIP + + const configuration = await getConfiguration() + + // check if IP is allowed or denied + const ipValidation = await checkIP(requestIP, configuration) // Validation failed, or an error occurred during the external request. - if (!validation.valid) { - res.status(403).send(validation.error) + if (!ipValidation.valid) { + res.status(403).send(ipValidation.error) + return + } + // check global rate limits (not ip related) + const requestRateValidation = checkConnectionsRateLimit(configuration, connectionsData) + if (!requestRateValidation.valid) { + res.status(403).send(requestRateValidation.error) return } // Validation passed. next() } -async function checkIP(requestIP: string | string[]): Promise { +export function checkConnectionsRateLimit( + configuration: OceanNodeConfig, + connectionsData: RequestLimiter +): CommonValidation { + const connectionLimits = + configuration.maxConnections || DEFAULT_MAX_CONNECTIONS_PER_MINUTE + const ok = connectionsData.numRequests <= connectionLimits + return { + valid: ok, + error: ok ? '' : 'Unauthorized request. Rate limit exceeded!' + } +} + +function checkIP( + requestIP: string | string[], + configuration: OceanNodeConfig +): CommonValidation { let onDenyList = false - const configuration = await getConfiguration() if (!Array.isArray(requestIP)) { onDenyList = configuration.denyList?.ips.includes(requestIP) } else { diff --git a/src/components/httpRoutes/routeUtils.ts b/src/components/httpRoutes/routeUtils.ts index 2ec92a9f1..a889c95d3 100644 --- a/src/components/httpRoutes/routeUtils.ts +++ b/src/components/httpRoutes/routeUtils.ts @@ -46,6 +46,16 @@ routesNames.set('computeStart', { method: 'post' }) +routesNames.set('freeCompute', { + path: `${SERVICES_API_BASE_PATH}/freeCompute`, + method: 'post' +}) + +routesNames.set('computeStreamableLogs', { + path: `${SERVICES_API_BASE_PATH}/computeStreamableLogs`, + method: 'GET' +}) + routesNames.set('computeStatus', { path: `${SERVICES_API_BASE_PATH}/compute`, method: 'get' diff --git a/src/components/policyServer/index.ts b/src/components/policyServer/index.ts index fe569bcf7..2a045e461 100644 --- a/src/components/policyServer/index.ts +++ b/src/components/policyServer/index.ts @@ -1,6 +1,6 @@ -// import { CORE_LOGGER } from '../../utils/logging/common.js' +import { DDO } from '@oceanprotocol/ddo-js' import { PolicyServerResult } from '../../@types/policyServer.js' -import { DDO } from '../../@types/DDO/DDO.js' +import { isDefined } from '../../utils/util.js' export class PolicyServer { serverUrl: string @@ -10,7 +10,7 @@ export class PolicyServer { } private async askServer(command: any): Promise { - if (!this.serverUrl) return { success: true, message: '', httpStatus: 0 } + if (!this.serverUrl) return { success: true, message: '', httpStatus: 404 } let response try { response = await fetch(this.serverUrl, { @@ -21,7 +21,11 @@ export class PolicyServer { body: JSON.stringify(command) }) } catch (e) { - return { success: true, message: '', httpStatus: 0 } + return { + success: true, + message: '', + httpStatus: 400 + } } if (response.status === 200) { return { @@ -108,4 +112,8 @@ export class PolicyServer { async passThrough(request: any): Promise { return await this.askServer(request) } + + public isConfigured(): boolean { + return isDefined(this.serverUrl) + } } diff --git a/src/components/storage/index.ts b/src/components/storage/index.ts index 509766e1d..d214bbffb 100644 --- a/src/components/storage/index.ts +++ b/src/components/storage/index.ts @@ -83,6 +83,11 @@ export abstract class Storage { } } + getStorageType(file: any): FileObjectType { + const { type } = file + return type + } + async getFileInfo( fileInfoRequest: FileInfoRequest, forceChecksum: boolean = false @@ -190,7 +195,7 @@ export class UrlStorage extends Storage { super(file, config) const [isValid, message] = this.validate() if (isValid === false) { - throw new Error(`Error validationg the URL file: ${message}`) + throw new Error(`Error validating the URL file: ${message}`) } } @@ -277,7 +282,7 @@ export class ArweaveStorage extends Storage { const [isValid, message] = this.validate() if (isValid === false) { - throw new Error(`Error validationg the Arweave file: ${message}`) + throw new Error(`Error validating the Arweave file: ${message}`) } } @@ -355,7 +360,7 @@ export class IpfsStorage extends Storage { const [isValid, message] = this.validate() if (isValid === false) { - throw new Error(`Error validationg the IPFS file: ${message}`) + throw new Error(`Error validating the IPFS file: ${message}`) } } diff --git a/src/helpers/scripts/setupNodeEnv.sh b/src/helpers/scripts/setupNodeEnv.sh index e3727f7b8..0e2bc572f 100755 --- a/src/helpers/scripts/setupNodeEnv.sh +++ b/src/helpers/scripts/setupNodeEnv.sh @@ -239,6 +239,34 @@ if [ "$run_indexer" == 'y' ]; then configure_rpc fi +# Check if user wants to enable compute functionality +read -p "Do you want to enable compute functionality on your node? [ y/n ]: " enable_compute +enable_compute=${enable_compute:-y} +if [ "$enable_compute" == 'y' ]; then + echo "" + echo "✅ Setting default Docker compute environment configuration" + echo " This enables compute-to-data functionality with standard resource limits:" + echo " • Docker socket path: /var/run/docker.sock" + echo " • Storage expiry: 7 days (604800 seconds)" + echo " • Max job duration: 10 hours (36000 seconds)" + echo " • Free compute resources: 1 CPU, 1GB RAM, 1GB disk" + echo " • Maximum free jobs: 3 concurrent jobs" + echo "" + echo " You can customize this in your .env file for production use." + echo "" + + DOCKER_COMPUTE_ENV="[{\"socketPath\":\"/var/run/docker.sock\",\"resources\":[{\"id\":\"disk\",\"total\":1000000000}],\"storageExpiry\":604800,\"maxJobDuration\":36000,\"fees\":{\"1\":[{\"feeToken\":\"0x123\",\"prices\":[{\"id\":\"cpu\",\"price\":1}]}]},\"free\":{\"maxJobDuration\":360000,\"maxJobs\":3,\"resources\":[{\"id\":\"cpu\",\"max\":1},{\"id\":\"ram\",\"max\":1000000000},{\"id\":\"disk\",\"max\":1000000000}]}}]" + + REPLACE_STR="DOCKER_COMPUTE_ENVIRONMENTS='$DOCKER_COMPUTE_ENV'" + if [ "$(uname)" == "Darwin" ]; then + sed -i '' -e "s;DOCKER_COMPUTE_ENVIRONMENTS=;$REPLACE_STR;" "$env_file_path" + else + sed -i -e "s;DOCKER_COMPUTE_ENVIRONMENTS=;$REPLACE_STR;" "$env_file_path" + fi + echo "Compute environment successfully configured!" +fi +echo "------------------------------------------------------------------------------" + if [ $created_pk_file -eq 1 ]; then read -p "Do you want me to delete the generated $pk_file file? (your key is already saved): [ y/n ]" delete_pk_file delete_pk_file=${delete_pk_file:-n} diff --git a/src/index.ts b/src/index.ts index 1796a87b9..603abedbd 100644 --- a/src/index.ts +++ b/src/index.ts @@ -17,7 +17,7 @@ import { OCEAN_NODE_LOGGER } from './utils/logging/common.js' import path from 'path' import { fileURLToPath } from 'url' import cors from 'cors' -import { scheduleCronJobs } from './utils/logging/logDeleteCron.js' +import { scheduleCronJobs } from './utils/cronjobs/scheduleCronJobs.js' import { requestValidator } from './components/httpRoutes/requestValidator.js' import { hasValidDBConfiguration } from './utils/database.js' @@ -126,8 +126,8 @@ if (dbconn) { } // Singleton instance across application -const oceanNode = OceanNode.getInstance(dbconn, node, provider, indexer) -oceanNode.addC2DEngines(config) +const oceanNode = OceanNode.getInstance(config, dbconn, node, provider, indexer) +oceanNode.addC2DEngines() function removeExtraSlashes(req: any, res: any, next: any) { req.url = req.url.replace(/\/{2,}/g, '/') @@ -139,14 +139,13 @@ if (config.hasHttp) { app.use(express.raw({ limit: '25mb' })) app.use(cors()) - if (config.hasDashboard) { + if (config.hasControlPanel) { // Serve static files expected at the root, under the '/_next' path - app.use('/_next', express.static(path.join(__dirname, '/dashboard/_next'))) + app.use('/_next', express.static(path.join(__dirname, '/controlpanel/_next'))) - // Serve static files for Next.js under both '/dashboard' and '/controlpanel' - const dashboardPath = path.join(__dirname, '/dashboard') - app.use('/dashboard', express.static(dashboardPath)) - app.use('/controlpanel', express.static(dashboardPath)) + // Serve static files for Next.js under '/controlpanel' + const controlPanelPath = path.join(__dirname, '/controlpanel') + app.use('/controlpanel', express.static(controlPanelPath)) // Custom middleware for SPA routing: Serve index.html for non-static asset requests const serveIndexHtml = ( @@ -158,10 +157,9 @@ if (config.hasHttp) { return next() // Skip this middleware if the request is for a static asset } // For any other requests, serve index.html - res.sendFile(path.join(dashboardPath, 'index.html')) + res.sendFile(path.join(controlPanelPath, 'index.html')) } - app.use('/dashboard', serveIndexHtml) app.use('/controlpanel', serveIndexHtml) } diff --git a/src/test/data/assets.ts b/src/test/data/assets.ts index e1e3cf926..0d831cbf3 100644 --- a/src/test/data/assets.ts +++ b/src/test/data/assets.ts @@ -1,6 +1,8 @@ +import { Credentials, CREDENTIALS_TYPES } from '@oceanprotocol/ddo-js' + export const downloadAsset = { '@context': ['https://w3id.org/did/v1'], - id: '', + id: 'did:op:ae13', nftAddress: '', version: '4.1.0', chainId: 80001, @@ -45,17 +47,16 @@ export const downloadAsset = { owner: '', created: '' }, - purgatory: { - state: false - }, - datatokens: [] as any, stats: { - allocated: 0, orders: 0, price: { value: '0' } - } + }, + purgatory: { + state: false + }, + datatokens: [] as any } const nftLevelCredentials: any = { @@ -77,10 +78,11 @@ const nftLevelCredentials: any = { ] } -const serviceLevelCredentials: any = { +const serviceLevelCredentials: Credentials = { + allow: [], deny: [ { - type: 'address', + type: CREDENTIALS_TYPES.ADDRESS, values: ['0xA78deb2Fa79463945C247991075E2a0e98Ba7A09'] } ] @@ -88,7 +90,7 @@ const serviceLevelCredentials: any = { export const downloadAssetWithCredentials = { '@context': ['https://w3id.org/did/v1'], - id: '', + id: 'did:op:ae13', nftAddress: '', version: '4.1.0', chainId: 80001, @@ -250,6 +252,8 @@ export const algoAsset = { files: { files: [ { + type: 'url', + method: 'GET', url: 'https://raw.githubusercontent.com/oceanprotocol/test-algorithm/master/javascript/algo.js', contentType: 'text/js', encoding: 'UTF-8' @@ -283,3 +287,99 @@ export const algoAsset = { created: '' } } + +export const completeDBComputeJob = { + owner: '0x6c957a45C801035d3297d43d0Ce83a237Ec5E0d1', + did: '', + jobId: '34aa4e7e-ce41-4547-b3e1-57aa1a7f97e6', + dateCreated: '1732720690.68', + dateFinished: '', + status: 70, + statusText: 'Job finished', + results: '', + inputDID: '', + algoDID: '', + agreementId: '0x56e2a0a9a6abcadac403dddc59858a5caf51ac286b401c811655b0235cd45da6', + expireTimestamp: 1732721290.68, + environment: '0x46f61c90309fcffa02e887e1a8a1ebdfeabe4f1ff279e306de2803df36bd46f7-free', + clusterHash: '0x3e072d2ac72e9ad87fed5a913caea960c89dfad85d447cbbc92c32457f0413e1', + configlogURL: '', + publishlogURL: '', + algologURL: '', + outputsURL: '', + stopRequested: false, + algorithm: { + documentId: 'did:op:39d9c2a7536865f9516b9f84432a624e25c8bb3e482de113ac9919af7d7a4866', + serviceId: 'db164c1b981e4d2974e90e61bda121512e6909c1035c908d68933ae4cfaba6b0', + meta: { language: '', version: '0.1', container: [Object] }, + transferTxId: '0x5c946d52cdd1623061330f455d4cb6d5898770987baa6539bda851d6c537cf6e' + }, + assets: [ + { + documentId: + 'did:op:ae13ce05f05457c041b013f41bf51400863eb5f387ba34e1b076f1f832a68071', + serviceId: 'ccb398c50d6abd5b456e8d7242bd856a1767a890b537c2f8c10ba8b8a10e6025', + transferTxId: '0xf14e89d0f0a80bf55392430e7479cac5eca6ed453e7b3ead99ab3c9820c9a411' + } + ], + isRunning: false, + isStarted: false, + containerImage: + 'node@sha256:1155995dda741e93afe4b1c6ced2d01734a6ec69865cc0997daf1f4db7259a36' +} + +export const dockerImageManifest = { + schemaVersion: 2, + mediaType: 'application/vnd.docker.distribution.manifest.v2+json', + config: { + mediaType: 'application/vnd.docker.container.image.v1+json', + size: 7286, + digest: 'sha256:386e0be86bde5eff9f85ea9eda02727dd4641664d746688b4049f79ef0cdb1c9' + }, + platform: { + architecture: 'amd64', + os: 'linux' + }, + layers: [ + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 49557601, + digest: 'sha256:167b8a53ca4504bc6aa3182e336fa96f4ef76875d158c1933d3e2fa19c57e0c3' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 24030522, + digest: 'sha256:b47a222d28fa95680198398973d0a29b82a968f03e7ef361cc8ded562e4d84a3' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 64112257, + digest: 'sha256:debce5f9f3a9709885f7f2ad3cf41f036a3b57b406b27ba3a883928315787042' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 211039785, + digest: 'sha256:1d7ca7cd2e066ae77ac6284a9d027f72a31a02a18bfc2a249ef2e7b01074338b' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 3371, + digest: 'sha256:94c7791033e87c3ab82bf56f778253138bbd5caf172ead6fc0ce39d459560607' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 47856943, + digest: 'sha256:72ab0dfaf5cb14ab09fd3478f8a01e3c3e21b7ad06e7b04ccac2f304d455ff45' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 2280920, + digest: 'sha256:3316ed2852d408595e2dfc601d96f39f4a39747bd1eb2eb1b63b1f3d49c42919' + }, + { + mediaType: 'application/vnd.docker.image.rootfs.diff.tar.gzip', + size: 451, + digest: 'sha256:ef5505406bea98d0f6adb559b937c0dad0aef6d98500b1120c6e27c50fdf172b' + } + ] +} diff --git a/src/test/data/commands.ts b/src/test/data/commands.ts new file mode 100644 index 000000000..b9a0156da --- /dev/null +++ b/src/test/data/commands.ts @@ -0,0 +1,31 @@ +export const freeComputeStartPayload = { + command: 'freeStartCompute', + consumerAddress: '0xC7EC1970B09224B317c52d92f37F5e1E4fF6B687', + environment: '', + nonce: '1', + signature: '0x123', + datasets: [ + { + fileObject: { + type: 'url', + url: 'https://raw.githubusercontent.com/oceanprotocol/ocean-cli/refs/heads/main/metadata/simpleComputeDataset.json', + method: 'GET' + } + } + ], + algorithm: { + fileObject: { + type: 'url', + url: 'https://raw.githubusercontent.com/oceanprotocol/ocean-cli/refs/heads/main/metadata/pythonAlgo.json', + method: 'GET' + }, + meta: { + container: { + image: 'my-compute-test', + tag: 'latest', + entrypoint: 'python $ALGO', + checksum: 'my-compute-checksum' + } + } + } +} diff --git a/src/test/data/ddo.ts b/src/test/data/ddo.ts index 5554a302b..ff8cf1a3c 100644 --- a/src/test/data/ddo.ts +++ b/src/test/data/ddo.ts @@ -1,24 +1,35 @@ export const ddo = { hashType: 'sha256', '@context': ['https://w3id.org/did/v1'], - id: 'did:op:fa0e8fa9550e8eb13392d6eeb9ba9f8111801b332c8d2345b350b3bc66b379d7', - nftAddress: '0xBB1081DbF3227bbB233Db68f7117114baBb43656', + id: 'did:op:b5ef03b7f0d148cde2942c8a330625d4fc71dd32b67a0093da24fcb9a4439887', + nftAddress: '0xca63894B1c911515F1C034BE3509AfC008B42d83', version: '4.1.0', chainId: 137, metadata: { created: '2022-12-30T08:40:06Z', updated: '2022-12-30T08:40:06Z', type: 'dataset', - name: 'DEX volume in details', + name: 'ETH/USDT orderbook', description: - 'Volume traded and locked of Decentralized Exchanges (Uniswap, Sushiswap, Curve, Balancer, ...), daily in details', - tags: ['index', 'defi', 'tvl'], - author: 'DEX', + 'Real time ETH/USDT orderbook\n\nTo take the bid orders, access data.bids array\nTo take the ask orders, access data.asks array\n\nResponse schema:\n\n```json\n{\n "code":"200000",\n "data":\n {\n "time":1665865828392,\n "sequence":"357821345",\n "bids":\n [\n ["1280","0.00078381"],\n ["1279.9","0.02901545"],\n ....\n ],\n "asks":\n [\n ["1280.2","0.0288382"],\n ["1280.3","0.00167897"],\n ...\n ]\n }\n}\n```\n\nAccess is permited for 1 day after buying.', + tags: ['defi', 'orderbook'], + author: '0x4Ab0C24005c410111e21aE16Df5e19180fAD0f6a', license: 'https://market.oceanprotocol.com/terms', additionalInformation: { termsAndConditions: true } - } + }, + services: [ + { + id: '24654b91482a3351050510ff72694d88edae803cf31a5da993da963ba0087648', + type: 'access', + files: + '0x04beba2f90639ff7559618160df5a81729904022578e6bd5f60c3bebfe5cb2aca59d7e062228a98ed88c4582c290045f47cdf3824d1c8bb25b46b8e10eb9dc0763ce82af826fd347517011855ce1396ac94af8cc6f29b78012b679cb78a594d9064b6f6f4a8229889f0bb53262b6ab62b56fa5c608ea126ba228dd0f87290c0628fe07023416280c067beb01a42d0a4df95fdb5a857f1f59b3e6a13b0ae4619080369ba5bede6c7beff6afc7fc31c71ed8100e7817d965d1f8f1abfaace3c01f0bd5d0127df308175941088a1f120a4d9a0290be590d65a7b4de01ae1efe24286d7a06fadeeafba83b5eab25b90961abf1f24796991f06de6c8e1c2357fbfb31f484a94e87e7dba80a489e12fffa1adde89f113b4c8c4c8877914911a008dbed0a86bdd9d14598c35894395fb4a8ea764ed2f9459f6acadac66e695b3715536338f6cdee616b721b0130f726c78ca60ec02fc86c', + datatokenAddress: '0xfF4AE9869Cafb5Ff725f962F3Bbc22Fb303A8aD8', + serviceEndpoint: 'https://v4.provider.polygon.oceanprotocol.com', + timeout: 0 + } + ] } export const genericAlgorithm = { '@context': ['https://w3id.org/did/v1'], diff --git a/src/test/integration/accessLists.test.ts b/src/test/integration/accessLists.test.ts new file mode 100644 index 000000000..3445f7bdb --- /dev/null +++ b/src/test/integration/accessLists.test.ts @@ -0,0 +1,201 @@ +import { + buildEnvOverrideConfig, + getMockSupportedNetworks, + OverrideEnvConfig, + setupEnvironment, + tearDownEnvironment, + TEST_ENV_CONFIG_FILE +} from '../utils/utils.js' +import { JsonRpcProvider, Signer } from 'ethers' +import { Blockchain } from '../../utils/blockchain.js' +import { RPCS, SupportedNetwork } from '../../@types/blockchain.js' +import { DEVELOPMENT_CHAIN_ID } from '../../utils/address.js' +import { ENVIRONMENT_VARIABLES } from '../../utils/constants.js' +import { deployAndGetAccessListConfig, EXISTING_ACCESSLISTS } from '../utils/contracts.js' +import { AccessListContract, OceanNodeConfig } from '../../@types/OceanNode.js' +import { homedir } from 'os' +import { getConfiguration } from '../../utils/config.js' +import { assert, expect } from 'chai' +import { findAccessListCredentials } from '../../utils/credentials.js' + +describe('Should deploy some accessLists before all other tests.', () => { + let config: OceanNodeConfig + let provider: JsonRpcProvider + const mockSupportedNetworks: RPCS = getMockSupportedNetworks() + + let previousConfiguration: OverrideEnvConfig[] + + let blockchain: Blockchain + // let contractAcessList: Contract + let owner: Signer + + let wallets: Signer[] = [] + + let allAccessListsDefinitions: AccessListContract[] = [] + + before(async () => { + provider = new JsonRpcProvider('http://127.0.0.1:8545') + config = await getConfiguration() // Force reload the configuration + + wallets = [ + (await provider.getSigner(0)) as Signer, + (await provider.getSigner(1)) as Signer, + (await provider.getSigner(2)) as Signer, + (await provider.getSigner(3)) as Signer + ] + + const rpcs: RPCS = config.supportedNetworks + const chain: SupportedNetwork = rpcs[String(DEVELOPMENT_CHAIN_ID)] + blockchain = new Blockchain( + chain.rpc, + chain.network, + chain.chainId, + chain.fallbackRPCs + ) + + owner = blockchain.getSigner() + + // ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST + const accessListPublishers = await deployAndGetAccessListConfig( + owner, + provider, + wallets + ) + EXISTING_ACCESSLISTS.set( + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name, + accessListPublishers + ) + const accessListValidators = await deployAndGetAccessListConfig( + owner, + provider, + wallets + ) + // ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST + EXISTING_ACCESSLISTS.set( + ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST.name, + accessListValidators + ) + + const accessListDecrypters = await deployAndGetAccessListConfig( + owner, + provider, + wallets + ) + // ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST + EXISTING_ACCESSLISTS.set( + ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST.name, + accessListDecrypters + ) + + // put them all here + allAccessListsDefinitions = [ + accessListPublishers, + accessListValidators, + accessListDecrypters + ] + + // override and save configuration (always before calling getConfig()) + previousConfiguration = await setupEnvironment( + TEST_ENV_CONFIG_FILE, + buildEnvOverrideConfig( + [ + ENVIRONMENT_VARIABLES.RPCS, + ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, + ENVIRONMENT_VARIABLES.PRIVATE_KEY, + ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, + ENVIRONMENT_VARIABLES.ALLOWED_ADMINS, + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS, + ENVIRONMENT_VARIABLES.ADDRESS_FILE, + // ACCESS_LISTS + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST, + ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST, + ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST + ], + [ + JSON.stringify(mockSupportedNetworks), + JSON.stringify([8996]), + '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', + JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), + JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), + JSON.stringify([ + await owner.getAddress() // the node + ]), + `${homedir}/.ocean/ocean-contracts/artifacts/address.json`, + JSON.stringify( + EXISTING_ACCESSLISTS.get( + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name + ) + ), + JSON.stringify( + EXISTING_ACCESSLISTS.get(ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST.name) + ), + JSON.stringify( + EXISTING_ACCESSLISTS.get( + ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST.name + ) + ) + ] + ) + ) + + config = await getConfiguration() + }) + + it('should have some access lists', () => { + expect(EXISTING_ACCESSLISTS.size > 0, 'Should have at least 1 accessList') + }) + + it(`should have ${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name} access lists`, () => { + assert( + config.authorizedPublishersList !== null, + `${ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.name} accessList is not defined` + ) + console.log(config.authorizedPublishersList) + }) + + it(`should have ${ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST.name} access lists`, () => { + assert( + config.allowedValidatorsList !== null, + `${ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST.name} accessList is not defined` + ) + console.log(config.allowedValidatorsList) + }) + + it(`should have ${ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST.name} access lists`, () => { + assert( + config.authorizedPublishersList !== null, + `${ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST.name} accessList is not defined` + ) + console.log(config.authorizedPublishersList) + }) + + it('should check if wallets are on accessList (with Access)', async function () { + for (let z = 0; z < allAccessListsDefinitions.length; z++) { + const accessListAddress = allAccessListsDefinitions[z][DEVELOPMENT_CHAIN_ID][0] // we have only 1 accesslist per config + for (let i = 0; i < wallets.length; i++) { + const account = await wallets[i].getAddress() + expect( + (await findAccessListCredentials(owner, account, accessListAddress)) === true, + `Address ${account} has no balance on Access List ${accessListAddress}, so its not Authorized` + ) + } + } + }) + + it('should check that wallets are NOT on accessList (without Access)', async function () { + for (let z = 0; z < allAccessListsDefinitions.length; z++) { + const accessListAddress = allAccessListsDefinitions[z][DEVELOPMENT_CHAIN_ID][0] // we have only 1 accesslist per config + for (let i = wallets.length; i < 4; i++) { + const account = await (await provider.getSigner(i)).getAddress() + expect( + (await findAccessListCredentials(owner, account, accessListAddress)) === false, + `Address ${account} should not be part Access List ${accessListAddress}, therefore its not Authorized` + ) + } + } + }) + + after(async () => { + await tearDownEnvironment(previousConfiguration) + }) +}) diff --git a/src/test/integration/compute.test.ts b/src/test/integration/compute.test.ts index cbdbd99bc..cbea8c474 100644 --- a/src/test/integration/compute.test.ts +++ b/src/test/integration/compute.test.ts @@ -1,13 +1,16 @@ import { expect, assert } from 'chai' import { ComputeGetEnvironmentsHandler, - ComputeStartHandler, + // ComputeStartHandler, ComputeStopHandler, ComputeGetStatusHandler, - ComputeInitializeHandler + ComputeInitializeHandler, + FreeComputeStartHandler, + PaidComputeStartHandler } from '../../components/core/compute/index.js' import type { - ComputeStartCommand, + PaidComputeStartCommand, + FreeComputeStartCommand, ComputeStopCommand, ComputeGetStatusCommand, ComputeInitializeCommand @@ -16,7 +19,7 @@ import type { ComputeAsset, ComputeAlgorithm, ComputeEnvironment -} from '../../@types/C2D.js' +} from '../../@types/C2D/C2D.js' import { // DB_TYPES, ENVIRONMENT_VARIABLES, @@ -53,21 +56,25 @@ import { tearDownEnvironment } from '../utils/utils.js' -import { ProviderFees } from '../../@types/Fees.js' +import { ProviderFees, ProviderComputeInitializeResults } from '../../@types/Fees.js' import { homedir } from 'os' import { publishAlgoDDO, publishDatasetDDO } from '../data/ddo.js' import { DEVELOPMENT_CHAIN_ID, getOceanArtifactsAdresses } from '../../utils/address.js' import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import OceanToken from '@oceanprotocol/contracts/artifacts/contracts/utils/OceanToken.sol/OceanToken.json' assert { type: 'json' } +import EscrowJson from '@oceanprotocol/contracts/artifacts/contracts/escrow/Escrow.sol/Escrow.json' assert { type: 'json' } import { createHash } from 'crypto' import { encrypt } from '../../utils/crypt.js' import { EncryptMethod } from '../../@types/fileObject.js' -import { checkC2DEnvExists } from '../../components/c2d/index.js' import { getAlgoChecksums, validateAlgoForDataset } from '../../components/core/compute/utils.js' +import { freeComputeStartPayload } from '../data/commands.js' +import { DDOManager } from '@oceanprotocol/ddo-js' + describe('Compute', () => { let previousConfiguration: OverrideEnvConfig[] let config: OceanNodeConfig @@ -82,11 +89,14 @@ describe('Compute', () => { let jobId: string let datasetOrderTxId: any let algoOrderTxId: any + let paymentToken: any + let paymentTokenContract: any + let escrowContract: any let providerFeesComputeDataset: ProviderFees let providerFeesComputeAlgo: ProviderFees let indexer: OceanIndexer - const now = new Date().getTime() / 1000 - const computeJobValidUntil = now + 60 * 15 // 15 minutes from now should be enough + // const now = new Date().getTime() / 1000 + const computeJobDuration = 60 * 15 // 15 minutes from now should be enough let firstEnv: ComputeEnvironment const wallet = new ethers.Wallet( @@ -94,7 +104,7 @@ describe('Compute', () => { ) // const chainId = DEVELOPMENT_CHAIN_ID const mockSupportedNetworks: RPCS = getMockSupportedNetworks() - const chainId = 8996 + const chainId = DEVELOPMENT_CHAIN_ID // randomly use a set of trusted algos or empty arrays // should validate if set and match, invalidate otherwise const setTrustedAlgosEmpty: boolean = Math.random() <= 0.5 @@ -103,8 +113,12 @@ describe('Compute', () => { let factoryContract: Contract let algoDDO: any let datasetDDO: any + let artifactsAddresses: any + let initializeResponse: ProviderComputeInitializeResults before(async () => { + artifactsAddresses = getOceanArtifactsAdresses() + paymentToken = artifactsAddresses.development.Ocean previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, buildEnvOverrideConfig( @@ -114,34 +128,33 @@ describe('Compute', () => { ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ADDRESS_FILE, - ENVIRONMENT_VARIABLES.OPERATOR_SERVICE_URL - // ENVIRONMENT_VARIABLES.DB_URL, - // ENVIRONMENT_VARIABLES.DB_TYPE + ENVIRONMENT_VARIABLES.DOCKER_COMPUTE_ENVIRONMENTS ], [ JSON.stringify(mockSupportedNetworks), - JSON.stringify([8996]), + JSON.stringify([DEVELOPMENT_CHAIN_ID]), '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), `${homedir}/.ocean/ocean-contracts/artifacts/address.json`, - JSON.stringify(['http://localhost:31000']) - // 'http://localhost:9200', - // DB_TYPES.ELASTIC_SEARCH + '[{"socketPath":"/var/run/docker.sock","resources":[{"id":"disk","total":1000000000}],"storageExpiry":604800,"maxJobDuration":3600,"fees":{"' + + DEVELOPMENT_CHAIN_ID + + '":[{"feeToken":"' + + paymentToken + + '","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":60,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1000000000},{"id":"disk","max":1000000000}]}}]' ] ) ) config = await getConfiguration(true) dbconn = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance(dbconn) + oceanNode = await OceanNode.getInstance(config, dbconn, null, null, null) indexer = new OceanIndexer(dbconn, config.indexingNetworks) oceanNode.addIndexer(indexer) - oceanNode.addC2DEngines(config) + oceanNode.addC2DEngines() provider = new JsonRpcProvider('http://127.0.0.1:8545') publisherAccount = (await provider.getSigner(0)) as Signer consumerAccount = (await provider.getSigner(1)) as Signer - const artifactsAddresses = getOceanArtifactsAdresses() publisherAddress = await publisherAccount.getAddress() algoDDO = { ...publishAlgoDDO } datasetDDO = { ...publishDatasetDDO } @@ -150,6 +163,16 @@ describe('Compute', () => { ERC721Factory.abi, publisherAccount ) + paymentTokenContract = new ethers.Contract( + paymentToken, + OceanToken.abi, + publisherAccount + ) + escrowContract = new ethers.Contract( + artifactsAddresses.development.Escrow, + EscrowJson.abi, + publisherAccount + ) }) it('Sets up compute envs', () => { @@ -224,20 +247,26 @@ describe('Compute', () => { assert(txReceipt, 'set metadata failed') publishedComputeDataset = await waitToIndex( publishedComputeDataset.ddo.id, - EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT * 2, + EVENTS.METADATA_UPDATED, + DEFAULT_TEST_TIMEOUT * 3, true ) - assert( - publishedComputeDataset?.ddo?.services[0]?.compute?.publisherTrustedAlgorithms - .length > 0, - 'Trusted algorithms not updated' - ) - assert( - publishedComputeDataset?.ddo?.services[0]?.compute?.publisherTrustedAlgorithms[0] - .did === publishedAlgoDataset.ddo.id, - 'Algorithm DID mismatch in trusted algorithms' - ) + if (!publishedComputeDataset.ddo) { + expect(expectedTimeoutFailure(this.test.title)).to.be.equal( + publishedComputeDataset.wasTimeout + ) + } else { + assert( + publishedComputeDataset?.ddo?.services[0]?.compute?.publisherTrustedAlgorithms + .length > 0, + 'Trusted algorithms not updated' + ) + assert( + publishedComputeDataset?.ddo?.services[0]?.compute?.publisherTrustedAlgorithms[0] + .did === publishedAlgoDataset.ddo.id, + 'Algorithm DID mismatch in trusted algorithms' + ) + } }) it('Get compute environments', async () => { @@ -254,30 +283,27 @@ describe('Compute', () => { computeEnvironments = await streamToObject(response.stream as Readable) console.log('existing envs: ', computeEnvironments) - - // expect 2 envs - expect(computeEnvironments[DEVELOPMENT_CHAIN_ID].length === 2, 'incorrect length') - for (const computeEnvironment of computeEnvironments[DEVELOPMENT_CHAIN_ID]) { + // expect 1 OR + envs (1 if only docker free env is available) + assert(computeEnvironments.length >= 1, 'Not enough compute envs') + for (const computeEnvironment of computeEnvironments) { assert(computeEnvironment.id, 'id missing in computeEnvironments') + assert(computeEnvironment.fees, 'fees missing in computeEnvironments') assert( computeEnvironment.consumerAddress, 'consumerAddress missing in computeEnvironments' ) - assert(computeEnvironment.lastSeen, 'lastSeen missing in computeEnvironments') + assert(computeEnvironment.id.startsWith('0x'), 'id should start with 0x') - assert(computeEnvironment.cpuNumber > 0, 'cpuNumber missing in computeEnvironments') - assert(computeEnvironment.ramGB > 0, 'ramGB missing in computeEnvironments') - assert(computeEnvironment.diskGB > 0, 'diskGB missing in computeEnvironments') - assert(computeEnvironment.maxJobs > 0, 'maxJobs missing in computeEnvironments') + assert(computeEnvironment.resources.length > 2, 'Missing resources') assert( computeEnvironment.maxJobDuration > 0, 'maxJobDuration missing in computeEnvironments' ) } - firstEnv = computeEnvironments[DEVELOPMENT_CHAIN_ID][0] + firstEnv = computeEnvironments[0] }) - it('Initialize compute without transaction IDs', async () => { + it('Initialize compute without orders transaction IDs', async () => { const dataset: ComputeAsset = { documentId: publishedComputeDataset.ddo.id, serviceId: publishedComputeDataset.ddo.services[0].id @@ -294,28 +320,31 @@ describe('Compute', () => { ) console.log('firstEnv', firstEnv) computeEnvironments = await streamToObject(response.stream as Readable) - console.log('computeEnvironments', computeEnvironments) - firstEnv = computeEnvironments[DEVELOPMENT_CHAIN_ID][0] + firstEnv = computeEnvironments[0] const initializeComputeTask: ComputeInitializeCommand = { datasets: [dataset], algorithm, - compute: { - env: firstEnv.id, - validUntil: computeJobValidUntil + environment: firstEnv.id, + payment: { + chainId: DEVELOPMENT_CHAIN_ID, + token: paymentToken }, + maxJobDuration: computeJobDuration, consumerAddress: firstEnv.consumerAddress, command: PROTOCOL_COMMANDS.COMPUTE_INITIALIZE } const resp = await new ComputeInitializeHandler(oceanNode).handle( initializeComputeTask ) + console.log(resp) assert(resp, 'Failed to get response') assert(resp.status.httpStatus === 200, 'Failed to get 200 response') assert(resp.stream, 'Failed to get stream') expect(resp.stream).to.be.instanceOf(Readable) const result: any = await streamToObject(resp.stream as Readable) + console.log(result) assert(result.algorithm, 'algorithm does not exist') expect(result.algorithm.datatoken?.toLowerCase()).to.be.equal( publishedAlgoDataset.datatokenAddress?.toLowerCase() @@ -369,9 +398,17 @@ describe('Compute', () => { assert(resultParsed.providerFee.validUntil, 'algorithm validUntil does not exist') assert(result.datasets[0].validOrder === false, 'incorrect validOrder') // expect false because tx id was not provided and no start order was called before + assert(result.payment, ' Payment structure does not exists') + assert( + result.payment.escrowAddress === artifactsAddresses.development.Escrow, + 'Incorrect escrow address' + ) + assert(result.payment.payee === firstEnv.consumerAddress, 'Incorrect payee address') + assert(result.payment.token === paymentToken, 'Incorrect payment token address') + // TO DO: check result.payment.amount }) - it('should start an order', async function () { + it('should start an order on dataset', async function () { const orderTxReceipt = await orderAsset( publishedComputeDataset.ddo, 0, @@ -387,11 +424,11 @@ describe('Compute', () => { }) it('Initialize compute with dataset tx and without algoritm tx', async () => { - // now, we have a valid order for dataset, with valid compute provider fees + // now, we have a valid order for dataset, with valid provider fees // expected results: // - dataset should have valid order - // - dataset should have valid providerFee - // - algo should not have any valid order or providerFee + // - dataset should not have providerFee, cause it's already paid & valid + // - algo should not have any valid order and it should have providerFee const dataset: ComputeAsset = { documentId: publishedComputeDataset.ddo.id, @@ -405,10 +442,12 @@ describe('Compute', () => { const initializeComputeTask: ComputeInitializeCommand = { datasets: [dataset], algorithm, - compute: { - env: firstEnv.id, - validUntil: computeJobValidUntil + environment: firstEnv.id, + payment: { + chainId: DEVELOPMENT_CHAIN_ID, + token: paymentToken }, + maxJobDuration: computeJobDuration, consumerAddress: firstEnv.consumerAddress, command: PROTOCOL_COMMANDS.COMPUTE_INITIALIZE } @@ -421,6 +460,10 @@ describe('Compute', () => { expect(resp.stream).to.be.instanceOf(Readable) const result: any = await streamToObject(resp.stream as Readable) + console.log('446') + console.log(result) + console.log('Algo') + console.log(result.algorithm) assert(result.algorithm, 'algorithm does not exist') expect(result.algorithm.datatoken?.toLowerCase()).to.be.equal( publishedAlgoDataset.datatokenAddress?.toLowerCase() @@ -449,7 +492,7 @@ describe('Compute', () => { assert(result.datasets.length > 0, 'datasets key does not exist') const resultParsed = JSON.parse(JSON.stringify(result.datasets[0])) - + if ('providerFee' in resultParsed) console.log(resultParsed.providerFee) expect(resultParsed.datatoken?.toLowerCase()).to.be.equal( publishedComputeDataset.ddo.datatokens[0].address?.toLowerCase() ) @@ -495,10 +538,12 @@ describe('Compute', () => { const initializeComputeTask: ComputeInitializeCommand = { datasets: [dataset], algorithm, - compute: { - env: firstEnv.id, - validUntil: computeJobValidUntil + environment: firstEnv.id, + payment: { + chainId: DEVELOPMENT_CHAIN_ID, + token: paymentToken }, + maxJobDuration: computeJobDuration, consumerAddress: firstEnv.consumerAddress, command: PROTOCOL_COMMANDS.COMPUTE_INITIALIZE } @@ -512,6 +557,7 @@ describe('Compute', () => { expect(resp.stream).to.be.instanceOf(Readable) const result: any = await streamToObject(resp.stream as Readable) + initializeResponse = JSON.parse(JSON.stringify(result)) assert(result.algorithm, 'algorithm does not exist') expect(result.algorithm.datatoken?.toLowerCase()).to.be.equal( publishedAlgoDataset.datatokenAddress?.toLowerCase() @@ -544,28 +590,37 @@ describe('Compute', () => { [ethers.hexlify(ethers.toUtf8Bytes(message))] ) const messageHashBytes = ethers.toBeArray(consumerMessage) + + // since ganache does not supports personal_sign, we use wallet account const signature = await wallet.signMessage(messageHashBytes) - const startComputeTask: ComputeStartCommand = { + const startComputeTask: PaidComputeStartCommand = { command: PROTOCOL_COMMANDS.COMPUTE_START, - consumerAddress: await wallet.getAddress(), + consumerAddress: await consumerAccount.getAddress(), + environment: firstEnv.id, signature, nonce, - environment: firstEnv.id, - dataset: { - documentId: publishedComputeDataset.ddo.id, - serviceId: publishedComputeDataset.ddo.services[0].id, - transferTxId: '0x123' - }, + datasets: [ + { + documentId: publishedComputeDataset.ddo.id, + serviceId: publishedComputeDataset.ddo.services[0].id, + transferTxId: '0x123' + } + ], algorithm: { documentId: publishedAlgoDataset.ddo.id, serviceId: publishedAlgoDataset.ddo.services[0].id, transferTxId: '0x123', meta: publishedAlgoDataset.ddo.metadata.algorithm - } + }, + payment: { + chainId: DEVELOPMENT_CHAIN_ID, + token: paymentToken + }, + maxJobDuration: computeJobDuration // additionalDatasets?: ComputeAsset[] // output?: ComputeOutput } - const response = await new ComputeStartHandler(oceanNode).handle(startComputeTask) + const response = await new PaidComputeStartHandler(oceanNode).handle(startComputeTask) assert(response, 'Failed to get response') // should fail, because txId '0x123' is not a valid order assert(response.status.httpStatus === 500, 'Failed to get 500 response') @@ -573,6 +628,56 @@ describe('Compute', () => { }) it('should start a compute job', async () => { + // first check escrow auth + + let balance = await paymentTokenContract.balanceOf(await consumerAccount.getAddress()) + let funds = await oceanNode.escrow.getUserAvailableFunds( + DEVELOPMENT_CHAIN_ID, + await consumerAccount.getAddress(), + paymentToken + ) + // make sure we have 0 funds + if (BigInt(funds.toString()) > BigInt(0)) { + await escrowContract + .connect(consumerAccount) + .withdraw([initializeResponse.payment.token], [funds]) + } + let auth = await oceanNode.escrow.getAuthorizations( + DEVELOPMENT_CHAIN_ID, + paymentToken, + await consumerAccount.getAddress(), + firstEnv.consumerAddress + ) + if (auth.length > 0) { + // remove any auths + await escrowContract + .connect(consumerAccount) + .authorize(initializeResponse.payment.token, firstEnv.consumerAddress, 0, 0, 0) + } + let locks = await oceanNode.escrow.getLocks( + DEVELOPMENT_CHAIN_ID, + paymentToken, + await consumerAccount.getAddress(), + firstEnv.consumerAddress + ) + + if (locks.length > 0) { + // cancel all locks + for (const lock of locks) { + try { + await escrowContract + .connect(consumerAccount) + .cancelExpiredLocks(lock.jobId, lock.token, lock.payer, lock.payee) + } catch (e) {} + } + locks = await oceanNode.escrow.getLocks( + DEVELOPMENT_CHAIN_ID, + paymentToken, + await consumerAccount.getAddress(), + firstEnv.consumerAddress + ) + } + const locksBefore = locks.length const nonce = Date.now().toString() const message = String(nonce) // sign message/nonce @@ -582,18 +687,140 @@ describe('Compute', () => { ) const messageHashBytes = ethers.toBeArray(consumerMessage) const signature = await wallet.signMessage(messageHashBytes) - const startComputeTask: ComputeStartCommand = { + const startComputeTask: PaidComputeStartCommand = { command: PROTOCOL_COMMANDS.COMPUTE_START, - consumerAddress: await wallet.getAddress(), + consumerAddress: await consumerAccount.getAddress(), signature, nonce, environment: firstEnv.id, - dataset: { - documentId: publishedComputeDataset.ddo.id, - serviceId: publishedComputeDataset.ddo.services[0].id, - transferTxId: datasetOrderTxId + datasets: [ + { + documentId: publishedComputeDataset.ddo.id, + serviceId: publishedComputeDataset.ddo.services[0].id, + transferTxId: datasetOrderTxId + } + ], + algorithm: { + documentId: publishedAlgoDataset.ddo.id, + serviceId: publishedAlgoDataset.ddo.services[0].id, + transferTxId: algoOrderTxId, + meta: publishedAlgoDataset.ddo.metadata.algorithm + }, + output: {}, + payment: { + chainId: DEVELOPMENT_CHAIN_ID, + token: paymentToken }, + maxJobDuration: computeJobDuration + // additionalDatasets?: ComputeAsset[] + // output?: ComputeOutput + } + // it should fail, because we don't have funds & auths in escrow + let response = await new PaidComputeStartHandler(oceanNode).handle(startComputeTask) + assert(response.status.httpStatus === 400, 'Failed to get 400 response') + assert(!response.stream, 'We should not have a stream') + // let's put funds in escrow & create an auth + balance = await paymentTokenContract.balanceOf(await consumerAccount.getAddress()) + await paymentTokenContract + .connect(consumerAccount) + .approve(initializeResponse.payment.escrowAddress, balance) + await escrowContract + .connect(consumerAccount) + .deposit(initializeResponse.payment.token, balance) + await escrowContract + .connect(consumerAccount) + .authorize( + initializeResponse.payment.token, + firstEnv.consumerAddress, + balance, + computeJobDuration, + 10 + ) + auth = await oceanNode.escrow.getAuthorizations( + DEVELOPMENT_CHAIN_ID, + paymentToken, + await consumerAccount.getAddress(), + firstEnv.consumerAddress + ) + const authBefore = auth[0] + funds = await oceanNode.escrow.getUserAvailableFunds( + DEVELOPMENT_CHAIN_ID, + await consumerAccount.getAddress(), + paymentToken + ) + const fundsBefore = funds + assert(BigInt(funds.toString()) > BigInt(0), 'Should have funds in escrow') + assert(auth.length > 0, 'Should have authorization') + assert( + BigInt(auth[0].maxLockedAmount.toString()) > BigInt(0), + ' Should have maxLockedAmount in auth' + ) + assert( + BigInt(auth[0].maxLockCounts.toString()) > BigInt(0), + ' Should have maxLockCounts in auth' + ) + response = await new PaidComputeStartHandler(oceanNode).handle(startComputeTask) + assert(response, 'Failed to get response') + assert(response.status.httpStatus === 200, 'Failed to get 200 response') + assert(response.stream, 'Failed to get stream') + expect(response.stream).to.be.instanceOf(Readable) + + const jobs = await streamToObject(response.stream as Readable) + // eslint-disable-next-line prefer-destructuring + jobId = jobs[0].jobId + // check escrow + funds = await oceanNode.escrow.getUserAvailableFunds( + DEVELOPMENT_CHAIN_ID, + await consumerAccount.getAddress(), + paymentToken + ) + assert(fundsBefore > funds, 'We should have less funds') + locks = await oceanNode.escrow.getLocks( + DEVELOPMENT_CHAIN_ID, + paymentToken, + await consumerAccount.getAddress(), + firstEnv.consumerAddress + ) + assert(locks.length > locksBefore, 'We should have locks') + auth = await oceanNode.escrow.getAuthorizations( + DEVELOPMENT_CHAIN_ID, + paymentToken, + await consumerAccount.getAddress(), + firstEnv.consumerAddress + ) + assert(auth[0].currentLocks > authBefore.currentLocks, 'We should have running jobs') + assert( + auth[0].currentLockedAmount > authBefore.currentLockedAmount, + 'We should have higher currentLockedAmount' + ) + }) + + /* it('should start a free docker compute job', async () => { + const nonce = Date.now().toString() + const message = String(nonce) + // sign message/nonce + const consumerMessage = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const messageHashBytes = ethers.toBeArray(consumerMessage) + const signature = await wallet.signMessage(messageHashBytes) + const startComputeTask: FreeComputeStartCommand = { + command: PROTOCOL_COMMANDS.FREE_COMPUTE_START, + consumerAddress: await consumerAccount.getAddress(), + signature, + nonce, + environment: firstEnv.id, + datasets: [ + { + fileObject: computeAsset.services[0].files.files[0], + documentId: publishedComputeDataset.ddo.id, + serviceId: publishedComputeDataset.ddo.services[0].id, + transferTxId: datasetOrderTxId + } + ], algorithm: { + fileObject: algoAsset.services[0].files.files[0], documentId: publishedAlgoDataset.ddo.id, serviceId: publishedAlgoDataset.ddo.services[0].id, transferTxId: algoOrderTxId, @@ -603,18 +830,19 @@ describe('Compute', () => { // additionalDatasets?: ComputeAsset[] // output?: ComputeOutput } - const response = await new ComputeStartHandler(oceanNode).handle(startComputeTask) + const response = await new FreeComputeStartHandler(oceanNode).handle(startComputeTask) assert(response, 'Failed to get response') assert(response.status.httpStatus === 200, 'Failed to get 200 response') assert(response.stream, 'Failed to get stream') expect(response.stream).to.be.instanceOf(Readable) const jobs = await streamToObject(response.stream as Readable) + assert(jobs[0].jobId, 'failed to got job id') // eslint-disable-next-line prefer-destructuring jobId = jobs[0].jobId - }) + }) */ - it('should stop a compute job', async () => { + it('should start a free docker compute job', async () => { const nonce = Date.now().toString() const message = String(nonce) // sign message/nonce @@ -624,18 +852,42 @@ describe('Compute', () => { ) const messageHashBytes = ethers.toBeArray(consumerMessage) const signature = await wallet.signMessage(messageHashBytes) - const stopComputeTask: ComputeStopCommand = { - command: PROTOCOL_COMMANDS.COMPUTE_STOP, + const startComputeTask: FreeComputeStartCommand = { + command: PROTOCOL_COMMANDS.FREE_COMPUTE_START, consumerAddress: await wallet.getAddress(), signature, nonce, - jobId + environment: firstEnv.id, + datasets: [ + { + fileObject: computeAsset.services[0].files.files[0], + documentId: publishedComputeDataset.ddo.id, + serviceId: publishedComputeDataset.ddo.services[0].id, + transferTxId: datasetOrderTxId + } + ], + algorithm: { + fileObject: algoAsset.services[0].files.files[0], + documentId: publishedAlgoDataset.ddo.id, + serviceId: publishedAlgoDataset.ddo.services[0].id, + transferTxId: algoOrderTxId, + meta: publishedAlgoDataset.ddo.metadata.algorithm + }, + output: {} + // additionalDatasets?: ComputeAsset[] + // output?: ComputeOutput } - const response = await new ComputeStopHandler(oceanNode).handle(stopComputeTask) + const response = await new FreeComputeStartHandler(oceanNode).handle(startComputeTask) + console.log(response) assert(response, 'Failed to get response') assert(response.status.httpStatus === 200, 'Failed to get 200 response') assert(response.stream, 'Failed to get stream') expect(response.stream).to.be.instanceOf(Readable) + + const jobs = await streamToObject(response.stream as Readable) + assert(jobs[0].jobId, 'failed to got job id') + // eslint-disable-next-line prefer-destructuring + jobId = jobs[0].jobId }) it('should get job status by jobId', async () => { @@ -659,7 +911,7 @@ describe('Compute', () => { it('should get job status by consumer', async () => { const statusComputeTask: ComputeGetStatusCommand = { command: PROTOCOL_COMMANDS.COMPUTE_GET_STATUS, - consumerAddress: wallet.address, + consumerAddress: consumerAccount.address, agreementId: null, jobId: null } @@ -673,11 +925,66 @@ describe('Compute', () => { const jobs = await streamToObject(response.stream as Readable) console.log(jobs) }) - - it('should checkC2DEnvExists', async () => { - const envId = '0x123' - const result = await checkC2DEnvExists(envId, oceanNode) - expect(result).to.equal(false) + it('should stop a compute job', async () => { + const nonce = Date.now().toString() + const message = String(nonce) + // sign message/nonce + const consumerMessage = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const messageHashBytes = ethers.toBeArray(consumerMessage) + const signature = await wallet.signMessage(messageHashBytes) + const stopComputeTask: ComputeStopCommand = { + command: PROTOCOL_COMMANDS.COMPUTE_STOP, + consumerAddress: await consumerAccount.getAddress(), + signature, + nonce, + jobId + } + const response = await new ComputeStopHandler(oceanNode).handle(stopComputeTask) + assert(response, 'Failed to get response') + assert(response.status.httpStatus === 200, 'Failed to get 200 response') + assert(response.stream, 'Failed to get stream') + expect(response.stream).to.be.instanceOf(Readable) + }) + it('should deny the Free job due to signature (directCommand payload)', async function () { + freeComputeStartPayload.environment = firstEnv.id + const command: FreeComputeStartCommand = freeComputeStartPayload + const handler = new FreeComputeStartHandler(oceanNode) + const response = await handler.handle(command) + assert(response.status.httpStatus === 500, 'Failed to get 500 response') + assert(response.stream === null, 'Should not get stream') + assert( + response.status.error.includes('Invalid nonce or signature'), + 'Should have signature error' + ) + }) + it('should deny the Free job due to bad container image (directCommand payload)', async function () { + const nonce = Date.now().toString() + const message = String(nonce) + // sign message/nonce + const consumerMessage = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const messageHashBytes = ethers.toBeArray(consumerMessage) + const signature = await wallet.signMessage(messageHashBytes) + freeComputeStartPayload.signature = signature + freeComputeStartPayload.nonce = nonce + freeComputeStartPayload.environment = firstEnv.id + freeComputeStartPayload.consumerAddress = await wallet.getAddress() + const command: FreeComputeStartCommand = freeComputeStartPayload + const handler = new FreeComputeStartHandler(oceanNode) + const response = await handler.handle(command) + assert(response.status.httpStatus === 500, 'Failed to get 500 response') + assert(response.stream === null, 'Should not get stream') + assert( + response.status.error.includes( + freeComputeStartPayload.algorithm.meta.container.image + ), + 'Should have image error' + ) }) // algo and checksums related @@ -865,7 +1172,7 @@ describe('Compute', () => { }) it('should validateAlgoForDataset', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 3) + this.timeout(DEFAULT_TEST_TIMEOUT * 10) const { ddo, wasTimeout } = await waitToIndex( algoDDO.id, EVENTS.METADATA_CREATED, @@ -888,14 +1195,18 @@ describe('Compute', () => { ) const datasetDDOTest = ddo + const datasetInstance = DDOManager.getDDOClass(datasetDDO) + console.log('datasetDDOTest', datasetDDOTest) if (datasetDDOTest) { const result = await validateAlgoForDataset( algoDDOTest.id, algoChecksums, - datasetDDOTest, + datasetInstance, datasetDDOTest.services[0].id, oceanNode ) + console.log('result', result) + console.log('setTrustedAlgosEmpty', setTrustedAlgosEmpty) expect(result).to.equal(!setTrustedAlgosEmpty) } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) diff --git a/src/test/integration/configDatabase.test.ts b/src/test/integration/configDatabase.test.ts new file mode 100644 index 000000000..0d4df0bbe --- /dev/null +++ b/src/test/integration/configDatabase.test.ts @@ -0,0 +1,94 @@ +import { Database } from '../../components/database/index.js' +import { expect, assert } from 'chai' +import { OceanIndexer } from '../../components/Indexer/index.js' +import { getMockSupportedNetworks } from '../utils/utils.js' +import { SQLLiteConfigDatabase } from '../../components/database/SQLLiteConfigDatabase.js' +import { DB_TYPES } from '../../utils/constants.js' +import { OceanNodeDBConfig } from '../../@types/OceanNode.js' + +const versionConfig: OceanNodeDBConfig = { + url: 'http://localhost:8108/test-version?apiKey=xyz', + dbType: DB_TYPES.TYPESENSE +} + +const emptyDBConfig: OceanNodeDBConfig = { + url: '', + dbType: null +} + +describe('Config Database', () => { + let database: Database + let oceanIndexer: OceanIndexer + let initialVersionNull: any + + before(async () => { + database = await new Database(versionConfig) + + it('should have null version initially', async () => { + initialVersionNull = await oceanIndexer.getDatabase().sqliteConfig.retrieveValue() + assert(initialVersionNull.value === null, 'Initial version should be null') + }) + + oceanIndexer = new OceanIndexer(database, getMockSupportedNetworks()) + }) + + it('check version DB instance of SQL Lite', () => { + expect(database.sqliteConfig).to.be.instanceOf(SQLLiteConfigDatabase) + }) + + it('should set and retrieve version', async () => { + // Set a specific test version + const testVersion = '0.9.9' + await oceanIndexer + .getDatabase() + .sqliteConfig.createOrUpdateConfig('version', testVersion) + + // Verify we can retrieve it + const version = await oceanIndexer.getDatabase().sqliteConfig.retrieveValue() + assert(version.value === testVersion, `Version should be ${testVersion}`) + }) + + it('should update version and retrieve latest', async () => { + const initialVersion = '0.2.2' + const updatedVersion = '0.2.3' + + // Set initial version + await oceanIndexer + .getDatabase() + .sqliteConfig.createOrUpdateConfig('version', initialVersion) + let version = await oceanIndexer.getDatabase().sqliteConfig.retrieveValue() + assert(version.value === initialVersion, `Version should be ${initialVersion}`) + + // Update to new version + await oceanIndexer + .getDatabase() + .sqliteConfig.createOrUpdateConfig('version', updatedVersion) + version = await oceanIndexer.getDatabase().sqliteConfig.retrieveValue() + assert(version.value === updatedVersion, `Version should be ${updatedVersion}`) + }) + after(() => { + oceanIndexer.stopAllThreads() + }) +}) + +describe('VersionDatabase CRUD (without Elastic or Typesense config)', () => { + let database: Database + + before(async () => { + database = await new Database(emptyDBConfig) + }) + + it('check version DB instance of SQL Lite', () => { + expect(database.sqliteConfig).to.be.instanceOf(SQLLiteConfigDatabase) + }) + + it('create version', async () => { + const result = await database.sqliteConfig.createOrUpdateConfig('version', '0.1.0') + expect(result?.value).to.equal('0.1.0') + }) + + it('retrieve latest version', async () => { + const result = await database.sqliteConfig.retrieveValue('version') + expect(result?.value).to.equal('0.1.0') + }) +}) diff --git a/src/test/integration/credentials.test.ts b/src/test/integration/credentials.test.ts index 76aa62005..c04ce2da8 100644 --- a/src/test/integration/credentials.test.ts +++ b/src/test/integration/credentials.test.ts @@ -14,19 +14,21 @@ * 5. Try to Download the asset by all consumers. */ import { expect, assert } from 'chai' -import { JsonRpcProvider, Signer, ethers } from 'ethers' +import { JsonRpcProvider, Signer, ethers, Contract, EventLog } from 'ethers' import { Database } from '../../components/database/index.js' import { OceanIndexer } from '../../components/Indexer/index.js' import { OceanNode } from '../../OceanNode.js' -import { RPCS } from '../../@types/blockchain.js' +import { RPCS, SupportedNetwork } from '../../@types/blockchain.js' import { streamToObject } from '../../utils/util.js' import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' import { + Blockchain, ENVIRONMENT_VARIABLES, EVENTS, PROTOCOL_COMMANDS, - getConfiguration + getConfiguration, + printCurrentConfig } from '../../utils/index.js' import { DownloadHandler } from '../../components/core/handler/downloadHandler.js' import { GetDdoHandler } from '../../components/core/handler/ddoHandler.js' @@ -52,6 +54,9 @@ import { publishAsset, orderAsset } from '../utils/assets.js' import { downloadAssetWithCredentials } from '../data/assets.js' import { ganachePrivateKeys } from '../utils/addresses.js' import { homedir } from 'os' +import AccessListFactory from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json' assert { type: 'json' } +import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import { deployAccessListContract, getContract } from '../utils/contracts.js' describe('Should run a complete node flow.', () => { let config: OceanNodeConfig @@ -70,7 +75,14 @@ describe('Should run a complete node flow.', () => { let previousConfiguration: OverrideEnvConfig[] + let blockchain: Blockchain + let contractAcessList: Contract + let signer: Signer + before(async () => { + provider = new JsonRpcProvider('http://127.0.0.1:8545') + publisherAccount = (await provider.getSigner(0)) as Signer + // override and save configuration (always before calling getConfig()) previousConfiguration = await setupEnvironment( TEST_ENV_CONFIG_FILE, @@ -81,6 +93,7 @@ describe('Should run a complete node flow.', () => { ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS, ENVIRONMENT_VARIABLES.ALLOWED_ADMINS, + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS, ENVIRONMENT_VARIABLES.ADDRESS_FILE ], [ @@ -89,6 +102,9 @@ describe('Should run a complete node flow.', () => { '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), JSON.stringify(['0xe2DD09d719Da89e5a3D0F2549c7E24566e947260']), + JSON.stringify([ + await publisherAccount.getAddress() // signer 0 + ]), `${homedir}/.ocean/ocean-contracts/artifacts/address.json` ] ) @@ -96,18 +112,19 @@ describe('Should run a complete node flow.', () => { config = await getConfiguration(true) // Force reload the configuration const database = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance(database) + oceanNode = await OceanNode.getInstance(config, database) const indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) - let network = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) - if (!network) { - network = getOceanArtifactsAdresses().development - } - - provider = new JsonRpcProvider('http://127.0.0.1:8545') + const rpcs: RPCS = config.supportedNetworks + const chain: SupportedNetwork = rpcs[String(DEVELOPMENT_CHAIN_ID)] + blockchain = new Blockchain( + chain.rpc, + chain.network, + chain.chainId, + chain.fallbackRPCs + ) - publisherAccount = (await provider.getSigner(0)) as Signer consumerAccounts = [ (await provider.getSigner(1)) as Signer, (await provider.getSigner(2)) as Signer, @@ -116,14 +133,59 @@ describe('Should run a complete node flow.', () => { consumerAddresses = await Promise.all(consumerAccounts.map((a) => a.getAddress())) }) + it('should deploy accessList contract', async function () { + this.timeout(DEFAULT_TEST_TIMEOUT * 2) + let networkArtifacts = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) + if (!networkArtifacts) { + networkArtifacts = getOceanArtifactsAdresses().development + } + + signer = blockchain.getSigner() + const txAddress = await deployAccessListContract( + signer, + networkArtifacts.AccessListFactory, + AccessListFactory.abi, + 'AllowList', + 'ALLOW', + false, + await signer.getAddress(), + [await signer.getAddress()], + ['https://oceanprotocol.com/nft/'] + ) + + contractAcessList = getContract(txAddress, AccessList.abi, signer) + // check if we emited the event and the address is part of the list now + const account = await signer.getAddress() + const eventLogs: Array = (await contractAcessList.queryFilter( + 'AddressAdded', + networkArtifacts.startBlock, + 'latest' + )) as Array + // at least 1 event + expect(eventLogs.length).to.be.at.least(1) + for (const log of eventLogs) { + // check the account address + if (log.args.length === 2 && Number(log.args[1] >= 1)) { + const address: string = log.args[0] + expect(address.toLowerCase()).to.be.equal(account.toLowerCase()) + } + } + }) + + it('should have balance from accessList contract', async function () { + const balance = await contractAcessList.balanceOf(await signer.getAddress()) + expect(Number(balance)).to.equal(1) + }) + it('should publish download datasets', async function () { this.timeout(DEFAULT_TEST_TIMEOUT * 3) + const publishedDataset = await publishAsset( downloadAssetWithCredentials, publisherAccount ) + did = publishedDataset.ddo.id - await new Promise((resolve) => setTimeout(resolve, 5000)) const { ddo, wasTimeout } = await waitToIndex( did, EVENTS.METADATA_CREATED, @@ -172,7 +234,7 @@ describe('Should run a complete node flow.', () => { const transferTxId = orderTxIds[0] const wallet = new ethers.Wallet(consumerPrivateKey) - const nonce = Math.floor(Date.now() / 1000).toString() + const nonce = Date.now().toString() const message = String(ddo.id + nonce) const consumerMessage = ethers.solidityPackedKeccak256( ['bytes'], @@ -214,7 +276,7 @@ describe('Should run a complete node flow.', () => { const transferTxId = orderTxIds[1] const wallet = new ethers.Wallet(consumerPrivateKey) - const nonce = Math.floor(Date.now() / 1000).toString() + const nonce = Date.now().toString() const message = String(ddo.id + nonce) const consumerMessage = ethers.solidityPackedKeccak256( ['bytes'], @@ -236,7 +298,7 @@ describe('Should run a complete node flow.', () => { const response = await new DownloadHandler(oceanNode).handle(downloadTask) assert(response) assert(response.stream === null, 'stream is present') - assert(response.status.httpStatus === 500, 'http status not 500') + assert(response.status.httpStatus === 403, 'http status not 403') } setTimeout(() => { @@ -255,7 +317,7 @@ describe('Should run a complete node flow.', () => { const transferTxId = orderTxIds[1] const wallet = new ethers.Wallet(consumerPrivateKey) - const nonce = Math.floor(Date.now() / 1000).toString() + const nonce = Date.now().toString() const message = String(ddo.id + nonce) const consumerMessage = ethers.solidityPackedKeccak256( ['bytes'], @@ -287,101 +349,31 @@ describe('Should run a complete node flow.', () => { await doCheck() }) - it('should publish download datasets with undefined credential at service level', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 3) - const downalodAssetWithoutServiceCredentials = { - ...downloadAssetWithCredentials, - services: [ - { - ...downloadAssetWithCredentials.services[0], - credentials: { - allow: [] as any[] - } - } - ] - } + it('should NOT allow to index the asset because address is not on AUTHORIZED_PUBLISHERS', async function () { + this.timeout(DEFAULT_TEST_TIMEOUT * 2) + // this is not authorized + const nonAuthorizedAccount = (await provider.getSigner(4)) as Signer + const authorizedAccount = await publisherAccount.getAddress() + + printCurrentConfig() + expect( + config.authorizedPublishers.length === 1 && + config.authorizedPublishers[0] === authorizedAccount, + 'Unable to set AUTHORIZED_PUBLISHERS' + ) + const publishedDataset = await publishAsset( - downalodAssetWithoutServiceCredentials, - publisherAccount + downloadAssetWithCredentials, + nonAuthorizedAccount ) - did = publishedDataset.ddo.id - await new Promise((resolve) => setTimeout(resolve, 5000)) + + // will timeout const { ddo, wasTimeout } = await waitToIndex( - did, + publishedDataset?.ddo.id, EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT * 3 + DEFAULT_TEST_TIMEOUT ) - if (!ddo) { - assert(wasTimeout === true, 'published failed due to timeout!') - } - }) - - it('should fetch the published ddo with undefined credential at service level', async () => { - const getDDOTask = { - command: PROTOCOL_COMMANDS.GET_DDO, - id: did - } - const response = await new GetDdoHandler(oceanNode).handle(getDDOTask) - ddo = await streamToObject(response.stream as Readable) - assert(ddo.id === did, 'DDO id not matching') - }) - - it('should start an order for consumer', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 3) - - const orderTxReceipt = await orderAsset( - ddo, - 0, - consumerAccounts[0], - consumerAddresses[0], - publisherAccount, - oceanNode - ) - assert(orderTxReceipt, `order transaction for consumer 0 failed`) - const txHash = orderTxReceipt.hash - assert(txHash, `transaction id not found for consumer 0`) - orderTxIds.push(txHash) - }) - - it('should allow to download the asset when service is undefined but asset level is defined', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 3) - - const doCheck = async () => { - const consumerAddress = consumerAddresses[0] - const consumerPrivateKey = ganachePrivateKeys[consumerAddress] - const transferTxId = orderTxIds[3] - - const wallet = new ethers.Wallet(consumerPrivateKey) - const nonce = Math.floor(Date.now() / 1000).toString() - const message = String(ddo.id + nonce) - const consumerMessage = ethers.solidityPackedKeccak256( - ['bytes'], - [ethers.hexlify(ethers.toUtf8Bytes(message))] - ) - const messageHashBytes = ethers.toBeArray(consumerMessage) - const signature = await wallet.signMessage(messageHashBytes) - const downloadTask = { - fileIndex: 0, - documentId: did, - serviceId: ddo.services[0].id, - transferTxId, - nonce, - consumerAddress, - signature, - command: PROTOCOL_COMMANDS.DOWNLOAD - } - const response = await new DownloadHandler(oceanNode).handle(downloadTask) - assert(response) - assert(response.stream, 'stream not present') - assert(response.status.httpStatus === 200, 'http status not 200') - expect(response.stream).to.be.instanceOf(Readable) - } - - setTimeout(() => { - expect(expectedTimeoutFailure(this.test.title)).to.be.equal(true) - }, DEFAULT_TEST_TIMEOUT * 3) - - await doCheck() + assert(ddo === null && wasTimeout === true, 'DDO should NOT have been indexed') }) after(async () => { diff --git a/src/test/integration/download.test.ts b/src/test/integration/download.test.ts index cc4a3b4cb..d1f148a2d 100644 --- a/src/test/integration/download.test.ts +++ b/src/test/integration/download.test.ts @@ -39,7 +39,7 @@ import { getOceanArtifactsAdresses, getOceanArtifactsAdressesByChainId } from '../../utils/address.js' -import { publishAsset, orderAsset, updateAssetMetadata } from '../utils/assets.js' +import { publishAsset, orderAsset } from '../utils/assets.js' import { downloadAsset } from '../data/assets.js' import { genericDDO } from '../data/ddo.js' import { homedir } from 'os' @@ -56,6 +56,7 @@ describe('Should run a complete node flow.', () => { let publishedDataset: any let actualDDO: any let indexer: OceanIndexer + let anotherConsumer: ethers.Wallet const mockSupportedNetworks: RPCS = getMockSupportedNetworks() const serviceId = '0' @@ -88,7 +89,7 @@ describe('Should run a complete node flow.', () => { config = await getConfiguration(true) // Force reload the configuration database = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance(database) + oceanNode = await OceanNode.getInstance(config, database) indexer = new OceanIndexer(database, config.indexingNetworks) oceanNode.addIndexer(indexer) @@ -98,6 +99,10 @@ describe('Should run a complete node flow.', () => { } provider = new JsonRpcProvider('http://127.0.0.1:8545') + anotherConsumer = new ethers.Wallet( + ENVIRONMENT_VARIABLES.NODE2_PRIVATE_KEY.value, + provider + ) publisherAccount = (await provider.getSigner(0)) as Signer consumerAccount = (await provider.getSigner(1)) as Signer @@ -240,7 +245,7 @@ describe('Should run a complete node flow.', () => { const wallet = new ethers.Wallet( '0xef4b441145c1d0f3b4bc6d61d29f5c6e502359481152f869247c7a4244d45209' ) - const nonce = Math.floor(Date.now() / 1000).toString() + const nonce = Date.now().toString() const message = String(publishedDataset.ddo.id + nonce) const consumerMessage = ethers.solidityPackedKeccak256( ['bytes'], @@ -294,7 +299,7 @@ describe('Should run a complete node flow.', () => { serviceId, transferTxId: orderTxId, nonce: Date.now().toString(), - consumerAddress: '0xBE5449a6A97aD46c8558A3356267Ee5D2731ab57', + consumerAddress: await anotherConsumer.getAddress(), signature: '0xBE5449a6', command: PROTOCOL_COMMANDS.DOWNLOAD } @@ -310,84 +315,6 @@ describe('Should run a complete node flow.', () => { await doCheck() }) - - it('should update state of the service to 1 - end of life', async () => { - const updatedDDO = { - ...actualDDO, - services: [ - { - ...actualDDO.services[0], - state: 1 - } - ] - } - await updateAssetMetadata(actualDDO.nftAddress, updatedDDO, publisherAccount) - await waitToIndex(updatedDDO.id, EVENTS.METADATA_UPDATED, DEFAULT_TEST_TIMEOUT, true) - }) - it('should fetch the updated ddo', async () => { - const getDDOTask = { - command: PROTOCOL_COMMANDS.GET_DDO, - id: actualDDO.id - } - const response = await new GetDdoHandler(oceanNode).handle(getDDOTask) - actualDDO = await streamToObject(response.stream as Readable) - - assert(actualDDO.services[0], 'Service not present') - assert(actualDDO.services[0].state === 1, 'Service state not updated to 1') - }) - it('should start an order', async function () { - const orderTxReceipt = await orderAsset( - actualDDO, - 0, - consumerAccount, - await consumerAccount.getAddress(), - publisherAccount, - oceanNode - ) - assert(orderTxReceipt, 'order transaction failed') - orderTxId = orderTxReceipt.hash - assert(orderTxId, 'transaction id not found') - }) - it('should not allow to download end of life service', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 3) - - const doCheck = async () => { - const wallet = new ethers.Wallet( - '0xef4b441145c1d0f3b4bc6d61d29f5c6e502359481152f869247c7a4244d45209' - ) - const nonce = Date.now().toString() - const message = String(actualDDO.id + nonce) - const consumerMessage = ethers.solidityPackedKeccak256( - ['bytes'], - [ethers.hexlify(ethers.toUtf8Bytes(message))] - ) - const messageHashBytes = ethers.toBeArray(consumerMessage) - const signature = await wallet.signMessage(messageHashBytes) - - const downloadTask = { - fileIndex: 0, - documentId: actualDDO.id, - serviceId: actualDDO.services[0].id, - transferTxId: orderTxId, - nonce, - consumerAddress, - signature, - command: PROTOCOL_COMMANDS.DOWNLOAD - } - const response = await new DownloadHandler(oceanNode).handle(downloadTask) - - assert(response) - assert(response.stream === null, 'stream is present') - assert(response.status.httpStatus === 500, 'http status not 500') - } - - setTimeout(() => { - expect(expectedTimeoutFailure(this.test.title)).to.be.equal(true) - }, DEFAULT_TEST_TIMEOUT * 3) - - await doCheck() - }) - after(async () => { await tearDownEnvironment(previousConfiguration) indexer.stopAllThreads() diff --git a/src/test/integration/encryptDecryptDDO.test.ts b/src/test/integration/encryptDecryptDDO.test.ts index e1732b910..13d99312b 100644 --- a/src/test/integration/encryptDecryptDDO.test.ts +++ b/src/test/integration/encryptDecryptDDO.test.ts @@ -56,7 +56,7 @@ describe('Should encrypt and decrypt DDO', () => { let encryptedMetaData: any let documentHash: any let indexer: OceanIndexer - const nonce = Math.floor(Date.now() / 1000).toString() + const nonce = Date.now().toString() const chainId = 8996 const mockSupportedNetworks: RPCS = { @@ -103,9 +103,9 @@ describe('Should encrypt and decrypt DDO', () => { ERC721Factory.abi, publisherAccount ) - - database = await new Database(await (await getConfiguration()).dbConfig) - oceanNode = OceanNode.getInstance(database) + const config = await getConfiguration() + database = await new Database(config.dbConfig) + oceanNode = OceanNode.getInstance(config, database) // will be used later indexer = new OceanIndexer(database, mockSupportedNetworks) oceanNode.addIndexer(indexer) diff --git a/src/test/integration/encryptFile.test.ts b/src/test/integration/encryptFile.test.ts index acbef3475..336ef36ff 100644 --- a/src/test/integration/encryptFile.test.ts +++ b/src/test/integration/encryptFile.test.ts @@ -32,7 +32,7 @@ describe('Encrypt File', () => { ) config = await getConfiguration(true) // Force reload the configuration const dbconn = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance(dbconn) + oceanNode = await OceanNode.getInstance(config, dbconn) }) it('should encrypt files', async () => { diff --git a/src/test/integration/indexer.test.ts b/src/test/integration/indexer.test.ts index da2f68dd1..f63af3404 100644 --- a/src/test/integration/indexer.test.ts +++ b/src/test/integration/indexer.test.ts @@ -29,7 +29,7 @@ import { getOceanArtifactsAdressesByChainId } from '../../utils/address.js' import { createFee } from '../../components/core/utils/feesHandler.js' -import { DDO } from '../../@types/DDO/DDO.js' +import { Asset, DDO } from '@oceanprotocol/ddo-js' import { DEFAULT_TEST_TIMEOUT, OverrideEnvConfig, @@ -58,6 +58,7 @@ import { getConfiguration } from '../../utils/config.js' import { OceanNodeConfig } from '../../@types/OceanNode.js' import { encrypt } from '../../utils/crypt.js' import { EncryptMethod } from '../../@types/fileObject.js' +import { deleteIndexedMetadataIfExists } from '../../utils/asset.js' describe('Indexer stores a new metadata events and orders.', () => { let database: Database @@ -71,7 +72,7 @@ describe('Indexer stores a new metadata events and orders.', () => { let datatokenAddress: string const chainId = 8996 let assetDID: string - let resolvedDDO: Record = {} + let resolvedDDO: Asset let genericAsset: any let setMetaDataTxReceipt: any let orderTxId: string @@ -79,7 +80,7 @@ describe('Indexer stores a new metadata events and orders.', () => { let dataTokenContractWithNewSigner: any let orderEvent: any let reusedOrderEvent: any - // let initialOrderCount: number + let initialOrderCount: number let indexer: OceanIndexer const feeToken = '0x312213d6f6b5FCF9F56B7B8946A6C727Bf4Bc21f' const serviceIndex = 0 // dummy index @@ -110,7 +111,7 @@ describe('Indexer stores a new metadata events and orders.', () => { const config = await getConfiguration(true) database = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance() + oceanNode = await OceanNode.getInstance(config, database) indexer = new OceanIndexer(database, mockSupportedNetworks) oceanNode.addIndexer(indexer) let artifactsAddresses = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) @@ -176,6 +177,7 @@ describe('Indexer stores a new metadata events and orders.', () => { genericAsset.nftAddress = nftAddress assetDID = genericAsset.id // create proper service.files string + genericAsset.services[0].datatokenAddress = datatokenAddress genericAsset.services[0].files.datatokenAddress = datatokenAddress genericAsset.services[0].files.nftAddress = nftAddress // let's call node to encrypt @@ -203,16 +205,11 @@ describe('Indexer stores a new metadata events and orders.', () => { setMetaDataTxReceipt = await setMetaDataTx.wait() assert(setMetaDataTxReceipt, 'set metada failed') // for testing purpose - genericAsset.event.txid = setMetaDataTxReceipt.transactionHash + genericAsset.event.tx = setMetaDataTxReceipt.transactionHash genericAsset.event.block = setMetaDataTxReceipt.blockNumber genericAsset.event.from = setMetaDataTxReceipt.from genericAsset.event.contract = setMetaDataTxReceipt.contractAddress genericAsset.event.datetime = '2023-02-15T16:42:22' - - genericAsset.nft.address = nftAddress - genericAsset.nft.owner = setMetaDataTxReceipt.from - genericAsset.nft.state = 0 - genericAsset.nft.created = '2022-12-30T08:40:43' }) it('should store the ddo in the database and return it ', async function () { @@ -229,24 +226,35 @@ describe('Indexer stores a new metadata events and orders.', () => { }) it('should have nft field stored in ddo', async function () { - assert(resolvedDDO.nft, 'NFT field is not present') + assert(resolvedDDO.indexedMetadata.nft, 'NFT field is not present') assert( - resolvedDDO.nft.address?.toLowerCase() === nftAddress?.toLowerCase(), + resolvedDDO.indexedMetadata.nft.address?.toLowerCase() === + nftAddress?.toLowerCase(), 'NFT address mismatch' ) - assert(resolvedDDO.nft.state === 0, 'NFT state mismatch') // ACTIVE - assert(resolvedDDO.nft.name === (await nftContract.name()), 'NFT name mismatch') - assert(resolvedDDO.nft.symbol === (await nftContract.symbol()), 'NFT symbol mismatch') + assert(resolvedDDO.indexedMetadata.nft.state === 0, 'NFT state mismatch') // ACTIVE + assert( + resolvedDDO.indexedMetadata.nft.name === (await nftContract.name()), + 'NFT name mismatch' + ) + assert( + resolvedDDO.indexedMetadata.nft.symbol === (await nftContract.symbol()), + 'NFT symbol mismatch' + ) assert( - resolvedDDO.nft.tokenURI === + resolvedDDO.indexedMetadata.nft.tokenURI === (await nftContract.tokenURI(await nftContract.getId())), 'NFT tokeURI mismatch' ) assert( - resolvedDDO.nft.owner?.toLowerCase() === setMetaDataTxReceipt.from?.toLowerCase(), + resolvedDDO.indexedMetadata.nft.owner?.toLowerCase() === + setMetaDataTxReceipt.from?.toLowerCase(), 'NFT owner mismatch' ) - assert(resolvedDDO.nft.created, 'NFT created timestamp does not exist') + assert( + resolvedDDO.indexedMetadata.nft.created, + 'NFT created timestamp does not exist' + ) }) it('should store the ddo state in the db with no errors and retrieve it using did', async function () { @@ -288,6 +296,7 @@ describe('Indexer stores a new metadata events and orders.', () => { resolvedDDO.metadata.name = 'dataset-name-updated' resolvedDDO.metadata.description = 'Updated description for the Ocean protocol test dataset' + resolvedDDO = deleteIndexedMetadataIfExists(resolvedDDO) const stringDDO = JSON.stringify(resolvedDDO) const bytes = Buffer.from(stringDDO) const metadata = hexlify(bytes) @@ -338,10 +347,12 @@ describe('Indexer stores a new metadata events and orders.', () => { ) const retrievedDDO: any = ddo if (retrievedDDO) { - expect(retrievedDDO.nft).to.not.equal(undefined) - expect(retrievedDDO).to.have.nested.property('nft.state') + expect(retrievedDDO.indexedMetadata.nft).to.not.equal(undefined) + expect(retrievedDDO).to.have.nested.property('indexedMetadata.nft.state') // Expect the result from contract - expect(retrievedDDO.nft.state).to.equal(parseInt(result[2].toString())) + expect(retrievedDDO.indexedMetadata.nft.state).to.equal( + parseInt(result[2].toString()) + ) } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) }) @@ -362,7 +373,7 @@ describe('Indexer stores a new metadata events and orders.', () => { if (retrievedDDO != null) { // Expect the result from contract expect(retrievedDDO.id).to.equal(assetDID) - expect(retrievedDDO.nft.state).to.equal(0) + expect(retrievedDDO.indexedMetadata.nft.state).to.equal(0) } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) }) @@ -441,7 +452,7 @@ describe('Indexer stores a new metadata events and orders.', () => { }) it('should get number of orders', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 3) + this.timeout(DEFAULT_TEST_TIMEOUT * 2) const { ddo, wasTimeout } = await waitToIndex( assetDID, EVENTS.ORDER_STARTED, @@ -449,9 +460,15 @@ describe('Indexer stores a new metadata events and orders.', () => { true ) if (ddo) { - // const retrievedDDO: any = ddo - // expect(retrievedDDO.stats.orders).to.equal(1) - // initialOrderCount = retrievedDDO.stats.orders + const retrievedDDO = ddo + console.log('indexer retrieved ddo: ', JSON.stringify(retrievedDDO)) + for (const stat of retrievedDDO.indexedMetadata.stats) { + if (stat.datatokenAddress === datatokenAddress) { + expect(stat.orders).to.equal(1) + initialOrderCount = stat.orders + break + } + } const resultOrder = await database.order.retrieve(orderTxId) if (resultOrder) { if (resultOrder.id) { @@ -536,10 +553,15 @@ describe('Indexer stores a new metadata events and orders.', () => { true ) - const retrievedDDO: any = ddo + const retrievedDDO = ddo if (retrievedDDO) { - // expect(retrievedDDO.stats.orders).to.be.greaterThan(initialOrderCount) + for (const stat of retrievedDDO.indexedMetadata.stats) { + if (stat.datatokenAddress === datatokenAddress) { + expect(stat.orders).to.be.greaterThan(initialOrderCount) + break + } + } const resultOrder = await database.order.retrieve(reuseOrderTxId) if (resultOrder) { if (resultOrder.id) { @@ -576,17 +598,18 @@ describe('Indexer stores a new metadata events and orders.', () => { const { ddo, wasTimeout } = await waitToIndex( assetDID, - EVENTS.METADATA_UPDATED, + EVENTS.METADATA_STATE, DEFAULT_TEST_TIMEOUT, true ) const resolvedDDO: any = ddo if (resolvedDDO) { // Expect a short version of the DDO - console.log('resolvedDDO', resolvedDDO) - // expect(Object.keys(resolvedDDO).length).to.equal(4) + expect(Object.keys(resolvedDDO).length).to.equal(5) expect( - 'id' in resolvedDDO && 'nftAddress' in resolvedDDO && 'nft' in resolvedDDO + 'id' in resolvedDDO && + 'nftAddress' in resolvedDDO && + 'nft' in resolvedDDO.indexedMetadata ).to.equal(true) } else { expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) @@ -670,7 +693,6 @@ describe('OceanIndexer - crawler threads', () => { envOverrides = await setupEnvironment(TEST_ENV_CONFIG_FILE, envOverrides) config = await getConfiguration(true) db = await new Database(config.dbConfig) - // oceanNode = OceanNode.getInstance(db) }) it('should start a worker thread and handle RPCS "startBlock"', async () => { diff --git a/src/test/integration/indexerRemote.test.ts b/src/test/integration/indexerRemote.test.ts deleted file mode 100644 index 77bfe7e33..000000000 --- a/src/test/integration/indexerRemote.test.ts +++ /dev/null @@ -1,209 +0,0 @@ -import { expect, assert } from 'chai' -import { - JsonRpcProvider, - Signer, - Contract, - ethers, - hexlify, - ZeroAddress, - getAddress, - toUtf8Bytes -} from 'ethers' -import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } -import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } -import { Database } from '../../components/database/index.js' -import { OceanIndexer } from '../../components/Indexer/index.js' -import { RPCS } from '../../@types/blockchain.js' -import { getEventFromTx } from '../../utils/util.js' -import { expectedTimeoutFailure, waitToIndex } from './testUtils.js' -import { genericDDO } from '../data/ddo.js' -import { create256Hash } from '../../utils/crypt.js' -import { - DEVELOPMENT_CHAIN_ID, - getOceanArtifactsAdresses, - getOceanArtifactsAdressesByChainId -} from '../../utils/address.js' -import { - getMockSupportedNetworks, - setupEnvironment, - tearDownEnvironment, - OverrideEnvConfig, - buildEnvOverrideConfig, - DEFAULT_TEST_TIMEOUT -} from '../utils/utils.js' -import { ENVIRONMENT_VARIABLES, EVENTS } from '../../utils/constants.js' -import { homedir } from 'os' -import { OceanNode } from '../../OceanNode.js' -import axios from 'axios' -import { getConfiguration } from '../../utils/index.js' -import { DDOManager } from '@oceanprotocol/ddo-js' - -function uploadToIpfs(data: any): Promise { - return new Promise((resolve, reject) => { - axios - .post( - 'http://172.15.0.16:5001/api/v0/add', - '--------------------------a28d68b1c872c96f\r\nContent-Disposition: form-data; name="file"; filename="ddo.json"\r\nContent-Type: application/octet-stream\r\n\r\n' + - data + - '\r\n--------------------------a28d68b1c872c96f--\r\n', - { - headers: { - 'Content-Type': - 'multipart/form-data; boundary=------------------------a28d68b1c872c96f' - } - } - ) - .then(function (response: any) { - resolve(response.data.Hash) - }) - .catch(function (error: any) { - reject(error) - }) - }) -} - -describe('RemoteDDO: Indexer stores a new metadata events and orders.', () => { - let database: Database - // eslint-disable-next-line no-unused-vars - let indexer: OceanIndexer - let provider: JsonRpcProvider - let factoryContract: Contract - let nftContract: Contract - let publisherAccount: Signer - // eslint-disable-next-line no-unused-vars - let consumerAccount: Signer - let nftAddress: string - let datatokenAddress: string - let resolvedDDO: Record - // eslint-disable-next-line no-unused-vars - let genericAsset: any - let setMetaDataTxReceipt: any - // eslint-disable-next-line no-unused-vars - let oceanNode: OceanNode - const chainId = 8996 - let previousConfiguration: OverrideEnvConfig[] - const mockSupportedNetworks: RPCS = getMockSupportedNetworks() - - before(async () => { - const config = await getConfiguration(true) - - previousConfiguration = await setupEnvironment( - null, - buildEnvOverrideConfig( - [ - ENVIRONMENT_VARIABLES.RPCS, - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.DB_URL, - ENVIRONMENT_VARIABLES.ADDRESS_FILE - ], - [ - JSON.stringify(mockSupportedNetworks), - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - config.dbConfig.url, - `${homedir}/.ocean/ocean-contracts/artifacts/address.json` - ] - ) - ) - - database = await new Database(config.dbConfig) - indexer = new OceanIndexer(database, mockSupportedNetworks) - oceanNode = await OceanNode.getInstance(database) - let artifactsAddresses = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) - if (!artifactsAddresses) { - artifactsAddresses = getOceanArtifactsAdresses().development - } - - provider = new JsonRpcProvider('http://127.0.0.1:8545') - publisherAccount = (await provider.getSigner(0)) as Signer - consumerAccount = (await provider.getSigner(1)) as Signer - genericAsset = genericDDO - factoryContract = new ethers.Contract( - artifactsAddresses.ERC721Factory, - ERC721Factory.abi, - publisherAccount - ) - }) - - it('should publish a dataset', async () => { - const tx = await factoryContract.createNftWithErc20( - { - name: '72120Bundle', - symbol: '72Bundle', - templateIndex: 1, - tokenURI: 'https://oceanprotocol.com/nft/', - transferable: true, - owner: await publisherAccount.getAddress() - }, - { - strings: ['ERC20B1', 'ERC20DT1Symbol'], - templateIndex: 1, - addresses: [ - await publisherAccount.getAddress(), - ZeroAddress, - ZeroAddress, - '0x0000000000000000000000000000000000000000' - ], - uints: [1000, 0], - bytess: [] - } - ) - const txReceipt = await tx.wait() - assert(txReceipt, 'transaction failed') - const event = getEventFromTx(txReceipt, 'NFTCreated') - nftAddress = event.args[0] - assert(nftAddress, 'find nft created failed') - const datatokenEvent = getEventFromTx(txReceipt, 'TokenCreated') - datatokenAddress = datatokenEvent.args[0] - assert(datatokenAddress, 'find datatoken created failed') - }) - - it('should set metadata and save (the remote DDO is encrypted) ', async () => { - nftContract = new ethers.Contract(nftAddress, ERC721Template.abi, publisherAccount) - const ddoToPublish = genericDDO - const ddoInstance = DDOManager.getDDOClass(ddoToPublish) - ddoToPublish.id = ddoInstance.makeDid(getAddress(nftAddress), chainId.toString(10)) - const ipfsCID = await uploadToIpfs(JSON.stringify(ddoToPublish)) - const remoteDDO = { - remote: { - type: 'ipfs', - hash: ipfsCID - } - } - const stringDDO = JSON.stringify(remoteDDO) - const bytes = Buffer.from(stringDDO) - const metadata = hexlify(bytes) - // create metadata hash using the original DDO - const utf8Bytes = toUtf8Bytes(JSON.stringify(ddoToPublish)) - const hash = create256Hash(hexlify(utf8Bytes).toString()) - // publish metadata - const setMetaDataTx = await nftContract.setMetaData( - 0, - 'http://v4.provider.oceanprotocol.com', - '0x123', - '0x01', - metadata, - hash, - [] - ) - setMetaDataTxReceipt = await setMetaDataTx.wait() - assert(setMetaDataTxReceipt, 'set metada failed') - }) - - it('should store the ddo in the database and return it ', async function () { - this.timeout(DEFAULT_TEST_TIMEOUT * 2) - const ddoInstance = DDOManager.getDDOClass(genericDDO) - const did = ddoInstance.makeDid(getAddress(nftAddress), chainId.toString(10)) - const { ddo, wasTimeout } = await waitToIndex( - did, - EVENTS.METADATA_CREATED, - DEFAULT_TEST_TIMEOUT * 2 - ) - if (ddo) { - resolvedDDO = ddo - expect(resolvedDDO.id).to.equal(genericAsset.id) - } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) - }) - after(() => { - tearDownEnvironment(previousConfiguration) - }) -}) diff --git a/src/test/integration/logs.test.ts b/src/test/integration/logs.test.ts index f216d8a0c..c87feb8da 100644 --- a/src/test/integration/logs.test.ts +++ b/src/test/integration/logs.test.ts @@ -87,11 +87,11 @@ describe('LogDatabase CRUD', () => { if (logs.length > 0) { logs = logs.filter((log) => log.message === newLogEntry.message) - expect(logs?.length).to.equal(1) - expect(Number(logs?.[0].id)).to.greaterThan(Number(logId)) - expect(logs?.[0].level).to.equal(newLogEntry.level) - expect(logs?.[0].message).to.equal(newLogEntry.message) - expect(logs?.[0].moduleName).to.equal('HTTP') + expect(logs.length).to.equal(1) + expect(Number(logs[0].id)).to.greaterThan(Number(logId)) + expect(logs[0].level).to.equal(newLogEntry.level) + expect(logs[0].message).to.equal(newLogEntry.message) + expect(logs[0].moduleName).to.equal('HTTP') } }) @@ -118,11 +118,11 @@ describe('LogDatabase CRUD', () => { logs = logs.filter((log) => log.message === newLogEntry.message) if (logs.length > 0) { - expect(logs?.length).to.equal(1) - expect(Number(logs?.[0].id)).to.greaterThan(Number(logId)) - expect(logs?.[0].level).to.equal(newLogEntry.level) - expect(logs?.[0].message).to.equal(newLogEntry.message) - expect(logs?.[0].moduleName).to.equal('HTTP') + expect(logs.length).to.equal(1) + expect(Number(logs[0].id)).to.greaterThan(Number(logId)) + expect(logs[0].level).to.equal(newLogEntry.level) + expect(logs[0].message).to.equal(newLogEntry.message) + expect(logs[0].moduleName).to.equal('HTTP') } }) @@ -153,11 +153,11 @@ describe('LogDatabase CRUD', () => { logs = logs.filter((log) => log.message.includes(newLogEntry.message)) if (logs.length > 0) { - expect(logs?.length).to.equal(1) - expect(Number(logs?.[0].id)).to.greaterThan(Number(logId)) - expect(logs?.[0].level).to.equal(newLogEntry.level) - assert(logs?.[0].message) - expect(logs?.[0].moduleName).to.equal('HTTP') + expect(logs.length).to.equal(1) + expect(Number(logs[0].id)).to.greaterThan(Number(logId)) + expect(logs[0].level).to.equal(newLogEntry.level) + assert(logs[0].message) + expect(logs[0].moduleName).to.equal('HTTP') } }) @@ -293,13 +293,13 @@ describe('LogDatabase retrieveMultipleLogs with specific parameters', () => { it('should return an empty array for negative maxLogs', async () => { const logs = await database.logs.retrieveMultipleLogs(startTime, endTime, -1) - assert.isNull(logs, 'Expected logs to be null') + assert.isEmpty(logs, 'Expected logs to be empty') }) it('should retrieve a maximum of one log when maxLogs is set to 1', async () => { const logs = await database.logs.retrieveMultipleLogs(startTime, endTime, 1) // check if the length of logs is 1 or less - expect(logs?.length).to.be.at.most(1) + expect(logs.length).to.be.at.most(1) }) it('should retrieve no logs when maxLogs is set to 0', async () => { @@ -383,14 +383,14 @@ describe('LogDatabase deleteOldLogs', () => { let logs = await database.logs.retrieveMultipleLogs(startTime, endTime, 100) // Check that the old log is not present, but the recent one is - const oldLogPresent = logs?.some((log) => log.message === oldLogEntry.message) + const oldLogPresent = logs.some((log) => log.message === oldLogEntry.message) assert(oldLogPresent === false, 'Old logs are still present') // since we have many logs going to DB by default, we need to re-frame the timestamp to grab it startTime = new Date(recentLogEntry.timestamp - 1000) endTime = new Date(recentLogEntry.timestamp + 1000) logs = await database.logs.retrieveMultipleLogs(startTime, endTime, 100) - const recentLogPresent = logs?.some((log) => log.message === recentLogEntry.message) + const recentLogPresent = logs.some((log) => log.message === recentLogEntry.message) assert(recentLogPresent === true, 'Recent logs are not present') } else assert( diff --git a/src/test/integration/operationsDashboard.test.ts b/src/test/integration/operationsDashboard.test.ts index 074644318..c382e0f8c 100644 --- a/src/test/integration/operationsDashboard.test.ts +++ b/src/test/integration/operationsDashboard.test.ts @@ -106,7 +106,7 @@ describe('Should test admin operations', () => { config = await getConfiguration(true) // Force reload the configuration dbconn = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance(dbconn) + oceanNode = await OceanNode.getInstance(config, dbconn) indexer = new OceanIndexer(dbconn, config.indexingNetworks) oceanNode.addIndexer(indexer) }) @@ -124,7 +124,9 @@ describe('Should test admin operations', () => { expiryTimestamp, signature } - const validationResponse = new StopNodeHandler(oceanNode).validate(stopNodeCommand) + const validationResponse = await new StopNodeHandler(oceanNode).validate( + stopNodeCommand + ) assert(validationResponse, 'invalid stop node validation response') assert(validationResponse.valid === true, 'validation for stop node command failed') }) @@ -135,7 +137,7 @@ describe('Should test admin operations', () => { // CollectFeesHandler const collectFeesHandler: CollectFeesHandler = CoreHandlersRegistry.getInstance( oceanNode - ).getHandler(PROTOCOL_COMMANDS.COLLECT_FEES) + ).getHandler(PROTOCOL_COMMANDS.COLLECT_FEES) as CollectFeesHandler const signature = await getSignature(expiryTimestamp.toString()) const collectFeesCommand: AdminCollectFeesCommand = { @@ -147,7 +149,7 @@ describe('Should test admin operations', () => { expiryTimestamp, signature } - const validationResponse = collectFeesHandler.validate(collectFeesCommand) + const validationResponse = await collectFeesHandler.validate(collectFeesCommand) assert(validationResponse, 'invalid collect fees validation response') assert( validationResponse.valid === true, @@ -160,7 +162,9 @@ describe('Should test admin operations', () => { providerWallet ) const balanceBefore = await token.balanceOf(await destinationWallet.getAddress()) - expect(collectFeesHandler.validate(collectFeesCommand).valid).to.be.equal(true) // OK + expect((await collectFeesHandler.validate(collectFeesCommand)).valid).to.be.equal( + true + ) // OK const result = await collectFeesHandler.handle(collectFeesCommand) expect(result.status.httpStatus).to.be.equal(200) // OK @@ -228,7 +232,7 @@ describe('Should test admin operations', () => { signature } const reindexTxHandler = new ReindexTxHandler(oceanNode) - const validationResponse = reindexTxHandler.validate(reindexTxCommand) + const validationResponse = await reindexTxHandler.validate(reindexTxCommand) assert(validationResponse, 'invalid reindex tx validation response') assert(validationResponse.valid === true, 'validation for reindex tx command failed') @@ -297,7 +301,7 @@ describe('Should test admin operations', () => { signature } const reindexChainHandler = new ReindexChainHandler(oceanNode) - const validationResponse = reindexChainHandler.validate(reindexChainCommand) + const validationResponse = await reindexChainHandler.validate(reindexChainCommand) assert(validationResponse, 'invalid reindex chain validation response') assert( validationResponse.valid === true, @@ -349,7 +353,7 @@ describe('Should test admin operations', () => { // IndexingThreadHandler const indexingHandler: IndexingThreadHandler = CoreHandlersRegistry.getInstance( oceanNode - ).getHandler(PROTOCOL_COMMANDS.HANDLE_INDEXING_THREAD) + ).getHandler(PROTOCOL_COMMANDS.HANDLE_INDEXING_THREAD) as IndexingThreadHandler const signature = await getSignature(expiryTimestamp.toString()) const indexingStartCommand: StartStopIndexingCommand = { @@ -358,7 +362,7 @@ describe('Should test admin operations', () => { expiryTimestamp, signature } - expect(indexingHandler.validate(indexingStartCommand).valid).to.be.equal(true) // OK + expect((await indexingHandler.validate(indexingStartCommand)).valid).to.be.equal(true) // OK const indexingStopCommand: StartStopIndexingCommand = { command: PROTOCOL_COMMANDS.HANDLE_INDEXING_THREAD, @@ -366,12 +370,12 @@ describe('Should test admin operations', () => { expiryTimestamp: 10, signature } - expect(indexingHandler.validate(indexingStopCommand).valid).to.be.equal(false) // NOK + expect((await indexingHandler.validate(indexingStopCommand)).valid).to.be.equal(false) // NOK // OK now indexingStopCommand.expiryTimestamp = expiryTimestamp indexingStopCommand.chainId = 8996 - expect(indexingHandler.validate(indexingStopCommand).valid).to.be.equal(true) // OK + expect((await indexingHandler.validate(indexingStopCommand)).valid).to.be.equal(true) // OK // should exist a running thread for this network atm const response = await indexingHandler.handle(indexingStopCommand) diff --git a/src/test/integration/pricing.test.ts b/src/test/integration/pricing.test.ts new file mode 100644 index 000000000..4a7ca7cab --- /dev/null +++ b/src/test/integration/pricing.test.ts @@ -0,0 +1,374 @@ +import { expect, assert } from 'chai' +import { createHash } from 'crypto' +import { + JsonRpcProvider, + Signer, + Contract, + ethers, + getAddress, + hexlify, + ZeroAddress, + parseUnits +} from 'ethers' +import ERC721Factory from '@oceanprotocol/contracts/artifacts/contracts/ERC721Factory.sol/ERC721Factory.json' assert { type: 'json' } +import ERC721Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC721Template.sol/ERC721Template.json' assert { type: 'json' } +import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20TemplateEnterprise.sol/ERC20TemplateEnterprise.json' assert { type: 'json' } +import Dispenser from '@oceanprotocol/contracts/artifacts/contracts/pools/dispenser/Dispenser.sol/Dispenser.json' assert { type: 'json' } +import { Database } from '../../components/database/index.js' +import { OceanIndexer } from '../../components/Indexer/index.js' +import { RPCS } from '../../@types/blockchain.js' +import { getEventFromTx } from '../../utils/util.js' +import { waitToIndex, expectedTimeoutFailure } from './testUtils.js' +import { genericDDO } from '../data/ddo.js' +import { + DEVELOPMENT_CHAIN_ID, + getOceanArtifactsAdresses, + getOceanArtifactsAdressesByChainId +} from '../../utils/address.js' +import { + DEFAULT_TEST_TIMEOUT, + OverrideEnvConfig, + buildEnvOverrideConfig, + getMockSupportedNetworks, + setupEnvironment, + tearDownEnvironment +} from '../utils/utils.js' +import { ENVIRONMENT_VARIABLES, EVENTS } from '../../utils/constants.js' +import { homedir } from 'os' +import { OceanNode } from '../../OceanNode.js' +import { getConfiguration } from '../../utils/config.js' +import { encrypt } from '../../utils/crypt.js' +import { EncryptMethod } from '../../@types/fileObject.js' +import { Asset } from '@oceanprotocol/ddo-js' + +describe('Publish pricing scehmas and assert ddo stats - FRE & Dispenser', () => { + let database: Database + let oceanNode: OceanNode + let provider: JsonRpcProvider + let factoryContract: Contract + let nftContract: Contract + let datatokenContract: Contract + let publisherAccount: Signer + let nftAddress: string + let datatokenAddress: string + let exchangeId: string + let dispenserContract: ethers.Contract + const chainId = 8996 + let assetDID: string + let resolvedDDO: Asset + let genericAsset: any + let setMetaDataTxReceipt: any + let indexer: OceanIndexer + let artifactsAddresses: any + const mockSupportedNetworks: RPCS = getMockSupportedNetworks() + let previousConfiguration: OverrideEnvConfig[] + let genericAssetCloned: any + + before(async () => { + previousConfiguration = await setupEnvironment( + null, + buildEnvOverrideConfig( + [ + ENVIRONMENT_VARIABLES.RPCS, + ENVIRONMENT_VARIABLES.INDEXER_NETWORKS, + ENVIRONMENT_VARIABLES.PRIVATE_KEY, + ENVIRONMENT_VARIABLES.ADDRESS_FILE + ], + [ + JSON.stringify(mockSupportedNetworks), + JSON.stringify([8996]), + '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', + `${homedir}/.ocean/ocean-contracts/artifacts/address.json` + ] + ) + ) + + const config = await getConfiguration(true) + database = await new Database(config.dbConfig) + oceanNode = await OceanNode.getInstance() + indexer = new OceanIndexer(database, mockSupportedNetworks) + oceanNode.addIndexer(indexer) + artifactsAddresses = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) + if (!artifactsAddresses) { + artifactsAddresses = getOceanArtifactsAdresses().development + } + console.log(artifactsAddresses.FixedPrice) + + provider = new JsonRpcProvider('http://127.0.0.1:8545') + publisherAccount = (await provider.getSigner(0)) as Signer + genericAsset = JSON.parse(JSON.stringify(genericDDO)) + factoryContract = new ethers.Contract( + artifactsAddresses.ERC721Factory, + ERC721Factory.abi, + publisherAccount + ) + genericAssetCloned = structuredClone(genericAsset) + delete genericAssetCloned.event + delete genericAssetCloned.nft + }) + + it('instance Database', () => { + expect(database).to.be.instanceOf(Database) + }) + + it('should publish a dataset w fre', async () => { + const tx = await factoryContract.createNftWithErc20WithFixedRate( + { + name: '72120Bundle', + symbol: '72Bundle', + templateIndex: 1, + tokenURI: 'https://oceanprotocol.com/nft/', + transferable: true, + owner: await publisherAccount.getAddress() + }, + { + strings: ['ERC20B1', 'ERC20DT1Symbol'], + templateIndex: 1, + addresses: [ + await publisherAccount.getAddress(), + ZeroAddress, + ZeroAddress, + ZeroAddress + ], + uints: [1000, 0], + bytess: [] + }, + { + fixedPriceAddress: artifactsAddresses.FixedPrice, + addresses: [ + artifactsAddresses.Ocean, + await publisherAccount.getAddress(), + await publisherAccount.getAddress(), + ZeroAddress + ], + uints: [18, 18, parseUnits('1', 18).toString(), parseUnits('0', 18).toString(), 1] + } + ) + const txReceipt = await tx.wait() + assert(txReceipt, 'transaction failed') + const event = getEventFromTx(txReceipt, 'NFTCreated') + nftAddress = event.args[0] + assert(nftAddress, 'find nft created failed') + const datatokenEvent = getEventFromTx(txReceipt, 'TokenCreated') + datatokenAddress = datatokenEvent.args[0] + assert(datatokenAddress, 'find datatoken created failed') + datatokenContract = new ethers.Contract( + datatokenAddress, + ERC20Template.abi, + publisherAccount + ) + assert(datatokenContract) + const freEvent = getEventFromTx(txReceipt, 'NewFixedRate') + exchangeId = freEvent.args[0] + assert(exchangeId, 'exchangeId not found.') + }) + + it('should set metadata and save ', async () => { + nftContract = new ethers.Contract(nftAddress, ERC721Template.abi, publisherAccount) + genericAssetCloned.id = + 'did:op:' + + createHash('sha256') + .update(getAddress(nftAddress) + chainId.toString(10)) + .digest('hex') + genericAssetCloned.nftAddress = nftAddress + assetDID = genericAssetCloned.id + // create proper service.files string + genericAssetCloned.services[0].datatokenAddress = datatokenAddress + genericAssetCloned.nftAddress = nftAddress + // let's call node to encrypt + + const data = Uint8Array.from( + Buffer.from(JSON.stringify(genericAssetCloned.services[0].files)) + ) + const encryptedData = await encrypt(data, EncryptMethod.ECIES) + const encryptedDataString = encryptedData.toString('hex') + genericAssetCloned.services[0].files = encryptedDataString + const stringDDO = JSON.stringify(genericAssetCloned) + const bytes = Buffer.from(stringDDO) + const metadata = hexlify(bytes) + const hash = createHash('sha256').update(metadata).digest('hex') + + const setMetaDataTx = await nftContract.setMetaData( + 0, + 'http://v4.provider.oceanprotocol.com', + '0x123', + '0x01', + metadata, + '0x' + hash, + [] + ) + setMetaDataTxReceipt = await setMetaDataTx.wait() + assert(setMetaDataTxReceipt, 'set metada failed') + }) + + it('should store the ddo in the database and return it ', async function () { + this.timeout(DEFAULT_TEST_TIMEOUT * 3) + const { ddo, wasTimeout } = await waitToIndex( + assetDID, + EVENTS.METADATA_CREATED, + DEFAULT_TEST_TIMEOUT * 2 + ) + if (ddo) { + resolvedDDO = ddo + console.log(`resolved ddo: ${JSON.stringify(resolvedDDO)}`) + expect(resolvedDDO.id).to.equal(genericAssetCloned.id) + } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) + }) + + it('should get stats for fre', async function () { + assert(resolvedDDO.indexedMetadata, 'No stats available') + assert(resolvedDDO.indexedMetadata.stats.length === 1) + assert( + resolvedDDO.indexedMetadata.stats[0].datatokenAddress === datatokenAddress, + 'DT is missing.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].name === (await datatokenContract.name()), + 'Name is missing.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].orders === 0, + 'Number of orders are missing.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].serviceId === '0', + 'Service ID is missing.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].prices.length === 1, + 'Incorrect length of prices' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].prices[0].type === 'fixedrate', + 'Type from prices is not present.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].prices[0].token === artifactsAddresses.Ocean, + 'Datatoken from prices is not present.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].prices[0].price === '1.0', + 'Price is not present.' + ) + assert( + resolvedDDO.indexedMetadata.stats[0].prices[0].exchangeId === exchangeId, + 'Exchange ID is not present.' + ) + }) + + it('should attach a dispenser', async () => { + const dtTx = await nftContract.createERC20( + 1, + ['newERC20', 'newERC20s'], + [ + await publisherAccount.getAddress(), + await publisherAccount.getAddress(), + await publisherAccount.getAddress(), + datatokenAddress + ], + [parseUnits('10000', 18), parseUnits('1', 18)], + [] + ) + assert(dtTx, 'Cannot create datatoken') + const dtTxReceipt = await dtTx.wait() + const dtEvent = getEventFromTx(dtTxReceipt, 'TokenCreated') + const newdatatokenAddress = dtEvent.args[0] + const newDtContract = new ethers.Contract( + newdatatokenAddress, + ERC20Template.abi, + publisherAccount + ) + const tx = await newDtContract.createDispenser( + artifactsAddresses.Dispenser, + parseUnits('1', 18), + parseUnits('1', 18), + true, + await publisherAccount.getAddress() + ) + assert(tx, 'Cannot create dispenser') + const txReceipt = await tx.wait() + const dispenserEvent = getEventFromTx(txReceipt, 'NewDispenser') + const dispenserAddress = dispenserEvent.topics[0] + assert(dispenserAddress, 'Dispenser contract not retrieved') + + dispenserContract = new ethers.Contract( + dispenserAddress, + Dispenser.abi, + publisherAccount + ) + assert(dispenserContract) + genericAssetCloned.services.push({ + id: '1', + type: 'access', + description: 'Download service', + datatokenAddress: newdatatokenAddress, + files: [ + { + url: 'https://raw.githubusercontent.com/oceanprotocol/test-algorithm/master/javascript/algo.js', + contentType: 'text/js', + encoding: 'UTF-8' + } + ], + serviceEndpoint: 'http://172.15.0.4:8030', + timeout: 0 + }) + assert(genericAssetCloned.services.length === 2, 'the 2 services are not present') + const data = Uint8Array.from( + Buffer.from(JSON.stringify(genericAssetCloned.services[1].files)) + ) + const encryptedData = await encrypt(data, EncryptMethod.ECIES) + const encryptedDataString = encryptedData.toString('hex') + genericAssetCloned.services[1].files = encryptedDataString + const stringDDO = JSON.stringify(genericAssetCloned) + const bytes = Buffer.from(stringDDO) + const metadata = hexlify(bytes) + const hash = createHash('sha256').update(metadata).digest('hex') + + const setMetaDataTx = await nftContract.setMetaData( + 0, + 'http://v4.provider.oceanprotocol.com', + '0x123', + '0x01', + metadata, + '0x' + hash, + [] + ) + setMetaDataTxReceipt = await setMetaDataTx.wait() + assert(setMetaDataTxReceipt, 'set metada failed') + }) + it('should store the updated ddo in the database and return it ', async function () { + this.timeout(DEFAULT_TEST_TIMEOUT * 3) + const { ddo, wasTimeout } = await waitToIndex( + genericAssetCloned.id, + EVENTS.METADATA_UPDATED, + DEFAULT_TEST_TIMEOUT * 2, + true + ) + console.log(`updated ddo: ${JSON.stringify(ddo.indexedMetadata.stats)}`) + if (ddo) { + assert( + ddo.indexedMetadata.stats.length === 2, + 'the 2 pricing schemas were not captured in the stats' + ) + assert( + ddo.indexedMetadata.stats[1].prices[0].type === 'dispenser', + 'type is not dispenser' + ) + assert( + ddo.indexedMetadata.stats[1].datatokenAddress === + genericAssetCloned.services[1].datatokenAddress, + 'mismatch datatoken address' + ) + assert(ddo.indexedMetadata.stats[1].prices[0].price === '0', 'price is not 0') + assert( + ddo.indexedMetadata.stats[1].prices[0].token === + genericAssetCloned.services[1].datatokenAddress, + 'mismatch datatoken address' + ) + } else expect(expectedTimeoutFailure(this.test.title)).to.be.equal(wasTimeout) + }) + after(async () => { + await tearDownEnvironment(previousConfiguration) + indexer.stopAllThreads() + }) +}) diff --git a/src/test/integration/testUtils.ts b/src/test/integration/testUtils.ts index 066e04cf9..b1d7b1053 100644 --- a/src/test/integration/testUtils.ts +++ b/src/test/integration/testUtils.ts @@ -5,20 +5,18 @@ import { INDEXER_LOGGER } from '../../utils/logging/common.js' import { JsonRpcSigner, JsonRpcProvider, getBytes } from 'ethers' import { DEFAULT_TEST_TIMEOUT } from '../utils/utils.js' import { getDatabase } from '../../utils/database.js' -import { DDO } from '../../@types/DDO/DDO.js' -import { sleep } from '../../utils/util.js' +import { Asset } from '@oceanprotocol/ddo-js' // listen for indexer events export function addIndexerEventListener(eventName: string, ddoId: string, callback: any) { - // add listener - INDEXER_DDO_EVENT_EMITTER.addListener(eventName, (did: string) => { - INDEXER_LOGGER.info(`Test suite - Listened event: "${eventName}" for DDO: ${did}`) - if (ddoId === did && typeof callback === 'function') { - // remove it - INDEXER_DDO_EVENT_EMITTER.removeListener(eventName, () => {}) + const listener = (did: string) => { + if (ddoId === did) { callback(did) } - }) + } + + INDEXER_DDO_EVENT_EMITTER.addListener(eventName, listener) + return listener } export const delay = (interval: number) => { @@ -47,78 +45,42 @@ async function getIndexedDDOFromDB(did: string): Promise { } export type WaitIndexResult = { - ddo: DDO | null + ddo: Asset | null wasTimeout: boolean } -// WIP + export const waitToIndex = async ( did: string, eventName: string, testTimeout: number = DEFAULT_TEST_TIMEOUT, forceWaitForEvent?: boolean ): Promise => { - const result: WaitIndexResult = { ddo: null, wasTimeout: false } - let listening = false - let wait = true + if (!forceWaitForEvent) { + const ddo = await getIndexedDDOFromDB(did) + if (ddo) return { ddo, wasTimeout: false } + } - const timeout = setTimeout(async () => { - const res = await getIndexedDDOFromDB(did) - result.ddo = res - result.wasTimeout = true - wait = false - return result - }, testTimeout - 5000) // little less (5 secs) than the initial timeout + return new Promise((resolve) => { + const listener = addIndexerEventListener(eventName, did, async () => { + clearTimeout(timeoutId) + const ddo = await getIndexedDDOFromDB(did) + INDEXER_DDO_EVENT_EMITTER.removeListener(eventName, listener) + resolve({ ddo, wasTimeout: false }) + }) - while (wait) { - // we might want to wait for the event, on certain ocasions (ex: when we update something that already exists) - // otherwise we might get the still "unmodified" version - // ideally, the tests would call the waitToIndex() method before the action that triggers it - if (!forceWaitForEvent) { - // first try - const res = await getIndexedDDOFromDB(did) - if (res !== null) { - clearTimeout(timeout) - result.ddo = res - result.wasTimeout = false - wait = false - return result + const timeoutId = setTimeout(async () => { + try { + const ddo = await getIndexedDDOFromDB(did) + INDEXER_DDO_EVENT_EMITTER.removeListener(eventName, listener) + resolve({ ddo, wasTimeout: true }) + } catch (error) { + console.error('Error fetching DDO:', error) + INDEXER_DDO_EVENT_EMITTER.removeListener(eventName, listener) + resolve({ ddo: null, wasTimeout: true }) } - } else if (!listening) { - // 2nd approach, whatever happens first (timeout or event emition) - listening = true - addIndexerEventListener(eventName, did, async (id: string) => { - clearTimeout(timeout) - const res = await getIndexedDDOFromDB(id) - result.ddo = res - result.wasTimeout = false - wait = false - return result - }) - } - // hold your breath for a while - await sleep(1000) - } - return result + }, testTimeout - 5000) + }) } -/** -export const waitToIndex = async (did: string, database: Database): Promise => { - const timeout = setTimeout(() => {}, 1500) - let tries = 0 - do { - try { - const ddo = await database.ddo.retrieve(did) - if (ddo) { - return ddo - } - } catch (e) { - INDEXER_LOGGER.logMessage(`Error could not retrieve the DDO ${did}: ${e}`) - } - await sleep(1500) - - tries++ - } while (tries < 100) - return null -} */ export const deleteAsset = async (did: string, database: Database): Promise => { try { diff --git a/src/test/integration/transactionValidation.test.ts b/src/test/integration/transactionValidation.test.ts index 104c677f8..e1ddab57a 100644 --- a/src/test/integration/transactionValidation.test.ts +++ b/src/test/integration/transactionValidation.test.ts @@ -68,7 +68,7 @@ describe('validateOrderTransaction Function with Orders', () => { config = await getConfiguration(true) // Force reload the configuration const dbconn = await new Database(config.dbConfig) - oceanNode = await OceanNode.getInstance(dbconn) + oceanNode = await OceanNode.getInstance(config, dbconn) indexer = new OceanIndexer(dbconn, config.indexingNetworks) oceanNode.addIndexer(indexer) diff --git a/src/test/integration/typesense.test.ts b/src/test/integration/typesense.test.ts index 1bf59a24e..8742284ca 100644 --- a/src/test/integration/typesense.test.ts +++ b/src/test/integration/typesense.test.ts @@ -6,6 +6,7 @@ import { import { ddoSchema } from '../data/ddoSchema.js' import { ddo } from '../data/ddo.js' import { expect } from 'chai' +import { TypesenseSearchParams } from '../../@types/index.js' describe('Typesense', () => { let typesense: Typesense @@ -161,14 +162,17 @@ describe('Typesense documents', () => { expect(result.metadata).to.not.be.an('undefined') expect(result.metadata.name).to.be.equal(ddo.metadata.name) }) - it('search document in ddo collection', async () => { - const result = await typesense.collections(ddoSchema.name).documents().search({ - q: 'DEX', - query_by: 'metadata.author', - filter_by: 'chainId:<138', + const queryParams: TypesenseSearchParams = { + q: 'new metadata name', + query_by: 'metadata.name', + filter_by: 'chainId:=137', sort_by: 'version:desc' - }) + } + const result = await typesense + .collections(ddoSchema.name) + .documents() + .search(queryParams) expect(result.found).to.equal(1) expect(result.hits[0]).to.not.be.an('undefined') diff --git a/src/test/unit/blockchain.test.ts b/src/test/unit/blockchain.test.ts index 978c1fe1b..3dd0f7833 100644 --- a/src/test/unit/blockchain.test.ts +++ b/src/test/unit/blockchain.test.ts @@ -76,7 +76,7 @@ describe('Should validate blockchain network connections', () => { for (const chain of KNOWN_CONFIDENTIAL_EVMS) { expect(isConfidentialEVM(chain)).to.be.equal(true) } - expect(isConfidentialEVM(DEVELOPMENT_CHAIN_ID)).to.be.equal(false) + expect(isConfidentialEVM(BigInt(DEVELOPMENT_CHAIN_ID))).to.be.equal(false) }) after(async () => { diff --git a/src/test/unit/commands.test.ts b/src/test/unit/commands.test.ts index e00874075..66c659194 100644 --- a/src/test/unit/commands.test.ts +++ b/src/test/unit/commands.test.ts @@ -1,18 +1,17 @@ import { expect } from 'chai' import { PROTOCOL_COMMANDS, SUPPORTED_PROTOCOL_COMMANDS } from '../../utils/index.js' import { CoreHandlersRegistry } from '../../components/core/handler/coreHandlersRegistry.js' -import { Handler } from '../../components/core/handler/handler.js' +import { BaseHandler } from '../../components/core/handler/handler.js' import { OceanNode } from '../../OceanNode.js' import { ComputeGetEnvironmentsCommand, ComputeGetResultCommand, ComputeGetStatusCommand, ComputeInitializeCommand, - ComputeStartCommand, + PaidComputeStartCommand, ComputeStopCommand, DecryptDDOCommand, DownloadCommand, - EchoCommand, EncryptCommand, EncryptFileCommand, FileInfoCommand, @@ -38,10 +37,9 @@ import { import { QueryHandler } from '../../components/core/handler/queryHandler.js' import { StatusHandler } from '../../components/core/handler/statusHandler.js' import { FeesHandler } from '../../components/core/handler/feesHandler.js' -import { EchoHandler } from '../../components/core/handler/echoHandler.js' import { FileInfoHandler } from '../../components/core/handler/fileInfoHandler.js' import { ComputeGetEnvironmentsHandler } from '../../components/core/compute/environments.js' -import { ComputeStartHandler } from '../../components/core/compute/startCompute.js' +import { PaidComputeStartHandler } from '../../components/core/compute/startCompute.js' import { ComputeStopHandler } from '../../components/core/compute/stopCompute.js' import { ComputeGetStatusHandler } from '../../components/core/compute/getStatus.js' import { ComputeGetResultHandler } from '../../components/core/compute/getResults.js' @@ -57,7 +55,7 @@ describe('Commands and handlers', () => { const node: OceanNode = OceanNode.getInstance() for (const command of SUPPORTED_PROTOCOL_COMMANDS) { expect(CoreHandlersRegistry.getInstance(node).getHandler(command)).to.be.instanceof( - Handler + BaseHandler ) } }) @@ -202,37 +200,28 @@ describe('Commands and handlers', () => { feesCommand.consumerAddress = 'INVALID_1234567' expect(feesHandler.validate(feesCommand).valid).to.be.equal(false) // ----------------------------------------- - // EchoHandler - const echoHandler: EchoHandler = CoreHandlersRegistry.getInstance(node).getHandler( - PROTOCOL_COMMANDS.ECHO - ) - const echoCommand: EchoCommand = { - command: PROTOCOL_COMMANDS.ECHO - } - expect(echoHandler.validate(echoCommand).valid).to.be.equal(true) - // ----------------------------------------- // Stop Node Handler for Admin const stopNodeHandler: StopNodeHandler = CoreHandlersRegistry.getInstance( node - ).getHandler(PROTOCOL_COMMANDS.ECHO) + ).getHandler(PROTOCOL_COMMANDS.STOP_NODE) as StopNodeHandler expect(stopNodeHandler).to.be.not.equal(null) // ----------------------------------------- // Reindex Tx Handler const reindexTxHandler: ReindexTxHandler = CoreHandlersRegistry.getInstance( node - ).getHandler(PROTOCOL_COMMANDS.REINDEX_TX) + ).getHandler(PROTOCOL_COMMANDS.REINDEX_TX) as ReindexTxHandler expect(reindexTxHandler).to.be.not.equal(null) // ----------------------------------------- // Reindex Chain Handler const reindexChainHandler: ReindexChainHandler = CoreHandlersRegistry.getInstance( node - ).getHandler(PROTOCOL_COMMANDS.REINDEX_CHAIN) + ).getHandler(PROTOCOL_COMMANDS.REINDEX_CHAIN) as ReindexChainHandler expect(reindexChainHandler).to.be.not.equal(null) // ----------------------------------------- // CollectFeesHandler const collectFeesHandler: CollectFeesHandler = CoreHandlersRegistry.getInstance( node - ).getHandler(PROTOCOL_COMMANDS.COLLECT_FEES) + ).getHandler(PROTOCOL_COMMANDS.COLLECT_FEES) as CollectFeesHandler expect(collectFeesHandler).to.be.not.equal(null) // ----------------------------------------- // FileInfoHandler @@ -279,17 +268,18 @@ describe('Commands and handlers', () => { expect(getEnvHandler.validate(getEnvCommand).valid).to.be.equal(true) // ----------------------------------------- // ComputeStartHandler - const startEnvHandler: ComputeStartHandler = CoreHandlersRegistry.getInstance( + const startEnvHandler: PaidComputeStartHandler = CoreHandlersRegistry.getInstance( node ).getHandler(PROTOCOL_COMMANDS.COMPUTE_START) - const startEnvCommand: ComputeStartCommand = { + const startEnvCommand: PaidComputeStartCommand = { command: PROTOCOL_COMMANDS.COMPUTE_START, consumerAddress: '', signature: '', nonce: '', environment: '', algorithm: undefined, - dataset: undefined + datasets: undefined, + payment: undefined } expect(startEnvHandler.validate(startEnvCommand).valid).to.be.equal(false) // ----------------------------------------- @@ -341,7 +331,9 @@ describe('Commands and handlers', () => { consumerAddress: 'abcdef', datasets: null, algorithm: undefined, - compute: undefined + payment: undefined, + environment: undefined, + maxJobDuration: 60 } expect(initComputeHandler.validate(computeInitCommand).valid).to.be.equal(false) }) diff --git a/src/test/unit/compute.test.ts b/src/test/unit/compute.test.ts new file mode 100644 index 000000000..545a0db68 --- /dev/null +++ b/src/test/unit/compute.test.ts @@ -0,0 +1,240 @@ +import { C2DDatabase } from '../../components/database/C2DDatabase.js' +// import { existsEnvironmentVariable, getConfiguration } from '../../utils/config.js' +import { getConfiguration } from '../../utils/config.js' +import { typesenseSchemas } from '../../components/database/TypesenseSchemas.js' +import { + C2DStatusNumber, + C2DStatusText, + ComputeAlgorithm, + ComputeAsset, + // ComputeEnvironment, + ComputeJob, + DBComputeJob, + RunningPlatform +} from '../../@types/C2D/C2D.js' +// import { computeAsset } from '../data/assets' +import { assert, expect } from 'chai' +import { + convertArrayToString, + convertStringToArray, + STRING_SEPARATOR +} from '../../components/database/sqliteCompute.js' +import { + buildEnvOverrideConfig, + OverrideEnvConfig, + setupEnvironment, + tearDownEnvironment +} from '../utils/utils.js' +import { OceanNodeConfig } from '../../@types/OceanNode.js' +import { ENVIRONMENT_VARIABLES } from '../../utils/constants.js' +import { completeDBComputeJob, dockerImageManifest } from '../data/assets.js' +import { omitDBComputeFieldsFromComputeJob } from '../../components/c2d/index.js' +import os from 'os' +import { checkManifestPlatform } from '../../components/c2d/compute_engine_docker.js' + +describe('Compute Jobs Database', () => { + let envOverrides: OverrideEnvConfig[] + let config: OceanNodeConfig + let db: C2DDatabase = null + let jobId: string = null + const jobDuration = 60 + const algorithm: ComputeAlgorithm = { + documentId: 'did:op:12345', + serviceId: '0x1828228' + } + const dataset: ComputeAsset = { + documentId: 'did:op:12345', + serviceId: '0x12345abc' + } + before(async () => { + envOverrides = buildEnvOverrideConfig( + [ENVIRONMENT_VARIABLES.DOCKER_COMPUTE_ENVIRONMENTS], + [ + '[{"socketPath":"/var/run/docker.sock","resources":[{"id":"disk","total":1000000000}],"storageExpiry":604800,"maxJobDuration":3600,"fees":{"1":[{"feeToken":"0x123","prices":[{"id":"cpu","price":1}]}]},"free":{"maxJobDuration":60,"maxJobs":3,"resources":[{"id":"cpu","max":1},{"id":"ram","max":1000000000},{"id":"disk","max":1000000000}]}}]' + ] + ) + envOverrides = await setupEnvironment(null, envOverrides) + config = await getConfiguration(true) + db = await new C2DDatabase(config.dbConfig, typesenseSchemas.c2dSchemas) + }) + + it('should create a new C2D Job', async () => { + const job: DBComputeJob = { + owner: '0xe2DD09d719Da89e5a3D0F2549c7E24566e947260', + jobId: null, + dateCreated: null, + dateFinished: null, + status: C2DStatusNumber.JobStarted, + statusText: C2DStatusText.JobStarted, + results: null, + inputDID: ['did:op:1', 'did:op:2', 'did:op:3'], + maxJobDuration: jobDuration, + + // internal structure + clusterHash: 'clusterHash', + configlogURL: 'http://localhost:8001', + publishlogURL: 'http://localhost:8001', + algologURL: 'http://localhost:8001', + outputsURL: 'http://localhost:8001', + stopRequested: false, + algorithm, + assets: [dataset], + isRunning: false, + isStarted: false, + containerImage: 'some container image', + resources: [], + isFree: false, + algoStartTimestamp: '0', + algoStopTimestamp: '0' + } + + jobId = await db.newJob(job) + assert(jobId, 'Missing jobId identifier') + }) + + it('should get job by jobId', async () => { + const jobs = await db.getJob(jobId) + assert(jobs.length === 1, 'Could not get any job') + assert(jobs[0], 'Job should not be null') + assert(jobs[0].jobId === jobId, 'JobId mismatches') + assert(jobs[0].maxJobDuration === jobDuration, 'Job duration mismatches') + }) + it('should update job', async () => { + const jobs = await db.getJob(jobId) + const job = jobs[0] + // will update some fields + job.status = C2DStatusNumber.PullImage + job.isRunning = true + job.statusText = C2DStatusText.PullImage + + // update on DB + const updates = await db.updateJob(job) + expect(updates).to.be.equal(1) // updated 1 row + const updatedJobs = await db.getJob(jobId) + const updatedJob = updatedJobs[0] + assert(updatedJob, 'Job should not be null') + expect(updatedJob.status).to.be.equal(C2DStatusNumber.PullImage) + expect(updatedJob.isRunning).to.be.equal(true) + expect(updatedJob.statusText).to.be.equal(C2DStatusText.PullImage) + }) + + it('should get running jobs', async () => { + const job: DBComputeJob = { + owner: '0xe2DD09d719Da89e5a3D0F2549c7E24566e947261', + jobId: null, + dateCreated: null, + dateFinished: null, + status: C2DStatusNumber.JobStarted, + statusText: C2DStatusText.JobStarted, + results: null, + inputDID: ['did:op:1', 'did:op:2'], + maxJobDuration: 1, + + // internal structure + clusterHash: 'clusterHash', + configlogURL: 'http://localhost:8000', + publishlogURL: 'http://localhost:8000', + algologURL: 'http://localhost:8000', + outputsURL: 'http://localhost:8000', + stopRequested: false, + algorithm, + assets: [dataset], + isRunning: false, + isStarted: false, + containerImage: 'another container image', + resources: [], + isFree: false, + algoStartTimestamp: '0', + algoStopTimestamp: '0' + } + + const jobId = await db.newJob(job) + assert(jobId, 'Missing jobId identifier') + const existing = await db.getRunningJobs() + expect(existing.length === 2, 'No running jobs were found!') + + // Create a filter + const withEnv = await db.getRunningJobs(null, 'some environment') + expect(withEnv.length === 0, 'No running jobs were found for this environment') + // delete it + const deleted = await db.deleteJob(jobId) + expect(deleted === true, `Job ${jobId} was not deleted!`) + }) + + it('should delete the job by jobId', async () => { + const deleted = await db.deleteJob(jobId) + expect(deleted === true, `Job ${jobId} was not deleted!`) + }) + + it('should convert array of strings to a string', () => { + const inputDID = ['did:op:1', 'did:op:2', 'did:op:3'] + const expectedStr = + 'did:op:1' + STRING_SEPARATOR + 'did:op:2' + STRING_SEPARATOR + 'did:op:3' + expect(convertArrayToString(inputDID)).to.equal(expectedStr) + }) + + it('should convert concatenated string to a string array', () => { + const expectedArray = ['did:op:1', 'did:op:2', 'did:op:3'] + const str = 'did:op:1' + STRING_SEPARATOR + 'did:op:2' + STRING_SEPARATOR + 'did:op:3' + expect(convertStringToArray(str)).to.deep.equal(expectedArray) + }) + + it('should convert DBComputeJob to ComputeJob and omit internal DB data', () => { + const source: any = completeDBComputeJob + const output: ComputeJob = omitDBComputeFieldsFromComputeJob(source as DBComputeJob) + + expect(Object.prototype.hasOwnProperty.call(output, 'clusterHash')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'configlogURL')).to.be.equal( + false + ) + expect(Object.prototype.hasOwnProperty.call(output, 'publishlogURL')).to.be.equal( + false + ) + expect(Object.prototype.hasOwnProperty.call(output, 'algologURL')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'outputsURL')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'stopRequested')).to.be.equal( + false + ) + expect(Object.prototype.hasOwnProperty.call(output, 'algorithm')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'assets')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'isRunning')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'isStarted')).to.be.equal(false) + expect(Object.prototype.hasOwnProperty.call(output, 'containerImage')).to.be.equal( + false + ) + }) + + it('should check manifest platform against local platform env', () => { + const arch = os.machine() // ex: arm + const platform = os.platform() // ex: linux + const env: RunningPlatform = { + architecture: arch, + os: platform + } + const result: boolean = checkManifestPlatform(dockerImageManifest.platform, env) + // if all defined and a match its OK + if ( + dockerImageManifest.platform.os === env.os && + dockerImageManifest.platform.architecture === env.architecture + ) { + expect(result).to.be.equal(true) + } else { + // oterwise its NOT + expect(result).to.be.equal(false) + } + + // all good anyway, nothing on the manifest + expect(checkManifestPlatform(null, env)).to.be.equal(true) + }) + + it('testing checkAndFillMissingResources', async function () { + // TO DO + }) + it('testing checkIfResourcesAreAvailable', async function () { + // TO DO + }) + + after(async () => { + await tearDownEnvironment(envOverrides) + }) +}) diff --git a/src/test/unit/credentials.test.ts b/src/test/unit/credentials.test.ts index bb5b37a1b..2a4696caf 100644 --- a/src/test/unit/credentials.test.ts +++ b/src/test/unit/credentials.test.ts @@ -1,8 +1,33 @@ import { expect } from 'chai' -import { checkCredentials } from '../../utils/credentials.js' -import { Credentials } from '../../@types/DDO/Credentials.js' +import { + areKnownCredentialTypes, + checkCredentials, + hasAddressMatchAllRule +} from '../../utils/credentials.js' +import { + buildEnvOverrideConfig, + OverrideEnvConfig, + setupEnvironment, + tearDownEnvironment +} from '../utils/utils.js' +import { ENVIRONMENT_VARIABLES } from '../../utils/constants.js' +import { homedir } from 'os' +import { Credentials, CREDENTIALS_TYPES } from '@oceanprotocol/ddo-js' + +let envOverrides: OverrideEnvConfig[] describe('credentials', () => { + before(async () => { + envOverrides = buildEnvOverrideConfig( + [ENVIRONMENT_VARIABLES.RPCS, ENVIRONMENT_VARIABLES.ADDRESS_FILE], + [ + '{ "8996":{ "rpc":"http://172.0.0.1:8545", "chainId": 8996, "network": "development", "chunkSize": 100 }}', + `${homedir}/.ocean/ocean-contracts/artifacts/address.json` + ] + ) + envOverrides = await setupEnvironment(null, envOverrides) + }) + it('should allow access with undefined or empty credentials', () => { const credentialsUndefined: Credentials = undefined const consumerAddress = '0x123' @@ -23,9 +48,10 @@ describe('credentials', () => { }) it('should allow access with empty values in deny lists', () => { const credentials: Credentials = { + allow: [], deny: [ { - type: 'address', + type: CREDENTIALS_TYPES.ADDRESS, values: [] } ] @@ -34,11 +60,29 @@ describe('credentials', () => { const accessGranted = checkCredentials(credentials, consumerAddress) expect(accessGranted).to.equal(true) }) + + it('should allow access with "accessList" credentials type', () => { + const consumerAddress = '0x123' + const credentials: Credentials = { + allow: [], + deny: [ + { + type: CREDENTIALS_TYPES.ACCESS_LIST, + values: [consumerAddress] + } + ] + } + + const accessGranted = checkCredentials(credentials, consumerAddress) + expect(accessGranted).to.equal(true) + }) + it('should deny access with empty values in allow lists', () => { const credentials: Credentials = { + deny: [], allow: [ { - type: 'address', + type: CREDENTIALS_TYPES.ADDRESS, values: [] } ] @@ -48,10 +92,11 @@ describe('credentials', () => { expect(accessGranted).to.equal(false) }) it('should allow access with address in allow list', () => { - const credentials: any = { + const credentials: Credentials = { + deny: [], allow: [ { - type: 'address', + type: CREDENTIALS_TYPES.ADDRESS, values: ['0x123'] } ] @@ -61,10 +106,11 @@ describe('credentials', () => { expect(accessGranted).to.equal(true) }) it('should allow access with address not in deny list', () => { - const credentials: any = { + const credentials: Credentials = { + allow: [], deny: [ { - type: 'address', + type: CREDENTIALS_TYPES.ADDRESS, values: ['0x456'] } ] @@ -111,4 +157,83 @@ describe('credentials', () => { const accessGranted = checkCredentials(credentials, consumerAddress) expect(accessGranted).to.equal(false) }) + + it('should check correctly known credentials types', () => { + const credentials: any = { + allow: [], + deny: [ + { + type: 'unknow_type', + values: ['0x456'] + } + ] + } + const isKnownType1 = areKnownCredentialTypes(credentials) + expect(isKnownType1).to.equal(false) + + const credentialsOk: Credentials = { + deny: [ + { + type: CREDENTIALS_TYPES.ADDRESS, + values: ['0x456'] + } + ], + allow: [ + { + type: CREDENTIALS_TYPES.ACCESS_LIST, + values: ['0x456'] + }, + { + type: CREDENTIALS_TYPES.ADDRESS, + values: ['0x678'] + } + ] + } + const isKnownType2 = areKnownCredentialTypes(credentialsOk) + expect(isKnownType2).to.equal(true) + + const credentialsNOk: any = { + deny: [ + { + type: CREDENTIALS_TYPES.ADDRESS, + values: ['0x456'] + } + ], + allow: [ + { + type: 'not_valid_type', + values: ['0x456'] + } + ] + } + const isKnownType3 = areKnownCredentialTypes(credentialsNOk) + expect(isKnownType3).to.equal(false) + }) + + it('should check match all (*) rules', () => { + const creds = { + credentials: { + allow: [ + { + type: CREDENTIALS_TYPES.ADDRESS, + values: ['*'] + } + ], + deny: [ + { + type: CREDENTIALS_TYPES.ADDRESS, + values: ['0x2222', '0x333'] + } + ] + } + } + expect(hasAddressMatchAllRule(creds.credentials.allow)).to.be.equal(true) + const creds2 = structuredClone(creds) + creds2.credentials.allow[0].values = ['0x2222', '0x333'] + expect(hasAddressMatchAllRule(creds2.credentials.allow)).to.be.equal(false) + }) + + after(async () => { + await tearDownEnvironment(envOverrides) + }) }) diff --git a/src/test/unit/download.test.ts b/src/test/unit/download.test.ts index 49cfd178f..f91847e9a 100644 --- a/src/test/unit/download.test.ts +++ b/src/test/unit/download.test.ts @@ -17,9 +17,8 @@ import { import { decrypt } from '../../utils/crypt.js' import { validateFilesStructure } from '../../components/core/handler/downloadHandler.js' import { AssetUtils, isConfidentialChainDDO } from '../../utils/asset.js' -import { DDO } from '../../@types/DDO/DDO.js' -import { Service } from '../../@types/DDO/Service.js' import { DEVELOPMENT_CHAIN_ID, KNOWN_CONFIDENTIAL_EVMS } from '../../utils/address.js' +import { DDO } from '@oceanprotocol/ddo-js' let envOverrides: OverrideEnvConfig[] let config: OceanNodeConfig @@ -35,7 +34,7 @@ describe('Should validate files structure for download', () => { envOverrides = await setupEnvironment(null, envOverrides) config = await getConfiguration(true) db = await new Database(config.dbConfig) - oceanNode = OceanNode.getInstance(db) + oceanNode = OceanNode.getInstance(config, db) }) const ddoObj: DDO = { @@ -65,8 +64,7 @@ describe('Should validate files structure for download', () => { serviceEndpoint: 'http://127.0.0.1:8001', timeout: 86400 } - ], - event: {} + ] } const assetURL = { @@ -110,7 +108,7 @@ describe('Should validate files structure for download', () => { const decriptedFileObject: any = decryptedFileArray.files expect(decriptedFileObject[0]).to.be.deep.equal(assetURL.files[0]) // validate the structure of the files object - const service: Service = AssetUtils.getServiceByIndex(ddoObj, 0) + const service = AssetUtils.getServiceByIndex(ddoObj, 0) expect(validateFilesStructure(ddoObj, service, decryptedFileArray)).to.be.equal(true) }) @@ -118,12 +116,12 @@ describe('Should validate files structure for download', () => { const otherNFTAddress = '0x3b7aE751aBA144e9A0ffc5A5C1D00bB4055A7bDc' const otherDatatokenAddress = '0x32b24528675172841d89BBA7504A930B049aBd30' const decryptedFileArray = await getDecryptedData() - const otherDDOSameFiles: DDO = ddoObj + const otherDDOSameFiles = structuredClone(ddoObj) // just change nft address otherDDOSameFiles.nftAddress = otherNFTAddress otherDDOSameFiles.services[0].datatokenAddress = otherDatatokenAddress - const service: Service = AssetUtils.getServiceByIndex(otherDDOSameFiles, 0) + const service = AssetUtils.getServiceByIndex(otherDDOSameFiles, 0) // its the same service files structure (same encrypted data), // but its not the same ddo so there is no matching expect( @@ -154,7 +152,7 @@ describe('Should validate files structure for download', () => { }) it('should check if DDO service files is missing or empty (exected for confidential EVM, dt4)', () => { - const otherDDOConfidential: DDO = structuredClone(ddoObj) + const otherDDOConfidential = structuredClone(ddoObj) expect( isConfidentialChainDDO(KNOWN_CONFIDENTIAL_EVMS[0], otherDDOConfidential.services[0]) ).to.be.equal(false) @@ -168,7 +166,10 @@ describe('Should validate files structure for download', () => { // not confidential evm anymore expect( - isConfidentialChainDDO(DEVELOPMENT_CHAIN_ID, otherDDOConfidential.services[0]) + isConfidentialChainDDO( + BigInt(DEVELOPMENT_CHAIN_ID), + otherDDOConfidential.services[0] + ) ).to.be.equal(false) }) diff --git a/src/test/unit/indexer/validation.test.ts b/src/test/unit/indexer/validation.test.ts index 468068eeb..11a4b2b69 100644 --- a/src/test/unit/indexer/validation.test.ts +++ b/src/test/unit/indexer/validation.test.ts @@ -1,41 +1,44 @@ -import { - ddoEOPV5, - DDOExample, - ddov5, - ddov7, - ddoValidationSignature -} from '../../data/ddo.js' -import { - getValidationSignature, - validateObject -} from '../../../components/core/utils/validateDdoHandler.js' +import { DDOExample, ddov5, ddov7, ddoValidationSignature } from '../../data/ddo.js' +import { getValidationSignature } from '../../../components/core/utils/validateDdoHandler.js' import { ENVIRONMENT_VARIABLES } from '../../../utils/index.js' - import { expect } from 'chai' import { setupEnvironment, tearDownEnvironment, buildEnvOverrideConfig, - OverrideEnvConfig + OverrideEnvConfig, + getMockSupportedNetworks } from '../../utils/utils.js' +import { DDOManager, DDO } from '@oceanprotocol/ddo-js' +import { ValidateDDOHandler } from '../../../components/core/handler/ddoHandler.js' +import { OceanNode } from '../../../OceanNode.js' +import { PROTOCOL_COMMANDS } from '../../../utils/constants.js' +import { ethers } from 'ethers' +import { RPCS } from '../../../@types/blockchain.js' -describe('Schema validation tests', async () => { +describe('Schema validation tests', () => { let envOverrides: OverrideEnvConfig[] - envOverrides = buildEnvOverrideConfig( - [ - ENVIRONMENT_VARIABLES.PRIVATE_KEY, - ENVIRONMENT_VARIABLES.IPFS_GATEWAY, - ENVIRONMENT_VARIABLES.ARWEAVE_GATEWAY, - ENVIRONMENT_VARIABLES.RPCS - ], - [ - '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', - 'https://ipfs.io/', - 'https://arweave.net/', - '{ "1": "https://rpc.eth.gateway.fm", "137": "https://polygon.meowrpc.com" }' - ] - ) - envOverrides = await setupEnvironment(null, envOverrides) + const mockSupportedNetworks: RPCS = getMockSupportedNetworks() + + before(async () => { + envOverrides = buildEnvOverrideConfig( + [ + ENVIRONMENT_VARIABLES.VALIDATE_UNSIGNED_DDO, + ENVIRONMENT_VARIABLES.PRIVATE_KEY, + ENVIRONMENT_VARIABLES.IPFS_GATEWAY, + ENVIRONMENT_VARIABLES.ARWEAVE_GATEWAY, + ENVIRONMENT_VARIABLES.RPCS + ], + [ + 'false', + '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', + 'https://ipfs.io/', + 'https://arweave.net/', + JSON.stringify(mockSupportedNetworks) + ] + ) + envOverrides = await setupEnvironment(null, envOverrides) + }) after(() => { // Restore original local setup / env variables after test @@ -43,25 +46,32 @@ describe('Schema validation tests', async () => { }) it('should pass the validation on version 4.1.0', async () => { - const validationResult = await validateObject(DDOExample) + const ddoInstance = DDOManager.getDDOClass(DDOExample) + const validationResult = await ddoInstance.validate() expect(validationResult[0]).to.eql(true) expect(validationResult[1]).to.eql({}) }) + it('should not pass due to invalid metadata.created on version 4.1.0', async () => { const copy = JSON.parse(JSON.stringify(DDOExample)) copy['@context'] = ['https://w3id.org/did/v1'] delete copy.metadata.created - const validationResult = await validateObject(copy) + const ddoInstance = DDOManager.getDDOClass(copy) + const validationResult = await ddoInstance.validate() expect(validationResult[0]).to.eql(false) }) // TO DO after fixing regex for created & updated: it('should not pass due to invalid ISO timestamp on version 4.1.0', async () => { + it('4.5.0 should pass the validation without service', async () => { - const validationResult = await validateObject(ddov5) + const ddoInstance = DDOManager.getDDOClass(ddov5) + const validationResult = await ddoInstance.validate() expect(validationResult[0]).to.eql(true) expect(validationResult[1]).to.eql({}) }) + it('should pass the validation and return signature', async () => { - const validationResult = await validateObject(ddoValidationSignature) + const ddoInstance = DDOManager.getDDOClass(ddoValidationSignature) + const validationResult = await ddoInstance.validate() expect(validationResult[0]).to.eql(true) expect(validationResult[1]).to.eql({}) const signatureResult = await getValidationSignature( @@ -77,7 +87,8 @@ describe('Schema validation tests', async () => { }) it('should pass the validation on version 4.7.0', async () => { - const validationResult = await validateObject(ddov7) + const ddoInstance = DDOManager.getDDOClass(ddov7) + const validationResult = await ddoInstance.validate() console.log('Validation 4.7.0 result: ', validationResult) expect(validationResult[0]).to.eql(true) expect(validationResult[1]).to.eql({}) @@ -86,33 +97,74 @@ describe('Schema validation tests', async () => { it('should pass the validation on version 4.7.0 without credentials', async () => { const newDDO = structuredClone(ddov7) delete newDDO.services[0].credentials - const validationResult = await validateObject(newDDO) + const ddoInstance = DDOManager.getDDOClass(newDDO) + const validationResult = await ddoInstance.validate() expect(validationResult[0]).to.eql(true) expect(validationResult[1]).to.eql({}) }) - it('should pass the validation on version 5.0.0 ope', async () => { - const validationResult = await validateObject(ddoEOPV5) - console.log('Validation 5.0.0 ope result: ', validationResult) - expect(validationResult[0]).to.eql(true) - expect(validationResult[1]).to.eql({}) + it('should fail validation when signature is missing', async () => { + const node = OceanNode.getInstance() + const handler = new ValidateDDOHandler(node) + const ddoInstance = DDOManager.getDDOClass(DDOExample) + const task = { + ddo: ddoInstance.getDDOData() as DDO, + publisherAddress: '0x8F292046bb73595A978F4e7A131b4EBd03A15e8a', + nonce: '123456', + command: PROTOCOL_COMMANDS.VALIDATE_DDO + } + + const result = await handler.handle(task) + expect(result.status.httpStatus).to.equal(400) }) - it('should fail V5 DDO validation due to missing credentialSubject metadata', async () => { - const invalidCopy = JSON.parse(JSON.stringify(ddoEOPV5)) - delete invalidCopy.credentialSubject.metadata - const validationResult = await validateObject(invalidCopy) - expect(validationResult[0]).to.eql(false) - expect(validationResult[1]).to.have.property('metadata') - expect(validationResult[1].metadata).to.include('metadata is missing or invalid.') + it('should fail validation when signature is invalid', async () => { + const node = OceanNode.getInstance() + const handler = new ValidateDDOHandler(node) + const ddoInstance = DDOManager.getDDOClass(DDOExample) + const ddo: DDO = { + ...(ddoInstance.getDDOData() as DDO) + } + const task = { + ddo, + publisherAddress: '0x8F292046bb73595A978F4e7A131b4EBd03A15e8a', + nonce: '123456', + signature: '0xInvalidSignature', + command: PROTOCOL_COMMANDS.VALIDATE_DDO + } + + const result = await handler.handle(task) + + expect(result.status.httpStatus).to.equal(400) }) - it('should fail V5 DDO validation due to missing credentialSubject services', async () => { - const invalidCopy = JSON.parse(JSON.stringify(ddoEOPV5)) - delete invalidCopy.credentialSubject.services - const validationResult = await validateObject(invalidCopy) - expect(validationResult[0]).to.eql(false) - expect(validationResult[1]).to.have.property('services') - expect(validationResult[1].services).to.include('services are missing or invalid.') + it('should pass validation with valid signature', async () => { + const node = OceanNode.getInstance() + const handler = new ValidateDDOHandler(node) + const ddoInstance = DDOManager.getDDOClass(ddoValidationSignature) + const ddo = ddoInstance.getDDOData() as DDO + + const privateKey = process.env.PRIVATE_KEY + const wallet = new ethers.Wallet(privateKey) + const nonce = Date.now().toString() + const message = ddo.id + nonce + const messageHash = ethers.solidityPackedKeccak256( + ['bytes'], + [ethers.hexlify(ethers.toUtf8Bytes(message))] + ) + const messageHashBytes = ethers.getBytes(messageHash) + const signature = await wallet.signMessage(messageHashBytes) + + const task = { + ddo, + publisherAddress: await wallet.getAddress(), + nonce, + signature, + command: PROTOCOL_COMMANDS.VALIDATE_DDO + } + + const result = await handler.handle(task) + + expect(result.status.httpStatus).to.equal(200) }) }) diff --git a/src/test/unit/indexer/version.test.ts b/src/test/unit/indexer/version.test.ts new file mode 100644 index 000000000..a2055ccf4 --- /dev/null +++ b/src/test/unit/indexer/version.test.ts @@ -0,0 +1,60 @@ +import { assert, expect } from 'chai' +import { describe, it } from 'mocha' +import { + compareVersions, + isReindexingNeeded +} from '../../../components/Indexer/version.js' + +describe('Version utilities', () => { + describe('compareVersions', () => { + it('should return 0 for equal versions', () => { + expect(compareVersions('1.0.0', '1.0.0')).to.equal(0) + expect(compareVersions('2.3.1', '2.3.1')).to.equal(0) + }) + + it('should return -1 when first version is less than second', () => { + expect(compareVersions('1.0.0', '1.0.1')).to.equal(-1) + expect(compareVersions('1.9.9', '2.0.0')).to.equal(-1) + expect(compareVersions('2.3.0', '2.3.1')).to.equal(-1) + expect(compareVersions('0.2.1', '0.2.2')).to.equal(-1) + }) + + it('should return 1 when first version is greater than second', () => { + expect(compareVersions('1.0.1', '1.0.0')).to.equal(1) + expect(compareVersions('2.0.0', '1.9.9')).to.equal(1) + expect(compareVersions('2.3.1', '2.3.0')).to.equal(1) + }) + + it('should handle versions with different number of segments', () => { + expect(compareVersions('1.0', '1.0.0')).to.equal(0) + expect(compareVersions('1.0.0.0', '1.0.0')).to.equal(0) + expect(compareVersions('1.0', '1.0.1')).to.equal(-1) + expect(compareVersions('1.1', '1.0.9')).to.equal(1) + }) + }) + + describe('isReindexingNeeded', () => { + it('should return true if dbVersion is null', () => { + assert(isReindexingNeeded('1.0.0', null, '0.9.0') === true) + }) + + it('should return true if dbVersion is less than minVersion', () => { + assert(isReindexingNeeded('1.0.0', '0.1.0', '0.2.0') === true) + assert(isReindexingNeeded('0.3.0', '0.2.1', '0.2.2') === true) + }) + + it('should return false if dbVersion is equal to minVersion', () => { + assert(isReindexingNeeded('1.0.0', '0.2.0', '0.2.0') === false) + }) + + it('should return false if dbVersion is greater than minVersion', () => { + assert(isReindexingNeeded('1.0.0', '0.3.0', '0.2.0') === false) + }) + + it('should throw error if currentVersion is less than minVersion', () => { + expect(() => isReindexingNeeded('0.1.0', '0.2.0', '0.2.0')).to.throw( + 'Current version 0.1.0 is less than minimum required version 0.2.0' + ) + }) + }) +}) diff --git a/src/test/unit/networking.test.ts b/src/test/unit/networking.test.ts index 36e4a2a19..c030d1b58 100644 --- a/src/test/unit/networking.test.ts +++ b/src/test/unit/networking.test.ts @@ -1,11 +1,14 @@ import { - DEFAULT_RATE_LIMIT_PER_SECOND, + DEFAULT_RATE_LIMIT_PER_MINUTE, + // DEFAULT_MAX_CONNECTIONS_PER_MINUTE, ENVIRONMENT_VARIABLES, PROTOCOL_COMMANDS, - getConfiguration + getConfiguration, + CONNECTION_HISTORY_DELETE_THRESHOLD } from '../../utils/index.js' import { expect } from 'chai' import { + DEFAULT_TEST_TIMEOUT, OverrideEnvConfig, buildEnvOverrideConfig, setupEnvironment, @@ -105,7 +108,7 @@ describe('Test rate limitations and deny list defaults', () => { // const node: OceanNode = OceanNode.getInstance() before(async () => { envOverrides = buildEnvOverrideConfig( - [ENVIRONMENT_VARIABLES.RATE_DENY_LIST, ENVIRONMENT_VARIABLES.MAX_REQ_PER_SECOND], + [ENVIRONMENT_VARIABLES.RATE_DENY_LIST, ENVIRONMENT_VARIABLES.MAX_REQ_PER_MINUTE], [undefined, undefined] ) await setupEnvironment(null, envOverrides) @@ -115,7 +118,7 @@ describe('Test rate limitations and deny list defaults', () => { const config = await getConfiguration(true) expect(config.denyList.ips).to.be.length(0) expect(config.denyList.peers).to.be.length(0) - expect(config.rateLimit).to.be.equal(DEFAULT_RATE_LIMIT_PER_SECOND) + expect(config.rateLimit).to.be.equal(DEFAULT_RATE_LIMIT_PER_MINUTE) }) // put it back @@ -132,7 +135,7 @@ describe('Test rate limitations and deny list settings', () => { [ ENVIRONMENT_VARIABLES.PRIVATE_KEY, ENVIRONMENT_VARIABLES.RATE_DENY_LIST, - ENVIRONMENT_VARIABLES.MAX_REQ_PER_SECOND + ENVIRONMENT_VARIABLES.MAX_REQ_PER_MINUTE ], [ '0xcb345bd2b11264d523ddaf383094e2675c420a17511c3102a53817f13474a7ff', @@ -183,13 +186,12 @@ describe('Test rate limitations and deny list settings', () => { const ips = ['127.0.0.2', '127.0.0.3', '127.0.0.4', '127.0.0.5'] const rateLimitResponses = [] + const statusHandler: StatusHandler = CoreHandlersRegistry.getInstance( + node + ).getHandler(PROTOCOL_COMMANDS.STATUS) for (let i = 0; i < ips.length; i++) { node.setRemoteCaller(ips[i]) - const statusHandler: StatusHandler = CoreHandlersRegistry.getInstance( - node - ).getHandler(PROTOCOL_COMMANDS.STATUS) - const rateResp = await statusHandler.checkRateLimit() rateLimitResponses.push(rateResp) } @@ -197,6 +199,37 @@ describe('Test rate limitations and deny list settings', () => { // should have 4 valid responses expect(filtered.length).to.be.equal(ips.length) }) + + it('Test global rate limit, clear map after MAX (handler level) ', async function () { + // after more than CONNECTION_HISTORY_DELETE_THRESHOLD connections the map will be cleared + this.timeout(DEFAULT_TEST_TIMEOUT * 3) + let originalIPPiece = '127.0.' + + const rateLimitResponses = [] + + const statusHandler: StatusHandler = CoreHandlersRegistry.getInstance( + node + ).getHandler(PROTOCOL_COMMANDS.STATUS) + + const aboveLimit = 20 + for (let i = 0, x = 0; i < CONNECTION_HISTORY_DELETE_THRESHOLD + aboveLimit; i++) { + const ip = originalIPPiece + x // start at 127.0.0.2 + node.setRemoteCaller(ip) + const rateResp = await statusHandler.checkRateLimit() + rateLimitResponses.push(rateResp) + x++ + // start back + if (x > 254) { + x = 0 + originalIPPiece = '127.0.0.' // next piece + } + } + // it should clear the history after CONNECTION_HISTORY_DELETE_THRESHOLD + expect(statusHandler.getOceanNode().getRequestMapSize()).to.be.lessThanOrEqual( + aboveLimit + ) + }) + after(async () => { await tearDownEnvironment(envOverrides) }) diff --git a/src/test/unit/ocean.test.ts b/src/test/unit/ocean.test.ts index 2ed2bc289..d96f8f918 100644 --- a/src/test/unit/ocean.test.ts +++ b/src/test/unit/ocean.test.ts @@ -41,7 +41,7 @@ describe('Status command tests', async () => { const oceanP2P = new OceanP2P(config, db) const oceanIndexer = new OceanIndexer(db, config.indexingNetworks) const oceanProvider = new OceanProvider(db) - const oceanNode = OceanNode.getInstance(db, oceanP2P) + const oceanNode = OceanNode.getInstance(config, db, oceanP2P) after(async () => { // Restore original local setup / env variables after test @@ -62,7 +62,7 @@ describe('Status command tests', async () => { }) it('Ocean P2P should be initialized correctly', () => { expect(oceanNode.getP2PNode()).to.not.eql(null) - expect(OceanNode.getInstance(db).getP2PNode()).to.not.eql(null) + expect(OceanNode.getInstance(config, db).getP2PNode()).to.not.eql(null) }) it('Ocean Indexer should be initialized correctly', () => { oceanNode.addIndexer(oceanIndexer) diff --git a/src/test/unit/storage.test.ts b/src/test/unit/storage.test.ts index 4ef9fa174..5ea056e39 100644 --- a/src/test/unit/storage.test.ts +++ b/src/test/unit/storage.test.ts @@ -88,7 +88,7 @@ describe('URL Storage tests', () => { error = err } expect(error.message).to.eql( - 'Error validationg the URL file: URL or method are missing' + 'Error validating the URL file: URL or method are missing' ) file = { type: 'url', @@ -106,7 +106,7 @@ describe('URL Storage tests', () => { error = err } expect(error.message).to.eql( - 'Error validationg the URL file: URL or method are missing' + 'Error validating the URL file: URL or method are missing' ) }) it('URL validation fails on invalid method', () => { @@ -126,7 +126,7 @@ describe('URL Storage tests', () => { } catch (err) { error = err } - expect(error.message).to.eql('Error validationg the URL file: Invalid method for URL') + expect(error.message).to.eql('Error validating the URL file: Invalid method for URL') }) it('URL validation fails on filename', () => { @@ -147,7 +147,7 @@ describe('URL Storage tests', () => { error = err } expect(error.message).to.eql( - 'Error validationg the URL file: URL looks like a file path' + 'Error validating the URL file: URL looks like a file path' ) }) it('Gets download URL', () => { @@ -205,9 +205,7 @@ describe('Unsafe URL tests', () => { } catch (err) { error = err } - expect(error.message).to.eql( - 'Error validationg the URL file: URL is marked as unsafe' - ) + expect(error.message).to.eql('Error validating the URL file: URL is marked as unsafe') }) it('Should allow safe URL', () => { file = { @@ -254,7 +252,7 @@ describe('IPFS Storage tests', () => { } catch (err) { error = err } - expect(error.message).to.eql('Error validationg the IPFS file: Missing CID') + expect(error.message).to.eql('Error validating the IPFS file: Missing CID') }) after(() => { @@ -296,7 +294,7 @@ describe('Arweave Storage tests', () => { error = err } expect(error.message).to.eql( - 'Error validationg the Arweave file: Missing transaction ID' + 'Error validating the Arweave file: Missing transaction ID' ) }) @@ -376,7 +374,7 @@ describe('URL Storage with malformed URL', () => { error = err } expect(error.message).to.equal( - 'Error validationg the URL file: URL looks like a file path' + 'Error validating the URL file: URL looks like a file path' ) }) }) @@ -442,7 +440,7 @@ describe('Arweave Storage with malformed transaction ID', () => { error = err } expect(error.message).to.equal( - 'Error validationg the Arweave file: Transaction ID looks like an URL. Please specify URL storage instead.' + 'Error validating the Arweave file: Transaction ID looks like an URL. Please specify URL storage instead.' ) }) @@ -460,7 +458,7 @@ describe('Arweave Storage with malformed transaction ID', () => { error = err } expect(error.message).to.equal( - 'Error validationg the Arweave file: Transaction ID looks like a file path' + 'Error validating the Arweave file: Transaction ID looks like a file path' ) }) }) @@ -485,7 +483,7 @@ describe('Arweave Storage with malformed transaction ID', () => { error = err } expect(error.message).to.equal( - 'Error validationg the IPFS file: CID looks like an URL. Please specify URL storage instead.' + 'Error validating the IPFS file: CID looks like an URL. Please specify URL storage instead.' ) }) @@ -503,7 +501,7 @@ describe('Arweave Storage with malformed transaction ID', () => { error = err } expect(error.message).to.equal( - 'Error validationg the IPFS file: CID looks like a file path' + 'Error validating the IPFS file: CID looks like a file path' ) }) }) diff --git a/src/test/utils/assets.ts b/src/test/utils/assets.ts index c58efe5d5..ca976147e 100644 --- a/src/test/utils/assets.ts +++ b/src/test/utils/assets.ts @@ -78,6 +78,8 @@ export async function publishAsset(asset: any, publisherAccount: Signer) { genericAsset.services[0].files.datatokenAddress = datatokenAddress genericAsset.services[0].files.nftAddress = nftAddress + genericAsset.services[0].datatokenAddress = datatokenAddress + genericAsset.nftAddress = nftAddress // let's call node to encrypt const data = Uint8Array.from( diff --git a/src/test/utils/contracts.ts b/src/test/utils/contracts.ts new file mode 100644 index 000000000..06e1a14a8 --- /dev/null +++ b/src/test/utils/contracts.ts @@ -0,0 +1,129 @@ +import { Contract, ethers, JsonRpcProvider, Signer } from 'ethers' +import { AccessListContract } from '../../@types' +import { + getOceanArtifactsAdressesByChainId, + DEVELOPMENT_CHAIN_ID, + getOceanArtifactsAdresses +} from '../../utils/address.js' +import AccessListFactory from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessListFactory.sol/AccessListFactory.json' assert { type: 'json' } +import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } + +export const EXISTING_ACCESSLISTS: Map = new Map< + string, + AccessListContract +>() +/** + * Returns a contract instance for the given address + * @param {string} address - The address of the contract + * @param {AbiItem[]} [abi] - The ABI of the contract + * @returns {Contract} - The contract instance + */ +export function getContract(address: string, abi: any, signer: Signer): Contract { + const contract = new ethers.Contract(address, abi, signer) + return contract +} + +export function getEventFromTx(txReceipt: { logs: any[] }, eventName: string) { + return txReceipt?.logs?.filter((log) => { + return log.fragment?.name === eventName + })[0] +} +/** + * Create new Access List Contract + * @param {Signer} signer The signer of the transaction. + * @param {string} contractFactoryAddress The AccessListFactory address. + * @param {any} contractFactoryAbi The AccessListFactory ABI. + * @param {string} nameAccessList The name for access list. + * @param {string} symbolAccessList The symbol for access list. + * @param {boolean} transferable Default false, to be soulbound. + * @param {string} owner Owner of the access list. + * @param {string[]} user Users of the access lists as addresses. + * @param {string[]} tokenURI Token URIs list. + * @return {Promise} The transaction hash or null if no transaction + */ +export async function deployAccessListContract( + signer: Signer, + contractFactoryAddress: string, + contractFactoryAbi: any, + nameAccessList: string, + symbolAccessList: string, + transferable: boolean = false, + owner: string, + user: string[], + tokenURI: string[] +): Promise { + if (!nameAccessList || !symbolAccessList) { + throw new Error(`Access list symbol and name are required`) + } + + const contract = getContract(contractFactoryAddress, contractFactoryAbi, signer) + + try { + const tx = await contract.deployAccessListContract( + nameAccessList, + symbolAccessList, + transferable, + owner, + user, + tokenURI + ) + + if (!tx) { + const e = 'Tx for deploying new access list was not processed on chain.' + console.error(e) + throw e + } + const trxReceipt = await tx.wait(1) + const events = getEventFromTx(trxReceipt, 'NewAccessList') + return events.args[0] + } catch (e) { + console.error(`Creation of AccessList failed: ${e}`) + return null + } +} + +export async function deployAndGetAccessListConfig( + owner: Signer, + provider?: ethers.JsonRpcProvider, + wallets?: ethers.Signer[] +): Promise { + provider = provider || new JsonRpcProvider('http://127.0.0.1:8545') + let networkArtifacts = getOceanArtifactsAdressesByChainId(DEVELOPMENT_CHAIN_ID) + if (!networkArtifacts) { + networkArtifacts = getOceanArtifactsAdresses().development + } + + wallets = wallets || [ + (await provider.getSigner(0)) as Signer, + (await provider.getSigner(1)) as Signer, + (await provider.getSigner(2)) as Signer, + (await provider.getSigner(3)) as Signer + ] + const txAddress = await deployAccessListContract( + owner, // owner is first account + networkArtifacts.AccessListFactory, + AccessListFactory.abi, + 'AllowList', + 'ALLOW', + false, + await owner.getAddress(), + [ + await wallets[0].getAddress(), + await wallets[1].getAddress(), + await wallets[2].getAddress(), + await wallets[3].getAddress() + ], + ['https://oceanprotocol.com/nft/'] + ) + console.log('Successfully deployed AccessList at address: ', txAddress) + + const contractAcessList = getContract(txAddress, AccessList.abi, owner) + // console.log('contractAcessList:', contractAcessList) + if (contractAcessList) { + const result: AccessListContract = { + '8996': [txAddress] + } + return result + } + return null +} diff --git a/src/test/utils/hooks.ts b/src/test/utils/hooks.ts index 7e2d1032d..88acc1a72 100644 --- a/src/test/utils/hooks.ts +++ b/src/test/utils/hooks.ts @@ -39,7 +39,7 @@ function getEnvOverrides(): OverrideEnvConfig[] { [ 'http://localhost:5005/', 'https://arweave.net/', - '{ "1": {"rpc": "https://rpc.eth.gateway.fm", "chainId": 1, "network": "mainet", "chunkSize": 100}, "137": {"rpc": "https://polygon.meowrpc.com", "chainId": 137, "network": "polygon", "chunkSize": 100 }}', + '{ "8996": {"rpc": "http://127.0.0.1:8545", "chainId": 8996, "network": "development", "chunkSize": 100}, "137": {"rpc": "https://polygon.meowrpc.com", "chainId": 137, "network": "polygon", "chunkSize": 100 }}', '0xc594c6e5def4bab63ac29eed19a134c130388f74f019bc74b8f4389df2837a58', SELECTED_RUN_DATABASE, SELECTED_RUN_DATABASE === DB_TYPES.ELASTIC_SEARCH @@ -53,6 +53,7 @@ export const mochaHooks = { beforeAll() { // get stuff we want to override envOverrides = getEnvOverrides() + // if it exists will use it, otherwise nothing happens // in any case it WILL NOT override the existing configuration // it returns the original object with the original value preserved to be restored later @@ -60,7 +61,9 @@ export const mochaHooks = { envOverrides = overrides }) initialSetupDone = true - CONFIG_LOGGER.debug(`(Hook) Initial test setup: ${JSON.stringify(envOverrides)} `) + CONFIG_LOGGER.debug( + `(Hook) Initial test setup: ${JSON.stringify(envOverrides, null, 4)} ` + ) // just in case the configuration value fails this.timeout(DEFAULT_TEST_TIMEOUT) diff --git a/src/utils/address.ts b/src/utils/address.ts index 66d6adbba..9770a6bcc 100644 --- a/src/utils/address.ts +++ b/src/utils/address.ts @@ -55,11 +55,18 @@ export function getOceanArtifactsAdressesByChainId(chain: number): any { return null } +// eslint-disable-next-line require-await +export function getOceanTokenAddressForChain(chainId: number): Promise { + const addresses = getOceanArtifactsAdressesByChainId(chainId) + if (addresses && addresses.Ocean) return addresses.Ocean + return null +} + // default token addresses per chain export const OCEAN_ARTIFACTS_ADDRESSES_PER_CHAIN = addresses export const DEVELOPMENT_CHAIN_ID = 8996 export const KNOWN_CONFIDENTIAL_EVMS = [ - 23294, // mainnet oasis_sapphire, - 23295 // oasis_sapphire_testnet + BigInt(23294), // mainnet oasis_sapphire, + BigInt(23295) // oasis_sapphire_testnet ] diff --git a/src/utils/asset.ts b/src/utils/asset.ts index 48a5db4bc..d47bc7245 100644 --- a/src/utils/asset.ts +++ b/src/utils/asset.ts @@ -1,5 +1,5 @@ import axios from 'axios' -import { Service } from '../@types/DDO/Service' +import { Service, DDOManager, DDO } from '@oceanprotocol/ddo-js' import { DDO_IDENTIFIER_PREFIX } from './constants.js' import { CORE_LOGGER } from './logging/common.js' import { createHash } from 'crypto' @@ -8,8 +8,6 @@ import { KNOWN_CONFIDENTIAL_EVMS } from './address.js' import ERC20Template from '@oceanprotocol/contracts/artifacts/contracts/interfaces/IERC20Template.sol/IERC20Template.json' assert { type: 'json' } import ERC20Template4 from '@oceanprotocol/contracts/artifacts/contracts/templates/ERC20Template4.sol/ERC20Template4.json' assert { type: 'json' } import { getContractAddress, getNFTFactory } from '../components/Indexer/utils.js' -import { DDOManager } from '@oceanprotocol/ddo-js' -import { DDO } from '../@types/DDO/DDO' // Notes: // Asset as per asset.py on provider, is a class there, while on ocean.Js we only have a type @@ -97,6 +95,15 @@ export function validateDDOHash( return ddoID === hashAddressAndChain } +export function deleteIndexedMetadataIfExists(ddo: DDO): DDO { + const ddoCopy: DDO = structuredClone(ddo) + if ('indexedMetadata' in ddoCopy) { + delete ddoCopy.indexedMetadata + return ddoCopy + } + return ddo +} + /** * Generates DDO Id given the chain and nft address provided * @param nftAddress the nft address @@ -120,7 +127,7 @@ export function generateDDOHash(nftAddress: string, chainId: number): string | n * @param network name or chain id * @returns true if confidential evm */ -export function isConfidentialEVM(network: number): boolean { +export function isConfidentialEVM(network: bigint): boolean { return KNOWN_CONFIDENTIAL_EVMS.includes(network) } @@ -177,7 +184,7 @@ export async function isDataTokenTemplate4( } } -export function isConfidentialChainDDO(ddoChain: number, ddoService: Service): boolean { +export function isConfidentialChainDDO(ddoChain: bigint, ddoService: Service): boolean { const isConfidential = isConfidentialEVM(ddoChain) return isConfidential && (!ddoService.files || ddoService.files.length === 0) } @@ -198,7 +205,10 @@ export async function getFilesObjectFromConfidentialEVM( signer: Signer, consumerAddress: string, consumerSignature: string, - consumerData: string // ddo id + nonce + consumerData: string + // NOTE about signatures consume data: + // ddo id + nonce (for downloading) + // consumerAddress + datasets[0].documentId + nonce (for start/init compute) ): Promise { try { const currentProviderAddress = await signer.getAddress() diff --git a/src/utils/auth.ts b/src/utils/auth.ts index b3790456b..c4f0b8b72 100644 --- a/src/utils/auth.ts +++ b/src/utils/auth.ts @@ -1,17 +1,24 @@ -import { ethers } from 'ethers' +import { ethers, isAddress } from 'ethers' import { CORE_LOGGER } from './logging/common.js' -import { getAllowedAdmins } from './index.js' +import { Blockchain, getConfiguration } from './index.js' +import { RPCS } from '../@types/blockchain.js' +import { isDefined } from '../utils/util.js' +import AccessListContract from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import { getAccountsFromAccessList } from '../utils/credentials.js' +import { OceanNodeConfig } from '../@types/OceanNode.js' +import { LOG_LEVELS_STR } from './logging/Logger.js' import { CommonValidation } from '../components/httpRoutes/requestValidator.js' - -export function validateAdminSignature( +export async function validateAdminSignature( expiryTimestamp: number, signature: string -): CommonValidation { +): Promise { + const message = expiryTimestamp.toString() + const signerAddress = ethers.verifyMessage(message, signature)?.toLowerCase() + CORE_LOGGER.logMessage(`Resolved signer address: ${signerAddress}`) try { - const message = expiryTimestamp.toString() - const signerAddress = ethers.verifyMessage(message, signature)?.toLowerCase() - CORE_LOGGER.logMessage(`Resolved signer address: ${signerAddress}`) - const allowedAdmins = getAllowedAdmins() + const allowedAdmins: string[] = await getAdminAddresses() + console.log(`Allowed admins: ${allowedAdmins}`) + if (allowedAdmins.length === 0) { const errorMsg = "Allowed admins list is empty. Please add admins' addresses." CORE_LOGGER.logMessage(errorMsg) @@ -40,3 +47,55 @@ export function validateAdminSignature( return { valid: false, error: errorMsg } } } + +export async function getAdminAddresses(): Promise { + const config: OceanNodeConfig = await getConfiguration() + const validAddresses: string[] = [] + if (config.allowedAdmins && config.allowedAdmins.length > 0) { + for (const admin of config.allowedAdmins) { + if (isAddress(admin) === true) { + validAddresses.push(admin) + } + } + if (validAddresses.length === 0) { + CORE_LOGGER.log( + LOG_LEVELS_STR.LEVEL_ERROR, + `Invalid format for ETH address from ALLOWED ADMINS.` + ) + } + } + if ( + config.allowedAdminsList && + isDefined(config.supportedNetworks) && + Object.keys(config.allowedAdminsList).length > 0 + ) { + const RPCS: RPCS = config.supportedNetworks + const supportedChains: string[] = Object.keys(config.supportedNetworks) + const accessListsChainsListed = Object.keys(config.allowedAdminsList) + for (const chain of supportedChains) { + const { chainId, network, rpc, fallbackRPCs } = RPCS[chain] + const blockchain = new Blockchain(rpc, network, chainId, fallbackRPCs) + + // check the access lists for this chain + if (accessListsChainsListed.length > 0 && accessListsChainsListed.includes(chain)) { + for (const accessListAddress of config.allowedAdminsList[chainId]) { + // instantiate contract and check addresses present + balanceOf() + const accessListContract = new ethers.Contract( + accessListAddress, + AccessListContract.abi, + blockchain.getSigner() + ) + + const adminsFromAccessList: string[] = await getAccountsFromAccessList( + accessListContract, + chainId + ) + if (adminsFromAccessList.length > 0) { + return validAddresses.concat(adminsFromAccessList) + } + } + } + } + } + return validAddresses +} diff --git a/src/utils/blockchain.ts b/src/utils/blockchain.ts index bfafb5665..e06de5a3f 100644 --- a/src/utils/blockchain.ts +++ b/src/utils/blockchain.ts @@ -16,6 +16,14 @@ import { CORE_LOGGER } from './logging/common.js' import { sleep } from './util.js' import { ConnectionStatus } from '../@types/blockchain.js' import { ValidateChainId } from '../@types/commands.js' +import { KNOWN_CONFIDENTIAL_EVMS } from '../utils/address.js' + +const MIN_GAS_FEE_POLYGON = 30000000000 // minimum recommended 30 gwei polygon main and mumbai fees +const MIN_GAS_FEE_SEPOLIA = 4000000000 // minimum 4 gwei for eth sepolia testnet +const MIN_GAS_FEE_SAPPHIRE = 10000000000 // recommended for mainnet and testnet 10 gwei +const POLYGON_NETWORK_ID = 137 +const MUMBAI_NETWORK_ID = 80001 +const SEPOLIA_NETWORK_ID = 11155111 export class Blockchain { private signer: Signer @@ -58,6 +66,10 @@ export class Blockchain { return this.chainId } + public async getWalletAddress(): Promise { + return await this.signer.getAddress() + } + public async isNetworkReady(): Promise { if (this.networkAvailable && this.provider.ready) { return { ready: true } @@ -152,11 +164,75 @@ export class Blockchain { // oldNetwork exists, it represents a changing network this.networkAvailable = newNetwork instanceof Network } + + public async getFairGasPrice(gasFeeMultiplier: number): Promise { + const price = await (await this.signer.provider.getFeeData()).gasPrice + const x = BigInt(price.toString()) + if (gasFeeMultiplier) { + const res = BigInt(price.toString()) * BigInt(gasFeeMultiplier) + return res.toString(10) + } else return x.toString() + } + + public async getGasOptions(estGas: bigint, gasFeeMultiplier: number): Promise<{}> { + const { chainId } = await this.signer.provider.getNetwork() + const feeHistory = await this.signer.provider.getFeeData() + const gasLimit = estGas + BigInt(20000) + + if (feeHistory.maxPriorityFeePerGas) { + let aggressiveFeePriorityFeePerGas = feeHistory.maxPriorityFeePerGas.toString() + let aggressiveFeePerGas = feeHistory.maxFeePerGas.toString() + if (gasFeeMultiplier > 1) { + aggressiveFeePriorityFeePerGas = ( + (feeHistory.maxPriorityFeePerGas * BigInt(gasFeeMultiplier * 100)) / + BigInt(100) + ).toString() + aggressiveFeePerGas = ( + (feeHistory.maxFeePerGas * BigInt(gasFeeMultiplier * 100)) / + BigInt(100) + ).toString() + } + const overrides = { + gasLimit, + maxPriorityFeePerGas: + (chainId === BigInt(MUMBAI_NETWORK_ID) || + chainId === BigInt(POLYGON_NETWORK_ID)) && + Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_POLYGON + ? MIN_GAS_FEE_POLYGON + : chainId === BigInt(SEPOLIA_NETWORK_ID) && + Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_SEPOLIA + ? MIN_GAS_FEE_SEPOLIA + : KNOWN_CONFIDENTIAL_EVMS.includes(chainId) && + Number(aggressiveFeePriorityFeePerGas) < MIN_GAS_FEE_SAPPHIRE + ? MIN_GAS_FEE_SAPPHIRE + : Number(aggressiveFeePriorityFeePerGas), + maxFeePerGas: + (chainId === BigInt(MUMBAI_NETWORK_ID) || + chainId === BigInt(POLYGON_NETWORK_ID)) && + Number(aggressiveFeePerGas) < MIN_GAS_FEE_POLYGON + ? MIN_GAS_FEE_POLYGON + : chainId === BigInt(SEPOLIA_NETWORK_ID) && + Number(aggressiveFeePerGas) < MIN_GAS_FEE_SEPOLIA + ? MIN_GAS_FEE_SEPOLIA + : KNOWN_CONFIDENTIAL_EVMS.includes(chainId) && + Number(aggressiveFeePerGas) < MIN_GAS_FEE_SAPPHIRE + ? MIN_GAS_FEE_SAPPHIRE + : Number(aggressiveFeePerGas) + } + return overrides + } else { + const overrides = { + gasLimit, + gasPrice: feeHistory.gasPrice + } + return overrides + } + } } export async function getDatatokenDecimals( datatokenAddress: string, - provider: JsonRpcProvider + provider: ethers.Provider ): Promise { const datatokenContract = new Contract(datatokenAddress, ERC20Template.abi, provider) try { diff --git a/src/utils/config.ts b/src/utils/config.ts index 58fddbf75..8f64f4c6d 100644 --- a/src/utils/config.ts +++ b/src/utils/config.ts @@ -2,19 +2,25 @@ import type { DenyList, OceanNodeConfig, OceanNodeKeys, - OceanNodeDockerConfig + AccessListContract } from '../@types/OceanNode' -import type { C2DClusterInfo } from '../@types/C2D.js' -import { C2DClusterType } from '../@types/C2D.js' +import { dhtFilterMethod } from '../@types/OceanNode.js' +import type { C2DClusterInfo, C2DDockerConfig } from '../@types/C2D/C2D.js' +import { C2DClusterType } from '../@types/C2D/C2D.js' import { createFromPrivKey } from '@libp2p/peer-id-factory' import { keys } from '@libp2p/crypto' import { - DEFAULT_RATE_LIMIT_PER_SECOND, + computeCodebaseHash, + DEFAULT_RATE_LIMIT_PER_MINUTE, ENVIRONMENT_VARIABLES, EnvVariable, hexStringToByteArray } from '../utils/index.js' -import { defaultBootstrapAddresses, knownUnsafeURLs } from '../utils/constants.js' +import { + DEFAULT_MAX_CONNECTIONS_PER_MINUTE, + defaultBootstrapAddresses, + knownUnsafeURLs +} from '../utils/constants.js' import { LOG_LEVELS_STR, GENERIC_EMOJIS, getLoggerLevelEmoji } from './logging/Logger.js' import { RPCS } from '../@types/blockchain' @@ -27,6 +33,8 @@ import { import { CONFIG_LOGGER } from './logging/common.js' import { create256Hash } from './crypt.js' import { isDefined } from './util.js' +import { fileURLToPath } from 'url' +import path from 'path' // usefull for lazy loading and avoid boilerplate on other places let previousConfiguration: OceanNodeConfig = null @@ -54,7 +62,10 @@ export async function getPeerIdFromPrivateKey( function getEnvValue(env: any, defaultValue: any) { /* Gets value for an ENV var, returning defaultValue if not defined */ - return env != null ? (env as string) : defaultValue + if (env === null || env === undefined || (env as string).length === 0) { + return defaultValue + } + return env as string } function getIntEnvValue(env: any, defaultValue: number) { @@ -103,9 +114,12 @@ function getSupportedChains(): RPCS | null { function getIndexingNetworks(supportedNetworks: RPCS): RPCS | null { const indexerNetworksEnv = process.env.INDEXER_NETWORKS + + const defaultErrorMsg = + 'Missing or invalid "INDEXER_NETWORKS" variable. Running Indexer with all supported networks defined in RPCS env variable...' if (!indexerNetworksEnv) { CONFIG_LOGGER.logMessageWithEmoji( - 'INDEXER_NETWORKS is not defined, running Indexer with all supported networks defined in RPCS env variable ...', + defaultErrorMsg, true, GENERIC_EMOJIS.EMOJI_CHECK_MARK, LOG_LEVELS_STR.LEVEL_INFO @@ -115,9 +129,10 @@ function getIndexingNetworks(supportedNetworks: RPCS): RPCS | null { try { const indexerNetworks: number[] = JSON.parse(indexerNetworksEnv) + // env var exists but is wrong, so it does not index anything, but we still log the error if (indexerNetworks.length === 0) { CONFIG_LOGGER.logMessageWithEmoji( - 'INDEXER_NETWORKS is an empty array, Running node without the Indexer component...', + '"INDEXER_NETWORKS" is an empty array, Running node without the Indexer component...', true, GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR @@ -133,10 +148,21 @@ function getIndexingNetworks(supportedNetworks: RPCS): RPCS | null { return acc }, {}) + // if variables are not aligned we might end up not running indexer at all, so at least we should log a warning + if (Object.keys(filteredNetworks).length === 0) { + CONFIG_LOGGER.logMessageWithEmoji( + `"RPCS" chains: "${Object.keys( + supportedNetworks + )}" and "INDEXER_NETWORKS" chains: "${indexerNetworks}" mismatch! Running node without the Indexer component...`, + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + } return filteredNetworks } catch (e) { CONFIG_LOGGER.logMessageWithEmoji( - 'Missing or Invalid INDEXER_NETWORKS env variable format,running Indexer with all supported networks defined in RPCS env variable ...', + defaultErrorMsg, true, GENERIC_EMOJIS.EMOJI_CROSS_MARK, LOG_LEVELS_STR.LEVEL_ERROR @@ -144,6 +170,32 @@ function getIndexingNetworks(supportedNetworks: RPCS): RPCS | null { return supportedNetworks } } +// valid publishers (what we will index) +function getAuthorizedPublishers(isStartup?: boolean): string[] { + if (existsEnvironmentVariable(ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS, isStartup)) { + return readAddressListFromEnvVariable( + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS, + isStartup + ) + } + return [] +} + +function getAuthorizedPublishersList(isStartup?: boolean): AccessListContract | null { + if ( + existsEnvironmentVariable(ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST, isStartup) + ) { + try { + const publisherAccessList = JSON.parse( + ENVIRONMENT_VARIABLES.AUTHORIZED_PUBLISHERS_LIST.value + ) as AccessListContract + return publisherAccessList + } catch (err) { + CONFIG_LOGGER.error(err.message) + } + } + return null +} // valid decrypthers function getAuthorizedDecrypters(isStartup?: boolean): string[] { return readAddressListFromEnvVariable( @@ -151,6 +203,22 @@ function getAuthorizedDecrypters(isStartup?: boolean): string[] { isStartup ) } + +function getAuthorizedDecryptersList(isStartup?: boolean): AccessListContract | null { + if ( + existsEnvironmentVariable(ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST, isStartup) + ) { + try { + const decryptersAccessList = JSON.parse( + ENVIRONMENT_VARIABLES.AUTHORIZED_DECRYPTERS_LIST.value + ) as AccessListContract + return decryptersAccessList + } catch (err) { + CONFIG_LOGGER.error(err.message) + } + } + return null +} // allowed validators export function getAllowedValidators(isStartup?: boolean): string[] { return readAddressListFromEnvVariable( @@ -158,11 +226,41 @@ export function getAllowedValidators(isStartup?: boolean): string[] { isStartup ) } + +function getAllowedValidatorsList(isStartup?: boolean): AccessListContract | null { + if ( + existsEnvironmentVariable(ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST, isStartup) + ) { + try { + const publisherAccessList = JSON.parse( + ENVIRONMENT_VARIABLES.ALLOWED_VALIDATORS_LIST.value + ) as AccessListContract + return publisherAccessList + } catch (err) { + CONFIG_LOGGER.error(err.message) + } + } + return null +} // valid node admins -export function getAllowedAdmins(isStartup?: boolean): string[] { +function getAllowedAdmins(isStartup?: boolean): string[] { return readAddressListFromEnvVariable(ENVIRONMENT_VARIABLES.ALLOWED_ADMINS, isStartup) } +function getAllowedAdminsList(isStartup?: boolean): AccessListContract | null { + if (existsEnvironmentVariable(ENVIRONMENT_VARIABLES.ALLOWED_ADMINS_LIST, isStartup)) { + try { + const adminAccessList = JSON.parse( + ENVIRONMENT_VARIABLES.ALLOWED_ADMINS_LIST.value + ) as AccessListContract + return adminAccessList + } catch (err) { + CONFIG_LOGGER.error(err.message) + } + } + return null +} + // whenever we want to read an array of strings from an env variable, use this common function function readListFromEnvVariable( envVariable: any, @@ -306,18 +404,6 @@ function getOceanNodeFees(supportedNetworks: RPCS, isStartup?: boolean): FeeStra } } -function getC2DDockerConfig(isStartup?: boolean): OceanNodeDockerConfig { - const config = { - socketPath: getEnvValue(process.env.DOCKER_SOCKET_PATH, null), - protocol: getEnvValue(process.env.DOCKER_PROTOCOL, null), - host: getEnvValue(process.env.DOCKER_HOST, null), - port: getIntEnvValue(process.env.DOCKER_PORT, 0), - caPath: getEnvValue(process.env.DOCKER_CA_PATH, null), - certPath: getEnvValue(process.env.DOCKER_CERT_PATH, null), - keyPath: getEnvValue(process.env.DOCKER_KEY_PATH, null) - } - return config -} // get C2D environments function getC2DClusterEnvironment(isStartup?: boolean): C2DClusterInfo[] { const clusters: C2DClusterInfo[] = [] @@ -344,10 +430,103 @@ function getC2DClusterEnvironment(isStartup?: boolean): C2DClusterInfo[] { ) } } + const dockerC2Ds = getDockerComputeEnvironments(isStartup) + for (const dockerC2d of dockerC2Ds) { + if (dockerC2d.socketPath || dockerC2d.host) { + const hash = create256Hash(JSON.stringify(dockerC2d)) + // get env values + clusters.push({ + connection: dockerC2d, + hash, + type: C2DClusterType.DOCKER, + tempFolder: './c2d_storage/' + hash + }) + } + } return clusters } +/** + * Reads a partial ComputeEnvironment setting (array of) + * @param isStartup for logging purposes + * @returns + * + * example: + * { + "cpuNumber": 2, + "ramGB": 4, + "diskGB": 10, + "desc": "2Cpu,2gbRam - price 1 OCEAN/minute, max 1 hour", + "maxJobs": 10, + "storageExpiry": 36000, + "maxJobDuration": 3600, + "chainId": 1, + "feeToken": "0x967da4048cD07aB37855c090aAF366e4ce1b9F48", + "priceMin": 1 + }, + */ +function getDockerComputeEnvironments(isStartup?: boolean): C2DDockerConfig[] { + const dockerC2Ds: C2DDockerConfig[] = [] + if ( + existsEnvironmentVariable( + ENVIRONMENT_VARIABLES.DOCKER_COMPUTE_ENVIRONMENTS, + isStartup + ) + ) { + try { + const configs: C2DDockerConfig[] = JSON.parse( + process.env.DOCKER_COMPUTE_ENVIRONMENTS + ) as C2DDockerConfig[] + + for (const config of configs) { + let errors = '' + if (!isDefined(config.fees)) { + errors += ' There is no fees configuration!' + } + + if (config.storageExpiry < config.maxJobDuration) { + errors += ' "storageExpiry" should be greater than "maxJobDuration"! ' + } + // for docker there is no way of getting storage space + let foundDisk = false + if ('resources' in config) { + for (const resource of config.resources) { + if (resource.id === 'disk' && resource.total) foundDisk = true + } + } + if (!foundDisk) { + errors += ' There is no "disk" resource configured.This is mandatory ' + } + if (errors.length > 1) { + CONFIG_LOGGER.error( + 'Please check your compute env settings: ' + + errors + + 'for env: ' + + JSON.stringify(config) + ) + } else { + dockerC2Ds.push(config) + } + } + return dockerC2Ds + } catch (error) { + CONFIG_LOGGER.logMessageWithEmoji( + `Invalid "${ENVIRONMENT_VARIABLES.DOCKER_COMPUTE_ENVIRONMENTS.name}" env variable => ${process.env.DOCKER_COMPUTE_ENVIRONMENTS}...`, + true, + GENERIC_EMOJIS.EMOJI_CROSS_MARK, + LOG_LEVELS_STR.LEVEL_ERROR + ) + console.log(error) + } + } else if (isStartup) { + CONFIG_LOGGER.warn( + `No options for ${ENVIRONMENT_VARIABLES.DOCKER_COMPUTE_ENVIRONMENTS.name} were specified.` + ) + } + return [] +} + // connect interfaces (p2p or/and http) function getNodeInterfaces(isStartup: boolean = false) { let interfaces: string[] = ['P2P', 'HTTP'] @@ -412,21 +591,43 @@ function logMissingVariableWithDefault(envVariable: EnvVariable) { true ) } -// have a rate limit for handler calls +// have a rate limit for handler calls (per IP address or peer id) function getRateLimit(isStartup: boolean = false) { - if (!existsEnvironmentVariable(ENVIRONMENT_VARIABLES.MAX_REQ_PER_SECOND)) { + if (!existsEnvironmentVariable(ENVIRONMENT_VARIABLES.MAX_REQ_PER_MINUTE)) { if (isStartup) { - logMissingVariableWithDefault(ENVIRONMENT_VARIABLES.MAX_REQ_PER_SECOND) + logMissingVariableWithDefault(ENVIRONMENT_VARIABLES.MAX_REQ_PER_MINUTE) } - return DEFAULT_RATE_LIMIT_PER_SECOND + return DEFAULT_RATE_LIMIT_PER_MINUTE } else { try { - return getIntEnvValue(process.env.MAX_REQ_PER_SECOND, DEFAULT_RATE_LIMIT_PER_SECOND) + return getIntEnvValue(process.env.MAX_REQ_PER_MINUTE, DEFAULT_RATE_LIMIT_PER_MINUTE) } catch (err) { CONFIG_LOGGER.error( - `Invalid "${ENVIRONMENT_VARIABLES.MAX_REQ_PER_SECOND.name}" env variable...` + `Invalid "${ENVIRONMENT_VARIABLES.MAX_REQ_PER_MINUTE.name}" env variable...` ) - return DEFAULT_RATE_LIMIT_PER_SECOND + return DEFAULT_RATE_LIMIT_PER_MINUTE + } + } +} + +// Global requests limit +function getConnectionsLimit(isStartup: boolean = false) { + if (!existsEnvironmentVariable(ENVIRONMENT_VARIABLES.MAX_CONNECTIONS_PER_MINUTE)) { + if (isStartup) { + logMissingVariableWithDefault(ENVIRONMENT_VARIABLES.MAX_CONNECTIONS_PER_MINUTE) + } + return DEFAULT_RATE_LIMIT_PER_MINUTE + } else { + try { + return getIntEnvValue( + process.env.MAX_CONNECTIONS_PER_MINUTE, + DEFAULT_MAX_CONNECTIONS_PER_MINUTE + ) + } catch (err) { + CONFIG_LOGGER.error( + `Invalid "${ENVIRONMENT_VARIABLES.MAX_CONNECTIONS_PER_MINUTE.name}" env variable...` + ) + return DEFAULT_MAX_CONNECTIONS_PER_MINUTE } } } @@ -461,6 +662,12 @@ export async function getConfiguration( if (!previousConfiguration || forceReload) { previousConfiguration = await getEnvConfig(isStartup) } + if (!previousConfiguration.codeHash) { + const __filename = fileURLToPath(import.meta.url) + const __dirname = path.dirname(__filename.replace('utils/', '')) + previousConfiguration.codeHash = await computeCodebaseHash(__dirname) + } + return previousConfiguration } @@ -499,9 +706,25 @@ async function getEnvConfig(isStartup?: boolean): Promise { const interfaces = getNodeInterfaces(isStartup) let bootstrapTtl = getIntEnvValue(process.env.P2P_BOOTSTRAP_TTL, 120000) if (bootstrapTtl === 0) bootstrapTtl = Infinity + let dhtFilterOption + switch (getIntEnvValue(process.env.P2P_DHT_FILTER, 0)) { + case 1: + dhtFilterOption = dhtFilterMethod.filterPrivate + break + case 2: + dhtFilterOption = dhtFilterMethod.filterPublic + break + default: + dhtFilterOption = dhtFilterMethod.filterNone + } + const config: OceanNodeConfig = { authorizedDecrypters: getAuthorizedDecrypters(isStartup), + authorizedDecryptersList: getAuthorizedDecryptersList(isStartup), allowedValidators: getAllowedValidators(isStartup), + allowedValidatorsList: getAllowedValidatorsList(isStartup), + authorizedPublishers: getAuthorizedPublishers(isStartup), + authorizedPublishersList: getAuthorizedPublishersList(isStartup), keys, // Only enable indexer if we have a DB_URL and supportedNetworks hasIndexer: !!(!!getEnvValue(process.env.DB_URL, '') && !!indexingNetworks), @@ -535,7 +758,7 @@ async function getEnvConfig(isStartup?: boolean): Promise { ), dhtMaxInboundStreams: getIntEnvValue(process.env.P2P_dhtMaxInboundStreams, 500), dhtMaxOutboundStreams: getIntEnvValue(process.env.P2P_dhtMaxOutboundStreams, 500), - enableDHTServer: getBoolEnvValue(process.env.P2P_ENABLE_DHT_SERVER, false), + dhtFilter: dhtFilterOption, mDNSInterval: getIntEnvValue(process.env.P2P_mDNSInterval, 20e3), // 20 seconds connectionsMaxParallelDials: getIntEnvValue( process.env.P2P_connectionsMaxParallelDials, @@ -577,9 +800,12 @@ async function getEnvConfig(isStartup?: boolean): Promise { ), autoDialConcurrency: getIntEnvValue(process.env.P2P_AUTODIALCONCURRENCY, 5), maxPeerAddrsToDial: getIntEnvValue(process.env.P2P_MAXPEERADDRSTODIAL, 5), - autoDialInterval: getIntEnvValue(process.env.P2P_AUTODIALINTERVAL, 5000) + autoDialInterval: getIntEnvValue(process.env.P2P_AUTODIALINTERVAL, 5000), + enableNetworkStats: getBoolEnvValue('P2P_ENABLE_NETWORK_STATS', false) }, - hasDashboard: process.env.DASHBOARD !== 'false', + // keep this for backwards compatibility for now + hasControlPanel: + process.env.CONTROL_PANEL !== 'false' || process.env.DASHBOARD !== 'false', httpPort: getIntEnvValue(process.env.HTTP_API_PORT, 8000), dbConfig: { url: getEnvValue(process.env.DB_URL, ''), @@ -591,18 +817,22 @@ async function getEnvConfig(isStartup?: boolean): Promise { indexingNetworks, feeStrategy: getOceanNodeFees(supportedNetworks, isStartup), c2dClusters: getC2DClusterEnvironment(isStartup), - dockerConfig: getC2DDockerConfig(isStartup), c2dNodeUri: getEnvValue(process.env.C2D_NODE_URI, ''), accountPurgatoryUrl: getEnvValue(process.env.ACCOUNT_PURGATORY_URL, ''), assetPurgatoryUrl: getEnvValue(process.env.ASSET_PURGATORY_URL, ''), allowedAdmins: getAllowedAdmins(isStartup), + allowedAdminsList: getAllowedAdminsList(isStartup), rateLimit: getRateLimit(isStartup), + maxConnections: getConnectionsLimit(isStartup), denyList: getDenyList(isStartup), unsafeURLs: readListFromEnvVariable( ENVIRONMENT_VARIABLES.UNSAFE_URLS, isStartup, knownUnsafeURLs - ) + ), + isBootstrap: getBoolEnvValue('IS_BOOTSTRAP', false), + claimDurationTimeout: getIntEnvValue(process.env.ESCROW_CLAIM_TIMEOUT, 600), + validateUnsignedDDO: getBoolEnvValue('VALIDATE_UNSIGNED_DDO', true) } if (!previousConfiguration) { @@ -622,12 +852,14 @@ function configChanged(previous: OceanNodeConfig, current: OceanNodeConfig): boo // useful for debugging purposes export async function printCurrentConfig() { const conf = await getConfiguration(true) + conf.keys.privateKey = '[*** HIDDEN CONTENT ***]' // hide private key console.log(JSON.stringify(conf, null, 4)) } // P2P routes related export const hasP2PInterface = (await (await getConfiguration())?.hasP2P) || false +// is there a policy server defined? export function isPolicyServerConfigured(): boolean { return isDefined(process.env.POLICY_SERVER_URL) } diff --git a/src/utils/constants.ts b/src/utils/constants.ts index b1acee704..4a4316452 100644 --- a/src/utils/constants.ts +++ b/src/utils/constants.ts @@ -4,7 +4,6 @@ import { Hashes } from '../@types/blockchain' export const PROTOCOL_COMMANDS = { DOWNLOAD: 'download', DOWNLOAD_URL: 'downloadURL', // we still use this - ECHO: 'echo', ENCRYPT: 'encrypt', ENCRYPT_FILE: 'encryptFile', DECRYPT_DDO: 'decryptDDO', @@ -19,8 +18,10 @@ export const PROTOCOL_COMMANDS = { VALIDATE_DDO: 'validateDDO', COMPUTE_GET_ENVIRONMENTS: 'getComputeEnvironments', COMPUTE_START: 'startCompute', + FREE_COMPUTE_START: 'freeStartCompute', COMPUTE_STOP: 'stopCompute', COMPUTE_GET_STATUS: 'getComputeStatus', + COMPUTE_GET_STREAMABLE_LOGS: 'getComputeStreamableLogs', COMPUTE_GET_RESULT: 'getComputeResult', COMPUTE_INITIALIZE: 'initializeCompute', STOP_NODE: 'stopNode', @@ -28,12 +29,15 @@ export const PROTOCOL_COMMANDS = { REINDEX_CHAIN: 'reindexChain', HANDLE_INDEXING_THREAD: 'handleIndexingThread', COLLECT_FEES: 'collectFees', - POLICY_SERVER_PASSTHROUGH: 'PolicyServerPassthrough' + POLICY_SERVER_PASSTHROUGH: 'PolicyServerPassthrough', + GET_P2P_PEER: 'getP2PPeer', + GET_P2P_PEERS: 'getP2PPeers', + GET_P2P_NETWORK_STATS: 'getP2PNetworkStats', + FIND_PEER: 'findPeer' } // more visible, keep then close to make sure we always update both export const SUPPORTED_PROTOCOL_COMMANDS: string[] = [ PROTOCOL_COMMANDS.DOWNLOAD, - PROTOCOL_COMMANDS.ECHO, PROTOCOL_COMMANDS.ENCRYPT, PROTOCOL_COMMANDS.ENCRYPT_FILE, PROTOCOL_COMMANDS.NONCE, @@ -48,16 +52,22 @@ export const SUPPORTED_PROTOCOL_COMMANDS: string[] = [ PROTOCOL_COMMANDS.VALIDATE_DDO, PROTOCOL_COMMANDS.COMPUTE_GET_ENVIRONMENTS, PROTOCOL_COMMANDS.COMPUTE_START, + PROTOCOL_COMMANDS.FREE_COMPUTE_START, PROTOCOL_COMMANDS.COMPUTE_STOP, PROTOCOL_COMMANDS.COMPUTE_GET_STATUS, PROTOCOL_COMMANDS.COMPUTE_GET_RESULT, + PROTOCOL_COMMANDS.COMPUTE_GET_STREAMABLE_LOGS, PROTOCOL_COMMANDS.COMPUTE_INITIALIZE, PROTOCOL_COMMANDS.STOP_NODE, PROTOCOL_COMMANDS.REINDEX_TX, PROTOCOL_COMMANDS.REINDEX_CHAIN, PROTOCOL_COMMANDS.HANDLE_INDEXING_THREAD, PROTOCOL_COMMANDS.COLLECT_FEES, - PROTOCOL_COMMANDS.POLICY_SERVER_PASSTHROUGH + PROTOCOL_COMMANDS.POLICY_SERVER_PASSTHROUGH, + PROTOCOL_COMMANDS.GET_P2P_PEER, + PROTOCOL_COMMANDS.GET_P2P_PEERS, + PROTOCOL_COMMANDS.GET_P2P_NETWORK_STATS, + PROTOCOL_COMMANDS.FIND_PEER ] export const MetadataStates = { @@ -78,7 +88,11 @@ export const EVENTS = { TOKEN_URI_UPDATE: 'TokenURIUpdate', EXCHANGE_CREATED: 'ExchangeCreated', EXCHANGE_RATE_CHANGED: 'ExchangeRateChanged', - DISPENSER_CREATED: 'DispenserCreated' + DISPENSER_CREATED: 'DispenserCreated', + DISPENSER_ACTIVATED: 'DispenserActivated', + DISPENSER_DEACTIVATED: 'DispenserDeactivated', + EXCHANGE_ACTIVATED: 'ExchangeActivated', + EXCHANGE_DEACTIVATED: 'ExchangeDeactivated' } export const INDEXER_CRAWLING_EVENTS = { @@ -132,6 +146,22 @@ export const EVENT_HASHES: Hashes = { '0x7d0aa581e6eb87e15f58588ff20c39ff6622fc796ec9bb664df6ed3eb02442c9': { type: EVENTS.DISPENSER_CREATED, text: 'DispenserCreated(address,address,uint256,uint256,address)' + }, + '0xe9372084cb52c5392afee4b9d79d131e04b1e65676088d50a8f39fffb16a8745': { + type: EVENTS.DISPENSER_ACTIVATED, + text: 'DispenserActivated(address)' + }, + '0x393f01061139648745ea000bb047bbe1785bd3a19d3a9c90f6747e1d2357d2b8': { + type: EVENTS.DISPENSER_DEACTIVATED, + text: 'DispenserDeactivated(address)' + }, + '0xc7344c45124818d1d3a4c24ccb9b86d8b88d3bd05209b2a42b494cb32a503529': { + type: EVENTS.EXCHANGE_ACTIVATED, + text: 'ExchangeActivated(bytes32,address)' + }, + '0x03da9148e1de78fba22de63c573465562ebf6ef878a1d3ea83790a560229984c': { + type: EVENTS.EXCHANGE_DEACTIVATED, + text: 'ExchangeDeactivated(bytes32,address)' } } @@ -221,6 +251,11 @@ export const ENVIRONMENT_VARIABLES: Record = { value: process.env.AUTHORIZED_DECRYPTERS, required: false }, + AUTHORIZED_DECRYPTERS_LIST: { + name: 'AUTHORIZED_DECRYPTERS_LIST', + value: process.env.AUTHORIZED_DECRYPTERS_LIST, + required: false + }, OPERATOR_SERVICE_URL: { name: 'OPERATOR_SERVICE_URL', value: process.env.OPERATOR_SERVICE_URL, @@ -236,6 +271,11 @@ export const ENVIRONMENT_VARIABLES: Record = { value: process.env.ALLOWED_VALIDATORS, required: false }, + ALLOWED_VALIDATORS_LIST: { + name: 'ALLOWED_VALIDATORS_LIST', + value: process.env.ALLOWED_VALIDATORS_LIST, + required: false + }, INDEXER_INTERVAL: { name: 'INDEXER_INTERVAL', value: process.env.INDEXER_INTERVAL, @@ -251,6 +291,11 @@ export const ENVIRONMENT_VARIABLES: Record = { value: process.env.ALLOWED_ADMINS, required: false }, + ALLOWED_ADMINS_LIST: { + name: 'ALLOWED_ADMINS_LIST', + value: process.env.ALLOWED_ADMINS_LIST, + required: false + }, ASSET_PURGATORY_URL: { name: 'ASSET_PURGATORY_URL', value: process.env.ASSET_PURGATORY_URL, @@ -261,15 +306,22 @@ export const ENVIRONMENT_VARIABLES: Record = { value: process.env.ACCOUNT_PURGATORY_URL, required: false }, - DASHBOARD: { - name: 'DASHBOARD', - value: process.env.DASHBOARD, + CONTROL_PANEL: { + name: 'CONTROL_PANEL', + // keep this for backwards compatibility for now + value: process.env.CONTROL_PANEL || process.env.DASHBOARD, + required: false + }, + MAX_REQ_PER_MINUTE: { + // rate limit per minute (MAX requests per minute for a given IP or peer ID) + name: 'MAX_REQ_PER_MINUTE', + value: process.env.MAX_REQ_PER_MINUTE, required: false }, - MAX_REQ_PER_SECOND: { - // rate limit per second - name: 'MAX_REQ_PER_SECOND', - value: process.env.MAX_REQ_PER_SECOND, + MAX_CONNECTIONS_PER_MINUTE: { + // rate connections limit per minute (MAX requests per minute that the node will process) + name: 'MAX_CONNECTIONS_PER_MINUTE', + value: process.env.MAX_CONNECTIONS_PER_MINUTE, required: false }, RATE_DENY_LIST: { @@ -317,11 +369,90 @@ export const ENVIRONMENT_VARIABLES: Record = { name: 'DB_TYPE', value: process.env.DB_TYPE, required: false + }, + CRON_DELETE_DB_LOGS: { + name: 'CRON_DELETE_DB_LOGS', + value: process.env.CRON_DELETE_DB_LOGS, + required: false + }, + CRON_CLEANUP_C2D_STORAGE: { + name: 'CRON_CLEANUP_C2D_STORAGE', + value: process.env.CRON_CLEANUP_C2D_STORAGE, + required: false + }, + DOCKER_COMPUTE_ENVIRONMENTS: { + name: 'DOCKER_COMPUTE_ENVIRONMENTS', + value: process.env.DOCKER_COMPUTE_ENVIRONMENTS, + required: false + }, + DOCKER_SOCKET_PATH: { + name: 'DOCKER_SOCKET_PATH', + value: process.env.DOCKER_SOCKET_PATH, + required: false + }, + DOCKER_PROTOCOL: { + name: 'DOCKER_PROTOCOL', + value: process.env.DOCKER_PROTOCOL, + required: false + }, + DOCKER_HOST: { + name: 'DOCKER_HOST', + value: process.env.DOCKER_HOST, + required: false + }, + DOCKER_PORT: { + name: 'DOCKER_PORT', + value: process.env.DOCKER_PORT, + required: false + }, + DOCKER_CA_PATH: { + name: 'DOCKER_CA_PATH', + value: process.env.DOCKER_CA_PATH, + required: false + }, + DOCKER_CERT_PATH: { + name: 'DOCKER_CERT_PATH', + value: process.env.DOCKER_CERT_PATH, + required: false + }, + DOCKER_KEY_PATH: { + name: 'DOCKER_KEY_PATH', + value: process.env.DOCKER_KEY_PATH, + required: false + }, + IS_BOOTSTRAP: { + name: 'IS_BOOTSTRAP', + value: process.env.IS_BOOTSTRAP, + required: false + }, + AUTHORIZED_PUBLISHERS: { + name: 'AUTHORIZED_PUBLISHERS', + value: process.env.AUTHORIZED_PUBLISHERS, + required: false + }, + AUTHORIZED_PUBLISHERS_LIST: { + name: 'AUTHORIZED_PUBLISHERS_LIST', + value: process.env.AUTHORIZED_PUBLISHERS_LIST, + required: false + }, + POLICY_SERVER_URL: { + name: 'POLICY_SERVER_URL', + value: process.env.POLICY_SERVER_URL, + required: false + }, + VALIDATE_UNSIGNED_DDO: { + name: 'VALIDATE_UNSIGNED_DDO', + value: process.env.VALIDATE_UNSIGNED_DDO, + required: false } } - -// default to 3 requests per second (configurable) -export const DEFAULT_RATE_LIMIT_PER_SECOND = 3 +export const CONNECTION_HISTORY_DELETE_THRESHOLD = 300 +// default to 30 requests per minute (configurable), per ip/peer +export const DEFAULT_RATE_LIMIT_PER_MINUTE = 30 +// max connections per minute (configurable), all connections +export const DEFAULT_MAX_CONNECTIONS_PER_MINUTE = 60 * 2 // 120 requests per minute +// 1 minute +export const CONNECTIONS_RATE_INTERVAL = 60 * 1000 // Typesense's maximum limit to send 250 hits at a time export const TYPESENSE_HITS_CAP = 250 export const DDO_IDENTIFIER_PREFIX = 'did:op:' diff --git a/src/utils/credentials.ts b/src/utils/credentials.ts index 9e2e50cd2..e42882e43 100644 --- a/src/utils/credentials.ts +++ b/src/utils/credentials.ts @@ -1,75 +1,81 @@ -import { - Credential, - Credentials, - KNOWN_CREDENTIALS_TYPES -} from '../@types/DDO/Credentials.js' +import { Contract, ethers, EventLog, Signer } from 'ethers' +import AccessList from '@oceanprotocol/contracts/artifacts/contracts/accesslists/AccessList.sol/AccessList.json' assert { type: 'json' } +import { AccessListContract } from '../@types/OceanNode.js' +import { CORE_LOGGER } from './logging/common.js' + +import { getNFTContract } from '../components/Indexer/utils.js' import { isDefined } from './util.js' +import { getOceanArtifactsAdressesByChainId } from './address.js' +import { Credential, Credentials, CREDENTIALS_TYPES } from '@oceanprotocol/ddo-js' +import { KNOWN_CREDENTIALS_TYPES } from '../@types/DDO/Credentials.js' export function findCredential( credentials: Credential[], - consumerCredentials: Credential, - type?: string + consumerCredentials: Credential ) { - const hasAddressType = credentials.some((credential) => { - const type = String(credential.type ?? '').toLowerCase() - return type === 'address' - }) - if (type === 'service' && !hasAddressType) return true - return credentials.find((credential) => { if (Array.isArray(credential?.values)) { if (credential.values.length > 0) { - const credentialType = String(credential.type ?? '').toLowerCase() - if (credentialType !== 'address') { - return false - } - const credentialValues = credential.values.map((v) => - typeof v === 'object' && 'address' in v ? v.address : v - ) - if (credentialValues.includes('*')) { - return true - } + const credentialType = String(credential?.type)?.toLowerCase() + const credentialValues = credential.values.map((v) => String(v)?.toLowerCase()) return ( credentialType === consumerCredentials.type && - credentialValues - .map((address) => address.toLowerCase()) - .includes(consumerCredentials.values[0].address) + credentialValues.includes(consumerCredentials.values[0]) ) } } - if (type === 'service') return true return false }) } + +export function hasAddressMatchAllRule(credentials: Credential[]): boolean { + const creds = credentials.find((credential: Credential) => { + if (Array.isArray(credential?.values)) { + if (credential.values.length > 0 && credential.type) { + const filteredValues: string[] = credential.values.filter((value: string) => { + return value?.toLowerCase() === '*' // address + }) + return ( + filteredValues.length > 0 && + credential.type.toLowerCase() === KNOWN_CREDENTIALS_TYPES[0] + ) + } + } + return false + }) + return isDefined(creds) +} + /** * This method checks credentials * @param credentials credentials * @param consumerAddress consumer address */ -export function checkCredentials( - credentials: Credentials, - consumerAddress: string, - type?: string -) { - const consumerCredentials = { - type: 'address', - values: [{ address: String(consumerAddress)?.toLowerCase() }] +export function checkCredentials(credentials: Credentials, consumerAddress: string) { + const consumerCredentials: Credential = { + type: CREDENTIALS_TYPES.ADDRESS, + values: [String(consumerAddress)?.toLowerCase()] } + + const accessGranted = true // check deny access if (Array.isArray(credentials?.deny) && credentials.deny.length > 0) { - const accessDeny = findCredential(credentials.deny, consumerCredentials, type) + const accessDeny = findCredential(credentials.deny, consumerCredentials) + // credential is on deny list, so it should be blocked access if (accessDeny) { return false } + // credential not found, so it really depends if we have a match } // check allow access if (Array.isArray(credentials?.allow) && credentials.allow.length > 0) { - const accessAllow = findCredential(credentials.allow, consumerCredentials, type) - if (!accessAllow) { - return false + const accessAllow = findCredential(credentials.allow, consumerCredentials) + if (accessAllow || hasAddressMatchAllRule(credentials.allow)) { + return true } + return false } - return true + return accessGranted } export function areKnownCredentialTypes(credentials: Credentials): boolean { @@ -93,6 +99,76 @@ export function areKnownCredentialTypes(credentials: Credentials): boolean { return true } +// utility function that can be used on multiple access lists +/** + * @param accessList the access list contract address + * @param chainId the chain id to check + * @param addressToCheck the account address to check on the access list + * @param signer signer for the contract part + * @returns true if the account has balanceOf > 0 OR if the accessList is empty OR does not contain info for this chain, false otherwise + */ +export async function checkCredentialOnAccessList( + accessList: AccessListContract, + chainId: string, + addressToCheck: string, + signer: Signer +): Promise { + if (!accessList) { + return true + } + const chainsListed = Object.keys(accessList) + // check the access lists for this chain + if (chainsListed.length > 0 && chainsListed.includes(chainId)) { + let isAuthorized = false + for (const accessListAddress of accessList[chainId]) { + const accessListContract = new ethers.Contract( + accessListAddress, + AccessList.abi, + signer + ) + // if has at least 1 token than is is authorized + const balance = await accessListContract.balanceOf(addressToCheck) + if (Number(balance) > 0) { + isAuthorized = true + break + } + } + if (!isAuthorized) { + CORE_LOGGER.error( + `Account ${addressToCheck} is NOT part of the given access list group.` + ) + } + return isAuthorized + } + return true +} +// from https://github.com/oceanprotocol/ocean-node/issues/808 +// The idea is to use an nft contract and check if one address is on the list by calling 'balanceOf' +// (means user has at least one token) +export async function findAccessListCredentials( + signer: Signer, + contractAddress: string, + address: string +): Promise { + const nftContract: ethers.Contract = getNFTContract(signer, contractAddress) + if (!nftContract) { + return false + } + return await findAccountFromAccessList(nftContract, address) +} + +export async function findAccountFromAccessList( + nftContract: ethers.Contract, + walletAddress: string +): Promise { + try { + const balance = await nftContract.balanceOf(walletAddress) + return Number(balance) > 0 + } catch (err) { + return false + } +} + export function isKnownCredentialType(credentialType: string): boolean { return ( isDefined(credentialType) && @@ -101,3 +177,47 @@ export function isKnownCredentialType(credentialType: string): boolean { }) > -1 ) } + +/** + * Gets the addresses present on the contract access list (the ones with balanceOf > 1) + * @param contractAcessList + * @param chainId + * @returns + */ +export async function getAccountsFromAccessList( + contractAcessList: Contract, + chainId: number, + startBlock?: number, + endBlock?: number +): Promise { + const resultAccounts: string[] = [] + const networkArtifacts = getOceanArtifactsAdressesByChainId(chainId) + // some basic extra checks + if (!networkArtifacts || (startBlock && endBlock && endBlock > startBlock)) { + return resultAccounts + } + + try { + const eventLogs: Array = (await contractAcessList.queryFilter( + 'AddressAdded', + startBlock || networkArtifacts.startBlock, + endBlock || 'latest' + )) as Array + for (const log of eventLogs) { + // check the account address + if (log.args.length === 2 && Number(log.args[1] >= 1)) { + const address: string = log.args[0] + // still has it? + const balance = await contractAcessList.balanceOf(address) + if (Number(balance) >= 1) { + resultAccounts.push(address) + } + } + } + } catch (e) { + CORE_LOGGER.error( + `Cannot get accounts from accessList ${contractAcessList}: \n${e.message}` + ) + } + return resultAccounts +} diff --git a/src/utils/cronjobs/scheduleCronJobs.ts b/src/utils/cronjobs/scheduleCronJobs.ts new file mode 100644 index 000000000..ceacf59ff --- /dev/null +++ b/src/utils/cronjobs/scheduleCronJobs.ts @@ -0,0 +1,48 @@ +// scheduleCronJobs.ts + +import { Database } from '../../components/database/index.js' +import { ENVIRONMENT_VARIABLES } from '../constants.js' +import { OCEAN_NODE_LOGGER } from '../logging/common.js' +import * as cron from 'node-cron' + +export function scheduleCronJobs(dbconn: Database | null) { + scheduleDeleteLogsJob(dbconn) + scheduleCleanExpiredC2DJobs(dbconn) +} + +function scheduleDeleteLogsJob(dbconn: Database | null) { + // Schedule the cron job to run daily at midnight + + if (dbconn && dbconn.logs) { + const expression = + process.env[ENVIRONMENT_VARIABLES.CRON_DELETE_DB_LOGS.name] || '0 0 * * *' + cron.schedule(expression, async () => { + const deletedLogsNum = await dbconn.logs.deleteOldLogs() + OCEAN_NODE_LOGGER.logMessage( + `${deletedLogsNum} old logs deleted successfully.`, + true + ) + }) + } else { + OCEAN_NODE_LOGGER.warn( + 'Logs CronJob: Database connection not established or logs instance not available (skipped).' + ) + } +} + +function scheduleCleanExpiredC2DJobs(dbconn: Database | null) { + // Schedule the cron job to run every 5 minutes or whatever specified + + if (dbconn && dbconn.c2d) { + const expression = + process.env[ENVIRONMENT_VARIABLES.CRON_CLEANUP_C2D_STORAGE.name] || '*/5 * * * *' + cron.schedule(expression, async () => { + const deleted = await dbconn.c2d.cleanStorageExpiredJobs() + OCEAN_NODE_LOGGER.info(`${deleted} old C2D jobs cleaned successfully.`) + }) + } else { + OCEAN_NODE_LOGGER.warn( + 'C2D CronJob: Database connection not established or C2D instance not available (skipped).' + ) + } +} diff --git a/src/utils/file.ts b/src/utils/file.ts index 6c8f54d18..0d0456eff 100644 --- a/src/utils/file.ts +++ b/src/utils/file.ts @@ -1,5 +1,3 @@ -import { DDO } from '../@types/DDO/DDO.js' -import { Service } from '../@types/DDO/Service.js' import { ArweaveFileObject, EncryptMethod, @@ -13,9 +11,10 @@ import { decrypt } from './crypt.js' import { CORE_LOGGER } from './logging/common.js' import { sanitizeServiceFiles } from './util.js' import { isOrderingAllowedForAsset } from '../components/core/handler/downloadHandler.js' +import { DDO, Service } from '@oceanprotocol/ddo-js' export async function getFile( - didOrDdo: string | DDO | Record, + didOrDdo: string | DDO, serviceId: string, node: OceanNode ): Promise { @@ -23,7 +22,7 @@ export async function getFile( // 1. Get the DDO const ddo = typeof didOrDdo === 'string' - ? await new FindDdoHandler(node).findAndFormatDdo(didOrDdo) + ? ((await new FindDdoHandler(node).findAndFormatDdo(didOrDdo)) as DDO) : didOrDdo const isOrdable = isOrderingAllowedForAsset(ddo) diff --git a/src/utils/logging/logDeleteCron.ts b/src/utils/logging/logDeleteCron.ts deleted file mode 100644 index 80bc7d49a..000000000 --- a/src/utils/logging/logDeleteCron.ts +++ /dev/null @@ -1,23 +0,0 @@ -// scheduleCronJobs.ts - -import { Database } from '../../components/database/index.js' -import { OCEAN_NODE_LOGGER } from './common.js' -import * as cron from 'node-cron' - -export function scheduleCronJobs(dbconn: Database | null) { - // Schedule the cron job to run daily at midnight - cron.schedule('0 0 * * *', async () => { - if (dbconn && dbconn.logs) { - const deletedLogsNum = await dbconn.logs.deleteOldLogs() - OCEAN_NODE_LOGGER.logMessage( - `${deletedLogsNum} old logs deleted successfully.`, - true - ) - } else { - OCEAN_NODE_LOGGER.logMessage( - 'Database connection not established or logs instance not available.', - true - ) - } - }) -} diff --git a/src/utils/util.ts b/src/utils/util.ts index e16351c7f..a6c4b1339 100644 --- a/src/utils/util.ts +++ b/src/utils/util.ts @@ -145,3 +145,22 @@ export function asyncCallWithTimeout( export function isDefined(something: any): boolean { return something !== undefined && something !== null } + +export function deleteKeysFromObject(source: any, keys: string[]): any { + keys.forEach((keyName) => { + if (keyName in source) { + delete source[keyName] + } + }) + return source +} + +export function convertGigabytesToBytes(gigabytes: number): number { + if (gigabytes < 0) { + throw new Error('Input must be a non-negative number') + } + + const bytesInAGigabyte = 1024 ** 3 // 1 gigabyte = 1024^3 bytes + const bytes = gigabytes * bytesInAGigabyte + return bytes +}